diff --git a/jero-boot/jero-boot-module-certification/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsCollectManifestHistoryEOServiceImpl.java b/jero-boot/jero-boot-module-certification/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsCollectManifestHistoryEOServiceImpl.java index d15de9823..87a0fd9e8 100644 --- a/jero-boot/jero-boot-module-certification/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsCollectManifestHistoryEOServiceImpl.java +++ b/jero-boot/jero-boot-module-certification/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsCollectManifestHistoryEOServiceImpl.java @@ -446,6 +446,7 @@ public class ParamsCollectManifestHistoryEOServiceImpl extends ServiceImpl newParamsInfoPublishEOList = paramsInfoPublishEOService.getListByPublishVersion(paramsManifestEO.getParamsTemplateId(), newestVersion); diff --git a/jero-boot/jero-boot-module-certification/src/main/java/com/jero/modules/cert/report/service/impl/ParamsReportDetailEOServiceImpl.java b/jero-boot/jero-boot-module-certification/src/main/java/com/jero/modules/cert/report/service/impl/ParamsReportDetailEOServiceImpl.java index 85d6d0b5a..2e219d6ab 100644 --- a/jero-boot/jero-boot-module-certification/src/main/java/com/jero/modules/cert/report/service/impl/ParamsReportDetailEOServiceImpl.java +++ b/jero-boot/jero-boot-module-certification/src/main/java/com/jero/modules/cert/report/service/impl/ParamsReportDetailEOServiceImpl.java @@ -528,6 +528,7 @@ public class ParamsReportDetailEOServiceImpl extends ServiceImpl> ocrPageInfo( @Param("field") String field, @Param("condition") String condition); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java index 22b76897a..7b220a782 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java @@ -3473,6 +3473,7 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl sysDictItems = sysDictItemServiceImpl.selectItemsAll(); //下拉选处理数据字典 - for (Object record : records) { Map record1 = (Map) record; String key = ""; @@ -3580,7 +3592,9 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl parameter) { @@ -3683,7 +3697,7 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl> mapList = queryCondition("1", cut, null); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java index a2e7b9a03..d147b7b0e 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java @@ -617,6 +617,13 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl ids,String projectLibraryId,String cut) { + if(ObjectUtils.isEmpty(ids)){ + if(CutEnum.CN.getValue().equals(cut)){ + throw new JeroBootException("请选择数据"); + }else{ + throw new JeroBootException("Please select data"); + } + } LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); int isProjectRole = checkUserRole(projectLibraryId, currentUser.getId(),""); if(!ProjectRoleEnum.STUDIO_ENGINEER.getValue().equals(String.valueOf(isProjectRole))){ @@ -638,7 +645,6 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl lawsMonthlyReportWriteEOS = this.list(wrapper); + + if(lawsMonthlyReportWriteEOS.size() == 0){ + if(CutEnum.CN.getValue().equals(lawsMonthlyReportWriteEO.getCut())){ + throw new JeroBootException("暂无数据"); + }else{ + throw new JeroBootException("No data"); + } + } //法规联系人 List loginUserList = getlawsContact(lawsMonthlyReportWriteEOS); diff --git a/jero-web/public/api_address_config.js b/jero-web/public/api_address_config.js index 806fb064b..addff65fc 100644 --- a/jero-web/public/api_address_config.js +++ b/jero-web/public/api_address_config.js @@ -11,3 +11,4 @@ window._CONFIG['pdfDomainURL'] = window._CONFIG['domianURL'] + '/sys/common/pdf/ window._CONFIG['casPrefixUrl'] = 'http://cas.example.org:8443/cas' // 预览文件地址 window._CONFIG['onlinePreviewDomainURL'] = localStorage.getItem('onlinePreviewDomainURL') ? localStorage.getItem('onlinePreviewDomainURL') : '' +window._CONFIG['httpsOnlinePreviewDomainURL'] = localStorage.getItem('httpsOnlinePreviewDomainURL') ? localStorage.getItem('httpsOnlinePreviewDomainURL') : '' diff --git a/jero-web/public/pdf/build/pdf.js b/jero-web/public/pdf/build/pdf.js index aafb2eff7..63248c598 100644 --- a/jero-web/public/pdf/build/pdf.js +++ b/jero-web/public/pdf/build/pdf.js @@ -1,4 +1,8 @@ -/* Copyright 2017 Mozilla Foundation +/** + * @licstart The following is the entire license notice for the + * JavaScript code in this page + * + * 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. @@ -11,6 +15,9 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. + * + * @licend The above is the entire license notice for the + * JavaScript code in this page */ (function webpackUniversalModuleDefinition(root, factory) { @@ -21,102 +28,104 @@ else if(typeof exports === 'object') exports["pdfjs-dist/build/pdf"] = factory(); else - root["pdfjs-dist/build/pdf"] = root.pdfjsDistBuildPdf = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __w_pdfjs_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __w_pdfjs_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __w_pdfjs_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __w_pdfjs_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __w_pdfjs_require__.d = function(exports, name, getter) { -/******/ if(!__w_pdfjs_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __w_pdfjs_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __w_pdfjs_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __w_pdfjs_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __w_pdfjs_require__(__w_pdfjs_require__.s = 15); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; + root["pdfjs-dist/build/pdf"] = root.pdfjsLib = factory(); +})(globalThis, () => { +return /******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ([ +/* 0 */, +/* 1 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -Object.defineProperty(exports, "__esModule", { + +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.unreachable = exports.warn = exports.utf8StringToString = exports.stringToUTF8String = exports.stringToPDFString = exports.stringToBytes = exports.string32 = exports.shadow = exports.setVerbosityLevel = exports.ReadableStream = exports.removeNullCharacters = exports.readUint32 = exports.readUint16 = exports.readInt8 = exports.log2 = exports.loadJpegStream = exports.isEvalSupported = exports.isLittleEndian = exports.createValidAbsoluteUrl = exports.isSameOrigin = exports.isNodeJS = exports.isSpace = exports.isString = exports.isNum = exports.isInt = exports.isEmptyObj = exports.isBool = exports.isArrayBuffer = exports.isArray = exports.info = exports.globalScope = exports.getVerbosityLevel = exports.getLookupTableFactory = exports.deprecated = exports.createObjectURL = exports.createPromiseCapability = exports.createBlob = exports.bytesToString = exports.assert = exports.arraysToBytes = exports.arrayByteLength = exports.FormatError = exports.XRefParseException = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.StatTimer = exports.PasswordResponses = exports.PasswordException = exports.PageViewport = exports.NotImplementedException = exports.NativeImageDecoding = exports.MissingPDFException = exports.MissingDataException = exports.MessageHandler = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VERBOSITY_LEVELS = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = undefined; +})); +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.LINE_FACTOR = exports.LINE_DESCENT_FACTOR = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FeatureTest = 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.AnnotationEditorType = exports.AnnotationEditorPrefix = exports.AnnotationEditorParamsType = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0; +exports.arrayByteLength = arrayByteLength; +exports.arraysToBytes = arraysToBytes; +exports.assert = assert; +exports.bytesToString = bytesToString; +exports.createPromiseCapability = createPromiseCapability; +exports.createValidAbsoluteUrl = createValidAbsoluteUrl; +exports.escapeString = escapeString; +exports.getModificationDate = getModificationDate; +exports.getVerbosityLevel = getVerbosityLevel; +exports.info = info; +exports.isArrayBuffer = isArrayBuffer; +exports.isArrayEqual = isArrayEqual; +exports.isAscii = isAscii; +exports.objectFromMap = objectFromMap; +exports.objectSize = objectSize; +exports.setVerbosityLevel = setVerbosityLevel; +exports.shadow = shadow; +exports.string32 = string32; +exports.stringToBytes = stringToBytes; +exports.stringToPDFString = stringToPDFString; +exports.stringToUTF16BEString = stringToUTF16BEString; +exports.stringToUTF8String = stringToUTF8String; +exports.unreachable = unreachable; +exports.utf8StringToString = utf8StringToString; +exports.warn = warn; -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; +__w_pdfjs_require__(2); -__w_pdfjs_require__(16); - -var _streams_polyfill = __w_pdfjs_require__(17); - -var globalScope = typeof window !== 'undefined' && window.Math === Math ? window : typeof global !== 'undefined' && global.Math === Math ? global : typeof self !== 'undefined' && self.Math === Math ? self : undefined; -var FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0]; -var NativeImageDecoding = { - NONE: 'none', - DECODE: 'decode', - DISPLAY: 'display' +const IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; +exports.IDENTITY_MATRIX = IDENTITY_MATRIX; +const FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0]; +exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX; +const LINE_FACTOR = 1.35; +exports.LINE_FACTOR = LINE_FACTOR; +const LINE_DESCENT_FACTOR = 0.35; +exports.LINE_DESCENT_FACTOR = LINE_DESCENT_FACTOR; +const RenderingIntentFlag = { + ANY: 0x01, + DISPLAY: 0x02, + PRINT: 0x04, + ANNOTATIONS_FORMS: 0x10, + ANNOTATIONS_STORAGE: 0x20, + ANNOTATIONS_DISABLE: 0x40, + OPLIST: 0x100 }; -var TextRenderingMode = { +exports.RenderingIntentFlag = RenderingIntentFlag; +const AnnotationMode = { + DISABLE: 0, + ENABLE: 1, + ENABLE_FORMS: 2, + ENABLE_STORAGE: 3 +}; +exports.AnnotationMode = AnnotationMode; +const AnnotationEditorPrefix = "pdfjs_internal_editor_"; +exports.AnnotationEditorPrefix = AnnotationEditorPrefix; +const AnnotationEditorType = { + DISABLE: -1, + NONE: 0, + FREETEXT: 3, + INK: 15 +}; +exports.AnnotationEditorType = AnnotationEditorType; +const AnnotationEditorParamsType = { + FREETEXT_SIZE: 1, + FREETEXT_COLOR: 2, + FREETEXT_OPACITY: 3, + INK_COLOR: 11, + INK_THICKNESS: 12, + INK_OPACITY: 13 +}; +exports.AnnotationEditorParamsType = AnnotationEditorParamsType; +const PermissionFlag = { + PRINT: 0x04, + MODIFY_CONTENTS: 0x08, + COPY: 0x10, + MODIFY_ANNOTATIONS: 0x20, + FILL_INTERACTIVE_FORMS: 0x100, + COPY_FOR_ACCESSIBILITY: 0x200, + ASSEMBLE: 0x400, + PRINT_HIGH_QUALITY: 0x800 +}; +exports.PermissionFlag = PermissionFlag; +const TextRenderingMode = { FILL: 0, STROKE: 1, FILL_STROKE: 2, @@ -128,12 +137,14 @@ var TextRenderingMode = { FILL_STROKE_MASK: 3, ADD_TO_PATH_FLAG: 4 }; -var ImageKind = { +exports.TextRenderingMode = TextRenderingMode; +const ImageKind = { GRAYSCALE_1BPP: 1, RGB_24BPP: 2, RGBA_32BPP: 3 }; -var AnnotationType = { +exports.ImageKind = ImageKind; +const AnnotationType = { TEXT: 1, LINK: 2, FREETEXT: 3, @@ -161,7 +172,31 @@ var AnnotationType = { THREED: 25, REDACT: 26 }; -var AnnotationFlag = { +exports.AnnotationType = AnnotationType; +const AnnotationStateModelType = { + MARKED: "Marked", + REVIEW: "Review" +}; +exports.AnnotationStateModelType = AnnotationStateModelType; +const AnnotationMarkedState = { + MARKED: "Marked", + UNMARKED: "Unmarked" +}; +exports.AnnotationMarkedState = AnnotationMarkedState; +const AnnotationReviewState = { + ACCEPTED: "Accepted", + REJECTED: "Rejected", + CANCELLED: "Cancelled", + COMPLETED: "Completed", + NONE: "None" +}; +exports.AnnotationReviewState = AnnotationReviewState; +const AnnotationReplyType = { + GROUP: "Group", + REPLY: "R" +}; +exports.AnnotationReplyType = AnnotationReplyType; +const AnnotationFlag = { INVISIBLE: 0x01, HIDDEN: 0x02, PRINT: 0x04, @@ -173,7 +208,8 @@ var AnnotationFlag = { TOGGLENOVIEW: 0x100, LOCKEDCONTENTS: 0x200 }; -var AnnotationFieldFlag = { +exports.AnnotationFlag = AnnotationFlag; +const AnnotationFieldFlag = { READONLY: 0x0000001, REQUIRED: 0x0000002, NOEXPORT: 0x0000004, @@ -194,49 +230,86 @@ var AnnotationFieldFlag = { RADIOSINUNISON: 0x2000000, COMMITONSELCHANGE: 0x4000000 }; -var AnnotationBorderStyleType = { +exports.AnnotationFieldFlag = AnnotationFieldFlag; +const AnnotationBorderStyleType = { SOLID: 1, DASHED: 2, BEVELED: 3, INSET: 4, UNDERLINE: 5 }; -var StreamType = { - UNKNOWN: 0, - FLATE: 1, - LZW: 2, - DCT: 3, - JPX: 4, - JBIG: 5, - A85: 6, - AHX: 7, - CCF: 8, - RL: 9 +exports.AnnotationBorderStyleType = AnnotationBorderStyleType; +const AnnotationActionEventType = { + E: "Mouse Enter", + X: "Mouse Exit", + D: "Mouse Down", + U: "Mouse Up", + Fo: "Focus", + Bl: "Blur", + PO: "PageOpen", + PC: "PageClose", + PV: "PageVisible", + PI: "PageInvisible", + K: "Keystroke", + F: "Format", + V: "Validate", + C: "Calculate" }; -var FontType = { - UNKNOWN: 0, - TYPE1: 1, - TYPE1C: 2, - CIDFONTTYPE0: 3, - CIDFONTTYPE0C: 4, - TRUETYPE: 5, - CIDFONTTYPE2: 6, - TYPE3: 7, - OPENTYPE: 8, - TYPE0: 9, - MMTYPE1: 10 +exports.AnnotationActionEventType = AnnotationActionEventType; +const DocumentActionEventType = { + WC: "WillClose", + WS: "WillSave", + DS: "DidSave", + WP: "WillPrint", + DP: "DidPrint" }; -var VERBOSITY_LEVELS = { - errors: 0, - warnings: 1, - infos: 5 +exports.DocumentActionEventType = DocumentActionEventType; +const PageActionEventType = { + O: "PageOpen", + C: "PageClose" }; -var CMapCompressionType = { +exports.PageActionEventType = PageActionEventType; +const StreamType = { + UNKNOWN: "UNKNOWN", + FLATE: "FLATE", + LZW: "LZW", + DCT: "DCT", + JPX: "JPX", + JBIG: "JBIG", + A85: "A85", + AHX: "AHX", + CCF: "CCF", + RLX: "RLX" +}; +exports.StreamType = StreamType; +const FontType = { + UNKNOWN: "UNKNOWN", + TYPE1: "TYPE1", + TYPE1STANDARD: "TYPE1STANDARD", + TYPE1C: "TYPE1C", + CIDFONTTYPE0: "CIDFONTTYPE0", + CIDFONTTYPE0C: "CIDFONTTYPE0C", + TRUETYPE: "TRUETYPE", + CIDFONTTYPE2: "CIDFONTTYPE2", + TYPE3: "TYPE3", + OPENTYPE: "OPENTYPE", + TYPE0: "TYPE0", + MMTYPE1: "MMTYPE1" +}; +exports.FontType = FontType; +const VerbosityLevel = { + ERRORS: 0, + WARNINGS: 1, + INFOS: 5 +}; +exports.VerbosityLevel = VerbosityLevel; +const CMapCompressionType = { NONE: 0, BINARY: 1, STREAM: 2 }; -var OPS = { +exports.CMapCompressionType = CMapCompressionType; +const OPS = { dependency: 1, setLineWidth: 2, setLineCap: 3, @@ -329,466 +402,4601 @@ var OPS = { paintSolidColorImageMask: 90, constructPath: 91 }; -var verbosity = VERBOSITY_LEVELS.warnings; +exports.OPS = OPS; +const UNSUPPORTED_FEATURES = { + unknown: "unknown", + forms: "forms", + javaScript: "javaScript", + signatures: "signatures", + smask: "smask", + shadingPattern: "shadingPattern", + font: "font", + errorTilingPattern: "errorTilingPattern", + errorExtGState: "errorExtGState", + errorXObject: "errorXObject", + errorFontLoadType3: "errorFontLoadType3", + errorFontState: "errorFontState", + errorFontMissing: "errorFontMissing", + errorFontTranslate: "errorFontTranslate", + errorColorSpace: "errorColorSpace", + errorOperatorList: "errorOperatorList", + errorFontToUnicode: "errorFontToUnicode", + errorFontLoadNative: "errorFontLoadNative", + errorFontBuildPath: "errorFontBuildPath", + errorFontGetPath: "errorFontGetPath", + errorMarkedContent: "errorMarkedContent", + errorContentSubStream: "errorContentSubStream" +}; +exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES; +const PasswordResponses = { + NEED_PASSWORD: 1, + INCORRECT_PASSWORD: 2 +}; +exports.PasswordResponses = PasswordResponses; +let verbosity = VerbosityLevel.WARNINGS; + function setVerbosityLevel(level) { - verbosity = level; + if (Number.isInteger(level)) { + verbosity = level; + } } + function getVerbosityLevel() { return verbosity; } + function info(msg) { - if (verbosity >= VERBOSITY_LEVELS.infos) { - console.log('Info: ' + msg); + if (verbosity >= VerbosityLevel.INFOS) { + console.log(`Info: ${msg}`); } } + function warn(msg) { - if (verbosity >= VERBOSITY_LEVELS.warnings) { - console.log('Warning: ' + msg); + if (verbosity >= VerbosityLevel.WARNINGS) { + console.log(`Warning: ${msg}`); } } -function deprecated(details) { - console.log('Deprecated API usage: ' + details); -} + function unreachable(msg) { throw new Error(msg); } + function assert(cond, msg) { if (!cond) { unreachable(msg); } } -var UNSUPPORTED_FEATURES = { - unknown: 'unknown', - forms: 'forms', - javaScript: 'javaScript', - smask: 'smask', - shadingPattern: 'shadingPattern', - font: 'font' -}; -function isSameOrigin(baseUrl, otherUrl) { - try { - var base = new URL(baseUrl); - if (!base.origin || base.origin === 'null') { - return false; - } - } catch (e) { - return false; - } - var other = new URL(otherUrl, base); - return base.origin === other.origin; -} -function isValidProtocol(url) { + +function _isValidProtocol(url) { if (!url) { return false; } + switch (url.protocol) { - case 'http:': - case 'https:': - case 'ftp:': - case 'mailto:': - case 'tel:': + case "http:": + case "https:": + case "ftp:": + case "mailto:": + case "tel:": return true; + default: return false; } } -function createValidAbsoluteUrl(url, baseUrl) { + +function createValidAbsoluteUrl(url, baseUrl = null, options = null) { if (!url) { return null; } + try { - var absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url); - if (isValidProtocol(absoluteUrl)) { + if (options && typeof url === "string") { + if (options.addDefaultProtocol && url.startsWith("www.")) { + const dots = url.match(/\./g); + + if (dots && dots.length >= 2) { + url = `http://${url}`; + } + } + + if (options.tryConvertEncoding) { + try { + url = stringToUTF8String(url); + } catch (ex) {} + } + } + + const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url); + + if (_isValidProtocol(absoluteUrl)) { return absoluteUrl; } } catch (ex) {} + return null; } + function shadow(obj, prop, value) { Object.defineProperty(obj, prop, { - value: value, + value, enumerable: true, configurable: true, writable: false }); return value; } -function getLookupTableFactory(initializer) { - var lookup; - return function () { - if (initializer) { - lookup = Object.create(null); - initializer(lookup); - initializer = null; + +const BaseException = function BaseExceptionClosure() { + function BaseException(message, name) { + if (this.constructor === BaseException) { + unreachable("Cannot initialize BaseException."); } - return lookup; - }; -} -var PasswordResponses = { - NEED_PASSWORD: 1, - INCORRECT_PASSWORD: 2 -}; -var PasswordException = function PasswordExceptionClosure() { - function PasswordException(msg, code) { - this.name = 'PasswordException'; - this.message = msg; + + this.message = message; + this.name = name; + } + + BaseException.prototype = new Error(); + BaseException.constructor = BaseException; + return BaseException; +}(); + +exports.BaseException = BaseException; + +class PasswordException extends BaseException { + constructor(msg, code) { + super(msg, "PasswordException"); this.code = code; } - PasswordException.prototype = new Error(); - PasswordException.constructor = PasswordException; - return PasswordException; -}(); -var UnknownErrorException = function UnknownErrorExceptionClosure() { - function UnknownErrorException(msg, details) { - this.name = 'UnknownErrorException'; - this.message = msg; + +} + +exports.PasswordException = PasswordException; + +class UnknownErrorException extends BaseException { + constructor(msg, details) { + super(msg, "UnknownErrorException"); this.details = details; } - UnknownErrorException.prototype = new Error(); - UnknownErrorException.constructor = UnknownErrorException; - return UnknownErrorException; -}(); -var InvalidPDFException = function InvalidPDFExceptionClosure() { - function InvalidPDFException(msg) { - this.name = 'InvalidPDFException'; - this.message = msg; + +} + +exports.UnknownErrorException = UnknownErrorException; + +class InvalidPDFException extends BaseException { + constructor(msg) { + super(msg, "InvalidPDFException"); } - InvalidPDFException.prototype = new Error(); - InvalidPDFException.constructor = InvalidPDFException; - return InvalidPDFException; -}(); -var MissingPDFException = function MissingPDFExceptionClosure() { - function MissingPDFException(msg) { - this.name = 'MissingPDFException'; - this.message = msg; + +} + +exports.InvalidPDFException = InvalidPDFException; + +class MissingPDFException extends BaseException { + constructor(msg) { + super(msg, "MissingPDFException"); } - MissingPDFException.prototype = new Error(); - MissingPDFException.constructor = MissingPDFException; - return MissingPDFException; -}(); -var UnexpectedResponseException = function UnexpectedResponseExceptionClosure() { - function UnexpectedResponseException(msg, status) { - this.name = 'UnexpectedResponseException'; - this.message = msg; + +} + +exports.MissingPDFException = MissingPDFException; + +class UnexpectedResponseException extends BaseException { + constructor(msg, status) { + super(msg, "UnexpectedResponseException"); this.status = status; } - UnexpectedResponseException.prototype = new Error(); - UnexpectedResponseException.constructor = UnexpectedResponseException; - return UnexpectedResponseException; -}(); -var NotImplementedException = function NotImplementedExceptionClosure() { - function NotImplementedException(msg) { - this.message = msg; - } - NotImplementedException.prototype = new Error(); - NotImplementedException.prototype.name = 'NotImplementedException'; - NotImplementedException.constructor = NotImplementedException; - return NotImplementedException; -}(); -var MissingDataException = function MissingDataExceptionClosure() { - function MissingDataException(begin, end) { - this.begin = begin; - this.end = end; - this.message = 'Missing data [' + begin + ', ' + end + ')'; - } - MissingDataException.prototype = new Error(); - MissingDataException.prototype.name = 'MissingDataException'; - MissingDataException.constructor = MissingDataException; - return MissingDataException; -}(); -var XRefParseException = function XRefParseExceptionClosure() { - function XRefParseException(msg) { - this.message = msg; - } - XRefParseException.prototype = new Error(); - XRefParseException.prototype.name = 'XRefParseException'; - XRefParseException.constructor = XRefParseException; - return XRefParseException; -}(); -var FormatError = function FormatErrorClosure() { - function FormatError(msg) { - this.message = msg; - } - FormatError.prototype = new Error(); - FormatError.prototype.name = 'FormatError'; - FormatError.constructor = FormatError; - return FormatError; -}(); -var AbortException = function AbortExceptionClosure() { - function AbortException(msg) { - this.name = 'AbortException'; - this.message = msg; - } - AbortException.prototype = new Error(); - AbortException.constructor = AbortException; - return AbortException; -}(); -var NullCharactersRegExp = /\x00/g; -function removeNullCharacters(str) { - if (typeof str !== 'string') { - warn('The argument for removeNullCharacters must be a string.'); - return str; - } - return str.replace(NullCharactersRegExp, ''); + } + +exports.UnexpectedResponseException = UnexpectedResponseException; + +class FormatError extends BaseException { + constructor(msg) { + super(msg, "FormatError"); + } + +} + +exports.FormatError = FormatError; + +class AbortException extends BaseException { + constructor(msg) { + super(msg, "AbortException"); + } + +} + +exports.AbortException = AbortException; + function bytesToString(bytes) { - assert(bytes !== null && (typeof bytes === 'undefined' ? 'undefined' : _typeof(bytes)) === 'object' && bytes.length !== undefined, 'Invalid argument for bytesToString'); - var length = bytes.length; - var MAX_ARGUMENT_COUNT = 8192; + if (typeof bytes !== "object" || bytes === null || bytes.length === undefined) { + unreachable("Invalid argument for bytesToString"); + } + + const length = bytes.length; + const MAX_ARGUMENT_COUNT = 8192; + if (length < MAX_ARGUMENT_COUNT) { return String.fromCharCode.apply(null, bytes); } - var strBuf = []; - for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) { - var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length); - var chunk = bytes.subarray(i, chunkEnd); + + const strBuf = []; + + for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) { + const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length); + const chunk = bytes.subarray(i, chunkEnd); strBuf.push(String.fromCharCode.apply(null, chunk)); } - return strBuf.join(''); + + return strBuf.join(""); } + function stringToBytes(str) { - assert(typeof str === 'string', 'Invalid argument for stringToBytes'); - var length = str.length; - var bytes = new Uint8Array(length); - for (var i = 0; i < length; ++i) { - bytes[i] = str.charCodeAt(i) & 0xFF; + if (typeof str !== "string") { + unreachable("Invalid argument for stringToBytes"); } + + const length = str.length; + const bytes = new Uint8Array(length); + + for (let i = 0; i < length; ++i) { + bytes[i] = str.charCodeAt(i) & 0xff; + } + return bytes; } + function arrayByteLength(arr) { if (arr.length !== undefined) { return arr.length; } - assert(arr.byteLength !== undefined); - return arr.byteLength; + + if (arr.byteLength !== undefined) { + return arr.byteLength; + } + + unreachable("Invalid argument for arrayByteLength"); } + function arraysToBytes(arr) { - if (arr.length === 1 && arr[0] instanceof Uint8Array) { + const length = arr.length; + + if (length === 1 && arr[0] instanceof Uint8Array) { return arr[0]; } - var resultLength = 0; - var i, - ii = arr.length; - var item, itemLength; - for (i = 0; i < ii; i++) { - item = arr[i]; - itemLength = arrayByteLength(item); - resultLength += itemLength; + + let resultLength = 0; + + for (let i = 0; i < length; i++) { + resultLength += arrayByteLength(arr[i]); } - var pos = 0; - var data = new Uint8Array(resultLength); - for (i = 0; i < ii; i++) { - item = arr[i]; + + let pos = 0; + const data = new Uint8Array(resultLength); + + for (let i = 0; i < length; i++) { + let item = arr[i]; + if (!(item instanceof Uint8Array)) { - if (typeof item === 'string') { + if (typeof item === "string") { item = stringToBytes(item); } else { item = new Uint8Array(item); } } - itemLength = item.byteLength; + + const itemLength = item.byteLength; data.set(item, pos); pos += itemLength; } + return data; } + function string32(value) { return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff); } -function log2(x) { - var n = 1, - i = 0; - while (x > n) { - n <<= 1; - i++; + +function objectSize(obj) { + return Object.keys(obj).length; +} + +function objectFromMap(map) { + const obj = Object.create(null); + + for (const [key, value] of map) { + obj[key] = value; } - return i; -} -function readInt8(data, start) { - return data[start] << 24 >> 24; -} -function readUint16(data, offset) { - return data[offset] << 8 | data[offset + 1]; -} -function readUint32(data, offset) { - return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0; + + return obj; } + function isLittleEndian() { - var buffer8 = new Uint8Array(4); + const buffer8 = new Uint8Array(4); buffer8[0] = 1; - var view32 = new Uint32Array(buffer8.buffer, 0, 1); + const view32 = new Uint32Array(buffer8.buffer, 0, 1); return view32[0] === 1; } + function isEvalSupported() { try { - new Function(''); + new Function(""); return true; } catch (e) { return false; } } -var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; -var Util = function UtilClosure() { - function Util() {} - var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')']; - Util.makeCssRgb = function Util_makeCssRgb(r, g, b) { - rgbBuf[1] = r; - rgbBuf[3] = g; - rgbBuf[5] = b; - return rgbBuf.join(''); - }; - Util.transform = function Util_transform(m1, m2) { + +class FeatureTest { + static get isLittleEndian() { + return shadow(this, "isLittleEndian", isLittleEndian()); + } + + static get isEvalSupported() { + return shadow(this, "isEvalSupported", isEvalSupported()); + } + + static get isOffscreenCanvasSupported() { + return shadow(this, "isOffscreenCanvasSupported", typeof OffscreenCanvas !== "undefined"); + } + +} + +exports.FeatureTest = FeatureTest; +const hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, "0")); + +class Util { + static makeHexColor(r, g, b) { + return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`; + } + + static scaleMinMax(transform, minMax) { + let temp; + + if (transform[0]) { + if (transform[0] < 0) { + temp = minMax[0]; + minMax[0] = minMax[1]; + minMax[1] = temp; + } + + minMax[0] *= transform[0]; + minMax[1] *= transform[0]; + + if (transform[3] < 0) { + temp = minMax[2]; + minMax[2] = minMax[3]; + minMax[3] = temp; + } + + minMax[2] *= transform[3]; + minMax[3] *= transform[3]; + } else { + temp = minMax[0]; + minMax[0] = minMax[2]; + minMax[2] = temp; + temp = minMax[1]; + minMax[1] = minMax[3]; + minMax[3] = temp; + + if (transform[1] < 0) { + temp = minMax[2]; + minMax[2] = minMax[3]; + minMax[3] = temp; + } + + minMax[2] *= transform[1]; + minMax[3] *= transform[1]; + + if (transform[2] < 0) { + temp = minMax[0]; + minMax[0] = minMax[1]; + minMax[1] = temp; + } + + minMax[0] *= transform[2]; + minMax[1] *= transform[2]; + } + + minMax[0] += transform[4]; + minMax[1] += transform[4]; + minMax[2] += transform[5]; + minMax[3] += transform[5]; + } + + static transform(m1, m2) { return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]]; - }; - Util.applyTransform = function Util_applyTransform(p, m) { - var xt = p[0] * m[0] + p[1] * m[2] + m[4]; - var yt = p[0] * m[1] + p[1] * m[3] + m[5]; + } + + static applyTransform(p, m) { + const xt = p[0] * m[0] + p[1] * m[2] + m[4]; + const yt = p[0] * m[1] + p[1] * m[3] + m[5]; return [xt, yt]; - }; - Util.applyInverseTransform = function Util_applyInverseTransform(p, m) { - var d = m[0] * m[3] - m[1] * m[2]; - var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d; - var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d; + } + + static applyInverseTransform(p, m) { + const d = m[0] * m[3] - m[1] * m[2]; + const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d; + const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d; return [xt, yt]; - }; - Util.getAxialAlignedBoundingBox = function Util_getAxialAlignedBoundingBox(r, m) { - var p1 = Util.applyTransform(r, m); - var p2 = Util.applyTransform(r.slice(2, 4), m); - var p3 = Util.applyTransform([r[0], r[3]], m); - var p4 = Util.applyTransform([r[2], r[1]], m); + } + + static getAxialAlignedBoundingBox(r, m) { + const p1 = Util.applyTransform(r, m); + const p2 = Util.applyTransform(r.slice(2, 4), m); + const p3 = Util.applyTransform([r[0], r[3]], m); + const p4 = Util.applyTransform([r[2], r[1]], m); return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])]; - }; - Util.inverseTransform = function Util_inverseTransform(m) { - var d = m[0] * m[3] - m[1] * m[2]; + } + + static inverseTransform(m) { + const d = m[0] * m[3] - m[1] * m[2]; return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d]; - }; - Util.apply3dTransform = function Util_apply3dTransform(m, v) { + } + + static apply3dTransform(m, v) { return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]]; - }; - Util.singularValueDecompose2dScale = function Util_singularValueDecompose2dScale(m) { - var transpose = [m[0], m[2], m[1], m[3]]; - var a = m[0] * transpose[0] + m[1] * transpose[2]; - var b = m[0] * transpose[1] + m[1] * transpose[3]; - var c = m[2] * transpose[0] + m[3] * transpose[2]; - var d = m[2] * transpose[1] + m[3] * transpose[3]; - var first = (a + d) / 2; - var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2; - var sx = first + second || 1; - var sy = first - second || 1; + } + + static singularValueDecompose2dScale(m) { + const transpose = [m[0], m[2], m[1], m[3]]; + const a = m[0] * transpose[0] + m[1] * transpose[2]; + const b = m[0] * transpose[1] + m[1] * transpose[3]; + const c = m[2] * transpose[0] + m[3] * transpose[2]; + const d = m[2] * transpose[1] + m[3] * transpose[3]; + const first = (a + d) / 2; + const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2; + const sx = first + second || 1; + const sy = first - second || 1; return [Math.sqrt(sx), Math.sqrt(sy)]; - }; - Util.normalizeRect = function Util_normalizeRect(rect) { - var r = rect.slice(0); + } + + static normalizeRect(rect) { + const r = rect.slice(0); + if (rect[0] > rect[2]) { r[0] = rect[2]; r[2] = rect[0]; } + if (rect[1] > rect[3]) { r[1] = rect[3]; r[3] = rect[1]; } + return r; - }; - Util.intersect = function Util_intersect(rect1, rect2) { - function compare(a, b) { - return a - b; - } - var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare), - orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare), - result = []; - rect1 = Util.normalizeRect(rect1); - rect2 = Util.normalizeRect(rect2); - if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) { - result[0] = orderedX[1]; - result[2] = orderedX[2]; - } else { - return false; - } - if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) { - result[1] = orderedY[1]; - result[3] = orderedY[2]; - } else { - return false; - } - return result; - }; - Util.sign = function Util_sign(num) { - return num < 0 ? -1 : 1; - }; - var ROMAN_NUMBER_MAP = ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM', '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC', '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX']; - Util.toRoman = function Util_toRoman(number, lowerCase) { - assert(isInt(number) && number > 0, 'The number should be a positive integer.'); - var pos, - romanBuf = []; - while (number >= 1000) { - number -= 1000; - romanBuf.push('M'); - } - pos = number / 100 | 0; - number %= 100; - romanBuf.push(ROMAN_NUMBER_MAP[pos]); - pos = number / 10 | 0; - number %= 10; - romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]); - romanBuf.push(ROMAN_NUMBER_MAP[20 + number]); - var romanStr = romanBuf.join(''); - return lowerCase ? romanStr.toLowerCase() : romanStr; - }; - Util.appendToArray = function Util_appendToArray(arr1, arr2) { - Array.prototype.push.apply(arr1, arr2); - }; - Util.prependToArray = function Util_prependToArray(arr1, arr2) { - Array.prototype.unshift.apply(arr1, arr2); - }; - Util.extendObj = function extendObj(obj1, obj2) { - for (var key in obj2) { - obj1[key] = obj2[key]; - } - }; - Util.getInheritableProperty = function Util_getInheritableProperty(dict, name, getArray) { - while (dict && !dict.has(name)) { - dict = dict.get('Parent'); - } - if (!dict) { + } + + static intersect(rect1, rect2) { + const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2])); + const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2])); + + if (xLow > xHigh) { return null; } - return getArray ? dict.getArray(name) : dict.get(name); - }; - Util.inherit = function Util_inherit(sub, base, prototype) { - sub.prototype = Object.create(base.prototype); - sub.prototype.constructor = sub; - for (var prop in prototype) { - sub.prototype[prop] = prototype[prop]; + + const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3])); + const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3])); + + if (yLow > yHigh) { + return null; } - }; - Util.loadScript = function Util_loadScript(src, callback) { - var script = document.createElement('script'); - var loaded = false; - script.setAttribute('src', src); - if (callback) { - script.onload = function () { - if (!loaded) { - callback(); + + return [xLow, yLow, xHigh, yHigh]; + } + + static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) { + const tvalues = [], + bounds = [[], []]; + let a, b, c, t, t1, t2, b2ac, sqrtb2ac; + + for (let i = 0; i < 2; ++i) { + if (i === 0) { + b = 6 * x0 - 12 * x1 + 6 * x2; + a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3; + c = 3 * x1 - 3 * x0; + } else { + b = 6 * y0 - 12 * y1 + 6 * y2; + a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3; + c = 3 * y1 - 3 * y0; + } + + if (Math.abs(a) < 1e-12) { + if (Math.abs(b) < 1e-12) { + continue; } - loaded = true; - }; + + t = -c / b; + + if (0 < t && t < 1) { + tvalues.push(t); + } + + continue; + } + + b2ac = b * b - 4 * c * a; + sqrtb2ac = Math.sqrt(b2ac); + + if (b2ac < 0) { + continue; + } + + t1 = (-b + sqrtb2ac) / (2 * a); + + if (0 < t1 && t1 < 1) { + tvalues.push(t1); + } + + t2 = (-b - sqrtb2ac) / (2 * a); + + if (0 < t2 && t2 < 1) { + tvalues.push(t2); + } } - document.getElementsByTagName('head')[0].appendChild(script); + + let j = tvalues.length, + mt; + const jlen = j; + + while (j--) { + t = tvalues[j]; + mt = 1 - t; + bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3; + bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3; + } + + bounds[0][jlen] = x0; + bounds[1][jlen] = y0; + bounds[0][jlen + 1] = x3; + bounds[1][jlen + 1] = y3; + bounds[0].length = bounds[1].length = jlen + 2; + return [Math.min(...bounds[0]), Math.min(...bounds[1]), Math.max(...bounds[0]), Math.max(...bounds[1])]; + } + +} + +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) { + if (str[0] >= "\xEF") { + let encoding; + + 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"; + } + + 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(""); +} + +function escapeString(str) { + return str.replace(/([()\\\n\r])/g, match => { + if (match === "\n") { + return "\\n"; + } else if (match === "\r") { + return "\\r"; + } + + return `\\${match}`; + }); +} + +function isAscii(str) { + return /^[\x00-\x7F]*$/.test(str); +} + +function stringToUTF16BEString(str) { + const buf = ["\xFE\xFF"]; + + for (let i = 0, ii = str.length; i < ii; i++) { + const char = str.charCodeAt(i); + buf.push(String.fromCharCode(char >> 8 & 0xff), String.fromCharCode(char & 0xff)); + } + + return buf.join(""); +} + +function stringToUTF8String(str) { + return decodeURIComponent(escape(str)); +} + +function utf8StringToString(str) { + return unescape(encodeURIComponent(str)); +} + +function isArrayBuffer(v) { + return typeof v === "object" && v !== null && v.byteLength !== undefined; +} + +function isArrayEqual(arr1, arr2) { + if (arr1.length !== arr2.length) { + return false; + } + + for (let i = 0, ii = arr1.length; i < ii; i++) { + if (arr1[i] !== arr2[i]) { + return false; + } + } + + return true; +} + +function getModificationDate(date = new Date()) { + const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, "0"), date.getUTCDate().toString().padStart(2, "0"), date.getUTCHours().toString().padStart(2, "0"), date.getUTCMinutes().toString().padStart(2, "0"), date.getUTCSeconds().toString().padStart(2, "0")]; + return buffer.join(""); +} + +function createPromiseCapability() { + const capability = Object.create(null); + let isSettled = false; + Object.defineProperty(capability, "settled", { + get() { + return isSettled; + } + + }); + capability.promise = new Promise(function (resolve, reject) { + capability.resolve = function (data) { + isSettled = true; + resolve(data); + }; + + capability.reject = function (reason) { + isSettled = true; + reject(reason); + }; + }); + return capability; +} + +/***/ }), +/* 2 */ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { + + + +var _is_node = __w_pdfjs_require__(3); + +; + +/***/ }), +/* 3 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isNodeJS = void 0; +const isNodeJS = typeof process === "object" && process + "" === "[object process]" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== "browser"); +exports.isNodeJS = isNodeJS; + +/***/ }), +/* 4 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.build = exports.RenderTask = exports.PDFWorkerUtil = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDocumentLoadingTask = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultStandardFontDataFactory = exports.DefaultCanvasFactory = exports.DefaultCMapReaderFactory = void 0; +exports.getDocument = getDocument; +exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory; +exports.version = void 0; + +var _util = __w_pdfjs_require__(1); + +var _annotation_storage = __w_pdfjs_require__(5); + +var _display_utils = __w_pdfjs_require__(8); + +var _font_loader = __w_pdfjs_require__(11); + +var _canvas = __w_pdfjs_require__(12); + +var _worker_options = __w_pdfjs_require__(15); + +var _is_node = __w_pdfjs_require__(3); + +var _message_handler = __w_pdfjs_require__(16); + +var _metadata = __w_pdfjs_require__(17); + +var _optional_content_config = __w_pdfjs_require__(18); + +var _transport_stream = __w_pdfjs_require__(19); + +var _xfa_text = __w_pdfjs_require__(20); + +const DEFAULT_RANGE_CHUNK_SIZE = 65536; +const RENDERING_CANCELLED_TIMEOUT = 100; +let DefaultCanvasFactory = _display_utils.DOMCanvasFactory; +exports.DefaultCanvasFactory = DefaultCanvasFactory; +let DefaultCMapReaderFactory = _display_utils.DOMCMapReaderFactory; +exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory; +let DefaultStandardFontDataFactory = _display_utils.DOMStandardFontDataFactory; +exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory; + +if (_is_node.isNodeJS) { + const { + NodeCanvasFactory, + NodeCMapReaderFactory, + NodeStandardFontDataFactory + } = __w_pdfjs_require__(21); + + exports.DefaultCanvasFactory = DefaultCanvasFactory = NodeCanvasFactory; + exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory = NodeCMapReaderFactory; + exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory = NodeStandardFontDataFactory; +} + +let createPDFNetworkStream; + +function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) { + createPDFNetworkStream = pdfNetworkStreamFactory; +} + +function getDocument(src) { + const task = new PDFDocumentLoadingTask(); + let source; + + if (typeof src === "string" || src instanceof URL) { + source = { + url: src + }; + } else if ((0, _util.isArrayBuffer)(src)) { + source = { + data: src + }; + } else if (src instanceof PDFDataRangeTransport) { + source = { + range: src + }; + } else { + if (typeof src !== "object") { + throw new Error("Invalid parameter in getDocument, " + "need either string, URL, TypedArray, or parameter object."); + } + + if (!src.url && !src.data && !src.range) { + throw new Error("Invalid parameter object: need either .data, .range or .url"); + } + + source = src; + } + + const params = Object.create(null); + let rangeTransport = null, + worker = null; + + for (const key in source) { + const value = source[key]; + + switch (key) { + case "url": + if (typeof window !== "undefined") { + try { + params[key] = new URL(value, window.location).href; + continue; + } catch (ex) { + (0, _util.warn)(`Cannot create valid URL: "${ex}".`); + } + } else if (typeof value === "string" || value instanceof URL) { + params[key] = value.toString(); + continue; + } + + throw new Error("Invalid PDF url data: " + "either string or URL-object is expected in the url property."); + + case "range": + rangeTransport = value; + continue; + + case "worker": + worker = value; + continue; + + case "data": + if (_is_node.isNodeJS && typeof Buffer !== "undefined" && value instanceof Buffer) { + params[key] = new Uint8Array(value); + } else if (value instanceof Uint8Array) { + break; + } else if (typeof value === "string") { + params[key] = (0, _util.stringToBytes)(value); + } else if (typeof value === "object" && value !== null && !isNaN(value.length)) { + params[key] = new Uint8Array(value); + } else if ((0, _util.isArrayBuffer)(value)) { + params[key] = new Uint8Array(value); + } else { + throw new Error("Invalid PDF binary data: either TypedArray, " + "string, or array-like object is expected in the data property."); + } + + continue; + } + + params[key] = value; + } + + params.CMapReaderFactory = params.CMapReaderFactory || DefaultCMapReaderFactory; + params.StandardFontDataFactory = params.StandardFontDataFactory || DefaultStandardFontDataFactory; + params.ignoreErrors = params.stopAtErrors !== true; + params.fontExtraProperties = params.fontExtraProperties === true; + params.pdfBug = params.pdfBug === true; + params.enableXfa = params.enableXfa === true; + + if (!Number.isInteger(params.rangeChunkSize) || params.rangeChunkSize < 1) { + params.rangeChunkSize = DEFAULT_RANGE_CHUNK_SIZE; + } + + if (typeof params.docBaseUrl !== "string" || (0, _display_utils.isDataScheme)(params.docBaseUrl)) { + params.docBaseUrl = null; + } + + if (!Number.isInteger(params.maxImageSize) || params.maxImageSize < -1) { + params.maxImageSize = -1; + } + + if (typeof params.cMapUrl !== "string") { + params.cMapUrl = null; + } + + if (typeof params.standardFontDataUrl !== "string") { + params.standardFontDataUrl = null; + } + + if (typeof params.useWorkerFetch !== "boolean") { + params.useWorkerFetch = params.CMapReaderFactory === _display_utils.DOMCMapReaderFactory && params.StandardFontDataFactory === _display_utils.DOMStandardFontDataFactory; + } + + if (typeof params.isEvalSupported !== "boolean") { + params.isEvalSupported = true; + } + + if (typeof params.disableFontFace !== "boolean") { + params.disableFontFace = _is_node.isNodeJS; + } + + if (typeof params.useSystemFonts !== "boolean") { + params.useSystemFonts = !_is_node.isNodeJS && !params.disableFontFace; + } + + if (typeof params.ownerDocument !== "object" || params.ownerDocument === null) { + params.ownerDocument = globalThis.document; + } + + if (typeof params.disableRange !== "boolean") { + params.disableRange = false; + } + + if (typeof params.disableStream !== "boolean") { + params.disableStream = false; + } + + if (typeof params.disableAutoFetch !== "boolean") { + params.disableAutoFetch = false; + } + + (0, _util.setVerbosityLevel)(params.verbosity); + + if (!worker) { + const workerParams = { + verbosity: params.verbosity, + port: _worker_options.GlobalWorkerOptions.workerPort + }; + worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams); + task._worker = worker; + } + + const docId = task.docId; + worker.promise.then(function () { + if (task.destroyed) { + throw new Error("Loading aborted"); + } + + const workerIdPromise = _fetchDocument(worker, params, rangeTransport, docId); + + const networkStreamPromise = new Promise(function (resolve) { + let networkStream; + + if (rangeTransport) { + networkStream = new _transport_stream.PDFDataTransportStream({ + length: params.length, + initialData: params.initialData, + progressiveDone: params.progressiveDone, + contentDispositionFilename: params.contentDispositionFilename, + disableRange: params.disableRange, + disableStream: params.disableStream + }, rangeTransport); + } else if (!params.data) { + networkStream = createPDFNetworkStream({ + url: params.url, + length: params.length, + httpHeaders: params.httpHeaders, + withCredentials: params.withCredentials, + rangeChunkSize: params.rangeChunkSize, + disableRange: params.disableRange, + disableStream: params.disableStream + }); + } + + resolve(networkStream); + }); + return Promise.all([workerIdPromise, networkStreamPromise]).then(function ([workerId, networkStream]) { + if (task.destroyed) { + throw new Error("Loading aborted"); + } + + const messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port); + const transport = new WorkerTransport(messageHandler, task, networkStream, params); + task._transport = transport; + messageHandler.send("Ready", null); + }); + }).catch(task._capability.reject); + return task; +} + +async function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { + if (worker.destroyed) { + throw new Error("Worker was destroyed"); + } + + if (pdfDataRangeTransport) { + source.length = pdfDataRangeTransport.length; + source.initialData = pdfDataRangeTransport.initialData; + source.progressiveDone = pdfDataRangeTransport.progressiveDone; + source.contentDispositionFilename = pdfDataRangeTransport.contentDispositionFilename; + } + + const workerId = await worker.messageHandler.sendWithPromise("GetDocRequest", { + docId, + apiVersion: '2.16.105', + source: { + data: source.data, + url: source.url, + password: source.password, + disableAutoFetch: source.disableAutoFetch, + rangeChunkSize: source.rangeChunkSize, + length: source.length + }, + maxImageSize: source.maxImageSize, + disableFontFace: source.disableFontFace, + docBaseUrl: source.docBaseUrl, + ignoreErrors: source.ignoreErrors, + isEvalSupported: source.isEvalSupported, + fontExtraProperties: source.fontExtraProperties, + enableXfa: source.enableXfa, + useSystemFonts: source.useSystemFonts, + cMapUrl: source.useWorkerFetch ? source.cMapUrl : null, + standardFontDataUrl: source.useWorkerFetch ? source.standardFontDataUrl : null + }); + + if (source.data) { + source.data = null; + } + + if (worker.destroyed) { + throw new Error("Worker was destroyed"); + } + + return workerId; +} + +class PDFDocumentLoadingTask { + static #docId = 0; + + constructor() { + this._capability = (0, _util.createPromiseCapability)(); + this._transport = null; + this._worker = null; + this.docId = `d${PDFDocumentLoadingTask.#docId++}`; + this.destroyed = false; + this.onPassword = null; + this.onProgress = null; + this.onUnsupportedFeature = null; + } + + get promise() { + return this._capability.promise; + } + + async destroy() { + this.destroyed = true; + await this._transport?.destroy(); + this._transport = null; + + if (this._worker) { + this._worker.destroy(); + + this._worker = null; + } + } + +} + +exports.PDFDocumentLoadingTask = PDFDocumentLoadingTask; + +class PDFDataRangeTransport { + constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) { + this.length = length; + this.initialData = initialData; + this.progressiveDone = progressiveDone; + this.contentDispositionFilename = contentDispositionFilename; + this._rangeListeners = []; + this._progressListeners = []; + this._progressiveReadListeners = []; + this._progressiveDoneListeners = []; + this._readyCapability = (0, _util.createPromiseCapability)(); + } + + addRangeListener(listener) { + this._rangeListeners.push(listener); + } + + addProgressListener(listener) { + this._progressListeners.push(listener); + } + + addProgressiveReadListener(listener) { + this._progressiveReadListeners.push(listener); + } + + addProgressiveDoneListener(listener) { + this._progressiveDoneListeners.push(listener); + } + + onDataRange(begin, chunk) { + for (const listener of this._rangeListeners) { + listener(begin, chunk); + } + } + + onDataProgress(loaded, total) { + this._readyCapability.promise.then(() => { + for (const listener of this._progressListeners) { + listener(loaded, total); + } + }); + } + + onDataProgressiveRead(chunk) { + this._readyCapability.promise.then(() => { + for (const listener of this._progressiveReadListeners) { + listener(chunk); + } + }); + } + + onDataProgressiveDone() { + this._readyCapability.promise.then(() => { + for (const listener of this._progressiveDoneListeners) { + listener(); + } + }); + } + + transportReady() { + this._readyCapability.resolve(); + } + + requestDataRange(begin, end) { + (0, _util.unreachable)("Abstract method PDFDataRangeTransport.requestDataRange"); + } + + abort() {} + +} + +exports.PDFDataRangeTransport = PDFDataRangeTransport; + +class PDFDocumentProxy { + constructor(pdfInfo, transport) { + this._pdfInfo = pdfInfo; + this._transport = transport; + Object.defineProperty(this, "fingerprint", { + get() { + (0, _display_utils.deprecated)("`PDFDocumentProxy.fingerprint`, " + "please use `PDFDocumentProxy.fingerprints` instead."); + return this.fingerprints[0]; + } + + }); + Object.defineProperty(this, "getStats", { + value: async () => { + (0, _display_utils.deprecated)("`PDFDocumentProxy.getStats`, " + "please use the `PDFDocumentProxy.stats`-getter instead."); + return this.stats || { + streamTypes: {}, + fontTypes: {} + }; + } + }); + } + + get annotationStorage() { + return this._transport.annotationStorage; + } + + get numPages() { + return this._pdfInfo.numPages; + } + + get fingerprints() { + return this._pdfInfo.fingerprints; + } + + get stats() { + return this._transport.stats; + } + + get isPureXfa() { + return !!this._transport._htmlForXfa; + } + + get allXfaHtml() { + return this._transport._htmlForXfa; + } + + getPage(pageNumber) { + return this._transport.getPage(pageNumber); + } + + getPageIndex(ref) { + return this._transport.getPageIndex(ref); + } + + getDestinations() { + return this._transport.getDestinations(); + } + + getDestination(id) { + return this._transport.getDestination(id); + } + + getPageLabels() { + return this._transport.getPageLabels(); + } + + getPageLayout() { + return this._transport.getPageLayout(); + } + + getPageMode() { + return this._transport.getPageMode(); + } + + getViewerPreferences() { + return this._transport.getViewerPreferences(); + } + + getOpenAction() { + return this._transport.getOpenAction(); + } + + getAttachments() { + return this._transport.getAttachments(); + } + + getJavaScript() { + return this._transport.getJavaScript(); + } + + getJSActions() { + return this._transport.getDocJSActions(); + } + + getOutline() { + return this._transport.getOutline(); + } + + getOptionalContentConfig() { + return this._transport.getOptionalContentConfig(); + } + + getPermissions() { + return this._transport.getPermissions(); + } + + getMetadata() { + return this._transport.getMetadata(); + } + + getMarkInfo() { + return this._transport.getMarkInfo(); + } + + getData() { + return this._transport.getData(); + } + + getDownloadInfo() { + return this._transport.downloadInfoCapability.promise; + } + + cleanup(keepLoadedFonts = false) { + return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa); + } + + destroy() { + return this.loadingTask.destroy(); + } + + get loadingParams() { + return this._transport.loadingParams; + } + + get loadingTask() { + return this._transport.loadingTask; + } + + saveDocument() { + if (this._transport.annotationStorage.size <= 0) { + (0, _display_utils.deprecated)("saveDocument called while `annotationStorage` is empty, " + "please use the getData-method instead."); + } + + return this._transport.saveDocument(); + } + + getFieldObjects() { + return this._transport.getFieldObjects(); + } + + hasJSActions() { + return this._transport.hasJSActions(); + } + + getCalculationOrderIds() { + return this._transport.getCalculationOrderIds(); + } + +} + +exports.PDFDocumentProxy = PDFDocumentProxy; + +class PDFPageProxy { + constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) { + this._pageIndex = pageIndex; + this._pageInfo = pageInfo; + this._ownerDocument = ownerDocument; + this._transport = transport; + this._stats = pdfBug ? new _display_utils.StatTimer() : null; + this._pdfBug = pdfBug; + this.commonObjs = transport.commonObjs; + this.objs = new PDFObjects(); + this._bitmaps = new Set(); + this.cleanupAfterRender = false; + this.pendingCleanup = false; + this._intentStates = new Map(); + this._annotationPromises = new Map(); + this.destroyed = false; + } + + get pageNumber() { + return this._pageIndex + 1; + } + + get rotate() { + return this._pageInfo.rotate; + } + + get ref() { + return this._pageInfo.ref; + } + + get userUnit() { + return this._pageInfo.userUnit; + } + + get view() { + return this._pageInfo.view; + } + + getViewport({ + scale, + rotation = this.rotate, + offsetX = 0, + offsetY = 0, + dontFlip = false + } = {}) { + return new _display_utils.PageViewport({ + viewBox: this.view, + scale, + rotation, + offsetX, + offsetY, + dontFlip + }); + } + + getAnnotations({ + intent = "display" + } = {}) { + const intentArgs = this._transport.getRenderingIntent(intent); + + let promise = this._annotationPromises.get(intentArgs.cacheKey); + + if (!promise) { + promise = this._transport.getAnnotations(this._pageIndex, intentArgs.renderingIntent); + + this._annotationPromises.set(intentArgs.cacheKey, promise); + + promise = promise.then(annotations => { + for (const annotation of annotations) { + if (annotation.titleObj !== undefined) { + Object.defineProperty(annotation, "title", { + get() { + (0, _display_utils.deprecated)("`title`-property on annotation, please use `titleObj` instead."); + return annotation.titleObj.str; + } + + }); + } + + if (annotation.contentsObj !== undefined) { + Object.defineProperty(annotation, "contents", { + get() { + (0, _display_utils.deprecated)("`contents`-property on annotation, please use `contentsObj` instead."); + return annotation.contentsObj.str; + } + + }); + } + } + + return annotations; + }); + } + + return promise; + } + + getJSActions() { + return this._jsActionsPromise ||= this._transport.getPageJSActions(this._pageIndex); + } + + async getXfa() { + return this._transport._htmlForXfa?.children[this._pageIndex] || null; + } + + render({ + canvasContext, + viewport, + intent = "display", + annotationMode = _util.AnnotationMode.ENABLE, + transform = null, + imageLayer = null, + canvasFactory = null, + background = null, + optionalContentConfigPromise = null, + annotationCanvasMap = null, + pageColors = null, + printAnnotationStorage = null + }) { + if (arguments[0]?.renderInteractiveForms !== undefined) { + (0, _display_utils.deprecated)("render no longer accepts the `renderInteractiveForms`-option, " + "please use the `annotationMode`-option instead."); + + if (arguments[0].renderInteractiveForms === true && annotationMode === _util.AnnotationMode.ENABLE) { + annotationMode = _util.AnnotationMode.ENABLE_FORMS; + } + } + + if (arguments[0]?.includeAnnotationStorage !== undefined) { + (0, _display_utils.deprecated)("render no longer accepts the `includeAnnotationStorage`-option, " + "please use the `annotationMode`-option instead."); + + if (arguments[0].includeAnnotationStorage === true && annotationMode === _util.AnnotationMode.ENABLE) { + annotationMode = _util.AnnotationMode.ENABLE_STORAGE; + } + } + + if (this._stats) { + this._stats.time("Overall"); + } + + const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage); + + this.pendingCleanup = false; + + if (!optionalContentConfigPromise) { + optionalContentConfigPromise = this._transport.getOptionalContentConfig(); + } + + let intentState = this._intentStates.get(intentArgs.cacheKey); + + if (!intentState) { + intentState = Object.create(null); + + this._intentStates.set(intentArgs.cacheKey, intentState); + } + + if (intentState.streamReaderCancelTimeout) { + clearTimeout(intentState.streamReaderCancelTimeout); + intentState.streamReaderCancelTimeout = null; + } + + const canvasFactoryInstance = canvasFactory || new DefaultCanvasFactory({ + ownerDocument: this._ownerDocument + }); + const intentPrint = !!(intentArgs.renderingIntent & _util.RenderingIntentFlag.PRINT); + + if (!intentState.displayReadyCapability) { + intentState.displayReadyCapability = (0, _util.createPromiseCapability)(); + intentState.operatorList = { + fnArray: [], + argsArray: [], + lastChunk: false, + separateAnnots: null + }; + + if (this._stats) { + this._stats.time("Page Request"); + } + + this._pumpOperatorList(intentArgs); + } + + const complete = error => { + intentState.renderTasks.delete(internalRenderTask); + + if (this.cleanupAfterRender || intentPrint) { + this.pendingCleanup = true; + } + + this._tryCleanup(); + + if (error) { + internalRenderTask.capability.reject(error); + + this._abortOperatorList({ + intentState, + reason: error instanceof Error ? error : new Error(error) + }); + } else { + internalRenderTask.capability.resolve(); + } + + if (this._stats) { + this._stats.timeEnd("Rendering"); + + this._stats.timeEnd("Overall"); + } + }; + + const internalRenderTask = new InternalRenderTask({ + callback: complete, + params: { + canvasContext, + viewport, + transform, + imageLayer, + background + }, + objs: this.objs, + commonObjs: this.commonObjs, + annotationCanvasMap, + operatorList: intentState.operatorList, + pageIndex: this._pageIndex, + canvasFactory: canvasFactoryInstance, + useRequestAnimationFrame: !intentPrint, + pdfBug: this._pdfBug, + pageColors + }); + (intentState.renderTasks ||= new Set()).add(internalRenderTask); + const renderTask = internalRenderTask.task; + Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => { + if (this.pendingCleanup) { + complete(); + return; + } + + if (this._stats) { + this._stats.time("Rendering"); + } + + internalRenderTask.initializeGraphics({ + transparency, + optionalContentConfig + }); + internalRenderTask.operatorListChanged(); + }).catch(complete); + return renderTask; + } + + getOperatorList({ + intent = "display", + annotationMode = _util.AnnotationMode.ENABLE, + printAnnotationStorage = null + } = {}) { + function operatorListChanged() { + if (intentState.operatorList.lastChunk) { + intentState.opListReadCapability.resolve(intentState.operatorList); + intentState.renderTasks.delete(opListTask); + } + } + + const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, true); + + let intentState = this._intentStates.get(intentArgs.cacheKey); + + if (!intentState) { + intentState = Object.create(null); + + this._intentStates.set(intentArgs.cacheKey, intentState); + } + + let opListTask; + + if (!intentState.opListReadCapability) { + opListTask = Object.create(null); + opListTask.operatorListChanged = operatorListChanged; + intentState.opListReadCapability = (0, _util.createPromiseCapability)(); + (intentState.renderTasks ||= new Set()).add(opListTask); + intentState.operatorList = { + fnArray: [], + argsArray: [], + lastChunk: false, + separateAnnots: null + }; + + if (this._stats) { + this._stats.time("Page Request"); + } + + this._pumpOperatorList(intentArgs); + } + + return intentState.opListReadCapability.promise; + } + + streamTextContent({ + disableCombineTextItems = false, + includeMarkedContent = false + } = {}) { + const TEXT_CONTENT_CHUNK_SIZE = 100; + return this._transport.messageHandler.sendWithStream("GetTextContent", { + pageIndex: this._pageIndex, + combineTextItems: disableCombineTextItems !== true, + includeMarkedContent: includeMarkedContent === true + }, { + highWaterMark: TEXT_CONTENT_CHUNK_SIZE, + + size(textContent) { + return textContent.items.length; + } + + }); + } + + getTextContent(params = {}) { + if (this._transport._htmlForXfa) { + return this.getXfa().then(xfa => { + return _xfa_text.XfaText.textContent(xfa); + }); + } + + const readableStream = this.streamTextContent(params); + return new Promise(function (resolve, reject) { + function pump() { + reader.read().then(function ({ + value, + done + }) { + if (done) { + resolve(textContent); + return; + } + + Object.assign(textContent.styles, value.styles); + textContent.items.push(...value.items); + pump(); + }, reject); + } + + const reader = readableStream.getReader(); + const textContent = { + items: [], + styles: Object.create(null) + }; + pump(); + }); + } + + getStructTree() { + return this._structTreePromise ||= this._transport.getStructTree(this._pageIndex); + } + + _destroy() { + this.destroyed = true; + const waitOn = []; + + for (const intentState of this._intentStates.values()) { + this._abortOperatorList({ + intentState, + reason: new Error("Page was destroyed."), + force: true + }); + + if (intentState.opListReadCapability) { + continue; + } + + for (const internalRenderTask of intentState.renderTasks) { + waitOn.push(internalRenderTask.completed); + internalRenderTask.cancel(); + } + } + + this.objs.clear(); + + for (const bitmap of this._bitmaps) { + bitmap.close(); + } + + this._bitmaps.clear(); + + this._annotationPromises.clear(); + + this._jsActionsPromise = null; + this._structTreePromise = null; + this.pendingCleanup = false; + return Promise.all(waitOn); + } + + cleanup(resetStats = false) { + this.pendingCleanup = true; + return this._tryCleanup(resetStats); + } + + _tryCleanup(resetStats = false) { + if (!this.pendingCleanup) { + return false; + } + + for (const { + renderTasks, + operatorList + } of this._intentStates.values()) { + if (renderTasks.size > 0 || !operatorList.lastChunk) { + return false; + } + } + + this._intentStates.clear(); + + this.objs.clear(); + + this._annotationPromises.clear(); + + this._jsActionsPromise = null; + this._structTreePromise = null; + + if (resetStats && this._stats) { + this._stats = new _display_utils.StatTimer(); + } + + for (const bitmap of this._bitmaps) { + bitmap.close(); + } + + this._bitmaps.clear(); + + this.pendingCleanup = false; + return true; + } + + _startRenderPage(transparency, cacheKey) { + const intentState = this._intentStates.get(cacheKey); + + if (!intentState) { + return; + } + + if (this._stats) { + this._stats.timeEnd("Page Request"); + } + + if (intentState.displayReadyCapability) { + intentState.displayReadyCapability.resolve(transparency); + } + } + + _renderPageChunk(operatorListChunk, intentState) { + for (let i = 0, ii = operatorListChunk.length; i < ii; i++) { + intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]); + intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]); + } + + intentState.operatorList.lastChunk = operatorListChunk.lastChunk; + intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots; + + for (const internalRenderTask of intentState.renderTasks) { + internalRenderTask.operatorListChanged(); + } + + if (operatorListChunk.lastChunk) { + this._tryCleanup(); + } + } + + _pumpOperatorList({ + renderingIntent, + cacheKey, + annotationStorageMap + }) { + const readableStream = this._transport.messageHandler.sendWithStream("GetOperatorList", { + pageIndex: this._pageIndex, + intent: renderingIntent, + cacheKey, + annotationStorage: annotationStorageMap + }); + + const reader = readableStream.getReader(); + + const intentState = this._intentStates.get(cacheKey); + + intentState.streamReader = reader; + + const pump = () => { + reader.read().then(({ + value, + done + }) => { + if (done) { + intentState.streamReader = null; + return; + } + + if (this._transport.destroyed) { + return; + } + + this._renderPageChunk(value, intentState); + + pump(); + }, reason => { + intentState.streamReader = null; + + if (this._transport.destroyed) { + return; + } + + if (intentState.operatorList) { + intentState.operatorList.lastChunk = true; + + for (const internalRenderTask of intentState.renderTasks) { + internalRenderTask.operatorListChanged(); + } + + this._tryCleanup(); + } + + if (intentState.displayReadyCapability) { + intentState.displayReadyCapability.reject(reason); + } else if (intentState.opListReadCapability) { + intentState.opListReadCapability.reject(reason); + } else { + throw reason; + } + }); + }; + + pump(); + } + + _abortOperatorList({ + intentState, + reason, + force = false + }) { + if (!intentState.streamReader) { + return; + } + + if (!force) { + if (intentState.renderTasks.size > 0) { + return; + } + + if (reason instanceof _display_utils.RenderingCancelledException) { + intentState.streamReaderCancelTimeout = setTimeout(() => { + this._abortOperatorList({ + intentState, + reason, + force: true + }); + + intentState.streamReaderCancelTimeout = null; + }, RENDERING_CANCELLED_TIMEOUT); + return; + } + } + + intentState.streamReader.cancel(new _util.AbortException(reason.message)).catch(() => {}); + intentState.streamReader = null; + + if (this._transport.destroyed) { + return; + } + + for (const [curCacheKey, curIntentState] of this._intentStates) { + if (curIntentState === intentState) { + this._intentStates.delete(curCacheKey); + + break; + } + } + + this.cleanup(); + } + + get stats() { + return this._stats; + } + +} + +exports.PDFPageProxy = PDFPageProxy; + +class LoopbackPort { + constructor() { + this._listeners = []; + this._deferred = Promise.resolve(); + } + + postMessage(obj, transfers) { + const event = { + data: structuredClone(obj, transfers) + }; + + this._deferred.then(() => { + for (const listener of this._listeners) { + listener.call(this, event); + } + }); + } + + addEventListener(name, listener) { + this._listeners.push(listener); + } + + removeEventListener(name, listener) { + const i = this._listeners.indexOf(listener); + + this._listeners.splice(i, 1); + } + + terminate() { + this._listeners.length = 0; + } + +} + +exports.LoopbackPort = LoopbackPort; +const PDFWorkerUtil = { + isWorkerDisabled: false, + fallbackWorkerSrc: null, + fakeWorkerId: 0 +}; +exports.PDFWorkerUtil = PDFWorkerUtil; +{ + if (_is_node.isNodeJS && typeof require === "function") { + PDFWorkerUtil.isWorkerDisabled = true; + PDFWorkerUtil.fallbackWorkerSrc = "./pdf.worker.js"; + } else if (typeof document === "object") { + const pdfjsFilePath = document?.currentScript?.src; + + if (pdfjsFilePath) { + PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, ".worker$1$2"); + } + } + + PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) { + let base; + + try { + base = new URL(baseUrl); + + if (!base.origin || base.origin === "null") { + return false; + } + } catch (e) { + return false; + } + + const other = new URL(otherUrl, base); + return base.origin === other.origin; }; - return Util; -}(); -var PageViewport = function PageViewportClosure() { - function PageViewport(viewBox, scale, rotation, offsetX, offsetY, dontFlip) { + + PDFWorkerUtil.createCDNWrapper = function (url) { + const wrapper = `importScripts("${url}");`; + return URL.createObjectURL(new Blob([wrapper])); + }; +} + +class PDFWorker { + static #workerPorts = new WeakMap(); + + constructor({ + name = null, + port = null, + verbosity = (0, _util.getVerbosityLevel)() + } = {}) { + if (port && PDFWorker.#workerPorts.has(port)) { + throw new Error("Cannot use more than one PDFWorker per port."); + } + + this.name = name; + this.destroyed = false; + this.verbosity = verbosity; + this._readyCapability = (0, _util.createPromiseCapability)(); + this._port = null; + this._webWorker = null; + this._messageHandler = null; + + if (port) { + PDFWorker.#workerPorts.set(port, this); + + this._initializeFromPort(port); + + return; + } + + this._initialize(); + } + + get promise() { + return this._readyCapability.promise; + } + + get port() { + return this._port; + } + + get messageHandler() { + return this._messageHandler; + } + + _initializeFromPort(port) { + this._port = port; + this._messageHandler = new _message_handler.MessageHandler("main", "worker", port); + + this._messageHandler.on("ready", function () {}); + + this._readyCapability.resolve(); + } + + _initialize() { + if (!PDFWorkerUtil.isWorkerDisabled && !PDFWorker._mainThreadWorkerMessageHandler) { + let { + workerSrc + } = PDFWorker; + + try { + if (!PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)) { + workerSrc = PDFWorkerUtil.createCDNWrapper(new URL(workerSrc, window.location).href); + } + + const worker = new Worker(workerSrc); + const messageHandler = new _message_handler.MessageHandler("main", "worker", worker); + + const terminateEarly = () => { + worker.removeEventListener("error", onWorkerError); + messageHandler.destroy(); + worker.terminate(); + + if (this.destroyed) { + this._readyCapability.reject(new Error("Worker was destroyed")); + } else { + this._setupFakeWorker(); + } + }; + + const onWorkerError = () => { + if (!this._webWorker) { + terminateEarly(); + } + }; + + worker.addEventListener("error", onWorkerError); + messageHandler.on("test", data => { + worker.removeEventListener("error", onWorkerError); + + if (this.destroyed) { + terminateEarly(); + return; + } + + if (data) { + this._messageHandler = messageHandler; + this._port = worker; + this._webWorker = worker; + + this._readyCapability.resolve(); + + messageHandler.send("configure", { + verbosity: this.verbosity + }); + } else { + this._setupFakeWorker(); + + messageHandler.destroy(); + worker.terminate(); + } + }); + messageHandler.on("ready", data => { + worker.removeEventListener("error", onWorkerError); + + if (this.destroyed) { + terminateEarly(); + return; + } + + try { + sendTest(); + } catch (e) { + this._setupFakeWorker(); + } + }); + + const sendTest = () => { + const testObj = new Uint8Array(); + messageHandler.send("test", testObj, [testObj.buffer]); + }; + + sendTest(); + return; + } catch (e) { + (0, _util.info)("The worker has been disabled."); + } + } + + this._setupFakeWorker(); + } + + _setupFakeWorker() { + if (!PDFWorkerUtil.isWorkerDisabled) { + (0, _util.warn)("Setting up fake worker."); + PDFWorkerUtil.isWorkerDisabled = true; + } + + PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => { + if (this.destroyed) { + this._readyCapability.reject(new Error("Worker was destroyed")); + + return; + } + + const port = new LoopbackPort(); + this._port = port; + const id = `fake${PDFWorkerUtil.fakeWorkerId++}`; + const workerHandler = new _message_handler.MessageHandler(id + "_worker", id, port); + WorkerMessageHandler.setup(workerHandler, port); + const messageHandler = new _message_handler.MessageHandler(id, id + "_worker", port); + this._messageHandler = messageHandler; + + this._readyCapability.resolve(); + + messageHandler.send("configure", { + verbosity: this.verbosity + }); + }).catch(reason => { + this._readyCapability.reject(new Error(`Setting up fake worker failed: "${reason.message}".`)); + }); + } + + destroy() { + this.destroyed = true; + + if (this._webWorker) { + this._webWorker.terminate(); + + this._webWorker = null; + } + + PDFWorker.#workerPorts.delete(this._port); + this._port = null; + + if (this._messageHandler) { + this._messageHandler.destroy(); + + this._messageHandler = null; + } + } + + static fromPort(params) { + if (!params?.port) { + throw new Error("PDFWorker.fromPort - invalid method signature."); + } + + if (this.#workerPorts.has(params.port)) { + return this.#workerPorts.get(params.port); + } + + return new PDFWorker(params); + } + + static get workerSrc() { + if (_worker_options.GlobalWorkerOptions.workerSrc) { + return _worker_options.GlobalWorkerOptions.workerSrc; + } + + if (PDFWorkerUtil.fallbackWorkerSrc !== null) { + if (!_is_node.isNodeJS) { + (0, _display_utils.deprecated)('No "GlobalWorkerOptions.workerSrc" specified.'); + } + + return PDFWorkerUtil.fallbackWorkerSrc; + } + + throw new Error('No "GlobalWorkerOptions.workerSrc" specified.'); + } + + static get _mainThreadWorkerMessageHandler() { + try { + return globalThis.pdfjsWorker?.WorkerMessageHandler || null; + } catch (ex) { + return null; + } + } + + static get _setupFakeWorkerGlobal() { + const loader = async () => { + const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler; + + if (mainWorkerMessageHandler) { + return mainWorkerMessageHandler; + } + + if (_is_node.isNodeJS && typeof require === "function") { + const worker = eval("require")(this.workerSrc); + return worker.WorkerMessageHandler; + } + + await (0, _display_utils.loadScript)(this.workerSrc); + return window.pdfjsWorker.WorkerMessageHandler; + }; + + return (0, _util.shadow)(this, "_setupFakeWorkerGlobal", loader()); + } + +} + +exports.PDFWorker = PDFWorker; +{ + PDFWorker.getWorkerSrc = function () { + (0, _display_utils.deprecated)("`PDFWorker.getWorkerSrc()`, please use `PDFWorker.workerSrc` instead."); + return this.workerSrc; + }; +} + +class WorkerTransport { + #docStats = null; + #pageCache = new Map(); + #pagePromises = new Map(); + #metadataPromise = null; + + constructor(messageHandler, loadingTask, networkStream, params) { + this.messageHandler = messageHandler; + this.loadingTask = loadingTask; + this.commonObjs = new PDFObjects(); + this.fontLoader = new _font_loader.FontLoader({ + docId: loadingTask.docId, + onUnsupportedFeature: this._onUnsupportedFeature.bind(this), + ownerDocument: params.ownerDocument, + styleElement: params.styleElement + }); + this._params = params; + + if (!params.useWorkerFetch) { + this.CMapReaderFactory = new params.CMapReaderFactory({ + baseUrl: params.cMapUrl, + isCompressed: params.cMapPacked + }); + this.StandardFontDataFactory = new params.StandardFontDataFactory({ + baseUrl: params.standardFontDataUrl + }); + } + + this.destroyed = false; + this.destroyCapability = null; + this._passwordCapability = null; + this._networkStream = networkStream; + this._fullReader = null; + this._lastProgress = null; + this.downloadInfoCapability = (0, _util.createPromiseCapability)(); + this.setupMessageHandler(); + } + + get annotationStorage() { + return (0, _util.shadow)(this, "annotationStorage", new _annotation_storage.AnnotationStorage()); + } + + get stats() { + return this.#docStats; + } + + getRenderingIntent(intent, annotationMode = _util.AnnotationMode.ENABLE, printAnnotationStorage = null, isOpList = false) { + let renderingIntent = _util.RenderingIntentFlag.DISPLAY; + let annotationMap = null; + + switch (intent) { + case "any": + renderingIntent = _util.RenderingIntentFlag.ANY; + break; + + case "display": + break; + + case "print": + renderingIntent = _util.RenderingIntentFlag.PRINT; + break; + + default: + (0, _util.warn)(`getRenderingIntent - invalid intent: ${intent}`); + } + + switch (annotationMode) { + case _util.AnnotationMode.DISABLE: + renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_DISABLE; + break; + + case _util.AnnotationMode.ENABLE: + break; + + case _util.AnnotationMode.ENABLE_FORMS: + renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_FORMS; + break; + + case _util.AnnotationMode.ENABLE_STORAGE: + renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_STORAGE; + const annotationStorage = renderingIntent & _util.RenderingIntentFlag.PRINT && printAnnotationStorage instanceof _annotation_storage.PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage; + annotationMap = annotationStorage.serializable; + break; + + default: + (0, _util.warn)(`getRenderingIntent - invalid annotationMode: ${annotationMode}`); + } + + if (isOpList) { + renderingIntent += _util.RenderingIntentFlag.OPLIST; + } + + return { + renderingIntent, + cacheKey: `${renderingIntent}_${_annotation_storage.AnnotationStorage.getHash(annotationMap)}`, + annotationStorageMap: annotationMap + }; + } + + destroy() { + if (this.destroyCapability) { + return this.destroyCapability.promise; + } + + this.destroyed = true; + this.destroyCapability = (0, _util.createPromiseCapability)(); + + if (this._passwordCapability) { + this._passwordCapability.reject(new Error("Worker was destroyed during onPassword callback")); + } + + const waitOn = []; + + for (const page of this.#pageCache.values()) { + waitOn.push(page._destroy()); + } + + this.#pageCache.clear(); + this.#pagePromises.clear(); + + if (this.hasOwnProperty("annotationStorage")) { + this.annotationStorage.resetModified(); + } + + const terminated = this.messageHandler.sendWithPromise("Terminate", null); + waitOn.push(terminated); + Promise.all(waitOn).then(() => { + this.commonObjs.clear(); + this.fontLoader.clear(); + this.#metadataPromise = null; + this._getFieldObjectsPromise = null; + this._hasJSActionsPromise = null; + + if (this._networkStream) { + this._networkStream.cancelAllRequests(new _util.AbortException("Worker was terminated.")); + } + + if (this.messageHandler) { + this.messageHandler.destroy(); + this.messageHandler = null; + } + + this.destroyCapability.resolve(); + }, this.destroyCapability.reject); + return this.destroyCapability.promise; + } + + setupMessageHandler() { + const { + messageHandler, + loadingTask + } = this; + messageHandler.on("GetReader", (data, sink) => { + (0, _util.assert)(this._networkStream, "GetReader - no `IPDFStream` instance available."); + this._fullReader = this._networkStream.getFullReader(); + + this._fullReader.onProgress = evt => { + this._lastProgress = { + loaded: evt.loaded, + total: evt.total + }; + }; + + sink.onPull = () => { + this._fullReader.read().then(function ({ + value, + done + }) { + if (done) { + sink.close(); + return; + } + + (0, _util.assert)((0, _util.isArrayBuffer)(value), "GetReader - expected an ArrayBuffer."); + sink.enqueue(new Uint8Array(value), 1, [value]); + }).catch(reason => { + sink.error(reason); + }); + }; + + sink.onCancel = reason => { + this._fullReader.cancel(reason); + + sink.ready.catch(readyReason => { + if (this.destroyed) { + return; + } + + throw readyReason; + }); + }; + }); + messageHandler.on("ReaderHeadersReady", data => { + const headersCapability = (0, _util.createPromiseCapability)(); + const fullReader = this._fullReader; + fullReader.headersReady.then(() => { + if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) { + if (this._lastProgress) { + loadingTask.onProgress?.(this._lastProgress); + } + + fullReader.onProgress = evt => { + loadingTask.onProgress?.({ + loaded: evt.loaded, + total: evt.total + }); + }; + } + + headersCapability.resolve({ + isStreamingSupported: fullReader.isStreamingSupported, + isRangeSupported: fullReader.isRangeSupported, + contentLength: fullReader.contentLength + }); + }, headersCapability.reject); + return headersCapability.promise; + }); + messageHandler.on("GetRangeReader", (data, sink) => { + (0, _util.assert)(this._networkStream, "GetRangeReader - no `IPDFStream` instance available."); + + const rangeReader = this._networkStream.getRangeReader(data.begin, data.end); + + if (!rangeReader) { + sink.close(); + return; + } + + sink.onPull = () => { + rangeReader.read().then(function ({ + value, + done + }) { + if (done) { + sink.close(); + return; + } + + (0, _util.assert)((0, _util.isArrayBuffer)(value), "GetRangeReader - expected an ArrayBuffer."); + sink.enqueue(new Uint8Array(value), 1, [value]); + }).catch(reason => { + sink.error(reason); + }); + }; + + sink.onCancel = reason => { + rangeReader.cancel(reason); + sink.ready.catch(readyReason => { + if (this.destroyed) { + return; + } + + throw readyReason; + }); + }; + }); + messageHandler.on("GetDoc", ({ + pdfInfo + }) => { + this._numPages = pdfInfo.numPages; + this._htmlForXfa = pdfInfo.htmlForXfa; + delete pdfInfo.htmlForXfa; + + loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this)); + }); + messageHandler.on("DocException", function (ex) { + let reason; + + switch (ex.name) { + case "PasswordException": + reason = new _util.PasswordException(ex.message, ex.code); + break; + + case "InvalidPDFException": + reason = new _util.InvalidPDFException(ex.message); + break; + + case "MissingPDFException": + reason = new _util.MissingPDFException(ex.message); + break; + + case "UnexpectedResponseException": + reason = new _util.UnexpectedResponseException(ex.message, ex.status); + break; + + case "UnknownErrorException": + reason = new _util.UnknownErrorException(ex.message, ex.details); + break; + + default: + (0, _util.unreachable)("DocException - expected a valid Error."); + } + + loadingTask._capability.reject(reason); + }); + messageHandler.on("PasswordRequest", exception => { + this._passwordCapability = (0, _util.createPromiseCapability)(); + + if (loadingTask.onPassword) { + const updatePassword = password => { + if (password instanceof Error) { + this._passwordCapability.reject(password); + } else { + this._passwordCapability.resolve({ + password + }); + } + }; + + try { + loadingTask.onPassword(updatePassword, exception.code); + } catch (ex) { + this._passwordCapability.reject(ex); + } + } else { + this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code)); + } + + return this._passwordCapability.promise; + }); + messageHandler.on("DataLoaded", data => { + loadingTask.onProgress?.({ + loaded: data.length, + total: data.length + }); + this.downloadInfoCapability.resolve(data); + }); + messageHandler.on("StartRenderPage", data => { + if (this.destroyed) { + return; + } + + const page = this.#pageCache.get(data.pageIndex); + + page._startRenderPage(data.transparency, data.cacheKey); + }); + messageHandler.on("commonobj", ([id, type, exportedData]) => { + if (this.destroyed) { + return; + } + + if (this.commonObjs.has(id)) { + return; + } + + switch (type) { + case "Font": + const params = this._params; + + if ("error" in exportedData) { + const exportedError = exportedData.error; + (0, _util.warn)(`Error during font loading: ${exportedError}`); + this.commonObjs.resolve(id, exportedError); + break; + } + + let fontRegistry = null; + + if (params.pdfBug && globalThis.FontInspector?.enabled) { + fontRegistry = { + registerFont(font, url) { + globalThis.FontInspector.fontAdded(font, url); + } + + }; + } + + const font = new _font_loader.FontFaceObject(exportedData, { + isEvalSupported: params.isEvalSupported, + disableFontFace: params.disableFontFace, + ignoreErrors: params.ignoreErrors, + onUnsupportedFeature: this._onUnsupportedFeature.bind(this), + fontRegistry + }); + this.fontLoader.bind(font).catch(reason => { + return messageHandler.sendWithPromise("FontFallback", { + id + }); + }).finally(() => { + if (!params.fontExtraProperties && font.data) { + font.data = null; + } + + this.commonObjs.resolve(id, font); + }); + break; + + case "FontPath": + case "Image": + this.commonObjs.resolve(id, exportedData); + break; + + default: + throw new Error(`Got unknown common object type ${type}`); + } + }); + messageHandler.on("obj", ([id, pageIndex, type, imageData]) => { + if (this.destroyed) { + return; + } + + const pageProxy = this.#pageCache.get(pageIndex); + + if (pageProxy.objs.has(id)) { + return; + } + + switch (type) { + case "Image": + pageProxy.objs.resolve(id, imageData); + const MAX_IMAGE_SIZE_TO_STORE = 8000000; + + if (imageData) { + let length; + + if (imageData.bitmap) { + const { + bitmap, + width, + height + } = imageData; + length = width * height * 4; + + pageProxy._bitmaps.add(bitmap); + } else { + length = imageData.data?.length || 0; + } + + if (length > MAX_IMAGE_SIZE_TO_STORE) { + pageProxy.cleanupAfterRender = true; + } + } + + break; + + case "Pattern": + pageProxy.objs.resolve(id, imageData); + break; + + default: + throw new Error(`Got unknown object type ${type}`); + } + }); + messageHandler.on("DocProgress", data => { + if (this.destroyed) { + return; + } + + loadingTask.onProgress?.({ + loaded: data.loaded, + total: data.total + }); + }); + messageHandler.on("DocStats", data => { + if (this.destroyed) { + return; + } + + this.#docStats = Object.freeze({ + streamTypes: Object.freeze(data.streamTypes), + fontTypes: Object.freeze(data.fontTypes) + }); + }); + messageHandler.on("UnsupportedFeature", this._onUnsupportedFeature.bind(this)); + messageHandler.on("FetchBuiltInCMap", data => { + if (this.destroyed) { + return Promise.reject(new Error("Worker was destroyed.")); + } + + if (!this.CMapReaderFactory) { + return Promise.reject(new Error("CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.")); + } + + return this.CMapReaderFactory.fetch(data); + }); + messageHandler.on("FetchStandardFontData", data => { + if (this.destroyed) { + return Promise.reject(new Error("Worker was destroyed.")); + } + + if (!this.StandardFontDataFactory) { + return Promise.reject(new Error("StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.")); + } + + return this.StandardFontDataFactory.fetch(data); + }); + } + + _onUnsupportedFeature({ + featureId + }) { + if (this.destroyed) { + return; + } + + this.loadingTask.onUnsupportedFeature?.(featureId); + } + + getData() { + return this.messageHandler.sendWithPromise("GetData", null); + } + + getPage(pageNumber) { + if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) { + return Promise.reject(new Error("Invalid page request.")); + } + + const pageIndex = pageNumber - 1, + cachedPromise = this.#pagePromises.get(pageIndex); + + if (cachedPromise) { + return cachedPromise; + } + + const promise = this.messageHandler.sendWithPromise("GetPage", { + pageIndex + }).then(pageInfo => { + if (this.destroyed) { + throw new Error("Transport destroyed"); + } + + const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.ownerDocument, this._params.pdfBug); + this.#pageCache.set(pageIndex, page); + return page; + }); + this.#pagePromises.set(pageIndex, promise); + return promise; + } + + 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", { + num: ref.num, + gen: ref.gen + }); + } + + getAnnotations(pageIndex, intent) { + return this.messageHandler.sendWithPromise("GetAnnotations", { + pageIndex, + intent + }); + } + + saveDocument() { + return this.messageHandler.sendWithPromise("SaveDocument", { + isPureXfa: !!this._htmlForXfa, + numPages: this._numPages, + annotationStorage: this.annotationStorage.serializable, + filename: this._fullReader?.filename ?? null + }).finally(() => { + this.annotationStorage.resetModified(); + }); + } + + getFieldObjects() { + return this._getFieldObjectsPromise ||= this.messageHandler.sendWithPromise("GetFieldObjects", null); + } + + hasJSActions() { + return this._hasJSActionsPromise ||= this.messageHandler.sendWithPromise("HasJSActions", null); + } + + getCalculationOrderIds() { + return this.messageHandler.sendWithPromise("GetCalculationOrderIds", null); + } + + getDestinations() { + return this.messageHandler.sendWithPromise("GetDestinations", null); + } + + getDestination(id) { + if (typeof id !== "string") { + return Promise.reject(new Error("Invalid destination request.")); + } + + return this.messageHandler.sendWithPromise("GetDestination", { + id + }); + } + + getPageLabels() { + return this.messageHandler.sendWithPromise("GetPageLabels", null); + } + + getPageLayout() { + return this.messageHandler.sendWithPromise("GetPageLayout", null); + } + + getPageMode() { + return this.messageHandler.sendWithPromise("GetPageMode", null); + } + + getViewerPreferences() { + return this.messageHandler.sendWithPromise("GetViewerPreferences", null); + } + + getOpenAction() { + return this.messageHandler.sendWithPromise("GetOpenAction", null); + } + + getAttachments() { + return this.messageHandler.sendWithPromise("GetAttachments", null); + } + + getJavaScript() { + return this.messageHandler.sendWithPromise("GetJavaScript", null); + } + + getDocJSActions() { + return this.messageHandler.sendWithPromise("GetDocJSActions", null); + } + + getPageJSActions(pageIndex) { + return this.messageHandler.sendWithPromise("GetPageJSActions", { + pageIndex + }); + } + + getStructTree(pageIndex) { + return this.messageHandler.sendWithPromise("GetStructTree", { + pageIndex + }); + } + + getOutline() { + return this.messageHandler.sendWithPromise("GetOutline", null); + } + + getOptionalContentConfig() { + return this.messageHandler.sendWithPromise("GetOptionalContentConfig", null).then(results => { + return new _optional_content_config.OptionalContentConfig(results); + }); + } + + getPermissions() { + return this.messageHandler.sendWithPromise("GetPermissions", null); + } + + getMetadata() { + return this.#metadataPromise ||= this.messageHandler.sendWithPromise("GetMetadata", null).then(results => { + return { + info: results[0], + metadata: results[1] ? new _metadata.Metadata(results[1]) : null, + contentDispositionFilename: this._fullReader?.filename ?? null, + contentLength: this._fullReader?.contentLength ?? null + }; + }); + } + + getMarkInfo() { + return this.messageHandler.sendWithPromise("GetMarkInfo", null); + } + + async startCleanup(keepLoadedFonts = false) { + await this.messageHandler.sendWithPromise("Cleanup", null); + + if (this.destroyed) { + return; + } + + for (const page of this.#pageCache.values()) { + const cleanupSuccessful = page.cleanup(); + + if (!cleanupSuccessful) { + throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`); + } + } + + this.commonObjs.clear(); + + if (!keepLoadedFonts) { + this.fontLoader.clear(); + } + + this.#metadataPromise = null; + this._getFieldObjectsPromise = null; + this._hasJSActionsPromise = null; + } + + get loadingParams() { + const params = this._params; + return (0, _util.shadow)(this, "loadingParams", { + disableAutoFetch: params.disableAutoFetch, + enableXfa: params.enableXfa + }); + } + +} + +class PDFObjects { + #objs = Object.create(null); + + #ensureObj(objId) { + const obj = this.#objs[objId]; + + if (obj) { + return obj; + } + + return this.#objs[objId] = { + capability: (0, _util.createPromiseCapability)(), + data: null + }; + } + + get(objId, callback = null) { + if (callback) { + const obj = this.#ensureObj(objId); + obj.capability.promise.then(() => callback(obj.data)); + return null; + } + + const obj = this.#objs[objId]; + + if (!obj?.capability.settled) { + throw new Error(`Requesting object that isn't resolved yet ${objId}.`); + } + + return obj.data; + } + + has(objId) { + const obj = this.#objs[objId]; + return obj?.capability.settled || false; + } + + resolve(objId, data = null) { + const obj = this.#ensureObj(objId); + obj.data = data; + obj.capability.resolve(); + } + + clear() { + this.#objs = Object.create(null); + } + +} + +class RenderTask { + #internalRenderTask = null; + + constructor(internalRenderTask) { + this.#internalRenderTask = internalRenderTask; + this.onContinue = null; + } + + get promise() { + return this.#internalRenderTask.capability.promise; + } + + cancel() { + this.#internalRenderTask.cancel(); + } + + get separateAnnots() { + const { + separateAnnots + } = this.#internalRenderTask.operatorList; + + if (!separateAnnots) { + return false; + } + + const { + annotationCanvasMap + } = this.#internalRenderTask; + return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0; + } + +} + +exports.RenderTask = RenderTask; + +class InternalRenderTask { + static #canvasInUse = new WeakSet(); + + constructor({ + callback, + params, + objs, + commonObjs, + annotationCanvasMap, + operatorList, + pageIndex, + canvasFactory, + useRequestAnimationFrame = false, + pdfBug = false, + pageColors = null + }) { + this.callback = callback; + this.params = params; + this.objs = objs; + this.commonObjs = commonObjs; + this.annotationCanvasMap = annotationCanvasMap; + this.operatorListIdx = null; + this.operatorList = operatorList; + this._pageIndex = pageIndex; + this.canvasFactory = canvasFactory; + this._pdfBug = pdfBug; + this.pageColors = pageColors; + this.running = false; + this.graphicsReadyCallback = null; + this.graphicsReady = false; + this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== "undefined"; + this.cancelled = false; + this.capability = (0, _util.createPromiseCapability)(); + this.task = new RenderTask(this); + this._cancelBound = this.cancel.bind(this); + this._continueBound = this._continue.bind(this); + this._scheduleNextBound = this._scheduleNext.bind(this); + this._nextBound = this._next.bind(this); + this._canvas = params.canvasContext.canvas; + } + + get completed() { + return this.capability.promise.catch(function () {}); + } + + initializeGraphics({ + transparency = false, + optionalContentConfig + }) { + if (this.cancelled) { + return; + } + + if (this._canvas) { + if (InternalRenderTask.#canvasInUse.has(this._canvas)) { + throw new Error("Cannot use the same canvas during multiple render() operations. " + "Use different canvas or ensure previous operations were " + "cancelled or completed."); + } + + InternalRenderTask.#canvasInUse.add(this._canvas); + } + + if (this._pdfBug && globalThis.StepperManager?.enabled) { + this.stepper = globalThis.StepperManager.create(this._pageIndex); + this.stepper.init(this.operatorList); + this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint(); + } + + const { + canvasContext, + viewport, + transform, + imageLayer, + background + } = this.params; + this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, imageLayer, optionalContentConfig, this.annotationCanvasMap, this.pageColors); + this.gfx.beginDrawing({ + transform, + viewport, + transparency, + background + }); + this.operatorListIdx = 0; + this.graphicsReady = true; + + if (this.graphicsReadyCallback) { + this.graphicsReadyCallback(); + } + } + + cancel(error = null) { + this.running = false; + this.cancelled = true; + + if (this.gfx) { + this.gfx.endDrawing(); + } + + if (this._canvas) { + InternalRenderTask.#canvasInUse.delete(this._canvas); + } + + this.callback(error || new _display_utils.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, "canvas")); + } + + operatorListChanged() { + if (!this.graphicsReady) { + if (!this.graphicsReadyCallback) { + this.graphicsReadyCallback = this._continueBound; + } + + return; + } + + if (this.stepper) { + this.stepper.updateOperatorList(this.operatorList); + } + + if (this.running) { + return; + } + + this._continue(); + } + + _continue() { + this.running = true; + + if (this.cancelled) { + return; + } + + if (this.task.onContinue) { + this.task.onContinue(this._scheduleNextBound); + } else { + this._scheduleNext(); + } + } + + _scheduleNext() { + if (this._useRequestAnimationFrame) { + window.requestAnimationFrame(() => { + this._nextBound().catch(this._cancelBound); + }); + } else { + Promise.resolve().then(this._nextBound).catch(this._cancelBound); + } + } + + async _next() { + if (this.cancelled) { + return; + } + + this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper); + + if (this.operatorListIdx === this.operatorList.argsArray.length) { + this.running = false; + + if (this.operatorList.lastChunk) { + this.gfx.endDrawing(); + + if (this._canvas) { + InternalRenderTask.#canvasInUse.delete(this._canvas); + } + + this.callback(); + } + } + } + +} + +const version = '2.16.105'; +exports.version = version; +const build = '172ccdbe5'; +exports.build = build; + +/***/ }), +/* 5 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PrintAnnotationStorage = exports.AnnotationStorage = void 0; + +var _util = __w_pdfjs_require__(1); + +var _editor = __w_pdfjs_require__(6); + +var _murmurhash = __w_pdfjs_require__(10); + +class AnnotationStorage { + constructor() { + this._storage = new Map(); + this._modified = false; + this.onSetModified = null; + this.onResetModified = null; + this.onAnnotationEditor = null; + } + + getValue(key, defaultValue) { + const value = this._storage.get(key); + + if (value === undefined) { + return defaultValue; + } + + return Object.assign(defaultValue, value); + } + + getRawValue(key) { + return this._storage.get(key); + } + + remove(key) { + this._storage.delete(key); + + if (this._storage.size === 0) { + this.resetModified(); + } + + if (typeof this.onAnnotationEditor === "function") { + for (const value of this._storage.values()) { + if (value instanceof _editor.AnnotationEditor) { + return; + } + } + + this.onAnnotationEditor(null); + } + } + + setValue(key, value) { + const obj = this._storage.get(key); + + let modified = false; + + if (obj !== undefined) { + for (const [entry, val] of Object.entries(value)) { + if (obj[entry] !== val) { + modified = true; + obj[entry] = val; + } + } + } else { + modified = true; + + this._storage.set(key, value); + } + + if (modified) { + this.#setModified(); + } + + if (value instanceof _editor.AnnotationEditor && typeof this.onAnnotationEditor === "function") { + this.onAnnotationEditor(value.constructor._type); + } + } + + has(key) { + return this._storage.has(key); + } + + getAll() { + return this._storage.size > 0 ? (0, _util.objectFromMap)(this._storage) : null; + } + + get size() { + return this._storage.size; + } + + #setModified() { + if (!this._modified) { + this._modified = true; + + if (typeof this.onSetModified === "function") { + this.onSetModified(); + } + } + } + + resetModified() { + if (this._modified) { + this._modified = false; + + if (typeof this.onResetModified === "function") { + this.onResetModified(); + } + } + } + + get print() { + return new PrintAnnotationStorage(this); + } + + get serializable() { + if (this._storage.size === 0) { + return null; + } + + const clone = new Map(); + + for (const [key, val] of this._storage) { + const serialized = val instanceof _editor.AnnotationEditor ? val.serialize() : val; + + if (serialized) { + clone.set(key, serialized); + } + } + + return clone; + } + + static getHash(map) { + if (!map) { + return ""; + } + + const hash = new _murmurhash.MurmurHash3_64(); + + for (const [key, val] of map) { + hash.update(`${key}:${JSON.stringify(val)}`); + } + + return hash.hexdigest(); + } + +} + +exports.AnnotationStorage = AnnotationStorage; + +class PrintAnnotationStorage extends AnnotationStorage { + #serializable = null; + + constructor(parent) { + super(); + this.#serializable = structuredClone(parent.serializable); + } + + get print() { + (0, _util.unreachable)("Should not call PrintAnnotationStorage.print"); + } + + get serializable() { + return this.#serializable; + } + +} + +exports.PrintAnnotationStorage = PrintAnnotationStorage; + +/***/ }), +/* 6 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationEditor = void 0; + +var _tools = __w_pdfjs_require__(7); + +var _util = __w_pdfjs_require__(1); + +class AnnotationEditor { + #boundFocusin = this.focusin.bind(this); + #boundFocusout = this.focusout.bind(this); + #hasBeenSelected = false; + #isEditing = false; + #isInEditMode = false; + #zIndex = AnnotationEditor._zIndex++; + static _colorManager = new _tools.ColorManager(); + static _zIndex = 1; + + constructor(parameters) { + if (this.constructor === AnnotationEditor) { + (0, _util.unreachable)("Cannot initialize AnnotationEditor."); + } + + this.parent = parameters.parent; + this.id = parameters.id; + this.width = this.height = null; + this.pageIndex = parameters.parent.pageIndex; + this.name = parameters.name; + this.div = null; + const [width, height] = this.parent.viewportBaseDimensions; + this.x = parameters.x / width; + this.y = parameters.y / height; + this.rotation = this.parent.viewport.rotation; + this.isAttachedToDOM = false; + } + + static get _defaultLineColor() { + return (0, _util.shadow)(this, "_defaultLineColor", this._colorManager.getHexCode("CanvasText")); + } + + setInBackground() { + this.div.style.zIndex = 0; + } + + setInForeground() { + this.div.style.zIndex = this.#zIndex; + } + + focusin(event) { + if (!this.#hasBeenSelected) { + this.parent.setSelected(this); + } else { + this.#hasBeenSelected = false; + } + } + + focusout(event) { + if (!this.isAttachedToDOM) { + return; + } + + const target = event.relatedTarget; + + if (target?.closest(`#${this.id}`)) { + return; + } + + event.preventDefault(); + + if (!this.parent.isMultipleSelection) { + this.commitOrRemove(); + } + } + + commitOrRemove() { + if (this.isEmpty()) { + this.remove(); + } else { + this.commit(); + } + } + + commit() { + this.parent.addToAnnotationStorage(this); + } + + dragstart(event) { + const rect = this.parent.div.getBoundingClientRect(); + this.startX = event.clientX - rect.x; + this.startY = event.clientY - rect.y; + event.dataTransfer.setData("text/plain", this.id); + event.dataTransfer.effectAllowed = "move"; + } + + setAt(x, y, tx, ty) { + const [width, height] = this.parent.viewportBaseDimensions; + [tx, ty] = this.screenToPageTranslation(tx, ty); + this.x = (x + tx) / width; + this.y = (y + ty) / height; + this.div.style.left = `${100 * this.x}%`; + this.div.style.top = `${100 * this.y}%`; + } + + translate(x, y) { + const [width, height] = this.parent.viewportBaseDimensions; + [x, y] = this.screenToPageTranslation(x, y); + this.x += x / width; + this.y += y / height; + this.div.style.left = `${100 * this.x}%`; + this.div.style.top = `${100 * this.y}%`; + } + + screenToPageTranslation(x, y) { + const { + rotation + } = this.parent.viewport; + + switch (rotation) { + case 90: + return [y, -x]; + + case 180: + return [-x, -y]; + + case 270: + return [-y, x]; + + default: + return [x, y]; + } + } + + setDims(width, height) { + const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions; + this.div.style.width = `${100 * width / parentWidth}%`; + this.div.style.height = `${100 * height / parentHeight}%`; + } + + getInitialTranslation() { + return [0, 0]; + } + + render() { + this.div = document.createElement("div"); + this.div.setAttribute("data-editor-rotation", (360 - this.rotation) % 360); + this.div.className = this.name; + this.div.setAttribute("id", this.id); + this.div.setAttribute("tabIndex", 0); + this.setInForeground(); + this.div.addEventListener("focusin", this.#boundFocusin); + this.div.addEventListener("focusout", this.#boundFocusout); + const [tx, ty] = this.getInitialTranslation(); + this.translate(tx, ty); + (0, _tools.bindEvents)(this, this.div, ["dragstart", "pointerdown"]); + return this.div; + } + + pointerdown(event) { + const isMac = _tools.KeyboardManager.platform.isMac; + + if (event.button !== 0 || event.ctrlKey && isMac) { + event.preventDefault(); + return; + } + + if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) { + this.parent.toggleSelected(this); + } else { + this.parent.setSelected(this); + } + + this.#hasBeenSelected = true; + } + + getRect(tx, ty) { + const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions; + const [pageWidth, pageHeight] = this.parent.pageDimensions; + const shiftX = pageWidth * tx / parentWidth; + const shiftY = pageHeight * ty / parentHeight; + const x = this.x * pageWidth; + const y = this.y * pageHeight; + const width = this.width * pageWidth; + const height = this.height * pageHeight; + + switch (this.rotation) { + case 0: + return [x + shiftX, pageHeight - y - shiftY - height, x + shiftX + width, pageHeight - y - shiftY]; + + case 90: + return [x + shiftY, pageHeight - y + shiftX, x + shiftY + height, pageHeight - y + shiftX + width]; + + case 180: + return [x - shiftX - width, pageHeight - y + shiftY, x - shiftX, pageHeight - y + shiftY + height]; + + case 270: + return [x - shiftY - height, pageHeight - y - shiftX - width, x - shiftY, pageHeight - y - shiftX]; + + default: + throw new Error("Invalid rotation"); + } + } + + getRectInCurrentCoords(rect, pageHeight) { + const [x1, y1, x2, y2] = rect; + const width = x2 - x1; + const height = y2 - y1; + + switch (this.rotation) { + case 0: + return [x1, pageHeight - y2, width, height]; + + case 90: + return [x1, pageHeight - y1, height, width]; + + case 180: + return [x2, pageHeight - y1, width, height]; + + case 270: + return [x2, pageHeight - y2, height, width]; + + default: + throw new Error("Invalid rotation"); + } + } + + onceAdded() {} + + isEmpty() { + return false; + } + + enableEditMode() { + this.#isInEditMode = true; + } + + disableEditMode() { + this.#isInEditMode = false; + } + + isInEditMode() { + return this.#isInEditMode; + } + + shouldGetKeyboardEvents() { + return false; + } + + needsToBeRebuilt() { + return this.div && !this.isAttachedToDOM; + } + + rebuild() { + this.div?.addEventListener("focusin", this.#boundFocusin); + } + + serialize() { + (0, _util.unreachable)("An editor must be serializable"); + } + + static deserialize(data, parent) { + const editor = new this.prototype.constructor({ + parent, + id: parent.getNextId() + }); + editor.rotation = data.rotation; + const [pageWidth, pageHeight] = parent.pageDimensions; + const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight); + editor.x = x / pageWidth; + editor.y = y / pageHeight; + editor.width = width / pageWidth; + editor.height = height / pageHeight; + return editor; + } + + remove() { + this.div.removeEventListener("focusin", this.#boundFocusin); + this.div.removeEventListener("focusout", this.#boundFocusout); + + if (!this.isEmpty()) { + this.commit(); + } + + this.parent.remove(this); + } + + select() { + this.div?.classList.add("selectedEditor"); + } + + unselect() { + this.div?.classList.remove("selectedEditor"); + } + + updateParams(type, value) {} + + disableEditing() {} + + enableEditing() {} + + get propertiesToUpdate() { + return {}; + } + + get contentDiv() { + return this.div; + } + + get isEditing() { + return this.#isEditing; + } + + set isEditing(value) { + this.#isEditing = value; + + if (value) { + this.parent.setSelected(this); + this.parent.setActiveEditor(this); + } else { + this.parent.setActiveEditor(null); + } + } + +} + +exports.AnnotationEditor = AnnotationEditor; + +/***/ }), +/* 7 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.KeyboardManager = exports.CommandManager = exports.ColorManager = exports.AnnotationEditorUIManager = void 0; +exports.bindEvents = bindEvents; +exports.opacityToHex = opacityToHex; + +var _util = __w_pdfjs_require__(1); + +var _display_utils = __w_pdfjs_require__(8); + +function bindEvents(obj, element, names) { + for (const name of names) { + element.addEventListener(name, obj[name].bind(obj)); + } +} + +function opacityToHex(opacity) { + return Math.round(Math.min(255, Math.max(1, 255 * opacity))).toString(16).padStart(2, "0"); +} + +class IdManager { + #id = 0; + + getId() { + return `${_util.AnnotationEditorPrefix}${this.#id++}`; + } + +} + +class CommandManager { + #commands = []; + #locked = false; + #maxSize; + #position = -1; + + constructor(maxSize = 128) { + this.#maxSize = maxSize; + } + + add({ + cmd, + undo, + mustExec, + type = NaN, + overwriteIfSameType = false, + keepUndo = false + }) { + if (mustExec) { + cmd(); + } + + if (this.#locked) { + return; + } + + const save = { + cmd, + undo, + type + }; + + if (this.#position === -1) { + if (this.#commands.length > 0) { + this.#commands.length = 0; + } + + this.#position = 0; + this.#commands.push(save); + return; + } + + if (overwriteIfSameType && this.#commands[this.#position].type === type) { + if (keepUndo) { + save.undo = this.#commands[this.#position].undo; + } + + this.#commands[this.#position] = save; + return; + } + + const next = this.#position + 1; + + if (next === this.#maxSize) { + this.#commands.splice(0, 1); + } else { + this.#position = next; + + if (next < this.#commands.length) { + this.#commands.splice(next); + } + } + + this.#commands.push(save); + } + + undo() { + if (this.#position === -1) { + return; + } + + this.#locked = true; + this.#commands[this.#position].undo(); + this.#locked = false; + this.#position -= 1; + } + + redo() { + if (this.#position < this.#commands.length - 1) { + this.#position += 1; + this.#locked = true; + this.#commands[this.#position].cmd(); + this.#locked = false; + } + } + + hasSomethingToUndo() { + return this.#position !== -1; + } + + hasSomethingToRedo() { + return this.#position < this.#commands.length - 1; + } + + destroy() { + this.#commands = null; + } + +} + +exports.CommandManager = CommandManager; + +class KeyboardManager { + constructor(callbacks) { + this.buffer = []; + this.callbacks = new Map(); + this.allKeys = new Set(); + const isMac = KeyboardManager.platform.isMac; + + for (const [keys, callback] of callbacks) { + for (const key of keys) { + const isMacKey = key.startsWith("mac+"); + + if (isMac && isMacKey) { + this.callbacks.set(key.slice(4), callback); + this.allKeys.add(key.split("+").at(-1)); + } else if (!isMac && !isMacKey) { + this.callbacks.set(key, callback); + this.allKeys.add(key.split("+").at(-1)); + } + } + } + } + + static get platform() { + const platform = typeof navigator !== "undefined" ? navigator.platform : ""; + return (0, _util.shadow)(this, "platform", { + isWin: platform.includes("Win"), + isMac: platform.includes("Mac") + }); + } + + #serialize(event) { + if (event.altKey) { + this.buffer.push("alt"); + } + + if (event.ctrlKey) { + this.buffer.push("ctrl"); + } + + if (event.metaKey) { + this.buffer.push("meta"); + } + + if (event.shiftKey) { + this.buffer.push("shift"); + } + + this.buffer.push(event.key); + const str = this.buffer.join("+"); + this.buffer.length = 0; + return str; + } + + exec(self, event) { + if (!this.allKeys.has(event.key)) { + return; + } + + const callback = this.callbacks.get(this.#serialize(event)); + + if (!callback) { + return; + } + + callback.bind(self)(); + event.stopPropagation(); + event.preventDefault(); + } + +} + +exports.KeyboardManager = KeyboardManager; + +class ClipboardManager { + #elements = null; + + copy(element) { + if (!element) { + return; + } + + if (Array.isArray(element)) { + this.#elements = element.map(el => el.serialize()); + } else { + this.#elements = [element.serialize()]; + } + + this.#elements = this.#elements.filter(el => !!el); + + if (this.#elements.length === 0) { + this.#elements = null; + } + } + + paste() { + return this.#elements; + } + + isEmpty() { + return this.#elements === null; + } + + destroy() { + this.#elements = null; + } + +} + +class ColorManager { + static _colorsMapping = new Map([["CanvasText", [0, 0, 0]], ["Canvas", [255, 255, 255]]]); + + get _colors() { + const colors = new Map([["CanvasText", null], ["Canvas", null]]); + (0, _display_utils.getColorValues)(colors); + return (0, _util.shadow)(this, "_colors", colors); + } + + convert(color) { + const rgb = (0, _display_utils.getRGB)(color); + + if (!window.matchMedia("(forced-colors: active)").matches) { + return rgb; + } + + for (const [name, RGB] of this._colors) { + if (RGB.every((x, i) => x === rgb[i])) { + return ColorManager._colorsMapping.get(name); + } + } + + return rgb; + } + + getHexCode(name) { + const rgb = this._colors.get(name); + + if (!rgb) { + return name; + } + + return _util.Util.makeHexColor(...rgb); + } + +} + +exports.ColorManager = ColorManager; + +class AnnotationEditorUIManager { + #activeEditor = null; + #allEditors = new Map(); + #allLayers = new Map(); + #clipboardManager = new ClipboardManager(); + #commandManager = new CommandManager(); + #currentPageIndex = 0; + #editorTypes = null; + #eventBus = null; + #idManager = new IdManager(); + #isEnabled = false; + #mode = _util.AnnotationEditorType.NONE; + #selectedEditors = new Set(); + #boundKeydown = this.keydown.bind(this); + #boundOnEditingAction = this.onEditingAction.bind(this); + #boundOnPageChanging = this.onPageChanging.bind(this); + #previousStates = { + isEditing: false, + isEmpty: true, + hasEmptyClipboard: true, + hasSomethingToUndo: false, + hasSomethingToRedo: false, + hasSelectedEditor: false + }; + #container = null; + static _keyboardManager = new KeyboardManager([[["ctrl+a", "mac+meta+a"], AnnotationEditorUIManager.prototype.selectAll], [["ctrl+c", "mac+meta+c"], AnnotationEditorUIManager.prototype.copy], [["ctrl+v", "mac+meta+v"], AnnotationEditorUIManager.prototype.paste], [["ctrl+x", "mac+meta+x"], AnnotationEditorUIManager.prototype.cut], [["ctrl+z", "mac+meta+z"], AnnotationEditorUIManager.prototype.undo], [["ctrl+y", "ctrl+shift+Z", "mac+meta+shift+Z"], AnnotationEditorUIManager.prototype.redo], [["Backspace", "alt+Backspace", "ctrl+Backspace", "shift+Backspace", "mac+Backspace", "mac+alt+Backspace", "mac+ctrl+Backspace", "Delete", "ctrl+Delete", "shift+Delete"], AnnotationEditorUIManager.prototype.delete], [["Escape", "mac+Escape"], AnnotationEditorUIManager.prototype.unselectAll]]); + + constructor(container, eventBus) { + this.#container = container; + this.#eventBus = eventBus; + + this.#eventBus._on("editingaction", this.#boundOnEditingAction); + + this.#eventBus._on("pagechanging", this.#boundOnPageChanging); + } + + destroy() { + this.#removeKeyboardManager(); + + this.#eventBus._off("editingaction", this.#boundOnEditingAction); + + this.#eventBus._off("pagechanging", this.#boundOnPageChanging); + + for (const layer of this.#allLayers.values()) { + layer.destroy(); + } + + this.#allLayers.clear(); + this.#allEditors.clear(); + this.#activeEditor = null; + this.#selectedEditors.clear(); + this.#clipboardManager.destroy(); + this.#commandManager.destroy(); + } + + onPageChanging({ + pageNumber + }) { + this.#currentPageIndex = pageNumber - 1; + } + + focusMainContainer() { + this.#container.focus(); + } + + #addKeyboardManager() { + this.#container.addEventListener("keydown", this.#boundKeydown); + } + + #removeKeyboardManager() { + this.#container.removeEventListener("keydown", this.#boundKeydown); + } + + keydown(event) { + if (!this.getActive()?.shouldGetKeyboardEvents()) { + AnnotationEditorUIManager._keyboardManager.exec(this, event); + } + } + + onEditingAction(details) { + if (["undo", "redo", "cut", "copy", "paste", "delete", "selectAll"].includes(details.name)) { + this[details.name](); + } + } + + #dispatchUpdateStates(details) { + const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value); + + if (hasChanged) { + this.#eventBus.dispatch("annotationeditorstateschanged", { + source: this, + details: Object.assign(this.#previousStates, details) + }); + } + } + + #dispatchUpdateUI(details) { + this.#eventBus.dispatch("annotationeditorparamschanged", { + source: this, + details + }); + } + + setEditingState(isEditing) { + if (isEditing) { + this.#addKeyboardManager(); + this.#dispatchUpdateStates({ + isEditing: this.#mode !== _util.AnnotationEditorType.NONE, + isEmpty: this.#isEmpty(), + hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(), + hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(), + hasSelectedEditor: false, + hasEmptyClipboard: this.#clipboardManager.isEmpty() + }); + } else { + this.#removeKeyboardManager(); + this.#dispatchUpdateStates({ + isEditing: false + }); + } + } + + registerEditorTypes(types) { + this.#editorTypes = types; + + for (const editorType of this.#editorTypes) { + this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate); + } + } + + getId() { + return this.#idManager.getId(); + } + + addLayer(layer) { + this.#allLayers.set(layer.pageIndex, layer); + + if (this.#isEnabled) { + layer.enable(); + } else { + layer.disable(); + } + } + + removeLayer(layer) { + this.#allLayers.delete(layer.pageIndex); + } + + updateMode(mode) { + this.#mode = mode; + + if (mode === _util.AnnotationEditorType.NONE) { + this.setEditingState(false); + this.#disableAll(); + } else { + this.setEditingState(true); + this.#enableAll(); + + for (const layer of this.#allLayers.values()) { + layer.updateMode(mode); + } + } + } + + updateToolbar(mode) { + if (mode === this.#mode) { + return; + } + + this.#eventBus.dispatch("switchannotationeditormode", { + source: this, + mode + }); + } + + updateParams(type, value) { + for (const editor of this.#selectedEditors) { + editor.updateParams(type, value); + } + + for (const editorType of this.#editorTypes) { + editorType.updateDefaultParams(type, value); + } + } + + #enableAll() { + if (!this.#isEnabled) { + this.#isEnabled = true; + + for (const layer of this.#allLayers.values()) { + layer.enable(); + } + } + } + + #disableAll() { + this.unselectAll(); + + if (this.#isEnabled) { + this.#isEnabled = false; + + for (const layer of this.#allLayers.values()) { + layer.disable(); + } + } + } + + getEditors(pageIndex) { + const editors = []; + + for (const editor of this.#allEditors.values()) { + if (editor.pageIndex === pageIndex) { + editors.push(editor); + } + } + + return editors; + } + + getEditor(id) { + return this.#allEditors.get(id); + } + + addEditor(editor) { + this.#allEditors.set(editor.id, editor); + } + + removeEditor(editor) { + this.#allEditors.delete(editor.id); + this.unselect(editor); + } + + #addEditorToLayer(editor) { + const layer = this.#allLayers.get(editor.pageIndex); + + if (layer) { + layer.addOrRebuild(editor); + } else { + this.addEditor(editor); + } + } + + setActiveEditor(editor) { + if (this.#activeEditor === editor) { + return; + } + + this.#activeEditor = editor; + + if (editor) { + this.#dispatchUpdateUI(editor.propertiesToUpdate); + } + } + + toggleSelected(editor) { + if (this.#selectedEditors.has(editor)) { + this.#selectedEditors.delete(editor); + editor.unselect(); + this.#dispatchUpdateStates({ + hasSelectedEditor: this.hasSelection + }); + return; + } + + this.#selectedEditors.add(editor); + editor.select(); + this.#dispatchUpdateUI(editor.propertiesToUpdate); + this.#dispatchUpdateStates({ + hasSelectedEditor: true + }); + } + + setSelected(editor) { + for (const ed of this.#selectedEditors) { + if (ed !== editor) { + ed.unselect(); + } + } + + this.#selectedEditors.clear(); + this.#selectedEditors.add(editor); + editor.select(); + this.#dispatchUpdateUI(editor.propertiesToUpdate); + this.#dispatchUpdateStates({ + hasSelectedEditor: true + }); + } + + isSelected(editor) { + return this.#selectedEditors.has(editor); + } + + unselect(editor) { + editor.unselect(); + this.#selectedEditors.delete(editor); + this.#dispatchUpdateStates({ + hasSelectedEditor: this.hasSelection + }); + } + + get hasSelection() { + return this.#selectedEditors.size !== 0; + } + + undo() { + this.#commandManager.undo(); + this.#dispatchUpdateStates({ + hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(), + hasSomethingToRedo: true, + isEmpty: this.#isEmpty() + }); + } + + redo() { + this.#commandManager.redo(); + this.#dispatchUpdateStates({ + hasSomethingToUndo: true, + hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(), + isEmpty: this.#isEmpty() + }); + } + + addCommands(params) { + this.#commandManager.add(params); + this.#dispatchUpdateStates({ + hasSomethingToUndo: true, + hasSomethingToRedo: false, + isEmpty: this.#isEmpty() + }); + } + + #isEmpty() { + if (this.#allEditors.size === 0) { + return true; + } + + if (this.#allEditors.size === 1) { + for (const editor of this.#allEditors.values()) { + return editor.isEmpty(); + } + } + + return false; + } + + delete() { + if (this.#activeEditor) { + this.#activeEditor.commitOrRemove(); + } + + if (!this.hasSelection) { + return; + } + + const editors = [...this.#selectedEditors]; + + const cmd = () => { + for (const editor of editors) { + editor.remove(); + } + }; + + const undo = () => { + for (const editor of editors) { + this.#addEditorToLayer(editor); + } + }; + + this.addCommands({ + cmd, + undo, + mustExec: true + }); + } + + copy() { + if (this.#activeEditor) { + this.#activeEditor.commitOrRemove(); + } + + if (this.hasSelection) { + const editors = []; + + for (const editor of this.#selectedEditors) { + if (!editor.isEmpty()) { + editors.push(editor); + } + } + + if (editors.length === 0) { + return; + } + + this.#clipboardManager.copy(editors); + this.#dispatchUpdateStates({ + hasEmptyClipboard: false + }); + } + } + + cut() { + this.copy(); + this.delete(); + } + + paste() { + if (this.#clipboardManager.isEmpty()) { + return; + } + + this.unselectAll(); + const layer = this.#allLayers.get(this.#currentPageIndex); + const newEditors = this.#clipboardManager.paste().map(data => layer.deserialize(data)); + + const cmd = () => { + for (const editor of newEditors) { + this.#addEditorToLayer(editor); + } + + this.#selectEditors(newEditors); + }; + + const undo = () => { + for (const editor of newEditors) { + editor.remove(); + } + }; + + this.addCommands({ + cmd, + undo, + mustExec: true + }); + } + + #selectEditors(editors) { + this.#selectedEditors.clear(); + + for (const editor of editors) { + if (editor.isEmpty()) { + continue; + } + + this.#selectedEditors.add(editor); + editor.select(); + } + + this.#dispatchUpdateStates({ + hasSelectedEditor: true + }); + } + + selectAll() { + for (const editor of this.#selectedEditors) { + editor.commit(); + } + + this.#selectEditors(this.#allEditors.values()); + } + + unselectAll() { + if (this.#activeEditor) { + this.#activeEditor.commitOrRemove(); + return; + } + + if (this.#selectEditors.size === 0) { + return; + } + + for (const editor of this.#selectedEditors) { + editor.unselect(); + } + + this.#selectedEditors.clear(); + this.#dispatchUpdateStates({ + hasSelectedEditor: false + }); + } + + isActive(editor) { + return this.#activeEditor === editor; + } + + getActive() { + return this.#activeEditor; + } + + getMode() { + return this.#mode; + } + +} + +exports.AnnotationEditorUIManager = AnnotationEditorUIManager; + +/***/ }), +/* 8 */ +/***/ ((__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 = exports.AnnotationPrefix = void 0; +exports.deprecated = deprecated; +exports.getColorValues = getColorValues; +exports.getCurrentTransform = getCurrentTransform; +exports.getCurrentTransformInverse = getCurrentTransformInverse; +exports.getFilenameFromUrl = getFilenameFromUrl; +exports.getPdfFilenameFromUrl = getPdfFilenameFromUrl; +exports.getRGB = getRGB; +exports.getXfaPageViewport = getXfaPageViewport; +exports.isDataScheme = isDataScheme; +exports.isPdfFile = isPdfFile; +exports.isValidFetchUrl = isValidFetchUrl; +exports.loadScript = loadScript; + +var _base_factory = __w_pdfjs_require__(9); + +var _util = __w_pdfjs_require__(1); + +const SVG_NS = "http://www.w3.org/2000/svg"; +const AnnotationPrefix = "pdfjs_internal_id_"; +exports.AnnotationPrefix = AnnotationPrefix; + +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; - var centerX = (viewBox[2] + viewBox[0]) / 2; - var centerY = (viewBox[3] + viewBox[1]) / 2; - var rotateA, rotateB, rotateC, rotateD; - rotation = rotation % 360; - rotation = rotation < 0 ? rotation + 360 : rotation; + 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; @@ -796,31 +5004,40 @@ var PageViewport = function PageViewportClosure() { 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; - default: + + 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; } - var offsetCanvasX, offsetCanvasY; - var width, height; + + 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; @@ -832,9094 +5049,1406 @@ var PageViewport = function PageViewportClosure() { 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; - this.fontScale = scale; } - PageViewport.prototype = { - clone: function PageViewPort_clone(args) { - args = args || {}; - var scale = 'scale' in args ? args.scale : this.scale; - var rotation = 'rotation' in args ? args.rotation : this.rotation; - return new PageViewport(this.viewBox.slice(), scale, rotation, this.offsetX, this.offsetY, args.dontFlip); - }, - convertToViewportPoint: function PageViewport_convertToViewportPoint(x, y) { - return Util.applyTransform([x, y], this.transform); - }, - convertToViewportRectangle: function PageViewport_convertToViewportRectangle(rect) { - var tl = Util.applyTransform([rect[0], rect[1]], this.transform); - var br = Util.applyTransform([rect[2], rect[3]], this.transform); - return [tl[0], tl[1], br[0], br[1]]; - }, - convertToPdfPoint: function PageViewport_convertToPdfPoint(x, y) { - return Util.applyInverseTransform([x, y], this.transform); - } - }; - return PageViewport; -}(); -var 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) { - var i, - n = str.length, - strBuf = []; - if (str[0] === '\xFE' && str[1] === '\xFF') { - for (i = 2; i < n; i += 2) { - strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1))); - } - } else { - for (i = 0; i < n; ++i) { - var code = PDFStringTranslateTable[str.charCodeAt(i)]; - strBuf.push(code ? String.fromCharCode(code) : str.charAt(i)); + + 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 strBuf.join(''); + + return suggestedFilename || defaultFilename; } -function stringToUTF8String(str) { - return decodeURIComponent(escape(str)); -} -function utf8StringToString(str) { - return unescape(encodeURIComponent(str)); -} -function isEmptyObj(obj) { - for (var key in obj) { - return false; - } - return true; -} -function isBool(v) { - return typeof v === 'boolean'; -} -function isInt(v) { - return typeof v === 'number' && (v | 0) === v; -} -function isNum(v) { - return typeof v === 'number'; -} -function isString(v) { - return typeof v === 'string'; -} -function isArray(v) { - return v instanceof Array; -} -function isArrayBuffer(v) { - return (typeof v === 'undefined' ? 'undefined' : _typeof(v)) === 'object' && v !== null && v.byteLength !== undefined; -} -function isSpace(ch) { - return ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A; -} -function isNodeJS() { - return (typeof process === 'undefined' ? 'undefined' : _typeof(process)) === 'object' && process + '' === '[object process]'; -} -function createPromiseCapability() { - var capability = {}; - capability.promise = new Promise(function (resolve, reject) { - capability.resolve = resolve; - capability.reject = reject; - }); - return capability; -} -var StatTimer = function StatTimerClosure() { - function rpad(str, pad, length) { - while (str.length < length) { - str += pad; - } - return str; - } - function StatTimer() { + +class StatTimer { + constructor() { this.started = Object.create(null); this.times = []; - this.enabled = true; } - StatTimer.prototype = { - time: function StatTimer_time(name) { - if (!this.enabled) { - return; - } - if (name in this.started) { - warn('Timer is already running for ' + name); - } - this.started[name] = Date.now(); - }, - timeEnd: function StatTimer_timeEnd(name) { - if (!this.enabled) { - return; - } - if (!(name in this.started)) { - warn('Timer has not been started for ' + name); - } - this.times.push({ - 'name': name, - 'start': this.started[name], - 'end': Date.now() - }); - delete this.started[name]; - }, - toString: function StatTimer_toString() { - var i, ii; - var times = this.times; - var out = ''; - var longest = 0; - for (i = 0, ii = times.length; i < ii; ++i) { - var name = times[i]['name']; - if (name.length > longest) { - longest = name.length; - } - } - for (i = 0, ii = times.length; i < ii; ++i) { - var span = times[i]; - var duration = span.end - span.start; - out += rpad(span['name'], ' ', longest) + ' ' + duration + 'ms\n'; - } - return out; - } - }; - return StatTimer; -}(); -var createBlob = function createBlob(data, contentType) { - if (typeof Blob !== 'undefined') { - return new Blob([data], { type: contentType }); - } - throw new Error('The "Blob" constructor is not supported.'); -}; -var createObjectURL = function createObjectURLClosure() { - var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - return function createObjectURL(data, contentType) { - var forceDataSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - if (!forceDataSchema && URL.createObjectURL) { - var blob = createBlob(data, contentType); - return URL.createObjectURL(blob); + time(name) { + if (name in this.started) { + (0, _util.warn)(`Timer is already running for ${name}`); } - var buffer = 'data:' + contentType + ';base64,'; - for (var i = 0, ii = data.length; i < ii; i += 3) { - var b1 = data[i] & 0xFF; - var b2 = data[i + 1] & 0xFF; - var b3 = data[i + 2] & 0xFF; - var d1 = b1 >> 2, - d2 = (b1 & 3) << 4 | b2 >> 4; - var d3 = i + 1 < ii ? (b2 & 0xF) << 2 | b3 >> 6 : 64; - var d4 = i + 2 < ii ? b3 & 0x3F : 64; - buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4]; - } - return buffer; - }; -}(); -function resolveCall(fn, args) { - var thisArg = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - if (!fn) { - return Promise.resolve(undefined); + this.started[name] = Date.now(); } - return new Promise(function (resolve, reject) { - resolve(fn.apply(thisArg, args)); + + 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).append(script); }); } -function wrapReason(reason) { - if ((typeof reason === 'undefined' ? 'undefined' : _typeof(reason)) !== 'object') { - return reason; + +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)); } - switch (reason.name) { - case 'AbortException': - return new AbortException(reason.message); - case 'MissingPDFException': - return new MissingPDFException(reason.message); - case 'UnexpectedResponseException': - return new UnexpectedResponseException(reason.message, reason.status); - default: - return new UnknownErrorException(reason.message, reason.details); + +} + +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 + }); +} + +function getRGB(color) { + if (color.startsWith("#")) { + const colorRGB = parseInt(color.slice(1), 16); + return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff]; } -} -function resolveOrReject(capability, success, reason) { - if (success) { - capability.resolve(); - } else { - capability.reject(reason); + + if (color.startsWith("rgb(")) { + return color.slice(4, -1).split(",").map(x => parseInt(x)); } -} -function finalize(promise) { - return Promise.resolve(promise).catch(function () {}); -} -function MessageHandler(sourceName, targetName, comObj) { - var _this = this; - this.sourceName = sourceName; - this.targetName = targetName; - this.comObj = comObj; - this.callbackId = 1; - this.streamId = 1; - this.postMessageTransfers = true; - this.streamSinks = Object.create(null); - this.streamControllers = Object.create(null); - var callbacksCapabilities = this.callbacksCapabilities = Object.create(null); - var ah = this.actionHandler = Object.create(null); - this._onComObjOnMessage = function (event) { - var data = event.data; - if (data.targetName !== _this.sourceName) { - return; - } - if (data.stream) { - _this._processStreamMessage(data); - } else if (data.isReply) { - var callbackId = data.callbackId; - if (data.callbackId in callbacksCapabilities) { - var callback = callbacksCapabilities[callbackId]; - delete callbacksCapabilities[callbackId]; - if ('error' in data) { - callback.reject(wrapReason(data.error)); - } else { - callback.resolve(data.data); - } - } else { - throw new Error('Cannot resolve callback ' + callbackId); - } - } else if (data.action in ah) { - var action = ah[data.action]; - if (data.callbackId) { - var _sourceName = _this.sourceName; - var _targetName = data.sourceName; - Promise.resolve().then(function () { - return action[0].call(action[1], data.data); - }).then(function (result) { - comObj.postMessage({ - sourceName: _sourceName, - targetName: _targetName, - isReply: true, - callbackId: data.callbackId, - data: result - }); - }, function (reason) { - if (reason instanceof Error) { - reason = reason + ''; - } - comObj.postMessage({ - sourceName: _sourceName, - targetName: _targetName, - isReply: true, - callbackId: data.callbackId, - error: reason - }); - }); - } else if (data.streamId) { - _this._createStreamSink(data); - } else { - action[0].call(action[1], data.data); - } - } else { - throw new Error('Unknown action from worker: ' + data.action); - } - }; - comObj.addEventListener('message', this._onComObjOnMessage); -} -MessageHandler.prototype = { - on: function on(actionName, handler, scope) { - var ah = this.actionHandler; - if (ah[actionName]) { - throw new Error('There is already an actionName called "' + actionName + '"'); - } - ah[actionName] = [handler, scope]; - }, - send: function send(actionName, data, transfers) { - var message = { - sourceName: this.sourceName, - targetName: this.targetName, - action: actionName, - data: data - }; - this.postMessage(message, transfers); - }, - sendWithPromise: function sendWithPromise(actionName, data, transfers) { - var callbackId = this.callbackId++; - var message = { - sourceName: this.sourceName, - targetName: this.targetName, - action: actionName, - data: data, - callbackId: callbackId - }; - var capability = createPromiseCapability(); - this.callbacksCapabilities[callbackId] = capability; - try { - this.postMessage(message, transfers); - } catch (e) { - capability.reject(e); - } - return capability.promise; - }, - sendWithStream: function sendWithStream(actionName, data, queueingStrategy, transfers) { - var _this2 = this; - - var streamId = this.streamId++; - var sourceName = this.sourceName; - var targetName = this.targetName; - return new _streams_polyfill.ReadableStream({ - start: function start(controller) { - var startCapability = createPromiseCapability(); - _this2.streamControllers[streamId] = { - controller: controller, - startCall: startCapability, - isClosed: false - }; - _this2.postMessage({ - sourceName: sourceName, - targetName: targetName, - action: actionName, - streamId: streamId, - data: data, - desiredSize: controller.desiredSize - }); - return startCapability.promise; - }, - pull: function pull(controller) { - var pullCapability = createPromiseCapability(); - _this2.streamControllers[streamId].pullCall = pullCapability; - _this2.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: 'pull', - streamId: streamId, - desiredSize: controller.desiredSize - }); - return pullCapability.promise; - }, - cancel: function cancel(reason) { - var cancelCapability = createPromiseCapability(); - _this2.streamControllers[streamId].cancelCall = cancelCapability; - _this2.streamControllers[streamId].isClosed = true; - _this2.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: 'cancel', - reason: reason, - streamId: streamId - }); - return cancelCapability.promise; - } - }, queueingStrategy); - }, - _createStreamSink: function _createStreamSink(data) { - var _this3 = this; - - var self = this; - var action = this.actionHandler[data.action]; - var streamId = data.streamId; - var desiredSize = data.desiredSize; - var sourceName = this.sourceName; - var targetName = data.sourceName; - var capability = createPromiseCapability(); - var sendStreamRequest = function sendStreamRequest(_ref) { - var stream = _ref.stream, - chunk = _ref.chunk, - transfers = _ref.transfers, - success = _ref.success, - reason = _ref.reason; - - _this3.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: stream, - streamId: streamId, - chunk: chunk, - success: success, - reason: reason - }, transfers); - }; - var streamSink = { - enqueue: function enqueue(chunk) { - var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; - var transfers = arguments[2]; - - if (this.isCancelled) { - return; - } - var lastDesiredSize = this.desiredSize; - this.desiredSize -= size; - if (lastDesiredSize > 0 && this.desiredSize <= 0) { - this.sinkCapability = createPromiseCapability(); - this.ready = this.sinkCapability.promise; - } - sendStreamRequest({ - stream: 'enqueue', - chunk: chunk, - transfers: transfers - }); - }, - close: function close() { - if (this.isCancelled) { - return; - } - sendStreamRequest({ stream: 'close' }); - delete self.streamSinks[streamId]; - }, - error: function error(reason) { - if (this.isCancelled) { - return; - } - this.isCancelled = true; - sendStreamRequest({ - stream: 'error', - reason: reason - }); - }, - - sinkCapability: capability, - onPull: null, - onCancel: null, - isCancelled: false, - desiredSize: desiredSize, - ready: null - }; - streamSink.sinkCapability.resolve(); - streamSink.ready = streamSink.sinkCapability.promise; - this.streamSinks[streamId] = streamSink; - resolveCall(action[0], [data.data, streamSink], action[1]).then(function () { - sendStreamRequest({ - stream: 'start_complete', - success: true - }); - }, function (reason) { - sendStreamRequest({ - stream: 'start_complete', - success: false, - reason: reason - }); - }); - }, - _processStreamMessage: function _processStreamMessage(data) { - var _this4 = this; - - var sourceName = this.sourceName; - var targetName = data.sourceName; - var streamId = data.streamId; - var sendStreamResponse = function sendStreamResponse(_ref2) { - var stream = _ref2.stream, - success = _ref2.success, - reason = _ref2.reason; - - _this4.comObj.postMessage({ - sourceName: sourceName, - targetName: targetName, - stream: stream, - success: success, - streamId: streamId, - reason: reason - }); - }; - var deleteStreamController = function deleteStreamController() { - Promise.all([_this4.streamControllers[data.streamId].startCall, _this4.streamControllers[data.streamId].pullCall, _this4.streamControllers[data.streamId].cancelCall].map(function (capability) { - return capability && finalize(capability.promise); - })).then(function () { - delete _this4.streamControllers[data.streamId]; - }); - }; - switch (data.stream) { - case 'start_complete': - resolveOrReject(this.streamControllers[data.streamId].startCall, data.success, wrapReason(data.reason)); - break; - case 'pull_complete': - resolveOrReject(this.streamControllers[data.streamId].pullCall, data.success, wrapReason(data.reason)); - break; - case 'pull': - if (!this.streamSinks[data.streamId]) { - sendStreamResponse({ - stream: 'pull_complete', - success: true - }); - break; - } - if (this.streamSinks[data.streamId].desiredSize <= 0 && data.desiredSize > 0) { - this.streamSinks[data.streamId].sinkCapability.resolve(); - } - this.streamSinks[data.streamId].desiredSize = data.desiredSize; - resolveCall(this.streamSinks[data.streamId].onPull).then(function () { - sendStreamResponse({ - stream: 'pull_complete', - success: true - }); - }, function (reason) { - sendStreamResponse({ - stream: 'pull_complete', - success: false, - reason: reason - }); - }); - break; - case 'enqueue': - assert(this.streamControllers[data.streamId], 'enqueue should have stream controller'); - if (!this.streamControllers[data.streamId].isClosed) { - this.streamControllers[data.streamId].controller.enqueue(data.chunk); - } - break; - case 'close': - assert(this.streamControllers[data.streamId], 'close should have stream controller'); - if (this.streamControllers[data.streamId].isClosed) { - break; - } - this.streamControllers[data.streamId].isClosed = true; - this.streamControllers[data.streamId].controller.close(); - deleteStreamController(); - break; - case 'error': - assert(this.streamControllers[data.streamId], 'error should have stream controller'); - this.streamControllers[data.streamId].controller.error(wrapReason(data.reason)); - deleteStreamController(); - break; - case 'cancel_complete': - resolveOrReject(this.streamControllers[data.streamId].cancelCall, data.success, wrapReason(data.reason)); - deleteStreamController(); - break; - case 'cancel': - if (!this.streamSinks[data.streamId]) { - break; - } - resolveCall(this.streamSinks[data.streamId].onCancel, [wrapReason(data.reason)]).then(function () { - sendStreamResponse({ - stream: 'cancel_complete', - success: true - }); - }, function (reason) { - sendStreamResponse({ - stream: 'cancel_complete', - success: false, - reason: reason - }); - }); - this.streamSinks[data.streamId].sinkCapability.reject(wrapReason(data.reason)); - this.streamSinks[data.streamId].isCancelled = true; - delete this.streamSinks[data.streamId]; - break; - default: - throw new Error('Unexpected stream case'); - } - }, - postMessage: function postMessage(message, transfers) { - if (transfers && this.postMessageTransfers) { - this.comObj.postMessage(message, transfers); - } else { - this.comObj.postMessage(message); - } - }, - destroy: function destroy() { - this.comObj.removeEventListener('message', this._onComObjOnMessage); + if (color.startsWith("rgba(")) { + return color.slice(5, -1).split(",").map(x => parseInt(x)).slice(0, 3); } -}; -function loadJpegStream(id, imageUrl, objs) { - var img = new Image(); - img.onload = function loadJpegStream_onloadClosure() { - objs.resolve(id, img); - }; - img.onerror = function loadJpegStream_onerrorClosure() { - objs.resolve(id, null); - warn('Error during JPEG image loading'); - }; - img.src = imageUrl; + + (0, _util.warn)(`Not a valid color format: "${color}"`); + return [0, 0, 0]; +} + +function getColorValues(colors) { + const span = document.createElement("span"); + span.style.visibility = "hidden"; + document.body.append(span); + + for (const name of colors.keys()) { + span.style.color = name; + const computedColor = window.getComputedStyle(span).color; + colors.set(name, getRGB(computedColor)); + } + + span.remove(); +} + +function getCurrentTransform(ctx) { + const { + a, + b, + c, + d, + e, + f + } = ctx.getTransform(); + return [a, b, c, d, e, f]; +} + +function getCurrentTransformInverse(ctx) { + const { + a, + b, + c, + d, + e, + f + } = ctx.getTransform().invertSelf(); + return [a, b, c, d, e, f]; } -exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX; -exports.IDENTITY_MATRIX = IDENTITY_MATRIX; -exports.OPS = OPS; -exports.VERBOSITY_LEVELS = VERBOSITY_LEVELS; -exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES; -exports.AnnotationBorderStyleType = AnnotationBorderStyleType; -exports.AnnotationFieldFlag = AnnotationFieldFlag; -exports.AnnotationFlag = AnnotationFlag; -exports.AnnotationType = AnnotationType; -exports.FontType = FontType; -exports.ImageKind = ImageKind; -exports.CMapCompressionType = CMapCompressionType; -exports.AbortException = AbortException; -exports.InvalidPDFException = InvalidPDFException; -exports.MessageHandler = MessageHandler; -exports.MissingDataException = MissingDataException; -exports.MissingPDFException = MissingPDFException; -exports.NativeImageDecoding = NativeImageDecoding; -exports.NotImplementedException = NotImplementedException; -exports.PageViewport = PageViewport; -exports.PasswordException = PasswordException; -exports.PasswordResponses = PasswordResponses; -exports.StatTimer = StatTimer; -exports.StreamType = StreamType; -exports.TextRenderingMode = TextRenderingMode; -exports.UnexpectedResponseException = UnexpectedResponseException; -exports.UnknownErrorException = UnknownErrorException; -exports.Util = Util; -exports.XRefParseException = XRefParseException; -exports.FormatError = FormatError; -exports.arrayByteLength = arrayByteLength; -exports.arraysToBytes = arraysToBytes; -exports.assert = assert; -exports.bytesToString = bytesToString; -exports.createBlob = createBlob; -exports.createPromiseCapability = createPromiseCapability; -exports.createObjectURL = createObjectURL; -exports.deprecated = deprecated; -exports.getLookupTableFactory = getLookupTableFactory; -exports.getVerbosityLevel = getVerbosityLevel; -exports.globalScope = globalScope; -exports.info = info; -exports.isArray = isArray; -exports.isArrayBuffer = isArrayBuffer; -exports.isBool = isBool; -exports.isEmptyObj = isEmptyObj; -exports.isInt = isInt; -exports.isNum = isNum; -exports.isString = isString; -exports.isSpace = isSpace; -exports.isNodeJS = isNodeJS; -exports.isSameOrigin = isSameOrigin; -exports.createValidAbsoluteUrl = createValidAbsoluteUrl; -exports.isLittleEndian = isLittleEndian; -exports.isEvalSupported = isEvalSupported; -exports.loadJpegStream = loadJpegStream; -exports.log2 = log2; -exports.readInt8 = readInt8; -exports.readUint16 = readUint16; -exports.readUint32 = readUint32; -exports.removeNullCharacters = removeNullCharacters; -exports.ReadableStream = _streams_polyfill.ReadableStream; -exports.setVerbosityLevel = setVerbosityLevel; -exports.shadow = shadow; -exports.string32 = string32; -exports.stringToBytes = stringToBytes; -exports.stringToPDFString = stringToPDFString; -exports.stringToUTF8String = stringToUTF8String; -exports.utf8StringToString = utf8StringToString; -exports.warn = warn; -exports.unreachable = unreachable; /***/ }), -/* 1 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; +/* 9 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -Object.defineProperty(exports, "__esModule", { + +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = exports.getDefaultSetting = exports.LinkTarget = exports.getFilenameFromUrl = exports.isValidUrl = exports.isExternalLinkTargetSet = exports.addLinkAttributes = exports.RenderingCancelledException = exports.CustomStyle = undefined; +})); +exports.BaseStandardFontDataFactory = exports.BaseSVGFactory = exports.BaseCanvasFactory = exports.BaseCMapReaderFactory = void 0; -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); +var _util = __w_pdfjs_require__(1); -var _util = __w_pdfjs_require__(0); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var DEFAULT_LINK_REL = 'noopener noreferrer nofollow'; - -var DOMCanvasFactory = function () { - function DOMCanvasFactory() { - _classCallCheck(this, DOMCanvasFactory); +class BaseCanvasFactory { + constructor() { + if (this.constructor === BaseCanvasFactory) { + (0, _util.unreachable)("Cannot initialize BaseCanvasFactory."); + } } - _createClass(DOMCanvasFactory, [{ - key: 'create', - value: function create(width, height) { - if (width <= 0 || height <= 0) { - throw new Error('invalid canvas size'); - } - var canvas = document.createElement('canvas'); - var context = canvas.getContext('2d'); - canvas.width = width; - canvas.height = height; - return { - canvas: canvas, - context: context - }; + create(width, height) { + if (width <= 0 || height <= 0) { + throw new Error("Invalid canvas size"); } - }, { - key: 'reset', - value: function 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; + + 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"); } - }, { - key: 'destroy', - value: function 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; + + if (width <= 0 || height <= 0) { + throw new Error("Invalid canvas size"); } - }]); - return DOMCanvasFactory; -}(); + canvasAndContext.canvas.width = width; + canvasAndContext.canvas.height = height; + } -var DOMCMapReaderFactory = function () { - function DOMCMapReaderFactory(_ref) { - var _ref$baseUrl = _ref.baseUrl, - baseUrl = _ref$baseUrl === undefined ? null : _ref$baseUrl, - _ref$isCompressed = _ref.isCompressed, - isCompressed = _ref$isCompressed === undefined ? false : _ref$isCompressed; + destroy(canvasAndContext) { + if (!canvasAndContext.canvas) { + throw new Error("Canvas is not specified"); + } - _classCallCheck(this, DOMCMapReaderFactory); + 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; } - _createClass(DOMCMapReaderFactory, [{ - key: 'fetch', - value: function fetch(_ref2) { - var _this = this; - - var name = _ref2.name; - - if (!name) { - return Promise.reject(new Error('CMap name must be specified.')); - } - return new Promise(function (resolve, reject) { - var url = _this.baseUrl + name + (_this.isCompressed ? '.bcmap' : ''); - var request = new XMLHttpRequest(); - request.open('GET', url, true); - if (_this.isCompressed) { - request.responseType = 'arraybuffer'; - } - request.onreadystatechange = function () { - if (request.readyState !== XMLHttpRequest.DONE) { - return; - } - if (request.status === 200 || request.status === 0) { - var data = void 0; - if (_this.isCompressed && request.response) { - data = new Uint8Array(request.response); - } else if (!_this.isCompressed && request.responseText) { - data = (0, _util.stringToBytes)(request.responseText); - } - if (data) { - resolve({ - cMapData: data, - compressionType: _this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE - }); - return; - } - } - reject(new Error('Unable to load ' + (_this.isCompressed ? 'binary ' : '') + 'CMap at: ' + url)); - }; - request.send(null); - }); + 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.'); } - }]); - return DOMCMapReaderFactory; -}(); - -var CustomStyle = function CustomStyleClosure() { - var prefixes = ['ms', 'Moz', 'Webkit', 'O']; - var _cache = Object.create(null); - function CustomStyle() {} - CustomStyle.getProp = function get(propName, element) { - if (arguments.length === 1 && typeof _cache[propName] === 'string') { - return _cache[propName]; + if (!name) { + throw new Error("CMap name must be specified."); } - element = element || document.documentElement; - var style = element.style, - prefixed, - uPropName; - if (typeof style[propName] === 'string') { - return _cache[propName] = propName; - } - uPropName = propName.charAt(0).toUpperCase() + propName.slice(1); - for (var i = 0, l = prefixes.length; i < l; i++) { - prefixed = prefixes[i] + uPropName; - if (typeof style[prefixed] === 'string') { - return _cache[propName] = prefixed; - } - } - return _cache[propName] = 'undefined'; - }; - CustomStyle.setProp = function set(propName, element, str) { - var prop = this.getProp(propName); - if (prop !== 'undefined') { - element.style[prop] = str; - } - }; - return CustomStyle; -}(); -var RenderingCancelledException = function RenderingCancelledException() { - function RenderingCancelledException(msg, type) { - this.message = msg; - this.type = type; - } - RenderingCancelledException.prototype = new Error(); - RenderingCancelledException.prototype.name = 'RenderingCancelledException'; - RenderingCancelledException.constructor = RenderingCancelledException; - return RenderingCancelledException; -}(); -var LinkTarget = { - NONE: 0, - SELF: 1, - BLANK: 2, - PARENT: 3, - TOP: 4 -}; -var LinkTargetStringMap = ['', '_self', '_blank', '_parent', '_top']; -function addLinkAttributes(link, params) { - var url = params && params.url; - link.href = link.title = url ? (0, _util.removeNullCharacters)(url) : ''; - if (url) { - var target = params.target; - if (typeof target === 'undefined') { - target = getDefaultSetting('externalLinkTarget'); - } - link.target = LinkTargetStringMap[target]; - var rel = params.rel; - if (typeof rel === 'undefined') { - rel = getDefaultSetting('externalLinkRel'); - } - link.rel = rel; - } -} -function getFilenameFromUrl(url) { - var anchor = url.indexOf('#'); - var query = url.indexOf('?'); - var end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length); - return url.substring(url.lastIndexOf('/', end) + 1, end); -} -function getDefaultSetting(id) { - var globalSettings = _util.globalScope.PDFJS; - switch (id) { - case 'pdfBug': - return globalSettings ? globalSettings.pdfBug : false; - case 'disableAutoFetch': - return globalSettings ? globalSettings.disableAutoFetch : false; - case 'disableStream': - return globalSettings ? globalSettings.disableStream : false; - case 'disableRange': - return globalSettings ? globalSettings.disableRange : false; - case 'disableFontFace': - return globalSettings ? globalSettings.disableFontFace : false; - case 'disableCreateObjectURL': - return globalSettings ? globalSettings.disableCreateObjectURL : false; - case 'disableWebGL': - return globalSettings ? globalSettings.disableWebGL : true; - case 'cMapUrl': - return globalSettings ? globalSettings.cMapUrl : null; - case 'cMapPacked': - return globalSettings ? globalSettings.cMapPacked : false; - case 'postMessageTransfers': - return globalSettings ? globalSettings.postMessageTransfers : true; - case 'workerPort': - return globalSettings ? globalSettings.workerPort : null; - case 'workerSrc': - return globalSettings ? globalSettings.workerSrc : null; - case 'disableWorker': - return globalSettings ? globalSettings.disableWorker : false; - case 'maxImageSize': - return globalSettings ? globalSettings.maxImageSize : -1; - case 'imageResourcesPath': - return globalSettings ? globalSettings.imageResourcesPath : ''; - case 'isEvalSupported': - return globalSettings ? globalSettings.isEvalSupported : true; - case 'externalLinkTarget': - if (!globalSettings) { - return LinkTarget.NONE; - } - switch (globalSettings.externalLinkTarget) { - case LinkTarget.NONE: - case LinkTarget.SELF: - case LinkTarget.BLANK: - case LinkTarget.PARENT: - case LinkTarget.TOP: - return globalSettings.externalLinkTarget; - } - (0, _util.warn)('PDFJS.externalLinkTarget is invalid: ' + globalSettings.externalLinkTarget); - globalSettings.externalLinkTarget = LinkTarget.NONE; - return LinkTarget.NONE; - case 'externalLinkRel': - return globalSettings ? globalSettings.externalLinkRel : DEFAULT_LINK_REL; - case 'enableStats': - return !!(globalSettings && globalSettings.enableStats); - case 'pdfjsNext': - return !!(globalSettings && globalSettings.pdfjsNext); - default: - throw new Error('Unknown default setting: ' + id); - } -} -function isExternalLinkTargetSet() { - var externalLinkTarget = getDefaultSetting('externalLinkTarget'); - switch (externalLinkTarget) { - case LinkTarget.NONE: - return false; - case LinkTarget.SELF: - case LinkTarget.BLANK: - case LinkTarget.PARENT: - case LinkTarget.TOP: - return true; - } -} -function isValidUrl(url, allowRelative) { - (0, _util.deprecated)('isValidUrl(), please use createValidAbsoluteUrl() instead.'); - var baseUrl = allowRelative ? 'http://example.com' : null; - return (0, _util.createValidAbsoluteUrl)(url, baseUrl) !== null; -} -exports.CustomStyle = CustomStyle; -exports.RenderingCancelledException = RenderingCancelledException; -exports.addLinkAttributes = addLinkAttributes; -exports.isExternalLinkTargetSet = isExternalLinkTargetSet; -exports.isValidUrl = isValidUrl; -exports.getFilenameFromUrl = getFilenameFromUrl; -exports.LinkTarget = LinkTarget; -exports.getDefaultSetting = getDefaultSetting; -exports.DEFAULT_LINK_REL = DEFAULT_LINK_REL; -exports.DOMCanvasFactory = DOMCanvasFactory; -exports.DOMCMapReaderFactory = DOMCMapReaderFactory; -/***/ }), -/* 2 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.build = exports.version = exports._UnsupportedManager = exports.setPDFNetworkStreamClass = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFWorker = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.getDocument = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _util = __w_pdfjs_require__(0); - -var _dom_utils = __w_pdfjs_require__(1); - -var _font_loader = __w_pdfjs_require__(12); - -var _canvas = __w_pdfjs_require__(11); - -var _metadata = __w_pdfjs_require__(6); - -var _transport_stream = __w_pdfjs_require__(14); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var DEFAULT_RANGE_CHUNK_SIZE = 65536; -var isWorkerDisabled = false; -var workerSrc; -var isPostMessageTransfersDisabled = false; -var pdfjsFilePath = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : null; -var fakeWorkerFilesLoader = null; -var useRequireEnsure = false; -{ - if (typeof window === 'undefined') { - isWorkerDisabled = true; - if (typeof require.ensure === 'undefined') { - require.ensure = require('node-ensure'); - } - useRequireEnsure = true; - } else if (typeof require !== 'undefined' && typeof require.ensure === 'function') { - useRequireEnsure = true; - } - if (typeof requirejs !== 'undefined' && requirejs.toUrl) { - workerSrc = requirejs.toUrl('pdfjs-dist/build/pdf.worker.js'); - } - var dynamicLoaderSupported = typeof requirejs !== 'undefined' && requirejs.load; - fakeWorkerFilesLoader = useRequireEnsure ? function (callback) { - require.ensure([], function () { - var worker; - worker = require('./pdf.worker.js'); - callback(worker.WorkerMessageHandler); - }); - } : dynamicLoaderSupported ? function (callback) { - requirejs(['pdfjs-dist/build/pdf.worker'], function (worker) { - callback(worker.WorkerMessageHandler); - }); - } : null; -} -var PDFNetworkStream; -function setPDFNetworkStreamClass(cls) { - PDFNetworkStream = cls; -} -function getDocument(src, pdfDataRangeTransport, passwordCallback, progressCallback) { - var task = new PDFDocumentLoadingTask(); - if (arguments.length > 1) { - (0, _util.deprecated)('getDocument is called with pdfDataRangeTransport, ' + 'passwordCallback or progressCallback argument'); - } - if (pdfDataRangeTransport) { - if (!(pdfDataRangeTransport instanceof PDFDataRangeTransport)) { - pdfDataRangeTransport = Object.create(pdfDataRangeTransport); - pdfDataRangeTransport.length = src.length; - pdfDataRangeTransport.initialData = src.initialData; - if (!pdfDataRangeTransport.abort) { - pdfDataRangeTransport.abort = function () {}; - } - } - src = Object.create(src); - src.range = pdfDataRangeTransport; - } - task.onPassword = passwordCallback || null; - task.onProgress = progressCallback || null; - var source; - if (typeof src === 'string') { - source = { url: src }; - } else if ((0, _util.isArrayBuffer)(src)) { - source = { data: src }; - } else if (src instanceof PDFDataRangeTransport) { - source = { range: src }; - } else { - if ((typeof src === 'undefined' ? 'undefined' : _typeof(src)) !== 'object') { - throw new Error('Invalid parameter in getDocument, ' + 'need either Uint8Array, string or a parameter object'); - } - if (!src.url && !src.data && !src.range) { - throw new Error('Invalid parameter object: need either .data, .range or .url'); - } - source = src; - } - var params = {}; - var rangeTransport = null; - var worker = null; - var CMapReaderFactory = _dom_utils.DOMCMapReaderFactory; - for (var key in source) { - if (key === 'url' && typeof window !== 'undefined') { - params[key] = new URL(source[key], window.location).href; - continue; - } else if (key === 'range') { - rangeTransport = source[key]; - continue; - } else if (key === 'worker') { - worker = source[key]; - continue; - } else if (key === 'data' && !(source[key] instanceof Uint8Array)) { - var pdfBytes = source[key]; - if (typeof pdfBytes === 'string') { - params[key] = (0, _util.stringToBytes)(pdfBytes); - } else if ((typeof pdfBytes === 'undefined' ? 'undefined' : _typeof(pdfBytes)) === 'object' && pdfBytes !== null && !isNaN(pdfBytes.length)) { - params[key] = new Uint8Array(pdfBytes); - } else if ((0, _util.isArrayBuffer)(pdfBytes)) { - params[key] = new Uint8Array(pdfBytes); - } else { - throw new Error('Invalid PDF binary data: either typed array, ' + 'string or array-like object is expected in the ' + 'data property.'); - } - continue; - } else if (key === 'CMapReaderFactory') { - CMapReaderFactory = source[key]; - continue; - } - params[key] = source[key]; - } - params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE; - params.ignoreErrors = params.stopAtErrors !== true; - if (params.disableNativeImageDecoder !== undefined) { - (0, _util.deprecated)('parameter disableNativeImageDecoder, ' + 'use nativeImageDecoderSupport instead'); - } - params.nativeImageDecoderSupport = params.nativeImageDecoderSupport || (params.disableNativeImageDecoder === true ? _util.NativeImageDecoding.NONE : _util.NativeImageDecoding.DECODE); - if (params.nativeImageDecoderSupport !== _util.NativeImageDecoding.DECODE && params.nativeImageDecoderSupport !== _util.NativeImageDecoding.NONE && params.nativeImageDecoderSupport !== _util.NativeImageDecoding.DISPLAY) { - (0, _util.warn)('Invalid parameter nativeImageDecoderSupport: ' + 'need a state of enum {NativeImageDecoding}'); - params.nativeImageDecoderSupport = _util.NativeImageDecoding.DECODE; - } - if (!worker) { - var workerPort = (0, _dom_utils.getDefaultSetting)('workerPort'); - worker = workerPort ? PDFWorker.fromPort(workerPort) : new PDFWorker(); - task._worker = worker; - } - var docId = task.docId; - worker.promise.then(function () { - if (task.destroyed) { - throw new Error('Loading aborted'); - } - return _fetchDocument(worker, params, rangeTransport, docId).then(function (workerId) { - if (task.destroyed) { - throw new Error('Loading aborted'); - } - var networkStream = void 0; - if (rangeTransport) { - networkStream = new _transport_stream.PDFDataTransportStream(params, rangeTransport); - } else if (!params.data) { - networkStream = new PDFNetworkStream({ - source: params, - disableRange: (0, _dom_utils.getDefaultSetting)('disableRange') - }); - } - var messageHandler = new _util.MessageHandler(docId, workerId, worker.port); - messageHandler.postMessageTransfers = worker.postMessageTransfers; - var transport = new WorkerTransport(messageHandler, task, networkStream, CMapReaderFactory); - task._transport = transport; - messageHandler.send('Ready', null); - }); - }).catch(task._capability.reject); - return task; -} -function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { - if (worker.destroyed) { - return Promise.reject(new Error('Worker was destroyed')); - } - source.disableAutoFetch = (0, _dom_utils.getDefaultSetting)('disableAutoFetch'); - source.disableStream = (0, _dom_utils.getDefaultSetting)('disableStream'); - source.chunkedViewerLoading = !!pdfDataRangeTransport; - if (pdfDataRangeTransport) { - source.length = pdfDataRangeTransport.length; - source.initialData = pdfDataRangeTransport.initialData; - } - return worker.messageHandler.sendWithPromise('GetDocRequest', { - docId: docId, - source: { - data: source.data, - url: source.url, - password: source.password, - disableAutoFetch: source.disableAutoFetch, - rangeChunkSize: source.rangeChunkSize, - length: source.length - }, - maxImageSize: (0, _dom_utils.getDefaultSetting)('maxImageSize'), - disableFontFace: (0, _dom_utils.getDefaultSetting)('disableFontFace'), - disableCreateObjectURL: (0, _dom_utils.getDefaultSetting)('disableCreateObjectURL'), - postMessageTransfers: (0, _dom_utils.getDefaultSetting)('postMessageTransfers') && !isPostMessageTransfersDisabled, - docBaseUrl: source.docBaseUrl, - nativeImageDecoderSupport: source.nativeImageDecoderSupport, - ignoreErrors: source.ignoreErrors - }).then(function (workerId) { - if (worker.destroyed) { - throw new Error('Worker was destroyed'); - } - return workerId; - }); -} -var PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() { - var nextDocumentId = 0; - function PDFDocumentLoadingTask() { - this._capability = (0, _util.createPromiseCapability)(); - this._transport = null; - this._worker = null; - this.docId = 'd' + nextDocumentId++; - this.destroyed = false; - this.onPassword = null; - this.onProgress = null; - this.onUnsupportedFeature = null; - } - PDFDocumentLoadingTask.prototype = { - get promise() { - return this._capability.promise; - }, - destroy: function destroy() { - var _this = this; - - this.destroyed = true; - var transportDestroyed = !this._transport ? Promise.resolve() : this._transport.destroy(); - return transportDestroyed.then(function () { - _this._transport = null; - if (_this._worker) { - _this._worker.destroy(); - _this._worker = null; - } - }); - }, - - then: function PDFDocumentLoadingTask_then(onFulfilled, onRejected) { - return this.promise.then.apply(this.promise, arguments); - } - }; - return PDFDocumentLoadingTask; -}(); -var PDFDataRangeTransport = function pdfDataRangeTransportClosure() { - function PDFDataRangeTransport(length, initialData) { - this.length = length; - this.initialData = initialData; - this._rangeListeners = []; - this._progressListeners = []; - this._progressiveReadListeners = []; - this._readyCapability = (0, _util.createPromiseCapability)(); - } - PDFDataRangeTransport.prototype = { - addRangeListener: function PDFDataRangeTransport_addRangeListener(listener) { - this._rangeListeners.push(listener); - }, - addProgressListener: function PDFDataRangeTransport_addProgressListener(listener) { - this._progressListeners.push(listener); - }, - addProgressiveReadListener: function PDFDataRangeTransport_addProgressiveReadListener(listener) { - this._progressiveReadListeners.push(listener); - }, - onDataRange: function PDFDataRangeTransport_onDataRange(begin, chunk) { - var listeners = this._rangeListeners; - for (var i = 0, n = listeners.length; i < n; ++i) { - listeners[i](begin, chunk); - } - }, - onDataProgress: function PDFDataRangeTransport_onDataProgress(loaded) { - var _this2 = this; - - this._readyCapability.promise.then(function () { - var listeners = _this2._progressListeners; - for (var i = 0, n = listeners.length; i < n; ++i) { - listeners[i](loaded); - } - }); - }, - onDataProgressiveRead: function PDFDataRangeTransport_onDataProgress(chunk) { - var _this3 = this; - - this._readyCapability.promise.then(function () { - var listeners = _this3._progressiveReadListeners; - for (var i = 0, n = listeners.length; i < n; ++i) { - listeners[i](chunk); - } - }); - }, - transportReady: function PDFDataRangeTransport_transportReady() { - this._readyCapability.resolve(); - }, - requestDataRange: function PDFDataRangeTransport_requestDataRange(begin, end) { - throw new Error('Abstract method PDFDataRangeTransport.requestDataRange'); - }, - abort: function PDFDataRangeTransport_abort() {} - }; - return PDFDataRangeTransport; -}(); -var PDFDocumentProxy = function PDFDocumentProxyClosure() { - function PDFDocumentProxy(pdfInfo, transport, loadingTask) { - this.pdfInfo = pdfInfo; - this.transport = transport; - this.loadingTask = loadingTask; - } - PDFDocumentProxy.prototype = { - get numPages() { - return this.pdfInfo.numPages; - }, - get fingerprint() { - return this.pdfInfo.fingerprint; - }, - getPage: function PDFDocumentProxy_getPage(pageNumber) { - return this.transport.getPage(pageNumber); - }, - getPageIndex: function PDFDocumentProxy_getPageIndex(ref) { - return this.transport.getPageIndex(ref); - }, - getDestinations: function PDFDocumentProxy_getDestinations() { - return this.transport.getDestinations(); - }, - getDestination: function PDFDocumentProxy_getDestination(id) { - return this.transport.getDestination(id); - }, - getPageLabels: function PDFDocumentProxy_getPageLabels() { - return this.transport.getPageLabels(); - }, - getPageMode: function getPageMode() { - return this.transport.getPageMode(); - }, - - getAttachments: function PDFDocumentProxy_getAttachments() { - return this.transport.getAttachments(); - }, - getJavaScript: function PDFDocumentProxy_getJavaScript() { - return this.transport.getJavaScript(); - }, - getOutline: function PDFDocumentProxy_getOutline() { - return this.transport.getOutline(); - }, - getMetadata: function PDFDocumentProxy_getMetadata() { - return this.transport.getMetadata(); - }, - getData: function PDFDocumentProxy_getData() { - return this.transport.getData(); - }, - getDownloadInfo: function PDFDocumentProxy_getDownloadInfo() { - return this.transport.downloadInfoCapability.promise; - }, - getStats: function PDFDocumentProxy_getStats() { - return this.transport.getStats(); - }, - cleanup: function PDFDocumentProxy_cleanup() { - this.transport.startCleanup(); - }, - destroy: function PDFDocumentProxy_destroy() { - return this.loadingTask.destroy(); - } - }; - return PDFDocumentProxy; -}(); -var PDFPageProxy = function PDFPageProxyClosure() { - function PDFPageProxy(pageIndex, pageInfo, transport) { - this.pageIndex = pageIndex; - this.pageInfo = pageInfo; - this.transport = transport; - this.stats = new _util.StatTimer(); - this.stats.enabled = (0, _dom_utils.getDefaultSetting)('enableStats'); - this.commonObjs = transport.commonObjs; - this.objs = new PDFObjects(); - this.cleanupAfterRender = false; - this.pendingCleanup = false; - this.intentStates = Object.create(null); - this.destroyed = false; - } - PDFPageProxy.prototype = { - get pageNumber() { - return this.pageIndex + 1; - }, - get rotate() { - return this.pageInfo.rotate; - }, - get ref() { - return this.pageInfo.ref; - }, - get userUnit() { - return this.pageInfo.userUnit; - }, - get view() { - return this.pageInfo.view; - }, - getViewport: function PDFPageProxy_getViewport(scale, rotate) { - if (arguments.length < 2) { - rotate = this.rotate; - } - return new _util.PageViewport(this.view, scale, rotate, 0, 0); - }, - getAnnotations: function PDFPageProxy_getAnnotations(params) { - var intent = params && params.intent || null; - if (!this.annotationsPromise || this.annotationsIntent !== intent) { - this.annotationsPromise = this.transport.getAnnotations(this.pageIndex, intent); - this.annotationsIntent = intent; - } - return this.annotationsPromise; - }, - render: function PDFPageProxy_render(params) { - var _this4 = this; - - var stats = this.stats; - stats.time('Overall'); - this.pendingCleanup = false; - var renderingIntent = params.intent === 'print' ? 'print' : 'display'; - var canvasFactory = params.canvasFactory || new _dom_utils.DOMCanvasFactory(); - if (!this.intentStates[renderingIntent]) { - this.intentStates[renderingIntent] = Object.create(null); - } - var intentState = this.intentStates[renderingIntent]; - if (!intentState.displayReadyCapability) { - intentState.receivingOperatorList = true; - intentState.displayReadyCapability = (0, _util.createPromiseCapability)(); - intentState.operatorList = { - fnArray: [], - argsArray: [], - lastChunk: false - }; - this.stats.time('Page Request'); - this.transport.messageHandler.send('RenderPageRequest', { - pageIndex: this.pageNumber - 1, - intent: renderingIntent, - renderInteractiveForms: params.renderInteractiveForms === true - }); - } - var complete = function complete(error) { - var i = intentState.renderTasks.indexOf(internalRenderTask); - if (i >= 0) { - intentState.renderTasks.splice(i, 1); - } - if (_this4.cleanupAfterRender) { - _this4.pendingCleanup = true; - } - _this4._tryCleanup(); - if (error) { - internalRenderTask.capability.reject(error); - } else { - internalRenderTask.capability.resolve(); - } - stats.timeEnd('Rendering'); - stats.timeEnd('Overall'); - }; - var internalRenderTask = new InternalRenderTask(complete, params, this.objs, this.commonObjs, intentState.operatorList, this.pageNumber, canvasFactory); - internalRenderTask.useRequestAnimationFrame = renderingIntent !== 'print'; - if (!intentState.renderTasks) { - intentState.renderTasks = []; - } - intentState.renderTasks.push(internalRenderTask); - var renderTask = internalRenderTask.task; - if (params.continueCallback) { - (0, _util.deprecated)('render is used with continueCallback parameter'); - renderTask.onContinue = params.continueCallback; - } - intentState.displayReadyCapability.promise.then(function (transparency) { - if (_this4.pendingCleanup) { - complete(); - return; - } - stats.time('Rendering'); - internalRenderTask.initializeGraphics(transparency); - internalRenderTask.operatorListChanged(); - }).catch(complete); - return renderTask; - }, - getOperatorList: function PDFPageProxy_getOperatorList() { - function operatorListChanged() { - if (intentState.operatorList.lastChunk) { - intentState.opListReadCapability.resolve(intentState.operatorList); - var i = intentState.renderTasks.indexOf(opListTask); - if (i >= 0) { - intentState.renderTasks.splice(i, 1); - } - } - } - var renderingIntent = 'oplist'; - if (!this.intentStates[renderingIntent]) { - this.intentStates[renderingIntent] = Object.create(null); - } - var intentState = this.intentStates[renderingIntent]; - var opListTask; - if (!intentState.opListReadCapability) { - opListTask = {}; - opListTask.operatorListChanged = operatorListChanged; - intentState.receivingOperatorList = true; - intentState.opListReadCapability = (0, _util.createPromiseCapability)(); - intentState.renderTasks = []; - intentState.renderTasks.push(opListTask); - intentState.operatorList = { - fnArray: [], - argsArray: [], - lastChunk: false - }; - this.transport.messageHandler.send('RenderPageRequest', { - pageIndex: this.pageIndex, - intent: renderingIntent - }); - } - return intentState.opListReadCapability.promise; - }, - streamTextContent: function streamTextContent() { - var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - var TEXT_CONTENT_CHUNK_SIZE = 100; - return this.transport.messageHandler.sendWithStream('GetTextContent', { - pageIndex: this.pageNumber - 1, - normalizeWhitespace: params.normalizeWhitespace === true, - combineTextItems: params.disableCombineTextItems !== true - }, { - highWaterMark: TEXT_CONTENT_CHUNK_SIZE, - size: function size(textContent) { - return textContent.items.length; - } - }); - }, - - getTextContent: function PDFPageProxy_getTextContent(params) { - params = params || {}; - var readableStream = this.streamTextContent(params); - return new Promise(function (resolve, reject) { - function pump() { - reader.read().then(function (_ref) { - var value = _ref.value, - done = _ref.done; - - if (done) { - resolve(textContent); - return; - } - _util.Util.extendObj(textContent.styles, value.styles); - _util.Util.appendToArray(textContent.items, value.items); - pump(); - }, reject); - } - var reader = readableStream.getReader(); - var textContent = { - items: [], - styles: Object.create(null) - }; - pump(); - }); - }, - _destroy: function PDFPageProxy_destroy() { - this.destroyed = true; - this.transport.pageCache[this.pageIndex] = null; - var waitOn = []; - Object.keys(this.intentStates).forEach(function (intent) { - if (intent === 'oplist') { - return; - } - var intentState = this.intentStates[intent]; - intentState.renderTasks.forEach(function (renderTask) { - var renderCompleted = renderTask.capability.promise.catch(function () {}); - waitOn.push(renderCompleted); - renderTask.cancel(); - }); - }, this); - this.objs.clear(); - this.annotationsPromise = null; - this.pendingCleanup = false; - return Promise.all(waitOn); - }, - destroy: function destroy() { - (0, _util.deprecated)('page destroy method, use cleanup() instead'); - this.cleanup(); - }, - - cleanup: function PDFPageProxy_cleanup() { - this.pendingCleanup = true; - this._tryCleanup(); - }, - _tryCleanup: function PDFPageProxy_tryCleanup() { - if (!this.pendingCleanup || Object.keys(this.intentStates).some(function (intent) { - var intentState = this.intentStates[intent]; - return intentState.renderTasks.length !== 0 || intentState.receivingOperatorList; - }, this)) { - return; - } - Object.keys(this.intentStates).forEach(function (intent) { - delete this.intentStates[intent]; - }, this); - this.objs.clear(); - this.annotationsPromise = null; - this.pendingCleanup = false; - }, - _startRenderPage: function PDFPageProxy_startRenderPage(transparency, intent) { - var intentState = this.intentStates[intent]; - if (intentState.displayReadyCapability) { - intentState.displayReadyCapability.resolve(transparency); - } - }, - _renderPageChunk: function PDFPageProxy_renderPageChunk(operatorListChunk, intent) { - var intentState = this.intentStates[intent]; - var i, ii; - for (i = 0, ii = operatorListChunk.length; i < ii; i++) { - intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]); - intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]); - } - intentState.operatorList.lastChunk = operatorListChunk.lastChunk; - for (i = 0; i < intentState.renderTasks.length; i++) { - intentState.renderTasks[i].operatorListChanged(); - } - if (operatorListChunk.lastChunk) { - intentState.receivingOperatorList = false; - this._tryCleanup(); - } - } - }; - return PDFPageProxy; -}(); - -var LoopbackPort = function () { - function LoopbackPort(defer) { - _classCallCheck(this, LoopbackPort); - - this._listeners = []; - this._defer = defer; - this._deferred = Promise.resolve(undefined); - } - - _createClass(LoopbackPort, [{ - key: 'postMessage', - value: function postMessage(obj, transfers) { - var _this5 = this; - - function cloneValue(value) { - if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) !== 'object' || value === null) { - return value; - } - if (cloned.has(value)) { - return cloned.get(value); - } - var result; - var buffer; - if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) { - var transferable = transfers && transfers.indexOf(buffer) >= 0; - if (value === buffer) { - result = value; - } else if (transferable) { - result = new value.constructor(buffer, value.byteOffset, value.byteLength); - } else { - result = new value.constructor(value); - } - cloned.set(value, result); - return result; - } - result = (0, _util.isArray)(value) ? [] : {}; - cloned.set(value, result); - for (var i in value) { - var desc, - p = value; - while (!(desc = Object.getOwnPropertyDescriptor(p, i))) { - p = Object.getPrototypeOf(p); - } - if (typeof desc.value === 'undefined' || typeof desc.value === 'function') { - continue; - } - result[i] = cloneValue(desc.value); - } - return result; - } - if (!this._defer) { - this._listeners.forEach(function (listener) { - listener.call(this, { data: obj }); - }, this); - return; - } - var cloned = new WeakMap(); - var e = { data: cloneValue(obj) }; - this._deferred.then(function () { - _this5._listeners.forEach(function (listener) { - listener.call(this, e); - }, _this5); - }); - } - }, { - key: 'addEventListener', - value: function addEventListener(name, listener) { - this._listeners.push(listener); - } - }, { - key: 'removeEventListener', - value: function removeEventListener(name, listener) { - var i = this._listeners.indexOf(listener); - this._listeners.splice(i, 1); - } - }, { - key: 'terminate', - value: function terminate() { - this._listeners = []; - } - }]); - - return LoopbackPort; -}(); - -var PDFWorker = function PDFWorkerClosure() { - var nextFakeWorkerId = 0; - function getWorkerSrc() { - if (typeof workerSrc !== 'undefined') { - return workerSrc; - } - if ((0, _dom_utils.getDefaultSetting)('workerSrc')) { - return (0, _dom_utils.getDefaultSetting)('workerSrc'); - } - if (pdfjsFilePath) { - return pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, '.worker$1$2'); - } - throw new Error('No PDFJS.workerSrc specified'); - } - var fakeWorkerFilesLoadedCapability = void 0; - function setupFakeWorkerGlobal() { - var WorkerMessageHandler; - if (fakeWorkerFilesLoadedCapability) { - return fakeWorkerFilesLoadedCapability.promise; - } - fakeWorkerFilesLoadedCapability = (0, _util.createPromiseCapability)(); - var loader = fakeWorkerFilesLoader || function (callback) { - _util.Util.loadScript(getWorkerSrc(), function () { - callback(window.pdfjsDistBuildPdfWorker.WorkerMessageHandler); - }); - }; - loader(fakeWorkerFilesLoadedCapability.resolve); - return fakeWorkerFilesLoadedCapability.promise; - } - function createCDNWrapper(url) { - var wrapper = 'importScripts(\'' + url + '\');'; - return URL.createObjectURL(new Blob([wrapper])); - } - var pdfWorkerPorts = new WeakMap(); - function PDFWorker(name, port) { - if (port && pdfWorkerPorts.has(port)) { - throw new Error('Cannot use more than one PDFWorker per port'); - } - this.name = name; - this.destroyed = false; - this.postMessageTransfers = true; - this._readyCapability = (0, _util.createPromiseCapability)(); - this._port = null; - this._webWorker = null; - this._messageHandler = null; - if (port) { - pdfWorkerPorts.set(port, this); - this._initializeFromPort(port); - return; - } - this._initialize(); - } - PDFWorker.prototype = { - get promise() { - return this._readyCapability.promise; - }, - get port() { - return this._port; - }, - get messageHandler() { - return this._messageHandler; - }, - _initializeFromPort: function PDFWorker_initializeFromPort(port) { - this._port = port; - this._messageHandler = new _util.MessageHandler('main', 'worker', port); - this._messageHandler.on('ready', function () {}); - this._readyCapability.resolve(); - }, - _initialize: function PDFWorker_initialize() { - var _this6 = this; - - if (!isWorkerDisabled && !(0, _dom_utils.getDefaultSetting)('disableWorker') && typeof Worker !== 'undefined') { - var workerSrc = getWorkerSrc(); - try { - if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) { - workerSrc = createCDNWrapper(new URL(workerSrc, window.location).href); - } - var worker = new Worker(workerSrc); - var messageHandler = new _util.MessageHandler('main', 'worker', worker); - var terminateEarly = function terminateEarly() { - worker.removeEventListener('error', onWorkerError); - messageHandler.destroy(); - worker.terminate(); - if (_this6.destroyed) { - _this6._readyCapability.reject(new Error('Worker was destroyed')); - } else { - _this6._setupFakeWorker(); - } - }; - var onWorkerError = function onWorkerError() { - if (!_this6._webWorker) { - terminateEarly(); - } - }; - worker.addEventListener('error', onWorkerError); - messageHandler.on('test', function (data) { - worker.removeEventListener('error', onWorkerError); - if (_this6.destroyed) { - terminateEarly(); - return; - } - var supportTypedArray = data && data.supportTypedArray; - if (supportTypedArray) { - _this6._messageHandler = messageHandler; - _this6._port = worker; - _this6._webWorker = worker; - if (!data.supportTransfers) { - _this6.postMessageTransfers = false; - isPostMessageTransfersDisabled = true; - } - _this6._readyCapability.resolve(); - messageHandler.send('configure', { verbosity: (0, _util.getVerbosityLevel)() }); - } else { - _this6._setupFakeWorker(); - messageHandler.destroy(); - worker.terminate(); - } - }); - messageHandler.on('console_log', function (data) { - console.log.apply(console, data); - }); - messageHandler.on('console_error', function (data) { - console.error.apply(console, data); - }); - messageHandler.on('ready', function (data) { - worker.removeEventListener('error', onWorkerError); - if (_this6.destroyed) { - terminateEarly(); - return; - } - try { - sendTest(); - } catch (e) { - _this6._setupFakeWorker(); - } - }); - var sendTest = function sendTest() { - var postMessageTransfers = (0, _dom_utils.getDefaultSetting)('postMessageTransfers') && !isPostMessageTransfersDisabled; - var testObj = new Uint8Array([postMessageTransfers ? 255 : 0]); - try { - messageHandler.send('test', testObj, [testObj.buffer]); - } catch (ex) { - (0, _util.info)('Cannot use postMessage transfers'); - testObj[0] = 0; - messageHandler.send('test', testObj); - } - }; - sendTest(); - return; - } catch (e) { - (0, _util.info)('The worker has been disabled.'); - } - } - this._setupFakeWorker(); - }, - _setupFakeWorker: function PDFWorker_setupFakeWorker() { - var _this7 = this; - - if (!isWorkerDisabled && !(0, _dom_utils.getDefaultSetting)('disableWorker')) { - (0, _util.warn)('Setting up fake worker.'); - isWorkerDisabled = true; - } - setupFakeWorkerGlobal().then(function (WorkerMessageHandler) { - if (_this7.destroyed) { - _this7._readyCapability.reject(new Error('Worker was destroyed')); - return; - } - var isTypedArraysPresent = Uint8Array !== Float32Array; - var port = new LoopbackPort(isTypedArraysPresent); - _this7._port = port; - var id = 'fake' + nextFakeWorkerId++; - var workerHandler = new _util.MessageHandler(id + '_worker', id, port); - WorkerMessageHandler.setup(workerHandler, port); - var messageHandler = new _util.MessageHandler(id, id + '_worker', port); - _this7._messageHandler = messageHandler; - _this7._readyCapability.resolve(); - }); - }, - destroy: function PDFWorker_destroy() { - this.destroyed = true; - if (this._webWorker) { - this._webWorker.terminate(); - this._webWorker = null; - } - pdfWorkerPorts.delete(this._port); - this._port = null; - if (this._messageHandler) { - this._messageHandler.destroy(); - this._messageHandler = null; - } - } - }; - PDFWorker.fromPort = function (port) { - if (pdfWorkerPorts.has(port)) { - return pdfWorkerPorts.get(port); - } - return new PDFWorker(null, port); - }; - return PDFWorker; -}(); -var WorkerTransport = function WorkerTransportClosure() { - function WorkerTransport(messageHandler, loadingTask, networkStream, CMapReaderFactory) { - this.messageHandler = messageHandler; - this.loadingTask = loadingTask; - this.commonObjs = new PDFObjects(); - this.fontLoader = new _font_loader.FontLoader(loadingTask.docId); - this.CMapReaderFactory = new CMapReaderFactory({ - baseUrl: (0, _dom_utils.getDefaultSetting)('cMapUrl'), - isCompressed: (0, _dom_utils.getDefaultSetting)('cMapPacked') - }); - this.destroyed = false; - this.destroyCapability = null; - this._passwordCapability = null; - this._networkStream = networkStream; - this._fullReader = null; - this._lastProgress = null; - this.pageCache = []; - this.pagePromises = []; - this.downloadInfoCapability = (0, _util.createPromiseCapability)(); - this.setupMessageHandler(); - } - WorkerTransport.prototype = { - destroy: function WorkerTransport_destroy() { - var _this8 = this; - - if (this.destroyCapability) { - return this.destroyCapability.promise; - } - this.destroyed = true; - this.destroyCapability = (0, _util.createPromiseCapability)(); - if (this._passwordCapability) { - this._passwordCapability.reject(new Error('Worker was destroyed during onPassword callback')); - } - var waitOn = []; - this.pageCache.forEach(function (page) { - if (page) { - waitOn.push(page._destroy()); - } - }); - this.pageCache = []; - this.pagePromises = []; - var terminated = this.messageHandler.sendWithPromise('Terminate', null); - waitOn.push(terminated); - Promise.all(waitOn).then(function () { - _this8.fontLoader.clear(); - if (_this8._networkStream) { - _this8._networkStream.cancelAllRequests(); - } - if (_this8.messageHandler) { - _this8.messageHandler.destroy(); - _this8.messageHandler = null; - } - _this8.destroyCapability.resolve(); - }, this.destroyCapability.reject); - return this.destroyCapability.promise; - }, - setupMessageHandler: function WorkerTransport_setupMessageHandler() { - var messageHandler = this.messageHandler; - var loadingTask = this.loadingTask; - messageHandler.on('GetReader', function (data, sink) { - var _this9 = this; - - (0, _util.assert)(this._networkStream); - this._fullReader = this._networkStream.getFullReader(); - this._fullReader.onProgress = function (evt) { - _this9._lastProgress = { - loaded: evt.loaded, - total: evt.total - }; - }; - sink.onPull = function () { - _this9._fullReader.read().then(function (_ref2) { - var value = _ref2.value, - done = _ref2.done; - - if (done) { - sink.close(); - return; - } - (0, _util.assert)((0, _util.isArrayBuffer)(value)); - sink.enqueue(new Uint8Array(value), 1, [value]); - }).catch(function (reason) { - sink.error(reason); - }); - }; - sink.onCancel = function (reason) { - _this9._fullReader.cancel(reason); - }; - }, this); - messageHandler.on('ReaderHeadersReady', function (data) { - var _this10 = this; - - var headersCapability = (0, _util.createPromiseCapability)(); - var fullReader = this._fullReader; - fullReader.headersReady.then(function () { - if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) { - if (_this10._lastProgress) { - var _loadingTask = _this10.loadingTask; - if (_loadingTask.onProgress) { - _loadingTask.onProgress(_this10._lastProgress); - } - } - fullReader.onProgress = function (evt) { - var loadingTask = _this10.loadingTask; - if (loadingTask.onProgress) { - loadingTask.onProgress({ - loaded: evt.loaded, - total: evt.total - }); - } - }; - } - headersCapability.resolve({ - isStreamingSupported: fullReader.isStreamingSupported, - isRangeSupported: fullReader.isRangeSupported, - contentLength: fullReader.contentLength - }); - }, headersCapability.reject); - return headersCapability.promise; - }, this); - messageHandler.on('GetRangeReader', function (data, sink) { - (0, _util.assert)(this._networkStream); - var _rangeReader = this._networkStream.getRangeReader(data.begin, data.end); - sink.onPull = function () { - _rangeReader.read().then(function (_ref3) { - var value = _ref3.value, - done = _ref3.done; - - if (done) { - sink.close(); - return; - } - (0, _util.assert)((0, _util.isArrayBuffer)(value)); - sink.enqueue(new Uint8Array(value), 1, [value]); - }).catch(function (reason) { - sink.error(reason); - }); - }; - sink.onCancel = function (reason) { - _rangeReader.cancel(reason); - }; - }, this); - messageHandler.on('GetDoc', function transportDoc(data) { - var pdfInfo = data.pdfInfo; - this.numPages = data.pdfInfo.numPages; - var loadingTask = this.loadingTask; - var pdfDocument = new PDFDocumentProxy(pdfInfo, this, loadingTask); - this.pdfDocument = pdfDocument; - loadingTask._capability.resolve(pdfDocument); - }, this); - messageHandler.on('PasswordRequest', function transportPasswordRequest(exception) { - var _this11 = this; - - this._passwordCapability = (0, _util.createPromiseCapability)(); - if (loadingTask.onPassword) { - var updatePassword = function updatePassword(password) { - _this11._passwordCapability.resolve({ password: password }); - }; - loadingTask.onPassword(updatePassword, exception.code); - } else { - this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code)); - } - return this._passwordCapability.promise; - }, this); - messageHandler.on('PasswordException', function transportPasswordException(exception) { - loadingTask._capability.reject(new _util.PasswordException(exception.message, exception.code)); - }, this); - messageHandler.on('InvalidPDF', function transportInvalidPDF(exception) { - this.loadingTask._capability.reject(new _util.InvalidPDFException(exception.message)); - }, this); - messageHandler.on('MissingPDF', function transportMissingPDF(exception) { - this.loadingTask._capability.reject(new _util.MissingPDFException(exception.message)); - }, this); - messageHandler.on('UnexpectedResponse', function transportUnexpectedResponse(exception) { - this.loadingTask._capability.reject(new _util.UnexpectedResponseException(exception.message, exception.status)); - }, this); - messageHandler.on('UnknownError', function transportUnknownError(exception) { - this.loadingTask._capability.reject(new _util.UnknownErrorException(exception.message, exception.details)); - }, this); - messageHandler.on('DataLoaded', function transportPage(data) { - this.downloadInfoCapability.resolve(data); - }, this); - messageHandler.on('PDFManagerReady', function transportPage(data) {}, this); - messageHandler.on('StartRenderPage', function transportRender(data) { - if (this.destroyed) { - return; - } - var page = this.pageCache[data.pageIndex]; - page.stats.timeEnd('Page Request'); - page._startRenderPage(data.transparency, data.intent); - }, this); - messageHandler.on('RenderPageChunk', function transportRender(data) { - if (this.destroyed) { - return; - } - var page = this.pageCache[data.pageIndex]; - page._renderPageChunk(data.operatorList, data.intent); - }, this); - messageHandler.on('commonobj', function transportObj(data) { - var _this12 = this; - - if (this.destroyed) { - return; - } - var id = data[0]; - var type = data[1]; - if (this.commonObjs.hasData(id)) { - return; - } - switch (type) { - case 'Font': - var exportedData = data[2]; - if ('error' in exportedData) { - var exportedError = exportedData.error; - (0, _util.warn)('Error during font loading: ' + exportedError); - this.commonObjs.resolve(id, exportedError); - break; - } - var fontRegistry = null; - if ((0, _dom_utils.getDefaultSetting)('pdfBug') && _util.globalScope.FontInspector && _util.globalScope['FontInspector'].enabled) { - fontRegistry = { - registerFont: function registerFont(font, url) { - _util.globalScope['FontInspector'].fontAdded(font, url); - } - }; - } - var font = new _font_loader.FontFaceObject(exportedData, { - isEvalSuported: (0, _dom_utils.getDefaultSetting)('isEvalSupported'), - disableFontFace: (0, _dom_utils.getDefaultSetting)('disableFontFace'), - fontRegistry: fontRegistry - }); - var fontReady = function fontReady(fontObjs) { - _this12.commonObjs.resolve(id, font); - }; - this.fontLoader.bind([font], fontReady); - break; - case 'FontPath': - this.commonObjs.resolve(id, data[2]); - break; - default: - throw new Error('Got unknown common object type ' + type); - } - }, this); - messageHandler.on('obj', function transportObj(data) { - if (this.destroyed) { - return; - } - var id = data[0]; - var pageIndex = data[1]; - var type = data[2]; - var pageProxy = this.pageCache[pageIndex]; - var imageData; - if (pageProxy.objs.hasData(id)) { - return; - } - switch (type) { - case 'JpegStream': - imageData = data[3]; - (0, _util.loadJpegStream)(id, imageData, pageProxy.objs); - break; - case 'Image': - imageData = data[3]; - pageProxy.objs.resolve(id, imageData); - var MAX_IMAGE_SIZE_TO_STORE = 8000000; - if (imageData && 'data' in imageData && imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) { - pageProxy.cleanupAfterRender = true; - } - break; - default: - throw new Error('Got unknown object type ' + type); - } - }, this); - messageHandler.on('DocProgress', function transportDocProgress(data) { - if (this.destroyed) { - return; - } - var loadingTask = this.loadingTask; - if (loadingTask.onProgress) { - loadingTask.onProgress({ - loaded: data.loaded, - total: data.total - }); - } - }, this); - messageHandler.on('PageError', function transportError(data) { - if (this.destroyed) { - return; - } - var page = this.pageCache[data.pageNum - 1]; - var intentState = page.intentStates[data.intent]; - if (intentState.displayReadyCapability) { - intentState.displayReadyCapability.reject(data.error); - } else { - throw new Error(data.error); - } - if (intentState.operatorList) { - intentState.operatorList.lastChunk = true; - for (var i = 0; i < intentState.renderTasks.length; i++) { - intentState.renderTasks[i].operatorListChanged(); - } - } - }, this); - messageHandler.on('UnsupportedFeature', function transportUnsupportedFeature(data) { - if (this.destroyed) { - return; - } - var featureId = data.featureId; - var loadingTask = this.loadingTask; - if (loadingTask.onUnsupportedFeature) { - loadingTask.onUnsupportedFeature(featureId); - } - _UnsupportedManager.notify(featureId); - }, this); - messageHandler.on('JpegDecode', function (data) { - if (this.destroyed) { - return Promise.reject(new Error('Worker was destroyed')); - } - if (typeof document === 'undefined') { - return Promise.reject(new Error('"document" is not defined.')); - } - var imageUrl = data[0]; - var components = data[1]; - if (components !== 3 && components !== 1) { - return Promise.reject(new Error('Only 3 components or 1 component can be returned')); - } - return new Promise(function (resolve, reject) { - var img = new Image(); - img.onload = function () { - var width = img.width; - var height = img.height; - var size = width * height; - var rgbaLength = size * 4; - var buf = new Uint8Array(size * components); - var tmpCanvas = document.createElement('canvas'); - tmpCanvas.width = width; - tmpCanvas.height = height; - var tmpCtx = tmpCanvas.getContext('2d'); - tmpCtx.drawImage(img, 0, 0); - var data = tmpCtx.getImageData(0, 0, width, height).data; - var i, j; - if (components === 3) { - for (i = 0, j = 0; i < rgbaLength; i += 4, j += 3) { - buf[j] = data[i]; - buf[j + 1] = data[i + 1]; - buf[j + 2] = data[i + 2]; - } - } else if (components === 1) { - for (i = 0, j = 0; i < rgbaLength; i += 4, j++) { - buf[j] = data[i]; - } - } - resolve({ - data: buf, - width: width, - height: height - }); - }; - img.onerror = function () { - reject(new Error('JpegDecode failed to load image')); - }; - img.src = imageUrl; - }); - }, this); - messageHandler.on('FetchBuiltInCMap', function (data) { - if (this.destroyed) { - return Promise.reject(new Error('Worker was destroyed')); - } - return this.CMapReaderFactory.fetch({ name: data.name }); - }, this); - }, - getData: function WorkerTransport_getData() { - return this.messageHandler.sendWithPromise('GetData', null); - }, - getPage: function WorkerTransport_getPage(pageNumber, capability) { - var _this13 = this; - - if (!(0, _util.isInt)(pageNumber) || pageNumber <= 0 || pageNumber > this.numPages) { - return Promise.reject(new Error('Invalid page request')); - } - var pageIndex = pageNumber - 1; - if (pageIndex in this.pagePromises) { - return this.pagePromises[pageIndex]; - } - var promise = this.messageHandler.sendWithPromise('GetPage', { pageIndex: pageIndex }).then(function (pageInfo) { - if (_this13.destroyed) { - throw new Error('Transport destroyed'); - } - var page = new PDFPageProxy(pageIndex, pageInfo, _this13); - _this13.pageCache[pageIndex] = page; - return page; - }); - this.pagePromises[pageIndex] = promise; - return promise; - }, - getPageIndex: function WorkerTransport_getPageIndexByRef(ref) { - return this.messageHandler.sendWithPromise('GetPageIndex', { ref: ref }).catch(function (reason) { - return Promise.reject(new Error(reason)); - }); - }, - getAnnotations: function WorkerTransport_getAnnotations(pageIndex, intent) { - return this.messageHandler.sendWithPromise('GetAnnotations', { - pageIndex: pageIndex, - intent: intent - }); - }, - getDestinations: function WorkerTransport_getDestinations() { - return this.messageHandler.sendWithPromise('GetDestinations', null); - }, - getDestination: function WorkerTransport_getDestination(id) { - return this.messageHandler.sendWithPromise('GetDestination', { id: id }); - }, - getPageLabels: function WorkerTransport_getPageLabels() { - return this.messageHandler.sendWithPromise('GetPageLabels', null); - }, - getPageMode: function getPageMode() { - return this.messageHandler.sendWithPromise('GetPageMode', null); - }, - - getAttachments: function WorkerTransport_getAttachments() { - return this.messageHandler.sendWithPromise('GetAttachments', null); - }, - getJavaScript: function WorkerTransport_getJavaScript() { - return this.messageHandler.sendWithPromise('GetJavaScript', null); - }, - getOutline: function WorkerTransport_getOutline() { - return this.messageHandler.sendWithPromise('GetOutline', null); - }, - getMetadata: function WorkerTransport_getMetadata() { - return this.messageHandler.sendWithPromise('GetMetadata', null).then(function transportMetadata(results) { - return { - info: results[0], - metadata: results[1] ? new _metadata.Metadata(results[1]) : null - }; - }); - }, - getStats: function WorkerTransport_getStats() { - return this.messageHandler.sendWithPromise('GetStats', null); - }, - startCleanup: function WorkerTransport_startCleanup() { - var _this14 = this; - - this.messageHandler.sendWithPromise('Cleanup', null).then(function () { - for (var i = 0, ii = _this14.pageCache.length; i < ii; i++) { - var page = _this14.pageCache[i]; - if (page) { - page.cleanup(); - } - } - _this14.commonObjs.clear(); - _this14.fontLoader.clear(); - }); - } - }; - return WorkerTransport; -}(); -var PDFObjects = function PDFObjectsClosure() { - function PDFObjects() { - this.objs = Object.create(null); - } - PDFObjects.prototype = { - ensureObj: function PDFObjects_ensureObj(objId) { - if (this.objs[objId]) { - return this.objs[objId]; - } - var obj = { - capability: (0, _util.createPromiseCapability)(), - data: null, - resolved: false - }; - this.objs[objId] = obj; - return obj; - }, - get: function PDFObjects_get(objId, callback) { - if (callback) { - this.ensureObj(objId).capability.promise.then(callback); - return null; - } - var obj = this.objs[objId]; - if (!obj || !obj.resolved) { - throw new Error('Requesting object that isn\'t resolved yet ' + objId); - } - return obj.data; - }, - resolve: function PDFObjects_resolve(objId, data) { - var obj = this.ensureObj(objId); - obj.resolved = true; - obj.data = data; - obj.capability.resolve(data); - }, - isResolved: function PDFObjects_isResolved(objId) { - var objs = this.objs; - if (!objs[objId]) { - return false; - } - return objs[objId].resolved; - }, - hasData: function PDFObjects_hasData(objId) { - return this.isResolved(objId); - }, - getData: function PDFObjects_getData(objId) { - var objs = this.objs; - if (!objs[objId] || !objs[objId].resolved) { - return null; - } - return objs[objId].data; - }, - clear: function PDFObjects_clear() { - this.objs = Object.create(null); - } - }; - return PDFObjects; -}(); -var RenderTask = function RenderTaskClosure() { - function RenderTask(internalRenderTask) { - this._internalRenderTask = internalRenderTask; - this.onContinue = null; - } - RenderTask.prototype = { - get promise() { - return this._internalRenderTask.capability.promise; - }, - cancel: function RenderTask_cancel() { - this._internalRenderTask.cancel(); - }, - then: function RenderTask_then(onFulfilled, onRejected) { - return this.promise.then.apply(this.promise, arguments); - } - }; - return RenderTask; -}(); -var InternalRenderTask = function InternalRenderTaskClosure() { - var canvasInRendering = new WeakMap(); - function InternalRenderTask(callback, params, objs, commonObjs, operatorList, pageNumber, canvasFactory) { - this.callback = callback; - this.params = params; - this.objs = objs; - this.commonObjs = commonObjs; - this.operatorListIdx = null; - this.operatorList = operatorList; - this.pageNumber = pageNumber; - this.canvasFactory = canvasFactory; - this.running = false; - this.graphicsReadyCallback = null; - this.graphicsReady = false; - this.useRequestAnimationFrame = false; - this.cancelled = false; - this.capability = (0, _util.createPromiseCapability)(); - this.task = new RenderTask(this); - this._continueBound = this._continue.bind(this); - this._scheduleNextBound = this._scheduleNext.bind(this); - this._nextBound = this._next.bind(this); - this._canvas = params.canvasContext.canvas; - } - InternalRenderTask.prototype = { - initializeGraphics: function InternalRenderTask_initializeGraphics(transparency) { - if (this._canvas) { - if (canvasInRendering.has(this._canvas)) { - throw new Error('Cannot use the same canvas during multiple render() operations. ' + 'Use different canvas or ensure previous operations were ' + 'cancelled or completed.'); - } - canvasInRendering.set(this._canvas, this); - } - if (this.cancelled) { - return; - } - if ((0, _dom_utils.getDefaultSetting)('pdfBug') && _util.globalScope.StepperManager && _util.globalScope.StepperManager.enabled) { - this.stepper = _util.globalScope.StepperManager.create(this.pageNumber - 1); - this.stepper.init(this.operatorList); - this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint(); - } - var params = this.params; - this.gfx = new _canvas.CanvasGraphics(params.canvasContext, this.commonObjs, this.objs, this.canvasFactory, params.imageLayer); - this.gfx.beginDrawing({ - transform: params.transform, - viewport: params.viewport, - transparency: transparency, - background: params.background - }); - this.operatorListIdx = 0; - this.graphicsReady = true; - if (this.graphicsReadyCallback) { - this.graphicsReadyCallback(); - } - }, - cancel: function InternalRenderTask_cancel() { - this.running = false; - this.cancelled = true; - if (this._canvas) { - canvasInRendering.delete(this._canvas); - } - if ((0, _dom_utils.getDefaultSetting)('pdfjsNext')) { - this.callback(new _dom_utils.RenderingCancelledException('Rendering cancelled, page ' + this.pageNumber, 'canvas')); - } else { - this.callback('cancelled'); - } - }, - operatorListChanged: function InternalRenderTask_operatorListChanged() { - if (!this.graphicsReady) { - if (!this.graphicsReadyCallback) { - this.graphicsReadyCallback = this._continueBound; - } - return; - } - if (this.stepper) { - this.stepper.updateOperatorList(this.operatorList); - } - if (this.running) { - return; - } - this._continue(); - }, - _continue: function InternalRenderTask__continue() { - this.running = true; - if (this.cancelled) { - return; - } - if (this.task.onContinue) { - this.task.onContinue(this._scheduleNextBound); - } else { - this._scheduleNext(); - } - }, - _scheduleNext: function InternalRenderTask__scheduleNext() { - if (this.useRequestAnimationFrame && typeof window !== 'undefined') { - window.requestAnimationFrame(this._nextBound); - } else { - Promise.resolve(undefined).then(this._nextBound); - } - }, - _next: function InternalRenderTask__next() { - if (this.cancelled) { - return; - } - this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper); - if (this.operatorListIdx === this.operatorList.argsArray.length) { - this.running = false; - if (this.operatorList.lastChunk) { - this.gfx.endDrawing(); - if (this._canvas) { - canvasInRendering.delete(this._canvas); - } - this.callback(); - } - } - } - }; - return InternalRenderTask; -}(); -var _UnsupportedManager = function UnsupportedManagerClosure() { - var listeners = []; - return { - listen: function listen(cb) { - (0, _util.deprecated)('Global UnsupportedManager.listen is used: ' + ' use PDFDocumentLoadingTask.onUnsupportedFeature instead'); - listeners.push(cb); - }, - notify: function notify(featureId) { - for (var i = 0, ii = listeners.length; i < ii; i++) { - listeners[i](featureId); - } - } - }; -}(); -var version, build; -{ - exports.version = version = '1.9.426'; - exports.build = build = '2558a58d'; -} -exports.getDocument = getDocument; -exports.LoopbackPort = LoopbackPort; -exports.PDFDataRangeTransport = PDFDataRangeTransport; -exports.PDFWorker = PDFWorker; -exports.PDFDocumentProxy = PDFDocumentProxy; -exports.PDFPageProxy = PDFPageProxy; -exports.setPDFNetworkStreamClass = setPDFNetworkStreamClass; -exports._UnsupportedManager = _UnsupportedManager; -exports.version = version; -exports.build = build; - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.AnnotationLayer = undefined; - -var _dom_utils = __w_pdfjs_require__(1); - -var _util = __w_pdfjs_require__(0); - -function AnnotationElementFactory() {} -AnnotationElementFactory.prototype = { - create: function AnnotationElementFactory_create(parameters) { - var subtype = parameters.data.annotationType; - switch (subtype) { - case _util.AnnotationType.LINK: - return new LinkAnnotationElement(parameters); - case _util.AnnotationType.TEXT: - return new TextAnnotationElement(parameters); - case _util.AnnotationType.WIDGET: - var fieldType = parameters.data.fieldType; - switch (fieldType) { - case 'Tx': - return new TextWidgetAnnotationElement(parameters); - case 'Btn': - if (parameters.data.radioButton) { - return new RadioButtonWidgetAnnotationElement(parameters); - } else if (parameters.data.checkBox) { - return new CheckboxWidgetAnnotationElement(parameters); - } - (0, _util.warn)('Unimplemented button widget annotation: pushbutton'); - break; - case 'Ch': - return new ChoiceWidgetAnnotationElement(parameters); - } - return new WidgetAnnotationElement(parameters); - case _util.AnnotationType.POPUP: - return new PopupAnnotationElement(parameters); - case _util.AnnotationType.LINE: - return new LineAnnotationElement(parameters); - case _util.AnnotationType.HIGHLIGHT: - return new HighlightAnnotationElement(parameters); - case _util.AnnotationType.UNDERLINE: - return new UnderlineAnnotationElement(parameters); - case _util.AnnotationType.SQUIGGLY: - return new SquigglyAnnotationElement(parameters); - case _util.AnnotationType.STRIKEOUT: - return new StrikeOutAnnotationElement(parameters); - case _util.AnnotationType.FILEATTACHMENT: - return new FileAttachmentAnnotationElement(parameters); - default: - return new AnnotationElement(parameters); - } - } -}; -var AnnotationElement = function AnnotationElementClosure() { - function AnnotationElement(parameters, isRenderable, ignoreBorder) { - this.isRenderable = isRenderable || false; - this.data = parameters.data; - this.layer = parameters.layer; - this.page = parameters.page; - this.viewport = parameters.viewport; - this.linkService = parameters.linkService; - this.downloadManager = parameters.downloadManager; - this.imageResourcesPath = parameters.imageResourcesPath; - this.renderInteractiveForms = parameters.renderInteractiveForms; - if (isRenderable) { - this.container = this._createContainer(ignoreBorder); - } - } - AnnotationElement.prototype = { - _createContainer: function AnnotationElement_createContainer(ignoreBorder) { - var data = this.data, - page = this.page, - viewport = this.viewport; - var container = document.createElement('section'); - var width = data.rect[2] - data.rect[0]; - var height = data.rect[3] - data.rect[1]; - container.setAttribute('data-annotation-id', data.id); - var 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]]); - _dom_utils.CustomStyle.setProp('transform', container, 'matrix(' + viewport.transform.join(',') + ')'); - _dom_utils.CustomStyle.setProp('transformOrigin', container, -rect[0] + 'px ' + -rect[1] + 'px'); - if (!ignoreBorder && data.borderStyle.width > 0) { - container.style.borderWidth = data.borderStyle.width + 'px'; - if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) { - width = width - 2 * data.borderStyle.width; - height = height - 2 * data.borderStyle.width; - } - var horizontalRadius = data.borderStyle.horizontalCornerRadius; - var verticalRadius = data.borderStyle.verticalCornerRadius; - if (horizontalRadius > 0 || verticalRadius > 0) { - var radius = horizontalRadius + 'px / ' + verticalRadius + 'px'; - _dom_utils.CustomStyle.setProp('borderRadius', container, radius); - } - switch (data.borderStyle.style) { - case _util.AnnotationBorderStyleType.SOLID: - container.style.borderStyle = 'solid'; - break; - case _util.AnnotationBorderStyleType.DASHED: - container.style.borderStyle = 'dashed'; - break; - case _util.AnnotationBorderStyleType.BEVELED: - (0, _util.warn)('Unimplemented border style: beveled'); - break; - case _util.AnnotationBorderStyleType.INSET: - (0, _util.warn)('Unimplemented border style: inset'); - break; - case _util.AnnotationBorderStyleType.UNDERLINE: - container.style.borderBottomStyle = 'solid'; - break; - default: - break; - } - if (data.color) { - container.style.borderColor = _util.Util.makeCssRgb(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0); - } else { - container.style.borderWidth = 0; - } - } - container.style.left = rect[0] + 'px'; - container.style.top = rect[1] + 'px'; - container.style.width = width + 'px'; - container.style.height = height + 'px'; - return container; - }, - _createPopup: function AnnotationElement_createPopup(container, trigger, data) { - if (!trigger) { - trigger = document.createElement('div'); - trigger.style.height = container.style.height; - trigger.style.width = container.style.width; - container.appendChild(trigger); - } - var popupElement = new PopupElement({ - container: container, - trigger: trigger, - color: data.color, - title: data.title, - contents: data.contents, - hideWrapper: true - }); - var popup = popupElement.render(); - popup.style.left = container.style.width; - container.appendChild(popup); - }, - render: function AnnotationElement_render() { - throw new Error('Abstract method AnnotationElement.render called'); - } - }; - return AnnotationElement; -}(); -var LinkAnnotationElement = function LinkAnnotationElementClosure() { - function LinkAnnotationElement(parameters) { - AnnotationElement.call(this, parameters, true); - } - _util.Util.inherit(LinkAnnotationElement, AnnotationElement, { - render: function LinkAnnotationElement_render() { - this.container.className = 'linkAnnotation'; - var link = document.createElement('a'); - (0, _dom_utils.addLinkAttributes)(link, { - url: this.data.url, - target: this.data.newWindow ? _dom_utils.LinkTarget.BLANK : undefined - }); - if (!this.data.url) { - if (this.data.action) { - this._bindNamedAction(link, this.data.action); - } else { - this._bindLink(link, this.data.dest); - } - } - this.container.appendChild(link); - return this.container; - }, - _bindLink: function _bindLink(link, destination) { - var _this = this; - - link.href = this.linkService.getDestinationHash(destination); - link.onclick = function () { - if (destination) { - _this.linkService.navigateTo(destination); - } - return false; - }; - if (destination) { - link.className = 'internalLink'; - } - }, - _bindNamedAction: function _bindNamedAction(link, action) { - var _this2 = this; - - link.href = this.linkService.getAnchorUrl(''); - link.onclick = function () { - _this2.linkService.executeNamedAction(action); - return false; - }; - link.className = 'internalLink'; - } - }); - return LinkAnnotationElement; -}(); -var TextAnnotationElement = function TextAnnotationElementClosure() { - function TextAnnotationElement(parameters) { - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - AnnotationElement.call(this, parameters, isRenderable); - } - _util.Util.inherit(TextAnnotationElement, AnnotationElement, { - render: function TextAnnotationElement_render() { - this.container.className = 'textAnnotation'; - var image = document.createElement('img'); - image.style.height = this.container.style.height; - image.style.width = this.container.style.width; - image.src = this.imageResourcesPath + 'annotation-' + this.data.name.toLowerCase() + '.svg'; - image.alt = '[{{type}} Annotation]'; - image.dataset.l10nId = 'text_annotation_type'; - image.dataset.l10nArgs = JSON.stringify({ type: this.data.name }); - if (!this.data.hasPopup) { - this._createPopup(this.container, image, this.data); - } - this.container.appendChild(image); - return this.container; - } - }); - return TextAnnotationElement; -}(); -var WidgetAnnotationElement = function WidgetAnnotationElementClosure() { - function WidgetAnnotationElement(parameters, isRenderable) { - AnnotationElement.call(this, parameters, isRenderable); - } - _util.Util.inherit(WidgetAnnotationElement, AnnotationElement, { - render: function WidgetAnnotationElement_render() { - return this.container; - } - }); - return WidgetAnnotationElement; -}(); -var TextWidgetAnnotationElement = function TextWidgetAnnotationElementClosure() { - var TEXT_ALIGNMENT = ['left', 'center', 'right']; - function TextWidgetAnnotationElement(parameters) { - var isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue; - WidgetAnnotationElement.call(this, parameters, isRenderable); - } - _util.Util.inherit(TextWidgetAnnotationElement, WidgetAnnotationElement, { - render: function TextWidgetAnnotationElement_render() { - this.container.className = 'textWidgetAnnotation'; - var element = null; - if (this.renderInteractiveForms) { - if (this.data.multiLine) { - element = document.createElement('textarea'); - element.textContent = this.data.fieldValue; - } else { - element = document.createElement('input'); - element.type = 'text'; - element.setAttribute('value', this.data.fieldValue); - } - element.disabled = this.data.readOnly; - if (this.data.maxLen !== null) { - element.maxLength = this.data.maxLen; - } - if (this.data.comb) { - var fieldWidth = this.data.rect[2] - this.data.rect[0]; - var combWidth = fieldWidth / this.data.maxLen; - element.classList.add('comb'); - element.style.letterSpacing = 'calc(' + combWidth + 'px - 1ch)'; - } - } else { - element = document.createElement('div'); - element.textContent = this.data.fieldValue; - element.style.verticalAlign = 'middle'; - element.style.display = 'table-cell'; - var font = null; - if (this.data.fontRefName) { - font = this.page.commonObjs.getData(this.data.fontRefName); - } - this._setTextStyle(element, font); - } - if (this.data.textAlignment !== null) { - element.style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment]; - } - this.container.appendChild(element); - return this.container; - }, - _setTextStyle: function TextWidgetAnnotationElement_setTextStyle(element, font) { - var style = element.style; - style.fontSize = this.data.fontSize + 'px'; - style.direction = this.data.fontDirection < 0 ? 'rtl' : 'ltr'; - if (!font) { - return; - } - style.fontWeight = font.black ? font.bold ? '900' : 'bold' : font.bold ? 'bold' : 'normal'; - style.fontStyle = font.italic ? 'italic' : 'normal'; - var fontFamily = font.loadedName ? '"' + font.loadedName + '", ' : ''; - var fallbackName = font.fallbackName || 'Helvetica, sans-serif'; - style.fontFamily = fontFamily + fallbackName; - } - }); - return TextWidgetAnnotationElement; -}(); -var CheckboxWidgetAnnotationElement = function CheckboxWidgetAnnotationElementClosure() { - function CheckboxWidgetAnnotationElement(parameters) { - WidgetAnnotationElement.call(this, parameters, parameters.renderInteractiveForms); - } - _util.Util.inherit(CheckboxWidgetAnnotationElement, WidgetAnnotationElement, { - render: function CheckboxWidgetAnnotationElement_render() { - this.container.className = 'buttonWidgetAnnotation checkBox'; - var element = document.createElement('input'); - element.disabled = this.data.readOnly; - element.type = 'checkbox'; - if (this.data.fieldValue && this.data.fieldValue !== 'Off') { - element.setAttribute('checked', true); - } - this.container.appendChild(element); - return this.container; - } - }); - return CheckboxWidgetAnnotationElement; -}(); -var RadioButtonWidgetAnnotationElement = function RadioButtonWidgetAnnotationElementClosure() { - function RadioButtonWidgetAnnotationElement(parameters) { - WidgetAnnotationElement.call(this, parameters, parameters.renderInteractiveForms); - } - _util.Util.inherit(RadioButtonWidgetAnnotationElement, WidgetAnnotationElement, { - render: function RadioButtonWidgetAnnotationElement_render() { - this.container.className = 'buttonWidgetAnnotation radioButton'; - var element = document.createElement('input'); - element.disabled = this.data.readOnly; - element.type = 'radio'; - element.name = this.data.fieldName; - if (this.data.fieldValue === this.data.buttonValue) { - element.setAttribute('checked', true); - } - this.container.appendChild(element); - return this.container; - } - }); - return RadioButtonWidgetAnnotationElement; -}(); -var ChoiceWidgetAnnotationElement = function ChoiceWidgetAnnotationElementClosure() { - function ChoiceWidgetAnnotationElement(parameters) { - WidgetAnnotationElement.call(this, parameters, parameters.renderInteractiveForms); - } - _util.Util.inherit(ChoiceWidgetAnnotationElement, WidgetAnnotationElement, { - render: function ChoiceWidgetAnnotationElement_render() { - this.container.className = 'choiceWidgetAnnotation'; - var selectElement = document.createElement('select'); - selectElement.disabled = this.data.readOnly; - if (!this.data.combo) { - selectElement.size = this.data.options.length; - if (this.data.multiSelect) { - selectElement.multiple = true; - } - } - for (var i = 0, ii = this.data.options.length; i < ii; i++) { - var option = this.data.options[i]; - var optionElement = document.createElement('option'); - optionElement.textContent = option.displayValue; - optionElement.value = option.exportValue; - if (this.data.fieldValue.indexOf(option.displayValue) >= 0) { - optionElement.setAttribute('selected', true); - } - selectElement.appendChild(optionElement); - } - this.container.appendChild(selectElement); - return this.container; - } - }); - return ChoiceWidgetAnnotationElement; -}(); -var PopupAnnotationElement = function PopupAnnotationElementClosure() { - var IGNORE_TYPES = ['Line']; - function PopupAnnotationElement(parameters) { - var isRenderable = !!(parameters.data.title || parameters.data.contents); - AnnotationElement.call(this, parameters, isRenderable); - } - _util.Util.inherit(PopupAnnotationElement, AnnotationElement, { - render: function PopupAnnotationElement_render() { - this.container.className = 'popupAnnotation'; - if (IGNORE_TYPES.indexOf(this.data.parentType) >= 0) { - return this.container; - } - var selector = '[data-annotation-id="' + this.data.parentId + '"]'; - var parentElement = this.layer.querySelector(selector); - if (!parentElement) { - return this.container; - } - var popup = new PopupElement({ - container: this.container, - trigger: parentElement, - color: this.data.color, - title: this.data.title, - contents: this.data.contents - }); - var parentLeft = parseFloat(parentElement.style.left); - var parentWidth = parseFloat(parentElement.style.width); - _dom_utils.CustomStyle.setProp('transformOrigin', this.container, -(parentLeft + parentWidth) + 'px -' + parentElement.style.top); - this.container.style.left = parentLeft + parentWidth + 'px'; - this.container.appendChild(popup.render()); - return this.container; - } - }); - return PopupAnnotationElement; -}(); -var PopupElement = function PopupElementClosure() { - var BACKGROUND_ENLIGHT = 0.7; - function PopupElement(parameters) { - this.container = parameters.container; - this.trigger = parameters.trigger; - this.color = parameters.color; - this.title = parameters.title; - this.contents = parameters.contents; - this.hideWrapper = parameters.hideWrapper || false; - this.pinned = false; - } - PopupElement.prototype = { - render: function PopupElement_render() { - var wrapper = document.createElement('div'); - wrapper.className = 'popupWrapper'; - this.hideElement = this.hideWrapper ? wrapper : this.container; - this.hideElement.setAttribute('hidden', true); - var popup = document.createElement('div'); - popup.className = 'popup'; - var color = this.color; - if (color) { - var r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0]; - var g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1]; - var b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2]; - popup.style.backgroundColor = _util.Util.makeCssRgb(r | 0, g | 0, b | 0); - } - var contents = this._formatContents(this.contents); - var title = document.createElement('h1'); - title.textContent = this.title; - this.trigger.addEventListener('click', this._toggle.bind(this)); - this.trigger.addEventListener('mouseover', this._show.bind(this, false)); - this.trigger.addEventListener('mouseout', this._hide.bind(this, false)); - popup.addEventListener('click', this._hide.bind(this, true)); - popup.appendChild(title); - popup.appendChild(contents); - wrapper.appendChild(popup); - return wrapper; - }, - _formatContents: function PopupElement_formatContents(contents) { - var p = document.createElement('p'); - var lines = contents.split(/(?:\r\n?|\n)/); - for (var i = 0, ii = lines.length; i < ii; ++i) { - var line = lines[i]; - p.appendChild(document.createTextNode(line)); - if (i < ii - 1) { - p.appendChild(document.createElement('br')); - } - } - return p; - }, - _toggle: function PopupElement_toggle() { - if (this.pinned) { - this._hide(true); - } else { - this._show(true); - } - }, - _show: function PopupElement_show(pin) { - if (pin) { - this.pinned = true; - } - if (this.hideElement.hasAttribute('hidden')) { - this.hideElement.removeAttribute('hidden'); - this.container.style.zIndex += 1; - } - }, - _hide: function PopupElement_hide(unpin) { - if (unpin) { - this.pinned = false; - } - if (!this.hideElement.hasAttribute('hidden') && !this.pinned) { - this.hideElement.setAttribute('hidden', true); - this.container.style.zIndex -= 1; - } - } - }; - return PopupElement; -}(); -var LineAnnotationElement = function LineAnnotationElementClosure() { - var SVG_NS = 'http://www.w3.org/2000/svg'; - function LineAnnotationElement(parameters) { - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - AnnotationElement.call(this, parameters, isRenderable, true); - } - _util.Util.inherit(LineAnnotationElement, AnnotationElement, { - render: function LineAnnotationElement_render() { - this.container.className = 'lineAnnotation'; - var data = this.data; - var width = data.rect[2] - data.rect[0]; - var height = data.rect[3] - data.rect[1]; - var svg = document.createElementNS(SVG_NS, 'svg:svg'); - svg.setAttributeNS(null, 'version', '1.1'); - svg.setAttributeNS(null, 'width', width + 'px'); - svg.setAttributeNS(null, 'height', height + 'px'); - svg.setAttributeNS(null, 'preserveAspectRatio', 'none'); - svg.setAttributeNS(null, 'viewBox', '0 0 ' + width + ' ' + height); - var line = document.createElementNS(SVG_NS, 'svg:line'); - line.setAttributeNS(null, 'x1', data.rect[2] - data.lineCoordinates[0]); - line.setAttributeNS(null, 'y1', data.rect[3] - data.lineCoordinates[1]); - line.setAttributeNS(null, 'x2', data.rect[2] - data.lineCoordinates[2]); - line.setAttributeNS(null, 'y2', data.rect[3] - data.lineCoordinates[3]); - line.setAttributeNS(null, 'stroke-width', data.borderStyle.width); - line.setAttributeNS(null, 'stroke', 'transparent'); - svg.appendChild(line); - this.container.append(svg); - this._createPopup(this.container, line, this.data); - return this.container; - } - }); - return LineAnnotationElement; -}(); -var HighlightAnnotationElement = function HighlightAnnotationElementClosure() { - function HighlightAnnotationElement(parameters) { - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - AnnotationElement.call(this, parameters, isRenderable, true); - } - _util.Util.inherit(HighlightAnnotationElement, AnnotationElement, { - render: function HighlightAnnotationElement_render() { - this.container.className = 'highlightAnnotation'; - if (!this.data.hasPopup) { - this._createPopup(this.container, null, this.data); - } - return this.container; - } - }); - return HighlightAnnotationElement; -}(); -var UnderlineAnnotationElement = function UnderlineAnnotationElementClosure() { - function UnderlineAnnotationElement(parameters) { - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - AnnotationElement.call(this, parameters, isRenderable, true); - } - _util.Util.inherit(UnderlineAnnotationElement, AnnotationElement, { - render: function UnderlineAnnotationElement_render() { - this.container.className = 'underlineAnnotation'; - if (!this.data.hasPopup) { - this._createPopup(this.container, null, this.data); - } - return this.container; - } - }); - return UnderlineAnnotationElement; -}(); -var SquigglyAnnotationElement = function SquigglyAnnotationElementClosure() { - function SquigglyAnnotationElement(parameters) { - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - AnnotationElement.call(this, parameters, isRenderable, true); - } - _util.Util.inherit(SquigglyAnnotationElement, AnnotationElement, { - render: function SquigglyAnnotationElement_render() { - this.container.className = 'squigglyAnnotation'; - if (!this.data.hasPopup) { - this._createPopup(this.container, null, this.data); - } - return this.container; - } - }); - return SquigglyAnnotationElement; -}(); -var StrikeOutAnnotationElement = function StrikeOutAnnotationElementClosure() { - function StrikeOutAnnotationElement(parameters) { - var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - AnnotationElement.call(this, parameters, isRenderable, true); - } - _util.Util.inherit(StrikeOutAnnotationElement, AnnotationElement, { - render: function StrikeOutAnnotationElement_render() { - this.container.className = 'strikeoutAnnotation'; - if (!this.data.hasPopup) { - this._createPopup(this.container, null, this.data); - } - return this.container; - } - }); - return StrikeOutAnnotationElement; -}(); -var FileAttachmentAnnotationElement = function FileAttachmentAnnotationElementClosure() { - function FileAttachmentAnnotationElement(parameters) { - AnnotationElement.call(this, parameters, true); - var file = this.data.file; - this.filename = (0, _dom_utils.getFilenameFromUrl)(file.filename); - this.content = file.content; - this.linkService.onFileAttachmentAnnotation({ - id: (0, _util.stringToPDFString)(file.filename), - filename: file.filename, - content: file.content + 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}`); }); } - _util.Util.inherit(FileAttachmentAnnotationElement, AnnotationElement, { - render: function FileAttachmentAnnotationElement_render() { - this.container.className = 'fileAttachmentAnnotation'; - var trigger = document.createElement('div'); - trigger.style.height = this.container.style.height; - trigger.style.width = this.container.style.width; - trigger.addEventListener('dblclick', this._download.bind(this)); - if (!this.data.hasPopup && (this.data.title || this.data.contents)) { - this._createPopup(this.container, trigger, this.data); - } - this.container.appendChild(trigger); - return this.container; - }, - _download: function FileAttachmentAnnotationElement_download() { - if (!this.downloadManager) { - (0, _util.warn)('Download cannot be started due to unavailable download manager'); - return; - } - this.downloadManager.downloadData(this.content, this.filename, ''); - } - }); - return FileAttachmentAnnotationElement; -}(); -var AnnotationLayer = function AnnotationLayerClosure() { - return { - render: function AnnotationLayer_render(parameters) { - var annotationElementFactory = new AnnotationElementFactory(); - for (var i = 0, ii = parameters.annotations.length; i < ii; i++) { - var data = parameters.annotations[i]; - if (!data) { - continue; - } - var element = annotationElementFactory.create({ - data: data, - layer: parameters.div, - page: parameters.page, - viewport: parameters.viewport, - linkService: parameters.linkService, - downloadManager: parameters.downloadManager, - imageResourcesPath: parameters.imageResourcesPath || (0, _dom_utils.getDefaultSetting)('imageResourcesPath'), - renderInteractiveForms: parameters.renderInteractiveForms || false - }); - if (element.isRenderable) { - parameters.div.appendChild(element.render()); - } - } - }, - update: function AnnotationLayer_update(parameters) { - for (var i = 0, ii = parameters.annotations.length; i < ii; i++) { - var data = parameters.annotations[i]; - var element = parameters.div.querySelector('[data-annotation-id="' + data.id + '"]'); - if (element) { - _dom_utils.CustomStyle.setProp('transform', element, 'matrix(' + parameters.viewport.transform.join(',') + ')'); - } - } - parameters.div.removeAttribute('hidden'); - } - }; -}(); -exports.AnnotationLayer = AnnotationLayer; -/***/ }), -/* 4 */ -/***/ (function(module, exports, __w_pdfjs_require__) { + _fetchData(url, compressionType) { + (0, _util.unreachable)("Abstract method `_fetchData` called."); + } -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.SVGGraphics = undefined; - -var _util = __w_pdfjs_require__(0); - -var SVGGraphics = function SVGGraphics() { - throw new Error('Not implemented: SVGGraphics'); -}; -{ - var SVG_DEFAULTS = { - fontStyle: 'normal', - fontWeight: 'normal', - fillColor: '#000000' - }; - var convertImgDataToPng = function convertImgDataToPngClosure() { - var PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]); - var CHUNK_WRAPPER_SIZE = 12; - var crcTable = new Int32Array(256); - for (var i = 0; i < 256; i++) { - var c = i; - for (var h = 0; h < 8; h++) { - if (c & 1) { - c = 0xedB88320 ^ c >> 1 & 0x7fffffff; - } else { - c = c >> 1 & 0x7fffffff; - } - } - crcTable[i] = c; - } - function crc32(data, start, end) { - var crc = -1; - for (var i = start; i < end; i++) { - var a = (crc ^ data[i]) & 0xff; - var b = crcTable[a]; - crc = crc >>> 8 ^ b; - } - return crc ^ -1; - } - function writePngChunk(type, body, data, offset) { - var p = offset; - var len = body.length; - data[p] = len >> 24 & 0xff; - data[p + 1] = len >> 16 & 0xff; - data[p + 2] = len >> 8 & 0xff; - data[p + 3] = len & 0xff; - p += 4; - data[p] = type.charCodeAt(0) & 0xff; - data[p + 1] = type.charCodeAt(1) & 0xff; - data[p + 2] = type.charCodeAt(2) & 0xff; - data[p + 3] = type.charCodeAt(3) & 0xff; - p += 4; - data.set(body, p); - p += body.length; - var crc = crc32(data, offset + 4, p); - data[p] = crc >> 24 & 0xff; - data[p + 1] = crc >> 16 & 0xff; - data[p + 2] = crc >> 8 & 0xff; - data[p + 3] = crc & 0xff; - } - function adler32(data, start, end) { - var a = 1; - var b = 0; - for (var i = start; i < end; ++i) { - a = (a + (data[i] & 0xff)) % 65521; - b = (b + a) % 65521; - } - return b << 16 | a; - } - function deflateSync(literals) { - if (!(0, _util.isNodeJS)()) { - return deflateSyncUncompressed(literals); - } - try { - var input; - if (parseInt(process.versions.node) >= 8) { - input = literals; - } else { - input = new Buffer(literals); - } - var output = require('zlib').deflateSync(input, { level: 9 }); - return output instanceof Uint8Array ? output : new Uint8Array(output); - } catch (e) { - (0, _util.warn)('Not compressing PNG because zlib.deflateSync is unavailable: ' + e); - } - return deflateSyncUncompressed(literals); - } - function deflateSyncUncompressed(literals) { - var len = literals.length; - var maxBlockLength = 0xFFFF; - var deflateBlocks = Math.ceil(len / maxBlockLength); - var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4); - var pi = 0; - idat[pi++] = 0x78; - idat[pi++] = 0x9c; - var pos = 0; - while (len > maxBlockLength) { - idat[pi++] = 0x00; - idat[pi++] = 0xff; - idat[pi++] = 0xff; - idat[pi++] = 0x00; - idat[pi++] = 0x00; - idat.set(literals.subarray(pos, pos + maxBlockLength), pi); - pi += maxBlockLength; - pos += maxBlockLength; - len -= maxBlockLength; - } - idat[pi++] = 0x01; - idat[pi++] = len & 0xff; - idat[pi++] = len >> 8 & 0xff; - idat[pi++] = ~len & 0xffff & 0xff; - idat[pi++] = (~len & 0xffff) >> 8 & 0xff; - idat.set(literals.subarray(pos), pi); - pi += literals.length - pos; - var adler = adler32(literals, 0, literals.length); - idat[pi++] = adler >> 24 & 0xff; - idat[pi++] = adler >> 16 & 0xff; - idat[pi++] = adler >> 8 & 0xff; - idat[pi++] = adler & 0xff; - return idat; - } - function encode(imgData, kind, forceDataSchema) { - var width = imgData.width; - var height = imgData.height; - var bitDepth, colorType, lineSize; - var bytes = imgData.data; - switch (kind) { - case _util.ImageKind.GRAYSCALE_1BPP: - colorType = 0; - bitDepth = 1; - lineSize = width + 7 >> 3; - break; - case _util.ImageKind.RGB_24BPP: - colorType = 2; - bitDepth = 8; - lineSize = width * 3; - break; - case _util.ImageKind.RGBA_32BPP: - colorType = 6; - bitDepth = 8; - lineSize = width * 4; - break; - default: - throw new Error('invalid format'); - } - var literals = new Uint8Array((1 + lineSize) * height); - var offsetLiterals = 0, - offsetBytes = 0; - var y, i; - for (y = 0; y < height; ++y) { - literals[offsetLiterals++] = 0; - literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals); - offsetBytes += lineSize; - offsetLiterals += lineSize; - } - if (kind === _util.ImageKind.GRAYSCALE_1BPP) { - offsetLiterals = 0; - for (y = 0; y < height; y++) { - offsetLiterals++; - for (i = 0; i < lineSize; i++) { - literals[offsetLiterals++] ^= 0xFF; - } - } - } - var ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]); - var idat = deflateSync(literals); - var pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length; - var data = new Uint8Array(pngLength); - var offset = 0; - data.set(PNG_HEADER, offset); - offset += PNG_HEADER.length; - writePngChunk('IHDR', ihdr, data, offset); - offset += CHUNK_WRAPPER_SIZE + ihdr.length; - 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 function convertImgDataToPng(imgData, forceDataSchema) { - var kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind; - return encode(imgData, kind, forceDataSchema); - }; - }(); - var SVGExtraState = function SVGExtraStateClosure() { - function SVGExtraState() { - this.fontSizeScale = 1; - this.fontWeight = SVG_DEFAULTS.fontWeight; - this.fontSize = 0; - this.textMatrix = _util.IDENTITY_MATRIX; - this.fontMatrix = _util.FONT_IDENTITY_MATRIX; - this.leading = 0; - this.x = 0; - this.y = 0; - this.lineX = 0; - this.lineY = 0; - this.charSpacing = 0; - this.wordSpacing = 0; - this.textHScale = 1; - this.textRise = 0; - this.fillColor = SVG_DEFAULTS.fillColor; - this.strokeColor = '#000000'; - this.fillAlpha = 1; - this.strokeAlpha = 1; - this.lineWidth = 1; - this.lineJoin = ''; - this.lineCap = ''; - this.miterLimit = 0; - this.dashArray = []; - this.dashPhase = 0; - this.dependencies = []; - this.activeClipUrl = null; - this.clipGroup = null; - this.maskId = ''; - } - SVGExtraState.prototype = { - clone: function SVGExtraState_clone() { - return Object.create(this); - }, - setCurrentPoint: function SVGExtraState_setCurrentPoint(x, y) { - this.x = x; - this.y = y; - } - }; - return SVGExtraState; - }(); - exports.SVGGraphics = SVGGraphics = function SVGGraphicsClosure() { - function opListToTree(opList) { - var opTree = []; - var tmp = []; - var opListLen = opList.length; - for (var x = 0; x < opListLen; x++) { - if (opList[x].fn === 'save') { - opTree.push({ - 'fnId': 92, - 'fn': 'group', - 'items': [] - }); - tmp.push(opTree); - opTree = opTree[opTree.length - 1].items; - continue; - } - if (opList[x].fn === 'restore') { - opTree = tmp.pop(); - } else { - opTree.push(opList[x]); - } - } - return opTree; - } - function pf(value) { - if (value === (value | 0)) { - return value.toString(); - } - var s = value.toFixed(10); - var i = s.length - 1; - if (s[i] !== '0') { - return s; - } - do { - i--; - } while (s[i] === '0'); - return s.substr(0, s[i] === '.' ? i : i + 1); - } - function pm(m) { - if (m[4] === 0 && m[5] === 0) { - if (m[1] === 0 && m[2] === 0) { - if (m[0] === 1 && m[3] === 1) { - return ''; - } - return 'scale(' + pf(m[0]) + ' ' + pf(m[3]) + ')'; - } - if (m[0] === m[3] && m[1] === -m[2]) { - var a = Math.acos(m[0]) * 180 / Math.PI; - return 'rotate(' + pf(a) + ')'; - } - } else { - if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) { - return 'translate(' + pf(m[4]) + ' ' + pf(m[5]) + ')'; - } - } - return 'matrix(' + pf(m[0]) + ' ' + pf(m[1]) + ' ' + pf(m[2]) + ' ' + pf(m[3]) + ' ' + pf(m[4]) + ' ' + pf(m[5]) + ')'; - } - function SVGGraphics(commonObjs, objs, forceDataSchema) { - this.current = new SVGExtraState(); - this.transformMatrix = _util.IDENTITY_MATRIX; - this.transformStack = []; - this.extraStack = []; - this.commonObjs = commonObjs; - this.objs = objs; - this.pendingClip = null; - this.pendingEOFill = false; - this.embedFonts = false; - this.embeddedFonts = Object.create(null); - this.cssStyle = null; - this.forceDataSchema = !!forceDataSchema; - } - var NS = 'http://www.w3.org/2000/svg'; - var XML_NS = 'http://www.w3.org/XML/1998/namespace'; - var XLINK_NS = 'http://www.w3.org/1999/xlink'; - var LINE_CAP_STYLES = ['butt', 'round', 'square']; - var LINE_JOIN_STYLES = ['miter', 'round', 'bevel']; - var clipCount = 0; - var maskCount = 0; - SVGGraphics.prototype = { - save: function SVGGraphics_save() { - this.transformStack.push(this.transformMatrix); - var old = this.current; - this.extraStack.push(old); - this.current = old.clone(); - }, - restore: function SVGGraphics_restore() { - this.transformMatrix = this.transformStack.pop(); - this.current = this.extraStack.pop(); - this.pendingClip = null; - this.tgrp = null; - }, - group: function SVGGraphics_group(items) { - this.save(); - this.executeOpTree(items); - this.restore(); - }, - loadDependencies: function SVGGraphics_loadDependencies(operatorList) { - var _this = this; - - var fnArray = operatorList.fnArray; - var fnArrayLen = fnArray.length; - var argsArray = operatorList.argsArray; - for (var i = 0; i < fnArrayLen; i++) { - if (_util.OPS.dependency === fnArray[i]) { - var deps = argsArray[i]; - for (var n = 0, nn = deps.length; n < nn; n++) { - var obj = deps[n]; - var common = obj.substring(0, 2) === 'g_'; - var promise; - if (common) { - promise = new Promise(function (resolve) { - _this.commonObjs.get(obj, resolve); - }); - } else { - promise = new Promise(function (resolve) { - _this.objs.get(obj, resolve); - }); - } - this.current.dependencies.push(promise); - } - } - } - return Promise.all(this.current.dependencies); - }, - transform: function SVGGraphics_transform(a, b, c, d, e, f) { - var transformMatrix = [a, b, c, d, e, f]; - this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix); - this.tgrp = null; - }, - getSVG: function SVGGraphics_getSVG(operatorList, viewport) { - var _this2 = this; - - this.viewport = viewport; - var svgElement = this._initialize(viewport); - return this.loadDependencies(operatorList).then(function () { - _this2.transformMatrix = _util.IDENTITY_MATRIX; - var opTree = _this2.convertOpList(operatorList); - _this2.executeOpTree(opTree); - return svgElement; - }); - }, - convertOpList: function SVGGraphics_convertOpList(operatorList) { - var argsArray = operatorList.argsArray; - var fnArray = operatorList.fnArray; - var fnArrayLen = fnArray.length; - var REVOPS = []; - var opList = []; - for (var op in _util.OPS) { - REVOPS[_util.OPS[op]] = op; - } - for (var x = 0; x < fnArrayLen; x++) { - var fnId = fnArray[x]; - opList.push({ - 'fnId': fnId, - 'fn': REVOPS[fnId], - 'args': argsArray[x] - }); - } - return opListToTree(opList); - }, - executeOpTree: function SVGGraphics_executeOpTree(opTree) { - var opTreeLen = opTree.length; - for (var x = 0; x < opTreeLen; x++) { - var fn = opTree[x].fn; - var fnId = opTree[x].fnId; - var args = opTree[x].args; - switch (fnId | 0) { - case _util.OPS.beginText: - this.beginText(); - break; - case _util.OPS.setLeading: - this.setLeading(args); - break; - case _util.OPS.setLeadingMoveText: - this.setLeadingMoveText(args[0], args[1]); - break; - case _util.OPS.setFont: - this.setFont(args); - break; - case _util.OPS.showText: - this.showText(args[0]); - break; - case _util.OPS.showSpacedText: - this.showText(args[0]); - break; - case _util.OPS.endText: - this.endText(); - break; - case _util.OPS.moveText: - this.moveText(args[0], args[1]); - break; - case _util.OPS.setCharSpacing: - this.setCharSpacing(args[0]); - break; - case _util.OPS.setWordSpacing: - this.setWordSpacing(args[0]); - break; - case _util.OPS.setHScale: - this.setHScale(args[0]); - break; - case _util.OPS.setTextMatrix: - this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); - break; - case _util.OPS.setLineWidth: - this.setLineWidth(args[0]); - break; - case _util.OPS.setLineJoin: - this.setLineJoin(args[0]); - break; - case _util.OPS.setLineCap: - this.setLineCap(args[0]); - break; - case _util.OPS.setMiterLimit: - this.setMiterLimit(args[0]); - break; - case _util.OPS.setFillRGBColor: - this.setFillRGBColor(args[0], args[1], args[2]); - break; - case _util.OPS.setStrokeRGBColor: - this.setStrokeRGBColor(args[0], args[1], args[2]); - break; - case _util.OPS.setDash: - this.setDash(args[0], args[1]); - break; - case _util.OPS.setGState: - this.setGState(args[0]); - break; - case _util.OPS.fill: - this.fill(); - break; - case _util.OPS.eoFill: - this.eoFill(); - break; - case _util.OPS.stroke: - this.stroke(); - break; - case _util.OPS.fillStroke: - this.fillStroke(); - break; - case _util.OPS.eoFillStroke: - this.eoFillStroke(); - break; - case _util.OPS.clip: - this.clip('nonzero'); - break; - case _util.OPS.eoClip: - this.clip('evenodd'); - break; - case _util.OPS.paintSolidColorImageMask: - this.paintSolidColorImageMask(); - break; - case _util.OPS.paintJpegXObject: - this.paintJpegXObject(args[0], args[1], args[2]); - break; - case _util.OPS.paintImageXObject: - this.paintImageXObject(args[0]); - break; - case _util.OPS.paintInlineImageXObject: - this.paintInlineImageXObject(args[0]); - break; - case _util.OPS.paintImageMaskXObject: - this.paintImageMaskXObject(args[0]); - break; - case _util.OPS.paintFormXObjectBegin: - this.paintFormXObjectBegin(args[0], args[1]); - break; - case _util.OPS.paintFormXObjectEnd: - this.paintFormXObjectEnd(); - break; - case _util.OPS.closePath: - this.closePath(); - break; - case _util.OPS.closeStroke: - this.closeStroke(); - break; - case _util.OPS.closeFillStroke: - this.closeFillStroke(); - break; - case _util.OPS.nextLine: - this.nextLine(); - break; - case _util.OPS.transform: - this.transform(args[0], args[1], args[2], args[3], args[4], args[5]); - break; - case _util.OPS.constructPath: - this.constructPath(args[0], args[1]); - break; - case _util.OPS.endPath: - this.endPath(); - break; - case 92: - this.group(opTree[x].items); - break; - default: - (0, _util.warn)('Unimplemented operator ' + fn); - break; - } - } - }, - setWordSpacing: function SVGGraphics_setWordSpacing(wordSpacing) { - this.current.wordSpacing = wordSpacing; - }, - setCharSpacing: function SVGGraphics_setCharSpacing(charSpacing) { - this.current.charSpacing = charSpacing; - }, - nextLine: function SVGGraphics_nextLine() { - this.moveText(0, this.current.leading); - }, - setTextMatrix: function SVGGraphics_setTextMatrix(a, b, c, d, e, f) { - var current = this.current; - this.current.textMatrix = this.current.lineMatrix = [a, b, c, d, e, f]; - this.current.x = this.current.lineX = 0; - this.current.y = this.current.lineY = 0; - current.xcoords = []; - current.tspan = document.createElementNS(NS, 'svg:tspan'); - current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); - current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - current.txtElement = document.createElementNS(NS, 'svg:text'); - current.txtElement.appendChild(current.tspan); - }, - beginText: function SVGGraphics_beginText() { - this.current.x = this.current.lineX = 0; - this.current.y = this.current.lineY = 0; - this.current.textMatrix = _util.IDENTITY_MATRIX; - this.current.lineMatrix = _util.IDENTITY_MATRIX; - this.current.tspan = document.createElementNS(NS, 'svg:tspan'); - this.current.txtElement = document.createElementNS(NS, 'svg:text'); - this.current.txtgrp = document.createElementNS(NS, 'svg:g'); - this.current.xcoords = []; - }, - moveText: function SVGGraphics_moveText(x, y) { - var current = this.current; - this.current.x = this.current.lineX += x; - this.current.y = this.current.lineY += y; - current.xcoords = []; - current.tspan = document.createElementNS(NS, 'svg:tspan'); - current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); - current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - }, - showText: function SVGGraphics_showText(glyphs) { - var current = this.current; - var font = current.font; - var fontSize = current.fontSize; - if (fontSize === 0) { - return; - } - var charSpacing = current.charSpacing; - var wordSpacing = current.wordSpacing; - var fontDirection = current.fontDirection; - var textHScale = current.textHScale * fontDirection; - var glyphsLength = glyphs.length; - var vertical = font.vertical; - var widthAdvanceScale = fontSize * current.fontMatrix[0]; - var x = 0, - i; - for (i = 0; i < glyphsLength; ++i) { - var glyph = glyphs[i]; - if (glyph === null) { - x += fontDirection * wordSpacing; - continue; - } else if ((0, _util.isNum)(glyph)) { - x += -glyph * fontSize * 0.001; - continue; - } - current.xcoords.push(current.x + x * textHScale); - var width = glyph.width; - var character = glyph.fontChar; - var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; - var charWidth = width * widthAdvanceScale + spacing * fontDirection; - x += charWidth; - current.tspan.textContent += character; - } - if (vertical) { - current.y -= x * textHScale; - } else { - current.x += x * textHScale; - } - current.tspan.setAttributeNS(null, 'x', current.xcoords.map(pf).join(' ')); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); - current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); - if (current.fontStyle !== SVG_DEFAULTS.fontStyle) { - current.tspan.setAttributeNS(null, 'font-style', current.fontStyle); - } - if (current.fontWeight !== SVG_DEFAULTS.fontWeight) { - current.tspan.setAttributeNS(null, 'font-weight', current.fontWeight); - } - if (current.fillColor !== SVG_DEFAULTS.fillColor) { - current.tspan.setAttributeNS(null, 'fill', current.fillColor); - } - current.txtElement.setAttributeNS(null, 'transform', pm(current.textMatrix) + ' scale(1, -1)'); - current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve'); - current.txtElement.appendChild(current.tspan); - current.txtgrp.appendChild(current.txtElement); - this._ensureTransformGroup().appendChild(current.txtElement); - }, - setLeadingMoveText: function SVGGraphics_setLeadingMoveText(x, y) { - this.setLeading(-y); - this.moveText(x, y); - }, - addFontStyle: function SVGGraphics_addFontStyle(fontObj) { - if (!this.cssStyle) { - this.cssStyle = document.createElementNS(NS, 'svg:style'); - this.cssStyle.setAttributeNS(null, 'type', 'text/css'); - this.defs.appendChild(this.cssStyle); - } - var url = (0, _util.createObjectURL)(fontObj.data, fontObj.mimetype, this.forceDataSchema); - this.cssStyle.textContent += '@font-face { font-family: "' + fontObj.loadedName + '";' + ' src: url(' + url + '); }\n'; - }, - setFont: function SVGGraphics_setFont(details) { - var current = this.current; - var fontObj = this.commonObjs.get(details[0]); - var size = details[1]; - this.current.font = fontObj; - if (this.embedFonts && fontObj.data && !this.embeddedFonts[fontObj.loadedName]) { - this.addFontStyle(fontObj); - this.embeddedFonts[fontObj.loadedName] = fontObj; - } - current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX; - var bold = fontObj.black ? fontObj.bold ? 'bolder' : 'bold' : fontObj.bold ? 'bold' : 'normal'; - var italic = fontObj.italic ? 'italic' : 'normal'; - if (size < 0) { - size = -size; - current.fontDirection = -1; - } else { - current.fontDirection = 1; - } - current.fontSize = size; - current.fontFamily = fontObj.loadedName; - current.fontWeight = bold; - current.fontStyle = italic; - current.tspan = document.createElementNS(NS, 'svg:tspan'); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - current.xcoords = []; - }, - endText: function SVGGraphics_endText() {}, - setLineWidth: function SVGGraphics_setLineWidth(width) { - this.current.lineWidth = width; - }, - setLineCap: function SVGGraphics_setLineCap(style) { - this.current.lineCap = LINE_CAP_STYLES[style]; - }, - setLineJoin: function SVGGraphics_setLineJoin(style) { - this.current.lineJoin = LINE_JOIN_STYLES[style]; - }, - setMiterLimit: function SVGGraphics_setMiterLimit(limit) { - this.current.miterLimit = limit; - }, - setStrokeAlpha: function SVGGraphics_setStrokeAlpha(strokeAlpha) { - this.current.strokeAlpha = strokeAlpha; - }, - setStrokeRGBColor: function SVGGraphics_setStrokeRGBColor(r, g, b) { - var color = _util.Util.makeCssRgb(r, g, b); - this.current.strokeColor = color; - }, - setFillAlpha: function SVGGraphics_setFillAlpha(fillAlpha) { - this.current.fillAlpha = fillAlpha; - }, - setFillRGBColor: function SVGGraphics_setFillRGBColor(r, g, b) { - var color = _util.Util.makeCssRgb(r, g, b); - this.current.fillColor = color; - this.current.tspan = document.createElementNS(NS, 'svg:tspan'); - this.current.xcoords = []; - }, - setDash: function SVGGraphics_setDash(dashArray, dashPhase) { - this.current.dashArray = dashArray; - this.current.dashPhase = dashPhase; - }, - constructPath: function SVGGraphics_constructPath(ops, args) { - var current = this.current; - var x = current.x, - y = current.y; - current.path = document.createElementNS(NS, 'svg:path'); - var d = []; - var opLength = ops.length; - for (var i = 0, j = 0; i < opLength; i++) { - switch (ops[i] | 0) { - case _util.OPS.rectangle: - x = args[j++]; - y = args[j++]; - var width = args[j++]; - var height = args[j++]; - var xw = x + width; - var yh = y + height; - d.push('M', pf(x), pf(y), 'L', pf(xw), pf(y), 'L', pf(xw), pf(yh), 'L', pf(x), pf(yh), 'Z'); - break; - case _util.OPS.moveTo: - x = args[j++]; - y = args[j++]; - d.push('M', pf(x), pf(y)); - break; - case _util.OPS.lineTo: - x = args[j++]; - y = args[j++]; - d.push('L', pf(x), pf(y)); - break; - case _util.OPS.curveTo: - x = args[j + 4]; - y = args[j + 5]; - d.push('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y)); - j += 6; - break; - case _util.OPS.curveTo2: - x = args[j + 2]; - y = args[j + 3]; - d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3])); - j += 4; - break; - case _util.OPS.curveTo3: - x = args[j + 2]; - y = args[j + 3]; - d.push('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y)); - j += 4; - break; - case _util.OPS.closePath: - d.push('Z'); - break; - } - } - current.path.setAttributeNS(null, 'd', d.join(' ')); - current.path.setAttributeNS(null, 'fill', 'none'); - this._ensureTransformGroup().appendChild(current.path); - current.element = current.path; - current.setCurrentPoint(x, y); - }, - endPath: function SVGGraphics_endPath() { - if (!this.pendingClip) { - return; - } - var current = this.current; - var clipId = 'clippath' + clipCount; - clipCount++; - var clipPath = document.createElementNS(NS, 'svg:clipPath'); - clipPath.setAttributeNS(null, 'id', clipId); - clipPath.setAttributeNS(null, 'transform', pm(this.transformMatrix)); - var clipElement = current.element.cloneNode(); - if (this.pendingClip === 'evenodd') { - clipElement.setAttributeNS(null, 'clip-rule', 'evenodd'); - } else { - clipElement.setAttributeNS(null, 'clip-rule', 'nonzero'); - } - this.pendingClip = null; - clipPath.appendChild(clipElement); - this.defs.appendChild(clipPath); - if (current.activeClipUrl) { - current.clipGroup = null; - this.extraStack.forEach(function (prev) { - prev.clipGroup = null; - }); - } - current.activeClipUrl = 'url(#' + clipId + ')'; - this.tgrp = null; - }, - clip: function SVGGraphics_clip(type) { - this.pendingClip = type; - }, - closePath: function SVGGraphics_closePath() { - var current = this.current; - var d = current.path.getAttributeNS(null, 'd'); - d += 'Z'; - current.path.setAttributeNS(null, 'd', d); - }, - setLeading: function SVGGraphics_setLeading(leading) { - this.current.leading = -leading; - }, - setTextRise: function SVGGraphics_setTextRise(textRise) { - this.current.textRise = textRise; - }, - setHScale: function SVGGraphics_setHScale(scale) { - this.current.textHScale = scale / 100; - }, - setGState: function SVGGraphics_setGState(states) { - for (var i = 0, ii = states.length; i < ii; i++) { - var state = states[i]; - var key = state[0]; - var value = state[1]; - switch (key) { - case 'LW': - this.setLineWidth(value); - break; - case 'LC': - this.setLineCap(value); - break; - case 'LJ': - this.setLineJoin(value); - break; - case 'ML': - this.setMiterLimit(value); - break; - case 'D': - this.setDash(value[0], value[1]); - break; - case 'Font': - this.setFont(value); - break; - case 'CA': - this.setStrokeAlpha(value); - break; - case 'ca': - this.setFillAlpha(value); - break; - default: - (0, _util.warn)('Unimplemented graphic state ' + key); - break; - } - } - }, - fill: function SVGGraphics_fill() { - var current = this.current; - current.element.setAttributeNS(null, 'fill', current.fillColor); - current.element.setAttributeNS(null, 'fill-opacity', current.fillAlpha); - }, - stroke: function SVGGraphics_stroke() { - var current = this.current; - current.element.setAttributeNS(null, 'stroke', current.strokeColor); - current.element.setAttributeNS(null, 'stroke-opacity', current.strokeAlpha); - current.element.setAttributeNS(null, 'stroke-miterlimit', pf(current.miterLimit)); - current.element.setAttributeNS(null, 'stroke-linecap', current.lineCap); - current.element.setAttributeNS(null, 'stroke-linejoin', current.lineJoin); - current.element.setAttributeNS(null, 'stroke-width', pf(current.lineWidth) + 'px'); - current.element.setAttributeNS(null, 'stroke-dasharray', current.dashArray.map(pf).join(' ')); - current.element.setAttributeNS(null, 'stroke-dashoffset', pf(current.dashPhase) + 'px'); - current.element.setAttributeNS(null, 'fill', 'none'); - }, - eoFill: function SVGGraphics_eoFill() { - this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd'); - this.fill(); - }, - fillStroke: function SVGGraphics_fillStroke() { - this.stroke(); - this.fill(); - }, - eoFillStroke: function SVGGraphics_eoFillStroke() { - this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd'); - this.fillStroke(); - }, - closeStroke: function SVGGraphics_closeStroke() { - this.closePath(); - this.stroke(); - }, - closeFillStroke: function SVGGraphics_closeFillStroke() { - this.closePath(); - this.fillStroke(); - }, - paintSolidColorImageMask: function SVGGraphics_paintSolidColorImageMask() { - var current = this.current; - var rect = document.createElementNS(NS, 'svg:rect'); - rect.setAttributeNS(null, 'x', '0'); - rect.setAttributeNS(null, 'y', '0'); - rect.setAttributeNS(null, 'width', '1px'); - rect.setAttributeNS(null, 'height', '1px'); - rect.setAttributeNS(null, 'fill', current.fillColor); - this._ensureTransformGroup().appendChild(rect); - }, - paintJpegXObject: function SVGGraphics_paintJpegXObject(objId, w, h) { - var imgObj = this.objs.get(objId); - var imgEl = document.createElementNS(NS, 'svg:image'); - imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgObj.src); - imgEl.setAttributeNS(null, 'width', pf(w)); - imgEl.setAttributeNS(null, 'height', pf(h)); - imgEl.setAttributeNS(null, 'x', '0'); - imgEl.setAttributeNS(null, 'y', pf(-h)); - imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / w) + ' ' + pf(-1 / h) + ')'); - this._ensureTransformGroup().appendChild(imgEl); - }, - paintImageXObject: function SVGGraphics_paintImageXObject(objId) { - var imgData = this.objs.get(objId); - if (!imgData) { - (0, _util.warn)('Dependent image isn\'t ready yet'); - return; - } - this.paintInlineImageXObject(imgData); - }, - paintInlineImageXObject: function SVGGraphics_paintInlineImageXObject(imgData, mask) { - var width = imgData.width; - var height = imgData.height; - var imgSrc = convertImgDataToPng(imgData, this.forceDataSchema); - var cliprect = document.createElementNS(NS, 'svg:rect'); - cliprect.setAttributeNS(null, 'x', '0'); - cliprect.setAttributeNS(null, 'y', '0'); - cliprect.setAttributeNS(null, 'width', pf(width)); - cliprect.setAttributeNS(null, 'height', pf(height)); - this.current.element = cliprect; - this.clip('nonzero'); - var imgEl = document.createElementNS(NS, 'svg:image'); - imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgSrc); - imgEl.setAttributeNS(null, 'x', '0'); - imgEl.setAttributeNS(null, 'y', pf(-height)); - imgEl.setAttributeNS(null, 'width', pf(width) + 'px'); - imgEl.setAttributeNS(null, 'height', pf(height) + 'px'); - imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / width) + ' ' + pf(-1 / height) + ')'); - if (mask) { - mask.appendChild(imgEl); - } else { - this._ensureTransformGroup().appendChild(imgEl); - } - }, - paintImageMaskXObject: function SVGGraphics_paintImageMaskXObject(imgData) { - var current = this.current; - var width = imgData.width; - var height = imgData.height; - var fillColor = current.fillColor; - current.maskId = 'mask' + maskCount++; - var mask = document.createElementNS(NS, 'svg:mask'); - mask.setAttributeNS(null, 'id', current.maskId); - var rect = document.createElementNS(NS, 'svg:rect'); - rect.setAttributeNS(null, 'x', '0'); - rect.setAttributeNS(null, 'y', '0'); - rect.setAttributeNS(null, 'width', pf(width)); - rect.setAttributeNS(null, 'height', pf(height)); - rect.setAttributeNS(null, 'fill', fillColor); - rect.setAttributeNS(null, 'mask', 'url(#' + current.maskId + ')'); - this.defs.appendChild(mask); - this._ensureTransformGroup().appendChild(rect); - this.paintInlineImageXObject(imgData, mask); - }, - paintFormXObjectBegin: function SVGGraphics_paintFormXObjectBegin(matrix, bbox) { - if ((0, _util.isArray)(matrix) && matrix.length === 6) { - this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]); - } - if ((0, _util.isArray)(bbox) && bbox.length === 4) { - var width = bbox[2] - bbox[0]; - var height = bbox[3] - bbox[1]; - var cliprect = document.createElementNS(NS, 'svg:rect'); - cliprect.setAttributeNS(null, 'x', bbox[0]); - cliprect.setAttributeNS(null, 'y', bbox[1]); - cliprect.setAttributeNS(null, 'width', pf(width)); - cliprect.setAttributeNS(null, 'height', pf(height)); - this.current.element = cliprect; - this.clip('nonzero'); - this.endPath(); - } - }, - paintFormXObjectEnd: function SVGGraphics_paintFormXObjectEnd() {}, - _initialize: function SVGGraphics_initialize(viewport) { - var svg = document.createElementNS(NS, 'svg:svg'); - svg.setAttributeNS(null, 'version', '1.1'); - svg.setAttributeNS(null, 'width', viewport.width + 'px'); - svg.setAttributeNS(null, 'height', viewport.height + 'px'); - svg.setAttributeNS(null, 'preserveAspectRatio', 'none'); - svg.setAttributeNS(null, 'viewBox', '0 0 ' + viewport.width + ' ' + viewport.height); - var definitions = document.createElementNS(NS, 'svg:defs'); - svg.appendChild(definitions); - this.defs = definitions; - var rootGroup = document.createElementNS(NS, 'svg:g'); - rootGroup.setAttributeNS(null, 'transform', pm(viewport.transform)); - svg.appendChild(rootGroup); - this.svg = rootGroup; - return svg; - }, - _ensureClipGroup: function SVGGraphics_ensureClipGroup() { - if (!this.current.clipGroup) { - var clipGroup = document.createElementNS(NS, 'svg:g'); - clipGroup.setAttributeNS(null, 'clip-path', this.current.activeClipUrl); - this.svg.appendChild(clipGroup); - this.current.clipGroup = clipGroup; - } - return this.current.clipGroup; - }, - _ensureTransformGroup: function SVGGraphics_ensureTransformGroup() { - if (!this.tgrp) { - this.tgrp = document.createElementNS(NS, 'svg:g'); - this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix)); - if (this.current.activeClipUrl) { - this._ensureClipGroup().appendChild(this.tgrp); - } else { - this.svg.appendChild(this.tgrp); - } - } - return this.tgrp; - } - }; - return SVGGraphics; - }(); } -exports.SVGGraphics = SVGGraphics; -/***/ }), -/* 5 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +exports.BaseCMapReaderFactory = BaseCMapReaderFactory; -"use strict"; +class BaseStandardFontDataFactory { + constructor({ + baseUrl = null + }) { + if (this.constructor === BaseStandardFontDataFactory) { + (0, _util.unreachable)("Cannot initialize BaseStandardFontDataFactory."); + } - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.renderTextLayer = undefined; - -var _util = __w_pdfjs_require__(0); - -var _dom_utils = __w_pdfjs_require__(1); - -var renderTextLayer = function renderTextLayerClosure() { - var MAX_TEXT_DIVS_TO_RENDER = 100000; - var NonWhitespaceRegexp = /\S/; - function isAllWhitespace(str) { - return !NonWhitespaceRegexp.test(str); + this.baseUrl = baseUrl; } - var styleBuf = ['left: ', 0, 'px; top: ', 0, 'px; font-size: ', 0, 'px; font-family: ', '', ';']; - function appendText(task, geom, styles) { - var textDiv = document.createElement('div'); - var textDivProperties = { - style: null, - angle: 0, - canvasWidth: 0, - isWhitespace: false, - originalTransform: null, - paddingBottom: 0, - paddingLeft: 0, - paddingRight: 0, - paddingTop: 0, - scale: 1 - }; - task._textDivs.push(textDiv); - if (isAllWhitespace(geom.str)) { - textDivProperties.isWhitespace = true; - task._textDivProperties.set(textDiv, textDivProperties); - return; + + 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.'); } - var tx = _util.Util.transform(task._viewport.transform, geom.transform); - var angle = Math.atan2(tx[1], tx[0]); - var style = styles[geom.fontName]; - if (style.vertical) { - angle += Math.PI / 2; + + if (!filename) { + throw new Error("Font filename must be specified."); } - var fontHeight = Math.sqrt(tx[2] * tx[2] + tx[3] * tx[3]); - var fontAscent = fontHeight; - if (style.ascent) { - fontAscent = style.ascent * fontAscent; - } else if (style.descent) { - fontAscent = (1 + style.descent) * fontAscent; - } - var left; - var top; - if (angle === 0) { - left = tx[4]; - top = tx[5] - fontAscent; - } else { - left = tx[4] + fontAscent * Math.sin(angle); - top = tx[5] - fontAscent * Math.cos(angle); - } - styleBuf[1] = left; - styleBuf[3] = top; - styleBuf[5] = fontHeight; - styleBuf[7] = style.fontFamily; - textDivProperties.style = styleBuf.join(''); - textDiv.setAttribute('style', textDivProperties.style); - textDiv.textContent = geom.str; - if ((0, _dom_utils.getDefaultSetting)('pdfBug')) { - textDiv.dataset.fontName = geom.fontName; - } - if (angle !== 0) { - textDivProperties.angle = angle * (180 / Math.PI); - } - if (geom.str.length > 1) { - if (style.vertical) { - textDivProperties.canvasWidth = geom.height * task._viewport.scale; - } else { - textDivProperties.canvasWidth = geom.width * task._viewport.scale; - } - } - task._textDivProperties.set(textDiv, textDivProperties); - if (task._textContentStream) { - task._layoutText(textDiv); - } - if (task._enhanceTextSelection) { - var angleCos = 1, - angleSin = 0; - if (angle !== 0) { - angleCos = Math.cos(angle); - angleSin = Math.sin(angle); - } - var divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale; - var divHeight = fontHeight; - var m, b; - if (angle !== 0) { - m = [angleCos, angleSin, -angleSin, angleCos, left, top]; - b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m); - } else { - b = [left, top, left + divWidth, top + divHeight]; - } - task._bounds.push({ - left: b[0], - top: b[1], - right: b[2], - bottom: b[3], - div: textDiv, - size: [divWidth, divHeight], - m: m - }); - } - } - function render(task) { - if (task._canceled) { - return; - } - var textDivs = task._textDivs; - var capability = task._capability; - var textDivsLength = textDivs.length; - if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) { - task._renderingDone = true; - capability.resolve(); - return; - } - if (!task._textContentStream) { - for (var i = 0; i < textDivsLength; i++) { - task._layoutText(textDivs[i]); - } - } - task._renderingDone = true; - capability.resolve(); - } - function expand(task) { - var bounds = task._bounds; - var viewport = task._viewport; - var expanded = expandBounds(viewport.width, viewport.height, bounds); - for (var i = 0; i < expanded.length; i++) { - var div = bounds[i].div; - var divProperties = task._textDivProperties.get(div); - if (divProperties.angle === 0) { - divProperties.paddingLeft = bounds[i].left - expanded[i].left; - divProperties.paddingTop = bounds[i].top - expanded[i].top; - divProperties.paddingRight = expanded[i].right - bounds[i].right; - divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom; - task._textDivProperties.set(div, divProperties); - continue; - } - var e = expanded[i], - b = bounds[i]; - var m = b.m, - c = m[0], - s = m[1]; - var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size]; - var ts = new Float64Array(64); - points.forEach(function (p, i) { - var t = _util.Util.applyTransform(p, m); - ts[i + 0] = c && (e.left - t[0]) / c; - ts[i + 4] = s && (e.top - t[1]) / s; - ts[i + 8] = c && (e.right - t[0]) / c; - ts[i + 12] = s && (e.bottom - t[1]) / s; - ts[i + 16] = s && (e.left - t[0]) / -s; - ts[i + 20] = c && (e.top - t[1]) / c; - ts[i + 24] = s && (e.right - t[0]) / -s; - ts[i + 28] = c && (e.bottom - t[1]) / c; - ts[i + 32] = c && (e.left - t[0]) / -c; - ts[i + 36] = s && (e.top - t[1]) / -s; - ts[i + 40] = c && (e.right - t[0]) / -c; - ts[i + 44] = s && (e.bottom - t[1]) / -s; - ts[i + 48] = s && (e.left - t[0]) / s; - ts[i + 52] = c && (e.top - t[1]) / -c; - ts[i + 56] = s && (e.right - t[0]) / s; - ts[i + 60] = c && (e.bottom - t[1]) / -c; - }); - var findPositiveMin = function findPositiveMin(ts, offset, count) { - var result = 0; - for (var i = 0; i < count; i++) { - var t = ts[offset++]; - if (t > 0) { - result = result ? Math.min(t, result) : t; - } - } - return result; - }; - var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s)); - divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale; - divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale; - divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale; - divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale; - task._textDivProperties.set(div, divProperties); - } - } - function expandBounds(width, height, boxes) { - var bounds = boxes.map(function (box, i) { - return { - x1: box.left, - y1: box.top, - x2: box.right, - y2: box.bottom, - index: i, - x1New: undefined, - x2New: undefined - }; - }); - expandBoundsLTR(width, bounds); - var expanded = new Array(boxes.length); - bounds.forEach(function (b) { - var i = b.index; - expanded[i] = { - left: b.x1New, - top: 0, - right: b.x2New, - bottom: 0 - }; - }); - boxes.map(function (box, i) { - var e = expanded[i], - b = bounds[i]; - b.x1 = box.top; - b.y1 = width - e.right; - b.x2 = box.bottom; - b.y2 = width - e.left; - b.index = i; - b.x1New = undefined; - b.x2New = undefined; - }); - expandBoundsLTR(height, bounds); - bounds.forEach(function (b) { - var i = b.index; - expanded[i].top = b.x1New; - expanded[i].bottom = b.x2New; - }); - return expanded; - } - function expandBoundsLTR(width, bounds) { - bounds.sort(function (a, b) { - return a.x1 - b.x1 || a.index - b.index; - }); - var fakeBoundary = { - x1: -Infinity, - y1: -Infinity, - x2: 0, - y2: Infinity, - index: -1, - x1New: 0, - x2New: 0 - }; - var horizon = [{ - start: -Infinity, - end: Infinity, - boundary: fakeBoundary - }]; - bounds.forEach(function (boundary) { - var i = 0; - while (i < horizon.length && horizon[i].end <= boundary.y1) { - i++; - } - var j = horizon.length - 1; - while (j >= 0 && horizon[j].start >= boundary.y2) { - j--; - } - var horizonPart, affectedBoundary; - var q, - k, - maxXNew = -Infinity; - for (q = i; q <= j; q++) { - horizonPart = horizon[q]; - affectedBoundary = horizonPart.boundary; - var xNew; - if (affectedBoundary.x2 > boundary.x1) { - xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1; - } else if (affectedBoundary.x2New === undefined) { - xNew = (affectedBoundary.x2 + boundary.x1) / 2; - } else { - xNew = affectedBoundary.x2New; - } - if (xNew > maxXNew) { - maxXNew = xNew; - } - } - boundary.x1New = maxXNew; - for (q = i; q <= j; q++) { - horizonPart = horizon[q]; - affectedBoundary = horizonPart.boundary; - if (affectedBoundary.x2New === undefined) { - if (affectedBoundary.x2 > boundary.x1) { - if (affectedBoundary.index > boundary.index) { - affectedBoundary.x2New = affectedBoundary.x2; - } - } else { - affectedBoundary.x2New = maxXNew; - } - } else if (affectedBoundary.x2New > maxXNew) { - affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2); - } - } - var changedHorizon = [], - lastBoundary = null; - for (q = i; q <= j; q++) { - horizonPart = horizon[q]; - affectedBoundary = horizonPart.boundary; - var useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary; - if (lastBoundary === useBoundary) { - changedHorizon[changedHorizon.length - 1].end = horizonPart.end; - } else { - changedHorizon.push({ - start: horizonPart.start, - end: horizonPart.end, - boundary: useBoundary - }); - lastBoundary = useBoundary; - } - } - if (horizon[i].start < boundary.y1) { - changedHorizon[0].start = boundary.y1; - changedHorizon.unshift({ - start: horizon[i].start, - end: boundary.y1, - boundary: horizon[i].boundary - }); - } - if (boundary.y2 < horizon[j].end) { - changedHorizon[changedHorizon.length - 1].end = boundary.y2; - changedHorizon.push({ - start: boundary.y2, - end: horizon[j].end, - boundary: horizon[j].boundary - }); - } - for (q = i; q <= j; q++) { - horizonPart = horizon[q]; - affectedBoundary = horizonPart.boundary; - if (affectedBoundary.x2New !== undefined) { - continue; - } - var used = false; - for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) { - used = horizon[k].boundary === affectedBoundary; - } - for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) { - used = horizon[k].boundary === affectedBoundary; - } - for (k = 0; !used && k < changedHorizon.length; k++) { - used = changedHorizon[k].boundary === affectedBoundary; - } - if (!used) { - affectedBoundary.x2New = maxXNew; - } - } - Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon)); - }); - horizon.forEach(function (horizonPart) { - var affectedBoundary = horizonPart.boundary; - if (affectedBoundary.x2New === undefined) { - affectedBoundary.x2New = Math.max(width, affectedBoundary.x2); - } + + const url = `${this.baseUrl}${filename}`; + return this._fetchData(url).catch(reason => { + throw new Error(`Unable to load font data at: ${url}`); }); } - function TextLayerRenderTask(_ref) { - var textContent = _ref.textContent, - textContentStream = _ref.textContentStream, - container = _ref.container, - viewport = _ref.viewport, - textDivs = _ref.textDivs, - textContentItemsStr = _ref.textContentItemsStr, - enhanceTextSelection = _ref.enhanceTextSelection; - this._textContent = textContent; - this._textContentStream = textContentStream; - this._container = container; - this._viewport = viewport; - this._textDivs = textDivs || []; - this._textContentItemsStr = textContentItemsStr || []; - this._enhanceTextSelection = !!enhanceTextSelection; - this._reader = null; - this._layoutTextLastFontSize = null; - this._layoutTextLastFontFamily = null; - this._layoutTextCtx = null; - this._textDivProperties = new WeakMap(); - this._renderingDone = false; - this._canceled = false; - this._capability = (0, _util.createPromiseCapability)(); - this._renderTimer = null; - this._bounds = []; + _fetchData(url) { + (0, _util.unreachable)("Abstract method `_fetchData` called."); } - TextLayerRenderTask.prototype = { - get promise() { - return this._capability.promise; - }, - cancel: function TextLayer_cancel() { - if (this._reader) { - this._reader.cancel(new _util.AbortException('text layer task cancelled')); - this._reader = null; - } - this._canceled = true; - if (this._renderTimer !== null) { - clearTimeout(this._renderTimer); - this._renderTimer = null; - } - this._capability.reject('canceled'); - }, - _processItems: function _processItems(items, styleCache) { - for (var i = 0, len = items.length; i < len; i++) { - this._textContentItemsStr.push(items[i].str); - appendText(this, items[i], styleCache); - } - }, - _layoutText: function _layoutText(textDiv) { - var textLayerFrag = this._container; - var textDivProperties = this._textDivProperties.get(textDiv); - if (textDivProperties.isWhitespace) { - return; - } - var fontSize = textDiv.style.fontSize; - var fontFamily = textDiv.style.fontFamily; - if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) { - this._layoutTextCtx.font = fontSize + ' ' + fontFamily; - this._lastFontSize = fontSize; - this._lastFontFamily = fontFamily; - } - var width = this._layoutTextCtx.measureText(textDiv.textContent).width; - var transform = ''; - if (textDivProperties.canvasWidth !== 0 && width > 0) { - textDivProperties.scale = textDivProperties.canvasWidth / width; - transform = 'scaleX(' + textDivProperties.scale + ')'; - } - if (textDivProperties.angle !== 0) { - transform = 'rotate(' + textDivProperties.angle + 'deg) ' + transform; - } - if (transform !== '') { - textDivProperties.originalTransform = transform; - _dom_utils.CustomStyle.setProp('transform', textDiv, transform); - } - this._textDivProperties.set(textDiv, textDivProperties); - textLayerFrag.appendChild(textDiv); - }, - _render: function TextLayer_render(timeout) { - var _this = this; - - var capability = (0, _util.createPromiseCapability)(); - var styleCache = Object.create(null); - var canvas = document.createElement('canvas'); - canvas.mozOpaque = true; - this._layoutTextCtx = canvas.getContext('2d', { alpha: false }); - if (this._textContent) { - var textItems = this._textContent.items; - var textStyles = this._textContent.styles; - this._processItems(textItems, textStyles); - capability.resolve(); - } else if (this._textContentStream) { - var pump = function pump() { - _this._reader.read().then(function (_ref2) { - var value = _ref2.value, - done = _ref2.done; - - if (done) { - capability.resolve(); - return; - } - _util.Util.extendObj(styleCache, value.styles); - _this._processItems(value.items, styleCache); - pump(); - }, capability.reject); - }; - this._reader = this._textContentStream.getReader(); - pump(); - } else { - throw new Error('Neither "textContent" nor "textContentStream"' + ' parameters specified.'); - } - capability.promise.then(function () { - styleCache = null; - if (!timeout) { - render(_this); - } else { - _this._renderTimer = setTimeout(function () { - render(_this); - _this._renderTimer = null; - }, timeout); - } - }, this._capability.reject); - }, - expandTextDivs: function TextLayer_expandTextDivs(expandDivs) { - if (!this._enhanceTextSelection || !this._renderingDone) { - return; - } - if (this._bounds !== null) { - expand(this); - this._bounds = null; - } - for (var i = 0, ii = this._textDivs.length; i < ii; i++) { - var div = this._textDivs[i]; - var divProperties = this._textDivProperties.get(div); - if (divProperties.isWhitespace) { - continue; - } - if (expandDivs) { - var transform = '', - padding = ''; - if (divProperties.scale !== 1) { - transform = 'scaleX(' + divProperties.scale + ')'; - } - if (divProperties.angle !== 0) { - transform = 'rotate(' + divProperties.angle + 'deg) ' + transform; - } - if (divProperties.paddingLeft !== 0) { - padding += ' padding-left: ' + divProperties.paddingLeft / divProperties.scale + 'px;'; - transform += ' translateX(' + -divProperties.paddingLeft / divProperties.scale + 'px)'; - } - if (divProperties.paddingTop !== 0) { - padding += ' padding-top: ' + divProperties.paddingTop + 'px;'; - transform += ' translateY(' + -divProperties.paddingTop + 'px)'; - } - if (divProperties.paddingRight !== 0) { - padding += ' padding-right: ' + divProperties.paddingRight / divProperties.scale + 'px;'; - } - if (divProperties.paddingBottom !== 0) { - padding += ' padding-bottom: ' + divProperties.paddingBottom + 'px;'; - } - if (padding !== '') { - div.setAttribute('style', divProperties.style + padding); - } - if (transform !== '') { - _dom_utils.CustomStyle.setProp('transform', div, transform); - } - } else { - div.style.padding = 0; - _dom_utils.CustomStyle.setProp('transform', div, divProperties.originalTransform || ''); - } - } - } - }; - function renderTextLayer(renderParameters) { - var task = new TextLayerRenderTask({ - textContent: renderParameters.textContent, - textContentStream: renderParameters.textContentStream, - container: renderParameters.container, - viewport: renderParameters.viewport, - textDivs: renderParameters.textDivs, - textContentItemsStr: renderParameters.textContentItemsStr, - enhanceTextSelection: renderParameters.enhanceTextSelection - }); - task._render(renderParameters.timeout); - return task; - } - return renderTextLayer; -}(); -exports.renderTextLayer = renderTextLayer; - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -function fixMetadata(meta) { - return meta.replace(/>\\376\\377([^<]+)/g, function (all, codes) { - var bytes = codes.replace(/\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) { - return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1); - }); - var chars = ''; - for (var i = 0; i < bytes.length; i += 2) { - var code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1); - chars += code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38 ? String.fromCharCode(code) : '&#x' + (0x10000 + code).toString(16).substring(1) + ';'; - } - return '>' + chars; - }); } -function Metadata(meta) { - if (typeof meta === 'string') { - meta = fixMetadata(meta); - var parser = new DOMParser(); - meta = parser.parseFromString(meta, 'application/xml'); - } else if (!(meta instanceof Document)) { - throw new Error('Metadata: Invalid metadata object'); + +exports.BaseStandardFontDataFactory = BaseStandardFontDataFactory; + +class BaseSVGFactory { + constructor() { + if (this.constructor === BaseSVGFactory) { + (0, _util.unreachable)("Cannot initialize BaseSVGFactory."); + } } - this.metaDocument = meta; - this.metadata = Object.create(null); - this.parse(); + + create(width, height, skipDimensions = false) { + if (width <= 0 || height <= 0) { + throw new Error("Invalid SVG dimensions"); + } + + const svg = this._createSVG("svg:svg"); + + svg.setAttribute("version", "1.1"); + + if (!skipDimensions) { + 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."); + } + } -Metadata.prototype = { - parse: function Metadata_parse() { - var doc = this.metaDocument; - var rdf = doc.documentElement; - if (rdf.nodeName.toLowerCase() !== 'rdf:rdf') { - rdf = rdf.firstChild; - while (rdf && rdf.nodeName.toLowerCase() !== 'rdf:rdf') { - rdf = rdf.nextSibling; - } - } - var nodeName = rdf ? rdf.nodeName.toLowerCase() : null; - if (!rdf || nodeName !== 'rdf:rdf' || !rdf.hasChildNodes()) { - return; - } - var children = rdf.childNodes, - desc, - entry, - name, - i, - ii, - length, - iLength; - for (i = 0, length = children.length; i < length; i++) { - desc = children[i]; - if (desc.nodeName.toLowerCase() !== 'rdf:description') { - continue; - } - for (ii = 0, iLength = desc.childNodes.length; ii < iLength; ii++) { - if (desc.childNodes[ii].nodeName.toLowerCase() !== '#text') { - entry = desc.childNodes[ii]; - name = entry.nodeName.toLowerCase(); - this.metadata[name] = entry.textContent.trim(); - } - } - } - }, - get: function Metadata_get(name) { - return this.metadata[name] || null; - }, - has: function Metadata_has(name) { - return typeof this.metadata[name] !== 'undefined'; - } -}; -exports.Metadata = Metadata; -/***/ }), -/* 7 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.WebGLUtils = undefined; - -var _dom_utils = __w_pdfjs_require__(1); - -var _util = __w_pdfjs_require__(0); - -var WebGLUtils = function WebGLUtilsClosure() { - function loadShader(gl, code, shaderType) { - var shader = gl.createShader(shaderType); - gl.shaderSource(shader, code); - gl.compileShader(shader); - var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS); - if (!compiled) { - var errorMsg = gl.getShaderInfoLog(shader); - throw new Error('Error during shader compilation: ' + errorMsg); - } - return shader; - } - function createVertexShader(gl, code) { - return loadShader(gl, code, gl.VERTEX_SHADER); - } - function createFragmentShader(gl, code) { - return loadShader(gl, code, gl.FRAGMENT_SHADER); - } - function createProgram(gl, shaders) { - var program = gl.createProgram(); - for (var i = 0, ii = shaders.length; i < ii; ++i) { - gl.attachShader(program, shaders[i]); - } - gl.linkProgram(program); - var linked = gl.getProgramParameter(program, gl.LINK_STATUS); - if (!linked) { - var errorMsg = gl.getProgramInfoLog(program); - throw new Error('Error during program linking: ' + errorMsg); - } - return program; - } - function createTexture(gl, image, textureId) { - gl.activeTexture(textureId); - var texture = gl.createTexture(); - gl.bindTexture(gl.TEXTURE_2D, texture); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image); - return texture; - } - var currentGL, currentCanvas; - function generateGL() { - if (currentGL) { - return; - } - currentCanvas = document.createElement('canvas'); - currentGL = currentCanvas.getContext('webgl', { premultipliedalpha: false }); - } - var smaskVertexShaderCode = '\ - attribute vec2 a_position; \ - attribute vec2 a_texCoord; \ - \ - uniform vec2 u_resolution; \ - \ - varying vec2 v_texCoord; \ - \ - void main() { \ - vec2 clipSpace = (a_position / u_resolution) * 2.0 - 1.0; \ - gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \ - \ - v_texCoord = a_texCoord; \ - } '; - var smaskFragmentShaderCode = '\ - precision mediump float; \ - \ - uniform vec4 u_backdrop; \ - uniform int u_subtype; \ - uniform sampler2D u_image; \ - uniform sampler2D u_mask; \ - \ - varying vec2 v_texCoord; \ - \ - void main() { \ - vec4 imageColor = texture2D(u_image, v_texCoord); \ - vec4 maskColor = texture2D(u_mask, v_texCoord); \ - if (u_backdrop.a > 0.0) { \ - maskColor.rgb = maskColor.rgb * maskColor.a + \ - u_backdrop.rgb * (1.0 - maskColor.a); \ - } \ - float lum; \ - if (u_subtype == 0) { \ - lum = maskColor.a; \ - } else { \ - lum = maskColor.r * 0.3 + maskColor.g * 0.59 + \ - maskColor.b * 0.11; \ - } \ - imageColor.a *= lum; \ - imageColor.rgb *= imageColor.a; \ - gl_FragColor = imageColor; \ - } '; - var smaskCache = null; - function initSmaskGL() { - var canvas, gl; - generateGL(); - canvas = currentCanvas; - currentCanvas = null; - gl = currentGL; - currentGL = null; - var vertexShader = createVertexShader(gl, smaskVertexShaderCode); - var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode); - var program = createProgram(gl, [vertexShader, fragmentShader]); - gl.useProgram(program); - var cache = {}; - cache.gl = gl; - cache.canvas = canvas; - cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution'); - cache.positionLocation = gl.getAttribLocation(program, 'a_position'); - cache.backdropLocation = gl.getUniformLocation(program, 'u_backdrop'); - cache.subtypeLocation = gl.getUniformLocation(program, 'u_subtype'); - var texCoordLocation = gl.getAttribLocation(program, 'a_texCoord'); - var texLayerLocation = gl.getUniformLocation(program, 'u_image'); - var texMaskLocation = gl.getUniformLocation(program, 'u_mask'); - var texCoordBuffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer); - gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0]), gl.STATIC_DRAW); - gl.enableVertexAttribArray(texCoordLocation); - gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0); - gl.uniform1i(texLayerLocation, 0); - gl.uniform1i(texMaskLocation, 1); - smaskCache = cache; - } - function composeSMask(layer, mask, properties) { - var width = layer.width, - height = layer.height; - if (!smaskCache) { - initSmaskGL(); - } - var cache = smaskCache, - canvas = cache.canvas, - gl = cache.gl; - canvas.width = width; - canvas.height = height; - gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight); - gl.uniform2f(cache.resolutionLocation, width, height); - if (properties.backdrop) { - gl.uniform4f(cache.resolutionLocation, properties.backdrop[0], properties.backdrop[1], properties.backdrop[2], 1); - } else { - gl.uniform4f(cache.resolutionLocation, 0, 0, 0, 0); - } - gl.uniform1i(cache.subtypeLocation, properties.subtype === 'Luminosity' ? 1 : 0); - var texture = createTexture(gl, layer, gl.TEXTURE0); - var maskTexture = createTexture(gl, mask, gl.TEXTURE1); - var buffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, buffer); - gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0, 0, width, 0, 0, height, 0, height, width, 0, width, height]), gl.STATIC_DRAW); - gl.enableVertexAttribArray(cache.positionLocation); - gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0); - gl.clearColor(0, 0, 0, 0); - gl.enable(gl.BLEND); - gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA); - gl.clear(gl.COLOR_BUFFER_BIT); - gl.drawArrays(gl.TRIANGLES, 0, 6); - gl.flush(); - gl.deleteTexture(texture); - gl.deleteTexture(maskTexture); - gl.deleteBuffer(buffer); - return canvas; - } - var figuresVertexShaderCode = '\ - attribute vec2 a_position; \ - attribute vec3 a_color; \ - \ - uniform vec2 u_resolution; \ - uniform vec2 u_scale; \ - uniform vec2 u_offset; \ - \ - varying vec4 v_color; \ - \ - void main() { \ - vec2 position = (a_position + u_offset) * u_scale; \ - vec2 clipSpace = (position / u_resolution) * 2.0 - 1.0; \ - gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \ - \ - v_color = vec4(a_color / 255.0, 1.0); \ - } '; - var figuresFragmentShaderCode = '\ - precision mediump float; \ - \ - varying vec4 v_color; \ - \ - void main() { \ - gl_FragColor = v_color; \ - } '; - var figuresCache = null; - function initFiguresGL() { - var canvas, gl; - generateGL(); - canvas = currentCanvas; - currentCanvas = null; - gl = currentGL; - currentGL = null; - var vertexShader = createVertexShader(gl, figuresVertexShaderCode); - var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode); - var program = createProgram(gl, [vertexShader, fragmentShader]); - gl.useProgram(program); - var cache = {}; - cache.gl = gl; - cache.canvas = canvas; - cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution'); - cache.scaleLocation = gl.getUniformLocation(program, 'u_scale'); - cache.offsetLocation = gl.getUniformLocation(program, 'u_offset'); - cache.positionLocation = gl.getAttribLocation(program, 'a_position'); - cache.colorLocation = gl.getAttribLocation(program, 'a_color'); - figuresCache = cache; - } - function drawFigures(width, height, backgroundColor, figures, context) { - if (!figuresCache) { - initFiguresGL(); - } - var cache = figuresCache, - canvas = cache.canvas, - gl = cache.gl; - canvas.width = width; - canvas.height = height; - gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight); - gl.uniform2f(cache.resolutionLocation, width, height); - var count = 0; - var i, ii, rows; - for (i = 0, ii = figures.length; i < ii; i++) { - switch (figures[i].type) { - case 'lattice': - rows = figures[i].coords.length / figures[i].verticesPerRow | 0; - count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6; - break; - case 'triangles': - count += figures[i].coords.length; - break; - } - } - var coords = new Float32Array(count * 2); - var colors = new Uint8Array(count * 3); - var coordsMap = context.coords, - colorsMap = context.colors; - var pIndex = 0, - cIndex = 0; - for (i = 0, ii = figures.length; i < ii; i++) { - var figure = figures[i], - ps = figure.coords, - cs = figure.colors; - switch (figure.type) { - case 'lattice': - var cols = figure.verticesPerRow; - rows = ps.length / cols | 0; - for (var row = 1; row < rows; row++) { - var offset = row * cols + 1; - for (var col = 1; col < cols; col++, offset++) { - coords[pIndex] = coordsMap[ps[offset - cols - 1]]; - coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1]; - coords[pIndex + 2] = coordsMap[ps[offset - cols]]; - coords[pIndex + 3] = coordsMap[ps[offset - cols] + 1]; - coords[pIndex + 4] = coordsMap[ps[offset - 1]]; - coords[pIndex + 5] = coordsMap[ps[offset - 1] + 1]; - colors[cIndex] = colorsMap[cs[offset - cols - 1]]; - colors[cIndex + 1] = colorsMap[cs[offset - cols - 1] + 1]; - colors[cIndex + 2] = colorsMap[cs[offset - cols - 1] + 2]; - colors[cIndex + 3] = colorsMap[cs[offset - cols]]; - colors[cIndex + 4] = colorsMap[cs[offset - cols] + 1]; - colors[cIndex + 5] = colorsMap[cs[offset - cols] + 2]; - colors[cIndex + 6] = colorsMap[cs[offset - 1]]; - colors[cIndex + 7] = colorsMap[cs[offset - 1] + 1]; - colors[cIndex + 8] = colorsMap[cs[offset - 1] + 2]; - coords[pIndex + 6] = coords[pIndex + 2]; - coords[pIndex + 7] = coords[pIndex + 3]; - coords[pIndex + 8] = coords[pIndex + 4]; - coords[pIndex + 9] = coords[pIndex + 5]; - coords[pIndex + 10] = coordsMap[ps[offset]]; - coords[pIndex + 11] = coordsMap[ps[offset] + 1]; - colors[cIndex + 9] = colors[cIndex + 3]; - colors[cIndex + 10] = colors[cIndex + 4]; - colors[cIndex + 11] = colors[cIndex + 5]; - colors[cIndex + 12] = colors[cIndex + 6]; - colors[cIndex + 13] = colors[cIndex + 7]; - colors[cIndex + 14] = colors[cIndex + 8]; - colors[cIndex + 15] = colorsMap[cs[offset]]; - colors[cIndex + 16] = colorsMap[cs[offset] + 1]; - colors[cIndex + 17] = colorsMap[cs[offset] + 2]; - pIndex += 12; - cIndex += 18; - } - } - break; - case 'triangles': - for (var j = 0, jj = ps.length; j < jj; j++) { - coords[pIndex] = coordsMap[ps[j]]; - coords[pIndex + 1] = coordsMap[ps[j] + 1]; - colors[cIndex] = colorsMap[cs[j]]; - colors[cIndex + 1] = colorsMap[cs[j] + 1]; - colors[cIndex + 2] = colorsMap[cs[j] + 2]; - pIndex += 2; - cIndex += 3; - } - break; - } - } - if (backgroundColor) { - gl.clearColor(backgroundColor[0] / 255, backgroundColor[1] / 255, backgroundColor[2] / 255, 1.0); - } else { - gl.clearColor(0, 0, 0, 0); - } - gl.clear(gl.COLOR_BUFFER_BIT); - var coordsBuffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer); - gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW); - gl.enableVertexAttribArray(cache.positionLocation); - gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0); - var colorsBuffer = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer); - gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW); - gl.enableVertexAttribArray(cache.colorLocation); - gl.vertexAttribPointer(cache.colorLocation, 3, gl.UNSIGNED_BYTE, false, 0, 0); - gl.uniform2f(cache.scaleLocation, context.scaleX, context.scaleY); - gl.uniform2f(cache.offsetLocation, context.offsetX, context.offsetY); - gl.drawArrays(gl.TRIANGLES, 0, count); - gl.flush(); - gl.deleteBuffer(coordsBuffer); - gl.deleteBuffer(colorsBuffer); - return canvas; - } - function cleanup() { - if (smaskCache && smaskCache.canvas) { - smaskCache.canvas.width = 0; - smaskCache.canvas.height = 0; - } - if (figuresCache && figuresCache.canvas) { - figuresCache.canvas.width = 0; - figuresCache.canvas.height = 0; - } - smaskCache = null; - figuresCache = null; - } - return { - get isEnabled() { - if ((0, _dom_utils.getDefaultSetting)('disableWebGL')) { - return false; - } - var enabled = false; - try { - generateGL(); - enabled = !!currentGL; - } catch (e) {} - return (0, _util.shadow)(this, 'isEnabled', enabled); - }, - composeSMask: composeSMask, - drawFigures: drawFigures, - clear: cleanup - }; -}(); -exports.WebGLUtils = WebGLUtils; - -/***/ }), -/* 8 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFJS = exports.isWorker = exports.globalScope = undefined; - -var _api = __w_pdfjs_require__(2); - -var _dom_utils = __w_pdfjs_require__(1); - -var _util = __w_pdfjs_require__(0); - -var _annotation_layer = __w_pdfjs_require__(3); - -var _metadata = __w_pdfjs_require__(6); - -var _text_layer = __w_pdfjs_require__(5); - -var _svg = __w_pdfjs_require__(4); - -var isWorker = typeof window === 'undefined'; -if (!_util.globalScope.PDFJS) { - _util.globalScope.PDFJS = {}; -} -var PDFJS = _util.globalScope.PDFJS; -{ - PDFJS.version = '1.9.426'; - PDFJS.build = '2558a58d'; -} -PDFJS.pdfBug = false; -if (PDFJS.verbosity !== undefined) { - (0, _util.setVerbosityLevel)(PDFJS.verbosity); -} -delete PDFJS.verbosity; -Object.defineProperty(PDFJS, 'verbosity', { - get: function get() { - return (0, _util.getVerbosityLevel)(); - }, - set: function set(level) { - (0, _util.setVerbosityLevel)(level); - }, - - enumerable: true, - configurable: true -}); -PDFJS.VERBOSITY_LEVELS = _util.VERBOSITY_LEVELS; -PDFJS.OPS = _util.OPS; -PDFJS.UNSUPPORTED_FEATURES = _util.UNSUPPORTED_FEATURES; -PDFJS.isValidUrl = _dom_utils.isValidUrl; -PDFJS.shadow = _util.shadow; -PDFJS.createBlob = _util.createBlob; -PDFJS.createObjectURL = function PDFJS_createObjectURL(data, contentType) { - return (0, _util.createObjectURL)(data, contentType, PDFJS.disableCreateObjectURL); -}; -Object.defineProperty(PDFJS, 'isLittleEndian', { - configurable: true, - get: function PDFJS_isLittleEndian() { - return (0, _util.shadow)(PDFJS, 'isLittleEndian', (0, _util.isLittleEndian)()); - } -}); -PDFJS.removeNullCharacters = _util.removeNullCharacters; -PDFJS.PasswordResponses = _util.PasswordResponses; -PDFJS.PasswordException = _util.PasswordException; -PDFJS.UnknownErrorException = _util.UnknownErrorException; -PDFJS.InvalidPDFException = _util.InvalidPDFException; -PDFJS.MissingPDFException = _util.MissingPDFException; -PDFJS.UnexpectedResponseException = _util.UnexpectedResponseException; -PDFJS.Util = _util.Util; -PDFJS.PageViewport = _util.PageViewport; -PDFJS.createPromiseCapability = _util.createPromiseCapability; -PDFJS.maxImageSize = PDFJS.maxImageSize === undefined ? -1 : PDFJS.maxImageSize; -PDFJS.cMapUrl = PDFJS.cMapUrl === undefined ? null : PDFJS.cMapUrl; -PDFJS.cMapPacked = PDFJS.cMapPacked === undefined ? false : PDFJS.cMapPacked; -PDFJS.disableFontFace = PDFJS.disableFontFace === undefined ? false : PDFJS.disableFontFace; -PDFJS.imageResourcesPath = PDFJS.imageResourcesPath === undefined ? '' : PDFJS.imageResourcesPath; -PDFJS.disableWorker = PDFJS.disableWorker === undefined ? false : PDFJS.disableWorker; -PDFJS.workerSrc = PDFJS.workerSrc === undefined ? null : PDFJS.workerSrc; -PDFJS.workerPort = PDFJS.workerPort === undefined ? null : PDFJS.workerPort; -PDFJS.disableRange = PDFJS.disableRange === undefined ? false : PDFJS.disableRange; -PDFJS.disableStream = PDFJS.disableStream === undefined ? false : PDFJS.disableStream; -PDFJS.disableAutoFetch = PDFJS.disableAutoFetch === undefined ? false : PDFJS.disableAutoFetch; -PDFJS.pdfBug = PDFJS.pdfBug === undefined ? false : PDFJS.pdfBug; -PDFJS.postMessageTransfers = PDFJS.postMessageTransfers === undefined ? true : PDFJS.postMessageTransfers; -PDFJS.disableCreateObjectURL = PDFJS.disableCreateObjectURL === undefined ? false : PDFJS.disableCreateObjectURL; -PDFJS.disableWebGL = PDFJS.disableWebGL === undefined ? true : PDFJS.disableWebGL; -PDFJS.externalLinkTarget = PDFJS.externalLinkTarget === undefined ? _dom_utils.LinkTarget.NONE : PDFJS.externalLinkTarget; -PDFJS.externalLinkRel = PDFJS.externalLinkRel === undefined ? _dom_utils.DEFAULT_LINK_REL : PDFJS.externalLinkRel; -PDFJS.isEvalSupported = PDFJS.isEvalSupported === undefined ? true : PDFJS.isEvalSupported; -PDFJS.pdfjsNext = PDFJS.pdfjsNext === undefined ? false : PDFJS.pdfjsNext; -{ - var savedOpenExternalLinksInNewWindow = PDFJS.openExternalLinksInNewWindow; - delete PDFJS.openExternalLinksInNewWindow; - Object.defineProperty(PDFJS, 'openExternalLinksInNewWindow', { - get: function get() { - return PDFJS.externalLinkTarget === _dom_utils.LinkTarget.BLANK; - }, - set: function set(value) { - if (value) { - (0, _util.deprecated)('PDFJS.openExternalLinksInNewWindow, please use ' + '"PDFJS.externalLinkTarget = PDFJS.LinkTarget.BLANK" instead.'); - } - if (PDFJS.externalLinkTarget !== _dom_utils.LinkTarget.NONE) { - (0, _util.warn)('PDFJS.externalLinkTarget is already initialized'); - return; - } - PDFJS.externalLinkTarget = value ? _dom_utils.LinkTarget.BLANK : _dom_utils.LinkTarget.NONE; - }, - - enumerable: true, - configurable: true - }); - if (savedOpenExternalLinksInNewWindow) { - PDFJS.openExternalLinksInNewWindow = savedOpenExternalLinksInNewWindow; - } -} -PDFJS.getDocument = _api.getDocument; -PDFJS.LoopbackPort = _api.LoopbackPort; -PDFJS.PDFDataRangeTransport = _api.PDFDataRangeTransport; -PDFJS.PDFWorker = _api.PDFWorker; -PDFJS.hasCanvasTypedArrays = true; -PDFJS.CustomStyle = _dom_utils.CustomStyle; -PDFJS.LinkTarget = _dom_utils.LinkTarget; -PDFJS.addLinkAttributes = _dom_utils.addLinkAttributes; -PDFJS.getFilenameFromUrl = _dom_utils.getFilenameFromUrl; -PDFJS.isExternalLinkTargetSet = _dom_utils.isExternalLinkTargetSet; -PDFJS.AnnotationLayer = _annotation_layer.AnnotationLayer; -PDFJS.renderTextLayer = _text_layer.renderTextLayer; -PDFJS.Metadata = _metadata.Metadata; -PDFJS.SVGGraphics = _svg.SVGGraphics; -PDFJS.UnsupportedManager = _api._UnsupportedManager; -exports.globalScope = _util.globalScope; -exports.isWorker = isWorker; -exports.PDFJS = PDFJS; - -/***/ }), -/* 9 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.NetworkManager = exports.PDFNetworkStream = undefined; - -var _util = __w_pdfjs_require__(0); - -var _api = __w_pdfjs_require__(2); - -; -var OK_RESPONSE = 200; -var PARTIAL_CONTENT_RESPONSE = 206; -function NetworkManager(url, args) { - this.url = url; - args = args || {}; - this.isHttp = /^https?:/i.test(url); - this.httpHeaders = this.isHttp && args.httpHeaders || {}; - this.withCredentials = args.withCredentials || false; - this.getXhr = args.getXhr || function NetworkManager_getXhr() { - return new XMLHttpRequest(); - }; - this.currXhrId = 0; - this.pendingRequests = Object.create(null); - this.loadedRequests = Object.create(null); -} -function getArrayBuffer(xhr) { - var data = xhr.response; - if (typeof data !== 'string') { - return data; - } - var length = data.length; - var array = new Uint8Array(length); - for (var i = 0; i < length; i++) { - array[i] = data.charCodeAt(i) & 0xFF; - } - return array.buffer; -} -var supportsMozChunked = function supportsMozChunkedClosure() { - try { - var x = new XMLHttpRequest(); - x.open('GET', _util.globalScope.location.href); - x.responseType = 'moz-chunked-arraybuffer'; - return x.responseType === 'moz-chunked-arraybuffer'; - } catch (e) { - return false; - } -}(); -NetworkManager.prototype = { - requestRange: function NetworkManager_requestRange(begin, end, listeners) { - var args = { - begin: begin, - end: end - }; - for (var prop in listeners) { - args[prop] = listeners[prop]; - } - return this.request(args); - }, - requestFull: function NetworkManager_requestFull(listeners) { - return this.request(listeners); - }, - request: function NetworkManager_request(args) { - var xhr = this.getXhr(); - var xhrId = this.currXhrId++; - var pendingRequest = this.pendingRequests[xhrId] = { xhr: xhr }; - xhr.open('GET', this.url); - xhr.withCredentials = this.withCredentials; - for (var property in this.httpHeaders) { - var value = this.httpHeaders[property]; - if (typeof value === 'undefined') { - continue; - } - xhr.setRequestHeader(property, value); - } - if (this.isHttp && 'begin' in args && 'end' in args) { - var rangeStr = args.begin + '-' + (args.end - 1); - xhr.setRequestHeader('Range', 'bytes=' + rangeStr); - pendingRequest.expectedStatus = 206; - } else { - pendingRequest.expectedStatus = 200; - } - var useMozChunkedLoading = supportsMozChunked && !!args.onProgressiveData; - if (useMozChunkedLoading) { - xhr.responseType = 'moz-chunked-arraybuffer'; - pendingRequest.onProgressiveData = args.onProgressiveData; - pendingRequest.mozChunked = true; - } else { - xhr.responseType = 'arraybuffer'; - } - if (args.onError) { - xhr.onerror = function (evt) { - args.onError(xhr.status); - }; - } - xhr.onreadystatechange = this.onStateChange.bind(this, xhrId); - xhr.onprogress = this.onProgress.bind(this, xhrId); - pendingRequest.onHeadersReceived = args.onHeadersReceived; - pendingRequest.onDone = args.onDone; - pendingRequest.onError = args.onError; - pendingRequest.onProgress = args.onProgress; - xhr.send(null); - return xhrId; - }, - onProgress: function NetworkManager_onProgress(xhrId, evt) { - var pendingRequest = this.pendingRequests[xhrId]; - if (!pendingRequest) { - return; - } - if (pendingRequest.mozChunked) { - var chunk = getArrayBuffer(pendingRequest.xhr); - pendingRequest.onProgressiveData(chunk); - } - var onProgress = pendingRequest.onProgress; - if (onProgress) { - onProgress(evt); - } - }, - onStateChange: function NetworkManager_onStateChange(xhrId, evt) { - var pendingRequest = this.pendingRequests[xhrId]; - if (!pendingRequest) { - return; - } - var xhr = pendingRequest.xhr; - if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) { - pendingRequest.onHeadersReceived(); - delete pendingRequest.onHeadersReceived; - } - if (xhr.readyState !== 4) { - return; - } - if (!(xhrId in this.pendingRequests)) { - return; - } - delete this.pendingRequests[xhrId]; - if (xhr.status === 0 && this.isHttp) { - if (pendingRequest.onError) { - pendingRequest.onError(xhr.status); - } - return; - } - var xhrStatus = xhr.status || OK_RESPONSE; - var ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE; - if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) { - if (pendingRequest.onError) { - pendingRequest.onError(xhr.status); - } - return; - } - this.loadedRequests[xhrId] = true; - var chunk = getArrayBuffer(xhr); - if (xhrStatus === PARTIAL_CONTENT_RESPONSE) { - var rangeHeader = xhr.getResponseHeader('Content-Range'); - var matches = /bytes (\d+)-(\d+)\/(\d+)/.exec(rangeHeader); - var begin = parseInt(matches[1], 10); - pendingRequest.onDone({ - begin: begin, - chunk: chunk - }); - } else if (pendingRequest.onProgressiveData) { - pendingRequest.onDone(null); - } else if (chunk) { - pendingRequest.onDone({ - begin: 0, - chunk: chunk - }); - } else if (pendingRequest.onError) { - pendingRequest.onError(xhr.status); - } - }, - hasPendingRequests: function NetworkManager_hasPendingRequests() { - for (var xhrId in this.pendingRequests) { - return true; - } - return false; - }, - getRequestXhr: function NetworkManager_getXhr(xhrId) { - return this.pendingRequests[xhrId].xhr; - }, - isStreamingRequest: function NetworkManager_isStreamingRequest(xhrId) { - return !!this.pendingRequests[xhrId].onProgressiveData; - }, - isPendingRequest: function NetworkManager_isPendingRequest(xhrId) { - return xhrId in this.pendingRequests; - }, - isLoadedRequest: function NetworkManager_isLoadedRequest(xhrId) { - return xhrId in this.loadedRequests; - }, - abortAllRequests: function NetworkManager_abortAllRequests() { - for (var xhrId in this.pendingRequests) { - this.abortRequest(xhrId | 0); - } - }, - abortRequest: function NetworkManager_abortRequest(xhrId) { - var xhr = this.pendingRequests[xhrId].xhr; - delete this.pendingRequests[xhrId]; - xhr.abort(); - } -}; -function PDFNetworkStream(options) { - this._options = options; - var source = options.source; - this._manager = new NetworkManager(source.url, { - httpHeaders: source.httpHeaders, - withCredentials: source.withCredentials - }); - this._rangeChunkSize = source.rangeChunkSize; - this._fullRequestReader = null; - this._rangeRequestReaders = []; -} -PDFNetworkStream.prototype = { - _onRangeRequestReaderClosed: function PDFNetworkStream_onRangeRequestReaderClosed(reader) { - var i = this._rangeRequestReaders.indexOf(reader); - if (i >= 0) { - this._rangeRequestReaders.splice(i, 1); - } - }, - getFullReader: function PDFNetworkStream_getFullReader() { - (0, _util.assert)(!this._fullRequestReader); - this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._options); - return this._fullRequestReader; - }, - getRangeReader: function PDFNetworkStream_getRangeReader(begin, end) { - var reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end); - reader.onClosed = this._onRangeRequestReaderClosed.bind(this); - this._rangeRequestReaders.push(reader); - return reader; - }, - cancelAllRequests: function PDFNetworkStream_cancelAllRequests(reason) { - if (this._fullRequestReader) { - this._fullRequestReader.cancel(reason); - } - var readers = this._rangeRequestReaders.slice(0); - readers.forEach(function (reader) { - reader.cancel(reason); - }); - } -}; -function PDFNetworkStreamFullRequestReader(manager, options) { - this._manager = manager; - var source = options.source; - var args = { - onHeadersReceived: this._onHeadersReceived.bind(this), - onProgressiveData: source.disableStream ? null : this._onProgressiveData.bind(this), - onDone: this._onDone.bind(this), - onError: this._onError.bind(this), - onProgress: this._onProgress.bind(this) - }; - this._url = source.url; - this._fullRequestId = manager.requestFull(args); - this._headersReceivedCapability = (0, _util.createPromiseCapability)(); - this._disableRange = options.disableRange || false; - this._contentLength = source.length; - this._rangeChunkSize = source.rangeChunkSize; - if (!this._rangeChunkSize && !this._disableRange) { - this._disableRange = true; - } - this._isStreamingSupported = false; - this._isRangeSupported = false; - this._cachedChunks = []; - this._requests = []; - this._done = false; - this._storedError = undefined; - this.onProgress = null; -} -PDFNetworkStreamFullRequestReader.prototype = { - _validateRangeRequestCapabilities: function PDFNetworkStreamFullRequestReader_validateRangeRequestCapabilities() { - if (this._disableRange) { - return false; - } - var networkManager = this._manager; - if (!networkManager.isHttp) { - return false; - } - var fullRequestXhrId = this._fullRequestId; - var fullRequestXhr = networkManager.getRequestXhr(fullRequestXhrId); - if (fullRequestXhr.getResponseHeader('Accept-Ranges') !== 'bytes') { - return false; - } - var contentEncoding = fullRequestXhr.getResponseHeader('Content-Encoding') || 'identity'; - if (contentEncoding !== 'identity') { - return false; - } - var length = fullRequestXhr.getResponseHeader('Content-Length'); - length = parseInt(length, 10); - if (!(0, _util.isInt)(length)) { - return false; - } - this._contentLength = length; - if (length <= 2 * this._rangeChunkSize) { - return false; - } - return true; - }, - _onHeadersReceived: function PDFNetworkStreamFullRequestReader_onHeadersReceived() { - if (this._validateRangeRequestCapabilities()) { - this._isRangeSupported = true; - } - var networkManager = this._manager; - var fullRequestXhrId = this._fullRequestId; - if (networkManager.isStreamingRequest(fullRequestXhrId)) { - this._isStreamingSupported = true; - } else if (this._isRangeSupported) { - networkManager.abortRequest(fullRequestXhrId); - } - this._headersReceivedCapability.resolve(); - }, - _onProgressiveData: function PDFNetworkStreamFullRequestReader_onProgressiveData(chunk) { - if (this._requests.length > 0) { - var requestCapability = this._requests.shift(); - requestCapability.resolve({ - value: chunk, - done: false - }); - } else { - this._cachedChunks.push(chunk); - } - }, - _onDone: function PDFNetworkStreamFullRequestReader_onDone(args) { - if (args) { - this._onProgressiveData(args.chunk); - } - this._done = true; - if (this._cachedChunks.length > 0) { - return; - } - this._requests.forEach(function (requestCapability) { - requestCapability.resolve({ - value: undefined, - done: true - }); - }); - this._requests = []; - }, - _onError: function PDFNetworkStreamFullRequestReader_onError(status) { - var url = this._url; - var exception; - if (status === 404 || status === 0 && /^file:/.test(url)) { - exception = new _util.MissingPDFException('Missing PDF "' + url + '".'); - } else { - exception = new _util.UnexpectedResponseException('Unexpected server response (' + status + ') while retrieving PDF "' + url + '".', status); - } - this._storedError = exception; - this._headersReceivedCapability.reject(exception); - this._requests.forEach(function (requestCapability) { - requestCapability.reject(exception); - }); - this._requests = []; - this._cachedChunks = []; - }, - _onProgress: function PDFNetworkStreamFullRequestReader_onProgress(data) { - if (this.onProgress) { - this.onProgress({ - loaded: data.loaded, - total: data.lengthComputable ? data.total : this._contentLength - }); - } - }, - get isRangeSupported() { - return this._isRangeSupported; - }, - get isStreamingSupported() { - return this._isStreamingSupported; - }, - get contentLength() { - return this._contentLength; - }, - get headersReady() { - return this._headersReceivedCapability.promise; - }, - read: function PDFNetworkStreamFullRequestReader_read() { - if (this._storedError) { - return Promise.reject(this._storedError); - } - if (this._cachedChunks.length > 0) { - var chunk = this._cachedChunks.shift(); - return Promise.resolve({ - value: chunk, - done: false - }); - } - if (this._done) { - return Promise.resolve({ - value: undefined, - done: true - }); - } - var requestCapability = (0, _util.createPromiseCapability)(); - this._requests.push(requestCapability); - return requestCapability.promise; - }, - cancel: function PDFNetworkStreamFullRequestReader_cancel(reason) { - this._done = true; - this._headersReceivedCapability.reject(reason); - this._requests.forEach(function (requestCapability) { - requestCapability.resolve({ - value: undefined, - done: true - }); - }); - this._requests = []; - if (this._manager.isPendingRequest(this._fullRequestId)) { - this._manager.abortRequest(this._fullRequestId); - } - this._fullRequestReader = null; - } -}; -function PDFNetworkStreamRangeRequestReader(manager, begin, end) { - this._manager = manager; - var args = { - onDone: this._onDone.bind(this), - onProgress: this._onProgress.bind(this) - }; - this._requestId = manager.requestRange(begin, end, args); - this._requests = []; - this._queuedChunk = null; - this._done = false; - this.onProgress = null; - this.onClosed = null; -} -PDFNetworkStreamRangeRequestReader.prototype = { - _close: function PDFNetworkStreamRangeRequestReader_close() { - if (this.onClosed) { - this.onClosed(this); - } - }, - _onDone: function PDFNetworkStreamRangeRequestReader_onDone(data) { - var chunk = data.chunk; - if (this._requests.length > 0) { - var requestCapability = this._requests.shift(); - requestCapability.resolve({ - value: chunk, - done: false - }); - } else { - this._queuedChunk = chunk; - } - this._done = true; - this._requests.forEach(function (requestCapability) { - requestCapability.resolve({ - value: undefined, - done: true - }); - }); - this._requests = []; - this._close(); - }, - _onProgress: function PDFNetworkStreamRangeRequestReader_onProgress(evt) { - if (!this.isStreamingSupported && this.onProgress) { - this.onProgress({ loaded: evt.loaded }); - } - }, - get isStreamingSupported() { - return false; - }, - read: function PDFNetworkStreamRangeRequestReader_read() { - if (this._queuedChunk !== null) { - var chunk = this._queuedChunk; - this._queuedChunk = null; - return Promise.resolve({ - value: chunk, - done: false - }); - } - if (this._done) { - return Promise.resolve({ - value: undefined, - done: true - }); - } - var requestCapability = (0, _util.createPromiseCapability)(); - this._requests.push(requestCapability); - return requestCapability.promise; - }, - cancel: function PDFNetworkStreamRangeRequestReader_cancel(reason) { - this._done = true; - this._requests.forEach(function (requestCapability) { - requestCapability.resolve({ - value: undefined, - done: true - }); - }); - this._requests = []; - if (this._manager.isPendingRequest(this._requestId)) { - this._manager.abortRequest(this._requestId); - } - this._close(); - } -}; -(0, _api.setPDFNetworkStreamClass)(PDFNetworkStream); -exports.PDFNetworkStream = PDFNetworkStream; -exports.NetworkManager = NetworkManager; +exports.BaseSVGFactory = BaseSVGFactory; /***/ }), /* 10 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; -(function (e, a) { - for (var i in a) { - e[i] = a[i]; - } -})(exports, function (modules) { - var installedModules = {}; - function __w_pdfjs_require__(moduleId) { - if (installedModules[moduleId]) return installedModules[moduleId].exports; - var module = installedModules[moduleId] = { - i: moduleId, - l: false, - exports: {} - }; - modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__); - module.l = true; - return module.exports; - } - __w_pdfjs_require__.m = modules; - __w_pdfjs_require__.c = installedModules; - __w_pdfjs_require__.i = function (value) { - return value; - }; - __w_pdfjs_require__.d = function (exports, name, getter) { - if (!__w_pdfjs_require__.o(exports, name)) { - Object.defineProperty(exports, name, { - configurable: false, - enumerable: true, - get: getter - }); - } - }; - __w_pdfjs_require__.n = function (module) { - var getter = module && module.__esModule ? function getDefault() { - return module['default']; - } : function getModuleExports() { - return module; - }; - __w_pdfjs_require__.d(getter, 'a', getter); - return getter; - }; - __w_pdfjs_require__.o = function (object, property) { - return Object.prototype.hasOwnProperty.call(object, property); - }; - __w_pdfjs_require__.p = ""; - return __w_pdfjs_require__(__w_pdfjs_require__.s = 7); -}([function (module, exports, __w_pdfjs_require__) { - "use strict"; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MurmurHash3_64 = void 0; - var _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) { - return typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); - } : function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); - }; - var _require = __w_pdfjs_require__(1), - assert = _require.assert; - function IsPropertyKey(argument) { - return typeof argument === 'string' || (typeof argument === 'undefined' ? 'undefined' : _typeof(argument)) === 'symbol'; - } - exports.typeIsObject = function (x) { - return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x !== null || typeof x === 'function'; - }; - exports.createDataProperty = function (o, p, v) { - assert(exports.typeIsObject(o)); - Object.defineProperty(o, p, { - value: v, - writable: true, - enumerable: true, - configurable: true - }); - }; - exports.createArrayFromList = function (elements) { - return elements.slice(); - }; - exports.ArrayBufferCopy = function (dest, destOffset, src, srcOffset, n) { - new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset); - }; - exports.CreateIterResultObject = function (value, done) { - assert(typeof done === 'boolean'); - var obj = {}; - Object.defineProperty(obj, 'value', { - value: value, - enumerable: true, - writable: true, - configurable: true - }); - Object.defineProperty(obj, 'done', { - value: done, - enumerable: true, - writable: true, - configurable: true - }); - return obj; - }; - exports.IsFiniteNonNegativeNumber = function (v) { - if (Number.isNaN(v)) { - return false; - } - if (v === Infinity) { - return false; - } - if (v < 0) { - return false; - } - return true; - }; - function Call(F, V, args) { - if (typeof F !== 'function') { - throw new TypeError('Argument is not a function'); - } - return Function.prototype.apply.call(F, V, args); - } - exports.InvokeOrNoop = function (O, P, args) { - assert(O !== undefined); - assert(IsPropertyKey(P)); - assert(Array.isArray(args)); - var method = O[P]; - if (method === undefined) { - return undefined; - } - return Call(method, O, args); - }; - exports.PromiseInvokeOrNoop = function (O, P, args) { - assert(O !== undefined); - assert(IsPropertyKey(P)); - assert(Array.isArray(args)); - try { - return Promise.resolve(exports.InvokeOrNoop(O, P, args)); - } catch (returnValueE) { - return Promise.reject(returnValueE); - } - }; - exports.PromiseInvokeOrPerformFallback = function (O, P, args, F, argsF) { - assert(O !== undefined); - assert(IsPropertyKey(P)); - assert(Array.isArray(args)); - assert(Array.isArray(argsF)); - var method = void 0; - try { - method = O[P]; - } catch (methodE) { - return Promise.reject(methodE); - } - if (method === undefined) { - return F.apply(null, argsF); - } - try { - return Promise.resolve(Call(method, O, args)); - } catch (e) { - return Promise.reject(e); - } - }; - exports.TransferArrayBuffer = function (O) { - return O.slice(); - }; - exports.ValidateAndNormalizeHighWaterMark = function (highWaterMark) { - highWaterMark = Number(highWaterMark); - if (Number.isNaN(highWaterMark) || highWaterMark < 0) { - throw new RangeError('highWaterMark property of a queuing strategy must be non-negative and non-NaN'); - } - return highWaterMark; - }; - exports.ValidateAndNormalizeQueuingStrategy = function (size, highWaterMark) { - if (size !== undefined && typeof size !== 'function') { - throw new TypeError('size property of a queuing strategy must be a function'); - } - highWaterMark = exports.ValidateAndNormalizeHighWaterMark(highWaterMark); - return { - size: size, - highWaterMark: highWaterMark - }; - }; -}, function (module, exports, __w_pdfjs_require__) { - "use strict"; +var _util = __w_pdfjs_require__(1); - function rethrowAssertionErrorRejection(e) { - if (e && e.constructor === AssertionError) { - setTimeout(function () { - throw e; - }, 0); - } - } - function AssertionError(message) { - this.name = 'AssertionError'; - this.message = message || ''; - this.stack = new Error().stack; - } - AssertionError.prototype = Object.create(Error.prototype); - AssertionError.prototype.constructor = AssertionError; - function assert(value, message) { - if (!value) { - throw new AssertionError(message); - } - } - module.exports = { - rethrowAssertionErrorRejection: rethrowAssertionErrorRejection, - AssertionError: AssertionError, - assert: assert - }; -}, function (module, exports, __w_pdfjs_require__) { - "use strict"; +const SEED = 0xc3d2e1f0; +const MASK_HIGH = 0xffff0000; +const MASK_LOW = 0xffff; - var _createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } +class MurmurHash3_64 { + constructor(seed) { + this.h1 = seed ? seed & 0xffffffff : SEED; + this.h2 = seed ? seed & 0xffffffff : SEED; } - var _require = __w_pdfjs_require__(0), - InvokeOrNoop = _require.InvokeOrNoop, - PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop, - ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy, - typeIsObject = _require.typeIsObject; - var _require2 = __w_pdfjs_require__(1), - assert = _require2.assert, - rethrowAssertionErrorRejection = _require2.rethrowAssertionErrorRejection; - var _require3 = __w_pdfjs_require__(3), - DequeueValue = _require3.DequeueValue, - EnqueueValueWithSize = _require3.EnqueueValueWithSize, - PeekQueueValue = _require3.PeekQueueValue, - ResetQueue = _require3.ResetQueue; - var WritableStream = function () { - function WritableStream() { - var underlyingSink = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - size = _ref.size, - _ref$highWaterMark = _ref.highWaterMark, - highWaterMark = _ref$highWaterMark === undefined ? 1 : _ref$highWaterMark; - _classCallCheck(this, WritableStream); - this._state = 'writable'; - this._storedError = undefined; - this._writer = undefined; - this._writableStreamController = undefined; - this._writeRequests = []; - this._inFlightWriteRequest = undefined; - this._closeRequest = undefined; - this._inFlightCloseRequest = undefined; - this._pendingAbortRequest = undefined; - this._backpressure = false; - var type = underlyingSink.type; - if (type !== undefined) { - throw new RangeError('Invalid type is specified'); - } - this._writableStreamController = new WritableStreamDefaultController(this, underlyingSink, size, highWaterMark); - this._writableStreamController.__startSteps(); - } - _createClass(WritableStream, [{ - key: 'abort', - value: function abort(reason) { - if (IsWritableStream(this) === false) { - return Promise.reject(streamBrandCheckException('abort')); - } - if (IsWritableStreamLocked(this) === true) { - return Promise.reject(new TypeError('Cannot abort a stream that already has a writer')); - } - return WritableStreamAbort(this, reason); - } - }, { - key: 'getWriter', - value: function getWriter() { - if (IsWritableStream(this) === false) { - throw streamBrandCheckException('getWriter'); - } - return AcquireWritableStreamDefaultWriter(this); - } - }, { - key: 'locked', - get: function get() { - if (IsWritableStream(this) === false) { - throw streamBrandCheckException('locked'); - } - return IsWritableStreamLocked(this); - } - }]); - return WritableStream; - }(); - module.exports = { - AcquireWritableStreamDefaultWriter: AcquireWritableStreamDefaultWriter, - IsWritableStream: IsWritableStream, - IsWritableStreamLocked: IsWritableStreamLocked, - WritableStream: WritableStream, - WritableStreamAbort: WritableStreamAbort, - WritableStreamDefaultControllerError: WritableStreamDefaultControllerError, - WritableStreamDefaultWriterCloseWithErrorPropagation: WritableStreamDefaultWriterCloseWithErrorPropagation, - WritableStreamDefaultWriterRelease: WritableStreamDefaultWriterRelease, - WritableStreamDefaultWriterWrite: WritableStreamDefaultWriterWrite, - WritableStreamCloseQueuedOrInFlight: WritableStreamCloseQueuedOrInFlight - }; - function AcquireWritableStreamDefaultWriter(stream) { - return new WritableStreamDefaultWriter(stream); - } - function IsWritableStream(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) { - return false; - } - return true; - } - function IsWritableStreamLocked(stream) { - assert(IsWritableStream(stream) === true, 'IsWritableStreamLocked should only be used on known writable streams'); - if (stream._writer === undefined) { - return false; - } - return true; - } - function WritableStreamAbort(stream, reason) { - var state = stream._state; - if (state === 'closed') { - return Promise.resolve(undefined); - } - if (state === 'errored') { - return Promise.reject(stream._storedError); - } - var error = new TypeError('Requested to abort'); - if (stream._pendingAbortRequest !== undefined) { - return Promise.reject(error); - } - assert(state === 'writable' || state === 'erroring', 'state must be writable or erroring'); - var wasAlreadyErroring = false; - if (state === 'erroring') { - wasAlreadyErroring = true; - reason = undefined; - } - var promise = new Promise(function (resolve, reject) { - stream._pendingAbortRequest = { - _resolve: resolve, - _reject: reject, - _reason: reason, - _wasAlreadyErroring: wasAlreadyErroring - }; - }); - if (wasAlreadyErroring === false) { - WritableStreamStartErroring(stream, error); - } - return promise; - } - function WritableStreamAddWriteRequest(stream) { - assert(IsWritableStreamLocked(stream) === true); - assert(stream._state === 'writable'); - var promise = new Promise(function (resolve, reject) { - var writeRequest = { - _resolve: resolve, - _reject: reject - }; - stream._writeRequests.push(writeRequest); - }); - return promise; - } - function WritableStreamDealWithRejection(stream, error) { - var state = stream._state; - if (state === 'writable') { - WritableStreamStartErroring(stream, error); - return; - } - assert(state === 'erroring'); - WritableStreamFinishErroring(stream); - } - function WritableStreamStartErroring(stream, reason) { - assert(stream._storedError === undefined, 'stream._storedError === undefined'); - assert(stream._state === 'writable', 'state must be writable'); - var controller = stream._writableStreamController; - assert(controller !== undefined, 'controller must not be undefined'); - stream._state = 'erroring'; - stream._storedError = reason; - var writer = stream._writer; - if (writer !== undefined) { - WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason); - } - if (WritableStreamHasOperationMarkedInFlight(stream) === false && controller._started === true) { - WritableStreamFinishErroring(stream); - } - } - function WritableStreamFinishErroring(stream) { - assert(stream._state === 'erroring', 'stream._state === erroring'); - assert(WritableStreamHasOperationMarkedInFlight(stream) === false, 'WritableStreamHasOperationMarkedInFlight(stream) === false'); - stream._state = 'errored'; - stream._writableStreamController.__errorSteps(); - var storedError = stream._storedError; - for (var i = 0; i < stream._writeRequests.length; i++) { - var writeRequest = stream._writeRequests[i]; - writeRequest._reject(storedError); - } - stream._writeRequests = []; - if (stream._pendingAbortRequest === undefined) { - WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - return; - } - var abortRequest = stream._pendingAbortRequest; - stream._pendingAbortRequest = undefined; - if (abortRequest._wasAlreadyErroring === true) { - abortRequest._reject(storedError); - WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - return; - } - var promise = stream._writableStreamController.__abortSteps(abortRequest._reason); - promise.then(function () { - abortRequest._resolve(); - WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - }, function (reason) { - abortRequest._reject(reason); - WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - }); - } - function WritableStreamFinishInFlightWrite(stream) { - assert(stream._inFlightWriteRequest !== undefined); - stream._inFlightWriteRequest._resolve(undefined); - stream._inFlightWriteRequest = undefined; - } - function WritableStreamFinishInFlightWriteWithError(stream, error) { - assert(stream._inFlightWriteRequest !== undefined); - stream._inFlightWriteRequest._reject(error); - stream._inFlightWriteRequest = undefined; - assert(stream._state === 'writable' || stream._state === 'erroring'); - WritableStreamDealWithRejection(stream, error); - } - function WritableStreamFinishInFlightClose(stream) { - assert(stream._inFlightCloseRequest !== undefined); - stream._inFlightCloseRequest._resolve(undefined); - stream._inFlightCloseRequest = undefined; - var state = stream._state; - assert(state === 'writable' || state === 'erroring'); - if (state === 'erroring') { - stream._storedError = undefined; - if (stream._pendingAbortRequest !== undefined) { - stream._pendingAbortRequest._resolve(); - stream._pendingAbortRequest = undefined; - } - } - stream._state = 'closed'; - var writer = stream._writer; - if (writer !== undefined) { - defaultWriterClosedPromiseResolve(writer); - } - assert(stream._pendingAbortRequest === undefined, 'stream._pendingAbortRequest === undefined'); - assert(stream._storedError === undefined, 'stream._storedError === undefined'); - } - function WritableStreamFinishInFlightCloseWithError(stream, error) { - assert(stream._inFlightCloseRequest !== undefined); - stream._inFlightCloseRequest._reject(error); - stream._inFlightCloseRequest = undefined; - assert(stream._state === 'writable' || stream._state === 'erroring'); - if (stream._pendingAbortRequest !== undefined) { - stream._pendingAbortRequest._reject(error); - stream._pendingAbortRequest = undefined; - } - WritableStreamDealWithRejection(stream, error); - } - function WritableStreamCloseQueuedOrInFlight(stream) { - if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) { - return false; - } - return true; - } - function WritableStreamHasOperationMarkedInFlight(stream) { - if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) { - return false; - } - return true; - } - function WritableStreamMarkCloseRequestInFlight(stream) { - assert(stream._inFlightCloseRequest === undefined); - assert(stream._closeRequest !== undefined); - stream._inFlightCloseRequest = stream._closeRequest; - stream._closeRequest = undefined; - } - function WritableStreamMarkFirstWriteRequestInFlight(stream) { - assert(stream._inFlightWriteRequest === undefined, 'there must be no pending write request'); - assert(stream._writeRequests.length !== 0, 'writeRequests must not be empty'); - stream._inFlightWriteRequest = stream._writeRequests.shift(); - } - function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) { - assert(stream._state === 'errored', '_stream_.[[state]] is `"errored"`'); - if (stream._closeRequest !== undefined) { - assert(stream._inFlightCloseRequest === undefined); - stream._closeRequest._reject(stream._storedError); - stream._closeRequest = undefined; - } - var writer = stream._writer; - if (writer !== undefined) { - defaultWriterClosedPromiseReject(writer, stream._storedError); - writer._closedPromise.catch(function () {}); - } - } - function WritableStreamUpdateBackpressure(stream, backpressure) { - assert(stream._state === 'writable'); - assert(WritableStreamCloseQueuedOrInFlight(stream) === false); - var writer = stream._writer; - if (writer !== undefined && backpressure !== stream._backpressure) { - if (backpressure === true) { - defaultWriterReadyPromiseReset(writer); - } else { - assert(backpressure === false); - defaultWriterReadyPromiseResolve(writer); - } - } - stream._backpressure = backpressure; - } - var WritableStreamDefaultWriter = function () { - function WritableStreamDefaultWriter(stream) { - _classCallCheck(this, WritableStreamDefaultWriter); - if (IsWritableStream(stream) === false) { - throw new TypeError('WritableStreamDefaultWriter can only be constructed with a WritableStream instance'); - } - if (IsWritableStreamLocked(stream) === true) { - throw new TypeError('This stream has already been locked for exclusive writing by another writer'); - } - this._ownerWritableStream = stream; - stream._writer = this; - var state = stream._state; - if (state === 'writable') { - if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._backpressure === true) { - defaultWriterReadyPromiseInitialize(this); + + update(input) { + let data, length; + + if (typeof input === "string") { + data = new Uint8Array(input.length * 2); + length = 0; + + for (let i = 0, ii = input.length; i < ii; i++) { + const code = input.charCodeAt(i); + + if (code <= 0xff) { + data[length++] = code; } else { - defaultWriterReadyPromiseInitializeAsResolved(this); + data[length++] = code >>> 8; + data[length++] = code & 0xff; } - defaultWriterClosedPromiseInitialize(this); - } else if (state === 'erroring') { - defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError); - this._readyPromise.catch(function () {}); - defaultWriterClosedPromiseInitialize(this); - } else if (state === 'closed') { - defaultWriterReadyPromiseInitializeAsResolved(this); - defaultWriterClosedPromiseInitializeAsResolved(this); - } else { - assert(state === 'errored', 'state must be errored'); - var storedError = stream._storedError; - defaultWriterReadyPromiseInitializeAsRejected(this, storedError); - this._readyPromise.catch(function () {}); - defaultWriterClosedPromiseInitializeAsRejected(this, storedError); - this._closedPromise.catch(function () {}); } - } - _createClass(WritableStreamDefaultWriter, [{ - key: 'abort', - value: function abort(reason) { - if (IsWritableStreamDefaultWriter(this) === false) { - return Promise.reject(defaultWriterBrandCheckException('abort')); - } - if (this._ownerWritableStream === undefined) { - return Promise.reject(defaultWriterLockException('abort')); - } - return WritableStreamDefaultWriterAbort(this, reason); - } - }, { - key: 'close', - value: function close() { - if (IsWritableStreamDefaultWriter(this) === false) { - return Promise.reject(defaultWriterBrandCheckException('close')); - } - var stream = this._ownerWritableStream; - if (stream === undefined) { - return Promise.reject(defaultWriterLockException('close')); - } - if (WritableStreamCloseQueuedOrInFlight(stream) === true) { - return Promise.reject(new TypeError('cannot close an already-closing stream')); - } - return WritableStreamDefaultWriterClose(this); - } - }, { - key: 'releaseLock', - value: function releaseLock() { - if (IsWritableStreamDefaultWriter(this) === false) { - throw defaultWriterBrandCheckException('releaseLock'); - } - var stream = this._ownerWritableStream; - if (stream === undefined) { - return; - } - assert(stream._writer !== undefined); - WritableStreamDefaultWriterRelease(this); - } - }, { - key: 'write', - value: function write(chunk) { - if (IsWritableStreamDefaultWriter(this) === false) { - return Promise.reject(defaultWriterBrandCheckException('write')); - } - if (this._ownerWritableStream === undefined) { - return Promise.reject(defaultWriterLockException('write to')); - } - return WritableStreamDefaultWriterWrite(this, chunk); - } - }, { - key: 'closed', - get: function get() { - if (IsWritableStreamDefaultWriter(this) === false) { - return Promise.reject(defaultWriterBrandCheckException('closed')); - } - return this._closedPromise; - } - }, { - key: 'desiredSize', - get: function get() { - if (IsWritableStreamDefaultWriter(this) === false) { - throw defaultWriterBrandCheckException('desiredSize'); - } - if (this._ownerWritableStream === undefined) { - throw defaultWriterLockException('desiredSize'); - } - return WritableStreamDefaultWriterGetDesiredSize(this); - } - }, { - key: 'ready', - get: function get() { - if (IsWritableStreamDefaultWriter(this) === false) { - return Promise.reject(defaultWriterBrandCheckException('ready')); - } - return this._readyPromise; - } - }]); - return WritableStreamDefaultWriter; - }(); - function IsWritableStreamDefaultWriter(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) { - return false; - } - return true; - } - function WritableStreamDefaultWriterAbort(writer, reason) { - var stream = writer._ownerWritableStream; - assert(stream !== undefined); - return WritableStreamAbort(stream, reason); - } - function WritableStreamDefaultWriterClose(writer) { - var stream = writer._ownerWritableStream; - assert(stream !== undefined); - var state = stream._state; - if (state === 'closed' || state === 'errored') { - return Promise.reject(new TypeError('The stream (in ' + state + ' state) is not in the writable state and cannot be closed')); - } - assert(state === 'writable' || state === 'erroring'); - assert(WritableStreamCloseQueuedOrInFlight(stream) === false); - var promise = new Promise(function (resolve, reject) { - var closeRequest = { - _resolve: resolve, - _reject: reject - }; - stream._closeRequest = closeRequest; - }); - if (stream._backpressure === true && state === 'writable') { - defaultWriterReadyPromiseResolve(writer); - } - WritableStreamDefaultControllerClose(stream._writableStreamController); - return promise; - } - function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) { - var stream = writer._ownerWritableStream; - assert(stream !== undefined); - var state = stream._state; - if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') { - return Promise.resolve(); - } - if (state === 'errored') { - return Promise.reject(stream._storedError); - } - assert(state === 'writable' || state === 'erroring'); - return WritableStreamDefaultWriterClose(writer); - } - function WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) { - if (writer._closedPromiseState === 'pending') { - defaultWriterClosedPromiseReject(writer, error); + } else if ((0, _util.isArrayBuffer)(input)) { + data = input.slice(); + length = data.byteLength; } else { - defaultWriterClosedPromiseResetToRejected(writer, error); + throw new Error("Wrong data format in MurmurHash3_64_update. " + "Input must be a string or array."); } - writer._closedPromise.catch(function () {}); - } - function WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) { - if (writer._readyPromiseState === 'pending') { - defaultWriterReadyPromiseReject(writer, error); - } else { - defaultWriterReadyPromiseResetToRejected(writer, error); - } - writer._readyPromise.catch(function () {}); - } - function WritableStreamDefaultWriterGetDesiredSize(writer) { - var stream = writer._ownerWritableStream; - var state = stream._state; - if (state === 'errored' || state === 'erroring') { - return null; - } - if (state === 'closed') { - return 0; - } - return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController); - } - function WritableStreamDefaultWriterRelease(writer) { - var stream = writer._ownerWritableStream; - assert(stream !== undefined); - assert(stream._writer === writer); - var releasedError = new TypeError('Writer was released and can no longer be used to monitor the stream\'s closedness'); - WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError); - WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError); - stream._writer = undefined; - writer._ownerWritableStream = undefined; - } - function WritableStreamDefaultWriterWrite(writer, chunk) { - var stream = writer._ownerWritableStream; - assert(stream !== undefined); - var controller = stream._writableStreamController; - var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk); - if (stream !== writer._ownerWritableStream) { - return Promise.reject(defaultWriterLockException('write to')); - } - var state = stream._state; - if (state === 'errored') { - return Promise.reject(stream._storedError); - } - if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') { - return Promise.reject(new TypeError('The stream is closing or closed and cannot be written to')); - } - if (state === 'erroring') { - return Promise.reject(stream._storedError); - } - assert(state === 'writable'); - var promise = WritableStreamAddWriteRequest(stream); - WritableStreamDefaultControllerWrite(controller, chunk, chunkSize); - return promise; - } - var WritableStreamDefaultController = function () { - function WritableStreamDefaultController(stream, underlyingSink, size, highWaterMark) { - _classCallCheck(this, WritableStreamDefaultController); - if (IsWritableStream(stream) === false) { - throw new TypeError('WritableStreamDefaultController can only be constructed with a WritableStream instance'); - } - if (stream._writableStreamController !== undefined) { - throw new TypeError('WritableStreamDefaultController instances can only be created by the WritableStream constructor'); - } - this._controlledWritableStream = stream; - this._underlyingSink = underlyingSink; - this._queue = undefined; - this._queueTotalSize = undefined; - ResetQueue(this); - this._started = false; - var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark); - this._strategySize = normalizedStrategy.size; - this._strategyHWM = normalizedStrategy.highWaterMark; - var backpressure = WritableStreamDefaultControllerGetBackpressure(this); - WritableStreamUpdateBackpressure(stream, backpressure); - } - _createClass(WritableStreamDefaultController, [{ - key: 'error', - value: function error(e) { - if (IsWritableStreamDefaultController(this) === false) { - throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController'); - } - var state = this._controlledWritableStream._state; - if (state !== 'writable') { - return; - } - WritableStreamDefaultControllerError(this, e); - } - }, { - key: '__abortSteps', - value: function __abortSteps(reason) { - return PromiseInvokeOrNoop(this._underlyingSink, 'abort', [reason]); - } - }, { - key: '__errorSteps', - value: function __errorSteps() { - ResetQueue(this); - } - }, { - key: '__startSteps', - value: function __startSteps() { - var _this = this; - var startResult = InvokeOrNoop(this._underlyingSink, 'start', [this]); - var stream = this._controlledWritableStream; - Promise.resolve(startResult).then(function () { - assert(stream._state === 'writable' || stream._state === 'erroring'); - _this._started = true; - WritableStreamDefaultControllerAdvanceQueueIfNeeded(_this); - }, function (r) { - assert(stream._state === 'writable' || stream._state === 'erroring'); - _this._started = true; - WritableStreamDealWithRejection(stream, r); - }).catch(rethrowAssertionErrorRejection); - } - }]); - return WritableStreamDefaultController; - }(); - function WritableStreamDefaultControllerClose(controller) { - EnqueueValueWithSize(controller, 'close', 0); - WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); - } - function WritableStreamDefaultControllerGetChunkSize(controller, chunk) { - var strategySize = controller._strategySize; - if (strategySize === undefined) { - return 1; - } - try { - return strategySize(chunk); - } catch (chunkSizeE) { - WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE); - return 1; - } - } - function WritableStreamDefaultControllerGetDesiredSize(controller) { - return controller._strategyHWM - controller._queueTotalSize; - } - function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) { - var writeRecord = { chunk: chunk }; - try { - EnqueueValueWithSize(controller, writeRecord, chunkSize); - } catch (enqueueE) { - WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE); - return; - } - var stream = controller._controlledWritableStream; - if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._state === 'writable') { - var backpressure = WritableStreamDefaultControllerGetBackpressure(controller); - WritableStreamUpdateBackpressure(stream, backpressure); - } - WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); - } - function IsWritableStreamDefaultController(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSink')) { - return false; - } - return true; - } - function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) { - var stream = controller._controlledWritableStream; - if (controller._started === false) { - return; - } - if (stream._inFlightWriteRequest !== undefined) { - return; - } - var state = stream._state; - if (state === 'closed' || state === 'errored') { - return; - } - if (state === 'erroring') { - WritableStreamFinishErroring(stream); - return; - } - if (controller._queue.length === 0) { - return; - } - var writeRecord = PeekQueueValue(controller); - if (writeRecord === 'close') { - WritableStreamDefaultControllerProcessClose(controller); - } else { - WritableStreamDefaultControllerProcessWrite(controller, writeRecord.chunk); - } - } - function WritableStreamDefaultControllerErrorIfNeeded(controller, error) { - if (controller._controlledWritableStream._state === 'writable') { - WritableStreamDefaultControllerError(controller, error); - } - } - function WritableStreamDefaultControllerProcessClose(controller) { - var stream = controller._controlledWritableStream; - WritableStreamMarkCloseRequestInFlight(stream); - DequeueValue(controller); - assert(controller._queue.length === 0, 'queue must be empty once the final write record is dequeued'); - var sinkClosePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'close', []); - sinkClosePromise.then(function () { - WritableStreamFinishInFlightClose(stream); - }, function (reason) { - WritableStreamFinishInFlightCloseWithError(stream, reason); - }).catch(rethrowAssertionErrorRejection); - } - function WritableStreamDefaultControllerProcessWrite(controller, chunk) { - var stream = controller._controlledWritableStream; - WritableStreamMarkFirstWriteRequestInFlight(stream); - var sinkWritePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'write', [chunk, controller]); - sinkWritePromise.then(function () { - WritableStreamFinishInFlightWrite(stream); - var state = stream._state; - assert(state === 'writable' || state === 'erroring'); - DequeueValue(controller); - if (WritableStreamCloseQueuedOrInFlight(stream) === false && state === 'writable') { - var backpressure = WritableStreamDefaultControllerGetBackpressure(controller); - WritableStreamUpdateBackpressure(stream, backpressure); - } - WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); - }, function (reason) { - WritableStreamFinishInFlightWriteWithError(stream, reason); - }).catch(rethrowAssertionErrorRejection); - } - function WritableStreamDefaultControllerGetBackpressure(controller) { - var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller); - return desiredSize <= 0; - } - function WritableStreamDefaultControllerError(controller, error) { - var stream = controller._controlledWritableStream; - assert(stream._state === 'writable'); - WritableStreamStartErroring(stream, error); - } - function streamBrandCheckException(name) { - return new TypeError('WritableStream.prototype.' + name + ' can only be used on a WritableStream'); - } - function defaultWriterBrandCheckException(name) { - return new TypeError('WritableStreamDefaultWriter.prototype.' + name + ' can only be used on a WritableStreamDefaultWriter'); - } - function defaultWriterLockException(name) { - return new TypeError('Cannot ' + name + ' a stream using a released writer'); - } - function defaultWriterClosedPromiseInitialize(writer) { - writer._closedPromise = new Promise(function (resolve, reject) { - writer._closedPromise_resolve = resolve; - writer._closedPromise_reject = reject; - writer._closedPromiseState = 'pending'; - }); - } - function defaultWriterClosedPromiseInitializeAsRejected(writer, reason) { - writer._closedPromise = Promise.reject(reason); - writer._closedPromise_resolve = undefined; - writer._closedPromise_reject = undefined; - writer._closedPromiseState = 'rejected'; - } - function defaultWriterClosedPromiseInitializeAsResolved(writer) { - writer._closedPromise = Promise.resolve(undefined); - writer._closedPromise_resolve = undefined; - writer._closedPromise_reject = undefined; - writer._closedPromiseState = 'resolved'; - } - function defaultWriterClosedPromiseReject(writer, reason) { - assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined'); - assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined'); - assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending'); - writer._closedPromise_reject(reason); - writer._closedPromise_resolve = undefined; - writer._closedPromise_reject = undefined; - writer._closedPromiseState = 'rejected'; - } - function defaultWriterClosedPromiseResetToRejected(writer, reason) { - assert(writer._closedPromise_resolve === undefined, 'writer._closedPromise_resolve === undefined'); - assert(writer._closedPromise_reject === undefined, 'writer._closedPromise_reject === undefined'); - assert(writer._closedPromiseState !== 'pending', 'writer._closedPromiseState is not pending'); - writer._closedPromise = Promise.reject(reason); - writer._closedPromiseState = 'rejected'; - } - function defaultWriterClosedPromiseResolve(writer) { - assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined'); - assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined'); - assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending'); - writer._closedPromise_resolve(undefined); - writer._closedPromise_resolve = undefined; - writer._closedPromise_reject = undefined; - writer._closedPromiseState = 'resolved'; - } - function defaultWriterReadyPromiseInitialize(writer) { - writer._readyPromise = new Promise(function (resolve, reject) { - writer._readyPromise_resolve = resolve; - writer._readyPromise_reject = reject; - }); - writer._readyPromiseState = 'pending'; - } - function defaultWriterReadyPromiseInitializeAsRejected(writer, reason) { - writer._readyPromise = Promise.reject(reason); - writer._readyPromise_resolve = undefined; - writer._readyPromise_reject = undefined; - writer._readyPromiseState = 'rejected'; - } - function defaultWriterReadyPromiseInitializeAsResolved(writer) { - writer._readyPromise = Promise.resolve(undefined); - writer._readyPromise_resolve = undefined; - writer._readyPromise_reject = undefined; - writer._readyPromiseState = 'fulfilled'; - } - function defaultWriterReadyPromiseReject(writer, reason) { - assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined'); - assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined'); - writer._readyPromise_reject(reason); - writer._readyPromise_resolve = undefined; - writer._readyPromise_reject = undefined; - writer._readyPromiseState = 'rejected'; - } - function defaultWriterReadyPromiseReset(writer) { - assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined'); - assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined'); - writer._readyPromise = new Promise(function (resolve, reject) { - writer._readyPromise_resolve = resolve; - writer._readyPromise_reject = reject; - }); - writer._readyPromiseState = 'pending'; - } - function defaultWriterReadyPromiseResetToRejected(writer, reason) { - assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined'); - assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined'); - writer._readyPromise = Promise.reject(reason); - writer._readyPromiseState = 'rejected'; - } - function defaultWriterReadyPromiseResolve(writer) { - assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined'); - assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined'); - writer._readyPromise_resolve(undefined); - writer._readyPromise_resolve = undefined; - writer._readyPromise_reject = undefined; - writer._readyPromiseState = 'fulfilled'; - } -}, function (module, exports, __w_pdfjs_require__) { - "use strict"; - var _require = __w_pdfjs_require__(0), - IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber; - var _require2 = __w_pdfjs_require__(1), - assert = _require2.assert; - exports.DequeueValue = function (container) { - assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: DequeueValue should only be used on containers with [[queue]] and [[queueTotalSize]].'); - assert(container._queue.length > 0, 'Spec-level failure: should never dequeue from an empty queue.'); - var pair = container._queue.shift(); - container._queueTotalSize -= pair.size; - if (container._queueTotalSize < 0) { - container._queueTotalSize = 0; - } - return pair.value; - }; - exports.EnqueueValueWithSize = function (container, value, size) { - assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: EnqueueValueWithSize should only be used on containers with [[queue]] and ' + '[[queueTotalSize]].'); - size = Number(size); - if (!IsFiniteNonNegativeNumber(size)) { - throw new RangeError('Size must be a finite, non-NaN, non-negative number.'); - } - container._queue.push({ - value: value, - size: size - }); - container._queueTotalSize += size; - }; - exports.PeekQueueValue = function (container) { - assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: PeekQueueValue should only be used on containers with [[queue]] and [[queueTotalSize]].'); - assert(container._queue.length > 0, 'Spec-level failure: should never peek at an empty queue.'); - var pair = container._queue[0]; - return pair.value; - }; - exports.ResetQueue = function (container) { - assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: ResetQueue should only be used on containers with [[queue]] and [[queueTotalSize]].'); - container._queue = []; - container._queueTotalSize = 0; - }; -}, function (module, exports, __w_pdfjs_require__) { - "use strict"; + const blockCounts = length >> 2; + const tailLength = length - blockCounts * 4; + const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts); + let k1 = 0, + k2 = 0; + let h1 = this.h1, + h2 = this.h2; + const C1 = 0xcc9e2d51, + C2 = 0x1b873593; + const C1_LOW = C1 & MASK_LOW, + C2_LOW = C2 & MASK_LOW; - var _createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - var _require = __w_pdfjs_require__(0), - ArrayBufferCopy = _require.ArrayBufferCopy, - CreateIterResultObject = _require.CreateIterResultObject, - IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber, - InvokeOrNoop = _require.InvokeOrNoop, - PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop, - TransferArrayBuffer = _require.TransferArrayBuffer, - ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy, - ValidateAndNormalizeHighWaterMark = _require.ValidateAndNormalizeHighWaterMark; - var _require2 = __w_pdfjs_require__(0), - createArrayFromList = _require2.createArrayFromList, - createDataProperty = _require2.createDataProperty, - typeIsObject = _require2.typeIsObject; - var _require3 = __w_pdfjs_require__(1), - assert = _require3.assert, - rethrowAssertionErrorRejection = _require3.rethrowAssertionErrorRejection; - var _require4 = __w_pdfjs_require__(3), - DequeueValue = _require4.DequeueValue, - EnqueueValueWithSize = _require4.EnqueueValueWithSize, - ResetQueue = _require4.ResetQueue; - var _require5 = __w_pdfjs_require__(2), - AcquireWritableStreamDefaultWriter = _require5.AcquireWritableStreamDefaultWriter, - IsWritableStream = _require5.IsWritableStream, - IsWritableStreamLocked = _require5.IsWritableStreamLocked, - WritableStreamAbort = _require5.WritableStreamAbort, - WritableStreamDefaultWriterCloseWithErrorPropagation = _require5.WritableStreamDefaultWriterCloseWithErrorPropagation, - WritableStreamDefaultWriterRelease = _require5.WritableStreamDefaultWriterRelease, - WritableStreamDefaultWriterWrite = _require5.WritableStreamDefaultWriterWrite, - WritableStreamCloseQueuedOrInFlight = _require5.WritableStreamCloseQueuedOrInFlight; - var ReadableStream = function () { - function ReadableStream() { - var underlyingSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - size = _ref.size, - highWaterMark = _ref.highWaterMark; - _classCallCheck(this, ReadableStream); - this._state = 'readable'; - this._reader = undefined; - this._storedError = undefined; - this._disturbed = false; - this._readableStreamController = undefined; - var type = underlyingSource.type; - var typeString = String(type); - if (typeString === 'bytes') { - if (highWaterMark === undefined) { - highWaterMark = 0; - } - this._readableStreamController = new ReadableByteStreamController(this, underlyingSource, highWaterMark); - } else if (type === undefined) { - if (highWaterMark === undefined) { - highWaterMark = 1; - } - this._readableStreamController = new ReadableStreamDefaultController(this, underlyingSource, size, highWaterMark); + for (let i = 0; i < blockCounts; i++) { + if (i & 1) { + k1 = dataUint32[i]; + k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW; + k1 = k1 << 15 | k1 >>> 17; + k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW; + h1 ^= k1; + h1 = h1 << 13 | h1 >>> 19; + h1 = h1 * 5 + 0xe6546b64; } else { - throw new RangeError('Invalid type is specified'); + k2 = dataUint32[i]; + k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW; + k2 = k2 << 15 | k2 >>> 17; + k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW; + h2 ^= k2; + h2 = h2 << 13 | h2 >>> 19; + h2 = h2 * 5 + 0xe6546b64; } } - _createClass(ReadableStream, [{ - key: 'cancel', - value: function cancel(reason) { - if (IsReadableStream(this) === false) { - return Promise.reject(streamBrandCheckException('cancel')); - } - if (IsReadableStreamLocked(this) === true) { - return Promise.reject(new TypeError('Cannot cancel a stream that already has a reader')); - } - return ReadableStreamCancel(this, reason); - } - }, { - key: 'getReader', - value: function getReader() { - var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - mode = _ref2.mode; - if (IsReadableStream(this) === false) { - throw streamBrandCheckException('getReader'); - } - if (mode === undefined) { - return AcquireReadableStreamDefaultReader(this); - } - mode = String(mode); - if (mode === 'byob') { - return AcquireReadableStreamBYOBReader(this); - } - throw new RangeError('Invalid mode is specified'); - } - }, { - key: 'pipeThrough', - value: function pipeThrough(_ref3, options) { - var writable = _ref3.writable, - readable = _ref3.readable; - var promise = this.pipeTo(writable, options); - ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise); - return readable; - } - }, { - key: 'pipeTo', - value: function pipeTo(dest) { - var _this = this; - var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - preventClose = _ref4.preventClose, - preventAbort = _ref4.preventAbort, - preventCancel = _ref4.preventCancel; - if (IsReadableStream(this) === false) { - return Promise.reject(streamBrandCheckException('pipeTo')); - } - if (IsWritableStream(dest) === false) { - return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo\'s first argument must be a WritableStream')); - } - preventClose = Boolean(preventClose); - preventAbort = Boolean(preventAbort); - preventCancel = Boolean(preventCancel); - if (IsReadableStreamLocked(this) === true) { - return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream')); - } - if (IsWritableStreamLocked(dest) === true) { - return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream')); - } - var reader = AcquireReadableStreamDefaultReader(this); - var writer = AcquireWritableStreamDefaultWriter(dest); - var shuttingDown = false; - var currentWrite = Promise.resolve(); - return new Promise(function (resolve, reject) { - function pipeLoop() { - currentWrite = Promise.resolve(); - if (shuttingDown === true) { - return Promise.resolve(); - } - return writer._readyPromise.then(function () { - return ReadableStreamDefaultReaderRead(reader).then(function (_ref5) { - var value = _ref5.value, - done = _ref5.done; - if (done === true) { - return; - } - currentWrite = WritableStreamDefaultWriterWrite(writer, value).catch(function () {}); - }); - }).then(pipeLoop); - } - isOrBecomesErrored(_this, reader._closedPromise, function (storedError) { - if (preventAbort === false) { - shutdownWithAction(function () { - return WritableStreamAbort(dest, storedError); - }, true, storedError); - } else { - shutdown(true, storedError); - } - }); - isOrBecomesErrored(dest, writer._closedPromise, function (storedError) { - if (preventCancel === false) { - shutdownWithAction(function () { - return ReadableStreamCancel(_this, storedError); - }, true, storedError); - } else { - shutdown(true, storedError); - } - }); - isOrBecomesClosed(_this, reader._closedPromise, function () { - if (preventClose === false) { - shutdownWithAction(function () { - return WritableStreamDefaultWriterCloseWithErrorPropagation(writer); - }); - } else { - shutdown(); - } - }); - if (WritableStreamCloseQueuedOrInFlight(dest) === true || dest._state === 'closed') { - var destClosed = new TypeError('the destination writable stream closed before all data could be piped to it'); - if (preventCancel === false) { - shutdownWithAction(function () { - return ReadableStreamCancel(_this, destClosed); - }, true, destClosed); - } else { - shutdown(true, destClosed); - } - } - pipeLoop().catch(function (err) { - currentWrite = Promise.resolve(); - rethrowAssertionErrorRejection(err); - }); - function waitForWritesToFinish() { - var oldCurrentWrite = currentWrite; - return currentWrite.then(function () { - return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined; - }); - } - function isOrBecomesErrored(stream, promise, action) { - if (stream._state === 'errored') { - action(stream._storedError); - } else { - promise.catch(action).catch(rethrowAssertionErrorRejection); - } - } - function isOrBecomesClosed(stream, promise, action) { - if (stream._state === 'closed') { - action(); - } else { - promise.then(action).catch(rethrowAssertionErrorRejection); - } - } - function shutdownWithAction(action, originalIsError, originalError) { - if (shuttingDown === true) { - return; - } - shuttingDown = true; - if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) { - waitForWritesToFinish().then(doTheRest); - } else { - doTheRest(); - } - function doTheRest() { - action().then(function () { - return finalize(originalIsError, originalError); - }, function (newError) { - return finalize(true, newError); - }).catch(rethrowAssertionErrorRejection); - } - } - function shutdown(isError, error) { - if (shuttingDown === true) { - return; - } - shuttingDown = true; - if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) { - waitForWritesToFinish().then(function () { - return finalize(isError, error); - }).catch(rethrowAssertionErrorRejection); - } else { - finalize(isError, error); - } - } - function finalize(isError, error) { - WritableStreamDefaultWriterRelease(writer); - ReadableStreamReaderGenericRelease(reader); - if (isError) { - reject(error); - } else { - resolve(undefined); - } - } - }); - } - }, { - key: 'tee', - value: function tee() { - if (IsReadableStream(this) === false) { - throw streamBrandCheckException('tee'); - } - var branches = ReadableStreamTee(this, false); - return createArrayFromList(branches); - } - }, { - key: 'locked', - get: function get() { - if (IsReadableStream(this) === false) { - throw streamBrandCheckException('locked'); - } - return IsReadableStreamLocked(this); - } - }]); - return ReadableStream; - }(); - module.exports = { - ReadableStream: ReadableStream, - IsReadableStreamDisturbed: IsReadableStreamDisturbed, - ReadableStreamDefaultControllerClose: ReadableStreamDefaultControllerClose, - ReadableStreamDefaultControllerEnqueue: ReadableStreamDefaultControllerEnqueue, - ReadableStreamDefaultControllerError: ReadableStreamDefaultControllerError, - ReadableStreamDefaultControllerGetDesiredSize: ReadableStreamDefaultControllerGetDesiredSize - }; - function AcquireReadableStreamBYOBReader(stream) { - return new ReadableStreamBYOBReader(stream); - } - function AcquireReadableStreamDefaultReader(stream) { - return new ReadableStreamDefaultReader(stream); - } - function IsReadableStream(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) { - return false; - } - return true; - } - function IsReadableStreamDisturbed(stream) { - assert(IsReadableStream(stream) === true, 'IsReadableStreamDisturbed should only be used on known readable streams'); - return stream._disturbed; - } - function IsReadableStreamLocked(stream) { - assert(IsReadableStream(stream) === true, 'IsReadableStreamLocked should only be used on known readable streams'); - if (stream._reader === undefined) { - return false; - } - return true; - } - function ReadableStreamTee(stream, cloneForBranch2) { - assert(IsReadableStream(stream) === true); - assert(typeof cloneForBranch2 === 'boolean'); - var reader = AcquireReadableStreamDefaultReader(stream); - var teeState = { - closedOrErrored: false, - canceled1: false, - canceled2: false, - reason1: undefined, - reason2: undefined - }; - teeState.promise = new Promise(function (resolve) { - teeState._resolve = resolve; - }); - var pull = create_ReadableStreamTeePullFunction(); - pull._reader = reader; - pull._teeState = teeState; - pull._cloneForBranch2 = cloneForBranch2; - var cancel1 = create_ReadableStreamTeeBranch1CancelFunction(); - cancel1._stream = stream; - cancel1._teeState = teeState; - var cancel2 = create_ReadableStreamTeeBranch2CancelFunction(); - cancel2._stream = stream; - cancel2._teeState = teeState; - var underlyingSource1 = Object.create(Object.prototype); - createDataProperty(underlyingSource1, 'pull', pull); - createDataProperty(underlyingSource1, 'cancel', cancel1); - var branch1Stream = new ReadableStream(underlyingSource1); - var underlyingSource2 = Object.create(Object.prototype); - createDataProperty(underlyingSource2, 'pull', pull); - createDataProperty(underlyingSource2, 'cancel', cancel2); - var branch2Stream = new ReadableStream(underlyingSource2); - pull._branch1 = branch1Stream._readableStreamController; - pull._branch2 = branch2Stream._readableStreamController; - reader._closedPromise.catch(function (r) { - if (teeState.closedOrErrored === true) { - return; - } - ReadableStreamDefaultControllerError(pull._branch1, r); - ReadableStreamDefaultControllerError(pull._branch2, r); - teeState.closedOrErrored = true; - }); - return [branch1Stream, branch2Stream]; - } - function create_ReadableStreamTeePullFunction() { - function f() { - var reader = f._reader, - branch1 = f._branch1, - branch2 = f._branch2, - teeState = f._teeState; - return ReadableStreamDefaultReaderRead(reader).then(function (result) { - assert(typeIsObject(result)); - var value = result.value; - var done = result.done; - assert(typeof done === 'boolean'); - if (done === true && teeState.closedOrErrored === false) { - if (teeState.canceled1 === false) { - ReadableStreamDefaultControllerClose(branch1); - } - if (teeState.canceled2 === false) { - ReadableStreamDefaultControllerClose(branch2); - } - teeState.closedOrErrored = true; - } - if (teeState.closedOrErrored === true) { - return; - } - var value1 = value; - var value2 = value; - if (teeState.canceled1 === false) { - ReadableStreamDefaultControllerEnqueue(branch1, value1); - } - if (teeState.canceled2 === false) { - ReadableStreamDefaultControllerEnqueue(branch2, value2); - } - }); - } - return f; - } - function create_ReadableStreamTeeBranch1CancelFunction() { - function f(reason) { - var stream = f._stream, - teeState = f._teeState; - teeState.canceled1 = true; - teeState.reason1 = reason; - if (teeState.canceled2 === true) { - var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]); - var cancelResult = ReadableStreamCancel(stream, compositeReason); - teeState._resolve(cancelResult); - } - return teeState.promise; - } - return f; - } - function create_ReadableStreamTeeBranch2CancelFunction() { - function f(reason) { - var stream = f._stream, - teeState = f._teeState; - teeState.canceled2 = true; - teeState.reason2 = reason; - if (teeState.canceled1 === true) { - var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]); - var cancelResult = ReadableStreamCancel(stream, compositeReason); - teeState._resolve(cancelResult); - } - return teeState.promise; - } - return f; - } - function ReadableStreamAddReadIntoRequest(stream) { - assert(IsReadableStreamBYOBReader(stream._reader) === true); - assert(stream._state === 'readable' || stream._state === 'closed'); - var promise = new Promise(function (resolve, reject) { - var readIntoRequest = { - _resolve: resolve, - _reject: reject - }; - stream._reader._readIntoRequests.push(readIntoRequest); - }); - return promise; - } - function ReadableStreamAddReadRequest(stream) { - assert(IsReadableStreamDefaultReader(stream._reader) === true); - assert(stream._state === 'readable'); - var promise = new Promise(function (resolve, reject) { - var readRequest = { - _resolve: resolve, - _reject: reject - }; - stream._reader._readRequests.push(readRequest); - }); - return promise; - } - function ReadableStreamCancel(stream, reason) { - stream._disturbed = true; - if (stream._state === 'closed') { - return Promise.resolve(undefined); - } - if (stream._state === 'errored') { - return Promise.reject(stream._storedError); - } - ReadableStreamClose(stream); - var sourceCancelPromise = stream._readableStreamController.__cancelSteps(reason); - return sourceCancelPromise.then(function () { - return undefined; - }); - } - function ReadableStreamClose(stream) { - assert(stream._state === 'readable'); - stream._state = 'closed'; - var reader = stream._reader; - if (reader === undefined) { - return undefined; - } - if (IsReadableStreamDefaultReader(reader) === true) { - for (var i = 0; i < reader._readRequests.length; i++) { - var _resolve = reader._readRequests[i]._resolve; - _resolve(CreateIterResultObject(undefined, true)); - } - reader._readRequests = []; - } - defaultReaderClosedPromiseResolve(reader); - return undefined; - } - function ReadableStreamError(stream, e) { - assert(IsReadableStream(stream) === true, 'stream must be ReadableStream'); - assert(stream._state === 'readable', 'state must be readable'); - stream._state = 'errored'; - stream._storedError = e; - var reader = stream._reader; - if (reader === undefined) { - return undefined; - } - if (IsReadableStreamDefaultReader(reader) === true) { - for (var i = 0; i < reader._readRequests.length; i++) { - var readRequest = reader._readRequests[i]; - readRequest._reject(e); - } - reader._readRequests = []; - } else { - assert(IsReadableStreamBYOBReader(reader), 'reader must be ReadableStreamBYOBReader'); - for (var _i = 0; _i < reader._readIntoRequests.length; _i++) { - var readIntoRequest = reader._readIntoRequests[_i]; - readIntoRequest._reject(e); - } - reader._readIntoRequests = []; - } - defaultReaderClosedPromiseReject(reader, e); - reader._closedPromise.catch(function () {}); - } - function ReadableStreamFulfillReadIntoRequest(stream, chunk, done) { - var reader = stream._reader; - assert(reader._readIntoRequests.length > 0); - var readIntoRequest = reader._readIntoRequests.shift(); - readIntoRequest._resolve(CreateIterResultObject(chunk, done)); - } - function ReadableStreamFulfillReadRequest(stream, chunk, done) { - var reader = stream._reader; - assert(reader._readRequests.length > 0); - var readRequest = reader._readRequests.shift(); - readRequest._resolve(CreateIterResultObject(chunk, done)); - } - function ReadableStreamGetNumReadIntoRequests(stream) { - return stream._reader._readIntoRequests.length; - } - function ReadableStreamGetNumReadRequests(stream) { - return stream._reader._readRequests.length; - } - function ReadableStreamHasBYOBReader(stream) { - var reader = stream._reader; - if (reader === undefined) { - return false; - } - if (IsReadableStreamBYOBReader(reader) === false) { - return false; - } - return true; - } - function ReadableStreamHasDefaultReader(stream) { - var reader = stream._reader; - if (reader === undefined) { - return false; - } - if (IsReadableStreamDefaultReader(reader) === false) { - return false; - } - return true; - } - var ReadableStreamDefaultReader = function () { - function ReadableStreamDefaultReader(stream) { - _classCallCheck(this, ReadableStreamDefaultReader); - if (IsReadableStream(stream) === false) { - throw new TypeError('ReadableStreamDefaultReader can only be constructed with a ReadableStream instance'); - } - if (IsReadableStreamLocked(stream) === true) { - throw new TypeError('This stream has already been locked for exclusive reading by another reader'); - } - ReadableStreamReaderGenericInitialize(this, stream); - this._readRequests = []; - } - _createClass(ReadableStreamDefaultReader, [{ - key: 'cancel', - value: function cancel(reason) { - if (IsReadableStreamDefaultReader(this) === false) { - return Promise.reject(defaultReaderBrandCheckException('cancel')); - } - if (this._ownerReadableStream === undefined) { - return Promise.reject(readerLockException('cancel')); - } - return ReadableStreamReaderGenericCancel(this, reason); - } - }, { - key: 'read', - value: function read() { - if (IsReadableStreamDefaultReader(this) === false) { - return Promise.reject(defaultReaderBrandCheckException('read')); - } - if (this._ownerReadableStream === undefined) { - return Promise.reject(readerLockException('read from')); - } - return ReadableStreamDefaultReaderRead(this); - } - }, { - key: 'releaseLock', - value: function releaseLock() { - if (IsReadableStreamDefaultReader(this) === false) { - throw defaultReaderBrandCheckException('releaseLock'); - } - if (this._ownerReadableStream === undefined) { - return; - } - if (this._readRequests.length > 0) { - throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled'); - } - ReadableStreamReaderGenericRelease(this); - } - }, { - key: 'closed', - get: function get() { - if (IsReadableStreamDefaultReader(this) === false) { - return Promise.reject(defaultReaderBrandCheckException('closed')); - } - return this._closedPromise; - } - }]); - return ReadableStreamDefaultReader; - }(); - var ReadableStreamBYOBReader = function () { - function ReadableStreamBYOBReader(stream) { - _classCallCheck(this, ReadableStreamBYOBReader); - if (!IsReadableStream(stream)) { - throw new TypeError('ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a ' + 'byte source'); - } - if (IsReadableByteStreamController(stream._readableStreamController) === false) { - throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + 'source'); - } - if (IsReadableStreamLocked(stream)) { - throw new TypeError('This stream has already been locked for exclusive reading by another reader'); - } - ReadableStreamReaderGenericInitialize(this, stream); - this._readIntoRequests = []; - } - _createClass(ReadableStreamBYOBReader, [{ - key: 'cancel', - value: function cancel(reason) { - if (!IsReadableStreamBYOBReader(this)) { - return Promise.reject(byobReaderBrandCheckException('cancel')); - } - if (this._ownerReadableStream === undefined) { - return Promise.reject(readerLockException('cancel')); - } - return ReadableStreamReaderGenericCancel(this, reason); - } - }, { - key: 'read', - value: function read(view) { - if (!IsReadableStreamBYOBReader(this)) { - return Promise.reject(byobReaderBrandCheckException('read')); - } - if (this._ownerReadableStream === undefined) { - return Promise.reject(readerLockException('read from')); - } - if (!ArrayBuffer.isView(view)) { - return Promise.reject(new TypeError('view must be an array buffer view')); - } - if (view.byteLength === 0) { - return Promise.reject(new TypeError('view must have non-zero byteLength')); - } - return ReadableStreamBYOBReaderRead(this, view); - } - }, { - key: 'releaseLock', - value: function releaseLock() { - if (!IsReadableStreamBYOBReader(this)) { - throw byobReaderBrandCheckException('releaseLock'); - } - if (this._ownerReadableStream === undefined) { - return; - } - if (this._readIntoRequests.length > 0) { - throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled'); - } - ReadableStreamReaderGenericRelease(this); - } - }, { - key: 'closed', - get: function get() { - if (!IsReadableStreamBYOBReader(this)) { - return Promise.reject(byobReaderBrandCheckException('closed')); - } - return this._closedPromise; - } - }]); - return ReadableStreamBYOBReader; - }(); - function IsReadableStreamBYOBReader(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) { - return false; - } - return true; - } - function IsReadableStreamDefaultReader(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) { - return false; - } - return true; - } - function ReadableStreamReaderGenericInitialize(reader, stream) { - reader._ownerReadableStream = stream; - stream._reader = reader; - if (stream._state === 'readable') { - defaultReaderClosedPromiseInitialize(reader); - } else if (stream._state === 'closed') { - defaultReaderClosedPromiseInitializeAsResolved(reader); - } else { - assert(stream._state === 'errored', 'state must be errored'); - defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError); - reader._closedPromise.catch(function () {}); - } - } - function ReadableStreamReaderGenericCancel(reader, reason) { - var stream = reader._ownerReadableStream; - assert(stream !== undefined); - return ReadableStreamCancel(stream, reason); - } - function ReadableStreamReaderGenericRelease(reader) { - assert(reader._ownerReadableStream !== undefined); - assert(reader._ownerReadableStream._reader === reader); - if (reader._ownerReadableStream._state === 'readable') { - defaultReaderClosedPromiseReject(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\'s closedness')); - } else { - defaultReaderClosedPromiseResetToRejected(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\'s closedness')); - } - reader._closedPromise.catch(function () {}); - reader._ownerReadableStream._reader = undefined; - reader._ownerReadableStream = undefined; - } - function ReadableStreamBYOBReaderRead(reader, view) { - var stream = reader._ownerReadableStream; - assert(stream !== undefined); - stream._disturbed = true; - if (stream._state === 'errored') { - return Promise.reject(stream._storedError); - } - return ReadableByteStreamControllerPullInto(stream._readableStreamController, view); - } - function ReadableStreamDefaultReaderRead(reader) { - var stream = reader._ownerReadableStream; - assert(stream !== undefined); - stream._disturbed = true; - if (stream._state === 'closed') { - return Promise.resolve(CreateIterResultObject(undefined, true)); - } - if (stream._state === 'errored') { - return Promise.reject(stream._storedError); - } - assert(stream._state === 'readable'); - return stream._readableStreamController.__pullSteps(); - } - var ReadableStreamDefaultController = function () { - function ReadableStreamDefaultController(stream, underlyingSource, size, highWaterMark) { - _classCallCheck(this, ReadableStreamDefaultController); - if (IsReadableStream(stream) === false) { - throw new TypeError('ReadableStreamDefaultController can only be constructed with a ReadableStream instance'); - } - if (stream._readableStreamController !== undefined) { - throw new TypeError('ReadableStreamDefaultController instances can only be created by the ReadableStream constructor'); - } - this._controlledReadableStream = stream; - this._underlyingSource = underlyingSource; - this._queue = undefined; - this._queueTotalSize = undefined; - ResetQueue(this); - this._started = false; - this._closeRequested = false; - this._pullAgain = false; - this._pulling = false; - var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark); - this._strategySize = normalizedStrategy.size; - this._strategyHWM = normalizedStrategy.highWaterMark; - var controller = this; - var startResult = InvokeOrNoop(underlyingSource, 'start', [this]); - Promise.resolve(startResult).then(function () { - controller._started = true; - assert(controller._pulling === false); - assert(controller._pullAgain === false); - ReadableStreamDefaultControllerCallPullIfNeeded(controller); - }, function (r) { - ReadableStreamDefaultControllerErrorIfNeeded(controller, r); - }).catch(rethrowAssertionErrorRejection); - } - _createClass(ReadableStreamDefaultController, [{ - key: 'close', - value: function close() { - if (IsReadableStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('close'); - } - if (this._closeRequested === true) { - throw new TypeError('The stream has already been closed; do not close it again!'); - } - var state = this._controlledReadableStream._state; - if (state !== 'readable') { - throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed'); - } - ReadableStreamDefaultControllerClose(this); - } - }, { - key: 'enqueue', - value: function enqueue(chunk) { - if (IsReadableStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('enqueue'); - } - if (this._closeRequested === true) { - throw new TypeError('stream is closed or draining'); - } - var state = this._controlledReadableStream._state; - if (state !== 'readable') { - throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to'); - } - return ReadableStreamDefaultControllerEnqueue(this, chunk); - } - }, { - key: 'error', - value: function error(e) { - if (IsReadableStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('error'); - } - var stream = this._controlledReadableStream; - if (stream._state !== 'readable') { - throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored'); - } - ReadableStreamDefaultControllerError(this, e); - } - }, { - key: '__cancelSteps', - value: function __cancelSteps(reason) { - ResetQueue(this); - return PromiseInvokeOrNoop(this._underlyingSource, 'cancel', [reason]); - } - }, { - key: '__pullSteps', - value: function __pullSteps() { - var stream = this._controlledReadableStream; - if (this._queue.length > 0) { - var chunk = DequeueValue(this); - if (this._closeRequested === true && this._queue.length === 0) { - ReadableStreamClose(stream); - } else { - ReadableStreamDefaultControllerCallPullIfNeeded(this); - } - return Promise.resolve(CreateIterResultObject(chunk, false)); - } - var pendingPromise = ReadableStreamAddReadRequest(stream); - ReadableStreamDefaultControllerCallPullIfNeeded(this); - return pendingPromise; - } - }, { - key: 'desiredSize', - get: function get() { - if (IsReadableStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('desiredSize'); - } - return ReadableStreamDefaultControllerGetDesiredSize(this); - } - }]); - return ReadableStreamDefaultController; - }(); - function IsReadableStreamDefaultController(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSource')) { - return false; - } - return true; - } - function ReadableStreamDefaultControllerCallPullIfNeeded(controller) { - var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller); - if (shouldPull === false) { - return undefined; - } - if (controller._pulling === true) { - controller._pullAgain = true; - return undefined; - } - assert(controller._pullAgain === false); - controller._pulling = true; - var pullPromise = PromiseInvokeOrNoop(controller._underlyingSource, 'pull', [controller]); - pullPromise.then(function () { - controller._pulling = false; - if (controller._pullAgain === true) { - controller._pullAgain = false; - return ReadableStreamDefaultControllerCallPullIfNeeded(controller); - } - return undefined; - }, function (e) { - ReadableStreamDefaultControllerErrorIfNeeded(controller, e); - }).catch(rethrowAssertionErrorRejection); - return undefined; - } - function ReadableStreamDefaultControllerShouldCallPull(controller) { - var stream = controller._controlledReadableStream; - if (stream._state === 'closed' || stream._state === 'errored') { - return false; - } - if (controller._closeRequested === true) { - return false; - } - if (controller._started === false) { - return false; - } - if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) { - return true; - } - var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller); - if (desiredSize > 0) { - return true; - } - return false; - } - function ReadableStreamDefaultControllerClose(controller) { - var stream = controller._controlledReadableStream; - assert(controller._closeRequested === false); - assert(stream._state === 'readable'); - controller._closeRequested = true; - if (controller._queue.length === 0) { - ReadableStreamClose(stream); - } - } - function ReadableStreamDefaultControllerEnqueue(controller, chunk) { - var stream = controller._controlledReadableStream; - assert(controller._closeRequested === false); - assert(stream._state === 'readable'); - if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) { - ReadableStreamFulfillReadRequest(stream, chunk, false); - } else { - var chunkSize = 1; - if (controller._strategySize !== undefined) { - var strategySize = controller._strategySize; - try { - chunkSize = strategySize(chunk); - } catch (chunkSizeE) { - ReadableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE); - throw chunkSizeE; - } - } - try { - EnqueueValueWithSize(controller, chunk, chunkSize); - } catch (enqueueE) { - ReadableStreamDefaultControllerErrorIfNeeded(controller, enqueueE); - throw enqueueE; - } - } - ReadableStreamDefaultControllerCallPullIfNeeded(controller); - return undefined; - } - function ReadableStreamDefaultControllerError(controller, e) { - var stream = controller._controlledReadableStream; - assert(stream._state === 'readable'); - ResetQueue(controller); - ReadableStreamError(stream, e); - } - function ReadableStreamDefaultControllerErrorIfNeeded(controller, e) { - if (controller._controlledReadableStream._state === 'readable') { - ReadableStreamDefaultControllerError(controller, e); - } - } - function ReadableStreamDefaultControllerGetDesiredSize(controller) { - var stream = controller._controlledReadableStream; - var state = stream._state; - if (state === 'errored') { - return null; - } - if (state === 'closed') { - return 0; - } - return controller._strategyHWM - controller._queueTotalSize; - } - var ReadableStreamBYOBRequest = function () { - function ReadableStreamBYOBRequest(controller, view) { - _classCallCheck(this, ReadableStreamBYOBRequest); - this._associatedReadableByteStreamController = controller; - this._view = view; - } - _createClass(ReadableStreamBYOBRequest, [{ - key: 'respond', - value: function respond(bytesWritten) { - if (IsReadableStreamBYOBRequest(this) === false) { - throw byobRequestBrandCheckException('respond'); - } - if (this._associatedReadableByteStreamController === undefined) { - throw new TypeError('This BYOB request has been invalidated'); - } - ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten); - } - }, { - key: 'respondWithNewView', - value: function respondWithNewView(view) { - if (IsReadableStreamBYOBRequest(this) === false) { - throw byobRequestBrandCheckException('respond'); - } - if (this._associatedReadableByteStreamController === undefined) { - throw new TypeError('This BYOB request has been invalidated'); - } - if (!ArrayBuffer.isView(view)) { - throw new TypeError('You can only respond with array buffer views'); - } - ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view); - } - }, { - key: 'view', - get: function get() { - return this._view; - } - }]); - return ReadableStreamBYOBRequest; - }(); - var ReadableByteStreamController = function () { - function ReadableByteStreamController(stream, underlyingByteSource, highWaterMark) { - _classCallCheck(this, ReadableByteStreamController); - if (IsReadableStream(stream) === false) { - throw new TypeError('ReadableByteStreamController can only be constructed with a ReadableStream instance given ' + 'a byte source'); - } - if (stream._readableStreamController !== undefined) { - throw new TypeError('ReadableByteStreamController instances can only be created by the ReadableStream constructor given a byte ' + 'source'); - } - this._controlledReadableStream = stream; - this._underlyingByteSource = underlyingByteSource; - this._pullAgain = false; - this._pulling = false; - ReadableByteStreamControllerClearPendingPullIntos(this); - this._queue = this._queueTotalSize = undefined; - ResetQueue(this); - this._closeRequested = false; - this._started = false; - this._strategyHWM = ValidateAndNormalizeHighWaterMark(highWaterMark); - var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize; - if (autoAllocateChunkSize !== undefined) { - if (Number.isInteger(autoAllocateChunkSize) === false || autoAllocateChunkSize <= 0) { - throw new RangeError('autoAllocateChunkSize must be a positive integer'); - } - } - this._autoAllocateChunkSize = autoAllocateChunkSize; - this._pendingPullIntos = []; - var controller = this; - var startResult = InvokeOrNoop(underlyingByteSource, 'start', [this]); - Promise.resolve(startResult).then(function () { - controller._started = true; - assert(controller._pulling === false); - assert(controller._pullAgain === false); - ReadableByteStreamControllerCallPullIfNeeded(controller); - }, function (r) { - if (stream._state === 'readable') { - ReadableByteStreamControllerError(controller, r); - } - }).catch(rethrowAssertionErrorRejection); - } - _createClass(ReadableByteStreamController, [{ - key: 'close', - value: function close() { - if (IsReadableByteStreamController(this) === false) { - throw byteStreamControllerBrandCheckException('close'); - } - if (this._closeRequested === true) { - throw new TypeError('The stream has already been closed; do not close it again!'); - } - var state = this._controlledReadableStream._state; - if (state !== 'readable') { - throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed'); - } - ReadableByteStreamControllerClose(this); - } - }, { - key: 'enqueue', - value: function enqueue(chunk) { - if (IsReadableByteStreamController(this) === false) { - throw byteStreamControllerBrandCheckException('enqueue'); - } - if (this._closeRequested === true) { - throw new TypeError('stream is closed or draining'); - } - var state = this._controlledReadableStream._state; - if (state !== 'readable') { - throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to'); - } - if (!ArrayBuffer.isView(chunk)) { - throw new TypeError('You can only enqueue array buffer views when using a ReadableByteStreamController'); - } - ReadableByteStreamControllerEnqueue(this, chunk); - } - }, { - key: 'error', - value: function error(e) { - if (IsReadableByteStreamController(this) === false) { - throw byteStreamControllerBrandCheckException('error'); - } - var stream = this._controlledReadableStream; - if (stream._state !== 'readable') { - throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored'); - } - ReadableByteStreamControllerError(this, e); - } - }, { - key: '__cancelSteps', - value: function __cancelSteps(reason) { - if (this._pendingPullIntos.length > 0) { - var firstDescriptor = this._pendingPullIntos[0]; - firstDescriptor.bytesFilled = 0; - } - ResetQueue(this); - return PromiseInvokeOrNoop(this._underlyingByteSource, 'cancel', [reason]); - } - }, { - key: '__pullSteps', - value: function __pullSteps() { - var stream = this._controlledReadableStream; - assert(ReadableStreamHasDefaultReader(stream) === true); - if (this._queueTotalSize > 0) { - assert(ReadableStreamGetNumReadRequests(stream) === 0); - var entry = this._queue.shift(); - this._queueTotalSize -= entry.byteLength; - ReadableByteStreamControllerHandleQueueDrain(this); - var view = void 0; - try { - view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength); - } catch (viewE) { - return Promise.reject(viewE); - } - return Promise.resolve(CreateIterResultObject(view, false)); - } - var autoAllocateChunkSize = this._autoAllocateChunkSize; - if (autoAllocateChunkSize !== undefined) { - var buffer = void 0; - try { - buffer = new ArrayBuffer(autoAllocateChunkSize); - } catch (bufferE) { - return Promise.reject(bufferE); - } - var pullIntoDescriptor = { - buffer: buffer, - byteOffset: 0, - byteLength: autoAllocateChunkSize, - bytesFilled: 0, - elementSize: 1, - ctor: Uint8Array, - readerType: 'default' - }; - this._pendingPullIntos.push(pullIntoDescriptor); - } - var promise = ReadableStreamAddReadRequest(stream); - ReadableByteStreamControllerCallPullIfNeeded(this); - return promise; - } - }, { - key: 'byobRequest', - get: function get() { - if (IsReadableByteStreamController(this) === false) { - throw byteStreamControllerBrandCheckException('byobRequest'); - } - if (this._byobRequest === undefined && this._pendingPullIntos.length > 0) { - var firstDescriptor = this._pendingPullIntos[0]; - var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled); - this._byobRequest = new ReadableStreamBYOBRequest(this, view); - } - return this._byobRequest; - } - }, { - key: 'desiredSize', - get: function get() { - if (IsReadableByteStreamController(this) === false) { - throw byteStreamControllerBrandCheckException('desiredSize'); - } - return ReadableByteStreamControllerGetDesiredSize(this); - } - }]); - return ReadableByteStreamController; - }(); - function IsReadableByteStreamController(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_underlyingByteSource')) { - return false; - } - return true; - } - function IsReadableStreamBYOBRequest(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) { - return false; - } - return true; - } - function ReadableByteStreamControllerCallPullIfNeeded(controller) { - var shouldPull = ReadableByteStreamControllerShouldCallPull(controller); - if (shouldPull === false) { - return undefined; - } - if (controller._pulling === true) { - controller._pullAgain = true; - return undefined; - } - assert(controller._pullAgain === false); - controller._pulling = true; - var pullPromise = PromiseInvokeOrNoop(controller._underlyingByteSource, 'pull', [controller]); - pullPromise.then(function () { - controller._pulling = false; - if (controller._pullAgain === true) { - controller._pullAgain = false; - ReadableByteStreamControllerCallPullIfNeeded(controller); - } - }, function (e) { - if (controller._controlledReadableStream._state === 'readable') { - ReadableByteStreamControllerError(controller, e); - } - }).catch(rethrowAssertionErrorRejection); - return undefined; - } - function ReadableByteStreamControllerClearPendingPullIntos(controller) { - ReadableByteStreamControllerInvalidateBYOBRequest(controller); - controller._pendingPullIntos = []; - } - function ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) { - assert(stream._state !== 'errored', 'state must not be errored'); - var done = false; - if (stream._state === 'closed') { - assert(pullIntoDescriptor.bytesFilled === 0); - done = true; - } - var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor); - if (pullIntoDescriptor.readerType === 'default') { - ReadableStreamFulfillReadRequest(stream, filledView, done); - } else { - assert(pullIntoDescriptor.readerType === 'byob'); - ReadableStreamFulfillReadIntoRequest(stream, filledView, done); - } - } - function ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) { - var bytesFilled = pullIntoDescriptor.bytesFilled; - var elementSize = pullIntoDescriptor.elementSize; - assert(bytesFilled <= pullIntoDescriptor.byteLength); - assert(bytesFilled % elementSize === 0); - return new pullIntoDescriptor.ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize); - } - function ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) { - controller._queue.push({ - buffer: buffer, - byteOffset: byteOffset, - byteLength: byteLength - }); - controller._queueTotalSize += byteLength; - } - function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) { - var elementSize = pullIntoDescriptor.elementSize; - var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize; - var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled); - var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy; - var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize; - var totalBytesToCopyRemaining = maxBytesToCopy; - var ready = false; - if (maxAlignedBytes > currentAlignedBytes) { - totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled; - ready = true; - } - var queue = controller._queue; - while (totalBytesToCopyRemaining > 0) { - var headOfQueue = queue[0]; - var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength); - var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled; - ArrayBufferCopy(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy); - if (headOfQueue.byteLength === bytesToCopy) { - queue.shift(); - } else { - headOfQueue.byteOffset += bytesToCopy; - headOfQueue.byteLength -= bytesToCopy; - } - controller._queueTotalSize -= bytesToCopy; - ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor); - totalBytesToCopyRemaining -= bytesToCopy; - } - if (ready === false) { - assert(controller._queueTotalSize === 0, 'queue must be empty'); - assert(pullIntoDescriptor.bytesFilled > 0); - assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize); - } - return ready; - } - function ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) { - assert(controller._pendingPullIntos.length === 0 || controller._pendingPullIntos[0] === pullIntoDescriptor); - ReadableByteStreamControllerInvalidateBYOBRequest(controller); - pullIntoDescriptor.bytesFilled += size; - } - function ReadableByteStreamControllerHandleQueueDrain(controller) { - assert(controller._controlledReadableStream._state === 'readable'); - if (controller._queueTotalSize === 0 && controller._closeRequested === true) { - ReadableStreamClose(controller._controlledReadableStream); - } else { - ReadableByteStreamControllerCallPullIfNeeded(controller); - } - } - function ReadableByteStreamControllerInvalidateBYOBRequest(controller) { - if (controller._byobRequest === undefined) { - return; - } - controller._byobRequest._associatedReadableByteStreamController = undefined; - controller._byobRequest._view = undefined; - controller._byobRequest = undefined; - } - function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) { - assert(controller._closeRequested === false); - while (controller._pendingPullIntos.length > 0) { - if (controller._queueTotalSize === 0) { - return; - } - var pullIntoDescriptor = controller._pendingPullIntos[0]; - if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) { - ReadableByteStreamControllerShiftPendingPullInto(controller); - ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor); - } - } - } - function ReadableByteStreamControllerPullInto(controller, view) { - var stream = controller._controlledReadableStream; - var elementSize = 1; - if (view.constructor !== DataView) { - elementSize = view.constructor.BYTES_PER_ELEMENT; - } - var ctor = view.constructor; - var pullIntoDescriptor = { - buffer: view.buffer, - byteOffset: view.byteOffset, - byteLength: view.byteLength, - bytesFilled: 0, - elementSize: elementSize, - ctor: ctor, - readerType: 'byob' - }; - if (controller._pendingPullIntos.length > 0) { - pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer); - controller._pendingPullIntos.push(pullIntoDescriptor); - return ReadableStreamAddReadIntoRequest(stream); - } - if (stream._state === 'closed') { - var emptyView = new view.constructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0); - return Promise.resolve(CreateIterResultObject(emptyView, true)); - } - if (controller._queueTotalSize > 0) { - if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) { - var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor); - ReadableByteStreamControllerHandleQueueDrain(controller); - return Promise.resolve(CreateIterResultObject(filledView, false)); - } - if (controller._closeRequested === true) { - var e = new TypeError('Insufficient bytes to fill elements in the given buffer'); - ReadableByteStreamControllerError(controller, e); - return Promise.reject(e); - } - } - pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer); - controller._pendingPullIntos.push(pullIntoDescriptor); - var promise = ReadableStreamAddReadIntoRequest(stream); - ReadableByteStreamControllerCallPullIfNeeded(controller); - return promise; - } - function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) { - firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer); - assert(firstDescriptor.bytesFilled === 0, 'bytesFilled must be 0'); - var stream = controller._controlledReadableStream; - if (ReadableStreamHasBYOBReader(stream) === true) { - while (ReadableStreamGetNumReadIntoRequests(stream) > 0) { - var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller); - ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor); - } - } - } - function ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) { - if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) { - throw new RangeError('bytesWritten out of range'); - } - ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor); - if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) { - return; - } - ReadableByteStreamControllerShiftPendingPullInto(controller); - var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize; - if (remainderSize > 0) { - var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled; - var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end); - ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength); - } - pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer); - pullIntoDescriptor.bytesFilled -= remainderSize; - ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor); - ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller); - } - function ReadableByteStreamControllerRespondInternal(controller, bytesWritten) { - var firstDescriptor = controller._pendingPullIntos[0]; - var stream = controller._controlledReadableStream; - if (stream._state === 'closed') { - if (bytesWritten !== 0) { - throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream'); - } - ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor); - } else { - assert(stream._state === 'readable'); - ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor); - } - } - function ReadableByteStreamControllerShiftPendingPullInto(controller) { - var descriptor = controller._pendingPullIntos.shift(); - ReadableByteStreamControllerInvalidateBYOBRequest(controller); - return descriptor; - } - function ReadableByteStreamControllerShouldCallPull(controller) { - var stream = controller._controlledReadableStream; - if (stream._state !== 'readable') { - return false; - } - if (controller._closeRequested === true) { - return false; - } - if (controller._started === false) { - return false; - } - if (ReadableStreamHasDefaultReader(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) { - return true; - } - if (ReadableStreamHasBYOBReader(stream) === true && ReadableStreamGetNumReadIntoRequests(stream) > 0) { - return true; - } - if (ReadableByteStreamControllerGetDesiredSize(controller) > 0) { - return true; - } - return false; - } - function ReadableByteStreamControllerClose(controller) { - var stream = controller._controlledReadableStream; - assert(controller._closeRequested === false); - assert(stream._state === 'readable'); - if (controller._queueTotalSize > 0) { - controller._closeRequested = true; - return; - } - if (controller._pendingPullIntos.length > 0) { - var firstPendingPullInto = controller._pendingPullIntos[0]; - if (firstPendingPullInto.bytesFilled > 0) { - var e = new TypeError('Insufficient bytes to fill elements in the given buffer'); - ReadableByteStreamControllerError(controller, e); - throw e; - } - } - ReadableStreamClose(stream); - } - function ReadableByteStreamControllerEnqueue(controller, chunk) { - var stream = controller._controlledReadableStream; - assert(controller._closeRequested === false); - assert(stream._state === 'readable'); - var buffer = chunk.buffer; - var byteOffset = chunk.byteOffset; - var byteLength = chunk.byteLength; - var transferredBuffer = TransferArrayBuffer(buffer); - if (ReadableStreamHasDefaultReader(stream) === true) { - if (ReadableStreamGetNumReadRequests(stream) === 0) { - ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); - } else { - assert(controller._queue.length === 0); - var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength); - ReadableStreamFulfillReadRequest(stream, transferredView, false); - } - } else if (ReadableStreamHasBYOBReader(stream) === true) { - ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); - ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller); - } else { - assert(IsReadableStreamLocked(stream) === false, 'stream must not be locked'); - ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); - } - } - function ReadableByteStreamControllerError(controller, e) { - var stream = controller._controlledReadableStream; - assert(stream._state === 'readable'); - ReadableByteStreamControllerClearPendingPullIntos(controller); - ResetQueue(controller); - ReadableStreamError(stream, e); - } - function ReadableByteStreamControllerGetDesiredSize(controller) { - var stream = controller._controlledReadableStream; - var state = stream._state; - if (state === 'errored') { - return null; - } - if (state === 'closed') { - return 0; - } - return controller._strategyHWM - controller._queueTotalSize; - } - function ReadableByteStreamControllerRespond(controller, bytesWritten) { - bytesWritten = Number(bytesWritten); - if (IsFiniteNonNegativeNumber(bytesWritten) === false) { - throw new RangeError('bytesWritten must be a finite'); - } - assert(controller._pendingPullIntos.length > 0); - ReadableByteStreamControllerRespondInternal(controller, bytesWritten); - } - function ReadableByteStreamControllerRespondWithNewView(controller, view) { - assert(controller._pendingPullIntos.length > 0); - var firstDescriptor = controller._pendingPullIntos[0]; - if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) { - throw new RangeError('The region specified by view does not match byobRequest'); - } - if (firstDescriptor.byteLength !== view.byteLength) { - throw new RangeError('The buffer of view has different capacity than byobRequest'); - } - firstDescriptor.buffer = view.buffer; - ReadableByteStreamControllerRespondInternal(controller, view.byteLength); - } - function streamBrandCheckException(name) { - return new TypeError('ReadableStream.prototype.' + name + ' can only be used on a ReadableStream'); - } - function readerLockException(name) { - return new TypeError('Cannot ' + name + ' a stream using a released reader'); - } - function defaultReaderBrandCheckException(name) { - return new TypeError('ReadableStreamDefaultReader.prototype.' + name + ' can only be used on a ReadableStreamDefaultReader'); - } - function defaultReaderClosedPromiseInitialize(reader) { - reader._closedPromise = new Promise(function (resolve, reject) { - reader._closedPromise_resolve = resolve; - reader._closedPromise_reject = reject; - }); - } - function defaultReaderClosedPromiseInitializeAsRejected(reader, reason) { - reader._closedPromise = Promise.reject(reason); - reader._closedPromise_resolve = undefined; - reader._closedPromise_reject = undefined; - } - function defaultReaderClosedPromiseInitializeAsResolved(reader) { - reader._closedPromise = Promise.resolve(undefined); - reader._closedPromise_resolve = undefined; - reader._closedPromise_reject = undefined; - } - function defaultReaderClosedPromiseReject(reader, reason) { - assert(reader._closedPromise_resolve !== undefined); - assert(reader._closedPromise_reject !== undefined); - reader._closedPromise_reject(reason); - reader._closedPromise_resolve = undefined; - reader._closedPromise_reject = undefined; - } - function defaultReaderClosedPromiseResetToRejected(reader, reason) { - assert(reader._closedPromise_resolve === undefined); - assert(reader._closedPromise_reject === undefined); - reader._closedPromise = Promise.reject(reason); - } - function defaultReaderClosedPromiseResolve(reader) { - assert(reader._closedPromise_resolve !== undefined); - assert(reader._closedPromise_reject !== undefined); - reader._closedPromise_resolve(undefined); - reader._closedPromise_resolve = undefined; - reader._closedPromise_reject = undefined; - } - function byobReaderBrandCheckException(name) { - return new TypeError('ReadableStreamBYOBReader.prototype.' + name + ' can only be used on a ReadableStreamBYOBReader'); - } - function defaultControllerBrandCheckException(name) { - return new TypeError('ReadableStreamDefaultController.prototype.' + name + ' can only be used on a ReadableStreamDefaultController'); - } - function byobRequestBrandCheckException(name) { - return new TypeError('ReadableStreamBYOBRequest.prototype.' + name + ' can only be used on a ReadableStreamBYOBRequest'); - } - function byteStreamControllerBrandCheckException(name) { - return new TypeError('ReadableByteStreamController.prototype.' + name + ' can only be used on a ReadableByteStreamController'); - } - function ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise) { - try { - Promise.prototype.then.call(promise, undefined, function () {}); - } catch (e) {} - } -}, function (module, exports, __w_pdfjs_require__) { - "use strict"; - var transformStream = __w_pdfjs_require__(6); - var readableStream = __w_pdfjs_require__(4); - var writableStream = __w_pdfjs_require__(2); - exports.TransformStream = transformStream.TransformStream; - exports.ReadableStream = readableStream.ReadableStream; - exports.IsReadableStreamDisturbed = readableStream.IsReadableStreamDisturbed; - exports.ReadableStreamDefaultControllerClose = readableStream.ReadableStreamDefaultControllerClose; - exports.ReadableStreamDefaultControllerEnqueue = readableStream.ReadableStreamDefaultControllerEnqueue; - exports.ReadableStreamDefaultControllerError = readableStream.ReadableStreamDefaultControllerError; - exports.ReadableStreamDefaultControllerGetDesiredSize = readableStream.ReadableStreamDefaultControllerGetDesiredSize; - exports.AcquireWritableStreamDefaultWriter = writableStream.AcquireWritableStreamDefaultWriter; - exports.IsWritableStream = writableStream.IsWritableStream; - exports.IsWritableStreamLocked = writableStream.IsWritableStreamLocked; - exports.WritableStream = writableStream.WritableStream; - exports.WritableStreamAbort = writableStream.WritableStreamAbort; - exports.WritableStreamDefaultControllerError = writableStream.WritableStreamDefaultControllerError; - exports.WritableStreamDefaultWriterCloseWithErrorPropagation = writableStream.WritableStreamDefaultWriterCloseWithErrorPropagation; - exports.WritableStreamDefaultWriterRelease = writableStream.WritableStreamDefaultWriterRelease; - exports.WritableStreamDefaultWriterWrite = writableStream.WritableStreamDefaultWriterWrite; -}, function (module, exports, __w_pdfjs_require__) { - "use strict"; + k1 = 0; - var _createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - var _require = __w_pdfjs_require__(1), - assert = _require.assert; - var _require2 = __w_pdfjs_require__(0), - InvokeOrNoop = _require2.InvokeOrNoop, - PromiseInvokeOrPerformFallback = _require2.PromiseInvokeOrPerformFallback, - PromiseInvokeOrNoop = _require2.PromiseInvokeOrNoop, - typeIsObject = _require2.typeIsObject; - var _require3 = __w_pdfjs_require__(4), - ReadableStream = _require3.ReadableStream, - ReadableStreamDefaultControllerClose = _require3.ReadableStreamDefaultControllerClose, - ReadableStreamDefaultControllerEnqueue = _require3.ReadableStreamDefaultControllerEnqueue, - ReadableStreamDefaultControllerError = _require3.ReadableStreamDefaultControllerError, - ReadableStreamDefaultControllerGetDesiredSize = _require3.ReadableStreamDefaultControllerGetDesiredSize; - var _require4 = __w_pdfjs_require__(2), - WritableStream = _require4.WritableStream, - WritableStreamDefaultControllerError = _require4.WritableStreamDefaultControllerError; - function TransformStreamCloseReadable(transformStream) { - if (transformStream._errored === true) { - throw new TypeError('TransformStream is already errored'); - } - if (transformStream._readableClosed === true) { - throw new TypeError('Readable side is already closed'); - } - TransformStreamCloseReadableInternal(transformStream); - } - function TransformStreamEnqueueToReadable(transformStream, chunk) { - if (transformStream._errored === true) { - throw new TypeError('TransformStream is already errored'); - } - if (transformStream._readableClosed === true) { - throw new TypeError('Readable side is already closed'); - } - var controller = transformStream._readableController; - try { - ReadableStreamDefaultControllerEnqueue(controller, chunk); - } catch (e) { - transformStream._readableClosed = true; - TransformStreamErrorIfNeeded(transformStream, e); - throw transformStream._storedError; - } - var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller); - var maybeBackpressure = desiredSize <= 0; - if (maybeBackpressure === true && transformStream._backpressure === false) { - TransformStreamSetBackpressure(transformStream, true); - } - } - function TransformStreamError(transformStream, e) { - if (transformStream._errored === true) { - throw new TypeError('TransformStream is already errored'); - } - TransformStreamErrorInternal(transformStream, e); - } - function TransformStreamCloseReadableInternal(transformStream) { - assert(transformStream._errored === false); - assert(transformStream._readableClosed === false); - try { - ReadableStreamDefaultControllerClose(transformStream._readableController); - } catch (e) { - assert(false); - } - transformStream._readableClosed = true; - } - function TransformStreamErrorIfNeeded(transformStream, e) { - if (transformStream._errored === false) { - TransformStreamErrorInternal(transformStream, e); - } - } - function TransformStreamErrorInternal(transformStream, e) { - assert(transformStream._errored === false); - transformStream._errored = true; - transformStream._storedError = e; - if (transformStream._writableDone === false) { - WritableStreamDefaultControllerError(transformStream._writableController, e); - } - if (transformStream._readableClosed === false) { - ReadableStreamDefaultControllerError(transformStream._readableController, e); - } - } - function TransformStreamReadableReadyPromise(transformStream) { - assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized'); - if (transformStream._backpressure === false) { - return Promise.resolve(); - } - assert(transformStream._backpressure === true, '_backpressure should have been initialized'); - return transformStream._backpressureChangePromise; - } - function TransformStreamSetBackpressure(transformStream, backpressure) { - assert(transformStream._backpressure !== backpressure, 'TransformStreamSetBackpressure() should be called only when backpressure is changed'); - if (transformStream._backpressureChangePromise !== undefined) { - transformStream._backpressureChangePromise_resolve(backpressure); - } - transformStream._backpressureChangePromise = new Promise(function (resolve) { - transformStream._backpressureChangePromise_resolve = resolve; - }); - transformStream._backpressureChangePromise.then(function (resolution) { - assert(resolution !== backpressure, '_backpressureChangePromise should be fulfilled only when backpressure is changed'); - }); - transformStream._backpressure = backpressure; - } - function TransformStreamDefaultTransform(chunk, transformStreamController) { - var transformStream = transformStreamController._controlledTransformStream; - TransformStreamEnqueueToReadable(transformStream, chunk); - return Promise.resolve(); - } - function TransformStreamTransform(transformStream, chunk) { - assert(transformStream._errored === false); - assert(transformStream._transforming === false); - assert(transformStream._backpressure === false); - transformStream._transforming = true; - var transformer = transformStream._transformer; - var controller = transformStream._transformStreamController; - var transformPromise = PromiseInvokeOrPerformFallback(transformer, 'transform', [chunk, controller], TransformStreamDefaultTransform, [chunk, controller]); - return transformPromise.then(function () { - transformStream._transforming = false; - return TransformStreamReadableReadyPromise(transformStream); - }, function (e) { - TransformStreamErrorIfNeeded(transformStream, e); - return Promise.reject(e); - }); - } - function IsTransformStreamDefaultController(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) { - return false; - } - return true; - } - function IsTransformStream(x) { - if (!typeIsObject(x)) { - return false; - } - if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) { - return false; - } - return true; - } - var TransformStreamSink = function () { - function TransformStreamSink(transformStream, startPromise) { - _classCallCheck(this, TransformStreamSink); - this._transformStream = transformStream; - this._startPromise = startPromise; - } - _createClass(TransformStreamSink, [{ - key: 'start', - value: function start(c) { - var transformStream = this._transformStream; - transformStream._writableController = c; - return this._startPromise.then(function () { - return TransformStreamReadableReadyPromise(transformStream); - }); - } - }, { - key: 'write', - value: function write(chunk) { - var transformStream = this._transformStream; - return TransformStreamTransform(transformStream, chunk); - } - }, { - key: 'abort', - value: function abort() { - var transformStream = this._transformStream; - transformStream._writableDone = true; - TransformStreamErrorInternal(transformStream, new TypeError('Writable side aborted')); - } - }, { - key: 'close', - value: function close() { - var transformStream = this._transformStream; - assert(transformStream._transforming === false); - transformStream._writableDone = true; - var flushPromise = PromiseInvokeOrNoop(transformStream._transformer, 'flush', [transformStream._transformStreamController]); - return flushPromise.then(function () { - if (transformStream._errored === true) { - return Promise.reject(transformStream._storedError); - } - if (transformStream._readableClosed === false) { - TransformStreamCloseReadableInternal(transformStream); - } - return Promise.resolve(); - }).catch(function (r) { - TransformStreamErrorIfNeeded(transformStream, r); - return Promise.reject(transformStream._storedError); - }); - } - }]); - return TransformStreamSink; - }(); - var TransformStreamSource = function () { - function TransformStreamSource(transformStream, startPromise) { - _classCallCheck(this, TransformStreamSource); - this._transformStream = transformStream; - this._startPromise = startPromise; - } - _createClass(TransformStreamSource, [{ - key: 'start', - value: function start(c) { - var transformStream = this._transformStream; - transformStream._readableController = c; - return this._startPromise.then(function () { - assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized'); - if (transformStream._backpressure === true) { - return Promise.resolve(); - } - assert(transformStream._backpressure === false, '_backpressure should have been initialized'); - return transformStream._backpressureChangePromise; - }); - } - }, { - key: 'pull', - value: function pull() { - var transformStream = this._transformStream; - assert(transformStream._backpressure === true, 'pull() should be never called while _backpressure is false'); - assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized'); - TransformStreamSetBackpressure(transformStream, false); - return transformStream._backpressureChangePromise; - } - }, { - key: 'cancel', - value: function cancel() { - var transformStream = this._transformStream; - transformStream._readableClosed = true; - TransformStreamErrorInternal(transformStream, new TypeError('Readable side canceled')); - } - }]); - return TransformStreamSource; - }(); - var TransformStreamDefaultController = function () { - function TransformStreamDefaultController(transformStream) { - _classCallCheck(this, TransformStreamDefaultController); - if (IsTransformStream(transformStream) === false) { - throw new TypeError('TransformStreamDefaultController can only be ' + 'constructed with a TransformStream instance'); - } - if (transformStream._transformStreamController !== undefined) { - throw new TypeError('TransformStreamDefaultController instances can ' + 'only be created by the TransformStream constructor'); - } - this._controlledTransformStream = transformStream; - } - _createClass(TransformStreamDefaultController, [{ - key: 'enqueue', - value: function enqueue(chunk) { - if (IsTransformStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('enqueue'); + switch (tailLength) { + case 3: + k1 ^= data[blockCounts * 4 + 2] << 16; + + case 2: + k1 ^= data[blockCounts * 4 + 1] << 8; + + case 1: + k1 ^= data[blockCounts * 4]; + k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW; + k1 = k1 << 15 | k1 >>> 17; + k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW; + + if (blockCounts & 1) { + h1 ^= k1; + } else { + h2 ^= k1; } - TransformStreamEnqueueToReadable(this._controlledTransformStream, chunk); - } - }, { - key: 'close', - value: function close() { - if (IsTransformStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('close'); - } - TransformStreamCloseReadable(this._controlledTransformStream); - } - }, { - key: 'error', - value: function error(reason) { - if (IsTransformStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('error'); - } - TransformStreamError(this._controlledTransformStream, reason); - } - }, { - key: 'desiredSize', - get: function get() { - if (IsTransformStreamDefaultController(this) === false) { - throw defaultControllerBrandCheckException('desiredSize'); - } - var transformStream = this._controlledTransformStream; - var readableController = transformStream._readableController; - return ReadableStreamDefaultControllerGetDesiredSize(readableController); - } - }]); - return TransformStreamDefaultController; - }(); - var TransformStream = function () { - function TransformStream() { - var transformer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - _classCallCheck(this, TransformStream); - this._transformer = transformer; - var readableStrategy = transformer.readableStrategy, - writableStrategy = transformer.writableStrategy; - this._transforming = false; - this._errored = false; - this._storedError = undefined; - this._writableController = undefined; - this._readableController = undefined; - this._transformStreamController = undefined; - this._writableDone = false; - this._readableClosed = false; - this._backpressure = undefined; - this._backpressureChangePromise = undefined; - this._backpressureChangePromise_resolve = undefined; - this._transformStreamController = new TransformStreamDefaultController(this); - var startPromise_resolve = void 0; - var startPromise = new Promise(function (resolve) { - startPromise_resolve = resolve; - }); - var source = new TransformStreamSource(this, startPromise); - this._readable = new ReadableStream(source, readableStrategy); - var sink = new TransformStreamSink(this, startPromise); - this._writable = new WritableStream(sink, writableStrategy); - assert(this._writableController !== undefined); - assert(this._readableController !== undefined); - var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(this._readableController); - TransformStreamSetBackpressure(this, desiredSize <= 0); - var transformStream = this; - var startResult = InvokeOrNoop(transformer, 'start', [transformStream._transformStreamController]); - startPromise_resolve(startResult); - startPromise.catch(function (e) { - if (transformStream._errored === false) { - transformStream._errored = true; - transformStream._storedError = e; - } - }); + } - _createClass(TransformStream, [{ - key: 'readable', - get: function get() { - if (IsTransformStream(this) === false) { - throw streamBrandCheckException('readable'); - } - return this._readable; - } - }, { - key: 'writable', - get: function get() { - if (IsTransformStream(this) === false) { - throw streamBrandCheckException('writable'); - } - return this._writable; - } - }]); - return TransformStream; - }(); - module.exports = { TransformStream: TransformStream }; - function defaultControllerBrandCheckException(name) { - return new TypeError('TransformStreamDefaultController.prototype.' + name + ' can only be used on a TransformStreamDefaultController'); + + this.h1 = h1; + this.h2 = h2; } - function streamBrandCheckException(name) { - return new TypeError('TransformStream.prototype.' + name + ' can only be used on a TransformStream'); + + hexdigest() { + let h1 = this.h1, + h2 = this.h2; + h1 ^= h2 >>> 1; + h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW; + h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16; + h1 ^= h2 >>> 1; + h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW; + h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16; + h1 ^= h2 >>> 1; + const hex1 = (h1 >>> 0).toString(16), + hex2 = (h2 >>> 0).toString(16); + return hex1.padStart(8, "0") + hex2.padStart(8, "0"); } -}, function (module, exports, __w_pdfjs_require__) { - module.exports = __w_pdfjs_require__(5); -}])); + +} + +exports.MurmurHash3_64 = MurmurHash3_64; /***/ }), /* 11 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -Object.defineProperty(exports, "__esModule", { + +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.CanvasGraphics = undefined; +})); +exports.FontLoader = exports.FontFaceObject = void 0; -var _util = __w_pdfjs_require__(0); +var _util = __w_pdfjs_require__(1); + +class BaseFontLoader { + constructor({ + docId, + onUnsupportedFeature, + ownerDocument = globalThis.document, + styleElement = null + }) { + if (this.constructor === BaseFontLoader) { + (0, _util.unreachable)("Cannot initialize BaseFontLoader."); + } + + this.docId = docId; + this._onUnsupportedFeature = onUnsupportedFeature; + this._document = ownerDocument; + this.nativeFontFaces = []; + this.styleElement = null; + } + + addNativeFontFace(nativeFontFace) { + this.nativeFontFaces.push(nativeFontFace); + + this._document.fonts.add(nativeFontFace); + } + + insertRule(rule) { + let styleElement = this.styleElement; + + if (!styleElement) { + styleElement = this.styleElement = this._document.createElement("style"); + styleElement.id = `PDFJS_FONT_STYLE_TAG_${this.docId}`; + + this._document.documentElement.getElementsByTagName("head")[0].append(styleElement); + } + + const styleSheet = styleElement.sheet; + styleSheet.insertRule(rule, styleSheet.cssRules.length); + } + + clear() { + for (const nativeFontFace of this.nativeFontFaces) { + this._document.fonts.delete(nativeFontFace); + } + + this.nativeFontFaces.length = 0; + + if (this.styleElement) { + this.styleElement.remove(); + this.styleElement = null; + } + } + + async bind(font) { + if (font.attached || font.missingFile) { + return; + } + + font.attached = true; + + if (this.isFontLoadingAPISupported) { + const nativeFontFace = font.createNativeFontFace(); + + if (nativeFontFace) { + this.addNativeFontFace(nativeFontFace); + + try { + await nativeFontFace.loaded; + } catch (ex) { + this._onUnsupportedFeature({ + featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadNative + }); + + (0, _util.warn)(`Failed to load font '${nativeFontFace.family}': '${ex}'.`); + font.disableFontFace = true; + throw ex; + } + } + + return; + } + + const rule = font.createFontFaceRule(); + + if (rule) { + this.insertRule(rule); + + if (this.isSyncFontLoadingSupported) { + return; + } + + await new Promise(resolve => { + const request = this._queueLoadingCallback(resolve); + + this._prepareFontLoadEvent([rule], [font], request); + }); + } + } + + _queueLoadingCallback(callback) { + (0, _util.unreachable)("Abstract method `_queueLoadingCallback`."); + } + + get isFontLoadingAPISupported() { + const hasFonts = !!this._document?.fonts; + return (0, _util.shadow)(this, "isFontLoadingAPISupported", hasFonts); + } + + get isSyncFontLoadingSupported() { + (0, _util.unreachable)("Abstract method `isSyncFontLoadingSupported`."); + } + + get _loadTestFont() { + (0, _util.unreachable)("Abstract method `_loadTestFont`."); + } + + _prepareFontLoadEvent(rules, fontsToLoad, request) { + (0, _util.unreachable)("Abstract method `_prepareFontLoadEvent`."); + } + +} + +let FontLoader; +exports.FontLoader = FontLoader; +{ + exports.FontLoader = FontLoader = class GenericFontLoader extends BaseFontLoader { + constructor(params) { + super(params); + this.loadingContext = { + requests: [], + nextRequestId: 0 + }; + this.loadTestFontId = 0; + } + + get isSyncFontLoadingSupported() { + let supported = false; + + if (typeof navigator === "undefined") { + supported = true; + } else { + const m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent); + + if (m?.[1] >= 14) { + supported = true; + } + } + + return (0, _util.shadow)(this, "isSyncFontLoadingSupported", supported); + } + + _queueLoadingCallback(callback) { + function completeRequest() { + (0, _util.assert)(!request.done, "completeRequest() cannot be called twice."); + request.done = true; + + while (context.requests.length > 0 && context.requests[0].done) { + const otherRequest = context.requests.shift(); + setTimeout(otherRequest.callback, 0); + } + } + + const context = this.loadingContext; + const request = { + id: `pdfjs-font-loading-${context.nextRequestId++}`, + done: false, + complete: completeRequest, + callback + }; + context.requests.push(request); + return request; + } + + get _loadTestFont() { + const getLoadTestFont = function () { + return atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA" + "FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA" + "ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA" + "AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1" + "AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD" + "6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM" + "AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D" + "IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA" + "AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA" + "AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB" + "AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY" + "AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA" + "AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA" + "AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC" + "AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3" + "Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj" + "FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA=="); + }; + + return (0, _util.shadow)(this, "_loadTestFont", getLoadTestFont()); + } + + _prepareFontLoadEvent(rules, fonts, request) { + function int32(data, offset) { + return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff; + } + + function spliceString(s, offset, remove, insert) { + const chunk1 = s.substring(0, offset); + const chunk2 = s.substring(offset + remove); + return chunk1 + insert + chunk2; + } + + let i, ii; + + const canvas = this._document.createElement("canvas"); + + canvas.width = 1; + canvas.height = 1; + const ctx = canvas.getContext("2d"); + let called = 0; + + function isFontReady(name, callback) { + called++; + + if (called > 30) { + (0, _util.warn)("Load test font never loaded."); + callback(); + return; + } + + ctx.font = "30px " + name; + ctx.fillText(".", 0, 20); + const imageData = ctx.getImageData(0, 0, 1, 1); + + if (imageData.data[3] > 0) { + callback(); + return; + } + + setTimeout(isFontReady.bind(null, name, callback)); + } + + const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`; + let data = this._loadTestFont; + const COMMENT_OFFSET = 976; + data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId); + const CFF_CHECKSUM_OFFSET = 16; + const XXXX_VALUE = 0x58585858; + let checksum = int32(data, CFF_CHECKSUM_OFFSET); + + for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) { + checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0; + } + + if (i < loadTestFontId.length) { + checksum = checksum - XXXX_VALUE + int32(loadTestFontId + "XXX", i) | 0; + } + + data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum)); + const url = `url(data:font/opentype;base64,${btoa(data)});`; + const rule = `@font-face {font-family:"${loadTestFontId}";src:${url}}`; + this.insertRule(rule); + const names = []; + + for (const font of fonts) { + names.push(font.loadedName); + } + + names.push(loadTestFontId); + + const div = this._document.createElement("div"); + + div.style.visibility = "hidden"; + div.style.width = div.style.height = "10px"; + div.style.position = "absolute"; + div.style.top = div.style.left = "0px"; + + for (const name of names) { + const span = this._document.createElement("span"); + + span.textContent = "Hi"; + span.style.fontFamily = name; + div.append(span); + } + + this._document.body.append(div); + + isFontReady(loadTestFontId, () => { + div.remove(); + request.complete(); + }); + } + + }; +} + +class FontFaceObject { + constructor(translatedData, { + isEvalSupported = true, + disableFontFace = false, + ignoreErrors = false, + onUnsupportedFeature, + fontRegistry = null + }) { + this.compiledGlyphs = Object.create(null); + + for (const i in translatedData) { + this[i] = translatedData[i]; + } + + this.isEvalSupported = isEvalSupported !== false; + this.disableFontFace = disableFontFace === true; + this.ignoreErrors = ignoreErrors === true; + this._onUnsupportedFeature = onUnsupportedFeature; + this.fontRegistry = fontRegistry; + } + + createNativeFontFace() { + if (!this.data || this.disableFontFace) { + return null; + } + + let nativeFontFace; + + if (!this.cssFontInfo) { + nativeFontFace = new FontFace(this.loadedName, this.data, {}); + } else { + const css = { + weight: this.cssFontInfo.fontWeight + }; + + if (this.cssFontInfo.italicAngle) { + css.style = `oblique ${this.cssFontInfo.italicAngle}deg`; + } + + nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css); + } + + if (this.fontRegistry) { + this.fontRegistry.registerFont(this); + } + + return nativeFontFace; + } + + createFontFaceRule() { + if (!this.data || this.disableFontFace) { + return null; + } + + const data = (0, _util.bytesToString)(this.data); + const url = `url(data:${this.mimetype};base64,${btoa(data)});`; + let rule; + + if (!this.cssFontInfo) { + rule = `@font-face {font-family:"${this.loadedName}";src:${url}}`; + } else { + let css = `font-weight: ${this.cssFontInfo.fontWeight};`; + + if (this.cssFontInfo.italicAngle) { + css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`; + } + + rule = `@font-face {font-family:"${this.cssFontInfo.fontFamily}";${css}src:${url}}`; + } + + if (this.fontRegistry) { + this.fontRegistry.registerFont(this, url); + } + + return rule; + } + + getPathGenerator(objs, character) { + if (this.compiledGlyphs[character] !== undefined) { + return this.compiledGlyphs[character]; + } + + let cmds; + + try { + cmds = objs.get(this.loadedName + "_path_" + character); + } catch (ex) { + if (!this.ignoreErrors) { + throw ex; + } + + this._onUnsupportedFeature({ + featureId: _util.UNSUPPORTED_FEATURES.errorFontGetPath + }); + + (0, _util.warn)(`getPathGenerator - ignoring character: "${ex}".`); + return this.compiledGlyphs[character] = function (c, size) {}; + } + + if (this.isEvalSupported && _util.FeatureTest.isEvalSupported) { + const jsBuf = []; + + for (const current of cmds) { + const args = current.args !== undefined ? current.args.join(",") : ""; + jsBuf.push("c.", current.cmd, "(", args, ");\n"); + } + + return this.compiledGlyphs[character] = new Function("c", "size", jsBuf.join("")); + } + + return this.compiledGlyphs[character] = function (c, size) { + for (const current of cmds) { + if (current.cmd === "scale") { + current.args = [size, -size]; + } + + c[current.cmd].apply(c, current.args); + } + }; + } + +} + +exports.FontFaceObject = FontFaceObject; + +/***/ }), +/* 12 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.CanvasGraphics = void 0; + +var _display_utils = __w_pdfjs_require__(8); + +var _util = __w_pdfjs_require__(1); var _pattern_helper = __w_pdfjs_require__(13); -var _webgl = __w_pdfjs_require__(7); +var _image_utils = __w_pdfjs_require__(14); -var MIN_FONT_SIZE = 16; -var MAX_FONT_SIZE = 100; -var MAX_GROUP_SIZE = 4096; -var MIN_WIDTH_FACTOR = 0.65; -var COMPILE_TYPE3_GLYPHS = true; -var MAX_SIZE_TO_COMPILE = 1000; -var FULL_CHUNK_HEIGHT = 16; -var IsLittleEndianCached = { - get value() { - return (0, _util.shadow)(IsLittleEndianCached, 'value', (0, _util.isLittleEndian)()); - } -}; -function addContextCurrentTransform(ctx) { - if (!ctx.mozCurrentTransform) { - ctx._originalSave = ctx.save; - ctx._originalRestore = ctx.restore; - ctx._originalRotate = ctx.rotate; - ctx._originalScale = ctx.scale; - ctx._originalTranslate = ctx.translate; - ctx._originalTransform = ctx.transform; - ctx._originalSetTransform = ctx.setTransform; - ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0]; - ctx._transformStack = []; - Object.defineProperty(ctx, 'mozCurrentTransform', { - get: function getCurrentTransform() { - return this._transformMatrix; - } - }); - Object.defineProperty(ctx, 'mozCurrentTransformInverse', { - get: function getCurrentTransformInverse() { - var m = this._transformMatrix; - var a = m[0], - b = m[1], - c = m[2], - d = m[3], - e = m[4], - f = m[5]; - var ad_bc = a * d - b * c; - var bc_ad = b * c - a * d; - return [d / ad_bc, b / bc_ad, c / bc_ad, a / ad_bc, (d * e - c * f) / bc_ad, (b * e - a * f) / ad_bc]; - } - }); - ctx.save = function ctxSave() { - var old = this._transformMatrix; - this._transformStack.push(old); - this._transformMatrix = old.slice(0, 6); - this._originalSave(); - }; - ctx.restore = function ctxRestore() { - var prev = this._transformStack.pop(); - if (prev) { - this._transformMatrix = prev; - this._originalRestore(); - } - }; - ctx.translate = function ctxTranslate(x, y) { - var m = this._transformMatrix; - m[4] = m[0] * x + m[2] * y + m[4]; - m[5] = m[1] * x + m[3] * y + m[5]; - this._originalTranslate(x, y); - }; - ctx.scale = function ctxScale(x, y) { - var m = this._transformMatrix; - m[0] = m[0] * x; - m[1] = m[1] * x; - m[2] = m[2] * y; - m[3] = m[3] * y; - this._originalScale(x, y); - }; - ctx.transform = function ctxTransform(a, b, c, d, e, f) { - var m = this._transformMatrix; - this._transformMatrix = [m[0] * a + m[2] * b, m[1] * a + m[3] * b, m[0] * c + m[2] * d, m[1] * c + m[3] * d, m[0] * e + m[2] * f + m[4], m[1] * e + m[3] * f + m[5]]; - ctx._originalTransform(a, b, c, d, e, f); - }; - ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) { - this._transformMatrix = [a, b, c, d, e, f]; - ctx._originalSetTransform(a, b, c, d, e, f); - }; - ctx.rotate = function ctxRotate(angle) { - var cosValue = Math.cos(angle); - var sinValue = Math.sin(angle); - var m = this._transformMatrix; - this._transformMatrix = [m[0] * cosValue + m[2] * sinValue, m[1] * cosValue + m[3] * sinValue, m[0] * -sinValue + m[2] * cosValue, m[1] * -sinValue + m[3] * cosValue, m[4], m[5]]; - this._originalRotate(angle); - }; +var _is_node = __w_pdfjs_require__(3); + +const MIN_FONT_SIZE = 16; +const MAX_FONT_SIZE = 100; +const MAX_GROUP_SIZE = 4096; +const EXECUTION_TIME = 15; +const EXECUTION_STEPS = 10; +const MAX_SIZE_TO_COMPILE = _is_node.isNodeJS && typeof Path2D === "undefined" ? -1 : 1000; +const FULL_CHUNK_HEIGHT = 16; + +function mirrorContextOperations(ctx, destCtx) { + if (ctx._removeMirroring) { + throw new Error("Context is already forwarding operations."); } + + ctx.__originalSave = ctx.save; + ctx.__originalRestore = ctx.restore; + ctx.__originalRotate = ctx.rotate; + ctx.__originalScale = ctx.scale; + ctx.__originalTranslate = ctx.translate; + ctx.__originalTransform = ctx.transform; + ctx.__originalSetTransform = ctx.setTransform; + ctx.__originalResetTransform = ctx.resetTransform; + ctx.__originalClip = ctx.clip; + ctx.__originalMoveTo = ctx.moveTo; + ctx.__originalLineTo = ctx.lineTo; + ctx.__originalBezierCurveTo = ctx.bezierCurveTo; + ctx.__originalRect = ctx.rect; + ctx.__originalClosePath = ctx.closePath; + ctx.__originalBeginPath = ctx.beginPath; + + ctx._removeMirroring = () => { + ctx.save = ctx.__originalSave; + ctx.restore = ctx.__originalRestore; + ctx.rotate = ctx.__originalRotate; + ctx.scale = ctx.__originalScale; + ctx.translate = ctx.__originalTranslate; + ctx.transform = ctx.__originalTransform; + ctx.setTransform = ctx.__originalSetTransform; + ctx.resetTransform = ctx.__originalResetTransform; + ctx.clip = ctx.__originalClip; + ctx.moveTo = ctx.__originalMoveTo; + ctx.lineTo = ctx.__originalLineTo; + ctx.bezierCurveTo = ctx.__originalBezierCurveTo; + ctx.rect = ctx.__originalRect; + ctx.closePath = ctx.__originalClosePath; + ctx.beginPath = ctx.__originalBeginPath; + delete ctx._removeMirroring; + }; + + ctx.save = function ctxSave() { + destCtx.save(); + + this.__originalSave(); + }; + + ctx.restore = function ctxRestore() { + destCtx.restore(); + + this.__originalRestore(); + }; + + ctx.translate = function ctxTranslate(x, y) { + destCtx.translate(x, y); + + this.__originalTranslate(x, y); + }; + + ctx.scale = function ctxScale(x, y) { + destCtx.scale(x, y); + + this.__originalScale(x, y); + }; + + ctx.transform = function ctxTransform(a, b, c, d, e, f) { + destCtx.transform(a, b, c, d, e, f); + + this.__originalTransform(a, b, c, d, e, f); + }; + + ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) { + destCtx.setTransform(a, b, c, d, e, f); + + this.__originalSetTransform(a, b, c, d, e, f); + }; + + ctx.resetTransform = function ctxResetTransform() { + destCtx.resetTransform(); + + this.__originalResetTransform(); + }; + + ctx.rotate = function ctxRotate(angle) { + destCtx.rotate(angle); + + this.__originalRotate(angle); + }; + + ctx.clip = function ctxRotate(rule) { + destCtx.clip(rule); + + this.__originalClip(rule); + }; + + ctx.moveTo = function (x, y) { + destCtx.moveTo(x, y); + + this.__originalMoveTo(x, y); + }; + + ctx.lineTo = function (x, y) { + destCtx.lineTo(x, y); + + this.__originalLineTo(x, y); + }; + + ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) { + destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y); + + this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y); + }; + + ctx.rect = function (x, y, width, height) { + destCtx.rect(x, y, width, height); + + this.__originalRect(x, y, width, height); + }; + + ctx.closePath = function () { + destCtx.closePath(); + + this.__originalClosePath(); + }; + + ctx.beginPath = function () { + destCtx.beginPath(); + + this.__originalBeginPath(); + }; } -var CachedCanvases = function CachedCanvasesClosure() { - function CachedCanvases(canvasFactory) { + +class CachedCanvases { + constructor(canvasFactory) { this.canvasFactory = canvasFactory; this.cache = Object.create(null); } - CachedCanvases.prototype = { - getCanvas: function CachedCanvases_getCanvas(id, width, height, trackTransform) { - var canvasEntry; - if (this.cache[id] !== undefined) { - canvasEntry = this.cache[id]; - this.canvasFactory.reset(canvasEntry, width, height); - canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0); - } else { - canvasEntry = this.canvasFactory.create(width, height); - this.cache[id] = canvasEntry; - } - if (trackTransform) { - addContextCurrentTransform(canvasEntry.context); - } - return canvasEntry; - }, - clear: function clear() { - for (var id in this.cache) { - var canvasEntry = this.cache[id]; - this.canvasFactory.destroy(canvasEntry); - delete this.cache[id]; - } + + getCanvas(id, width, height) { + let canvasEntry; + + if (this.cache[id] !== undefined) { + canvasEntry = this.cache[id]; + this.canvasFactory.reset(canvasEntry, width, height); + } else { + canvasEntry = this.canvasFactory.create(width, height); + this.cache[id] = canvasEntry; } - }; - return CachedCanvases; -}(); + + return canvasEntry; + } + + delete(id) { + delete this.cache[id]; + } + + clear() { + for (const id in this.cache) { + const canvasEntry = this.cache[id]; + this.canvasFactory.destroy(canvasEntry); + delete this.cache[id]; + } + } + +} + +function drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) { + const [a, b, c, d, tx, ty] = (0, _display_utils.getCurrentTransform)(ctx); + + if (b === 0 && c === 0) { + const tlX = destX * a + tx; + const rTlX = Math.round(tlX); + const tlY = destY * d + ty; + const rTlY = Math.round(tlY); + const brX = (destX + destW) * a + tx; + const rWidth = Math.abs(Math.round(brX) - rTlX) || 1; + const brY = (destY + destH) * d + ty; + const rHeight = Math.abs(Math.round(brY) - rTlY) || 1; + ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY); + ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight); + ctx.setTransform(a, b, c, d, tx, ty); + return [rWidth, rHeight]; + } + + if (a === 0 && d === 0) { + const tlX = destY * c + tx; + const rTlX = Math.round(tlX); + const tlY = destX * b + ty; + const rTlY = Math.round(tlY); + const brX = (destY + destH) * c + tx; + const rWidth = Math.abs(Math.round(brX) - rTlX) || 1; + const brY = (destX + destW) * b + ty; + const rHeight = Math.abs(Math.round(brY) - rTlY) || 1; + ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY); + ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth); + ctx.setTransform(a, b, c, d, tx, ty); + return [rHeight, rWidth]; + } + + ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH); + const scaleX = Math.hypot(a, b); + const scaleY = Math.hypot(c, d); + return [scaleX * destW, scaleY * destH]; +} + function compileType3Glyph(imgData) { - var POINT_TO_PROCESS_LIMIT = 1000; - var width = imgData.width, - height = imgData.height; - var i, - j, - j0, - width1 = width + 1; - var points = new Uint8Array(width1 * (height + 1)); - var POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]); - var lineSize = width + 7 & ~7, - data0 = imgData.data; - var data = new Uint8Array(lineSize * height), - pos = 0, - ii; - for (i = 0, ii = data0.length; i < ii; i++) { - var mask = 128, - elem = data0[i]; + const { + width, + height + } = imgData; + + if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) { + return null; + } + + const POINT_TO_PROCESS_LIMIT = 1000; + const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]); + const width1 = width + 1; + let points = new Uint8Array(width1 * (height + 1)); + let i, j, j0; + const lineSize = width + 7 & ~7; + let data = new Uint8Array(lineSize * height), + pos = 0; + + for (const elem of imgData.data) { + let mask = 128; + while (mask > 0) { data[pos++] = elem & mask ? 0 : 255; mask >>= 1; } } - var count = 0; + + let count = 0; pos = 0; + if (data[pos] !== 0) { points[0] = 1; ++count; } + for (j = 1; j < width; j++) { if (data[pos] !== data[pos + 1]) { points[j] = data[pos] ? 2 : 1; ++count; } + pos++; } + if (data[pos] !== 0) { points[j] = 2; ++count; } + for (i = 1; i < height; i++) { pos = i * lineSize; j0 = i * width1; + if (data[pos - lineSize] !== data[pos]) { points[j0] = data[pos] ? 1 : 8; ++count; } - var sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0); + + let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0); + for (j = 1; j < width; j++) { sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0); + if (POINT_TYPES[sum]) { points[j0 + j] = POINT_TYPES[sum]; ++count; } + pos++; } + if (data[pos - lineSize] !== data[pos]) { points[j0 + j] = data[pos] ? 2 : 4; ++count; } + if (count > POINT_TO_PROCESS_LIMIT) { return null; } } + pos = lineSize * (height - 1); j0 = i * width1; + if (data[pos] !== 0) { points[j0] = 8; ++count; } + for (j = 1; j < width; j++) { if (data[pos] !== data[pos + 1]) { points[j0 + j] = data[pos] ? 4 : 8; ++count; } + pos++; } + if (data[pos] !== 0) { points[j0 + j] = 4; ++count; } + if (count > POINT_TO_PROCESS_LIMIT) { return null; } - var steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]); - var outlines = []; + + const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]); + const path = new Path2D(); + for (i = 0; count && i <= height; i++) { - var p = i * width1; - var end = p + width; + let p = i * width1; + const end = p + width; + while (p < end && !points[p]) { p++; } + if (p === end) { continue; } - var coords = [p % width1, i]; - var type = points[p], - p0 = p, - pp; + + path.moveTo(p % width1, i); + const p0 = p; + let type = points[p]; + do { - var step = steps[type]; + const step = steps[type]; + do { p += step; } while (!points[p]); - pp = points[p]; + + const pp = points[p]; + if (pp !== 5 && pp !== 10) { type = pp; points[p] = 0; @@ -9927,33 +6456,34 @@ function compileType3Glyph(imgData) { type = pp & 0x33 * type >> 4; points[p] &= type >> 2 | type << 2; } - coords.push(p % width1); - coords.push(p / width1 | 0); - --count; + + path.lineTo(p % width1, p / width1 | 0); + + if (!points[p]) { + --count; + } } while (p0 !== p); - outlines.push(coords); + --i; } - var drawOutline = function drawOutline(c) { + + data = null; + points = null; + + const drawOutline = function (c) { c.save(); c.scale(1 / width, -1 / height); c.translate(0, -height); - c.beginPath(); - for (var i = 0, ii = outlines.length; i < ii; i++) { - var o = outlines[i]; - c.moveTo(o[0], o[1]); - for (var j = 2, jj = o.length; j < jj; j += 2) { - c.lineTo(o[j], o[j + 1]); - } - } - c.fill(); + c.fill(path); c.beginPath(); c.restore(); }; + return drawOutline; } -var CanvasExtraState = function CanvasExtraStateClosure() { - function CanvasExtraState() { + +class CanvasExtraState { + constructor(width, height) { this.alphaIsShape = false; this.fontSize = 0; this.fontSizeScale = 1; @@ -9970,32 +6500,478 @@ var CanvasExtraState = function CanvasExtraStateClosure() { this.textHScale = 1; this.textRenderingMode = _util.TextRenderingMode.FILL; this.textRise = 0; - this.fillColor = '#000000'; - this.strokeColor = '#000000'; + this.fillColor = "#000000"; + this.strokeColor = "#000000"; this.patternFill = false; this.fillAlpha = 1; this.strokeAlpha = 1; this.lineWidth = 1; this.activeSMask = null; - this.resumeSMaskCtx = null; + this.transferMaps = null; + this.startNewPathAndClipBox([0, 0, width, height]); } - CanvasExtraState.prototype = { - clone: function CanvasExtraState_clone() { - return Object.create(this); - }, - setCurrentPoint: function CanvasExtraState_setCurrentPoint(x, y) { - this.x = x; - this.y = y; + + clone() { + const clone = Object.create(this); + clone.clipBox = this.clipBox.slice(); + return clone; + } + + setCurrentPoint(x, y) { + this.x = x; + this.y = y; + } + + updatePathMinMax(transform, x, y) { + [x, y] = _util.Util.applyTransform([x, y], transform); + this.minX = Math.min(this.minX, x); + this.minY = Math.min(this.minY, y); + this.maxX = Math.max(this.maxX, x); + this.maxY = Math.max(this.maxY, y); + } + + updateRectMinMax(transform, rect) { + const p1 = _util.Util.applyTransform(rect, transform); + + const p2 = _util.Util.applyTransform(rect.slice(2), transform); + + this.minX = Math.min(this.minX, p1[0], p2[0]); + this.minY = Math.min(this.minY, p1[1], p2[1]); + this.maxX = Math.max(this.maxX, p1[0], p2[0]); + this.maxY = Math.max(this.maxY, p1[1], p2[1]); + } + + updateScalingPathMinMax(transform, minMax) { + _util.Util.scaleMinMax(transform, minMax); + + this.minX = Math.min(this.minX, minMax[0]); + this.maxX = Math.max(this.maxX, minMax[1]); + this.minY = Math.min(this.minY, minMax[2]); + this.maxY = Math.max(this.maxY, minMax[3]); + } + + updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) { + const box = _util.Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3); + + if (minMax) { + minMax[0] = Math.min(minMax[0], box[0], box[2]); + minMax[1] = Math.max(minMax[1], box[0], box[2]); + minMax[2] = Math.min(minMax[2], box[1], box[3]); + minMax[3] = Math.max(minMax[3], box[1], box[3]); + return; } - }; - return CanvasExtraState; -}(); -var CanvasGraphics = function CanvasGraphicsClosure() { - var EXECUTION_TIME = 15; - var EXECUTION_STEPS = 10; - function CanvasGraphics(canvasCtx, commonObjs, objs, canvasFactory, imageLayer) { + + this.updateRectMinMax(transform, box); + } + + getPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) { + const box = [this.minX, this.minY, this.maxX, this.maxY]; + + if (pathType === _pattern_helper.PathType.STROKE) { + if (!transform) { + (0, _util.unreachable)("Stroke bounding box must include transform."); + } + + const scale = _util.Util.singularValueDecompose2dScale(transform); + + const xStrokePad = scale[0] * this.lineWidth / 2; + const yStrokePad = scale[1] * this.lineWidth / 2; + box[0] -= xStrokePad; + box[1] -= yStrokePad; + box[2] += xStrokePad; + box[3] += yStrokePad; + } + + return box; + } + + updateClipFromPath() { + const intersect = _util.Util.intersect(this.clipBox, this.getPathBoundingBox()); + + this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]); + } + + isEmptyClip() { + return this.minX === Infinity; + } + + startNewPathAndClipBox(box) { + this.clipBox = box; + this.minX = Infinity; + this.minY = Infinity; + this.maxX = 0; + this.maxY = 0; + } + + getClippedPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) { + return _util.Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform)); + } + +} + +function putBinaryImageData(ctx, imgData, transferMaps = null) { + if (typeof ImageData !== "undefined" && imgData instanceof ImageData) { + ctx.putImageData(imgData, 0, 0); + return; + } + + const height = imgData.height, + width = imgData.width; + const partialChunkHeight = height % FULL_CHUNK_HEIGHT; + const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; + const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; + const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); + let srcPos = 0, + destPos; + const src = imgData.data; + const dest = chunkImgData.data; + let i, j, thisChunkHeight, elemsInThisChunk; + let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray; + + if (transferMaps) { + switch (transferMaps.length) { + case 1: + transferMapRed = transferMaps[0]; + transferMapGreen = transferMaps[0]; + transferMapBlue = transferMaps[0]; + transferMapGray = transferMaps[0]; + break; + + case 4: + transferMapRed = transferMaps[0]; + transferMapGreen = transferMaps[1]; + transferMapBlue = transferMaps[2]; + transferMapGray = transferMaps[3]; + break; + } + } + + if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) { + const srcLength = src.byteLength; + const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2); + const dest32DataLength = dest32.length; + const fullSrcDiff = width + 7 >> 3; + let white = 0xffffffff; + let black = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff; + + if (transferMapGray) { + if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) { + [white, black] = [black, white]; + } + } + + for (i = 0; i < totalChunks; i++) { + thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; + destPos = 0; + + for (j = 0; j < thisChunkHeight; j++) { + const srcDiff = srcLength - srcPos; + let k = 0; + const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7; + const kEndUnrolled = kEnd & ~7; + let mask = 0; + let srcByte = 0; + + for (; k < kEndUnrolled; k += 8) { + srcByte = src[srcPos++]; + dest32[destPos++] = srcByte & 128 ? white : black; + dest32[destPos++] = srcByte & 64 ? white : black; + dest32[destPos++] = srcByte & 32 ? white : black; + dest32[destPos++] = srcByte & 16 ? white : black; + dest32[destPos++] = srcByte & 8 ? white : black; + dest32[destPos++] = srcByte & 4 ? white : black; + dest32[destPos++] = srcByte & 2 ? white : black; + dest32[destPos++] = srcByte & 1 ? white : black; + } + + for (; k < kEnd; k++) { + if (mask === 0) { + srcByte = src[srcPos++]; + mask = 128; + } + + dest32[destPos++] = srcByte & mask ? white : black; + mask >>= 1; + } + } + + while (destPos < dest32DataLength) { + dest32[destPos++] = 0; + } + + ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); + } + } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) { + const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue); + j = 0; + elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4; + + for (i = 0; i < fullChunks; i++) { + dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); + srcPos += elemsInThisChunk; + + if (hasTransferMaps) { + for (let k = 0; k < elemsInThisChunk; k += 4) { + if (transferMapRed) { + dest[k + 0] = transferMapRed[dest[k + 0]]; + } + + if (transferMapGreen) { + dest[k + 1] = transferMapGreen[dest[k + 1]]; + } + + if (transferMapBlue) { + dest[k + 2] = transferMapBlue[dest[k + 2]]; + } + } + } + + ctx.putImageData(chunkImgData, 0, j); + j += FULL_CHUNK_HEIGHT; + } + + if (i < totalChunks) { + elemsInThisChunk = width * partialChunkHeight * 4; + dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); + + if (hasTransferMaps) { + for (let k = 0; k < elemsInThisChunk; k += 4) { + if (transferMapRed) { + dest[k + 0] = transferMapRed[dest[k + 0]]; + } + + if (transferMapGreen) { + dest[k + 1] = transferMapGreen[dest[k + 1]]; + } + + if (transferMapBlue) { + dest[k + 2] = transferMapBlue[dest[k + 2]]; + } + } + } + + ctx.putImageData(chunkImgData, 0, j); + } + } else if (imgData.kind === _util.ImageKind.RGB_24BPP) { + const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue); + thisChunkHeight = FULL_CHUNK_HEIGHT; + elemsInThisChunk = width * thisChunkHeight; + + for (i = 0; i < totalChunks; i++) { + if (i >= fullChunks) { + thisChunkHeight = partialChunkHeight; + elemsInThisChunk = width * thisChunkHeight; + } + + destPos = 0; + + for (j = elemsInThisChunk; j--;) { + dest[destPos++] = src[srcPos++]; + dest[destPos++] = src[srcPos++]; + dest[destPos++] = src[srcPos++]; + dest[destPos++] = 255; + } + + if (hasTransferMaps) { + for (let k = 0; k < destPos; k += 4) { + if (transferMapRed) { + dest[k + 0] = transferMapRed[dest[k + 0]]; + } + + if (transferMapGreen) { + dest[k + 1] = transferMapGreen[dest[k + 1]]; + } + + if (transferMapBlue) { + dest[k + 2] = transferMapBlue[dest[k + 2]]; + } + } + } + + ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); + } + } else { + throw new Error(`bad image kind: ${imgData.kind}`); + } +} + +function putBinaryImageMask(ctx, imgData) { + if (imgData.bitmap) { + ctx.drawImage(imgData.bitmap, 0, 0); + return; + } + + const height = imgData.height, + width = imgData.width; + const partialChunkHeight = height % FULL_CHUNK_HEIGHT; + const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; + const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; + const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); + let srcPos = 0; + const src = imgData.data; + const dest = chunkImgData.data; + + for (let i = 0; i < totalChunks; i++) { + const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; + ({ + srcPos + } = (0, _image_utils.applyMaskImageData)({ + src, + srcPos, + dest, + width, + height: thisChunkHeight + })); + ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); + } +} + +function copyCtxState(sourceCtx, destCtx) { + const properties = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", "lineJoin", "miterLimit", "globalCompositeOperation", "font"]; + + for (let i = 0, ii = properties.length; i < ii; i++) { + const property = properties[i]; + + if (sourceCtx[property] !== undefined) { + destCtx[property] = sourceCtx[property]; + } + } + + if (sourceCtx.setLineDash !== undefined) { + destCtx.setLineDash(sourceCtx.getLineDash()); + destCtx.lineDashOffset = sourceCtx.lineDashOffset; + } +} + +function resetCtxToDefault(ctx, foregroundColor) { + ctx.strokeStyle = ctx.fillStyle = foregroundColor || "#000000"; + ctx.fillRule = "nonzero"; + ctx.globalAlpha = 1; + ctx.lineWidth = 1; + ctx.lineCap = "butt"; + ctx.lineJoin = "miter"; + ctx.miterLimit = 10; + ctx.globalCompositeOperation = "source-over"; + ctx.font = "10px sans-serif"; + + if (ctx.setLineDash !== undefined) { + ctx.setLineDash([]); + ctx.lineDashOffset = 0; + } +} + +function composeSMaskBackdrop(bytes, r0, g0, b0) { + const length = bytes.length; + + for (let i = 3; i < length; i += 4) { + const alpha = bytes[i]; + + if (alpha === 0) { + bytes[i - 3] = r0; + bytes[i - 2] = g0; + bytes[i - 1] = b0; + } else if (alpha < 255) { + const alpha_ = 255 - alpha; + bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8; + bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8; + bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8; + } + } +} + +function composeSMaskAlpha(maskData, layerData, transferMap) { + const length = maskData.length; + const scale = 1 / 255; + + for (let i = 3; i < length; i += 4) { + const alpha = transferMap ? transferMap[maskData[i]] : maskData[i]; + layerData[i] = layerData[i] * alpha * scale | 0; + } +} + +function composeSMaskLuminosity(maskData, layerData, transferMap) { + const length = maskData.length; + + for (let i = 3; i < length; i += 4) { + const y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28; + layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16; + } +} + +function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) { + const hasBackdrop = !!backdrop; + const r0 = hasBackdrop ? backdrop[0] : 0; + const g0 = hasBackdrop ? backdrop[1] : 0; + const b0 = hasBackdrop ? backdrop[2] : 0; + let composeFn; + + if (subtype === "Luminosity") { + composeFn = composeSMaskLuminosity; + } else { + composeFn = composeSMaskAlpha; + } + + const PIXELS_TO_PROCESS = 1048576; + const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width)); + + for (let row = 0; row < height; row += chunkSize) { + const chunkHeight = Math.min(chunkSize, height - row); + const maskData = maskCtx.getImageData(layerOffsetX - maskOffsetX, row + (layerOffsetY - maskOffsetY), width, chunkHeight); + const layerData = layerCtx.getImageData(layerOffsetX, row + layerOffsetY, width, chunkHeight); + + if (hasBackdrop) { + composeSMaskBackdrop(maskData.data, r0, g0, b0); + } + + composeFn(maskData.data, layerData.data, transferMap); + layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY); + } +} + +function composeSMask(ctx, smask, layerCtx, layerBox) { + const layerOffsetX = layerBox[0]; + const layerOffsetY = layerBox[1]; + const layerWidth = layerBox[2] - layerOffsetX; + const layerHeight = layerBox[3] - layerOffsetY; + + if (layerWidth === 0 || layerHeight === 0) { + return; + } + + genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY); + ctx.save(); + ctx.globalAlpha = 1; + ctx.globalCompositeOperation = "source-over"; + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.drawImage(layerCtx.canvas, 0, 0); + ctx.restore(); +} + +function getImageSmoothingEnabled(transform, interpolate) { + const scale = _util.Util.singularValueDecompose2dScale(transform); + + scale[0] = Math.fround(scale[0]); + scale[1] = Math.fround(scale[1]); + const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS); + + if (interpolate !== undefined) { + return interpolate; + } else if (scale[0] <= actualScale || scale[1] <= actualScale) { + return true; + } + + return false; +} + +const LINE_CAP_STYLES = ["butt", "round", "square"]; +const LINE_JOIN_STYLES = ["miter", "round", "bevel"]; +const NORMAL_CLIP = {}; +const EO_CLIP = {}; + +class CanvasGraphics { + constructor(canvasCtx, commonObjs, objs, canvasFactory, imageLayer, optionalContentConfig, annotationCanvasMap, pageColors) { this.ctx = canvasCtx; - this.current = new CanvasExtraState(); + this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height); this.stateStack = []; this.pendingClip = null; this.pendingEOFill = false; @@ -10013,1978 +6989,2300 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.smaskStack = []; this.smaskCounter = 0; this.tempSMask = null; + this.suspendedCtx = null; + this.contentVisible = true; + this.markedContentStack = []; + this.optionalContentConfig = optionalContentConfig; this.cachedCanvases = new CachedCanvases(this.canvasFactory); - if (canvasCtx) { - addContextCurrentTransform(canvasCtx); - } - this.cachedGetSinglePixelWidth = null; + this.cachedPatterns = new Map(); + this.annotationCanvasMap = annotationCanvasMap; + this.viewportScale = 1; + this.outputScaleX = 1; + this.outputScaleY = 1; + this.backgroundColor = pageColors?.background || null; + this.foregroundColor = pageColors?.foreground || null; + this._cachedScaleForStroking = null; + this._cachedGetSinglePixelWidth = null; + this._cachedBitmapsMap = new Map(); } - function putBinaryImageData(ctx, imgData) { - if (typeof ImageData !== 'undefined' && imgData instanceof ImageData) { - ctx.putImageData(imgData, 0, 0); - return; - } - var height = imgData.height, - width = imgData.width; - var partialChunkHeight = height % FULL_CHUNK_HEIGHT; - var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; - var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; - var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); - var srcPos = 0, - destPos; - var src = imgData.data; - var dest = chunkImgData.data; - var i, j, thisChunkHeight, elemsInThisChunk; - if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) { - var srcLength = src.byteLength; - var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2); - var dest32DataLength = dest32.length; - var fullSrcDiff = width + 7 >> 3; - var white = 0xFFFFFFFF; - var black = IsLittleEndianCached.value ? 0xFF000000 : 0x000000FF; - for (i = 0; i < totalChunks; i++) { - thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; - destPos = 0; - for (j = 0; j < thisChunkHeight; j++) { - var srcDiff = srcLength - srcPos; - var k = 0; - var kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7; - var kEndUnrolled = kEnd & ~7; - var mask = 0; - var srcByte = 0; - for (; k < kEndUnrolled; k += 8) { - srcByte = src[srcPos++]; - dest32[destPos++] = srcByte & 128 ? white : black; - dest32[destPos++] = srcByte & 64 ? white : black; - dest32[destPos++] = srcByte & 32 ? white : black; - dest32[destPos++] = srcByte & 16 ? white : black; - dest32[destPos++] = srcByte & 8 ? white : black; - dest32[destPos++] = srcByte & 4 ? white : black; - dest32[destPos++] = srcByte & 2 ? white : black; - dest32[destPos++] = srcByte & 1 ? white : black; - } - for (; k < kEnd; k++) { - if (mask === 0) { - srcByte = src[srcPos++]; - mask = 128; - } - dest32[destPos++] = srcByte & mask ? white : black; - mask >>= 1; - } - } - while (destPos < dest32DataLength) { - dest32[destPos++] = 0; - } - ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); - } - } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) { - j = 0; - elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4; - for (i = 0; i < fullChunks; i++) { - dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); - srcPos += elemsInThisChunk; - ctx.putImageData(chunkImgData, 0, j); - j += FULL_CHUNK_HEIGHT; - } - if (i < totalChunks) { - elemsInThisChunk = width * partialChunkHeight * 4; - dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); - ctx.putImageData(chunkImgData, 0, j); - } - } else if (imgData.kind === _util.ImageKind.RGB_24BPP) { - thisChunkHeight = FULL_CHUNK_HEIGHT; - elemsInThisChunk = width * thisChunkHeight; - for (i = 0; i < totalChunks; i++) { - if (i >= fullChunks) { - thisChunkHeight = partialChunkHeight; - elemsInThisChunk = width * thisChunkHeight; - } - destPos = 0; - for (j = elemsInThisChunk; j--;) { - dest[destPos++] = src[srcPos++]; - dest[destPos++] = src[srcPos++]; - dest[destPos++] = src[srcPos++]; - dest[destPos++] = 255; - } - ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); - } - } else { - throw new Error('bad image kind: ' + imgData.kind); - } - } - function putBinaryImageMask(ctx, imgData) { - var height = imgData.height, - width = imgData.width; - var partialChunkHeight = height % FULL_CHUNK_HEIGHT; - var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; - var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; - var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); - var srcPos = 0; - var src = imgData.data; - var dest = chunkImgData.data; - for (var i = 0; i < totalChunks; i++) { - var thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; - var destPos = 3; - for (var j = 0; j < thisChunkHeight; j++) { - var mask = 0; - for (var k = 0; k < width; k++) { - if (!mask) { - var elem = src[srcPos++]; - mask = 128; - } - dest[destPos] = elem & mask ? 0 : 255; - destPos += 4; - mask >>= 1; - } - } - ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); - } - } - function copyCtxState(sourceCtx, destCtx) { - var properties = ['strokeStyle', 'fillStyle', 'fillRule', 'globalAlpha', 'lineWidth', 'lineCap', 'lineJoin', 'miterLimit', 'globalCompositeOperation', 'font']; - for (var i = 0, ii = properties.length; i < ii; i++) { - var property = properties[i]; - if (sourceCtx[property] !== undefined) { - destCtx[property] = sourceCtx[property]; - } - } - if (sourceCtx.setLineDash !== undefined) { - destCtx.setLineDash(sourceCtx.getLineDash()); - destCtx.lineDashOffset = sourceCtx.lineDashOffset; - } - } - function resetCtxToDefault(ctx) { - ctx.strokeStyle = '#000000'; - ctx.fillStyle = '#000000'; - ctx.fillRule = 'nonzero'; - ctx.globalAlpha = 1; - ctx.lineWidth = 1; - ctx.lineCap = 'butt'; - ctx.lineJoin = 'miter'; - ctx.miterLimit = 10; - ctx.globalCompositeOperation = 'source-over'; - ctx.font = '10px sans-serif'; - if (ctx.setLineDash !== undefined) { - ctx.setLineDash([]); - ctx.lineDashOffset = 0; - } - } - function composeSMaskBackdrop(bytes, r0, g0, b0) { - var length = bytes.length; - for (var i = 3; i < length; i += 4) { - var alpha = bytes[i]; - if (alpha === 0) { - bytes[i - 3] = r0; - bytes[i - 2] = g0; - bytes[i - 1] = b0; - } else if (alpha < 255) { - var alpha_ = 255 - alpha; - bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8; - bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8; - bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8; - } - } - } - function composeSMaskAlpha(maskData, layerData, transferMap) { - var length = maskData.length; - var scale = 1 / 255; - for (var i = 3; i < length; i += 4) { - var alpha = transferMap ? transferMap[maskData[i]] : maskData[i]; - layerData[i] = layerData[i] * alpha * scale | 0; - } - } - function composeSMaskLuminosity(maskData, layerData, transferMap) { - var length = maskData.length; - for (var i = 3; i < length; i += 4) { - var y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28; - layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16; - } - } - function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap) { - var hasBackdrop = !!backdrop; - var r0 = hasBackdrop ? backdrop[0] : 0; - var g0 = hasBackdrop ? backdrop[1] : 0; - var b0 = hasBackdrop ? backdrop[2] : 0; - var composeFn; - if (subtype === 'Luminosity') { - composeFn = composeSMaskLuminosity; - } else { - composeFn = composeSMaskAlpha; - } - var PIXELS_TO_PROCESS = 1048576; - var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width)); - for (var row = 0; row < height; row += chunkSize) { - var chunkHeight = Math.min(chunkSize, height - row); - var maskData = maskCtx.getImageData(0, row, width, chunkHeight); - var layerData = layerCtx.getImageData(0, row, width, chunkHeight); - if (hasBackdrop) { - composeSMaskBackdrop(maskData.data, r0, g0, b0); - } - composeFn(maskData.data, layerData.data, transferMap); - maskCtx.putImageData(layerData, 0, row); - } - } - function composeSMask(ctx, smask, layerCtx) { - var mask = smask.canvas; - var maskCtx = smask.context; - ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY, smask.offsetX, smask.offsetY); - var backdrop = smask.backdrop || null; - if (!smask.transferMap && _webgl.WebGLUtils.isEnabled) { - var composed = _webgl.WebGLUtils.composeSMask(layerCtx.canvas, mask, { - subtype: smask.subtype, - backdrop: backdrop - }); - ctx.setTransform(1, 0, 0, 1, 0, 0); - ctx.drawImage(composed, smask.offsetX, smask.offsetY); - return; - } - genericComposeSMask(maskCtx, layerCtx, mask.width, mask.height, smask.subtype, backdrop, smask.transferMap); - ctx.drawImage(mask, 0, 0); - } - var LINE_CAP_STYLES = ['butt', 'round', 'square']; - var LINE_JOIN_STYLES = ['miter', 'round', 'bevel']; - var NORMAL_CLIP = {}; - var EO_CLIP = {}; - CanvasGraphics.prototype = { - beginDrawing: function beginDrawing(_ref) { - var transform = _ref.transform, - viewport = _ref.viewport, - transparency = _ref.transparency, - _ref$background = _ref.background, - background = _ref$background === undefined ? null : _ref$background; - var width = this.ctx.canvas.width; - var height = this.ctx.canvas.height; - this.ctx.save(); - this.ctx.fillStyle = background || 'rgb(255, 255, 255)'; - this.ctx.fillRect(0, 0, width, height); - this.ctx.restore(); - if (transparency) { - var transparentCanvas = this.cachedCanvases.getCanvas('transparent', width, height, true); - this.compositeCtx = this.ctx; - this.transparentCanvas = transparentCanvas.canvas; - this.ctx = transparentCanvas.context; - this.ctx.save(); - this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform); - } - this.ctx.save(); - resetCtxToDefault(this.ctx); - if (transform) { - this.ctx.transform.apply(this.ctx, transform); - } - this.ctx.transform.apply(this.ctx, viewport.transform); - this.baseTransform = this.ctx.mozCurrentTransform.slice(); - if (this.imageLayer) { - this.imageLayer.beginLayout(); - } - }, + getObject(data, fallback = null) { + if (typeof data === "string") { + return data.startsWith("g_") ? this.commonObjs.get(data) : this.objs.get(data); + } - executeOperatorList: function CanvasGraphics_executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) { - var argsArray = operatorList.argsArray; - var fnArray = operatorList.fnArray; - var i = executionStartIdx || 0; - var argsArrayLen = argsArray.length; - if (argsArrayLen === i) { + return fallback; + } + + beginDrawing({ + transform, + viewport, + transparency = false, + background = null + }) { + const width = this.ctx.canvas.width; + const height = this.ctx.canvas.height; + const defaultBackgroundColor = background || "#ffffff"; + this.ctx.save(); + + if (this.foregroundColor && this.backgroundColor) { + this.ctx.fillStyle = this.foregroundColor; + const fg = this.foregroundColor = this.ctx.fillStyle; + this.ctx.fillStyle = this.backgroundColor; + const bg = this.backgroundColor = this.ctx.fillStyle; + let isValidDefaultBg = true; + let defaultBg = defaultBackgroundColor; + this.ctx.fillStyle = defaultBackgroundColor; + defaultBg = this.ctx.fillStyle; + isValidDefaultBg = typeof defaultBg === "string" && /^#[0-9A-Fa-f]{6}$/.test(defaultBg); + + if (fg === "#000000" && bg === "#ffffff" || fg === bg || !isValidDefaultBg) { + this.foregroundColor = this.backgroundColor = null; + } else { + const [rB, gB, bB] = (0, _display_utils.getRGB)(defaultBg); + + const newComp = x => { + x /= 255; + return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4; + }; + + const lumB = Math.round(0.2126 * newComp(rB) + 0.7152 * newComp(gB) + 0.0722 * newComp(bB)); + + this.selectColor = (r, g, b) => { + const lumC = 0.2126 * newComp(r) + 0.7152 * newComp(g) + 0.0722 * newComp(b); + return Math.round(lumC) === lumB ? bg : fg; + }; + } + } + + this.ctx.fillStyle = this.backgroundColor || defaultBackgroundColor; + this.ctx.fillRect(0, 0, width, height); + this.ctx.restore(); + + if (transparency) { + const transparentCanvas = this.cachedCanvases.getCanvas("transparent", width, height); + this.compositeCtx = this.ctx; + this.transparentCanvas = transparentCanvas.canvas; + this.ctx = transparentCanvas.context; + this.ctx.save(); + this.ctx.transform(...(0, _display_utils.getCurrentTransform)(this.compositeCtx)); + } + + this.ctx.save(); + resetCtxToDefault(this.ctx, this.foregroundColor); + + if (transform) { + this.ctx.transform(...transform); + this.outputScaleX = transform[0]; + this.outputScaleY = transform[0]; + } + + this.ctx.transform(...viewport.transform); + this.viewportScale = viewport.scale; + this.baseTransform = (0, _display_utils.getCurrentTransform)(this.ctx); + + if (this.imageLayer) { + (0, _display_utils.deprecated)("The `imageLayer` functionality will be removed in the future."); + this.imageLayer.beginLayout(); + } + } + + executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) { + const argsArray = operatorList.argsArray; + const fnArray = operatorList.fnArray; + let i = executionStartIdx || 0; + const argsArrayLen = argsArray.length; + + if (argsArrayLen === i) { + return i; + } + + const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === "function"; + const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0; + let steps = 0; + const commonObjs = this.commonObjs; + const objs = this.objs; + let fnId; + + while (true) { + if (stepper !== undefined && i === stepper.nextBreakPoint) { + stepper.breakIt(i, continueCallback); return i; } - var chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === 'function'; - var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0; - var steps = 0; - var commonObjs = this.commonObjs; - var objs = this.objs; - var fnId; - while (true) { - if (stepper !== undefined && i === stepper.nextBreakPoint) { - stepper.breakIt(i, continueCallback); - return i; - } - fnId = fnArray[i]; - if (fnId !== _util.OPS.dependency) { - this[fnId].apply(this, argsArray[i]); - } else { - var deps = argsArray[i]; - for (var n = 0, nn = deps.length; n < nn; n++) { - var depObjId = deps[n]; - var common = depObjId[0] === 'g' && depObjId[1] === '_'; - var objsPool = common ? commonObjs : objs; - if (!objsPool.isResolved(depObjId)) { - objsPool.get(depObjId, continueCallback); - return i; - } - } - } - i++; - if (i === argsArrayLen) { - return i; - } - if (chunkOperations && ++steps > EXECUTION_STEPS) { - if (Date.now() > endTime) { - continueCallback(); + + fnId = fnArray[i]; + + if (fnId !== _util.OPS.dependency) { + this[fnId].apply(this, argsArray[i]); + } else { + for (const depObjId of argsArray[i]) { + const objsPool = depObjId.startsWith("g_") ? commonObjs : objs; + + if (!objsPool.has(depObjId)) { + objsPool.get(depObjId, continueCallback); return i; } - steps = 0; } } - }, - endDrawing: function CanvasGraphics_endDrawing() { - if (this.current.activeSMask !== null) { - this.endSMaskGroup(); + + i++; + + if (i === argsArrayLen) { + return i; } + + if (chunkOperations && ++steps > EXECUTION_STEPS) { + if (Date.now() > endTime) { + continueCallback(); + return i; + } + + steps = 0; + } + } + } + + #restoreInitialState() { + while (this.stateStack.length || this.inSMaskMode) { + this.restore(); + } + + this.ctx.restore(); + + if (this.transparentCanvas) { + this.ctx = this.compositeCtx; + this.ctx.save(); + this.ctx.setTransform(1, 0, 0, 1, 0, 0); + this.ctx.drawImage(this.transparentCanvas, 0, 0); this.ctx.restore(); - if (this.transparentCanvas) { - this.ctx = this.compositeCtx; - this.ctx.save(); - this.ctx.setTransform(1, 0, 0, 1, 0, 0); - this.ctx.drawImage(this.transparentCanvas, 0, 0); + this.transparentCanvas = null; + } + } + + endDrawing() { + this.#restoreInitialState(); + this.cachedCanvases.clear(); + this.cachedPatterns.clear(); + + for (const cache of this._cachedBitmapsMap.values()) { + for (const canvas of cache.values()) { + if (typeof HTMLCanvasElement !== "undefined" && canvas instanceof HTMLCanvasElement) { + canvas.width = canvas.height = 0; + } + } + + cache.clear(); + } + + this._cachedBitmapsMap.clear(); + + if (this.imageLayer) { + this.imageLayer.endLayout(); + } + } + + _scaleImage(img, inverseTransform) { + const width = img.width; + const height = img.height; + let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1); + let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1); + let paintWidth = width, + paintHeight = height; + let tmpCanvasId = "prescale1"; + let tmpCanvas, tmpCtx; + + while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) { + let newWidth = paintWidth, + newHeight = paintHeight; + + if (widthScale > 2 && paintWidth > 1) { + newWidth = Math.ceil(paintWidth / 2); + widthScale /= paintWidth / newWidth; + } + + if (heightScale > 2 && paintHeight > 1) { + newHeight = Math.ceil(paintHeight / 2); + heightScale /= paintHeight / newHeight; + } + + tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight); + tmpCtx = tmpCanvas.context; + tmpCtx.clearRect(0, 0, newWidth, newHeight); + tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight); + img = tmpCanvas.canvas; + paintWidth = newWidth; + paintHeight = newHeight; + tmpCanvasId = tmpCanvasId === "prescale1" ? "prescale2" : "prescale1"; + } + + return { + img, + paintWidth, + paintHeight + }; + } + + _createMaskCanvas(img) { + const ctx = this.ctx; + const { + width, + height + } = img; + const fillColor = this.current.fillColor; + const isPatternFill = this.current.patternFill; + const currentTransform = (0, _display_utils.getCurrentTransform)(ctx); + let cache, cacheKey, scaled, maskCanvas; + + if ((img.bitmap || img.data) && img.count > 1) { + const mainKey = img.bitmap || img.data.buffer; + const withoutTranslation = currentTransform.slice(0, 4); + cacheKey = JSON.stringify(isPatternFill ? withoutTranslation : [withoutTranslation, fillColor]); + cache = this._cachedBitmapsMap.get(mainKey); + + if (!cache) { + cache = new Map(); + + this._cachedBitmapsMap.set(mainKey, cache); + } + + const cachedImage = cache.get(cacheKey); + + if (cachedImage && !isPatternFill) { + const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]); + const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]); + return { + canvas: cachedImage, + offsetX, + offsetY + }; + } + + scaled = cachedImage; + } + + if (!scaled) { + maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height); + putBinaryImageMask(maskCanvas.context, img); + } + + let maskToCanvas = _util.Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]); + + maskToCanvas = _util.Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]); + + const cord1 = _util.Util.applyTransform([0, 0], maskToCanvas); + + const cord2 = _util.Util.applyTransform([width, height], maskToCanvas); + + const rect = _util.Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]); + + const drawnWidth = Math.round(rect[2] - rect[0]) || 1; + const drawnHeight = Math.round(rect[3] - rect[1]) || 1; + const fillCanvas = this.cachedCanvases.getCanvas("fillCanvas", drawnWidth, drawnHeight); + const fillCtx = fillCanvas.context; + const offsetX = Math.min(cord1[0], cord2[0]); + const offsetY = Math.min(cord1[1], cord2[1]); + fillCtx.translate(-offsetX, -offsetY); + fillCtx.transform(...maskToCanvas); + + if (!scaled) { + scaled = this._scaleImage(maskCanvas.canvas, (0, _display_utils.getCurrentTransformInverse)(fillCtx)); + scaled = scaled.img; + + if (cache && isPatternFill) { + cache.set(cacheKey, scaled); + } + } + + fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled((0, _display_utils.getCurrentTransform)(fillCtx), img.interpolate); + drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height); + fillCtx.globalCompositeOperation = "source-in"; + + const inverse = _util.Util.transform((0, _display_utils.getCurrentTransformInverse)(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]); + + fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, _pattern_helper.PathType.FILL) : fillColor; + fillCtx.fillRect(0, 0, width, height); + + if (cache && !isPatternFill) { + this.cachedCanvases.delete("fillCanvas"); + cache.set(cacheKey, fillCanvas.canvas); + } + + return { + canvas: fillCanvas.canvas, + offsetX: Math.round(offsetX), + offsetY: Math.round(offsetY) + }; + } + + setLineWidth(width) { + if (width !== this.current.lineWidth) { + this._cachedScaleForStroking = null; + } + + this.current.lineWidth = width; + this.ctx.lineWidth = width; + } + + setLineCap(style) { + this.ctx.lineCap = LINE_CAP_STYLES[style]; + } + + setLineJoin(style) { + this.ctx.lineJoin = LINE_JOIN_STYLES[style]; + } + + setMiterLimit(limit) { + this.ctx.miterLimit = limit; + } + + setDash(dashArray, dashPhase) { + const ctx = this.ctx; + + if (ctx.setLineDash !== undefined) { + ctx.setLineDash(dashArray); + ctx.lineDashOffset = dashPhase; + } + } + + setRenderingIntent(intent) {} + + setFlatness(flatness) {} + + setGState(states) { + for (let i = 0, ii = states.length; i < ii; i++) { + const state = states[i]; + const key = state[0]; + const value = state[1]; + + switch (key) { + case "LW": + this.setLineWidth(value); + break; + + case "LC": + this.setLineCap(value); + break; + + case "LJ": + this.setLineJoin(value); + break; + + case "ML": + this.setMiterLimit(value); + break; + + case "D": + this.setDash(value[0], value[1]); + break; + + case "RI": + this.setRenderingIntent(value); + break; + + case "FL": + this.setFlatness(value); + break; + + case "Font": + this.setFont(value[0], value[1]); + break; + + case "CA": + this.current.strokeAlpha = state[1]; + break; + + case "ca": + this.current.fillAlpha = state[1]; + this.ctx.globalAlpha = state[1]; + break; + + case "BM": + this.ctx.globalCompositeOperation = value; + break; + + case "SMask": + this.current.activeSMask = value ? this.tempSMask : null; + this.tempSMask = null; + this.checkSMaskState(); + break; + + case "TR": + this.current.transferMaps = value; + } + } + } + + get inSMaskMode() { + return !!this.suspendedCtx; + } + + checkSMaskState() { + const inSMaskMode = this.inSMaskMode; + + if (this.current.activeSMask && !inSMaskMode) { + this.beginSMaskMode(); + } else if (!this.current.activeSMask && inSMaskMode) { + this.endSMaskMode(); + } + } + + beginSMaskMode() { + if (this.inSMaskMode) { + throw new Error("beginSMaskMode called while already in smask mode"); + } + + const drawnWidth = this.ctx.canvas.width; + const drawnHeight = this.ctx.canvas.height; + const cacheId = "smaskGroupAt" + this.groupLevel; + const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight); + this.suspendedCtx = this.ctx; + this.ctx = scratchCanvas.context; + const ctx = this.ctx; + ctx.setTransform(...(0, _display_utils.getCurrentTransform)(this.suspendedCtx)); + copyCtxState(this.suspendedCtx, ctx); + mirrorContextOperations(ctx, this.suspendedCtx); + this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]); + } + + endSMaskMode() { + if (!this.inSMaskMode) { + throw new Error("endSMaskMode called while not in smask mode"); + } + + this.ctx._removeMirroring(); + + copyCtxState(this.ctx, this.suspendedCtx); + this.ctx = this.suspendedCtx; + this.suspendedCtx = null; + } + + compose(dirtyBox) { + if (!this.current.activeSMask) { + return; + } + + if (!dirtyBox) { + dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height]; + } else { + dirtyBox[0] = Math.floor(dirtyBox[0]); + dirtyBox[1] = Math.floor(dirtyBox[1]); + dirtyBox[2] = Math.ceil(dirtyBox[2]); + dirtyBox[3] = Math.ceil(dirtyBox[3]); + } + + const smask = this.current.activeSMask; + const suspendedCtx = this.suspendedCtx; + composeSMask(suspendedCtx, smask, this.ctx, dirtyBox); + this.ctx.save(); + this.ctx.setTransform(1, 0, 0, 1, 0, 0); + this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height); + this.ctx.restore(); + } + + 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.inSMaskMode) { + this.endSMaskMode(); + } + + if (this.stateStack.length !== 0) { + this.current = this.stateStack.pop(); + + if (this.inSMaskMode) { + this.suspendedCtx.restore(); + copyCtxState(this.suspendedCtx, this.ctx); + } else { this.ctx.restore(); - this.transparentCanvas = null; } - this.cachedCanvases.clear(); - _webgl.WebGLUtils.clear(); - if (this.imageLayer) { - this.imageLayer.endLayout(); + + this.checkSMaskState(); + this.pendingClip = null; + this._cachedScaleForStroking = null; + this._cachedGetSinglePixelWidth = null; + } + } + + transform(a, b, c, d, e, f) { + this.ctx.transform(a, b, c, d, e, f); + this._cachedScaleForStroking = null; + this._cachedGetSinglePixelWidth = null; + } + + constructPath(ops, args, minMax) { + const ctx = this.ctx; + const current = this.current; + let x = current.x, + y = current.y; + let startX, startY; + const currentTransform = (0, _display_utils.getCurrentTransform)(ctx); + const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0; + const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null; + + for (let i = 0, j = 0, ii = ops.length; i < ii; i++) { + switch (ops[i] | 0) { + case _util.OPS.rectangle: + x = args[j++]; + y = args[j++]; + const width = args[j++]; + const height = args[j++]; + const xw = x + width; + const yh = y + height; + ctx.moveTo(x, y); + + if (width === 0 || height === 0) { + ctx.lineTo(xw, yh); + } else { + ctx.lineTo(xw, y); + ctx.lineTo(xw, yh); + ctx.lineTo(x, yh); + } + + if (!isScalingMatrix) { + current.updateRectMinMax(currentTransform, [x, y, xw, yh]); + } + + ctx.closePath(); + break; + + case _util.OPS.moveTo: + x = args[j++]; + y = args[j++]; + ctx.moveTo(x, y); + + if (!isScalingMatrix) { + current.updatePathMinMax(currentTransform, x, y); + } + + break; + + case _util.OPS.lineTo: + x = args[j++]; + y = args[j++]; + ctx.lineTo(x, y); + + if (!isScalingMatrix) { + current.updatePathMinMax(currentTransform, x, y); + } + + break; + + case _util.OPS.curveTo: + startX = x; + startY = y; + x = args[j + 4]; + y = args[j + 5]; + ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y); + current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier); + j += 6; + break; + + case _util.OPS.curveTo2: + startX = x; + startY = y; + ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]); + current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier); + x = args[j + 2]; + y = args[j + 3]; + j += 4; + break; + + case _util.OPS.curveTo3: + startX = x; + startY = y; + x = args[j + 2]; + y = args[j + 3]; + ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y); + current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier); + j += 4; + break; + + case _util.OPS.closePath: + ctx.closePath(); + break; } - }, - setLineWidth: function CanvasGraphics_setLineWidth(width) { - this.current.lineWidth = width; - this.ctx.lineWidth = width; - }, - setLineCap: function CanvasGraphics_setLineCap(style) { - this.ctx.lineCap = LINE_CAP_STYLES[style]; - }, - setLineJoin: function CanvasGraphics_setLineJoin(style) { - this.ctx.lineJoin = LINE_JOIN_STYLES[style]; - }, - setMiterLimit: function CanvasGraphics_setMiterLimit(limit) { - this.ctx.miterLimit = limit; - }, - setDash: function CanvasGraphics_setDash(dashArray, dashPhase) { - var ctx = this.ctx; - if (ctx.setLineDash !== undefined) { - ctx.setLineDash(dashArray); - ctx.lineDashOffset = dashPhase; - } - }, - setRenderingIntent: function CanvasGraphics_setRenderingIntent(intent) {}, - setFlatness: function CanvasGraphics_setFlatness(flatness) {}, - setGState: function CanvasGraphics_setGState(states) { - for (var i = 0, ii = states.length; i < ii; i++) { - var state = states[i]; - var key = state[0]; - var value = state[1]; - switch (key) { - case 'LW': - this.setLineWidth(value); - break; - case 'LC': - this.setLineCap(value); - break; - case 'LJ': - this.setLineJoin(value); - break; - case 'ML': - this.setMiterLimit(value); - break; - case 'D': - this.setDash(value[0], value[1]); - break; - case 'RI': - this.setRenderingIntent(value); - break; - case 'FL': - this.setFlatness(value); - break; - case 'Font': - this.setFont(value[0], value[1]); - break; - case 'CA': - this.current.strokeAlpha = state[1]; - break; - case 'ca': - this.current.fillAlpha = state[1]; - this.ctx.globalAlpha = state[1]; - break; - case 'BM': - this.ctx.globalCompositeOperation = value; - break; - case 'SMask': - if (this.current.activeSMask) { - if (this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1].activeSMask === this.current.activeSMask) { - this.suspendSMaskGroup(); - } else { - this.endSMaskGroup(); - } - } - this.current.activeSMask = value ? this.tempSMask : null; - if (this.current.activeSMask) { - this.beginSMaskGroup(); - } - this.tempSMask = null; - break; - } - } - }, - beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() { - var activeSMask = this.current.activeSMask; - var drawnWidth = activeSMask.canvas.width; - var drawnHeight = activeSMask.canvas.height; - var cacheId = 'smaskGroupAt' + this.groupLevel; - var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true); - var currentCtx = this.ctx; - var currentTransform = currentCtx.mozCurrentTransform; - this.ctx.save(); - var groupCtx = scratchCanvas.context; - groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY); - groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY); - groupCtx.transform.apply(groupCtx, currentTransform); - activeSMask.startTransformInverse = groupCtx.mozCurrentTransformInverse; - copyCtxState(currentCtx, groupCtx); - this.ctx = groupCtx; - this.setGState([['BM', 'source-over'], ['ca', 1], ['CA', 1]]); - this.groupStack.push(currentCtx); - this.groupLevel++; - }, - suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() { - var groupCtx = this.ctx; - this.groupLevel--; - this.ctx = this.groupStack.pop(); - composeSMask(this.ctx, this.current.activeSMask, groupCtx); - this.ctx.restore(); - this.ctx.save(); - copyCtxState(groupCtx, this.ctx); - this.current.resumeSMaskCtx = groupCtx; - var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); - this.ctx.transform.apply(this.ctx, deltaTransform); - groupCtx.save(); - groupCtx.setTransform(1, 0, 0, 1, 0, 0); - groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height); - groupCtx.restore(); - }, - resumeSMaskGroup: function CanvasGraphics_endSMaskGroup() { - var groupCtx = this.current.resumeSMaskCtx; - var currentCtx = this.ctx; - this.ctx = groupCtx; - this.groupStack.push(currentCtx); - this.groupLevel++; - }, - endSMaskGroup: function CanvasGraphics_endSMaskGroup() { - var groupCtx = this.ctx; - this.groupLevel--; - this.ctx = this.groupStack.pop(); - composeSMask(this.ctx, this.current.activeSMask, groupCtx); - this.ctx.restore(); - copyCtxState(groupCtx, this.ctx); - var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); - this.ctx.transform.apply(this.ctx, deltaTransform); - }, - save: function CanvasGraphics_save() { - this.ctx.save(); - var old = this.current; - this.stateStack.push(old); - this.current = old.clone(); - this.current.resumeSMaskCtx = null; - }, - restore: function CanvasGraphics_restore() { - if (this.current.resumeSMaskCtx) { - this.resumeSMaskGroup(); - } - if (this.current.activeSMask !== null && (this.stateStack.length === 0 || this.stateStack[this.stateStack.length - 1].activeSMask !== this.current.activeSMask)) { - this.endSMaskGroup(); - } - if (this.stateStack.length !== 0) { - this.current = this.stateStack.pop(); - this.ctx.restore(); - this.pendingClip = null; - this.cachedGetSinglePixelWidth = null; - } - }, - transform: function CanvasGraphics_transform(a, b, c, d, e, f) { - this.ctx.transform(a, b, c, d, e, f); - this.cachedGetSinglePixelWidth = null; - }, - constructPath: function CanvasGraphics_constructPath(ops, args) { - var ctx = this.ctx; - var current = this.current; - var x = current.x, - y = current.y; - for (var i = 0, j = 0, ii = ops.length; i < ii; i++) { - switch (ops[i] | 0) { - case _util.OPS.rectangle: - x = args[j++]; - y = args[j++]; - var width = args[j++]; - var height = args[j++]; - if (width === 0) { - width = this.getSinglePixelWidth(); - } - if (height === 0) { - height = this.getSinglePixelWidth(); - } - var xw = x + width; - var yh = y + height; - this.ctx.moveTo(x, y); - this.ctx.lineTo(xw, y); - this.ctx.lineTo(xw, yh); - this.ctx.lineTo(x, yh); - this.ctx.lineTo(x, y); - this.ctx.closePath(); - break; - case _util.OPS.moveTo: - x = args[j++]; - y = args[j++]; - ctx.moveTo(x, y); - break; - case _util.OPS.lineTo: - x = args[j++]; - y = args[j++]; - ctx.lineTo(x, y); - break; - case _util.OPS.curveTo: - x = args[j + 4]; - y = args[j + 5]; - ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y); - j += 6; - break; - case _util.OPS.curveTo2: - ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]); - x = args[j + 2]; - y = args[j + 3]; - j += 4; - break; - case _util.OPS.curveTo3: - x = args[j + 2]; - y = args[j + 3]; - ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y); - j += 4; - break; - case _util.OPS.closePath: - ctx.closePath(); - break; - } - } - current.setCurrentPoint(x, y); - }, - closePath: function CanvasGraphics_closePath() { - this.ctx.closePath(); - }, - stroke: function CanvasGraphics_stroke(consumePath) { - consumePath = typeof consumePath !== 'undefined' ? consumePath : true; - var ctx = this.ctx; - var strokeColor = this.current.strokeColor; - ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, this.current.lineWidth); - ctx.globalAlpha = this.current.strokeAlpha; - if (strokeColor && strokeColor.hasOwnProperty('type') && strokeColor.type === 'Pattern') { + } + + if (isScalingMatrix) { + current.updateScalingPathMinMax(currentTransform, minMaxForBezier); + } + + current.setCurrentPoint(x, y); + } + + closePath() { + this.ctx.closePath(); + } + + stroke(consumePath) { + consumePath = typeof consumePath !== "undefined" ? consumePath : true; + const ctx = this.ctx; + const strokeColor = this.current.strokeColor; + ctx.globalAlpha = this.current.strokeAlpha; + + if (this.contentVisible) { + if (typeof strokeColor === "object" && strokeColor?.getPattern) { ctx.save(); - ctx.strokeStyle = strokeColor.getPattern(ctx, this); - ctx.stroke(); + ctx.strokeStyle = strokeColor.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.STROKE); + this.rescaleAndStroke(false); ctx.restore(); } else { - ctx.stroke(); - } - if (consumePath) { - this.consumePath(); - } - ctx.globalAlpha = this.current.fillAlpha; - }, - closeStroke: function CanvasGraphics_closeStroke() { - this.closePath(); - this.stroke(); - }, - fill: function CanvasGraphics_fill(consumePath) { - consumePath = typeof consumePath !== 'undefined' ? consumePath : true; - var ctx = this.ctx; - var fillColor = this.current.fillColor; - var isPatternFill = this.current.patternFill; - var needRestore = false; - if (isPatternFill) { - ctx.save(); - if (this.baseTransform) { - ctx.setTransform.apply(ctx, this.baseTransform); - } - ctx.fillStyle = fillColor.getPattern(ctx, this); - needRestore = true; + this.rescaleAndStroke(true); } + } + + if (consumePath) { + this.consumePath(this.current.getClippedPathBoundingBox()); + } + + ctx.globalAlpha = this.current.fillAlpha; + } + + closeStroke() { + this.closePath(); + this.stroke(); + } + + fill(consumePath) { + consumePath = typeof consumePath !== "undefined" ? consumePath : true; + const ctx = this.ctx; + const fillColor = this.current.fillColor; + const isPatternFill = this.current.patternFill; + let needRestore = false; + + if (isPatternFill) { + ctx.save(); + ctx.fillStyle = fillColor.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.FILL); + needRestore = true; + } + + const intersect = this.current.getClippedPathBoundingBox(); + + if (this.contentVisible && intersect !== null) { if (this.pendingEOFill) { - ctx.fill('evenodd'); + ctx.fill("evenodd"); this.pendingEOFill = false; } else { ctx.fill(); } - if (needRestore) { - ctx.restore(); - } - if (consumePath) { - this.consumePath(); - } - }, - eoFill: function CanvasGraphics_eoFill() { - this.pendingEOFill = true; - this.fill(); - }, - fillStroke: function CanvasGraphics_fillStroke() { - this.fill(false); - this.stroke(false); - this.consumePath(); - }, - eoFillStroke: function CanvasGraphics_eoFillStroke() { - this.pendingEOFill = true; - this.fillStroke(); - }, - closeFillStroke: function CanvasGraphics_closeFillStroke() { - this.closePath(); - this.fillStroke(); - }, - closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() { - this.pendingEOFill = true; - this.closePath(); - this.fillStroke(); - }, - endPath: function CanvasGraphics_endPath() { - this.consumePath(); - }, - clip: function CanvasGraphics_clip() { - this.pendingClip = NORMAL_CLIP; - }, - eoClip: function CanvasGraphics_eoClip() { - this.pendingClip = EO_CLIP; - }, - beginText: function CanvasGraphics_beginText() { - this.current.textMatrix = _util.IDENTITY_MATRIX; - this.current.textMatrixScale = 1; - this.current.x = this.current.lineX = 0; - this.current.y = this.current.lineY = 0; - }, - endText: function CanvasGraphics_endText() { - var paths = this.pendingTextPaths; - var ctx = this.ctx; - if (paths === undefined) { - ctx.beginPath(); - return; - } - ctx.save(); - ctx.beginPath(); - for (var i = 0; i < paths.length; i++) { - var path = paths[i]; - ctx.setTransform.apply(ctx, path.transform); - ctx.translate(path.x, path.y); - path.addToPath(ctx, path.fontSize); - } + } + + if (needRestore) { ctx.restore(); - ctx.clip(); + } + + if (consumePath) { + this.consumePath(intersect); + } + } + + eoFill() { + this.pendingEOFill = true; + this.fill(); + } + + fillStroke() { + this.fill(false); + this.stroke(false); + this.consumePath(); + } + + eoFillStroke() { + this.pendingEOFill = true; + this.fillStroke(); + } + + closeFillStroke() { + this.closePath(); + this.fillStroke(); + } + + closeEOFillStroke() { + this.pendingEOFill = true; + this.closePath(); + this.fillStroke(); + } + + endPath() { + this.consumePath(); + } + + clip() { + this.pendingClip = NORMAL_CLIP; + } + + eoClip() { + this.pendingClip = EO_CLIP; + } + + beginText() { + this.current.textMatrix = _util.IDENTITY_MATRIX; + this.current.textMatrixScale = 1; + this.current.x = this.current.lineX = 0; + this.current.y = this.current.lineY = 0; + } + + endText() { + const paths = this.pendingTextPaths; + const ctx = this.ctx; + + if (paths === undefined) { ctx.beginPath(); - delete this.pendingTextPaths; - }, - setCharSpacing: function CanvasGraphics_setCharSpacing(spacing) { - this.current.charSpacing = spacing; - }, - setWordSpacing: function CanvasGraphics_setWordSpacing(spacing) { - this.current.wordSpacing = spacing; - }, - setHScale: function CanvasGraphics_setHScale(scale) { - this.current.textHScale = scale / 100; - }, - setLeading: function CanvasGraphics_setLeading(leading) { - this.current.leading = -leading; - }, - setFont: function CanvasGraphics_setFont(fontRefName, size) { - var fontObj = this.commonObjs.get(fontRefName); - var current = this.current; - if (!fontObj) { - throw new Error('Can\'t find font for ' + fontRefName); - } - current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX; - if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) { - (0, _util.warn)('Invalid font matrix for font ' + fontRefName); - } - if (size < 0) { - size = -size; - current.fontDirection = -1; - } else { - current.fontDirection = 1; - } - this.current.font = fontObj; - this.current.fontSize = size; - if (fontObj.isType3Font) { - return; - } - var name = fontObj.loadedName || 'sans-serif'; - var bold = fontObj.black ? '900' : fontObj.bold ? 'bold' : 'normal'; - var italic = fontObj.italic ? 'italic' : 'normal'; - var typeface = '"' + name + '", ' + fontObj.fallbackName; - var browserFontSize = size < MIN_FONT_SIZE ? MIN_FONT_SIZE : size > MAX_FONT_SIZE ? MAX_FONT_SIZE : size; - this.current.fontSizeScale = size / browserFontSize; - var rule = italic + ' ' + bold + ' ' + browserFontSize + 'px ' + typeface; - this.ctx.font = rule; - }, - setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(mode) { - this.current.textRenderingMode = mode; - }, - setTextRise: function CanvasGraphics_setTextRise(rise) { - this.current.textRise = rise; - }, - moveText: function CanvasGraphics_moveText(x, y) { - this.current.x = this.current.lineX += x; - this.current.y = this.current.lineY += y; - }, - setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(x, y) { - this.setLeading(-y); - this.moveText(x, y); - }, - setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) { - this.current.textMatrix = [a, b, c, d, e, f]; - this.current.textMatrixScale = Math.sqrt(a * a + b * b); - this.current.x = this.current.lineX = 0; - this.current.y = this.current.lineY = 0; - }, - nextLine: function CanvasGraphics_nextLine() { - this.moveText(0, this.current.leading); - }, - paintChar: function CanvasGraphics_paintChar(character, x, y) { - var ctx = this.ctx; - var current = this.current; - var font = current.font; - var textRenderingMode = current.textRenderingMode; - var fontSize = current.fontSize / current.fontSizeScale; - var fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; - var isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG); - var addToPath; - if (font.disableFontFace || isAddToPathSet) { - addToPath = font.getPathGenerator(this.commonObjs, character); - } - if (font.disableFontFace) { - ctx.save(); - ctx.translate(x, y); - ctx.beginPath(); - addToPath(ctx, fontSize); - if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - ctx.fill(); - } - if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - ctx.stroke(); - } - ctx.restore(); - } else { - if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - ctx.fillText(character, x, y); - } - if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - ctx.strokeText(character, x, y); - } - } - if (isAddToPathSet) { - var paths = this.pendingTextPaths || (this.pendingTextPaths = []); - paths.push({ - transform: ctx.mozCurrentTransform, - x: x, - y: y, - fontSize: fontSize, - addToPath: addToPath - }); - } - }, - get isFontSubpixelAAEnabled() { - var ctx = this.canvasFactory.create(10, 10).context; - ctx.scale(1.5, 1); - ctx.fillText('I', 0, 10); - var data = ctx.getImageData(0, 0, 10, 10).data; - var enabled = false; - for (var i = 3; i < data.length; i += 4) { - if (data[i] > 0 && data[i] < 255) { - enabled = true; - break; - } - } - return (0, _util.shadow)(this, 'isFontSubpixelAAEnabled', enabled); - }, - showText: function CanvasGraphics_showText(glyphs) { - var current = this.current; - var font = current.font; - if (font.isType3Font) { - return this.showType3Text(glyphs); - } - var fontSize = current.fontSize; - if (fontSize === 0) { - return; - } - var ctx = this.ctx; - var fontSizeScale = current.fontSizeScale; - var charSpacing = current.charSpacing; - var wordSpacing = current.wordSpacing; - var fontDirection = current.fontDirection; - var textHScale = current.textHScale * fontDirection; - var glyphsLength = glyphs.length; - var vertical = font.vertical; - var spacingDir = vertical ? 1 : -1; - var defaultVMetrics = font.defaultVMetrics; - var widthAdvanceScale = fontSize * current.fontMatrix[0]; - var simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace; + return; + } + + ctx.save(); + ctx.beginPath(); + + for (const path of paths) { + ctx.setTransform(...path.transform); + ctx.translate(path.x, path.y); + path.addToPath(ctx, path.fontSize); + } + + ctx.restore(); + ctx.clip(); + ctx.beginPath(); + delete this.pendingTextPaths; + } + + setCharSpacing(spacing) { + this.current.charSpacing = spacing; + } + + setWordSpacing(spacing) { + this.current.wordSpacing = spacing; + } + + setHScale(scale) { + this.current.textHScale = scale / 100; + } + + setLeading(leading) { + this.current.leading = -leading; + } + + setFont(fontRefName, size) { + const fontObj = this.commonObjs.get(fontRefName); + const current = this.current; + + if (!fontObj) { + throw new Error(`Can't find font for ${fontRefName}`); + } + + current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX; + + if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) { + (0, _util.warn)("Invalid font matrix for font " + fontRefName); + } + + if (size < 0) { + size = -size; + current.fontDirection = -1; + } else { + current.fontDirection = 1; + } + + this.current.font = fontObj; + this.current.fontSize = size; + + if (fontObj.isType3Font) { + return; + } + + const name = fontObj.loadedName || "sans-serif"; + let bold = "normal"; + + if (fontObj.black) { + bold = "900"; + } else if (fontObj.bold) { + bold = "bold"; + } + + const italic = fontObj.italic ? "italic" : "normal"; + const typeface = `"${name}", ${fontObj.fallbackName}`; + let browserFontSize = size; + + if (size < MIN_FONT_SIZE) { + browserFontSize = MIN_FONT_SIZE; + } else if (size > MAX_FONT_SIZE) { + browserFontSize = MAX_FONT_SIZE; + } + + this.current.fontSizeScale = size / browserFontSize; + this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`; + } + + setTextRenderingMode(mode) { + this.current.textRenderingMode = mode; + } + + setTextRise(rise) { + this.current.textRise = rise; + } + + moveText(x, y) { + this.current.x = this.current.lineX += x; + this.current.y = this.current.lineY += y; + } + + setLeadingMoveText(x, y) { + this.setLeading(-y); + this.moveText(x, y); + } + + setTextMatrix(a, b, c, d, e, f) { + this.current.textMatrix = [a, b, c, d, e, f]; + this.current.textMatrixScale = Math.hypot(a, b); + this.current.x = this.current.lineX = 0; + this.current.y = this.current.lineY = 0; + } + + nextLine() { + this.moveText(0, this.current.leading); + } + + paintChar(character, x, y, patternTransform) { + const ctx = this.ctx; + const current = this.current; + const font = current.font; + const textRenderingMode = current.textRenderingMode; + const fontSize = current.fontSize / current.fontSizeScale; + const fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + const isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG); + const patternFill = current.patternFill && !font.missingFile; + let addToPath; + + if (font.disableFontFace || isAddToPathSet || patternFill) { + addToPath = font.getPathGenerator(this.commonObjs, character); + } + + if (font.disableFontFace || patternFill) { ctx.save(); - ctx.transform.apply(ctx, current.textMatrix); - ctx.translate(current.x, current.y + current.textRise); - if (current.patternFill) { - ctx.fillStyle = current.fillColor.getPattern(ctx, this); + ctx.translate(x, y); + ctx.beginPath(); + addToPath(ctx, fontSize); + + if (patternTransform) { + ctx.setTransform(...patternTransform); } - if (fontDirection > 0) { - ctx.scale(textHScale, -1); - } else { - ctx.scale(textHScale, 1); + + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.fill(); } - var lineWidth = current.lineWidth; - var scale = current.textMatrixScale; - if (scale === 0 || lineWidth === 0) { - var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; - if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - this.cachedGetSinglePixelWidth = null; - lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR; - } - } else { - lineWidth /= scale; + + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.stroke(); } - if (fontSizeScale !== 1.0) { - ctx.scale(fontSizeScale, fontSizeScale); - lineWidth /= fontSizeScale; + + ctx.restore(); + } else { + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.fillText(character, x, y); } - ctx.lineWidth = lineWidth; - var x = 0, - i; - for (i = 0; i < glyphsLength; ++i) { - var glyph = glyphs[i]; - if ((0, _util.isNum)(glyph)) { - x += spacingDir * glyph * fontSize / 1000; - continue; - } - var restoreNeeded = false; - var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; - var character = glyph.fontChar; - var accent = glyph.accent; - var scaledX, scaledY, scaledAccentX, scaledAccentY; - var width = glyph.width; - if (vertical) { - var vmetric, vx, vy; - vmetric = glyph.vmetric || defaultVMetrics; - vx = glyph.vmetric ? vmetric[1] : width * 0.5; - vx = -vx * widthAdvanceScale; - vy = vmetric[2] * widthAdvanceScale; - width = vmetric ? -vmetric[0] : width; - scaledX = vx / fontSizeScale; - scaledY = (x + vy) / fontSizeScale; - } else { - scaledX = x / fontSizeScale; - scaledY = 0; - } - if (font.remeasure && width > 0) { - var measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale; - if (width < measuredWidth && this.isFontSubpixelAAEnabled) { - var characterScaleX = width / measuredWidth; - restoreNeeded = true; - ctx.save(); - ctx.scale(characterScaleX, 1); - scaledX /= characterScaleX; - } else if (width !== measuredWidth) { - scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale; - } - } - if (glyph.isInFont || font.missingFile) { - if (simpleFillText && !accent) { - ctx.fillText(character, scaledX, scaledY); - } else { - this.paintChar(character, scaledX, scaledY); - if (accent) { - scaledAccentX = scaledX + accent.offset.x / fontSizeScale; - scaledAccentY = scaledY - accent.offset.y / fontSizeScale; - this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY); - } - } - } - var charWidth = width * widthAdvanceScale + spacing * fontDirection; - x += charWidth; - if (restoreNeeded) { - ctx.restore(); - } + + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.strokeText(character, x, y); } + } + + if (isAddToPathSet) { + const paths = this.pendingTextPaths || (this.pendingTextPaths = []); + paths.push({ + transform: (0, _display_utils.getCurrentTransform)(ctx), + x, + y, + fontSize, + addToPath + }); + } + } + + get isFontSubpixelAAEnabled() { + const { + context: ctx + } = this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled", 10, 10); + ctx.scale(1.5, 1); + ctx.fillText("I", 0, 10); + const data = ctx.getImageData(0, 0, 10, 10).data; + let enabled = false; + + for (let i = 3; i < data.length; i += 4) { + if (data[i] > 0 && data[i] < 255) { + enabled = true; + break; + } + } + + return (0, _util.shadow)(this, "isFontSubpixelAAEnabled", enabled); + } + + showText(glyphs) { + const current = this.current; + const font = current.font; + + if (font.isType3Font) { + return this.showType3Text(glyphs); + } + + const fontSize = current.fontSize; + + if (fontSize === 0) { + return undefined; + } + + const ctx = this.ctx; + const fontSizeScale = current.fontSizeScale; + const charSpacing = current.charSpacing; + const wordSpacing = current.wordSpacing; + const fontDirection = current.fontDirection; + const textHScale = current.textHScale * fontDirection; + const glyphsLength = glyphs.length; + const vertical = font.vertical; + const spacingDir = vertical ? 1 : -1; + const defaultVMetrics = font.defaultVMetrics; + const widthAdvanceScale = fontSize * current.fontMatrix[0]; + const simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill; + ctx.save(); + ctx.transform(...current.textMatrix); + ctx.translate(current.x, current.y + current.textRise); + + if (fontDirection > 0) { + ctx.scale(textHScale, -1); + } else { + ctx.scale(textHScale, 1); + } + + let patternTransform; + + if (current.patternFill) { + ctx.save(); + const pattern = current.fillColor.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.FILL); + patternTransform = (0, _display_utils.getCurrentTransform)(ctx); + ctx.restore(); + ctx.fillStyle = pattern; + } + + let lineWidth = current.lineWidth; + const scale = current.textMatrixScale; + + if (scale === 0 || lineWidth === 0) { + const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + lineWidth = this.getSinglePixelWidth(); + } + } else { + lineWidth /= scale; + } + + if (fontSizeScale !== 1.0) { + ctx.scale(fontSizeScale, fontSizeScale); + lineWidth /= fontSizeScale; + } + + ctx.lineWidth = lineWidth; + let x = 0, + i; + + for (i = 0; i < glyphsLength; ++i) { + const glyph = glyphs[i]; + + if (typeof glyph === "number") { + x += spacingDir * glyph * fontSize / 1000; + continue; + } + + let restoreNeeded = false; + const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + const character = glyph.fontChar; + const accent = glyph.accent; + let scaledX, scaledY; + let width = glyph.width; + if (vertical) { - current.y -= x * textHScale; + const vmetric = glyph.vmetric || defaultVMetrics; + const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale; + const vy = vmetric[2] * widthAdvanceScale; + width = vmetric ? -vmetric[0] : width; + scaledX = vx / fontSizeScale; + scaledY = (x + vy) / fontSizeScale; } else { - current.x += x * textHScale; + scaledX = x / fontSizeScale; + scaledY = 0; } - ctx.restore(); - }, - showType3Text: function CanvasGraphics_showType3Text(glyphs) { - var ctx = this.ctx; - var current = this.current; - var font = current.font; - var fontSize = current.fontSize; - var fontDirection = current.fontDirection; - var spacingDir = font.vertical ? 1 : -1; - var charSpacing = current.charSpacing; - var wordSpacing = current.wordSpacing; - var textHScale = current.textHScale * fontDirection; - var fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX; - var glyphsLength = glyphs.length; - var isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE; - var i, glyph, width, spacingLength; - if (isTextInvisible || fontSize === 0) { - return; + + if (font.remeasure && width > 0) { + const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale; + + if (width < measuredWidth && this.isFontSubpixelAAEnabled) { + const characterScaleX = width / measuredWidth; + restoreNeeded = true; + ctx.save(); + ctx.scale(characterScaleX, 1); + scaledX /= characterScaleX; + } else if (width !== measuredWidth) { + scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale; + } } - this.cachedGetSinglePixelWidth = null; - ctx.save(); - ctx.transform.apply(ctx, current.textMatrix); - ctx.translate(current.x, current.y); - ctx.scale(textHScale, fontDirection); - for (i = 0; i < glyphsLength; ++i) { - glyph = glyphs[i]; - if ((0, _util.isNum)(glyph)) { - spacingLength = spacingDir * glyph * fontSize / 1000; - this.ctx.translate(spacingLength, 0); - current.x += spacingLength * textHScale; - continue; - } - var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; - var operatorList = font.charProcOperatorList[glyph.operatorListId]; - if (!operatorList) { - (0, _util.warn)('Type3 character "' + glyph.operatorListId + '" is not available.'); - continue; + + if (this.contentVisible && (glyph.isInFont || font.missingFile)) { + if (simpleFillText && !accent) { + ctx.fillText(character, scaledX, scaledY); + } else { + this.paintChar(character, scaledX, scaledY, patternTransform); + + if (accent) { + const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale; + const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale; + this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform); + } } + } + + let charWidth; + + if (vertical) { + charWidth = width * widthAdvanceScale - spacing * fontDirection; + } else { + charWidth = width * widthAdvanceScale + spacing * fontDirection; + } + + x += charWidth; + + if (restoreNeeded) { + ctx.restore(); + } + } + + if (vertical) { + current.y -= x; + } else { + current.x += x * textHScale; + } + + ctx.restore(); + this.compose(); + return undefined; + } + + showType3Text(glyphs) { + const ctx = this.ctx; + const current = this.current; + const font = current.font; + const fontSize = current.fontSize; + const fontDirection = current.fontDirection; + const spacingDir = font.vertical ? 1 : -1; + const charSpacing = current.charSpacing; + const wordSpacing = current.wordSpacing; + const textHScale = current.textHScale * fontDirection; + const fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX; + const glyphsLength = glyphs.length; + const isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE; + let i, glyph, width, spacingLength; + + if (isTextInvisible || fontSize === 0) { + return; + } + + this._cachedScaleForStroking = null; + this._cachedGetSinglePixelWidth = null; + ctx.save(); + ctx.transform(...current.textMatrix); + ctx.translate(current.x, current.y); + ctx.scale(textHScale, fontDirection); + + for (i = 0; i < glyphsLength; ++i) { + glyph = glyphs[i]; + + if (typeof glyph === "number") { + spacingLength = spacingDir * glyph * fontSize / 1000; + this.ctx.translate(spacingLength, 0); + current.x += spacingLength * textHScale; + continue; + } + + const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + const operatorList = font.charProcOperatorList[glyph.operatorListId]; + + if (!operatorList) { + (0, _util.warn)(`Type3 character "${glyph.operatorListId}" is not available.`); + continue; + } + + if (this.contentVisible) { this.processingType3 = glyph; this.save(); ctx.scale(fontSize, fontSize); - ctx.transform.apply(ctx, fontMatrix); + ctx.transform(...fontMatrix); this.executeOperatorList(operatorList); this.restore(); - var transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix); - width = transformed[0] * fontSize + spacing; - ctx.translate(width, 0); - current.x += width * textHScale; } - ctx.restore(); - this.processingType3 = null; - }, - setCharWidth: function CanvasGraphics_setCharWidth(xWidth, yWidth) {}, - setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) { - this.ctx.rect(llx, lly, urx - llx, ury - lly); + + const transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix); + + width = transformed[0] * fontSize + spacing; + ctx.translate(width, 0); + current.x += width * textHScale; + } + + ctx.restore(); + this.processingType3 = null; + } + + setCharWidth(xWidth, yWidth) {} + + setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) { + this.ctx.rect(llx, lly, urx - llx, ury - lly); + this.ctx.clip(); + this.endPath(); + } + + getColorN_Pattern(IR) { + let pattern; + + if (IR[0] === "TilingPattern") { + const color = IR[1]; + const baseTransform = this.baseTransform || (0, _display_utils.getCurrentTransform)(this.ctx); + const canvasGraphicsFactory = { + createCanvasGraphics: ctx => { + return new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory); + } + }; + pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform); + } else { + pattern = this._getPattern(IR[1], IR[2]); + } + + return pattern; + } + + setStrokeColorN() { + this.current.strokeColor = this.getColorN_Pattern(arguments); + } + + setFillColorN() { + this.current.fillColor = this.getColorN_Pattern(arguments); + this.current.patternFill = true; + } + + setStrokeRGBColor(r, g, b) { + const color = this.selectColor?.(r, g, b) || _util.Util.makeHexColor(r, g, b); + + this.ctx.strokeStyle = color; + this.current.strokeColor = color; + } + + setFillRGBColor(r, g, b) { + const color = this.selectColor?.(r, g, b) || _util.Util.makeHexColor(r, g, b); + + this.ctx.fillStyle = color; + this.current.fillColor = color; + this.current.patternFill = false; + } + + _getPattern(objId, matrix = null) { + let pattern; + + if (this.cachedPatterns.has(objId)) { + pattern = this.cachedPatterns.get(objId); + } else { + pattern = (0, _pattern_helper.getShadingPattern)(this.objs.get(objId)); + this.cachedPatterns.set(objId, pattern); + } + + if (matrix) { + pattern.matrix = matrix; + } + + return pattern; + } + + shadingFill(objId) { + if (!this.contentVisible) { + return; + } + + const ctx = this.ctx; + this.save(); + + const pattern = this._getPattern(objId); + + ctx.fillStyle = pattern.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.SHADING); + const inv = (0, _display_utils.getCurrentTransformInverse)(ctx); + + if (inv) { + const canvas = ctx.canvas; + const width = canvas.width; + const height = canvas.height; + + const bl = _util.Util.applyTransform([0, 0], inv); + + const br = _util.Util.applyTransform([0, height], inv); + + const ul = _util.Util.applyTransform([width, 0], inv); + + const ur = _util.Util.applyTransform([width, height], inv); + + const x0 = Math.min(bl[0], br[0], ul[0], ur[0]); + const y0 = Math.min(bl[1], br[1], ul[1], ur[1]); + const x1 = Math.max(bl[0], br[0], ul[0], ur[0]); + const y1 = Math.max(bl[1], br[1], ul[1], ur[1]); + this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0); + } else { + this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10); + } + + this.compose(this.current.getClippedPathBoundingBox()); + this.restore(); + } + + beginInlineImage() { + (0, _util.unreachable)("Should not call beginInlineImage"); + } + + beginImageData() { + (0, _util.unreachable)("Should not call beginImageData"); + } + + paintFormXObjectBegin(matrix, bbox) { + if (!this.contentVisible) { + return; + } + + this.save(); + this.baseTransformStack.push(this.baseTransform); + + if (Array.isArray(matrix) && matrix.length === 6) { + this.transform(...matrix); + } + + this.baseTransform = (0, _display_utils.getCurrentTransform)(this.ctx); + + if (bbox) { + const width = bbox[2] - bbox[0]; + const height = bbox[3] - bbox[1]; + this.ctx.rect(bbox[0], bbox[1], width, height); + this.current.updateRectMinMax((0, _display_utils.getCurrentTransform)(this.ctx), bbox); this.clip(); this.endPath(); - }, - getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) { - var _this = this; + } + } - var pattern; - if (IR[0] === 'TilingPattern') { - var color = IR[1]; - var baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice(); - var canvasGraphicsFactory = { - createCanvasGraphics: function createCanvasGraphics(ctx) { - return new CanvasGraphics(ctx, _this.commonObjs, _this.objs, _this.canvasFactory); - } - }; - pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform); - } else { - pattern = (0, _pattern_helper.getShadingPatternFromIR)(IR); - } - return pattern; - }, - setStrokeColorN: function CanvasGraphics_setStrokeColorN() { - this.current.strokeColor = this.getColorN_Pattern(arguments); - }, - setFillColorN: function CanvasGraphics_setFillColorN() { - this.current.fillColor = this.getColorN_Pattern(arguments); - this.current.patternFill = true; - }, - setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) { - var color = _util.Util.makeCssRgb(r, g, b); - this.ctx.strokeStyle = color; - this.current.strokeColor = color; - }, - setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) { - var color = _util.Util.makeCssRgb(r, g, b); - this.ctx.fillStyle = color; - this.current.fillColor = color; - this.current.patternFill = false; - }, - shadingFill: function CanvasGraphics_shadingFill(patternIR) { - var ctx = this.ctx; - this.save(); - var pattern = (0, _pattern_helper.getShadingPatternFromIR)(patternIR); - ctx.fillStyle = pattern.getPattern(ctx, this, true); - var inv = ctx.mozCurrentTransformInverse; - if (inv) { - var canvas = ctx.canvas; - var width = canvas.width; - var height = canvas.height; - var bl = _util.Util.applyTransform([0, 0], inv); - var br = _util.Util.applyTransform([0, height], inv); - var ul = _util.Util.applyTransform([width, 0], inv); - var ur = _util.Util.applyTransform([width, height], inv); - var x0 = Math.min(bl[0], br[0], ul[0], ur[0]); - var y0 = Math.min(bl[1], br[1], ul[1], ur[1]); - var x1 = Math.max(bl[0], br[0], ul[0], ur[0]); - var y1 = Math.max(bl[1], br[1], ul[1], ur[1]); - this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0); - } else { - this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10); - } - this.restore(); - }, - beginInlineImage: function CanvasGraphics_beginInlineImage() { - throw new Error('Should not call beginInlineImage'); - }, - beginImageData: function CanvasGraphics_beginImageData() { - throw new Error('Should not call beginImageData'); - }, - paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix, bbox) { - this.save(); - this.baseTransformStack.push(this.baseTransform); - if ((0, _util.isArray)(matrix) && matrix.length === 6) { - this.transform.apply(this, matrix); - } - this.baseTransform = this.ctx.mozCurrentTransform; - if ((0, _util.isArray)(bbox) && bbox.length === 4) { - var width = bbox[2] - bbox[0]; - var height = bbox[3] - bbox[1]; - this.ctx.rect(bbox[0], bbox[1], width, height); - this.clip(); - this.endPath(); - } - }, - paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() { - this.restore(); - this.baseTransform = this.baseTransformStack.pop(); - }, - beginGroup: function CanvasGraphics_beginGroup(group) { - this.save(); - var currentCtx = this.ctx; - if (!group.isolated) { - (0, _util.info)('TODO: Support non-isolated groups.'); - } - if (group.knockout) { - (0, _util.warn)('Knockout groups not supported.'); - } - var currentTransform = currentCtx.mozCurrentTransform; - if (group.matrix) { - currentCtx.transform.apply(currentCtx, group.matrix); - } - if (!group.bbox) { - throw new Error('Bounding box is required.'); - } - var bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform); - var canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height]; - bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0]; - var offsetX = Math.floor(bounds[0]); - var offsetY = Math.floor(bounds[1]); - var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1); - var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1); - var scaleX = 1, - scaleY = 1; - if (drawnWidth > MAX_GROUP_SIZE) { - scaleX = drawnWidth / MAX_GROUP_SIZE; - drawnWidth = MAX_GROUP_SIZE; - } - if (drawnHeight > MAX_GROUP_SIZE) { - scaleY = drawnHeight / MAX_GROUP_SIZE; - drawnHeight = MAX_GROUP_SIZE; - } - var cacheId = 'groupAt' + this.groupLevel; - if (group.smask) { - cacheId += '_smask_' + this.smaskCounter++ % 2; - } - var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true); - var groupCtx = scratchCanvas.context; - groupCtx.scale(1 / scaleX, 1 / scaleY); - groupCtx.translate(-offsetX, -offsetY); - groupCtx.transform.apply(groupCtx, currentTransform); - if (group.smask) { - this.smaskStack.push({ - canvas: scratchCanvas.canvas, - context: groupCtx, - offsetX: offsetX, - offsetY: offsetY, - scaleX: scaleX, - scaleY: scaleY, - subtype: group.smask.subtype, - backdrop: group.smask.backdrop, - transferMap: group.smask.transferMap || null, - startTransformInverse: null - }); - } else { - currentCtx.setTransform(1, 0, 0, 1, 0, 0); - currentCtx.translate(offsetX, offsetY); - currentCtx.scale(scaleX, scaleY); - } - copyCtxState(currentCtx, groupCtx); - this.ctx = groupCtx; - this.setGState([['BM', 'source-over'], ['ca', 1], ['CA', 1]]); - this.groupStack.push(currentCtx); - this.groupLevel++; + paintFormXObjectEnd() { + if (!this.contentVisible) { + return; + } + + this.restore(); + this.baseTransform = this.baseTransformStack.pop(); + } + + beginGroup(group) { + if (!this.contentVisible) { + return; + } + + this.save(); + + if (this.inSMaskMode) { + this.endSMaskMode(); this.current.activeSMask = null; - }, - endGroup: function CanvasGraphics_endGroup(group) { - this.groupLevel--; - var groupCtx = this.ctx; - this.ctx = this.groupStack.pop(); - if (this.ctx.imageSmoothingEnabled !== undefined) { - this.ctx.imageSmoothingEnabled = false; - } else { - this.ctx.mozImageSmoothingEnabled = false; - } - if (group.smask) { - this.tempSMask = this.smaskStack.pop(); - } else { - this.ctx.drawImage(groupCtx.canvas, 0, 0); - } + } + + const currentCtx = this.ctx; + + if (!group.isolated) { + (0, _util.info)("TODO: Support non-isolated groups."); + } + + if (group.knockout) { + (0, _util.warn)("Knockout groups not supported."); + } + + const currentTransform = (0, _display_utils.getCurrentTransform)(currentCtx); + + if (group.matrix) { + currentCtx.transform(...group.matrix); + } + + if (!group.bbox) { + throw new Error("Bounding box is required."); + } + + let bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, (0, _display_utils.getCurrentTransform)(currentCtx)); + + const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height]; + bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0]; + const offsetX = Math.floor(bounds[0]); + const offsetY = Math.floor(bounds[1]); + let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1); + let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1); + let scaleX = 1, + scaleY = 1; + + if (drawnWidth > MAX_GROUP_SIZE) { + scaleX = drawnWidth / MAX_GROUP_SIZE; + drawnWidth = MAX_GROUP_SIZE; + } + + if (drawnHeight > MAX_GROUP_SIZE) { + scaleY = drawnHeight / MAX_GROUP_SIZE; + drawnHeight = MAX_GROUP_SIZE; + } + + this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]); + let cacheId = "groupAt" + this.groupLevel; + + if (group.smask) { + cacheId += "_smask_" + this.smaskCounter++ % 2; + } + + const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight); + const groupCtx = scratchCanvas.context; + groupCtx.scale(1 / scaleX, 1 / scaleY); + groupCtx.translate(-offsetX, -offsetY); + groupCtx.transform(...currentTransform); + + if (group.smask) { + this.smaskStack.push({ + canvas: scratchCanvas.canvas, + context: groupCtx, + offsetX, + offsetY, + scaleX, + scaleY, + subtype: group.smask.subtype, + backdrop: group.smask.backdrop, + transferMap: group.smask.transferMap || null, + startTransformInverse: null + }); + } else { + currentCtx.setTransform(1, 0, 0, 1, 0, 0); + currentCtx.translate(offsetX, offsetY); + currentCtx.scale(scaleX, scaleY); + currentCtx.save(); + } + + copyCtxState(currentCtx, groupCtx); + this.ctx = groupCtx; + this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]); + this.groupStack.push(currentCtx); + this.groupLevel++; + } + + endGroup(group) { + if (!this.contentVisible) { + return; + } + + this.groupLevel--; + const groupCtx = this.ctx; + const ctx = this.groupStack.pop(); + this.ctx = ctx; + this.ctx.imageSmoothingEnabled = false; + + if (group.smask) { + this.tempSMask = this.smaskStack.pop(); this.restore(); - }, - beginAnnotations: function CanvasGraphics_beginAnnotations() { - this.save(); - if (this.baseTransform) { - this.ctx.setTransform.apply(this.ctx, this.baseTransform); - } - }, - endAnnotations: function CanvasGraphics_endAnnotations() { + } else { + this.ctx.restore(); + const currentMtx = (0, _display_utils.getCurrentTransform)(this.ctx); this.restore(); - }, - beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform, matrix) { - this.save(); - resetCtxToDefault(this.ctx); - this.current = new CanvasExtraState(); - if ((0, _util.isArray)(rect) && rect.length === 4) { - var width = rect[2] - rect[0]; - var height = rect[3] - rect[1]; + this.ctx.save(); + this.ctx.setTransform(...currentMtx); + + const dirtyBox = _util.Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx); + + this.ctx.drawImage(groupCtx.canvas, 0, 0); + this.ctx.restore(); + this.compose(dirtyBox); + } + } + + beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) { + this.#restoreInitialState(); + resetCtxToDefault(this.ctx, this.foregroundColor); + this.ctx.save(); + this.save(); + + if (this.baseTransform) { + this.ctx.setTransform(...this.baseTransform); + } + + if (Array.isArray(rect) && rect.length === 4) { + const width = rect[2] - rect[0]; + const height = rect[3] - rect[1]; + + if (hasOwnCanvas && this.annotationCanvasMap) { + transform = transform.slice(); + transform[4] -= rect[0]; + transform[5] -= rect[1]; + rect = rect.slice(); + rect[0] = rect[1] = 0; + rect[2] = width; + rect[3] = height; + + const [scaleX, scaleY] = _util.Util.singularValueDecompose2dScale((0, _display_utils.getCurrentTransform)(this.ctx)); + + const { + viewportScale + } = this; + const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale); + const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale); + this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight); + const { + canvas, + context + } = this.annotationCanvas; + this.annotationCanvasMap.set(id, canvas); + this.annotationCanvas.savedCtx = this.ctx; + this.ctx = context; + this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY); + resetCtxToDefault(this.ctx, this.foregroundColor); + } else { + resetCtxToDefault(this.ctx, this.foregroundColor); this.ctx.rect(rect[0], rect[1], width, height); - this.clip(); + this.ctx.clip(); this.endPath(); } - this.transform.apply(this, transform); - this.transform.apply(this, matrix); - }, - endAnnotation: function CanvasGraphics_endAnnotation() { - this.restore(); - }, - paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) { - var domImage = this.objs.get(objId); - if (!domImage) { - (0, _util.warn)('Dependent image isn\'t ready yet'); - return; + } + + this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height); + this.transform(...transform); + this.transform(...matrix); + } + + endAnnotation() { + if (this.annotationCanvas) { + this.ctx = this.annotationCanvas.savedCtx; + delete this.annotationCanvas.savedCtx; + delete this.annotationCanvas; + } + } + + paintImageMaskXObject(img) { + if (!this.contentVisible) { + return; + } + + const count = img.count; + img = this.getObject(img.data, img); + img.count = count; + const ctx = this.ctx; + const glyph = this.processingType3; + + if (glyph) { + if (glyph.compiled === undefined) { + glyph.compiled = compileType3Glyph(img); } - this.save(); - var ctx = this.ctx; - ctx.scale(1 / w, -1 / h); - ctx.drawImage(domImage, 0, 0, domImage.width, domImage.height, 0, -h, w, h); - if (this.imageLayer) { - var currentTransform = ctx.mozCurrentTransformInverse; - var position = this.getCanvasPosition(0, 0); - this.imageLayer.appendImage({ - objId: objId, - left: position[0], - top: position[1], - width: w / currentTransform[0], - height: h / currentTransform[3] - }); - } - this.restore(); - }, - paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(img) { - var ctx = this.ctx; - var width = img.width, - height = img.height; - var fillColor = this.current.fillColor; - var isPatternFill = this.current.patternFill; - var glyph = this.processingType3; - if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) { - if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) { - glyph.compiled = compileType3Glyph({ - data: img.data, - width: width, - height: height - }); - } else { - glyph.compiled = null; - } - } - if (glyph && glyph.compiled) { + + if (glyph.compiled) { glyph.compiled(ctx); return; } - var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height); - var maskCtx = maskCanvas.context; + } + + const mask = this._createMaskCanvas(img); + + const maskCanvas = mask.canvas; + ctx.save(); + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY); + ctx.restore(); + this.compose(); + } + + paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) { + if (!this.contentVisible) { + return; + } + + img = this.getObject(img.data, img); + const ctx = this.ctx; + ctx.save(); + const currentTransform = (0, _display_utils.getCurrentTransform)(ctx); + ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0); + + const mask = this._createMaskCanvas(img); + + ctx.setTransform(1, 0, 0, 1, 0, 0); + + for (let i = 0, ii = positions.length; i < ii; i += 2) { + const trans = _util.Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]); + + const [x, y] = _util.Util.applyTransform([0, 0], trans); + + ctx.drawImage(mask.canvas, x, y); + } + + ctx.restore(); + this.compose(); + } + + paintImageMaskXObjectGroup(images) { + if (!this.contentVisible) { + return; + } + + const ctx = this.ctx; + const fillColor = this.current.fillColor; + const isPatternFill = this.current.patternFill; + + for (const image of images) { + const { + data, + width, + height, + transform + } = image; + const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height); + const maskCtx = maskCanvas.context; maskCtx.save(); + const img = this.getObject(data, image); putBinaryImageMask(maskCtx, img); - maskCtx.globalCompositeOperation = 'source-in'; - maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor; + maskCtx.globalCompositeOperation = "source-in"; + maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.FILL) : fillColor; maskCtx.fillRect(0, 0, width, height); maskCtx.restore(); - this.paintInlineImageXObject(maskCanvas.canvas); - }, - paintImageMaskXObjectRepeat: function CanvasGraphics_paintImageMaskXObjectRepeat(imgData, scaleX, scaleY, positions) { - var width = imgData.width; - var height = imgData.height; - var fillColor = this.current.fillColor; - var isPatternFill = this.current.patternFill; - var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height); - var maskCtx = maskCanvas.context; - maskCtx.save(); - putBinaryImageMask(maskCtx, imgData); - maskCtx.globalCompositeOperation = 'source-in'; - maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor; - maskCtx.fillRect(0, 0, width, height); - maskCtx.restore(); - var ctx = this.ctx; - for (var i = 0, ii = positions.length; i < ii; i += 2) { - ctx.save(); - ctx.transform(scaleX, 0, 0, scaleY, positions[i], positions[i + 1]); - ctx.scale(1, -1); - ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1); - ctx.restore(); - } - }, - paintImageMaskXObjectGroup: function CanvasGraphics_paintImageMaskXObjectGroup(images) { - var ctx = this.ctx; - var fillColor = this.current.fillColor; - var isPatternFill = this.current.patternFill; - for (var i = 0, ii = images.length; i < ii; i++) { - var image = images[i]; - var width = image.width, - height = image.height; - var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height); - var maskCtx = maskCanvas.context; - maskCtx.save(); - putBinaryImageMask(maskCtx, image); - maskCtx.globalCompositeOperation = 'source-in'; - maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor; - maskCtx.fillRect(0, 0, width, height); - maskCtx.restore(); - ctx.save(); - ctx.transform.apply(ctx, image.transform); - ctx.scale(1, -1); - ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1); - ctx.restore(); - } - }, - paintImageXObject: function CanvasGraphics_paintImageXObject(objId) { - var imgData = this.objs.get(objId); - if (!imgData) { - (0, _util.warn)('Dependent image isn\'t ready yet'); - return; - } - this.paintInlineImageXObject(imgData); - }, - paintImageXObjectRepeat: function CanvasGraphics_paintImageXObjectRepeat(objId, scaleX, scaleY, positions) { - var imgData = this.objs.get(objId); - if (!imgData) { - (0, _util.warn)('Dependent image isn\'t ready yet'); - return; - } - var width = imgData.width; - var height = imgData.height; - var map = []; - for (var i = 0, ii = positions.length; i < ii; i += 2) { - map.push({ - transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]], - x: 0, - y: 0, - w: width, - h: height - }); - } - this.paintInlineImageXObjectGroup(imgData, map); - }, - paintInlineImageXObject: function CanvasGraphics_paintInlineImageXObject(imgData) { - var width = imgData.width; - var height = imgData.height; - var ctx = this.ctx; - this.save(); - ctx.scale(1 / width, -1 / height); - var currentTransform = ctx.mozCurrentTransformInverse; - var a = currentTransform[0], - b = currentTransform[1]; - var widthScale = Math.max(Math.sqrt(a * a + b * b), 1); - var c = currentTransform[2], - d = currentTransform[3]; - var heightScale = Math.max(Math.sqrt(c * c + d * d), 1); - var imgToPaint, tmpCanvas; - if (imgData instanceof HTMLElement || !imgData.data) { - imgToPaint = imgData; - } else { - tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', width, height); - var tmpCtx = tmpCanvas.context; - putBinaryImageData(tmpCtx, imgData); - imgToPaint = tmpCanvas.canvas; - } - var paintWidth = width, - paintHeight = height; - var tmpCanvasId = 'prescale1'; - while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) { - var newWidth = paintWidth, - newHeight = paintHeight; - if (widthScale > 2 && paintWidth > 1) { - newWidth = Math.ceil(paintWidth / 2); - widthScale /= paintWidth / newWidth; - } - if (heightScale > 2 && paintHeight > 1) { - newHeight = Math.ceil(paintHeight / 2); - heightScale /= paintHeight / newHeight; - } - tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight); - tmpCtx = tmpCanvas.context; - tmpCtx.clearRect(0, 0, newWidth, newHeight); - tmpCtx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight); - imgToPaint = tmpCanvas.canvas; - paintWidth = newWidth; - paintHeight = newHeight; - tmpCanvasId = tmpCanvasId === 'prescale1' ? 'prescale2' : 'prescale1'; - } - ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, -height, width, height); + ctx.save(); + ctx.transform(...transform); + ctx.scale(1, -1); + drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1); + ctx.restore(); + } + + this.compose(); + } + + paintImageXObject(objId) { + if (!this.contentVisible) { + return; + } + + const imgData = this.getObject(objId); + + if (!imgData) { + (0, _util.warn)("Dependent image isn't ready yet"); + return; + } + + this.paintInlineImageXObject(imgData); + } + + paintImageXObjectRepeat(objId, scaleX, scaleY, positions) { + if (!this.contentVisible) { + return; + } + + const imgData = this.getObject(objId); + + if (!imgData) { + (0, _util.warn)("Dependent image isn't ready yet"); + return; + } + + const width = imgData.width; + const height = imgData.height; + const map = []; + + for (let i = 0, ii = positions.length; i < ii; i += 2) { + map.push({ + transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]], + x: 0, + y: 0, + w: width, + h: height + }); + } + + this.paintInlineImageXObjectGroup(imgData, map); + } + + paintInlineImageXObject(imgData) { + if (!this.contentVisible) { + return; + } + + const width = imgData.width; + const height = imgData.height; + const ctx = this.ctx; + this.save(); + ctx.scale(1 / width, -1 / height); + let imgToPaint; + + if (typeof HTMLElement === "function" && imgData instanceof HTMLElement || !imgData.data) { + imgToPaint = imgData; + } else { + const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height); + const tmpCtx = tmpCanvas.context; + putBinaryImageData(tmpCtx, imgData, this.current.transferMaps); + imgToPaint = tmpCanvas.canvas; + } + + const scaled = this._scaleImage(imgToPaint, (0, _display_utils.getCurrentTransformInverse)(ctx)); + + ctx.imageSmoothingEnabled = getImageSmoothingEnabled((0, _display_utils.getCurrentTransform)(ctx), imgData.interpolate); + const [rWidth, rHeight] = drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height); + + if (this.imageLayer) { + const [left, top] = _util.Util.applyTransform([0, -height], (0, _display_utils.getCurrentTransform)(this.ctx)); + + this.imageLayer.appendImage({ + imgData, + left, + top, + width: rWidth, + height: rHeight + }); + } + + this.compose(); + this.restore(); + } + + paintInlineImageXObjectGroup(imgData, map) { + if (!this.contentVisible) { + return; + } + + const ctx = this.ctx; + const w = imgData.width; + const h = imgData.height; + const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", w, h); + const tmpCtx = tmpCanvas.context; + putBinaryImageData(tmpCtx, imgData, this.current.transferMaps); + + for (const entry of map) { + ctx.save(); + ctx.transform(...entry.transform); + ctx.scale(1, -1); + drawImageAtIntegerCoords(ctx, tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1); + if (this.imageLayer) { - var position = this.getCanvasPosition(0, -height); + const [left, top] = _util.Util.applyTransform([entry.x, entry.y], (0, _display_utils.getCurrentTransform)(this.ctx)); + this.imageLayer.appendImage({ - imgData: imgData, - left: position[0], - top: position[1], - width: width / currentTransform[0], - height: height / currentTransform[3] + imgData, + left, + top, + width: w, + height: h }); } - this.restore(); - }, - paintInlineImageXObjectGroup: function CanvasGraphics_paintInlineImageXObjectGroup(imgData, map) { - var ctx = this.ctx; - var w = imgData.width; - var h = imgData.height; - var tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', w, h); - var tmpCtx = tmpCanvas.context; - putBinaryImageData(tmpCtx, imgData); - for (var i = 0, ii = map.length; i < ii; i++) { - var entry = map[i]; - ctx.save(); - ctx.transform.apply(ctx, entry.transform); - ctx.scale(1, -1); - ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1); - if (this.imageLayer) { - var position = this.getCanvasPosition(entry.x, entry.y); - this.imageLayer.appendImage({ - imgData: imgData, - left: position[0], - top: position[1], - width: w, - height: h - }); - } - ctx.restore(); - } - }, - paintSolidColorImageMask: function CanvasGraphics_paintSolidColorImageMask() { - this.ctx.fillRect(0, 0, 1, 1); - }, - paintXObject: function CanvasGraphics_paintXObject() { - (0, _util.warn)('Unsupported \'paintXObject\' command.'); - }, - markPoint: function CanvasGraphics_markPoint(tag) {}, - markPointProps: function CanvasGraphics_markPointProps(tag, properties) {}, - beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) {}, - beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(tag, properties) {}, - endMarkedContent: function CanvasGraphics_endMarkedContent() {}, - beginCompat: function CanvasGraphics_beginCompat() {}, - endCompat: function CanvasGraphics_endCompat() {}, - consumePath: function CanvasGraphics_consumePath() { - var ctx = this.ctx; - if (this.pendingClip) { + + ctx.restore(); + } + + this.compose(); + } + + paintSolidColorImageMask() { + if (!this.contentVisible) { + return; + } + + this.ctx.fillRect(0, 0, 1, 1); + this.compose(); + } + + markPoint(tag) {} + + markPointProps(tag, properties) {} + + beginMarkedContent(tag) { + this.markedContentStack.push({ + visible: true + }); + } + + beginMarkedContentProps(tag, properties) { + if (tag === "OC") { + this.markedContentStack.push({ + visible: this.optionalContentConfig.isVisible(properties) + }); + } else { + this.markedContentStack.push({ + visible: true + }); + } + + this.contentVisible = this.isContentVisible(); + } + + endMarkedContent() { + this.markedContentStack.pop(); + this.contentVisible = this.isContentVisible(); + } + + beginCompat() {} + + endCompat() {} + + consumePath(clipBox) { + const isEmpty = this.current.isEmptyClip(); + + if (this.pendingClip) { + this.current.updateClipFromPath(); + } + + if (!this.pendingClip) { + this.compose(clipBox); + } + + const ctx = this.ctx; + + if (this.pendingClip) { + if (!isEmpty) { if (this.pendingClip === EO_CLIP) { - ctx.clip('evenodd'); + ctx.clip("evenodd"); } else { ctx.clip(); } - this.pendingClip = null; } - ctx.beginPath(); - }, - getSinglePixelWidth: function CanvasGraphics_getSinglePixelWidth(scale) { - if (this.cachedGetSinglePixelWidth === null) { - this.ctx.save(); - var inverse = this.ctx.mozCurrentTransformInverse; - this.ctx.restore(); - this.cachedGetSinglePixelWidth = Math.sqrt(Math.max(inverse[0] * inverse[0] + inverse[1] * inverse[1], inverse[2] * inverse[2] + inverse[3] * inverse[3])); - } - return this.cachedGetSinglePixelWidth; - }, - getCanvasPosition: function CanvasGraphics_getCanvasPosition(x, y) { - var transform = this.ctx.mozCurrentTransform; - return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]]; + + this.pendingClip = null; } - }; - for (var op in _util.OPS) { - CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op]; + + this.current.startNewPathAndClipBox(this.current.clipBox); + ctx.beginPath(); } - return CanvasGraphics; -}(); -exports.CanvasGraphics = CanvasGraphics; -/***/ }), -/* 12 */ -/***/ (function(module, exports, __w_pdfjs_require__) { + getSinglePixelWidth() { + if (!this._cachedGetSinglePixelWidth) { + const m = (0, _display_utils.getCurrentTransform)(this.ctx); -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.FontLoader = exports.FontFaceObject = undefined; - -var _util = __w_pdfjs_require__(0); - -function FontLoader(docId) { - this.docId = docId; - this.styleElement = null; - this.nativeFontFaces = []; - this.loadTestFontId = 0; - this.loadingContext = { - requests: [], - nextRequestId: 0 - }; -} -FontLoader.prototype = { - insertRule: function fontLoaderInsertRule(rule) { - var styleElement = this.styleElement; - if (!styleElement) { - styleElement = this.styleElement = document.createElement('style'); - styleElement.id = 'PDFJS_FONT_STYLE_TAG_' + this.docId; - document.documentElement.getElementsByTagName('head')[0].appendChild(styleElement); - } - var styleSheet = styleElement.sheet; - styleSheet.insertRule(rule, styleSheet.cssRules.length); - }, - clear: function fontLoaderClear() { - if (this.styleElement) { - this.styleElement.remove(); - this.styleElement = null; - } - this.nativeFontFaces.forEach(function (nativeFontFace) { - document.fonts.delete(nativeFontFace); - }); - this.nativeFontFaces.length = 0; - } -}; -{ - var getLoadTestFont = function getLoadTestFont() { - return atob('T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQ' + 'AABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwA' + 'AAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbm' + 'FtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAA' + 'AADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6A' + 'ABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAA' + 'MQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAA' + 'AAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAA' + 'AAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQ' + 'AAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMA' + 'AQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAA' + 'EAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAA' + 'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA' + 'AAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgc' + 'A/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWF' + 'hYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQA' + 'AAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAg' + 'ABAAAAAAAAAAAD6AAAAAAAAA=='); - }; - Object.defineProperty(FontLoader.prototype, 'loadTestFont', { - get: function get() { - return (0, _util.shadow)(this, 'loadTestFont', getLoadTestFont()); - }, - - configurable: true - }); - FontLoader.prototype.addNativeFontFace = function fontLoader_addNativeFontFace(nativeFontFace) { - this.nativeFontFaces.push(nativeFontFace); - document.fonts.add(nativeFontFace); - }; - FontLoader.prototype.bind = function fontLoaderBind(fonts, callback) { - var rules = []; - var fontsToLoad = []; - var fontLoadPromises = []; - var getNativeFontPromise = function getNativeFontPromise(nativeFontFace) { - return nativeFontFace.loaded.catch(function (e) { - (0, _util.warn)('Failed to load font "' + nativeFontFace.family + '": ' + e); - }); - }; - var isFontLoadingAPISupported = FontLoader.isFontLoadingAPISupported && !FontLoader.isSyncFontLoadingSupported; - for (var i = 0, ii = fonts.length; i < ii; i++) { - var font = fonts[i]; - if (font.attached || font.loading === false) { - continue; + if (m[1] === 0 && m[2] === 0) { + this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3])); + } else { + const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]); + const normX = Math.hypot(m[0], m[2]); + const normY = Math.hypot(m[1], m[3]); + this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet; } - font.attached = true; - if (isFontLoadingAPISupported) { - var nativeFontFace = font.createNativeFontFace(); - if (nativeFontFace) { - this.addNativeFontFace(nativeFontFace); - fontLoadPromises.push(getNativeFontPromise(nativeFontFace)); + } + + return this._cachedGetSinglePixelWidth; + } + + getScaleForStroking() { + if (!this._cachedScaleForStroking) { + const { + lineWidth + } = this.current; + const m = (0, _display_utils.getCurrentTransform)(this.ctx); + let scaleX, scaleY; + + if (m[1] === 0 && m[2] === 0) { + const normX = Math.abs(m[0]); + const normY = Math.abs(m[3]); + + if (lineWidth === 0) { + scaleX = 1 / normX; + scaleY = 1 / normY; + } else { + const scaledXLineWidth = normX * lineWidth; + const scaledYLineWidth = normY * lineWidth; + scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1; + scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1; } } else { - var rule = font.createFontFaceRule(); - if (rule) { - this.insertRule(rule); - rules.push(rule); - fontsToLoad.push(font); - } - } - } - var request = this.queueLoadingCallback(callback); - if (isFontLoadingAPISupported) { - Promise.all(fontLoadPromises).then(function () { - request.complete(); - }); - } else if (rules.length > 0 && !FontLoader.isSyncFontLoadingSupported) { - this.prepareFontLoadEvent(rules, fontsToLoad, request); - } else { - request.complete(); - } - }; - FontLoader.prototype.queueLoadingCallback = function FontLoader_queueLoadingCallback(callback) { - function LoadLoader_completeRequest() { - (0, _util.assert)(!request.end, 'completeRequest() cannot be called twice'); - request.end = Date.now(); - while (context.requests.length > 0 && context.requests[0].end) { - var otherRequest = context.requests.shift(); - setTimeout(otherRequest.callback, 0); - } - } - var context = this.loadingContext; - var requestId = 'pdfjs-font-loading-' + context.nextRequestId++; - var request = { - id: requestId, - complete: LoadLoader_completeRequest, - callback: callback, - started: Date.now() - }; - context.requests.push(request); - return request; - }; - FontLoader.prototype.prepareFontLoadEvent = function fontLoaderPrepareFontLoadEvent(rules, fonts, request) { - function int32(data, offset) { - return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff; - } - function spliceString(s, offset, remove, insert) { - var chunk1 = s.substr(0, offset); - var chunk2 = s.substr(offset + remove); - return chunk1 + insert + chunk2; - } - var i, ii; - var canvas = document.createElement('canvas'); - canvas.width = 1; - canvas.height = 1; - var ctx = canvas.getContext('2d'); - var called = 0; - function isFontReady(name, callback) { - called++; - if (called > 30) { - (0, _util.warn)('Load test font never loaded.'); - callback(); - return; - } - ctx.font = '30px ' + name; - ctx.fillText('.', 0, 20); - var imageData = ctx.getImageData(0, 0, 1, 1); - if (imageData.data[3] > 0) { - callback(); - return; - } - setTimeout(isFontReady.bind(null, name, callback)); - } - var loadTestFontId = 'lt' + Date.now() + this.loadTestFontId++; - var data = this.loadTestFont; - var COMMENT_OFFSET = 976; - data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId); - var CFF_CHECKSUM_OFFSET = 16; - var XXXX_VALUE = 0x58585858; - var checksum = int32(data, CFF_CHECKSUM_OFFSET); - for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) { - checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0; - } - if (i < loadTestFontId.length) { - checksum = checksum - XXXX_VALUE + int32(loadTestFontId + 'XXX', i) | 0; - } - data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum)); - var url = 'url(data:font/opentype;base64,' + btoa(data) + ');'; - var rule = '@font-face { font-family:"' + loadTestFontId + '";src:' + url + '}'; - this.insertRule(rule); - var names = []; - for (i = 0, ii = fonts.length; i < ii; i++) { - names.push(fonts[i].loadedName); - } - names.push(loadTestFontId); - var div = document.createElement('div'); - div.setAttribute('style', 'visibility: hidden;' + 'width: 10px; height: 10px;' + 'position: absolute; top: 0px; left: 0px;'); - for (i = 0, ii = names.length; i < ii; ++i) { - var span = document.createElement('span'); - span.textContent = 'Hi'; - span.style.fontFamily = names[i]; - div.appendChild(span); - } - document.body.appendChild(div); - isFontReady(loadTestFontId, function () { - document.body.removeChild(div); - request.complete(); - }); - }; -} -{ - FontLoader.isFontLoadingAPISupported = typeof document !== 'undefined' && !!document.fonts; -} -{ - var isSyncFontLoadingSupported = function isSyncFontLoadingSupported() { - if (typeof navigator === 'undefined') { - return true; - } - var supported = false; - var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent); - if (m && m[1] >= 14) { - supported = true; - } - return supported; - }; - Object.defineProperty(FontLoader, 'isSyncFontLoadingSupported', { - get: function get() { - return (0, _util.shadow)(FontLoader, 'isSyncFontLoadingSupported', isSyncFontLoadingSupported()); - }, + const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]); + const normX = Math.hypot(m[0], m[1]); + const normY = Math.hypot(m[2], m[3]); - enumerable: true, - configurable: true - }); -} -var IsEvalSupportedCached = { - get value() { - return (0, _util.shadow)(this, 'value', (0, _util.isEvalSupported)()); - } -}; -var FontFaceObject = function FontFaceObjectClosure() { - function FontFaceObject(translatedData, options) { - this.compiledGlyphs = Object.create(null); - for (var i in translatedData) { - this[i] = translatedData[i]; - } - this.options = options; - } - FontFaceObject.prototype = { - createNativeFontFace: function FontFaceObject_createNativeFontFace() { - if (!this.data) { - return null; - } - if (this.options.disableFontFace) { - this.disableFontFace = true; - return null; - } - var nativeFontFace = new FontFace(this.loadedName, this.data, {}); - if (this.options.fontRegistry) { - this.options.fontRegistry.registerFont(this); - } - return nativeFontFace; - }, - createFontFaceRule: function FontFaceObject_createFontFaceRule() { - if (!this.data) { - return null; - } - if (this.options.disableFontFace) { - this.disableFontFace = true; - return null; - } - var data = (0, _util.bytesToString)(new Uint8Array(this.data)); - var fontName = this.loadedName; - var url = 'url(data:' + this.mimetype + ';base64,' + btoa(data) + ');'; - var rule = '@font-face { font-family:"' + fontName + '";src:' + url + '}'; - if (this.options.fontRegistry) { - this.options.fontRegistry.registerFont(this, url); - } - return rule; - }, - getPathGenerator: function FontFaceObject_getPathGenerator(objs, character) { - if (!(character in this.compiledGlyphs)) { - var cmds = objs.get(this.loadedName + '_path_' + character); - var current, i, len; - if (this.options.isEvalSupported && IsEvalSupportedCached.value) { - var args, - js = ''; - for (i = 0, len = cmds.length; i < len; i++) { - current = cmds[i]; - if (current.args !== undefined) { - args = current.args.join(','); - } else { - args = ''; - } - js += 'c.' + current.cmd + '(' + args + ');\n'; - } - this.compiledGlyphs[character] = new Function('c', 'size', js); + if (lineWidth === 0) { + scaleX = normY / absDet; + scaleY = normX / absDet; } else { - this.compiledGlyphs[character] = function (c, size) { - for (i = 0, len = cmds.length; i < len; i++) { - current = cmds[i]; - if (current.cmd === 'scale') { - current.args = [size, -size]; - } - c[current.cmd].apply(c, current.args); - } - }; + const baseArea = lineWidth * absDet; + scaleX = normY > baseArea ? normY / baseArea : 1; + scaleY = normX > baseArea ? normX / baseArea : 1; } } - return this.compiledGlyphs[character]; + + this._cachedScaleForStroking = [scaleX, scaleY]; } - }; - return FontFaceObject; -}(); -exports.FontFaceObject = FontFaceObject; -exports.FontLoader = FontLoader; + + return this._cachedScaleForStroking; + } + + rescaleAndStroke(saveRestore) { + const { + ctx + } = this; + const { + lineWidth + } = this.current; + const [scaleX, scaleY] = this.getScaleForStroking(); + ctx.lineWidth = lineWidth || 1; + + if (scaleX === 1 && scaleY === 1) { + ctx.stroke(); + return; + } + + let savedMatrix, savedDashes, savedDashOffset; + + if (saveRestore) { + savedMatrix = (0, _display_utils.getCurrentTransform)(ctx); + savedDashes = ctx.getLineDash().slice(); + savedDashOffset = ctx.lineDashOffset; + } + + ctx.scale(scaleX, scaleY); + const scale = Math.max(scaleX, scaleY); + ctx.setLineDash(ctx.getLineDash().map(x => x / scale)); + ctx.lineDashOffset /= scale; + ctx.stroke(); + + if (saveRestore) { + ctx.setTransform(...savedMatrix); + ctx.setLineDash(savedDashes); + ctx.lineDashOffset = savedDashOffset; + } + } + + isContentVisible() { + for (let i = this.markedContentStack.length - 1; i >= 0; i--) { + if (!this.markedContentStack[i].visible) { + return false; + } + } + + return true; + } + +} + +exports.CanvasGraphics = CanvasGraphics; + +for (const op in _util.OPS) { + if (CanvasGraphics.prototype[op] !== undefined) { + CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op]; + } +} /***/ }), /* 13 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -Object.defineProperty(exports, "__esModule", { + +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.TilingPattern = exports.getShadingPatternFromIR = undefined; +})); +exports.TilingPattern = exports.PathType = void 0; +exports.getShadingPattern = getShadingPattern; -var _util = __w_pdfjs_require__(0); +var _util = __w_pdfjs_require__(1); -var _webgl = __w_pdfjs_require__(7); +var _display_utils = __w_pdfjs_require__(8); -var ShadingIRs = {}; -ShadingIRs.RadialAxial = { - fromIR: function RadialAxial_fromIR(raw) { - var type = raw[1]; - var colorStops = raw[2]; - var p0 = raw[3]; - var p1 = raw[4]; - var r0 = raw[5]; - var r1 = raw[6]; - return { - type: 'Pattern', - getPattern: function RadialAxial_getPattern(ctx) { - var grad; - if (type === 'axial') { - grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]); - } else if (type === 'radial') { - grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1); - } - for (var i = 0, ii = colorStops.length; i < ii; ++i) { - var c = colorStops[i]; - grad.addColorStop(c[0], c[1]); - } - return grad; - } - }; - } +var _is_node = __w_pdfjs_require__(3); + +const PathType = { + FILL: "Fill", + STROKE: "Stroke", + SHADING: "Shading" }; -var createMeshCanvas = function createMeshCanvasClosure() { - function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) { - var coords = context.coords, +exports.PathType = PathType; + +function applyBoundingBox(ctx, bbox) { + if (!bbox || _is_node.isNodeJS) { + return; + } + + const width = bbox[2] - bbox[0]; + const height = bbox[3] - bbox[1]; + const region = new Path2D(); + region.rect(bbox[0], bbox[1], width, height); + ctx.clip(region); +} + +class BaseShadingPattern { + constructor() { + if (this.constructor === BaseShadingPattern) { + (0, _util.unreachable)("Cannot initialize BaseShadingPattern."); + } + } + + getPattern() { + (0, _util.unreachable)("Abstract method `getPattern` called."); + } + +} + +class RadialAxialShadingPattern extends BaseShadingPattern { + constructor(IR) { + super(); + this._type = IR[1]; + this._bbox = IR[2]; + this._colorStops = IR[3]; + this._p0 = IR[4]; + this._p1 = IR[5]; + this._r0 = IR[6]; + this._r1 = IR[7]; + this.matrix = null; + } + + _createGradient(ctx) { + let grad; + + if (this._type === "axial") { + grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]); + } else if (this._type === "radial") { + grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1); + } + + for (const colorStop of this._colorStops) { + grad.addColorStop(colorStop[0], colorStop[1]); + } + + return grad; + } + + getPattern(ctx, owner, inverse, pathType) { + let pattern; + + if (pathType === PathType.STROKE || pathType === PathType.FILL) { + const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, (0, _display_utils.getCurrentTransform)(ctx)) || [0, 0, 0, 0]; + const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1; + const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1; + const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", width, height, true); + const tmpCtx = tmpCanvas.context; + tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height); + tmpCtx.beginPath(); + tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height); + tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]); + inverse = _util.Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]); + tmpCtx.transform(...owner.baseTransform); + + if (this.matrix) { + tmpCtx.transform(...this.matrix); + } + + applyBoundingBox(tmpCtx, this._bbox); + tmpCtx.fillStyle = this._createGradient(tmpCtx); + tmpCtx.fill(); + pattern = ctx.createPattern(tmpCanvas.canvas, "no-repeat"); + const domMatrix = new DOMMatrix(inverse); + + try { + pattern.setTransform(domMatrix); + } catch (ex) { + (0, _util.warn)(`RadialAxialShadingPattern.getPattern: "${ex?.message}".`); + } + } else { + applyBoundingBox(ctx, this._bbox); + pattern = this._createGradient(ctx); + } + + return pattern; + } + +} + +function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) { + const coords = context.coords, colors = context.colors; - var bytes = data.data, + const bytes = data.data, rowSize = data.width * 4; - var tmp; - if (coords[p1 + 1] > coords[p2 + 1]) { - tmp = p1; - p1 = p2; - p2 = tmp; - tmp = c1; - c1 = c2; - c2 = tmp; - } - if (coords[p2 + 1] > coords[p3 + 1]) { - tmp = p2; - p2 = p3; - p3 = tmp; - tmp = c2; - c2 = c3; - c3 = tmp; - } - if (coords[p1 + 1] > coords[p2 + 1]) { - tmp = p1; - p1 = p2; - p2 = tmp; - tmp = c1; - c1 = c2; - c2 = tmp; - } - var x1 = (coords[p1] + context.offsetX) * context.scaleX; - var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY; - var x2 = (coords[p2] + context.offsetX) * context.scaleX; - var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY; - var x3 = (coords[p3] + context.offsetX) * context.scaleX; - var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY; - if (y1 >= y3) { - return; - } - var c1r = colors[c1], + let tmp; + + if (coords[p1 + 1] > coords[p2 + 1]) { + tmp = p1; + p1 = p2; + p2 = tmp; + tmp = c1; + c1 = c2; + c2 = tmp; + } + + if (coords[p2 + 1] > coords[p3 + 1]) { + tmp = p2; + p2 = p3; + p3 = tmp; + tmp = c2; + c2 = c3; + c3 = tmp; + } + + if (coords[p1 + 1] > coords[p2 + 1]) { + tmp = p1; + p1 = p2; + p2 = tmp; + tmp = c1; + c1 = c2; + c2 = tmp; + } + + const x1 = (coords[p1] + context.offsetX) * context.scaleX; + const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY; + const x2 = (coords[p2] + context.offsetX) * context.scaleX; + const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY; + const x3 = (coords[p3] + context.offsetX) * context.scaleX; + const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY; + + if (y1 >= y3) { + return; + } + + const c1r = colors[c1], c1g = colors[c1 + 1], c1b = colors[c1 + 2]; - var c2r = colors[c2], + const c2r = colors[c2], c2g = colors[c2 + 1], c2b = colors[c2 + 2]; - var c3r = colors[c3], + const c3r = colors[c3], c3g = colors[c3 + 1], c3b = colors[c3 + 2]; - var minY = Math.round(y1), + const minY = Math.round(y1), maxY = Math.round(y3); - var xa, car, cag, cab; - var xb, cbr, cbg, cbb; - var k; - for (var y = minY; y <= maxY; y++) { - if (y < y2) { - k = y < y1 ? 0 : y1 === y2 ? 1 : (y1 - y) / (y1 - y2); - xa = x1 - (x1 - x2) * k; - car = c1r - (c1r - c2r) * k; - cag = c1g - (c1g - c2g) * k; - cab = c1b - (c1b - c2b) * k; + let xa, car, cag, cab; + let xb, cbr, cbg, cbb; + + for (let y = minY; y <= maxY; y++) { + if (y < y2) { + let k; + + if (y < y1) { + k = 0; } else { - k = y > y3 ? 1 : y2 === y3 ? 0 : (y2 - y) / (y2 - y3); - xa = x2 - (x2 - x3) * k; - car = c2r - (c2r - c3r) * k; - cag = c2g - (c2g - c3g) * k; - cab = c2b - (c2b - c3b) * k; + k = (y1 - y) / (y1 - y2); } - k = y < y1 ? 0 : y > y3 ? 1 : (y1 - y) / (y1 - y3); - xb = x1 - (x1 - x3) * k; - cbr = c1r - (c1r - c3r) * k; - cbg = c1g - (c1g - c3g) * k; - cbb = c1b - (c1b - c3b) * k; - var x1_ = Math.round(Math.min(xa, xb)); - var x2_ = Math.round(Math.max(xa, xb)); - var j = rowSize * y + x1_ * 4; - for (var x = x1_; x <= x2_; x++) { - k = (xa - x) / (xa - xb); - k = k < 0 ? 0 : k > 1 ? 1 : k; - bytes[j++] = car - (car - cbr) * k | 0; - bytes[j++] = cag - (cag - cbg) * k | 0; - bytes[j++] = cab - (cab - cbb) * k | 0; - bytes[j++] = 255; + + xa = x1 - (x1 - x2) * k; + car = c1r - (c1r - c2r) * k; + cag = c1g - (c1g - c2g) * k; + cab = c1b - (c1b - c2b) * k; + } else { + let k; + + if (y > y3) { + k = 1; + } else if (y2 === y3) { + k = 0; + } else { + k = (y2 - y) / (y2 - y3); } + + xa = x2 - (x2 - x3) * k; + car = c2r - (c2r - c3r) * k; + cag = c2g - (c2g - c3g) * k; + cab = c2b - (c2b - c3b) * k; + } + + let k; + + if (y < y1) { + k = 0; + } else if (y > y3) { + k = 1; + } else { + k = (y1 - y) / (y1 - y3); + } + + xb = x1 - (x1 - x3) * k; + cbr = c1r - (c1r - c3r) * k; + cbg = c1g - (c1g - c3g) * k; + cbb = c1b - (c1b - c3b) * k; + const x1_ = Math.round(Math.min(xa, xb)); + const x2_ = Math.round(Math.max(xa, xb)); + let j = rowSize * y + x1_ * 4; + + for (let x = x1_; x <= x2_; x++) { + k = (xa - x) / (xa - xb); + + if (k < 0) { + k = 0; + } else if (k > 1) { + k = 1; + } + + bytes[j++] = car - (car - cbr) * k | 0; + bytes[j++] = cag - (cag - cbg) * k | 0; + bytes[j++] = cab - (cab - cbb) * k | 0; + bytes[j++] = 255; } } - function drawFigure(data, figure, context) { - var ps = figure.coords; - var cs = figure.colors; - var i, ii; - switch (figure.type) { - case 'lattice': - var verticesPerRow = figure.verticesPerRow; - var rows = Math.floor(ps.length / verticesPerRow) - 1; - var cols = verticesPerRow - 1; - for (i = 0; i < rows; i++) { - var q = i * verticesPerRow; - for (var j = 0; j < cols; j++, q++) { - drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]); - drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]); - } +} + +function drawFigure(data, figure, context) { + const ps = figure.coords; + const cs = figure.colors; + let i, ii; + + switch (figure.type) { + case "lattice": + const verticesPerRow = figure.verticesPerRow; + const rows = Math.floor(ps.length / verticesPerRow) - 1; + const cols = verticesPerRow - 1; + + for (i = 0; i < rows; i++) { + let q = i * verticesPerRow; + + for (let j = 0; j < cols; j++, q++) { + drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]); + drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]); } - break; - case 'triangles': - for (i = 0, ii = ps.length; i < ii; i += 3) { - drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]); - } - break; - default: - throw new Error('illegal figure'); - } + } + + break; + + case "triangles": + for (i = 0, ii = ps.length; i < ii; i += 3) { + drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]); + } + + break; + + default: + throw new Error("illegal figure"); } - function createMeshCanvas(bounds, combinesScale, coords, colors, figures, backgroundColor, cachedCanvases) { - var EXPECTED_SCALE = 1.1; - var MAX_PATTERN_SIZE = 3000; - var BORDER_SIZE = 2; - var offsetX = Math.floor(bounds[0]); - var offsetY = Math.floor(bounds[1]); - var boundsWidth = Math.ceil(bounds[2]) - offsetX; - var boundsHeight = Math.ceil(bounds[3]) - offsetY; - var width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); - var height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); - var scaleX = boundsWidth / width; - var scaleY = boundsHeight / height; - var context = { - coords: coords, - colors: colors, +} + +class MeshShadingPattern extends BaseShadingPattern { + constructor(IR) { + super(); + this._coords = IR[2]; + this._colors = IR[3]; + this._figures = IR[4]; + this._bounds = IR[5]; + this._bbox = IR[7]; + this._background = IR[8]; + this.matrix = null; + } + + _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) { + const EXPECTED_SCALE = 1.1; + const MAX_PATTERN_SIZE = 3000; + const BORDER_SIZE = 2; + const offsetX = Math.floor(this._bounds[0]); + const offsetY = Math.floor(this._bounds[1]); + const boundsWidth = Math.ceil(this._bounds[2]) - offsetX; + const boundsHeight = Math.ceil(this._bounds[3]) - offsetY; + const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); + const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); + const scaleX = boundsWidth / width; + const scaleY = boundsHeight / height; + const context = { + coords: this._coords, + colors: this._colors, offsetX: -offsetX, offsetY: -offsetY, scaleX: 1 / scaleX, scaleY: 1 / scaleY }; - var paddedWidth = width + BORDER_SIZE * 2; - var paddedHeight = height + BORDER_SIZE * 2; - var canvas, tmpCanvas, i, ii; - if (_webgl.WebGLUtils.isEnabled) { - canvas = _webgl.WebGLUtils.drawFigures(width, height, backgroundColor, figures, context); - tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight, false); - tmpCanvas.context.drawImage(canvas, BORDER_SIZE, BORDER_SIZE); - canvas = tmpCanvas.canvas; - } else { - tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight, false); - var tmpCtx = tmpCanvas.context; - var data = tmpCtx.createImageData(width, height); - if (backgroundColor) { - var bytes = data.data; - for (i = 0, ii = bytes.length; i < ii; i += 4) { - bytes[i] = backgroundColor[0]; - bytes[i + 1] = backgroundColor[1]; - bytes[i + 2] = backgroundColor[2]; - bytes[i + 3] = 255; - } + const paddedWidth = width + BORDER_SIZE * 2; + const paddedHeight = height + BORDER_SIZE * 2; + const tmpCanvas = cachedCanvases.getCanvas("mesh", paddedWidth, paddedHeight, false); + const tmpCtx = tmpCanvas.context; + const data = tmpCtx.createImageData(width, height); + + if (backgroundColor) { + const bytes = data.data; + + for (let i = 0, ii = bytes.length; i < ii; i += 4) { + bytes[i] = backgroundColor[0]; + bytes[i + 1] = backgroundColor[1]; + bytes[i + 2] = backgroundColor[2]; + bytes[i + 3] = 255; } - for (i = 0; i < figures.length; i++) { - drawFigure(data, figures[i], context); - } - tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE); - canvas = tmpCanvas.canvas; } + + for (const figure of this._figures) { + drawFigure(data, figure, context); + } + + tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE); + const canvas = tmpCanvas.canvas; return { - canvas: canvas, + canvas, offsetX: offsetX - BORDER_SIZE * scaleX, offsetY: offsetY - BORDER_SIZE * scaleY, - scaleX: scaleX, - scaleY: scaleY + scaleX, + scaleY }; } - return createMeshCanvas; -}(); -ShadingIRs.Mesh = { - fromIR: function Mesh_fromIR(raw) { - var coords = raw[2]; - var colors = raw[3]; - var figures = raw[4]; - var bounds = raw[5]; - var matrix = raw[6]; - var background = raw[8]; - return { - type: 'Pattern', - getPattern: function Mesh_getPattern(ctx, owner, shadingFill) { - var scale; - if (shadingFill) { - scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform); - } else { - scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform); - if (matrix) { - var matrixScale = _util.Util.singularValueDecompose2dScale(matrix); - scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]]; - } - } - var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords, colors, figures, shadingFill ? null : background, owner.cachedCanvases); - if (!shadingFill) { - ctx.setTransform.apply(ctx, owner.baseTransform); - if (matrix) { - ctx.transform.apply(ctx, matrix); - } - } - ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY); - ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY); - return ctx.createPattern(temporaryPatternCanvas.canvas, 'no-repeat'); + + getPattern(ctx, owner, inverse, pathType) { + applyBoundingBox(ctx, this._bbox); + let scale; + + if (pathType === PathType.SHADING) { + scale = _util.Util.singularValueDecompose2dScale((0, _display_utils.getCurrentTransform)(ctx)); + } else { + scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform); + + if (this.matrix) { + const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix); + + scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]]; } - }; - } -}; -ShadingIRs.Dummy = { - fromIR: function Dummy_fromIR() { - return { - type: 'Pattern', - getPattern: function Dummy_fromIR_getPattern() { - return 'hotpink'; + } + + const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases); + + if (pathType !== PathType.SHADING) { + ctx.setTransform(...owner.baseTransform); + + if (this.matrix) { + ctx.transform(...this.matrix); } - }; + } + + ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY); + ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY); + return ctx.createPattern(temporaryPatternCanvas.canvas, "no-repeat"); } -}; -function getShadingPatternFromIR(raw) { - var shadingIR = ShadingIRs[raw[0]]; - if (!shadingIR) { - throw new Error('Unknown IR type: ' + raw[0]); - } - return shadingIR.fromIR(raw); + } -var TilingPattern = function TilingPatternClosure() { - var PaintType = { - COLORED: 1, - UNCOLORED: 2 - }; - var MAX_PATTERN_SIZE = 3000; - function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) { + +class DummyShadingPattern extends BaseShadingPattern { + getPattern() { + return "hotpink"; + } + +} + +function getShadingPattern(IR) { + switch (IR[0]) { + case "RadialAxial": + return new RadialAxialShadingPattern(IR); + + case "Mesh": + return new MeshShadingPattern(IR); + + case "Dummy": + return new DummyShadingPattern(); + } + + throw new Error(`Unknown IR type: ${IR[0]}`); +} + +const PaintType = { + COLORED: 1, + UNCOLORED: 2 +}; + +class TilingPattern { + static get MAX_PATTERN_SIZE() { + return (0, _util.shadow)(this, "MAX_PATTERN_SIZE", 3000); + } + + constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) { this.operatorList = IR[2]; this.matrix = IR[3] || [1, 0, 0, 1, 0, 0]; this.bbox = IR[4]; @@ -11993,267 +9291,1291 @@ var TilingPattern = function TilingPatternClosure() { this.paintType = IR[7]; this.tilingType = IR[8]; this.color = color; + this.ctx = ctx; this.canvasGraphicsFactory = canvasGraphicsFactory; this.baseTransform = baseTransform; - this.type = 'Pattern'; - this.ctx = ctx; } - TilingPattern.prototype = { - createPatternCanvas: function TilinPattern_createPatternCanvas(owner) { - var operatorList = this.operatorList; - var bbox = this.bbox; - var xstep = this.xstep; - var ystep = this.ystep; - var paintType = this.paintType; - var tilingType = this.tilingType; - var color = this.color; - var canvasGraphicsFactory = this.canvasGraphicsFactory; - (0, _util.info)('TilingType: ' + tilingType); - var x0 = bbox[0], + + createPatternCanvas(owner) { + const operatorList = this.operatorList; + const bbox = this.bbox; + const xstep = this.xstep; + const ystep = this.ystep; + const paintType = this.paintType; + const tilingType = this.tilingType; + const color = this.color; + const canvasGraphicsFactory = this.canvasGraphicsFactory; + (0, _util.info)("TilingType: " + tilingType); + const x0 = bbox[0], y0 = bbox[1], x1 = bbox[2], y1 = bbox[3]; - var topLeft = [x0, y0]; - var botRight = [x0 + xstep, y0 + ystep]; - var width = botRight[0] - topLeft[0]; - var height = botRight[1] - topLeft[1]; - var matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix); - var curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform); - var combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]]; - width = Math.min(Math.ceil(Math.abs(width * combinedScale[0])), MAX_PATTERN_SIZE); - height = Math.min(Math.ceil(Math.abs(height * combinedScale[1])), MAX_PATTERN_SIZE); - var tmpCanvas = owner.cachedCanvases.getCanvas('pattern', width, height, true); - var tmpCtx = tmpCanvas.context; - var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx); - graphics.groupLevel = owner.groupLevel; - this.setFillAndStrokeStyleToContext(tmpCtx, paintType, color); - this.setScale(width, height, xstep, ystep); - this.transformToScale(graphics); - var tmpTranslate = [1, 0, 0, 1, -topLeft[0], -topLeft[1]]; - graphics.transform.apply(graphics, tmpTranslate); - this.clipBbox(graphics, bbox, x0, y0, x1, y1); - graphics.executeOperatorList(operatorList); - return tmpCanvas.canvas; - }, - setScale: function TilingPattern_setScale(width, height, xstep, ystep) { - this.scale = [width / xstep, height / ystep]; - }, - transformToScale: function TilingPattern_transformToScale(graphics) { - var scale = this.scale; - var tmpScale = [scale[0], 0, 0, scale[1], 0, 0]; - graphics.transform.apply(graphics, tmpScale); - }, - scaleToContext: function TilingPattern_scaleToContext() { - var scale = this.scale; - this.ctx.scale(1 / scale[0], 1 / scale[1]); - }, - clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) { - if ((0, _util.isArray)(bbox) && bbox.length === 4) { - var bboxWidth = x1 - x0; - var bboxHeight = y1 - y0; - graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight); - graphics.clip(); - graphics.endPath(); - } - }, - setFillAndStrokeStyleToContext: function setFillAndStrokeStyleToContext(context, paintType, color) { - switch (paintType) { - case PaintType.COLORED: - var ctx = this.ctx; - context.fillStyle = ctx.fillStyle; - context.strokeStyle = ctx.strokeStyle; - break; - case PaintType.UNCOLORED: - var cssColor = _util.Util.makeCssRgb(color[0], color[1], color[2]); - context.fillStyle = cssColor; - context.strokeStyle = cssColor; - break; - default: - throw new _util.FormatError('Unsupported paint type: ' + paintType); - } - }, - getPattern: function TilingPattern_getPattern(ctx, owner) { - var temporaryPatternCanvas = this.createPatternCanvas(owner); - ctx = this.ctx; - ctx.setTransform.apply(ctx, this.baseTransform); - ctx.transform.apply(ctx, this.matrix); - this.scaleToContext(); - return ctx.createPattern(temporaryPatternCanvas, 'repeat'); + + const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix); + + const curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform); + + const combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]]; + const dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]); + const dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]); + const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", dimx.size, dimy.size, true); + const tmpCtx = tmpCanvas.context; + const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx); + graphics.groupLevel = owner.groupLevel; + this.setFillAndStrokeStyleToContext(graphics, paintType, color); + let adjustedX0 = x0; + let adjustedY0 = y0; + let adjustedX1 = x1; + let adjustedY1 = y1; + + if (x0 < 0) { + adjustedX0 = 0; + adjustedX1 += Math.abs(x0); } - }; - return TilingPattern; -}(); -exports.getShadingPatternFromIR = getShadingPatternFromIR; + + if (y0 < 0) { + adjustedY0 = 0; + adjustedY1 += Math.abs(y0); + } + + 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 = (0, _display_utils.getCurrentTransform)(graphics.ctx); + graphics.executeOperatorList(operatorList); + graphics.endDrawing(); + return { + canvas: tmpCanvas.canvas, + scaleX: dimx.scale, + scaleY: dimy.scale, + offsetX: adjustedX0, + offsetY: adjustedY0 + }; + } + + getSizeAndScale(step, realOutputSize, scale) { + step = Math.abs(step); + const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize); + let size = Math.ceil(step * scale); + + if (size >= maxSize) { + size = maxSize; + } else { + scale = size / step; + } + + return { + scale, + size + }; + } + + clipBbox(graphics, x0, y0, x1, y1) { + const bboxWidth = x1 - x0; + const bboxHeight = y1 - y0; + graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight); + graphics.current.updateRectMinMax((0, _display_utils.getCurrentTransform)(graphics.ctx), [x0, y0, x1, y1]); + graphics.clip(); + graphics.endPath(); + } + + setFillAndStrokeStyleToContext(graphics, paintType, color) { + const context = graphics.ctx, + current = graphics.current; + + switch (paintType) { + case PaintType.COLORED: + const ctx = this.ctx; + context.fillStyle = ctx.fillStyle; + context.strokeStyle = ctx.strokeStyle; + current.fillColor = ctx.fillStyle; + current.strokeColor = ctx.strokeStyle; + break; + + case PaintType.UNCOLORED: + const cssColor = _util.Util.makeHexColor(color[0], color[1], color[2]); + + context.fillStyle = cssColor; + context.strokeStyle = cssColor; + current.fillColor = cssColor; + current.strokeColor = cssColor; + break; + + default: + throw new _util.FormatError(`Unsupported paint type: ${paintType}`); + } + } + + getPattern(ctx, owner, inverse, pathType) { + let matrix = inverse; + + if (pathType !== PathType.SHADING) { + matrix = _util.Util.transform(matrix, owner.baseTransform); + + if (this.matrix) { + matrix = _util.Util.transform(matrix, this.matrix); + } + } + + const temporaryPatternCanvas = this.createPatternCanvas(owner); + let domMatrix = new DOMMatrix(matrix); + domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY); + domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY); + const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, "repeat"); + + try { + pattern.setTransform(domMatrix); + } catch (ex) { + (0, _util.warn)(`TilingPattern.getPattern: "${ex?.message}".`); + } + + return pattern; + } + +} + exports.TilingPattern = TilingPattern; /***/ }), /* 14 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -Object.defineProperty(exports, "__esModule", { + +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.PDFDataTransportStream = undefined; +})); +exports.applyMaskImageData = applyMaskImageData; -var _util = __w_pdfjs_require__(0); +var _util = __w_pdfjs_require__(1); -var PDFDataTransportStream = function PDFDataTransportStreamClosure() { - function PDFDataTransportStream(params, pdfDataRangeTransport) { - var _this = this; +function applyMaskImageData({ + src, + srcPos = 0, + dest, + destPos = 0, + width, + height, + inverseDecode = false +}) { + const opaque = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff; + const [zeroMapping, oneMapping] = !inverseDecode ? [opaque, 0] : [0, opaque]; + const widthInSource = width >> 3; + const widthRemainder = width & 7; + const srcLength = src.length; + dest = new Uint32Array(dest.buffer); - (0, _util.assert)(pdfDataRangeTransport); + for (let i = 0; i < height; i++) { + for (const max = srcPos + widthInSource; srcPos < max; srcPos++) { + const elem = srcPos < srcLength ? src[srcPos] : 255; + dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping; + } + + if (widthRemainder === 0) { + continue; + } + + const elem = srcPos < srcLength ? src[srcPos++] : 255; + + for (let j = 0; j < widthRemainder; j++) { + dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping; + } + } + + return { + srcPos, + destPos + }; +} + +/***/ }), +/* 15 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GlobalWorkerOptions = void 0; +const GlobalWorkerOptions = Object.create(null); +exports.GlobalWorkerOptions = GlobalWorkerOptions; +GlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort; +GlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? "" : GlobalWorkerOptions.workerSrc; + +/***/ }), +/* 16 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MessageHandler = void 0; + +var _util = __w_pdfjs_require__(1); + +const CallbackKind = { + UNKNOWN: 0, + DATA: 1, + ERROR: 2 +}; +const StreamKind = { + UNKNOWN: 0, + CANCEL: 1, + CANCEL_COMPLETE: 2, + CLOSE: 3, + ENQUEUE: 4, + ERROR: 5, + PULL: 6, + PULL_COMPLETE: 7, + START_COMPLETE: 8 +}; + +function wrapReason(reason) { + if (!(reason instanceof Error || typeof reason === "object" && reason !== null)) { + (0, _util.unreachable)('wrapReason: Expected "reason" to be a (possibly cloned) Error.'); + } + + switch (reason.name) { + case "AbortException": + return new _util.AbortException(reason.message); + + case "MissingPDFException": + return new _util.MissingPDFException(reason.message); + + case "PasswordException": + return new _util.PasswordException(reason.message, reason.code); + + case "UnexpectedResponseException": + return new _util.UnexpectedResponseException(reason.message, reason.status); + + case "UnknownErrorException": + return new _util.UnknownErrorException(reason.message, reason.details); + + default: + return new _util.UnknownErrorException(reason.message, reason.toString()); + } +} + +class MessageHandler { + constructor(sourceName, targetName, comObj) { + this.sourceName = sourceName; + this.targetName = targetName; + this.comObj = comObj; + this.callbackId = 1; + this.streamId = 1; + this.streamSinks = Object.create(null); + this.streamControllers = Object.create(null); + this.callbackCapabilities = Object.create(null); + this.actionHandler = Object.create(null); + + this._onComObjOnMessage = event => { + const data = event.data; + + if (data.targetName !== this.sourceName) { + return; + } + + if (data.stream) { + this._processStreamMessage(data); + + return; + } + + if (data.callback) { + const callbackId = data.callbackId; + const capability = this.callbackCapabilities[callbackId]; + + if (!capability) { + throw new Error(`Cannot resolve callback ${callbackId}`); + } + + delete this.callbackCapabilities[callbackId]; + + if (data.callback === CallbackKind.DATA) { + capability.resolve(data.data); + } else if (data.callback === CallbackKind.ERROR) { + capability.reject(wrapReason(data.reason)); + } else { + throw new Error("Unexpected callback case"); + } + + return; + } + + const action = this.actionHandler[data.action]; + + if (!action) { + throw new Error(`Unknown action from worker: ${data.action}`); + } + + if (data.callbackId) { + const cbSourceName = this.sourceName; + const cbTargetName = data.sourceName; + new Promise(function (resolve) { + resolve(action(data.data)); + }).then(function (result) { + comObj.postMessage({ + sourceName: cbSourceName, + targetName: cbTargetName, + callback: CallbackKind.DATA, + callbackId: data.callbackId, + data: result + }); + }, function (reason) { + comObj.postMessage({ + sourceName: cbSourceName, + targetName: cbTargetName, + callback: CallbackKind.ERROR, + callbackId: data.callbackId, + reason: wrapReason(reason) + }); + }); + return; + } + + if (data.streamId) { + this._createStreamSink(data); + + return; + } + + action(data.data); + }; + + comObj.addEventListener("message", this._onComObjOnMessage); + } + + on(actionName, handler) { + const ah = this.actionHandler; + + if (ah[actionName]) { + throw new Error(`There is already an actionName called "${actionName}"`); + } + + ah[actionName] = handler; + } + + send(actionName, data, transfers) { + this.comObj.postMessage({ + sourceName: this.sourceName, + targetName: this.targetName, + action: actionName, + data + }, transfers); + } + + sendWithPromise(actionName, data, transfers) { + const callbackId = this.callbackId++; + const capability = (0, _util.createPromiseCapability)(); + this.callbackCapabilities[callbackId] = capability; + + try { + this.comObj.postMessage({ + sourceName: this.sourceName, + targetName: this.targetName, + action: actionName, + callbackId, + data + }, transfers); + } catch (ex) { + capability.reject(ex); + } + + return capability.promise; + } + + sendWithStream(actionName, data, queueingStrategy, transfers) { + const streamId = this.streamId++, + sourceName = this.sourceName, + targetName = this.targetName, + comObj = this.comObj; + return new ReadableStream({ + start: controller => { + const startCapability = (0, _util.createPromiseCapability)(); + this.streamControllers[streamId] = { + controller, + startCall: startCapability, + pullCall: null, + cancelCall: null, + isClosed: false + }; + comObj.postMessage({ + sourceName, + targetName, + action: actionName, + streamId, + data, + desiredSize: controller.desiredSize + }, transfers); + return startCapability.promise; + }, + pull: controller => { + const pullCapability = (0, _util.createPromiseCapability)(); + this.streamControllers[streamId].pullCall = pullCapability; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL, + streamId, + desiredSize: controller.desiredSize + }); + return pullCapability.promise; + }, + cancel: reason => { + (0, _util.assert)(reason instanceof Error, "cancel must have a valid reason"); + const cancelCapability = (0, _util.createPromiseCapability)(); + this.streamControllers[streamId].cancelCall = cancelCapability; + this.streamControllers[streamId].isClosed = true; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL, + streamId, + reason: wrapReason(reason) + }); + return cancelCapability.promise; + } + }, queueingStrategy); + } + + _createStreamSink(data) { + const streamId = data.streamId, + sourceName = this.sourceName, + targetName = data.sourceName, + comObj = this.comObj; + const self = this, + action = this.actionHandler[data.action]; + const streamSink = { + enqueue(chunk, size = 1, transfers) { + if (this.isCancelled) { + return; + } + + const lastDesiredSize = this.desiredSize; + this.desiredSize -= size; + + if (lastDesiredSize > 0 && this.desiredSize <= 0) { + this.sinkCapability = (0, _util.createPromiseCapability)(); + this.ready = this.sinkCapability.promise; + } + + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.ENQUEUE, + streamId, + chunk + }, transfers); + }, + + close() { + if (this.isCancelled) { + return; + } + + this.isCancelled = true; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CLOSE, + streamId + }); + delete self.streamSinks[streamId]; + }, + + error(reason) { + (0, _util.assert)(reason instanceof Error, "error must have a valid reason"); + + if (this.isCancelled) { + return; + } + + this.isCancelled = true; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.ERROR, + streamId, + reason: wrapReason(reason) + }); + }, + + sinkCapability: (0, _util.createPromiseCapability)(), + onPull: null, + onCancel: null, + isCancelled: false, + desiredSize: data.desiredSize, + ready: null + }; + streamSink.sinkCapability.resolve(); + streamSink.ready = streamSink.sinkCapability.promise; + this.streamSinks[streamId] = streamSink; + new Promise(function (resolve) { + resolve(action(data.data, streamSink)); + }).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.START_COMPLETE, + streamId, + success: true + }); + }, function (reason) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.START_COMPLETE, + streamId, + reason: wrapReason(reason) + }); + }); + } + + _processStreamMessage(data) { + const streamId = data.streamId, + sourceName = this.sourceName, + targetName = data.sourceName, + comObj = this.comObj; + const streamController = this.streamControllers[streamId], + streamSink = this.streamSinks[streamId]; + + switch (data.stream) { + case StreamKind.START_COMPLETE: + if (data.success) { + streamController.startCall.resolve(); + } else { + streamController.startCall.reject(wrapReason(data.reason)); + } + + break; + + case StreamKind.PULL_COMPLETE: + if (data.success) { + streamController.pullCall.resolve(); + } else { + streamController.pullCall.reject(wrapReason(data.reason)); + } + + break; + + case StreamKind.PULL: + if (!streamSink) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, + success: true + }); + break; + } + + if (streamSink.desiredSize <= 0 && data.desiredSize > 0) { + streamSink.sinkCapability.resolve(); + } + + streamSink.desiredSize = data.desiredSize; + new Promise(function (resolve) { + resolve(streamSink.onPull && streamSink.onPull()); + }).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, + success: true + }); + }, function (reason) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, + reason: wrapReason(reason) + }); + }); + break; + + case StreamKind.ENQUEUE: + (0, _util.assert)(streamController, "enqueue should have stream controller"); + + if (streamController.isClosed) { + break; + } + + streamController.controller.enqueue(data.chunk); + break; + + case StreamKind.CLOSE: + (0, _util.assert)(streamController, "close should have stream controller"); + + if (streamController.isClosed) { + break; + } + + streamController.isClosed = true; + streamController.controller.close(); + + this._deleteStreamController(streamController, streamId); + + break; + + case StreamKind.ERROR: + (0, _util.assert)(streamController, "error should have stream controller"); + streamController.controller.error(wrapReason(data.reason)); + + this._deleteStreamController(streamController, streamId); + + break; + + case StreamKind.CANCEL_COMPLETE: + if (data.success) { + streamController.cancelCall.resolve(); + } else { + streamController.cancelCall.reject(wrapReason(data.reason)); + } + + this._deleteStreamController(streamController, streamId); + + break; + + case StreamKind.CANCEL: + if (!streamSink) { + break; + } + + new Promise(function (resolve) { + resolve(streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason))); + }).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL_COMPLETE, + streamId, + success: true + }); + }, function (reason) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL_COMPLETE, + streamId, + reason: wrapReason(reason) + }); + }); + streamSink.sinkCapability.reject(wrapReason(data.reason)); + streamSink.isCancelled = true; + delete this.streamSinks[streamId]; + break; + + default: + throw new Error("Unexpected stream case"); + } + } + + async _deleteStreamController(streamController, streamId) { + await Promise.allSettled([streamController.startCall && streamController.startCall.promise, streamController.pullCall && streamController.pullCall.promise, streamController.cancelCall && streamController.cancelCall.promise]); + delete this.streamControllers[streamId]; + } + + destroy() { + this.comObj.removeEventListener("message", this._onComObjOnMessage); + } + +} + +exports.MessageHandler = MessageHandler; + +/***/ }), +/* 17 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Metadata = void 0; + +var _util = __w_pdfjs_require__(1); + +class Metadata { + #metadataMap; + #data; + + constructor({ + parsedData, + rawData + }) { + this.#metadataMap = parsedData; + this.#data = rawData; + } + + getRaw() { + return this.#data; + } + + get(name) { + return this.#metadataMap.get(name) ?? null; + } + + getAll() { + return (0, _util.objectFromMap)(this.#metadataMap); + } + + has(name) { + return this.#metadataMap.has(name); + } + +} + +exports.Metadata = Metadata; + +/***/ }), +/* 18 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.OptionalContentConfig = void 0; + +var _util = __w_pdfjs_require__(1); + +const INTERNAL = Symbol("INTERNAL"); + +class OptionalContentGroup { + #visible = true; + + constructor(name, intent) { + this.name = name; + this.intent = intent; + } + + get visible() { + return this.#visible; + } + + _setVisible(internal, visible) { + if (internal !== INTERNAL) { + (0, _util.unreachable)("Internal method `_setVisible` called."); + } + + this.#visible = visible; + } + +} + +class OptionalContentConfig { + #cachedHasInitialVisibility = true; + #groups = new Map(); + #initialVisibility = null; + #order = null; + + constructor(data) { + this.name = null; + this.creator = null; + + if (data === null) { + return; + } + + this.name = data.name; + this.creator = data.creator; + this.#order = data.order; + + for (const group of data.groups) { + this.#groups.set(group.id, new OptionalContentGroup(group.name, group.intent)); + } + + if (data.baseState === "OFF") { + for (const group of this.#groups.values()) { + group._setVisible(INTERNAL, false); + } + } + + for (const on of data.on) { + this.#groups.get(on)._setVisible(INTERNAL, true); + } + + for (const off of data.off) { + this.#groups.get(off)._setVisible(INTERNAL, false); + } + + this.#initialVisibility = new Map(); + + for (const [id, group] of this.#groups) { + this.#initialVisibility.set(id, group.visible); + } + } + + #evaluateVisibilityExpression(array) { + const length = array.length; + + if (length < 2) { + return true; + } + + const operator = array[0]; + + for (let i = 1; i < length; i++) { + const element = array[i]; + let state; + + if (Array.isArray(element)) { + state = this.#evaluateVisibilityExpression(element); + } else if (this.#groups.has(element)) { + state = this.#groups.get(element).visible; + } else { + (0, _util.warn)(`Optional content group not found: ${element}`); + return true; + } + + switch (operator) { + case "And": + if (!state) { + return false; + } + + break; + + case "Or": + if (state) { + return true; + } + + break; + + case "Not": + return !state; + + default: + return true; + } + } + + return operator === "And"; + } + + isVisible(group) { + if (this.#groups.size === 0) { + return true; + } + + if (!group) { + (0, _util.warn)("Optional content group not defined."); + return true; + } + + if (group.type === "OCG") { + if (!this.#groups.has(group.id)) { + (0, _util.warn)(`Optional content group not found: ${group.id}`); + return true; + } + + return this.#groups.get(group.id).visible; + } else if (group.type === "OCMD") { + if (group.expression) { + return this.#evaluateVisibilityExpression(group.expression); + } + + if (!group.policy || group.policy === "AnyOn") { + for (const id of group.ids) { + if (!this.#groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + + if (this.#groups.get(id).visible) { + return true; + } + } + + return false; + } else if (group.policy === "AllOn") { + for (const id of group.ids) { + if (!this.#groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + + if (!this.#groups.get(id).visible) { + return false; + } + } + + return true; + } else if (group.policy === "AnyOff") { + for (const id of group.ids) { + if (!this.#groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + + if (!this.#groups.get(id).visible) { + return true; + } + } + + return false; + } else if (group.policy === "AllOff") { + for (const id of group.ids) { + if (!this.#groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + + if (this.#groups.get(id).visible) { + return false; + } + } + + return true; + } + + (0, _util.warn)(`Unknown optional content policy ${group.policy}.`); + return true; + } + + (0, _util.warn)(`Unknown group type ${group.type}.`); + return true; + } + + setVisibility(id, visible = true) { + if (!this.#groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return; + } + + this.#groups.get(id)._setVisible(INTERNAL, !!visible); + + this.#cachedHasInitialVisibility = null; + } + + get hasInitialVisibility() { + if (this.#cachedHasInitialVisibility !== null) { + return this.#cachedHasInitialVisibility; + } + + for (const [id, group] of this.#groups) { + const visible = this.#initialVisibility.get(id); + + if (group.visible !== visible) { + return this.#cachedHasInitialVisibility = false; + } + } + + return this.#cachedHasInitialVisibility = true; + } + + getOrder() { + if (!this.#groups.size) { + return null; + } + + if (this.#order) { + return this.#order.slice(); + } + + return [...this.#groups.keys()]; + } + + getGroups() { + return this.#groups.size > 0 ? (0, _util.objectFromMap)(this.#groups) : null; + } + + getGroup(id) { + return this.#groups.get(id) || null; + } + +} + +exports.OptionalContentConfig = OptionalContentConfig; + +/***/ }), +/* 19 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFDataTransportStream = void 0; + +var _util = __w_pdfjs_require__(1); + +var _display_utils = __w_pdfjs_require__(8); + +class PDFDataTransportStream { + constructor(params, pdfDataRangeTransport) { + (0, _util.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.'); this._queuedChunks = []; - var initialData = params.initialData; - if (initialData && initialData.length > 0) { - var buffer = new Uint8Array(initialData).buffer; + this._progressiveDone = params.progressiveDone || false; + this._contentDispositionFilename = params.contentDispositionFilename || null; + const initialData = params.initialData; + + if (initialData?.length > 0) { + const buffer = new Uint8Array(initialData).buffer; + this._queuedChunks.push(buffer); } + this._pdfDataRangeTransport = pdfDataRangeTransport; - this._isRangeSupported = !params.disableRange; this._isStreamingSupported = !params.disableStream; + this._isRangeSupported = !params.disableRange; this._contentLength = params.length; this._fullRequestReader = null; this._rangeReaders = []; - this._pdfDataRangeTransport.addRangeListener(function (begin, chunk) { - _this._onReceiveData({ - begin: begin, - chunk: chunk + + this._pdfDataRangeTransport.addRangeListener((begin, chunk) => { + this._onReceiveData({ + begin, + chunk }); }); - this._pdfDataRangeTransport.addProgressListener(function (loaded) { - _this._onProgress({ loaded: loaded }); + + this._pdfDataRangeTransport.addProgressListener((loaded, total) => { + this._onProgress({ + loaded, + total + }); }); - this._pdfDataRangeTransport.addProgressiveReadListener(function (chunk) { - _this._onReceiveData({ chunk: chunk }); + + this._pdfDataRangeTransport.addProgressiveReadListener(chunk => { + this._onReceiveData({ + chunk + }); }); + + this._pdfDataRangeTransport.addProgressiveDoneListener(() => { + this._onProgressiveDone(); + }); + this._pdfDataRangeTransport.transportReady(); } - PDFDataTransportStream.prototype = { - _onReceiveData: function PDFDataTransportStream_onReceiveData(args) { - var buffer = new Uint8Array(args.chunk).buffer; - if (args.begin === undefined) { - if (this._fullRequestReader) { - this._fullRequestReader._enqueue(buffer); - } else { - this._queuedChunks.push(buffer); - } - } else { - var found = this._rangeReaders.some(function (rangeReader) { - if (rangeReader._begin !== args.begin) { - return false; - } - rangeReader._enqueue(buffer); - return true; - }); - (0, _util.assert)(found); - } - }, - _onProgress: function PDFDataTransportStream_onDataProgress(evt) { - if (this._rangeReaders.length > 0) { - var firstReader = this._rangeReaders[0]; - if (firstReader.onProgress) { - firstReader.onProgress({ loaded: evt.loaded }); - } - } - }, - _removeRangeReader: function PDFDataTransportStream_removeRangeReader(reader) { - var i = this._rangeReaders.indexOf(reader); - if (i >= 0) { - this._rangeReaders.splice(i, 1); - } - }, - getFullReader: function PDFDataTransportStream_getFullReader() { - (0, _util.assert)(!this._fullRequestReader); - var queuedChunks = this._queuedChunks; - this._queuedChunks = null; - return new PDFDataTransportStreamReader(this, queuedChunks); - }, - getRangeReader: function PDFDataTransportStream_getRangeReader(begin, end) { - var reader = new PDFDataTransportStreamRangeReader(this, begin, end); - this._pdfDataRangeTransport.requestDataRange(begin, end); - this._rangeReaders.push(reader); - return reader; - }, - cancelAllRequests: function PDFDataTransportStream_cancelAllRequests(reason) { + + _onReceiveData(args) { + const buffer = new Uint8Array(args.chunk).buffer; + + if (args.begin === undefined) { if (this._fullRequestReader) { - this._fullRequestReader.cancel(reason); + this._fullRequestReader._enqueue(buffer); + } else { + this._queuedChunks.push(buffer); } - var readers = this._rangeReaders.slice(0); - readers.forEach(function (rangeReader) { - rangeReader.cancel(reason); + } else { + const found = this._rangeReaders.some(function (rangeReader) { + if (rangeReader._begin !== args.begin) { + return false; + } + + rangeReader._enqueue(buffer); + + return true; }); - this._pdfDataRangeTransport.abort(); + + (0, _util.assert)(found, "_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found."); } - }; - function PDFDataTransportStreamReader(stream, queuedChunks) { + } + + get _progressiveDataLength() { + return this._fullRequestReader?._loaded ?? 0; + } + + _onProgress(evt) { + if (evt.total === undefined) { + const firstReader = this._rangeReaders[0]; + + if (firstReader?.onProgress) { + firstReader.onProgress({ + loaded: evt.loaded + }); + } + } else { + const fullReader = this._fullRequestReader; + + if (fullReader?.onProgress) { + fullReader.onProgress({ + loaded: evt.loaded, + total: evt.total + }); + } + } + } + + _onProgressiveDone() { + if (this._fullRequestReader) { + this._fullRequestReader.progressiveDone(); + } + + this._progressiveDone = true; + } + + _removeRangeReader(reader) { + const i = this._rangeReaders.indexOf(reader); + + if (i >= 0) { + this._rangeReaders.splice(i, 1); + } + } + + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFDataTransportStream.getFullReader can only be called once."); + const queuedChunks = this._queuedChunks; + this._queuedChunks = null; + return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename); + } + + getRangeReader(begin, end) { + if (end <= this._progressiveDataLength) { + return null; + } + + const reader = new PDFDataTransportStreamRangeReader(this, begin, end); + + this._pdfDataRangeTransport.requestDataRange(begin, end); + + this._rangeReaders.push(reader); + + return reader; + } + + cancelAllRequests(reason) { + if (this._fullRequestReader) { + this._fullRequestReader.cancel(reason); + } + + for (const reader of this._rangeReaders.slice(0)) { + reader.cancel(reason); + } + + this._pdfDataRangeTransport.abort(); + } + +} + +exports.PDFDataTransportStream = PDFDataTransportStream; + +class PDFDataTransportStreamReader { + constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) { this._stream = stream; - this._done = false; + this._done = progressiveDone || false; + this._filename = (0, _display_utils.isPdfFile)(contentDispositionFilename) ? contentDispositionFilename : null; this._queuedChunks = queuedChunks || []; + this._loaded = 0; + + for (const chunk of this._queuedChunks) { + this._loaded += chunk.byteLength; + } + this._requests = []; this._headersReady = Promise.resolve(); stream._fullRequestReader = this; this.onProgress = null; } - PDFDataTransportStreamReader.prototype = { - _enqueue: function PDFDataTransportStreamReader_enqueue(chunk) { - if (this._done) { - return; - } - if (this._requests.length > 0) { - var requestCapability = this._requests.shift(); - requestCapability.resolve({ - value: chunk, - done: false - }); - return; - } - this._queuedChunks.push(chunk); - }, - get headersReady() { - return this._headersReady; - }, - get isRangeSupported() { - return this._stream._isRangeSupported; - }, - get isStreamingSupported() { - return this._stream._isStreamingSupported; - }, - get contentLength() { - return this._stream._contentLength; - }, - read: function PDFDataTransportStreamReader_read() { - if (this._queuedChunks.length > 0) { - var chunk = this._queuedChunks.shift(); - return Promise.resolve({ - value: chunk, - done: false - }); - } - if (this._done) { - return Promise.resolve({ - value: undefined, - done: true - }); - } - var requestCapability = (0, _util.createPromiseCapability)(); - this._requests.push(requestCapability); - return requestCapability.promise; - }, - cancel: function PDFDataTransportStreamReader_cancel(reason) { - this._done = true; - this._requests.forEach(function (requestCapability) { - requestCapability.resolve({ - value: undefined, - done: true - }); - }); - this._requests = []; + + _enqueue(chunk) { + if (this._done) { + return; } - }; - function PDFDataTransportStreamRangeReader(stream, begin, end) { + + if (this._requests.length > 0) { + const requestCapability = this._requests.shift(); + + requestCapability.resolve({ + value: chunk, + done: false + }); + } else { + this._queuedChunks.push(chunk); + } + + this._loaded += chunk.byteLength; + } + + get headersReady() { + return this._headersReady; + } + + get filename() { + return this._filename; + } + + get isRangeSupported() { + return this._stream._isRangeSupported; + } + + get isStreamingSupported() { + return this._stream._isStreamingSupported; + } + + get contentLength() { + return this._stream._contentLength; + } + + async read() { + if (this._queuedChunks.length > 0) { + const chunk = this._queuedChunks.shift(); + + return { + value: chunk, + done: false + }; + } + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + const requestCapability = (0, _util.createPromiseCapability)(); + + this._requests.push(requestCapability); + + return requestCapability.promise; + } + + cancel(reason) { + this._done = true; + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + } + + progressiveDone() { + if (this._done) { + return; + } + + this._done = true; + } + +} + +class PDFDataTransportStreamRangeReader { + constructor(stream, begin, end) { this._stream = stream; this._begin = begin; this._end = end; @@ -12262,1661 +10584,9190 @@ var PDFDataTransportStream = function PDFDataTransportStreamClosure() { this._done = false; this.onProgress = null; } - PDFDataTransportStreamRangeReader.prototype = { - _enqueue: function PDFDataTransportStreamRangeReader_enqueue(chunk) { - if (this._done) { - return; - } - if (this._requests.length === 0) { - this._queuedChunk = chunk; - } else { - var requestsCapability = this._requests.shift(); - requestsCapability.resolve({ - value: chunk, - done: false - }); - this._requests.forEach(function (requestCapability) { - requestCapability.resolve({ - value: undefined, - done: true - }); - }); - this._requests = []; - } - this._done = true; - this._stream._removeRangeReader(this); - }, - get isStreamingSupported() { - return false; - }, - read: function PDFDataTransportStreamRangeReader_read() { - if (this._queuedChunk) { - var chunk = this._queuedChunk; - this._queuedChunk = null; - return Promise.resolve({ - value: chunk, - done: false - }); - } - if (this._done) { - return Promise.resolve({ - value: undefined, - done: true - }); - } - var requestCapability = (0, _util.createPromiseCapability)(); - this._requests.push(requestCapability); - return requestCapability.promise; - }, - cancel: function PDFDataTransportStreamRangeReader_cancel(reason) { - this._done = true; - this._requests.forEach(function (requestCapability) { + + _enqueue(chunk) { + if (this._done) { + return; + } + + if (this._requests.length === 0) { + this._queuedChunk = chunk; + } else { + const requestsCapability = this._requests.shift(); + + requestsCapability.resolve({ + value: chunk, + done: false + }); + + for (const requestCapability of this._requests) { requestCapability.resolve({ value: undefined, done: true }); - }); - this._requests = []; - this._stream._removeRangeReader(this); + } + + this._requests.length = 0; } - }; - return PDFDataTransportStream; -}(); -exports.PDFDataTransportStream = PDFDataTransportStream; -/***/ }), -/* 15 */ -/***/ (function(module, exports, __w_pdfjs_require__) { + this._done = true; -"use strict"; - - -var pdfjsVersion = '1.9.426'; -var pdfjsBuild = '2558a58d'; -var pdfjsSharedUtil = __w_pdfjs_require__(0); -var pdfjsDisplayGlobal = __w_pdfjs_require__(8); -var pdfjsDisplayAPI = __w_pdfjs_require__(2); -var pdfjsDisplayTextLayer = __w_pdfjs_require__(5); -var pdfjsDisplayAnnotationLayer = __w_pdfjs_require__(3); -var pdfjsDisplayDOMUtils = __w_pdfjs_require__(1); -var pdfjsDisplaySVG = __w_pdfjs_require__(4); -{ - __w_pdfjs_require__(9); -} -exports.PDFJS = pdfjsDisplayGlobal.PDFJS; -exports.build = pdfjsDisplayAPI.build; -exports.version = pdfjsDisplayAPI.version; -exports.getDocument = pdfjsDisplayAPI.getDocument; -exports.LoopbackPort = pdfjsDisplayAPI.LoopbackPort; -exports.PDFDataRangeTransport = pdfjsDisplayAPI.PDFDataRangeTransport; -exports.PDFWorker = pdfjsDisplayAPI.PDFWorker; -exports.renderTextLayer = pdfjsDisplayTextLayer.renderTextLayer; -exports.AnnotationLayer = pdfjsDisplayAnnotationLayer.AnnotationLayer; -exports.CustomStyle = pdfjsDisplayDOMUtils.CustomStyle; -exports.createPromiseCapability = pdfjsSharedUtil.createPromiseCapability; -exports.PasswordResponses = pdfjsSharedUtil.PasswordResponses; -exports.InvalidPDFException = pdfjsSharedUtil.InvalidPDFException; -exports.MissingPDFException = pdfjsSharedUtil.MissingPDFException; -exports.SVGGraphics = pdfjsDisplaySVG.SVGGraphics; -exports.NativeImageDecoding = pdfjsSharedUtil.NativeImageDecoding; -exports.UnexpectedResponseException = pdfjsSharedUtil.UnexpectedResponseException; -exports.OPS = pdfjsSharedUtil.OPS; -exports.UNSUPPORTED_FEATURES = pdfjsSharedUtil.UNSUPPORTED_FEATURES; -exports.isValidUrl = pdfjsDisplayDOMUtils.isValidUrl; -exports.createValidAbsoluteUrl = pdfjsSharedUtil.createValidAbsoluteUrl; -exports.createObjectURL = pdfjsSharedUtil.createObjectURL; -exports.removeNullCharacters = pdfjsSharedUtil.removeNullCharacters; -exports.shadow = pdfjsSharedUtil.shadow; -exports.createBlob = pdfjsSharedUtil.createBlob; -exports.RenderingCancelledException = pdfjsDisplayDOMUtils.RenderingCancelledException; -exports.getFilenameFromUrl = pdfjsDisplayDOMUtils.getFilenameFromUrl; -exports.addLinkAttributes = pdfjsDisplayDOMUtils.addLinkAttributes; -exports.StatTimer = pdfjsSharedUtil.StatTimer; - -/***/ }), -/* 16 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -if (typeof PDFJS === 'undefined' || !PDFJS.compatibilityChecked) { - var globalScope = typeof window !== 'undefined' && window.Math === Math ? window : typeof global !== 'undefined' && global.Math === Math ? global : typeof self !== 'undefined' && self.Math === Math ? self : false ? undefined : {}; - var userAgent = typeof navigator !== 'undefined' && navigator.userAgent || ''; - var isAndroid = /Android/.test(userAgent); - var isAndroidPre3 = /Android\s[0-2][^\d]/.test(userAgent); - var isAndroidPre5 = /Android\s[0-4][^\d]/.test(userAgent); - var isChrome = userAgent.indexOf('Chrom') >= 0; - var isChromeWithRangeBug = /Chrome\/(39|40)\./.test(userAgent); - var isIOSChrome = userAgent.indexOf('CriOS') >= 0; - var isIE = userAgent.indexOf('Trident') >= 0; - var isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent); - var isOpera = userAgent.indexOf('Opera') >= 0; - var isSafari = /Safari\//.test(userAgent) && !/(Chrome\/|Android\s)/.test(userAgent); - var hasDOM = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && (typeof document === 'undefined' ? 'undefined' : _typeof(document)) === 'object'; - if (typeof PDFJS === 'undefined') { - globalScope.PDFJS = {}; + this._stream._removeRangeReader(this); } - PDFJS.compatibilityChecked = true; - (function checkTypedArrayCompatibility() { - if (typeof Uint8Array !== 'undefined') { - if (typeof Uint8Array.prototype.subarray === 'undefined') { - Uint8Array.prototype.subarray = function subarray(start, end) { - return new Uint8Array(this.slice(start, end)); - }; - Float32Array.prototype.subarray = function subarray(start, end) { - return new Float32Array(this.slice(start, end)); - }; - } - if (typeof Float64Array === 'undefined') { - globalScope.Float64Array = Float32Array; - } - return; - } - function subarray(start, end) { - return new TypedArray(this.slice(start, end)); - } - function setArrayOffset(array, offset) { - if (arguments.length < 2) { - offset = 0; - } - for (var i = 0, n = array.length; i < n; ++i, ++offset) { - this[offset] = array[i] & 0xFF; - } - } - function Uint32ArrayView(buffer, length) { - this.buffer = buffer; - this.byteLength = buffer.length; - this.length = length; - ensureUint32ArrayViewProps(this.length); - } - Uint32ArrayView.prototype = Object.create(null); - var uint32ArrayViewSetters = 0; - function createUint32ArrayProp(index) { + + get isStreamingSupported() { + return false; + } + + async read() { + if (this._queuedChunk) { + const chunk = this._queuedChunk; + this._queuedChunk = null; return { - get: function get() { - var buffer = this.buffer, - offset = index << 2; - return (buffer[offset] | buffer[offset + 1] << 8 | buffer[offset + 2] << 16 | buffer[offset + 3] << 24) >>> 0; - }, - set: function set(value) { - var buffer = this.buffer, - offset = index << 2; - buffer[offset] = value & 255; - buffer[offset + 1] = value >> 8 & 255; - buffer[offset + 2] = value >> 16 & 255; - buffer[offset + 3] = value >>> 24 & 255; - } + value: chunk, + done: false }; } - function ensureUint32ArrayViewProps(length) { - while (uint32ArrayViewSetters < length) { - Object.defineProperty(Uint32ArrayView.prototype, uint32ArrayViewSetters, createUint32ArrayProp(uint32ArrayViewSetters)); - uint32ArrayViewSetters++; - } + + if (this._done) { + return { + value: undefined, + done: true + }; } - function TypedArray(arg1) { - var result, i, n; - if (typeof arg1 === 'number') { - result = []; - for (i = 0; i < arg1; ++i) { - result[i] = 0; - } - } else if ('slice' in arg1) { - result = arg1.slice(0); - } else { - result = []; - for (i = 0, n = arg1.length; i < n; ++i) { - result[i] = arg1[i]; - } - } - result.subarray = subarray; - result.buffer = result; - result.byteLength = result.length; - result.set = setArrayOffset; - if ((typeof arg1 === 'undefined' ? 'undefined' : _typeof(arg1)) === 'object' && arg1.buffer) { - result.buffer = arg1.buffer; - } - return result; + + const requestCapability = (0, _util.createPromiseCapability)(); + + this._requests.push(requestCapability); + + return requestCapability.promise; + } + + cancel(reason) { + this._done = true; + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); } - globalScope.Uint8Array = TypedArray; - globalScope.Int8Array = TypedArray; - globalScope.Int32Array = TypedArray; - globalScope.Uint16Array = TypedArray; - globalScope.Float32Array = TypedArray; - globalScope.Float64Array = TypedArray; - globalScope.Uint32Array = function () { - if (arguments.length === 3) { - if (arguments[1] !== 0) { - throw new Error('offset !== 0 is not supported'); - } - return new Uint32ArrayView(arguments[0], arguments[2]); - } - return TypedArray.apply(this, arguments); + + this._requests.length = 0; + + this._stream._removeRangeReader(this); + } + +} + +/***/ }), +/* 20 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XfaText = void 0; + +class XfaText { + static textContent(xfa) { + const items = []; + const output = { + items, + styles: Object.create(null) }; - })(); - (function canvasPixelArrayBuffer() { - if (!hasDOM || !window.CanvasPixelArray) { - return; - } - var cpaProto = window.CanvasPixelArray.prototype; - if ('buffer' in cpaProto) { - return; - } - Object.defineProperty(cpaProto, 'buffer', { - get: function get() { - return this; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(cpaProto, 'byteLength', { - get: function get() { - return this.length; - }, - - enumerable: false, - configurable: true - }); - })(); - (function normalizeURLObject() { - if (!globalScope.URL) { - globalScope.URL = globalScope.webkitURL; - } - })(); - (function checkObjectDefinePropertyCompatibility() { - if (typeof Object.defineProperty !== 'undefined') { - var definePropertyPossible = true; - try { - if (hasDOM) { - Object.defineProperty(new Image(), 'id', { value: 'test' }); - } - var Test = function Test() {}; - Test.prototype = { - get id() {} - }; - Object.defineProperty(new Test(), 'id', { - value: '', - configurable: true, - enumerable: true, - writable: false - }); - } catch (e) { - definePropertyPossible = false; - } - if (definePropertyPossible) { + function walk(node) { + if (!node) { return; } - } - Object.defineProperty = function objectDefineProperty(obj, name, def) { - delete obj[name]; - if ('get' in def) { - obj.__defineGetter__(name, def['get']); + + let str = null; + const name = node.name; + + if (name === "#text") { + str = node.value; + } else if (!XfaText.shouldBuildText(name)) { + return; + } else if (node?.attributes?.textContent) { + str = node.attributes.textContent; + } else if (node.value) { + str = node.value; } - if ('set' in def) { - obj.__defineSetter__(name, def['set']); - } - if ('value' in def) { - obj.__defineSetter__(name, function objectDefinePropertySetter(value) { - this.__defineGetter__(name, function objectDefinePropertyGetter() { - return value; - }); - return value; + + if (str !== null) { + items.push({ + str }); - obj[name] = def.value; } - }; - })(); - (function checkXMLHttpRequestResponseCompatibility() { - if (typeof XMLHttpRequest === 'undefined') { - return; - } - var xhrPrototype = XMLHttpRequest.prototype; - var xhr = new XMLHttpRequest(); - if (!('overrideMimeType' in xhr)) { - Object.defineProperty(xhrPrototype, 'overrideMimeType', { - value: function xmlHttpRequestOverrideMimeType(mimeType) {} - }); - } - if ('responseType' in xhr) { - return; - } - Object.defineProperty(xhrPrototype, 'responseType', { - get: function xmlHttpRequestGetResponseType() { - return this._responseType || 'text'; - }, - set: function xmlHttpRequestSetResponseType(value) { - if (value === 'text' || value === 'arraybuffer') { - this._responseType = value; - if (value === 'arraybuffer' && typeof this.overrideMimeType === 'function') { - this.overrideMimeType('text/plain; charset=x-user-defined'); - } - } + + if (!node.children) { + return; } + + for (const child of node.children) { + walk(child); + } + } + + walk(xfa); + return output; + } + + static shouldBuildText(name) { + return !(name === "textarea" || name === "input" || name === "option" || name === "select"); + } + +} + +exports.XfaText = XfaText; + +/***/ }), +/* 21 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.NodeStandardFontDataFactory = exports.NodeCanvasFactory = exports.NodeCMapReaderFactory = void 0; + +var _base_factory = __w_pdfjs_require__(9); + +; + +const fetchData = function (url) { + return new Promise((resolve, reject) => { + const fs = require("fs"); + + fs.readFile(url, (error, data) => { + if (error || !data) { + reject(new Error(error)); + return; + } + + resolve(new Uint8Array(data)); }); - if (typeof VBArray !== 'undefined') { - Object.defineProperty(xhrPrototype, 'response', { - get: function xmlHttpRequestResponseGet() { - if (this.responseType === 'arraybuffer') { - return new Uint8Array(new VBArray(this.responseBody).toArray()); - } - return this.responseText; - } - }); - return; - } - Object.defineProperty(xhrPrototype, 'response', { - get: function xmlHttpRequestResponseGet() { - if (this.responseType !== 'arraybuffer') { - return this.responseText; - } - var text = this.responseText; - var i, - n = text.length; - var result = new Uint8Array(n); - for (i = 0; i < n; ++i) { - result[i] = text.charCodeAt(i) & 0xFF; - } - return result.buffer; - } - }); - })(); - (function checkWindowBtoaCompatibility() { - if ('btoa' in globalScope) { - return; - } - var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - globalScope.btoa = function (chars) { - var buffer = ''; - var i, n; - for (i = 0, n = chars.length; i < n; i += 3) { - var b1 = chars.charCodeAt(i) & 0xFF; - var b2 = chars.charCodeAt(i + 1) & 0xFF; - var b3 = chars.charCodeAt(i + 2) & 0xFF; - var d1 = b1 >> 2, - d2 = (b1 & 3) << 4 | b2 >> 4; - var d3 = i + 1 < n ? (b2 & 0xF) << 2 | b3 >> 6 : 64; - var d4 = i + 2 < n ? b3 & 0x3F : 64; - buffer += digits.charAt(d1) + digits.charAt(d2) + digits.charAt(d3) + digits.charAt(d4); - } - return buffer; - }; - })(); - (function checkWindowAtobCompatibility() { - if ('atob' in globalScope) { - return; - } - var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - globalScope.atob = function (input) { - input = input.replace(/=+$/, ''); - if (input.length % 4 === 1) { - throw new Error('bad atob input'); - } - for (var bc = 0, bs, buffer, idx = 0, output = ''; buffer = input.charAt(idx++); ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer, bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0) { - buffer = digits.indexOf(buffer); - } - return output; - }; - })(); - (function checkFunctionPrototypeBindCompatibility() { - if (typeof Function.prototype.bind !== 'undefined') { - return; - } - Function.prototype.bind = function functionPrototypeBind(obj) { - var fn = this, - headArgs = Array.prototype.slice.call(arguments, 1); - var bound = function functionPrototypeBindBound() { - var args = headArgs.concat(Array.prototype.slice.call(arguments)); - return fn.apply(obj, args); + }); +}; + +class NodeCanvasFactory extends _base_factory.BaseCanvasFactory { + _createCanvas(width, height) { + const Canvas = require("canvas"); + + return Canvas.createCanvas(width, height); + } + +} + +exports.NodeCanvasFactory = NodeCanvasFactory; + +class NodeCMapReaderFactory extends _base_factory.BaseCMapReaderFactory { + _fetchData(url, compressionType) { + return fetchData(url).then(data => { + return { + cMapData: data, + compressionType }; - return bound; - }; - })(); - (function checkDatasetProperty() { - if (!hasDOM) { + }); + } + +} + +exports.NodeCMapReaderFactory = NodeCMapReaderFactory; + +class NodeStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory { + _fetchData(url) { + return fetchData(url); + } + +} + +exports.NodeStandardFontDataFactory = NodeStandardFontDataFactory; + +/***/ }), +/* 22 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationEditorLayer = void 0; + +var _tools = __w_pdfjs_require__(7); + +var _util = __w_pdfjs_require__(1); + +var _freetext = __w_pdfjs_require__(23); + +var _ink = __w_pdfjs_require__(24); + +class AnnotationEditorLayer { + #accessibilityManager; + #allowClick = false; + #boundPointerup = this.pointerup.bind(this); + #boundPointerdown = this.pointerdown.bind(this); + #editors = new Map(); + #hadPointerDown = false; + #isCleaningUp = false; + #uiManager; + static _initialized = false; + + constructor(options) { + if (!AnnotationEditorLayer._initialized) { + AnnotationEditorLayer._initialized = true; + + _freetext.FreeTextEditor.initialize(options.l10n); + + _ink.InkEditor.initialize(options.l10n); + + options.uiManager.registerEditorTypes([_freetext.FreeTextEditor, _ink.InkEditor]); + } + + this.#uiManager = options.uiManager; + this.annotationStorage = options.annotationStorage; + this.pageIndex = options.pageIndex; + this.div = options.div; + this.#accessibilityManager = options.accessibilityManager; + this.#uiManager.addLayer(this); + } + + updateToolbar(mode) { + this.#uiManager.updateToolbar(mode); + } + + updateMode(mode = this.#uiManager.getMode()) { + this.#cleanup(); + + if (mode === _util.AnnotationEditorType.INK) { + this.addInkEditorIfNeeded(false); + this.disableClick(); + } else { + this.enableClick(); + } + + this.#uiManager.unselectAll(); + } + + addInkEditorIfNeeded(isCommitting) { + if (!isCommitting && this.#uiManager.getMode() !== _util.AnnotationEditorType.INK) { return; } - var div = document.createElement('div'); - if ('dataset' in div) { - return; - } - Object.defineProperty(HTMLElement.prototype, 'dataset', { - get: function get() { - if (this._dataset) { - return this._dataset; + + if (!isCommitting) { + for (const editor of this.#editors.values()) { + if (editor.isEmpty()) { + editor.setInBackground(); + return; } - var dataset = {}; - for (var j = 0, jj = this.attributes.length; j < jj; j++) { - var attribute = this.attributes[j]; - if (attribute.name.substring(0, 5) !== 'data-') { + } + } + + const editor = this.#createAndAddNewEditor({ + offsetX: 0, + offsetY: 0 + }); + editor.setInBackground(); + } + + setEditingState(isEditing) { + this.#uiManager.setEditingState(isEditing); + } + + addCommands(params) { + this.#uiManager.addCommands(params); + } + + enable() { + this.div.style.pointerEvents = "auto"; + + for (const editor of this.#editors.values()) { + editor.enableEditing(); + } + } + + disable() { + this.div.style.pointerEvents = "none"; + + for (const editor of this.#editors.values()) { + editor.disableEditing(); + } + } + + setActiveEditor(editor) { + const currentActive = this.#uiManager.getActive(); + + if (currentActive === editor) { + return; + } + + this.#uiManager.setActiveEditor(editor); + } + + enableClick() { + this.div.addEventListener("pointerdown", this.#boundPointerdown); + this.div.addEventListener("pointerup", this.#boundPointerup); + } + + disableClick() { + this.div.removeEventListener("pointerdown", this.#boundPointerdown); + this.div.removeEventListener("pointerup", this.#boundPointerup); + } + + attach(editor) { + this.#editors.set(editor.id, editor); + } + + detach(editor) { + this.#editors.delete(editor.id); + this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv); + } + + remove(editor) { + this.#uiManager.removeEditor(editor); + this.detach(editor); + this.annotationStorage.remove(editor.id); + editor.div.style.display = "none"; + setTimeout(() => { + editor.div.style.display = ""; + editor.div.remove(); + editor.isAttachedToDOM = false; + + if (document.activeElement === document.body) { + this.#uiManager.focusMainContainer(); + } + }, 0); + + if (!this.#isCleaningUp) { + this.addInkEditorIfNeeded(false); + } + } + + #changeParent(editor) { + if (editor.parent === this) { + return; + } + + this.attach(editor); + editor.pageIndex = this.pageIndex; + editor.parent?.detach(editor); + editor.parent = this; + + if (editor.div && editor.isAttachedToDOM) { + editor.div.remove(); + this.div.append(editor.div); + } + } + + add(editor) { + this.#changeParent(editor); + this.#uiManager.addEditor(editor); + this.attach(editor); + + if (!editor.isAttachedToDOM) { + const div = editor.render(); + this.div.append(div); + editor.isAttachedToDOM = true; + } + + this.moveEditorInDOM(editor); + editor.onceAdded(); + this.addToAnnotationStorage(editor); + } + + moveEditorInDOM(editor) { + this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true); + } + + addToAnnotationStorage(editor) { + if (!editor.isEmpty() && !this.annotationStorage.has(editor.id)) { + this.annotationStorage.setValue(editor.id, editor); + } + } + + addOrRebuild(editor) { + if (editor.needsToBeRebuilt()) { + editor.rebuild(); + } else { + this.add(editor); + } + } + + addANewEditor(editor) { + const cmd = () => { + this.addOrRebuild(editor); + }; + + const undo = () => { + editor.remove(); + }; + + this.addCommands({ + cmd, + undo, + mustExec: true + }); + } + + addUndoableEditor(editor) { + const cmd = () => { + this.addOrRebuild(editor); + }; + + const undo = () => { + editor.remove(); + }; + + this.addCommands({ + cmd, + undo, + mustExec: false + }); + } + + getNextId() { + return this.#uiManager.getId(); + } + + #createNewEditor(params) { + switch (this.#uiManager.getMode()) { + case _util.AnnotationEditorType.FREETEXT: + return new _freetext.FreeTextEditor(params); + + case _util.AnnotationEditorType.INK: + return new _ink.InkEditor(params); + } + + return null; + } + + deserialize(data) { + switch (data.annotationType) { + case _util.AnnotationEditorType.FREETEXT: + return _freetext.FreeTextEditor.deserialize(data, this); + + case _util.AnnotationEditorType.INK: + return _ink.InkEditor.deserialize(data, this); + } + + return null; + } + + #createAndAddNewEditor(event) { + const id = this.getNextId(); + const editor = this.#createNewEditor({ + parent: this, + id, + x: event.offsetX, + y: event.offsetY + }); + + if (editor) { + this.add(editor); + } + + return editor; + } + + setSelected(editor) { + this.#uiManager.setSelected(editor); + } + + toggleSelected(editor) { + this.#uiManager.toggleSelected(editor); + } + + isSelected(editor) { + return this.#uiManager.isSelected(editor); + } + + unselect(editor) { + this.#uiManager.unselect(editor); + } + + pointerup(event) { + const isMac = _tools.KeyboardManager.platform.isMac; + + if (event.button !== 0 || event.ctrlKey && isMac) { + return; + } + + if (event.target !== this.div) { + return; + } + + if (!this.#hadPointerDown) { + return; + } + + this.#hadPointerDown = false; + + if (!this.#allowClick) { + this.#allowClick = true; + return; + } + + this.#createAndAddNewEditor(event); + } + + pointerdown(event) { + const isMac = _tools.KeyboardManager.platform.isMac; + + if (event.button !== 0 || event.ctrlKey && isMac) { + return; + } + + if (event.target !== this.div) { + return; + } + + this.#hadPointerDown = true; + const editor = this.#uiManager.getActive(); + this.#allowClick = !editor || editor.isEmpty(); + } + + drop(event) { + const id = event.dataTransfer.getData("text/plain"); + const editor = this.#uiManager.getEditor(id); + + if (!editor) { + return; + } + + event.preventDefault(); + event.dataTransfer.dropEffect = "move"; + this.#changeParent(editor); + const rect = this.div.getBoundingClientRect(); + const endX = event.clientX - rect.x; + const endY = event.clientY - rect.y; + editor.translate(endX - editor.startX, endY - editor.startY); + this.moveEditorInDOM(editor); + editor.div.focus(); + } + + dragover(event) { + event.preventDefault(); + } + + destroy() { + if (this.#uiManager.getActive()?.parent === this) { + this.#uiManager.setActiveEditor(null); + } + + for (const editor of this.#editors.values()) { + this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv); + editor.isAttachedToDOM = false; + editor.div.remove(); + editor.parent = null; + } + + this.div = null; + this.#editors.clear(); + this.#uiManager.removeLayer(this); + } + + #cleanup() { + this.#isCleaningUp = true; + + for (const editor of this.#editors.values()) { + if (editor.isEmpty()) { + editor.remove(); + } + } + + this.#isCleaningUp = false; + } + + render(parameters) { + this.viewport = parameters.viewport; + (0, _tools.bindEvents)(this, this.div, ["dragover", "drop"]); + this.setDimensions(); + + for (const editor of this.#uiManager.getEditors(this.pageIndex)) { + this.add(editor); + } + + this.updateMode(); + } + + update(parameters) { + this.viewport = parameters.viewport; + this.setDimensions(); + this.updateMode(); + } + + get scaleFactor() { + return this.viewport.scale; + } + + get pageDimensions() { + const [pageLLx, pageLLy, pageURx, pageURy] = this.viewport.viewBox; + const width = pageURx - pageLLx; + const height = pageURy - pageLLy; + return [width, height]; + } + + get viewportBaseDimensions() { + const { + width, + height, + rotation + } = this.viewport; + return rotation % 180 === 0 ? [width, height] : [height, width]; + } + + setDimensions() { + const { + width, + height, + rotation + } = this.viewport; + const flipOrientation = rotation % 180 !== 0, + widthStr = Math.floor(width) + "px", + heightStr = Math.floor(height) + "px"; + this.div.style.width = flipOrientation ? heightStr : widthStr; + this.div.style.height = flipOrientation ? widthStr : heightStr; + this.div.setAttribute("data-main-rotation", rotation); + } + +} + +exports.AnnotationEditorLayer = AnnotationEditorLayer; + +/***/ }), +/* 23 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.FreeTextEditor = void 0; + +var _util = __w_pdfjs_require__(1); + +var _tools = __w_pdfjs_require__(7); + +var _editor = __w_pdfjs_require__(6); + +class FreeTextEditor extends _editor.AnnotationEditor { + #boundEditorDivBlur = this.editorDivBlur.bind(this); + #boundEditorDivFocus = this.editorDivFocus.bind(this); + #boundEditorDivKeydown = this.editorDivKeydown.bind(this); + #color; + #content = ""; + #hasAlreadyBeenCommitted = false; + #fontSize; + static _freeTextDefaultContent = ""; + static _l10nPromise; + static _internalPadding = 0; + static _defaultColor = null; + static _defaultFontSize = 10; + static _keyboardManager = new _tools.KeyboardManager([[["ctrl+Enter", "mac+meta+Enter", "Escape", "mac+Escape"], FreeTextEditor.prototype.commitOrRemove]]); + static _type = "freetext"; + + constructor(params) { + super({ ...params, + name: "freeTextEditor" + }); + this.#color = params.color || FreeTextEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor; + this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize; + } + + static initialize(l10n) { + this._l10nPromise = new Map(["free_text_default_content", "editor_free_text_aria_label"].map(str => [str, l10n.get(str)])); + const style = getComputedStyle(document.documentElement); + this._internalPadding = parseFloat(style.getPropertyValue("--freetext-padding")); + } + + static updateDefaultParams(type, value) { + switch (type) { + case _util.AnnotationEditorParamsType.FREETEXT_SIZE: + FreeTextEditor._defaultFontSize = value; + break; + + case _util.AnnotationEditorParamsType.FREETEXT_COLOR: + FreeTextEditor._defaultColor = value; + break; + } + } + + updateParams(type, value) { + switch (type) { + case _util.AnnotationEditorParamsType.FREETEXT_SIZE: + this.#updateFontSize(value); + break; + + case _util.AnnotationEditorParamsType.FREETEXT_COLOR: + this.#updateColor(value); + break; + } + } + + static get defaultPropertiesToUpdate() { + return [[_util.AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [_util.AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor]]; + } + + get propertiesToUpdate() { + return [[_util.AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [_util.AnnotationEditorParamsType.FREETEXT_COLOR, this.#color]]; + } + + #updateFontSize(fontSize) { + const setFontsize = size => { + this.editorDiv.style.fontSize = `calc(${size}px * var(--scale-factor))`; + this.translate(0, -(size - this.#fontSize) * this.parent.scaleFactor); + this.#fontSize = size; + this.#setEditorDimensions(); + }; + + const savedFontsize = this.#fontSize; + this.parent.addCommands({ + cmd: () => { + setFontsize(fontSize); + }, + undo: () => { + setFontsize(savedFontsize); + }, + mustExec: true, + type: _util.AnnotationEditorParamsType.FREETEXT_SIZE, + overwriteIfSameType: true, + keepUndo: true + }); + } + + #updateColor(color) { + const savedColor = this.#color; + this.parent.addCommands({ + cmd: () => { + this.#color = color; + this.editorDiv.style.color = color; + }, + undo: () => { + this.#color = savedColor; + this.editorDiv.style.color = savedColor; + }, + mustExec: true, + type: _util.AnnotationEditorParamsType.FREETEXT_COLOR, + overwriteIfSameType: true, + keepUndo: true + }); + } + + getInitialTranslation() { + return [-FreeTextEditor._internalPadding * this.parent.scaleFactor, -(FreeTextEditor._internalPadding + this.#fontSize) * this.parent.scaleFactor]; + } + + rebuild() { + super.rebuild(); + + if (this.div === null) { + return; + } + + if (!this.isAttachedToDOM) { + this.parent.add(this); + } + } + + enableEditMode() { + if (this.isInEditMode()) { + return; + } + + this.parent.setEditingState(false); + this.parent.updateToolbar(_util.AnnotationEditorType.FREETEXT); + super.enableEditMode(); + this.enableEditing(); + this.overlayDiv.classList.remove("enabled"); + this.editorDiv.contentEditable = true; + this.div.draggable = false; + this.editorDiv.addEventListener("keydown", this.#boundEditorDivKeydown); + this.editorDiv.addEventListener("focus", this.#boundEditorDivFocus); + this.editorDiv.addEventListener("blur", this.#boundEditorDivBlur); + } + + disableEditMode() { + if (!this.isInEditMode()) { + return; + } + + this.parent.setEditingState(true); + super.disableEditMode(); + this.disableEditing(); + this.overlayDiv.classList.add("enabled"); + this.editorDiv.contentEditable = false; + this.div.draggable = true; + this.editorDiv.removeEventListener("keydown", this.#boundEditorDivKeydown); + this.editorDiv.removeEventListener("focus", this.#boundEditorDivFocus); + this.editorDiv.removeEventListener("blur", this.#boundEditorDivBlur); + this.div.focus(); + this.isEditing = false; + } + + focusin(event) { + super.focusin(event); + + if (event.target !== this.editorDiv) { + this.editorDiv.focus(); + } + } + + onceAdded() { + if (this.width) { + return; + } + + this.enableEditMode(); + this.editorDiv.focus(); + } + + isEmpty() { + return !this.editorDiv || this.editorDiv.innerText.trim() === ""; + } + + remove() { + this.isEditing = false; + this.parent.setEditingState(true); + super.remove(); + } + + #extractText() { + const divs = this.editorDiv.getElementsByTagName("div"); + + if (divs.length === 0) { + return this.editorDiv.innerText; + } + + const buffer = []; + + for (let i = 0, ii = divs.length; i < ii; i++) { + const div = divs[i]; + const first = div.firstChild; + + if (first?.nodeName === "#text") { + buffer.push(first.data); + } else { + buffer.push(""); + } + } + + return buffer.join("\n"); + } + + #setEditorDimensions() { + const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions; + const rect = this.div.getBoundingClientRect(); + this.width = rect.width / parentWidth; + this.height = rect.height / parentHeight; + } + + commit() { + super.commit(); + + if (!this.#hasAlreadyBeenCommitted) { + this.#hasAlreadyBeenCommitted = true; + this.parent.addUndoableEditor(this); + } + + this.disableEditMode(); + this.#content = this.#extractText().trimEnd(); + this.#setEditorDimensions(); + } + + shouldGetKeyboardEvents() { + return this.isInEditMode(); + } + + dblclick(event) { + this.enableEditMode(); + this.editorDiv.focus(); + } + + keydown(event) { + if (event.target === this.div && event.key === "Enter") { + this.enableEditMode(); + this.editorDiv.focus(); + } + } + + editorDivKeydown(event) { + FreeTextEditor._keyboardManager.exec(this, event); + } + + editorDivFocus(event) { + this.isEditing = true; + } + + editorDivBlur(event) { + this.isEditing = false; + } + + disableEditing() { + this.editorDiv.setAttribute("role", "comment"); + this.editorDiv.removeAttribute("aria-multiline"); + } + + enableEditing() { + this.editorDiv.setAttribute("role", "textbox"); + this.editorDiv.setAttribute("aria-multiline", true); + } + + render() { + if (this.div) { + return this.div; + } + + let baseX, baseY; + + if (this.width) { + baseX = this.x; + baseY = this.y; + } + + super.render(); + this.editorDiv = document.createElement("div"); + this.editorDiv.className = "internal"; + this.editorDiv.setAttribute("id", `${this.id}-editor`); + this.enableEditing(); + + FreeTextEditor._l10nPromise.get("editor_free_text_aria_label").then(msg => this.editorDiv?.setAttribute("aria-label", msg)); + + FreeTextEditor._l10nPromise.get("free_text_default_content").then(msg => this.editorDiv?.setAttribute("default-content", msg)); + + this.editorDiv.contentEditable = true; + const { + style + } = this.editorDiv; + style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`; + style.color = this.#color; + this.div.append(this.editorDiv); + this.overlayDiv = document.createElement("div"); + this.overlayDiv.classList.add("overlay", "enabled"); + this.div.append(this.overlayDiv); + (0, _tools.bindEvents)(this, this.div, ["dblclick", "keydown"]); + + if (this.width) { + const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions; + this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight); + + for (const line of this.#content.split("\n")) { + const div = document.createElement("div"); + div.append(line ? document.createTextNode(line) : document.createElement("br")); + this.editorDiv.append(div); + } + + this.div.draggable = true; + this.editorDiv.contentEditable = false; + } else { + this.div.draggable = false; + this.editorDiv.contentEditable = true; + } + + return this.div; + } + + get contentDiv() { + return this.editorDiv; + } + + static deserialize(data, parent) { + const editor = super.deserialize(data, parent); + editor.#fontSize = data.fontSize; + editor.#color = _util.Util.makeHexColor(...data.color); + editor.#content = data.value; + return editor; + } + + serialize() { + if (this.isEmpty()) { + return null; + } + + const padding = FreeTextEditor._internalPadding * this.parent.scaleFactor; + const rect = this.getRect(padding, padding); + + const color = _editor.AnnotationEditor._colorManager.convert(getComputedStyle(this.editorDiv).color); + + return { + annotationType: _util.AnnotationEditorType.FREETEXT, + color, + fontSize: this.#fontSize, + value: this.#content, + pageIndex: this.parent.pageIndex, + rect, + rotation: this.rotation + }; + } + +} + +exports.FreeTextEditor = FreeTextEditor; + +/***/ }), +/* 24 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.InkEditor = void 0; +Object.defineProperty(exports, "fitCurve", ({ + enumerable: true, + get: function () { + return _pdfjsFitCurve.fitCurve; + } +})); + +var _util = __w_pdfjs_require__(1); + +var _editor = __w_pdfjs_require__(6); + +var _pdfjsFitCurve = __w_pdfjs_require__(25); + +var _tools = __w_pdfjs_require__(7); + +const RESIZER_SIZE = 16; + +class InkEditor extends _editor.AnnotationEditor { + #aspectRatio = 0; + #baseHeight = 0; + #baseWidth = 0; + #boundCanvasPointermove = this.canvasPointermove.bind(this); + #boundCanvasPointerleave = this.canvasPointerleave.bind(this); + #boundCanvasPointerup = this.canvasPointerup.bind(this); + #boundCanvasPointerdown = this.canvasPointerdown.bind(this); + #disableEditing = false; + #isCanvasInitialized = false; + #lastPoint = null; + #observer = null; + #realWidth = 0; + #realHeight = 0; + #requestFrameCallback = null; + static _defaultColor = null; + static _defaultOpacity = 1; + static _defaultThickness = 1; + static _l10nPromise; + static _type = "ink"; + + constructor(params) { + super({ ...params, + name: "inkEditor" + }); + this.color = params.color || null; + this.thickness = params.thickness || null; + this.opacity = params.opacity || null; + this.paths = []; + this.bezierPath2D = []; + this.currentPath = []; + this.scaleFactor = 1; + this.translationX = this.translationY = 0; + this.x = 0; + this.y = 0; + } + + static initialize(l10n) { + this._l10nPromise = new Map(["editor_ink_canvas_aria_label", "editor_ink_aria_label"].map(str => [str, l10n.get(str)])); + } + + static updateDefaultParams(type, value) { + switch (type) { + case _util.AnnotationEditorParamsType.INK_THICKNESS: + InkEditor._defaultThickness = value; + break; + + case _util.AnnotationEditorParamsType.INK_COLOR: + InkEditor._defaultColor = value; + break; + + case _util.AnnotationEditorParamsType.INK_OPACITY: + InkEditor._defaultOpacity = value / 100; + break; + } + } + + updateParams(type, value) { + switch (type) { + case _util.AnnotationEditorParamsType.INK_THICKNESS: + this.#updateThickness(value); + break; + + case _util.AnnotationEditorParamsType.INK_COLOR: + this.#updateColor(value); + break; + + case _util.AnnotationEditorParamsType.INK_OPACITY: + this.#updateOpacity(value); + break; + } + } + + static get defaultPropertiesToUpdate() { + return [[_util.AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness], [_util.AnnotationEditorParamsType.INK_COLOR, InkEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor], [_util.AnnotationEditorParamsType.INK_OPACITY, Math.round(InkEditor._defaultOpacity * 100)]]; + } + + get propertiesToUpdate() { + return [[_util.AnnotationEditorParamsType.INK_THICKNESS, this.thickness || InkEditor._defaultThickness], [_util.AnnotationEditorParamsType.INK_COLOR, this.color || InkEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor], [_util.AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity))]]; + } + + #updateThickness(thickness) { + const savedThickness = this.thickness; + this.parent.addCommands({ + cmd: () => { + this.thickness = thickness; + this.#fitToContent(); + }, + undo: () => { + this.thickness = savedThickness; + this.#fitToContent(); + }, + mustExec: true, + type: _util.AnnotationEditorParamsType.INK_THICKNESS, + overwriteIfSameType: true, + keepUndo: true + }); + } + + #updateColor(color) { + const savedColor = this.color; + this.parent.addCommands({ + cmd: () => { + this.color = color; + this.#redraw(); + }, + undo: () => { + this.color = savedColor; + this.#redraw(); + }, + mustExec: true, + type: _util.AnnotationEditorParamsType.INK_COLOR, + overwriteIfSameType: true, + keepUndo: true + }); + } + + #updateOpacity(opacity) { + opacity /= 100; + const savedOpacity = this.opacity; + this.parent.addCommands({ + cmd: () => { + this.opacity = opacity; + this.#redraw(); + }, + undo: () => { + this.opacity = savedOpacity; + this.#redraw(); + }, + mustExec: true, + type: _util.AnnotationEditorParamsType.INK_OPACITY, + overwriteIfSameType: true, + keepUndo: true + }); + } + + rebuild() { + super.rebuild(); + + if (this.div === null) { + return; + } + + if (!this.canvas) { + this.#createCanvas(); + this.#createObserver(); + } + + if (!this.isAttachedToDOM) { + this.parent.add(this); + this.#setCanvasDims(); + } + + this.#fitToContent(); + } + + remove() { + if (this.canvas === null) { + return; + } + + if (!this.isEmpty()) { + this.commit(); + } + + this.canvas.width = this.canvas.height = 0; + this.canvas.remove(); + this.canvas = null; + this.#observer.disconnect(); + this.#observer = null; + super.remove(); + } + + enableEditMode() { + if (this.#disableEditing || this.canvas === null) { + return; + } + + super.enableEditMode(); + this.div.draggable = false; + this.canvas.addEventListener("pointerdown", this.#boundCanvasPointerdown); + this.canvas.addEventListener("pointerup", this.#boundCanvasPointerup); + } + + disableEditMode() { + if (!this.isInEditMode() || this.canvas === null) { + return; + } + + super.disableEditMode(); + this.div.draggable = !this.isEmpty(); + this.div.classList.remove("editing"); + this.canvas.removeEventListener("pointerdown", this.#boundCanvasPointerdown); + this.canvas.removeEventListener("pointerup", this.#boundCanvasPointerup); + } + + onceAdded() { + this.div.draggable = !this.isEmpty(); + } + + isEmpty() { + return this.paths.length === 0 || this.paths.length === 1 && this.paths[0].length === 0; + } + + #getInitialBBox() { + const { + width, + height, + rotation + } = this.parent.viewport; + + switch (rotation) { + case 90: + return [0, width, width, height]; + + case 180: + return [width, height, width, height]; + + case 270: + return [height, 0, width, height]; + + default: + return [0, 0, width, height]; + } + } + + #setStroke() { + this.ctx.lineWidth = this.thickness * this.parent.scaleFactor / this.scaleFactor; + this.ctx.lineCap = "round"; + this.ctx.lineJoin = "round"; + this.ctx.miterLimit = 10; + this.ctx.strokeStyle = `${this.color}${(0, _tools.opacityToHex)(this.opacity)}`; + } + + #startDrawing(x, y) { + this.isEditing = true; + + if (!this.#isCanvasInitialized) { + this.#isCanvasInitialized = true; + this.#setCanvasDims(); + this.thickness ||= InkEditor._defaultThickness; + this.color ||= InkEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor; + this.opacity ??= InkEditor._defaultOpacity; + } + + this.currentPath.push([x, y]); + this.#lastPoint = null; + this.#setStroke(); + this.ctx.beginPath(); + this.ctx.moveTo(x, y); + + this.#requestFrameCallback = () => { + if (!this.#requestFrameCallback) { + return; + } + + if (this.#lastPoint) { + if (this.isEmpty()) { + this.ctx.setTransform(1, 0, 0, 1, 0, 0); + this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); + } else { + this.#redraw(); + } + + this.ctx.lineTo(...this.#lastPoint); + this.#lastPoint = null; + this.ctx.stroke(); + } + + window.requestAnimationFrame(this.#requestFrameCallback); + }; + + window.requestAnimationFrame(this.#requestFrameCallback); + } + + #draw(x, y) { + const [lastX, lastY] = this.currentPath.at(-1); + + if (x === lastX && y === lastY) { + return; + } + + this.currentPath.push([x, y]); + this.#lastPoint = [x, y]; + } + + #stopDrawing(x, y) { + this.ctx.closePath(); + this.#requestFrameCallback = null; + x = Math.min(Math.max(x, 0), this.canvas.width); + y = Math.min(Math.max(y, 0), this.canvas.height); + const [lastX, lastY] = this.currentPath.at(-1); + + if (x !== lastX || y !== lastY) { + this.currentPath.push([x, y]); + } + + let bezier; + + if (this.currentPath.length !== 1) { + bezier = (0, _pdfjsFitCurve.fitCurve)(this.currentPath, 30, null); + } else { + const xy = [x, y]; + bezier = [[xy, xy.slice(), xy.slice(), xy]]; + } + + const path2D = InkEditor.#buildPath2D(bezier); + this.currentPath.length = 0; + + const cmd = () => { + this.paths.push(bezier); + this.bezierPath2D.push(path2D); + this.rebuild(); + }; + + const undo = () => { + this.paths.pop(); + this.bezierPath2D.pop(); + + if (this.paths.length === 0) { + this.remove(); + } else { + if (!this.canvas) { + this.#createCanvas(); + this.#createObserver(); + } + + this.#fitToContent(); + } + }; + + this.parent.addCommands({ + cmd, + undo, + mustExec: true + }); + } + + #redraw() { + if (this.isEmpty()) { + this.#updateTransform(); + return; + } + + this.#setStroke(); + const { + canvas, + ctx + } = this; + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.clearRect(0, 0, canvas.width, canvas.height); + this.#updateTransform(); + + for (const path of this.bezierPath2D) { + ctx.stroke(path); + } + } + + commit() { + if (this.#disableEditing) { + return; + } + + super.commit(); + this.isEditing = false; + this.disableEditMode(); + this.setInForeground(); + this.#disableEditing = true; + this.div.classList.add("disabled"); + this.#fitToContent(true); + this.parent.addInkEditorIfNeeded(true); + this.parent.moveEditorInDOM(this); + this.div.focus(); + } + + focusin(event) { + super.focusin(event); + this.enableEditMode(); + } + + canvasPointerdown(event) { + if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) { + return; + } + + this.setInForeground(); + + if (event.type !== "mouse") { + this.div.focus(); + } + + event.stopPropagation(); + this.canvas.addEventListener("pointerleave", this.#boundCanvasPointerleave); + this.canvas.addEventListener("pointermove", this.#boundCanvasPointermove); + this.#startDrawing(event.offsetX, event.offsetY); + } + + canvasPointermove(event) { + event.stopPropagation(); + this.#draw(event.offsetX, event.offsetY); + } + + canvasPointerup(event) { + if (event.button !== 0) { + return; + } + + if (this.isInEditMode() && this.currentPath.length !== 0) { + event.stopPropagation(); + this.#endDrawing(event); + this.setInBackground(); + } + } + + canvasPointerleave(event) { + this.#endDrawing(event); + this.setInBackground(); + } + + #endDrawing(event) { + this.#stopDrawing(event.offsetX, event.offsetY); + this.canvas.removeEventListener("pointerleave", this.#boundCanvasPointerleave); + this.canvas.removeEventListener("pointermove", this.#boundCanvasPointermove); + this.parent.addToAnnotationStorage(this); + } + + #createCanvas() { + this.canvas = document.createElement("canvas"); + this.canvas.width = this.canvas.height = 0; + this.canvas.className = "inkEditorCanvas"; + + InkEditor._l10nPromise.get("editor_ink_canvas_aria_label").then(msg => this.canvas?.setAttribute("aria-label", msg)); + + this.div.append(this.canvas); + this.ctx = this.canvas.getContext("2d"); + } + + #createObserver() { + this.#observer = new ResizeObserver(entries => { + const rect = entries[0].contentRect; + + if (rect.width && rect.height) { + this.setDimensions(rect.width, rect.height); + } + }); + this.#observer.observe(this.div); + } + + render() { + if (this.div) { + return this.div; + } + + let baseX, baseY; + + if (this.width) { + baseX = this.x; + baseY = this.y; + } + + super.render(); + + InkEditor._l10nPromise.get("editor_ink_aria_label").then(msg => this.div?.setAttribute("aria-label", msg)); + + const [x, y, w, h] = this.#getInitialBBox(); + this.setAt(x, y, 0, 0); + this.setDims(w, h); + this.#createCanvas(); + + if (this.width) { + const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions; + this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight); + this.#isCanvasInitialized = true; + this.#setCanvasDims(); + this.setDims(this.width * parentWidth, this.height * parentHeight); + this.#redraw(); + this.#setMinDims(); + this.div.classList.add("disabled"); + } else { + this.div.classList.add("editing"); + this.enableEditMode(); + } + + this.#createObserver(); + return this.div; + } + + #setCanvasDims() { + if (!this.#isCanvasInitialized) { + return; + } + + const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions; + this.canvas.width = Math.ceil(this.width * parentWidth); + this.canvas.height = Math.ceil(this.height * parentHeight); + this.#updateTransform(); + } + + setDimensions(width, height) { + const roundedWidth = Math.round(width); + const roundedHeight = Math.round(height); + + if (this.#realWidth === roundedWidth && this.#realHeight === roundedHeight) { + return; + } + + this.#realWidth = roundedWidth; + this.#realHeight = roundedHeight; + this.canvas.style.visibility = "hidden"; + + if (this.#aspectRatio && Math.abs(this.#aspectRatio - width / height) > 1e-2) { + height = Math.ceil(width / this.#aspectRatio); + this.setDims(width, height); + } + + const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions; + this.width = width / parentWidth; + this.height = height / parentHeight; + + if (this.#disableEditing) { + this.#setScaleFactor(width, height); + } + + this.#setCanvasDims(); + this.#redraw(); + this.canvas.style.visibility = "visible"; + } + + #setScaleFactor(width, height) { + const padding = this.#getPadding(); + const scaleFactorW = (width - padding) / this.#baseWidth; + const scaleFactorH = (height - padding) / this.#baseHeight; + this.scaleFactor = Math.min(scaleFactorW, scaleFactorH); + } + + #updateTransform() { + const padding = this.#getPadding() / 2; + this.ctx.setTransform(this.scaleFactor, 0, 0, this.scaleFactor, this.translationX * this.scaleFactor + padding, this.translationY * this.scaleFactor + padding); + } + + static #buildPath2D(bezier) { + const path2D = new Path2D(); + + for (let i = 0, ii = bezier.length; i < ii; i++) { + const [first, control1, control2, second] = bezier[i]; + + if (i === 0) { + path2D.moveTo(...first); + } + + path2D.bezierCurveTo(control1[0], control1[1], control2[0], control2[1], second[0], second[1]); + } + + return path2D; + } + + #serializePaths(s, tx, ty, h) { + const NUMBER_OF_POINTS_ON_BEZIER_CURVE = 4; + const paths = []; + const padding = this.thickness / 2; + let buffer, points; + + for (const bezier of this.paths) { + buffer = []; + points = []; + + for (let i = 0, ii = bezier.length; i < ii; i++) { + const [first, control1, control2, second] = bezier[i]; + const p10 = s * (first[0] + tx) + padding; + const p11 = h - s * (first[1] + ty) - padding; + const p20 = s * (control1[0] + tx) + padding; + const p21 = h - s * (control1[1] + ty) - padding; + const p30 = s * (control2[0] + tx) + padding; + const p31 = h - s * (control2[1] + ty) - padding; + const p40 = s * (second[0] + tx) + padding; + const p41 = h - s * (second[1] + ty) - padding; + + if (i === 0) { + buffer.push(p10, p11); + points.push(p10, p11); + } + + buffer.push(p20, p21, p30, p31, p40, p41); + this.#extractPointsOnBezier(p10, p11, p20, p21, p30, p31, p40, p41, NUMBER_OF_POINTS_ON_BEZIER_CURVE, points); + } + + paths.push({ + bezier: buffer, + points + }); + } + + return paths; + } + + #extractPointsOnBezier(p10, p11, p20, p21, p30, p31, p40, p41, n, points) { + if (this.#isAlmostFlat(p10, p11, p20, p21, p30, p31, p40, p41)) { + points.push(p40, p41); + return; + } + + for (let i = 1; i < n - 1; i++) { + const t = i / n; + const mt = 1 - t; + let q10 = t * p10 + mt * p20; + let q11 = t * p11 + mt * p21; + let q20 = t * p20 + mt * p30; + let q21 = t * p21 + mt * p31; + const q30 = t * p30 + mt * p40; + const q31 = t * p31 + mt * p41; + q10 = t * q10 + mt * q20; + q11 = t * q11 + mt * q21; + q20 = t * q20 + mt * q30; + q21 = t * q21 + mt * q31; + q10 = t * q10 + mt * q20; + q11 = t * q11 + mt * q21; + points.push(q10, q11); + } + + points.push(p40, p41); + } + + #isAlmostFlat(p10, p11, p20, p21, p30, p31, p40, p41) { + const tol = 10; + const ax = (3 * p20 - 2 * p10 - p40) ** 2; + const ay = (3 * p21 - 2 * p11 - p41) ** 2; + const bx = (3 * p30 - p10 - 2 * p40) ** 2; + const by = (3 * p31 - p11 - 2 * p41) ** 2; + return Math.max(ax, bx) + Math.max(ay, by) <= tol; + } + + #getBbox() { + let xMin = Infinity; + let xMax = -Infinity; + let yMin = Infinity; + let yMax = -Infinity; + + for (const path of this.paths) { + for (const [first, control1, control2, second] of path) { + const bbox = _util.Util.bezierBoundingBox(...first, ...control1, ...control2, ...second); + + xMin = Math.min(xMin, bbox[0]); + yMin = Math.min(yMin, bbox[1]); + xMax = Math.max(xMax, bbox[2]); + yMax = Math.max(yMax, bbox[3]); + } + } + + return [xMin, yMin, xMax, yMax]; + } + + #getPadding() { + return this.#disableEditing ? Math.ceil(this.thickness * this.parent.scaleFactor) : 0; + } + + #fitToContent(firstTime = false) { + if (this.isEmpty()) { + return; + } + + if (!this.#disableEditing) { + this.#redraw(); + return; + } + + const bbox = this.#getBbox(); + const padding = this.#getPadding(); + this.#baseWidth = Math.max(RESIZER_SIZE, bbox[2] - bbox[0]); + this.#baseHeight = Math.max(RESIZER_SIZE, bbox[3] - bbox[1]); + const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor); + const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor); + const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions; + this.width = width / parentWidth; + this.height = height / parentHeight; + this.#aspectRatio = width / height; + this.#setMinDims(); + const prevTranslationX = this.translationX; + const prevTranslationY = this.translationY; + this.translationX = -bbox[0]; + this.translationY = -bbox[1]; + this.#setCanvasDims(); + this.#redraw(); + this.#realWidth = width; + this.#realHeight = height; + this.setDims(width, height); + const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0; + this.translate(prevTranslationX - this.translationX - unscaledPadding, prevTranslationY - this.translationY - unscaledPadding); + } + + #setMinDims() { + const { + style + } = this.div; + + if (this.#aspectRatio >= 1) { + style.minHeight = `${RESIZER_SIZE}px`; + style.minWidth = `${Math.round(this.#aspectRatio * RESIZER_SIZE)}px`; + } else { + style.minWidth = `${RESIZER_SIZE}px`; + style.minHeight = `${Math.round(RESIZER_SIZE / this.#aspectRatio)}px`; + } + } + + static deserialize(data, parent) { + const editor = super.deserialize(data, parent); + editor.thickness = data.thickness; + editor.color = _util.Util.makeHexColor(...data.color); + editor.opacity = data.opacity; + const [pageWidth, pageHeight] = parent.pageDimensions; + const width = editor.width * pageWidth; + const height = editor.height * pageHeight; + const scaleFactor = parent.scaleFactor; + const padding = data.thickness / 2; + editor.#aspectRatio = width / height; + editor.#disableEditing = true; + editor.#realWidth = Math.round(width); + editor.#realHeight = Math.round(height); + + for (const { + bezier + } of data.paths) { + const path = []; + editor.paths.push(path); + let p0 = scaleFactor * (bezier[0] - padding); + let p1 = scaleFactor * (height - bezier[1] - padding); + + for (let i = 2, ii = bezier.length; i < ii; i += 6) { + const p10 = scaleFactor * (bezier[i] - padding); + const p11 = scaleFactor * (height - bezier[i + 1] - padding); + const p20 = scaleFactor * (bezier[i + 2] - padding); + const p21 = scaleFactor * (height - bezier[i + 3] - padding); + const p30 = scaleFactor * (bezier[i + 4] - padding); + const p31 = scaleFactor * (height - bezier[i + 5] - padding); + path.push([[p0, p1], [p10, p11], [p20, p21], [p30, p31]]); + p0 = p30; + p1 = p31; + } + + const path2D = this.#buildPath2D(path); + editor.bezierPath2D.push(path2D); + } + + const bbox = editor.#getBbox(); + editor.#baseWidth = Math.max(RESIZER_SIZE, bbox[2] - bbox[0]); + editor.#baseHeight = Math.max(RESIZER_SIZE, bbox[3] - bbox[1]); + editor.#setScaleFactor(width, height); + return editor; + } + + serialize() { + if (this.isEmpty()) { + return null; + } + + const rect = this.getRect(0, 0); + const height = this.rotation % 180 === 0 ? rect[3] - rect[1] : rect[2] - rect[0]; + + const color = _editor.AnnotationEditor._colorManager.convert(this.ctx.strokeStyle); + + return { + annotationType: _util.AnnotationEditorType.INK, + color, + thickness: this.thickness, + opacity: this.opacity, + paths: this.#serializePaths(this.scaleFactor / this.parent.scaleFactor, this.translationX, this.translationY, height), + pageIndex: this.parent.pageIndex, + rect, + rotation: this.rotation + }; + } + +} + +exports.InkEditor = InkEditor; + +/***/ }), +/* 25 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.fitCurve = void 0; + +const fitCurve = __w_pdfjs_require__(26); + +exports.fitCurve = fitCurve; + +/***/ }), +/* 26 */ +/***/ ((module) => { + + + +function fitCurve(points, maxError, progressCallback) { + if (!Array.isArray(points)) { + throw new TypeError("First argument should be an array"); + } + + points.forEach(point => { + if (!Array.isArray(point) || point.some(item => typeof item !== 'number') || point.length !== points[0].length) { + throw Error("Each point should be an array of numbers. Each point should have the same amount of numbers."); + } + }); + points = points.filter((point, i) => i === 0 || !point.every((val, j) => val === points[i - 1][j])); + + if (points.length < 2) { + return []; + } + + const len = points.length; + const leftTangent = createTangent(points[1], points[0]); + const rightTangent = createTangent(points[len - 2], points[len - 1]); + return fitCubic(points, leftTangent, rightTangent, maxError, progressCallback); +} + +function fitCubic(points, leftTangent, rightTangent, error, progressCallback) { + const MaxIterations = 20; + var bezCurve, u, uPrime, maxError, prevErr, splitPoint, prevSplit, centerVector, toCenterTangent, fromCenterTangent, beziers, dist, i; + + if (points.length === 2) { + dist = maths.vectorLen(maths.subtract(points[0], points[1])) / 3.0; + bezCurve = [points[0], maths.addArrays(points[0], maths.mulItems(leftTangent, dist)), maths.addArrays(points[1], maths.mulItems(rightTangent, dist)), points[1]]; + return [bezCurve]; + } + + u = chordLengthParameterize(points); + [bezCurve, maxError, splitPoint] = generateAndReport(points, u, u, leftTangent, rightTangent, progressCallback); + + if (maxError === 0 || maxError < error) { + return [bezCurve]; + } + + if (maxError < error * error) { + uPrime = u; + prevErr = maxError; + prevSplit = splitPoint; + + for (i = 0; i < MaxIterations; i++) { + uPrime = reparameterize(bezCurve, points, uPrime); + [bezCurve, maxError, splitPoint] = generateAndReport(points, u, uPrime, leftTangent, rightTangent, progressCallback); + + if (maxError < error) { + return [bezCurve]; + } else if (splitPoint === prevSplit) { + let errChange = maxError / prevErr; + + if (errChange > .9999 && errChange < 1.0001) { + break; + } + } + + prevErr = maxError; + prevSplit = splitPoint; + } + } + + beziers = []; + centerVector = maths.subtract(points[splitPoint - 1], points[splitPoint + 1]); + + if (centerVector.every(val => val === 0)) { + centerVector = maths.subtract(points[splitPoint - 1], points[splitPoint]); + [centerVector[0], centerVector[1]] = [-centerVector[1], centerVector[0]]; + } + + toCenterTangent = maths.normalize(centerVector); + fromCenterTangent = maths.mulItems(toCenterTangent, -1); + beziers = beziers.concat(fitCubic(points.slice(0, splitPoint + 1), leftTangent, toCenterTangent, error, progressCallback)); + beziers = beziers.concat(fitCubic(points.slice(splitPoint), fromCenterTangent, rightTangent, error, progressCallback)); + return beziers; +} + +; + +function generateAndReport(points, paramsOrig, paramsPrime, leftTangent, rightTangent, progressCallback) { + var bezCurve, maxError, splitPoint; + bezCurve = generateBezier(points, paramsPrime, leftTangent, rightTangent, progressCallback); + [maxError, splitPoint] = computeMaxError(points, bezCurve, paramsOrig); + + if (progressCallback) { + progressCallback({ + bez: bezCurve, + points: points, + params: paramsOrig, + maxErr: maxError, + maxPoint: splitPoint + }); + } + + return [bezCurve, maxError, splitPoint]; +} + +function generateBezier(points, parameters, leftTangent, rightTangent) { + var bezCurve, + A, + a, + C, + X, + det_C0_C1, + det_C0_X, + det_X_C1, + alpha_l, + alpha_r, + epsilon, + segLength, + i, + len, + tmp, + u, + ux, + firstPoint = points[0], + lastPoint = points[points.length - 1]; + bezCurve = [firstPoint, null, null, lastPoint]; + A = maths.zeros_Xx2x2(parameters.length); + + for (i = 0, len = parameters.length; i < len; i++) { + u = parameters[i]; + ux = 1 - u; + a = A[i]; + a[0] = maths.mulItems(leftTangent, 3 * u * (ux * ux)); + a[1] = maths.mulItems(rightTangent, 3 * ux * (u * u)); + } + + C = [[0, 0], [0, 0]]; + X = [0, 0]; + + for (i = 0, len = points.length; i < len; i++) { + u = parameters[i]; + a = A[i]; + C[0][0] += maths.dot(a[0], a[0]); + C[0][1] += maths.dot(a[0], a[1]); + C[1][0] += maths.dot(a[0], a[1]); + C[1][1] += maths.dot(a[1], a[1]); + tmp = maths.subtract(points[i], bezier.q([firstPoint, firstPoint, lastPoint, lastPoint], u)); + X[0] += maths.dot(a[0], tmp); + X[1] += maths.dot(a[1], tmp); + } + + det_C0_C1 = C[0][0] * C[1][1] - C[1][0] * C[0][1]; + det_C0_X = C[0][0] * X[1] - C[1][0] * X[0]; + det_X_C1 = X[0] * C[1][1] - X[1] * C[0][1]; + alpha_l = det_C0_C1 === 0 ? 0 : det_X_C1 / det_C0_C1; + alpha_r = det_C0_C1 === 0 ? 0 : det_C0_X / det_C0_C1; + segLength = maths.vectorLen(maths.subtract(firstPoint, lastPoint)); + epsilon = 1.0e-6 * segLength; + + if (alpha_l < epsilon || alpha_r < epsilon) { + bezCurve[1] = maths.addArrays(firstPoint, maths.mulItems(leftTangent, segLength / 3.0)); + bezCurve[2] = maths.addArrays(lastPoint, maths.mulItems(rightTangent, segLength / 3.0)); + } else { + bezCurve[1] = maths.addArrays(firstPoint, maths.mulItems(leftTangent, alpha_l)); + bezCurve[2] = maths.addArrays(lastPoint, maths.mulItems(rightTangent, alpha_r)); + } + + return bezCurve; +} + +; + +function reparameterize(bezier, points, parameters) { + return parameters.map((p, i) => newtonRaphsonRootFind(bezier, points[i], p)); +} + +; + +function newtonRaphsonRootFind(bez, point, u) { + var d = maths.subtract(bezier.q(bez, u), point), + qprime = bezier.qprime(bez, u), + numerator = maths.mulMatrix(d, qprime), + denominator = maths.sum(maths.squareItems(qprime)) + 2 * maths.mulMatrix(d, bezier.qprimeprime(bez, u)); + + if (denominator === 0) { + return u; + } else { + return u - numerator / denominator; + } +} + +; + +function chordLengthParameterize(points) { + var u = [], + currU, + prevU, + prevP; + points.forEach((p, i) => { + currU = i ? prevU + maths.vectorLen(maths.subtract(p, prevP)) : 0; + u.push(currU); + prevU = currU; + prevP = p; + }); + u = u.map(x => x / prevU); + return u; +} + +; + +function computeMaxError(points, bez, parameters) { + var dist, maxDist, splitPoint, v, i, count, point, t; + maxDist = 0; + splitPoint = Math.floor(points.length / 2); + const t_distMap = mapTtoRelativeDistances(bez, 10); + + for (i = 0, count = points.length; i < count; i++) { + point = points[i]; + t = find_t(bez, parameters[i], t_distMap, 10); + v = maths.subtract(bezier.q(bez, t), point); + dist = v[0] * v[0] + v[1] * v[1]; + + if (dist > maxDist) { + maxDist = dist; + splitPoint = i; + } + } + + return [maxDist, splitPoint]; +} + +; + +var mapTtoRelativeDistances = function (bez, B_parts) { + var B_t_curr; + var B_t_dist = [0]; + var B_t_prev = bez[0]; + var sumLen = 0; + + for (var i = 1; i <= B_parts; i++) { + B_t_curr = bezier.q(bez, i / B_parts); + sumLen += maths.vectorLen(maths.subtract(B_t_curr, B_t_prev)); + B_t_dist.push(sumLen); + B_t_prev = B_t_curr; + } + + B_t_dist = B_t_dist.map(x => x / sumLen); + return B_t_dist; +}; + +function find_t(bez, param, t_distMap, B_parts) { + if (param < 0) { + return 0; + } + + if (param > 1) { + return 1; + } + + var lenMax, lenMin, tMax, tMin, t; + + for (var i = 1; i <= B_parts; i++) { + if (param <= t_distMap[i]) { + tMin = (i - 1) / B_parts; + tMax = i / B_parts; + lenMin = t_distMap[i - 1]; + lenMax = t_distMap[i]; + t = (param - lenMin) / (lenMax - lenMin) * (tMax - tMin) + tMin; + break; + } + } + + return t; +} + +function createTangent(pointA, pointB) { + return maths.normalize(maths.subtract(pointA, pointB)); +} + +class maths { + static zeros_Xx2x2(x) { + var zs = []; + + while (x--) { + zs.push([0, 0]); + } + + return zs; + } + + static mulItems(items, multiplier) { + return items.map(x => x * multiplier); + } + + static mulMatrix(m1, m2) { + return m1.reduce((sum, x1, i) => sum + x1 * m2[i], 0); + } + + static subtract(arr1, arr2) { + return arr1.map((x1, i) => x1 - arr2[i]); + } + + static addArrays(arr1, arr2) { + return arr1.map((x1, i) => x1 + arr2[i]); + } + + static addItems(items, addition) { + return items.map(x => x + addition); + } + + static sum(items) { + return items.reduce((sum, x) => sum + x); + } + + static dot(m1, m2) { + return maths.mulMatrix(m1, m2); + } + + static vectorLen(v) { + return Math.hypot(...v); + } + + static divItems(items, divisor) { + return items.map(x => x / divisor); + } + + static squareItems(items) { + return items.map(x => x * x); + } + + static normalize(v) { + return this.divItems(v, this.vectorLen(v)); + } + +} + +class bezier { + static q(ctrlPoly, t) { + var tx = 1.0 - t; + var pA = maths.mulItems(ctrlPoly[0], tx * tx * tx), + pB = maths.mulItems(ctrlPoly[1], 3 * tx * tx * t), + pC = maths.mulItems(ctrlPoly[2], 3 * tx * t * t), + pD = maths.mulItems(ctrlPoly[3], t * t * t); + return maths.addArrays(maths.addArrays(pA, pB), maths.addArrays(pC, pD)); + } + + static qprime(ctrlPoly, t) { + var tx = 1.0 - t; + var pA = maths.mulItems(maths.subtract(ctrlPoly[1], ctrlPoly[0]), 3 * tx * tx), + pB = maths.mulItems(maths.subtract(ctrlPoly[2], ctrlPoly[1]), 6 * tx * t), + pC = maths.mulItems(maths.subtract(ctrlPoly[3], ctrlPoly[2]), 3 * t * t); + return maths.addArrays(maths.addArrays(pA, pB), pC); + } + + static qprimeprime(ctrlPoly, t) { + return maths.addArrays(maths.mulItems(maths.addArrays(maths.subtract(ctrlPoly[2], maths.mulItems(ctrlPoly[1], 2)), ctrlPoly[0]), 6 * (1.0 - t)), maths.mulItems(maths.addArrays(maths.subtract(ctrlPoly[3], maths.mulItems(ctrlPoly[2], 2)), ctrlPoly[1]), 6 * t)); + } + +} + +module.exports = fitCurve; +module.exports.fitCubic = fitCubic; +module.exports.createTangent = createTangent; + +/***/ }), +/* 27 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationLayer = void 0; + +var _util = __w_pdfjs_require__(1); + +var _display_utils = __w_pdfjs_require__(8); + +var _annotation_storage = __w_pdfjs_require__(5); + +var _scripting_utils = __w_pdfjs_require__(28); + +var _xfa_layer = __w_pdfjs_require__(29); + +const DEFAULT_TAB_INDEX = 1000; +const DEFAULT_FONT_SIZE = 9; +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; + + switch (subtype) { + case _util.AnnotationType.LINK: + return new LinkAnnotationElement(parameters); + + case _util.AnnotationType.TEXT: + return new TextAnnotationElement(parameters); + + case _util.AnnotationType.WIDGET: + const fieldType = parameters.data.fieldType; + + switch (fieldType) { + case "Tx": + return new TextWidgetAnnotationElement(parameters); + + case "Btn": + if (parameters.data.radioButton) { + return new RadioButtonWidgetAnnotationElement(parameters); + } else if (parameters.data.checkBox) { + return new CheckboxWidgetAnnotationElement(parameters); + } + + return new PushButtonWidgetAnnotationElement(parameters); + + case "Ch": + return new ChoiceWidgetAnnotationElement(parameters); + } + + return new WidgetAnnotationElement(parameters); + + case _util.AnnotationType.POPUP: + return new PopupAnnotationElement(parameters); + + case _util.AnnotationType.FREETEXT: + return new FreeTextAnnotationElement(parameters); + + case _util.AnnotationType.LINE: + return new LineAnnotationElement(parameters); + + case _util.AnnotationType.SQUARE: + return new SquareAnnotationElement(parameters); + + case _util.AnnotationType.CIRCLE: + return new CircleAnnotationElement(parameters); + + case _util.AnnotationType.POLYLINE: + return new PolylineAnnotationElement(parameters); + + case _util.AnnotationType.CARET: + return new CaretAnnotationElement(parameters); + + case _util.AnnotationType.INK: + return new InkAnnotationElement(parameters); + + case _util.AnnotationType.POLYGON: + return new PolygonAnnotationElement(parameters); + + case _util.AnnotationType.HIGHLIGHT: + return new HighlightAnnotationElement(parameters); + + case _util.AnnotationType.UNDERLINE: + return new UnderlineAnnotationElement(parameters); + + case _util.AnnotationType.SQUIGGLY: + return new SquigglyAnnotationElement(parameters); + + case _util.AnnotationType.STRIKEOUT: + return new StrikeOutAnnotationElement(parameters); + + case _util.AnnotationType.STAMP: + return new StampAnnotationElement(parameters); + + case _util.AnnotationType.FILEATTACHMENT: + return new FileAttachmentAnnotationElement(parameters); + + default: + return new AnnotationElement(parameters); + } + } + +} + +class AnnotationElement { + constructor(parameters, { + isRenderable = false, + ignoreBorder = false, + createQuadrilaterals = false + } = {}) { + this.isRenderable = isRenderable; + this.data = parameters.data; + this.layer = parameters.layer; + this.page = parameters.page; + this.viewport = parameters.viewport; + this.linkService = parameters.linkService; + this.downloadManager = parameters.downloadManager; + this.imageResourcesPath = parameters.imageResourcesPath; + this.renderForms = parameters.renderForms; + this.svgFactory = parameters.svgFactory; + this.annotationStorage = parameters.annotationStorage; + this.enableScripting = parameters.enableScripting; + this.hasJSActions = parameters.hasJSActions; + this._fieldObjects = parameters.fieldObjects; + this._mouseState = parameters.mouseState; + + if (isRenderable) { + this.container = this._createContainer(ignoreBorder); + } + + if (createQuadrilaterals) { + this.quadrilaterals = this._createQuadrilaterals(ignoreBorder); + } + } + + _createContainer(ignoreBorder = false) { + const data = this.data, + page = this.page, + viewport = this.viewport; + const container = document.createElement("section"); + const { + width, + height + } = getRectDims(data.rect); + const [pageLLx, pageLLy, pageURx, pageURy] = viewport.viewBox; + const pageWidth = pageURx - pageLLx; + const pageHeight = pageURy - pageLLy; + 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]]); + + if (!ignoreBorder && data.borderStyle.width > 0) { + container.style.borderWidth = `${data.borderStyle.width}px`; + const horizontalRadius = data.borderStyle.horizontalCornerRadius; + const verticalRadius = data.borderStyle.verticalCornerRadius; + + if (horizontalRadius > 0 || verticalRadius > 0) { + const radius = `calc(${horizontalRadius}px * var(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`; + container.style.borderRadius = radius; + } else if (this instanceof RadioButtonWidgetAnnotationElement) { + const radius = `calc(${width}px * var(--scale-factor)) / calc(${height}px * var(--scale-factor))`; + container.style.borderRadius = radius; + } + + switch (data.borderStyle.style) { + case _util.AnnotationBorderStyleType.SOLID: + container.style.borderStyle = "solid"; + break; + + case _util.AnnotationBorderStyleType.DASHED: + container.style.borderStyle = "dashed"; + break; + + case _util.AnnotationBorderStyleType.BEVELED: + (0, _util.warn)("Unimplemented border style: beveled"); + break; + + case _util.AnnotationBorderStyleType.INSET: + (0, _util.warn)("Unimplemented border style: inset"); + break; + + case _util.AnnotationBorderStyleType.UNDERLINE: + container.style.borderBottomStyle = "solid"; + break; + + default: + break; + } + + const borderColor = data.borderColor || null; + + if (borderColor) { + container.style.borderColor = _util.Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0); + } else { + container.style.borderWidth = 0; + } + } + + container.style.left = `${100 * (rect[0] - pageLLx) / pageWidth}%`; + container.style.top = `${100 * (rect[1] - pageLLy) / pageHeight}%`; + const { + rotation + } = data; + + if (data.hasOwnCanvas || rotation === 0) { + container.style.width = `${100 * width / pageWidth}%`; + container.style.height = `${100 * height / pageHeight}%`; + } else { + this.setRotation(rotation, container); + } + + return container; + } + + setRotation(angle, container = this.container) { + const [pageLLx, pageLLy, pageURx, pageURy] = this.viewport.viewBox; + const pageWidth = pageURx - pageLLx; + const pageHeight = pageURy - pageLLy; + const { + width, + height + } = getRectDims(this.data.rect); + let elementWidth, elementHeight; + + if (angle % 180 === 0) { + elementWidth = 100 * width / pageWidth; + elementHeight = 100 * height / pageHeight; + } else { + elementWidth = 100 * height / pageWidth; + elementHeight = 100 * width / pageHeight; + } + + container.style.width = `${elementWidth}%`; + container.style.height = `${elementHeight}%`; + container.setAttribute("data-main-rotation", (360 - angle) % 360); + } + + get _commonActions() { + const setColor = (jsName, styleName, event) => { + const color = event.detail[jsName]; + event.target.style[styleName] = _scripting_utils.ColorConverters[`${color[0]}_HTML`](color.slice(1)); + }; + + return (0, _util.shadow)(this, "_commonActions", { + display: event => { + const hidden = event.detail.display % 2 === 1; + this.container.style.visibility = hidden ? "hidden" : "visible"; + this.annotationStorage.setValue(this.data.id, { + hidden, + print: event.detail.display === 0 || event.detail.display === 3 + }); + }, + print: event => { + this.annotationStorage.setValue(this.data.id, { + print: event.detail.print + }); + }, + hidden: event => { + this.container.style.visibility = event.detail.hidden ? "hidden" : "visible"; + this.annotationStorage.setValue(this.data.id, { + hidden: event.detail.hidden + }); + }, + focus: event => { + setTimeout(() => event.target.focus({ + preventScroll: false + }), 0); + }, + userName: event => { + event.target.title = event.detail.userName; + }, + readonly: event => { + if (event.detail.readonly) { + event.target.setAttribute("readonly", ""); + } else { + event.target.removeAttribute("readonly"); + } + }, + required: event => { + this._setRequired(event.target, event.detail.required); + }, + bgColor: event => { + setColor("bgColor", "backgroundColor", event); + }, + fillColor: event => { + setColor("fillColor", "backgroundColor", event); + }, + fgColor: event => { + setColor("fgColor", "color", event); + }, + textColor: event => { + setColor("textColor", "color", event); + }, + borderColor: event => { + setColor("borderColor", "borderColor", event); + }, + strokeColor: event => { + setColor("strokeColor", "borderColor", event); + }, + rotation: event => { + const angle = event.detail.rotation; + this.setRotation(angle); + this.annotationStorage.setValue(this.data.id, { + rotation: angle + }); + } + }); + } + + _dispatchEventFromSandbox(actions, jsEvent) { + const commonActions = this._commonActions; + + for (const name of Object.keys(jsEvent.detail)) { + const action = actions[name] || commonActions[name]; + + if (action) { + action(jsEvent); + } + } + } + + _setDefaultPropertiesFromJS(element) { + if (!this.enableScripting) { + return; + } + + const storedData = this.annotationStorage.getRawValue(this.data.id); + + if (!storedData) { + return; + } + + const commonActions = this._commonActions; + + for (const [actionName, detail] of Object.entries(storedData)) { + const action = commonActions[actionName]; + + if (action) { + const eventProxy = { + detail: { + [actionName]: detail + }, + target: element + }; + action(eventProxy); + delete storedData[actionName]; + } + } + } + + _createQuadrilaterals(ignoreBorder = false) { + if (!this.data.quadPoints) { + return null; + } + + const quadrilaterals = []; + const savedRect = this.data.rect; + + for (const quadPoint of this.data.quadPoints) { + this.data.rect = [quadPoint[2].x, quadPoint[2].y, quadPoint[1].x, quadPoint[1].y]; + quadrilaterals.push(this._createContainer(ignoreBorder)); + } + + this.data.rect = savedRect; + return quadrilaterals; + } + + _createPopup(trigger, data) { + let container = this.container; + + if (this.quadrilaterals) { + trigger = trigger || this.quadrilaterals; + container = this.quadrilaterals[0]; + } + + if (!trigger) { + trigger = document.createElement("div"); + trigger.className = "popupTriggerArea"; + container.append(trigger); + } + + const popupElement = new PopupElement({ + container, + trigger, + color: data.color, + titleObj: data.titleObj, + modificationDate: data.modificationDate, + contentsObj: data.contentsObj, + richText: data.richText, + hideWrapper: true + }); + const popup = popupElement.render(); + popup.style.left = "100%"; + container.append(popup); + } + + _renderQuadrilaterals(className) { + for (const quadrilateral of this.quadrilaterals) { + quadrilateral.className = className; + } + + return this.quadrilaterals; + } + + render() { + (0, _util.unreachable)("Abstract method `AnnotationElement.render` called"); + } + + _getElementsByName(name, skipId = null) { + const fields = []; + + if (this._fieldObjects) { + const fieldObj = this._fieldObjects[name]; + + if (fieldObj) { + for (const { + page, + id, + exportValues + } of fieldObj) { + if (page === -1) { continue; } - var key = attribute.name.substring(5).replace(/\-([a-z])/g, function (all, ch) { - return ch.toUpperCase(); + + if (id === skipId) { + continue; + } + + const exportValue = typeof exportValues === "string" ? exportValues : null; + const domElement = document.querySelector(`[data-element-id="${id}"]`); + + if (domElement && !GetElementsByNameSet.has(domElement)) { + (0, _util.warn)(`_getElementsByName - element not allowed: ${id}`); + continue; + } + + fields.push({ + id, + exportValue, + domElement }); - dataset[key] = attribute.value; } - Object.defineProperty(this, '_dataset', { - value: dataset, - writable: false, - enumerable: false - }); - return dataset; - }, + } - enumerable: true + return fields; + } + + for (const domElement of document.getElementsByName(name)) { + const { + id, + exportValue + } = domElement; + + if (id === skipId) { + continue; + } + + if (!GetElementsByNameSet.has(domElement)) { + continue; + } + + fields.push({ + id, + exportValue, + domElement + }); + } + + return fields; + } + + static get platform() { + const platform = typeof navigator !== "undefined" ? navigator.platform : ""; + return (0, _util.shadow)(this, "platform", { + isWin: platform.includes("Win"), + isMac: platform.includes("Mac") }); - })(); - (function checkClassListProperty() { - function changeList(element, itemName, add, remove) { - var s = element.className || ''; - var list = s.split(/\s+/g); - if (list[0] === '') { - list.shift(); + } + +} + +class LinkAnnotationElement extends AnnotationElement { + constructor(parameters, options = null) { + super(parameters, { + isRenderable: true, + ignoreBorder: !!options?.ignoreBorder, + createQuadrilaterals: true + }); + this.isTooltipOnly = parameters.data.isTooltipOnly; + } + + render() { + const { + data, + linkService + } = this; + const link = document.createElement("a"); + link.setAttribute("data-element-id", data.id); + let isBound = false; + + if (data.url) { + linkService.addLinkAttributes(link, data.url, data.newWindow); + isBound = true; + } else if (data.action) { + this._bindNamedAction(link, data.action); + + isBound = true; + } else if (data.dest) { + this._bindLink(link, data.dest); + + isBound = true; + } else { + if (data.actions && (data.actions.Action || data.actions["Mouse Up"] || data.actions["Mouse Down"]) && this.enableScripting && this.hasJSActions) { + this._bindJSAction(link, data); + + isBound = true; } - var index = list.indexOf(itemName); - if (index < 0 && add) { - list.push(itemName); + + if (data.resetForm) { + this._bindResetFormAction(link, data.resetForm); + + isBound = true; + } else if (this.isTooltipOnly && !isBound) { + this._bindLink(link, ""); + + isBound = true; } - if (index >= 0 && remove) { - list.splice(index, 1); - } - element.className = list.join(' '); - return index >= 0; } - if (!hasDOM) { - return; + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("linkAnnotation").map((quadrilateral, index) => { + const linkElement = index === 0 ? link : link.cloneNode(); + quadrilateral.append(linkElement); + return quadrilateral; + }); } - var div = document.createElement('div'); - if ('classList' in div) { - return; + + this.container.className = "linkAnnotation"; + + if (isBound) { + this.container.append(link); } - var classListPrototype = { - add: function add(name) { - changeList(this.element, name, true, false); - }, - contains: function contains(name) { - return changeList(this.element, name, false, false); - }, - remove: function remove(name) { - changeList(this.element, name, false, true); - }, - toggle: function toggle(name) { - changeList(this.element, name, true, true); + + return this.container; + } + + _bindLink(link, destination) { + link.href = this.linkService.getDestinationHash(destination); + + link.onclick = () => { + if (destination) { + this.linkService.goToDestination(destination); } + + return false; }; - Object.defineProperty(HTMLElement.prototype, 'classList', { - get: function get() { - if (this._classList) { - return this._classList; - } - var classList = Object.create(classListPrototype, { - element: { - value: this, - writable: false, - enumerable: true + + if (destination || destination === "") { + link.className = "internalLink"; + } + } + + _bindNamedAction(link, action) { + link.href = this.linkService.getAnchorUrl(""); + + link.onclick = () => { + this.linkService.executeNamedAction(action); + return false; + }; + + link.className = "internalLink"; + } + + _bindJSAction(link, data) { + link.href = this.linkService.getAnchorUrl(""); + const map = new Map([["Action", "onclick"], ["Mouse Up", "onmouseup"], ["Mouse Down", "onmousedown"]]); + + for (const name of Object.keys(data.actions)) { + const jsName = map.get(name); + + if (!jsName) { + continue; + } + + link[jsName] = () => { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: data.id, + name } }); - Object.defineProperty(this, '_classList', { - value: classList, - writable: false, - enumerable: false - }); - return classList; - }, - - enumerable: true - }); - })(); - (function checkWorkerConsoleCompatibility() { - if (typeof importScripts === 'undefined' || 'console' in globalScope) { - return; - } - var consoleTimer = {}; - var workerConsole = { - log: function log() { - var args = Array.prototype.slice.call(arguments); - globalScope.postMessage({ - targetName: 'main', - action: 'console_log', - data: args - }); - }, - error: function error() { - var args = Array.prototype.slice.call(arguments); - globalScope.postMessage({ - targetName: 'main', - action: 'console_error', - data: args - }); - }, - time: function time(name) { - consoleTimer[name] = Date.now(); - }, - timeEnd: function timeEnd(name) { - var time = consoleTimer[name]; - if (!time) { - throw new Error('Unknown timer name ' + name); - } - this.log('Timer:', name, Date.now() - time); - } - }; - globalScope.console = workerConsole; - })(); - (function checkConsoleCompatibility() { - if (!hasDOM) { - return; - } - if (!('console' in window)) { - window.console = { - log: function log() {}, - error: function error() {}, - warn: function warn() {} + return false; }; + } + + if (!link.onclick) { + link.onclick = () => false; + } + + link.className = "internalLink"; + } + + _bindResetFormAction(link, resetForm) { + const otherClickAction = link.onclick; + + if (!otherClickAction) { + link.href = this.linkService.getAnchorUrl(""); + } + + link.className = "internalLink"; + + if (!this._fieldObjects) { + (0, _util.warn)(`_bindResetFormAction - "resetForm" action not supported, ` + "ensure that the `fieldObjects` parameter is provided."); + + if (!otherClickAction) { + link.onclick = () => false; + } + return; } - if (!('bind' in console.log)) { - console.log = function (fn) { - return function (msg) { - return fn(msg); - }; - }(console.log); - console.error = function (fn) { - return function (msg) { - return fn(msg); - }; - }(console.error); - console.warn = function (fn) { - return function (msg) { - return fn(msg); - }; - }(console.warn); - return; + + link.onclick = () => { + if (otherClickAction) { + otherClickAction(); + } + + const { + fields: resetFormFields, + refs: resetFormRefs, + include + } = resetForm; + const allFields = []; + + if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) { + const fieldIds = new Set(resetFormRefs); + + for (const fieldName of resetFormFields) { + const fields = this._fieldObjects[fieldName] || []; + + for (const { + id + } of fields) { + fieldIds.add(id); + } + } + + for (const fields of Object.values(this._fieldObjects)) { + for (const field of fields) { + if (fieldIds.has(field.id) === include) { + allFields.push(field); + } + } + } + } else { + for (const fields of Object.values(this._fieldObjects)) { + allFields.push(...fields); + } + } + + const storage = this.annotationStorage; + const allIds = []; + + for (const field of allFields) { + const { + id + } = field; + allIds.push(id); + + switch (field.type) { + case "text": + { + const value = field.defaultValue || ""; + storage.setValue(id, { + value + }); + break; + } + + case "checkbox": + case "radiobutton": + { + const value = field.defaultValue === field.exportValues; + storage.setValue(id, { + value + }); + break; + } + + case "combobox": + case "listbox": + { + const value = field.defaultValue || ""; + storage.setValue(id, { + value + }); + break; + } + + default: + continue; + } + + const domElement = document.querySelector(`[data-element-id="${id}"]`); + + if (!domElement) { + continue; + } else if (!GetElementsByNameSet.has(domElement)) { + (0, _util.warn)(`_bindResetFormAction - element not allowed: ${id}`); + continue; + } + + domElement.dispatchEvent(new Event("resetform")); + } + + if (this.enableScripting) { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: "app", + ids: allIds, + name: "ResetForm" + } + }); + } + + return false; + }; + } + +} + +class TextAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable + }); + } + + render() { + this.container.className = "textAnnotation"; + const image = document.createElement("img"); + image.src = this.imageResourcesPath + "annotation-" + this.data.name.toLowerCase() + ".svg"; + image.alt = "[{{type}} Annotation]"; + image.dataset.l10nId = "text_annotation_type"; + image.dataset.l10nArgs = JSON.stringify({ + type: this.data.name + }); + + if (!this.data.hasPopup) { + this._createPopup(image, this.data); } - })(); - (function checkOnClickCompatibility() { - function ignoreIfTargetDisabled(event) { - if (isDisabled(event.target)) { - event.stopPropagation(); + + this.container.append(image); + return this.container; + } + +} + +class WidgetAnnotationElement extends AnnotationElement { + render() { + if (this.data.alternativeText) { + this.container.title = this.data.alternativeText; + } + + return this.container; + } + + _getKeyModifier(event) { + const { + isWin, + isMac + } = AnnotationElement.platform; + return isWin && event.ctrlKey || isMac && event.metaKey; + } + + _setEventListener(element, baseName, eventName, valueGetter) { + if (baseName.includes("mouse")) { + element.addEventListener(baseName, event => { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: this.data.id, + name: eventName, + value: valueGetter(event), + shift: event.shiftKey, + modifier: this._getKeyModifier(event) + } + }); + }); + } else { + element.addEventListener(baseName, event => { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: this.data.id, + name: eventName, + value: valueGetter(event) + } + }); + }); + } + } + + _setEventListeners(element, names, getter) { + for (const [baseName, eventName] of names) { + if (eventName === "Action" || this.data.actions?.[eventName]) { + this._setEventListener(element, baseName, eventName, getter); } } - function isDisabled(node) { - return node.disabled || node.parentNode && isDisabled(node.parentNode); + } + + _setBackgroundColor(element) { + const color = this.data.backgroundColor || null; + element.style.backgroundColor = color === null ? "transparent" : _util.Util.makeHexColor(color[0], color[1], color[2]); + } + + _setTextStyle(element) { + const TEXT_ALIGNMENT = ["left", "center", "right"]; + const { + fontColor + } = this.data.defaultAppearanceData; + const fontSize = this.data.defaultAppearanceData.fontSize || DEFAULT_FONT_SIZE; + const style = element.style; + let computedFontSize; + + if (this.data.multiLine) { + const height = Math.abs(this.data.rect[3] - this.data.rect[1]); + const numberOfLines = Math.round(height / (_util.LINE_FACTOR * fontSize)) || 1; + const lineHeight = height / numberOfLines; + computedFontSize = Math.min(fontSize, Math.round(lineHeight / _util.LINE_FACTOR)); + } else { + const height = Math.abs(this.data.rect[3] - this.data.rect[1]); + computedFontSize = Math.min(fontSize, Math.round(height / _util.LINE_FACTOR)); } - if (isOpera) { - document.addEventListener('click', ignoreIfTargetDisabled, true); + + style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`; + style.color = _util.Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]); + + if (this.data.textAlignment !== null) { + style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment]; } - })(); - (function checkOnBlobSupport() { - if (isIE || isIOSChrome) { - PDFJS.disableCreateObjectURL = true; + } + + _setRequired(element, isRequired) { + if (isRequired) { + element.setAttribute("required", true); + } else { + element.removeAttribute("required"); } - })(); - (function checkNavigatorLanguage() { - if (typeof navigator === 'undefined') { - return; + + element.setAttribute("aria-required", isRequired); + } + +} + +class TextWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + const isRenderable = parameters.renderForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue; + super(parameters, { + isRenderable + }); + } + + setPropertyOnSiblings(base, key, value, keyInStorage) { + const storage = this.annotationStorage; + + for (const element of this._getElementsByName(base.name, base.id)) { + if (element.domElement) { + element.domElement[key] = value; + } + + storage.setValue(element.id, { + [keyInStorage]: value + }); } - if ('language' in navigator) { - return; - } - PDFJS.locale = navigator.userLanguage || 'en-US'; - })(); - (function checkRangeRequests() { - if (isSafari || isAndroidPre3 || isChromeWithRangeBug || isIOS) { - PDFJS.disableRange = true; - PDFJS.disableStream = true; - } - })(); - (function checkHistoryManipulation() { - if (!hasDOM) { - return; - } - if (!history.pushState || isAndroidPre3) { - PDFJS.disableHistory = true; - } - })(); - (function checkSetPresenceInImageData() { - if (!hasDOM) { - return; - } - if (window.CanvasPixelArray) { - if (typeof window.CanvasPixelArray.prototype.set !== 'function') { - window.CanvasPixelArray.prototype.set = function (arr) { - for (var i = 0, ii = this.length; i < ii; i++) { - this[i] = arr[i]; + } + + render() { + const storage = this.annotationStorage; + const id = this.data.id; + this.container.className = "textWidgetAnnotation"; + let element = null; + + if (this.renderForms) { + const storedData = storage.getValue(id, { + value: this.data.fieldValue + }); + let textContent = storedData.formattedValue || storedData.value || ""; + const maxLen = storage.getValue(id, { + charLimit: this.data.maxLen + }).charLimit; + + if (maxLen && textContent.length > maxLen) { + textContent = textContent.slice(0, maxLen); + } + + const elementData = { + userValue: textContent, + formattedValue: null, + valueOnFocus: "" + }; + + if (this.data.multiLine) { + element = document.createElement("textarea"); + element.textContent = textContent; + + if (this.data.doNotScroll) { + element.style.overflowY = "hidden"; + } + } else { + element = document.createElement("input"); + element.type = "text"; + element.setAttribute("value", textContent); + + if (this.data.doNotScroll) { + element.style.overflowX = "hidden"; + } + } + + GetElementsByNameSet.add(element); + element.setAttribute("data-element-id", id); + element.disabled = this.data.readOnly; + element.name = this.data.fieldName; + element.tabIndex = DEFAULT_TAB_INDEX; + + this._setRequired(element, this.data.required); + + if (maxLen) { + element.maxLength = maxLen; + } + + element.addEventListener("input", event => { + storage.setValue(id, { + value: event.target.value + }); + this.setPropertyOnSiblings(element, "value", event.target.value, "value"); + }); + element.addEventListener("resetform", event => { + const defaultValue = this.data.defaultFieldValue ?? ""; + element.value = elementData.userValue = defaultValue; + elementData.formattedValue = null; + }); + + let blurListener = event => { + const { + formattedValue + } = elementData; + + if (formattedValue !== null && formattedValue !== undefined) { + event.target.value = formattedValue; + } + + event.target.scrollLeft = 0; + }; + + if (this.enableScripting && this.hasJSActions) { + element.addEventListener("focus", event => { + if (elementData.userValue) { + event.target.value = elementData.userValue; } - }; + + elementData.valueOnFocus = event.target.value; + }); + element.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value(event) { + elementData.userValue = event.detail.value ?? ""; + storage.setValue(id, { + value: elementData.userValue.toString() + }); + event.target.value = elementData.userValue; + }, + + formattedValue(event) { + const { + formattedValue + } = event.detail; + elementData.formattedValue = formattedValue; + + if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) { + event.target.value = formattedValue; + } + + storage.setValue(id, { + formattedValue + }); + }, + + selRange(event) { + event.target.setSelectionRange(...event.detail.selRange); + }, + + charLimit: event => { + const { + charLimit + } = event.detail; + const { + target + } = event; + + if (charLimit === 0) { + target.removeAttribute("maxLength"); + return; + } + + target.setAttribute("maxLength", charLimit); + let value = elementData.userValue; + + if (!value || value.length <= charLimit) { + return; + } + + value = value.slice(0, charLimit); + target.value = elementData.userValue = value; + storage.setValue(id, { + value + }); + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + willCommit: true, + commitKey: 1, + selStart: target.selectionStart, + selEnd: target.selectionEnd + } + }); + } + }; + + this._dispatchEventFromSandbox(actions, jsEvent); + }); + element.addEventListener("keydown", event => { + let commitKey = -1; + + if (event.key === "Escape") { + commitKey = 0; + } else if (event.key === "Enter") { + commitKey = 2; + } else if (event.key === "Tab") { + commitKey = 3; + } + + if (commitKey === -1) { + return; + } + + const { + value + } = event.target; + + if (elementData.valueOnFocus === value) { + return; + } + + elementData.userValue = value; + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + willCommit: true, + commitKey, + selStart: event.target.selectionStart, + selEnd: event.target.selectionEnd + } + }); + }); + const _blurListener = blurListener; + blurListener = null; + element.addEventListener("blur", event => { + const { + value + } = event.target; + elementData.userValue = value; + + if (this._mouseState.isDown && elementData.valueOnFocus !== value) { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + willCommit: true, + commitKey: 1, + selStart: event.target.selectionStart, + selEnd: event.target.selectionEnd + } + }); + } + + _blurListener(event); + }); + + if (this.data.actions?.Keystroke) { + element.addEventListener("beforeinput", event => { + const { + data, + target + } = event; + const { + value, + selectionStart, + selectionEnd + } = target; + let selStart = selectionStart, + selEnd = selectionEnd; + + switch (event.inputType) { + case "deleteWordBackward": + { + const match = value.substring(0, selectionStart).match(/\w*[^\w]*$/); + + if (match) { + selStart -= match[0].length; + } + + break; + } + + case "deleteWordForward": + { + const match = value.substring(selectionStart).match(/^[^\w]*\w*/); + + if (match) { + selEnd += match[0].length; + } + + break; + } + + case "deleteContentBackward": + if (selectionStart === selectionEnd) { + selStart -= 1; + } + + break; + + case "deleteContentForward": + if (selectionStart === selectionEnd) { + selEnd += 1; + } + + break; + } + + event.preventDefault(); + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + change: data || "", + willCommit: false, + selStart, + selEnd + } + }); + }); + } + + this._setEventListeners(element, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.value); + } + + if (blurListener) { + element.addEventListener("blur", blurListener); + } + + if (this.data.comb) { + const fieldWidth = this.data.rect[2] - this.data.rect[0]; + const combWidth = fieldWidth / maxLen; + element.classList.add("comb"); + element.style.letterSpacing = `calc(${combWidth}px * var(--scale-factor) - 1ch)`; } } else { - var polyfill = false, - versionMatch; - if (isChrome) { - versionMatch = userAgent.match(/Chrom(e|ium)\/([0-9]+)\./); - polyfill = versionMatch && parseInt(versionMatch[2]) < 21; - } else if (isAndroid) { - polyfill = isAndroidPre5; - } else if (isSafari) { - versionMatch = userAgent.match(/Version\/([0-9]+)\.([0-9]+)\.([0-9]+) Safari\//); - polyfill = versionMatch && parseInt(versionMatch[1]) < 6; - } - if (polyfill) { - var contextPrototype = window.CanvasRenderingContext2D.prototype; - var createImageData = contextPrototype.createImageData; - contextPrototype.createImageData = function (w, h) { - var imageData = createImageData.call(this, w, h); - imageData.data.set = function (arr) { - for (var i = 0, ii = this.length; i < ii; i++) { - this[i] = arr[i]; - } - }; - return imageData; - }; - contextPrototype = null; - } + element = document.createElement("div"); + element.textContent = this.data.fieldValue; + element.style.verticalAlign = "middle"; + element.style.display = "table-cell"; } - })(); - (function checkRequestAnimationFrame() { - function installFakeAnimationFrameFunctions() { - window.requestAnimationFrame = function (callback) { - return window.setTimeout(callback, 20); - }; - window.cancelAnimationFrame = function (timeoutID) { - window.clearTimeout(timeoutID); - }; - } - if (!hasDOM) { - return; - } - if (isIOS) { - installFakeAnimationFrameFunctions(); - return; - } - if ('requestAnimationFrame' in window) { - return; - } - window.requestAnimationFrame = window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame; - if (window.requestAnimationFrame) { - return; - } - installFakeAnimationFrameFunctions(); - })(); - (function checkCanvasSizeLimitation() { - if (isIOS || isAndroid) { - PDFJS.maxCanvasPixels = 5242880; - } - })(); - (function checkFullscreenSupport() { - if (!hasDOM) { - return; - } - if (isIE && window.parent !== window) { - PDFJS.disableFullscreen = true; - } - })(); - (function checkCurrentScript() { - if (!hasDOM) { - return; - } - if ('currentScript' in document) { - return; - } - Object.defineProperty(document, 'currentScript', { - get: function get() { - var scripts = document.getElementsByTagName('script'); - return scripts[scripts.length - 1]; - }, - enumerable: true, - configurable: true + this._setTextStyle(element); + + this._setBackgroundColor(element); + + this._setDefaultPropertiesFromJS(element); + + this.container.append(element); + return this.container; + } + +} + +class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: parameters.renderForms }); - })(); - (function checkInputTypeNumberAssign() { - if (!hasDOM) { - return; - } - var el = document.createElement('input'); - try { - el.type = 'number'; - } catch (ex) { - var inputProto = el.constructor.prototype; - var typeProperty = Object.getOwnPropertyDescriptor(inputProto, 'type'); - Object.defineProperty(inputProto, 'type', { - get: function get() { - return typeProperty.get.call(this); - }, - set: function set(value) { - typeProperty.set.call(this, value === 'number' ? 'text' : value); - }, + } - enumerable: true, - configurable: true + render() { + const storage = this.annotationStorage; + const data = this.data; + const id = data.id; + let value = storage.getValue(id, { + value: data.exportValue === data.fieldValue + }).value; + + if (typeof value === "string") { + value = value !== "Off"; + storage.setValue(id, { + value }); } - })(); - (function checkDocumentReadyState() { - if (!hasDOM) { - return; - } - if (!document.attachEvent) { - return; - } - var documentProto = document.constructor.prototype; - var readyStateProto = Object.getOwnPropertyDescriptor(documentProto, 'readyState'); - Object.defineProperty(documentProto, 'readyState', { - get: function get() { - var value = readyStateProto.get.call(this); - return value === 'interactive' ? 'loading' : value; - }, - set: function set(value) { - readyStateProto.set.call(this, value); - }, - enumerable: true, - configurable: true - }); - })(); - (function checkChildNodeRemove() { - if (!hasDOM) { - return; + this.container.className = "buttonWidgetAnnotation checkBox"; + const element = document.createElement("input"); + GetElementsByNameSet.add(element); + element.setAttribute("data-element-id", id); + element.disabled = data.readOnly; + + this._setRequired(element, this.data.required); + + element.type = "checkbox"; + element.name = data.fieldName; + + if (value) { + element.setAttribute("checked", true); } - if (typeof Element.prototype.remove !== 'undefined') { - return; - } - Element.prototype.remove = function () { - if (this.parentNode) { - this.parentNode.removeChild(this); - } - }; - })(); - (function checkNumberIsNaN() { - if (Number.isNaN) { - return; - } - Number.isNaN = function (value) { - return typeof value === 'number' && isNaN(value); - }; - })(); - (function checkNumberIsInteger() { - if (Number.isInteger) { - return; - } - Number.isInteger = function (value) { - return typeof value === 'number' && isFinite(value) && Math.floor(value) === value; - }; - })(); - (function checkPromise() { - if (globalScope.Promise) { - if (typeof globalScope.Promise.all !== 'function') { - globalScope.Promise.all = function (iterable) { - var count = 0, - results = [], - resolve, - reject; - var promise = new globalScope.Promise(function (resolve_, reject_) { - resolve = resolve_; - reject = reject_; - }); - iterable.forEach(function (p, i) { - count++; - p.then(function (result) { - results[i] = result; - count--; - if (count === 0) { - resolve(results); - } - }, reject); - }); - if (count === 0) { - resolve(results); - } - return promise; - }; - } - if (typeof globalScope.Promise.resolve !== 'function') { - globalScope.Promise.resolve = function (value) { - return new globalScope.Promise(function (resolve) { - resolve(value); - }); - }; - } - if (typeof globalScope.Promise.reject !== 'function') { - globalScope.Promise.reject = function (reason) { - return new globalScope.Promise(function (resolve, reject) { - reject(reason); - }); - }; - } - if (typeof globalScope.Promise.prototype.catch !== 'function') { - globalScope.Promise.prototype.catch = function (onReject) { - return globalScope.Promise.prototype.then(undefined, onReject); - }; - } - return; - } - var STATUS_PENDING = 0; - var STATUS_RESOLVED = 1; - var STATUS_REJECTED = 2; - var REJECTION_TIMEOUT = 500; - var HandlerManager = { - handlers: [], - running: false, - unhandledRejections: [], - pendingRejectionCheck: false, - scheduleHandlers: function scheduleHandlers(promise) { - if (promise._status === STATUS_PENDING) { - return; + + element.setAttribute("exportValue", data.exportValue); + element.tabIndex = DEFAULT_TAB_INDEX; + element.addEventListener("change", event => { + const { + name, + checked + } = event.target; + + for (const checkbox of this._getElementsByName(name, id)) { + const curChecked = checked && checkbox.exportValue === data.exportValue; + + if (checkbox.domElement) { + checkbox.domElement.checked = curChecked; } - this.handlers = this.handlers.concat(promise._handlers); - promise._handlers = []; - if (this.running) { - return; - } - this.running = true; - setTimeout(this.runHandlers.bind(this), 0); - }, - runHandlers: function runHandlers() { - var RUN_TIMEOUT = 1; - var timeoutAt = Date.now() + RUN_TIMEOUT; - while (this.handlers.length > 0) { - var handler = this.handlers.shift(); - var nextStatus = handler.thisPromise._status; - var nextValue = handler.thisPromise._value; - try { - if (nextStatus === STATUS_RESOLVED) { - if (typeof handler.onResolve === 'function') { - nextValue = handler.onResolve(nextValue); - } - } else if (typeof handler.onReject === 'function') { - nextValue = handler.onReject(nextValue); - nextStatus = STATUS_RESOLVED; - if (handler.thisPromise._unhandledRejection) { - this.removeUnhandeledRejection(handler.thisPromise); - } - } - } catch (ex) { - nextStatus = STATUS_REJECTED; - nextValue = ex; - } - handler.nextPromise._updateStatus(nextStatus, nextValue); - if (Date.now() >= timeoutAt) { - break; - } - } - if (this.handlers.length > 0) { - setTimeout(this.runHandlers.bind(this), 0); - return; - } - this.running = false; - }, - addUnhandledRejection: function addUnhandledRejection(promise) { - this.unhandledRejections.push({ - promise: promise, - time: Date.now() + + storage.setValue(checkbox.id, { + value: curChecked }); - this.scheduleRejectionCheck(); - }, - removeUnhandeledRejection: function removeUnhandeledRejection(promise) { - promise._unhandledRejection = false; - for (var i = 0; i < this.unhandledRejections.length; i++) { - if (this.unhandledRejections[i].promise === promise) { - this.unhandledRejections.splice(i); - i--; - } - } - }, - scheduleRejectionCheck: function scheduleRejectionCheck() { - var _this = this; + } - if (this.pendingRejectionCheck) { - return; - } - this.pendingRejectionCheck = true; - setTimeout(function () { - _this.pendingRejectionCheck = false; - var now = Date.now(); - for (var i = 0; i < _this.unhandledRejections.length; i++) { - if (now - _this.unhandledRejections[i].time > REJECTION_TIMEOUT) { - var unhandled = _this.unhandledRejections[i].promise._value; - var msg = 'Unhandled rejection: ' + unhandled; - if (unhandled.stack) { - msg += '\n' + unhandled.stack; - } - try { - throw new Error(msg); - } catch (_) { - console.warn(msg); - } - _this.unhandledRejections.splice(i); - i--; - } - } - if (_this.unhandledRejections.length) { - _this.scheduleRejectionCheck(); - } - }, REJECTION_TIMEOUT); - } - }; - var Promise = function Promise(resolver) { - this._status = STATUS_PENDING; - this._handlers = []; - try { - resolver.call(this, this._resolve.bind(this), this._reject.bind(this)); - } catch (e) { - this._reject(e); - } - }; - Promise.all = function Promise_all(promises) { - var resolveAll, rejectAll; - var deferred = new Promise(function (resolve, reject) { - resolveAll = resolve; - rejectAll = reject; + storage.setValue(id, { + value: checked }); - var unresolved = promises.length; - var results = []; - if (unresolved === 0) { - resolveAll(results); - return deferred; + }); + element.addEventListener("resetform", event => { + const defaultValue = data.defaultFieldValue || "Off"; + event.target.checked = defaultValue === data.exportValue; + }); + + if (this.enableScripting && this.hasJSActions) { + element.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value(event) { + event.target.checked = event.detail.value !== "Off"; + storage.setValue(id, { + value: event.target.checked + }); + } + + }; + + this._dispatchEventFromSandbox(actions, jsEvent); + }); + + this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.checked); + } + + this._setBackgroundColor(element); + + this._setDefaultPropertiesFromJS(element); + + this.container.append(element); + return this.container; + } + +} + +class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: parameters.renderForms + }); + } + + render() { + this.container.className = "buttonWidgetAnnotation radioButton"; + const storage = this.annotationStorage; + const data = this.data; + const id = data.id; + let value = storage.getValue(id, { + value: data.fieldValue === data.buttonValue + }).value; + + if (typeof value === "string") { + value = value !== data.buttonValue; + storage.setValue(id, { + value + }); + } + + const element = document.createElement("input"); + GetElementsByNameSet.add(element); + element.setAttribute("data-element-id", id); + element.disabled = data.readOnly; + + this._setRequired(element, this.data.required); + + element.type = "radio"; + element.name = data.fieldName; + + if (value) { + element.setAttribute("checked", true); + } + + element.tabIndex = DEFAULT_TAB_INDEX; + element.addEventListener("change", event => { + const { + name, + checked + } = event.target; + + for (const radio of this._getElementsByName(name, id)) { + storage.setValue(radio.id, { + value: false + }); } - function reject(reason) { - if (deferred._status === STATUS_REJECTED) { - return; + + storage.setValue(id, { + value: checked + }); + }); + element.addEventListener("resetform", event => { + const defaultValue = data.defaultFieldValue; + event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue; + }); + + if (this.enableScripting && this.hasJSActions) { + const pdfButtonValue = data.buttonValue; + element.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value: event => { + const checked = pdfButtonValue === event.detail.value; + + for (const radio of this._getElementsByName(event.target.name)) { + const curChecked = checked && radio.id === id; + + if (radio.domElement) { + radio.domElement.checked = curChecked; + } + + storage.setValue(radio.id, { + value: curChecked + }); + } + } + }; + + this._dispatchEventFromSandbox(actions, jsEvent); + }); + + this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.checked); + } + + this._setBackgroundColor(element); + + this._setDefaultPropertiesFromJS(element); + + this.container.append(element); + return this.container; + } + +} + +class PushButtonWidgetAnnotationElement extends LinkAnnotationElement { + constructor(parameters) { + super(parameters, { + ignoreBorder: parameters.data.hasAppearance + }); + } + + render() { + const container = super.render(); + container.className = "buttonWidgetAnnotation pushButton"; + + if (this.data.alternativeText) { + container.title = this.data.alternativeText; + } + + const linkElement = container.lastChild; + + if (this.enableScripting && this.hasJSActions && linkElement) { + this._setDefaultPropertiesFromJS(linkElement); + + linkElement.addEventListener("updatefromsandbox", jsEvent => { + this._dispatchEventFromSandbox({}, jsEvent); + }); + } + + return container; + } + +} + +class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: parameters.renderForms + }); + } + + render() { + this.container.className = "choiceWidgetAnnotation"; + const storage = this.annotationStorage; + const id = this.data.id; + const storedData = storage.getValue(id, { + value: this.data.fieldValue + }); + const selectElement = document.createElement("select"); + GetElementsByNameSet.add(selectElement); + selectElement.setAttribute("data-element-id", id); + selectElement.disabled = this.data.readOnly; + + this._setRequired(selectElement, this.data.required); + + selectElement.name = this.data.fieldName; + selectElement.tabIndex = DEFAULT_TAB_INDEX; + let addAnEmptyEntry = this.data.combo && this.data.options.length > 0; + + if (!this.data.combo) { + selectElement.size = this.data.options.length; + + if (this.data.multiSelect) { + selectElement.multiple = true; + } + } + + selectElement.addEventListener("resetform", event => { + const defaultValue = this.data.defaultFieldValue; + + for (const option of selectElement.options) { + option.selected = option.value === defaultValue; + } + }); + + for (const option of this.data.options) { + const optionElement = document.createElement("option"); + optionElement.textContent = option.displayValue; + optionElement.value = option.exportValue; + + if (storedData.value.includes(option.exportValue)) { + optionElement.setAttribute("selected", true); + addAnEmptyEntry = false; + } + + selectElement.append(optionElement); + } + + let removeEmptyEntry = null; + + if (addAnEmptyEntry) { + const noneOptionElement = document.createElement("option"); + noneOptionElement.value = " "; + noneOptionElement.setAttribute("hidden", true); + noneOptionElement.setAttribute("selected", true); + selectElement.prepend(noneOptionElement); + + removeEmptyEntry = () => { + noneOptionElement.remove(); + selectElement.removeEventListener("input", removeEmptyEntry); + removeEmptyEntry = null; + }; + + selectElement.addEventListener("input", removeEmptyEntry); + } + + const getValue = (event, isExport) => { + const name = isExport ? "value" : "textContent"; + const options = event.target.options; + + if (!event.target.multiple) { + return options.selectedIndex === -1 ? null : options[options.selectedIndex][name]; + } + + return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]); + }; + + const getItems = event => { + const options = event.target.options; + return Array.prototype.map.call(options, option => { + return { + displayValue: option.textContent, + exportValue: option.value + }; + }); + }; + + if (this.enableScripting && this.hasJSActions) { + selectElement.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value(event) { + removeEmptyEntry?.(); + const value = event.detail.value; + const values = new Set(Array.isArray(value) ? value : [value]); + + for (const option of selectElement.options) { + option.selected = values.has(option.value); + } + + storage.setValue(id, { + value: getValue(event, true) + }); + }, + + multipleSelection(event) { + selectElement.multiple = true; + }, + + remove(event) { + const options = selectElement.options; + const index = event.detail.remove; + options[index].selected = false; + selectElement.remove(index); + + if (options.length > 0) { + const i = Array.prototype.findIndex.call(options, option => option.selected); + + if (i === -1) { + options[0].selected = true; + } + } + + storage.setValue(id, { + value: getValue(event, true), + items: getItems(event) + }); + }, + + clear(event) { + while (selectElement.length !== 0) { + selectElement.remove(0); + } + + storage.setValue(id, { + value: null, + items: [] + }); + }, + + insert(event) { + const { + index, + displayValue, + exportValue + } = event.detail.insert; + const selectChild = selectElement.children[index]; + const optionElement = document.createElement("option"); + optionElement.textContent = displayValue; + optionElement.value = exportValue; + + if (selectChild) { + selectChild.before(optionElement); + } else { + selectElement.append(optionElement); + } + + storage.setValue(id, { + value: getValue(event, true), + items: getItems(event) + }); + }, + + items(event) { + const { + items + } = event.detail; + + while (selectElement.length !== 0) { + selectElement.remove(0); + } + + for (const item of items) { + const { + displayValue, + exportValue + } = item; + const optionElement = document.createElement("option"); + optionElement.textContent = displayValue; + optionElement.value = exportValue; + selectElement.append(optionElement); + } + + if (selectElement.options.length > 0) { + selectElement.options[0].selected = true; + } + + storage.setValue(id, { + value: getValue(event, true), + items: getItems(event) + }); + }, + + indices(event) { + const indices = new Set(event.detail.indices); + + for (const option of event.target.options) { + option.selected = indices.has(option.index); + } + + storage.setValue(id, { + value: getValue(event, true) + }); + }, + + editable(event) { + event.target.disabled = !event.detail.editable; + } + + }; + + this._dispatchEventFromSandbox(actions, jsEvent); + }); + selectElement.addEventListener("input", event => { + const exportValue = getValue(event, true); + const value = getValue(event, false); + storage.setValue(id, { + value: exportValue + }); + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + changeEx: exportValue, + willCommit: true, + commitKey: 1, + keyDown: false + } + }); + }); + + this._setEventListeners(selectElement, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"], ["input", "Action"]], event => event.target.checked); + } else { + selectElement.addEventListener("input", function (event) { + storage.setValue(id, { + value: getValue(event, true) + }); + }); + } + + if (this.data.combo) { + this._setTextStyle(selectElement); + } else {} + + this._setBackgroundColor(selectElement); + + this._setDefaultPropertiesFromJS(selectElement); + + this.container.append(selectElement); + return this.container; + } + +} + +class PopupAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable + }); + } + + render() { + const IGNORE_TYPES = ["Line", "Square", "Circle", "PolyLine", "Polygon", "Ink"]; + this.container.className = "popupAnnotation"; + + if (IGNORE_TYPES.includes(this.data.parentType)) { + return this.container; + } + + const selector = `[data-annotation-id="${this.data.parentId}"]`; + const parentElements = this.layer.querySelectorAll(selector); + + if (parentElements.length === 0) { + return this.container; + } + + const popup = new PopupElement({ + container: this.container, + trigger: Array.from(parentElements), + color: this.data.color, + titleObj: this.data.titleObj, + modificationDate: this.data.modificationDate, + contentsObj: this.data.contentsObj, + richText: this.data.richText + }); + const page = this.page; + + const rect = _util.Util.normalizeRect([this.data.parentRect[0], page.view[3] - this.data.parentRect[1] + page.view[1], this.data.parentRect[2], page.view[3] - this.data.parentRect[3] + page.view[1]]); + + const popupLeft = rect[0] + this.data.parentRect[2] - this.data.parentRect[0]; + const popupTop = rect[1]; + const [pageLLx, pageLLy, pageURx, pageURy] = this.viewport.viewBox; + const pageWidth = pageURx - pageLLx; + const pageHeight = pageURy - pageLLy; + this.container.style.left = `${100 * (popupLeft - pageLLx) / pageWidth}%`; + this.container.style.top = `${100 * (popupTop - pageLLy) / pageHeight}%`; + this.container.append(popup.render()); + return this.container; + } + +} + +class PopupElement { + constructor(parameters) { + this.container = parameters.container; + this.trigger = parameters.trigger; + this.color = parameters.color; + this.titleObj = parameters.titleObj; + this.modificationDate = parameters.modificationDate; + this.contentsObj = parameters.contentsObj; + this.richText = parameters.richText; + this.hideWrapper = parameters.hideWrapper || false; + this.pinned = false; + } + + render() { + const BACKGROUND_ENLIGHT = 0.7; + const wrapper = document.createElement("div"); + wrapper.className = "popupWrapper"; + this.hideElement = this.hideWrapper ? wrapper : this.container; + this.hideElement.hidden = true; + const popup = document.createElement("div"); + popup.className = "popup"; + const color = this.color; + + if (color) { + const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0]; + const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1]; + const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2]; + popup.style.backgroundColor = _util.Util.makeHexColor(r | 0, g | 0, b | 0); + } + + const title = document.createElement("h1"); + title.dir = this.titleObj.dir; + title.textContent = this.titleObj.str; + popup.append(title); + + const dateObject = _display_utils.PDFDateString.toDateObject(this.modificationDate); + + if (dateObject) { + const modificationDate = document.createElement("span"); + modificationDate.className = "popupDate"; + modificationDate.textContent = "{{date}}, {{time}}"; + modificationDate.dataset.l10nId = "annotation_date_string"; + modificationDate.dataset.l10nArgs = JSON.stringify({ + date: dateObject.toLocaleDateString(), + time: dateObject.toLocaleTimeString() + }); + popup.append(modificationDate); + } + + if (this.richText?.str && (!this.contentsObj?.str || this.contentsObj.str === this.richText.str)) { + _xfa_layer.XfaLayer.render({ + xfaHtml: this.richText.html, + intent: "richText", + div: popup + }); + + popup.lastChild.className = "richText popupContent"; + } else { + const contents = this._formatContents(this.contentsObj); + + popup.append(contents); + } + + if (!Array.isArray(this.trigger)) { + this.trigger = [this.trigger]; + } + + for (const element of this.trigger) { + element.addEventListener("click", this._toggle.bind(this)); + element.addEventListener("mouseover", this._show.bind(this, false)); + element.addEventListener("mouseout", this._hide.bind(this, false)); + } + + popup.addEventListener("click", this._hide.bind(this, true)); + wrapper.append(popup); + return wrapper; + } + + _formatContents({ + str, + dir + }) { + const p = document.createElement("p"); + p.className = "popupContent"; + p.dir = dir; + const lines = str.split(/(?:\r\n?|\n)/); + + for (let i = 0, ii = lines.length; i < ii; ++i) { + const line = lines[i]; + p.append(document.createTextNode(line)); + + if (i < ii - 1) { + p.append(document.createElement("br")); + } + } + + return p; + } + + _toggle() { + if (this.pinned) { + this._hide(true); + } else { + this._show(true); + } + } + + _show(pin = false) { + if (pin) { + this.pinned = true; + } + + if (this.hideElement.hidden) { + this.hideElement.hidden = false; + this.container.style.zIndex = parseInt(this.container.style.zIndex) + 1000; + } + } + + _hide(unpin = true) { + if (unpin) { + this.pinned = false; + } + + if (!this.hideElement.hidden && !this.pinned) { + this.hideElement.hidden = true; + this.container.style.zIndex = parseInt(this.container.style.zIndex) - 1000; + } + } + +} + +class FreeTextAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + this.textContent = parameters.data.textContent; + } + + render() { + this.container.className = "freeTextAnnotation"; + + if (this.textContent) { + const content = document.createElement("div"); + content.className = "annotationTextContent"; + content.setAttribute("role", "comment"); + + for (const line of this.textContent) { + const lineSpan = document.createElement("span"); + lineSpan.textContent = line; + content.append(lineSpan); + } + + this.container.append(content); + } + + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + return this.container; + } + +} + +class LineAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "lineAnnotation"; + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + const line = this.svgFactory.createElement("svg:line"); + line.setAttribute("x1", data.rect[2] - data.lineCoordinates[0]); + line.setAttribute("y1", data.rect[3] - data.lineCoordinates[1]); + line.setAttribute("x2", data.rect[2] - data.lineCoordinates[2]); + line.setAttribute("y2", data.rect[3] - data.lineCoordinates[3]); + line.setAttribute("stroke-width", data.borderStyle.width || 1); + line.setAttribute("stroke", "transparent"); + line.setAttribute("fill", "transparent"); + svg.append(line); + this.container.append(svg); + + this._createPopup(line, data); + + return this.container; + } + +} + +class SquareAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "squareAnnotation"; + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + const borderWidth = data.borderStyle.width; + const square = this.svgFactory.createElement("svg:rect"); + square.setAttribute("x", borderWidth / 2); + square.setAttribute("y", borderWidth / 2); + square.setAttribute("width", width - borderWidth); + square.setAttribute("height", height - borderWidth); + square.setAttribute("stroke-width", borderWidth || 1); + square.setAttribute("stroke", "transparent"); + square.setAttribute("fill", "transparent"); + svg.append(square); + this.container.append(svg); + + this._createPopup(square, data); + + return this.container; + } + +} + +class CircleAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "circleAnnotation"; + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + const borderWidth = data.borderStyle.width; + const circle = this.svgFactory.createElement("svg:ellipse"); + circle.setAttribute("cx", width / 2); + circle.setAttribute("cy", height / 2); + circle.setAttribute("rx", width / 2 - borderWidth / 2); + circle.setAttribute("ry", height / 2 - borderWidth / 2); + circle.setAttribute("stroke-width", borderWidth || 1); + circle.setAttribute("stroke", "transparent"); + circle.setAttribute("fill", "transparent"); + svg.append(circle); + this.container.append(svg); + + this._createPopup(circle, data); + + return this.container; + } + +} + +class PolylineAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + this.containerClassName = "polylineAnnotation"; + this.svgElementName = "svg:polyline"; + } + + render() { + this.container.className = this.containerClassName; + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + let points = []; + + for (const coordinate of data.vertices) { + const x = coordinate.x - data.rect[0]; + const y = data.rect[3] - coordinate.y; + points.push(x + "," + y); + } + + points = points.join(" "); + const polyline = this.svgFactory.createElement(this.svgElementName); + polyline.setAttribute("points", points); + polyline.setAttribute("stroke-width", data.borderStyle.width || 1); + polyline.setAttribute("stroke", "transparent"); + polyline.setAttribute("fill", "transparent"); + svg.append(polyline); + this.container.append(svg); + + this._createPopup(polyline, data); + + return this.container; + } + +} + +class PolygonAnnotationElement extends PolylineAnnotationElement { + constructor(parameters) { + super(parameters); + this.containerClassName = "polygonAnnotation"; + this.svgElementName = "svg:polygon"; + } + +} + +class CaretAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "caretAnnotation"; + + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + return this.container; + } + +} + +class InkAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + this.containerClassName = "inkAnnotation"; + this.svgElementName = "svg:polyline"; + } + + render() { + this.container.className = this.containerClassName; + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + + for (const inkList of data.inkLists) { + let points = []; + + for (const coordinate of inkList) { + const x = coordinate.x - data.rect[0]; + const y = data.rect[3] - coordinate.y; + points.push(`${x},${y}`); + } + + points = points.join(" "); + const polyline = this.svgFactory.createElement(this.svgElementName); + polyline.setAttribute("points", points); + polyline.setAttribute("stroke-width", data.borderStyle.width || 1); + polyline.setAttribute("stroke", "transparent"); + polyline.setAttribute("fill", "transparent"); + + this._createPopup(polyline, data); + + svg.append(polyline); + } + + this.container.append(svg); + return this.container; + } + +} + +class HighlightAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + + render() { + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("highlightAnnotation"); + } + + this.container.className = "highlightAnnotation"; + return this.container; + } + +} + +class UnderlineAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + + render() { + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("underlineAnnotation"); + } + + this.container.className = "underlineAnnotation"; + return this.container; + } + +} + +class SquigglyAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + + render() { + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("squigglyAnnotation"); + } + + this.container.className = "squigglyAnnotation"; + return this.container; + } + +} + +class StrikeOutAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + + render() { + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("strikeoutAnnotation"); + } + + this.container.className = "strikeoutAnnotation"; + return this.container; + } + +} + +class StampAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "stampAnnotation"; + + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + return this.container; + } + +} + +class FileAttachmentAnnotationElement extends AnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: true + }); + const { + filename, + content + } = this.data.file; + this.filename = (0, _display_utils.getFilenameFromUrl)(filename); + this.content = content; + this.linkService.eventBus?.dispatch("fileattachmentannotation", { + source: this, + filename, + content + }); + } + + render() { + this.container.className = "fileAttachmentAnnotation"; + const trigger = document.createElement("div"); + trigger.className = "popupTriggerArea"; + trigger.addEventListener("dblclick", this._download.bind(this)); + + if (!this.data.hasPopup && (this.data.titleObj?.str || this.data.contentsObj?.str || this.data.richText)) { + this._createPopup(trigger, this.data); + } + + this.container.append(trigger); + return this.container; + } + + _download() { + this.downloadManager?.openOrDownloadData(this.container, this.content, this.filename); + } + +} + +class AnnotationLayer { + static #appendElement(element, id, div, accessibilityManager) { + const contentElement = element.firstChild || element; + contentElement.id = `${_display_utils.AnnotationPrefix}${id}`; + div.append(element); + accessibilityManager?.moveElementInDOM(div, element, contentElement, false); + } + + static render(parameters) { + const { + annotations, + div, + viewport, + accessibilityManager + } = parameters; + this.#setDimensions(div, viewport); + let zIndex = 0; + + for (const data of annotations) { + if (data.annotationType !== _util.AnnotationType.POPUP) { + const { + width, + height + } = getRectDims(data.rect); + + if (width <= 0 || height <= 0) { + continue; } - results = []; - rejectAll(reason); } - for (var i = 0, ii = promises.length; i < ii; ++i) { - var promise = promises[i]; - var resolve = function (i) { - return function (value) { - if (deferred._status === STATUS_REJECTED) { - return; - } - results[i] = value; - unresolved--; - if (unresolved === 0) { - resolveAll(results); - } - }; - }(i); - if (Promise.isPromise(promise)) { - promise.then(resolve, reject); + + const element = AnnotationElementFactory.create({ + data, + layer: div, + page: parameters.page, + viewport, + linkService: parameters.linkService, + downloadManager: parameters.downloadManager, + imageResourcesPath: parameters.imageResourcesPath || "", + renderForms: parameters.renderForms !== false, + svgFactory: new _display_utils.DOMSVGFactory(), + annotationStorage: parameters.annotationStorage || new _annotation_storage.AnnotationStorage(), + enableScripting: parameters.enableScripting, + hasJSActions: parameters.hasJSActions, + fieldObjects: parameters.fieldObjects, + mouseState: parameters.mouseState || { + isDown: false + } + }); + + if (element.isRenderable) { + const rendered = element.render(); + + if (data.hidden) { + rendered.style.visibility = "hidden"; + } + + if (Array.isArray(rendered)) { + for (const renderedElement of rendered) { + renderedElement.style.zIndex = zIndex++; + AnnotationLayer.#appendElement(renderedElement, data.id, div, accessibilityManager); + } } else { - resolve(promise); - } - } - return deferred; - }; - Promise.isPromise = function Promise_isPromise(value) { - return value && typeof value.then === 'function'; - }; - Promise.resolve = function Promise_resolve(value) { - return new Promise(function (resolve) { - resolve(value); - }); - }; - Promise.reject = function Promise_reject(reason) { - return new Promise(function (resolve, reject) { - reject(reason); - }); - }; - Promise.prototype = { - _status: null, - _value: null, - _handlers: null, - _unhandledRejection: null, - _updateStatus: function Promise__updateStatus(status, value) { - if (this._status === STATUS_RESOLVED || this._status === STATUS_REJECTED) { - return; - } - if (status === STATUS_RESOLVED && Promise.isPromise(value)) { - value.then(this._updateStatus.bind(this, STATUS_RESOLVED), this._updateStatus.bind(this, STATUS_REJECTED)); - return; - } - this._status = status; - this._value = value; - if (status === STATUS_REJECTED && this._handlers.length === 0) { - this._unhandledRejection = true; - HandlerManager.addUnhandledRejection(this); - } - HandlerManager.scheduleHandlers(this); - }, - _resolve: function Promise_resolve(value) { - this._updateStatus(STATUS_RESOLVED, value); - }, - _reject: function Promise_reject(reason) { - this._updateStatus(STATUS_REJECTED, reason); - }, - then: function Promise_then(onResolve, onReject) { - var nextPromise = new Promise(function (resolve, reject) { - this.resolve = resolve; - this.reject = reject; - }); - this._handlers.push({ - thisPromise: this, - onResolve: onResolve, - onReject: onReject, - nextPromise: nextPromise - }); - HandlerManager.scheduleHandlers(this); - return nextPromise; - }, - catch: function Promise_catch(onReject) { - return this.then(undefined, onReject); - } - }; - globalScope.Promise = Promise; - })(); - (function checkWeakMap() { - if (globalScope.WeakMap) { - return; - } - var id = 0; - function WeakMap() { - this.id = '$weakmap' + id++; - } - WeakMap.prototype = { - has: function has(obj) { - if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) !== 'object' && typeof obj !== 'function' || obj === null) { - return false; - } - return !!Object.getOwnPropertyDescriptor(obj, this.id); - }, - get: function get(obj) { - return this.has(obj) ? obj[this.id] : undefined; - }, - set: function set(obj, value) { - Object.defineProperty(obj, this.id, { - value: value, - enumerable: false, - configurable: true - }); - }, - delete: function _delete(obj) { - delete obj[this.id]; - } - }; - globalScope.WeakMap = WeakMap; - })(); - (function checkURLConstructor() { - var hasWorkingUrl = false; - try { - if (typeof URL === 'function' && _typeof(URL.prototype) === 'object' && 'origin' in URL.prototype) { - var u = new URL('b', 'http://a'); - u.pathname = 'c%20d'; - hasWorkingUrl = u.href === 'http://a/c%20d'; - } - } catch (e) {} - if (hasWorkingUrl) { - return; - } - var relative = Object.create(null); - relative['ftp'] = 21; - relative['file'] = 0; - relative['gopher'] = 70; - relative['http'] = 80; - relative['https'] = 443; - relative['ws'] = 80; - relative['wss'] = 443; - var relativePathDotMapping = Object.create(null); - relativePathDotMapping['%2e'] = '.'; - relativePathDotMapping['.%2e'] = '..'; - relativePathDotMapping['%2e.'] = '..'; - relativePathDotMapping['%2e%2e'] = '..'; - function isRelativeScheme(scheme) { - return relative[scheme] !== undefined; - } - function invalid() { - clear.call(this); - this._isInvalid = true; - } - function IDNAToASCII(h) { - if (h === '') { - invalid.call(this); - } - return h.toLowerCase(); - } - function percentEscape(c) { - var unicode = c.charCodeAt(0); - if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) === -1) { - return c; - } - return encodeURIComponent(c); - } - function percentEscapeQuery(c) { - var unicode = c.charCodeAt(0); - if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) === -1) { - return c; - } - return encodeURIComponent(c); - } - var EOF, - ALPHA = /[a-zA-Z]/, - ALPHANUMERIC = /[a-zA-Z0-9\+\-\.]/; - function parse(input, stateOverride, base) { - function err(message) { - errors.push(message); - } - var state = stateOverride || 'scheme start', - cursor = 0, - buffer = '', - seenAt = false, - seenBracket = false, - errors = []; - loop: while ((input[cursor - 1] !== EOF || cursor === 0) && !this._isInvalid) { - var c = input[cursor]; - switch (state) { - case 'scheme start': - if (c && ALPHA.test(c)) { - buffer += c.toLowerCase(); - state = 'scheme'; - } else if (!stateOverride) { - buffer = ''; - state = 'no scheme'; - continue; - } else { - err('Invalid scheme.'); - break loop; - } - break; - case 'scheme': - if (c && ALPHANUMERIC.test(c)) { - buffer += c.toLowerCase(); - } else if (c === ':') { - this._scheme = buffer; - buffer = ''; - if (stateOverride) { - break loop; - } - if (isRelativeScheme(this._scheme)) { - this._isRelative = true; - } - if (this._scheme === 'file') { - state = 'relative'; - } else if (this._isRelative && base && base._scheme === this._scheme) { - state = 'relative or authority'; - } else if (this._isRelative) { - state = 'authority first slash'; - } else { - state = 'scheme data'; - } - } else if (!stateOverride) { - buffer = ''; - cursor = 0; - state = 'no scheme'; - continue; - } else if (c === EOF) { - break loop; - } else { - err('Code point not allowed in scheme: ' + c); - break loop; - } - break; - case 'scheme data': - if (c === '?') { - this._query = '?'; - state = 'query'; - } else if (c === '#') { - this._fragment = '#'; - state = 'fragment'; - } else { - if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') { - this._schemeData += percentEscape(c); - } - } - break; - case 'no scheme': - if (!base || !isRelativeScheme(base._scheme)) { - err('Missing scheme.'); - invalid.call(this); - } else { - state = 'relative'; - continue; - } - break; - case 'relative or authority': - if (c === '/' && input[cursor + 1] === '/') { - state = 'authority ignore slashes'; - } else { - err('Expected /, got: ' + c); - state = 'relative'; - continue; - } - break; - case 'relative': - this._isRelative = true; - if (this._scheme !== 'file') { - this._scheme = base._scheme; - } - if (c === EOF) { - this._host = base._host; - this._port = base._port; - this._path = base._path.slice(); - this._query = base._query; - this._username = base._username; - this._password = base._password; - break loop; - } else if (c === '/' || c === '\\') { - if (c === '\\') { - err('\\ is an invalid code point.'); - } - state = 'relative slash'; - } else if (c === '?') { - this._host = base._host; - this._port = base._port; - this._path = base._path.slice(); - this._query = '?'; - this._username = base._username; - this._password = base._password; - state = 'query'; - } else if (c === '#') { - this._host = base._host; - this._port = base._port; - this._path = base._path.slice(); - this._query = base._query; - this._fragment = '#'; - this._username = base._username; - this._password = base._password; - state = 'fragment'; - } else { - var nextC = input[cursor + 1]; - var nextNextC = input[cursor + 2]; - if (this._scheme !== 'file' || !ALPHA.test(c) || nextC !== ':' && nextC !== '|' || nextNextC !== EOF && nextNextC !== '/' && nextNextC !== '\\' && nextNextC !== '?' && nextNextC !== '#') { - this._host = base._host; - this._port = base._port; - this._username = base._username; - this._password = base._password; - this._path = base._path.slice(); - this._path.pop(); - } - state = 'relative path'; - continue; - } - break; - case 'relative slash': - if (c === '/' || c === '\\') { - if (c === '\\') { - err('\\ is an invalid code point.'); - } - if (this._scheme === 'file') { - state = 'file host'; - } else { - state = 'authority ignore slashes'; - } - } else { - if (this._scheme !== 'file') { - this._host = base._host; - this._port = base._port; - this._username = base._username; - this._password = base._password; - } - state = 'relative path'; - continue; - } - break; - case 'authority first slash': - if (c === '/') { - state = 'authority second slash'; - } else { - err('Expected \'/\', got: ' + c); - state = 'authority ignore slashes'; - continue; - } - break; - case 'authority second slash': - state = 'authority ignore slashes'; - if (c !== '/') { - err('Expected \'/\', got: ' + c); - continue; - } - break; - case 'authority ignore slashes': - if (c !== '/' && c !== '\\') { - state = 'authority'; - continue; - } else { - err('Expected authority, got: ' + c); - } - break; - case 'authority': - if (c === '@') { - if (seenAt) { - err('@ already seen.'); - buffer += '%40'; - } - seenAt = true; - for (var i = 0; i < buffer.length; i++) { - var cp = buffer[i]; - if (cp === '\t' || cp === '\n' || cp === '\r') { - err('Invalid whitespace in authority.'); - continue; - } - if (cp === ':' && this._password === null) { - this._password = ''; - continue; - } - var tempC = percentEscape(cp); - if (this._password !== null) { - this._password += tempC; - } else { - this._username += tempC; - } - } - buffer = ''; - } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') { - cursor -= buffer.length; - buffer = ''; - state = 'host'; - continue; - } else { - buffer += c; - } - break; - case 'file host': - if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') { - if (buffer.length === 2 && ALPHA.test(buffer[0]) && (buffer[1] === ':' || buffer[1] === '|')) { - state = 'relative path'; - } else if (buffer.length === 0) { - state = 'relative path start'; - } else { - this._host = IDNAToASCII.call(this, buffer); - buffer = ''; - state = 'relative path start'; - } - continue; - } else if (c === '\t' || c === '\n' || c === '\r') { - err('Invalid whitespace in file host.'); - } else { - buffer += c; - } - break; - case 'host': - case 'hostname': - if (c === ':' && !seenBracket) { - this._host = IDNAToASCII.call(this, buffer); - buffer = ''; - state = 'port'; - if (stateOverride === 'hostname') { - break loop; - } - } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') { - this._host = IDNAToASCII.call(this, buffer); - buffer = ''; - state = 'relative path start'; - if (stateOverride) { - break loop; - } - continue; - } else if (c !== '\t' && c !== '\n' && c !== '\r') { - if (c === '[') { - seenBracket = true; - } else if (c === ']') { - seenBracket = false; - } - buffer += c; - } else { - err('Invalid code point in host/hostname: ' + c); - } - break; - case 'port': - if (/[0-9]/.test(c)) { - buffer += c; - } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#' || stateOverride) { - if (buffer !== '') { - var temp = parseInt(buffer, 10); - if (temp !== relative[this._scheme]) { - this._port = temp + ''; - } - buffer = ''; - } - if (stateOverride) { - break loop; - } - state = 'relative path start'; - continue; - } else if (c === '\t' || c === '\n' || c === '\r') { - err('Invalid code point in port: ' + c); - } else { - invalid.call(this); - } - break; - case 'relative path start': - if (c === '\\') { - err('\'\\\' not allowed in path.'); - } - state = 'relative path'; - if (c !== '/' && c !== '\\') { - continue; - } - break; - case 'relative path': - if (c === EOF || c === '/' || c === '\\' || !stateOverride && (c === '?' || c === '#')) { - if (c === '\\') { - err('\\ not allowed in relative path.'); - } - var tmp; - if (tmp = relativePathDotMapping[buffer.toLowerCase()]) { - buffer = tmp; - } - if (buffer === '..') { - this._path.pop(); - if (c !== '/' && c !== '\\') { - this._path.push(''); - } - } else if (buffer === '.' && c !== '/' && c !== '\\') { - this._path.push(''); - } else if (buffer !== '.') { - if (this._scheme === 'file' && this._path.length === 0 && buffer.length === 2 && ALPHA.test(buffer[0]) && buffer[1] === '|') { - buffer = buffer[0] + ':'; - } - this._path.push(buffer); - } - buffer = ''; - if (c === '?') { - this._query = '?'; - state = 'query'; - } else if (c === '#') { - this._fragment = '#'; - state = 'fragment'; - } - } else if (c !== '\t' && c !== '\n' && c !== '\r') { - buffer += percentEscape(c); - } - break; - case 'query': - if (!stateOverride && c === '#') { - this._fragment = '#'; - state = 'fragment'; - } else if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') { - this._query += percentEscapeQuery(c); - } - break; - case 'fragment': - if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') { - this._fragment += c; - } - break; - } - cursor++; - } - } - function clear() { - this._scheme = ''; - this._schemeData = ''; - this._username = ''; - this._password = null; - this._host = ''; - this._port = ''; - this._path = []; - this._query = ''; - this._fragment = ''; - this._isInvalid = false; - this._isRelative = false; - } - function JURL(url, base) { - if (base !== undefined && !(base instanceof JURL)) { - base = new JURL(String(base)); - } - this._url = url; - clear.call(this); - var input = url.replace(/^[ \t\r\n\f]+|[ \t\r\n\f]+$/g, ''); - parse.call(this, input, null, base); - } - JURL.prototype = { - toString: function toString() { - return this.href; - }, + rendered.style.zIndex = zIndex++; - get href() { - if (this._isInvalid) { - return this._url; + if (element instanceof PopupAnnotationElement) { + div.prepend(rendered); + } else { + AnnotationLayer.#appendElement(rendered, data.id, div, accessibilityManager); + } } - var authority = ''; - if (this._username !== '' || this._password !== null) { - authority = this._username + (this._password !== null ? ':' + this._password : '') + '@'; - } - return this.protocol + (this._isRelative ? '//' + authority + this.host : '') + this.pathname + this._query + this._fragment; - }, - set href(value) { - clear.call(this); - parse.call(this, value); - }, - get protocol() { - return this._scheme + ':'; - }, - set protocol(value) { - if (this._isInvalid) { - return; - } - parse.call(this, value + ':', 'scheme start'); - }, - get host() { - return this._isInvalid ? '' : this._port ? this._host + ':' + this._port : this._host; - }, - set host(value) { - if (this._isInvalid || !this._isRelative) { - return; - } - parse.call(this, value, 'host'); - }, - get hostname() { - return this._host; - }, - set hostname(value) { - if (this._isInvalid || !this._isRelative) { - return; - } - parse.call(this, value, 'hostname'); - }, - get port() { - return this._port; - }, - set port(value) { - if (this._isInvalid || !this._isRelative) { - return; - } - parse.call(this, value, 'port'); - }, - get pathname() { - return this._isInvalid ? '' : this._isRelative ? '/' + this._path.join('/') : this._schemeData; - }, - set pathname(value) { - if (this._isInvalid || !this._isRelative) { - return; - } - this._path = []; - parse.call(this, value, 'relative path start'); - }, - get search() { - return this._isInvalid || !this._query || this._query === '?' ? '' : this._query; - }, - set search(value) { - if (this._isInvalid || !this._isRelative) { - return; - } - this._query = '?'; - if (value[0] === '?') { - value = value.slice(1); - } - parse.call(this, value, 'query'); - }, - get hash() { - return this._isInvalid || !this._fragment || this._fragment === '#' ? '' : this._fragment; - }, - set hash(value) { - if (this._isInvalid) { - return; - } - this._fragment = '#'; - if (value[0] === '#') { - value = value.slice(1); - } - parse.call(this, value, 'fragment'); - }, - get origin() { - var host; - if (this._isInvalid || !this._scheme) { - return ''; - } - switch (this._scheme) { - case 'data': - case 'file': - case 'javascript': - case 'mailto': - return 'null'; - case 'blob': - try { - return new JURL(this._schemeData).origin || 'null'; - } catch (_) {} - return 'null'; - } - host = this.host; - if (!host) { - return ''; - } - return this._scheme + '://' + host; } - }; - var OriginalURL = globalScope.URL; - if (OriginalURL) { - JURL.createObjectURL = function (blob) { - return OriginalURL.createObjectURL.apply(OriginalURL, arguments); - }; - JURL.revokeObjectURL = function (url) { - OriginalURL.revokeObjectURL(url); - }; } - globalScope.URL = JURL; - })(); + + this.#setAnnotationCanvasMap(div, parameters.annotationCanvasMap); + } + + static update(parameters) { + const { + annotationCanvasMap, + div, + viewport + } = parameters; + this.#setDimensions(div, viewport); + this.#setAnnotationCanvasMap(div, annotationCanvasMap); + div.hidden = false; + } + + static #setDimensions(div, { + width, + height, + rotation + }) { + const { + style + } = div; + const flipOrientation = rotation % 180 !== 0, + widthStr = Math.floor(width) + "px", + heightStr = Math.floor(height) + "px"; + style.width = flipOrientation ? heightStr : widthStr; + style.height = flipOrientation ? widthStr : heightStr; + div.setAttribute("data-main-rotation", rotation); + } + + static #setAnnotationCanvasMap(div, annotationCanvasMap) { + if (!annotationCanvasMap) { + return; + } + + for (const [id, canvas] of annotationCanvasMap) { + const element = div.querySelector(`[data-annotation-id="${id}"]`); + + if (!element) { + continue; + } + + const { + firstChild + } = element; + + if (!firstChild) { + element.append(canvas); + } else if (firstChild.nodeName === "CANVAS") { + firstChild.replaceWith(canvas); + } else { + firstChild.before(canvas); + } + } + + annotationCanvasMap.clear(); + } + +} + +exports.AnnotationLayer = AnnotationLayer; + +/***/ }), +/* 28 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ColorConverters = void 0; + +function makeColorComp(n) { + return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, "0"); +} + +class ColorConverters { + static CMYK_G([c, y, m, k]) { + return ["G", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)]; + } + + static G_CMYK([g]) { + return ["CMYK", 0, 0, 0, 1 - g]; + } + + static G_RGB([g]) { + return ["RGB", g, g, g]; + } + + static G_HTML([g]) { + const G = makeColorComp(g); + return `#${G}${G}${G}`; + } + + static RGB_G([r, g, b]) { + return ["G", 0.3 * r + 0.59 * g + 0.11 * b]; + } + + static RGB_HTML([r, g, b]) { + const R = makeColorComp(r); + const G = makeColorComp(g); + const B = makeColorComp(b); + return `#${R}${G}${B}`; + } + + static T_HTML() { + return "#00000000"; + } + + static CMYK_RGB([c, y, m, k]) { + return ["RGB", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)]; + } + + static CMYK_HTML(components) { + const rgb = this.CMYK_RGB(components).slice(1); + return this.RGB_HTML(rgb); + } + + static RGB_CMYK([r, g, b]) { + const c = 1 - r; + const m = 1 - g; + const y = 1 - b; + const k = Math.min(c, m, y); + return ["CMYK", c, m, y, k]; + } + +} + +exports.ColorConverters = ColorConverters; + +/***/ }), +/* 29 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XfaLayer = void 0; + +var _xfa_text = __w_pdfjs_require__(20); + +class XfaLayer { + static setupStorage(html, id, element, storage, intent) { + const storedData = storage.getValue(id, { + value: null + }); + + switch (element.name) { + case "textarea": + if (storedData.value !== null) { + html.textContent = storedData.value; + } + + if (intent === "print") { + break; + } + + html.addEventListener("input", event => { + storage.setValue(id, { + value: event.target.value + }); + }); + break; + + case "input": + if (element.attributes.type === "radio" || element.attributes.type === "checkbox") { + if (storedData.value === element.attributes.xfaOn) { + html.setAttribute("checked", true); + } else if (storedData.value === element.attributes.xfaOff) { + html.removeAttribute("checked"); + } + + if (intent === "print") { + break; + } + + html.addEventListener("change", event => { + storage.setValue(id, { + value: event.target.checked ? event.target.getAttribute("xfaOn") : event.target.getAttribute("xfaOff") + }); + }); + } else { + if (storedData.value !== null) { + html.setAttribute("value", storedData.value); + } + + if (intent === "print") { + break; + } + + html.addEventListener("input", event => { + storage.setValue(id, { + value: event.target.value + }); + }); + } + + break; + + case "select": + if (storedData.value !== null) { + for (const option of element.children) { + if (option.attributes.value === storedData.value) { + option.attributes.selected = true; + } + } + } + + html.addEventListener("input", event => { + const options = event.target.options; + const value = options.selectedIndex === -1 ? "" : options[options.selectedIndex].value; + storage.setValue(id, { + value + }); + }); + break; + } + } + + static setAttributes({ + html, + element, + storage = null, + intent, + linkService + }) { + const { + attributes + } = element; + const isHTMLAnchorElement = html instanceof HTMLAnchorElement; + + if (attributes.type === "radio") { + attributes.name = `${attributes.name}-${intent}`; + } + + for (const [key, value] of Object.entries(attributes)) { + if (value === null || value === undefined) { + continue; + } + + switch (key) { + case "class": + if (value.length) { + html.setAttribute(key, value.join(" ")); + } + + break; + + case "dataId": + break; + + case "id": + html.setAttribute("data-element-id", value); + break; + + case "style": + Object.assign(html.style, value); + break; + + case "textContent": + html.textContent = value; + break; + + default: + if (!isHTMLAnchorElement || key !== "href" && key !== "newWindow") { + html.setAttribute(key, value); + } + + } + } + + if (isHTMLAnchorElement) { + linkService.addLinkAttributes(html, attributes.href, attributes.newWindow); + } + + if (storage && attributes.dataId) { + this.setupStorage(html, attributes.dataId, element, storage); + } + } + + static render(parameters) { + const storage = parameters.annotationStorage; + const linkService = parameters.linkService; + const root = parameters.xfaHtml; + const intent = parameters.intent || "display"; + const rootHtml = document.createElement(root.name); + + if (root.attributes) { + this.setAttributes({ + html: rootHtml, + element: root, + intent, + linkService + }); + } + + const stack = [[root, -1, rootHtml]]; + const rootDiv = parameters.div; + rootDiv.append(rootHtml); + + if (parameters.viewport) { + const transform = `matrix(${parameters.viewport.transform.join(",")})`; + rootDiv.style.transform = transform; + } + + if (intent !== "richText") { + rootDiv.setAttribute("class", "xfaLayer xfaFont"); + } + + const textDivs = []; + + while (stack.length > 0) { + const [parent, i, html] = stack.at(-1); + + if (i + 1 === parent.children.length) { + stack.pop(); + continue; + } + + const child = parent.children[++stack.at(-1)[1]]; + + if (child === null) { + continue; + } + + const { + name + } = child; + + if (name === "#text") { + const node = document.createTextNode(child.value); + textDivs.push(node); + html.append(node); + continue; + } + + let childHtml; + + if (child?.attributes?.xmlns) { + childHtml = document.createElementNS(child.attributes.xmlns, name); + } else { + childHtml = document.createElement(name); + } + + html.append(childHtml); + + if (child.attributes) { + this.setAttributes({ + html: childHtml, + element: child, + storage, + intent, + linkService + }); + } + + if (child.children && child.children.length > 0) { + stack.push([child, -1, childHtml]); + } else if (child.value) { + const node = document.createTextNode(child.value); + + if (_xfa_text.XfaText.shouldBuildText(name)) { + textDivs.push(node); + } + + childHtml.append(node); + } + } + + for (const el of rootDiv.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea")) { + el.setAttribute("readOnly", true); + } + + return { + textDivs + }; + } + + static update(parameters) { + const transform = `matrix(${parameters.viewport.transform.join(",")})`; + parameters.div.style.transform = transform; + parameters.div.hidden = false; + } + +} + +exports.XfaLayer = XfaLayer; + +/***/ }), +/* 30 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TextLayerRenderTask = void 0; +exports.renderTextLayer = renderTextLayer; + +var _util = __w_pdfjs_require__(1); + +var _display_utils = __w_pdfjs_require__(8); + +const MAX_TEXT_DIVS_TO_RENDER = 100000; +const DEFAULT_FONT_SIZE = 30; +const DEFAULT_FONT_ASCENT = 0.8; +const ascentCache = new Map(); +const AllWhitespaceRegexp = /^\s+$/g; + +function getAscent(fontFamily, ctx) { + const cachedAscent = ascentCache.get(fontFamily); + + if (cachedAscent) { + return cachedAscent; + } + + ctx.save(); + ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`; + const metrics = ctx.measureText(""); + let ascent = metrics.fontBoundingBoxAscent; + let descent = Math.abs(metrics.fontBoundingBoxDescent); + + if (ascent) { + ctx.restore(); + const ratio = ascent / (ascent + descent); + ascentCache.set(fontFamily, ratio); + return ratio; + } + + ctx.strokeStyle = "red"; + ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE); + ctx.strokeText("g", 0, 0); + let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data; + descent = 0; + + for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) { + if (pixels[i] > 0) { + descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE); + break; + } + } + + ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE); + ctx.strokeText("A", 0, DEFAULT_FONT_SIZE); + pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data; + ascent = 0; + + for (let i = 0, ii = pixels.length; i < ii; i += 4) { + if (pixels[i] > 0) { + ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE); + break; + } + } + + ctx.restore(); + + if (ascent) { + const ratio = ascent / (ascent + descent); + ascentCache.set(fontFamily, ratio); + return ratio; + } + + ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT); + return DEFAULT_FONT_ASCENT; +} + +function appendText(task, geom, styles, ctx) { + const textDiv = document.createElement("span"); + const textDivProperties = task._enhanceTextSelection ? { + angle: 0, + canvasWidth: 0, + hasText: geom.str !== "", + hasEOL: geom.hasEOL, + originalTransform: null, + paddingBottom: 0, + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + scale: 1, + fontSize: 0 + } : { + angle: 0, + canvasWidth: 0, + hasText: geom.str !== "", + hasEOL: geom.hasEOL, + fontSize: 0 + }; + + task._textDivs.push(textDiv); + + const tx = _util.Util.transform(task._viewport.transform, geom.transform); + + let angle = Math.atan2(tx[1], tx[0]); + const style = styles[geom.fontName]; + + if (style.vertical) { + angle += Math.PI / 2; + } + + const fontHeight = Math.hypot(tx[2], tx[3]); + const fontAscent = fontHeight * getAscent(style.fontFamily, ctx); + let left, top; + + if (angle === 0) { + left = tx[4]; + top = tx[5] - fontAscent; + } else { + left = tx[4] + fontAscent * Math.sin(angle); + top = tx[5] - fontAscent * Math.cos(angle); + } + + textDiv.style.left = `${left}px`; + textDiv.style.top = `${top}px`; + textDiv.style.fontSize = `${fontHeight}px`; + textDiv.style.fontFamily = style.fontFamily; + textDivProperties.fontSize = fontHeight; + textDiv.setAttribute("role", "presentation"); + textDiv.textContent = geom.str; + textDiv.dir = geom.dir; + + if (task._fontInspectorEnabled) { + textDiv.dataset.fontName = geom.fontName; + } + + if (angle !== 0) { + textDivProperties.angle = angle * (180 / Math.PI); + } + + let shouldScaleText = false; + + if (geom.str.length > 1 || task._enhanceTextSelection && AllWhitespaceRegexp.test(geom.str)) { + shouldScaleText = true; + } else if (geom.str !== " " && geom.transform[0] !== geom.transform[3]) { + const absScaleX = Math.abs(geom.transform[0]), + absScaleY = Math.abs(geom.transform[3]); + + if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) { + shouldScaleText = true; + } + } + + if (shouldScaleText) { + if (style.vertical) { + textDivProperties.canvasWidth = geom.height * task._viewport.scale; + } else { + textDivProperties.canvasWidth = geom.width * task._viewport.scale; + } + } + + task._textDivProperties.set(textDiv, textDivProperties); + + if (task._textContentStream) { + task._layoutText(textDiv); + } + + if (task._enhanceTextSelection && textDivProperties.hasText) { + let angleCos = 1, + angleSin = 0; + + if (angle !== 0) { + angleCos = Math.cos(angle); + angleSin = Math.sin(angle); + } + + const divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale; + const divHeight = fontHeight; + let m, b; + + if (angle !== 0) { + m = [angleCos, angleSin, -angleSin, angleCos, left, top]; + b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m); + } else { + b = [left, top, left + divWidth, top + divHeight]; + } + + task._bounds.push({ + left: b[0], + top: b[1], + right: b[2], + bottom: b[3], + div: textDiv, + size: [divWidth, divHeight], + m + }); + } +} + +function render(task) { + if (task._canceled) { + return; + } + + const textDivs = task._textDivs; + const capability = task._capability; + const textDivsLength = textDivs.length; + + if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) { + task._renderingDone = true; + capability.resolve(); + return; + } + + if (!task._textContentStream) { + for (let i = 0; i < textDivsLength; i++) { + task._layoutText(textDivs[i]); + } + } + + task._renderingDone = true; + capability.resolve(); +} + +function findPositiveMin(ts, offset, count) { + let result = 0; + + for (let i = 0; i < count; i++) { + const t = ts[offset++]; + + if (t > 0) { + result = result ? Math.min(t, result) : t; + } + } + + return result; +} + +function expand(task) { + const bounds = task._bounds; + const viewport = task._viewport; + const expanded = expandBounds(viewport.width, viewport.height, bounds); + + for (let i = 0; i < expanded.length; i++) { + const div = bounds[i].div; + + const divProperties = task._textDivProperties.get(div); + + if (divProperties.angle === 0) { + divProperties.paddingLeft = bounds[i].left - expanded[i].left; + divProperties.paddingTop = bounds[i].top - expanded[i].top; + divProperties.paddingRight = expanded[i].right - bounds[i].right; + divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom; + + task._textDivProperties.set(div, divProperties); + + continue; + } + + const e = expanded[i], + b = bounds[i]; + const m = b.m, + c = m[0], + s = m[1]; + const points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size]; + const ts = new Float64Array(64); + + for (let j = 0, jj = points.length; j < jj; j++) { + const t = _util.Util.applyTransform(points[j], m); + + ts[j + 0] = c && (e.left - t[0]) / c; + ts[j + 4] = s && (e.top - t[1]) / s; + ts[j + 8] = c && (e.right - t[0]) / c; + ts[j + 12] = s && (e.bottom - t[1]) / s; + ts[j + 16] = s && (e.left - t[0]) / -s; + ts[j + 20] = c && (e.top - t[1]) / c; + ts[j + 24] = s && (e.right - t[0]) / -s; + ts[j + 28] = c && (e.bottom - t[1]) / c; + ts[j + 32] = c && (e.left - t[0]) / -c; + ts[j + 36] = s && (e.top - t[1]) / -s; + ts[j + 40] = c && (e.right - t[0]) / -c; + ts[j + 44] = s && (e.bottom - t[1]) / -s; + ts[j + 48] = s && (e.left - t[0]) / s; + ts[j + 52] = c && (e.top - t[1]) / -c; + ts[j + 56] = s && (e.right - t[0]) / s; + ts[j + 60] = c && (e.bottom - t[1]) / -c; + } + + const boxScale = 1 + Math.min(Math.abs(c), Math.abs(s)); + divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale; + divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale; + divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale; + divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale; + + task._textDivProperties.set(div, divProperties); + } +} + +function expandBounds(width, height, boxes) { + const bounds = boxes.map(function (box, i) { + return { + x1: box.left, + y1: box.top, + x2: box.right, + y2: box.bottom, + index: i, + x1New: undefined, + x2New: undefined + }; + }); + expandBoundsLTR(width, bounds); + const expanded = new Array(boxes.length); + + for (const b of bounds) { + const i = b.index; + expanded[i] = { + left: b.x1New, + top: 0, + right: b.x2New, + bottom: 0 + }; + } + + boxes.map(function (box, i) { + const e = expanded[i], + b = bounds[i]; + b.x1 = box.top; + b.y1 = width - e.right; + b.x2 = box.bottom; + b.y2 = width - e.left; + b.index = i; + b.x1New = undefined; + b.x2New = undefined; + }); + expandBoundsLTR(height, bounds); + + for (const b of bounds) { + const i = b.index; + expanded[i].top = b.x1New; + expanded[i].bottom = b.x2New; + } + + return expanded; +} + +function expandBoundsLTR(width, bounds) { + bounds.sort(function (a, b) { + return a.x1 - b.x1 || a.index - b.index; + }); + const fakeBoundary = { + x1: -Infinity, + y1: -Infinity, + x2: 0, + y2: Infinity, + index: -1, + x1New: 0, + x2New: 0 + }; + const horizon = [{ + start: -Infinity, + end: Infinity, + boundary: fakeBoundary + }]; + + for (const boundary of bounds) { + let i = 0; + + while (i < horizon.length && horizon[i].end <= boundary.y1) { + i++; + } + + let j = horizon.length - 1; + + while (j >= 0 && horizon[j].start >= boundary.y2) { + j--; + } + + let horizonPart, affectedBoundary; + let q, + k, + maxXNew = -Infinity; + + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + let xNew; + + if (affectedBoundary.x2 > boundary.x1) { + xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1; + } else if (affectedBoundary.x2New === undefined) { + xNew = (affectedBoundary.x2 + boundary.x1) / 2; + } else { + xNew = affectedBoundary.x2New; + } + + if (xNew > maxXNew) { + maxXNew = xNew; + } + } + + boundary.x1New = maxXNew; + + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + + if (affectedBoundary.x2New === undefined) { + if (affectedBoundary.x2 > boundary.x1) { + if (affectedBoundary.index > boundary.index) { + affectedBoundary.x2New = affectedBoundary.x2; + } + } else { + affectedBoundary.x2New = maxXNew; + } + } else if (affectedBoundary.x2New > maxXNew) { + affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2); + } + } + + const changedHorizon = []; + let lastBoundary = null; + + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + const useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary; + + if (lastBoundary === useBoundary) { + changedHorizon.at(-1).end = horizonPart.end; + } else { + changedHorizon.push({ + start: horizonPart.start, + end: horizonPart.end, + boundary: useBoundary + }); + lastBoundary = useBoundary; + } + } + + if (horizon[i].start < boundary.y1) { + changedHorizon[0].start = boundary.y1; + changedHorizon.unshift({ + start: horizon[i].start, + end: boundary.y1, + boundary: horizon[i].boundary + }); + } + + if (boundary.y2 < horizon[j].end) { + changedHorizon.at(-1).end = boundary.y2; + changedHorizon.push({ + start: boundary.y2, + end: horizon[j].end, + boundary: horizon[j].boundary + }); + } + + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + + if (affectedBoundary.x2New !== undefined) { + continue; + } + + let used = false; + + for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) { + used = horizon[k].boundary === affectedBoundary; + } + + for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) { + used = horizon[k].boundary === affectedBoundary; + } + + for (k = 0; !used && k < changedHorizon.length; k++) { + used = changedHorizon[k].boundary === affectedBoundary; + } + + if (!used) { + affectedBoundary.x2New = maxXNew; + } + } + + Array.prototype.splice.apply(horizon, [i, j - i + 1, ...changedHorizon]); + } + + for (const horizonPart of horizon) { + const affectedBoundary = horizonPart.boundary; + + if (affectedBoundary.x2New === undefined) { + affectedBoundary.x2New = Math.max(width, affectedBoundary.x2); + } + } +} + +class TextLayerRenderTask { + constructor({ + textContent, + textContentStream, + container, + viewport, + textDivs, + textContentItemsStr, + enhanceTextSelection + }) { + if (enhanceTextSelection) { + (0, _display_utils.deprecated)("The `enhanceTextSelection` functionality will be removed in the future."); + } + + this._textContent = textContent; + this._textContentStream = textContentStream; + this._container = container; + this._document = container.ownerDocument; + this._viewport = viewport; + this._textDivs = textDivs || []; + this._textContentItemsStr = textContentItemsStr || []; + this._enhanceTextSelection = !!enhanceTextSelection; + this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled; + this._reader = null; + this._layoutTextLastFontSize = null; + this._layoutTextLastFontFamily = null; + this._layoutTextCtx = null; + this._textDivProperties = new WeakMap(); + this._renderingDone = false; + this._canceled = false; + this._capability = (0, _util.createPromiseCapability)(); + this._renderTimer = null; + this._bounds = []; + this._devicePixelRatio = globalThis.devicePixelRatio || 1; + + this._capability.promise.finally(() => { + if (!this._enhanceTextSelection) { + this._textDivProperties = null; + } + + if (this._layoutTextCtx) { + this._layoutTextCtx.canvas.width = 0; + this._layoutTextCtx.canvas.height = 0; + this._layoutTextCtx = null; + } + }).catch(() => {}); + } + + get promise() { + return this._capability.promise; + } + + cancel() { + this._canceled = true; + + if (this._reader) { + this._reader.cancel(new _util.AbortException("TextLayer task cancelled.")).catch(() => {}); + + this._reader = null; + } + + if (this._renderTimer !== null) { + clearTimeout(this._renderTimer); + this._renderTimer = null; + } + + this._capability.reject(new Error("TextLayer task cancelled.")); + } + + _processItems(items, styleCache) { + for (let i = 0, len = items.length; i < len; i++) { + if (items[i].str === undefined) { + if (items[i].type === "beginMarkedContentProps" || items[i].type === "beginMarkedContent") { + const parent = this._container; + this._container = document.createElement("span"); + + this._container.classList.add("markedContent"); + + if (items[i].id !== null) { + this._container.setAttribute("id", `${items[i].id}`); + } + + parent.append(this._container); + } else if (items[i].type === "endMarkedContent") { + this._container = this._container.parentNode; + } + + continue; + } + + this._textContentItemsStr.push(items[i].str); + + appendText(this, items[i], styleCache, this._layoutTextCtx); + } + } + + _layoutText(textDiv) { + const textDivProperties = this._textDivProperties.get(textDiv); + + let transform = ""; + + if (textDivProperties.canvasWidth !== 0 && textDivProperties.hasText) { + const { + fontFamily + } = textDiv.style; + const { + fontSize + } = textDivProperties; + + if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) { + this._layoutTextCtx.font = `${fontSize * this._devicePixelRatio}px ${fontFamily}`; + this._layoutTextLastFontSize = fontSize; + this._layoutTextLastFontFamily = fontFamily; + } + + const { + width + } = this._layoutTextCtx.measureText(textDiv.textContent); + + if (width > 0) { + const scale = this._devicePixelRatio * textDivProperties.canvasWidth / width; + + if (this._enhanceTextSelection) { + textDivProperties.scale = scale; + } + + transform = `scaleX(${scale})`; + } + } + + if (textDivProperties.angle !== 0) { + transform = `rotate(${textDivProperties.angle}deg) ${transform}`; + } + + if (transform.length > 0) { + if (this._enhanceTextSelection) { + textDivProperties.originalTransform = transform; + } + + textDiv.style.transform = transform; + } + + if (textDivProperties.hasText) { + this._container.append(textDiv); + } + + if (textDivProperties.hasEOL) { + const br = document.createElement("br"); + br.setAttribute("role", "presentation"); + + this._container.append(br); + } + } + + _render(timeout = 0) { + const capability = (0, _util.createPromiseCapability)(); + let styleCache = Object.create(null); + + const canvas = this._document.createElement("canvas"); + + canvas.height = canvas.width = DEFAULT_FONT_SIZE; + this._layoutTextCtx = canvas.getContext("2d", { + alpha: false + }); + + if (this._textContent) { + const textItems = this._textContent.items; + const textStyles = this._textContent.styles; + + this._processItems(textItems, textStyles); + + capability.resolve(); + } else if (this._textContentStream) { + const pump = () => { + this._reader.read().then(({ + value, + done + }) => { + if (done) { + capability.resolve(); + return; + } + + Object.assign(styleCache, value.styles); + + this._processItems(value.items, styleCache); + + pump(); + }, capability.reject); + }; + + this._reader = this._textContentStream.getReader(); + pump(); + } else { + throw new Error('Neither "textContent" nor "textContentStream" parameters specified.'); + } + + capability.promise.then(() => { + styleCache = null; + + if (!timeout) { + render(this); + } else { + this._renderTimer = setTimeout(() => { + render(this); + this._renderTimer = null; + }, timeout); + } + }, this._capability.reject); + } + + expandTextDivs(expandDivs = false) { + if (!this._enhanceTextSelection || !this._renderingDone) { + return; + } + + if (this._bounds !== null) { + expand(this); + this._bounds = null; + } + + const transformBuf = [], + paddingBuf = []; + + for (let i = 0, ii = this._textDivs.length; i < ii; i++) { + const div = this._textDivs[i]; + + const divProps = this._textDivProperties.get(div); + + if (!divProps.hasText) { + continue; + } + + if (expandDivs) { + transformBuf.length = 0; + paddingBuf.length = 0; + + if (divProps.originalTransform) { + transformBuf.push(divProps.originalTransform); + } + + if (divProps.paddingTop > 0) { + paddingBuf.push(`${divProps.paddingTop}px`); + transformBuf.push(`translateY(${-divProps.paddingTop}px)`); + } else { + paddingBuf.push(0); + } + + if (divProps.paddingRight > 0) { + paddingBuf.push(`${divProps.paddingRight / divProps.scale}px`); + } else { + paddingBuf.push(0); + } + + if (divProps.paddingBottom > 0) { + paddingBuf.push(`${divProps.paddingBottom}px`); + } else { + paddingBuf.push(0); + } + + if (divProps.paddingLeft > 0) { + paddingBuf.push(`${divProps.paddingLeft / divProps.scale}px`); + transformBuf.push(`translateX(${-divProps.paddingLeft / divProps.scale}px)`); + } else { + paddingBuf.push(0); + } + + div.style.padding = paddingBuf.join(" "); + + if (transformBuf.length) { + div.style.transform = transformBuf.join(" "); + } + } else { + div.style.padding = null; + div.style.transform = divProps.originalTransform; + } + } + } + +} + +exports.TextLayerRenderTask = TextLayerRenderTask; + +function renderTextLayer(renderParameters) { + const task = new TextLayerRenderTask({ + textContent: renderParameters.textContent, + textContentStream: renderParameters.textContentStream, + container: renderParameters.container, + viewport: renderParameters.viewport, + textDivs: renderParameters.textDivs, + textContentItemsStr: renderParameters.textContentItemsStr, + enhanceTextSelection: renderParameters.enhanceTextSelection + }); + + task._render(renderParameters.timeout); + + return task; } /***/ }), -/* 17 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; +/* 31 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -var isReadableStreamSupported = false; -if (typeof ReadableStream !== 'undefined') { - try { - new ReadableStream({ - start: function start(controller) { - controller.close(); + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SVGGraphics = void 0; + +var _display_utils = __w_pdfjs_require__(8); + +var _util = __w_pdfjs_require__(1); + +var _is_node = __w_pdfjs_require__(3); + +let SVGGraphics = class { + constructor() { + (0, _util.unreachable)("Not implemented: SVGGraphics"); + } + +}; +exports.SVGGraphics = SVGGraphics; +{ + const SVG_DEFAULTS = { + fontStyle: "normal", + fontWeight: "normal", + fillColor: "#000000" + }; + const XML_NS = "http://www.w3.org/XML/1998/namespace"; + const XLINK_NS = "http://www.w3.org/1999/xlink"; + 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; + const crcTable = new Int32Array(256); + + for (let i = 0; i < 256; i++) { + let c = i; + + for (let h = 0; h < 8; h++) { + if (c & 1) { + c = 0xedb88320 ^ c >> 1 & 0x7fffffff; + } else { + c = c >> 1 & 0x7fffffff; + } } - }); - isReadableStreamSupported = true; - } catch (e) {} + + crcTable[i] = c; + } + + function crc32(data, start, end) { + let crc = -1; + + for (let i = start; i < end; i++) { + const a = (crc ^ data[i]) & 0xff; + const b = crcTable[a]; + crc = crc >>> 8 ^ b; + } + + return crc ^ -1; + } + + function writePngChunk(type, body, data, offset) { + let p = offset; + const len = body.length; + data[p] = len >> 24 & 0xff; + data[p + 1] = len >> 16 & 0xff; + data[p + 2] = len >> 8 & 0xff; + data[p + 3] = len & 0xff; + p += 4; + data[p] = type.charCodeAt(0) & 0xff; + data[p + 1] = type.charCodeAt(1) & 0xff; + data[p + 2] = type.charCodeAt(2) & 0xff; + data[p + 3] = type.charCodeAt(3) & 0xff; + p += 4; + data.set(body, p); + p += body.length; + const crc = crc32(data, offset + 4, p); + data[p] = crc >> 24 & 0xff; + data[p + 1] = crc >> 16 & 0xff; + data[p + 2] = crc >> 8 & 0xff; + data[p + 3] = crc & 0xff; + } + + function adler32(data, start, end) { + let a = 1; + let b = 0; + + for (let i = start; i < end; ++i) { + a = (a + (data[i] & 0xff)) % 65521; + b = (b + a) % 65521; + } + + return b << 16 | a; + } + + function deflateSync(literals) { + if (!_is_node.isNodeJS) { + return deflateSyncUncompressed(literals); + } + + try { + let input; + + if (parseInt(process.versions.node) >= 8) { + input = literals; + } else { + input = Buffer.from(literals); + } + + const output = require("zlib").deflateSync(input, { + level: 9 + }); + + return output instanceof Uint8Array ? output : new Uint8Array(output); + } catch (e) { + (0, _util.warn)("Not compressing PNG because zlib.deflateSync is unavailable: " + e); + } + + return deflateSyncUncompressed(literals); + } + + function deflateSyncUncompressed(literals) { + let len = literals.length; + const maxBlockLength = 0xffff; + const deflateBlocks = Math.ceil(len / maxBlockLength); + const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4); + let pi = 0; + idat[pi++] = 0x78; + idat[pi++] = 0x9c; + let pos = 0; + + while (len > maxBlockLength) { + idat[pi++] = 0x00; + idat[pi++] = 0xff; + idat[pi++] = 0xff; + idat[pi++] = 0x00; + idat[pi++] = 0x00; + idat.set(literals.subarray(pos, pos + maxBlockLength), pi); + pi += maxBlockLength; + pos += maxBlockLength; + len -= maxBlockLength; + } + + idat[pi++] = 0x01; + idat[pi++] = len & 0xff; + idat[pi++] = len >> 8 & 0xff; + idat[pi++] = ~len & 0xffff & 0xff; + idat[pi++] = (~len & 0xffff) >> 8 & 0xff; + idat.set(literals.subarray(pos), pi); + pi += literals.length - pos; + const adler = adler32(literals, 0, literals.length); + idat[pi++] = adler >> 24 & 0xff; + idat[pi++] = adler >> 16 & 0xff; + idat[pi++] = adler >> 8 & 0xff; + idat[pi++] = adler & 0xff; + return idat; + } + + function encode(imgData, kind, forceDataSchema, isMask) { + const width = imgData.width; + const height = imgData.height; + let bitDepth, colorType, lineSize; + const bytes = imgData.data; + + switch (kind) { + case _util.ImageKind.GRAYSCALE_1BPP: + colorType = 0; + bitDepth = 1; + lineSize = width + 7 >> 3; + break; + + case _util.ImageKind.RGB_24BPP: + colorType = 2; + bitDepth = 8; + lineSize = width * 3; + break; + + case _util.ImageKind.RGBA_32BPP: + colorType = 6; + bitDepth = 8; + lineSize = width * 4; + break; + + default: + throw new Error("invalid format"); + } + + const literals = new Uint8Array((1 + lineSize) * height); + let offsetLiterals = 0, + offsetBytes = 0; + + for (let y = 0; y < height; ++y) { + literals[offsetLiterals++] = 0; + literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals); + offsetBytes += lineSize; + offsetLiterals += lineSize; + } + + if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) { + offsetLiterals = 0; + + for (let y = 0; y < height; y++) { + offsetLiterals++; + + for (let i = 0; i < lineSize; i++) { + literals[offsetLiterals++] ^= 0xff; + } + } + } + + const ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]); + const idat = deflateSync(literals); + const pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length; + const data = new Uint8Array(pngLength); + let offset = 0; + data.set(PNG_HEADER, offset); + offset += PNG_HEADER.length; + writePngChunk("IHDR", ihdr, data, offset); + offset += CHUNK_WRAPPER_SIZE + ihdr.length; + writePngChunk("IDATA", idat, data, offset); + offset += CHUNK_WRAPPER_SIZE + idat.length; + writePngChunk("IEND", new Uint8Array(0), data, offset); + return createObjectURL(data, "image/png", forceDataSchema); + } + + return function convertImgDataToPng(imgData, forceDataSchema, isMask) { + const kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind; + return encode(imgData, kind, forceDataSchema, isMask); + }; + }(); + + class SVGExtraState { + constructor() { + this.fontSizeScale = 1; + this.fontWeight = SVG_DEFAULTS.fontWeight; + this.fontSize = 0; + this.textMatrix = _util.IDENTITY_MATRIX; + this.fontMatrix = _util.FONT_IDENTITY_MATRIX; + this.leading = 0; + this.textRenderingMode = _util.TextRenderingMode.FILL; + this.textMatrixScale = 1; + this.x = 0; + this.y = 0; + this.lineX = 0; + this.lineY = 0; + this.charSpacing = 0; + this.wordSpacing = 0; + this.textHScale = 1; + this.textRise = 0; + this.fillColor = SVG_DEFAULTS.fillColor; + this.strokeColor = "#000000"; + this.fillAlpha = 1; + this.strokeAlpha = 1; + this.lineWidth = 1; + this.lineJoin = ""; + this.lineCap = ""; + this.miterLimit = 0; + this.dashArray = []; + this.dashPhase = 0; + this.dependencies = []; + this.activeClipUrl = null; + this.clipGroup = null; + this.maskId = ""; + } + + clone() { + return Object.create(this); + } + + setCurrentPoint(x, y) { + this.x = x; + this.y = y; + } + + } + + function opListToTree(opList) { + let opTree = []; + const tmp = []; + + for (const opListElement of opList) { + if (opListElement.fn === "save") { + opTree.push({ + fnId: 92, + fn: "group", + items: [] + }); + tmp.push(opTree); + opTree = opTree.at(-1).items; + continue; + } + + if (opListElement.fn === "restore") { + opTree = tmp.pop(); + } else { + opTree.push(opListElement); + } + } + + return opTree; + } + + function pf(value) { + if (Number.isInteger(value)) { + return value.toString(); + } + + const s = value.toFixed(10); + let i = s.length - 1; + + if (s[i] !== "0") { + return s; + } + + do { + i--; + } while (s[i] === "0"); + + return s.substring(0, s[i] === "." ? i : i + 1); + } + + function pm(m) { + if (m[4] === 0 && m[5] === 0) { + if (m[1] === 0 && m[2] === 0) { + if (m[0] === 1 && m[3] === 1) { + return ""; + } + + return `scale(${pf(m[0])} ${pf(m[3])})`; + } + + if (m[0] === m[3] && m[1] === -m[2]) { + const a = Math.acos(m[0]) * 180 / Math.PI; + return `rotate(${pf(a)})`; + } + } else { + if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) { + return `translate(${pf(m[4])} ${pf(m[5])})`; + } + } + + return `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` + `${pf(m[5])})`; + } + + let clipCount = 0; + let maskCount = 0; + let shadingCount = 0; + exports.SVGGraphics = SVGGraphics = class { + constructor(commonObjs, objs, forceDataSchema = false) { + (0, _display_utils.deprecated)("The SVG back-end is no longer maintained and *may* be removed in the future."); + this.svgFactory = new _display_utils.DOMSVGFactory(); + this.current = new SVGExtraState(); + this.transformMatrix = _util.IDENTITY_MATRIX; + this.transformStack = []; + this.extraStack = []; + this.commonObjs = commonObjs; + this.objs = objs; + this.pendingClip = null; + this.pendingEOFill = false; + this.embedFonts = false; + this.embeddedFonts = Object.create(null); + this.cssStyle = null; + this.forceDataSchema = !!forceDataSchema; + this._operatorIdMapping = []; + + for (const op in _util.OPS) { + this._operatorIdMapping[_util.OPS[op]] = op; + } + } + + save() { + this.transformStack.push(this.transformMatrix); + const old = this.current; + this.extraStack.push(old); + this.current = old.clone(); + } + + restore() { + this.transformMatrix = this.transformStack.pop(); + this.current = this.extraStack.pop(); + this.pendingClip = null; + this.tgrp = null; + } + + group(items) { + this.save(); + this.executeOpTree(items); + this.restore(); + } + + loadDependencies(operatorList) { + const fnArray = operatorList.fnArray; + const argsArray = operatorList.argsArray; + + for (let i = 0, ii = fnArray.length; i < ii; i++) { + if (fnArray[i] !== _util.OPS.dependency) { + continue; + } + + for (const obj of argsArray[i]) { + const objsPool = obj.startsWith("g_") ? this.commonObjs : this.objs; + const promise = new Promise(resolve => { + objsPool.get(obj, resolve); + }); + this.current.dependencies.push(promise); + } + } + + return Promise.all(this.current.dependencies); + } + + transform(a, b, c, d, e, f) { + const transformMatrix = [a, b, c, d, e, f]; + this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix); + this.tgrp = null; + } + + getSVG(operatorList, viewport) { + this.viewport = viewport; + + const svgElement = this._initialize(viewport); + + return this.loadDependencies(operatorList).then(() => { + this.transformMatrix = _util.IDENTITY_MATRIX; + this.executeOpTree(this.convertOpList(operatorList)); + return svgElement; + }); + } + + convertOpList(operatorList) { + const operatorIdMapping = this._operatorIdMapping; + const argsArray = operatorList.argsArray; + const fnArray = operatorList.fnArray; + const opList = []; + + for (let i = 0, ii = fnArray.length; i < ii; i++) { + const fnId = fnArray[i]; + opList.push({ + fnId, + fn: operatorIdMapping[fnId], + args: argsArray[i] + }); + } + + return opListToTree(opList); + } + + executeOpTree(opTree) { + for (const opTreeElement of opTree) { + const fn = opTreeElement.fn; + const fnId = opTreeElement.fnId; + const args = opTreeElement.args; + + switch (fnId | 0) { + case _util.OPS.beginText: + this.beginText(); + break; + + case _util.OPS.dependency: + break; + + case _util.OPS.setLeading: + this.setLeading(args); + break; + + case _util.OPS.setLeadingMoveText: + this.setLeadingMoveText(args[0], args[1]); + break; + + case _util.OPS.setFont: + this.setFont(args); + break; + + case _util.OPS.showText: + this.showText(args[0]); + break; + + case _util.OPS.showSpacedText: + this.showText(args[0]); + break; + + case _util.OPS.endText: + this.endText(); + break; + + case _util.OPS.moveText: + this.moveText(args[0], args[1]); + break; + + case _util.OPS.setCharSpacing: + this.setCharSpacing(args[0]); + break; + + case _util.OPS.setWordSpacing: + this.setWordSpacing(args[0]); + break; + + case _util.OPS.setHScale: + this.setHScale(args[0]); + break; + + case _util.OPS.setTextMatrix: + this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); + break; + + case _util.OPS.setTextRise: + this.setTextRise(args[0]); + break; + + case _util.OPS.setTextRenderingMode: + this.setTextRenderingMode(args[0]); + break; + + case _util.OPS.setLineWidth: + this.setLineWidth(args[0]); + break; + + case _util.OPS.setLineJoin: + this.setLineJoin(args[0]); + break; + + case _util.OPS.setLineCap: + this.setLineCap(args[0]); + break; + + case _util.OPS.setMiterLimit: + this.setMiterLimit(args[0]); + break; + + case _util.OPS.setFillRGBColor: + this.setFillRGBColor(args[0], args[1], args[2]); + break; + + case _util.OPS.setStrokeRGBColor: + this.setStrokeRGBColor(args[0], args[1], args[2]); + break; + + case _util.OPS.setStrokeColorN: + this.setStrokeColorN(args); + break; + + case _util.OPS.setFillColorN: + this.setFillColorN(args); + break; + + case _util.OPS.shadingFill: + this.shadingFill(args[0]); + break; + + case _util.OPS.setDash: + this.setDash(args[0], args[1]); + break; + + case _util.OPS.setRenderingIntent: + this.setRenderingIntent(args[0]); + break; + + case _util.OPS.setFlatness: + this.setFlatness(args[0]); + break; + + case _util.OPS.setGState: + this.setGState(args[0]); + break; + + case _util.OPS.fill: + this.fill(); + break; + + case _util.OPS.eoFill: + this.eoFill(); + break; + + case _util.OPS.stroke: + this.stroke(); + break; + + case _util.OPS.fillStroke: + this.fillStroke(); + break; + + case _util.OPS.eoFillStroke: + this.eoFillStroke(); + break; + + case _util.OPS.clip: + this.clip("nonzero"); + break; + + case _util.OPS.eoClip: + this.clip("evenodd"); + break; + + case _util.OPS.paintSolidColorImageMask: + this.paintSolidColorImageMask(); + break; + + case _util.OPS.paintImageXObject: + this.paintImageXObject(args[0]); + break; + + case _util.OPS.paintInlineImageXObject: + this.paintInlineImageXObject(args[0]); + break; + + case _util.OPS.paintImageMaskXObject: + this.paintImageMaskXObject(args[0]); + break; + + case _util.OPS.paintFormXObjectBegin: + this.paintFormXObjectBegin(args[0], args[1]); + break; + + case _util.OPS.paintFormXObjectEnd: + this.paintFormXObjectEnd(); + break; + + case _util.OPS.closePath: + this.closePath(); + break; + + case _util.OPS.closeStroke: + this.closeStroke(); + break; + + case _util.OPS.closeFillStroke: + this.closeFillStroke(); + break; + + case _util.OPS.closeEOFillStroke: + this.closeEOFillStroke(); + break; + + case _util.OPS.nextLine: + this.nextLine(); + break; + + case _util.OPS.transform: + this.transform(args[0], args[1], args[2], args[3], args[4], args[5]); + break; + + case _util.OPS.constructPath: + this.constructPath(args[0], args[1]); + break; + + case _util.OPS.endPath: + this.endPath(); + break; + + case 92: + this.group(opTreeElement.items); + break; + + default: + (0, _util.warn)(`Unimplemented operator ${fn}`); + break; + } + } + } + + setWordSpacing(wordSpacing) { + this.current.wordSpacing = wordSpacing; + } + + setCharSpacing(charSpacing) { + this.current.charSpacing = charSpacing; + } + + nextLine() { + this.moveText(0, this.current.leading); + } + + setTextMatrix(a, b, c, d, e, f) { + const current = this.current; + current.textMatrix = current.lineMatrix = [a, b, c, d, e, f]; + current.textMatrixScale = Math.hypot(a, b); + current.x = current.lineX = 0; + current.y = current.lineY = 0; + current.xcoords = []; + current.ycoords = []; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.tspan.setAttributeNS(null, "font-family", current.fontFamily); + current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`); + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + current.txtElement = this.svgFactory.createElement("svg:text"); + current.txtElement.append(current.tspan); + } + + beginText() { + const current = this.current; + current.x = current.lineX = 0; + current.y = current.lineY = 0; + current.textMatrix = _util.IDENTITY_MATRIX; + current.lineMatrix = _util.IDENTITY_MATRIX; + current.textMatrixScale = 1; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.txtElement = this.svgFactory.createElement("svg:text"); + current.txtgrp = this.svgFactory.createElement("svg:g"); + current.xcoords = []; + current.ycoords = []; + } + + moveText(x, y) { + const current = this.current; + current.x = current.lineX += x; + current.y = current.lineY += y; + current.xcoords = []; + current.ycoords = []; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.tspan.setAttributeNS(null, "font-family", current.fontFamily); + current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`); + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + } + + showText(glyphs) { + const current = this.current; + const font = current.font; + const fontSize = current.fontSize; + + if (fontSize === 0) { + return; + } + + const fontSizeScale = current.fontSizeScale; + const charSpacing = current.charSpacing; + const wordSpacing = current.wordSpacing; + const fontDirection = current.fontDirection; + const textHScale = current.textHScale * fontDirection; + const vertical = font.vertical; + const spacingDir = vertical ? 1 : -1; + const defaultVMetrics = font.defaultVMetrics; + const widthAdvanceScale = fontSize * current.fontMatrix[0]; + let x = 0; + + for (const glyph of glyphs) { + if (glyph === null) { + x += fontDirection * wordSpacing; + continue; + } else if (typeof glyph === "number") { + x += spacingDir * glyph * fontSize / 1000; + continue; + } + + const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + const character = glyph.fontChar; + let scaledX, scaledY; + let width = glyph.width; + + if (vertical) { + let vx; + const vmetric = glyph.vmetric || defaultVMetrics; + vx = glyph.vmetric ? vmetric[1] : width * 0.5; + vx = -vx * widthAdvanceScale; + const vy = vmetric[2] * widthAdvanceScale; + width = vmetric ? -vmetric[0] : width; + scaledX = vx / fontSizeScale; + scaledY = (x + vy) / fontSizeScale; + } else { + scaledX = x / fontSizeScale; + scaledY = 0; + } + + if (glyph.isInFont || font.missingFile) { + current.xcoords.push(current.x + scaledX); + + if (vertical) { + current.ycoords.push(-current.y + scaledY); + } + + current.tspan.textContent += character; + } else {} + + let charWidth; + + if (vertical) { + charWidth = width * widthAdvanceScale - spacing * fontDirection; + } else { + charWidth = width * widthAdvanceScale + spacing * fontDirection; + } + + x += charWidth; + } + + current.tspan.setAttributeNS(null, "x", current.xcoords.map(pf).join(" ")); + + if (vertical) { + current.tspan.setAttributeNS(null, "y", current.ycoords.map(pf).join(" ")); + } else { + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + } + + if (vertical) { + current.y -= x; + } else { + current.x += x * textHScale; + } + + current.tspan.setAttributeNS(null, "font-family", current.fontFamily); + current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`); + + if (current.fontStyle !== SVG_DEFAULTS.fontStyle) { + current.tspan.setAttributeNS(null, "font-style", current.fontStyle); + } + + if (current.fontWeight !== SVG_DEFAULTS.fontWeight) { + current.tspan.setAttributeNS(null, "font-weight", current.fontWeight); + } + + const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + if (current.fillColor !== SVG_DEFAULTS.fillColor) { + current.tspan.setAttributeNS(null, "fill", current.fillColor); + } + + if (current.fillAlpha < 1) { + current.tspan.setAttributeNS(null, "fill-opacity", current.fillAlpha); + } + } else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) { + current.tspan.setAttributeNS(null, "fill", "transparent"); + } else { + current.tspan.setAttributeNS(null, "fill", "none"); + } + + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + const lineWidthScale = 1 / (current.textMatrixScale || 1); + + this._setStrokeAttributes(current.tspan, lineWidthScale); + } + + let textMatrix = current.textMatrix; + + if (current.textRise !== 0) { + textMatrix = textMatrix.slice(); + textMatrix[5] += current.textRise; + } + + current.txtElement.setAttributeNS(null, "transform", `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`); + current.txtElement.setAttributeNS(XML_NS, "xml:space", "preserve"); + current.txtElement.append(current.tspan); + current.txtgrp.append(current.txtElement); + + this._ensureTransformGroup().append(current.txtElement); + } + + setLeadingMoveText(x, y) { + this.setLeading(-y); + this.moveText(x, y); + } + + addFontStyle(fontObj) { + if (!fontObj.data) { + throw new Error("addFontStyle: No font data available, " + 'ensure that the "fontExtraProperties" API parameter is set.'); + } + + if (!this.cssStyle) { + this.cssStyle = this.svgFactory.createElement("svg:style"); + this.cssStyle.setAttributeNS(null, "type", "text/css"); + this.defs.append(this.cssStyle); + } + + const url = createObjectURL(fontObj.data, fontObj.mimetype, this.forceDataSchema); + this.cssStyle.textContent += `@font-face { font-family: "${fontObj.loadedName}";` + ` src: url(${url}); }\n`; + } + + setFont(details) { + const current = this.current; + const fontObj = this.commonObjs.get(details[0]); + let size = details[1]; + current.font = fontObj; + + if (this.embedFonts && !fontObj.missingFile && !this.embeddedFonts[fontObj.loadedName]) { + this.addFontStyle(fontObj); + this.embeddedFonts[fontObj.loadedName] = fontObj; + } + + current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX; + let bold = "normal"; + + if (fontObj.black) { + bold = "900"; + } else if (fontObj.bold) { + bold = "bold"; + } + + const italic = fontObj.italic ? "italic" : "normal"; + + if (size < 0) { + size = -size; + current.fontDirection = -1; + } else { + current.fontDirection = 1; + } + + current.fontSize = size; + current.fontFamily = fontObj.loadedName; + current.fontWeight = bold; + current.fontStyle = italic; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + current.xcoords = []; + current.ycoords = []; + } + + endText() { + const current = this.current; + + if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement?.hasChildNodes()) { + current.element = current.txtElement; + this.clip("nonzero"); + this.endPath(); + } + } + + setLineWidth(width) { + if (width > 0) { + this.current.lineWidth = width; + } + } + + setLineCap(style) { + this.current.lineCap = LINE_CAP_STYLES[style]; + } + + setLineJoin(style) { + this.current.lineJoin = LINE_JOIN_STYLES[style]; + } + + setMiterLimit(limit) { + this.current.miterLimit = limit; + } + + setStrokeAlpha(strokeAlpha) { + this.current.strokeAlpha = strokeAlpha; + } + + setStrokeRGBColor(r, g, b) { + this.current.strokeColor = _util.Util.makeHexColor(r, g, b); + } + + setFillAlpha(fillAlpha) { + this.current.fillAlpha = fillAlpha; + } + + setFillRGBColor(r, g, b) { + this.current.fillColor = _util.Util.makeHexColor(r, g, b); + this.current.tspan = this.svgFactory.createElement("svg:tspan"); + this.current.xcoords = []; + this.current.ycoords = []; + } + + setStrokeColorN(args) { + this.current.strokeColor = this._makeColorN_Pattern(args); + } + + setFillColorN(args) { + this.current.fillColor = this._makeColorN_Pattern(args); + } + + shadingFill(args) { + const width = this.viewport.width; + const height = this.viewport.height; + + const inv = _util.Util.inverseTransform(this.transformMatrix); + + const bl = _util.Util.applyTransform([0, 0], inv); + + const br = _util.Util.applyTransform([0, height], inv); + + const ul = _util.Util.applyTransform([width, 0], inv); + + const ur = _util.Util.applyTransform([width, height], inv); + + const x0 = Math.min(bl[0], br[0], ul[0], ur[0]); + const y0 = Math.min(bl[1], br[1], ul[1], ur[1]); + const x1 = Math.max(bl[0], br[0], ul[0], ur[0]); + const y1 = Math.max(bl[1], br[1], ul[1], ur[1]); + const rect = this.svgFactory.createElement("svg:rect"); + rect.setAttributeNS(null, "x", x0); + rect.setAttributeNS(null, "y", y0); + rect.setAttributeNS(null, "width", x1 - x0); + rect.setAttributeNS(null, "height", y1 - y0); + rect.setAttributeNS(null, "fill", this._makeShadingPattern(args)); + + if (this.current.fillAlpha < 1) { + rect.setAttributeNS(null, "fill-opacity", this.current.fillAlpha); + } + + this._ensureTransformGroup().append(rect); + } + + _makeColorN_Pattern(args) { + if (args[0] === "TilingPattern") { + return this._makeTilingPattern(args); + } + + return this._makeShadingPattern(args); + } + + _makeTilingPattern(args) { + const color = args[1]; + const operatorList = args[2]; + const matrix = args[3] || _util.IDENTITY_MATRIX; + const [x0, y0, x1, y1] = args[4]; + const xstep = args[5]; + const ystep = args[6]; + const paintType = args[7]; + const tilingId = `shading${shadingCount++}`; + + const [tx0, ty0, tx1, ty1] = _util.Util.normalizeRect([..._util.Util.applyTransform([x0, y0], matrix), ..._util.Util.applyTransform([x1, y1], matrix)]); + + const [xscale, yscale] = _util.Util.singularValueDecompose2dScale(matrix); + + const txstep = xstep * xscale; + const tystep = ystep * yscale; + const tiling = this.svgFactory.createElement("svg:pattern"); + tiling.setAttributeNS(null, "id", tilingId); + tiling.setAttributeNS(null, "patternUnits", "userSpaceOnUse"); + tiling.setAttributeNS(null, "width", txstep); + tiling.setAttributeNS(null, "height", tystep); + tiling.setAttributeNS(null, "x", `${tx0}`); + tiling.setAttributeNS(null, "y", `${ty0}`); + const svg = this.svg; + const transformMatrix = this.transformMatrix; + const fillColor = this.current.fillColor; + const strokeColor = this.current.strokeColor; + const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0); + this.svg = bbox; + this.transformMatrix = matrix; + + if (paintType === 2) { + const cssColor = _util.Util.makeHexColor(...color); + + this.current.fillColor = cssColor; + this.current.strokeColor = cssColor; + } + + this.executeOpTree(this.convertOpList(operatorList)); + this.svg = svg; + this.transformMatrix = transformMatrix; + this.current.fillColor = fillColor; + this.current.strokeColor = strokeColor; + tiling.append(bbox.childNodes[0]); + this.defs.append(tiling); + return `url(#${tilingId})`; + } + + _makeShadingPattern(args) { + if (typeof args === "string") { + args = this.objs.get(args); + } + + switch (args[0]) { + case "RadialAxial": + const shadingId = `shading${shadingCount++}`; + const colorStops = args[3]; + let gradient; + + switch (args[1]) { + case "axial": + const point0 = args[4]; + const point1 = args[5]; + gradient = this.svgFactory.createElement("svg:linearGradient"); + gradient.setAttributeNS(null, "id", shadingId); + gradient.setAttributeNS(null, "gradientUnits", "userSpaceOnUse"); + gradient.setAttributeNS(null, "x1", point0[0]); + gradient.setAttributeNS(null, "y1", point0[1]); + gradient.setAttributeNS(null, "x2", point1[0]); + gradient.setAttributeNS(null, "y2", point1[1]); + break; + + case "radial": + const focalPoint = args[4]; + const circlePoint = args[5]; + const focalRadius = args[6]; + const circleRadius = args[7]; + gradient = this.svgFactory.createElement("svg:radialGradient"); + gradient.setAttributeNS(null, "id", shadingId); + gradient.setAttributeNS(null, "gradientUnits", "userSpaceOnUse"); + gradient.setAttributeNS(null, "cx", circlePoint[0]); + gradient.setAttributeNS(null, "cy", circlePoint[1]); + gradient.setAttributeNS(null, "r", circleRadius); + gradient.setAttributeNS(null, "fx", focalPoint[0]); + gradient.setAttributeNS(null, "fy", focalPoint[1]); + gradient.setAttributeNS(null, "fr", focalRadius); + break; + + default: + throw new Error(`Unknown RadialAxial type: ${args[1]}`); + } + + for (const colorStop of colorStops) { + const stop = this.svgFactory.createElement("svg:stop"); + stop.setAttributeNS(null, "offset", colorStop[0]); + stop.setAttributeNS(null, "stop-color", colorStop[1]); + gradient.append(stop); + } + + this.defs.append(gradient); + return `url(#${shadingId})`; + + case "Mesh": + (0, _util.warn)("Unimplemented pattern Mesh"); + return null; + + case "Dummy": + return "hotpink"; + + default: + throw new Error(`Unknown IR type: ${args[0]}`); + } + } + + setDash(dashArray, dashPhase) { + this.current.dashArray = dashArray; + this.current.dashPhase = dashPhase; + } + + constructPath(ops, args) { + const current = this.current; + let x = current.x, + y = current.y; + let d = []; + let j = 0; + + for (const op of ops) { + switch (op | 0) { + case _util.OPS.rectangle: + x = args[j++]; + y = args[j++]; + const width = args[j++]; + const height = args[j++]; + const xw = x + width; + const yh = y + height; + d.push("M", pf(x), pf(y), "L", pf(xw), pf(y), "L", pf(xw), pf(yh), "L", pf(x), pf(yh), "Z"); + break; + + case _util.OPS.moveTo: + x = args[j++]; + y = args[j++]; + d.push("M", pf(x), pf(y)); + break; + + case _util.OPS.lineTo: + x = args[j++]; + y = args[j++]; + d.push("L", pf(x), pf(y)); + break; + + case _util.OPS.curveTo: + x = args[j + 4]; + y = args[j + 5]; + d.push("C", pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y)); + j += 6; + break; + + case _util.OPS.curveTo2: + d.push("C", pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3])); + x = args[j + 2]; + y = args[j + 3]; + j += 4; + break; + + case _util.OPS.curveTo3: + x = args[j + 2]; + y = args[j + 3]; + d.push("C", pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y)); + j += 4; + break; + + case _util.OPS.closePath: + d.push("Z"); + break; + } + } + + d = d.join(" "); + + if (current.path && ops.length > 0 && ops[0] !== _util.OPS.rectangle && ops[0] !== _util.OPS.moveTo) { + d = current.path.getAttributeNS(null, "d") + d; + } else { + current.path = this.svgFactory.createElement("svg:path"); + + this._ensureTransformGroup().append(current.path); + } + + current.path.setAttributeNS(null, "d", d); + current.path.setAttributeNS(null, "fill", "none"); + current.element = current.path; + current.setCurrentPoint(x, y); + } + + endPath() { + const current = this.current; + current.path = null; + + if (!this.pendingClip) { + return; + } + + if (!current.element) { + this.pendingClip = null; + return; + } + + const clipId = `clippath${clipCount++}`; + const clipPath = this.svgFactory.createElement("svg:clipPath"); + clipPath.setAttributeNS(null, "id", clipId); + clipPath.setAttributeNS(null, "transform", pm(this.transformMatrix)); + const clipElement = current.element.cloneNode(true); + + if (this.pendingClip === "evenodd") { + clipElement.setAttributeNS(null, "clip-rule", "evenodd"); + } else { + clipElement.setAttributeNS(null, "clip-rule", "nonzero"); + } + + this.pendingClip = null; + clipPath.append(clipElement); + this.defs.append(clipPath); + + if (current.activeClipUrl) { + current.clipGroup = null; + + for (const prev of this.extraStack) { + prev.clipGroup = null; + } + + clipPath.setAttributeNS(null, "clip-path", current.activeClipUrl); + } + + current.activeClipUrl = `url(#${clipId})`; + this.tgrp = null; + } + + clip(type) { + this.pendingClip = type; + } + + closePath() { + const current = this.current; + + if (current.path) { + const d = `${current.path.getAttributeNS(null, "d")}Z`; + current.path.setAttributeNS(null, "d", d); + } + } + + setLeading(leading) { + this.current.leading = -leading; + } + + setTextRise(textRise) { + this.current.textRise = textRise; + } + + setTextRenderingMode(textRenderingMode) { + this.current.textRenderingMode = textRenderingMode; + } + + setHScale(scale) { + this.current.textHScale = scale / 100; + } + + setRenderingIntent(intent) {} + + setFlatness(flatness) {} + + setGState(states) { + for (const [key, value] of states) { + switch (key) { + case "LW": + this.setLineWidth(value); + break; + + case "LC": + this.setLineCap(value); + break; + + case "LJ": + this.setLineJoin(value); + break; + + case "ML": + this.setMiterLimit(value); + break; + + case "D": + this.setDash(value[0], value[1]); + break; + + case "RI": + this.setRenderingIntent(value); + break; + + case "FL": + this.setFlatness(value); + break; + + case "Font": + this.setFont(value); + break; + + case "CA": + this.setStrokeAlpha(value); + break; + + case "ca": + this.setFillAlpha(value); + break; + + default: + (0, _util.warn)(`Unimplemented graphic state operator ${key}`); + break; + } + } + } + + fill() { + const current = this.current; + + if (current.element) { + current.element.setAttributeNS(null, "fill", current.fillColor); + current.element.setAttributeNS(null, "fill-opacity", current.fillAlpha); + this.endPath(); + } + } + + stroke() { + const current = this.current; + + if (current.element) { + this._setStrokeAttributes(current.element); + + current.element.setAttributeNS(null, "fill", "none"); + this.endPath(); + } + } + + _setStrokeAttributes(element, lineWidthScale = 1) { + const current = this.current; + let dashArray = current.dashArray; + + if (lineWidthScale !== 1 && dashArray.length > 0) { + dashArray = dashArray.map(function (value) { + return lineWidthScale * value; + }); + } + + element.setAttributeNS(null, "stroke", current.strokeColor); + element.setAttributeNS(null, "stroke-opacity", current.strokeAlpha); + element.setAttributeNS(null, "stroke-miterlimit", pf(current.miterLimit)); + element.setAttributeNS(null, "stroke-linecap", current.lineCap); + element.setAttributeNS(null, "stroke-linejoin", current.lineJoin); + element.setAttributeNS(null, "stroke-width", pf(lineWidthScale * current.lineWidth) + "px"); + element.setAttributeNS(null, "stroke-dasharray", dashArray.map(pf).join(" ")); + element.setAttributeNS(null, "stroke-dashoffset", pf(lineWidthScale * current.dashPhase) + "px"); + } + + eoFill() { + if (this.current.element) { + this.current.element.setAttributeNS(null, "fill-rule", "evenodd"); + } + + this.fill(); + } + + fillStroke() { + this.stroke(); + this.fill(); + } + + eoFillStroke() { + if (this.current.element) { + this.current.element.setAttributeNS(null, "fill-rule", "evenodd"); + } + + this.fillStroke(); + } + + closeStroke() { + this.closePath(); + this.stroke(); + } + + closeFillStroke() { + this.closePath(); + this.fillStroke(); + } + + closeEOFillStroke() { + this.closePath(); + this.eoFillStroke(); + } + + paintSolidColorImageMask() { + const rect = this.svgFactory.createElement("svg:rect"); + rect.setAttributeNS(null, "x", "0"); + rect.setAttributeNS(null, "y", "0"); + rect.setAttributeNS(null, "width", "1px"); + rect.setAttributeNS(null, "height", "1px"); + rect.setAttributeNS(null, "fill", this.current.fillColor); + + this._ensureTransformGroup().append(rect); + } + + paintImageXObject(objId) { + const imgData = objId.startsWith("g_") ? this.commonObjs.get(objId) : this.objs.get(objId); + + if (!imgData) { + (0, _util.warn)(`Dependent image with object ID ${objId} is not ready yet`); + return; + } + + this.paintInlineImageXObject(imgData); + } + + paintInlineImageXObject(imgData, mask) { + const width = imgData.width; + const height = imgData.height; + const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask); + const cliprect = this.svgFactory.createElement("svg:rect"); + cliprect.setAttributeNS(null, "x", "0"); + cliprect.setAttributeNS(null, "y", "0"); + cliprect.setAttributeNS(null, "width", pf(width)); + cliprect.setAttributeNS(null, "height", pf(height)); + this.current.element = cliprect; + this.clip("nonzero"); + const imgEl = this.svgFactory.createElement("svg:image"); + imgEl.setAttributeNS(XLINK_NS, "xlink:href", imgSrc); + imgEl.setAttributeNS(null, "x", "0"); + imgEl.setAttributeNS(null, "y", pf(-height)); + imgEl.setAttributeNS(null, "width", pf(width) + "px"); + imgEl.setAttributeNS(null, "height", pf(height) + "px"); + imgEl.setAttributeNS(null, "transform", `scale(${pf(1 / width)} ${pf(-1 / height)})`); + + if (mask) { + mask.append(imgEl); + } else { + this._ensureTransformGroup().append(imgEl); + } + } + + paintImageMaskXObject(imgData) { + const current = this.current; + const width = imgData.width; + const height = imgData.height; + const fillColor = current.fillColor; + current.maskId = `mask${maskCount++}`; + const mask = this.svgFactory.createElement("svg:mask"); + mask.setAttributeNS(null, "id", current.maskId); + const rect = this.svgFactory.createElement("svg:rect"); + rect.setAttributeNS(null, "x", "0"); + rect.setAttributeNS(null, "y", "0"); + rect.setAttributeNS(null, "width", pf(width)); + rect.setAttributeNS(null, "height", pf(height)); + rect.setAttributeNS(null, "fill", fillColor); + rect.setAttributeNS(null, "mask", `url(#${current.maskId})`); + this.defs.append(mask); + + this._ensureTransformGroup().append(rect); + + this.paintInlineImageXObject(imgData, mask); + } + + paintFormXObjectBegin(matrix, bbox) { + if (Array.isArray(matrix) && matrix.length === 6) { + this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]); + } + + if (bbox) { + const width = bbox[2] - bbox[0]; + const height = bbox[3] - bbox[1]; + const cliprect = this.svgFactory.createElement("svg:rect"); + cliprect.setAttributeNS(null, "x", bbox[0]); + cliprect.setAttributeNS(null, "y", bbox[1]); + cliprect.setAttributeNS(null, "width", pf(width)); + cliprect.setAttributeNS(null, "height", pf(height)); + this.current.element = cliprect; + this.clip("nonzero"); + this.endPath(); + } + } + + paintFormXObjectEnd() {} + + _initialize(viewport) { + const svg = this.svgFactory.create(viewport.width, viewport.height); + const definitions = this.svgFactory.createElement("svg:defs"); + svg.append(definitions); + this.defs = definitions; + const rootGroup = this.svgFactory.createElement("svg:g"); + rootGroup.setAttributeNS(null, "transform", pm(viewport.transform)); + svg.append(rootGroup); + this.svg = rootGroup; + return svg; + } + + _ensureClipGroup() { + if (!this.current.clipGroup) { + const clipGroup = this.svgFactory.createElement("svg:g"); + clipGroup.setAttributeNS(null, "clip-path", this.current.activeClipUrl); + this.svg.append(clipGroup); + this.current.clipGroup = clipGroup; + } + + return this.current.clipGroup; + } + + _ensureTransformGroup() { + if (!this.tgrp) { + this.tgrp = this.svgFactory.createElement("svg:g"); + this.tgrp.setAttributeNS(null, "transform", pm(this.transformMatrix)); + + if (this.current.activeClipUrl) { + this._ensureClipGroup().append(this.tgrp); + } else { + this.svg.append(this.tgrp); + } + } + + return this.tgrp; + } + + }; } -if (isReadableStreamSupported) { - exports.ReadableStream = ReadableStream; -} else { - exports.ReadableStream = __w_pdfjs_require__(10).ReadableStream; + +/***/ }), +/* 32 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFNodeStream = void 0; + +var _util = __w_pdfjs_require__(1); + +var _network_utils = __w_pdfjs_require__(33); + +; + +const fs = require("fs"); + +const http = require("http"); + +const https = require("https"); + +const url = require("url"); + +const fileUriRegex = /^file:\/\/\/[a-zA-Z]:\//; + +function parseUrl(sourceUrl) { + const parsedUrl = url.parse(sourceUrl); + + if (parsedUrl.protocol === "file:" || parsedUrl.host) { + return parsedUrl; + } + + if (/^[a-z]:[/\\]/i.test(sourceUrl)) { + return url.parse(`file:///${sourceUrl}`); + } + + if (!parsedUrl.host) { + parsedUrl.protocol = "file:"; + } + + return parsedUrl; +} + +class PDFNodeStream { + constructor(source) { + this.source = source; + this.url = parseUrl(source.url); + this.isHttp = this.url.protocol === "http:" || this.url.protocol === "https:"; + this.isFsUrl = this.url.protocol === "file:"; + this.httpHeaders = this.isHttp && source.httpHeaders || {}; + this._fullRequestReader = null; + this._rangeRequestReaders = []; + } + + get _progressiveDataLength() { + return this._fullRequestReader?._loaded ?? 0; + } + + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFNodeStream.getFullReader can only be called once."); + this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this); + return this._fullRequestReader; + } + + getRangeReader(start, end) { + if (end <= this._progressiveDataLength) { + return null; + } + + const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end); + + this._rangeRequestReaders.push(rangeReader); + + return rangeReader; + } + + cancelAllRequests(reason) { + if (this._fullRequestReader) { + this._fullRequestReader.cancel(reason); + } + + for (const reader of this._rangeRequestReaders.slice(0)) { + reader.cancel(reason); + } + } + +} + +exports.PDFNodeStream = PDFNodeStream; + +class BaseFullReader { + constructor(stream) { + this._url = stream.url; + this._done = false; + this._storedError = null; + this.onProgress = null; + const source = stream.source; + this._contentLength = source.length; + this._loaded = 0; + this._filename = null; + this._disableRange = source.disableRange || false; + this._rangeChunkSize = source.rangeChunkSize; + + if (!this._rangeChunkSize && !this._disableRange) { + this._disableRange = true; + } + + this._isStreamingSupported = !source.disableStream; + this._isRangeSupported = !source.disableRange; + this._readableStream = null; + this._readCapability = (0, _util.createPromiseCapability)(); + this._headersCapability = (0, _util.createPromiseCapability)(); + } + + get headersReady() { + return this._headersCapability.promise; + } + + get filename() { + return this._filename; + } + + get contentLength() { + return this._contentLength; + } + + get isRangeSupported() { + return this._isRangeSupported; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + async read() { + await this._readCapability.promise; + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + if (this._storedError) { + throw this._storedError; + } + + const chunk = this._readableStream.read(); + + if (chunk === null) { + this._readCapability = (0, _util.createPromiseCapability)(); + return this.read(); + } + + this._loaded += chunk.length; + + if (this.onProgress) { + this.onProgress({ + loaded: this._loaded, + total: this._contentLength + }); + } + + const buffer = new Uint8Array(chunk).buffer; + return { + value: buffer, + done: false + }; + } + + cancel(reason) { + if (!this._readableStream) { + this._error(reason); + + return; + } + + this._readableStream.destroy(reason); + } + + _error(reason) { + this._storedError = reason; + + this._readCapability.resolve(); + } + + _setReadableStream(readableStream) { + this._readableStream = readableStream; + readableStream.on("readable", () => { + this._readCapability.resolve(); + }); + readableStream.on("end", () => { + readableStream.destroy(); + this._done = true; + + this._readCapability.resolve(); + }); + readableStream.on("error", reason => { + this._error(reason); + }); + + if (!this._isStreamingSupported && this._isRangeSupported) { + this._error(new _util.AbortException("streaming is disabled")); + } + + if (this._storedError) { + this._readableStream.destroy(this._storedError); + } + } + +} + +class BaseRangeReader { + constructor(stream) { + this._url = stream.url; + this._done = false; + this._storedError = null; + this.onProgress = null; + this._loaded = 0; + this._readableStream = null; + this._readCapability = (0, _util.createPromiseCapability)(); + const source = stream.source; + this._isStreamingSupported = !source.disableStream; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + async read() { + await this._readCapability.promise; + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + if (this._storedError) { + throw this._storedError; + } + + const chunk = this._readableStream.read(); + + if (chunk === null) { + this._readCapability = (0, _util.createPromiseCapability)(); + return this.read(); + } + + this._loaded += chunk.length; + + if (this.onProgress) { + this.onProgress({ + loaded: this._loaded + }); + } + + const buffer = new Uint8Array(chunk).buffer; + return { + value: buffer, + done: false + }; + } + + cancel(reason) { + if (!this._readableStream) { + this._error(reason); + + return; + } + + this._readableStream.destroy(reason); + } + + _error(reason) { + this._storedError = reason; + + this._readCapability.resolve(); + } + + _setReadableStream(readableStream) { + this._readableStream = readableStream; + readableStream.on("readable", () => { + this._readCapability.resolve(); + }); + readableStream.on("end", () => { + readableStream.destroy(); + this._done = true; + + this._readCapability.resolve(); + }); + readableStream.on("error", reason => { + this._error(reason); + }); + + if (this._storedError) { + this._readableStream.destroy(this._storedError); + } + } + +} + +function createRequestOptions(parsedUrl, headers) { + return { + protocol: parsedUrl.protocol, + auth: parsedUrl.auth, + host: parsedUrl.hostname, + port: parsedUrl.port, + path: parsedUrl.path, + method: "GET", + headers + }; +} + +class PDFNodeStreamFullReader extends BaseFullReader { + constructor(stream) { + super(stream); + + const handleResponse = response => { + if (response.statusCode === 404) { + const error = new _util.MissingPDFException(`Missing PDF "${this._url}".`); + this._storedError = error; + + this._headersCapability.reject(error); + + return; + } + + this._headersCapability.resolve(); + + this._setReadableStream(response); + + const getResponseHeader = name => { + return this._readableStream.headers[name.toLowerCase()]; + }; + + const { + allowRangeRequests, + suggestedLength + } = (0, _network_utils.validateRangeRequestCapabilities)({ + getResponseHeader, + isHttp: stream.isHttp, + rangeChunkSize: this._rangeChunkSize, + disableRange: this._disableRange + }); + this._isRangeSupported = allowRangeRequests; + this._contentLength = suggestedLength || this._contentLength; + this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); + }; + + this._request = null; + + if (this._url.protocol === "http:") { + this._request = http.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse); + } else { + this._request = https.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse); + } + + this._request.on("error", reason => { + this._storedError = reason; + + this._headersCapability.reject(reason); + }); + + this._request.end(); + } + +} + +class PDFNodeStreamRangeReader extends BaseRangeReader { + constructor(stream, start, end) { + super(stream); + this._httpHeaders = {}; + + for (const property in stream.httpHeaders) { + const value = stream.httpHeaders[property]; + + if (typeof value === "undefined") { + continue; + } + + this._httpHeaders[property] = value; + } + + this._httpHeaders.Range = `bytes=${start}-${end - 1}`; + + const handleResponse = response => { + if (response.statusCode === 404) { + const error = new _util.MissingPDFException(`Missing PDF "${this._url}".`); + this._storedError = error; + return; + } + + this._setReadableStream(response); + }; + + this._request = null; + + if (this._url.protocol === "http:") { + this._request = http.request(createRequestOptions(this._url, this._httpHeaders), handleResponse); + } else { + this._request = https.request(createRequestOptions(this._url, this._httpHeaders), handleResponse); + } + + this._request.on("error", reason => { + this._storedError = reason; + }); + + this._request.end(); + } + +} + +class PDFNodeStreamFsFullReader extends BaseFullReader { + constructor(stream) { + super(stream); + let path = decodeURIComponent(this._url.path); + + if (fileUriRegex.test(this._url.href)) { + path = path.replace(/^\//, ""); + } + + fs.lstat(path, (error, stat) => { + if (error) { + if (error.code === "ENOENT") { + error = new _util.MissingPDFException(`Missing PDF "${path}".`); + } + + this._storedError = error; + + this._headersCapability.reject(error); + + return; + } + + this._contentLength = stat.size; + + this._setReadableStream(fs.createReadStream(path)); + + this._headersCapability.resolve(); + }); + } + +} + +class PDFNodeStreamFsRangeReader extends BaseRangeReader { + constructor(stream, start, end) { + super(stream); + let path = decodeURIComponent(this._url.path); + + if (fileUriRegex.test(this._url.href)) { + path = path.replace(/^\//, ""); + } + + this._setReadableStream(fs.createReadStream(path, { + start, + end: end - 1 + })); + } + +} + +/***/ }), +/* 33 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.createResponseStatusError = createResponseStatusError; +exports.extractFilenameFromHeader = extractFilenameFromHeader; +exports.validateRangeRequestCapabilities = validateRangeRequestCapabilities; +exports.validateResponseStatus = validateResponseStatus; + +var _util = __w_pdfjs_require__(1); + +var _content_disposition = __w_pdfjs_require__(34); + +var _display_utils = __w_pdfjs_require__(8); + +function validateRangeRequestCapabilities({ + getResponseHeader, + isHttp, + rangeChunkSize, + disableRange +}) { + const returnValues = { + allowRangeRequests: false, + suggestedLength: undefined + }; + const length = parseInt(getResponseHeader("Content-Length"), 10); + + if (!Number.isInteger(length)) { + return returnValues; + } + + returnValues.suggestedLength = length; + + if (length <= 2 * rangeChunkSize) { + return returnValues; + } + + if (disableRange || !isHttp) { + return returnValues; + } + + if (getResponseHeader("Accept-Ranges") !== "bytes") { + return returnValues; + } + + const contentEncoding = getResponseHeader("Content-Encoding") || "identity"; + + if (contentEncoding !== "identity") { + return returnValues; + } + + returnValues.allowRangeRequests = true; + return returnValues; +} + +function extractFilenameFromHeader(getResponseHeader) { + const contentDisposition = getResponseHeader("Content-Disposition"); + + if (contentDisposition) { + let filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition); + + if (filename.includes("%")) { + try { + filename = decodeURIComponent(filename); + } catch (ex) {} + } + + if ((0, _display_utils.isPdfFile)(filename)) { + return filename; + } + } + + return null; +} + +function createResponseStatusError(status, url) { + if (status === 404 || status === 0 && url.startsWith("file:")) { + return new _util.MissingPDFException('Missing PDF "' + url + '".'); + } + + return new _util.UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF "${url}".`, status); +} + +function validateResponseStatus(status) { + return status === 200 || status === 206; +} + +/***/ }), +/* 34 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader; + +var _util = __w_pdfjs_require__(1); + +function getFilenameFromContentDispositionHeader(contentDisposition) { + let needsEncodingFixup = true; + let tmp = toParamRegExp("filename\\*", "i").exec(contentDisposition); + + if (tmp) { + tmp = tmp[1]; + let filename = rfc2616unquote(tmp); + filename = unescape(filename); + filename = rfc5987decode(filename); + filename = rfc2047decode(filename); + return fixupEncoding(filename); + } + + tmp = rfc2231getparam(contentDisposition); + + if (tmp) { + const filename = rfc2047decode(tmp); + return fixupEncoding(filename); + } + + tmp = toParamRegExp("filename", "i").exec(contentDisposition); + + if (tmp) { + tmp = tmp[1]; + let filename = rfc2616unquote(tmp); + filename = rfc2047decode(filename); + return fixupEncoding(filename); + } + + function toParamRegExp(attributePattern, flags) { + return new RegExp("(?:^|;)\\s*" + attributePattern + "\\s*=\\s*" + "(" + '[^";\\s][^;\\s]*' + "|" + '"(?:[^"\\\\]|\\\\"?)+"?' + ")", flags); + } + + function textdecode(encoding, value) { + if (encoding) { + if (!/^[\x00-\xFF]+$/.test(value)) { + return value; + } + + try { + const decoder = new TextDecoder(encoding, { + fatal: true + }); + const buffer = (0, _util.stringToBytes)(value); + value = decoder.decode(buffer); + needsEncodingFixup = false; + } catch (e) {} + } + + return value; + } + + function fixupEncoding(value) { + if (needsEncodingFixup && /[\x80-\xff]/.test(value)) { + value = textdecode("utf-8", value); + + if (needsEncodingFixup) { + value = textdecode("iso-8859-1", value); + } + } + + return value; + } + + function rfc2231getparam(contentDispositionStr) { + const matches = []; + let match; + const iter = toParamRegExp("filename\\*((?!0\\d)\\d+)(\\*?)", "ig"); + + while ((match = iter.exec(contentDispositionStr)) !== null) { + let [, n, quot, part] = match; + n = parseInt(n, 10); + + if (n in matches) { + if (n === 0) { + break; + } + + continue; + } + + matches[n] = [quot, part]; + } + + const parts = []; + + for (let n = 0; n < matches.length; ++n) { + if (!(n in matches)) { + break; + } + + let [quot, part] = matches[n]; + part = rfc2616unquote(part); + + if (quot) { + part = unescape(part); + + if (n === 0) { + part = rfc5987decode(part); + } + } + + parts.push(part); + } + + return parts.join(""); + } + + function rfc2616unquote(value) { + if (value.startsWith('"')) { + const parts = value.slice(1).split('\\"'); + + for (let i = 0; i < parts.length; ++i) { + const quotindex = parts[i].indexOf('"'); + + if (quotindex !== -1) { + parts[i] = parts[i].slice(0, quotindex); + parts.length = i + 1; + } + + parts[i] = parts[i].replace(/\\(.)/g, "$1"); + } + + value = parts.join('"'); + } + + return value; + } + + function rfc5987decode(extvalue) { + const encodingend = extvalue.indexOf("'"); + + if (encodingend === -1) { + return extvalue; + } + + const encoding = extvalue.slice(0, encodingend); + const langvalue = extvalue.slice(encodingend + 1); + const value = langvalue.replace(/^[^']*'/, ""); + return textdecode(encoding, value); + } + + function rfc2047decode(value) { + if (!value.startsWith("=?") || /[\x00-\x19\x80-\xff]/.test(value)) { + return value; + } + + return value.replace(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g, function (matches, charset, encoding, text) { + if (encoding === "q" || encoding === "Q") { + text = text.replace(/_/g, " "); + text = text.replace(/=([0-9a-fA-F]{2})/g, function (match, hex) { + return String.fromCharCode(parseInt(hex, 16)); + }); + return textdecode(charset, text); + } + + try { + text = atob(text); + } catch (e) {} + + return textdecode(charset, text); + }); + } + + return ""; +} + +/***/ }), +/* 35 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFNetworkStream = void 0; + +var _util = __w_pdfjs_require__(1); + +var _network_utils = __w_pdfjs_require__(33); + +; +const OK_RESPONSE = 200; +const PARTIAL_CONTENT_RESPONSE = 206; + +function getArrayBuffer(xhr) { + const data = xhr.response; + + if (typeof data !== "string") { + return data; + } + + const array = (0, _util.stringToBytes)(data); + return array.buffer; +} + +class NetworkManager { + constructor(url, args = {}) { + this.url = url; + this.isHttp = /^https?:/i.test(url); + this.httpHeaders = this.isHttp && args.httpHeaders || Object.create(null); + this.withCredentials = args.withCredentials || false; + + this.getXhr = args.getXhr || function NetworkManager_getXhr() { + return new XMLHttpRequest(); + }; + + this.currXhrId = 0; + this.pendingRequests = Object.create(null); + } + + requestRange(begin, end, listeners) { + const args = { + begin, + end + }; + + for (const prop in listeners) { + args[prop] = listeners[prop]; + } + + return this.request(args); + } + + requestFull(listeners) { + return this.request(listeners); + } + + request(args) { + const xhr = this.getXhr(); + const xhrId = this.currXhrId++; + const pendingRequest = this.pendingRequests[xhrId] = { + xhr + }; + xhr.open("GET", this.url); + xhr.withCredentials = this.withCredentials; + + for (const property in this.httpHeaders) { + const value = this.httpHeaders[property]; + + if (typeof value === "undefined") { + continue; + } + + xhr.setRequestHeader(property, value); + } + + if (this.isHttp && "begin" in args && "end" in args) { + xhr.setRequestHeader("Range", `bytes=${args.begin}-${args.end - 1}`); + pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE; + } else { + pendingRequest.expectedStatus = OK_RESPONSE; + } + + xhr.responseType = "arraybuffer"; + + if (args.onError) { + xhr.onerror = function (evt) { + args.onError(xhr.status); + }; + } + + xhr.onreadystatechange = this.onStateChange.bind(this, xhrId); + xhr.onprogress = this.onProgress.bind(this, xhrId); + pendingRequest.onHeadersReceived = args.onHeadersReceived; + pendingRequest.onDone = args.onDone; + pendingRequest.onError = args.onError; + pendingRequest.onProgress = args.onProgress; + xhr.send(null); + return xhrId; + } + + onProgress(xhrId, evt) { + const pendingRequest = this.pendingRequests[xhrId]; + + if (!pendingRequest) { + return; + } + + pendingRequest.onProgress?.(evt); + } + + onStateChange(xhrId, evt) { + const pendingRequest = this.pendingRequests[xhrId]; + + if (!pendingRequest) { + return; + } + + const xhr = pendingRequest.xhr; + + if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) { + pendingRequest.onHeadersReceived(); + delete pendingRequest.onHeadersReceived; + } + + if (xhr.readyState !== 4) { + return; + } + + if (!(xhrId in this.pendingRequests)) { + return; + } + + delete this.pendingRequests[xhrId]; + + if (xhr.status === 0 && this.isHttp) { + pendingRequest.onError?.(xhr.status); + return; + } + + const xhrStatus = xhr.status || OK_RESPONSE; + const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE; + + if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) { + pendingRequest.onError?.(xhr.status); + return; + } + + const chunk = getArrayBuffer(xhr); + + if (xhrStatus === PARTIAL_CONTENT_RESPONSE) { + const rangeHeader = xhr.getResponseHeader("Content-Range"); + const matches = /bytes (\d+)-(\d+)\/(\d+)/.exec(rangeHeader); + pendingRequest.onDone({ + begin: parseInt(matches[1], 10), + chunk + }); + } else if (chunk) { + pendingRequest.onDone({ + begin: 0, + chunk + }); + } else { + pendingRequest.onError?.(xhr.status); + } + } + + getRequestXhr(xhrId) { + return this.pendingRequests[xhrId].xhr; + } + + isPendingRequest(xhrId) { + return xhrId in this.pendingRequests; + } + + abortRequest(xhrId) { + const xhr = this.pendingRequests[xhrId].xhr; + delete this.pendingRequests[xhrId]; + xhr.abort(); + } + +} + +class PDFNetworkStream { + constructor(source) { + this._source = source; + this._manager = new NetworkManager(source.url, { + httpHeaders: source.httpHeaders, + withCredentials: source.withCredentials + }); + this._rangeChunkSize = source.rangeChunkSize; + this._fullRequestReader = null; + this._rangeRequestReaders = []; + } + + _onRangeRequestReaderClosed(reader) { + const i = this._rangeRequestReaders.indexOf(reader); + + if (i >= 0) { + this._rangeRequestReaders.splice(i, 1); + } + } + + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFNetworkStream.getFullReader can only be called once."); + this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source); + return this._fullRequestReader; + } + + getRangeReader(begin, end) { + const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end); + reader.onClosed = this._onRangeRequestReaderClosed.bind(this); + + this._rangeRequestReaders.push(reader); + + return reader; + } + + cancelAllRequests(reason) { + this._fullRequestReader?.cancel(reason); + + for (const reader of this._rangeRequestReaders.slice(0)) { + reader.cancel(reason); + } + } + +} + +exports.PDFNetworkStream = PDFNetworkStream; + +class PDFNetworkStreamFullRequestReader { + constructor(manager, source) { + this._manager = manager; + const args = { + onHeadersReceived: this._onHeadersReceived.bind(this), + onDone: this._onDone.bind(this), + onError: this._onError.bind(this), + onProgress: this._onProgress.bind(this) + }; + this._url = source.url; + this._fullRequestId = manager.requestFull(args); + this._headersReceivedCapability = (0, _util.createPromiseCapability)(); + this._disableRange = source.disableRange || false; + this._contentLength = source.length; + this._rangeChunkSize = source.rangeChunkSize; + + if (!this._rangeChunkSize && !this._disableRange) { + this._disableRange = true; + } + + this._isStreamingSupported = false; + this._isRangeSupported = false; + this._cachedChunks = []; + this._requests = []; + this._done = false; + this._storedError = undefined; + this._filename = null; + this.onProgress = null; + } + + _onHeadersReceived() { + const fullRequestXhrId = this._fullRequestId; + + const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId); + + const getResponseHeader = name => { + return fullRequestXhr.getResponseHeader(name); + }; + + const { + allowRangeRequests, + suggestedLength + } = (0, _network_utils.validateRangeRequestCapabilities)({ + getResponseHeader, + isHttp: this._manager.isHttp, + rangeChunkSize: this._rangeChunkSize, + disableRange: this._disableRange + }); + + if (allowRangeRequests) { + this._isRangeSupported = true; + } + + this._contentLength = suggestedLength || this._contentLength; + this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); + + if (this._isRangeSupported) { + this._manager.abortRequest(fullRequestXhrId); + } + + this._headersReceivedCapability.resolve(); + } + + _onDone(data) { + if (data) { + if (this._requests.length > 0) { + const requestCapability = this._requests.shift(); + + requestCapability.resolve({ + value: data.chunk, + done: false + }); + } else { + this._cachedChunks.push(data.chunk); + } + } + + this._done = true; + + if (this._cachedChunks.length > 0) { + return; + } + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + } + + _onError(status) { + this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url); + + this._headersReceivedCapability.reject(this._storedError); + + for (const requestCapability of this._requests) { + requestCapability.reject(this._storedError); + } + + this._requests.length = 0; + this._cachedChunks.length = 0; + } + + _onProgress(evt) { + this.onProgress?.({ + loaded: evt.loaded, + total: evt.lengthComputable ? evt.total : this._contentLength + }); + } + + get filename() { + return this._filename; + } + + get isRangeSupported() { + return this._isRangeSupported; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + get contentLength() { + return this._contentLength; + } + + get headersReady() { + return this._headersReceivedCapability.promise; + } + + async read() { + if (this._storedError) { + throw this._storedError; + } + + if (this._cachedChunks.length > 0) { + const chunk = this._cachedChunks.shift(); + + return { + value: chunk, + done: false + }; + } + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + const requestCapability = (0, _util.createPromiseCapability)(); + + this._requests.push(requestCapability); + + return requestCapability.promise; + } + + cancel(reason) { + this._done = true; + + this._headersReceivedCapability.reject(reason); + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + + if (this._manager.isPendingRequest(this._fullRequestId)) { + this._manager.abortRequest(this._fullRequestId); + } + + this._fullRequestReader = null; + } + +} + +class PDFNetworkStreamRangeRequestReader { + constructor(manager, begin, end) { + this._manager = manager; + const args = { + onDone: this._onDone.bind(this), + onError: this._onError.bind(this), + onProgress: this._onProgress.bind(this) + }; + this._url = manager.url; + this._requestId = manager.requestRange(begin, end, args); + this._requests = []; + this._queuedChunk = null; + this._done = false; + this._storedError = undefined; + this.onProgress = null; + this.onClosed = null; + } + + _close() { + this.onClosed?.(this); + } + + _onDone(data) { + const chunk = data.chunk; + + if (this._requests.length > 0) { + const requestCapability = this._requests.shift(); + + requestCapability.resolve({ + value: chunk, + done: false + }); + } else { + this._queuedChunk = chunk; + } + + this._done = true; + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + + this._close(); + } + + _onError(status) { + this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url); + + for (const requestCapability of this._requests) { + requestCapability.reject(this._storedError); + } + + this._requests.length = 0; + this._queuedChunk = null; + } + + _onProgress(evt) { + if (!this.isStreamingSupported) { + this.onProgress?.({ + loaded: evt.loaded + }); + } + } + + get isStreamingSupported() { + return false; + } + + async read() { + if (this._storedError) { + throw this._storedError; + } + + if (this._queuedChunk !== null) { + const chunk = this._queuedChunk; + this._queuedChunk = null; + return { + value: chunk, + done: false + }; + } + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + const requestCapability = (0, _util.createPromiseCapability)(); + + this._requests.push(requestCapability); + + return requestCapability.promise; + } + + cancel(reason) { + this._done = true; + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + + if (this._manager.isPendingRequest(this._requestId)) { + this._manager.abortRequest(this._requestId); + } + + this._close(); + } + +} + +/***/ }), +/* 36 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFFetchStream = void 0; + +var _util = __w_pdfjs_require__(1); + +var _network_utils = __w_pdfjs_require__(33); + +; + +function createFetchOptions(headers, withCredentials, abortController) { + return { + method: "GET", + headers, + signal: abortController.signal, + mode: "cors", + credentials: withCredentials ? "include" : "same-origin", + redirect: "follow" + }; +} + +function createHeaders(httpHeaders) { + const headers = new Headers(); + + for (const property in httpHeaders) { + const value = httpHeaders[property]; + + if (typeof value === "undefined") { + continue; + } + + headers.append(property, value); + } + + return headers; +} + +class PDFFetchStream { + constructor(source) { + this.source = source; + this.isHttp = /^https?:/i.test(source.url); + this.httpHeaders = this.isHttp && source.httpHeaders || {}; + this._fullRequestReader = null; + this._rangeRequestReaders = []; + } + + get _progressiveDataLength() { + return this._fullRequestReader?._loaded ?? 0; + } + + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFFetchStream.getFullReader can only be called once."); + this._fullRequestReader = new PDFFetchStreamReader(this); + return this._fullRequestReader; + } + + getRangeReader(begin, end) { + if (end <= this._progressiveDataLength) { + return null; + } + + const reader = new PDFFetchStreamRangeReader(this, begin, end); + + this._rangeRequestReaders.push(reader); + + return reader; + } + + cancelAllRequests(reason) { + if (this._fullRequestReader) { + this._fullRequestReader.cancel(reason); + } + + for (const reader of this._rangeRequestReaders.slice(0)) { + reader.cancel(reason); + } + } + +} + +exports.PDFFetchStream = PDFFetchStream; + +class PDFFetchStreamReader { + constructor(stream) { + this._stream = stream; + this._reader = null; + this._loaded = 0; + this._filename = null; + const source = stream.source; + this._withCredentials = source.withCredentials || false; + this._contentLength = source.length; + this._headersCapability = (0, _util.createPromiseCapability)(); + this._disableRange = source.disableRange || false; + this._rangeChunkSize = source.rangeChunkSize; + + if (!this._rangeChunkSize && !this._disableRange) { + this._disableRange = true; + } + + this._abortController = new AbortController(); + this._isStreamingSupported = !source.disableStream; + this._isRangeSupported = !source.disableRange; + this._headers = createHeaders(this._stream.httpHeaders); + const url = source.url; + fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => { + if (!(0, _network_utils.validateResponseStatus)(response.status)) { + throw (0, _network_utils.createResponseStatusError)(response.status, url); + } + + this._reader = response.body.getReader(); + + this._headersCapability.resolve(); + + const getResponseHeader = name => { + return response.headers.get(name); + }; + + const { + allowRangeRequests, + suggestedLength + } = (0, _network_utils.validateRangeRequestCapabilities)({ + getResponseHeader, + isHttp: this._stream.isHttp, + rangeChunkSize: this._rangeChunkSize, + disableRange: this._disableRange + }); + this._isRangeSupported = allowRangeRequests; + this._contentLength = suggestedLength || this._contentLength; + this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); + + if (!this._isStreamingSupported && this._isRangeSupported) { + this.cancel(new _util.AbortException("Streaming is disabled.")); + } + }).catch(this._headersCapability.reject); + this.onProgress = null; + } + + get headersReady() { + return this._headersCapability.promise; + } + + get filename() { + return this._filename; + } + + get contentLength() { + return this._contentLength; + } + + get isRangeSupported() { + return this._isRangeSupported; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + async read() { + await this._headersCapability.promise; + const { + value, + done + } = await this._reader.read(); + + if (done) { + return { + value, + done + }; + } + + this._loaded += value.byteLength; + + if (this.onProgress) { + this.onProgress({ + loaded: this._loaded, + total: this._contentLength + }); + } + + const buffer = new Uint8Array(value).buffer; + return { + value: buffer, + done: false + }; + } + + cancel(reason) { + if (this._reader) { + this._reader.cancel(reason); + } + + this._abortController.abort(); + } + +} + +class PDFFetchStreamRangeReader { + constructor(stream, begin, end) { + this._stream = stream; + this._reader = null; + this._loaded = 0; + const source = stream.source; + this._withCredentials = source.withCredentials || false; + this._readCapability = (0, _util.createPromiseCapability)(); + this._isStreamingSupported = !source.disableStream; + this._abortController = new AbortController(); + this._headers = createHeaders(this._stream.httpHeaders); + + this._headers.append("Range", `bytes=${begin}-${end - 1}`); + + const url = source.url; + fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => { + if (!(0, _network_utils.validateResponseStatus)(response.status)) { + throw (0, _network_utils.createResponseStatusError)(response.status, url); + } + + this._readCapability.resolve(); + + this._reader = response.body.getReader(); + }).catch(this._readCapability.reject); + this.onProgress = null; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + async read() { + await this._readCapability.promise; + const { + value, + done + } = await this._reader.read(); + + if (done) { + return { + value, + done + }; + } + + this._loaded += value.byteLength; + + if (this.onProgress) { + this.onProgress({ + loaded: this._loaded + }); + } + + const buffer = new Uint8Array(value).buffer; + return { + value: buffer, + done: false + }; + } + + cancel(reason) { + if (this._reader) { + this._reader.cancel(reason); + } + + this._abortController.abort(); + } + } /***/ }) -/******/ ]); +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __w_pdfjs_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. +(() => { +var exports = __webpack_exports__; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "AnnotationEditorLayer", ({ + enumerable: true, + get: function () { + return _annotation_editor_layer.AnnotationEditorLayer; + } +})); +Object.defineProperty(exports, "AnnotationEditorParamsType", ({ + enumerable: true, + get: function () { + return _util.AnnotationEditorParamsType; + } +})); +Object.defineProperty(exports, "AnnotationEditorType", ({ + enumerable: true, + get: function () { + return _util.AnnotationEditorType; + } +})); +Object.defineProperty(exports, "AnnotationEditorUIManager", ({ + enumerable: true, + get: function () { + return _tools.AnnotationEditorUIManager; + } +})); +Object.defineProperty(exports, "AnnotationLayer", ({ + enumerable: true, + get: function () { + return _annotation_layer.AnnotationLayer; + } +})); +Object.defineProperty(exports, "AnnotationMode", ({ + enumerable: true, + get: function () { + return _util.AnnotationMode; + } +})); +Object.defineProperty(exports, "CMapCompressionType", ({ + enumerable: true, + get: function () { + return _util.CMapCompressionType; + } +})); +Object.defineProperty(exports, "GlobalWorkerOptions", ({ + enumerable: true, + get: function () { + return _worker_options.GlobalWorkerOptions; + } +})); +Object.defineProperty(exports, "InvalidPDFException", ({ + enumerable: true, + get: function () { + return _util.InvalidPDFException; + } +})); +Object.defineProperty(exports, "LoopbackPort", ({ + enumerable: true, + get: function () { + return _api.LoopbackPort; + } +})); +Object.defineProperty(exports, "MissingPDFException", ({ + enumerable: true, + get: function () { + return _util.MissingPDFException; + } +})); +Object.defineProperty(exports, "OPS", ({ + enumerable: true, + get: function () { + return _util.OPS; + } +})); +Object.defineProperty(exports, "PDFDataRangeTransport", ({ + enumerable: true, + get: function () { + return _api.PDFDataRangeTransport; + } +})); +Object.defineProperty(exports, "PDFDateString", ({ + enumerable: true, + get: function () { + return _display_utils.PDFDateString; + } +})); +Object.defineProperty(exports, "PDFWorker", ({ + enumerable: true, + get: function () { + return _api.PDFWorker; + } +})); +Object.defineProperty(exports, "PasswordResponses", ({ + enumerable: true, + get: function () { + return _util.PasswordResponses; + } +})); +Object.defineProperty(exports, "PermissionFlag", ({ + enumerable: true, + get: function () { + return _util.PermissionFlag; + } +})); +Object.defineProperty(exports, "PixelsPerInch", ({ + enumerable: true, + get: function () { + return _display_utils.PixelsPerInch; + } +})); +Object.defineProperty(exports, "RenderingCancelledException", ({ + enumerable: true, + get: function () { + return _display_utils.RenderingCancelledException; + } +})); +Object.defineProperty(exports, "SVGGraphics", ({ + enumerable: true, + get: function () { + return _svg.SVGGraphics; + } +})); +Object.defineProperty(exports, "UNSUPPORTED_FEATURES", ({ + enumerable: true, + get: function () { + return _util.UNSUPPORTED_FEATURES; + } +})); +Object.defineProperty(exports, "UnexpectedResponseException", ({ + enumerable: true, + get: function () { + return _util.UnexpectedResponseException; + } +})); +Object.defineProperty(exports, "Util", ({ + enumerable: true, + get: function () { + return _util.Util; + } +})); +Object.defineProperty(exports, "VerbosityLevel", ({ + enumerable: true, + get: function () { + return _util.VerbosityLevel; + } +})); +Object.defineProperty(exports, "XfaLayer", ({ + enumerable: true, + get: function () { + return _xfa_layer.XfaLayer; + } +})); +Object.defineProperty(exports, "build", ({ + enumerable: true, + get: function () { + return _api.build; + } +})); +Object.defineProperty(exports, "createPromiseCapability", ({ + enumerable: true, + get: function () { + return _util.createPromiseCapability; + } +})); +Object.defineProperty(exports, "createValidAbsoluteUrl", ({ + enumerable: true, + get: function () { + return _util.createValidAbsoluteUrl; + } +})); +Object.defineProperty(exports, "getDocument", ({ + enumerable: true, + get: function () { + return _api.getDocument; + } +})); +Object.defineProperty(exports, "getFilenameFromUrl", ({ + enumerable: true, + get: function () { + return _display_utils.getFilenameFromUrl; + } +})); +Object.defineProperty(exports, "getPdfFilenameFromUrl", ({ + enumerable: true, + get: function () { + return _display_utils.getPdfFilenameFromUrl; + } +})); +Object.defineProperty(exports, "getXfaPageViewport", ({ + enumerable: true, + get: function () { + return _display_utils.getXfaPageViewport; + } +})); +Object.defineProperty(exports, "isPdfFile", ({ + enumerable: true, + get: function () { + return _display_utils.isPdfFile; + } +})); +Object.defineProperty(exports, "loadScript", ({ + enumerable: true, + get: function () { + return _display_utils.loadScript; + } +})); +Object.defineProperty(exports, "renderTextLayer", ({ + enumerable: true, + get: function () { + return _text_layer.renderTextLayer; + } +})); +Object.defineProperty(exports, "shadow", ({ + enumerable: true, + get: function () { + return _util.shadow; + } +})); +Object.defineProperty(exports, "version", ({ + enumerable: true, + get: function () { + return _api.version; + } +})); + +var _util = __w_pdfjs_require__(1); + +var _api = __w_pdfjs_require__(4); + +var _display_utils = __w_pdfjs_require__(8); + +var _annotation_editor_layer = __w_pdfjs_require__(22); + +var _tools = __w_pdfjs_require__(7); + +var _annotation_layer = __w_pdfjs_require__(27); + +var _worker_options = __w_pdfjs_require__(15); + +var _is_node = __w_pdfjs_require__(3); + +var _text_layer = __w_pdfjs_require__(30); + +var _svg = __w_pdfjs_require__(31); + +var _xfa_layer = __w_pdfjs_require__(29); + +const pdfjsVersion = '2.16.105'; +const pdfjsBuild = '172ccdbe5'; +{ + if (_is_node.isNodeJS) { + const { + PDFNodeStream + } = __w_pdfjs_require__(32); + + (0, _api.setPDFNetworkStreamFactory)(params => { + return new PDFNodeStream(params); + }); + } else { + const { + PDFNetworkStream + } = __w_pdfjs_require__(35); + + const { + PDFFetchStream + } = __w_pdfjs_require__(36); + + (0, _api.setPDFNetworkStreamFactory)(params => { + if ((0, _display_utils.isValidFetchUrl)(params.url)) { + return new PDFFetchStream(params); + } + + return new PDFNetworkStream(params); + }); + } +} +})(); + +/******/ return __webpack_exports__; +/******/ })() +; }); -//# sourceMappingURL=pdf.js.map +//# sourceMappingURL=pdf.js.map \ No newline at end of file diff --git a/jero-web/public/pdf/build/pdf.js.map b/jero-web/public/pdf/build/pdf.js.map index d50a381b4..8b64ceb77 100644 --- a/jero-web/public/pdf/build/pdf.js.map +++ b/jero-web/public/pdf/build/pdf.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap b5fe8ab6eb949fc98816","webpack:///src/shared/util.js","webpack:///src/display/dom_utils.js","webpack:///src/display/api.js","webpack:///src/display/annotation_layer.js","webpack:///src/display/svg.js","webpack:///src/display/text_layer.js","webpack:///src/display/metadata.js","webpack:///src/display/webgl.js","webpack:///src/display/global.js","webpack:///src/display/network.js","webpack:///external/streams/streams-lib.js","webpack:///src/display/canvas.js","webpack:///src/display/font_loader.js","webpack:///src/display/pattern_helper.js","webpack:///src/display/transport_stream.js","webpack:///src/pdf.js","webpack:///src/shared/compatibility.js","webpack:///src/shared/streams_polyfill.js"],"names":[],"mappings":"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","file":"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 \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __w_pdfjs_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__w_pdfjs_require__.m = modules;\n\n \t// expose the module cache\n \t__w_pdfjs_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__w_pdfjs_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__w_pdfjs_require__.d = function(exports, name, getter) {\n \t\tif(!__w_pdfjs_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__w_pdfjs_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__w_pdfjs_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__w_pdfjs_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __w_pdfjs_require__(__w_pdfjs_require__.s = 15);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap b5fe8ab6eb949fc98816","/* 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';\nimport { ReadableStream } from './streams_polyfill';\n\nvar globalScope =\n (typeof window !== 'undefined' && window.Math === Math) ? window :\n // eslint-disable-next-line no-undef\n (typeof global !== 'undefined' && global.Math === Math) ? global :\n (typeof self !== 'undefined' && self.Math === Math) ? self : this;\n\nvar FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\nconst NativeImageDecoding = {\n NONE: 'none',\n DECODE: 'decode',\n DISPLAY: 'display',\n};\n\nvar 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\nvar ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nvar 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\nvar 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\nvar 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\nvar AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nvar StreamType = {\n UNKNOWN: 0,\n FLATE: 1,\n LZW: 2,\n DCT: 3,\n JPX: 4,\n JBIG: 5,\n A85: 6,\n AHX: 7,\n CCF: 8,\n RL: 9,\n};\n\nvar FontType = {\n UNKNOWN: 0,\n TYPE1: 1,\n TYPE1C: 2,\n CIDFONTTYPE0: 3,\n CIDFONTTYPE0C: 4,\n TRUETYPE: 5,\n CIDFONTTYPE2: 6,\n TYPE3: 7,\n OPENTYPE: 8,\n TYPE0: 9,\n MMTYPE1: 10,\n};\n\nvar VERBOSITY_LEVELS = {\n errors: 0,\n warnings: 1,\n infos: 5,\n};\n\nvar CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nvar 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 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\nvar verbosity = VERBOSITY_LEVELS.warnings;\n\nfunction setVerbosityLevel(level) {\n verbosity = level;\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 >= VERBOSITY_LEVELS.infos) {\n console.log('Info: ' + msg);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VERBOSITY_LEVELS.warnings) {\n console.log('Warning: ' + msg);\n }\n}\n\n// Deprecated API function -- display regardless of the PDFJS.verbosity setting.\nfunction deprecated(details) {\n console.log('Deprecated API usage: ' + details);\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\nvar UNSUPPORTED_FEATURES = {\n unknown: 'unknown',\n forms: 'forms',\n javaScript: 'javaScript',\n smask: 'smask',\n shadingPattern: 'shadingPattern',\n font: 'font',\n};\n\n// Checks if URLs have the same origin. For non-HTTP based URLs, returns false.\nfunction isSameOrigin(baseUrl, otherUrl) {\n try {\n var 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 var other = new URL(otherUrl, base);\n return base.origin === other.origin;\n}\n\n// Checks if URLs use one of the whitelisted 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 (utilizing `isValidProtocol`).\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} baseUrl - An absolute URL.\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl) {\n if (!url) {\n return null;\n }\n try {\n var absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) { /* `new URL()` will throw on incorrect data. */ }\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n Object.defineProperty(obj, prop, { value,\n enumerable: true,\n configurable: true,\n writable: false, });\n return value;\n}\n\nfunction getLookupTableFactory(initializer) {\n var 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\nvar PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nvar PasswordException = (function PasswordExceptionClosure() {\n function PasswordException(msg, code) {\n this.name = 'PasswordException';\n this.message = msg;\n this.code = code;\n }\n\n PasswordException.prototype = new Error();\n PasswordException.constructor = PasswordException;\n\n return PasswordException;\n})();\n\nvar UnknownErrorException = (function UnknownErrorExceptionClosure() {\n function UnknownErrorException(msg, details) {\n this.name = 'UnknownErrorException';\n this.message = msg;\n this.details = details;\n }\n\n UnknownErrorException.prototype = new Error();\n UnknownErrorException.constructor = UnknownErrorException;\n\n return UnknownErrorException;\n})();\n\nvar InvalidPDFException = (function InvalidPDFExceptionClosure() {\n function InvalidPDFException(msg) {\n this.name = 'InvalidPDFException';\n this.message = msg;\n }\n\n InvalidPDFException.prototype = new Error();\n InvalidPDFException.constructor = InvalidPDFException;\n\n return InvalidPDFException;\n})();\n\nvar MissingPDFException = (function MissingPDFExceptionClosure() {\n function MissingPDFException(msg) {\n this.name = 'MissingPDFException';\n this.message = msg;\n }\n\n MissingPDFException.prototype = new Error();\n MissingPDFException.constructor = MissingPDFException;\n\n return MissingPDFException;\n})();\n\nvar UnexpectedResponseException =\n (function UnexpectedResponseExceptionClosure() {\n function UnexpectedResponseException(msg, status) {\n this.name = 'UnexpectedResponseException';\n this.message = msg;\n this.status = status;\n }\n\n UnexpectedResponseException.prototype = new Error();\n UnexpectedResponseException.constructor = UnexpectedResponseException;\n\n return UnexpectedResponseException;\n})();\n\nvar NotImplementedException = (function NotImplementedExceptionClosure() {\n function NotImplementedException(msg) {\n this.message = msg;\n }\n\n NotImplementedException.prototype = new Error();\n NotImplementedException.prototype.name = 'NotImplementedException';\n NotImplementedException.constructor = NotImplementedException;\n\n return NotImplementedException;\n})();\n\nvar MissingDataException = (function MissingDataExceptionClosure() {\n function MissingDataException(begin, end) {\n this.begin = begin;\n this.end = end;\n this.message = 'Missing data [' + begin + ', ' + end + ')';\n }\n\n MissingDataException.prototype = new Error();\n MissingDataException.prototype.name = 'MissingDataException';\n MissingDataException.constructor = MissingDataException;\n\n return MissingDataException;\n})();\n\nvar XRefParseException = (function XRefParseExceptionClosure() {\n function XRefParseException(msg) {\n this.message = msg;\n }\n\n XRefParseException.prototype = new Error();\n XRefParseException.prototype.name = 'XRefParseException';\n XRefParseException.constructor = XRefParseException;\n\n return XRefParseException;\n})();\n\n/**\n * Error caused during parsing PDF data.\n */\nlet FormatError = (function FormatErrorClosure() {\n function FormatError(msg) {\n this.message = msg;\n }\n\n FormatError.prototype = new Error();\n FormatError.prototype.name = 'FormatError';\n FormatError.constructor = FormatError;\n\n return FormatError;\n})();\n\n/**\n * Error used to indicate task cancellation.\n */\nlet AbortException = (function AbortExceptionClosure() {\n function AbortException(msg) {\n this.name = 'AbortException';\n this.message = msg;\n }\n\n AbortException.prototype = new Error();\n AbortException.constructor = AbortException;\n\n return AbortException;\n})();\n\nvar NullCharactersRegExp = /\\x00/g;\n\nfunction removeNullCharacters(str) {\n if (typeof str !== 'string') {\n warn('The argument for removeNullCharacters must be a string.');\n return str;\n }\n return str.replace(NullCharactersRegExp, '');\n}\n\nfunction bytesToString(bytes) {\n assert(bytes !== null && typeof bytes === 'object' &&\n bytes.length !== undefined, 'Invalid argument for bytesToString');\n var length = bytes.length;\n var MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n var strBuf = [];\n for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n var 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 var length = str.length;\n var bytes = new Uint8Array(length);\n for (var 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|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);\n return arr.byteLength;\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array} arr - the array of the arrays (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n // Shortcut: if first and only item is Uint8Array, return it.\n if (arr.length === 1 && (arr[0] instanceof Uint8Array)) {\n return arr[0];\n }\n var resultLength = 0;\n var i, ii = arr.length;\n var item, itemLength;\n for (i = 0; i < ii; i++) {\n item = arr[i];\n itemLength = arrayByteLength(item);\n resultLength += itemLength;\n }\n var pos = 0;\n var data = new Uint8Array(resultLength);\n for (i = 0; i < ii; i++) {\n 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 itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n return data;\n}\n\nfunction string32(value) {\n return String.fromCharCode((value >> 24) & 0xff, (value >> 16) & 0xff,\n (value >> 8) & 0xff, value & 0xff);\n}\n\nfunction log2(x) {\n var n = 1, i = 0;\n while (x > n) {\n n <<= 1;\n i++;\n }\n return i;\n}\n\nfunction readInt8(data, start) {\n return (data[start] << 24) >> 24;\n}\n\nfunction readUint16(data, offset) {\n return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction readUint32(data, offset) {\n return ((data[offset] << 24) | (data[offset + 1] << 16) |\n (data[offset + 2] << 8) | data[offset + 3]) >>> 0;\n}\n\n// Lazy test the endianness of the platform\n// NOTE: This will be 'true' for simulated TypedArrays\nfunction isLittleEndian() {\n var buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n var view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return (view32[0] === 1);\n}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(''); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\n\nvar IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\n\nvar Util = (function UtilClosure() {\n function Util() {}\n\n var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')'];\n\n // makeCssRgb() can be called thousands of times. Using |rgbBuf| avoids\n // creating many intermediate strings.\n Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {\n rgbBuf[1] = r;\n rgbBuf[3] = g;\n rgbBuf[5] = b;\n return rgbBuf.join('');\n };\n\n // Concatenates two transformation matrices together and returns the result.\n Util.transform = function Util_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 Util.applyTransform = function Util_applyTransform(p, m) {\n var xt = p[0] * m[0] + p[1] * m[2] + m[4];\n var yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n };\n\n Util.applyInverseTransform = function Util_applyInverseTransform(p, m) {\n var d = m[0] * m[3] - m[1] * m[2];\n var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n var 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 Util.getAxialAlignedBoundingBox =\n function Util_getAxialAlignedBoundingBox(r, m) {\n\n var p1 = Util.applyTransform(r, m);\n var p2 = Util.applyTransform(r.slice(2, 4), m);\n var p3 = Util.applyTransform([r[0], r[3]], m);\n var 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 Util.inverseTransform = function Util_inverseTransform(m) {\n var d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\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 Util.apply3dTransform = function Util_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 Util.singularValueDecompose2dScale =\n function Util_singularValueDecompose2dScale(m) {\n\n var transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n var a = m[0] * transpose[0] + m[1] * transpose[2];\n var b = m[0] * transpose[1] + m[1] * transpose[3];\n var c = m[2] * transpose[0] + m[3] * transpose[2];\n var d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n var first = (a + d) / 2;\n var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;\n var sx = first + second || 1;\n var 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 Util.normalizeRect = function Util_normalizeRect(rect) {\n var 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 Util.intersect = function Util_intersect(rect1, rect2) {\n function compare(a, b) {\n return a - b;\n }\n\n // Order points along the axes\n var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare),\n orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare),\n 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 ((orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])) {\n // Intersection must be between second and third points\n result[0] = orderedX[1];\n result[2] = orderedX[2];\n } else {\n return false;\n }\n\n // Y: first and second points belong to different rectangles?\n if ((orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])) {\n // Intersection must be between second and third points\n result[1] = orderedY[1];\n result[3] = orderedY[2];\n } else {\n return false;\n }\n\n return result;\n };\n\n Util.sign = function Util_sign(num) {\n return num < 0 ? -1 : 1;\n };\n\n var 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 * Converts positive integers to (upper case) Roman numerals.\n * @param {integer} 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 is false.\n * @return {string} The resulting Roman number.\n */\n Util.toRoman = function Util_toRoman(number, lowerCase) {\n assert(isInt(number) && number > 0,\n 'The number should be a positive integer.');\n var pos, romanBuf = [];\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]);\n\n var romanStr = romanBuf.join('');\n return (lowerCase ? romanStr.toLowerCase() : romanStr);\n };\n\n Util.appendToArray = function Util_appendToArray(arr1, arr2) {\n Array.prototype.push.apply(arr1, arr2);\n };\n\n Util.prependToArray = function Util_prependToArray(arr1, arr2) {\n Array.prototype.unshift.apply(arr1, arr2);\n };\n\n Util.extendObj = function extendObj(obj1, obj2) {\n for (var key in obj2) {\n obj1[key] = obj2[key];\n }\n };\n\n Util.getInheritableProperty =\n function Util_getInheritableProperty(dict, name, getArray) {\n while (dict && !dict.has(name)) {\n dict = dict.get('Parent');\n }\n if (!dict) {\n return null;\n }\n return getArray ? dict.getArray(name) : dict.get(name);\n };\n\n Util.inherit = function Util_inherit(sub, base, prototype) {\n sub.prototype = Object.create(base.prototype);\n sub.prototype.constructor = sub;\n for (var prop in prototype) {\n sub.prototype[prop] = prototype[prop];\n }\n };\n\n Util.loadScript = function Util_loadScript(src, callback) {\n var script = document.createElement('script');\n var loaded = false;\n script.setAttribute('src', src);\n if (callback) {\n script.onload = function() {\n if (!loaded) {\n callback();\n }\n loaded = true;\n };\n }\n document.getElementsByTagName('head')[0].appendChild(script);\n };\n\n return Util;\n})();\n\n/**\n * PDF page viewport created based on scale, rotation and offset.\n * @class\n * @alias PageViewport\n */\nvar PageViewport = (function PageViewportClosure() {\n /**\n * @constructor\n * @private\n * @param viewBox {Array} xMin, yMin, xMax and yMax coordinates.\n * @param scale {number} scale of the viewport.\n * @param rotation {number} rotations of the viewport in degrees.\n * @param offsetX {number} offset X\n * @param offsetY {number} offset Y\n * @param dontFlip {boolean} if true, axis Y will not be flipped.\n */\n function PageViewport(viewBox, scale, rotation, offsetX, offsetY, dontFlip) {\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 var centerX = (viewBox[2] + viewBox[0]) / 2;\n var centerY = (viewBox[3] + viewBox[1]) / 2;\n var rotateA, rotateB, rotateC, rotateD;\n rotation = rotation % 360;\n rotation = rotation < 0 ? rotation + 360 : rotation;\n switch (rotation) {\n case 180:\n rotateA = -1; rotateB = 0; rotateC = 0; rotateD = 1;\n break;\n case 90:\n rotateA = 0; rotateB = 1; rotateC = 1; rotateD = 0;\n break;\n case 270:\n rotateA = 0; rotateB = -1; rotateC = -1; rotateD = 0;\n break;\n // case 0:\n default:\n rotateA = 1; rotateB = 0; rotateC = 0; rotateD = -1;\n break;\n }\n\n if (dontFlip) {\n rotateC = -rotateC; rotateD = -rotateD;\n }\n\n var offsetCanvasX, offsetCanvasY;\n var 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 this.fontScale = scale;\n }\n PageViewport.prototype = /** @lends PageViewport.prototype */ {\n /**\n * Clones viewport with additional properties.\n * @param args {Object} (optional) If specified, may contain the 'scale' or\n * 'rotation' properties to override the corresponding properties in\n * the cloned viewport.\n * @returns {PageViewport} Cloned viewport.\n */\n clone: function PageViewPort_clone(args) {\n args = args || {};\n var scale = 'scale' in args ? args.scale : this.scale;\n var rotation = 'rotation' in args ? args.rotation : this.rotation;\n return new PageViewport(this.viewBox.slice(), scale, rotation,\n this.offsetX, this.offsetY, args.dontFlip);\n },\n /**\n * Converts PDF point to the viewport coordinates. For examples, useful for\n * converting PDF location into canvas pixel coordinates.\n * @param x {number} X coordinate.\n * @param y {number} Y coordinate.\n * @returns {Object} Object that contains 'x' and 'y' properties of the\n * point in the viewport coordinate space.\n * @see {@link convertToPdfPoint}\n * @see {@link convertToViewportRectangle}\n */\n convertToViewportPoint: function PageViewport_convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n },\n /**\n * Converts PDF rectangle to the viewport coordinates.\n * @param rect {Array} xMin, yMin, xMax and yMax coordinates.\n * @returns {Array} Contains corresponding coordinates of the rectangle\n * in the viewport coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToViewportRectangle:\n function PageViewport_convertToViewportRectangle(rect) {\n var tl = Util.applyTransform([rect[0], rect[1]], this.transform);\n var br = Util.applyTransform([rect[2], rect[3]], this.transform);\n return [tl[0], tl[1], br[0], br[1]];\n },\n /**\n * Converts viewport coordinates to the PDF location. For examples, useful\n * for converting canvas pixel location into PDF one.\n * @param x {number} X coordinate.\n * @param y {number} Y coordinate.\n * @returns {Object} Object that contains 'x' and 'y' properties of the\n * point in the PDF coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToPdfPoint: function PageViewport_convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n },\n };\n return PageViewport;\n})();\n\nvar 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,\n 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 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, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014,\n 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C,\n 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160,\n 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC\n];\n\nfunction stringToPDFString(str) {\n var i, n = str.length, strBuf = [];\n if (str[0] === '\\xFE' && str[1] === '\\xFF') {\n // UTF16BE BOM\n for (i = 2; i < n; i += 2) {\n strBuf.push(String.fromCharCode(\n (str.charCodeAt(i) << 8) | str.charCodeAt(i + 1)));\n }\n } else {\n for (i = 0; i < n; ++i) {\n var code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n }\n return strBuf.join('');\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isEmptyObj(obj) {\n for (var key in obj) {\n return false;\n }\n return true;\n}\n\nfunction isBool(v) {\n return typeof v === 'boolean';\n}\n\nfunction isInt(v) {\n return typeof v === 'number' && ((v | 0) === v);\n}\n\nfunction isNum(v) {\n return typeof v === 'number';\n}\n\nfunction isString(v) {\n return typeof v === 'string';\n}\n\nfunction isArray(v) {\n return v instanceof Array;\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === 'object' && v !== null && v.byteLength !== undefined;\n}\n\n// Checks if ch is one of the following characters: SPACE, TAB, CR or LF.\nfunction isSpace(ch) {\n return (ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A);\n}\n\nfunction isNodeJS() {\n // eslint-disable-next-line no-undef\n return typeof process === 'object' && process + '' === '[object process]';\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise} promise - A promise object.\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 * @return {PromiseCapability} A capability object contains:\n * - a Promise, resolve and reject methods.\n */\nfunction createPromiseCapability() {\n var capability = {};\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = resolve;\n capability.reject = reject;\n });\n return capability;\n}\n\nvar StatTimer = (function StatTimerClosure() {\n function rpad(str, pad, length) {\n while (str.length < length) {\n str += pad;\n }\n return str;\n }\n function StatTimer() {\n this.started = Object.create(null);\n this.times = [];\n this.enabled = true;\n }\n StatTimer.prototype = {\n time: function StatTimer_time(name) {\n if (!this.enabled) {\n return;\n }\n if (name in this.started) {\n warn('Timer is already running for ' + name);\n }\n this.started[name] = Date.now();\n },\n timeEnd: function StatTimer_timeEnd(name) {\n if (!this.enabled) {\n return;\n }\n if (!(name in this.started)) {\n warn('Timer has not been started for ' + name);\n }\n this.times.push({\n 'name': 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 toString: function StatTimer_toString() {\n var i, ii;\n var times = this.times;\n var out = '';\n // Find the longest name for padding purposes.\n var longest = 0;\n for (i = 0, ii = times.length; i < ii; ++i) {\n var name = times[i]['name'];\n if (name.length > longest) {\n longest = name.length;\n }\n }\n for (i = 0, ii = times.length; i < ii; ++i) {\n var span = times[i];\n var duration = span.end - span.start;\n out += rpad(span['name'], ' ', longest) + ' ' + duration + 'ms\\n';\n }\n return out;\n },\n };\n return StatTimer;\n})();\n\nvar createBlob = function createBlob(data, contentType) {\n if (typeof Blob !== 'undefined') {\n return new Blob([data], { type: contentType, });\n }\n throw new Error('The \"Blob\" constructor is not supported.');\n};\n\nvar createObjectURL = (function createObjectURLClosure() {\n // Blob/createObjectURL is not available, falling back to data schema.\n var digits =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n return function createObjectURL(data, contentType, forceDataSchema = false) {\n if (!forceDataSchema && URL.createObjectURL) {\n var blob = createBlob(data, contentType);\n return URL.createObjectURL(blob);\n }\n\n var buffer = 'data:' + contentType + ';base64,';\n for (var i = 0, ii = data.length; i < ii; i += 3) {\n var b1 = data[i] & 0xFF;\n var b2 = data[i + 1] & 0xFF;\n var b3 = data[i + 2] & 0xFF;\n var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4);\n var d3 = i + 1 < ii ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64;\n var d4 = i + 2 < ii ? (b3 & 0x3F) : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n return buffer;\n };\n})();\n\nfunction resolveCall(fn, args, thisArg = null) {\n if (!fn) {\n return Promise.resolve(undefined);\n }\n return new Promise((resolve, reject) => {\n resolve(fn.apply(thisArg, args));\n });\n}\n\nfunction wrapReason(reason) {\n if (typeof reason !== 'object') {\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 'UnexpectedResponseException':\n return new UnexpectedResponseException(reason.message, reason.status);\n default:\n return new UnknownErrorException(reason.message, reason.details);\n }\n}\n\nfunction resolveOrReject(capability, success, reason) {\n if (success) {\n capability.resolve();\n } else {\n capability.reject(reason);\n }\n}\n\nfunction finalize(promise) {\n return Promise.resolve(promise).catch(() => {});\n}\n\nfunction MessageHandler(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.postMessageTransfers = true;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n let callbacksCapabilities = this.callbacksCapabilities = Object.create(null);\n let ah = this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = (event) => {\n let data = event.data;\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this._processStreamMessage(data);\n } else if (data.isReply) {\n let callbackId = data.callbackId;\n if (data.callbackId in callbacksCapabilities) {\n let callback = callbacksCapabilities[callbackId];\n delete callbacksCapabilities[callbackId];\n if ('error' in data) {\n callback.reject(wrapReason(data.error));\n } else {\n callback.resolve(data.data);\n }\n } else {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n } else if (data.action in ah) {\n let action = ah[data.action];\n if (data.callbackId) {\n let sourceName = this.sourceName;\n let targetName = data.sourceName;\n Promise.resolve().then(function () {\n return action[0].call(action[1], data.data);\n }).then((result) => {\n comObj.postMessage({\n sourceName,\n targetName,\n isReply: true,\n callbackId: data.callbackId,\n data: result,\n });\n }, (reason) => {\n if (reason instanceof Error) {\n // Serialize error to avoid \"DataCloneError\"\n reason = reason + '';\n }\n comObj.postMessage({\n sourceName,\n targetName,\n isReply: true,\n callbackId: data.callbackId,\n error: reason,\n });\n });\n } else if (data.streamId) {\n this._createStreamSink(data);\n } else {\n action[0].call(action[1], data.data);\n }\n } else {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n };\n comObj.addEventListener('message', this._onComObjOnMessage);\n}\n\nMessageHandler.prototype = {\n on(actionName, handler, scope) {\n var ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = [handler, scope];\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] - Optional list of transfers/ArrayBuffers\n */\n send(actionName, data, transfers) {\n var message = {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n };\n this.postMessage(message, transfers);\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] - Optional list of transfers/ArrayBuffers.\n * @returns {Promise} Promise to be resolved with response data.\n */\n sendWithPromise(actionName, data, transfers) {\n var callbackId = this.callbackId++;\n var message = {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n callbackId,\n };\n var capability = createPromiseCapability();\n this.callbacksCapabilities[callbackId] = capability;\n try {\n this.postMessage(message, transfers);\n } catch (e) {\n capability.reject(e);\n }\n return capability.promise;\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] - Optional list of transfers/ArrayBuffers.\n * @return {ReadableStream} ReadableStream to read data in chunks.\n */\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n let streamId = this.streamId++;\n let sourceName = this.sourceName;\n let targetName = this.targetName;\n\n return new ReadableStream({\n start: (controller) => {\n let startCapability = createPromiseCapability();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n isClosed: false,\n };\n this.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize,\n });\n // Return Promise for Async process, to signal success/failure.\n return startCapability.promise;\n },\n\n pull: (controller) => {\n let pullCapability = createPromiseCapability();\n this.streamControllers[streamId].pullCall = pullCapability;\n this.postMessage({\n sourceName,\n targetName,\n stream: '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 let cancelCapability = createPromiseCapability();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n this.postMessage({\n sourceName,\n targetName,\n stream: 'cancel',\n reason,\n streamId,\n });\n // Return Promise to signal success or failure.\n return cancelCapability.promise;\n },\n }, queueingStrategy);\n },\n\n _createStreamSink(data) {\n let self = this;\n let action = this.actionHandler[data.action];\n let streamId = data.streamId;\n let desiredSize = data.desiredSize;\n let sourceName = this.sourceName;\n let targetName = data.sourceName;\n let capability = createPromiseCapability();\n\n let sendStreamRequest = ({ stream, chunk, transfers,\n success, reason, }) => {\n this.postMessage({ sourceName, targetName, stream, streamId,\n chunk, success, reason, }, transfers);\n };\n\n let streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n let 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 sendStreamRequest({ stream: 'enqueue', chunk, transfers, });\n },\n\n close() {\n if (this.isCancelled) {\n return;\n }\n sendStreamRequest({ stream: 'close', });\n delete self.streamSinks[streamId];\n },\n\n error(reason) {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n sendStreamRequest({ stream: 'error', reason, });\n },\n\n sinkCapability: capability,\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize,\n ready: null,\n };\n\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n resolveCall(action[0], [data.data, streamSink], action[1]).then(() => {\n sendStreamRequest({ stream: 'start_complete', success: true, });\n }, (reason) => {\n sendStreamRequest({ stream: 'start_complete', success: false, reason, });\n });\n },\n\n _processStreamMessage(data) {\n let sourceName = this.sourceName;\n let targetName = data.sourceName;\n let streamId = data.streamId;\n\n let sendStreamResponse = ({ stream, success, reason, }) => {\n this.comObj.postMessage({ sourceName, targetName, stream,\n success, streamId, reason, });\n };\n\n let deleteStreamController = () => {\n // Delete streamController only when start, pull and\n // cancel callbacks are resolved, to avoid \"TypeError\".\n Promise.all([\n this.streamControllers[data.streamId].startCall,\n this.streamControllers[data.streamId].pullCall,\n this.streamControllers[data.streamId].cancelCall\n ].map(function(capability) {\n return capability && finalize(capability.promise);\n })).then(() => {\n delete this.streamControllers[data.streamId];\n });\n };\n\n switch (data.stream) {\n case 'start_complete':\n resolveOrReject(this.streamControllers[data.streamId].startCall,\n data.success, wrapReason(data.reason));\n break;\n case 'pull_complete':\n resolveOrReject(this.streamControllers[data.streamId].pullCall,\n data.success, wrapReason(data.reason));\n break;\n case 'pull':\n // Ignore any pull after close is called.\n if (!this.streamSinks[data.streamId]) {\n sendStreamResponse({ stream: 'pull_complete', success: true, });\n break;\n }\n // Pull increases the desiredSize property of sink,\n // so when it changes from negative to positive,\n // set ready property as resolved promise.\n if (this.streamSinks[data.streamId].desiredSize <= 0 &&\n data.desiredSize > 0) {\n this.streamSinks[data.streamId].sinkCapability.resolve();\n }\n // Reset desiredSize property of sink on every pull.\n this.streamSinks[data.streamId].desiredSize = data.desiredSize;\n resolveCall(this.streamSinks[data.streamId].onPull).then(() => {\n sendStreamResponse({ stream: 'pull_complete', success: true, });\n }, (reason) => {\n sendStreamResponse({ stream: 'pull_complete',\n success: false, reason, });\n });\n break;\n case 'enqueue':\n assert(this.streamControllers[data.streamId],\n 'enqueue should have stream controller');\n if (!this.streamControllers[data.streamId].isClosed) {\n this.streamControllers[data.streamId].controller.enqueue(data.chunk);\n }\n break;\n case 'close':\n assert(this.streamControllers[data.streamId],\n 'close should have stream controller');\n if (this.streamControllers[data.streamId].isClosed) {\n break;\n }\n this.streamControllers[data.streamId].isClosed = true;\n this.streamControllers[data.streamId].controller.close();\n deleteStreamController();\n break;\n case 'error':\n assert(this.streamControllers[data.streamId],\n 'error should have stream controller');\n this.streamControllers[data.streamId].controller.\n error(wrapReason(data.reason));\n deleteStreamController();\n break;\n case 'cancel_complete':\n resolveOrReject(this.streamControllers[data.streamId].cancelCall,\n data.success, wrapReason(data.reason));\n deleteStreamController();\n break;\n case 'cancel':\n if (!this.streamSinks[data.streamId]) {\n break;\n }\n resolveCall(this.streamSinks[data.streamId].onCancel,\n [wrapReason(data.reason)]).then(() => {\n sendStreamResponse({ stream: 'cancel_complete', success: true, });\n }, (reason) => {\n sendStreamResponse({ stream: 'cancel_complete',\n success: false, reason, });\n });\n this.streamSinks[data.streamId].sinkCapability.\n reject(wrapReason(data.reason));\n this.streamSinks[data.streamId].isCancelled = true;\n delete this.streamSinks[data.streamId];\n break;\n default:\n throw new Error('Unexpected stream case');\n }\n },\n\n /**\n * Sends raw message to the comObj.\n * @private\n * @param {Object} message - Raw message.\n * @param transfers List of transfers/ArrayBuffers, or undefined.\n */\n postMessage(message, transfers) {\n if (transfers && this.postMessageTransfers) {\n this.comObj.postMessage(message, transfers);\n } else {\n this.comObj.postMessage(message);\n }\n },\n\n destroy() {\n this.comObj.removeEventListener('message', this._onComObjOnMessage);\n },\n};\n\nfunction loadJpegStream(id, imageUrl, objs) {\n var img = new Image();\n img.onload = (function loadJpegStream_onloadClosure() {\n objs.resolve(id, img);\n });\n img.onerror = (function loadJpegStream_onerrorClosure() {\n objs.resolve(id, null);\n warn('Error during JPEG image loading');\n });\n img.src = imageUrl;\n}\n\nexport {\n FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n OPS,\n VERBOSITY_LEVELS,\n UNSUPPORTED_FEATURES,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationType,\n FontType,\n ImageKind,\n CMapCompressionType,\n AbortException,\n InvalidPDFException,\n MessageHandler,\n MissingDataException,\n MissingPDFException,\n NativeImageDecoding,\n NotImplementedException,\n PageViewport,\n PasswordException,\n PasswordResponses,\n StatTimer,\n StreamType,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n Util,\n XRefParseException,\n FormatError,\n arrayByteLength,\n arraysToBytes,\n assert,\n bytesToString,\n createBlob,\n createPromiseCapability,\n createObjectURL,\n deprecated,\n getLookupTableFactory,\n getVerbosityLevel,\n globalScope,\n info,\n isArray,\n isArrayBuffer,\n isBool,\n isEmptyObj,\n isInt,\n isNum,\n isString,\n isSpace,\n isNodeJS,\n isSameOrigin,\n createValidAbsoluteUrl,\n isLittleEndian,\n isEvalSupported,\n loadJpegStream,\n log2,\n readInt8,\n readUint16,\n readUint32,\n removeNullCharacters,\n ReadableStream,\n setVerbosityLevel,\n shadow,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF8String,\n utf8StringToString,\n warn,\n unreachable,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/shared/util.js","/* 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 CMapCompressionType, createValidAbsoluteUrl, deprecated, globalScope,\n removeNullCharacters, stringToBytes, warn\n} from '../shared/util';\n\nvar DEFAULT_LINK_REL = 'noopener noreferrer nofollow';\n\nclass DOMCanvasFactory {\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error('invalid canvas size');\n }\n let canvas = document.createElement('canvas');\n let context = canvas.getContext('2d');\n canvas.width = width;\n canvas.height = height;\n return {\n canvas,\n context,\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\nclass DOMCMapReaderFactory {\n constructor({ baseUrl = null, isCompressed = false, }) {\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n\n fetch({ name, }) {\n if (!name) {\n return Promise.reject(new Error('CMap name must be specified.'));\n }\n return new Promise((resolve, reject) => {\n let url = this.baseUrl + name + (this.isCompressed ? '.bcmap' : '');\n\n let request = new XMLHttpRequest();\n request.open('GET', url, true);\n\n if (this.isCompressed) {\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 (this.isCompressed && request.response) {\n data = new Uint8Array(request.response);\n } else if (!this.isCompressed && request.responseText) {\n data = stringToBytes(request.responseText);\n }\n if (data) {\n resolve({\n cMapData: data,\n compressionType: this.isCompressed ?\n CMapCompressionType.BINARY : CMapCompressionType.NONE,\n });\n return;\n }\n }\n reject(new Error('Unable to load ' +\n (this.isCompressed ? 'binary ' : '') +\n 'CMap at: ' + url));\n };\n\n request.send(null);\n });\n }\n}\n\n/**\n * Optimised CSS custom property getter/setter.\n * @class\n */\nvar CustomStyle = (function CustomStyleClosure() {\n\n // As noted on: http://www.zachstronaut.com/posts/2009/02/17/\n // animate-css-transforms-firefox-webkit.html\n // in some versions of IE9 it is critical that ms appear in this list\n // before Moz\n var prefixes = ['ms', 'Moz', 'Webkit', 'O'];\n var _cache = Object.create(null);\n\n function CustomStyle() {}\n\n CustomStyle.getProp = function get(propName, element) {\n // check cache only when no element is given\n if (arguments.length === 1 && typeof _cache[propName] === 'string') {\n return _cache[propName];\n }\n\n element = element || document.documentElement;\n var style = element.style, prefixed, uPropName;\n\n // test standard property first\n if (typeof style[propName] === 'string') {\n return (_cache[propName] = propName);\n }\n\n // capitalize\n uPropName = propName.charAt(0).toUpperCase() + propName.slice(1);\n\n // test vendor specific properties\n for (var i = 0, l = prefixes.length; i < l; i++) {\n prefixed = prefixes[i] + uPropName;\n if (typeof style[prefixed] === 'string') {\n return (_cache[propName] = prefixed);\n }\n }\n\n // If all fails then set to undefined.\n return (_cache[propName] = 'undefined');\n };\n\n CustomStyle.setProp = function set(propName, element, str) {\n var prop = this.getProp(propName);\n if (prop !== 'undefined') {\n element.style[prop] = str;\n }\n };\n\n return CustomStyle;\n})();\n\nvar RenderingCancelledException = (function RenderingCancelledException() {\n function RenderingCancelledException(msg, type) {\n this.message = msg;\n this.type = type;\n }\n\n RenderingCancelledException.prototype = new Error();\n RenderingCancelledException.prototype.name = 'RenderingCancelledException';\n RenderingCancelledException.constructor = RenderingCancelledException;\n\n return RenderingCancelledException;\n})();\n\nvar LinkTarget = {\n NONE: 0, // Default value.\n SELF: 1,\n BLANK: 2,\n PARENT: 3,\n TOP: 4,\n};\n\nvar LinkTargetStringMap = [\n '',\n '_self',\n '_blank',\n '_parent',\n '_top'\n];\n\n/**\n * @typedef ExternalLinkParameters\n * @typedef {Object} ExternalLinkParameters\n * @property {string} url - An absolute URL.\n * @property {LinkTarget} target - The link target.\n * @property {string} rel - The link relationship.\n */\n\n/**\n * Adds various attributes (href, title, target, rel) to hyperlinks.\n * @param {HTMLLinkElement} link - The link element.\n * @param {ExternalLinkParameters} params\n */\nfunction addLinkAttributes(link, params) {\n var url = params && params.url;\n link.href = link.title = (url ? removeNullCharacters(url) : '');\n\n if (url) {\n var target = params.target;\n if (typeof target === 'undefined') {\n target = getDefaultSetting('externalLinkTarget');\n }\n link.target = LinkTargetStringMap[target];\n\n var rel = params.rel;\n if (typeof rel === 'undefined') {\n rel = getDefaultSetting('externalLinkRel');\n }\n link.rel = rel;\n }\n}\n\n// Gets the file name from a given URL.\nfunction getFilenameFromUrl(url) {\n var anchor = url.indexOf('#');\n var query = url.indexOf('?');\n var end = Math.min(\n anchor > 0 ? anchor : url.length,\n query > 0 ? query : url.length);\n return url.substring(url.lastIndexOf('/', end) + 1, end);\n}\n\nfunction getDefaultSetting(id) {\n // The list of the settings and their default is maintained for backward\n // compatibility and shall not be extended or modified. See also global.js.\n var globalSettings = globalScope.PDFJS;\n switch (id) {\n case 'pdfBug':\n return globalSettings ? globalSettings.pdfBug : false;\n case 'disableAutoFetch':\n return globalSettings ? globalSettings.disableAutoFetch : false;\n case 'disableStream':\n return globalSettings ? globalSettings.disableStream : false;\n case 'disableRange':\n return globalSettings ? globalSettings.disableRange : false;\n case 'disableFontFace':\n return globalSettings ? globalSettings.disableFontFace : false;\n case 'disableCreateObjectURL':\n return globalSettings ? globalSettings.disableCreateObjectURL : false;\n case 'disableWebGL':\n return globalSettings ? globalSettings.disableWebGL : true;\n case 'cMapUrl':\n return globalSettings ? globalSettings.cMapUrl : null;\n case 'cMapPacked':\n return globalSettings ? globalSettings.cMapPacked : false;\n case 'postMessageTransfers':\n return globalSettings ? globalSettings.postMessageTransfers : true;\n case 'workerPort':\n return globalSettings ? globalSettings.workerPort : null;\n case 'workerSrc':\n return globalSettings ? globalSettings.workerSrc : null;\n case 'disableWorker':\n return globalSettings ? globalSettings.disableWorker : false;\n case 'maxImageSize':\n return globalSettings ? globalSettings.maxImageSize : -1;\n case 'imageResourcesPath':\n return globalSettings ? globalSettings.imageResourcesPath : '';\n case 'isEvalSupported':\n return globalSettings ? globalSettings.isEvalSupported : true;\n case 'externalLinkTarget':\n if (!globalSettings) {\n return LinkTarget.NONE;\n }\n switch (globalSettings.externalLinkTarget) {\n case LinkTarget.NONE:\n case LinkTarget.SELF:\n case LinkTarget.BLANK:\n case LinkTarget.PARENT:\n case LinkTarget.TOP:\n return globalSettings.externalLinkTarget;\n }\n warn('PDFJS.externalLinkTarget is invalid: ' +\n globalSettings.externalLinkTarget);\n // Reset the external link target, to suppress further warnings.\n globalSettings.externalLinkTarget = LinkTarget.NONE;\n return LinkTarget.NONE;\n case 'externalLinkRel':\n return globalSettings ? globalSettings.externalLinkRel : DEFAULT_LINK_REL;\n case 'enableStats':\n return !!(globalSettings && globalSettings.enableStats);\n case 'pdfjsNext':\n return !!(globalSettings && globalSettings.pdfjsNext);\n default:\n throw new Error('Unknown default setting: ' + id);\n }\n}\n\nfunction isExternalLinkTargetSet() {\n var externalLinkTarget = getDefaultSetting('externalLinkTarget');\n switch (externalLinkTarget) {\n case LinkTarget.NONE:\n return false;\n case LinkTarget.SELF:\n case LinkTarget.BLANK:\n case LinkTarget.PARENT:\n case LinkTarget.TOP:\n return true;\n }\n}\n\nfunction isValidUrl(url, allowRelative) {\n deprecated('isValidUrl(), please use createValidAbsoluteUrl() instead.');\n var baseUrl = allowRelative ? 'http://example.com' : null;\n return createValidAbsoluteUrl(url, baseUrl) !== null;\n}\n\nexport {\n CustomStyle,\n RenderingCancelledException,\n addLinkAttributes,\n isExternalLinkTargetSet,\n isValidUrl,\n getFilenameFromUrl,\n LinkTarget,\n getDefaultSetting,\n DEFAULT_LINK_REL,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/dom_utils.js","/* 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 requirejs, __non_webpack_require__ */\n\nimport {\n assert, createPromiseCapability, deprecated, getVerbosityLevel, globalScope,\n info, InvalidPDFException, isArray, isArrayBuffer, isInt, isSameOrigin,\n loadJpegStream, MessageHandler, MissingPDFException, NativeImageDecoding,\n PageViewport, PasswordException, StatTimer, stringToBytes,\n UnexpectedResponseException, UnknownErrorException, Util, warn\n} from '../shared/util';\nimport {\n DOMCanvasFactory, DOMCMapReaderFactory, getDefaultSetting,\n RenderingCancelledException\n} from './dom_utils';\nimport { FontFaceObject, FontLoader } from './font_loader';\nimport { CanvasGraphics } from './canvas';\nimport { Metadata } from './metadata';\nimport { PDFDataTransportStream } from './transport_stream';\n\nvar DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\n\nvar isWorkerDisabled = false;\nvar workerSrc;\nvar isPostMessageTransfersDisabled = false;\n\nvar pdfjsFilePath =\n typeof PDFJSDev !== 'undefined' &&\n PDFJSDev.test('PRODUCTION && !(MOZCENTRAL || FIREFOX)') &&\n typeof document !== 'undefined' && document.currentScript ?\n document.currentScript.src : null;\n\nvar fakeWorkerFilesLoader = null;\nvar useRequireEnsure = false;\nif (typeof PDFJSDev !== 'undefined' &&\n PDFJSDev.test('GENERIC && !SINGLE_FILE')) {\n // For GENERIC build we need add support of different fake file loaders\n // for different frameworks.\n if (typeof window === 'undefined') {\n // node.js - disable worker and set require.ensure.\n isWorkerDisabled = true;\n if (typeof __non_webpack_require__.ensure === 'undefined') {\n __non_webpack_require__.ensure = __non_webpack_require__('node-ensure');\n }\n useRequireEnsure = true;\n } else if (typeof __non_webpack_require__ !== 'undefined' &&\n typeof __non_webpack_require__.ensure === 'function') {\n useRequireEnsure = true;\n }\n if (typeof requirejs !== 'undefined' && requirejs.toUrl) {\n workerSrc = requirejs.toUrl('pdfjs-dist/build/pdf.worker.js');\n }\n var dynamicLoaderSupported =\n typeof requirejs !== 'undefined' && requirejs.load;\n fakeWorkerFilesLoader = useRequireEnsure ? (function (callback) {\n __non_webpack_require__.ensure([], function () {\n var worker;\n if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('LIB')) {\n worker = __non_webpack_require__('../pdf.worker.js');\n } else {\n worker = __non_webpack_require__('./pdf.worker.js');\n }\n callback(worker.WorkerMessageHandler);\n });\n }) : dynamicLoaderSupported ? (function (callback) {\n requirejs(['pdfjs-dist/build/pdf.worker'], function (worker) {\n callback(worker.WorkerMessageHandler);\n });\n }) : null;\n}\n\n/** @type IPDFStream */\nvar PDFNetworkStream;\n\n/**\n * Sets PDFNetworkStream class to be used as alternative PDF data transport.\n * @param {IPDFStream} cls - the PDF data transport.\n */\nfunction setPDFNetworkStreamClass(cls) {\n PDFNetworkStream = cls;\n}\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string} url - The URL of the PDF.\n * @property {TypedArray|Array|string} data - Binary PDF data. Use typed arrays\n * (Uint8Array) to improve the memory usage. If PDF data is BASE64-encoded,\n * 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 cross-site\n * Access-Control requests should be made using credentials such as cookies\n * 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 or\n * 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\n * @property {number} rangeChunkSize - Optional parameter to specify\n * maximum number of bytes fetched per range request. The default value is\n * 2^16 = 65536.\n * @property {PDFWorker} worker - The worker that will be used for the loading\n * and parsing of the PDF data.\n * @property {string} docBaseUrl - (optional) The base URL of the document,\n * used when attempting to recover valid absolute URLs for annotations, and\n * outline items, that (incorrectly) only specify relative URLs.\n * @property {boolean} disableNativeImageDecoder - (deprecated) Disable decoding\n * of certain (simple) JPEG images in the browser. This is useful for\n * environments without DOM image support, such as e.g. Node.js.\n * The default value is `false`.\n * @property {string} nativeImageDecoderSupport - (optional) Strategy for\n * decoding certain (simple) JPEG images in the browser. This is useful for\n * environments without DOM image and canvas support, such as e.g. Node.js.\n * Valid values are 'decode', 'display' or 'none'; where 'decode' is intended\n * for browsers with full image/canvas support, 'display' for environments\n * with limited image support through stubs (useful for SVG conversion),\n * and 'none' where JPEG images will be decoded entirely by PDF.js.\n * The default value is 'decode'.\n * @property {Object} CMapReaderFactory - (optional) The factory that will be\n * used when reading built-in CMap files. Providing a custom factory is useful\n * for environments without `XMLHttpRequest` support, such as e.g. Node.js.\n * The default value is {DOMCMapReaderFactory}.\n * @property {boolean} stopAtErrors - (optional) 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 */\n\n/**\n * @typedef {Object} PDFDocumentStats\n * @property {Array} streamTypes - Used stream types in the document (an item\n * is set to true if specific stream ID was used in the document).\n * @property {Array} fontTypes - Used font type in the document (an item is set\n * to true if specific font ID was used in the document).\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n * NOTE: If a URL is used to fetch the PDF data a standard XMLHttpRequest(XHR)\n * is used, which means it must follow the same origin rules that any XHR does\n * e.g. No cross domain requests without CORS.\n *\n * @param {string|TypedArray|DocumentInitParameters|PDFDataRangeTransport} src\n * Can be a url to where a PDF is located, a typed array (Uint8Array)\n * already populated with data or parameter object.\n *\n * @param {PDFDataRangeTransport} pdfDataRangeTransport (deprecated) It is used\n * if you want to manually serve range requests for data in the PDF.\n *\n * @param {function} passwordCallback (deprecated) It is used to request a\n * password if wrong or no password was provided. The callback receives two\n * parameters: function that needs to be called with new password and reason\n * (see {PasswordResponses}).\n *\n * @param {function} progressCallback (deprecated) It is used to be able to\n * monitor the loading progress of the PDF file (necessary to implement e.g.\n * a loading bar). The callback receives an {Object} with the properties:\n * {number} loaded and {number} total.\n *\n * @return {PDFDocumentLoadingTask}\n */\nfunction getDocument(src, pdfDataRangeTransport,\n passwordCallback, progressCallback) {\n var task = new PDFDocumentLoadingTask();\n\n // Support of the obsolete arguments (for compatibility with API v1.0)\n if (arguments.length > 1) {\n deprecated('getDocument is called with pdfDataRangeTransport, ' +\n 'passwordCallback or progressCallback argument');\n }\n if (pdfDataRangeTransport) {\n if (!(pdfDataRangeTransport instanceof PDFDataRangeTransport)) {\n // Not a PDFDataRangeTransport instance, trying to add missing properties.\n pdfDataRangeTransport = Object.create(pdfDataRangeTransport);\n pdfDataRangeTransport.length = src.length;\n pdfDataRangeTransport.initialData = src.initialData;\n if (!pdfDataRangeTransport.abort) {\n pdfDataRangeTransport.abort = function () {};\n }\n }\n src = Object.create(src);\n src.range = pdfDataRangeTransport;\n }\n task.onPassword = passwordCallback || null;\n task.onProgress = progressCallback || null;\n\n var source;\n if (typeof src === 'string') {\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('Invalid parameter in getDocument, ' +\n 'need either Uint8Array, string or a parameter object');\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\n var params = {};\n var rangeTransport = null;\n var worker = null;\n var CMapReaderFactory = DOMCMapReaderFactory;\n\n for (var key in source) {\n if (key === 'url' && typeof window !== 'undefined') {\n // The full path is required in the 'url' field.\n params[key] = new URL(source[key], window.location).href;\n continue;\n } else if (key === 'range') {\n rangeTransport = source[key];\n continue;\n } else if (key === 'worker') {\n worker = source[key];\n continue;\n } else if (key === 'data' && !(source[key] instanceof Uint8Array)) {\n // Converting string or array-like data to Uint8Array.\n var pdfBytes = source[key];\n if (typeof pdfBytes === 'string') {\n params[key] = stringToBytes(pdfBytes);\n } else if (typeof pdfBytes === 'object' && pdfBytes !== null &&\n !isNaN(pdfBytes.length)) {\n params[key] = new Uint8Array(pdfBytes);\n } else if (isArrayBuffer(pdfBytes)) {\n params[key] = new Uint8Array(pdfBytes);\n } else {\n throw new Error('Invalid PDF binary data: either typed array, ' +\n 'string or array-like object is expected in the ' +\n 'data property.');\n }\n continue;\n } else if (key === 'CMapReaderFactory') {\n CMapReaderFactory = source[key];\n continue;\n }\n params[key] = source[key];\n }\n\n params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;\n params.ignoreErrors = params.stopAtErrors !== true;\n\n if (params.disableNativeImageDecoder !== undefined) {\n deprecated('parameter disableNativeImageDecoder, ' +\n 'use nativeImageDecoderSupport instead');\n }\n params.nativeImageDecoderSupport = params.nativeImageDecoderSupport ||\n (params.disableNativeImageDecoder === true ? NativeImageDecoding.NONE :\n NativeImageDecoding.DECODE);\n if (params.nativeImageDecoderSupport !== NativeImageDecoding.DECODE &&\n params.nativeImageDecoderSupport !== NativeImageDecoding.NONE &&\n params.nativeImageDecoderSupport !== NativeImageDecoding.DISPLAY) {\n warn('Invalid parameter nativeImageDecoderSupport: ' +\n 'need a state of enum {NativeImageDecoding}');\n params.nativeImageDecoderSupport = NativeImageDecoding.DECODE;\n }\n\n if (!worker) {\n // Worker was not provided -- creating and owning our own. If message port\n // is specified in global settings, using it.\n var workerPort = getDefaultSetting('workerPort');\n worker = workerPort ? PDFWorker.fromPort(workerPort) : new PDFWorker();\n task._worker = worker;\n }\n var docId = task.docId;\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error('Loading aborted');\n }\n return _fetchDocument(worker, params, rangeTransport, docId).then(\n function (workerId) {\n if (task.destroyed) {\n throw new Error('Loading aborted');\n }\n\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(params, rangeTransport);\n } else if (!params.data) {\n networkStream = new PDFNetworkStream({\n source: params,\n disableRange: getDefaultSetting('disableRange'),\n });\n }\n\n var messageHandler = new MessageHandler(docId, workerId, worker.port);\n messageHandler.postMessageTransfers = worker.postMessageTransfers;\n var transport = new WorkerTransport(messageHandler, task, networkStream,\n CMapReaderFactory);\n task._transport = transport;\n messageHandler.send('Ready', null);\n });\n }).catch(task._capability.reject);\n\n return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n * @param {PDFWorker} worker\n * @param {Object} source\n * @param {PDFDataRangeTransport} pdfDataRangeTransport\n * @param {string} docId Unique document id, used as MessageHandler id.\n * @returns {Promise} The promise, which is resolved when worker id of\n * MessageHandler is known.\n * @private\n */\nfunction _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n if (worker.destroyed) {\n return Promise.reject(new Error('Worker was destroyed'));\n }\n\n source.disableAutoFetch = getDefaultSetting('disableAutoFetch');\n source.disableStream = getDefaultSetting('disableStream');\n source.chunkedViewerLoading = !!pdfDataRangeTransport;\n if (pdfDataRangeTransport) {\n source.length = pdfDataRangeTransport.length;\n source.initialData = pdfDataRangeTransport.initialData;\n }\n return worker.messageHandler.sendWithPromise('GetDocRequest', {\n docId,\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: getDefaultSetting('maxImageSize'),\n disableFontFace: getDefaultSetting('disableFontFace'),\n disableCreateObjectURL: getDefaultSetting('disableCreateObjectURL'),\n postMessageTransfers: getDefaultSetting('postMessageTransfers') &&\n !isPostMessageTransfersDisabled,\n docBaseUrl: source.docBaseUrl,\n nativeImageDecoderSupport: source.nativeImageDecoderSupport,\n ignoreErrors: source.ignoreErrors,\n }).then(function (workerId) {\n if (worker.destroyed) {\n throw new Error('Worker was destroyed');\n }\n return workerId;\n });\n}\n\n/**\n * PDF document loading operation.\n * @class\n * @alias PDFDocumentLoadingTask\n */\nvar PDFDocumentLoadingTask = (function PDFDocumentLoadingTaskClosure() {\n var nextDocumentId = 0;\n\n /** @constructs PDFDocumentLoadingTask */\n function PDFDocumentLoadingTask() {\n this._capability = createPromiseCapability();\n this._transport = null;\n this._worker = null;\n\n /**\n * Unique document loading task id -- used in MessageHandlers.\n * @type {string}\n */\n this.docId = 'd' + (nextDocumentId++);\n\n /**\n * Shows if loading task is destroyed.\n * @type {boolean}\n */\n this.destroyed = false;\n\n /**\n * Callback to request a password if wrong or no password was provided.\n * The callback receives two parameters: function that needs to be called\n * with new password and reason (see {PasswordResponses}).\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). The callback receives\n * an {Object} with the properties: {number} loaded and {number} total.\n */\n this.onProgress = null;\n\n /**\n * Callback to when unsupported feature is used. The callback receives\n * an {UNSUPPORTED_FEATURES} argument.\n */\n this.onUnsupportedFeature = null;\n }\n\n PDFDocumentLoadingTask.prototype =\n /** @lends PDFDocumentLoadingTask.prototype */ {\n /**\n * @return {Promise}\n */\n get promise() {\n return this._capability.promise;\n },\n\n /**\n * Aborts all network requests and destroys worker.\n * @return {Promise} A promise that is resolved after destruction activity\n * is completed.\n */\n destroy() {\n this.destroyed = true;\n\n var transportDestroyed = !this._transport ? Promise.resolve() :\n this._transport.destroy();\n return transportDestroyed.then(() => {\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n });\n },\n\n /**\n * Registers callbacks to indicate the document loading completion.\n *\n * @param {function} onFulfilled The callback for the loading completion.\n * @param {function} onRejected The callback for the loading failure.\n * @return {Promise} A promise that is resolved after the onFulfilled or\n * onRejected callback.\n */\n then: function PDFDocumentLoadingTask_then(onFulfilled, onRejected) {\n return this.promise.then.apply(this.promise, arguments);\n },\n };\n\n return PDFDocumentLoadingTask;\n})();\n\n/**\n * Abstract class to support range requests file loading.\n * @class\n * @alias PDFDataRangeTransport\n * @param {number} length\n * @param {Uint8Array} initialData\n */\nvar PDFDataRangeTransport = (function pdfDataRangeTransportClosure() {\n function PDFDataRangeTransport(length, initialData) {\n this.length = length;\n this.initialData = initialData;\n\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._readyCapability = createPromiseCapability();\n }\n PDFDataRangeTransport.prototype =\n /** @lends PDFDataRangeTransport.prototype */ {\n addRangeListener:\n function PDFDataRangeTransport_addRangeListener(listener) {\n this._rangeListeners.push(listener);\n },\n\n addProgressListener:\n function PDFDataRangeTransport_addProgressListener(listener) {\n this._progressListeners.push(listener);\n },\n\n addProgressiveReadListener:\n function PDFDataRangeTransport_addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n },\n\n onDataRange: function PDFDataRangeTransport_onDataRange(begin, chunk) {\n var listeners = this._rangeListeners;\n for (var i = 0, n = listeners.length; i < n; ++i) {\n listeners[i](begin, chunk);\n }\n },\n\n onDataProgress: function PDFDataRangeTransport_onDataProgress(loaded) {\n this._readyCapability.promise.then(() => {\n var listeners = this._progressListeners;\n for (var i = 0, n = listeners.length; i < n; ++i) {\n listeners[i](loaded);\n }\n });\n },\n\n onDataProgressiveRead:\n function PDFDataRangeTransport_onDataProgress(chunk) {\n this._readyCapability.promise.then(() => {\n var listeners = this._progressiveReadListeners;\n for (var i = 0, n = listeners.length; i < n; ++i) {\n listeners[i](chunk);\n }\n });\n },\n\n transportReady: function PDFDataRangeTransport_transportReady() {\n this._readyCapability.resolve();\n },\n\n requestDataRange:\n function PDFDataRangeTransport_requestDataRange(begin, end) {\n throw new Error('Abstract method PDFDataRangeTransport.requestDataRange');\n },\n\n abort: function PDFDataRangeTransport_abort() {\n },\n };\n return PDFDataRangeTransport;\n})();\n\n/**\n * Proxy to a PDFDocument in the worker thread. Also, contains commonly used\n * properties that can be read synchronously.\n * @class\n * @alias PDFDocumentProxy\n */\nvar PDFDocumentProxy = (function PDFDocumentProxyClosure() {\n function PDFDocumentProxy(pdfInfo, transport, loadingTask) {\n this.pdfInfo = pdfInfo;\n this.transport = transport;\n this.loadingTask = loadingTask;\n }\n PDFDocumentProxy.prototype = /** @lends PDFDocumentProxy.prototype */ {\n /**\n * @return {number} Total number of pages the PDF contains.\n */\n get numPages() {\n return this.pdfInfo.numPages;\n },\n /**\n * @return {string} A unique ID to identify a PDF. Not guaranteed to be\n * unique.\n */\n get fingerprint() {\n return this.pdfInfo.fingerprint;\n },\n /**\n * @param {number} pageNumber The page number to get. The first page is 1.\n * @return {Promise} A promise that is resolved with a {@link PDFPageProxy}\n * object.\n */\n getPage: function PDFDocumentProxy_getPage(pageNumber) {\n return this.transport.getPage(pageNumber);\n },\n /**\n * @param {{num: number, gen: number}} ref The page reference. Must have\n * the 'num' and 'gen' properties.\n * @return {Promise} A promise that is resolved with the page index that is\n * associated with the reference.\n */\n getPageIndex: function PDFDocumentProxy_getPageIndex(ref) {\n return this.transport.getPageIndex(ref);\n },\n /**\n * @return {Promise} A promise that is resolved with a lookup table for\n * mapping named destinations to reference numbers.\n *\n * This can be slow for large documents: use getDestination instead\n */\n getDestinations: function PDFDocumentProxy_getDestinations() {\n return this.transport.getDestinations();\n },\n /**\n * @param {string} id The named destination to get.\n * @return {Promise} A promise that is resolved with all information\n * of the given named destination.\n */\n getDestination: function PDFDocumentProxy_getDestination(id) {\n return this.transport.getDestination(id);\n },\n /**\n * @return {Promise} A promise that is resolved with:\n * an Array containing the pageLabels that correspond to the pageIndexes,\n * or `null` when no pageLabels are present in the PDF file.\n */\n getPageLabels: function PDFDocumentProxy_getPageLabels() {\n return this.transport.getPageLabels();\n },\n /**\n * @return {Promise} A promise that is resolved with a {string} containing\n * the PageMode name.\n */\n getPageMode() {\n return this.transport.getPageMode();\n },\n /**\n * @return {Promise} A promise that is resolved with a lookup table for\n * mapping named attachments to their content.\n */\n getAttachments: function PDFDocumentProxy_getAttachments() {\n return this.transport.getAttachments();\n },\n /**\n * @return {Promise} A promise that is resolved with an array of all the\n * JavaScript strings in the name tree.\n */\n getJavaScript: function PDFDocumentProxy_getJavaScript() {\n return this.transport.getJavaScript();\n },\n /**\n * @return {Promise} A promise that is resolved with an {Array} that is a\n * tree outline (if it has one) of the PDF. The tree is in the format of:\n * [\n * {\n * title: string,\n * bold: boolean,\n * italic: boolean,\n * color: rgb Uint8Array,\n * dest: dest obj,\n * url: string,\n * items: array of more items like this\n * },\n * ...\n * ].\n */\n getOutline: function PDFDocumentProxy_getOutline() {\n return this.transport.getOutline();\n },\n /**\n * @return {Promise} A promise that is resolved with an {Object} that has\n * info and metadata properties. Info is an {Object} filled with anything\n * available in the information dictionary and similarly metadata is a\n * {Metadata} object with information from the metadata section of the PDF.\n */\n getMetadata: function PDFDocumentProxy_getMetadata() {\n return this.transport.getMetadata();\n },\n /**\n * @return {Promise} A promise that is resolved with a TypedArray that has\n * the raw data from the PDF.\n */\n getData: function PDFDocumentProxy_getData() {\n return this.transport.getData();\n },\n /**\n * @return {Promise} A promise that is resolved when the document's data\n * is loaded. It is resolved with an {Object} that contains the length\n * property that indicates size of the PDF data in bytes.\n */\n getDownloadInfo: function PDFDocumentProxy_getDownloadInfo() {\n return this.transport.downloadInfoCapability.promise;\n },\n /**\n * @return {Promise} A promise this is resolved with current stats about\n * document structures (see {@link PDFDocumentStats}).\n */\n getStats: function PDFDocumentProxy_getStats() {\n return this.transport.getStats();\n },\n /**\n * Cleans up resources allocated by the document, e.g. created @font-face.\n */\n cleanup: function PDFDocumentProxy_cleanup() {\n this.transport.startCleanup();\n },\n /**\n * Destroys current document instance and terminates worker.\n */\n destroy: function PDFDocumentProxy_destroy() {\n return this.loadingTask.destroy();\n },\n };\n return PDFDocumentProxy;\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 */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {array} items - array of {@link TextItem}\n * @property {Object} styles - {@link TextStyles} objects, 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} 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 */\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 - text is in vertical mode.\n * @property {string} fontFamily - possible font family\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} intent - Determines the annotations that will be fetched,\n * can be either 'display' (viewable annotations) or 'print'\n * (printable annotations).\n * If the parameter is omitted, all annotations are fetched.\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\n * calling of PDFPage.getViewport method.\n * @property {string} intent - Rendering intent, can be 'display' or 'print'\n * (default value is 'display').\n * @property {boolean} renderInteractiveForms - (optional) Whether or not\n * interactive form elements are rendered in the display\n * layer. If so, we do not render them on canvas as well.\n * @property {Array} transform - (optional) Additional transform, applied\n * just before viewport transform.\n * @property {Object} imageLayer - (optional) An object that has beginLayout,\n * endLayout and appendImage functions.\n * @property {function} continueCallback - (deprecated) A function that will be\n * called each time the rendering is paused. To continue\n * rendering call the function that is the first argument\n * to the callback.\n * @property {Object} canvasFactory - (optional) The factory that will be used\n * when creating canvases. The default value is\n * {DOMCanvasFactory}.\n * @property {Object} background - (optional) Background to use for the canvas.\n * Can use any valid canvas.fillStyle: A DOMString parsed as\n * CSS value, a CanvasGradient object (a linear or\n * radial gradient) or a CanvasPattern object (a repetitive\n * image). The default value is 'rgb(255,255,255)'.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array} fnArray - Array containing the operator functions.\n * @property {Array} argsArray - Array containing the arguments of the\n * functions.\n */\n\n/**\n * Proxy to a PDFPage in the worker thread.\n * @class\n * @alias PDFPageProxy\n */\nvar PDFPageProxy = (function PDFPageProxyClosure() {\n function PDFPageProxy(pageIndex, pageInfo, transport) {\n this.pageIndex = pageIndex;\n this.pageInfo = pageInfo;\n this.transport = transport;\n this.stats = new StatTimer();\n this.stats.enabled = getDefaultSetting('enableStats');\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this.cleanupAfterRender = false;\n this.pendingCleanup = false;\n this.intentStates = Object.create(null);\n this.destroyed = false;\n }\n PDFPageProxy.prototype = /** @lends PDFPageProxy.prototype */ {\n /**\n * @return {number} Page number of the page. First page is 1.\n */\n get pageNumber() {\n return this.pageIndex + 1;\n },\n /**\n * @return {number} The number of degrees the page is rotated clockwise.\n */\n get rotate() {\n return this.pageInfo.rotate;\n },\n /**\n * @return {Object} The reference that points to this page. It has 'num' and\n * 'gen' properties.\n */\n get ref() {\n return this.pageInfo.ref;\n },\n /**\n * @return {number} The default size of units in 1/72nds of an inch.\n */\n get userUnit() {\n return this.pageInfo.userUnit;\n },\n /**\n * @return {Array} An array of the visible portion of the PDF page in the\n * user space units - [x1, y1, x2, y2].\n */\n get view() {\n return this.pageInfo.view;\n },\n /**\n * @param {number} scale The desired scale of the viewport.\n * @param {number} rotate Degrees to rotate the viewport. If omitted this\n * defaults to the page rotation.\n * @return {PageViewport} Contains 'width' and 'height' properties\n * along with transforms required for rendering.\n */\n getViewport: function PDFPageProxy_getViewport(scale, rotate) {\n if (arguments.length < 2) {\n rotate = this.rotate;\n }\n return new PageViewport(this.view, scale, rotate, 0, 0);\n },\n /**\n * @param {GetAnnotationsParameters} params - Annotation parameters.\n * @return {Promise} A promise that is resolved with an {Array} of the\n * annotation objects.\n */\n getAnnotations: function PDFPageProxy_getAnnotations(params) {\n var intent = (params && params.intent) || null;\n\n if (!this.annotationsPromise || this.annotationsIntent !== intent) {\n this.annotationsPromise = this.transport.getAnnotations(this.pageIndex,\n intent);\n this.annotationsIntent = intent;\n }\n return this.annotationsPromise;\n },\n /**\n * Begins the process of rendering a page to the desired context.\n * @param {RenderParameters} params Page render parameters.\n * @return {RenderTask} An object that contains the promise, which\n * is resolved when the page finishes rendering.\n */\n render: function PDFPageProxy_render(params) {\n var stats = this.stats;\n stats.time('Overall');\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 var renderingIntent = (params.intent === 'print' ? 'print' : 'display');\n var canvasFactory = params.canvasFactory || new DOMCanvasFactory();\n\n if (!this.intentStates[renderingIntent]) {\n this.intentStates[renderingIntent] = Object.create(null);\n }\n var intentState = this.intentStates[renderingIntent];\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.receivingOperatorList = true;\n intentState.displayReadyCapability = createPromiseCapability();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n this.stats.time('Page Request');\n this.transport.messageHandler.send('RenderPageRequest', {\n pageIndex: this.pageNumber - 1,\n intent: renderingIntent,\n renderInteractiveForms: (params.renderInteractiveForms === true),\n });\n }\n\n var complete = (error) => {\n var i = intentState.renderTasks.indexOf(internalRenderTask);\n if (i >= 0) {\n intentState.renderTasks.splice(i, 1);\n }\n\n if (this.cleanupAfterRender) {\n this.pendingCleanup = true;\n }\n this._tryCleanup();\n\n if (error) {\n internalRenderTask.capability.reject(error);\n } else {\n internalRenderTask.capability.resolve();\n }\n stats.timeEnd('Rendering');\n stats.timeEnd('Overall');\n };\n\n var internalRenderTask = new InternalRenderTask(complete, params,\n this.objs,\n this.commonObjs,\n intentState.operatorList,\n this.pageNumber,\n canvasFactory);\n internalRenderTask.useRequestAnimationFrame = renderingIntent !== 'print';\n if (!intentState.renderTasks) {\n intentState.renderTasks = [];\n }\n intentState.renderTasks.push(internalRenderTask);\n var renderTask = internalRenderTask.task;\n\n // Obsolete parameter support\n if (params.continueCallback) {\n deprecated('render is used with continueCallback parameter');\n renderTask.onContinue = params.continueCallback;\n }\n\n intentState.displayReadyCapability.promise.then((transparency) => {\n if (this.pendingCleanup) {\n complete();\n return;\n }\n stats.time('Rendering');\n internalRenderTask.initializeGraphics(transparency);\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n\n return renderTask;\n },\n\n /**\n * @return {Promise} A promise resolved with an {@link PDFOperatorList}\n * object that represents page's operator list.\n */\n getOperatorList: function PDFPageProxy_getOperatorList() {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n\n var i = intentState.renderTasks.indexOf(opListTask);\n if (i >= 0) {\n intentState.renderTasks.splice(i, 1);\n }\n }\n }\n\n var renderingIntent = 'oplist';\n if (!this.intentStates[renderingIntent]) {\n this.intentStates[renderingIntent] = Object.create(null);\n }\n var intentState = this.intentStates[renderingIntent];\n var opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = {};\n opListTask.operatorListChanged = operatorListChanged;\n intentState.receivingOperatorList = true;\n intentState.opListReadCapability = createPromiseCapability();\n intentState.renderTasks = [];\n intentState.renderTasks.push(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n this.transport.messageHandler.send('RenderPageRequest', {\n pageIndex: this.pageIndex,\n intent: renderingIntent,\n });\n }\n return intentState.opListReadCapability.promise;\n },\n\n /**\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @return {ReadableStream} ReadableStream to read textContent chunks.\n */\n streamTextContent(params = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this.transport.messageHandler.sendWithStream('GetTextContent', {\n pageIndex: this.pageNumber - 1,\n normalizeWhitespace: (params.normalizeWhitespace === true),\n combineTextItems: (params.disableCombineTextItems !== true),\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n },\n });\n },\n\n /**\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @return {Promise} That is resolved a {@link TextContent}\n * object that represent the page text content.\n */\n getTextContent: function PDFPageProxy_getTextContent(params) {\n params = params || {};\n let 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 Util.extendObj(textContent.styles, value.styles);\n Util.appendToArray(textContent.items, value.items);\n pump();\n }, reject);\n }\n\n let reader = readableStream.getReader();\n let textContent = {\n items: [],\n styles: Object.create(null),\n };\n\n pump();\n });\n },\n\n /**\n * Destroys page object.\n */\n _destroy: function PDFPageProxy_destroy() {\n this.destroyed = true;\n this.transport.pageCache[this.pageIndex] = null;\n\n var waitOn = [];\n Object.keys(this.intentStates).forEach(function(intent) {\n if (intent === 'oplist') {\n // Avoid errors below, since the renderTasks are just stubs.\n return;\n }\n var intentState = this.intentStates[intent];\n intentState.renderTasks.forEach(function(renderTask) {\n var renderCompleted = renderTask.capability.promise.\n catch(function () {}); // ignoring failures\n waitOn.push(renderCompleted);\n renderTask.cancel();\n });\n }, this);\n this.objs.clear();\n this.annotationsPromise = null;\n this.pendingCleanup = false;\n return Promise.all(waitOn);\n },\n\n /**\n * Cleans up resources allocated by the page. (deprecated)\n */\n destroy() {\n deprecated('page destroy method, use cleanup() instead');\n this.cleanup();\n },\n\n /**\n * Cleans up resources allocated by the page.\n */\n cleanup: function PDFPageProxy_cleanup() {\n this.pendingCleanup = true;\n this._tryCleanup();\n },\n /**\n * For internal use only. Attempts to clean up if rendering is in a state\n * where that's possible.\n * @ignore\n */\n _tryCleanup: function PDFPageProxy_tryCleanup() {\n if (!this.pendingCleanup ||\n Object.keys(this.intentStates).some(function(intent) {\n var intentState = this.intentStates[intent];\n return (intentState.renderTasks.length !== 0 ||\n intentState.receivingOperatorList);\n }, this)) {\n return;\n }\n\n Object.keys(this.intentStates).forEach(function(intent) {\n delete this.intentStates[intent];\n }, this);\n this.objs.clear();\n this.annotationsPromise = null;\n this.pendingCleanup = false;\n },\n /**\n * For internal use only.\n * @ignore\n */\n _startRenderPage: function PDFPageProxy_startRenderPage(transparency,\n intent) {\n var intentState = this.intentStates[intent];\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 * For internal use only.\n * @ignore\n */\n _renderPageChunk: function PDFPageProxy_renderPageChunk(operatorListChunk,\n intent) {\n var intentState = this.intentStates[intent];\n var i, ii;\n // Add the new chunk to the current operator list.\n for (i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(\n 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 (i = 0; i < intentState.renderTasks.length; i++) {\n intentState.renderTasks[i].operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n intentState.receivingOperatorList = false;\n this._tryCleanup();\n }\n },\n };\n return PDFPageProxy;\n})();\n\nclass LoopbackPort {\n constructor(defer) {\n this._listeners = [];\n this._defer = defer;\n this._deferred = Promise.resolve(undefined);\n }\n\n postMessage(obj, transfers) {\n function cloneValue(value) {\n // Trying to perform a structured clone close to the spec, including\n // transfers.\n if (typeof value !== 'object' || value === null) {\n return value;\n }\n if (cloned.has(value)) { // already cloned the object\n return cloned.get(value);\n }\n var result;\n var buffer;\n if ((buffer = value.buffer) && isArrayBuffer(buffer)) {\n // We found object with ArrayBuffer (typed array).\n var transferable = transfers && transfers.indexOf(buffer) >= 0;\n if (value === buffer) {\n // Special case when we are faking typed arrays in compatibility.js.\n result = value;\n } else if (transferable) {\n result = new value.constructor(buffer, value.byteOffset,\n value.byteLength);\n } else {\n result = new value.constructor(value);\n }\n cloned.set(value, result);\n return result;\n }\n result = isArray(value) ? [] : {};\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 (var i in value) {\n var desc, p = value;\n while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {\n p = Object.getPrototypeOf(p);\n }\n if (typeof desc.value === 'undefined' ||\n typeof desc.value === 'function') {\n continue;\n }\n result[i] = cloneValue(desc.value);\n }\n return result;\n }\n\n if (!this._defer) {\n this._listeners.forEach(function (listener) {\n listener.call(this, { data: obj, });\n }, this);\n return;\n }\n\n var cloned = new WeakMap();\n var e = { data: cloneValue(obj), };\n this._deferred.then(() => {\n this._listeners.forEach(function (listener) {\n listener.call(this, e);\n }, this);\n });\n }\n\n addEventListener(name, listener) {\n this._listeners.push(listener);\n }\n\n removeEventListener(name, listener) {\n var i = this._listeners.indexOf(listener);\n this._listeners.splice(i, 1);\n }\n\n terminate() {\n this._listeners = [];\n }\n}\n\n/**\n * PDF.js web worker abstraction, it controls instantiation of PDF documents and\n * WorkerTransport for them. If creation of a web worker is not possible,\n * a \"fake\" worker will be used instead.\n * @class\n */\nvar PDFWorker = (function PDFWorkerClosure() {\n let nextFakeWorkerId = 0;\n\n function getWorkerSrc() {\n if (typeof workerSrc !== 'undefined') {\n return workerSrc;\n }\n if (getDefaultSetting('workerSrc')) {\n return getDefaultSetting('workerSrc');\n }\n if (typeof PDFJSDev !== 'undefined' &&\n PDFJSDev.test('PRODUCTION && !(MOZCENTRAL || FIREFOX)') &&\n pdfjsFilePath) {\n return pdfjsFilePath.replace(/(\\.(?:min\\.)?js)(\\?.*)?$/i, '.worker$1$2');\n }\n throw new Error('No PDFJS.workerSrc specified');\n }\n\n let fakeWorkerFilesLoadedCapability;\n\n // Loads worker code into main thread.\n function setupFakeWorkerGlobal() {\n var WorkerMessageHandler;\n if (fakeWorkerFilesLoadedCapability) {\n return fakeWorkerFilesLoadedCapability.promise;\n }\n fakeWorkerFilesLoadedCapability = createPromiseCapability();\n // In the developer build load worker_loader which in turn loads all the\n // other files and resolves the promise. In production only the\n // pdf.worker.js file is needed.\n if (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('PRODUCTION')) {\n if (typeof SystemJS === 'object') {\n SystemJS.import('pdfjs/core/worker').then((worker) => {\n WorkerMessageHandler = worker.WorkerMessageHandler;\n fakeWorkerFilesLoadedCapability.resolve(WorkerMessageHandler);\n });\n } else if (typeof require === 'function') {\n var worker = require('../core/worker.js');\n WorkerMessageHandler = worker.WorkerMessageHandler;\n fakeWorkerFilesLoadedCapability.resolve(WorkerMessageHandler);\n } else {\n throw new Error(\n 'SystemJS or CommonJS must be used to load fake worker.');\n }\n } else if (PDFJSDev.test('SINGLE_FILE')) {\n var pdfjsCoreWorker = require('../core/worker.js');\n WorkerMessageHandler = pdfjsCoreWorker.WorkerMessageHandler;\n fakeWorkerFilesLoadedCapability.resolve(WorkerMessageHandler);\n } else {\n var loader = fakeWorkerFilesLoader || function (callback) {\n Util.loadScript(getWorkerSrc(), function () {\n callback(window.pdfjsDistBuildPdfWorker.WorkerMessageHandler);\n });\n };\n loader(fakeWorkerFilesLoadedCapability.resolve);\n }\n return fakeWorkerFilesLoadedCapability.promise;\n }\n\n function createCDNWrapper(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 var wrapper = 'importScripts(\\'' + url + '\\');';\n return URL.createObjectURL(new Blob([wrapper]));\n }\n\n let pdfWorkerPorts = new WeakMap();\n\n function PDFWorker(name, port) {\n if (port && pdfWorkerPorts.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.postMessageTransfers = true;\n\n this._readyCapability = createPromiseCapability();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (port) {\n pdfWorkerPorts.set(port, this);\n this._initializeFromPort(port);\n return;\n }\n\n this._initialize();\n }\n\n PDFWorker.prototype = /** @lends PDFWorker.prototype */ {\n get promise() {\n return this._readyCapability.promise;\n },\n\n get port() {\n return this._port;\n },\n\n get messageHandler() {\n return this._messageHandler;\n },\n\n _initializeFromPort: function PDFWorker_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 shall be already initialized\n // and ready to accept the messages.\n });\n this._readyCapability.resolve();\n },\n\n _initialize: function PDFWorker_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 ((typeof PDFJSDev === 'undefined' || !PDFJSDev.test('SINGLE_FILE')) &&\n !isWorkerDisabled && !getDefaultSetting('disableWorker') &&\n typeof Worker !== 'undefined') {\n var workerSrc = getWorkerSrc();\n\n try {\n // Wraps workerSrc path into blob URL, if the former does not belong\n // to the same origin.\n if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('GENERIC') &&\n !isSameOrigin(window.location.href, workerSrc)) {\n workerSrc = createCDNWrapper(\n new URL(workerSrc, window.location).href);\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 var worker = new Worker(workerSrc);\n var messageHandler = new MessageHandler('main', 'worker', worker);\n var 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 var 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 var supportTypedArray = data && data.supportTypedArray;\n if (supportTypedArray) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n if (!data.supportTransfers) {\n this.postMessageTransfers = false;\n isPostMessageTransfersDisabled = true;\n }\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send('configure', {\n verbosity: getVerbosityLevel(),\n });\n } else {\n this._setupFakeWorker();\n messageHandler.destroy();\n worker.terminate();\n }\n });\n\n messageHandler.on('console_log', function (data) {\n console.log.apply(console, data);\n });\n messageHandler.on('console_error', function (data) {\n console.error.apply(console, data);\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 var sendTest = function () {\n var postMessageTransfers =\n getDefaultSetting('postMessageTransfers') &&\n !isPostMessageTransfersDisabled;\n var testObj = new Uint8Array([postMessageTransfers ? 255 : 0]);\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 info('Cannot use postMessage transfers');\n testObj[0] = 0;\n messageHandler.send('test', testObj);\n }\n };\n\n // It might take time for worker to initialize (especially when AMD\n // loader is used). We will try to send test immediately, and then\n // when 'ready' message will arrive. The worker shall process only\n // first received 'test'.\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: function PDFWorker_setupFakeWorker() {\n if (!isWorkerDisabled && !getDefaultSetting('disableWorker')) {\n warn('Setting up fake worker.');\n isWorkerDisabled = true;\n }\n\n setupFakeWorkerGlobal().then((WorkerMessageHandler) => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error('Worker was destroyed'));\n return;\n }\n\n // We cannot turn on proper fake port simulation (this includes\n // structured cloning) when typed arrays are not supported. Relying\n // on a chance that messages will be sent in proper order.\n var isTypedArraysPresent = Uint8Array !== Float32Array;\n var port = new LoopbackPort(isTypedArraysPresent);\n this._port = port;\n\n // All fake workers use the same port, making id unique.\n var id = 'fake' + (nextFakeWorkerId++);\n\n // If the main thread is our worker, setup the handling for the\n // messages -- the main thread sends to it self.\n var workerHandler = new MessageHandler(id + '_worker', id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n\n var messageHandler = new MessageHandler(id, id + '_worker', port);\n this._messageHandler = messageHandler;\n this._readyCapability.resolve();\n });\n },\n\n /**\n * Destroys the worker instance.\n */\n destroy: function PDFWorker_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 pdfWorkerPorts.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n },\n };\n\n PDFWorker.fromPort = function (port) {\n if (pdfWorkerPorts.has(port)) {\n return pdfWorkerPorts.get(port);\n }\n return new PDFWorker(null, port);\n };\n\n return PDFWorker;\n})();\n\n/**\n * For internal use only.\n * @ignore\n */\nvar WorkerTransport = (function WorkerTransportClosure() {\n function WorkerTransport(messageHandler, loadingTask, networkStream,\n CMapReaderFactory) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader(loadingTask.docId);\n this.CMapReaderFactory = new CMapReaderFactory({\n baseUrl: getDefaultSetting('cMapUrl'),\n isCompressed: getDefaultSetting('cMapPacked'),\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\n this.pageCache = [];\n this.pagePromises = [];\n this.downloadInfoCapability = createPromiseCapability();\n\n this.setupMessageHandler();\n }\n WorkerTransport.prototype = {\n destroy: function WorkerTransport_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 var waitOn = [];\n // We need to wait for all renderings to be completed, e.g.\n // timeout/rAF can take a long time.\n this.pageCache.forEach(function (page) {\n if (page) {\n waitOn.push(page._destroy());\n }\n });\n this.pageCache = [];\n this.pagePromises = [];\n // We also need to wait for the worker to finish its long running tasks.\n var terminated = this.messageHandler.sendWithPromise('Terminate', null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.fontLoader.clear();\n if (this._networkStream) {\n this._networkStream.cancelAllRequests();\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: function WorkerTransport_setupMessageHandler() {\n var messageHandler = this.messageHandler;\n var loadingTask = this.loadingTask;\n\n messageHandler.on('GetReader', function(data, sink) {\n assert(this._networkStream);\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = (evt) => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total,\n };\n };\n sink.onPull = () => {\n this._fullReader.read().then(function({ value, done, }) {\n if (done) {\n sink.close();\n return;\n }\n assert(isArrayBuffer(value));\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 }).catch((reason) => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = (reason) => {\n this._fullReader.cancel(reason);\n };\n }, this);\n\n messageHandler.on('ReaderHeadersReady', function(data) {\n let headersCapability = createPromiseCapability();\n let 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 ||\n !fullReader.isRangeSupported) {\n if (this._lastProgress) {\n let loadingTask = this.loadingTask;\n if (loadingTask.onProgress) {\n loadingTask.onProgress(this._lastProgress);\n }\n }\n fullReader.onProgress = (evt) => {\n let loadingTask = this.loadingTask;\n if (loadingTask.onProgress) {\n loadingTask.onProgress({\n loaded: evt.loaded,\n total: evt.total,\n });\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 }, this);\n\n messageHandler.on('GetRangeReader', function(data, sink) {\n assert(this._networkStream);\n let _rangeReader =\n this._networkStream.getRangeReader(data.begin, data.end);\n\n sink.onPull = () => {\n _rangeReader.read().then(function({ value, done, }) {\n if (done) {\n sink.close();\n return;\n }\n assert(isArrayBuffer(value));\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch((reason) => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = (reason) => {\n _rangeReader.cancel(reason);\n };\n }, this);\n\n messageHandler.on('GetDoc', function transportDoc(data) {\n var pdfInfo = data.pdfInfo;\n this.numPages = data.pdfInfo.numPages;\n var loadingTask = this.loadingTask;\n var pdfDocument = new PDFDocumentProxy(pdfInfo, this, loadingTask);\n this.pdfDocument = pdfDocument;\n loadingTask._capability.resolve(pdfDocument);\n }, this);\n\n messageHandler.on('PasswordRequest',\n function transportPasswordRequest(exception) {\n this._passwordCapability = createPromiseCapability();\n\n if (loadingTask.onPassword) {\n var updatePassword = (password) => {\n this._passwordCapability.resolve({\n password,\n });\n };\n loadingTask.onPassword(updatePassword, exception.code);\n } else {\n this._passwordCapability.reject(\n new PasswordException(exception.message, exception.code));\n }\n return this._passwordCapability.promise;\n }, this);\n\n messageHandler.on('PasswordException',\n function transportPasswordException(exception) {\n loadingTask._capability.reject(\n new PasswordException(exception.message, exception.code));\n }, this);\n\n messageHandler.on('InvalidPDF', function transportInvalidPDF(exception) {\n this.loadingTask._capability.reject(\n new InvalidPDFException(exception.message));\n }, this);\n\n messageHandler.on('MissingPDF', function transportMissingPDF(exception) {\n this.loadingTask._capability.reject(\n new MissingPDFException(exception.message));\n }, this);\n\n messageHandler.on('UnexpectedResponse',\n function transportUnexpectedResponse(exception) {\n this.loadingTask._capability.reject(\n new UnexpectedResponseException(exception.message, exception.status));\n }, this);\n\n messageHandler.on('UnknownError',\n function transportUnknownError(exception) {\n this.loadingTask._capability.reject(\n new UnknownErrorException(exception.message, exception.details));\n }, this);\n\n messageHandler.on('DataLoaded', function transportPage(data) {\n this.downloadInfoCapability.resolve(data);\n }, this);\n\n messageHandler.on('PDFManagerReady', function transportPage(data) {\n }, this);\n\n messageHandler.on('StartRenderPage', function transportRender(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n var page = this.pageCache[data.pageIndex];\n\n page.stats.timeEnd('Page Request');\n page._startRenderPage(data.transparency, data.intent);\n }, this);\n\n messageHandler.on('RenderPageChunk', function transportRender(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n var page = this.pageCache[data.pageIndex];\n\n page._renderPageChunk(data.operatorList, data.intent);\n }, this);\n\n messageHandler.on('commonobj', function transportObj(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n var id = data[0];\n var type = data[1];\n if (this.commonObjs.hasData(id)) {\n return;\n }\n\n switch (type) {\n case 'Font':\n var exportedData = data[2];\n\n if ('error' in exportedData) {\n var exportedError = exportedData.error;\n warn('Error during font loading: ' + exportedError);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n var fontRegistry = null;\n if (getDefaultSetting('pdfBug') && globalScope.FontInspector &&\n globalScope['FontInspector'].enabled) {\n fontRegistry = {\n registerFont(font, url) {\n globalScope['FontInspector'].fontAdded(font, url);\n },\n };\n }\n var font = new FontFaceObject(exportedData, {\n isEvalSuported: getDefaultSetting('isEvalSupported'),\n disableFontFace: getDefaultSetting('disableFontFace'),\n fontRegistry,\n });\n var fontReady = (fontObjs) => {\n this.commonObjs.resolve(id, font);\n };\n\n this.fontLoader.bind([font], fontReady);\n break;\n case 'FontPath':\n this.commonObjs.resolve(id, data[2]);\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n }, this);\n\n messageHandler.on('obj', function transportObj(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n var id = data[0];\n var pageIndex = data[1];\n var type = data[2];\n var pageProxy = this.pageCache[pageIndex];\n var imageData;\n if (pageProxy.objs.hasData(id)) {\n return;\n }\n\n switch (type) {\n case 'JpegStream':\n imageData = data[3];\n loadJpegStream(id, imageData, pageProxy.objs);\n break;\n case 'Image':\n imageData = data[3];\n pageProxy.objs.resolve(id, imageData);\n\n // heuristics that will allow not to store large data\n var MAX_IMAGE_SIZE_TO_STORE = 8000000;\n if (imageData && 'data' in imageData &&\n imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) {\n pageProxy.cleanupAfterRender = true;\n }\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n }, this);\n\n messageHandler.on('DocProgress', function transportDocProgress(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n var loadingTask = this.loadingTask;\n if (loadingTask.onProgress) {\n loadingTask.onProgress({\n loaded: data.loaded,\n total: data.total,\n });\n }\n }, this);\n\n messageHandler.on('PageError', function transportError(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n var page = this.pageCache[data.pageNum - 1];\n var intentState = page.intentStates[data.intent];\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(data.error);\n } else {\n throw new Error(data.error);\n }\n\n if (intentState.operatorList) {\n // Mark operator list as complete.\n intentState.operatorList.lastChunk = true;\n for (var i = 0; i < intentState.renderTasks.length; i++) {\n intentState.renderTasks[i].operatorListChanged();\n }\n }\n }, this);\n\n messageHandler.on('UnsupportedFeature',\n function transportUnsupportedFeature(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n var featureId = data.featureId;\n var loadingTask = this.loadingTask;\n if (loadingTask.onUnsupportedFeature) {\n loadingTask.onUnsupportedFeature(featureId);\n }\n _UnsupportedManager.notify(featureId);\n }, this);\n\n messageHandler.on('JpegDecode', function(data) {\n if (this.destroyed) {\n return Promise.reject(new Error('Worker was destroyed'));\n }\n\n if (typeof document === 'undefined') {\n // Make sure that this code is not executing in node.js, as\n // it's using DOM image, and there is no library to support that.\n return Promise.reject(new Error('\"document\" is not defined.'));\n }\n\n var imageUrl = data[0];\n var components = data[1];\n if (components !== 3 && components !== 1) {\n return Promise.reject(\n new Error('Only 3 components or 1 component can be returned'));\n }\n\n return new Promise(function (resolve, reject) {\n var img = new Image();\n img.onload = function () {\n var width = img.width;\n var height = img.height;\n var size = width * height;\n var rgbaLength = size * 4;\n var buf = new Uint8Array(size * components);\n var tmpCanvas = document.createElement('canvas');\n tmpCanvas.width = width;\n tmpCanvas.height = height;\n var tmpCtx = tmpCanvas.getContext('2d');\n tmpCtx.drawImage(img, 0, 0);\n var data = tmpCtx.getImageData(0, 0, width, height).data;\n var i, j;\n\n if (components === 3) {\n for (i = 0, j = 0; i < rgbaLength; i += 4, j += 3) {\n buf[j] = data[i];\n buf[j + 1] = data[i + 1];\n buf[j + 2] = data[i + 2];\n }\n } else if (components === 1) {\n for (i = 0, j = 0; i < rgbaLength; i += 4, j++) {\n buf[j] = data[i];\n }\n }\n resolve({ data: buf, width, height, });\n };\n img.onerror = function () {\n reject(new Error('JpegDecode failed to load image'));\n };\n img.src = imageUrl;\n });\n }, this);\n\n messageHandler.on('FetchBuiltInCMap', function (data) {\n if (this.destroyed) {\n return Promise.reject(new Error('Worker was destroyed'));\n }\n return this.CMapReaderFactory.fetch({\n name: data.name,\n });\n }, this);\n },\n\n getData: function WorkerTransport_getData() {\n return this.messageHandler.sendWithPromise('GetData', null);\n },\n\n getPage: function WorkerTransport_getPage(pageNumber, capability) {\n if (!isInt(pageNumber) || pageNumber <= 0 || pageNumber > this.numPages) {\n return Promise.reject(new Error('Invalid page request'));\n }\n\n var pageIndex = pageNumber - 1;\n if (pageIndex in this.pagePromises) {\n return this.pagePromises[pageIndex];\n }\n var promise = this.messageHandler.sendWithPromise('GetPage', {\n pageIndex,\n }).then((pageInfo) => {\n if (this.destroyed) {\n throw new Error('Transport destroyed');\n }\n var page = new PDFPageProxy(pageIndex, pageInfo, this);\n this.pageCache[pageIndex] = page;\n return page;\n });\n this.pagePromises[pageIndex] = promise;\n return promise;\n },\n\n getPageIndex: function WorkerTransport_getPageIndexByRef(ref) {\n return this.messageHandler.sendWithPromise('GetPageIndex', {\n ref,\n }).catch(function (reason) {\n return Promise.reject(new Error(reason));\n });\n },\n\n getAnnotations: function WorkerTransport_getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise('GetAnnotations', {\n pageIndex,\n intent,\n });\n },\n\n getDestinations: function WorkerTransport_getDestinations() {\n return this.messageHandler.sendWithPromise('GetDestinations', null);\n },\n\n getDestination: function WorkerTransport_getDestination(id) {\n return this.messageHandler.sendWithPromise('GetDestination', {\n id,\n });\n },\n\n getPageLabels: function WorkerTransport_getPageLabels() {\n return this.messageHandler.sendWithPromise('GetPageLabels', null);\n },\n\n getPageMode() {\n return this.messageHandler.sendWithPromise('GetPageMode', null);\n },\n\n getAttachments: function WorkerTransport_getAttachments() {\n return this.messageHandler.sendWithPromise('GetAttachments', null);\n },\n\n getJavaScript: function WorkerTransport_getJavaScript() {\n return this.messageHandler.sendWithPromise('GetJavaScript', null);\n },\n\n getOutline: function WorkerTransport_getOutline() {\n return this.messageHandler.sendWithPromise('GetOutline', null);\n },\n\n getMetadata: function WorkerTransport_getMetadata() {\n return this.messageHandler.sendWithPromise('GetMetadata', null).\n then(function transportMetadata(results) {\n return {\n info: results[0],\n metadata: (results[1] ? new Metadata(results[1]) : null),\n };\n });\n },\n\n getStats: function WorkerTransport_getStats() {\n return this.messageHandler.sendWithPromise('GetStats', null);\n },\n\n startCleanup: function WorkerTransport_startCleanup() {\n this.messageHandler.sendWithPromise('Cleanup', null).then(() => {\n for (var i = 0, ii = this.pageCache.length; i < ii; i++) {\n var page = this.pageCache[i];\n if (page) {\n page.cleanup();\n }\n }\n this.commonObjs.clear();\n this.fontLoader.clear();\n });\n },\n };\n return WorkerTransport;\n\n})();\n\n/**\n * A PDF document and page is built of many objects. E.g. there are objects\n * for fonts, images, rendering code and such. These objects might get processed\n * inside of a worker. The `PDFObjects` implements some basic functions to\n * manage these objects.\n * @ignore\n */\nvar PDFObjects = (function PDFObjectsClosure() {\n function PDFObjects() {\n this.objs = Object.create(null);\n }\n\n PDFObjects.prototype = {\n /**\n * Internal function.\n * Ensures there is an object defined for `objId`.\n */\n ensureObj: function PDFObjects_ensureObj(objId) {\n if (this.objs[objId]) {\n return this.objs[objId];\n }\n\n var obj = {\n capability: createPromiseCapability(),\n data: null,\n resolved: false,\n };\n this.objs[objId] = obj;\n\n return obj;\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 function 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\n * function and the object is already resolved, the callback gets called\n * right away.\n */\n get: function PDFObjects_get(objId, callback) {\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\n // If there isn't a callback, the user expects to get the resolved data\n // directly.\n var obj = this.objs[objId];\n\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\n return obj.data;\n },\n\n /**\n * Resolves the object `objId` with optional `data`.\n */\n resolve: function PDFObjects_resolve(objId, data) {\n var obj = this.ensureObj(objId);\n\n obj.resolved = true;\n obj.data = data;\n obj.capability.resolve(data);\n },\n\n isResolved: function PDFObjects_isResolved(objId) {\n var objs = this.objs;\n\n if (!objs[objId]) {\n return false;\n }\n return objs[objId].resolved;\n },\n\n hasData: function PDFObjects_hasData(objId) {\n return this.isResolved(objId);\n },\n\n /**\n * Returns the data of `objId` if object exists, null otherwise.\n */\n getData: function PDFObjects_getData(objId) {\n var objs = this.objs;\n if (!objs[objId] || !objs[objId].resolved) {\n return null;\n }\n return objs[objId].data;\n },\n\n clear: function PDFObjects_clear() {\n this.objs = Object.create(null);\n },\n };\n return PDFObjects;\n})();\n\n/**\n * Allows controlling of the rendering tasks.\n * @class\n * @alias RenderTask\n */\nvar RenderTask = (function RenderTaskClosure() {\n function RenderTask(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 RenderTask.prototype = /** @lends RenderTask.prototype */ {\n /**\n * Promise for rendering task completion.\n * @return {Promise}\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: function RenderTask_cancel() {\n this._internalRenderTask.cancel();\n },\n\n /**\n * Registers callbacks to indicate the rendering task completion.\n *\n * @param {function} onFulfilled The callback for the rendering completion.\n * @param {function} onRejected The callback for the rendering failure.\n * @return {Promise} A promise that is resolved after the onFulfilled or\n * onRejected callback.\n */\n then: function RenderTask_then(onFulfilled, onRejected) {\n return this.promise.then.apply(this.promise, arguments);\n },\n };\n\n return RenderTask;\n})();\n\n/**\n * For internal use only.\n * @ignore\n */\nvar InternalRenderTask = (function InternalRenderTaskClosure() {\n let canvasInRendering = new WeakMap();\n\n function InternalRenderTask(callback, params, objs, commonObjs, operatorList,\n pageNumber, canvasFactory) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this.pageNumber = pageNumber;\n this.canvasFactory = canvasFactory;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this.useRequestAnimationFrame = false;\n this.cancelled = false;\n this.capability = createPromiseCapability();\n this.task = new RenderTask(this);\n // caching this-bound methods\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 InternalRenderTask.prototype = {\n\n initializeGraphics:\n function InternalRenderTask_initializeGraphics(transparency) {\n\n if (this._canvas) {\n if (canvasInRendering.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 canvasInRendering.set(this._canvas, this);\n }\n\n if (this.cancelled) {\n return;\n }\n if (getDefaultSetting('pdfBug') && globalScope.StepperManager &&\n globalScope.StepperManager.enabled) {\n this.stepper = globalScope.StepperManager.create(this.pageNumber - 1);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n\n var params = this.params;\n this.gfx = new CanvasGraphics(params.canvasContext, this.commonObjs,\n this.objs, this.canvasFactory,\n params.imageLayer);\n\n this.gfx.beginDrawing({\n transform: params.transform,\n viewport: params.viewport,\n transparency,\n background: params.background,\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n if (this.graphicsReadyCallback) {\n this.graphicsReadyCallback();\n }\n },\n\n cancel: function InternalRenderTask_cancel() {\n this.running = false;\n this.cancelled = true;\n if (this._canvas) {\n canvasInRendering.delete(this._canvas);\n }\n\n if ((typeof PDFJSDev !== 'undefined' && PDFJSDev.test('PDFJS_NEXT')) ||\n getDefaultSetting('pdfjsNext')) {\n this.callback(new RenderingCancelledException(\n 'Rendering cancelled, page ' + this.pageNumber, 'canvas'));\n } else {\n this.callback('cancelled');\n }\n },\n\n operatorListChanged: function InternalRenderTask_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: function InternalRenderTask__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: function InternalRenderTask__scheduleNext() {\n if (this.useRequestAnimationFrame && typeof window !== 'undefined') {\n window.requestAnimationFrame(this._nextBound);\n } else {\n Promise.resolve(undefined).then(this._nextBound);\n }\n },\n\n _next: function InternalRenderTask__next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList,\n this.operatorListIdx,\n this._continueBound,\n this.stepper);\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 canvasInRendering.delete(this._canvas);\n }\n this.callback();\n }\n }\n },\n\n };\n\n return InternalRenderTask;\n})();\n\n/**\n * (Deprecated) Global observer of unsupported feature usages. Use\n * onUnsupportedFeature callback of the {PDFDocumentLoadingTask} instance.\n */\nvar _UnsupportedManager = (function UnsupportedManagerClosure() {\n var listeners = [];\n return {\n listen(cb) {\n deprecated('Global UnsupportedManager.listen is used: ' +\n ' use PDFDocumentLoadingTask.onUnsupportedFeature instead');\n listeners.push(cb);\n },\n notify(featureId) {\n for (var i = 0, ii = listeners.length; i < ii; i++) {\n listeners[i](featureId);\n }\n },\n };\n})();\n\nvar version, build;\nif (typeof PDFJSDev !== 'undefined') {\n version = PDFJSDev.eval('BUNDLE_VERSION');\n build = PDFJSDev.eval('BUNDLE_BUILD');\n}\n\nexport {\n getDocument,\n LoopbackPort,\n PDFDataRangeTransport,\n PDFWorker,\n PDFDocumentProxy,\n PDFPageProxy,\n setPDFNetworkStreamClass,\n _UnsupportedManager,\n version,\n build,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/api.js","/* 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 addLinkAttributes, CustomStyle, getDefaultSetting, getFilenameFromUrl,\n LinkTarget\n} from './dom_utils';\nimport {\n AnnotationBorderStyleType, AnnotationType, stringToPDFString, Util, warn\n} from '../shared/util';\n\n/**\n * @typedef {Object} AnnotationElementParameters\n * @property {Object} data\n * @property {HTMLDivElement} layer\n * @property {PDFPage} page\n * @property {PageViewport} viewport\n * @property {IPDFLinkService} linkService\n * @property {DownloadManager} downloadManager\n * @property {string} imageResourcesPath\n * @property {boolean} renderInteractiveForms\n */\n\n/**\n * @class\n * @alias AnnotationElementFactory\n */\nfunction AnnotationElementFactory() {}\nAnnotationElementFactory.prototype =\n /** @lends AnnotationElementFactory.prototype */ {\n /**\n * @param {AnnotationElementParameters} parameters\n * @returns {AnnotationElement}\n */\n create: function AnnotationElementFactory_create(parameters) {\n var 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 var 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 warn('Unimplemented button widget annotation: pushbutton');\n break;\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.LINE:\n return new LineAnnotationElement(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.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n\n default:\n return new AnnotationElement(parameters);\n }\n },\n};\n\n/**\n * @class\n * @alias AnnotationElement\n */\nvar AnnotationElement = (function AnnotationElementClosure() {\n function AnnotationElement(parameters, isRenderable, ignoreBorder) {\n this.isRenderable = isRenderable || false;\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.renderInteractiveForms = parameters.renderInteractiveForms;\n\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n }\n\n AnnotationElement.prototype = /** @lends AnnotationElement.prototype */ {\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:\n function AnnotationElement_createContainer(ignoreBorder) {\n var data = this.data, page = this.page, viewport = this.viewport;\n var container = document.createElement('section');\n var width = data.rect[2] - data.rect[0];\n var 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 var 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 CustomStyle.setProp('transform', container,\n 'matrix(' + viewport.transform.join(',') + ')');\n CustomStyle.setProp('transformOrigin', container,\n -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 = width - 2 * data.borderStyle.width;\n height = height - 2 * data.borderStyle.width;\n }\n\n var horizontalRadius = data.borderStyle.horizontalCornerRadius;\n var verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n var radius = horizontalRadius + 'px / ' + verticalRadius + 'px';\n CustomStyle.setProp('borderRadius', container, 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 if (data.color) {\n container.style.borderColor =\n Util.makeCssRgb(data.color[0] | 0,\n data.color[1] | 0,\n data.color[2] | 0);\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 container.style.width = width + 'px';\n container.style.height = height + 'px';\n\n return container;\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 {HTMLSectionElement} container\n * @param {HTMLDivElement|HTMLImageElement|null} trigger\n * @param {Object} data\n * @memberof AnnotationElement\n */\n _createPopup:\n function AnnotationElement_createPopup(container, trigger, data) {\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 var popupElement = new PopupElement({\n container,\n trigger,\n color: data.color,\n title: data.title,\n contents: data.contents,\n hideWrapper: true,\n });\n var 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 annotation's HTML element in the empty container.\n *\n * @public\n * @memberof AnnotationElement\n */\n render: function AnnotationElement_render() {\n throw new Error('Abstract method AnnotationElement.render called');\n },\n };\n\n return AnnotationElement;\n})();\n\n/**\n * @class\n * @alias LinkAnnotationElement\n */\nvar LinkAnnotationElement = (function LinkAnnotationElementClosure() {\n function LinkAnnotationElement(parameters) {\n AnnotationElement.call(this, parameters, true);\n }\n\n Util.inherit(LinkAnnotationElement, AnnotationElement, {\n /**\n * Render the link annotation's HTML element in the empty container.\n *\n * @public\n * @memberof LinkAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function LinkAnnotationElement_render() {\n this.container.className = 'linkAnnotation';\n\n var link = document.createElement('a');\n addLinkAttributes(link, {\n url: this.data.url,\n target: (this.data.newWindow ? LinkTarget.BLANK : undefined),\n });\n\n if (!this.data.url) {\n if (this.data.action) {\n this._bindNamedAction(link, this.data.action);\n } else {\n this._bindLink(link, this.data.dest);\n }\n }\n\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.navigateTo(destination);\n }\n return false;\n };\n if (destination) {\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 return LinkAnnotationElement;\n})();\n\n/**\n * @class\n * @alias TextAnnotationElement\n */\nvar TextAnnotationElement = (function TextAnnotationElementClosure() {\n function TextAnnotationElement(parameters) {\n var isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n AnnotationElement.call(this, parameters, isRenderable);\n }\n\n Util.inherit(TextAnnotationElement, AnnotationElement, {\n /**\n * Render the text annotation's HTML element in the empty container.\n *\n * @public\n * @memberof TextAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function TextAnnotationElement_render() {\n this.container.className = 'textAnnotation';\n\n var image = document.createElement('img');\n image.style.height = this.container.style.height;\n image.style.width = this.container.style.width;\n image.src = this.imageResourcesPath + 'annotation-' +\n this.data.name.toLowerCase() + '.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(this.container, image, this.data);\n }\n\n this.container.appendChild(image);\n return this.container;\n },\n });\n\n return TextAnnotationElement;\n})();\n\n/**\n * @class\n * @alias WidgetAnnotationElement\n */\nvar WidgetAnnotationElement = (function WidgetAnnotationElementClosure() {\n function WidgetAnnotationElement(parameters, isRenderable) {\n AnnotationElement.call(this, parameters, isRenderable);\n }\n\n Util.inherit(WidgetAnnotationElement, AnnotationElement, {\n /**\n * Render the widget annotation's HTML element in the empty container.\n *\n * @public\n * @memberof WidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function WidgetAnnotationElement_render() {\n // Show only the container for unsupported field types.\n return this.container;\n },\n });\n\n return WidgetAnnotationElement;\n})();\n\n/**\n * @class\n * @alias TextWidgetAnnotationElement\n */\nvar TextWidgetAnnotationElement = (\n function TextWidgetAnnotationElementClosure() {\n var TEXT_ALIGNMENT = ['left', 'center', 'right'];\n\n function TextWidgetAnnotationElement(parameters) {\n var isRenderable = parameters.renderInteractiveForms ||\n (!parameters.data.hasAppearance && !!parameters.data.fieldValue);\n WidgetAnnotationElement.call(this, parameters, isRenderable);\n }\n\n Util.inherit(TextWidgetAnnotationElement, WidgetAnnotationElement, {\n /**\n * Render the text widget annotation's HTML element in the empty container.\n *\n * @public\n * @memberof TextWidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function TextWidgetAnnotationElement_render() {\n this.container.className = 'textWidgetAnnotation';\n\n var element = null;\n if (this.renderInteractiveForms) {\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 if (this.data.multiLine) {\n element = document.createElement('textarea');\n element.textContent = this.data.fieldValue;\n } else {\n element = document.createElement('input');\n element.type = 'text';\n element.setAttribute('value', this.data.fieldValue);\n }\n\n element.disabled = this.data.readOnly;\n\n if (this.data.maxLen !== null) {\n element.maxLength = this.data.maxLen;\n }\n\n if (this.data.comb) {\n var fieldWidth = this.data.rect[2] - this.data.rect[0];\n var 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 var font = null;\n if (this.data.fontRefName) {\n font = this.page.commonObjs.getData(this.data.fontRefName);\n }\n this._setTextStyle(element, font);\n }\n\n if (this.data.textAlignment !== null) {\n element.style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\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 * @param {Object} font\n * @memberof TextWidgetAnnotationElement\n */\n _setTextStyle:\n function TextWidgetAnnotationElement_setTextStyle(element, font) {\n // TODO: This duplicates some of the logic in CanvasGraphics.setFont().\n var style = element.style;\n style.fontSize = this.data.fontSize + 'px';\n style.direction = (this.data.fontDirection < 0 ? 'rtl' : 'ltr');\n\n if (!font) {\n return;\n }\n\n style.fontWeight = (font.black ?\n (font.bold ? '900' : 'bold') :\n (font.bold ? 'bold' : 'normal'));\n style.fontStyle = (font.italic ? 'italic' : 'normal');\n\n // Use a reasonable default font if the font doesn't specify a fallback.\n var fontFamily = font.loadedName ? '\"' + font.loadedName + '\", ' : '';\n var fallbackName = font.fallbackName || 'Helvetica, sans-serif';\n style.fontFamily = fontFamily + fallbackName;\n },\n });\n\n return TextWidgetAnnotationElement;\n})();\n\n/**\n * @class\n * @alias CheckboxWidgetAnnotationElement\n */\nvar CheckboxWidgetAnnotationElement =\n (function CheckboxWidgetAnnotationElementClosure() {\n function CheckboxWidgetAnnotationElement(parameters) {\n WidgetAnnotationElement.call(this, parameters,\n parameters.renderInteractiveForms);\n }\n\n Util.inherit(CheckboxWidgetAnnotationElement, WidgetAnnotationElement, {\n /**\n * Render the checkbox widget annotation's HTML element\n * in the empty container.\n *\n * @public\n * @memberof CheckboxWidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function CheckboxWidgetAnnotationElement_render() {\n this.container.className = 'buttonWidgetAnnotation checkBox';\n\n var element = document.createElement('input');\n element.disabled = this.data.readOnly;\n element.type = 'checkbox';\n if (this.data.fieldValue && this.data.fieldValue !== 'Off') {\n element.setAttribute('checked', true);\n }\n\n this.container.appendChild(element);\n return this.container;\n },\n });\n\n return CheckboxWidgetAnnotationElement;\n})();\n\n/**\n * @class\n * @alias RadioButtonWidgetAnnotationElement\n */\nvar RadioButtonWidgetAnnotationElement =\n (function RadioButtonWidgetAnnotationElementClosure() {\n function RadioButtonWidgetAnnotationElement(parameters) {\n WidgetAnnotationElement.call(this, parameters,\n parameters.renderInteractiveForms);\n }\n\n Util.inherit(RadioButtonWidgetAnnotationElement, WidgetAnnotationElement, {\n /**\n * Render the radio button widget annotation's HTML element\n * in the empty container.\n *\n * @public\n * @memberof RadioButtonWidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function RadioButtonWidgetAnnotationElement_render() {\n this.container.className = 'buttonWidgetAnnotation radioButton';\n\n var element = document.createElement('input');\n element.disabled = this.data.readOnly;\n element.type = 'radio';\n element.name = this.data.fieldName;\n if (this.data.fieldValue === this.data.buttonValue) {\n element.setAttribute('checked', true);\n }\n\n this.container.appendChild(element);\n return this.container;\n },\n });\n\n return RadioButtonWidgetAnnotationElement;\n})();\n\n /**\n * @class\n * @alias ChoiceWidgetAnnotationElement\n */\nvar ChoiceWidgetAnnotationElement = (\n function ChoiceWidgetAnnotationElementClosure() {\n function ChoiceWidgetAnnotationElement(parameters) {\n WidgetAnnotationElement.call(this, parameters,\n parameters.renderInteractiveForms);\n }\n\n Util.inherit(ChoiceWidgetAnnotationElement, WidgetAnnotationElement, {\n /**\n * Render the choice widget annotation's HTML element in the empty\n * container.\n *\n * @public\n * @memberof ChoiceWidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function ChoiceWidgetAnnotationElement_render() {\n this.container.className = 'choiceWidgetAnnotation';\n\n var selectElement = document.createElement('select');\n selectElement.disabled = this.data.readOnly;\n\n if (!this.data.combo) {\n // List boxes have a size and (optionally) multiple selection.\n selectElement.size = this.data.options.length;\n\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n\n // Insert the options into the choice field.\n for (var i = 0, ii = this.data.options.length; i < ii; i++) {\n var option = this.data.options[i];\n\n var optionElement = document.createElement('option');\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n\n if (this.data.fieldValue.indexOf(option.displayValue) >= 0) {\n optionElement.setAttribute('selected', true);\n }\n\n selectElement.appendChild(optionElement);\n }\n\n this.container.appendChild(selectElement);\n return this.container;\n },\n });\n\n return ChoiceWidgetAnnotationElement;\n})();\n\n/**\n * @class\n * @alias PopupAnnotationElement\n */\nvar PopupAnnotationElement = (function PopupAnnotationElementClosure() {\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 var IGNORE_TYPES = ['Line'];\n\n function PopupAnnotationElement(parameters) {\n var isRenderable = !!(parameters.data.title || parameters.data.contents);\n AnnotationElement.call(this, parameters, isRenderable);\n }\n\n Util.inherit(PopupAnnotationElement, AnnotationElement, {\n /**\n * Render the popup annotation's HTML element in the empty container.\n *\n * @public\n * @memberof PopupAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function PopupAnnotationElement_render() {\n this.container.className = 'popupAnnotation';\n\n if (IGNORE_TYPES.indexOf(this.data.parentType) >= 0) {\n return this.container;\n }\n\n var selector = '[data-annotation-id=\"' + this.data.parentId + '\"]';\n var parentElement = this.layer.querySelector(selector);\n if (!parentElement) {\n return this.container;\n }\n\n var popup = new PopupElement({\n container: this.container,\n trigger: parentElement,\n color: this.data.color,\n title: this.data.title,\n contents: this.data.contents,\n });\n\n // Position the popup next to the parent annotation's container.\n // PDF viewers ignore a popup annotation's rectangle.\n var parentLeft = parseFloat(parentElement.style.left);\n var parentWidth = parseFloat(parentElement.style.width);\n CustomStyle.setProp('transformOrigin', this.container,\n -(parentLeft + parentWidth) + 'px -' +\n parentElement.style.top);\n this.container.style.left = (parentLeft + parentWidth) + 'px';\n\n this.container.appendChild(popup.render());\n return this.container;\n },\n });\n\n return PopupAnnotationElement;\n})();\n\n/**\n * @class\n * @alias PopupElement\n */\nvar PopupElement = (function PopupElementClosure() {\n var BACKGROUND_ENLIGHT = 0.7;\n\n function PopupElement(parameters) {\n this.container = parameters.container;\n this.trigger = parameters.trigger;\n this.color = parameters.color;\n this.title = parameters.title;\n this.contents = parameters.contents;\n this.hideWrapper = parameters.hideWrapper || false;\n\n this.pinned = false;\n }\n\n PopupElement.prototype = /** @lends PopupElement.prototype */ {\n /**\n * Render the popup's HTML element.\n *\n * @public\n * @memberof PopupElement\n * @returns {HTMLSectionElement}\n */\n render: function PopupElement_render() {\n var 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.setAttribute('hidden', true);\n\n var popup = document.createElement('div');\n popup.className = 'popup';\n\n var color = this.color;\n if (color) {\n // Enlighten the color.\n var r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];\n var g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];\n var b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];\n popup.style.backgroundColor = Util.makeCssRgb(r | 0, g | 0, b | 0);\n }\n\n var contents = this._formatContents(this.contents);\n var title = document.createElement('h1');\n title.textContent = this.title;\n\n // Attach the event listeners to the trigger element.\n this.trigger.addEventListener('click', this._toggle.bind(this));\n this.trigger.addEventListener('mouseover', this._show.bind(this, false));\n this.trigger.addEventListener('mouseout', this._hide.bind(this, false));\n popup.addEventListener('click', this._hide.bind(this, true));\n\n popup.appendChild(title);\n popup.appendChild(contents);\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 {string} contents\n * @memberof PopupElement\n * @returns {HTMLParagraphElement}\n */\n _formatContents: function PopupElement_formatContents(contents) {\n var p = document.createElement('p');\n var lines = contents.split(/(?:\\r\\n?|\\n)/);\n for (var i = 0, ii = lines.length; i < ii; ++i) {\n var 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: function PopupElement_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: function PopupElement_show(pin) {\n if (pin) {\n this.pinned = true;\n }\n if (this.hideElement.hasAttribute('hidden')) {\n this.hideElement.removeAttribute('hidden');\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: function PopupElement_hide(unpin) {\n if (unpin) {\n this.pinned = false;\n }\n if (!this.hideElement.hasAttribute('hidden') && !this.pinned) {\n this.hideElement.setAttribute('hidden', true);\n this.container.style.zIndex -= 1;\n }\n },\n };\n\n return PopupElement;\n})();\n\n/**\n * @class\n * @alias LineAnnotationElement\n */\nvar LineAnnotationElement = (function LineAnnotationElementClosure() {\n var SVG_NS = 'http://www.w3.org/2000/svg';\n\n function LineAnnotationElement(parameters) {\n var isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n AnnotationElement.call(this, parameters, isRenderable,\n /* ignoreBorder = */ true);\n }\n\n Util.inherit(LineAnnotationElement, AnnotationElement, {\n /**\n * Render the line annotation's HTML element in the empty container.\n *\n * @public\n * @memberof LineAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function LineAnnotationElement_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 var data = this.data;\n var width = data.rect[2] - data.rect[0];\n var height = data.rect[3] - data.rect[1];\n\n var svg = document.createElementNS(SVG_NS, 'svg:svg');\n svg.setAttributeNS(null, 'version', '1.1');\n svg.setAttributeNS(null, 'width', width + 'px');\n svg.setAttributeNS(null, 'height', height + 'px');\n svg.setAttributeNS(null, 'preserveAspectRatio', 'none');\n svg.setAttributeNS(null, 'viewBox', '0 0 ' + 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 var line = document.createElementNS(SVG_NS, 'svg:line');\n line.setAttributeNS(null, 'x1', data.rect[2] - data.lineCoordinates[0]);\n line.setAttributeNS(null, 'y1', data.rect[3] - data.lineCoordinates[1]);\n line.setAttributeNS(null, 'x2', data.rect[2] - data.lineCoordinates[2]);\n line.setAttributeNS(null, 'y2', data.rect[3] - data.lineCoordinates[3]);\n line.setAttributeNS(null, 'stroke-width', data.borderStyle.width);\n line.setAttributeNS(null, 'stroke', '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(this.container, line, this.data);\n\n return this.container;\n },\n });\n\n return LineAnnotationElement;\n})();\n\n/**\n * @class\n * @alias HighlightAnnotationElement\n */\nvar HighlightAnnotationElement = (\n function HighlightAnnotationElementClosure() {\n function HighlightAnnotationElement(parameters) {\n var isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n AnnotationElement.call(this, parameters, isRenderable,\n /* ignoreBorder = */ true);\n }\n\n Util.inherit(HighlightAnnotationElement, AnnotationElement, {\n /**\n * Render the highlight annotation's HTML element in the empty container.\n *\n * @public\n * @memberof HighlightAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function HighlightAnnotationElement_render() {\n this.container.className = 'highlightAnnotation';\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n return this.container;\n },\n });\n\n return HighlightAnnotationElement;\n})();\n\n/**\n * @class\n * @alias UnderlineAnnotationElement\n */\nvar UnderlineAnnotationElement = (\n function UnderlineAnnotationElementClosure() {\n function UnderlineAnnotationElement(parameters) {\n var isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n AnnotationElement.call(this, parameters, isRenderable,\n /* ignoreBorder = */ true);\n }\n\n Util.inherit(UnderlineAnnotationElement, AnnotationElement, {\n /**\n * Render the underline annotation's HTML element in the empty container.\n *\n * @public\n * @memberof UnderlineAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function UnderlineAnnotationElement_render() {\n this.container.className = 'underlineAnnotation';\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n return this.container;\n },\n });\n\n return UnderlineAnnotationElement;\n})();\n\n/**\n * @class\n * @alias SquigglyAnnotationElement\n */\nvar SquigglyAnnotationElement = (function SquigglyAnnotationElementClosure() {\n function SquigglyAnnotationElement(parameters) {\n var isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n AnnotationElement.call(this, parameters, isRenderable,\n /* ignoreBorder = */ true);\n }\n\n Util.inherit(SquigglyAnnotationElement, AnnotationElement, {\n /**\n * Render the squiggly annotation's HTML element in the empty container.\n *\n * @public\n * @memberof SquigglyAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function SquigglyAnnotationElement_render() {\n this.container.className = 'squigglyAnnotation';\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n return this.container;\n },\n });\n\n return SquigglyAnnotationElement;\n})();\n\n/**\n * @class\n * @alias StrikeOutAnnotationElement\n */\nvar StrikeOutAnnotationElement = (\n function StrikeOutAnnotationElementClosure() {\n function StrikeOutAnnotationElement(parameters) {\n var isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n AnnotationElement.call(this, parameters, isRenderable,\n /* ignoreBorder = */ true);\n }\n\n Util.inherit(StrikeOutAnnotationElement, AnnotationElement, {\n /**\n * Render the strikeout annotation's HTML element in the empty container.\n *\n * @public\n * @memberof StrikeOutAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function StrikeOutAnnotationElement_render() {\n this.container.className = 'strikeoutAnnotation';\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n return this.container;\n },\n });\n\n return StrikeOutAnnotationElement;\n})();\n\n/**\n * @class\n * @alias FileAttachmentAnnotationElement\n */\nvar FileAttachmentAnnotationElement = (\n function FileAttachmentAnnotationElementClosure() {\n function FileAttachmentAnnotationElement(parameters) {\n AnnotationElement.call(this, parameters, true);\n\n var file = this.data.file;\n this.filename = getFilenameFromUrl(file.filename);\n this.content = file.content;\n\n this.linkService.onFileAttachmentAnnotation({\n id: stringToPDFString(file.filename),\n filename: file.filename,\n content: file.content,\n });\n }\n\n Util.inherit(FileAttachmentAnnotationElement, AnnotationElement, {\n /**\n * Render the file attachment annotation's HTML element in the empty\n * container.\n *\n * @public\n * @memberof FileAttachmentAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function FileAttachmentAnnotationElement_render() {\n this.container.className = 'fileAttachmentAnnotation';\n\n var 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 (!this.data.hasPopup && (this.data.title || this.data.contents)) {\n this._createPopup(this.container, 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: function FileAttachmentAnnotationElement_download() {\n if (!this.downloadManager) {\n warn('Download cannot be started due to unavailable download manager');\n return;\n }\n this.downloadManager.downloadData(this.content, this.filename, '');\n },\n });\n\n return FileAttachmentAnnotationElement;\n})();\n\n/**\n * @typedef {Object} AnnotationLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Array} annotations\n * @property {PDFPage} page\n * @property {IPDFLinkService} linkService\n * @property {string} imageResourcesPath\n * @property {boolean} renderInteractiveForms\n */\n\n/**\n * @class\n * @alias AnnotationLayer\n */\nvar AnnotationLayer = (function AnnotationLayerClosure() {\n return {\n /**\n * Render a new annotation layer with all annotation elements.\n *\n * @public\n * @param {AnnotationLayerParameters} parameters\n * @memberof AnnotationLayer\n */\n render: function AnnotationLayer_render(parameters) {\n var annotationElementFactory = new AnnotationElementFactory();\n\n for (var i = 0, ii = parameters.annotations.length; i < ii; i++) {\n var data = parameters.annotations[i];\n if (!data) {\n continue;\n }\n var element = annotationElementFactory.create({\n data,\n layer: parameters.div,\n page: parameters.page,\n viewport: parameters.viewport,\n linkService: parameters.linkService,\n downloadManager: parameters.downloadManager,\n imageResourcesPath: parameters.imageResourcesPath ||\n getDefaultSetting('imageResourcesPath'),\n renderInteractiveForms: parameters.renderInteractiveForms || false,\n });\n if (element.isRenderable) {\n parameters.div.appendChild(element.render());\n }\n }\n },\n\n /**\n * Update the annotation elements on existing annotation layer.\n *\n * @public\n * @param {AnnotationLayerParameters} parameters\n * @memberof AnnotationLayer\n */\n update: function AnnotationLayer_update(parameters) {\n for (var i = 0, ii = parameters.annotations.length; i < ii; i++) {\n var data = parameters.annotations[i];\n var element = parameters.div.querySelector(\n '[data-annotation-id=\"' + data.id + '\"]');\n if (element) {\n CustomStyle.setProp('transform', element,\n 'matrix(' + parameters.viewport.transform.join(',') + ')');\n }\n }\n parameters.div.removeAttribute('hidden');\n },\n };\n})();\n\nexport {\n AnnotationLayer,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/annotation_layer.js","/* 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, FONT_IDENTITY_MATRIX, IDENTITY_MATRIX, ImageKind, isArray,\n isNodeJS, isNum, OPS, Util, warn\n} from '../shared/util';\n\nvar SVGGraphics = function() {\n throw new Error('Not implemented: SVGGraphics');\n};\n\nif (typeof PDFJSDev === 'undefined' ||\n PDFJSDev.test('GENERIC || SINGLE_FILE')) {\n\nvar SVG_DEFAULTS = {\n fontStyle: 'normal',\n fontWeight: 'normal',\n fillColor: '#000000',\n};\n\nvar convertImgDataToPng = (function convertImgDataToPngClosure() {\n var PNG_HEADER =\n new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);\n\n var CHUNK_WRAPPER_SIZE = 12;\n\n var crcTable = new Int32Array(256);\n for (var i = 0; i < 256; i++) {\n var c = i;\n for (var 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 var crc = -1;\n for (var i = start; i < end; i++) {\n var a = (crc ^ data[i]) & 0xff;\n var b = crcTable[a];\n crc = (crc >>> 8) ^ b;\n }\n return crc ^ -1;\n }\n\n function writePngChunk(type, body, data, offset) {\n var p = offset;\n var 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 var crc = crc32(data, offset + 4, p);\n\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 var a = 1;\n var b = 0;\n for (var 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 canvas\n // 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 var 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 = new Buffer(literals);\n }\n var output = __non_webpack_require__('zlib')\n .deflateSync(input, { level: 9, });\n return output instanceof Uint8Array ? output : new Uint8Array(output);\n } catch (e) {\n warn('Not compressing PNG because zlib.deflateSync is unavailable: ' + e);\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 var len = literals.length;\n var maxBlockLength = 0xFFFF;\n\n var deflateBlocks = Math.ceil(len / maxBlockLength);\n var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);\n var pi = 0;\n idat[pi++] = 0x78; // compression method and flags\n idat[pi++] = 0x9c; // flags\n\n var 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 var 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) {\n var width = imgData.width;\n var height = imgData.height;\n var bitDepth, colorType, lineSize;\n var 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 var literals = new Uint8Array((1 + lineSize) * height);\n var offsetLiterals = 0, offsetBytes = 0;\n var y, i;\n for (y = 0; y < height; ++y) {\n literals[offsetLiterals++] = 0; // no prediction\n literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize),\n offsetLiterals);\n offsetBytes += lineSize;\n offsetLiterals += lineSize;\n }\n\n if (kind === ImageKind.GRAYSCALE_1BPP) {\n // inverting for B/W\n offsetLiterals = 0;\n for (y = 0; y < height; y++) {\n offsetLiterals++; // skipping predictor\n for (i = 0; i < lineSize; i++) {\n literals[offsetLiterals++] ^= 0xFF;\n }\n }\n }\n\n var 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\n var idat = deflateSync(literals);\n\n // PNG will consists: header, IHDR+data, IDAT+data, and IEND.\n var pngLength = PNG_HEADER.length + (CHUNK_WRAPPER_SIZE * 3) +\n ihdr.length + idat.length;\n var data = new Uint8Array(pngLength);\n var 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 return function convertImgDataToPng(imgData, forceDataSchema) {\n var kind = (imgData.kind === undefined ?\n ImageKind.GRAYSCALE_1BPP : imgData.kind);\n return encode(imgData, kind, forceDataSchema);\n };\n})();\n\nvar SVGExtraState = (function SVGExtraStateClosure() {\n function SVGExtraState() {\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\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 SVGExtraState.prototype = {\n clone: function SVGExtraState_clone() {\n return Object.create(this);\n },\n setCurrentPoint: function SVGExtraState_setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n },\n };\n return SVGExtraState;\n})();\n\nSVGGraphics = (function SVGGraphicsClosure() {\n function opListToTree(opList) {\n var opTree = [];\n var tmp = [];\n var opListLen = opList.length;\n\n for (var x = 0; x < opListLen; x++) {\n if (opList[x].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 (opList[x].fn === 'restore') {\n opTree = tmp.pop();\n } else {\n opTree.push(opList[x]);\n }\n }\n return opTree;\n }\n\n /**\n * Formats float number.\n * @param value {number} number to format.\n * @returns {string}\n */\n function pf(value) {\n if (value === (value | 0)) { // integer number\n return value.toString();\n }\n var s = value.toFixed(10);\n var i = s.length - 1;\n if (s[i] !== '0') {\n return s;\n }\n // removing trailing zeros\n do {\n i--;\n } while (s[i] === '0');\n return s.substr(0, s[i] === '.' ? i : i + 1);\n }\n\n /**\n * Formats transform matrix. The standard rotation, scale and translate\n * matrices are replaced by their shorter forms, and for identity matrix\n * returns empty string to save the memory.\n * @param m {Array} matrix to format.\n * @returns {string}\n */\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 var 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 'matrix(' + pf(m[0]) + ' ' + pf(m[1]) + ' ' + pf(m[2]) + ' ' +\n pf(m[3]) + ' ' + pf(m[4]) + ' ' + pf(m[5]) + ')';\n }\n\n function SVGGraphics(commonObjs, objs, forceDataSchema) {\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\n var NS = 'http://www.w3.org/2000/svg';\n var XML_NS = 'http://www.w3.org/XML/1998/namespace';\n var XLINK_NS = 'http://www.w3.org/1999/xlink';\n var LINE_CAP_STYLES = ['butt', 'round', 'square'];\n var LINE_JOIN_STYLES = ['miter', 'round', 'bevel'];\n var clipCount = 0;\n var maskCount = 0;\n\n SVGGraphics.prototype = {\n save: function SVGGraphics_save() {\n this.transformStack.push(this.transformMatrix);\n var old = this.current;\n this.extraStack.push(old);\n this.current = old.clone();\n },\n\n restore: function SVGGraphics_restore() {\n this.transformMatrix = this.transformStack.pop();\n this.current = this.extraStack.pop();\n\n this.pendingClip = null;\n this.tgrp = null;\n },\n\n group: function SVGGraphics_group(items) {\n this.save();\n this.executeOpTree(items);\n this.restore();\n },\n\n loadDependencies: function SVGGraphics_loadDependencies(operatorList) {\n var fnArray = operatorList.fnArray;\n var fnArrayLen = fnArray.length;\n var argsArray = operatorList.argsArray;\n\n for (var i = 0; i < fnArrayLen; i++) {\n if (OPS.dependency === fnArray[i]) {\n var deps = argsArray[i];\n for (var n = 0, nn = deps.length; n < nn; n++) {\n var obj = deps[n];\n var common = obj.substring(0, 2) === 'g_';\n var promise;\n if (common) {\n promise = new Promise((resolve) => {\n this.commonObjs.get(obj, resolve);\n });\n } else {\n promise = new Promise((resolve) => {\n this.objs.get(obj, resolve);\n });\n }\n this.current.dependencies.push(promise);\n }\n }\n }\n return Promise.all(this.current.dependencies);\n },\n\n transform: function SVGGraphics_transform(a, b, c, d, e, f) {\n var transformMatrix = [a, b, c, d, e, f];\n this.transformMatrix = Util.transform(this.transformMatrix,\n transformMatrix);\n this.tgrp = null;\n },\n\n getSVG: function SVGGraphics_getSVG(operatorList, viewport) {\n this.viewport = viewport;\n\n var svgElement = this._initialize(viewport);\n return this.loadDependencies(operatorList).then(() => {\n this.transformMatrix = IDENTITY_MATRIX;\n var opTree = this.convertOpList(operatorList);\n this.executeOpTree(opTree);\n return svgElement;\n });\n },\n\n convertOpList: function SVGGraphics_convertOpList(operatorList) {\n var argsArray = operatorList.argsArray;\n var fnArray = operatorList.fnArray;\n var fnArrayLen = fnArray.length;\n var REVOPS = [];\n var opList = [];\n\n for (var op in OPS) {\n REVOPS[OPS[op]] = op;\n }\n\n for (var x = 0; x < fnArrayLen; x++) {\n var fnId = fnArray[x];\n opList.push({\n 'fnId': fnId,\n 'fn': REVOPS[fnId],\n 'args': argsArray[x],\n });\n }\n return opListToTree(opList);\n },\n\n executeOpTree: function SVGGraphics_executeOpTree(opTree) {\n var opTreeLen = opTree.length;\n for (var x = 0; x < opTreeLen; x++) {\n var fn = opTree[x].fn;\n var fnId = opTree[x].fnId;\n var args = opTree[x].args;\n\n switch (fnId | 0) {\n case OPS.beginText:\n this.beginText();\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(args[0], args[1], args[2],\n args[3], args[4], args[5]);\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.setDash:\n this.setDash(args[0], args[1]);\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.paintJpegXObject:\n this.paintJpegXObject(args[0], args[1], args[2]);\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.nextLine:\n this.nextLine();\n break;\n case OPS.transform:\n this.transform(args[0], args[1], args[2], args[3],\n args[4], args[5]);\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(opTree[x].items);\n break;\n default:\n warn('Unimplemented operator ' + fn);\n break;\n }\n }\n },\n\n setWordSpacing: function SVGGraphics_setWordSpacing(wordSpacing) {\n this.current.wordSpacing = wordSpacing;\n },\n\n setCharSpacing: function SVGGraphics_setCharSpacing(charSpacing) {\n this.current.charSpacing = charSpacing;\n },\n\n nextLine: function SVGGraphics_nextLine() {\n this.moveText(0, this.current.leading);\n },\n\n setTextMatrix: function SVGGraphics_setTextMatrix(a, b, c, d, e, f) {\n var current = this.current;\n this.current.textMatrix = this.current.lineMatrix = [a, b, c, d, e, f];\n\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n\n current.xcoords = [];\n current.tspan = document.createElementNS(NS, 'svg:tspan');\n current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);\n current.tspan.setAttributeNS(null, 'font-size',\n pf(current.fontSize) + 'px');\n current.tspan.setAttributeNS(null, 'y', pf(-current.y));\n\n current.txtElement = document.createElementNS(NS, 'svg:text');\n current.txtElement.appendChild(current.tspan);\n },\n\n beginText: function SVGGraphics_beginText() {\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n this.current.textMatrix = IDENTITY_MATRIX;\n this.current.lineMatrix = IDENTITY_MATRIX;\n this.current.tspan = document.createElementNS(NS, 'svg:tspan');\n this.current.txtElement = document.createElementNS(NS, 'svg:text');\n this.current.txtgrp = document.createElementNS(NS, 'svg:g');\n this.current.xcoords = [];\n },\n\n moveText: function SVGGraphics_moveText(x, y) {\n var current = this.current;\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n\n current.xcoords = [];\n current.tspan = document.createElementNS(NS, 'svg:tspan');\n current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);\n current.tspan.setAttributeNS(null, 'font-size',\n pf(current.fontSize) + 'px');\n current.tspan.setAttributeNS(null, 'y', pf(-current.y));\n },\n\n showText: function SVGGraphics_showText(glyphs) {\n var current = this.current;\n var font = current.font;\n var fontSize = current.fontSize;\n\n if (fontSize === 0) {\n return;\n }\n\n var charSpacing = current.charSpacing;\n var wordSpacing = current.wordSpacing;\n var fontDirection = current.fontDirection;\n var textHScale = current.textHScale * fontDirection;\n var glyphsLength = glyphs.length;\n var vertical = font.vertical;\n var widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n var x = 0, i;\n for (i = 0; i < glyphsLength; ++i) {\n var glyph = glyphs[i];\n if (glyph === null) {\n // word break\n x += fontDirection * wordSpacing;\n continue;\n } else if (isNum(glyph)) {\n x += -glyph * fontSize * 0.001;\n continue;\n }\n current.xcoords.push(current.x + x * textHScale);\n\n var width = glyph.width;\n var character = glyph.fontChar;\n var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n var charWidth = width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n\n current.tspan.textContent += character;\n }\n if (vertical) {\n current.y -= x * textHScale;\n } else {\n current.x += x * textHScale;\n }\n\n current.tspan.setAttributeNS(null, 'x',\n current.xcoords.map(pf).join(' '));\n current.tspan.setAttributeNS(null, 'y', pf(-current.y));\n current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);\n current.tspan.setAttributeNS(null, 'font-size',\n pf(current.fontSize) + 'px');\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 if (current.fillColor !== SVG_DEFAULTS.fillColor) {\n current.tspan.setAttributeNS(null, 'fill', current.fillColor);\n }\n\n current.txtElement.setAttributeNS(null, 'transform',\n pm(current.textMatrix) +\n ' scale(1, -1)');\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: function SVGGraphics_setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n },\n\n addFontStyle: function SVGGraphics_addFontStyle(fontObj) {\n if (!this.cssStyle) {\n this.cssStyle = document.createElementNS(NS, 'svg:style');\n this.cssStyle.setAttributeNS(null, 'type', 'text/css');\n this.defs.appendChild(this.cssStyle);\n }\n\n var url = createObjectURL(fontObj.data, fontObj.mimetype,\n this.forceDataSchema);\n this.cssStyle.textContent +=\n '@font-face { font-family: \"' + fontObj.loadedName + '\";' +\n ' src: url(' + url + '); }\\n';\n },\n\n setFont: function SVGGraphics_setFont(details) {\n var current = this.current;\n var fontObj = this.commonObjs.get(details[0]);\n var size = details[1];\n this.current.font = fontObj;\n\n if (this.embedFonts && fontObj.data &&\n !this.embeddedFonts[fontObj.loadedName]) {\n this.addFontStyle(fontObj);\n this.embeddedFonts[fontObj.loadedName] = fontObj;\n }\n\n current.fontMatrix = (fontObj.fontMatrix ?\n fontObj.fontMatrix : FONT_IDENTITY_MATRIX);\n\n var bold = fontObj.black ? (fontObj.bold ? 'bolder' : 'bold') :\n (fontObj.bold ? 'bold' : 'normal');\n var 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 = document.createElementNS(NS, 'svg:tspan');\n current.tspan.setAttributeNS(null, 'y', pf(-current.y));\n current.xcoords = [];\n },\n\n endText: function SVGGraphics_endText() {},\n\n // Path properties\n setLineWidth: function SVGGraphics_setLineWidth(width) {\n this.current.lineWidth = width;\n },\n setLineCap: function SVGGraphics_setLineCap(style) {\n this.current.lineCap = LINE_CAP_STYLES[style];\n },\n setLineJoin: function SVGGraphics_setLineJoin(style) {\n this.current.lineJoin = LINE_JOIN_STYLES[style];\n },\n setMiterLimit: function SVGGraphics_setMiterLimit(limit) {\n this.current.miterLimit = limit;\n },\n setStrokeAlpha: function SVGGraphics_setStrokeAlpha(strokeAlpha) {\n this.current.strokeAlpha = strokeAlpha;\n },\n setStrokeRGBColor: function SVGGraphics_setStrokeRGBColor(r, g, b) {\n var color = Util.makeCssRgb(r, g, b);\n this.current.strokeColor = color;\n },\n setFillAlpha: function SVGGraphics_setFillAlpha(fillAlpha) {\n this.current.fillAlpha = fillAlpha;\n },\n setFillRGBColor: function SVGGraphics_setFillRGBColor(r, g, b) {\n var color = Util.makeCssRgb(r, g, b);\n this.current.fillColor = color;\n this.current.tspan = document.createElementNS(NS, 'svg:tspan');\n this.current.xcoords = [];\n },\n setDash: function SVGGraphics_setDash(dashArray, dashPhase) {\n this.current.dashArray = dashArray;\n this.current.dashPhase = dashPhase;\n },\n\n constructPath: function SVGGraphics_constructPath(ops, args) {\n var current = this.current;\n var x = current.x, y = current.y;\n current.path = document.createElementNS(NS, 'svg:path');\n var d = [];\n var opLength = ops.length;\n\n for (var i = 0, j = 0; i < opLength; i++) {\n switch (ops[i] | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n var width = args[j++];\n var height = args[j++];\n var xw = x + width;\n var yh = y + height;\n d.push('M', pf(x), pf(y), 'L', pf(xw), pf(y), 'L', pf(xw), pf(yh),\n 'L', pf(x), pf(yh), 'Z');\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('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]),\n pf(args[j + 3]), pf(x), pf(y));\n j += 6;\n break;\n case OPS.curveTo2:\n x = args[j + 2];\n y = args[j + 3];\n d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]),\n pf(args[j + 2]), pf(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('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y),\n pf(x), pf(y));\n j += 4;\n break;\n case OPS.closePath:\n d.push('Z');\n break;\n }\n }\n current.path.setAttributeNS(null, 'd', d.join(' '));\n current.path.setAttributeNS(null, 'fill', 'none');\n\n this._ensureTransformGroup().appendChild(current.path);\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: function SVGGraphics_endPath() {\n if (!this.pendingClip) {\n return;\n }\n var current = this.current;\n // Add current path to clipping path\n var clipId = 'clippath' + clipCount;\n clipCount++;\n var clipPath = document.createElementNS(NS, 'svg:clipPath');\n clipPath.setAttributeNS(null, 'id', clipId);\n clipPath.setAttributeNS(null, 'transform', pm(this.transformMatrix));\n var clipElement = current.element.cloneNode();\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 this.extraStack.forEach(function (prev) {\n prev.clipGroup = null;\n });\n }\n current.activeClipUrl = 'url(#' + clipId + ')';\n\n this.tgrp = null;\n },\n\n clip: function SVGGraphics_clip(type) {\n this.pendingClip = type;\n },\n\n closePath: function SVGGraphics_closePath() {\n var current = this.current;\n var d = current.path.getAttributeNS(null, 'd');\n d += 'Z';\n current.path.setAttributeNS(null, 'd', d);\n },\n\n setLeading: function SVGGraphics_setLeading(leading) {\n this.current.leading = -leading;\n },\n\n setTextRise: function SVGGraphics_setTextRise(textRise) {\n this.current.textRise = textRise;\n },\n\n setHScale: function SVGGraphics_setHScale(scale) {\n this.current.textHScale = scale / 100;\n },\n\n setGState: function SVGGraphics_setGState(states) {\n for (var i = 0, ii = states.length; i < ii; i++) {\n var state = states[i];\n var key = state[0];\n var 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 '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 ' + key);\n break;\n }\n }\n },\n\n fill: function SVGGraphics_fill() {\n var current = this.current;\n current.element.setAttributeNS(null, 'fill', current.fillColor);\n current.element.setAttributeNS(null, 'fill-opacity', current.fillAlpha);\n },\n\n stroke: function SVGGraphics_stroke() {\n var current = this.current;\n\n current.element.setAttributeNS(null, 'stroke', current.strokeColor);\n current.element.setAttributeNS(null, 'stroke-opacity',\n current.strokeAlpha);\n current.element.setAttributeNS(null, 'stroke-miterlimit',\n pf(current.miterLimit));\n current.element.setAttributeNS(null, 'stroke-linecap', current.lineCap);\n current.element.setAttributeNS(null, 'stroke-linejoin', current.lineJoin);\n current.element.setAttributeNS(null, 'stroke-width',\n pf(current.lineWidth) + 'px');\n current.element.setAttributeNS(null, 'stroke-dasharray',\n current.dashArray.map(pf).join(' '));\n current.element.setAttributeNS(null, 'stroke-dashoffset',\n pf(current.dashPhase) + 'px');\n\n current.element.setAttributeNS(null, 'fill', 'none');\n },\n\n eoFill: function SVGGraphics_eoFill() {\n this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');\n this.fill();\n },\n\n fillStroke: function SVGGraphics_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: function SVGGraphics_eoFillStroke() {\n this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');\n this.fillStroke();\n },\n\n closeStroke: function SVGGraphics_closeStroke() {\n this.closePath();\n this.stroke();\n },\n\n closeFillStroke: function SVGGraphics_closeFillStroke() {\n this.closePath();\n this.fillStroke();\n },\n\n paintSolidColorImageMask:\n function SVGGraphics_paintSolidColorImageMask() {\n var current = this.current;\n var rect = document.createElementNS(NS, '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', current.fillColor);\n\n this._ensureTransformGroup().appendChild(rect);\n },\n\n paintJpegXObject: function SVGGraphics_paintJpegXObject(objId, w, h) {\n var imgObj = this.objs.get(objId);\n var imgEl = document.createElementNS(NS, 'svg:image');\n imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgObj.src);\n imgEl.setAttributeNS(null, 'width', pf(w));\n imgEl.setAttributeNS(null, 'height', pf(h));\n imgEl.setAttributeNS(null, 'x', '0');\n imgEl.setAttributeNS(null, 'y', pf(-h));\n imgEl.setAttributeNS(null, 'transform',\n 'scale(' + pf(1 / w) + ' ' + pf(-1 / h) + ')');\n\n this._ensureTransformGroup().appendChild(imgEl);\n },\n\n paintImageXObject: function SVGGraphics_paintImageXObject(objId) {\n var imgData = this.objs.get(objId);\n if (!imgData) {\n warn('Dependent image isn\\'t ready yet');\n return;\n }\n this.paintInlineImageXObject(imgData);\n },\n\n paintInlineImageXObject:\n function SVGGraphics_paintInlineImageXObject(imgData, mask) {\n var width = imgData.width;\n var height = imgData.height;\n\n var imgSrc = convertImgDataToPng(imgData, this.forceDataSchema);\n var cliprect = document.createElementNS(NS, '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 var imgEl = document.createElementNS(NS, '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(null, 'transform',\n 'scale(' + pf(1 / width) + ' ' +\n pf(-1 / height) + ')');\n if (mask) {\n mask.appendChild(imgEl);\n } else {\n this._ensureTransformGroup().appendChild(imgEl);\n }\n },\n\n paintImageMaskXObject:\n function SVGGraphics_paintImageMaskXObject(imgData) {\n var current = this.current;\n var width = imgData.width;\n var height = imgData.height;\n var fillColor = current.fillColor;\n\n current.maskId = 'mask' + maskCount++;\n var mask = document.createElementNS(NS, 'svg:mask');\n mask.setAttributeNS(null, 'id', current.maskId);\n\n var rect = document.createElementNS(NS, '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 this.defs.appendChild(mask);\n\n this._ensureTransformGroup().appendChild(rect);\n\n this.paintInlineImageXObject(imgData, mask);\n },\n\n paintFormXObjectBegin:\n function SVGGraphics_paintFormXObjectBegin(matrix, bbox) {\n if (isArray(matrix) && matrix.length === 6) {\n this.transform(matrix[0], matrix[1], matrix[2],\n matrix[3], matrix[4], matrix[5]);\n }\n\n if (isArray(bbox) && bbox.length === 4) {\n var width = bbox[2] - bbox[0];\n var height = bbox[3] - bbox[1];\n\n var cliprect = document.createElementNS(NS, '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 function SVGGraphics_paintFormXObjectEnd() {},\n\n /**\n * @private\n */\n _initialize: function SVGGraphics_initialize(viewport) {\n // Create the SVG element.\n var svg = document.createElementNS(NS, 'svg:svg');\n svg.setAttributeNS(null, 'version', '1.1');\n svg.setAttributeNS(null, 'width', viewport.width + 'px');\n svg.setAttributeNS(null, 'height', viewport.height + 'px');\n svg.setAttributeNS(null, 'preserveAspectRatio', 'none');\n svg.setAttributeNS(null, 'viewBox', '0 0 ' + viewport.width +\n ' ' + viewport.height);\n\n // Create the definitions element.\n var definitions = document.createElementNS(NS, '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 var rootGroup = document.createElementNS(NS, '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: function SVGGraphics_ensureClipGroup() {\n if (!this.current.clipGroup) {\n var clipGroup = document.createElementNS(NS, 'svg:g');\n clipGroup.setAttributeNS(null, 'clip-path',\n 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: function SVGGraphics_ensureTransformGroup() {\n if (!this.tgrp) {\n this.tgrp = document.createElementNS(NS, '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 return SVGGraphics;\n})();\n\n}\n\nexport {\n SVGGraphics,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/svg.js","/* 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 { AbortException, createPromiseCapability, Util } from '../shared/util';\nimport { CustomStyle, getDefaultSetting } from './dom_utils';\n\n/**\n * Text layer render parameters.\n *\n * @typedef {Object} TextLayerRenderParameters\n * @property {TextContent} textContent - (optional) Text content to render\n * (the object is returned by the page's getTextContent() method).\n * @property {ReadableStream} textContentStream - (optional) Text content\n * stream to render (the stream is returned by the page's\n * streamTextContent() method).\n * @property {HTMLElement} container - HTML element that will contain text runs.\n * @property {PageViewport} viewport - The target viewport to properly\n * layout the text runs.\n * @property {Array} textDivs - (optional) HTML elements that are correspond\n * the text items of the textContent input. This is output and shall be\n * initially be set to empty array.\n * @property {Array} textContentItemsStr - (optional) Strings that correspond\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 - (optional) Delay in milliseconds before\n * rendering of the text runs occurs.\n * @property {boolean} enhanceTextSelection - (optional) Whether to turn on the\n * text selection enhancement.\n */\nvar renderTextLayer = (function renderTextLayerClosure() {\n var MAX_TEXT_DIVS_TO_RENDER = 100000;\n\n var NonWhitespaceRegexp = /\\S/;\n\n function isAllWhitespace(str) {\n return !NonWhitespaceRegexp.test(str);\n }\n\n // Text layers may contain many thousand div's, and using `styleBuf` avoids\n // creating many intermediate strings when building their 'style' properties.\n var styleBuf = ['left: ', 0, 'px; top: ', 0, 'px; font-size: ', 0,\n 'px; font-family: ', '', ';'];\n\n function appendText(task, geom, styles) {\n // Initialize all used properties to keep the caches monomorphic.\n var textDiv = document.createElement('div');\n var textDivProperties = {\n style: null,\n angle: 0,\n canvasWidth: 0,\n isWhitespace: false,\n originalTransform: null,\n paddingBottom: 0,\n paddingLeft: 0,\n paddingRight: 0,\n paddingTop: 0,\n scale: 1,\n };\n\n task._textDivs.push(textDiv);\n if (isAllWhitespace(geom.str)) {\n textDivProperties.isWhitespace = true;\n task._textDivProperties.set(textDiv, textDivProperties);\n return;\n }\n\n var tx = Util.transform(task._viewport.transform, geom.transform);\n var angle = Math.atan2(tx[1], tx[0]);\n var style = styles[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n var fontHeight = Math.sqrt((tx[2] * tx[2]) + (tx[3] * tx[3]));\n var fontAscent = fontHeight;\n if (style.ascent) {\n fontAscent = style.ascent * fontAscent;\n } else if (style.descent) {\n fontAscent = (1 + style.descent) * fontAscent;\n }\n\n var left;\n var 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 styleBuf[1] = left;\n styleBuf[3] = top;\n styleBuf[5] = fontHeight;\n styleBuf[7] = style.fontFamily;\n textDivProperties.style = styleBuf.join('');\n textDiv.setAttribute('style', textDivProperties.style);\n\n textDiv.textContent = geom.str;\n // |fontName| is only used by the Font Inspector. This test will succeed\n // when e.g. the Font Inspector is off but the Stepper is on, but it's\n // not worth the effort to do a more accurate test. We only use `dataset`\n // here to make the font name available for the debugger.\n if (getDefaultSetting('pdfBug')) {\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 if (geom.str.length > 1) {\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) {\n var angleCos = 1, angleSin = 0;\n if (angle !== 0) {\n angleCos = Math.cos(angle);\n angleSin = Math.sin(angle);\n }\n var divWidth = (style.vertical ? geom.height : geom.width) *\n task._viewport.scale;\n var divHeight = fontHeight;\n\n var 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\n function render(task) {\n if (task._canceled) {\n return;\n }\n var textDivs = task._textDivs;\n var capability = task._capability;\n var 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 (var i = 0; i < textDivsLength; i++) {\n task._layoutText(textDivs[i]);\n }\n }\n\n task._renderingDone = true;\n capability.resolve();\n }\n\n function expand(task) {\n var bounds = task._bounds;\n var viewport = task._viewport;\n\n var expanded = expandBounds(viewport.width, viewport.height, bounds);\n for (var i = 0; i < expanded.length; i++) {\n var div = bounds[i].div;\n var 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 var e = expanded[i], b = bounds[i];\n var m = b.m, c = m[0], s = m[1];\n // Finding intersections with expanded box.\n var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];\n var ts = new Float64Array(64);\n points.forEach(function (p, i) {\n var t = Util.applyTransform(p, m);\n ts[i + 0] = c && (e.left - t[0]) / c;\n ts[i + 4] = s && (e.top - t[1]) / s;\n ts[i + 8] = c && (e.right - t[0]) / c;\n ts[i + 12] = s && (e.bottom - t[1]) / s;\n\n ts[i + 16] = s && (e.left - t[0]) / -s;\n ts[i + 20] = c && (e.top - t[1]) / c;\n ts[i + 24] = s && (e.right - t[0]) / -s;\n ts[i + 28] = c && (e.bottom - t[1]) / c;\n\n ts[i + 32] = c && (e.left - t[0]) / -c;\n ts[i + 36] = s && (e.top - t[1]) / -s;\n ts[i + 40] = c && (e.right - t[0]) / -c;\n ts[i + 44] = s && (e.bottom - t[1]) / -s;\n\n ts[i + 48] = s && (e.left - t[0]) / s;\n ts[i + 52] = c && (e.top - t[1]) / -c;\n ts[i + 56] = s && (e.right - t[0]) / s;\n ts[i + 60] = c && (e.bottom - t[1]) / -c;\n });\n var findPositiveMin = function (ts, offset, count) {\n var result = 0;\n for (var i = 0; i < count; i++) {\n var t = ts[offset++];\n if (t > 0) {\n result = result ? Math.min(t, result) : t;\n }\n }\n return result;\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 var 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\n function expandBounds(width, height, boxes) {\n var 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 var expanded = new Array(boxes.length);\n bounds.forEach(function (b) {\n var 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 var e = expanded[i], 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 bounds.forEach(function (b) {\n var i = b.index;\n expanded[i].top = b.x1New;\n expanded[i].bottom = b.x2New;\n });\n return expanded;\n }\n\n function 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 var fakeBoundary = {\n x1: -Infinity,\n y1: -Infinity,\n x2: 0,\n y2: Infinity,\n index: -1,\n x1New: 0,\n x2New: 0,\n };\n var horizon = [{\n start: -Infinity,\n end: Infinity,\n boundary: fakeBoundary,\n }];\n\n bounds.forEach(function (boundary) {\n // Searching for the affected part of horizon.\n // TODO red-black tree or simple binary search\n var i = 0;\n while (i < horizon.length && horizon[i].end <= boundary.y1) {\n i++;\n }\n var j = horizon.length - 1;\n while (j >= 0 && horizon[j].start >= boundary.y2) {\n j--;\n }\n\n var horizonPart, affectedBoundary;\n var q, k, maxXNew = -Infinity;\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n var 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 bondary\n // placed on top of the current one.\n xNew = affectedBoundary.index > boundary.index ?\n affectedBoundary.x1New : 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 var changedHorizon = [], 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 var useBoundary = affectedBoundary.x2 > boundary.x2 ?\n 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 var used = false;\n for (k = i - 1; !used && k >= 0 &&\n horizon[k].start >= affectedBoundary.y1; k--) {\n used = horizon[k].boundary === affectedBoundary;\n }\n for (k = j + 1; !used && k < horizon.length &&\n horizon[k].end <= affectedBoundary.y2; k++) {\n used = horizon[k].boundary === affectedBoundary;\n }\n for (k = 0; !used && k < changedHorizon.length; k++) {\n used = changedHorizon[k].boundary === affectedBoundary;\n }\n if (!used) {\n affectedBoundary.x2New = maxXNew;\n }\n }\n\n Array.prototype.splice.apply(horizon,\n [i, j - i + 1].concat(changedHorizon));\n });\n\n // Set new x2 for all unset boundaries.\n horizon.forEach(function (horizonPart) {\n var affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New === undefined) {\n affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);\n }\n });\n }\n\n /**\n * Text layer rendering task.\n *\n * @param {TextContent} textContent\n * @param {HTMLElement} container\n * @param {PageViewport} viewport\n * @param {Array} textDivs\n * @param {boolean} enhanceTextSelection\n * @private\n */\n function TextLayerRenderTask({ textContent, textContentStream, container,\n viewport, textDivs, textContentItemsStr,\n enhanceTextSelection, }) {\n this._textContent = textContent;\n this._textContentStream = textContentStream;\n this._container = container;\n this._viewport = viewport;\n this._textDivs = textDivs || [];\n this._textContentItemsStr = textContentItemsStr || [];\n this._enhanceTextSelection = !!enhanceTextSelection;\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 TextLayerRenderTask.prototype = {\n get promise() {\n return this._capability.promise;\n },\n\n cancel: function TextLayer_cancel() {\n if (this._reader) {\n this._reader.cancel(new AbortException('text layer task cancelled'));\n this._reader = null;\n }\n this._canceled = true;\n if (this._renderTimer !== null) {\n clearTimeout(this._renderTimer);\n this._renderTimer = null;\n }\n this._capability.reject('canceled');\n },\n\n _processItems(items, styleCache) {\n for (let i = 0, len = items.length; i < len; i++) {\n this._textContentItemsStr.push(items[i].str);\n appendText(this, items[i], styleCache);\n }\n },\n\n _layoutText(textDiv) {\n let textLayerFrag = this._container;\n\n let textDivProperties = this._textDivProperties.get(textDiv);\n if (textDivProperties.isWhitespace) {\n return;\n }\n\n let fontSize = textDiv.style.fontSize;\n let fontFamily = textDiv.style.fontFamily;\n\n // Only build font string and set to context if different from last.\n if (fontSize !== this._layoutTextLastFontSize ||\n fontFamily !== this._layoutTextLastFontFamily) {\n this._layoutTextCtx.font = fontSize + ' ' + fontFamily;\n this._lastFontSize = fontSize;\n this._lastFontFamily = fontFamily;\n }\n\n let width = this._layoutTextCtx.measureText(textDiv.textContent).width;\n\n let transform = '';\n if (textDivProperties.canvasWidth !== 0 && width > 0) {\n textDivProperties.scale = textDivProperties.canvasWidth / width;\n transform = 'scaleX(' + textDivProperties.scale + ')';\n }\n if (textDivProperties.angle !== 0) {\n transform = 'rotate(' + textDivProperties.angle + 'deg) ' + transform;\n }\n if (transform !== '') {\n textDivProperties.originalTransform = transform;\n CustomStyle.setProp('transform', textDiv, transform);\n }\n this._textDivProperties.set(textDiv, textDivProperties);\n textLayerFrag.appendChild(textDiv);\n },\n\n _render: function TextLayer_render(timeout) {\n let capability = createPromiseCapability();\n let styleCache = Object.create(null);\n\n // The temporary canvas is used to measure text length in the DOM.\n let canvas = document.createElement('canvas');\n if (typeof PDFJSDev === 'undefined' ||\n PDFJSDev.test('FIREFOX || MOZCENTRAL || GENERIC')) {\n canvas.mozOpaque = true;\n }\n this._layoutTextCtx = canvas.getContext('2d', { alpha: false, });\n\n if (this._textContent) {\n let textItems = this._textContent.items;\n let textStyles = this._textContent.styles;\n this._processItems(textItems, textStyles);\n capability.resolve();\n } else if (this._textContentStream) {\n let pump = () => {\n this._reader.read().then(({ value, done, }) => {\n if (done) {\n capability.resolve();\n return;\n }\n\n Util.extendObj(styleCache, value.styles);\n this._processItems(value.items, styleCache);\n pump();\n\n }, capability.reject);\n };\n\n this._reader = this._textContentStream.getReader();\n pump();\n } else {\n throw new Error('Neither \"textContent\" nor \"textContentStream\"' +\n ' parameters specified.');\n }\n\n capability.promise.then(() => {\n styleCache = null;\n if (!timeout) { // Render right away\n render(this);\n } else { // Schedule\n this._renderTimer = setTimeout(() => {\n render(this);\n this._renderTimer = null;\n }, timeout);\n }\n }, this._capability.reject);\n },\n\n expandTextDivs: function TextLayer_expandTextDivs(expandDivs) {\n if (!this._enhanceTextSelection || !this._renderingDone) {\n return;\n }\n if (this._bounds !== null) {\n expand(this);\n this._bounds = null;\n }\n\n for (var i = 0, ii = this._textDivs.length; i < ii; i++) {\n var div = this._textDivs[i];\n var divProperties = this._textDivProperties.get(div);\n\n if (divProperties.isWhitespace) {\n continue;\n }\n if (expandDivs) {\n var transform = '', padding = '';\n\n if (divProperties.scale !== 1) {\n transform = 'scaleX(' + divProperties.scale + ')';\n }\n if (divProperties.angle !== 0) {\n transform = 'rotate(' + divProperties.angle + 'deg) ' + transform;\n }\n if (divProperties.paddingLeft !== 0) {\n padding += ' padding-left: ' +\n (divProperties.paddingLeft / divProperties.scale) + 'px;';\n transform += ' translateX(' +\n (-divProperties.paddingLeft / divProperties.scale) + 'px)';\n }\n if (divProperties.paddingTop !== 0) {\n padding += ' padding-top: ' + divProperties.paddingTop + 'px;';\n transform += ' translateY(' + (-divProperties.paddingTop) + 'px)';\n }\n if (divProperties.paddingRight !== 0) {\n padding += ' padding-right: ' +\n (divProperties.paddingRight / divProperties.scale) + 'px;';\n }\n if (divProperties.paddingBottom !== 0) {\n padding += ' padding-bottom: ' +\n divProperties.paddingBottom + 'px;';\n }\n\n if (padding !== '') {\n div.setAttribute('style', divProperties.style + padding);\n }\n if (transform !== '') {\n CustomStyle.setProp('transform', div, transform);\n }\n } else {\n div.style.padding = 0;\n CustomStyle.setProp('transform', div,\n divProperties.originalTransform || '');\n }\n }\n },\n };\n\n /**\n * Starts rendering of the text layer.\n *\n * @param {TextLayerRenderParameters} renderParameters\n * @returns {TextLayerRenderTask}\n */\n function renderTextLayer(renderParameters) {\n var 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\n return renderTextLayer;\n})();\n\nexport {\n renderTextLayer,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/text_layer.js","/* 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\nfunction fixMetadata(meta) {\n return meta.replace(/>\\\\376\\\\377([^<]+)/g, function(all, codes) {\n var bytes = codes.replace(/\\\\([0-3])([0-7])([0-7])/g,\n function(code, d1, d2, d3) {\n return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\n });\n var chars = '';\n for (var i = 0; i < bytes.length; i += 2) {\n var code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);\n chars += (code >= 32 && code < 127 && code !== 60 && code !== 62 &&\n code !== 38) ? String.fromCharCode(code) :\n '&#x' + (0x10000 + code).toString(16).substring(1) + ';';\n }\n return '>' + chars;\n });\n}\n\nfunction Metadata(meta) {\n if (typeof meta === 'string') {\n // Ghostscript produces invalid metadata\n meta = fixMetadata(meta);\n\n var parser = new DOMParser();\n meta = parser.parseFromString(meta, 'application/xml');\n } else if (!(meta instanceof Document)) {\n throw new Error('Metadata: Invalid metadata object');\n }\n\n this.metaDocument = meta;\n this.metadata = Object.create(null);\n this.parse();\n}\n\nMetadata.prototype = {\n parse: function Metadata_parse() {\n var doc = this.metaDocument;\n var rdf = doc.documentElement;\n\n if (rdf.nodeName.toLowerCase() !== 'rdf:rdf') { // Wrapped in \n rdf = rdf.firstChild;\n while (rdf && rdf.nodeName.toLowerCase() !== 'rdf:rdf') {\n rdf = rdf.nextSibling;\n }\n }\n\n var nodeName = (rdf) ? rdf.nodeName.toLowerCase() : null;\n if (!rdf || nodeName !== 'rdf:rdf' || !rdf.hasChildNodes()) {\n return;\n }\n\n var children = rdf.childNodes, desc, entry, name, i, ii, length, iLength;\n for (i = 0, length = children.length; i < length; i++) {\n desc = children[i];\n if (desc.nodeName.toLowerCase() !== 'rdf:description') {\n continue;\n }\n\n for (ii = 0, iLength = desc.childNodes.length; ii < iLength; ii++) {\n if (desc.childNodes[ii].nodeName.toLowerCase() !== '#text') {\n entry = desc.childNodes[ii];\n name = entry.nodeName.toLowerCase();\n this.metadata[name] = entry.textContent.trim();\n }\n }\n }\n },\n\n get: function Metadata_get(name) {\n return this.metadata[name] || null;\n },\n\n has: function Metadata_has(name) {\n return typeof this.metadata[name] !== 'undefined';\n },\n};\n\nexport {\n Metadata,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/metadata.js","/* 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/* eslint-disable no-multi-str */\n\nimport { getDefaultSetting } from './dom_utils';\nimport { shadow } from '../shared/util';\n\nvar WebGLUtils = (function WebGLUtilsClosure() {\n function loadShader(gl, code, shaderType) {\n var shader = gl.createShader(shaderType);\n gl.shaderSource(shader, code);\n gl.compileShader(shader);\n var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n if (!compiled) {\n var errorMsg = gl.getShaderInfoLog(shader);\n throw new Error('Error during shader compilation: ' + errorMsg);\n }\n return shader;\n }\n function createVertexShader(gl, code) {\n return loadShader(gl, code, gl.VERTEX_SHADER);\n }\n function createFragmentShader(gl, code) {\n return loadShader(gl, code, gl.FRAGMENT_SHADER);\n }\n function createProgram(gl, shaders) {\n var program = gl.createProgram();\n for (var i = 0, ii = shaders.length; i < ii; ++i) {\n gl.attachShader(program, shaders[i]);\n }\n gl.linkProgram(program);\n var linked = gl.getProgramParameter(program, gl.LINK_STATUS);\n if (!linked) {\n var errorMsg = gl.getProgramInfoLog(program);\n throw new Error('Error during program linking: ' + errorMsg);\n }\n return program;\n }\n function createTexture(gl, image, textureId) {\n gl.activeTexture(textureId);\n var texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n\n // Set the parameters so we can render any size image.\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n\n // Upload the image into the texture.\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n return texture;\n }\n\n var currentGL, currentCanvas;\n function generateGL() {\n if (currentGL) {\n return;\n }\n\n // The temporary canvas is used in the WebGL context.\n currentCanvas = document.createElement('canvas');\n currentGL = currentCanvas.getContext('webgl',\n { premultipliedalpha: false, });\n }\n\n var smaskVertexShaderCode = '\\\n attribute vec2 a_position; \\\n attribute vec2 a_texCoord; \\\n \\\n uniform vec2 u_resolution; \\\n \\\n varying vec2 v_texCoord; \\\n \\\n void main() { \\\n vec2 clipSpace = (a_position / u_resolution) * 2.0 - 1.0; \\\n gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \\\n \\\n v_texCoord = a_texCoord; \\\n } ';\n\n var smaskFragmentShaderCode = '\\\n precision mediump float; \\\n \\\n uniform vec4 u_backdrop; \\\n uniform int u_subtype; \\\n uniform sampler2D u_image; \\\n uniform sampler2D u_mask; \\\n \\\n varying vec2 v_texCoord; \\\n \\\n void main() { \\\n vec4 imageColor = texture2D(u_image, v_texCoord); \\\n vec4 maskColor = texture2D(u_mask, v_texCoord); \\\n if (u_backdrop.a > 0.0) { \\\n maskColor.rgb = maskColor.rgb * maskColor.a + \\\n u_backdrop.rgb * (1.0 - maskColor.a); \\\n } \\\n float lum; \\\n if (u_subtype == 0) { \\\n lum = maskColor.a; \\\n } else { \\\n lum = maskColor.r * 0.3 + maskColor.g * 0.59 + \\\n maskColor.b * 0.11; \\\n } \\\n imageColor.a *= lum; \\\n imageColor.rgb *= imageColor.a; \\\n gl_FragColor = imageColor; \\\n } ';\n\n var smaskCache = null;\n\n function initSmaskGL() {\n var canvas, gl;\n\n generateGL();\n canvas = currentCanvas;\n currentCanvas = null;\n gl = currentGL;\n currentGL = null;\n\n // setup a GLSL program\n var vertexShader = createVertexShader(gl, smaskVertexShaderCode);\n var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode);\n var program = createProgram(gl, [vertexShader, fragmentShader]);\n gl.useProgram(program);\n\n var cache = {};\n cache.gl = gl;\n cache.canvas = canvas;\n cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution');\n cache.positionLocation = gl.getAttribLocation(program, 'a_position');\n cache.backdropLocation = gl.getUniformLocation(program, 'u_backdrop');\n cache.subtypeLocation = gl.getUniformLocation(program, 'u_subtype');\n\n var texCoordLocation = gl.getAttribLocation(program, 'a_texCoord');\n var texLayerLocation = gl.getUniformLocation(program, 'u_image');\n var texMaskLocation = gl.getUniformLocation(program, 'u_mask');\n\n // provide texture coordinates for the rectangle.\n var texCoordBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([\n 0.0, 0.0,\n 1.0, 0.0,\n 0.0, 1.0,\n 0.0, 1.0,\n 1.0, 0.0,\n 1.0, 1.0]), gl.STATIC_DRAW);\n gl.enableVertexAttribArray(texCoordLocation);\n gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0);\n\n gl.uniform1i(texLayerLocation, 0);\n gl.uniform1i(texMaskLocation, 1);\n\n smaskCache = cache;\n }\n\n function composeSMask(layer, mask, properties) {\n var width = layer.width, height = layer.height;\n\n if (!smaskCache) {\n initSmaskGL();\n }\n var cache = smaskCache, canvas = cache.canvas, gl = cache.gl;\n canvas.width = width;\n canvas.height = height;\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n gl.uniform2f(cache.resolutionLocation, width, height);\n\n if (properties.backdrop) {\n gl.uniform4f(cache.resolutionLocation, properties.backdrop[0],\n properties.backdrop[1], properties.backdrop[2], 1);\n } else {\n gl.uniform4f(cache.resolutionLocation, 0, 0, 0, 0);\n }\n gl.uniform1i(cache.subtypeLocation,\n properties.subtype === 'Luminosity' ? 1 : 0);\n\n // Create a textures\n var texture = createTexture(gl, layer, gl.TEXTURE0);\n var maskTexture = createTexture(gl, mask, gl.TEXTURE1);\n\n\n // Create a buffer and put a single clipspace rectangle in\n // it (2 triangles)\n var buffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([\n 0, 0,\n width, 0,\n 0, height,\n 0, height,\n width, 0,\n width, height]), gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.positionLocation);\n gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);\n\n // draw\n gl.clearColor(0, 0, 0, 0);\n gl.enable(gl.BLEND);\n gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n gl.clear(gl.COLOR_BUFFER_BIT);\n\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n\n gl.flush();\n\n gl.deleteTexture(texture);\n gl.deleteTexture(maskTexture);\n gl.deleteBuffer(buffer);\n\n return canvas;\n }\n\n var figuresVertexShaderCode = '\\\n attribute vec2 a_position; \\\n attribute vec3 a_color; \\\n \\\n uniform vec2 u_resolution; \\\n uniform vec2 u_scale; \\\n uniform vec2 u_offset; \\\n \\\n varying vec4 v_color; \\\n \\\n void main() { \\\n vec2 position = (a_position + u_offset) * u_scale; \\\n vec2 clipSpace = (position / u_resolution) * 2.0 - 1.0; \\\n gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \\\n \\\n v_color = vec4(a_color / 255.0, 1.0); \\\n } ';\n\n var figuresFragmentShaderCode = '\\\n precision mediump float; \\\n \\\n varying vec4 v_color; \\\n \\\n void main() { \\\n gl_FragColor = v_color; \\\n } ';\n\n var figuresCache = null;\n\n function initFiguresGL() {\n var canvas, gl;\n\n generateGL();\n canvas = currentCanvas;\n currentCanvas = null;\n gl = currentGL;\n currentGL = null;\n\n // setup a GLSL program\n var vertexShader = createVertexShader(gl, figuresVertexShaderCode);\n var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode);\n var program = createProgram(gl, [vertexShader, fragmentShader]);\n gl.useProgram(program);\n\n var cache = {};\n cache.gl = gl;\n cache.canvas = canvas;\n cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution');\n cache.scaleLocation = gl.getUniformLocation(program, 'u_scale');\n cache.offsetLocation = gl.getUniformLocation(program, 'u_offset');\n cache.positionLocation = gl.getAttribLocation(program, 'a_position');\n cache.colorLocation = gl.getAttribLocation(program, 'a_color');\n\n figuresCache = cache;\n }\n\n function drawFigures(width, height, backgroundColor, figures, context) {\n if (!figuresCache) {\n initFiguresGL();\n }\n var cache = figuresCache, canvas = cache.canvas, gl = cache.gl;\n\n canvas.width = width;\n canvas.height = height;\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n gl.uniform2f(cache.resolutionLocation, width, height);\n\n // count triangle points\n var count = 0;\n var i, ii, rows;\n for (i = 0, ii = figures.length; i < ii; i++) {\n switch (figures[i].type) {\n case 'lattice':\n rows = (figures[i].coords.length / figures[i].verticesPerRow) | 0;\n count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6;\n break;\n case 'triangles':\n count += figures[i].coords.length;\n break;\n }\n }\n // transfer data\n var coords = new Float32Array(count * 2);\n var colors = new Uint8Array(count * 3);\n var coordsMap = context.coords, colorsMap = context.colors;\n var pIndex = 0, cIndex = 0;\n for (i = 0, ii = figures.length; i < ii; i++) {\n var figure = figures[i], ps = figure.coords, cs = figure.colors;\n switch (figure.type) {\n case 'lattice':\n var cols = figure.verticesPerRow;\n rows = (ps.length / cols) | 0;\n for (var row = 1; row < rows; row++) {\n var offset = row * cols + 1;\n for (var col = 1; col < cols; col++, offset++) {\n coords[pIndex] = coordsMap[ps[offset - cols - 1]];\n coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1];\n coords[pIndex + 2] = coordsMap[ps[offset - cols]];\n coords[pIndex + 3] = coordsMap[ps[offset - cols] + 1];\n coords[pIndex + 4] = coordsMap[ps[offset - 1]];\n coords[pIndex + 5] = coordsMap[ps[offset - 1] + 1];\n colors[cIndex] = colorsMap[cs[offset - cols - 1]];\n colors[cIndex + 1] = colorsMap[cs[offset - cols - 1] + 1];\n colors[cIndex + 2] = colorsMap[cs[offset - cols - 1] + 2];\n colors[cIndex + 3] = colorsMap[cs[offset - cols]];\n colors[cIndex + 4] = colorsMap[cs[offset - cols] + 1];\n colors[cIndex + 5] = colorsMap[cs[offset - cols] + 2];\n colors[cIndex + 6] = colorsMap[cs[offset - 1]];\n colors[cIndex + 7] = colorsMap[cs[offset - 1] + 1];\n colors[cIndex + 8] = colorsMap[cs[offset - 1] + 2];\n\n coords[pIndex + 6] = coords[pIndex + 2];\n coords[pIndex + 7] = coords[pIndex + 3];\n coords[pIndex + 8] = coords[pIndex + 4];\n coords[pIndex + 9] = coords[pIndex + 5];\n coords[pIndex + 10] = coordsMap[ps[offset]];\n coords[pIndex + 11] = coordsMap[ps[offset] + 1];\n colors[cIndex + 9] = colors[cIndex + 3];\n colors[cIndex + 10] = colors[cIndex + 4];\n colors[cIndex + 11] = colors[cIndex + 5];\n colors[cIndex + 12] = colors[cIndex + 6];\n colors[cIndex + 13] = colors[cIndex + 7];\n colors[cIndex + 14] = colors[cIndex + 8];\n colors[cIndex + 15] = colorsMap[cs[offset]];\n colors[cIndex + 16] = colorsMap[cs[offset] + 1];\n colors[cIndex + 17] = colorsMap[cs[offset] + 2];\n pIndex += 12;\n cIndex += 18;\n }\n }\n break;\n case 'triangles':\n for (var j = 0, jj = ps.length; j < jj; j++) {\n coords[pIndex] = coordsMap[ps[j]];\n coords[pIndex + 1] = coordsMap[ps[j] + 1];\n colors[cIndex] = colorsMap[cs[j]];\n colors[cIndex + 1] = colorsMap[cs[j] + 1];\n colors[cIndex + 2] = colorsMap[cs[j] + 2];\n pIndex += 2;\n cIndex += 3;\n }\n break;\n }\n }\n\n // draw\n if (backgroundColor) {\n gl.clearColor(backgroundColor[0] / 255, backgroundColor[1] / 255,\n backgroundColor[2] / 255, 1.0);\n } else {\n gl.clearColor(0, 0, 0, 0);\n }\n gl.clear(gl.COLOR_BUFFER_BIT);\n\n var coordsBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.positionLocation);\n gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);\n\n var colorsBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.colorLocation);\n gl.vertexAttribPointer(cache.colorLocation, 3, gl.UNSIGNED_BYTE, false,\n 0, 0);\n\n gl.uniform2f(cache.scaleLocation, context.scaleX, context.scaleY);\n gl.uniform2f(cache.offsetLocation, context.offsetX, context.offsetY);\n\n gl.drawArrays(gl.TRIANGLES, 0, count);\n\n gl.flush();\n\n gl.deleteBuffer(coordsBuffer);\n gl.deleteBuffer(colorsBuffer);\n\n return canvas;\n }\n\n function cleanup() {\n if (smaskCache && smaskCache.canvas) {\n smaskCache.canvas.width = 0;\n smaskCache.canvas.height = 0;\n }\n if (figuresCache && figuresCache.canvas) {\n figuresCache.canvas.width = 0;\n figuresCache.canvas.height = 0;\n }\n smaskCache = null;\n figuresCache = null;\n }\n\n return {\n get isEnabled() {\n if (getDefaultSetting('disableWebGL')) {\n return false;\n }\n var enabled = false;\n try {\n generateGL();\n enabled = !!currentGL;\n } catch (e) { }\n return shadow(this, 'isEnabled', enabled);\n },\n composeSMask,\n drawFigures,\n clear: cleanup,\n };\n})();\n\nexport {\n WebGLUtils,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/webgl.js","/* 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 _UnsupportedManager, getDocument, LoopbackPort, PDFDataRangeTransport,\n PDFWorker\n} from './api';\nimport {\n addLinkAttributes, CustomStyle, DEFAULT_LINK_REL, getFilenameFromUrl,\n isExternalLinkTargetSet, isValidUrl, LinkTarget\n} from './dom_utils';\nimport {\n createBlob, createObjectURL, createPromiseCapability, deprecated,\n getVerbosityLevel, globalScope, InvalidPDFException, isLittleEndian,\n MissingPDFException, OPS, PageViewport, PasswordException, PasswordResponses,\n removeNullCharacters, setVerbosityLevel, shadow, UnexpectedResponseException,\n UnknownErrorException, UNSUPPORTED_FEATURES, Util, VERBOSITY_LEVELS, warn\n} from '../shared/util';\nimport { AnnotationLayer } from './annotation_layer';\nimport { Metadata } from './metadata';\nimport { renderTextLayer } from './text_layer';\nimport { SVGGraphics } from './svg';\n\nvar isWorker = (typeof window === 'undefined');\n\n// The global PDFJS object is now deprecated and will not be supported in\n// the future. The members below are maintained for backward compatibility\n// and shall not be extended or modified. If the global.js is included as\n// a module, we will create a global PDFJS object instance or use existing.\nif (!globalScope.PDFJS) {\n globalScope.PDFJS = {};\n}\nvar PDFJS = globalScope.PDFJS;\n\nif (typeof PDFJSDev !== 'undefined') {\n PDFJS.version = PDFJSDev.eval('BUNDLE_VERSION');\n PDFJS.build = PDFJSDev.eval('BUNDLE_BUILD');\n}\n\nPDFJS.pdfBug = false;\n\nif (PDFJS.verbosity !== undefined) {\n setVerbosityLevel(PDFJS.verbosity);\n}\ndelete PDFJS.verbosity;\nObject.defineProperty(PDFJS, 'verbosity', {\n get() {\n return getVerbosityLevel();\n },\n set(level) {\n setVerbosityLevel(level);\n },\n enumerable: true,\n configurable: true,\n});\n\nPDFJS.VERBOSITY_LEVELS = VERBOSITY_LEVELS;\nPDFJS.OPS = OPS;\nPDFJS.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;\nPDFJS.isValidUrl = isValidUrl;\nPDFJS.shadow = shadow;\nPDFJS.createBlob = createBlob;\nPDFJS.createObjectURL = function PDFJS_createObjectURL(data, contentType) {\n return createObjectURL(data, contentType, PDFJS.disableCreateObjectURL);\n};\nObject.defineProperty(PDFJS, 'isLittleEndian', {\n configurable: true,\n get: function PDFJS_isLittleEndian() {\n return shadow(PDFJS, 'isLittleEndian', isLittleEndian());\n },\n});\nPDFJS.removeNullCharacters = removeNullCharacters;\nPDFJS.PasswordResponses = PasswordResponses;\nPDFJS.PasswordException = PasswordException;\nPDFJS.UnknownErrorException = UnknownErrorException;\nPDFJS.InvalidPDFException = InvalidPDFException;\nPDFJS.MissingPDFException = MissingPDFException;\nPDFJS.UnexpectedResponseException = UnexpectedResponseException;\nPDFJS.Util = Util;\nPDFJS.PageViewport = PageViewport;\nPDFJS.createPromiseCapability = createPromiseCapability;\n\n/**\n * The maximum allowed image size in total pixels e.g. width * height. Images\n * above this value will not be drawn. Use -1 for no limit.\n * @var {number}\n */\nPDFJS.maxImageSize = (PDFJS.maxImageSize === undefined ?\n -1 : PDFJS.maxImageSize);\n\n/**\n * The url of where the predefined Adobe CMaps are located. Include trailing\n * slash.\n * @var {string}\n */\nPDFJS.cMapUrl = (PDFJS.cMapUrl === undefined ? null : PDFJS.cMapUrl);\n\n/**\n * Specifies if CMaps are binary packed.\n * @var {boolean}\n */\nPDFJS.cMapPacked = PDFJS.cMapPacked === undefined ? false : PDFJS.cMapPacked;\n\n/**\n * By default fonts are converted to OpenType fonts and loaded via font face\n * rules. If disabled, the font will be rendered using a built in font\n * renderer that constructs the glyphs with primitive path commands.\n * @var {boolean}\n */\nPDFJS.disableFontFace = (PDFJS.disableFontFace === undefined ?\n false : PDFJS.disableFontFace);\n\n/**\n * Path for image resources, mainly for annotation icons. Include trailing\n * slash.\n * @var {string}\n */\nPDFJS.imageResourcesPath = (PDFJS.imageResourcesPath === undefined ?\n '' : PDFJS.imageResourcesPath);\n\n/**\n * Disable the web worker and run all code on the main thread. This will\n * happen automatically if the browser doesn't support workers or sending\n * typed arrays to workers.\n * @var {boolean}\n */\nPDFJS.disableWorker = (PDFJS.disableWorker === undefined ?\n false : PDFJS.disableWorker);\n\n/**\n * Path and filename of the worker file. Required when the worker is enabled\n * in development mode. If unspecified in the production build, the worker\n * will be loaded based on the location of the pdf.js file. It is recommended\n * that the workerSrc is set in a custom application to prevent issues caused\n * by third-party frameworks and libraries.\n * @var {string}\n */\nPDFJS.workerSrc = (PDFJS.workerSrc === undefined ? null : PDFJS.workerSrc);\n\n/**\n * Defines global port for worker process. Overrides workerSrc and\n * disableWorker setting.\n */\nPDFJS.workerPort = (PDFJS.workerPort === undefined ? null : PDFJS.workerPort);\n\n/**\n * Disable range request loading of PDF files. When enabled and if the server\n * supports partial content requests then the PDF will be fetched in chunks.\n * Enabled (false) by default.\n * @var {boolean}\n */\nPDFJS.disableRange = (PDFJS.disableRange === undefined ?\n false : PDFJS.disableRange);\n\n/**\n * Disable streaming of PDF file data. By default PDF.js attempts to load PDF\n * in chunks. This default behavior can be disabled.\n * @var {boolean}\n */\nPDFJS.disableStream = (PDFJS.disableStream === undefined ?\n false : PDFJS.disableStream);\n\n/**\n * Disable pre-fetching of PDF file data. When range requests are enabled\n * PDF.js will automatically keep fetching more data even if it isn't needed\n * to display the current page. This default behavior can be disabled.\n *\n * NOTE: It is also necessary to disable streaming, see above,\n * in order for disabling of pre-fetching to work correctly.\n * @var {boolean}\n */\nPDFJS.disableAutoFetch = (PDFJS.disableAutoFetch === undefined ?\n false : PDFJS.disableAutoFetch);\n\n/**\n * Enables special hooks for debugging PDF.js.\n * @var {boolean}\n */\nPDFJS.pdfBug = (PDFJS.pdfBug === undefined ? false : PDFJS.pdfBug);\n\n/**\n * Enables transfer usage in postMessage for ArrayBuffers.\n * @var {boolean}\n */\nPDFJS.postMessageTransfers = (PDFJS.postMessageTransfers === undefined ?\n true : PDFJS.postMessageTransfers);\n\n/**\n * Disables URL.createObjectURL usage.\n * @var {boolean}\n */\nPDFJS.disableCreateObjectURL = (PDFJS.disableCreateObjectURL === undefined ?\n false : PDFJS.disableCreateObjectURL);\n\n/**\n * Disables WebGL usage.\n * @var {boolean}\n */\nPDFJS.disableWebGL = (PDFJS.disableWebGL === undefined ?\n true : PDFJS.disableWebGL);\n\n/**\n * Specifies the |target| attribute for external links.\n * The constants from PDFJS.LinkTarget should be used:\n * - NONE [default]\n * - SELF\n * - BLANK\n * - PARENT\n * - TOP\n * @var {number}\n */\nPDFJS.externalLinkTarget = (PDFJS.externalLinkTarget === undefined ?\n LinkTarget.NONE : PDFJS.externalLinkTarget);\n\n/**\n * Specifies the |rel| attribute for external links. Defaults to stripping\n * the referrer.\n * @var {string}\n */\nPDFJS.externalLinkRel = (PDFJS.externalLinkRel === undefined ?\n DEFAULT_LINK_REL : PDFJS.externalLinkRel);\n\n/**\n * Determines if we can eval strings as JS. Primarily used to improve\n * performance for font rendering.\n * @var {boolean}\n */\nPDFJS.isEvalSupported = (PDFJS.isEvalSupported === undefined ?\n true : PDFJS.isEvalSupported);\n\n/**\n * Opt-in to backwards incompatible API changes. NOTE:\n * If the `PDFJS_NEXT` build flag is set, it will override this setting.\n * @var {boolean}\n */\nPDFJS.pdfjsNext = (PDFJS.pdfjsNext === undefined) ? false : PDFJS.pdfjsNext;\n\nif (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('MOZCENTRAL')) {\n var savedOpenExternalLinksInNewWindow = PDFJS.openExternalLinksInNewWindow;\n delete PDFJS.openExternalLinksInNewWindow;\n Object.defineProperty(PDFJS, 'openExternalLinksInNewWindow', {\n get() {\n return PDFJS.externalLinkTarget === LinkTarget.BLANK;\n },\n set(value) {\n if (value) {\n deprecated('PDFJS.openExternalLinksInNewWindow, please use ' +\n '\"PDFJS.externalLinkTarget = PDFJS.LinkTarget.BLANK\" instead.');\n }\n if (PDFJS.externalLinkTarget !== LinkTarget.NONE) {\n warn('PDFJS.externalLinkTarget is already initialized');\n return;\n }\n PDFJS.externalLinkTarget = value ? LinkTarget.BLANK : LinkTarget.NONE;\n },\n enumerable: true,\n configurable: true,\n });\n if (savedOpenExternalLinksInNewWindow) {\n /**\n * (Deprecated) Opens external links in a new window if enabled.\n * The default behavior opens external links in the PDF.js window.\n *\n * NOTE: This property has been deprecated, please use\n * `PDFJS.externalLinkTarget = PDFJS.LinkTarget.BLANK` instead.\n * @var {boolean}\n */\n PDFJS.openExternalLinksInNewWindow = savedOpenExternalLinksInNewWindow;\n }\n}\n\nPDFJS.getDocument = getDocument;\nPDFJS.LoopbackPort = LoopbackPort;\nPDFJS.PDFDataRangeTransport = PDFDataRangeTransport;\nPDFJS.PDFWorker = PDFWorker;\n\nPDFJS.hasCanvasTypedArrays = true; // compatibility.js ensures this invariant\nPDFJS.CustomStyle = CustomStyle;\nPDFJS.LinkTarget = LinkTarget;\nPDFJS.addLinkAttributes = addLinkAttributes;\nPDFJS.getFilenameFromUrl = getFilenameFromUrl;\nPDFJS.isExternalLinkTargetSet = isExternalLinkTargetSet;\n\nPDFJS.AnnotationLayer = AnnotationLayer;\n\nPDFJS.renderTextLayer = renderTextLayer;\n\nPDFJS.Metadata = Metadata;\n\nPDFJS.SVGGraphics = SVGGraphics;\n\nPDFJS.UnsupportedManager = _UnsupportedManager;\n\nexport {\n globalScope,\n isWorker,\n PDFJS,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/global.js","/* 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, createPromiseCapability, globalScope, isInt, MissingPDFException,\n UnexpectedResponseException\n} from '../shared/util';\nimport { setPDFNetworkStreamClass } from './api';\n\nif (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n throw new Error('Module \"./network\" shall not ' +\n 'be used with FIREFOX or MOZCENTRAL build.');\n}\n\nvar OK_RESPONSE = 200;\nvar PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction NetworkManager(url, args) {\n this.url = url;\n args = args || {};\n this.isHttp = /^https?:/i.test(url);\n this.httpHeaders = (this.isHttp && args.httpHeaders) || {};\n this.withCredentials = args.withCredentials || false;\n this.getXhr = args.getXhr ||\n function NetworkManager_getXhr() {\n return new XMLHttpRequest();\n };\n\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n this.loadedRequests = Object.create(null);\n}\n\nfunction getArrayBuffer(xhr) {\n var data = xhr.response;\n if (typeof data !== 'string') {\n return data;\n }\n var length = data.length;\n var array = new Uint8Array(length);\n for (var i = 0; i < length; i++) {\n array[i] = data.charCodeAt(i) & 0xFF;\n }\n return array.buffer;\n}\n\nvar supportsMozChunked =\n typeof PDFJSDev !== 'undefined' && PDFJSDev.test('CHROME') ? false :\n (function supportsMozChunkedClosure() {\n try {\n var x = new XMLHttpRequest();\n // Firefox 37- required .open() to be called before setting responseType.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=707484\n // Even though the URL is not visited, .open() could fail if the URL is\n // blocked, e.g. via the connect-src CSP directive or the NoScript addon.\n // When this error occurs, this feature detection method will mistakenly\n // report that moz-chunked-arraybuffer is not supported in Firefox 37-.\n x.open('GET', globalScope.location.href);\n x.responseType = 'moz-chunked-arraybuffer';\n return x.responseType === 'moz-chunked-arraybuffer';\n } catch (e) {\n return false;\n }\n})();\n\nNetworkManager.prototype = {\n requestRange: function NetworkManager_requestRange(begin, end, listeners) {\n var args = {\n begin,\n end,\n };\n for (var prop in listeners) {\n args[prop] = listeners[prop];\n }\n return this.request(args);\n },\n\n requestFull: function NetworkManager_requestFull(listeners) {\n return this.request(listeners);\n },\n\n request: function NetworkManager_request(args) {\n var xhr = this.getXhr();\n var xhrId = this.currXhrId++;\n var pendingRequest = this.pendingRequests[xhrId] = {\n xhr,\n };\n\n xhr.open('GET', this.url);\n xhr.withCredentials = this.withCredentials;\n for (var property in this.httpHeaders) {\n var 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 var rangeStr = args.begin + '-' + (args.end - 1);\n xhr.setRequestHeader('Range', 'bytes=' + rangeStr);\n pendingRequest.expectedStatus = 206;\n } else {\n pendingRequest.expectedStatus = 200;\n }\n\n var useMozChunkedLoading = supportsMozChunked && !!args.onProgressiveData;\n if (useMozChunkedLoading) {\n xhr.responseType = 'moz-chunked-arraybuffer';\n pendingRequest.onProgressiveData = args.onProgressiveData;\n pendingRequest.mozChunked = true;\n } else {\n xhr.responseType = 'arraybuffer';\n }\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: function NetworkManager_onProgress(xhrId, evt) {\n var pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n // Maybe abortRequest was called...\n return;\n }\n\n if (pendingRequest.mozChunked) {\n var chunk = getArrayBuffer(pendingRequest.xhr);\n pendingRequest.onProgressiveData(chunk);\n }\n\n var onProgress = pendingRequest.onProgress;\n if (onProgress) {\n onProgress(evt);\n }\n },\n\n onStateChange: function NetworkManager_onStateChange(xhrId, evt) {\n var pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n // Maybe abortRequest was called...\n return;\n }\n\n var 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 if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n return;\n }\n var 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 var ok_response_on_range_request =\n xhrStatus === OK_RESPONSE &&\n pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n if (!ok_response_on_range_request &&\n xhrStatus !== pendingRequest.expectedStatus) {\n if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n return;\n }\n\n this.loadedRequests[xhrId] = true;\n\n var chunk = getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n var rangeHeader = xhr.getResponseHeader('Content-Range');\n var matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n var begin = parseInt(matches[1], 10);\n pendingRequest.onDone({\n begin,\n chunk,\n });\n } else if (pendingRequest.onProgressiveData) {\n pendingRequest.onDone(null);\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk,\n });\n } else if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n },\n\n hasPendingRequests: function NetworkManager_hasPendingRequests() {\n for (var xhrId in this.pendingRequests) {\n return true;\n }\n return false;\n },\n\n getRequestXhr: function NetworkManager_getXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n },\n\n isStreamingRequest: function NetworkManager_isStreamingRequest(xhrId) {\n return !!(this.pendingRequests[xhrId].onProgressiveData);\n },\n\n isPendingRequest: function NetworkManager_isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n },\n\n isLoadedRequest: function NetworkManager_isLoadedRequest(xhrId) {\n return xhrId in this.loadedRequests;\n },\n\n abortAllRequests: function NetworkManager_abortAllRequests() {\n for (var xhrId in this.pendingRequests) {\n this.abortRequest(xhrId | 0);\n }\n },\n\n abortRequest: function NetworkManager_abortRequest(xhrId) {\n var xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n },\n};\n\n/** @implements {IPDFStream} */\nfunction PDFNetworkStream(options) {\n this._options = options;\n var source = options.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\nPDFNetworkStream.prototype = {\n _onRangeRequestReaderClosed:\n function PDFNetworkStream_onRangeRequestReaderClosed(reader) {\n var i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n },\n\n getFullReader: function PDFNetworkStream_getFullReader() {\n assert(!this._fullRequestReader);\n this._fullRequestReader =\n new PDFNetworkStreamFullRequestReader(this._manager, this._options);\n return this._fullRequestReader;\n },\n\n getRangeReader: function PDFNetworkStream_getRangeReader(begin, end) {\n var reader = new PDFNetworkStreamRangeRequestReader(this._manager,\n begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n },\n\n cancelAllRequests: function PDFNetworkStream_cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n var readers = this._rangeRequestReaders.slice(0);\n readers.forEach(function (reader) {\n reader.cancel(reason);\n });\n },\n};\n\n/** @implements {IPDFStreamReader} */\nfunction PDFNetworkStreamFullRequestReader(manager, options) {\n this._manager = manager;\n\n var source = options.source;\n var args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onProgressiveData: source.disableStream ? null :\n this._onProgressiveData.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 = options.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\n this.onProgress = null;\n}\n\nPDFNetworkStreamFullRequestReader.prototype = {\n _validateRangeRequestCapabilities: function\n PDFNetworkStreamFullRequestReader_validateRangeRequestCapabilities() {\n\n if (this._disableRange) {\n return false;\n }\n\n var networkManager = this._manager;\n if (!networkManager.isHttp) {\n return false;\n }\n var fullRequestXhrId = this._fullRequestId;\n var fullRequestXhr = networkManager.getRequestXhr(fullRequestXhrId);\n if (fullRequestXhr.getResponseHeader('Accept-Ranges') !== 'bytes') {\n return false;\n }\n\n var contentEncoding =\n fullRequestXhr.getResponseHeader('Content-Encoding') || 'identity';\n if (contentEncoding !== 'identity') {\n return false;\n }\n\n var length = fullRequestXhr.getResponseHeader('Content-Length');\n length = parseInt(length, 10);\n if (!isInt(length)) {\n return false;\n }\n\n this._contentLength = length; // setting right content length\n\n if (length <= 2 * this._rangeChunkSize) {\n // The file size is smaller than the size of two chunks, so it does\n // not make any sense to abort the request and retry with a range\n // request.\n return false;\n }\n\n return true;\n },\n\n _onHeadersReceived:\n function PDFNetworkStreamFullRequestReader_onHeadersReceived() {\n\n if (this._validateRangeRequestCapabilities()) {\n this._isRangeSupported = true;\n }\n\n var networkManager = this._manager;\n var fullRequestXhrId = this._fullRequestId;\n if (networkManager.isStreamingRequest(fullRequestXhrId)) {\n // We can continue fetching when progressive loading is enabled,\n // and we don't need the autoFetch feature.\n this._isStreamingSupported = true;\n } else 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\n // requests.\n networkManager.abortRequest(fullRequestXhrId);\n }\n\n this._headersReceivedCapability.resolve();\n },\n\n _onProgressiveData:\n function PDFNetworkStreamFullRequestReader_onProgressiveData(chunk) {\n if (this._requests.length > 0) {\n var requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false, });\n } else {\n this._cachedChunks.push(chunk);\n }\n },\n\n _onDone: function PDFNetworkStreamFullRequestReader_onDone(args) {\n if (args) {\n this._onProgressiveData(args.chunk);\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n },\n\n _onError: function PDFNetworkStreamFullRequestReader_onError(status) {\n var url = this._url;\n var exception;\n if (status === 404 || status === 0 && /^file:/.test(url)) {\n exception = new MissingPDFException('Missing PDF \"' + url + '\".');\n } else {\n exception = new UnexpectedResponseException(\n 'Unexpected server response (' + status +\n ') while retrieving PDF \"' + url + '\".', status);\n }\n this._storedError = exception;\n this._headersReceivedCapability.reject(exception);\n this._requests.forEach(function (requestCapability) {\n requestCapability.reject(exception);\n });\n this._requests = [];\n this._cachedChunks = [];\n },\n\n _onProgress: function PDFNetworkStreamFullRequestReader_onProgress(data) {\n if (this.onProgress) {\n this.onProgress({\n loaded: data.loaded,\n total: data.lengthComputable ? data.total : this._contentLength,\n });\n }\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 read: function PDFNetworkStreamFullRequestReader_read() {\n if (this._storedError) {\n return Promise.reject(this._storedError);\n }\n if (this._cachedChunks.length > 0) {\n var chunk = this._cachedChunks.shift();\n return Promise.resolve({ value: chunk, done: false, });\n }\n if (this._done) {\n return Promise.resolve({ value: undefined, done: true, });\n }\n var requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n },\n\n cancel: function PDFNetworkStreamFullRequestReader_cancel(reason) {\n this._done = true;\n this._headersReceivedCapability.reject(reason);\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n },\n};\n\n/** @implements {IPDFStreamRangeReader} */\nfunction PDFNetworkStreamRangeRequestReader(manager, begin, end) {\n this._manager = manager;\n var args = {\n onDone: this._onDone.bind(this),\n onProgress: this._onProgress.bind(this),\n };\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n\n this.onProgress = null;\n this.onClosed = null;\n}\n\nPDFNetworkStreamRangeRequestReader.prototype = {\n _close: function PDFNetworkStreamRangeRequestReader_close() {\n if (this.onClosed) {\n this.onClosed(this);\n }\n },\n\n _onDone: function PDFNetworkStreamRangeRequestReader_onDone(data) {\n var chunk = data.chunk;\n if (this._requests.length > 0) {\n var requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false, });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n this._close();\n },\n\n _onProgress: function PDFNetworkStreamRangeRequestReader_onProgress(evt) {\n if (!this.isStreamingSupported && this.onProgress) {\n this.onProgress({\n loaded: evt.loaded,\n });\n }\n },\n\n get isStreamingSupported() {\n return false; // TODO allow progressive range bytes loading\n },\n\n read: function PDFNetworkStreamRangeRequestReader_read() {\n if (this._queuedChunk !== null) {\n var chunk = this._queuedChunk;\n this._queuedChunk = null;\n return Promise.resolve({ value: chunk, done: false, });\n }\n if (this._done) {\n return Promise.resolve({ value: undefined, done: true, });\n }\n var requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n },\n\n cancel: function PDFNetworkStreamRangeRequestReader_cancel(reason) {\n this._done = true;\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n },\n};\n\nsetPDFNetworkStreamClass(PDFNetworkStream);\n\nexport {\n PDFNetworkStream,\n NetworkManager,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/network.js","/*\n * To the extent possible under law, the authors have dedicated all copyright\n * and related and neighboring rights to this software to the public\n * domain worldwide. This software is distributed without any warranty.\n *\n * You should have received a copy of the CC0 Public Domain Dedication along\n * with this software. If not, see https://creativecommons.org/publicdomain/zero/1.0/.\n */\n\n(function(e, a) { for(var i in a) e[i] = a[i]; }(exports, /******/ (function(modules) { // webpackBootstrap\n/******/ // The module cache\n/******/ var installedModules = {};\n/******/\n/******/ // The require function\n/******/ function __w_pdfjs_require__(moduleId) {\n/******/\n/******/ // Check if module is in cache\n/******/ if(installedModules[moduleId])\n/******/ return installedModules[moduleId].exports;\n/******/\n/******/ // Create a new module (and put it into the cache)\n/******/ var module = installedModules[moduleId] = {\n/******/ i: moduleId,\n/******/ l: false,\n/******/ exports: {}\n/******/ };\n/******/\n/******/ // Execute the module function\n/******/ modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n/******/\n/******/ // Flag the module as loaded\n/******/ module.l = true;\n/******/\n/******/ // Return the exports of the module\n/******/ return module.exports;\n/******/ }\n/******/\n/******/\n/******/ // expose the modules object (__webpack_modules__)\n/******/ __w_pdfjs_require__.m = modules;\n/******/\n/******/ // expose the module cache\n/******/ __w_pdfjs_require__.c = installedModules;\n/******/\n/******/ // identity function for calling harmony imports with the correct context\n/******/ __w_pdfjs_require__.i = function(value) { return value; };\n/******/\n/******/ // define getter function for harmony exports\n/******/ __w_pdfjs_require__.d = function(exports, name, getter) {\n/******/ if(!__w_pdfjs_require__.o(exports, name)) {\n/******/ Object.defineProperty(exports, name, {\n/******/ configurable: false,\n/******/ enumerable: true,\n/******/ get: getter\n/******/ });\n/******/ }\n/******/ };\n/******/\n/******/ // getDefaultExport function for compatibility with non-harmony modules\n/******/ __w_pdfjs_require__.n = function(module) {\n/******/ var getter = module && module.__esModule ?\n/******/ function getDefault() { return module['default']; } :\n/******/ function getModuleExports() { return module; };\n/******/ __w_pdfjs_require__.d(getter, 'a', getter);\n/******/ return getter;\n/******/ };\n/******/\n/******/ // Object.prototype.hasOwnProperty.call\n/******/ __w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ // __webpack_public_path__\n/******/ __w_pdfjs_require__.p = \"\";\n/******/\n/******/ // Load entry module and return exports\n/******/ return __w_pdfjs_require__(__w_pdfjs_require__.s = 7);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _require = __w_pdfjs_require__(1),\n assert = _require.assert;\n\nfunction IsPropertyKey(argument) {\n return typeof argument === 'string' || (typeof argument === 'undefined' ? 'undefined' : _typeof(argument)) === 'symbol';\n}\n\nexports.typeIsObject = function (x) {\n return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x !== null || typeof x === 'function';\n};\n\nexports.createDataProperty = function (o, p, v) {\n assert(exports.typeIsObject(o));\n Object.defineProperty(o, p, { value: v, writable: true, enumerable: true, configurable: true });\n};\n\nexports.createArrayFromList = function (elements) {\n // We use arrays to represent lists, so this is basically a no-op.\n // Do a slice though just in case we happen to depend on the unique-ness.\n return elements.slice();\n};\n\nexports.ArrayBufferCopy = function (dest, destOffset, src, srcOffset, n) {\n new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset);\n};\n\nexports.CreateIterResultObject = function (value, done) {\n assert(typeof done === 'boolean');\n var obj = {};\n Object.defineProperty(obj, 'value', { value: value, enumerable: true, writable: true, configurable: true });\n Object.defineProperty(obj, 'done', { value: done, enumerable: true, writable: true, configurable: true });\n return obj;\n};\n\nexports.IsFiniteNonNegativeNumber = function (v) {\n if (Number.isNaN(v)) {\n return false;\n }\n if (v === Infinity) {\n return false;\n }\n if (v < 0) {\n return false;\n }\n\n return true;\n};\n\nfunction Call(F, V, args) {\n if (typeof F !== 'function') {\n throw new TypeError('Argument is not a function');\n }\n\n return Function.prototype.apply.call(F, V, args);\n}\n\nexports.InvokeOrNoop = function (O, P, args) {\n assert(O !== undefined);\n assert(IsPropertyKey(P));\n assert(Array.isArray(args));\n\n var method = O[P];\n if (method === undefined) {\n return undefined;\n }\n\n return Call(method, O, args);\n};\n\nexports.PromiseInvokeOrNoop = function (O, P, args) {\n assert(O !== undefined);\n assert(IsPropertyKey(P));\n assert(Array.isArray(args));\n try {\n return Promise.resolve(exports.InvokeOrNoop(O, P, args));\n } catch (returnValueE) {\n return Promise.reject(returnValueE);\n }\n};\n\nexports.PromiseInvokeOrPerformFallback = function (O, P, args, F, argsF) {\n assert(O !== undefined);\n assert(IsPropertyKey(P));\n assert(Array.isArray(args));\n assert(Array.isArray(argsF));\n\n var method = void 0;\n try {\n method = O[P];\n } catch (methodE) {\n return Promise.reject(methodE);\n }\n\n if (method === undefined) {\n return F.apply(null, argsF);\n }\n\n try {\n return Promise.resolve(Call(method, O, args));\n } catch (e) {\n return Promise.reject(e);\n }\n};\n\n// Not implemented correctly\nexports.TransferArrayBuffer = function (O) {\n return O.slice();\n};\n\nexports.ValidateAndNormalizeHighWaterMark = function (highWaterMark) {\n highWaterMark = Number(highWaterMark);\n if (Number.isNaN(highWaterMark) || highWaterMark < 0) {\n throw new RangeError('highWaterMark property of a queuing strategy must be non-negative and non-NaN');\n }\n\n return highWaterMark;\n};\n\nexports.ValidateAndNormalizeQueuingStrategy = function (size, highWaterMark) {\n if (size !== undefined && typeof size !== 'function') {\n throw new TypeError('size property of a queuing strategy must be a function');\n }\n\n highWaterMark = exports.ValidateAndNormalizeHighWaterMark(highWaterMark);\n\n return { size: size, highWaterMark: highWaterMark };\n};\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nfunction rethrowAssertionErrorRejection(e) {\n // Used throughout the reference implementation, as `.catch(rethrowAssertionErrorRejection)`, to ensure any errors\n // get shown. There are places in the spec where we do promise transformations and purposefully ignore or don't\n // expect any errors, but assertion errors are always problematic.\n if (e && e.constructor === AssertionError) {\n setTimeout(function () {\n throw e;\n }, 0);\n }\n};\n\nfunction AssertionError(message) {\n this.name = 'AssertionError';\n this.message = message || '';\n this.stack = new Error().stack;\n}\nAssertionError.prototype = Object.create(Error.prototype);\nAssertionError.prototype.constructor = AssertionError;\n\nfunction assert(value, message) {\n if (!value) {\n throw new AssertionError(message);\n }\n}\n\nmodule.exports = {\n rethrowAssertionErrorRejection: rethrowAssertionErrorRejection,\n AssertionError: AssertionError,\n assert: assert\n};\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = __w_pdfjs_require__(0),\n InvokeOrNoop = _require.InvokeOrNoop,\n PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,\n ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,\n typeIsObject = _require.typeIsObject;\n\nvar _require2 = __w_pdfjs_require__(1),\n assert = _require2.assert,\n rethrowAssertionErrorRejection = _require2.rethrowAssertionErrorRejection;\n\nvar _require3 = __w_pdfjs_require__(3),\n DequeueValue = _require3.DequeueValue,\n EnqueueValueWithSize = _require3.EnqueueValueWithSize,\n PeekQueueValue = _require3.PeekQueueValue,\n ResetQueue = _require3.ResetQueue;\n\nvar WritableStream = function () {\n function WritableStream() {\n var underlyingSink = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n size = _ref.size,\n _ref$highWaterMark = _ref.highWaterMark,\n highWaterMark = _ref$highWaterMark === undefined ? 1 : _ref$highWaterMark;\n\n _classCallCheck(this, WritableStream);\n\n this._state = 'writable';\n\n // The error that will be reported by new method calls once the state becomes errored. Only set when [[state]] is\n // 'erroring' or 'errored'. May be set to an undefined value.\n this._storedError = undefined;\n\n this._writer = undefined;\n\n // Initialize to undefined first because the constructor of the controller checks this\n // variable to validate the caller.\n this._writableStreamController = undefined;\n\n // This queue is placed here instead of the writer class in order to allow for passing a writer to the next data\n // producer without waiting for the queued writes to finish.\n this._writeRequests = [];\n\n // Write requests are removed from _writeRequests when write() is called on the underlying sink. This prevents\n // them from being erroneously rejected on error. If a write() call is in-flight, the request is stored here.\n this._inFlightWriteRequest = undefined;\n\n // The promise that was returned from writer.close(). Stored here because it may be fulfilled after the writer\n // has been detached.\n this._closeRequest = undefined;\n\n // Close request is removed from _closeRequest when close() is called on the underlying sink. This prevents it\n // from being erroneously rejected on error. If a close() call is in-flight, the request is stored here.\n this._inFlightCloseRequest = undefined;\n\n // The promise that was returned from writer.abort(). This may also be fulfilled after the writer has detached.\n this._pendingAbortRequest = undefined;\n\n // The backpressure signal set by the controller.\n this._backpressure = false;\n\n var type = underlyingSink.type;\n\n if (type !== undefined) {\n throw new RangeError('Invalid type is specified');\n }\n\n this._writableStreamController = new WritableStreamDefaultController(this, underlyingSink, size, highWaterMark);\n this._writableStreamController.__startSteps();\n }\n\n _createClass(WritableStream, [{\n key: 'abort',\n value: function abort(reason) {\n if (IsWritableStream(this) === false) {\n return Promise.reject(streamBrandCheckException('abort'));\n }\n\n if (IsWritableStreamLocked(this) === true) {\n return Promise.reject(new TypeError('Cannot abort a stream that already has a writer'));\n }\n\n return WritableStreamAbort(this, reason);\n }\n }, {\n key: 'getWriter',\n value: function getWriter() {\n if (IsWritableStream(this) === false) {\n throw streamBrandCheckException('getWriter');\n }\n\n return AcquireWritableStreamDefaultWriter(this);\n }\n }, {\n key: 'locked',\n get: function get() {\n if (IsWritableStream(this) === false) {\n throw streamBrandCheckException('locked');\n }\n\n return IsWritableStreamLocked(this);\n }\n }]);\n\n return WritableStream;\n}();\n\nmodule.exports = {\n AcquireWritableStreamDefaultWriter: AcquireWritableStreamDefaultWriter,\n IsWritableStream: IsWritableStream,\n IsWritableStreamLocked: IsWritableStreamLocked,\n WritableStream: WritableStream,\n WritableStreamAbort: WritableStreamAbort,\n WritableStreamDefaultControllerError: WritableStreamDefaultControllerError,\n WritableStreamDefaultWriterCloseWithErrorPropagation: WritableStreamDefaultWriterCloseWithErrorPropagation,\n WritableStreamDefaultWriterRelease: WritableStreamDefaultWriterRelease,\n WritableStreamDefaultWriterWrite: WritableStreamDefaultWriterWrite,\n WritableStreamCloseQueuedOrInFlight: WritableStreamCloseQueuedOrInFlight\n};\n\n// Abstract operations for the WritableStream.\n\nfunction AcquireWritableStreamDefaultWriter(stream) {\n return new WritableStreamDefaultWriter(stream);\n}\n\nfunction IsWritableStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) {\n return false;\n }\n\n return true;\n}\n\nfunction IsWritableStreamLocked(stream) {\n assert(IsWritableStream(stream) === true, 'IsWritableStreamLocked should only be used on known writable streams');\n\n if (stream._writer === undefined) {\n return false;\n }\n\n return true;\n}\n\nfunction WritableStreamAbort(stream, reason) {\n var state = stream._state;\n if (state === 'closed') {\n return Promise.resolve(undefined);\n }\n if (state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n var error = new TypeError('Requested to abort');\n if (stream._pendingAbortRequest !== undefined) {\n return Promise.reject(error);\n }\n\n assert(state === 'writable' || state === 'erroring', 'state must be writable or erroring');\n\n var wasAlreadyErroring = false;\n if (state === 'erroring') {\n wasAlreadyErroring = true;\n // reason will not be used, so don't keep a reference to it.\n reason = undefined;\n }\n\n var promise = new Promise(function (resolve, reject) {\n stream._pendingAbortRequest = {\n _resolve: resolve,\n _reject: reject,\n _reason: reason,\n _wasAlreadyErroring: wasAlreadyErroring\n };\n });\n\n if (wasAlreadyErroring === false) {\n WritableStreamStartErroring(stream, error);\n }\n\n return promise;\n}\n\n// WritableStream API exposed for controllers.\n\nfunction WritableStreamAddWriteRequest(stream) {\n assert(IsWritableStreamLocked(stream) === true);\n assert(stream._state === 'writable');\n\n var promise = new Promise(function (resolve, reject) {\n var writeRequest = {\n _resolve: resolve,\n _reject: reject\n };\n\n stream._writeRequests.push(writeRequest);\n });\n\n return promise;\n}\n\nfunction WritableStreamDealWithRejection(stream, error) {\n var state = stream._state;\n\n if (state === 'writable') {\n WritableStreamStartErroring(stream, error);\n return;\n }\n\n assert(state === 'erroring');\n WritableStreamFinishErroring(stream);\n}\n\nfunction WritableStreamStartErroring(stream, reason) {\n assert(stream._storedError === undefined, 'stream._storedError === undefined');\n assert(stream._state === 'writable', 'state must be writable');\n\n var controller = stream._writableStreamController;\n assert(controller !== undefined, 'controller must not be undefined');\n\n stream._state = 'erroring';\n stream._storedError = reason;\n var writer = stream._writer;\n if (writer !== undefined) {\n WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);\n }\n\n if (WritableStreamHasOperationMarkedInFlight(stream) === false && controller._started === true) {\n WritableStreamFinishErroring(stream);\n }\n}\n\nfunction WritableStreamFinishErroring(stream) {\n assert(stream._state === 'erroring', 'stream._state === erroring');\n assert(WritableStreamHasOperationMarkedInFlight(stream) === false, 'WritableStreamHasOperationMarkedInFlight(stream) === false');\n stream._state = 'errored';\n stream._writableStreamController.__errorSteps();\n\n var storedError = stream._storedError;\n for (var i = 0; i < stream._writeRequests.length; i++) {\n var writeRequest = stream._writeRequests[i];\n writeRequest._reject(storedError);\n }\n stream._writeRequests = [];\n\n if (stream._pendingAbortRequest === undefined) {\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n return;\n }\n\n var abortRequest = stream._pendingAbortRequest;\n stream._pendingAbortRequest = undefined;\n\n if (abortRequest._wasAlreadyErroring === true) {\n abortRequest._reject(storedError);\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n return;\n }\n\n var promise = stream._writableStreamController.__abortSteps(abortRequest._reason);\n promise.then(function () {\n abortRequest._resolve();\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n }, function (reason) {\n abortRequest._reject(reason);\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n });\n}\n\nfunction WritableStreamFinishInFlightWrite(stream) {\n assert(stream._inFlightWriteRequest !== undefined);\n stream._inFlightWriteRequest._resolve(undefined);\n stream._inFlightWriteRequest = undefined;\n}\n\nfunction WritableStreamFinishInFlightWriteWithError(stream, error) {\n assert(stream._inFlightWriteRequest !== undefined);\n stream._inFlightWriteRequest._reject(error);\n stream._inFlightWriteRequest = undefined;\n\n assert(stream._state === 'writable' || stream._state === 'erroring');\n\n WritableStreamDealWithRejection(stream, error);\n}\n\nfunction WritableStreamFinishInFlightClose(stream) {\n assert(stream._inFlightCloseRequest !== undefined);\n stream._inFlightCloseRequest._resolve(undefined);\n stream._inFlightCloseRequest = undefined;\n\n var state = stream._state;\n\n assert(state === 'writable' || state === 'erroring');\n\n if (state === 'erroring') {\n // The error was too late to do anything, so it is ignored.\n stream._storedError = undefined;\n if (stream._pendingAbortRequest !== undefined) {\n stream._pendingAbortRequest._resolve();\n stream._pendingAbortRequest = undefined;\n }\n }\n\n stream._state = 'closed';\n\n var writer = stream._writer;\n if (writer !== undefined) {\n defaultWriterClosedPromiseResolve(writer);\n }\n\n assert(stream._pendingAbortRequest === undefined, 'stream._pendingAbortRequest === undefined');\n assert(stream._storedError === undefined, 'stream._storedError === undefined');\n}\n\nfunction WritableStreamFinishInFlightCloseWithError(stream, error) {\n assert(stream._inFlightCloseRequest !== undefined);\n stream._inFlightCloseRequest._reject(error);\n stream._inFlightCloseRequest = undefined;\n\n assert(stream._state === 'writable' || stream._state === 'erroring');\n\n // Never execute sink abort() after sink close().\n if (stream._pendingAbortRequest !== undefined) {\n stream._pendingAbortRequest._reject(error);\n stream._pendingAbortRequest = undefined;\n }\n WritableStreamDealWithRejection(stream, error);\n}\n\n// TODO(ricea): Fix alphabetical order.\nfunction WritableStreamCloseQueuedOrInFlight(stream) {\n if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) {\n return false;\n }\n\n return true;\n}\n\nfunction WritableStreamHasOperationMarkedInFlight(stream) {\n if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) {\n return false;\n }\n\n return true;\n}\n\nfunction WritableStreamMarkCloseRequestInFlight(stream) {\n assert(stream._inFlightCloseRequest === undefined);\n assert(stream._closeRequest !== undefined);\n stream._inFlightCloseRequest = stream._closeRequest;\n stream._closeRequest = undefined;\n}\n\nfunction WritableStreamMarkFirstWriteRequestInFlight(stream) {\n assert(stream._inFlightWriteRequest === undefined, 'there must be no pending write request');\n assert(stream._writeRequests.length !== 0, 'writeRequests must not be empty');\n stream._inFlightWriteRequest = stream._writeRequests.shift();\n}\n\nfunction WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) {\n assert(stream._state === 'errored', '_stream_.[[state]] is `\"errored\"`');\n if (stream._closeRequest !== undefined) {\n assert(stream._inFlightCloseRequest === undefined);\n\n stream._closeRequest._reject(stream._storedError);\n stream._closeRequest = undefined;\n }\n var writer = stream._writer;\n if (writer !== undefined) {\n defaultWriterClosedPromiseReject(writer, stream._storedError);\n writer._closedPromise.catch(function () {});\n }\n}\n\nfunction WritableStreamUpdateBackpressure(stream, backpressure) {\n assert(stream._state === 'writable');\n assert(WritableStreamCloseQueuedOrInFlight(stream) === false);\n\n var writer = stream._writer;\n if (writer !== undefined && backpressure !== stream._backpressure) {\n if (backpressure === true) {\n defaultWriterReadyPromiseReset(writer);\n } else {\n assert(backpressure === false);\n\n defaultWriterReadyPromiseResolve(writer);\n }\n }\n\n stream._backpressure = backpressure;\n}\n\nvar WritableStreamDefaultWriter = function () {\n function WritableStreamDefaultWriter(stream) {\n _classCallCheck(this, WritableStreamDefaultWriter);\n\n if (IsWritableStream(stream) === false) {\n throw new TypeError('WritableStreamDefaultWriter can only be constructed with a WritableStream instance');\n }\n if (IsWritableStreamLocked(stream) === true) {\n throw new TypeError('This stream has already been locked for exclusive writing by another writer');\n }\n\n this._ownerWritableStream = stream;\n stream._writer = this;\n\n var state = stream._state;\n\n if (state === 'writable') {\n if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._backpressure === true) {\n defaultWriterReadyPromiseInitialize(this);\n } else {\n defaultWriterReadyPromiseInitializeAsResolved(this);\n }\n\n defaultWriterClosedPromiseInitialize(this);\n } else if (state === 'erroring') {\n defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError);\n this._readyPromise.catch(function () {});\n defaultWriterClosedPromiseInitialize(this);\n } else if (state === 'closed') {\n defaultWriterReadyPromiseInitializeAsResolved(this);\n defaultWriterClosedPromiseInitializeAsResolved(this);\n } else {\n assert(state === 'errored', 'state must be errored');\n\n var storedError = stream._storedError;\n defaultWriterReadyPromiseInitializeAsRejected(this, storedError);\n this._readyPromise.catch(function () {});\n defaultWriterClosedPromiseInitializeAsRejected(this, storedError);\n this._closedPromise.catch(function () {});\n }\n }\n\n _createClass(WritableStreamDefaultWriter, [{\n key: 'abort',\n value: function abort(reason) {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return Promise.reject(defaultWriterBrandCheckException('abort'));\n }\n\n if (this._ownerWritableStream === undefined) {\n return Promise.reject(defaultWriterLockException('abort'));\n }\n\n return WritableStreamDefaultWriterAbort(this, reason);\n }\n }, {\n key: 'close',\n value: function close() {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return Promise.reject(defaultWriterBrandCheckException('close'));\n }\n\n var stream = this._ownerWritableStream;\n\n if (stream === undefined) {\n return Promise.reject(defaultWriterLockException('close'));\n }\n\n if (WritableStreamCloseQueuedOrInFlight(stream) === true) {\n return Promise.reject(new TypeError('cannot close an already-closing stream'));\n }\n\n return WritableStreamDefaultWriterClose(this);\n }\n }, {\n key: 'releaseLock',\n value: function releaseLock() {\n if (IsWritableStreamDefaultWriter(this) === false) {\n throw defaultWriterBrandCheckException('releaseLock');\n }\n\n var stream = this._ownerWritableStream;\n\n if (stream === undefined) {\n return;\n }\n\n assert(stream._writer !== undefined);\n\n WritableStreamDefaultWriterRelease(this);\n }\n }, {\n key: 'write',\n value: function write(chunk) {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return Promise.reject(defaultWriterBrandCheckException('write'));\n }\n\n if (this._ownerWritableStream === undefined) {\n return Promise.reject(defaultWriterLockException('write to'));\n }\n\n return WritableStreamDefaultWriterWrite(this, chunk);\n }\n }, {\n key: 'closed',\n get: function get() {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return Promise.reject(defaultWriterBrandCheckException('closed'));\n }\n\n return this._closedPromise;\n }\n }, {\n key: 'desiredSize',\n get: function get() {\n if (IsWritableStreamDefaultWriter(this) === false) {\n throw defaultWriterBrandCheckException('desiredSize');\n }\n\n if (this._ownerWritableStream === undefined) {\n throw defaultWriterLockException('desiredSize');\n }\n\n return WritableStreamDefaultWriterGetDesiredSize(this);\n }\n }, {\n key: 'ready',\n get: function get() {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return Promise.reject(defaultWriterBrandCheckException('ready'));\n }\n\n return this._readyPromise;\n }\n }]);\n\n return WritableStreamDefaultWriter;\n}();\n\n// Abstract operations for the WritableStreamDefaultWriter.\n\nfunction IsWritableStreamDefaultWriter(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) {\n return false;\n }\n\n return true;\n}\n\n// A client of WritableStreamDefaultWriter may use these functions directly to bypass state check.\n\nfunction WritableStreamDefaultWriterAbort(writer, reason) {\n var stream = writer._ownerWritableStream;\n\n assert(stream !== undefined);\n\n return WritableStreamAbort(stream, reason);\n}\n\nfunction WritableStreamDefaultWriterClose(writer) {\n var stream = writer._ownerWritableStream;\n\n assert(stream !== undefined);\n\n var state = stream._state;\n if (state === 'closed' || state === 'errored') {\n return Promise.reject(new TypeError('The stream (in ' + state + ' state) is not in the writable state and cannot be closed'));\n }\n\n assert(state === 'writable' || state === 'erroring');\n assert(WritableStreamCloseQueuedOrInFlight(stream) === false);\n\n var promise = new Promise(function (resolve, reject) {\n var closeRequest = {\n _resolve: resolve,\n _reject: reject\n };\n\n stream._closeRequest = closeRequest;\n });\n\n if (stream._backpressure === true && state === 'writable') {\n defaultWriterReadyPromiseResolve(writer);\n }\n\n WritableStreamDefaultControllerClose(stream._writableStreamController);\n\n return promise;\n}\n\nfunction WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {\n var stream = writer._ownerWritableStream;\n\n assert(stream !== undefined);\n\n var state = stream._state;\n if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {\n return Promise.resolve();\n }\n\n if (state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n\n assert(state === 'writable' || state === 'erroring');\n\n return WritableStreamDefaultWriterClose(writer);\n}\n\nfunction WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) {\n if (writer._closedPromiseState === 'pending') {\n defaultWriterClosedPromiseReject(writer, error);\n } else {\n defaultWriterClosedPromiseResetToRejected(writer, error);\n }\n writer._closedPromise.catch(function () {});\n}\n\nfunction WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) {\n if (writer._readyPromiseState === 'pending') {\n defaultWriterReadyPromiseReject(writer, error);\n } else {\n defaultWriterReadyPromiseResetToRejected(writer, error);\n }\n writer._readyPromise.catch(function () {});\n}\n\nfunction WritableStreamDefaultWriterGetDesiredSize(writer) {\n var stream = writer._ownerWritableStream;\n var state = stream._state;\n\n if (state === 'errored' || state === 'erroring') {\n return null;\n }\n\n if (state === 'closed') {\n return 0;\n }\n\n return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController);\n}\n\nfunction WritableStreamDefaultWriterRelease(writer) {\n var stream = writer._ownerWritableStream;\n assert(stream !== undefined);\n assert(stream._writer === writer);\n\n var releasedError = new TypeError('Writer was released and can no longer be used to monitor the stream\\'s closedness');\n\n WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);\n\n // The state transitions to \"errored\" before the sink abort() method runs, but the writer.closed promise is not\n // rejected until afterwards. This means that simply testing state will not work.\n WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError);\n\n stream._writer = undefined;\n writer._ownerWritableStream = undefined;\n}\n\nfunction WritableStreamDefaultWriterWrite(writer, chunk) {\n var stream = writer._ownerWritableStream;\n\n assert(stream !== undefined);\n\n var controller = stream._writableStreamController;\n\n var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk);\n\n if (stream !== writer._ownerWritableStream) {\n return Promise.reject(defaultWriterLockException('write to'));\n }\n\n var state = stream._state;\n if (state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {\n return Promise.reject(new TypeError('The stream is closing or closed and cannot be written to'));\n }\n if (state === 'erroring') {\n return Promise.reject(stream._storedError);\n }\n\n assert(state === 'writable');\n\n var promise = WritableStreamAddWriteRequest(stream);\n\n WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);\n\n return promise;\n}\n\nvar WritableStreamDefaultController = function () {\n function WritableStreamDefaultController(stream, underlyingSink, size, highWaterMark) {\n _classCallCheck(this, WritableStreamDefaultController);\n\n if (IsWritableStream(stream) === false) {\n throw new TypeError('WritableStreamDefaultController can only be constructed with a WritableStream instance');\n }\n\n if (stream._writableStreamController !== undefined) {\n throw new TypeError('WritableStreamDefaultController instances can only be created by the WritableStream constructor');\n }\n\n this._controlledWritableStream = stream;\n\n this._underlyingSink = underlyingSink;\n\n // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n this._queue = undefined;\n this._queueTotalSize = undefined;\n ResetQueue(this);\n\n this._started = false;\n\n var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);\n this._strategySize = normalizedStrategy.size;\n this._strategyHWM = normalizedStrategy.highWaterMark;\n\n var backpressure = WritableStreamDefaultControllerGetBackpressure(this);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n\n _createClass(WritableStreamDefaultController, [{\n key: 'error',\n value: function error(e) {\n if (IsWritableStreamDefaultController(this) === false) {\n throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController');\n }\n var state = this._controlledWritableStream._state;\n if (state !== 'writable') {\n // The stream is closed, errored or will be soon. The sink can't do anything useful if it gets an error here, so\n // just treat it as a no-op.\n return;\n }\n\n WritableStreamDefaultControllerError(this, e);\n }\n }, {\n key: '__abortSteps',\n value: function __abortSteps(reason) {\n return PromiseInvokeOrNoop(this._underlyingSink, 'abort', [reason]);\n }\n }, {\n key: '__errorSteps',\n value: function __errorSteps() {\n ResetQueue(this);\n }\n }, {\n key: '__startSteps',\n value: function __startSteps() {\n var _this = this;\n\n var startResult = InvokeOrNoop(this._underlyingSink, 'start', [this]);\n var stream = this._controlledWritableStream;\n\n Promise.resolve(startResult).then(function () {\n assert(stream._state === 'writable' || stream._state === 'erroring');\n _this._started = true;\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(_this);\n }, function (r) {\n assert(stream._state === 'writable' || stream._state === 'erroring');\n _this._started = true;\n WritableStreamDealWithRejection(stream, r);\n }).catch(rethrowAssertionErrorRejection);\n }\n }]);\n\n return WritableStreamDefaultController;\n}();\n\n// Abstract operations implementing interface required by the WritableStream.\n\nfunction WritableStreamDefaultControllerClose(controller) {\n EnqueueValueWithSize(controller, 'close', 0);\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n}\n\nfunction WritableStreamDefaultControllerGetChunkSize(controller, chunk) {\n var strategySize = controller._strategySize;\n\n if (strategySize === undefined) {\n return 1;\n }\n\n try {\n return strategySize(chunk);\n } catch (chunkSizeE) {\n WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n return 1;\n }\n}\n\nfunction WritableStreamDefaultControllerGetDesiredSize(controller) {\n return controller._strategyHWM - controller._queueTotalSize;\n}\n\nfunction WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) {\n var writeRecord = { chunk: chunk };\n\n try {\n EnqueueValueWithSize(controller, writeRecord, chunkSize);\n } catch (enqueueE) {\n WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n return;\n }\n\n var stream = controller._controlledWritableStream;\n if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._state === 'writable') {\n var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n}\n\n// Abstract operations for the WritableStreamDefaultController.\n\nfunction IsWritableStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSink')) {\n return false;\n }\n\n return true;\n}\n\nfunction WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) {\n var stream = controller._controlledWritableStream;\n\n if (controller._started === false) {\n return;\n }\n\n if (stream._inFlightWriteRequest !== undefined) {\n return;\n }\n\n var state = stream._state;\n if (state === 'closed' || state === 'errored') {\n return;\n }\n if (state === 'erroring') {\n WritableStreamFinishErroring(stream);\n return;\n }\n\n if (controller._queue.length === 0) {\n return;\n }\n\n var writeRecord = PeekQueueValue(controller);\n if (writeRecord === 'close') {\n WritableStreamDefaultControllerProcessClose(controller);\n } else {\n WritableStreamDefaultControllerProcessWrite(controller, writeRecord.chunk);\n }\n}\n\nfunction WritableStreamDefaultControllerErrorIfNeeded(controller, error) {\n if (controller._controlledWritableStream._state === 'writable') {\n WritableStreamDefaultControllerError(controller, error);\n }\n}\n\nfunction WritableStreamDefaultControllerProcessClose(controller) {\n var stream = controller._controlledWritableStream;\n\n WritableStreamMarkCloseRequestInFlight(stream);\n\n DequeueValue(controller);\n assert(controller._queue.length === 0, 'queue must be empty once the final write record is dequeued');\n\n var sinkClosePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'close', []);\n sinkClosePromise.then(function () {\n WritableStreamFinishInFlightClose(stream);\n }, function (reason) {\n WritableStreamFinishInFlightCloseWithError(stream, reason);\n }).catch(rethrowAssertionErrorRejection);\n}\n\nfunction WritableStreamDefaultControllerProcessWrite(controller, chunk) {\n var stream = controller._controlledWritableStream;\n\n WritableStreamMarkFirstWriteRequestInFlight(stream);\n\n var sinkWritePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'write', [chunk, controller]);\n sinkWritePromise.then(function () {\n WritableStreamFinishInFlightWrite(stream);\n\n var state = stream._state;\n assert(state === 'writable' || state === 'erroring');\n\n DequeueValue(controller);\n\n if (WritableStreamCloseQueuedOrInFlight(stream) === false && state === 'writable') {\n var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n }, function (reason) {\n WritableStreamFinishInFlightWriteWithError(stream, reason);\n }).catch(rethrowAssertionErrorRejection);\n}\n\nfunction WritableStreamDefaultControllerGetBackpressure(controller) {\n var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller);\n return desiredSize <= 0;\n}\n\n// A client of WritableStreamDefaultController may use these functions directly to bypass state check.\n\nfunction WritableStreamDefaultControllerError(controller, error) {\n var stream = controller._controlledWritableStream;\n\n assert(stream._state === 'writable');\n\n WritableStreamStartErroring(stream, error);\n}\n\n// Helper functions for the WritableStream.\n\nfunction streamBrandCheckException(name) {\n return new TypeError('WritableStream.prototype.' + name + ' can only be used on a WritableStream');\n}\n\n// Helper functions for the WritableStreamDefaultWriter.\n\nfunction defaultWriterBrandCheckException(name) {\n return new TypeError('WritableStreamDefaultWriter.prototype.' + name + ' can only be used on a WritableStreamDefaultWriter');\n}\n\nfunction defaultWriterLockException(name) {\n return new TypeError('Cannot ' + name + ' a stream using a released writer');\n}\n\nfunction defaultWriterClosedPromiseInitialize(writer) {\n writer._closedPromise = new Promise(function (resolve, reject) {\n writer._closedPromise_resolve = resolve;\n writer._closedPromise_reject = reject;\n writer._closedPromiseState = 'pending';\n });\n}\n\nfunction defaultWriterClosedPromiseInitializeAsRejected(writer, reason) {\n writer._closedPromise = Promise.reject(reason);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'rejected';\n}\n\nfunction defaultWriterClosedPromiseInitializeAsResolved(writer) {\n writer._closedPromise = Promise.resolve(undefined);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'resolved';\n}\n\nfunction defaultWriterClosedPromiseReject(writer, reason) {\n assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');\n assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');\n assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');\n\n writer._closedPromise_reject(reason);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'rejected';\n}\n\nfunction defaultWriterClosedPromiseResetToRejected(writer, reason) {\n assert(writer._closedPromise_resolve === undefined, 'writer._closedPromise_resolve === undefined');\n assert(writer._closedPromise_reject === undefined, 'writer._closedPromise_reject === undefined');\n assert(writer._closedPromiseState !== 'pending', 'writer._closedPromiseState is not pending');\n\n writer._closedPromise = Promise.reject(reason);\n writer._closedPromiseState = 'rejected';\n}\n\nfunction defaultWriterClosedPromiseResolve(writer) {\n assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');\n assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');\n assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');\n\n writer._closedPromise_resolve(undefined);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'resolved';\n}\n\nfunction defaultWriterReadyPromiseInitialize(writer) {\n writer._readyPromise = new Promise(function (resolve, reject) {\n writer._readyPromise_resolve = resolve;\n writer._readyPromise_reject = reject;\n });\n writer._readyPromiseState = 'pending';\n}\n\nfunction defaultWriterReadyPromiseInitializeAsRejected(writer, reason) {\n writer._readyPromise = Promise.reject(reason);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'rejected';\n}\n\nfunction defaultWriterReadyPromiseInitializeAsResolved(writer) {\n writer._readyPromise = Promise.resolve(undefined);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'fulfilled';\n}\n\nfunction defaultWriterReadyPromiseReject(writer, reason) {\n assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');\n assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');\n\n writer._readyPromise_reject(reason);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'rejected';\n}\n\nfunction defaultWriterReadyPromiseReset(writer) {\n assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');\n assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');\n\n writer._readyPromise = new Promise(function (resolve, reject) {\n writer._readyPromise_resolve = resolve;\n writer._readyPromise_reject = reject;\n });\n writer._readyPromiseState = 'pending';\n}\n\nfunction defaultWriterReadyPromiseResetToRejected(writer, reason) {\n assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');\n assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');\n\n writer._readyPromise = Promise.reject(reason);\n writer._readyPromiseState = 'rejected';\n}\n\nfunction defaultWriterReadyPromiseResolve(writer) {\n assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');\n assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');\n\n writer._readyPromise_resolve(undefined);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'fulfilled';\n}\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _require = __w_pdfjs_require__(0),\n IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber;\n\nvar _require2 = __w_pdfjs_require__(1),\n assert = _require2.assert;\n\nexports.DequeueValue = function (container) {\n assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: DequeueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n assert(container._queue.length > 0, 'Spec-level failure: should never dequeue from an empty queue.');\n\n var pair = container._queue.shift();\n container._queueTotalSize -= pair.size;\n if (container._queueTotalSize < 0) {\n container._queueTotalSize = 0;\n }\n\n return pair.value;\n};\n\nexports.EnqueueValueWithSize = function (container, value, size) {\n assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: EnqueueValueWithSize should only be used on containers with [[queue]] and ' + '[[queueTotalSize]].');\n\n size = Number(size);\n if (!IsFiniteNonNegativeNumber(size)) {\n throw new RangeError('Size must be a finite, non-NaN, non-negative number.');\n }\n\n container._queue.push({ value: value, size: size });\n container._queueTotalSize += size;\n};\n\nexports.PeekQueueValue = function (container) {\n assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: PeekQueueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n assert(container._queue.length > 0, 'Spec-level failure: should never peek at an empty queue.');\n\n var pair = container._queue[0];\n return pair.value;\n};\n\nexports.ResetQueue = function (container) {\n assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: ResetQueue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n\n container._queue = [];\n container._queueTotalSize = 0;\n};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = __w_pdfjs_require__(0),\n ArrayBufferCopy = _require.ArrayBufferCopy,\n CreateIterResultObject = _require.CreateIterResultObject,\n IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber,\n InvokeOrNoop = _require.InvokeOrNoop,\n PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,\n TransferArrayBuffer = _require.TransferArrayBuffer,\n ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,\n ValidateAndNormalizeHighWaterMark = _require.ValidateAndNormalizeHighWaterMark;\n\nvar _require2 = __w_pdfjs_require__(0),\n createArrayFromList = _require2.createArrayFromList,\n createDataProperty = _require2.createDataProperty,\n typeIsObject = _require2.typeIsObject;\n\nvar _require3 = __w_pdfjs_require__(1),\n assert = _require3.assert,\n rethrowAssertionErrorRejection = _require3.rethrowAssertionErrorRejection;\n\nvar _require4 = __w_pdfjs_require__(3),\n DequeueValue = _require4.DequeueValue,\n EnqueueValueWithSize = _require4.EnqueueValueWithSize,\n ResetQueue = _require4.ResetQueue;\n\nvar _require5 = __w_pdfjs_require__(2),\n AcquireWritableStreamDefaultWriter = _require5.AcquireWritableStreamDefaultWriter,\n IsWritableStream = _require5.IsWritableStream,\n IsWritableStreamLocked = _require5.IsWritableStreamLocked,\n WritableStreamAbort = _require5.WritableStreamAbort,\n WritableStreamDefaultWriterCloseWithErrorPropagation = _require5.WritableStreamDefaultWriterCloseWithErrorPropagation,\n WritableStreamDefaultWriterRelease = _require5.WritableStreamDefaultWriterRelease,\n WritableStreamDefaultWriterWrite = _require5.WritableStreamDefaultWriterWrite,\n WritableStreamCloseQueuedOrInFlight = _require5.WritableStreamCloseQueuedOrInFlight;\n\nvar ReadableStream = function () {\n function ReadableStream() {\n var underlyingSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n size = _ref.size,\n highWaterMark = _ref.highWaterMark;\n\n _classCallCheck(this, ReadableStream);\n\n // Exposed to controllers.\n this._state = 'readable';\n\n this._reader = undefined;\n this._storedError = undefined;\n\n this._disturbed = false;\n\n // Initialize to undefined first because the constructor of the controller checks this\n // variable to validate the caller.\n this._readableStreamController = undefined;\n var type = underlyingSource.type;\n var typeString = String(type);\n if (typeString === 'bytes') {\n if (highWaterMark === undefined) {\n highWaterMark = 0;\n }\n this._readableStreamController = new ReadableByteStreamController(this, underlyingSource, highWaterMark);\n } else if (type === undefined) {\n if (highWaterMark === undefined) {\n highWaterMark = 1;\n }\n this._readableStreamController = new ReadableStreamDefaultController(this, underlyingSource, size, highWaterMark);\n } else {\n throw new RangeError('Invalid type is specified');\n }\n }\n\n _createClass(ReadableStream, [{\n key: 'cancel',\n value: function cancel(reason) {\n if (IsReadableStream(this) === false) {\n return Promise.reject(streamBrandCheckException('cancel'));\n }\n\n if (IsReadableStreamLocked(this) === true) {\n return Promise.reject(new TypeError('Cannot cancel a stream that already has a reader'));\n }\n\n return ReadableStreamCancel(this, reason);\n }\n }, {\n key: 'getReader',\n value: function getReader() {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n mode = _ref2.mode;\n\n if (IsReadableStream(this) === false) {\n throw streamBrandCheckException('getReader');\n }\n\n if (mode === undefined) {\n return AcquireReadableStreamDefaultReader(this);\n }\n\n mode = String(mode);\n\n if (mode === 'byob') {\n return AcquireReadableStreamBYOBReader(this);\n }\n\n throw new RangeError('Invalid mode is specified');\n }\n }, {\n key: 'pipeThrough',\n value: function pipeThrough(_ref3, options) {\n var writable = _ref3.writable,\n readable = _ref3.readable;\n\n var promise = this.pipeTo(writable, options);\n\n ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise);\n\n return readable;\n }\n }, {\n key: 'pipeTo',\n value: function pipeTo(dest) {\n var _this = this;\n\n var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n preventClose = _ref4.preventClose,\n preventAbort = _ref4.preventAbort,\n preventCancel = _ref4.preventCancel;\n\n if (IsReadableStream(this) === false) {\n return Promise.reject(streamBrandCheckException('pipeTo'));\n }\n if (IsWritableStream(dest) === false) {\n return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo\\'s first argument must be a WritableStream'));\n }\n\n preventClose = Boolean(preventClose);\n preventAbort = Boolean(preventAbort);\n preventCancel = Boolean(preventCancel);\n\n if (IsReadableStreamLocked(this) === true) {\n return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream'));\n }\n if (IsWritableStreamLocked(dest) === true) {\n return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream'));\n }\n\n var reader = AcquireReadableStreamDefaultReader(this);\n var writer = AcquireWritableStreamDefaultWriter(dest);\n\n var shuttingDown = false;\n\n // This is used to keep track of the spec's requirement that we wait for ongoing writes during shutdown.\n var currentWrite = Promise.resolve();\n\n return new Promise(function (resolve, reject) {\n // Using reader and writer, read all chunks from this and write them to dest\n // - Backpressure must be enforced\n // - Shutdown must stop all activity\n function pipeLoop() {\n currentWrite = Promise.resolve();\n\n if (shuttingDown === true) {\n return Promise.resolve();\n }\n\n return writer._readyPromise.then(function () {\n return ReadableStreamDefaultReaderRead(reader).then(function (_ref5) {\n var value = _ref5.value,\n done = _ref5.done;\n\n if (done === true) {\n return;\n }\n\n currentWrite = WritableStreamDefaultWriterWrite(writer, value).catch(function () {});\n });\n }).then(pipeLoop);\n }\n\n // Errors must be propagated forward\n isOrBecomesErrored(_this, reader._closedPromise, function (storedError) {\n if (preventAbort === false) {\n shutdownWithAction(function () {\n return WritableStreamAbort(dest, storedError);\n }, true, storedError);\n } else {\n shutdown(true, storedError);\n }\n });\n\n // Errors must be propagated backward\n isOrBecomesErrored(dest, writer._closedPromise, function (storedError) {\n if (preventCancel === false) {\n shutdownWithAction(function () {\n return ReadableStreamCancel(_this, storedError);\n }, true, storedError);\n } else {\n shutdown(true, storedError);\n }\n });\n\n // Closing must be propagated forward\n isOrBecomesClosed(_this, reader._closedPromise, function () {\n if (preventClose === false) {\n shutdownWithAction(function () {\n return WritableStreamDefaultWriterCloseWithErrorPropagation(writer);\n });\n } else {\n shutdown();\n }\n });\n\n // Closing must be propagated backward\n if (WritableStreamCloseQueuedOrInFlight(dest) === true || dest._state === 'closed') {\n var destClosed = new TypeError('the destination writable stream closed before all data could be piped to it');\n\n if (preventCancel === false) {\n shutdownWithAction(function () {\n return ReadableStreamCancel(_this, destClosed);\n }, true, destClosed);\n } else {\n shutdown(true, destClosed);\n }\n }\n\n pipeLoop().catch(function (err) {\n currentWrite = Promise.resolve();\n rethrowAssertionErrorRejection(err);\n });\n\n function waitForWritesToFinish() {\n // Another write may have started while we were waiting on this currentWrite, so we have to be sure to wait\n // for that too.\n var oldCurrentWrite = currentWrite;\n return currentWrite.then(function () {\n return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined;\n });\n }\n\n function isOrBecomesErrored(stream, promise, action) {\n if (stream._state === 'errored') {\n action(stream._storedError);\n } else {\n promise.catch(action).catch(rethrowAssertionErrorRejection);\n }\n }\n\n function isOrBecomesClosed(stream, promise, action) {\n if (stream._state === 'closed') {\n action();\n } else {\n promise.then(action).catch(rethrowAssertionErrorRejection);\n }\n }\n\n function shutdownWithAction(action, originalIsError, originalError) {\n if (shuttingDown === true) {\n return;\n }\n shuttingDown = true;\n\n if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {\n waitForWritesToFinish().then(doTheRest);\n } else {\n doTheRest();\n }\n\n function doTheRest() {\n action().then(function () {\n return finalize(originalIsError, originalError);\n }, function (newError) {\n return finalize(true, newError);\n }).catch(rethrowAssertionErrorRejection);\n }\n }\n\n function shutdown(isError, error) {\n if (shuttingDown === true) {\n return;\n }\n shuttingDown = true;\n\n if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {\n waitForWritesToFinish().then(function () {\n return finalize(isError, error);\n }).catch(rethrowAssertionErrorRejection);\n } else {\n finalize(isError, error);\n }\n }\n\n function finalize(isError, error) {\n WritableStreamDefaultWriterRelease(writer);\n ReadableStreamReaderGenericRelease(reader);\n\n if (isError) {\n reject(error);\n } else {\n resolve(undefined);\n }\n }\n });\n }\n }, {\n key: 'tee',\n value: function tee() {\n if (IsReadableStream(this) === false) {\n throw streamBrandCheckException('tee');\n }\n\n var branches = ReadableStreamTee(this, false);\n return createArrayFromList(branches);\n }\n }, {\n key: 'locked',\n get: function get() {\n if (IsReadableStream(this) === false) {\n throw streamBrandCheckException('locked');\n }\n\n return IsReadableStreamLocked(this);\n }\n }]);\n\n return ReadableStream;\n}();\n\nmodule.exports = {\n ReadableStream: ReadableStream,\n IsReadableStreamDisturbed: IsReadableStreamDisturbed,\n ReadableStreamDefaultControllerClose: ReadableStreamDefaultControllerClose,\n ReadableStreamDefaultControllerEnqueue: ReadableStreamDefaultControllerEnqueue,\n ReadableStreamDefaultControllerError: ReadableStreamDefaultControllerError,\n ReadableStreamDefaultControllerGetDesiredSize: ReadableStreamDefaultControllerGetDesiredSize\n};\n\n// Abstract operations for the ReadableStream.\n\nfunction AcquireReadableStreamBYOBReader(stream) {\n return new ReadableStreamBYOBReader(stream);\n}\n\nfunction AcquireReadableStreamDefaultReader(stream) {\n return new ReadableStreamDefaultReader(stream);\n}\n\nfunction IsReadableStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) {\n return false;\n }\n\n return true;\n}\n\nfunction IsReadableStreamDisturbed(stream) {\n assert(IsReadableStream(stream) === true, 'IsReadableStreamDisturbed should only be used on known readable streams');\n\n return stream._disturbed;\n}\n\nfunction IsReadableStreamLocked(stream) {\n assert(IsReadableStream(stream) === true, 'IsReadableStreamLocked should only be used on known readable streams');\n\n if (stream._reader === undefined) {\n return false;\n }\n\n return true;\n}\n\nfunction ReadableStreamTee(stream, cloneForBranch2) {\n assert(IsReadableStream(stream) === true);\n assert(typeof cloneForBranch2 === 'boolean');\n\n var reader = AcquireReadableStreamDefaultReader(stream);\n\n var teeState = {\n closedOrErrored: false,\n canceled1: false,\n canceled2: false,\n reason1: undefined,\n reason2: undefined\n };\n teeState.promise = new Promise(function (resolve) {\n teeState._resolve = resolve;\n });\n\n var pull = create_ReadableStreamTeePullFunction();\n pull._reader = reader;\n pull._teeState = teeState;\n pull._cloneForBranch2 = cloneForBranch2;\n\n var cancel1 = create_ReadableStreamTeeBranch1CancelFunction();\n cancel1._stream = stream;\n cancel1._teeState = teeState;\n\n var cancel2 = create_ReadableStreamTeeBranch2CancelFunction();\n cancel2._stream = stream;\n cancel2._teeState = teeState;\n\n var underlyingSource1 = Object.create(Object.prototype);\n createDataProperty(underlyingSource1, 'pull', pull);\n createDataProperty(underlyingSource1, 'cancel', cancel1);\n var branch1Stream = new ReadableStream(underlyingSource1);\n\n var underlyingSource2 = Object.create(Object.prototype);\n createDataProperty(underlyingSource2, 'pull', pull);\n createDataProperty(underlyingSource2, 'cancel', cancel2);\n var branch2Stream = new ReadableStream(underlyingSource2);\n\n pull._branch1 = branch1Stream._readableStreamController;\n pull._branch2 = branch2Stream._readableStreamController;\n\n reader._closedPromise.catch(function (r) {\n if (teeState.closedOrErrored === true) {\n return;\n }\n\n ReadableStreamDefaultControllerError(pull._branch1, r);\n ReadableStreamDefaultControllerError(pull._branch2, r);\n teeState.closedOrErrored = true;\n });\n\n return [branch1Stream, branch2Stream];\n}\n\nfunction create_ReadableStreamTeePullFunction() {\n function f() {\n var reader = f._reader,\n branch1 = f._branch1,\n branch2 = f._branch2,\n teeState = f._teeState;\n\n\n return ReadableStreamDefaultReaderRead(reader).then(function (result) {\n assert(typeIsObject(result));\n var value = result.value;\n var done = result.done;\n assert(typeof done === 'boolean');\n\n if (done === true && teeState.closedOrErrored === false) {\n if (teeState.canceled1 === false) {\n ReadableStreamDefaultControllerClose(branch1);\n }\n if (teeState.canceled2 === false) {\n ReadableStreamDefaultControllerClose(branch2);\n }\n teeState.closedOrErrored = true;\n }\n\n if (teeState.closedOrErrored === true) {\n return;\n }\n\n var value1 = value;\n var value2 = value;\n\n // There is no way to access the cloning code right now in the reference implementation.\n // If we add one then we'll need an implementation for serializable objects.\n // if (teeState.canceled2 === false && cloneForBranch2 === true) {\n // value2 = StructuredDeserialize(StructuredSerialize(value2));\n // }\n\n if (teeState.canceled1 === false) {\n ReadableStreamDefaultControllerEnqueue(branch1, value1);\n }\n\n if (teeState.canceled2 === false) {\n ReadableStreamDefaultControllerEnqueue(branch2, value2);\n }\n });\n }\n return f;\n}\n\nfunction create_ReadableStreamTeeBranch1CancelFunction() {\n function f(reason) {\n var stream = f._stream,\n teeState = f._teeState;\n\n\n teeState.canceled1 = true;\n teeState.reason1 = reason;\n if (teeState.canceled2 === true) {\n var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);\n var cancelResult = ReadableStreamCancel(stream, compositeReason);\n teeState._resolve(cancelResult);\n }\n return teeState.promise;\n }\n return f;\n}\n\nfunction create_ReadableStreamTeeBranch2CancelFunction() {\n function f(reason) {\n var stream = f._stream,\n teeState = f._teeState;\n\n\n teeState.canceled2 = true;\n teeState.reason2 = reason;\n if (teeState.canceled1 === true) {\n var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);\n var cancelResult = ReadableStreamCancel(stream, compositeReason);\n teeState._resolve(cancelResult);\n }\n return teeState.promise;\n }\n return f;\n}\n\n// ReadableStream API exposed for controllers.\n\nfunction ReadableStreamAddReadIntoRequest(stream) {\n assert(IsReadableStreamBYOBReader(stream._reader) === true);\n assert(stream._state === 'readable' || stream._state === 'closed');\n\n var promise = new Promise(function (resolve, reject) {\n var readIntoRequest = {\n _resolve: resolve,\n _reject: reject\n };\n\n stream._reader._readIntoRequests.push(readIntoRequest);\n });\n\n return promise;\n}\n\nfunction ReadableStreamAddReadRequest(stream) {\n assert(IsReadableStreamDefaultReader(stream._reader) === true);\n assert(stream._state === 'readable');\n\n var promise = new Promise(function (resolve, reject) {\n var readRequest = {\n _resolve: resolve,\n _reject: reject\n };\n\n stream._reader._readRequests.push(readRequest);\n });\n\n return promise;\n}\n\nfunction ReadableStreamCancel(stream, reason) {\n stream._disturbed = true;\n\n if (stream._state === 'closed') {\n return Promise.resolve(undefined);\n }\n if (stream._state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n\n ReadableStreamClose(stream);\n\n var sourceCancelPromise = stream._readableStreamController.__cancelSteps(reason);\n return sourceCancelPromise.then(function () {\n return undefined;\n });\n}\n\nfunction ReadableStreamClose(stream) {\n assert(stream._state === 'readable');\n\n stream._state = 'closed';\n\n var reader = stream._reader;\n\n if (reader === undefined) {\n return undefined;\n }\n\n if (IsReadableStreamDefaultReader(reader) === true) {\n for (var i = 0; i < reader._readRequests.length; i++) {\n var _resolve = reader._readRequests[i]._resolve;\n\n _resolve(CreateIterResultObject(undefined, true));\n }\n reader._readRequests = [];\n }\n\n defaultReaderClosedPromiseResolve(reader);\n\n return undefined;\n}\n\nfunction ReadableStreamError(stream, e) {\n assert(IsReadableStream(stream) === true, 'stream must be ReadableStream');\n assert(stream._state === 'readable', 'state must be readable');\n\n stream._state = 'errored';\n stream._storedError = e;\n\n var reader = stream._reader;\n\n if (reader === undefined) {\n return undefined;\n }\n\n if (IsReadableStreamDefaultReader(reader) === true) {\n for (var i = 0; i < reader._readRequests.length; i++) {\n var readRequest = reader._readRequests[i];\n readRequest._reject(e);\n }\n\n reader._readRequests = [];\n } else {\n assert(IsReadableStreamBYOBReader(reader), 'reader must be ReadableStreamBYOBReader');\n\n for (var _i = 0; _i < reader._readIntoRequests.length; _i++) {\n var readIntoRequest = reader._readIntoRequests[_i];\n readIntoRequest._reject(e);\n }\n\n reader._readIntoRequests = [];\n }\n\n defaultReaderClosedPromiseReject(reader, e);\n reader._closedPromise.catch(function () {});\n}\n\nfunction ReadableStreamFulfillReadIntoRequest(stream, chunk, done) {\n var reader = stream._reader;\n\n assert(reader._readIntoRequests.length > 0);\n\n var readIntoRequest = reader._readIntoRequests.shift();\n readIntoRequest._resolve(CreateIterResultObject(chunk, done));\n}\n\nfunction ReadableStreamFulfillReadRequest(stream, chunk, done) {\n var reader = stream._reader;\n\n assert(reader._readRequests.length > 0);\n\n var readRequest = reader._readRequests.shift();\n readRequest._resolve(CreateIterResultObject(chunk, done));\n}\n\nfunction ReadableStreamGetNumReadIntoRequests(stream) {\n return stream._reader._readIntoRequests.length;\n}\n\nfunction ReadableStreamGetNumReadRequests(stream) {\n return stream._reader._readRequests.length;\n}\n\nfunction ReadableStreamHasBYOBReader(stream) {\n var reader = stream._reader;\n\n if (reader === undefined) {\n return false;\n }\n\n if (IsReadableStreamBYOBReader(reader) === false) {\n return false;\n }\n\n return true;\n}\n\nfunction ReadableStreamHasDefaultReader(stream) {\n var reader = stream._reader;\n\n if (reader === undefined) {\n return false;\n }\n\n if (IsReadableStreamDefaultReader(reader) === false) {\n return false;\n }\n\n return true;\n}\n\n// Readers\n\nvar ReadableStreamDefaultReader = function () {\n function ReadableStreamDefaultReader(stream) {\n _classCallCheck(this, ReadableStreamDefaultReader);\n\n if (IsReadableStream(stream) === false) {\n throw new TypeError('ReadableStreamDefaultReader can only be constructed with a ReadableStream instance');\n }\n if (IsReadableStreamLocked(stream) === true) {\n throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n }\n\n ReadableStreamReaderGenericInitialize(this, stream);\n\n this._readRequests = [];\n }\n\n _createClass(ReadableStreamDefaultReader, [{\n key: 'cancel',\n value: function cancel(reason) {\n if (IsReadableStreamDefaultReader(this) === false) {\n return Promise.reject(defaultReaderBrandCheckException('cancel'));\n }\n\n if (this._ownerReadableStream === undefined) {\n return Promise.reject(readerLockException('cancel'));\n }\n\n return ReadableStreamReaderGenericCancel(this, reason);\n }\n }, {\n key: 'read',\n value: function read() {\n if (IsReadableStreamDefaultReader(this) === false) {\n return Promise.reject(defaultReaderBrandCheckException('read'));\n }\n\n if (this._ownerReadableStream === undefined) {\n return Promise.reject(readerLockException('read from'));\n }\n\n return ReadableStreamDefaultReaderRead(this);\n }\n }, {\n key: 'releaseLock',\n value: function releaseLock() {\n if (IsReadableStreamDefaultReader(this) === false) {\n throw defaultReaderBrandCheckException('releaseLock');\n }\n\n if (this._ownerReadableStream === undefined) {\n return;\n }\n\n if (this._readRequests.length > 0) {\n throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n }\n\n ReadableStreamReaderGenericRelease(this);\n }\n }, {\n key: 'closed',\n get: function get() {\n if (IsReadableStreamDefaultReader(this) === false) {\n return Promise.reject(defaultReaderBrandCheckException('closed'));\n }\n\n return this._closedPromise;\n }\n }]);\n\n return ReadableStreamDefaultReader;\n}();\n\nvar ReadableStreamBYOBReader = function () {\n function ReadableStreamBYOBReader(stream) {\n _classCallCheck(this, ReadableStreamBYOBReader);\n\n if (!IsReadableStream(stream)) {\n throw new TypeError('ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a ' + 'byte source');\n }\n if (IsReadableByteStreamController(stream._readableStreamController) === false) {\n throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + 'source');\n }\n if (IsReadableStreamLocked(stream)) {\n throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n }\n\n ReadableStreamReaderGenericInitialize(this, stream);\n\n this._readIntoRequests = [];\n }\n\n _createClass(ReadableStreamBYOBReader, [{\n key: 'cancel',\n value: function cancel(reason) {\n if (!IsReadableStreamBYOBReader(this)) {\n return Promise.reject(byobReaderBrandCheckException('cancel'));\n }\n\n if (this._ownerReadableStream === undefined) {\n return Promise.reject(readerLockException('cancel'));\n }\n\n return ReadableStreamReaderGenericCancel(this, reason);\n }\n }, {\n key: 'read',\n value: function read(view) {\n if (!IsReadableStreamBYOBReader(this)) {\n return Promise.reject(byobReaderBrandCheckException('read'));\n }\n\n if (this._ownerReadableStream === undefined) {\n return Promise.reject(readerLockException('read from'));\n }\n\n if (!ArrayBuffer.isView(view)) {\n return Promise.reject(new TypeError('view must be an array buffer view'));\n }\n\n if (view.byteLength === 0) {\n return Promise.reject(new TypeError('view must have non-zero byteLength'));\n }\n\n return ReadableStreamBYOBReaderRead(this, view);\n }\n }, {\n key: 'releaseLock',\n value: function releaseLock() {\n if (!IsReadableStreamBYOBReader(this)) {\n throw byobReaderBrandCheckException('releaseLock');\n }\n\n if (this._ownerReadableStream === undefined) {\n return;\n }\n\n if (this._readIntoRequests.length > 0) {\n throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n }\n\n ReadableStreamReaderGenericRelease(this);\n }\n }, {\n key: 'closed',\n get: function get() {\n if (!IsReadableStreamBYOBReader(this)) {\n return Promise.reject(byobReaderBrandCheckException('closed'));\n }\n\n return this._closedPromise;\n }\n }]);\n\n return ReadableStreamBYOBReader;\n}();\n\n// Abstract operations for the readers.\n\nfunction IsReadableStreamBYOBReader(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) {\n return false;\n }\n\n return true;\n}\n\nfunction IsReadableStreamDefaultReader(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) {\n return false;\n }\n\n return true;\n}\n\nfunction ReadableStreamReaderGenericInitialize(reader, stream) {\n reader._ownerReadableStream = stream;\n stream._reader = reader;\n\n if (stream._state === 'readable') {\n defaultReaderClosedPromiseInitialize(reader);\n } else if (stream._state === 'closed') {\n defaultReaderClosedPromiseInitializeAsResolved(reader);\n } else {\n assert(stream._state === 'errored', 'state must be errored');\n\n defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError);\n reader._closedPromise.catch(function () {});\n }\n}\n\n// A client of ReadableStreamDefaultReader and ReadableStreamBYOBReader may use these functions directly to bypass state\n// check.\n\nfunction ReadableStreamReaderGenericCancel(reader, reason) {\n var stream = reader._ownerReadableStream;\n assert(stream !== undefined);\n return ReadableStreamCancel(stream, reason);\n}\n\nfunction ReadableStreamReaderGenericRelease(reader) {\n assert(reader._ownerReadableStream !== undefined);\n assert(reader._ownerReadableStream._reader === reader);\n\n if (reader._ownerReadableStream._state === 'readable') {\n defaultReaderClosedPromiseReject(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\\'s closedness'));\n } else {\n defaultReaderClosedPromiseResetToRejected(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\\'s closedness'));\n }\n reader._closedPromise.catch(function () {});\n\n reader._ownerReadableStream._reader = undefined;\n reader._ownerReadableStream = undefined;\n}\n\nfunction ReadableStreamBYOBReaderRead(reader, view) {\n var stream = reader._ownerReadableStream;\n\n assert(stream !== undefined);\n\n stream._disturbed = true;\n\n if (stream._state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n\n // Controllers must implement this.\n return ReadableByteStreamControllerPullInto(stream._readableStreamController, view);\n}\n\nfunction ReadableStreamDefaultReaderRead(reader) {\n var stream = reader._ownerReadableStream;\n\n assert(stream !== undefined);\n\n stream._disturbed = true;\n\n if (stream._state === 'closed') {\n return Promise.resolve(CreateIterResultObject(undefined, true));\n }\n\n if (stream._state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n\n assert(stream._state === 'readable');\n\n return stream._readableStreamController.__pullSteps();\n}\n\n// Controllers\n\nvar ReadableStreamDefaultController = function () {\n function ReadableStreamDefaultController(stream, underlyingSource, size, highWaterMark) {\n _classCallCheck(this, ReadableStreamDefaultController);\n\n if (IsReadableStream(stream) === false) {\n throw new TypeError('ReadableStreamDefaultController can only be constructed with a ReadableStream instance');\n }\n\n if (stream._readableStreamController !== undefined) {\n throw new TypeError('ReadableStreamDefaultController instances can only be created by the ReadableStream constructor');\n }\n\n this._controlledReadableStream = stream;\n\n this._underlyingSource = underlyingSource;\n\n // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n this._queue = undefined;\n this._queueTotalSize = undefined;\n ResetQueue(this);\n\n this._started = false;\n this._closeRequested = false;\n this._pullAgain = false;\n this._pulling = false;\n\n var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);\n this._strategySize = normalizedStrategy.size;\n this._strategyHWM = normalizedStrategy.highWaterMark;\n\n var controller = this;\n\n var startResult = InvokeOrNoop(underlyingSource, 'start', [this]);\n Promise.resolve(startResult).then(function () {\n controller._started = true;\n\n assert(controller._pulling === false);\n assert(controller._pullAgain === false);\n\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }, function (r) {\n ReadableStreamDefaultControllerErrorIfNeeded(controller, r);\n }).catch(rethrowAssertionErrorRejection);\n }\n\n _createClass(ReadableStreamDefaultController, [{\n key: 'close',\n value: function close() {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('close');\n }\n\n if (this._closeRequested === true) {\n throw new TypeError('The stream has already been closed; do not close it again!');\n }\n\n var state = this._controlledReadableStream._state;\n if (state !== 'readable') {\n throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');\n }\n\n ReadableStreamDefaultControllerClose(this);\n }\n }, {\n key: 'enqueue',\n value: function enqueue(chunk) {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('enqueue');\n }\n\n if (this._closeRequested === true) {\n throw new TypeError('stream is closed or draining');\n }\n\n var state = this._controlledReadableStream._state;\n if (state !== 'readable') {\n throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');\n }\n\n return ReadableStreamDefaultControllerEnqueue(this, chunk);\n }\n }, {\n key: 'error',\n value: function error(e) {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('error');\n }\n\n var stream = this._controlledReadableStream;\n if (stream._state !== 'readable') {\n throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');\n }\n\n ReadableStreamDefaultControllerError(this, e);\n }\n }, {\n key: '__cancelSteps',\n value: function __cancelSteps(reason) {\n ResetQueue(this);\n return PromiseInvokeOrNoop(this._underlyingSource, 'cancel', [reason]);\n }\n }, {\n key: '__pullSteps',\n value: function __pullSteps() {\n var stream = this._controlledReadableStream;\n\n if (this._queue.length > 0) {\n var chunk = DequeueValue(this);\n\n if (this._closeRequested === true && this._queue.length === 0) {\n ReadableStreamClose(stream);\n } else {\n ReadableStreamDefaultControllerCallPullIfNeeded(this);\n }\n\n return Promise.resolve(CreateIterResultObject(chunk, false));\n }\n\n var pendingPromise = ReadableStreamAddReadRequest(stream);\n ReadableStreamDefaultControllerCallPullIfNeeded(this);\n return pendingPromise;\n }\n }, {\n key: 'desiredSize',\n get: function get() {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('desiredSize');\n }\n\n return ReadableStreamDefaultControllerGetDesiredSize(this);\n }\n }]);\n\n return ReadableStreamDefaultController;\n}();\n\n// Abstract operations for the ReadableStreamDefaultController.\n\nfunction IsReadableStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSource')) {\n return false;\n }\n\n return true;\n}\n\nfunction ReadableStreamDefaultControllerCallPullIfNeeded(controller) {\n var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller);\n if (shouldPull === false) {\n return undefined;\n }\n\n if (controller._pulling === true) {\n controller._pullAgain = true;\n return undefined;\n }\n\n assert(controller._pullAgain === false);\n\n controller._pulling = true;\n\n var pullPromise = PromiseInvokeOrNoop(controller._underlyingSource, 'pull', [controller]);\n pullPromise.then(function () {\n controller._pulling = false;\n\n if (controller._pullAgain === true) {\n controller._pullAgain = false;\n return ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }\n return undefined;\n }, function (e) {\n ReadableStreamDefaultControllerErrorIfNeeded(controller, e);\n }).catch(rethrowAssertionErrorRejection);\n\n return undefined;\n}\n\nfunction ReadableStreamDefaultControllerShouldCallPull(controller) {\n var stream = controller._controlledReadableStream;\n\n if (stream._state === 'closed' || stream._state === 'errored') {\n return false;\n }\n\n if (controller._closeRequested === true) {\n return false;\n }\n\n if (controller._started === false) {\n return false;\n }\n\n if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n return true;\n }\n\n var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n if (desiredSize > 0) {\n return true;\n }\n\n return false;\n}\n\n// A client of ReadableStreamDefaultController may use these functions directly to bypass state check.\n\nfunction ReadableStreamDefaultControllerClose(controller) {\n var stream = controller._controlledReadableStream;\n\n assert(controller._closeRequested === false);\n assert(stream._state === 'readable');\n\n controller._closeRequested = true;\n\n if (controller._queue.length === 0) {\n ReadableStreamClose(stream);\n }\n}\n\nfunction ReadableStreamDefaultControllerEnqueue(controller, chunk) {\n var stream = controller._controlledReadableStream;\n\n assert(controller._closeRequested === false);\n assert(stream._state === 'readable');\n\n if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n ReadableStreamFulfillReadRequest(stream, chunk, false);\n } else {\n var chunkSize = 1;\n\n if (controller._strategySize !== undefined) {\n var strategySize = controller._strategySize;\n try {\n chunkSize = strategySize(chunk);\n } catch (chunkSizeE) {\n ReadableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n throw chunkSizeE;\n }\n }\n\n try {\n EnqueueValueWithSize(controller, chunk, chunkSize);\n } catch (enqueueE) {\n ReadableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n throw enqueueE;\n }\n }\n\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n\n return undefined;\n}\n\nfunction ReadableStreamDefaultControllerError(controller, e) {\n var stream = controller._controlledReadableStream;\n\n assert(stream._state === 'readable');\n\n ResetQueue(controller);\n\n ReadableStreamError(stream, e);\n}\n\nfunction ReadableStreamDefaultControllerErrorIfNeeded(controller, e) {\n if (controller._controlledReadableStream._state === 'readable') {\n ReadableStreamDefaultControllerError(controller, e);\n }\n}\n\nfunction ReadableStreamDefaultControllerGetDesiredSize(controller) {\n var stream = controller._controlledReadableStream;\n var state = stream._state;\n\n if (state === 'errored') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n\n return controller._strategyHWM - controller._queueTotalSize;\n}\n\nvar ReadableStreamBYOBRequest = function () {\n function ReadableStreamBYOBRequest(controller, view) {\n _classCallCheck(this, ReadableStreamBYOBRequest);\n\n this._associatedReadableByteStreamController = controller;\n this._view = view;\n }\n\n _createClass(ReadableStreamBYOBRequest, [{\n key: 'respond',\n value: function respond(bytesWritten) {\n if (IsReadableStreamBYOBRequest(this) === false) {\n throw byobRequestBrandCheckException('respond');\n }\n\n if (this._associatedReadableByteStreamController === undefined) {\n throw new TypeError('This BYOB request has been invalidated');\n }\n\n ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten);\n }\n }, {\n key: 'respondWithNewView',\n value: function respondWithNewView(view) {\n if (IsReadableStreamBYOBRequest(this) === false) {\n throw byobRequestBrandCheckException('respond');\n }\n\n if (this._associatedReadableByteStreamController === undefined) {\n throw new TypeError('This BYOB request has been invalidated');\n }\n\n if (!ArrayBuffer.isView(view)) {\n throw new TypeError('You can only respond with array buffer views');\n }\n\n ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view);\n }\n }, {\n key: 'view',\n get: function get() {\n return this._view;\n }\n }]);\n\n return ReadableStreamBYOBRequest;\n}();\n\nvar ReadableByteStreamController = function () {\n function ReadableByteStreamController(stream, underlyingByteSource, highWaterMark) {\n _classCallCheck(this, ReadableByteStreamController);\n\n if (IsReadableStream(stream) === false) {\n throw new TypeError('ReadableByteStreamController can only be constructed with a ReadableStream instance given ' + 'a byte source');\n }\n\n if (stream._readableStreamController !== undefined) {\n throw new TypeError('ReadableByteStreamController instances can only be created by the ReadableStream constructor given a byte ' + 'source');\n }\n\n this._controlledReadableStream = stream;\n\n this._underlyingByteSource = underlyingByteSource;\n\n this._pullAgain = false;\n this._pulling = false;\n\n ReadableByteStreamControllerClearPendingPullIntos(this);\n\n // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n this._queue = this._queueTotalSize = undefined;\n ResetQueue(this);\n\n this._closeRequested = false;\n this._started = false;\n\n this._strategyHWM = ValidateAndNormalizeHighWaterMark(highWaterMark);\n\n var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize;\n if (autoAllocateChunkSize !== undefined) {\n if (Number.isInteger(autoAllocateChunkSize) === false || autoAllocateChunkSize <= 0) {\n throw new RangeError('autoAllocateChunkSize must be a positive integer');\n }\n }\n this._autoAllocateChunkSize = autoAllocateChunkSize;\n\n this._pendingPullIntos = [];\n\n var controller = this;\n\n var startResult = InvokeOrNoop(underlyingByteSource, 'start', [this]);\n Promise.resolve(startResult).then(function () {\n controller._started = true;\n\n assert(controller._pulling === false);\n assert(controller._pullAgain === false);\n\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }, function (r) {\n if (stream._state === 'readable') {\n ReadableByteStreamControllerError(controller, r);\n }\n }).catch(rethrowAssertionErrorRejection);\n }\n\n _createClass(ReadableByteStreamController, [{\n key: 'close',\n value: function close() {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('close');\n }\n\n if (this._closeRequested === true) {\n throw new TypeError('The stream has already been closed; do not close it again!');\n }\n\n var state = this._controlledReadableStream._state;\n if (state !== 'readable') {\n throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');\n }\n\n ReadableByteStreamControllerClose(this);\n }\n }, {\n key: 'enqueue',\n value: function enqueue(chunk) {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('enqueue');\n }\n\n if (this._closeRequested === true) {\n throw new TypeError('stream is closed or draining');\n }\n\n var state = this._controlledReadableStream._state;\n if (state !== 'readable') {\n throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');\n }\n\n if (!ArrayBuffer.isView(chunk)) {\n throw new TypeError('You can only enqueue array buffer views when using a ReadableByteStreamController');\n }\n\n ReadableByteStreamControllerEnqueue(this, chunk);\n }\n }, {\n key: 'error',\n value: function error(e) {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('error');\n }\n\n var stream = this._controlledReadableStream;\n if (stream._state !== 'readable') {\n throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');\n }\n\n ReadableByteStreamControllerError(this, e);\n }\n }, {\n key: '__cancelSteps',\n value: function __cancelSteps(reason) {\n if (this._pendingPullIntos.length > 0) {\n var firstDescriptor = this._pendingPullIntos[0];\n firstDescriptor.bytesFilled = 0;\n }\n\n ResetQueue(this);\n\n return PromiseInvokeOrNoop(this._underlyingByteSource, 'cancel', [reason]);\n }\n }, {\n key: '__pullSteps',\n value: function __pullSteps() {\n var stream = this._controlledReadableStream;\n assert(ReadableStreamHasDefaultReader(stream) === true);\n\n if (this._queueTotalSize > 0) {\n assert(ReadableStreamGetNumReadRequests(stream) === 0);\n\n var entry = this._queue.shift();\n this._queueTotalSize -= entry.byteLength;\n\n ReadableByteStreamControllerHandleQueueDrain(this);\n\n var view = void 0;\n try {\n view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength);\n } catch (viewE) {\n return Promise.reject(viewE);\n }\n\n return Promise.resolve(CreateIterResultObject(view, false));\n }\n\n var autoAllocateChunkSize = this._autoAllocateChunkSize;\n if (autoAllocateChunkSize !== undefined) {\n var buffer = void 0;\n try {\n buffer = new ArrayBuffer(autoAllocateChunkSize);\n } catch (bufferE) {\n return Promise.reject(bufferE);\n }\n\n var pullIntoDescriptor = {\n buffer: buffer,\n byteOffset: 0,\n byteLength: autoAllocateChunkSize,\n bytesFilled: 0,\n elementSize: 1,\n ctor: Uint8Array,\n readerType: 'default'\n };\n\n this._pendingPullIntos.push(pullIntoDescriptor);\n }\n\n var promise = ReadableStreamAddReadRequest(stream);\n\n ReadableByteStreamControllerCallPullIfNeeded(this);\n\n return promise;\n }\n }, {\n key: 'byobRequest',\n get: function get() {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('byobRequest');\n }\n\n if (this._byobRequest === undefined && this._pendingPullIntos.length > 0) {\n var firstDescriptor = this._pendingPullIntos[0];\n var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled);\n\n this._byobRequest = new ReadableStreamBYOBRequest(this, view);\n }\n\n return this._byobRequest;\n }\n }, {\n key: 'desiredSize',\n get: function get() {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('desiredSize');\n }\n\n return ReadableByteStreamControllerGetDesiredSize(this);\n }\n }]);\n\n return ReadableByteStreamController;\n}();\n\n// Abstract operations for the ReadableByteStreamController.\n\nfunction IsReadableByteStreamController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_underlyingByteSource')) {\n return false;\n }\n\n return true;\n}\n\nfunction IsReadableStreamBYOBRequest(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) {\n return false;\n }\n\n return true;\n}\n\nfunction ReadableByteStreamControllerCallPullIfNeeded(controller) {\n var shouldPull = ReadableByteStreamControllerShouldCallPull(controller);\n if (shouldPull === false) {\n return undefined;\n }\n\n if (controller._pulling === true) {\n controller._pullAgain = true;\n return undefined;\n }\n\n assert(controller._pullAgain === false);\n\n controller._pulling = true;\n\n // TODO: Test controller argument\n var pullPromise = PromiseInvokeOrNoop(controller._underlyingByteSource, 'pull', [controller]);\n pullPromise.then(function () {\n controller._pulling = false;\n\n if (controller._pullAgain === true) {\n controller._pullAgain = false;\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n }, function (e) {\n if (controller._controlledReadableStream._state === 'readable') {\n ReadableByteStreamControllerError(controller, e);\n }\n }).catch(rethrowAssertionErrorRejection);\n\n return undefined;\n}\n\nfunction ReadableByteStreamControllerClearPendingPullIntos(controller) {\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n controller._pendingPullIntos = [];\n}\n\nfunction ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) {\n assert(stream._state !== 'errored', 'state must not be errored');\n\n var done = false;\n if (stream._state === 'closed') {\n assert(pullIntoDescriptor.bytesFilled === 0);\n done = true;\n }\n\n var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n if (pullIntoDescriptor.readerType === 'default') {\n ReadableStreamFulfillReadRequest(stream, filledView, done);\n } else {\n assert(pullIntoDescriptor.readerType === 'byob');\n ReadableStreamFulfillReadIntoRequest(stream, filledView, done);\n }\n}\n\nfunction ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) {\n var bytesFilled = pullIntoDescriptor.bytesFilled;\n var elementSize = pullIntoDescriptor.elementSize;\n\n assert(bytesFilled <= pullIntoDescriptor.byteLength);\n assert(bytesFilled % elementSize === 0);\n\n return new pullIntoDescriptor.ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize);\n}\n\nfunction ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) {\n controller._queue.push({ buffer: buffer, byteOffset: byteOffset, byteLength: byteLength });\n controller._queueTotalSize += byteLength;\n}\n\nfunction ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) {\n var elementSize = pullIntoDescriptor.elementSize;\n\n var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize;\n\n var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled);\n var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy;\n var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize;\n\n var totalBytesToCopyRemaining = maxBytesToCopy;\n var ready = false;\n if (maxAlignedBytes > currentAlignedBytes) {\n totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled;\n ready = true;\n }\n\n var queue = controller._queue;\n\n while (totalBytesToCopyRemaining > 0) {\n var headOfQueue = queue[0];\n\n var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength);\n\n var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n ArrayBufferCopy(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy);\n\n if (headOfQueue.byteLength === bytesToCopy) {\n queue.shift();\n } else {\n headOfQueue.byteOffset += bytesToCopy;\n headOfQueue.byteLength -= bytesToCopy;\n }\n controller._queueTotalSize -= bytesToCopy;\n\n ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor);\n\n totalBytesToCopyRemaining -= bytesToCopy;\n }\n\n if (ready === false) {\n assert(controller._queueTotalSize === 0, 'queue must be empty');\n assert(pullIntoDescriptor.bytesFilled > 0);\n assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize);\n }\n\n return ready;\n}\n\nfunction ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) {\n assert(controller._pendingPullIntos.length === 0 || controller._pendingPullIntos[0] === pullIntoDescriptor);\n\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n pullIntoDescriptor.bytesFilled += size;\n}\n\nfunction ReadableByteStreamControllerHandleQueueDrain(controller) {\n assert(controller._controlledReadableStream._state === 'readable');\n\n if (controller._queueTotalSize === 0 && controller._closeRequested === true) {\n ReadableStreamClose(controller._controlledReadableStream);\n } else {\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n}\n\nfunction ReadableByteStreamControllerInvalidateBYOBRequest(controller) {\n if (controller._byobRequest === undefined) {\n return;\n }\n\n controller._byobRequest._associatedReadableByteStreamController = undefined;\n controller._byobRequest._view = undefined;\n controller._byobRequest = undefined;\n}\n\nfunction ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) {\n assert(controller._closeRequested === false);\n\n while (controller._pendingPullIntos.length > 0) {\n if (controller._queueTotalSize === 0) {\n return;\n }\n\n var pullIntoDescriptor = controller._pendingPullIntos[0];\n\n if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n\n ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);\n }\n }\n}\n\nfunction ReadableByteStreamControllerPullInto(controller, view) {\n var stream = controller._controlledReadableStream;\n\n var elementSize = 1;\n if (view.constructor !== DataView) {\n elementSize = view.constructor.BYTES_PER_ELEMENT;\n }\n\n var ctor = view.constructor;\n\n var pullIntoDescriptor = {\n buffer: view.buffer,\n byteOffset: view.byteOffset,\n byteLength: view.byteLength,\n bytesFilled: 0,\n elementSize: elementSize,\n ctor: ctor,\n readerType: 'byob'\n };\n\n if (controller._pendingPullIntos.length > 0) {\n pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n controller._pendingPullIntos.push(pullIntoDescriptor);\n\n // No ReadableByteStreamControllerCallPullIfNeeded() call since:\n // - No change happens on desiredSize\n // - The source has already been notified of that there's at least 1 pending read(view)\n\n return ReadableStreamAddReadIntoRequest(stream);\n }\n\n if (stream._state === 'closed') {\n var emptyView = new view.constructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0);\n return Promise.resolve(CreateIterResultObject(emptyView, true));\n }\n\n if (controller._queueTotalSize > 0) {\n if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {\n var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n\n ReadableByteStreamControllerHandleQueueDrain(controller);\n\n return Promise.resolve(CreateIterResultObject(filledView, false));\n }\n\n if (controller._closeRequested === true) {\n var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n ReadableByteStreamControllerError(controller, e);\n\n return Promise.reject(e);\n }\n }\n\n pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n controller._pendingPullIntos.push(pullIntoDescriptor);\n\n var promise = ReadableStreamAddReadIntoRequest(stream);\n\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n\n return promise;\n}\n\nfunction ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) {\n firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer);\n\n assert(firstDescriptor.bytesFilled === 0, 'bytesFilled must be 0');\n\n var stream = controller._controlledReadableStream;\n if (ReadableStreamHasBYOBReader(stream) === true) {\n while (ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller);\n ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor);\n }\n }\n}\n\nfunction ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) {\n if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) {\n throw new RangeError('bytesWritten out of range');\n }\n\n ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor);\n\n if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) {\n // TODO: Figure out whether we should detach the buffer or not here.\n return;\n }\n\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n\n var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize;\n if (remainderSize > 0) {\n var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end);\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength);\n }\n\n pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n pullIntoDescriptor.bytesFilled -= remainderSize;\n ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);\n\n ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n}\n\nfunction ReadableByteStreamControllerRespondInternal(controller, bytesWritten) {\n var firstDescriptor = controller._pendingPullIntos[0];\n\n var stream = controller._controlledReadableStream;\n\n if (stream._state === 'closed') {\n if (bytesWritten !== 0) {\n throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream');\n }\n\n ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor);\n } else {\n assert(stream._state === 'readable');\n\n ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor);\n }\n}\n\nfunction ReadableByteStreamControllerShiftPendingPullInto(controller) {\n var descriptor = controller._pendingPullIntos.shift();\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n return descriptor;\n}\n\nfunction ReadableByteStreamControllerShouldCallPull(controller) {\n var stream = controller._controlledReadableStream;\n\n if (stream._state !== 'readable') {\n return false;\n }\n\n if (controller._closeRequested === true) {\n return false;\n }\n\n if (controller._started === false) {\n return false;\n }\n\n if (ReadableStreamHasDefaultReader(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n return true;\n }\n\n if (ReadableStreamHasBYOBReader(stream) === true && ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n return true;\n }\n\n if (ReadableByteStreamControllerGetDesiredSize(controller) > 0) {\n return true;\n }\n\n return false;\n}\n\n// A client of ReadableByteStreamController may use these functions directly to bypass state check.\n\nfunction ReadableByteStreamControllerClose(controller) {\n var stream = controller._controlledReadableStream;\n\n assert(controller._closeRequested === false);\n assert(stream._state === 'readable');\n\n if (controller._queueTotalSize > 0) {\n controller._closeRequested = true;\n\n return;\n }\n\n if (controller._pendingPullIntos.length > 0) {\n var firstPendingPullInto = controller._pendingPullIntos[0];\n if (firstPendingPullInto.bytesFilled > 0) {\n var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n ReadableByteStreamControllerError(controller, e);\n\n throw e;\n }\n }\n\n ReadableStreamClose(stream);\n}\n\nfunction ReadableByteStreamControllerEnqueue(controller, chunk) {\n var stream = controller._controlledReadableStream;\n\n assert(controller._closeRequested === false);\n assert(stream._state === 'readable');\n\n var buffer = chunk.buffer;\n var byteOffset = chunk.byteOffset;\n var byteLength = chunk.byteLength;\n var transferredBuffer = TransferArrayBuffer(buffer);\n\n if (ReadableStreamHasDefaultReader(stream) === true) {\n if (ReadableStreamGetNumReadRequests(stream) === 0) {\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n } else {\n assert(controller._queue.length === 0);\n\n var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength);\n ReadableStreamFulfillReadRequest(stream, transferredView, false);\n }\n } else if (ReadableStreamHasBYOBReader(stream) === true) {\n // TODO: Ideally in this branch detaching should happen only if the buffer is not consumed fully.\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n } else {\n assert(IsReadableStreamLocked(stream) === false, 'stream must not be locked');\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n }\n}\n\nfunction ReadableByteStreamControllerError(controller, e) {\n var stream = controller._controlledReadableStream;\n\n assert(stream._state === 'readable');\n\n ReadableByteStreamControllerClearPendingPullIntos(controller);\n\n ResetQueue(controller);\n ReadableStreamError(stream, e);\n}\n\nfunction ReadableByteStreamControllerGetDesiredSize(controller) {\n var stream = controller._controlledReadableStream;\n var state = stream._state;\n\n if (state === 'errored') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n\n return controller._strategyHWM - controller._queueTotalSize;\n}\n\nfunction ReadableByteStreamControllerRespond(controller, bytesWritten) {\n bytesWritten = Number(bytesWritten);\n if (IsFiniteNonNegativeNumber(bytesWritten) === false) {\n throw new RangeError('bytesWritten must be a finite');\n }\n\n assert(controller._pendingPullIntos.length > 0);\n\n ReadableByteStreamControllerRespondInternal(controller, bytesWritten);\n}\n\nfunction ReadableByteStreamControllerRespondWithNewView(controller, view) {\n assert(controller._pendingPullIntos.length > 0);\n\n var firstDescriptor = controller._pendingPullIntos[0];\n\n if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) {\n throw new RangeError('The region specified by view does not match byobRequest');\n }\n if (firstDescriptor.byteLength !== view.byteLength) {\n throw new RangeError('The buffer of view has different capacity than byobRequest');\n }\n\n firstDescriptor.buffer = view.buffer;\n\n ReadableByteStreamControllerRespondInternal(controller, view.byteLength);\n}\n\n// Helper functions for the ReadableStream.\n\nfunction streamBrandCheckException(name) {\n return new TypeError('ReadableStream.prototype.' + name + ' can only be used on a ReadableStream');\n}\n\n// Helper functions for the readers.\n\nfunction readerLockException(name) {\n return new TypeError('Cannot ' + name + ' a stream using a released reader');\n}\n\n// Helper functions for the ReadableStreamDefaultReader.\n\nfunction defaultReaderBrandCheckException(name) {\n return new TypeError('ReadableStreamDefaultReader.prototype.' + name + ' can only be used on a ReadableStreamDefaultReader');\n}\n\nfunction defaultReaderClosedPromiseInitialize(reader) {\n reader._closedPromise = new Promise(function (resolve, reject) {\n reader._closedPromise_resolve = resolve;\n reader._closedPromise_reject = reject;\n });\n}\n\nfunction defaultReaderClosedPromiseInitializeAsRejected(reader, reason) {\n reader._closedPromise = Promise.reject(reason);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n}\n\nfunction defaultReaderClosedPromiseInitializeAsResolved(reader) {\n reader._closedPromise = Promise.resolve(undefined);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n}\n\nfunction defaultReaderClosedPromiseReject(reader, reason) {\n assert(reader._closedPromise_resolve !== undefined);\n assert(reader._closedPromise_reject !== undefined);\n\n reader._closedPromise_reject(reason);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n}\n\nfunction defaultReaderClosedPromiseResetToRejected(reader, reason) {\n assert(reader._closedPromise_resolve === undefined);\n assert(reader._closedPromise_reject === undefined);\n\n reader._closedPromise = Promise.reject(reason);\n}\n\nfunction defaultReaderClosedPromiseResolve(reader) {\n assert(reader._closedPromise_resolve !== undefined);\n assert(reader._closedPromise_reject !== undefined);\n\n reader._closedPromise_resolve(undefined);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n}\n\n// Helper functions for the ReadableStreamDefaultReader.\n\nfunction byobReaderBrandCheckException(name) {\n return new TypeError('ReadableStreamBYOBReader.prototype.' + name + ' can only be used on a ReadableStreamBYOBReader');\n}\n\n// Helper functions for the ReadableStreamDefaultController.\n\nfunction defaultControllerBrandCheckException(name) {\n return new TypeError('ReadableStreamDefaultController.prototype.' + name + ' can only be used on a ReadableStreamDefaultController');\n}\n\n// Helper functions for the ReadableStreamBYOBRequest.\n\nfunction byobRequestBrandCheckException(name) {\n return new TypeError('ReadableStreamBYOBRequest.prototype.' + name + ' can only be used on a ReadableStreamBYOBRequest');\n}\n\n// Helper functions for the ReadableByteStreamController.\n\nfunction byteStreamControllerBrandCheckException(name) {\n return new TypeError('ReadableByteStreamController.prototype.' + name + ' can only be used on a ReadableByteStreamController');\n}\n\n// Helper function for ReadableStream pipeThrough\n\nfunction ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise) {\n try {\n // This relies on the brand-check that is enforced by Promise.prototype.then(). As with the rest of the reference\n // implementation, it doesn't attempt to do the right thing if someone has modified the global environment.\n Promise.prototype.then.call(promise, undefined, function () {});\n } catch (e) {\n // The brand check failed, therefore the internal slot is not present and there's nothing further to do.\n }\n}\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar transformStream = __w_pdfjs_require__(6);\nvar readableStream = __w_pdfjs_require__(4);\nvar writableStream = __w_pdfjs_require__(2);\n\nexports.TransformStream = transformStream.TransformStream;\nexports.ReadableStream = readableStream.ReadableStream;\nexports.IsReadableStreamDisturbed = readableStream.IsReadableStreamDisturbed;\nexports.ReadableStreamDefaultControllerClose = readableStream.ReadableStreamDefaultControllerClose;\nexports.ReadableStreamDefaultControllerEnqueue = readableStream.ReadableStreamDefaultControllerEnqueue;\nexports.ReadableStreamDefaultControllerError = readableStream.ReadableStreamDefaultControllerError;\nexports.ReadableStreamDefaultControllerGetDesiredSize = readableStream.ReadableStreamDefaultControllerGetDesiredSize;\nexports.AcquireWritableStreamDefaultWriter = writableStream.AcquireWritableStreamDefaultWriter;\nexports.IsWritableStream = writableStream.IsWritableStream;\nexports.IsWritableStreamLocked = writableStream.IsWritableStreamLocked;\nexports.WritableStream = writableStream.WritableStream;\nexports.WritableStreamAbort = writableStream.WritableStreamAbort;\nexports.WritableStreamDefaultControllerError = writableStream.WritableStreamDefaultControllerError;\nexports.WritableStreamDefaultWriterCloseWithErrorPropagation = writableStream.WritableStreamDefaultWriterCloseWithErrorPropagation;\nexports.WritableStreamDefaultWriterRelease = writableStream.WritableStreamDefaultWriterRelease;\nexports.WritableStreamDefaultWriterWrite = writableStream.WritableStreamDefaultWriterWrite;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = __w_pdfjs_require__(1),\n assert = _require.assert;\n\nvar _require2 = __w_pdfjs_require__(0),\n InvokeOrNoop = _require2.InvokeOrNoop,\n PromiseInvokeOrPerformFallback = _require2.PromiseInvokeOrPerformFallback,\n PromiseInvokeOrNoop = _require2.PromiseInvokeOrNoop,\n typeIsObject = _require2.typeIsObject;\n\nvar _require3 = __w_pdfjs_require__(4),\n ReadableStream = _require3.ReadableStream,\n ReadableStreamDefaultControllerClose = _require3.ReadableStreamDefaultControllerClose,\n ReadableStreamDefaultControllerEnqueue = _require3.ReadableStreamDefaultControllerEnqueue,\n ReadableStreamDefaultControllerError = _require3.ReadableStreamDefaultControllerError,\n ReadableStreamDefaultControllerGetDesiredSize = _require3.ReadableStreamDefaultControllerGetDesiredSize;\n\nvar _require4 = __w_pdfjs_require__(2),\n WritableStream = _require4.WritableStream,\n WritableStreamDefaultControllerError = _require4.WritableStreamDefaultControllerError;\n\n// Methods on the transform stream controller object\n\nfunction TransformStreamCloseReadable(transformStream) {\n // console.log('TransformStreamCloseReadable()');\n\n if (transformStream._errored === true) {\n throw new TypeError('TransformStream is already errored');\n }\n\n if (transformStream._readableClosed === true) {\n throw new TypeError('Readable side is already closed');\n }\n\n TransformStreamCloseReadableInternal(transformStream);\n}\n\nfunction TransformStreamEnqueueToReadable(transformStream, chunk) {\n // console.log('TransformStreamEnqueueToReadable()');\n\n if (transformStream._errored === true) {\n throw new TypeError('TransformStream is already errored');\n }\n\n if (transformStream._readableClosed === true) {\n throw new TypeError('Readable side is already closed');\n }\n\n // We throttle transformer.transform invocation based on the backpressure of the ReadableStream, but we still\n // accept TransformStreamEnqueueToReadable() calls.\n\n var controller = transformStream._readableController;\n\n try {\n ReadableStreamDefaultControllerEnqueue(controller, chunk);\n } catch (e) {\n // This happens when readableStrategy.size() throws.\n // The ReadableStream has already errored itself.\n transformStream._readableClosed = true;\n TransformStreamErrorIfNeeded(transformStream, e);\n\n throw transformStream._storedError;\n }\n\n var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n var maybeBackpressure = desiredSize <= 0;\n\n if (maybeBackpressure === true && transformStream._backpressure === false) {\n // This allows pull() again. When desiredSize is 0, it's possible that a pull() will happen immediately (but\n // asynchronously) after this because of pending read()s and set _backpressure back to false.\n //\n // If pull() could be called from inside enqueue(), then this logic would be wrong. This cannot happen\n // because there is always a promise pending from start() or pull() when _backpressure is false.\n TransformStreamSetBackpressure(transformStream, true);\n }\n}\n\nfunction TransformStreamError(transformStream, e) {\n if (transformStream._errored === true) {\n throw new TypeError('TransformStream is already errored');\n }\n\n TransformStreamErrorInternal(transformStream, e);\n}\n\n// Abstract operations.\n\nfunction TransformStreamCloseReadableInternal(transformStream) {\n assert(transformStream._errored === false);\n assert(transformStream._readableClosed === false);\n\n try {\n ReadableStreamDefaultControllerClose(transformStream._readableController);\n } catch (e) {\n assert(false);\n }\n\n transformStream._readableClosed = true;\n}\n\nfunction TransformStreamErrorIfNeeded(transformStream, e) {\n if (transformStream._errored === false) {\n TransformStreamErrorInternal(transformStream, e);\n }\n}\n\nfunction TransformStreamErrorInternal(transformStream, e) {\n // console.log('TransformStreamErrorInternal()');\n\n assert(transformStream._errored === false);\n\n transformStream._errored = true;\n transformStream._storedError = e;\n\n if (transformStream._writableDone === false) {\n WritableStreamDefaultControllerError(transformStream._writableController, e);\n }\n if (transformStream._readableClosed === false) {\n ReadableStreamDefaultControllerError(transformStream._readableController, e);\n }\n}\n\n// Used for preventing the next write() call on TransformStreamSink until there\n// is no longer backpressure.\nfunction TransformStreamReadableReadyPromise(transformStream) {\n assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n\n if (transformStream._backpressure === false) {\n return Promise.resolve();\n }\n\n assert(transformStream._backpressure === true, '_backpressure should have been initialized');\n\n return transformStream._backpressureChangePromise;\n}\n\nfunction TransformStreamSetBackpressure(transformStream, backpressure) {\n // console.log(`TransformStreamSetBackpressure(${backpressure})`);\n\n // Passes also when called during construction.\n assert(transformStream._backpressure !== backpressure, 'TransformStreamSetBackpressure() should be called only when backpressure is changed');\n\n if (transformStream._backpressureChangePromise !== undefined) {\n // The fulfillment value is just for a sanity check.\n transformStream._backpressureChangePromise_resolve(backpressure);\n }\n\n transformStream._backpressureChangePromise = new Promise(function (resolve) {\n transformStream._backpressureChangePromise_resolve = resolve;\n });\n\n transformStream._backpressureChangePromise.then(function (resolution) {\n assert(resolution !== backpressure, '_backpressureChangePromise should be fulfilled only when backpressure is changed');\n });\n\n transformStream._backpressure = backpressure;\n}\n\nfunction TransformStreamDefaultTransform(chunk, transformStreamController) {\n var transformStream = transformStreamController._controlledTransformStream;\n TransformStreamEnqueueToReadable(transformStream, chunk);\n return Promise.resolve();\n}\n\nfunction TransformStreamTransform(transformStream, chunk) {\n // console.log('TransformStreamTransform()');\n\n assert(transformStream._errored === false);\n assert(transformStream._transforming === false);\n assert(transformStream._backpressure === false);\n\n transformStream._transforming = true;\n\n var transformer = transformStream._transformer;\n var controller = transformStream._transformStreamController;\n\n var transformPromise = PromiseInvokeOrPerformFallback(transformer, 'transform', [chunk, controller], TransformStreamDefaultTransform, [chunk, controller]);\n\n return transformPromise.then(function () {\n transformStream._transforming = false;\n\n return TransformStreamReadableReadyPromise(transformStream);\n }, function (e) {\n TransformStreamErrorIfNeeded(transformStream, e);\n return Promise.reject(e);\n });\n}\n\nfunction IsTransformStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) {\n return false;\n }\n\n return true;\n}\n\nfunction IsTransformStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) {\n return false;\n }\n\n return true;\n}\n\nvar TransformStreamSink = function () {\n function TransformStreamSink(transformStream, startPromise) {\n _classCallCheck(this, TransformStreamSink);\n\n this._transformStream = transformStream;\n this._startPromise = startPromise;\n }\n\n _createClass(TransformStreamSink, [{\n key: 'start',\n value: function start(c) {\n var transformStream = this._transformStream;\n\n transformStream._writableController = c;\n\n return this._startPromise.then(function () {\n return TransformStreamReadableReadyPromise(transformStream);\n });\n }\n }, {\n key: 'write',\n value: function write(chunk) {\n // console.log('TransformStreamSink.write()');\n\n var transformStream = this._transformStream;\n\n return TransformStreamTransform(transformStream, chunk);\n }\n }, {\n key: 'abort',\n value: function abort() {\n var transformStream = this._transformStream;\n transformStream._writableDone = true;\n TransformStreamErrorInternal(transformStream, new TypeError('Writable side aborted'));\n }\n }, {\n key: 'close',\n value: function close() {\n // console.log('TransformStreamSink.close()');\n\n var transformStream = this._transformStream;\n\n assert(transformStream._transforming === false);\n\n transformStream._writableDone = true;\n\n var flushPromise = PromiseInvokeOrNoop(transformStream._transformer, 'flush', [transformStream._transformStreamController]);\n // Return a promise that is fulfilled with undefined on success.\n return flushPromise.then(function () {\n if (transformStream._errored === true) {\n return Promise.reject(transformStream._storedError);\n }\n if (transformStream._readableClosed === false) {\n TransformStreamCloseReadableInternal(transformStream);\n }\n return Promise.resolve();\n }).catch(function (r) {\n TransformStreamErrorIfNeeded(transformStream, r);\n return Promise.reject(transformStream._storedError);\n });\n }\n }]);\n\n return TransformStreamSink;\n}();\n\nvar TransformStreamSource = function () {\n function TransformStreamSource(transformStream, startPromise) {\n _classCallCheck(this, TransformStreamSource);\n\n this._transformStream = transformStream;\n this._startPromise = startPromise;\n }\n\n _createClass(TransformStreamSource, [{\n key: 'start',\n value: function start(c) {\n var transformStream = this._transformStream;\n\n transformStream._readableController = c;\n\n return this._startPromise.then(function () {\n // Prevent the first pull() call until there is backpressure.\n\n assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n\n if (transformStream._backpressure === true) {\n return Promise.resolve();\n }\n\n assert(transformStream._backpressure === false, '_backpressure should have been initialized');\n\n return transformStream._backpressureChangePromise;\n });\n }\n }, {\n key: 'pull',\n value: function pull() {\n // console.log('TransformStreamSource.pull()');\n\n var transformStream = this._transformStream;\n\n // Invariant. Enforced by the promises returned by start() and pull().\n assert(transformStream._backpressure === true, 'pull() should be never called while _backpressure is false');\n\n assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n\n TransformStreamSetBackpressure(transformStream, false);\n\n // Prevent the next pull() call until there is backpressure.\n return transformStream._backpressureChangePromise;\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n var transformStream = this._transformStream;\n transformStream._readableClosed = true;\n TransformStreamErrorInternal(transformStream, new TypeError('Readable side canceled'));\n }\n }]);\n\n return TransformStreamSource;\n}();\n\nvar TransformStreamDefaultController = function () {\n function TransformStreamDefaultController(transformStream) {\n _classCallCheck(this, TransformStreamDefaultController);\n\n if (IsTransformStream(transformStream) === false) {\n throw new TypeError('TransformStreamDefaultController can only be ' + 'constructed with a TransformStream instance');\n }\n\n if (transformStream._transformStreamController !== undefined) {\n throw new TypeError('TransformStreamDefaultController instances can ' + 'only be created by the TransformStream constructor');\n }\n\n this._controlledTransformStream = transformStream;\n }\n\n _createClass(TransformStreamDefaultController, [{\n key: 'enqueue',\n value: function enqueue(chunk) {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('enqueue');\n }\n\n TransformStreamEnqueueToReadable(this._controlledTransformStream, chunk);\n }\n }, {\n key: 'close',\n value: function close() {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('close');\n }\n\n TransformStreamCloseReadable(this._controlledTransformStream);\n }\n }, {\n key: 'error',\n value: function error(reason) {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('error');\n }\n\n TransformStreamError(this._controlledTransformStream, reason);\n }\n }, {\n key: 'desiredSize',\n get: function get() {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('desiredSize');\n }\n\n var transformStream = this._controlledTransformStream;\n var readableController = transformStream._readableController;\n\n return ReadableStreamDefaultControllerGetDesiredSize(readableController);\n }\n }]);\n\n return TransformStreamDefaultController;\n}();\n\nvar TransformStream = function () {\n function TransformStream() {\n var transformer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, TransformStream);\n\n this._transformer = transformer;\n var readableStrategy = transformer.readableStrategy,\n writableStrategy = transformer.writableStrategy;\n\n\n this._transforming = false;\n this._errored = false;\n this._storedError = undefined;\n\n this._writableController = undefined;\n this._readableController = undefined;\n this._transformStreamController = undefined;\n\n this._writableDone = false;\n this._readableClosed = false;\n\n this._backpressure = undefined;\n this._backpressureChangePromise = undefined;\n this._backpressureChangePromise_resolve = undefined;\n\n this._transformStreamController = new TransformStreamDefaultController(this);\n\n var startPromise_resolve = void 0;\n var startPromise = new Promise(function (resolve) {\n startPromise_resolve = resolve;\n });\n\n var source = new TransformStreamSource(this, startPromise);\n\n this._readable = new ReadableStream(source, readableStrategy);\n\n var sink = new TransformStreamSink(this, startPromise);\n\n this._writable = new WritableStream(sink, writableStrategy);\n\n assert(this._writableController !== undefined);\n assert(this._readableController !== undefined);\n\n var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(this._readableController);\n // Set _backpressure based on desiredSize. As there is no read() at this point, we can just interpret\n // desiredSize being non-positive as backpressure.\n TransformStreamSetBackpressure(this, desiredSize <= 0);\n\n var transformStream = this;\n var startResult = InvokeOrNoop(transformer, 'start', [transformStream._transformStreamController]);\n startPromise_resolve(startResult);\n startPromise.catch(function (e) {\n // The underlyingSink and underlyingSource will error the readable and writable ends on their own.\n if (transformStream._errored === false) {\n transformStream._errored = true;\n transformStream._storedError = e;\n }\n });\n }\n\n _createClass(TransformStream, [{\n key: 'readable',\n get: function get() {\n if (IsTransformStream(this) === false) {\n throw streamBrandCheckException('readable');\n }\n\n return this._readable;\n }\n }, {\n key: 'writable',\n get: function get() {\n if (IsTransformStream(this) === false) {\n throw streamBrandCheckException('writable');\n }\n\n return this._writable;\n }\n }]);\n\n return TransformStream;\n}();\n\nmodule.exports = { TransformStream: TransformStream };\n\n// Helper functions for the TransformStreamDefaultController.\n\nfunction defaultControllerBrandCheckException(name) {\n return new TypeError('TransformStreamDefaultController.prototype.' + name + ' can only be used on a TransformStreamDefaultController');\n}\n\n// Helper functions for the TransformStream.\n\nfunction streamBrandCheckException(name) {\n return new TypeError('TransformStream.prototype.' + name + ' can only be used on a TransformStream');\n}\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nmodule.exports = __w_pdfjs_require__(5);\n\n\n/***/ })\n/******/ ])));\n\n\n// WEBPACK FOOTER //\n// external/streams/streams-lib.js","/* 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, IDENTITY_MATRIX, ImageKind, info, isArray,\n isLittleEndian, isNum, OPS, shadow, TextRenderingMode, Util, warn\n} from '../shared/util';\nimport { getShadingPatternFromIR, TilingPattern } from './pattern_helper';\nimport { WebGLUtils } from './webgl';\n\n// contexts store most of the state we need natively.\n// However, PDF needs a bit more state, which we store here.\n\n// Minimal font size that would be used during canvas fillText operations.\nvar MIN_FONT_SIZE = 16;\n// Maximum font size that would be used during canvas fillText operations.\nvar MAX_FONT_SIZE = 100;\nvar MAX_GROUP_SIZE = 4096;\n\n// Heuristic value used when enforcing minimum line widths.\nvar MIN_WIDTH_FACTOR = 0.65;\n\nvar COMPILE_TYPE3_GLYPHS = true;\nvar MAX_SIZE_TO_COMPILE = 1000;\n\nvar FULL_CHUNK_HEIGHT = 16;\n\nvar IsLittleEndianCached = {\n get value() {\n return shadow(IsLittleEndianCached, 'value', isLittleEndian());\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 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\n ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];\n ctx._transformStack = [];\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 var m = this._transformMatrix;\n var a = m[0], b = m[1], c = m[2], d = m[3], e = m[4], f = m[5];\n\n var ad_bc = a * d - b * c;\n var 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 var 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 var 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 var 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 var m = this._transformMatrix;\n m[0] = m[0] * x;\n m[1] = m[1] * x;\n m[2] = m[2] * y;\n m[3] = m[3] * y;\n\n this._originalScale(x, y);\n };\n\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n var 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.rotate = function ctxRotate(angle) {\n var cosValue = Math.cos(angle);\n var sinValue = Math.sin(angle);\n\n var 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}\n\nvar CachedCanvases = (function CachedCanvasesClosure() {\n function CachedCanvases(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n CachedCanvases.prototype = {\n getCanvas: function CachedCanvases_getCanvas(id, width, height,\n trackTransform) {\n var 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 clear() {\n for (var id in this.cache) {\n var canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n },\n };\n return CachedCanvases;\n})();\n\nfunction compileType3Glyph(imgData) {\n var POINT_TO_PROCESS_LIMIT = 1000;\n\n var width = imgData.width, height = imgData.height;\n var i, j, j0, width1 = width + 1;\n var points = new Uint8Array(width1 * (height + 1));\n var POINT_TYPES =\n new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n\n // decodes bit-packed mask data\n var lineSize = (width + 7) & ~7, data0 = imgData.data;\n var data = new Uint8Array(lineSize * height), pos = 0, ii;\n for (i = 0, ii = data0.length; i < ii; i++) {\n var mask = 128, elem = data0[i];\n while (mask > 0) {\n data[pos++] = (elem & mask) ? 0 : 255;\n mask >>= 1;\n }\n }\n\n // finding iteresting 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 var 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 var sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum = (sum >> 2) + (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 var steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n var outlines = [];\n for (i = 0; count && i <= height; i++) {\n var p = i * width1;\n var end = p + width;\n while (p < end && !points[p]) {\n p++;\n }\n if (p === end) {\n continue;\n }\n var coords = [p % width1, i];\n\n var type = points[p], p0 = p, pp;\n do {\n var step = steps[type];\n do {\n p += step;\n } while (!points[p]);\n\n 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 { // 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);\n coords.push((p / width1) | 0);\n --count;\n } while (p0 !== p);\n outlines.push(coords);\n --i;\n }\n\n var 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 (var i = 0, ii = outlines.length; i < ii; i++) {\n var o = outlines[i];\n c.moveTo(o[0], o[1]);\n for (var j = 2, jj = o.length; j < jj; j += 2) {\n c.lineTo(o[j], o[j + 1]);\n }\n }\n c.fill();\n c.beginPath();\n c.restore();\n };\n\n return drawOutline;\n}\n\nvar CanvasExtraState = (function CanvasExtraStateClosure() {\n function CanvasExtraState() {\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.resumeSMaskCtx = null; // nonclonable field (see the save method below)\n }\n\n CanvasExtraState.prototype = {\n clone: function CanvasExtraState_clone() {\n return Object.create(this);\n },\n setCurrentPoint: function CanvasExtraState_setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n },\n };\n return CanvasExtraState;\n})();\n\nvar CanvasGraphics = (function CanvasGraphicsClosure() {\n // Defines the time the executeOperatorList is going to be executing\n // before it stops and shedules a continue of execution.\n var EXECUTION_TIME = 15;\n // Defines the number of steps before checking the execution time\n var EXECUTION_STEPS = 10;\n\n function CanvasGraphics(canvasCtx, commonObjs, objs, canvasFactory,\n imageLayer) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState();\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 pdf\n // 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.cachedCanvases = new CachedCanvases(this.canvasFactory);\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 function putBinaryImageData(ctx, imgData) {\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 var height = imgData.height, width = imgData.width;\n var partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n var srcPos = 0, destPos;\n var src = imgData.data;\n var dest = chunkImgData.data;\n var i, j, thisChunkHeight, elemsInThisChunk;\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 var srcLength = src.byteLength;\n var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n var dest32DataLength = dest32.length;\n var fullSrcDiff = (width + 7) >> 3;\n var white = 0xFFFFFFFF;\n var black = IsLittleEndianCached.value ? 0xFF000000 : 0x000000FF;\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight =\n (i < fullChunks) ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n var srcDiff = srcLength - srcPos;\n var k = 0;\n var kEnd = (srcDiff > fullSrcDiff) ? width : srcDiff * 8 - 7;\n var kEndUnrolled = kEnd & ~7;\n var mask = 0;\n var 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\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 ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n ctx.putImageData(chunkImgData, 0, j);\n }\n\n } else if (imgData.kind === ImageKind.RGB_24BPP) {\n // RGB, 24-bits per pixel.\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 ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n }\n\n function putBinaryImageMask(ctx, imgData) {\n var height = imgData.height, width = imgData.width;\n var partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n var srcPos = 0;\n var src = imgData.data;\n var dest = chunkImgData.data;\n\n for (var i = 0; i < totalChunks; i++) {\n var 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 var destPos = 3; // alpha component offset\n for (var j = 0; j < thisChunkHeight; j++) {\n var mask = 0;\n for (var k = 0; k < width; k++) {\n if (!mask) {\n var 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\n function copyCtxState(sourceCtx, destCtx) {\n var properties = ['strokeStyle', 'fillStyle', 'fillRule', 'globalAlpha',\n 'lineWidth', 'lineCap', 'lineJoin', 'miterLimit',\n 'globalCompositeOperation', 'font'];\n for (var i = 0, ii = properties.length; i < ii; i++) {\n var 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\n function 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\n function composeSMaskBackdrop(bytes, r0, g0, b0) {\n var length = bytes.length;\n for (var i = 3; i < length; i += 4) {\n var 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 var 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\n function composeSMaskAlpha(maskData, layerData, transferMap) {\n var length = maskData.length;\n var scale = 1 / 255;\n for (var i = 3; i < length; i += 4) {\n var alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n layerData[i] = (layerData[i] * alpha * scale) | 0;\n }\n }\n\n function composeSMaskLuminosity(maskData, layerData, transferMap) {\n var length = maskData.length;\n for (var i = 3; i < length; i += 4) {\n var y = (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\n function genericComposeSMask(maskCtx, layerCtx, width, height,\n subtype, backdrop, transferMap) {\n var hasBackdrop = !!backdrop;\n var r0 = hasBackdrop ? backdrop[0] : 0;\n var g0 = hasBackdrop ? backdrop[1] : 0;\n var b0 = hasBackdrop ? backdrop[2] : 0;\n\n var composeFn;\n if (subtype === 'Luminosity') {\n composeFn = composeSMaskLuminosity;\n } else {\n composeFn = composeSMaskAlpha;\n }\n\n // processing image in chunks to save memory\n var PIXELS_TO_PROCESS = 1048576;\n var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n for (var row = 0; row < height; row += chunkSize) {\n var chunkHeight = Math.min(chunkSize, height - row);\n var maskData = maskCtx.getImageData(0, row, width, chunkHeight);\n var layerData = layerCtx.getImageData(0, row, width, chunkHeight);\n\n if (hasBackdrop) {\n composeSMaskBackdrop(maskData.data, r0, g0, b0);\n }\n composeFn(maskData.data, layerData.data, transferMap);\n\n maskCtx.putImageData(layerData, 0, row);\n }\n }\n\n function composeSMask(ctx, smask, layerCtx) {\n var mask = smask.canvas;\n var maskCtx = smask.context;\n\n ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY,\n smask.offsetX, smask.offsetY);\n\n var backdrop = smask.backdrop || null;\n if (!smask.transferMap && WebGLUtils.isEnabled) {\n var composed = WebGLUtils.composeSMask(layerCtx.canvas, mask,\n { subtype: smask.subtype, backdrop, });\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(composed, smask.offsetX, smask.offsetY);\n return;\n }\n genericComposeSMask(maskCtx, layerCtx, mask.width, mask.height,\n smask.subtype, backdrop, smask.transferMap);\n ctx.drawImage(mask, 0, 0);\n }\n\n var LINE_CAP_STYLES = ['butt', 'round', 'square'];\n var LINE_JOIN_STYLES = ['miter', 'round', 'bevel'];\n var NORMAL_CLIP = {};\n var EO_CLIP = {};\n\n CanvasGraphics.prototype = {\n\n beginDrawing({ transform, viewport, transparency,\n background = null, }) {\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 var width = this.ctx.canvas.width;\n var 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 var transparentCanvas = this.cachedCanvases.getCanvas(\n 'transparent', width, height, true);\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,\n 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 }\n this.ctx.transform.apply(this.ctx, viewport.transform);\n\n this.baseTransform = this.ctx.mozCurrentTransform.slice();\n\n if (this.imageLayer) {\n this.imageLayer.beginLayout();\n }\n },\n\n executeOperatorList: function CanvasGraphics_executeOperatorList(\n operatorList,\n executionStartIdx, continueCallback,\n stepper) {\n var argsArray = operatorList.argsArray;\n var fnArray = operatorList.fnArray;\n var i = executionStartIdx || 0;\n var argsArrayLen = argsArray.length;\n\n // Sometimes the OperatorList to execute is empty.\n if (argsArrayLen === i) {\n return i;\n }\n\n var chunkOperations = (argsArrayLen - i > EXECUTION_STEPS &&\n typeof continueCallback === 'function');\n var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n var steps = 0;\n\n var commonObjs = this.commonObjs;\n var objs = this.objs;\n var 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 var deps = argsArray[i];\n for (var n = 0, nn = deps.length; n < nn; n++) {\n var depObjId = deps[n];\n var common = depObjId[0] === 'g' && depObjId[1] === '_';\n var objsPool = common ? commonObjs : objs;\n\n // If the promise isn't resolved yet, add the continueCallback\n // to the promise and bail out.\n if (!objsPool.isResolved(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: function CanvasGraphics_endDrawing() {\n // Finishing all opened operations such as SMask group painting.\n if (this.current.activeSMask !== null) {\n this.endSMaskGroup();\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 WebGLUtils.clear();\n\n if (this.imageLayer) {\n this.imageLayer.endLayout();\n }\n },\n\n // Graphics state\n setLineWidth: function CanvasGraphics_setLineWidth(width) {\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n },\n setLineCap: function CanvasGraphics_setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n },\n setLineJoin: function CanvasGraphics_setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n },\n setMiterLimit: function CanvasGraphics_setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n },\n setDash: function CanvasGraphics_setDash(dashArray, dashPhase) {\n var ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n },\n setRenderingIntent: function CanvasGraphics_setRenderingIntent(intent) {\n // Maybe if we one day fully support color spaces this will be important\n // for now we can ignore.\n // TODO set rendering intent?\n },\n setFlatness: function CanvasGraphics_setFlatness(flatness) {\n // There's no way to control this with canvas, but we can safely ignore.\n // TODO set flatness?\n },\n setGState: function CanvasGraphics_setGState(states) {\n for (var i = 0, ii = states.length; i < ii; i++) {\n var state = states[i];\n var key = state[0];\n var 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 if (this.current.activeSMask) {\n // If SMask is currrenly used, it needs to be suspended or\n // finished. Suspend only makes sense when at least one save()\n // was performed and state needs to be reverted on restore().\n if (this.stateStack.length > 0 &&\n (this.stateStack[this.stateStack.length - 1].activeSMask ===\n this.current.activeSMask)) {\n this.suspendSMaskGroup();\n } else {\n this.endSMaskGroup();\n }\n }\n this.current.activeSMask = value ? this.tempSMask : null;\n if (this.current.activeSMask) {\n this.beginSMaskGroup();\n }\n this.tempSMask = null;\n break;\n }\n }\n },\n beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() {\n\n var activeSMask = this.current.activeSMask;\n var drawnWidth = activeSMask.canvas.width;\n var drawnHeight = activeSMask.canvas.height;\n var cacheId = 'smaskGroupAt' + this.groupLevel;\n var scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId, drawnWidth, drawnHeight, true);\n\n var currentCtx = this.ctx;\n var currentTransform = currentCtx.mozCurrentTransform;\n this.ctx.save();\n\n var groupCtx = scratchCanvas.context;\n groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY);\n groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY);\n groupCtx.transform.apply(groupCtx, currentTransform);\n\n activeSMask.startTransformInverse = groupCtx.mozCurrentTransformInverse;\n\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 suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n // Similar to endSMaskGroup, the intermediate canvas has to be composed\n // and future ctx state restored.\n var groupCtx = this.ctx;\n this.groupLevel--;\n this.ctx = this.groupStack.pop();\n\n composeSMask(this.ctx, this.current.activeSMask, groupCtx);\n this.ctx.restore();\n this.ctx.save(); // save is needed since SMask will be resumed.\n copyCtxState(groupCtx, this.ctx);\n\n // Saving state for resuming.\n this.current.resumeSMaskCtx = groupCtx;\n // Transform was changed in the SMask canvas, reflecting this change on\n // this.ctx.\n var deltaTransform = Util.transform(\n this.current.activeSMask.startTransformInverse,\n groupCtx.mozCurrentTransform);\n this.ctx.transform.apply(this.ctx, deltaTransform);\n\n // SMask was composed, the results at the groupCtx can be cleared.\n groupCtx.save();\n groupCtx.setTransform(1, 0, 0, 1, 0, 0);\n groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height);\n groupCtx.restore();\n },\n resumeSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n // Resuming state saved by suspendSMaskGroup. We don't need to restore\n // any groupCtx state since restore() command (the only caller) will do\n // that for us. See also beginSMaskGroup.\n var groupCtx = this.current.resumeSMaskCtx;\n var currentCtx = this.ctx;\n this.ctx = groupCtx;\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n },\n endSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n var groupCtx = this.ctx;\n this.groupLevel--;\n this.ctx = this.groupStack.pop();\n\n composeSMask(this.ctx, this.current.activeSMask, groupCtx);\n this.ctx.restore();\n copyCtxState(groupCtx, this.ctx);\n // Transform was changed in the SMask canvas, reflecting this change on\n // this.ctx.\n var deltaTransform = Util.transform(\n this.current.activeSMask.startTransformInverse,\n groupCtx.mozCurrentTransform);\n this.ctx.transform.apply(this.ctx, deltaTransform);\n },\n save: function CanvasGraphics_save() {\n this.ctx.save();\n var old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n this.current.resumeSMaskCtx = null;\n },\n restore: function CanvasGraphics_restore() {\n // SMask was suspended, we just need to resume it.\n if (this.current.resumeSMaskCtx) {\n this.resumeSMaskGroup();\n }\n // SMask has to be finished once there is no states that are using the\n // same SMask.\n if (this.current.activeSMask !== null && (this.stateStack.length === 0 ||\n this.stateStack[this.stateStack.length - 1].activeSMask !==\n this.current.activeSMask)) {\n this.endSMaskGroup();\n }\n\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n this.ctx.restore();\n\n // Ensure that the clipping path is reset (fixes issue6413.pdf).\n this.pendingClip = null;\n\n this.cachedGetSinglePixelWidth = null;\n }\n },\n transform: function CanvasGraphics_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: function CanvasGraphics_constructPath(ops, args) {\n var ctx = this.ctx;\n var current = this.current;\n var x = current.x, y = current.y;\n for (var 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 var width = args[j++];\n var height = args[j++];\n if (width === 0) {\n width = this.getSinglePixelWidth();\n }\n if (height === 0) {\n height = this.getSinglePixelWidth();\n }\n var xw = x + width;\n var yh = y + height;\n this.ctx.moveTo(x, y);\n this.ctx.lineTo(xw, y);\n this.ctx.lineTo(xw, yh);\n this.ctx.lineTo(x, yh);\n this.ctx.lineTo(x, y);\n this.ctx.closePath();\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n break;\n case OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3],\n x, y);\n j += 6;\n break;\n case OPS.curveTo2:\n ctx.bezierCurveTo(x, y, args[j], args[j + 1],\n args[j + 2], args[j + 3]);\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 ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n j += 4;\n break;\n case OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n current.setCurrentPoint(x, y);\n },\n closePath: function CanvasGraphics_closePath() {\n this.ctx.closePath();\n },\n stroke: function CanvasGraphics_stroke(consumePath) {\n consumePath = typeof consumePath !== 'undefined' ? consumePath : true;\n var ctx = this.ctx;\n var strokeColor = this.current.strokeColor;\n // Prevent drawing too thin lines by enforcing a minimum line width.\n ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR,\n this.current.lineWidth);\n // For stroke we want to temporarily change the global alpha to the\n // stroking alpha.\n ctx.globalAlpha = this.current.strokeAlpha;\n if (strokeColor && strokeColor.hasOwnProperty('type') &&\n strokeColor.type === 'Pattern') {\n // for patterns, we transform to pattern space, calculate\n // the pattern, call stroke, and restore to user space\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this);\n ctx.stroke();\n ctx.restore();\n } else {\n ctx.stroke();\n }\n if (consumePath) {\n this.consumePath();\n }\n // Restore the global alpha to the fill alpha\n ctx.globalAlpha = this.current.fillAlpha;\n },\n closeStroke: function CanvasGraphics_closeStroke() {\n this.closePath();\n this.stroke();\n },\n fill: function CanvasGraphics_fill(consumePath) {\n consumePath = typeof consumePath !== 'undefined' ? consumePath : true;\n var ctx = this.ctx;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n var needRestore = false;\n\n if (isPatternFill) {\n ctx.save();\n if (this.baseTransform) {\n ctx.setTransform.apply(ctx, this.baseTransform);\n }\n ctx.fillStyle = fillColor.getPattern(ctx, this);\n needRestore = true;\n }\n\n if (this.pendingEOFill) {\n ctx.fill('evenodd');\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath();\n }\n },\n eoFill: function CanvasGraphics_eoFill() {\n this.pendingEOFill = true;\n this.fill();\n },\n fillStroke: function CanvasGraphics_fillStroke() {\n this.fill(false);\n this.stroke(false);\n\n this.consumePath();\n },\n eoFillStroke: function CanvasGraphics_eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n },\n closeFillStroke: function CanvasGraphics_closeFillStroke() {\n this.closePath();\n this.fillStroke();\n },\n closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n },\n endPath: function CanvasGraphics_endPath() {\n this.consumePath();\n },\n\n // Clipping\n clip: function CanvasGraphics_clip() {\n this.pendingClip = NORMAL_CLIP;\n },\n eoClip: function CanvasGraphics_eoClip() {\n this.pendingClip = EO_CLIP;\n },\n\n // Text\n beginText: function CanvasGraphics_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 endText: function CanvasGraphics_endText() {\n var paths = this.pendingTextPaths;\n var ctx = this.ctx;\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n\n ctx.save();\n ctx.beginPath();\n for (var i = 0; i < paths.length; i++) {\n var 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 setCharSpacing: function CanvasGraphics_setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n },\n setWordSpacing: function CanvasGraphics_setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n },\n setHScale: function CanvasGraphics_setHScale(scale) {\n this.current.textHScale = scale / 100;\n },\n setLeading: function CanvasGraphics_setLeading(leading) {\n this.current.leading = -leading;\n },\n setFont: function CanvasGraphics_setFont(fontRefName, size) {\n var fontObj = this.commonObjs.get(fontRefName);\n var current = this.current;\n\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n\n current.fontMatrix = (fontObj.fontMatrix ?\n 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 ||\n 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 var name = fontObj.loadedName || 'sans-serif';\n var bold = fontObj.black ? '900' : (fontObj.bold ? 'bold' : 'normal');\n var italic = fontObj.italic ? 'italic' : 'normal';\n var 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 var browserFontSize = size < MIN_FONT_SIZE ? MIN_FONT_SIZE :\n size > MAX_FONT_SIZE ? MAX_FONT_SIZE : size;\n this.current.fontSizeScale = size / browserFontSize;\n\n var rule = italic + ' ' + bold + ' ' + browserFontSize + 'px ' + typeface;\n this.ctx.font = rule;\n },\n setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n },\n setTextRise: function CanvasGraphics_setTextRise(rise) {\n this.current.textRise = rise;\n },\n moveText: function CanvasGraphics_moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n },\n setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n },\n setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.sqrt(a * a + b * b);\n\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n },\n nextLine: function CanvasGraphics_nextLine() {\n this.moveText(0, this.current.leading);\n },\n\n paintChar: function CanvasGraphics_paintChar(character, x, y) {\n var ctx = this.ctx;\n var current = this.current;\n var font = current.font;\n var textRenderingMode = current.textRenderingMode;\n var fontSize = current.fontSize / current.fontSizeScale;\n var fillStrokeMode = textRenderingMode &\n TextRenderingMode.FILL_STROKE_MASK;\n var isAddToPathSet = !!(textRenderingMode &\n TextRenderingMode.ADD_TO_PATH_FLAG);\n\n var addToPath;\n if (font.disableFontFace || isAddToPathSet) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n\n if (font.disableFontFace) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n if (fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fill();\n }\n if (fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.stroke();\n }\n ctx.restore();\n } else {\n if (fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n }\n if (fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.strokeText(character, x, y);\n }\n }\n\n if (isAddToPathSet) {\n var 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 var ctx = this.canvasFactory.create(10, 10).context;\n ctx.scale(1.5, 1);\n ctx.fillText('I', 0, 10);\n var data = ctx.getImageData(0, 0, 10, 10).data;\n var enabled = false;\n for (var 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: function CanvasGraphics_showText(glyphs) {\n var current = this.current;\n var font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n\n var fontSize = current.fontSize;\n if (fontSize === 0) {\n return;\n }\n\n var ctx = this.ctx;\n var fontSizeScale = current.fontSizeScale;\n var charSpacing = current.charSpacing;\n var wordSpacing = current.wordSpacing;\n var fontDirection = current.fontDirection;\n var textHScale = current.textHScale * fontDirection;\n var glyphsLength = glyphs.length;\n var vertical = font.vertical;\n var spacingDir = vertical ? 1 : -1;\n var defaultVMetrics = font.defaultVMetrics;\n var widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n var simpleFillText =\n current.textRenderingMode === TextRenderingMode.FILL &&\n !font.disableFontFace;\n\n ctx.save();\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n\n if (current.patternFill) {\n // TODO: Some shading patterns are not applied correctly to text,\n // e.g. issues 3988 and 5432, and ShowText-ShadingPattern.pdf.\n ctx.fillStyle = current.fillColor.getPattern(ctx, this);\n }\n\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n\n var lineWidth = current.lineWidth;\n var scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n var fillStrokeMode = current.textRenderingMode &\n TextRenderingMode.FILL_STROKE_MASK;\n if (fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n this.cachedGetSinglePixelWidth = null;\n lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR;\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 var x = 0, i;\n for (i = 0; i < glyphsLength; ++i) {\n var glyph = glyphs[i];\n if (isNum(glyph)) {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n\n var restoreNeeded = false;\n var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n var character = glyph.fontChar;\n var accent = glyph.accent;\n var scaledX, scaledY, scaledAccentX, scaledAccentY;\n var width = glyph.width;\n if (vertical) {\n var vmetric, vx, vy;\n vmetric = glyph.vmetric || defaultVMetrics;\n vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n vx = -vx * widthAdvanceScale;\n 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 var measuredWidth = ctx.measureText(character).width * 1000 /\n fontSize * fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n var characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 *\n 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 (glyph.isInFont || font.missingFile) {\n if (simpleFillText && !accent) {\n // common case\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY);\n if (accent) {\n scaledAccentX = scaledX + accent.offset.x / fontSizeScale;\n scaledAccentY = scaledY - accent.offset.y / fontSizeScale;\n this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY);\n }\n }\n }\n\n var charWidth = width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x * textHScale;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n },\n\n showType3Text: function CanvasGraphics_showType3Text(glyphs) {\n // Type3 fonts - each glyph is a \"mini-PDF\"\n var ctx = this.ctx;\n var current = this.current;\n var font = current.font;\n var fontSize = current.fontSize;\n var fontDirection = current.fontDirection;\n var spacingDir = font.vertical ? 1 : -1;\n var charSpacing = current.charSpacing;\n var wordSpacing = current.wordSpacing;\n var textHScale = current.textHScale * fontDirection;\n var fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n var glyphsLength = glyphs.length;\n var isTextInvisible =\n current.textRenderingMode === TextRenderingMode.INVISIBLE;\n var 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 var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n var operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\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 var 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: function CanvasGraphics_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 setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(xWidth,\n yWidth,\n llx,\n lly,\n urx,\n 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: function CanvasGraphics_getColorN_Pattern(IR) {\n var pattern;\n if (IR[0] === 'TilingPattern') {\n var color = IR[1];\n var baseTransform = this.baseTransform ||\n this.ctx.mozCurrentTransform.slice();\n var canvasGraphicsFactory = {\n createCanvasGraphics: (ctx) => {\n return new CanvasGraphics(ctx, this.commonObjs, this.objs,\n this.canvasFactory);\n },\n };\n pattern = new TilingPattern(IR, color, this.ctx, canvasGraphicsFactory,\n baseTransform);\n } else {\n pattern = getShadingPatternFromIR(IR);\n }\n return pattern;\n },\n setStrokeColorN: function CanvasGraphics_setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n },\n setFillColorN: function CanvasGraphics_setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n },\n setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) {\n var color = Util.makeCssRgb(r, g, b);\n this.ctx.strokeStyle = color;\n this.current.strokeColor = color;\n },\n setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) {\n var color = Util.makeCssRgb(r, g, b);\n this.ctx.fillStyle = color;\n this.current.fillColor = color;\n this.current.patternFill = false;\n },\n\n shadingFill: function CanvasGraphics_shadingFill(patternIR) {\n var ctx = this.ctx;\n\n this.save();\n var pattern = getShadingPatternFromIR(patternIR);\n ctx.fillStyle = pattern.getPattern(ctx, this, true);\n\n var inv = ctx.mozCurrentTransformInverse;\n if (inv) {\n var canvas = ctx.canvas;\n var width = canvas.width;\n var height = canvas.height;\n\n var bl = Util.applyTransform([0, 0], inv);\n var br = Util.applyTransform([0, height], inv);\n var ul = Util.applyTransform([width, 0], inv);\n var ur = Util.applyTransform([width, height], inv);\n\n var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n var 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.restore();\n },\n\n // Images\n beginInlineImage: function CanvasGraphics_beginInlineImage() {\n throw new Error('Should not call beginInlineImage');\n },\n beginImageData: function CanvasGraphics_beginImageData() {\n throw new Error('Should not call beginImageData');\n },\n\n paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix,\n bbox) {\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n\n if (isArray(matrix) && matrix.length === 6) {\n this.transform.apply(this, matrix);\n }\n\n this.baseTransform = this.ctx.mozCurrentTransform;\n\n if (isArray(bbox) && bbox.length === 4) {\n var width = bbox[2] - bbox[0];\n var height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.clip();\n this.endPath();\n }\n },\n\n paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() {\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n },\n\n beginGroup: function CanvasGraphics_beginGroup(group) {\n this.save();\n var 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 var 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 var bounds = Util.getAxialAlignedBoundingBox(\n group.bbox,\n currentCtx.mozCurrentTransform);\n // Clip the bounding box to the current canvas.\n var canvasBounds = [0,\n 0,\n currentCtx.canvas.width,\n currentCtx.canvas.height];\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 var offsetX = Math.floor(bounds[0]);\n var offsetY = Math.floor(bounds[1]);\n var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n var scaleX = 1, 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 var 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 var scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId, drawnWidth, drawnHeight, true);\n var 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 }\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 // Reseting mask state, masks will be applied on restore of the group.\n this.current.activeSMask = null;\n },\n\n endGroup: function CanvasGraphics_endGroup(group) {\n this.groupLevel--;\n var groupCtx = this.ctx;\n this.ctx = this.groupStack.pop();\n // Turn off image smoothing to avoid sub pixel interpolation which can\n // look kind of blurry for some pdfs.\n if (this.ctx.imageSmoothingEnabled !== undefined) {\n this.ctx.imageSmoothingEnabled = false;\n } else {\n this.ctx.mozImageSmoothingEnabled = false;\n }\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n } else {\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n }\n this.restore();\n },\n\n beginAnnotations: function CanvasGraphics_beginAnnotations() {\n this.save();\n if (this.baseTransform) {\n this.ctx.setTransform.apply(this.ctx, this.baseTransform);\n }\n },\n\n endAnnotations: function CanvasGraphics_endAnnotations() {\n this.restore();\n },\n\n beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform,\n matrix) {\n this.save();\n resetCtxToDefault(this.ctx);\n this.current = new CanvasExtraState();\n\n if (isArray(rect) && rect.length === 4) {\n var width = rect[2] - rect[0];\n var height = rect[3] - rect[1];\n this.ctx.rect(rect[0], rect[1], width, height);\n this.clip();\n this.endPath();\n }\n\n this.transform.apply(this, transform);\n this.transform.apply(this, matrix);\n },\n\n endAnnotation: function CanvasGraphics_endAnnotation() {\n this.restore();\n },\n\n paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) {\n var domImage = this.objs.get(objId);\n if (!domImage) {\n warn('Dependent image isn\\'t ready yet');\n return;\n }\n\n this.save();\n\n var ctx = this.ctx;\n // scale the image to the unit square\n ctx.scale(1 / w, -1 / h);\n\n ctx.drawImage(domImage, 0, 0, domImage.width, domImage.height,\n 0, -h, w, h);\n if (this.imageLayer) {\n var currentTransform = ctx.mozCurrentTransformInverse;\n var position = this.getCanvasPosition(0, 0);\n this.imageLayer.appendImage({\n objId,\n left: position[0],\n top: position[1],\n width: w / currentTransform[0],\n height: h / currentTransform[3],\n });\n }\n this.restore();\n },\n\n paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(img) {\n var ctx = this.ctx;\n var width = img.width, height = img.height;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n\n var 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 =\n compileType3Glyph({ data: img.data, width, height, });\n } else {\n glyph.compiled = null;\n }\n }\n\n if (glyph && glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\n\n var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas',\n width, height);\n var maskCtx = maskCanvas.context;\n maskCtx.save();\n\n putBinaryImageMask(maskCtx, img);\n\n maskCtx.globalCompositeOperation = 'source-in';\n\n maskCtx.fillStyle = isPatternFill ?\n fillColor.getPattern(maskCtx, this) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n\n maskCtx.restore();\n\n this.paintInlineImageXObject(maskCanvas.canvas);\n },\n\n paintImageMaskXObjectRepeat:\n function CanvasGraphics_paintImageMaskXObjectRepeat(imgData, scaleX,\n scaleY, positions) {\n var width = imgData.width;\n var height = imgData.height;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n\n var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas',\n width, height);\n var maskCtx = maskCanvas.context;\n maskCtx.save();\n\n putBinaryImageMask(maskCtx, imgData);\n\n maskCtx.globalCompositeOperation = 'source-in';\n\n maskCtx.fillStyle = isPatternFill ?\n fillColor.getPattern(maskCtx, this) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n\n maskCtx.restore();\n\n var ctx = this.ctx;\n for (var i = 0, ii = positions.length; i < ii; i += 2) {\n ctx.save();\n ctx.transform(scaleX, 0, 0, scaleY, positions[i], positions[i + 1]);\n ctx.scale(1, -1);\n ctx.drawImage(maskCanvas.canvas, 0, 0, width, height,\n 0, -1, 1, 1);\n ctx.restore();\n }\n },\n\n paintImageMaskXObjectGroup:\n function CanvasGraphics_paintImageMaskXObjectGroup(images) {\n var ctx = this.ctx;\n\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n for (var i = 0, ii = images.length; i < ii; i++) {\n var image = images[i];\n var width = image.width, height = image.height;\n\n var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas',\n width, height);\n var 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(maskCtx, this) : 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,\n 0, -1, 1, 1);\n ctx.restore();\n }\n },\n\n paintImageXObject: function CanvasGraphics_paintImageXObject(objId) {\n var imgData = 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:\n function CanvasGraphics_paintImageXObjectRepeat(objId, scaleX, scaleY,\n positions) {\n var imgData = this.objs.get(objId);\n if (!imgData) {\n warn('Dependent image isn\\'t ready yet');\n return;\n }\n\n var width = imgData.width;\n var height = imgData.height;\n var map = [];\n for (var i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({ transform: [scaleX, 0, 0, scaleY, positions[i],\n positions[i + 1]], x: 0, y: 0, w: width, h: height, });\n }\n this.paintInlineImageXObjectGroup(imgData, map);\n },\n\n paintInlineImageXObject:\n function CanvasGraphics_paintInlineImageXObject(imgData) {\n var width = imgData.width;\n var height = imgData.height;\n var ctx = this.ctx;\n\n this.save();\n // scale the image to the unit square\n ctx.scale(1 / width, -1 / height);\n\n var currentTransform = ctx.mozCurrentTransformInverse;\n var a = currentTransform[0], b = currentTransform[1];\n var widthScale = Math.max(Math.sqrt(a * a + b * b), 1);\n var c = currentTransform[2], d = currentTransform[3];\n var heightScale = Math.max(Math.sqrt(c * c + d * d), 1);\n\n var imgToPaint, tmpCanvas;\n // instanceof HTMLElement does not work in jsdom node.js module\n if (imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n tmpCanvas = this.cachedCanvases.getCanvas('inlineImage',\n width, height);\n var tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = tmpCanvas.canvas;\n }\n\n var paintWidth = width, paintHeight = height;\n var tmpCanvasId = 'prescale1';\n // Vertial or horizontal scaling shall not be more than 2 to not loose the\n // pixels during drawImage operation, painting on the temporary canvas(es)\n // that are twice smaller in size\n while ((widthScale > 2 && paintWidth > 1) ||\n (heightScale > 2 && paintHeight > 1)) {\n var newWidth = paintWidth, 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(tmpCanvasId,\n newWidth, newHeight);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight,\n 0, 0, newWidth, newHeight);\n imgToPaint = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === 'prescale1' ? 'prescale2' : 'prescale1';\n }\n ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight,\n 0, -height, width, height);\n\n if (this.imageLayer) {\n var position = this.getCanvasPosition(0, -height);\n this.imageLayer.appendImage({\n imgData,\n left: position[0],\n top: position[1],\n width: width / currentTransform[0],\n height: height / currentTransform[3],\n });\n }\n this.restore();\n },\n\n paintInlineImageXObjectGroup:\n function CanvasGraphics_paintInlineImageXObjectGroup(imgData, map) {\n var ctx = this.ctx;\n var w = imgData.width;\n var h = imgData.height;\n\n var tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', w, h);\n var tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n\n for (var i = 0, ii = map.length; i < ii; i++) {\n var entry = map[i];\n ctx.save();\n ctx.transform.apply(ctx, entry.transform);\n ctx.scale(1, -1);\n ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h,\n 0, -1, 1, 1);\n if (this.imageLayer) {\n var 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 },\n\n paintSolidColorImageMask:\n function CanvasGraphics_paintSolidColorImageMask() {\n this.ctx.fillRect(0, 0, 1, 1);\n },\n\n paintXObject: function CanvasGraphics_paintXObject() {\n warn('Unsupported \\'paintXObject\\' command.');\n },\n\n // Marked content\n\n markPoint: function CanvasGraphics_markPoint(tag) {\n // TODO Marked content.\n },\n markPointProps: function CanvasGraphics_markPointProps(tag, properties) {\n // TODO Marked content.\n },\n beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) {\n // TODO Marked content.\n },\n beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(\n tag, properties) {\n // TODO Marked content.\n },\n endMarkedContent: function CanvasGraphics_endMarkedContent() {\n // TODO Marked content.\n },\n\n // Compatibility\n\n beginCompat: function CanvasGraphics_beginCompat() {\n // TODO ignore undefined operators (should we do that anyway?)\n },\n endCompat: function CanvasGraphics_endCompat() {\n // TODO stop ignoring undefined operators\n },\n\n // Helper functions\n\n consumePath: function CanvasGraphics_consumePath() {\n var 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 ctx.beginPath();\n },\n getSinglePixelWidth: function CanvasGraphics_getSinglePixelWidth(scale) {\n if (this.cachedGetSinglePixelWidth === null) {\n // NOTE: The `save` and `restore` commands used below is a workaround\n // that is necessary in order to prevent `mozCurrentTransformInverse`\n // from intermittently returning incorrect values in Firefox, see:\n // https://github.com/mozilla/pdf.js/issues/7188.\n this.ctx.save();\n var inverse = this.ctx.mozCurrentTransformInverse;\n this.ctx.restore();\n // max of the current horizontal and vertical scale\n this.cachedGetSinglePixelWidth = Math.sqrt(Math.max(\n (inverse[0] * inverse[0] + inverse[1] * inverse[1]),\n (inverse[2] * inverse[2] + inverse[3] * inverse[3])));\n }\n return this.cachedGetSinglePixelWidth;\n },\n getCanvasPosition: function CanvasGraphics_getCanvasPosition(x, y) {\n var 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\n for (var op in OPS) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n\n return CanvasGraphics;\n})();\n\nexport {\n CanvasGraphics,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/canvas.js","/* 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, bytesToString, isEvalSupported, shadow, string32, warn\n} from '../shared/util';\n\nfunction FontLoader(docId) {\n this.docId = docId;\n this.styleElement = null;\n if (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('MOZCENTRAL')) {\n this.nativeFontFaces = [];\n this.loadTestFontId = 0;\n this.loadingContext = {\n requests: [],\n nextRequestId: 0,\n };\n }\n}\nFontLoader.prototype = {\n insertRule: function fontLoaderInsertRule(rule) {\n var styleElement = this.styleElement;\n if (!styleElement) {\n styleElement = this.styleElement = document.createElement('style');\n styleElement.id = 'PDFJS_FONT_STYLE_TAG_' + this.docId;\n document.documentElement.getElementsByTagName('head')[0].appendChild(\n styleElement);\n }\n\n var styleSheet = styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n },\n\n clear: function fontLoaderClear() {\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 if (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('MOZCENTRAL')) {\n this.nativeFontFaces.forEach(function(nativeFontFace) {\n document.fonts.delete(nativeFontFace);\n });\n this.nativeFontFaces.length = 0;\n }\n },\n};\n\nif (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('MOZCENTRAL')) {\n var getLoadTestFont = function () {\n // This is a CFF font with 1 glyph for '.' that fills its entire width and\n // height.\n return atob(\n 'T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQ' +\n 'AABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwA' +\n 'AAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbm' +\n 'FtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAA' +\n 'AADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6A' +\n 'ABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAA' +\n 'MQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAA' +\n 'AAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAA' +\n 'AAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQ' +\n 'AAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMA' +\n 'AQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAA' +\n 'EAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAA' +\n 'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAA' +\n 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA' +\n 'AAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgc' +\n 'A/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWF' +\n 'hYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQA' +\n 'AAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAg' +\n 'ABAAAAAAAAAAAD6AAAAAAAAA==');\n };\n Object.defineProperty(FontLoader.prototype, 'loadTestFont', {\n get() {\n return shadow(this, 'loadTestFont', getLoadTestFont());\n },\n configurable: true,\n });\n\n FontLoader.prototype.addNativeFontFace =\n function fontLoader_addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.push(nativeFontFace);\n document.fonts.add(nativeFontFace);\n };\n\n FontLoader.prototype.bind = function fontLoaderBind(fonts, callback) {\n var rules = [];\n var fontsToLoad = [];\n var fontLoadPromises = [];\n var getNativeFontPromise = function(nativeFontFace) {\n // Return a promise that is always fulfilled, even when the font fails to\n // load.\n return nativeFontFace.loaded.catch(function(e) {\n warn('Failed to load font \"' + nativeFontFace.family + '\": ' + e);\n });\n };\n // Firefox Font Loading API does not work with mozPrintCallback --\n // disabling it in this case.\n var isFontLoadingAPISupported = FontLoader.isFontLoadingAPISupported &&\n !FontLoader.isSyncFontLoadingSupported;\n for (var i = 0, ii = fonts.length; i < ii; i++) {\n var font = fonts[i];\n\n // Add the font to the DOM only once or skip if the font\n // is already loaded.\n if (font.attached || font.loading === false) {\n continue;\n }\n font.attached = true;\n\n if (isFontLoadingAPISupported) {\n var nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n fontLoadPromises.push(getNativeFontPromise(nativeFontFace));\n }\n } else {\n var rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n rules.push(rule);\n fontsToLoad.push(font);\n }\n }\n }\n\n var request = this.queueLoadingCallback(callback);\n if (isFontLoadingAPISupported) {\n Promise.all(fontLoadPromises).then(function() {\n request.complete();\n });\n } else if (rules.length > 0 && !FontLoader.isSyncFontLoadingSupported) {\n this.prepareFontLoadEvent(rules, fontsToLoad, request);\n } else {\n request.complete();\n }\n };\n\n FontLoader.prototype.queueLoadingCallback =\n function FontLoader_queueLoadingCallback(callback) {\n function LoadLoader_completeRequest() {\n assert(!request.end, 'completeRequest() cannot be called twice');\n request.end = Date.now();\n\n // sending all completed requests in order how they were queued\n while (context.requests.length > 0 && context.requests[0].end) {\n var otherRequest = context.requests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n\n var context = this.loadingContext;\n var requestId = 'pdfjs-font-loading-' + (context.nextRequestId++);\n var request = {\n id: requestId,\n complete: LoadLoader_completeRequest,\n callback,\n started: Date.now(),\n };\n context.requests.push(request);\n return request;\n };\n\n FontLoader.prototype.prepareFontLoadEvent =\n function fontLoaderPrepareFontLoadEvent(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\n // ready. It's assumed fonts are loaded in order, so add a known test\n // font after the desired fonts and then test for the loading of that\n // test font.\n\n function int32(data, offset) {\n return (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 var chunk1 = s.substr(0, offset);\n var chunk2 = s.substr(offset + remove);\n return chunk1 + insert + chunk2;\n }\n\n var i, ii;\n\n // The temporary canvas is used to determine if fonts are loaded.\n var canvas = document.createElement('canvas');\n canvas.width = 1;\n canvas.height = 1;\n var ctx = canvas.getContext('2d');\n\n var 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 var 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 var 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 var data = this.loadTestFont;\n var COMMENT_OFFSET = 976; // has to be on 4 byte boundary (for checksum)\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length,\n loadTestFontId);\n // CFF checksum is important for IE, adjusting it\n var CFF_CHECKSUM_OFFSET = 16;\n var XXXX_VALUE = 0x58585858; // the \"comment\" filled with 'X'\n var 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) { // align to 4 bytes boundary\n checksum = (checksum - XXXX_VALUE +\n int32(loadTestFontId + 'XXX', i)) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n\n var url = 'url(data:font/opentype;base64,' + btoa(data) + ');';\n var rule = '@font-face { font-family:\"' + loadTestFontId + '\";src:' +\n url + '}';\n this.insertRule(rule);\n\n var names = [];\n for (i = 0, ii = fonts.length; i < ii; i++) {\n names.push(fonts[i].loadedName);\n }\n names.push(loadTestFontId);\n\n var div = document.createElement('div');\n div.setAttribute('style',\n 'visibility: hidden;' +\n 'width: 10px; height: 10px;' +\n 'position: absolute; top: 0px; left: 0px;');\n for (i = 0, ii = names.length; i < ii; ++i) {\n var span = document.createElement('span');\n span.textContent = 'Hi';\n span.style.fontFamily = names[i];\n div.appendChild(span);\n }\n document.body.appendChild(div);\n\n isFontReady(loadTestFontId, function() {\n document.body.removeChild(div);\n request.complete();\n });\n /** Hack end */\n };\n} else {\n FontLoader.prototype.bind = function fontLoaderBind(fonts, callback) {\n for (var i = 0, ii = fonts.length; i < ii; i++) {\n var font = fonts[i];\n if (font.attached) {\n continue;\n }\n\n font.attached = true;\n var rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n }\n }\n\n setTimeout(callback);\n };\n}\nif (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('MOZCENTRAL')) {\n FontLoader.isFontLoadingAPISupported = typeof document !== 'undefined' &&\n !!document.fonts;\n}\nif (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('MOZCENTRAL || CHROME')) {\n var isSyncFontLoadingSupported = function isSyncFontLoadingSupported() {\n if (typeof navigator === 'undefined') {\n // node.js - we can pretend sync font loading is supported.\n return true;\n }\n\n var supported = false;\n\n // User agent string sniffing is bad, but there is no reliable way to tell\n // if font is fully loaded and ready to be used with canvas.\n var m = /Mozilla\\/5.0.*?rv:(\\d+).*? Gecko/.exec(navigator.userAgent);\n if (m && m[1] >= 14) {\n supported = true;\n }\n // TODO other browsers\n return supported;\n };\n Object.defineProperty(FontLoader, 'isSyncFontLoadingSupported', {\n get() {\n return shadow(FontLoader, 'isSyncFontLoadingSupported',\n isSyncFontLoadingSupported());\n },\n enumerable: true,\n configurable: true,\n });\n}\n\nvar IsEvalSupportedCached = {\n get value() {\n return shadow(this, 'value', isEvalSupported());\n },\n};\n\nvar FontFaceObject = (function FontFaceObjectClosure() {\n function FontFaceObject(translatedData, options) {\n this.compiledGlyphs = Object.create(null);\n // importing translated data\n for (var i in translatedData) {\n this[i] = translatedData[i];\n }\n this.options = options;\n }\n FontFaceObject.prototype = {\n createNativeFontFace: function FontFaceObject_createNativeFontFace() {\n if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('MOZCENTRAL')) {\n throw new Error('Not implemented: createNativeFontFace');\n }\n\n if (!this.data) {\n return null;\n }\n\n if (this.options.disableFontFace) {\n this.disableFontFace = true;\n return null;\n }\n\n var nativeFontFace = new FontFace(this.loadedName, this.data, {});\n\n if (this.options.fontRegistry) {\n this.options.fontRegistry.registerFont(this);\n }\n return nativeFontFace;\n },\n\n createFontFaceRule: function FontFaceObject_createFontFaceRule() {\n if (!this.data) {\n return null;\n }\n\n if (this.options.disableFontFace) {\n this.disableFontFace = true;\n return null;\n }\n\n var data = bytesToString(new Uint8Array(this.data));\n var fontName = this.loadedName;\n\n // Add the font-face rule to the document\n var url = ('url(data:' + this.mimetype + ';base64,' + btoa(data) + ');');\n var rule = '@font-face { font-family:\"' + fontName + '\";src:' + url + '}';\n\n if (this.options.fontRegistry) {\n this.options.fontRegistry.registerFont(this, url);\n }\n\n return rule;\n },\n\n getPathGenerator:\n function FontFaceObject_getPathGenerator(objs, character) {\n if (!(character in this.compiledGlyphs)) {\n var cmds = objs.get(this.loadedName + '_path_' + character);\n var current, i, len;\n\n // If we can, compile cmds into JS for MAXIMUM SPEED\n if (this.options.isEvalSupported && IsEvalSupportedCached.value) {\n var args, js = '';\n for (i = 0, len = cmds.length; i < len; i++) {\n current = cmds[i];\n\n if (current.args !== undefined) {\n args = current.args.join(',');\n } else {\n args = '';\n }\n\n js += 'c.' + current.cmd + '(' + args + ');\\n';\n }\n // eslint-disable-next-line no-new-func\n this.compiledGlyphs[character] = new Function('c', 'size', js);\n } else {\n // But fall back on using Function.prototype.apply() if we're\n // blocked from using eval() for whatever reason (like CSP policies)\n this.compiledGlyphs[character] = function(c, size) {\n for (i = 0, len = cmds.length; i < len; i++) {\n current = cmds[i];\n\n if (current.cmd === 'scale') {\n current.args = [size, -size];\n }\n\n c[current.cmd].apply(c, current.args);\n }\n };\n }\n }\n return this.compiledGlyphs[character];\n },\n };\n\n return FontFaceObject;\n})();\n\nexport {\n FontFaceObject,\n FontLoader,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/font_loader.js","/* 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, info, isArray, Util } from '../shared/util';\nimport { WebGLUtils } from './webgl';\n\nvar ShadingIRs = {};\n\nShadingIRs.RadialAxial = {\n fromIR: function RadialAxial_fromIR(raw) {\n var type = raw[1];\n var colorStops = raw[2];\n var p0 = raw[3];\n var p1 = raw[4];\n var r0 = raw[5];\n var r1 = raw[6];\n return {\n type: 'Pattern',\n getPattern: function RadialAxial_getPattern(ctx) {\n var grad;\n if (type === 'axial') {\n grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]);\n } else if (type === 'radial') {\n grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1);\n }\n\n for (var i = 0, ii = colorStops.length; i < ii; ++i) {\n var c = colorStops[i];\n grad.addColorStop(c[0], c[1]);\n }\n return grad;\n },\n };\n },\n};\n\nvar createMeshCanvas = (function createMeshCanvasClosure() {\n function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n // Very basic Gouraud-shaded triangle rasterization algorithm.\n var coords = context.coords, colors = context.colors;\n var bytes = data.data, rowSize = data.width * 4;\n var tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1; p1 = p2; p2 = tmp; tmp = c1; c1 = c2; c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2; p2 = p3; p3 = tmp; tmp = c2; c2 = c3; c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1; p1 = p2; p2 = tmp; tmp = c1; c1 = c2; c2 = tmp;\n }\n var x1 = (coords[p1] + context.offsetX) * context.scaleX;\n var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n var x2 = (coords[p2] + context.offsetX) * context.scaleX;\n var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n var x3 = (coords[p3] + context.offsetX) * context.scaleX;\n var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n var c1r = colors[c1], c1g = colors[c1 + 1], c1b = colors[c1 + 2];\n var c2r = colors[c2], c2g = colors[c2 + 1], c2b = colors[c2 + 2];\n var c3r = colors[c3], c3g = colors[c3 + 1], c3b = colors[c3 + 2];\n\n var minY = Math.round(y1), maxY = Math.round(y3);\n var xa, car, cag, cab;\n var xb, cbr, cbg, cbb;\n var k;\n for (var y = minY; y <= maxY; y++) {\n if (y < y2) {\n k = y < y1 ? 0 : y1 === y2 ? 1 : (y1 - y) / (y1 - y2);\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 k = y > y3 ? 1 : y2 === y3 ? 0 : (y2 - y) / (y2 - y3);\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 k = y < y1 ? 0 : y > y3 ? 1 : (y1 - y) / (y1 - y3);\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 var x1_ = Math.round(Math.min(xa, xb));\n var x2_ = Math.round(Math.max(xa, xb));\n var j = rowSize * y + x1_ * 4;\n for (var x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n k = k < 0 ? 0 : k > 1 ? 1 : k;\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\n function drawFigure(data, figure, context) {\n var ps = figure.coords;\n var cs = figure.colors;\n var i, ii;\n switch (figure.type) {\n case 'lattice':\n var verticesPerRow = figure.verticesPerRow;\n var rows = Math.floor(ps.length / verticesPerRow) - 1;\n var cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n var q = i * verticesPerRow;\n for (var j = 0; j < cols; j++, q++) {\n drawTriangle(data, context,\n ps[q], ps[q + 1], ps[q + verticesPerRow],\n cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context,\n ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow],\n cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n break;\n case 'triangles':\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context,\n ps[i], ps[i + 1], ps[i + 2],\n cs[i], cs[i + 1], cs[i + 2]);\n }\n break;\n default:\n throw new Error('illegal figure');\n }\n }\n\n function createMeshCanvas(bounds, combinesScale, coords, colors, figures,\n backgroundColor, cachedCanvases) {\n // we will increase scale on some weird factor to let antialiasing take\n // care of \"rough\" edges\n var EXPECTED_SCALE = 1.1;\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n var 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 var BORDER_SIZE = 2;\n\n var offsetX = Math.floor(bounds[0]);\n var offsetY = Math.floor(bounds[1]);\n var boundsWidth = Math.ceil(bounds[2]) - offsetX;\n var boundsHeight = Math.ceil(bounds[3]) - offsetY;\n\n var width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] *\n EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n var height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] *\n EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n var scaleX = boundsWidth / width;\n var scaleY = boundsHeight / height;\n\n var context = {\n coords,\n colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY,\n };\n\n var paddedWidth = width + BORDER_SIZE * 2;\n var paddedHeight = height + BORDER_SIZE * 2;\n\n var canvas, tmpCanvas, i, ii;\n if (WebGLUtils.isEnabled) {\n canvas = WebGLUtils.drawFigures(width, height, backgroundColor,\n figures, context);\n\n // https://bugzilla.mozilla.org/show_bug.cgi?id=972126\n tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight,\n false);\n tmpCanvas.context.drawImage(canvas, BORDER_SIZE, BORDER_SIZE);\n canvas = tmpCanvas.canvas;\n } else {\n tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight,\n false);\n var tmpCtx = tmpCanvas.context;\n\n var data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n var bytes = data.data;\n for (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 (i = 0; i < figures.length; i++) {\n drawFigure(data, figures[i], context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n canvas = tmpCanvas.canvas;\n }\n\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY,\n };\n }\n return createMeshCanvas;\n})();\n\nShadingIRs.Mesh = {\n fromIR: function Mesh_fromIR(raw) {\n // var type = raw[1];\n var coords = raw[2];\n var colors = raw[3];\n var figures = raw[4];\n var bounds = raw[5];\n var matrix = raw[6];\n // var bbox = raw[7];\n var background = raw[8];\n return {\n type: 'Pattern',\n getPattern: function Mesh_getPattern(ctx, owner, shadingFill) {\n var scale;\n if (shadingFill) {\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 (matrix) {\n var matrixScale = Util.singularValueDecompose2dScale(matrix);\n scale = [scale[0] * matrixScale[0],\n scale[1] * matrixScale[1]];\n }\n }\n\n\n // Rasterizing on the main thread since sending/queue large canvases\n // might cause OOM.\n var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords,\n colors, figures, shadingFill ? null : background,\n owner.cachedCanvases);\n\n if (!shadingFill) {\n ctx.setTransform.apply(ctx, owner.baseTransform);\n if (matrix) {\n ctx.transform.apply(ctx, matrix);\n }\n }\n\n ctx.translate(temporaryPatternCanvas.offsetX,\n temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX,\n temporaryPatternCanvas.scaleY);\n\n return ctx.createPattern(temporaryPatternCanvas.canvas, 'no-repeat');\n },\n };\n },\n};\n\nShadingIRs.Dummy = {\n fromIR: function Dummy_fromIR() {\n return {\n type: 'Pattern',\n getPattern: function Dummy_fromIR_getPattern() {\n return 'hotpink';\n },\n };\n },\n};\n\nfunction getShadingPatternFromIR(raw) {\n var shadingIR = ShadingIRs[raw[0]];\n if (!shadingIR) {\n throw new Error(`Unknown IR type: ${raw[0]}`);\n }\n return shadingIR.fromIR(raw);\n}\n\nvar TilingPattern = (function TilingPatternClosure() {\n var PaintType = {\n COLORED: 1,\n UNCOLORED: 2,\n };\n\n var MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough\n\n function TilingPattern(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.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n this.type = 'Pattern';\n this.ctx = ctx;\n }\n\n TilingPattern.prototype = {\n createPatternCanvas: function TilinPattern_createPatternCanvas(owner) {\n var operatorList = this.operatorList;\n var bbox = this.bbox;\n var xstep = this.xstep;\n var ystep = this.ystep;\n var paintType = this.paintType;\n var tilingType = this.tilingType;\n var color = this.color;\n var canvasGraphicsFactory = this.canvasGraphicsFactory;\n\n info('TilingType: ' + tilingType);\n\n var x0 = bbox[0], y0 = bbox[1], x1 = bbox[2], y1 = bbox[3];\n\n var topLeft = [x0, y0];\n // we want the canvas to be as large as the step size\n var botRight = [x0 + xstep, y0 + ystep];\n\n var width = botRight[0] - topLeft[0];\n var height = botRight[1] - topLeft[1];\n\n // Obtain scale from matrix and current transformation matrix.\n var matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n var curMatrixScale = Util.singularValueDecompose2dScale(\n this.baseTransform);\n var combinedScale = [matrixScale[0] * curMatrixScale[0],\n matrixScale[1] * curMatrixScale[1]];\n\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\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 width = Math.min(Math.ceil(Math.abs(width * combinedScale[0])),\n MAX_PATTERN_SIZE);\n\n height = Math.min(Math.ceil(Math.abs(height * combinedScale[1])),\n MAX_PATTERN_SIZE);\n\n var tmpCanvas = owner.cachedCanvases.getCanvas('pattern',\n width, height, true);\n var tmpCtx = tmpCanvas.context;\n var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n\n this.setFillAndStrokeStyleToContext(tmpCtx, paintType, color);\n\n this.setScale(width, height, xstep, ystep);\n this.transformToScale(graphics);\n\n // transform coordinates to pattern space\n var tmpTranslate = [1, 0, 0, 1, -topLeft[0], -topLeft[1]];\n graphics.transform.apply(graphics, tmpTranslate);\n\n this.clipBbox(graphics, bbox, x0, y0, x1, y1);\n\n graphics.executeOperatorList(operatorList);\n return tmpCanvas.canvas;\n },\n\n setScale: function TilingPattern_setScale(width, height, xstep, ystep) {\n this.scale = [width / xstep, height / ystep];\n },\n\n transformToScale: function TilingPattern_transformToScale(graphics) {\n var scale = this.scale;\n var tmpScale = [scale[0], 0, 0, scale[1], 0, 0];\n graphics.transform.apply(graphics, tmpScale);\n },\n\n scaleToContext: function TilingPattern_scaleToContext() {\n var scale = this.scale;\n this.ctx.scale(1 / scale[0], 1 / scale[1]);\n },\n\n clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) {\n if (isArray(bbox) && bbox.length === 4) {\n var bboxWidth = x1 - x0;\n var bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.clip();\n graphics.endPath();\n }\n },\n\n setFillAndStrokeStyleToContext:\n function setFillAndStrokeStyleToContext(context, paintType, color) {\n switch (paintType) {\n case PaintType.COLORED:\n var ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n break;\n case PaintType.UNCOLORED:\n var cssColor = Util.makeCssRgb(color[0], color[1], color[2]);\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n },\n\n getPattern: function TilingPattern_getPattern(ctx, owner) {\n var temporaryPatternCanvas = this.createPatternCanvas(owner);\n\n ctx = this.ctx;\n ctx.setTransform.apply(ctx, this.baseTransform);\n ctx.transform.apply(ctx, this.matrix);\n this.scaleToContext();\n\n return ctx.createPattern(temporaryPatternCanvas, 'repeat');\n },\n };\n\n return TilingPattern;\n})();\n\nexport {\n getShadingPatternFromIR,\n TilingPattern,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/pattern_helper.js","/* 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';\n\n /** @implements {IPDFStream} */\nvar PDFDataTransportStream = (function PDFDataTransportStreamClosure() {\n function PDFDataTransportStream(params, pdfDataRangeTransport) {\n assert(pdfDataRangeTransport);\n\n this._queuedChunks = [];\n var initialData = params.initialData;\n if (initialData && initialData.length > 0) {\n let buffer = new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isRangeSupported = !(params.disableRange);\n this._isStreamingSupported = !(params.disableStream);\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) => {\n this._onProgress({ loaded, });\n });\n\n this._pdfDataRangeTransport.addProgressiveReadListener((chunk) => {\n this._onReceiveData({ chunk, });\n });\n\n this._pdfDataRangeTransport.transportReady();\n }\n PDFDataTransportStream.prototype = {\n _onReceiveData: function PDFDataTransportStream_onReceiveData(args) {\n let 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 var 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(found);\n }\n },\n\n _onProgress: function PDFDataTransportStream_onDataProgress(evt) {\n if (this._rangeReaders.length > 0) {\n // Reporting to first range reader.\n var firstReader = this._rangeReaders[0];\n if (firstReader.onProgress) {\n firstReader.onProgress({ loaded: evt.loaded, });\n }\n }\n },\n\n _removeRangeReader:\n function PDFDataTransportStream_removeRangeReader(reader) {\n var i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n },\n\n getFullReader: function PDFDataTransportStream_getFullReader() {\n assert(!this._fullRequestReader);\n var queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks);\n },\n\n getRangeReader: function PDFDataTransportStream_getRangeReader(begin, end) {\n var reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n },\n\n cancelAllRequests:\n function PDFDataTransportStream_cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n var readers = this._rangeReaders.slice(0);\n readers.forEach(function (rangeReader) {\n rangeReader.cancel(reason);\n });\n this._pdfDataRangeTransport.abort();\n },\n };\n\n /** @implements {IPDFStreamReader} */\n function PDFDataTransportStreamReader(stream, queuedChunks) {\n this._stream = stream;\n this._done = false;\n this._queuedChunks = queuedChunks || [];\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n\n this.onProgress = null; // not used\n }\n PDFDataTransportStreamReader.prototype = {\n _enqueue: function PDFDataTransportStreamReader_enqueue(chunk) {\n if (this._done) {\n return; // ignore new data\n }\n if (this._requests.length > 0) {\n var requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false, });\n return;\n }\n this._queuedChunks.push(chunk);\n },\n\n get headersReady() {\n return this._headersReady;\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 read: function PDFDataTransportStreamReader_read() {\n if (this._queuedChunks.length > 0) {\n var chunk = this._queuedChunks.shift();\n return Promise.resolve({ value: chunk, done: false, });\n }\n if (this._done) {\n return Promise.resolve({ value: undefined, done: true, });\n }\n var requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n },\n\n cancel: function PDFDataTransportStreamReader_cancel(reason) {\n this._done = true;\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n },\n };\n\n /** @implements {IPDFStreamRangeReader} */\n function PDFDataTransportStreamRangeReader(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 PDFDataTransportStreamRangeReader.prototype = {\n _enqueue: function PDFDataTransportStreamRangeReader_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 var requestsCapability = this._requests.shift();\n requestsCapability.resolve({ value: chunk, done: false, });\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n },\n\n get isStreamingSupported() {\n return false;\n },\n\n read: function PDFDataTransportStreamRangeReader_read() {\n if (this._queuedChunk) {\n let chunk = this._queuedChunk;\n this._queuedChunk = null;\n return Promise.resolve({ value: chunk, done: false, });\n }\n if (this._done) {\n return Promise.resolve({ value: undefined, done: true, });\n }\n var requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n },\n\n cancel: function PDFDataTransportStreamRangeReader_cancel(reason) {\n this._done = true;\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n this._stream._removeRangeReader(this);\n },\n };\n\n return PDFDataTransportStream;\n})();\n\nexport {\n PDFDataTransportStream,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/transport_stream.js","/* 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-unused-vars */\n\n'use strict';\n\nvar pdfjsVersion =\n typeof PDFJSDev !== 'undefined' ? PDFJSDev.eval('BUNDLE_VERSION') : void 0;\nvar pdfjsBuild =\n typeof PDFJSDev !== 'undefined' ? PDFJSDev.eval('BUNDLE_BUILD') : void 0;\n\nvar pdfjsSharedUtil = require('./shared/util.js');\nvar pdfjsDisplayGlobal = require('./display/global.js');\nvar pdfjsDisplayAPI = require('./display/api.js');\nvar pdfjsDisplayTextLayer = require('./display/text_layer.js');\nvar pdfjsDisplayAnnotationLayer = require('./display/annotation_layer.js');\nvar pdfjsDisplayDOMUtils = require('./display/dom_utils.js');\nvar pdfjsDisplaySVG = require('./display/svg.js');\n\nif (typeof PDFJSDev === 'undefined' ||\n !PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n require('./display/network.js');\n}\n\nexports.PDFJS = pdfjsDisplayGlobal.PDFJS;\nexports.build = pdfjsDisplayAPI.build;\nexports.version = pdfjsDisplayAPI.version;\nexports.getDocument = pdfjsDisplayAPI.getDocument;\nexports.LoopbackPort = pdfjsDisplayAPI.LoopbackPort;\nexports.PDFDataRangeTransport = pdfjsDisplayAPI.PDFDataRangeTransport;\nexports.PDFWorker = pdfjsDisplayAPI.PDFWorker;\nexports.renderTextLayer = pdfjsDisplayTextLayer.renderTextLayer;\nexports.AnnotationLayer = pdfjsDisplayAnnotationLayer.AnnotationLayer;\nexports.CustomStyle = pdfjsDisplayDOMUtils.CustomStyle;\nexports.createPromiseCapability = pdfjsSharedUtil.createPromiseCapability;\nexports.PasswordResponses = pdfjsSharedUtil.PasswordResponses;\nexports.InvalidPDFException = pdfjsSharedUtil.InvalidPDFException;\nexports.MissingPDFException = pdfjsSharedUtil.MissingPDFException;\nexports.SVGGraphics = pdfjsDisplaySVG.SVGGraphics;\nexports.NativeImageDecoding = pdfjsSharedUtil.NativeImageDecoding;\nexports.UnexpectedResponseException =\n pdfjsSharedUtil.UnexpectedResponseException;\nexports.OPS = pdfjsSharedUtil.OPS;\nexports.UNSUPPORTED_FEATURES = pdfjsSharedUtil.UNSUPPORTED_FEATURES;\nexports.isValidUrl = pdfjsDisplayDOMUtils.isValidUrl;\nexports.createValidAbsoluteUrl = pdfjsSharedUtil.createValidAbsoluteUrl;\nexports.createObjectURL = pdfjsSharedUtil.createObjectURL;\nexports.removeNullCharacters = pdfjsSharedUtil.removeNullCharacters;\nexports.shadow = pdfjsSharedUtil.shadow;\nexports.createBlob = pdfjsSharedUtil.createBlob;\nexports.RenderingCancelledException =\n pdfjsDisplayDOMUtils.RenderingCancelledException;\nexports.getFilenameFromUrl = pdfjsDisplayDOMUtils.getFilenameFromUrl;\nexports.addLinkAttributes = pdfjsDisplayDOMUtils.addLinkAttributes;\nexports.StatTimer = pdfjsSharedUtil.StatTimer;\n\n\n\n// WEBPACK FOOTER //\n// src/pdf.js","/* 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/* eslint-disable no-extend-native */\n/* globals VBArray, PDFJS, global */\n\n// Skip compatibility checks for the extensions and if we already ran\n// this module.\nif ((typeof PDFJSDev === 'undefined' ||\n !PDFJSDev.test('FIREFOX || MOZCENTRAL || CHROME')) &&\n (typeof PDFJS === 'undefined' || !PDFJS.compatibilityChecked)) {\n\nvar globalScope =\n (typeof window !== 'undefined' && window.Math === Math) ? window :\n (typeof global !== 'undefined' && global.Math === Math) ? global :\n (typeof self !== 'undefined' && self.Math === Math) ? self :\n (typeof this !== 'undefined' && this.Math === Math) ? this : {};\n\nvar userAgent = (typeof navigator !== 'undefined' && navigator.userAgent) || '';\nvar isAndroid = /Android/.test(userAgent);\nvar isAndroidPre3 = /Android\\s[0-2][^\\d]/.test(userAgent);\nvar isAndroidPre5 = /Android\\s[0-4][^\\d]/.test(userAgent);\nvar isChrome = userAgent.indexOf('Chrom') >= 0;\nvar isChromeWithRangeBug = /Chrome\\/(39|40)\\./.test(userAgent);\nvar isIOSChrome = userAgent.indexOf('CriOS') >= 0;\nvar isIE = userAgent.indexOf('Trident') >= 0;\nvar isIOS = /\\b(iPad|iPhone|iPod)(?=;)/.test(userAgent);\nvar isOpera = userAgent.indexOf('Opera') >= 0;\nvar isSafari = /Safari\\//.test(userAgent) &&\n !/(Chrome\\/|Android\\s)/.test(userAgent);\n\nvar hasDOM = typeof window === 'object' && typeof document === 'object';\n\n// Initializing PDFJS global object here, it case if we need to change/disable\n// some PDF.js features, e.g. range requests\nif (typeof PDFJS === 'undefined') {\n globalScope.PDFJS = {};\n}\n\nPDFJS.compatibilityChecked = true;\n\n// Checking if the typed arrays are supported\n// Support: iOS<6.0 (subarray), IE<10, Android<4.0\n(function checkTypedArrayCompatibility() {\n if (typeof Uint8Array !== 'undefined') {\n // Support: iOS<6.0\n if (typeof Uint8Array.prototype.subarray === 'undefined') {\n Uint8Array.prototype.subarray = function subarray(start, end) {\n return new Uint8Array(this.slice(start, end));\n };\n Float32Array.prototype.subarray = function subarray(start, end) {\n return new Float32Array(this.slice(start, end));\n };\n }\n\n // Support: Android<4.1\n if (typeof Float64Array === 'undefined') {\n globalScope.Float64Array = Float32Array;\n }\n return;\n }\n\n function subarray(start, end) {\n return new TypedArray(this.slice(start, end));\n }\n\n function setArrayOffset(array, offset) {\n if (arguments.length < 2) {\n offset = 0;\n }\n for (var i = 0, n = array.length; i < n; ++i, ++offset) {\n this[offset] = array[i] & 0xFF;\n }\n }\n\n function Uint32ArrayView(buffer, length) {\n this.buffer = buffer;\n this.byteLength = buffer.length;\n this.length = length;\n ensureUint32ArrayViewProps(this.length);\n }\n Uint32ArrayView.prototype = Object.create(null);\n\n var uint32ArrayViewSetters = 0;\n function createUint32ArrayProp(index) {\n return {\n get() {\n var buffer = this.buffer, offset = index << 2;\n return (buffer[offset] | (buffer[offset + 1] << 8) |\n (buffer[offset + 2] << 16) | (buffer[offset + 3] << 24)) >>> 0;\n },\n set(value) {\n var buffer = this.buffer, offset = index << 2;\n buffer[offset] = value & 255;\n buffer[offset + 1] = (value >> 8) & 255;\n buffer[offset + 2] = (value >> 16) & 255;\n buffer[offset + 3] = (value >>> 24) & 255;\n },\n };\n }\n\n function ensureUint32ArrayViewProps(length) {\n while (uint32ArrayViewSetters < length) {\n Object.defineProperty(Uint32ArrayView.prototype,\n uint32ArrayViewSetters,\n createUint32ArrayProp(uint32ArrayViewSetters));\n uint32ArrayViewSetters++;\n }\n }\n\n function TypedArray(arg1) {\n var result, i, n;\n if (typeof arg1 === 'number') {\n result = [];\n for (i = 0; i < arg1; ++i) {\n result[i] = 0;\n }\n } else if ('slice' in arg1) {\n result = arg1.slice(0);\n } else {\n result = [];\n for (i = 0, n = arg1.length; i < n; ++i) {\n result[i] = arg1[i];\n }\n }\n\n result.subarray = subarray;\n result.buffer = result;\n result.byteLength = result.length;\n result.set = setArrayOffset;\n\n if (typeof arg1 === 'object' && arg1.buffer) {\n result.buffer = arg1.buffer;\n }\n return result;\n }\n\n globalScope.Uint8Array = TypedArray;\n globalScope.Int8Array = TypedArray;\n\n // we don't need support for set, byteLength for 32-bit array\n // so we can use the TypedArray as well\n globalScope.Int32Array = TypedArray;\n globalScope.Uint16Array = TypedArray;\n globalScope.Float32Array = TypedArray;\n globalScope.Float64Array = TypedArray;\n\n globalScope.Uint32Array = function () {\n if (arguments.length === 3) {\n // Building view for buffer, offset, and length\n if (arguments[1] !== 0) {\n throw new Error('offset !== 0 is not supported');\n }\n return new Uint32ArrayView(arguments[0], arguments[2]);\n }\n return TypedArray.apply(this, arguments);\n };\n})();\n\n// window.CanvasPixelArray.buffer/.byteLength\n// Support: IE9\n(function canvasPixelArrayBuffer() {\n if (!hasDOM || !window.CanvasPixelArray) {\n return;\n }\n var cpaProto = window.CanvasPixelArray.prototype;\n if ('buffer' in cpaProto) {\n return;\n }\n // Trying to fake CanvasPixelArray as Uint8ClampedArray.\n Object.defineProperty(cpaProto, 'buffer', {\n get() {\n return this;\n },\n enumerable: false,\n configurable: true,\n });\n Object.defineProperty(cpaProto, 'byteLength', {\n get() {\n return this.length;\n },\n enumerable: false,\n configurable: true,\n });\n})();\n\n// URL = URL || webkitURL\n// Support: Safari<7, Android 4.2+\n(function normalizeURLObject() {\n if (!globalScope.URL) {\n globalScope.URL = globalScope.webkitURL;\n }\n})();\n\n// Object.defineProperty()?\n// Support: Android<4.0, Safari<5.1\n(function checkObjectDefinePropertyCompatibility() {\n if (typeof Object.defineProperty !== 'undefined') {\n var definePropertyPossible = true;\n try {\n if (hasDOM) {\n // some browsers (e.g. safari) cannot use defineProperty() on DOM\n // objects and thus the native version is not sufficient\n Object.defineProperty(new Image(), 'id', { value: 'test', });\n }\n // ... another test for android gb browser for non-DOM objects\n var Test = function Test() {};\n Test.prototype = { get id() { }, };\n Object.defineProperty(new Test(), 'id',\n { value: '', configurable: true, enumerable: true, writable: false, });\n } catch (e) {\n definePropertyPossible = false;\n }\n if (definePropertyPossible) {\n return;\n }\n }\n\n Object.defineProperty = function objectDefineProperty(obj, name, def) {\n delete obj[name];\n if ('get' in def) {\n obj.__defineGetter__(name, def['get']);\n }\n if ('set' in def) {\n obj.__defineSetter__(name, def['set']);\n }\n if ('value' in def) {\n obj.__defineSetter__(name, function objectDefinePropertySetter(value) {\n this.__defineGetter__(name, function objectDefinePropertyGetter() {\n return value;\n });\n return value;\n });\n obj[name] = def.value;\n }\n };\n})();\n\n\n// No XMLHttpRequest#response?\n// Support: IE<11, Android <4.0\n(function checkXMLHttpRequestResponseCompatibility() {\n if (typeof XMLHttpRequest === 'undefined') {\n return;\n }\n var xhrPrototype = XMLHttpRequest.prototype;\n var xhr = new XMLHttpRequest();\n if (!('overrideMimeType' in xhr)) {\n // IE10 might have response, but not overrideMimeType\n // Support: IE10\n Object.defineProperty(xhrPrototype, 'overrideMimeType', {\n value: function xmlHttpRequestOverrideMimeType(mimeType) {},\n });\n }\n if ('responseType' in xhr) {\n return;\n }\n\n Object.defineProperty(xhrPrototype, 'responseType', {\n get: function xmlHttpRequestGetResponseType() {\n return this._responseType || 'text';\n },\n set: function xmlHttpRequestSetResponseType(value) {\n if (value === 'text' || value === 'arraybuffer') {\n this._responseType = value;\n if (value === 'arraybuffer' &&\n typeof this.overrideMimeType === 'function') {\n this.overrideMimeType('text/plain; charset=x-user-defined');\n }\n }\n },\n });\n\n // Support: IE9\n if (typeof VBArray !== 'undefined') {\n Object.defineProperty(xhrPrototype, 'response', {\n get: function xmlHttpRequestResponseGet() {\n if (this.responseType === 'arraybuffer') {\n return new Uint8Array(new VBArray(this.responseBody).toArray());\n }\n return this.responseText;\n },\n });\n return;\n }\n\n Object.defineProperty(xhrPrototype, 'response', {\n get: function xmlHttpRequestResponseGet() {\n if (this.responseType !== 'arraybuffer') {\n return this.responseText;\n }\n var text = this.responseText;\n var i, n = text.length;\n var result = new Uint8Array(n);\n for (i = 0; i < n; ++i) {\n result[i] = text.charCodeAt(i) & 0xFF;\n }\n return result.buffer;\n },\n });\n})();\n\n// window.btoa (base64 encode function) ?\n// Support: IE<10\n(function checkWindowBtoaCompatibility() {\n if ('btoa' in globalScope) {\n return;\n }\n\n var digits =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n globalScope.btoa = function (chars) {\n var buffer = '';\n var i, n;\n for (i = 0, n = chars.length; i < n; i += 3) {\n var b1 = chars.charCodeAt(i) & 0xFF;\n var b2 = chars.charCodeAt(i + 1) & 0xFF;\n var b3 = chars.charCodeAt(i + 2) & 0xFF;\n var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4);\n var d3 = i + 1 < n ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64;\n var d4 = i + 2 < n ? (b3 & 0x3F) : 64;\n buffer += (digits.charAt(d1) + digits.charAt(d2) +\n digits.charAt(d3) + digits.charAt(d4));\n }\n return buffer;\n };\n})();\n\n// window.atob (base64 encode function)?\n// Support: IE<10\n(function checkWindowAtobCompatibility() {\n if ('atob' in globalScope) {\n return;\n }\n\n // https://github.com/davidchambers/Base64.js\n var digits =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n globalScope.atob = function (input) {\n input = input.replace(/=+$/, '');\n if (input.length % 4 === 1) {\n throw new Error('bad atob input');\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = '';\n // get next character\n (buffer = input.charAt(idx++));\n // character found in table?\n // initialize bit storage and add its ascii value\n ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0\n ) {\n // try to find character in table (0-63, not found => -1)\n buffer = digits.indexOf(buffer);\n }\n return output;\n };\n})();\n\n// Function.prototype.bind?\n// Support: Android<4.0, iOS<6.0\n(function checkFunctionPrototypeBindCompatibility() {\n if (typeof Function.prototype.bind !== 'undefined') {\n return;\n }\n\n Function.prototype.bind = function functionPrototypeBind(obj) {\n var fn = this, headArgs = Array.prototype.slice.call(arguments, 1);\n var bound = function functionPrototypeBindBound() {\n var args = headArgs.concat(Array.prototype.slice.call(arguments));\n return fn.apply(obj, args);\n };\n return bound;\n };\n})();\n\n// HTMLElement dataset property\n// Support: IE<11, Safari<5.1, Android<4.0\n(function checkDatasetProperty() {\n if (!hasDOM) {\n return;\n }\n var div = document.createElement('div');\n if ('dataset' in div) {\n return; // dataset property exists\n }\n\n Object.defineProperty(HTMLElement.prototype, 'dataset', {\n get() {\n if (this._dataset) {\n return this._dataset;\n }\n\n var dataset = {};\n for (var j = 0, jj = this.attributes.length; j < jj; j++) {\n var attribute = this.attributes[j];\n if (attribute.name.substring(0, 5) !== 'data-') {\n continue;\n }\n var key = attribute.name.substring(5).replace(/\\-([a-z])/g,\n function(all, ch) {\n return ch.toUpperCase();\n });\n dataset[key] = attribute.value;\n }\n\n Object.defineProperty(this, '_dataset', {\n value: dataset,\n writable: false,\n enumerable: false,\n });\n return dataset;\n },\n enumerable: true,\n });\n})();\n\n// HTMLElement classList property\n// Support: IE<10, Android<4.0, iOS<5.0\n(function checkClassListProperty() {\n function changeList(element, itemName, add, remove) {\n var s = element.className || '';\n var list = s.split(/\\s+/g);\n if (list[0] === '') {\n list.shift();\n }\n var index = list.indexOf(itemName);\n if (index < 0 && add) {\n list.push(itemName);\n }\n if (index >= 0 && remove) {\n list.splice(index, 1);\n }\n element.className = list.join(' ');\n return (index >= 0);\n }\n\n if (!hasDOM) {\n return;\n }\n\n var div = document.createElement('div');\n if ('classList' in div) {\n return; // classList property exists\n }\n\n var classListPrototype = {\n add(name) {\n changeList(this.element, name, true, false);\n },\n contains(name) {\n return changeList(this.element, name, false, false);\n },\n remove(name) {\n changeList(this.element, name, false, true);\n },\n toggle(name) {\n changeList(this.element, name, true, true);\n },\n };\n\n Object.defineProperty(HTMLElement.prototype, 'classList', {\n get() {\n if (this._classList) {\n return this._classList;\n }\n\n var classList = Object.create(classListPrototype, {\n element: {\n value: this,\n writable: false,\n enumerable: true,\n },\n });\n Object.defineProperty(this, '_classList', {\n value: classList,\n writable: false,\n enumerable: false,\n });\n return classList;\n },\n enumerable: true,\n });\n})();\n\n// Checking if worker has console support. Forwarding all messages to the main\n// thread if console object is absent.\n(function checkWorkerConsoleCompatibility() {\n if (typeof importScripts === 'undefined' || 'console' in globalScope) {\n return;\n }\n\n var consoleTimer = {};\n\n var workerConsole = {\n log: function log() {\n var args = Array.prototype.slice.call(arguments);\n globalScope.postMessage({\n targetName: 'main',\n action: 'console_log',\n data: args,\n });\n },\n\n error: function error() {\n var args = Array.prototype.slice.call(arguments);\n globalScope.postMessage({\n targetName: 'main',\n action: 'console_error',\n data: args,\n });\n },\n\n time: function time(name) {\n consoleTimer[name] = Date.now();\n },\n\n timeEnd: function timeEnd(name) {\n var time = consoleTimer[name];\n if (!time) {\n throw new Error('Unknown timer name ' + name);\n }\n this.log('Timer:', name, Date.now() - time);\n },\n };\n\n globalScope.console = workerConsole;\n})();\n\n// Check console compatibility\n// In older IE versions the console object is not available\n// unless console is open.\n// Support: IE<10\n(function checkConsoleCompatibility() {\n if (!hasDOM) {\n return;\n }\n if (!('console' in window)) {\n window.console = {\n log() {},\n error() {},\n warn() {},\n };\n return;\n }\n if (!('bind' in console.log)) {\n // native functions in IE9 might not have bind\n console.log = (function(fn) {\n return function(msg) {\n return fn(msg);\n };\n })(console.log);\n console.error = (function(fn) {\n return function(msg) {\n return fn(msg);\n };\n })(console.error);\n console.warn = (function(fn) {\n return function(msg) {\n return fn(msg);\n };\n })(console.warn);\n return;\n }\n})();\n\n// Check onclick compatibility in Opera\n// Support: Opera<15\n(function checkOnClickCompatibility() {\n // workaround for reported Opera bug DSK-354448:\n // onclick fires on disabled buttons with opaque content\n function ignoreIfTargetDisabled(event) {\n if (isDisabled(event.target)) {\n event.stopPropagation();\n }\n }\n function isDisabled(node) {\n return node.disabled || (node.parentNode && isDisabled(node.parentNode));\n }\n if (isOpera) {\n // use browser detection since we cannot feature-check this bug\n document.addEventListener('click', ignoreIfTargetDisabled, true);\n }\n})();\n\n// Checks if possible to use URL.createObjectURL()\n// Support: IE, Chrome on iOS\n(function checkOnBlobSupport() {\n // sometimes IE and Chrome on iOS loosing the data created with\n // createObjectURL(), see #3977 and #8081\n if (isIE || isIOSChrome) {\n PDFJS.disableCreateObjectURL = true;\n }\n})();\n\n// Checks if navigator.language is supported\n(function checkNavigatorLanguage() {\n if (typeof navigator === 'undefined') {\n return;\n }\n if ('language' in navigator) {\n return;\n }\n PDFJS.locale = navigator.userLanguage || 'en-US';\n})();\n\n// Support: Safari 6.0+, Android<3.0, Chrome 39/40, iOS\n(function checkRangeRequests() {\n // Safari has issues with cached range requests see:\n // https://github.com/mozilla/pdf.js/issues/3260\n // Last tested with version 6.0.4.\n\n // Older versions of Android (pre 3.0) has issues with range requests, see:\n // https://github.com/mozilla/pdf.js/issues/3381.\n // Make sure that we only match webkit-based Android browsers,\n // since Firefox/Fennec works as expected.\n\n // Range requests are broken in Chrome 39 and 40, https://crbug.com/442318\n if (isSafari || isAndroidPre3 || isChromeWithRangeBug || isIOS) {\n PDFJS.disableRange = true;\n PDFJS.disableStream = true;\n }\n})();\n\n// Check if the browser supports manipulation of the history.\n// Support: IE<10, Android<4.2\n(function checkHistoryManipulation() {\n if (!hasDOM) {\n return;\n }\n // Android 2.x has so buggy pushState support that it was removed in\n // Android 3.0 and restored as late as in Android 4.2.\n // Support: Android 2.x\n if (!history.pushState || isAndroidPre3) {\n PDFJS.disableHistory = true;\n }\n})();\n\n// Support: IE<11, Chrome<21, Android<4.4, Safari<6\n(function checkSetPresenceInImageData() {\n if (!hasDOM) {\n return;\n }\n // IE < 11 will use window.CanvasPixelArray which lacks set function.\n if (window.CanvasPixelArray) {\n if (typeof window.CanvasPixelArray.prototype.set !== 'function') {\n window.CanvasPixelArray.prototype.set = function(arr) {\n for (var i = 0, ii = this.length; i < ii; i++) {\n this[i] = arr[i];\n }\n };\n }\n } else {\n // Old Chrome and Android use an inaccessible CanvasPixelArray prototype.\n // Because we cannot feature detect it, we rely on user agent parsing.\n var polyfill = false, versionMatch;\n if (isChrome) {\n versionMatch = userAgent.match(/Chrom(e|ium)\\/([0-9]+)\\./);\n // Chrome < 21 lacks the set function.\n polyfill = versionMatch && parseInt(versionMatch[2]) < 21;\n } else if (isAndroid) {\n // Android < 4.4 lacks the set function.\n // Android >= 4.4 will contain Chrome in the user agent,\n // thus pass the Chrome check above and not reach this block.\n polyfill = isAndroidPre5;\n } else if (isSafari) {\n versionMatch = userAgent.\n match(/Version\\/([0-9]+)\\.([0-9]+)\\.([0-9]+) Safari\\//);\n // Safari < 6 lacks the set function.\n polyfill = versionMatch && parseInt(versionMatch[1]) < 6;\n }\n\n if (polyfill) {\n var contextPrototype = window.CanvasRenderingContext2D.prototype;\n var createImageData = contextPrototype.createImageData;\n contextPrototype.createImageData = function(w, h) {\n var imageData = createImageData.call(this, w, h);\n imageData.data.set = function(arr) {\n for (var i = 0, ii = this.length; i < ii; i++) {\n this[i] = arr[i];\n }\n };\n return imageData;\n };\n // this closure will be kept referenced, so clear its vars\n contextPrototype = null;\n }\n }\n})();\n\n// Support: IE<10, Android<4.0, iOS\n(function checkRequestAnimationFrame() {\n function installFakeAnimationFrameFunctions() {\n window.requestAnimationFrame = function (callback) {\n return window.setTimeout(callback, 20);\n };\n window.cancelAnimationFrame = function (timeoutID) {\n window.clearTimeout(timeoutID);\n };\n }\n\n if (!hasDOM) {\n return;\n }\n if (isIOS) {\n // requestAnimationFrame on iOS is broken, replacing with fake one.\n installFakeAnimationFrameFunctions();\n return;\n }\n if ('requestAnimationFrame' in window) {\n return;\n }\n window.requestAnimationFrame = window.mozRequestAnimationFrame ||\n window.webkitRequestAnimationFrame;\n if (window.requestAnimationFrame) {\n return;\n }\n installFakeAnimationFrameFunctions();\n})();\n\n// Support: Android, iOS\n(function checkCanvasSizeLimitation() {\n if (isIOS || isAndroid) {\n // 5MP\n PDFJS.maxCanvasPixels = 5242880;\n }\n})();\n\n// Disable fullscreen support for certain problematic configurations.\n// Support: IE11+ (when embedded).\n(function checkFullscreenSupport() {\n if (!hasDOM) {\n return;\n }\n if (isIE && window.parent !== window) {\n PDFJS.disableFullscreen = true;\n }\n})();\n\n// Provides document.currentScript support\n// Support: IE, Chrome<29.\n(function checkCurrentScript() {\n if (!hasDOM) {\n return;\n }\n if ('currentScript' in document) {\n return;\n }\n Object.defineProperty(document, 'currentScript', {\n get() {\n var scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n },\n enumerable: true,\n configurable: true,\n });\n})();\n\n// Provides `input.type = 'type'` runtime failure protection.\n// Support: IE9,10.\n(function checkInputTypeNumberAssign() {\n if (!hasDOM) {\n return;\n }\n var el = document.createElement('input');\n try {\n el.type = 'number';\n } catch (ex) {\n var inputProto = el.constructor.prototype;\n var typeProperty = Object.getOwnPropertyDescriptor(inputProto, 'type');\n Object.defineProperty(inputProto, 'type', {\n get() {\n return typeProperty.get.call(this);\n },\n set(value) {\n typeProperty.set.call(this, value === 'number' ? 'text' : value);\n },\n enumerable: true,\n configurable: true,\n });\n }\n})();\n\n// Provides correct document.readyState value for legacy browsers.\n// Support: IE9,10.\n(function checkDocumentReadyState() {\n if (!hasDOM) {\n return;\n }\n if (!document.attachEvent) {\n return;\n }\n var documentProto = document.constructor.prototype;\n var readyStateProto = Object.getOwnPropertyDescriptor(documentProto,\n 'readyState');\n Object.defineProperty(documentProto, 'readyState', {\n get() {\n var value = readyStateProto.get.call(this);\n return value === 'interactive' ? 'loading' : value;\n },\n set(value) {\n readyStateProto.set.call(this, value);\n },\n enumerable: true,\n configurable: true,\n });\n})();\n\n// Provides support for ChildNode.remove in legacy browsers.\n// Support: IE.\n(function checkChildNodeRemove() {\n if (!hasDOM) {\n return;\n }\n if (typeof Element.prototype.remove !== 'undefined') {\n return;\n }\n Element.prototype.remove = function () {\n if (this.parentNode) {\n this.parentNode.removeChild(this);\n }\n };\n})();\n\n// Provides support for Number.isNaN in legacy browsers.\n// Support: IE.\n(function checkNumberIsNaN() {\n if (Number.isNaN) {\n return;\n }\n Number.isNaN = function(value) {\n return typeof value === 'number' && isNaN(value);\n };\n})();\n\n// Provides support for Number.isInteger in legacy browsers.\n// Support: IE.\n(function checkNumberIsInteger() {\n if (Number.isInteger) {\n return;\n }\n Number.isInteger = function(value) {\n return typeof value === 'number' && isFinite(value) &&\n Math.floor(value) === value;\n };\n})();\n\n/**\n * Polyfill for Promises:\n * The following promise implementation tries to generally implement the\n * Promise/A+ spec. Some notable differences from other promise libraries are:\n * - There currently isn't a separate deferred and promise object.\n * - Unhandled rejections eventually show an error if they aren't handled.\n *\n * Based off of the work in:\n * https://bugzilla.mozilla.org/show_bug.cgi?id=810490\n */\n(function checkPromise() {\n if (globalScope.Promise) {\n // Promises existing in the DOM/Worker, checking presence of all/resolve\n if (typeof globalScope.Promise.all !== 'function') {\n globalScope.Promise.all = function (iterable) {\n var count = 0, results = [], resolve, reject;\n var promise = new globalScope.Promise(function (resolve_, reject_) {\n resolve = resolve_;\n reject = reject_;\n });\n iterable.forEach(function (p, i) {\n count++;\n p.then(function (result) {\n results[i] = result;\n count--;\n if (count === 0) {\n resolve(results);\n }\n }, reject);\n });\n if (count === 0) {\n resolve(results);\n }\n return promise;\n };\n }\n if (typeof globalScope.Promise.resolve !== 'function') {\n globalScope.Promise.resolve = function (value) {\n return new globalScope.Promise(function (resolve) {\n resolve(value);\n });\n };\n }\n if (typeof globalScope.Promise.reject !== 'function') {\n globalScope.Promise.reject = function (reason) {\n return new globalScope.Promise(function (resolve, reject) {\n reject(reason);\n });\n };\n }\n if (typeof globalScope.Promise.prototype.catch !== 'function') {\n globalScope.Promise.prototype.catch = function (onReject) {\n return globalScope.Promise.prototype.then(undefined, onReject);\n };\n }\n return;\n }\n\n var STATUS_PENDING = 0;\n var STATUS_RESOLVED = 1;\n var STATUS_REJECTED = 2;\n\n // In an attempt to avoid silent exceptions, unhandled rejections are\n // tracked and if they aren't handled in a certain amount of time an\n // error is logged.\n var REJECTION_TIMEOUT = 500;\n\n var HandlerManager = {\n handlers: [],\n running: false,\n unhandledRejections: [],\n pendingRejectionCheck: false,\n\n scheduleHandlers: function scheduleHandlers(promise) {\n if (promise._status === STATUS_PENDING) {\n return;\n }\n\n this.handlers = this.handlers.concat(promise._handlers);\n promise._handlers = [];\n\n if (this.running) {\n return;\n }\n this.running = true;\n\n setTimeout(this.runHandlers.bind(this), 0);\n },\n\n runHandlers: function runHandlers() {\n var RUN_TIMEOUT = 1; // ms\n var timeoutAt = Date.now() + RUN_TIMEOUT;\n while (this.handlers.length > 0) {\n var handler = this.handlers.shift();\n\n var nextStatus = handler.thisPromise._status;\n var nextValue = handler.thisPromise._value;\n\n try {\n if (nextStatus === STATUS_RESOLVED) {\n if (typeof handler.onResolve === 'function') {\n nextValue = handler.onResolve(nextValue);\n }\n } else if (typeof handler.onReject === 'function') {\n nextValue = handler.onReject(nextValue);\n nextStatus = STATUS_RESOLVED;\n\n if (handler.thisPromise._unhandledRejection) {\n this.removeUnhandeledRejection(handler.thisPromise);\n }\n }\n } catch (ex) {\n nextStatus = STATUS_REJECTED;\n nextValue = ex;\n }\n\n handler.nextPromise._updateStatus(nextStatus, nextValue);\n if (Date.now() >= timeoutAt) {\n break;\n }\n }\n\n if (this.handlers.length > 0) {\n setTimeout(this.runHandlers.bind(this), 0);\n return;\n }\n\n this.running = false;\n },\n\n addUnhandledRejection: function addUnhandledRejection(promise) {\n this.unhandledRejections.push({\n promise,\n time: Date.now(),\n });\n this.scheduleRejectionCheck();\n },\n\n removeUnhandeledRejection: function removeUnhandeledRejection(promise) {\n promise._unhandledRejection = false;\n for (var i = 0; i < this.unhandledRejections.length; i++) {\n if (this.unhandledRejections[i].promise === promise) {\n this.unhandledRejections.splice(i);\n i--;\n }\n }\n },\n\n scheduleRejectionCheck: function scheduleRejectionCheck() {\n if (this.pendingRejectionCheck) {\n return;\n }\n this.pendingRejectionCheck = true;\n setTimeout(() => {\n this.pendingRejectionCheck = false;\n var now = Date.now();\n for (var i = 0; i < this.unhandledRejections.length; i++) {\n if (now - this.unhandledRejections[i].time > REJECTION_TIMEOUT) {\n var unhandled = this.unhandledRejections[i].promise._value;\n var msg = 'Unhandled rejection: ' + unhandled;\n if (unhandled.stack) {\n msg += '\\n' + unhandled.stack;\n }\n // Raising and catching the error, so debugger can break on it.\n try {\n throw new Error(msg);\n } catch (_) {\n console.warn(msg);\n }\n this.unhandledRejections.splice(i);\n i--;\n }\n }\n if (this.unhandledRejections.length) {\n this.scheduleRejectionCheck();\n }\n }, REJECTION_TIMEOUT);\n },\n };\n\n var Promise = function Promise(resolver) {\n this._status = STATUS_PENDING;\n this._handlers = [];\n try {\n resolver.call(this, this._resolve.bind(this), this._reject.bind(this));\n } catch (e) {\n this._reject(e);\n }\n };\n\n /**\n * Builds a promise that is resolved when all the passed in promises are\n * resolved.\n * @param {array} promises array of data and/or promises to wait for.\n * @return {Promise} New dependent promise.\n */\n Promise.all = function Promise_all(promises) {\n var resolveAll, rejectAll;\n var deferred = new Promise(function (resolve, reject) {\n resolveAll = resolve;\n rejectAll = reject;\n });\n var unresolved = promises.length;\n var results = [];\n if (unresolved === 0) {\n resolveAll(results);\n return deferred;\n }\n function reject(reason) {\n if (deferred._status === STATUS_REJECTED) {\n return;\n }\n results = [];\n rejectAll(reason);\n }\n for (var i = 0, ii = promises.length; i < ii; ++i) {\n var promise = promises[i];\n var resolve = (function(i) {\n return function(value) {\n if (deferred._status === STATUS_REJECTED) {\n return;\n }\n results[i] = value;\n unresolved--;\n if (unresolved === 0) {\n resolveAll(results);\n }\n };\n })(i);\n if (Promise.isPromise(promise)) {\n promise.then(resolve, reject);\n } else {\n resolve(promise);\n }\n }\n return deferred;\n };\n\n /**\n * Checks if the value is likely a promise (has a 'then' function).\n * @return {boolean} true if value is thenable\n */\n Promise.isPromise = function Promise_isPromise(value) {\n return value && typeof value.then === 'function';\n };\n\n /**\n * Creates resolved promise\n * @param value resolve value\n * @returns {Promise}\n */\n Promise.resolve = function Promise_resolve(value) {\n return new Promise(function (resolve) {\n resolve(value);\n });\n };\n\n /**\n * Creates rejected promise\n * @param reason rejection value\n * @returns {Promise}\n */\n Promise.reject = function Promise_reject(reason) {\n return new Promise(function (resolve, reject) {\n reject(reason);\n });\n };\n\n Promise.prototype = {\n _status: null,\n _value: null,\n _handlers: null,\n _unhandledRejection: null,\n\n _updateStatus: function Promise__updateStatus(status, value) {\n if (this._status === STATUS_RESOLVED ||\n this._status === STATUS_REJECTED) {\n return;\n }\n\n if (status === STATUS_RESOLVED &&\n Promise.isPromise(value)) {\n value.then(this._updateStatus.bind(this, STATUS_RESOLVED),\n this._updateStatus.bind(this, STATUS_REJECTED));\n return;\n }\n\n this._status = status;\n this._value = value;\n\n if (status === STATUS_REJECTED && this._handlers.length === 0) {\n this._unhandledRejection = true;\n HandlerManager.addUnhandledRejection(this);\n }\n\n HandlerManager.scheduleHandlers(this);\n },\n\n _resolve: function Promise_resolve(value) {\n this._updateStatus(STATUS_RESOLVED, value);\n },\n\n _reject: function Promise_reject(reason) {\n this._updateStatus(STATUS_REJECTED, reason);\n },\n\n then: function Promise_then(onResolve, onReject) {\n var nextPromise = new Promise(function (resolve, reject) {\n this.resolve = resolve;\n this.reject = reject;\n });\n this._handlers.push({\n thisPromise: this,\n onResolve,\n onReject,\n nextPromise,\n });\n HandlerManager.scheduleHandlers(this);\n return nextPromise;\n },\n\n catch: function Promise_catch(onReject) {\n return this.then(undefined, onReject);\n },\n };\n\n globalScope.Promise = Promise;\n})();\n\n(function checkWeakMap() {\n if (globalScope.WeakMap) {\n return;\n }\n\n var id = 0;\n function WeakMap() {\n this.id = '$weakmap' + (id++);\n }\n WeakMap.prototype = {\n has(obj) {\n if ((typeof obj !== 'object' && typeof obj !== 'function') ||\n obj === null) {\n return false;\n }\n return !!Object.getOwnPropertyDescriptor(obj, this.id);\n },\n get(obj) {\n return this.has(obj) ? obj[this.id] : undefined;\n },\n set(obj, value) {\n Object.defineProperty(obj, this.id, {\n value,\n enumerable: false,\n configurable: true,\n });\n },\n delete(obj) {\n delete obj[this.id];\n },\n };\n\n globalScope.WeakMap = WeakMap;\n})();\n\n// Polyfill from https://github.com/Polymer/URL\n/* Any copyright is dedicated to the Public Domain.\n * http://creativecommons.org/publicdomain/zero/1.0/ */\n(function checkURLConstructor() {\n // feature detect for URL constructor\n var hasWorkingUrl = false;\n try {\n if (typeof URL === 'function' &&\n typeof URL.prototype === 'object' &&\n ('origin' in URL.prototype)) {\n var u = new URL('b', 'http://a');\n u.pathname = 'c%20d';\n hasWorkingUrl = u.href === 'http://a/c%20d';\n }\n } catch (e) { }\n\n if (hasWorkingUrl) {\n return;\n }\n\n var relative = Object.create(null);\n relative['ftp'] = 21;\n relative['file'] = 0;\n relative['gopher'] = 70;\n relative['http'] = 80;\n relative['https'] = 443;\n relative['ws'] = 80;\n relative['wss'] = 443;\n\n var relativePathDotMapping = Object.create(null);\n relativePathDotMapping['%2e'] = '.';\n relativePathDotMapping['.%2e'] = '..';\n relativePathDotMapping['%2e.'] = '..';\n relativePathDotMapping['%2e%2e'] = '..';\n\n function isRelativeScheme(scheme) {\n return relative[scheme] !== undefined;\n }\n\n function invalid() {\n clear.call(this);\n this._isInvalid = true;\n }\n\n function IDNAToASCII(h) {\n if (h === '') {\n invalid.call(this);\n }\n // XXX\n return h.toLowerCase();\n }\n\n function percentEscape(c) {\n var unicode = c.charCodeAt(0);\n if (unicode > 0x20 &&\n unicode < 0x7F &&\n // \" # < > ? `\n [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) === -1\n ) {\n return c;\n }\n return encodeURIComponent(c);\n }\n\n function percentEscapeQuery(c) {\n // XXX This actually needs to encode c using encoding and then\n // convert the bytes one-by-one.\n\n var unicode = c.charCodeAt(0);\n if (unicode > 0x20 &&\n unicode < 0x7F &&\n // \" # < > ` (do not escape '?')\n [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) === -1\n ) {\n return c;\n }\n return encodeURIComponent(c);\n }\n\n var EOF, ALPHA = /[a-zA-Z]/,\n ALPHANUMERIC = /[a-zA-Z0-9\\+\\-\\.]/;\n\n function parse(input, stateOverride, base) {\n function err(message) {\n errors.push(message);\n }\n\n var state = stateOverride || 'scheme start',\n cursor = 0,\n buffer = '',\n seenAt = false,\n seenBracket = false,\n errors = [];\n\n loop: while ((input[cursor - 1] !== EOF || cursor === 0) &&\n !this._isInvalid) {\n var c = input[cursor];\n switch (state) {\n case 'scheme start':\n if (c && ALPHA.test(c)) {\n buffer += c.toLowerCase(); // ASCII-safe\n state = 'scheme';\n } else if (!stateOverride) {\n buffer = '';\n state = 'no scheme';\n continue;\n } else {\n err('Invalid scheme.');\n break loop;\n }\n break;\n\n case 'scheme':\n if (c && ALPHANUMERIC.test(c)) {\n buffer += c.toLowerCase(); // ASCII-safe\n } else if (c === ':') {\n this._scheme = buffer;\n buffer = '';\n if (stateOverride) {\n break loop;\n }\n if (isRelativeScheme(this._scheme)) {\n this._isRelative = true;\n }\n if (this._scheme === 'file') {\n state = 'relative';\n } else if (this._isRelative && base &&\n base._scheme === this._scheme) {\n state = 'relative or authority';\n } else if (this._isRelative) {\n state = 'authority first slash';\n } else {\n state = 'scheme data';\n }\n } else if (!stateOverride) {\n buffer = '';\n cursor = 0;\n state = 'no scheme';\n continue;\n } else if (c === EOF) {\n break loop;\n } else {\n err('Code point not allowed in scheme: ' + c);\n break loop;\n }\n break;\n\n case 'scheme data':\n if (c === '?') {\n this._query = '?';\n state = 'query';\n } else if (c === '#') {\n this._fragment = '#';\n state = 'fragment';\n } else {\n // XXX error handling\n if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n this._schemeData += percentEscape(c);\n }\n }\n break;\n\n case 'no scheme':\n if (!base || !(isRelativeScheme(base._scheme))) {\n err('Missing scheme.');\n invalid.call(this);\n } else {\n state = 'relative';\n continue;\n }\n break;\n\n case 'relative or authority':\n if (c === '/' && input[cursor + 1] === '/') {\n state = 'authority ignore slashes';\n } else {\n err('Expected /, got: ' + c);\n state = 'relative';\n continue;\n }\n break;\n\n case 'relative':\n this._isRelative = true;\n if (this._scheme !== 'file') {\n this._scheme = base._scheme;\n }\n if (c === EOF) {\n this._host = base._host;\n this._port = base._port;\n this._path = base._path.slice();\n this._query = base._query;\n this._username = base._username;\n this._password = base._password;\n break loop;\n } else if (c === '/' || c === '\\\\') {\n if (c === '\\\\') {\n err('\\\\ is an invalid code point.');\n }\n state = 'relative slash';\n } else if (c === '?') {\n this._host = base._host;\n this._port = base._port;\n this._path = base._path.slice();\n this._query = '?';\n this._username = base._username;\n this._password = base._password;\n state = 'query';\n } else if (c === '#') {\n this._host = base._host;\n this._port = base._port;\n this._path = base._path.slice();\n this._query = base._query;\n this._fragment = '#';\n this._username = base._username;\n this._password = base._password;\n state = 'fragment';\n } else {\n var nextC = input[cursor + 1];\n var nextNextC = input[cursor + 2];\n if (this._scheme !== 'file' || !ALPHA.test(c) ||\n (nextC !== ':' && nextC !== '|') ||\n (nextNextC !== EOF && nextNextC !== '/' && nextNextC !== '\\\\' &&\n nextNextC !== '?' && nextNextC !== '#')) {\n this._host = base._host;\n this._port = base._port;\n this._username = base._username;\n this._password = base._password;\n this._path = base._path.slice();\n this._path.pop();\n }\n state = 'relative path';\n continue;\n }\n break;\n\n case 'relative slash':\n if (c === '/' || c === '\\\\') {\n if (c === '\\\\') {\n err('\\\\ is an invalid code point.');\n }\n if (this._scheme === 'file') {\n state = 'file host';\n } else {\n state = 'authority ignore slashes';\n }\n } else {\n if (this._scheme !== 'file') {\n this._host = base._host;\n this._port = base._port;\n this._username = base._username;\n this._password = base._password;\n }\n state = 'relative path';\n continue;\n }\n break;\n\n case 'authority first slash':\n if (c === '/') {\n state = 'authority second slash';\n } else {\n err('Expected \\'/\\', got: ' + c);\n state = 'authority ignore slashes';\n continue;\n }\n break;\n\n case 'authority second slash':\n state = 'authority ignore slashes';\n if (c !== '/') {\n err('Expected \\'/\\', got: ' + c);\n continue;\n }\n break;\n\n case 'authority ignore slashes':\n if (c !== '/' && c !== '\\\\') {\n state = 'authority';\n continue;\n } else {\n err('Expected authority, got: ' + c);\n }\n break;\n\n case 'authority':\n if (c === '@') {\n if (seenAt) {\n err('@ already seen.');\n buffer += '%40';\n }\n seenAt = true;\n for (var i = 0; i < buffer.length; i++) {\n var cp = buffer[i];\n if (cp === '\\t' || cp === '\\n' || cp === '\\r') {\n err('Invalid whitespace in authority.');\n continue;\n }\n // XXX check URL code points\n if (cp === ':' && this._password === null) {\n this._password = '';\n continue;\n }\n var tempC = percentEscape(cp);\n if (this._password !== null) {\n this._password += tempC;\n } else {\n this._username += tempC;\n }\n }\n buffer = '';\n } else if (c === EOF || c === '/' || c === '\\\\' ||\n c === '?' || c === '#') {\n cursor -= buffer.length;\n buffer = '';\n state = 'host';\n continue;\n } else {\n buffer += c;\n }\n break;\n\n case 'file host':\n if (c === EOF || c === '/' || c === '\\\\' || c === '?' || c === '#') {\n if (buffer.length === 2 && ALPHA.test(buffer[0]) &&\n (buffer[1] === ':' || buffer[1] === '|')) {\n state = 'relative path';\n } else if (buffer.length === 0) {\n state = 'relative path start';\n } else {\n this._host = IDNAToASCII.call(this, buffer);\n buffer = '';\n state = 'relative path start';\n }\n continue;\n } else if (c === '\\t' || c === '\\n' || c === '\\r') {\n err('Invalid whitespace in file host.');\n } else {\n buffer += c;\n }\n break;\n\n case 'host':\n case 'hostname':\n if (c === ':' && !seenBracket) {\n // XXX host parsing\n this._host = IDNAToASCII.call(this, buffer);\n buffer = '';\n state = 'port';\n if (stateOverride === 'hostname') {\n break loop;\n }\n } else if (c === EOF || c === '/' ||\n c === '\\\\' || c === '?' || c === '#') {\n this._host = IDNAToASCII.call(this, buffer);\n buffer = '';\n state = 'relative path start';\n if (stateOverride) {\n break loop;\n }\n continue;\n } else if (c !== '\\t' && c !== '\\n' && c !== '\\r') {\n if (c === '[') {\n seenBracket = true;\n } else if (c === ']') {\n seenBracket = false;\n }\n buffer += c;\n } else {\n err('Invalid code point in host/hostname: ' + c);\n }\n break;\n\n case 'port':\n if (/[0-9]/.test(c)) {\n buffer += c;\n } else if (c === EOF || c === '/' || c === '\\\\' ||\n c === '?' || c === '#' || stateOverride) {\n if (buffer !== '') {\n var temp = parseInt(buffer, 10);\n if (temp !== relative[this._scheme]) {\n this._port = temp + '';\n }\n buffer = '';\n }\n if (stateOverride) {\n break loop;\n }\n state = 'relative path start';\n continue;\n } else if (c === '\\t' || c === '\\n' || c === '\\r') {\n err('Invalid code point in port: ' + c);\n } else {\n invalid.call(this);\n }\n break;\n\n case 'relative path start':\n if (c === '\\\\') {\n err('\\'\\\\\\' not allowed in path.');\n }\n state = 'relative path';\n if (c !== '/' && c !== '\\\\') {\n continue;\n }\n break;\n\n case 'relative path':\n if (c === EOF || c === '/' || c === '\\\\' ||\n (!stateOverride && (c === '?' || c === '#'))) {\n if (c === '\\\\') {\n err('\\\\ not allowed in relative path.');\n }\n var tmp;\n if ((tmp = relativePathDotMapping[buffer.toLowerCase()])) {\n buffer = tmp;\n }\n if (buffer === '..') {\n this._path.pop();\n if (c !== '/' && c !== '\\\\') {\n this._path.push('');\n }\n } else if (buffer === '.' && c !== '/' && c !== '\\\\') {\n this._path.push('');\n } else if (buffer !== '.') {\n if (this._scheme === 'file' && this._path.length === 0 &&\n buffer.length === 2 && ALPHA.test(buffer[0]) &&\n buffer[1] === '|') {\n buffer = buffer[0] + ':';\n }\n this._path.push(buffer);\n }\n buffer = '';\n if (c === '?') {\n this._query = '?';\n state = 'query';\n } else if (c === '#') {\n this._fragment = '#';\n state = 'fragment';\n }\n } else if (c !== '\\t' && c !== '\\n' && c !== '\\r') {\n buffer += percentEscape(c);\n }\n break;\n\n case 'query':\n if (!stateOverride && c === '#') {\n this._fragment = '#';\n state = 'fragment';\n } else if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n this._query += percentEscapeQuery(c);\n }\n break;\n\n case 'fragment':\n if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n this._fragment += c;\n }\n break;\n }\n\n cursor++;\n }\n }\n\n function clear() {\n this._scheme = '';\n this._schemeData = '';\n this._username = '';\n this._password = null;\n this._host = '';\n this._port = '';\n this._path = [];\n this._query = '';\n this._fragment = '';\n this._isInvalid = false;\n this._isRelative = false;\n }\n\n // Does not process domain names or IP addresses.\n // Does not handle encoding for the query parameter.\n function JURL(url, base /* , encoding */) {\n if (base !== undefined && !(base instanceof JURL)) {\n base = new JURL(String(base));\n }\n\n this._url = url;\n clear.call(this);\n\n var input = url.replace(/^[ \\t\\r\\n\\f]+|[ \\t\\r\\n\\f]+$/g, '');\n // encoding = encoding || 'utf-8'\n\n parse.call(this, input, null, base);\n }\n\n JURL.prototype = {\n toString() {\n return this.href;\n },\n get href() {\n if (this._isInvalid) {\n return this._url;\n }\n var authority = '';\n if (this._username !== '' || this._password !== null) {\n authority = this._username +\n (this._password !== null ? ':' + this._password : '') + '@';\n }\n\n return this.protocol +\n (this._isRelative ? '//' + authority + this.host : '') +\n this.pathname + this._query + this._fragment;\n },\n // The named parameter should be different from the setter's function name.\n // Otherwise Safari 5 will throw an error (see issue 8541)\n set href(value) {\n clear.call(this);\n parse.call(this, value);\n },\n\n get protocol() {\n return this._scheme + ':';\n },\n set protocol(value) {\n if (this._isInvalid) {\n return;\n }\n parse.call(this, value + ':', 'scheme start');\n },\n\n get host() {\n return this._isInvalid ? '' : this._port ?\n this._host + ':' + this._port : this._host;\n },\n set host(value) {\n if (this._isInvalid || !this._isRelative) {\n return;\n }\n parse.call(this, value, 'host');\n },\n\n get hostname() {\n return this._host;\n },\n set hostname(value) {\n if (this._isInvalid || !this._isRelative) {\n return;\n }\n parse.call(this, value, 'hostname');\n },\n\n get port() {\n return this._port;\n },\n set port(value) {\n if (this._isInvalid || !this._isRelative) {\n return;\n }\n parse.call(this, value, 'port');\n },\n\n get pathname() {\n return this._isInvalid ? '' : this._isRelative ?\n '/' + this._path.join('/') : this._schemeData;\n },\n set pathname(value) {\n if (this._isInvalid || !this._isRelative) {\n return;\n }\n this._path = [];\n parse.call(this, value, 'relative path start');\n },\n\n get search() {\n return this._isInvalid || !this._query || this._query === '?' ?\n '' : this._query;\n },\n set search(value) {\n if (this._isInvalid || !this._isRelative) {\n return;\n }\n this._query = '?';\n if (value[0] === '?') {\n value = value.slice(1);\n }\n parse.call(this, value, 'query');\n },\n\n get hash() {\n return this._isInvalid || !this._fragment || this._fragment === '#' ?\n '' : this._fragment;\n },\n set hash(value) {\n if (this._isInvalid) {\n return;\n }\n this._fragment = '#';\n if (value[0] === '#') {\n value = value.slice(1);\n }\n parse.call(this, value, 'fragment');\n },\n\n get origin() {\n var host;\n if (this._isInvalid || !this._scheme) {\n return '';\n }\n // javascript: Gecko returns String(\"\"), WebKit/Blink String(\"null\")\n // Gecko throws error for \"data://\"\n // data: Gecko returns \"\", Blink returns \"data://\", WebKit returns \"null\"\n // Gecko returns String(\"\") for file: mailto:\n // WebKit/Blink returns String(\"SCHEME://\") for file: mailto:\n switch (this._scheme) {\n case 'data':\n case 'file':\n case 'javascript':\n case 'mailto':\n return 'null';\n case 'blob':\n // Special case of blob: -- returns valid origin of _schemeData.\n try {\n return new JURL(this._schemeData).origin || 'null';\n } catch (_) {\n // Invalid _schemeData origin -- ignoring errors.\n }\n return 'null';\n }\n host = this.host;\n if (!host) {\n return '';\n }\n return this._scheme + '://' + host;\n },\n };\n\n // Copy over the static methods\n var OriginalURL = globalScope.URL;\n if (OriginalURL) {\n JURL.createObjectURL = function(blob) {\n // IE extension allows a second optional options argument.\n // http://msdn.microsoft.com/en-us/library/ie/hh772302(v=vs.85).aspx\n return OriginalURL.createObjectURL.apply(OriginalURL, arguments);\n };\n JURL.revokeObjectURL = function(url) {\n OriginalURL.revokeObjectURL(url);\n };\n }\n\n globalScope.URL = JURL;\n})();\n\n}\n\n\n\n// WEBPACK FOOTER //\n// src/shared/compatibility.js","/* 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\nlet isReadableStreamSupported = false;\nif (typeof ReadableStream !== 'undefined') {\n // MS Edge may say it has ReadableStream but they are not up to spec yet.\n try {\n // eslint-disable-next-line no-new\n new ReadableStream({\n start(controller) {\n controller.close();\n },\n });\n isReadableStreamSupported = true;\n } catch (e) {\n // The ReadableStream constructor cannot be used.\n }\n}\nif (isReadableStreamSupported) {\n exports.ReadableStream = ReadableStream;\n} else {\n if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('CHROME')) {\n throw new Error('ReadableStream polyfill is not found for Chrome bundle');\n }\n exports.ReadableStream =\n require('../../external/streams/streams-lib').ReadableStream;\n}\n\n\n\n// WEBPACK FOOTER //\n// src/shared/streams_polyfill.js"],"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/annotation_storage.js","webpack://pdfjs-dist/build/pdf/src/display/editor/editor.js","webpack://pdfjs-dist/build/pdf/src/display/editor/tools.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/shared/murmurhash3.js","webpack://pdfjs-dist/build/pdf/src/display/font_loader.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/shared/image_utils.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/node_utils.js","webpack://pdfjs-dist/build/pdf/src/display/editor/annotation_editor_layer.js","webpack://pdfjs-dist/build/pdf/src/display/editor/freetext.js","webpack://pdfjs-dist/build/pdf/src/display/editor/ink.js","webpack://pdfjs-dist/build/pdf/src/display/editor/fit_curve.js","webpack://pdfjs-dist/build/pdf/node_modules/fit-curve/src/fit-curve.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})(globalThis, () => {\nreturn ","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport \"./compatibility.js\";\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n// Represent the percentage of the height of a single-line field over\n// the font size. Acrobat seems to use this value.\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n * - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n * `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n * - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n * annotations are rendered onto the canvas (i.e. by being included in the\n * operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n * and their `annotationMode`-option.\n * - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n * `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3,\n};\n\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\n\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n INK: 15,\n};\n\nconst AnnotationEditorParamsType = {\n FREETEXT_SIZE: 1,\n FREETEXT_COLOR: 2,\n FREETEXT_OPACITY: 3,\n INK_COLOR: 11,\n INK_THICKNESS: 12,\n INK_OPACITY: 13,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\",\n};\n\nconst StreamType = {\n UNKNOWN: \"UNKNOWN\",\n FLATE: \"FLATE\",\n LZW: \"LZW\",\n DCT: \"DCT\",\n JPX: \"JPX\",\n JBIG: \"JBIG\",\n A85: \"A85\",\n AHX: \"AHX\",\n CCF: \"CCF\",\n RLX: \"RLX\", // PDF short name is 'RL', but telemetry requires three chars.\n};\n\nconst FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\n TYPE1STANDARD: \"TYPE1STANDARD\",\n TYPE1C: \"TYPE1C\",\n CIDFONTTYPE0: \"CIDFONTTYPE0\",\n CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n TRUETYPE: \"TRUETYPE\",\n CIDFONTTYPE2: \"CIDFONTTYPE2\",\n TYPE3: \"TYPE3\",\n OPENTYPE: \"OPENTYPE\",\n TYPE0: \"TYPE0\",\n MMTYPE1: \"MMTYPE1\",\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n /** @deprecated unused */\n beginAnnotations: 78,\n /** @deprecated unused */\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n /** @deprecated unused */\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n /** @deprecated unused */\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n signatures: \"signatures\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n /** @deprecated unused */\n font: \"font\",\n errorTilingPattern: \"errorTilingPattern\",\n errorExtGState: \"errorExtGState\",\n errorXObject: \"errorXObject\",\n errorFontLoadType3: \"errorFontLoadType3\",\n errorFontState: \"errorFontState\",\n errorFontMissing: \"errorFontMissing\",\n errorFontTranslate: \"errorFontTranslate\",\n errorColorSpace: \"errorColorSpace\",\n errorOperatorList: \"errorOperatorList\",\n errorFontToUnicode: \"errorFontToUnicode\",\n errorFontLoadNative: \"errorFontLoadNative\",\n errorFontBuildPath: \"errorFontBuildPath\",\n errorFontGetPath: \"errorFontGetPath\",\n errorMarkedContent: \"errorMarkedContent\",\n errorContentSubStream: \"errorContentSubStream\",\n};\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n // Avoid accidentally matching a *relative* URL pointing to a file named\n // e.g. \"www.pdf\" or similar.\n if (dots && dots.length >= 2) {\n url = `http://${url}`;\n }\n }\n\n // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch (ex) {}\n }\n }\n\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {\n /* `new URL()` will throw on incorrect data. */\n }\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n prop in obj,\n `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n );\n }\n Object.defineProperty(obj, prop, {\n value,\n enumerable: true,\n configurable: true,\n writable: false,\n });\n return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n // eslint-disable-next-line no-shadow\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\n\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\n\nfunction bytesToString(bytes) {\n if (\n typeof bytes !== \"object\" ||\n bytes === null ||\n bytes.length === undefined\n ) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array|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|Uint8Array|string>} arr - the array of the arrays\n * (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n const length = arr.length;\n // Shortcut: if first and only item is Uint8Array, return it.\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n let resultLength = 0;\n for (let i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n let pos = 0;\n const data = new Uint8Array(resultLength);\n for (let i = 0; i < length; i++) {\n let item = arr[i];\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n const itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n return data;\n}\n\nfunction string32(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n `string32: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\n\nclass FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n\n static get isOffscreenCanvasSupported() {\n return shadow(\n this,\n \"isOffscreenCanvasSupported\",\n typeof OffscreenCanvas !== \"undefined\"\n );\n }\n}\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n // Apply a scaling matrix to some min/max values.\n // If a scaling factor is negative then min and max must be\n // swaped.\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[0];\n minMax[1] *= transform[0];\n\n if (transform[3] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n\n if (transform[1] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[1];\n minMax[3] *= transform[1];\n\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[2];\n minMax[1] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[4];\n minMax[2] += transform[5];\n minMax[3] += transform[5];\n }\n\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // For 2d affine transforms\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = Util.applyTransform(r, m);\n const p2 = Util.applyTransform(r.slice(2, 4), m);\n const p3 = Util.applyTransform([r[0], r[3]], m);\n const p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1]),\n ];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [\n m[3] / d,\n -m[1] / d,\n -m[2] / d,\n m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d,\n (m[4] * m[1] - m[5] * m[0]) / d,\n ];\n }\n\n // Apply a generic 3d matrix M on a 3-vector v:\n // | a b c | | X |\n // | d e f | x | Y |\n // | g h i | | Z |\n // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n // with v as [X,Y,Z]\n static apply3dTransform(m, v) {\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n m[6] * v[0] + m[7] * v[1] + m[8] * v[2],\n ];\n }\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'null'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n const xLow = Math.max(\n Math.min(rect1[0], rect1[2]),\n Math.min(rect2[0], rect2[2])\n );\n const xHigh = Math.min(\n Math.max(rect1[0], rect1[2]),\n Math.max(rect2[0], rect2[2])\n );\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(\n Math.min(rect1[1], rect1[3]),\n Math.min(rect2[1], rect2[3])\n );\n const yHigh = Math.min(\n Math.max(rect1[1], rect1[3]),\n Math.max(rect2[1], rect2[3])\n );\n if (yLow > yHigh) {\n return null;\n }\n\n return [xLow, yLow, xHigh, yHigh];\n }\n\n // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length,\n mt;\n const jlen = j;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] =\n mt * mt * mt * x0 +\n 3 * mt * mt * t * x1 +\n 3 * mt * t * t * x2 +\n t * t * t * x3;\n bounds[1][j] =\n mt * mt * mt * y0 +\n 3 * mt * mt * t * y1 +\n 3 * mt * t * t * y2 +\n t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n return [\n Math.min(...bounds[0]),\n Math.min(...bounds[1]),\n Math.max(...bounds[0]),\n Math.max(...bounds[1]),\n ];\n }\n}\n\nconst PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(str);\n return decoder.decode(buffer);\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n // ISO Latin 1\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n // replace \"(\", \")\", \"\\n\", \"\\r\" and \"\\\"\n // by \"\\(\", \"\\)\", \"\\\\n\", \"\\\\r\" and \"\\\\\"\n // in order to write it in a PDF file.\n return str.replace(/([()\\\\\\n\\r])/g, match => {\n if (match === \"\\n\") {\n return \"\\\\n\";\n } else if (match === \"\\r\") {\n return \"\\\\r\";\n }\n return `\\\\${match}`;\n });\n}\n\nfunction isAscii(str) {\n return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n const buf = [\"\\xFE\\xFF\"];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(\n String.fromCharCode((char >> 8) & 0xff),\n String.fromCharCode(char & 0xff)\n );\n }\n return buf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [\n date.getUTCFullYear().toString(),\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n date.getUTCDate().toString().padStart(2, \"0\"),\n date.getUTCHours().toString().padStart(2, \"0\"),\n date.getUTCMinutes().toString().padStart(2, \"0\"),\n date.getUTCSeconds().toString().padStart(2, \"0\"),\n ];\n\n return buffer.join(\"\");\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n const capability = Object.create(null);\n let isSettled = false;\n\n Object.defineProperty(capability, \"settled\", {\n get() {\n return isSettled;\n },\n });\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = function (data) {\n isSettled = true;\n resolve(data);\n };\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\nexport {\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationEditorParamsType,\n AnnotationEditorPrefix,\n AnnotationEditorType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMarkedState,\n AnnotationMode,\n AnnotationReplyType,\n AnnotationReviewState,\n AnnotationStateModelType,\n AnnotationType,\n arrayByteLength,\n arraysToBytes,\n assert,\n BaseException,\n bytesToString,\n CMapCompressionType,\n createPromiseCapability,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n escapeString,\n FeatureTest,\n FONT_IDENTITY_MATRIX,\n FontType,\n FormatError,\n getModificationDate,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n isAscii,\n LINE_DESCENT_FACTOR,\n LINE_FACTOR,\n MissingPDFException,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n StreamType,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF16BEString,\n stringToUTF8String,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n UNSUPPORTED_FEATURES,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport { isNodeJS } from \"./is_node.js\";\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"SKIP_BABEL\")) &&\n !globalThis._pdfjsCompatibilityChecked\n) {\n globalThis._pdfjsCompatibilityChecked = true;\n\n // Support: Node.js<16.0.0\n (function checkNodeBtoa() {\n if (globalThis.btoa || !isNodeJS) {\n return;\n }\n globalThis.btoa = function (chars) {\n // eslint-disable-next-line no-undef\n return Buffer.from(chars, \"binary\").toString(\"base64\");\n };\n })();\n\n // Support: Node.js<16.0.0\n (function checkNodeAtob() {\n if (globalThis.atob || !isNodeJS) {\n return;\n }\n globalThis.atob = function (input) {\n // eslint-disable-next-line no-undef\n return Buffer.from(input, \"base64\").toString(\"binary\");\n };\n })();\n\n // Support: Node.js\n (function checkDOMMatrix() {\n if (globalThis.DOMMatrix || !isNodeJS) {\n return;\n }\n globalThis.DOMMatrix = __non_webpack_require__(\n \"dommatrix/dist/dommatrix.js\"\n );\n })();\n\n // Support: Node.js\n (function checkReadableStream() {\n if (globalThis.ReadableStream || !isNodeJS) {\n return;\n }\n globalThis.ReadableStream = __non_webpack_require__(\n \"web-streams-polyfill/dist/ponyfill.js\"\n ).ReadableStream;\n })();\n\n // Support: Firefox<90, Chrome<92, Safari<15.4, Node.js<16.6.0\n (function checkArrayAt() {\n if (Array.prototype.at) {\n return;\n }\n require(\"core-js/es/array/at.js\");\n })();\n\n // Support: Firefox<90, Chrome<92, Safari<15.4, Node.js<16.6.0\n (function checkTypedArrayAt() {\n if (Uint8Array.prototype.at) {\n return;\n }\n require(\"core-js/es/typed-array/at.js\");\n })();\n\n // Support: Firefox<94, Chrome<98, Safari<15.4, Node.js<17.0.0\n (function checkStructuredClone() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `structuredClone`\n // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.structuredClone) {\n return;\n }\n require(\"core-js/web/structured-clone.js\");\n })();\n}\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n typeof process === \"object\" &&\n process + \"\" === \"[object process]\" &&\n !process.versions.nw &&\n !(process.versions.electron && process.type && process.type !== \"browser\");\n\nexport { isNodeJS };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @module pdfjsLib\n */\n\nimport {\n AbortException,\n AnnotationMode,\n assert,\n createPromiseCapability,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n isArrayBuffer,\n MissingPDFException,\n PasswordException,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n stringToBytes,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport {\n AnnotationStorage,\n PrintAnnotationStorage,\n} from \"./annotation_storage.js\";\nimport {\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMStandardFontDataFactory,\n isDataScheme,\n loadScript,\n PageViewport,\n RenderingCancelledException,\n StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { OptionalContentConfig } from \"./optional_content_config.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\nimport { XfaText } from \"./xfa_text.js\";\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\n\nlet DefaultCanvasFactory = DOMCanvasFactory;\nlet DefaultCMapReaderFactory = DOMCMapReaderFactory;\nlet DefaultStandardFontDataFactory = DOMStandardFontDataFactory;\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS) {\n const {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeStandardFontDataFactory,\n } = require(\"./node_utils.js\");\n\n DefaultCanvasFactory = NodeCanvasFactory;\n DefaultCMapReaderFactory = NodeCMapReaderFactory;\n DefaultStandardFontDataFactory = NodeStandardFontDataFactory;\n}\n\n/**\n * @typedef {function} IPDFStreamFactory\n * @param {DocumentInitParameters} params - The document initialization\n * parameters. The \"url\" key is always present.\n * @returns {Promise} A promise, which is resolved with an instance of\n * {IPDFStream}.\n * @ignore\n */\n\n/**\n * @type {IPDFStreamFactory}\n * @private\n */\nlet createPDFNetworkStream;\n\n/**\n * Sets the function that instantiates an {IPDFStream} as an alternative PDF\n * data transport.\n *\n * @param {IPDFStreamFactory} pdfNetworkStreamFactory - The factory function\n * that takes document initialization parameters (including a \"url\") and\n * returns a promise which is resolved with an instance of {IPDFStream}.\n * @ignore\n */\nfunction setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {\n createPDFNetworkStream = pdfNetworkStreamFactory;\n}\n\n/**\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\n * Int16Array | Uint16Array |\n * Int32Array | Uint32Array | Float32Array |\n * Float64Array\n * } TypedArray\n */\n\n/**\n * @typedef { TypedArray | ArrayBuffer | Array | string } BinaryData\n */\n\n/**\n * @typedef {Object} RefProxy\n * @property {number} num\n * @property {number} gen\n */\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string | URL} [url] - The URL of the PDF.\n * @property {BinaryData} [data] - Binary PDF data.\n * Use typed arrays (Uint8Array) to improve the memory usage. If PDF data is\n * BASE64-encoded, use `atob()` to convert it to a binary string first.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n * cross-site Access-Control requests should be made using credentials such\n * as cookies or authorization headers. The default is `false`.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {TypedArray} [initialData] - A typed array with the first portion\n * or all of the pdf data. Used by the extension since some data is already\n * loaded before the switch to range requests.\n * @property {number} [length] - The PDF file length. It's used for progress\n * reports and range requests operations.\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\n * transport implementation.\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\n * per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\n * parsing the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the constants\n * from {@link VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document, used when\n * attempting to recover valid absolute URLs for annotations, and outline\n * items, that (incorrectly) only specify relative URLs.\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\n * located. Include the trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\n * packed or not.\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\n * reading built-in CMap files. Providing a custom factory is useful for\n * environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMCMapReaderFactory}.\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\n * embedded in the PDF document will fallback to a system font.\n * The default value is `true` in web environments and `false` in Node.js;\n * unless `disableFontFace === true` in which case this defaults to `false`\n * regardless of the environment (to prevent completely broken fonts).\n * @property {string} [standardFontDataUrl] - The URL where the standard font\n * files are located. Include the trailing slash.\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\n * when reading the standard font files. Providing a custom factory is useful\n * for environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMStandardFontDataFactory}.\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\n * worker-thread when reading CMap and standard font files. When `true`,\n * the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n * PDF data cannot be successfully parsed, instead of attempting to recover\n * whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size in total\n * pixels, i.e. width * height. Images above this value will not be rendered.\n * Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\n * as JavaScript. Primarily used to improve performance of font rendering, and\n * when parsing PDF functions. The default value is `true`.\n * @property {boolean} [disableFontFace] - By default fonts are converted to\n * OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\n * If disabled, fonts will be rendered using a built-in font renderer that\n * constructs the glyphs with primitive path commands.\n * The default value is `false` in web environments and `true` in Node.js.\n * @property {boolean} [fontExtraProperties] - Include additional properties,\n * which are unused during rendering of PDF documents, when exporting the\n * parsed font data from the worker-thread. This may be useful for debugging\n * purposes (and backwards compatibility), but note that it will lead to\n * increased memory usage. The default value is `false`.\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\n * The default value is `false`.\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\n * context to create elements with and to load resources, such as fonts,\n * into. Defaults to the current document.\n * @property {boolean} [disableRange] - Disable range request loading of PDF\n * files. When enabled, and if the server supports partial content requests,\n * then the PDF will be fetched in chunks. The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\n * By default PDF.js attempts to load PDF files in chunks. The default value\n * is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\n * data. When range requests are enabled PDF.js will automatically keep\n * fetching more data even if it isn't needed to display the current page.\n * The default value is `false`.\n *\n * NOTE: It is also necessary to disable streaming, see above, in order for\n * disabling of pre-fetching to work correctly.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\n * (see `web/debugger.js`). The default value is `false`.\n */\n\n/**\n * @typedef { string | URL | TypedArray | ArrayBuffer |\n * PDFDataRangeTransport | DocumentInitParameters\n * } GetDocumentParameters\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n *\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\n * XHR as fallback) is used, which means it must follow same origin rules,\n * e.g. no cross-domain requests without CORS.\n *\n * @param {GetDocumentParameters}\n * src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\n * already populated with data, or a parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n const task = new PDFDocumentLoadingTask();\n\n let source;\n if (typeof src === \"string\" || src instanceof URL) {\n source = { url: src };\n } else if (isArrayBuffer(src)) {\n source = { data: src };\n } else if (src instanceof PDFDataRangeTransport) {\n source = { range: src };\n } else {\n if (typeof src !== \"object\") {\n throw new Error(\n \"Invalid parameter in getDocument, \" +\n \"need either string, URL, TypedArray, or parameter object.\"\n );\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\n \"Invalid parameter object: need either .data, .range or .url\"\n );\n }\n source = src;\n }\n const params = Object.create(null);\n let rangeTransport = null,\n worker = null;\n\n for (const key in source) {\n const value = source[key];\n\n switch (key) {\n case \"url\":\n if (typeof window !== \"undefined\") {\n try {\n // The full path is required in the 'url' field.\n params[key] = new URL(value, window.location).href;\n continue;\n } catch (ex) {\n warn(`Cannot create valid URL: \"${ex}\".`);\n }\n } else if (typeof value === \"string\" || value instanceof URL) {\n params[key] = value.toString(); // Support Node.js environments.\n continue;\n }\n throw new Error(\n \"Invalid PDF url data: \" +\n \"either string or URL-object is expected in the url property.\"\n );\n case \"range\":\n rangeTransport = value;\n continue;\n case \"worker\":\n worker = value;\n continue;\n case \"data\":\n // Converting string or array-like data to Uint8Array.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof Buffer !== \"undefined\" && // eslint-disable-line no-undef\n value instanceof Buffer // eslint-disable-line no-undef\n ) {\n params[key] = new Uint8Array(value);\n } else if (value instanceof Uint8Array) {\n break; // Use the data as-is when it's already a Uint8Array.\n } else if (typeof value === \"string\") {\n params[key] = stringToBytes(value);\n } else if (\n typeof value === \"object\" &&\n value !== null &&\n !isNaN(value.length)\n ) {\n params[key] = new Uint8Array(value);\n } else if (isArrayBuffer(value)) {\n params[key] = new Uint8Array(value);\n } else {\n throw new Error(\n \"Invalid PDF binary data: either TypedArray, \" +\n \"string, or array-like object is expected in the data property.\"\n );\n }\n continue;\n }\n params[key] = value;\n }\n\n params.CMapReaderFactory =\n params.CMapReaderFactory || DefaultCMapReaderFactory;\n params.StandardFontDataFactory =\n params.StandardFontDataFactory || DefaultStandardFontDataFactory;\n params.ignoreErrors = params.stopAtErrors !== true;\n params.fontExtraProperties = params.fontExtraProperties === true;\n params.pdfBug = params.pdfBug === true;\n params.enableXfa = params.enableXfa === true;\n\n if (!Number.isInteger(params.rangeChunkSize) || params.rangeChunkSize < 1) {\n params.rangeChunkSize = DEFAULT_RANGE_CHUNK_SIZE;\n }\n if (\n typeof params.docBaseUrl !== \"string\" ||\n isDataScheme(params.docBaseUrl)\n ) {\n // Ignore \"data:\"-URLs, since they can't be used to recover valid absolute\n // URLs anyway. We want to avoid sending them to the worker-thread, since\n // they contain the *entire* PDF document and can thus be arbitrarily long.\n params.docBaseUrl = null;\n }\n if (!Number.isInteger(params.maxImageSize) || params.maxImageSize < -1) {\n params.maxImageSize = -1;\n }\n if (typeof params.cMapUrl !== \"string\") {\n params.cMapUrl = null;\n }\n if (typeof params.standardFontDataUrl !== \"string\") {\n params.standardFontDataUrl = null;\n }\n if (typeof params.useWorkerFetch !== \"boolean\") {\n params.useWorkerFetch =\n params.CMapReaderFactory === DOMCMapReaderFactory &&\n params.StandardFontDataFactory === DOMStandardFontDataFactory;\n }\n if (typeof params.isEvalSupported !== \"boolean\") {\n params.isEvalSupported = true;\n }\n if (typeof params.disableFontFace !== \"boolean\") {\n params.disableFontFace = isNodeJS;\n }\n if (typeof params.useSystemFonts !== \"boolean\") {\n params.useSystemFonts = !isNodeJS && !params.disableFontFace;\n }\n if (\n typeof params.ownerDocument !== \"object\" ||\n params.ownerDocument === null\n ) {\n params.ownerDocument = globalThis.document;\n }\n\n if (typeof params.disableRange !== \"boolean\") {\n params.disableRange = false;\n }\n if (typeof params.disableStream !== \"boolean\") {\n params.disableStream = false;\n }\n if (typeof params.disableAutoFetch !== \"boolean\") {\n params.disableAutoFetch = false;\n }\n\n // Set the main-thread verbosity level.\n setVerbosityLevel(params.verbosity);\n\n if (!worker) {\n const workerParams = {\n verbosity: params.verbosity,\n port: GlobalWorkerOptions.workerPort,\n };\n // Worker was not provided -- creating and owning our own. If message port\n // is specified in global worker options, using it.\n worker = workerParams.port\n ? PDFWorker.fromPort(workerParams)\n : new PDFWorker(workerParams);\n task._worker = worker;\n }\n const docId = task.docId;\n worker.promise\n .then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const workerIdPromise = _fetchDocument(\n worker,\n params,\n rangeTransport,\n docId\n );\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(\n {\n length: params.length,\n initialData: params.initialData,\n progressiveDone: params.progressiveDone,\n contentDispositionFilename: params.contentDispositionFilename,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n },\n rangeTransport\n );\n } else if (!params.data) {\n networkStream = createPDFNetworkStream({\n url: params.url,\n length: params.length,\n httpHeaders: params.httpHeaders,\n withCredentials: params.withCredentials,\n rangeChunkSize: params.rangeChunkSize,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n });\n }\n resolve(networkStream);\n });\n\n return Promise.all([workerIdPromise, networkStreamPromise]).then(\n function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const messageHandler = new MessageHandler(\n docId,\n workerId,\n worker.port\n );\n const transport = new WorkerTransport(\n messageHandler,\n task,\n networkStream,\n params\n );\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n }\n );\n })\n .catch(task._capability.reject);\n\n return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n *\n * @param {PDFWorker} worker\n * @param {Object} source\n * @param {PDFDataRangeTransport} pdfDataRangeTransport\n * @param {string} docId - Unique document ID, used in `MessageHandler`.\n * @returns {Promise} A promise that is resolved when the worker ID of\n * the `MessageHandler` is known.\n * @private\n */\nasync function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n\n if (pdfDataRangeTransport) {\n source.length = pdfDataRangeTransport.length;\n source.initialData = pdfDataRangeTransport.initialData;\n source.progressiveDone = pdfDataRangeTransport.progressiveDone;\n source.contentDispositionFilename =\n pdfDataRangeTransport.contentDispositionFilename;\n }\n const workerId = await worker.messageHandler.sendWithPromise(\n \"GetDocRequest\",\n {\n docId,\n apiVersion:\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null,\n // Only send the required properties, and *not* the entire object.\n source: {\n data: source.data,\n url: source.url,\n password: source.password,\n disableAutoFetch: source.disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n length: source.length,\n },\n maxImageSize: source.maxImageSize,\n disableFontFace: source.disableFontFace,\n docBaseUrl: source.docBaseUrl,\n ignoreErrors: source.ignoreErrors,\n isEvalSupported: source.isEvalSupported,\n fontExtraProperties: source.fontExtraProperties,\n enableXfa: source.enableXfa,\n useSystemFonts: source.useSystemFonts,\n cMapUrl: source.useWorkerFetch ? source.cMapUrl : null,\n standardFontDataUrl: source.useWorkerFetch\n ? source.standardFontDataUrl\n : null,\n }\n );\n\n // Release the TypedArray data, when it exists, since it's no longer needed\n // on the main-thread *after* it's been sent to the worker-thread.\n if (source.data) {\n source.data = null;\n }\n\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n return workerId;\n}\n\n/**\n * @typedef {Object} OnProgressParameters\n * @property {number} loaded - Currently loaded number of bytes.\n * @property {number} total - Total number of bytes in the PDF file.\n */\n\n/**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n\n constructor() {\n this._capability = createPromiseCapability();\n this._transport = null;\n this._worker = null;\n\n /**\n * Unique identifier for the document loading task.\n * @type {string}\n */\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n\n /**\n * Whether the loading task is destroyed or not.\n * @type {boolean}\n */\n this.destroyed = false;\n\n /**\n * Callback to request a password if a wrong or no password was provided.\n * The callback receives two parameters: a function that should be called\n * with the new password, and a reason (see {@link PasswordResponses}).\n * @type {function}\n */\n this.onPassword = null;\n\n /**\n * Callback to be able to monitor the loading progress of the PDF file\n * (necessary to implement e.g. a loading bar).\n * The callback receives an {@link OnProgressParameters} argument.\n * @type {function}\n */\n this.onProgress = null;\n\n /**\n * Callback for when an unsupported feature is used in the PDF document.\n * The callback receives an {@link UNSUPPORTED_FEATURES} argument.\n * @type {function}\n */\n this.onUnsupportedFeature = null;\n }\n\n /**\n * Promise for document loading task completion.\n * @type {Promise}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Abort all network requests and destroy the worker.\n * @returns {Promise} 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} 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} 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} 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} 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} 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>>} 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 | 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 | 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} 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} 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} 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} 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} 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 | 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} 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 | 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} items\n */\n\n /**\n * @returns {Promise>} 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} 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 | 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} 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} A promise that is resolved with a\n * {Uint8Array} that has the raw data from the PDF.\n */\n getData() {\n return this._transport.getData();\n }\n\n /**\n * @returns {Promise<{ length: number }>} A promise that is resolved when the\n * document's data is loaded. It is resolved with an {Object} that contains\n * the `length` property that indicates size of the PDF data in bytes.\n */\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n\n /**\n * Cleans up resources allocated by the document on both the main and worker\n * threads.\n *\n * NOTE: Do not, under any circumstances, call this method when rendering is\n * currently ongoing since that may lead to rendering errors.\n *\n * @param {boolean} [keepLoadedFonts] - Let fonts remain attached to the DOM.\n * NOTE: This will increase persistent memory usage, hence don't use this\n * option unless absolutely necessary. The default value is `false`.\n * @returns {Promise} A promise that is resolved when clean-up has finished.\n */\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n\n /**\n * Destroys the current document instance and terminates the worker.\n */\n destroy() {\n return this.loadingTask.destroy();\n }\n\n /**\n * @type {DocumentInitParameters} A subset of the current\n * {DocumentInitParameters}, which are needed in the viewer.\n */\n get loadingParams() {\n return this._transport.loadingParams;\n }\n\n /**\n * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\n */\n get loadingTask() {\n return this._transport.loadingTask;\n }\n\n /**\n * @returns {Promise} 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> | 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} 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 | null>} A promise that is resolved with an\n * {Array} 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} items - Array of\n * {@link TextItem} and {@link TextMarkedContent} objects. TextMarkedContent\n * items are included when includeMarkedContent is true.\n * @property {Object} 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} 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} [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 * value, a `CanvasGradient` object (a linear or radial gradient) or\n * a `CanvasPattern` object (a repetitive image). The default value is\n * 'rgb(255,255,255)'.\n *\n * NOTE: This option may be partially, or completely, ignored when the\n * `pageColors`-option is used.\n * @property {Object} [pageColors] - Overwrites background and foreground colors\n * with user defined ones in order to improve readability in high contrast\n * mode.\n * @property {Promise} [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} [annotationCanvasMap] - Map some\n * annotation ids with canvases used to render them.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n */\n\n/**\n * Page getOperatorList parameters.\n *\n * @typedef {Object} GetOperatorListParameters\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are included\n * in the operatorList, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n */\n\n/**\n * Structure tree node. The root node will have a role \"Root\".\n *\n * @typedef {Object} StructTreeNode\n * @property {Array} 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} fnArray - Array containing the operator functions.\n * @property {Array} argsArray - Array containing the arguments of the\n * functions.\n */\n\n/**\n * Proxy to a `PDFPage` in the worker thread.\n */\nclass PDFPageProxy {\n constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._ownerDocument = ownerDocument;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n /** @type {PDFObjects} */\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n\n this._bitmaps = new Set();\n\n this.cleanupAfterRender = false;\n this.pendingCleanup = false;\n this._intentStates = new Map();\n this._annotationPromises = new Map();\n this.destroyed = false;\n }\n\n /**\n * @type {number} Page number of the page. First page is 1.\n */\n get pageNumber() {\n return this._pageIndex + 1;\n }\n\n /**\n * @type {number} The number of degrees the page is rotated clockwise.\n */\n get rotate() {\n return this._pageInfo.rotate;\n }\n\n /**\n * @type {RefProxy | null} The reference that points to this page.\n */\n get ref() {\n return this._pageInfo.ref;\n }\n\n /**\n * @type {number} The default size of units in 1/72nds of an inch.\n */\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n\n /**\n * @type {Array} 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>} 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} 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} A promise that is resolved with\n * an {Object} with a fake DOM object (a tree structure where elements\n * are {Object} with a name, attributes (class, style, ...), value and\n * children, very similar to a HTML DOM tree), or `null` if no XFA exists.\n */\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n\n /**\n * Begins the process of rendering a page to the desired context.\n *\n * @param {RenderParameters} params - Page render parameters.\n * @returns {RenderTask} An object that contains a promise that is\n * resolved when the page finishes rendering.\n */\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n imageLayer = null,\n canvasFactory = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null,\n }) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n if (arguments[0]?.renderInteractiveForms !== undefined) {\n deprecated(\n \"render no longer accepts the `renderInteractiveForms`-option, \" +\n \"please use the `annotationMode`-option instead.\"\n );\n if (\n arguments[0].renderInteractiveForms === true &&\n annotationMode === AnnotationMode.ENABLE\n ) {\n annotationMode = AnnotationMode.ENABLE_FORMS;\n }\n }\n if (arguments[0]?.includeAnnotationStorage !== undefined) {\n deprecated(\n \"render no longer accepts the `includeAnnotationStorage`-option, \" +\n \"please use the `annotationMode`-option instead.\"\n );\n if (\n arguments[0].includeAnnotationStorage === true &&\n annotationMode === AnnotationMode.ENABLE\n ) {\n annotationMode = AnnotationMode.ENABLE_STORAGE;\n }\n }\n }\n\n if (this._stats) {\n this._stats.time(\"Overall\");\n }\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode,\n printAnnotationStorage\n );\n // If there was a pending destroy, cancel it so no cleanup happens during\n // this call to render.\n this.pendingCleanup = false;\n\n if (!optionalContentConfigPromise) {\n optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n }\n\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n const canvasFactoryInstance =\n canvasFactory ||\n new DefaultCanvasFactory({ ownerDocument: this._ownerDocument });\n const intentPrint = !!(\n intentArgs.renderingIntent & RenderingIntentFlag.PRINT\n );\n\n // If there's no displayReadyCapability yet, then the operatorList\n // was never requested before. Make the request and create the promise.\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = createPromiseCapability();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null,\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n this._pumpOperatorList(intentArgs);\n }\n\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n\n // Attempt to reduce memory usage during *printing*, by always running\n // cleanup once rendering has finished (regardless of cleanupAfterRender).\n if (this.cleanupAfterRender || intentPrint) {\n this.pendingCleanup = true;\n }\n this._tryCleanup();\n\n if (error) {\n internalRenderTask.capability.reject(error);\n\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error),\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n }\n };\n\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n // Only include the required properties, and *not* the entire object.\n params: {\n canvasContext,\n viewport,\n transform,\n imageLayer,\n background,\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: canvasFactoryInstance,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors,\n });\n\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n\n Promise.all([\n intentState.displayReadyCapability.promise,\n optionalContentConfigPromise,\n ])\n .then(([transparency, optionalContentConfig]) => {\n if (this.pendingCleanup) {\n complete();\n return;\n }\n if (this._stats) {\n this._stats.time(\"Rendering\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig,\n });\n internalRenderTask.operatorListChanged();\n })\n .catch(complete);\n\n return renderTask;\n }\n\n /**\n * @param {GetOperatorListParameters} params - Page getOperatorList\n * parameters.\n * @returns {Promise} A promise resolved with an\n * {@link PDFOperatorList} object that represents the page's operator list.\n */\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n\n intentState.renderTasks.delete(opListTask);\n }\n }\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode,\n printAnnotationStorage,\n /* isOpList = */ true\n );\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = createPromiseCapability();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null,\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {ReadableStream} Stream for reading text content chunks.\n */\n streamTextContent({\n disableCombineTextItems = false,\n includeMarkedContent = false,\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n\n return this._transport.messageHandler.sendWithStream(\n \"GetTextContent\",\n {\n pageIndex: this._pageIndex,\n combineTextItems: disableCombineTextItems !== true,\n includeMarkedContent: includeMarkedContent === true,\n },\n {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n },\n }\n );\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {Promise} 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} A promise that is resolved with a\n * {@link StructTreeNode} object that represents the page's structure tree,\n * or `null` when no structure tree is present for the current page.\n */\n getStructTree() {\n return (this._structTreePromise ||= this._transport.getStructTree(\n this._pageIndex\n ));\n }\n\n /**\n * Destroys the page object.\n * @private\n */\n _destroy() {\n this.destroyed = true;\n\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true,\n });\n\n if (intentState.opListReadCapability) {\n // Avoid errors below, since the renderTasks are just stubs.\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n for (const bitmap of this._bitmaps) {\n bitmap.close();\n }\n this._bitmaps.clear();\n this._annotationPromises.clear();\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n this.pendingCleanup = false;\n return Promise.all(waitOn);\n }\n\n /**\n * Cleans up resources allocated by the page.\n *\n * @param {boolean} [resetStats] - Reset page stats, if enabled.\n * The default value is `false`.\n * @returns {boolean} Indicates if clean-up was successfully run.\n */\n cleanup(resetStats = false) {\n this.pendingCleanup = true;\n return this._tryCleanup(resetStats);\n }\n\n /**\n * Attempts to clean up if rendering is in a state where that's possible.\n * @private\n */\n _tryCleanup(resetStats = false) {\n if (!this.pendingCleanup) {\n return false;\n }\n for (const { renderTasks, operatorList } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n\n this._intentStates.clear();\n this.objs.clear();\n this._annotationPromises.clear();\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n if (resetStats && this._stats) {\n this._stats = new StatTimer();\n }\n for (const bitmap of this._bitmaps) {\n bitmap.close();\n }\n this._bitmaps.clear();\n this.pendingCleanup = false;\n return true;\n }\n\n /**\n * @private\n */\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return; // Rendering was cancelled.\n }\n if (this._stats) {\n this._stats.timeEnd(\"Page Request\");\n }\n // TODO Refactor RenderPageRequest to separate rendering\n // and operator list logic\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.resolve(transparency);\n }\n }\n\n /**\n * @private\n */\n _renderPageChunk(operatorListChunk, intentState) {\n // Add the new chunk to the current operator list.\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n\n // Notify all the rendering tasks there are more operators to be consumed.\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n this._tryCleanup();\n }\n }\n\n /**\n * @private\n */\n _pumpOperatorList({ renderingIntent, cacheKey, annotationStorageMap }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n Number.isInteger(renderingIntent) && renderingIntent > 0,\n '_pumpOperatorList: Expected valid \"renderingIntent\" argument.'\n );\n }\n\n const readableStream = this._transport.messageHandler.sendWithStream(\n \"GetOperatorList\",\n {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: annotationStorageMap,\n }\n );\n const reader = readableStream.getReader();\n\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n\n const pump = () => {\n reader.read().then(\n ({ value, done }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n this._renderPageChunk(value, intentState);\n pump();\n },\n reason => {\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n if (intentState.operatorList) {\n // Mark operator list as complete.\n intentState.operatorList.lastChunk = true;\n\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this._tryCleanup();\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n }\n );\n };\n pump();\n }\n\n /**\n * @private\n */\n _abortOperatorList({ intentState, reason, force = false }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n reason instanceof Error,\n '_abortOperatorList: Expected valid \"reason\" argument.'\n );\n }\n\n if (!intentState.streamReader) {\n return;\n }\n if (!force) {\n // Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\n // multiple render() calls on the same canvas, won't break all rendering.\n if (intentState.renderTasks.size > 0) {\n return;\n }\n // Don't immediately abort parsing on the worker-thread when rendering is\n // cancelled, since that will unnecessarily delay re-rendering when (for\n // partially parsed pages) e.g. zooming/rotation occurs in the viewer.\n if (reason instanceof RenderingCancelledException) {\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n this._abortOperatorList({ intentState, reason, force: true });\n intentState.streamReaderCancelTimeout = null;\n }, RENDERING_CANCELLED_TIMEOUT);\n return;\n }\n }\n intentState.streamReader\n .cancel(new AbortException(reason.message))\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n // Remove the current `intentState`, since a cancelled `getOperatorList`\n // call on the worker-thread cannot be re-started...\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n // ... and force clean-up to ensure that any old state is always removed.\n this.cleanup();\n }\n\n /**\n * @type {Object} Returns page stats, if enabled; returns `null` otherwise.\n */\n get stats() {\n return this._stats;\n }\n}\n\nclass LoopbackPort {\n constructor() {\n this._listeners = [];\n this._deferred = Promise.resolve();\n }\n\n postMessage(obj, transfers) {\n const event = {\n data: structuredClone(obj, transfers),\n };\n\n this._deferred.then(() => {\n for (const listener of this._listeners) {\n listener.call(this, event);\n }\n });\n }\n\n addEventListener(name, listener) {\n this._listeners.push(listener);\n }\n\n removeEventListener(name, listener) {\n const i = this._listeners.indexOf(listener);\n this._listeners.splice(i, 1);\n }\n\n terminate() {\n this._listeners.length = 0;\n }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} [name] - The name of the worker.\n * @property {Object} [port] - The `workerPort` object.\n * @property {number} [verbosity] - Controls the logging level;\n * the constants from {@link VerbosityLevel} should be used.\n */\n\nconst PDFWorkerUtil = {\n isWorkerDisabled: false,\n fallbackWorkerSrc: null,\n fakeWorkerId: 0,\n};\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // eslint-disable-next-line no-undef\n if (isNodeJS && typeof __non_webpack_require__ === \"function\") {\n // Workers aren't supported in Node.js, force-disabling them there.\n PDFWorkerUtil.isWorkerDisabled = true;\n\n PDFWorkerUtil.fallbackWorkerSrc = PDFJSDev.test(\"LIB\")\n ? \"../pdf.worker.js\"\n : \"./pdf.worker.js\";\n } else if (typeof document === \"object\") {\n const pdfjsFilePath = document?.currentScript?.src;\n if (pdfjsFilePath) {\n PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(\n /(\\.(?:min\\.)?js)(\\?.*)?$/i,\n \".worker$1$2\"\n );\n }\n }\n\n // Check if URLs have the same origin. For non-HTTP based URLs, returns false.\n PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false; // non-HTTP url\n }\n } catch (e) {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n\n PDFWorkerUtil.createCDNWrapper = function (url) {\n // We will rely on blob URL's property to specify origin.\n // We want this function to fail in case if createObjectURL or Blob do not\n // exist or fail for some reason -- our Worker creation will fail anyway.\n const wrapper = `importScripts(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper]));\n };\n}\n\n/**\n * PDF.js web worker abstraction that controls the instantiation of PDF\n * documents. Message handlers are used to pass information from the main\n * thread to the worker thread and vice versa. If the creation of a web\n * worker is not possible, a \"fake\" worker will be used instead.\n *\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\nclass PDFWorker {\n static #workerPorts = new WeakMap();\n\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel(),\n } = {}) {\n if (port && PDFWorker.#workerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n\n this._readyCapability = createPromiseCapability();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (port) {\n PDFWorker.#workerPorts.set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n\n /**\n * Promise for worker initialization completion.\n * @type {Promise}\n */\n get promise() {\n return this._readyCapability.promise;\n }\n\n /**\n * The current `workerPort`, when it exists.\n * @type {Worker}\n */\n get port() {\n return this._port;\n }\n\n /**\n * The current MessageHandler-instance.\n * @type {MessageHandler}\n */\n get messageHandler() {\n return this._messageHandler;\n }\n\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {\n // Ignoring \"ready\" event -- MessageHandler should already be initialized\n // and ready to accept messages.\n });\n this._readyCapability.resolve();\n }\n\n _initialize() {\n // If worker support isn't disabled explicit and the browser has worker\n // support, create a new web worker and test if it/the browser fulfills\n // all requirements to run parts of pdf.js in a web worker.\n // Right now, the requirement is, that an Uint8Array is still an\n // Uint8Array as it arrives on the worker. (Chrome added this with v.15.)\n if (\n !PDFWorkerUtil.isWorkerDisabled &&\n !PDFWorker._mainThreadWorkerMessageHandler\n ) {\n let { workerSrc } = PDFWorker;\n\n try {\n // Wraps workerSrc path into blob URL, if the former does not belong\n // to the same origin.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n !PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)\n ) {\n workerSrc = PDFWorkerUtil.createCDNWrapper(\n new URL(workerSrc, window.location).href\n );\n }\n\n // Some versions of FF can't create a worker on localhost, see:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=683280\n const worker = new Worker(workerSrc);\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n // Fall back to fake worker if the termination is caused by an\n // error (e.g. NetworkError / SecurityError).\n this._setupFakeWorker();\n }\n };\n\n const onWorkerError = () => {\n if (!this._webWorker) {\n // Worker failed to initialize due to an error. Clean up and fall\n // back to the fake worker.\n terminateEarly();\n }\n };\n worker.addEventListener(\"error\", onWorkerError);\n\n messageHandler.on(\"test\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n if (data) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n } else {\n this._setupFakeWorker();\n messageHandler.destroy();\n worker.terminate();\n }\n });\n\n messageHandler.on(\"ready\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n try {\n sendTest();\n } catch (e) {\n // We need fallback to a faked worker.\n this._setupFakeWorker();\n }\n });\n\n const sendTest = () => {\n const testObj = new Uint8Array();\n // Ensure that we can use `postMessage` transfers.\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n\n // It might take time for the worker to initialize. We will try to send\n // the \"test\" message immediately, and once the \"ready\" message arrives.\n // The worker shall process only the first received \"test\" message.\n sendTest();\n return;\n } catch (e) {\n info(\"The worker has been disabled.\");\n }\n }\n // Either workers are disabled, not supported or have thrown an exception.\n // Thus, we fallback to a faked worker.\n this._setupFakeWorker();\n }\n\n _setupFakeWorker() {\n if (!PDFWorkerUtil.isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorkerUtil.isWorkerDisabled = true;\n }\n\n PDFWorker._setupFakeWorkerGlobal\n .then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this._port = port;\n\n // All fake workers use the same port, making id unique.\n const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n\n // If the main thread is our worker, setup the handling for the\n // messages -- the main thread sends to it self.\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n\n const messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this._messageHandler = messageHandler;\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n })\n .catch(reason => {\n this._readyCapability.reject(\n new Error(`Setting up fake worker failed: \"${reason.message}\".`)\n );\n });\n }\n\n /**\n * Destroys the worker instance.\n */\n destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n // We need to terminate only web worker created resource.\n this._webWorker.terminate();\n this._webWorker = null;\n }\n PDFWorker.#workerPorts.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n\n /**\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\n static fromPort(params) {\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n if (this.#workerPorts.has(params.port)) {\n return this.#workerPorts.get(params.port);\n }\n return new PDFWorker(params);\n }\n\n /**\n * The current `workerSrc`, when it exists.\n * @type {string}\n */\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n PDFWorkerUtil.fallbackWorkerSrc !== null\n ) {\n if (!isNodeJS) {\n deprecated('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n return PDFWorkerUtil.fallbackWorkerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n static get _mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch (ex) {\n return null;\n }\n }\n\n // Loads worker code into the main-thread.\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;\n\n if (mainWorkerMessageHandler) {\n // The worker was already loaded using e.g. a ` - - - - - - - - + + + + + + - -
- - - - - - - - - - - - - - - - - - - - - - - - - -
+
-
- - - +
+
+ + + + +
+
+ +
+
@@ -253,89 +75,161 @@ See https://github.com/adobe-type-tools/cmap-resources
+
+
-