diff --git a/frontend/src/components/file-view/file-toolbar.js b/frontend/src/components/file-view/file-toolbar.js index 6d69863239..91759c220d 100644 --- a/frontend/src/components/file-view/file-toolbar.js +++ b/frontend/src/components/file-view/file-toolbar.js @@ -117,6 +117,13 @@ class FileToolbar extends React.Component { return ( + {fileType == 'PDF' && ( + + )} )} {filePerm == 'rw' && ( - - {gettext('History')} - + + {gettext('History')} + )} diff --git a/frontend/src/components/pdf-viewer.js b/frontend/src/components/pdf-viewer.js index 38c0964673..6c87acf828 100644 --- a/frontend/src/components/pdf-viewer.js +++ b/frontend/src/components/pdf-viewer.js @@ -3,25 +3,35 @@ import { gettext } from '../utils/constants'; class PDFViewer extends React.Component { + componentDidMount() { + const el = document.createElement('div'); + el.id = 'printContainer'; + document.body.append(el); + } + render() { return (
-
+
-
-
- +
+
+
+ - - -
@@ -49,18 +59,18 @@ class PDFViewer extends React.Component {
- {/* */} + {/**/}
-
+
- +
-
-
@@ -68,98 +78,142 @@ class PDFViewer extends React.Component {
- + - +
- - - + + + +
-
+
+
{/**/} -
-
- +
+
+
+ + +
+
+ + +
+
+
- - - - - Current View - -
- + + + Current Page + + +
+ {/* + - + */}
- -
- - +
+ + +
- - - +
+ + + + +
-
+
- - - +
+ + + +
-
+
-
@@ -169,57 +223,71 @@ class PDFViewer extends React.Component {
-
+
-
- -
- + -
- +
- -
- - - - - - - Current View - -
+
- + +
+ +
+ +
-
-
+
+
+ +
- - @@ -234,12 +302,17 @@ class PDFViewer extends React.Component { - +
+
+ +
+
- -
+
@@ -247,124 +320,108 @@ class PDFViewer extends React.Component {
-
- - - -
-
- -
{/**/} -
-
-
-
-

Enter the password to open this PDF file:

-
-
- -
-
- - -
+
+ +
+
-
-
-
-
- File name:

-

-
-
- File size:

-

-
-
-
- Title:

-

-
-
- Author:

-

-
-
- Subject:

-

-
-
- Keywords:

-

-
-
- Creation Date:

-

-
-
- Modification Date:

-

-
-
- Creator:

-

-
-
-
- PDF Producer:

-

-
-
- PDF Version:

-

-
-
- Page Count:

-

-
-
- Page Size:

-

-
-
-
- Fast Web View:

-

-
-
- -
+
+
-
-
-
-
- Preparing document for printing… -
-
- - 0% -
-
- -
+
+ +
-
+ + +
+ File name: +

-

+
+
+ File size: +

-

+
+
+
+ Title: +

-

+
+
+ Author: +

-

+
+
+ Subject: +

-

+
+
+ Keywords: +

-

+
+
+ Creation Date: +

-

+
+
+ Modification Date: +

-

+
+
+ Creator: +

-

+
+
+
+ PDF Producer: +

-

+
+
+ PDF Version: +

-

+
+
+ Page Count: +

-

+
+
+ Page Size: +

-

+
+
+
+ Fast Web View: +

-

+
+
+ +
+
+ +
+ Preparing document for printing… +
+
+ + 0% +
+
+ +
+
- {/**/} + {/**/}
{/**/} -
+ {/*
*/} + ); } diff --git a/frontend/src/components/shared-file-view/shared-file-view.js b/frontend/src/components/shared-file-view/shared-file-view.js index e74b1ca256..63265ecb79 100644 --- a/frontend/src/components/shared-file-view/shared-file-view.js +++ b/frontend/src/components/shared-file-view/shared-file-view.js @@ -109,7 +109,7 @@ class SharedFileView extends React.Component { { loginUser && }
-
+

{fileName}

{zipped ? diff --git a/frontend/src/css/file-view.css b/frontend/src/css/file-view.css index ee7e97c000..4589937895 100644 --- a/frontend/src/css/file-view.css +++ b/frontend/src/css/file-view.css @@ -6,6 +6,7 @@ body { } .file-view-header { padding: 4px 10px; + background: #fff; border-bottom: 1px solid #c9c9c9; flex-shrink: 0; } diff --git a/frontend/src/css/pdf-file-view.css b/frontend/src/css/pdf-file-view.css index 9f46b770da..08918386dd 100644 --- a/frontend/src/css/pdf-file-view.css +++ b/frontend/src/css/pdf-file-view.css @@ -1,47 +1,43 @@ .pdf-file-view { - overflow:hidden; - position:relative; + overflow: hidden; + position: relative; } + +/* for pdf online file view */ +.pdf-file-view.file-view-content { + border: 0; +} + .sf-hide { - height:0; - overflow:hidden; -} -.hidden { - display: none !important; + height: 0; + overflow: hidden; } + #outerContainer, #mainContainer, #viewerContainer { - position:absolute; - top:0; - bottom:0; - left:0; - right:0; -} -#viewerContainer { - padding: 30px 0 15px; - overflow: auto; -} -#viewerContainer:focus { - outline:none; -} - -#zoom-toolbar { position: absolute; - right: 2rem; - bottom: 2rem; - z-index: 1030; + top: 0; + bottom: 0; + left: 0; + right: 0; } -#zoom-toolbar .btn-icon { - box-shadow: 0 2px 4px 0 rgba(0,0,0, 0.1); +#viewerContainer { + padding: 10px 0 32px; + overflow: auto; } -.page { +#viewerContainer:focus { + outline: none; +} + +.pdfViewer .page { position: relative; background: #fff; + border: none; box-shadow: 0 0 6px #ccc; - margin: 0 auto 20px; + margin: 0 auto 10px; } .page .loading-icon { @@ -50,290 +46,23 @@ left: 50%; } -#fileInput { - display: none; -} - -/* - * the following lines are copied from web/viewer.css - * modification: - * - replaced `var(...)` with its result - * - modified some 'z-index' - */ - -/* textLayer starts */ -.textLayer { - position: absolute; - text-align: initial; - left: 0; - top: 0; +/* the following lines overwrite lines from web/viewer.css */ +#toolbarViewerMiddle { + left: auto; right: 0; - bottom: 0; - overflow: hidden; - opacity: 0.2; - line-height: 1; + transform: none; } -.textLayer span, -.textLayer br { - color: transparent; - position: absolute; - white-space: pre; - cursor: text; - transform-origin: 0% 0%; +select#scaleSelect { + background: #fff; + height: 24px; + font-size: 12px; } -.textLayer .highlight { - margin: -1px; - padding: 1px; - background-color: rgba(180, 0, 170, 1); - border-radius: 4px; +#scaleSelectContainer::after { + top: 4px; } -.textLayer .highlight.appended { - position: initial; -} - -.textLayer .highlight.begin { - border-radius: 4px 0 0 4px; -} - -.textLayer .highlight.end { - border-radius: 0 4px 4px 0; -} - -.textLayer .highlight.middle { - border-radius: 0; -} - -.textLayer .highlight.selected { - background-color: rgba(0, 100, 0, 1); -} - -.textLayer ::-moz-selection { - background: rgba(0, 0, 255, 1); -} - -.textLayer ::selection { - background: rgba(0, 0, 255, 1); -} - -.textLayer .endOfContent { - display: block; - position: absolute; - left: 0; - top: 100%; - right: 0; - bottom: 0; - z-index: -1; - cursor: default; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; -} - -.textLayer .endOfContent.active { - top: 0; -} -/* textLayer ends */ - -/* annotationLayer starts */ -.annotationLayer section { - position: absolute; - text-align: initial; -} - -.annotationLayer .linkAnnotation > a, -.annotationLayer .buttonWidgetAnnotation.pushButton > a { - position: absolute; - font-size: 1em; - top: 0; - left: 0; - width: 100%; - height: 100%; -} - -.annotationLayer .linkAnnotation > a:hover, -.annotationLayer .buttonWidgetAnnotation.pushButton > a:hover { - opacity: 0.2; - background: rgba(255, 255, 0, 1); - box-shadow: 0 2px 10px rgba(255, 255, 0, 1); -} - -.annotationLayer .textAnnotation img { - position: absolute; - cursor: pointer; -} - -.annotationLayer .textWidgetAnnotation input, -.annotationLayer .textWidgetAnnotation textarea, -.annotationLayer .choiceWidgetAnnotation select, -.annotationLayer .buttonWidgetAnnotation.checkBox input, -.annotationLayer .buttonWidgetAnnotation.radioButton input { - background-color: rgba(0, 54, 255, 0.13); - border: 1px solid transparent; - box-sizing: border-box; - font-size: 9px; - height: 100%; - margin: 0; - padding: 0 3px; - vertical-align: top; - width: 100%; -} - -.annotationLayer .choiceWidgetAnnotation select option { - padding: 0; -} - -.annotationLayer .buttonWidgetAnnotation.radioButton input { - border-radius: 50%; -} - -.annotationLayer .textWidgetAnnotation textarea { - font: message-box; - font-size: 9px; - resize: none; -} - -.annotationLayer .textWidgetAnnotation input[disabled], -.annotationLayer .textWidgetAnnotation textarea[disabled], -.annotationLayer .choiceWidgetAnnotation select[disabled], -.annotationLayer .buttonWidgetAnnotation.checkBox input[disabled], -.annotationLayer .buttonWidgetAnnotation.radioButton input[disabled] { - background: none; - border: 1px solid transparent; - cursor: not-allowed; -} - -.annotationLayer .textWidgetAnnotation input:hover, -.annotationLayer .textWidgetAnnotation textarea:hover, -.annotationLayer .choiceWidgetAnnotation select:hover, -.annotationLayer .buttonWidgetAnnotation.checkBox input:hover, -.annotationLayer .buttonWidgetAnnotation.radioButton input:hover { - border: 1px solid rgba(0, 0, 0, 1); -} - -.annotationLayer .textWidgetAnnotation input:focus, -.annotationLayer .textWidgetAnnotation textarea:focus, -.annotationLayer .choiceWidgetAnnotation select:focus { - background: none; - border: 1px solid transparent; -} - -.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before, -.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after, -.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before { - background-color: rgba(0, 0, 0, 1); - content: ""; - display: block; - position: absolute; -} - -.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before, -.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after { - height: 80%; - left: 45%; - width: 1px; -} - -.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before { - transform: rotate(45deg); -} - -.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after { - transform: rotate(-45deg); -} - -.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before { - border-radius: 50%; - height: 50%; - left: 30%; - top: 20%; - width: 50%; -} - -.annotationLayer .textWidgetAnnotation input.comb { - font-family: monospace; - padding-left: 2px; - padding-right: 0; -} - -.annotationLayer .textWidgetAnnotation input.comb:focus { - /* - * Letter spacing is placed on the right side of each character. Hence, the - * letter spacing of the last character may be placed outside the visible - * area, causing horizontal scrolling. We avoid this by extending the width - * when the element has focus and revert this when it loses focus. - */ - width: 103%; -} - -.annotationLayer .buttonWidgetAnnotation.checkBox input, -.annotationLayer .buttonWidgetAnnotation.radioButton input { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - padding: 0; -} - -.annotationLayer .popupWrapper { - position: absolute; - width: 20em; -} - -.annotationLayer .popup { - position: absolute; - z-index: 200; - max-width: 20em; - background-color: rgba(255, 255, 153, 1); - box-shadow: 0 2px 5px rgba(136, 136, 136, 1); - border-radius: 2px; - padding: 6px; - margin-left: 5px; - cursor: pointer; - font: message-box; - font-size: 9px; - white-space: normal; - word-wrap: break-word; -} - -.annotationLayer .popup > * { - font-size: 9px; -} - -.annotationLayer .popup h1 { - display: inline-block; -} - -.annotationLayer .popup span { - display: inline-block; - margin-left: 5px; -} - -.annotationLayer .popup p { - border-top: 1px solid rgba(51, 51, 51, 1); - margin-top: 2px; - padding-top: 2px; -} - -.annotationLayer .highlightAnnotation, -.annotationLayer .underlineAnnotation, -.annotationLayer .squigglyAnnotation, -.annotationLayer .strikeoutAnnotation, -.annotationLayer .freeTextAnnotation, -.annotationLayer .lineAnnotation svg line, -.annotationLayer .squareAnnotation svg rect, -.annotationLayer .circleAnnotation svg ellipse, -.annotationLayer .polylineAnnotation svg polyline, -.annotationLayer .polygonAnnotation svg polygon, -.annotationLayer .caretAnnotation, -.annotationLayer .inkAnnotation svg polyline, -.annotationLayer .stampAnnotation, -.annotationLayer .fileAttachmentAnnotation { - cursor: pointer; -} -/* annotationLayer ends */ - /* errorWrapper starts */ #errorWrapper { background: #ff6e6e; @@ -345,135 +74,125 @@ z-index: 998; /* for seahub */ padding: 3px 6px; } - -#errorMessageLeft { - float: left; -} - -#errorMessageRight { - float: right; -} - -#errorMoreInfo { - background-color: #fff; - color: #060606; - border: 1px solid #bbbbbc; - padding: 3px; - margin: 3px; - width: 98%; -} - -.clearBoth { - clear: both; -} /* errorWrapper ends */ -/* toolbar, which contains 'loadingBar' */ +/* toolbar */ .toolbar { - position: relative; + position: absolute; left: 0; right: 0; + bottom: 0; /*z-index: 9999;*/ z-index: 998; /* 1048: for seahub 'file view' */ - cursor: default; } #toolbarContainer { - width: 100%; + box-shadow: none; + border-top: 1px solid #c9c9c9; + height: auto; } + +#loadingBar { + height: 0; +} + +input#pageNumber { + font-size: 12px; + height: 20px; + padding: 0 5px; + margin: 0 0 0 9px; +} + +#numPages.toolbarLabel { + margin: 0; + padding: 0 7px; +} + /* toolbar ends */ -/* loadingBar starts */ -#loadingBar { - position: absolute; - /*height: 4px;*/ - height: 0; /* for seahub */ - - background-color: #ededf0; - border-bottom: 1px solid #ccc; - - transition-duration: 200ms; - transition-timing-function: ease; -} -html[dir="ltr"] #loadingBar { - transition-property: left; - left: 0; - right: 0; -} -html[dir="rtl"] #loadingBar { - transition-property: right; - left: 0; - right: 0; -} -#loadingBar .loading-icon { - position: fixed; - top: 50%; - left: 50%; -} -#loadingBar .progress { +/* sidebar starts */ +#sidebarContainer { position: absolute; top: 0; - left: 0; - width: 0%; - height: 100%; - background-color: #0a84ff; - overflow: hidden; - transition: width 200ms; + bottom: 0; + border-top: none; + background: #fff; } -@-webkit-keyframes progressIndeterminate { - 0% { - left: -142px; - } - 100% { - left: 0; - } +#toolbarSidebar { + height: auto; + background: #fff; } -@keyframes progressIndeterminate { - 0% { - left: -142px; - } - 100% { - left: 0; - } +#thumbnailView { + width: 100%; + padding: 0; } -#loadingBar .progress.indeterminate { - background-color: #ddddde; - transition: none; +#thumbnails-header { } -#loadingBar .progress.indeterminate .glimmer { +#thumbnails-header .title { + font-size: 1rem; +} + +#thumbnails-header .sf2-icon-x3 { + font-family: 'seafile-font2'; +} + +#thumbnails-header .close-thumbnail-panel { + font-size: 1rem; + color: #999; +} + +#thumbnails-header .close-thumbnail-panel:hover { + color: #555; +} + +#thumbnailView .thumbnail { + float: none; + max-width: unset; + max-height: unset; + width: auto; + height: auto; + padding: 10px 0; + border: none; + border-radius: unset; + margin: 0 1px 0 0; + text-align: center; +} + +#thumbnailView .thumbnail.selected { + background: #f0f0f0; +} + +#thumbnailView .thumbnail .thumbnail-page-number { + font-size: .875rem; + color: #999; position: absolute; - top: 0; - left: 0; - height: 100%; - width: calc(100% + 150px); - background: repeating-linear-gradient( - 135deg, - #74b1ef 0, - #28282b 5px, - #28282b 45px, - #0a84ff 55px, - #0a84ff 95px, - #74b1ef 100px - ); - -webkit-animation: progressIndeterminate 1s linear infinite; - animation: progressIndeterminate 1s linear infinite; + right: 100%; + bottom: 0; } -/* loadingBar ends */ + +#thumbnailView .thumbnail .thumbnailImage { + border: 1px solid #ddd; + border-radius: 3px; +} + +#thumbnailView .thumbnail.selected .thumbnailImage { + border: 2px solid #ff9800; +} + +#sidebarContent { + inset-block: 51.5px 0; +} + +.splitToolbarButton > .toolbarButton { + float: none; +} +/* sidebar ends */ /* overlay, passwordOverlay */ -.overlayButton { - width: auto; - margin: 3px 4px 2px !important; - padding: 2px 11px; - color: #0c0c0d; - background-color: rgba(12, 12, 13, 0.1); - border: 0 none !important; -} - #overlayContainer { display: table; position: absolute; @@ -484,64 +203,8 @@ html[dir="rtl"] #loadingBar { z-index: 999; /* 1049: for seahub 'share' dialog */ } -#overlayContainer > * { - overflow: auto; - -webkit-overflow-scrolling: touch; +@media print { + #wrapper { + display: none; + } } - -#overlayContainer > .container { - display: table-cell; - vertical-align: middle; - text-align: center; -} - -#overlayContainer > .container > .dialog { - display: inline-block; - padding: 15px; - border-spacing: 4px; - color: #0c0c0d; - font-size: 12px; - line-height: 14px; - background-color: #fff; - border: 1px solid rgba(0, 0, 0, 0.5); - border-radius: 4px; - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); -} - -.dialog > .row { - display: table-row; -} - -.dialog > .row > * { - display: table-cell; -} - -.dialog .toolbarField { - margin: 5px 0; -} - -.dialog .separator { - display: block; - margin: 4px 0; - height: 1px; - width: 100%; - background-color: rgba(0, 0, 0, 0.3); -} - -.dialog .buttonRow { - text-align: center; - vertical-align: middle; -} - -.dialog :link { - color: rgba(255, 255, 255, 1); -} - -#passwordOverlay > .dialog { - text-align: center; -} - -#passwordOverlay .toolbarField { - width: 200px; -} -/* overlay ends */ diff --git a/frontend/src/css/shared-file-view.css b/frontend/src/css/shared-file-view.css index 93696d1b48..efbb5c89f0 100644 --- a/frontend/src/css/shared-file-view.css +++ b/frontend/src/css/shared-file-view.css @@ -21,8 +21,9 @@ .shared-file-view-head { width: 950px; - margin: 0 auto; height: 60px; + background: #fff; + margin: 0 auto; display: flex; align-items:center; justify-content: space-between; diff --git a/frontend/src/shared-file-view-pdf.js b/frontend/src/shared-file-view-pdf.js index 427a7cd7bb..6ec24fb97f 100644 --- a/frontend/src/shared-file-view-pdf.js +++ b/frontend/src/shared-file-view-pdf.js @@ -10,7 +10,7 @@ const { err } = window.shared.pageOptions; class SharedFileViewPDF extends React.Component { render() { - return } />; + return } fileType="pdf" />; } } diff --git a/media/js/pdf/build/pdf.js b/media/js/pdf/build/pdf.js index bd12dc6eb4..e1bee3d61a 100644 --- a/media/js/pdf/build/pdf.js +++ b/media/js/pdf/build/pdf.js @@ -1,8 +1,8 @@ /** * @licstart The following is the entire license notice for the - * Javascript code in this page + * JavaScript code in this page * - * Copyright 2021 Mozilla Foundation + * Copyright 2023 Mozilla Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,6 +17,16419 @@ * limitations under the License. * * @licend The above is the entire license notice for the - * Javascript code in this page + * JavaScript code in this page */ -!function webpackUniversalModuleDefinition(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("pdfjs-dist/build/pdf",[],t):"object"==typeof exports?exports["pdfjs-dist/build/pdf"]=t():e["pdfjs-dist/build/pdf"]=e.pdfjsLib=t()}(this,(function(){return(()=>{"use strict";var __webpack_modules__=[,(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.addLinkAttributes=function addLinkAttributes(e,{url:t,target:r,rel:n,enabled:o=!0}={}){(0,s.assert)(t&&"string"==typeof t,'addLinkAttributes: A valid "url" parameter must provided.');const l=(0,s.removeNullCharacters)(t);if(o)e.href=e.title=l;else{e.href="";e.title=`Disabled: ${l}`;e.onclick=()=>!1}let c="";switch(r){case i.NONE:break;case i.SELF:c="_self";break;case i.BLANK:c="_blank";break;case i.PARENT:c="_parent";break;case i.TOP:c="_top"}e.target=c;e.rel="string"==typeof n?n:a};t.deprecated=function deprecated(e){console.log("Deprecated API usage: "+e)};t.getFilenameFromUrl=function getFilenameFromUrl(e){const t=e.indexOf("#"),r=e.indexOf("?"),s=Math.min(t>0?t:e.length,r>0?r:e.length);return e.substring(e.lastIndexOf("/",s)+1,s)};t.getPdfFilenameFromUrl=function getPdfFilenameFromUrl(e,t="document.pdf"){if("string"!=typeof e)return t;if(isDataScheme(e)){(0,s.warn)('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.');return t}const r=/[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i,n=/^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/.exec(e);let a=r.exec(n[1])||r.exec(n[2])||r.exec(n[3]);if(a){a=a[0];if(a.includes("%"))try{a=r.exec(decodeURIComponent(a))[0]}catch(e){}}return a||t};t.getXfaPageViewport=function getXfaPageViewport(e,{scale:t=1,rotation:r=0}){const{width:s,height:n}=e.attributes.style,a=[0,0,parseInt(s),parseInt(n)];return new PageViewport({viewBox:a,scale:t,rotation:r})};t.isDataScheme=isDataScheme;t.isPdfFile=function isPdfFile(e){return"string"==typeof e&&/\.pdf$/i.test(e)};t.isValidFetchUrl=isValidFetchUrl;t.loadScript=function loadScript(e,t=!1){return new Promise(((r,s)=>{const n=document.createElement("script");n.src=e;n.onload=function(e){t&&n.remove();r(e)};n.onerror=function(){s(new Error(`Cannot load script at: ${n.src}`))};(document.head||document.documentElement).appendChild(n)}))};t.StatTimer=t.RenderingCancelledException=t.PDFDateString=t.PageViewport=t.LinkTarget=t.DOMSVGFactory=t.DOMStandardFontDataFactory=t.DOMCMapReaderFactory=t.DOMCanvasFactory=t.DEFAULT_LINK_REL=void 0;var s=r(2),n=r(5);const a="noopener noreferrer nofollow";t.DEFAULT_LINK_REL=a;class DOMCanvasFactory extends n.BaseCanvasFactory{constructor({ownerDocument:e=globalThis.document}={}){super();this._document=e}_createCanvas(e,t){const r=this._document.createElement("canvas");r.width=e;r.height=t;return r}}t.DOMCanvasFactory=DOMCanvasFactory;async function fetchData(e,t=!1){if(isValidFetchUrl(e,document.baseURI)){const r=await fetch(e);if(!r.ok)throw new Error(r.statusText);return t?new Uint8Array(await r.arrayBuffer()):(0,s.stringToBytes)(await r.text())}return new Promise(((r,n)=>{const a=new XMLHttpRequest;a.open("GET",e,!0);t&&(a.responseType="arraybuffer");a.onreadystatechange=()=>{if(a.readyState===XMLHttpRequest.DONE){if(200===a.status||0===a.status){let e;t&&a.response?e=new Uint8Array(a.response):!t&&a.responseText&&(e=(0,s.stringToBytes)(a.responseText));if(e){r(e);return}}n(new Error(a.statusText))}};a.send(null)}))}class DOMCMapReaderFactory extends n.BaseCMapReaderFactory{_fetchData(e,t){return fetchData(e,this.isCompressed).then((e=>({cMapData:e,compressionType:t})))}}t.DOMCMapReaderFactory=DOMCMapReaderFactory;class DOMStandardFontDataFactory extends n.BaseStandardFontDataFactory{_fetchData(e){return fetchData(e,!0)}}t.DOMStandardFontDataFactory=DOMStandardFontDataFactory;class DOMSVGFactory extends n.BaseSVGFactory{_createSVG(e){return document.createElementNS("http://www.w3.org/2000/svg",e)}}t.DOMSVGFactory=DOMSVGFactory;class PageViewport{constructor({viewBox:e,scale:t,rotation:r,offsetX:s=0,offsetY:n=0,dontFlip:a=!1}){this.viewBox=e;this.scale=t;this.rotation=r;this.offsetX=s;this.offsetY=n;const i=(e[2]+e[0])/2,o=(e[3]+e[1])/2;let l,c,h,d,u,p,g,f;(r%=360)<0&&(r+=360);switch(r){case 180:l=-1;c=0;h=0;d=1;break;case 90:l=0;c=1;h=1;d=0;break;case 270:l=0;c=-1;h=-1;d=0;break;case 0:l=1;c=0;h=0;d=-1;break;default:throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.")}if(a){h=-h;d=-d}if(0===l){u=Math.abs(o-e[1])*t+s;p=Math.abs(i-e[0])*t+n;g=Math.abs(e[3]-e[1])*t;f=Math.abs(e[2]-e[0])*t}else{u=Math.abs(i-e[0])*t+s;p=Math.abs(o-e[1])*t+n;g=Math.abs(e[2]-e[0])*t;f=Math.abs(e[3]-e[1])*t}this.transform=[l*t,c*t,h*t,d*t,u-l*t*i-h*t*o,p-c*t*i-d*t*o];this.width=g;this.height=f}clone({scale:e=this.scale,rotation:t=this.rotation,offsetX:r=this.offsetX,offsetY:s=this.offsetY,dontFlip:n=!1}={}){return new PageViewport({viewBox:this.viewBox.slice(),scale:e,rotation:t,offsetX:r,offsetY:s,dontFlip:n})}convertToViewportPoint(e,t){return s.Util.applyTransform([e,t],this.transform)}convertToViewportRectangle(e){const t=s.Util.applyTransform([e[0],e[1]],this.transform),r=s.Util.applyTransform([e[2],e[3]],this.transform);return[t[0],t[1],r[0],r[1]]}convertToPdfPoint(e,t){return s.Util.applyInverseTransform([e,t],this.transform)}}t.PageViewport=PageViewport;class RenderingCancelledException extends s.BaseException{constructor(e,t){super(e);this.type=t}}t.RenderingCancelledException=RenderingCancelledException;const i={NONE:0,SELF:1,BLANK:2,PARENT:3,TOP:4};t.LinkTarget=i;function isDataScheme(e){const t=e.length;let r=0;for(;rt&&(t=r.length)}for(const r of this.times){const s=r.end-r.start;e.push(`${r.name.padEnd(t)} ${s}ms\n`)}return e.join("")}};function isValidFetchUrl(e,t){try{const{protocol:r}=t?new URL(e,t):new URL(e);return"http:"===r||"https:"===r}catch(e){return!1}}let o;t.PDFDateString=class PDFDateString{static toDateObject(e){if(!e||!(0,s.isString)(e))return null;o||(o=new RegExp("^D:(\\d{4})(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?([Z|+|-])?(\\d{2})?'?(\\d{2})?'?"));const t=o.exec(e);if(!t)return null;const r=parseInt(t[1],10);let n=parseInt(t[2],10);n=n>=1&&n<=12?n-1:0;let a=parseInt(t[3],10);a=a>=1&&a<=31?a:1;let i=parseInt(t[4],10);i=i>=0&&i<=23?i:0;let l=parseInt(t[5],10);l=l>=0&&l<=59?l:0;let c=parseInt(t[6],10);c=c>=0&&c<=59?c:0;const h=t[7]||"Z";let d=parseInt(t[8],10);d=d>=0&&d<=23?d:0;let u=parseInt(t[9],10)||0;u=u>=0&&u<=59?u:0;if("-"===h){i+=d;l+=u}else if("+"===h){i-=d;l-=u}return new Date(Date.UTC(r,n,a,i,l,c))}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.arrayByteLength=arrayByteLength;t.arraysToBytes=function arraysToBytes(e){const t=e.length;if(1===t&&e[0]instanceof Uint8Array)return e[0];let r=0;for(let s=0;s>2]+s[(3&a)<<4|i>>4]+s[t+1>6:64]+s[t+2t});e.promise=new Promise((function(r,s){e.resolve=function(e){t=!0;r(e)};e.reject=function(e){t=!0;s(e)}}));return e};t.createValidAbsoluteUrl=function createValidAbsoluteUrl(e,t){if(!e)return null;try{const r=t?new URL(e,t):new URL(e);if(function _isValidProtocol(e){if(!e)return!1;switch(e.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}(r))return r}catch(e){}return null};t.escapeString=function escapeString(e){return e.replace(/([()\\\n\r])/g,(e=>"\n"===e?"\\n":"\r"===e?"\\r":`\\${e}`))};t.getModificationDate=function getModificationDate(e=new Date){return[e.getUTCFullYear().toString(),(e.getUTCMonth()+1).toString().padStart(2,"0"),e.getUTCDate().toString().padStart(2,"0"),e.getUTCHours().toString().padStart(2,"0"),e.getUTCMinutes().toString().padStart(2,"0"),e.getUTCSeconds().toString().padStart(2,"0")].join("")};t.getVerbosityLevel=function getVerbosityLevel(){return n};t.info=function info(e){n>=s.INFOS&&console.log(`Info: ${e}`)};t.isArrayBuffer=function isArrayBuffer(e){return"object"==typeof e&&null!==e&&void 0!==e.byteLength};t.isArrayEqual=function isArrayEqual(e,t){if(e.length!==t.length)return!1;for(let r=0,s=e.length;r>24&255,e>>16&255,e>>8&255,255&e)};t.stringToBytes=stringToBytes;t.stringToPDFString=function stringToPDFString(e){const t=e.length,r=[];if("þ"===e[0]&&"ÿ"===e[1])for(let s=2;s>8&255),String.fromCharCode(255&s))}return t.join("")};t.stringToUTF8String=function stringToUTF8String(e){return decodeURIComponent(escape(e))};t.unreachable=unreachable;t.utf8StringToString=function utf8StringToString(e){return unescape(encodeURIComponent(e))};t.warn=warn;t.VerbosityLevel=t.Util=t.UNSUPPORTED_FEATURES=t.UnknownErrorException=t.UnexpectedResponseException=t.TextRenderingMode=t.StreamType=t.PermissionFlag=t.PasswordResponses=t.PasswordException=t.PageActionEventType=t.OPS=t.MissingPDFException=t.IsLittleEndianCached=t.IsEvalSupportedCached=t.InvalidPDFException=t.ImageKind=t.IDENTITY_MATRIX=t.FormatError=t.FontType=t.FONT_IDENTITY_MATRIX=t.DocumentActionEventType=t.CMapCompressionType=t.BaseException=t.AnnotationType=t.AnnotationStateModelType=t.AnnotationReviewState=t.AnnotationReplyType=t.AnnotationMarkedState=t.AnnotationFlag=t.AnnotationFieldFlag=t.AnnotationBorderStyleType=t.AnnotationActionEventType=t.AbortException=void 0;r(3);t.IDENTITY_MATRIX=[1,0,0,1,0,0];t.FONT_IDENTITY_MATRIX=[.001,0,0,.001,0,0];t.PermissionFlag={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048};t.TextRenderingMode={FILL:0,STROKE:1,FILL_STROKE:2,INVISIBLE:3,FILL_ADD_TO_PATH:4,STROKE_ADD_TO_PATH:5,FILL_STROKE_ADD_TO_PATH:6,ADD_TO_PATH:7,FILL_STROKE_MASK:3,ADD_TO_PATH_FLAG:4};t.ImageKind={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3};t.AnnotationType={TEXT:1,LINK:2,FREETEXT:3,LINE:4,SQUARE:5,CIRCLE:6,POLYGON:7,POLYLINE:8,HIGHLIGHT:9,UNDERLINE:10,SQUIGGLY:11,STRIKEOUT:12,STAMP:13,CARET:14,INK:15,POPUP:16,FILEATTACHMENT:17,SOUND:18,MOVIE:19,WIDGET:20,SCREEN:21,PRINTERMARK:22,TRAPNET:23,WATERMARK:24,THREED:25,REDACT:26};t.AnnotationStateModelType={MARKED:"Marked",REVIEW:"Review"};t.AnnotationMarkedState={MARKED:"Marked",UNMARKED:"Unmarked"};t.AnnotationReviewState={ACCEPTED:"Accepted",REJECTED:"Rejected",CANCELLED:"Cancelled",COMPLETED:"Completed",NONE:"None"};t.AnnotationReplyType={GROUP:"Group",REPLY:"R"};t.AnnotationFlag={INVISIBLE:1,HIDDEN:2,PRINT:4,NOZOOM:8,NOROTATE:16,NOVIEW:32,READONLY:64,LOCKED:128,TOGGLENOVIEW:256,LOCKEDCONTENTS:512};t.AnnotationFieldFlag={READONLY:1,REQUIRED:2,NOEXPORT:4,MULTILINE:4096,PASSWORD:8192,NOTOGGLETOOFF:16384,RADIO:32768,PUSHBUTTON:65536,COMBO:131072,EDIT:262144,SORT:524288,FILESELECT:1048576,MULTISELECT:2097152,DONOTSPELLCHECK:4194304,DONOTSCROLL:8388608,COMB:16777216,RICHTEXT:33554432,RADIOSINUNISON:33554432,COMMITONSELCHANGE:67108864};t.AnnotationBorderStyleType={SOLID:1,DASHED:2,BEVELED:3,INSET:4,UNDERLINE:5};t.AnnotationActionEventType={E:"Mouse Enter",X:"Mouse Exit",D:"Mouse Down",U:"Mouse Up",Fo:"Focus",Bl:"Blur",PO:"PageOpen",PC:"PageClose",PV:"PageVisible",PI:"PageInvisible",K:"Keystroke",F:"Format",V:"Validate",C:"Calculate"};t.DocumentActionEventType={WC:"WillClose",WS:"WillSave",DS:"DidSave",WP:"WillPrint",DP:"DidPrint"};t.PageActionEventType={O:"PageOpen",C:"PageClose"};t.StreamType={UNKNOWN:"UNKNOWN",FLATE:"FLATE",LZW:"LZW",DCT:"DCT",JPX:"JPX",JBIG:"JBIG",A85:"A85",AHX:"AHX",CCF:"CCF",RLX:"RLX"};t.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"};const s={ERRORS:0,WARNINGS:1,INFOS:5};t.VerbosityLevel=s;t.CMapCompressionType={NONE:0,BINARY:1,STREAM:2};t.OPS={dependency:1,setLineWidth:2,setLineCap:3,setLineJoin:4,setMiterLimit:5,setDash:6,setRenderingIntent:7,setFlatness:8,setGState:9,save:10,restore:11,transform:12,moveTo:13,lineTo:14,curveTo:15,curveTo2:16,curveTo3:17,closePath:18,rectangle:19,stroke:20,closeStroke:21,fill:22,eoFill:23,fillStroke:24,eoFillStroke:25,closeFillStroke:26,closeEOFillStroke:27,endPath:28,clip:29,eoClip:30,beginText:31,endText:32,setCharSpacing:33,setWordSpacing:34,setHScale:35,setLeading:36,setFont:37,setTextRenderingMode:38,setTextRise:39,moveText:40,setLeadingMoveText:41,setTextMatrix:42,nextLine:43,showText:44,showSpacedText:45,nextLineShowText:46,nextLineSetSpacingShowText:47,setCharWidth:48,setCharWidthAndBounds:49,setStrokeColorSpace:50,setFillColorSpace:51,setStrokeColor:52,setStrokeColorN:53,setFillColor:54,setFillColorN:55,setStrokeGray:56,setFillGray:57,setStrokeRGBColor:58,setFillRGBColor:59,setStrokeCMYKColor:60,setFillCMYKColor:61,shadingFill:62,beginInlineImage:63,beginImageData:64,endInlineImage:65,paintXObject:66,markPoint:67,markPointProps:68,beginMarkedContent:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,paintFormXObjectBegin:74,paintFormXObjectEnd:75,beginGroup:76,endGroup:77,beginAnnotations:78,endAnnotations:79,beginAnnotation:80,endAnnotation:81,paintJpegXObject:82,paintImageMaskXObject:83,paintImageMaskXObjectGroup:84,paintImageXObject:85,paintInlineImageXObject:86,paintInlineImageXObjectGroup:87,paintImageXObjectRepeat:88,paintImageMaskXObjectRepeat:89,paintSolidColorImageMask:90,constructPath:91};t.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"};t.PasswordResponses={NEED_PASSWORD:1,INCORRECT_PASSWORD:2};let n=s.WARNINGS;function warn(e){n>=s.WARNINGS&&console.log(`Warning: ${e}`)}function unreachable(e){throw new Error(e)}function assert(e,t){e||unreachable(t)}function shadow(e,t,r){Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!1});return r}const a=function BaseExceptionClosure(){function BaseException(e){this.constructor===BaseException&&unreachable("Cannot initialize BaseException.");this.message=e;this.name=this.constructor.name}BaseException.prototype=new Error;BaseException.constructor=BaseException;return BaseException}();t.BaseException=a;t.PasswordException=class PasswordException extends a{constructor(e,t){super(e);this.code=t}};t.UnknownErrorException=class UnknownErrorException extends a{constructor(e,t){super(e);this.details=t}};t.InvalidPDFException=class InvalidPDFException extends a{};t.MissingPDFException=class MissingPDFException extends a{};t.UnexpectedResponseException=class UnexpectedResponseException extends a{constructor(e,t){super(e);this.status=t}};t.FormatError=class FormatError extends a{};t.AbortException=class AbortException extends a{};const i=/\x00/g;function stringToBytes(e){assert("string"==typeof e,"Invalid argument for stringToBytes");const t=e.length,r=new Uint8Array(t);for(let s=0;se.toString(16).padStart(2,"0")));class Util{static makeHexColor(e,t,r){return`#${c[e]}${c[t]}${c[r]}`}static transform(e,t){return[e[0]*t[0]+e[2]*t[1],e[1]*t[0]+e[3]*t[1],e[0]*t[2]+e[2]*t[3],e[1]*t[2]+e[3]*t[3],e[0]*t[4]+e[2]*t[5]+e[4],e[1]*t[4]+e[3]*t[5]+e[5]]}static applyTransform(e,t){return[e[0]*t[0]+e[1]*t[2]+t[4],e[0]*t[1]+e[1]*t[3]+t[5]]}static applyInverseTransform(e,t){const r=t[0]*t[3]-t[1]*t[2];return[(e[0]*t[3]-e[1]*t[2]+t[2]*t[5]-t[4]*t[3])/r,(-e[0]*t[1]+e[1]*t[0]+t[4]*t[1]-t[5]*t[0])/r]}static getAxialAlignedBoundingBox(e,t){const r=Util.applyTransform(e,t),s=Util.applyTransform(e.slice(2,4),t),n=Util.applyTransform([e[0],e[3]],t),a=Util.applyTransform([e[2],e[1]],t);return[Math.min(r[0],s[0],n[0],a[0]),Math.min(r[1],s[1],n[1],a[1]),Math.max(r[0],s[0],n[0],a[0]),Math.max(r[1],s[1],n[1],a[1])]}static inverseTransform(e){const t=e[0]*e[3]-e[1]*e[2];return[e[3]/t,-e[1]/t,-e[2]/t,e[0]/t,(e[2]*e[5]-e[4]*e[3])/t,(e[4]*e[1]-e[5]*e[0])/t]}static apply3dTransform(e,t){return[e[0]*t[0]+e[1]*t[1]+e[2]*t[2],e[3]*t[0]+e[4]*t[1]+e[5]*t[2],e[6]*t[0]+e[7]*t[1]+e[8]*t[2]]}static singularValueDecompose2dScale(e){const t=[e[0],e[2],e[1],e[3]],r=e[0]*t[0]+e[1]*t[2],s=e[0]*t[1]+e[1]*t[3],n=e[2]*t[0]+e[3]*t[2],a=e[2]*t[1]+e[3]*t[3],i=(r+a)/2,o=Math.sqrt((r+a)**2-4*(r*a-n*s))/2,l=i+o||1,c=i-o||1;return[Math.sqrt(l),Math.sqrt(c)]}static normalizeRect(e){const t=e.slice(0);if(e[0]>e[2]){t[0]=e[2];t[2]=e[0]}if(e[1]>e[3]){t[1]=e[3];t[3]=e[1]}return t}static intersect(e,t){function compare(e,t){return e-t}const r=[e[0],e[2],t[0],t[2]].sort(compare),s=[e[1],e[3],t[1],t[3]].sort(compare),n=[];e=Util.normalizeRect(e);t=Util.normalizeRect(t);if(!(r[0]===e[0]&&r[1]===t[0]||r[0]===t[0]&&r[1]===e[0]))return null;n[0]=r[1];n[2]=r[2];if(!(s[0]===e[1]&&s[1]===t[1]||s[0]===t[1]&&s[1]===e[1]))return null;n[1]=s[1];n[3]=s[2];return n}}t.Util=Util;const h=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,728,711,710,729,733,731,730,732,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8226,8224,8225,8230,8212,8211,402,8260,8249,8250,8722,8240,8222,8220,8221,8216,8217,8218,8482,64257,64258,321,338,352,376,381,305,322,339,353,382,0,8364]},(e,t,r)=>{r(4)},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.isNodeJS=void 0;const r=!("object"!=typeof process||process+""!="[object process]"||process.versions.nw||process.versions.electron&&process.type&&"browser"!==process.type);t.isNodeJS=r},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.BaseSVGFactory=t.BaseStandardFontDataFactory=t.BaseCMapReaderFactory=t.BaseCanvasFactory=void 0;var s=r(2);class BaseCanvasFactory{constructor(){this.constructor===BaseCanvasFactory&&(0,s.unreachable)("Cannot initialize BaseCanvasFactory.")}create(e,t){if(e<=0||t<=0)throw new Error("Invalid canvas size");const r=this._createCanvas(e,t);return{canvas:r,context:r.getContext("2d")}}reset(e,t,r){if(!e.canvas)throw new Error("Canvas is not specified");if(t<=0||r<=0)throw new Error("Invalid canvas size");e.canvas.width=t;e.canvas.height=r}destroy(e){if(!e.canvas)throw new Error("Canvas is not specified");e.canvas.width=0;e.canvas.height=0;e.canvas=null;e.context=null}_createCanvas(e,t){(0,s.unreachable)("Abstract method `_createCanvas` called.")}}t.BaseCanvasFactory=BaseCanvasFactory;class BaseCMapReaderFactory{constructor({baseUrl:e=null,isCompressed:t=!1}){this.constructor===BaseCMapReaderFactory&&(0,s.unreachable)("Cannot initialize BaseCMapReaderFactory.");this.baseUrl=e;this.isCompressed=t}async fetch({name:e}){if(!this.baseUrl)throw new Error('The CMap "baseUrl" parameter must be specified, ensure that the "cMapUrl" and "cMapPacked" API parameters are provided.');if(!e)throw new Error("CMap name must be specified.");const t=this.baseUrl+e+(this.isCompressed?".bcmap":""),r=this.isCompressed?s.CMapCompressionType.BINARY:s.CMapCompressionType.NONE;return this._fetchData(t,r).catch((e=>{throw new Error(`Unable to load ${this.isCompressed?"binary ":""}CMap at: ${t}`)}))}_fetchData(e,t){(0,s.unreachable)("Abstract method `_fetchData` called.")}}t.BaseCMapReaderFactory=BaseCMapReaderFactory;class BaseStandardFontDataFactory{constructor({baseUrl:e=null}){this.constructor===BaseStandardFontDataFactory&&(0,s.unreachable)("Cannot initialize BaseStandardFontDataFactory.");this.baseUrl=e}async fetch({filename:e}){if(!this.baseUrl)throw new Error('The standard font "baseUrl" parameter must be specified, ensure that the "standardFontDataUrl" API parameter is provided.');if(!e)throw new Error("Font filename must be specified.");const t=`${this.baseUrl}${e}`;return this._fetchData(t).catch((e=>{throw new Error(`Unable to load font data at: ${t}`)}))}_fetchData(e){(0,s.unreachable)("Abstract method `_fetchData` called.")}}t.BaseStandardFontDataFactory=BaseStandardFontDataFactory;class BaseSVGFactory{constructor(){this.constructor===BaseSVGFactory&&(0,s.unreachable)("Cannot initialize BaseSVGFactory.")}create(e,t){if(e<=0||t<=0)throw new Error("Invalid SVG dimensions");const r=this._createSVG("svg:svg");r.setAttribute("version","1.1");r.setAttribute("width",`${e}px`);r.setAttribute("height",`${t}px`);r.setAttribute("preserveAspectRatio","none");r.setAttribute("viewBox",`0 0 ${e} ${t}`);return r}createElement(e){if("string"!=typeof e)throw new Error("Invalid SVG element type");return this._createSVG(e)}_createSVG(e){(0,s.unreachable)("Abstract method `_createSVG` called.")}}t.BaseSVGFactory=BaseSVGFactory},(__unused_webpack_module,exports,__w_pdfjs_require__)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.getDocument=getDocument;exports.setPDFNetworkStreamFactory=setPDFNetworkStreamFactory;exports.version=exports.PDFWorker=exports.PDFPageProxy=exports.PDFDocumentProxy=exports.PDFDataRangeTransport=exports.LoopbackPort=exports.DefaultStandardFontDataFactory=exports.DefaultCMapReaderFactory=exports.DefaultCanvasFactory=exports.build=void 0;var _util=__w_pdfjs_require__(2),_display_utils=__w_pdfjs_require__(1),_font_loader=__w_pdfjs_require__(7),_node_utils=__w_pdfjs_require__(8),_annotation_storage=__w_pdfjs_require__(9),_canvas=__w_pdfjs_require__(10),_worker_options=__w_pdfjs_require__(12),_is_node=__w_pdfjs_require__(4),_message_handler=__w_pdfjs_require__(13),_metadata=__w_pdfjs_require__(14),_optional_content_config=__w_pdfjs_require__(15),_transport_stream=__w_pdfjs_require__(16);const DEFAULT_RANGE_CHUNK_SIZE=65536,RENDERING_CANCELLED_TIMEOUT=100,DefaultCanvasFactory=_is_node.isNodeJS?_node_utils.NodeCanvasFactory:_display_utils.DOMCanvasFactory;exports.DefaultCanvasFactory=DefaultCanvasFactory;const DefaultCMapReaderFactory=_is_node.isNodeJS?_node_utils.NodeCMapReaderFactory:_display_utils.DOMCMapReaderFactory;exports.DefaultCMapReaderFactory=DefaultCMapReaderFactory;const DefaultStandardFontDataFactory=_is_node.isNodeJS?_node_utils.NodeStandardFontDataFactory:_display_utils.DOMStandardFontDataFactory;exports.DefaultStandardFontDataFactory=DefaultStandardFontDataFactory;let createPDFNetworkStream;function setPDFNetworkStreamFactory(e){createPDFNetworkStream=e}function getDocument(e){const t=new PDFDocumentLoadingTask;let r;if("string"==typeof e||e instanceof URL)r={url:e};else if((0,_util.isArrayBuffer)(e))r={data:e};else if(e instanceof PDFDataRangeTransport)r={range:e};else{if("object"!=typeof e)throw new Error("Invalid parameter in getDocument, need either string, URL, Uint8Array, or parameter object.");if(!e.url&&!e.data&&!e.range)throw new Error("Invalid parameter object: need either .data, .range or .url");r=e}const s=Object.create(null);let n=null,a=null;for(const e in r){const t=r[e];switch(e){case"url":if("undefined"!=typeof window)try{s[e]=new URL(t,window.location).href;continue}catch(e){(0,_util.warn)(`Cannot create valid URL: "${e}".`)}else if("string"==typeof t||t instanceof URL){s[e]=t.toString();continue}throw new Error("Invalid PDF url data: either string or URL-object is expected in the url property.");case"range":n=t;continue;case"worker":a=t;continue;case"data":if(_is_node.isNodeJS&&"undefined"!=typeof Buffer&&t instanceof Buffer)s[e]=new Uint8Array(t);else{if(t instanceof Uint8Array)break;if("string"==typeof t)s[e]=(0,_util.stringToBytes)(t);else if("object"!=typeof t||null===t||isNaN(t.length)){if(!(0,_util.isArrayBuffer)(t))throw new Error("Invalid PDF binary data: either typed array, string, or array-like object is expected in the data property.");s[e]=new Uint8Array(t)}else s[e]=new Uint8Array(t)}continue}s[e]=t}s.rangeChunkSize=s.rangeChunkSize||DEFAULT_RANGE_CHUNK_SIZE;s.CMapReaderFactory=s.CMapReaderFactory||DefaultCMapReaderFactory;s.StandardFontDataFactory=s.StandardFontDataFactory||DefaultStandardFontDataFactory;s.ignoreErrors=!0!==s.stopAtErrors;s.fontExtraProperties=!0===s.fontExtraProperties;s.pdfBug=!0===s.pdfBug;s.enableXfa=!0===s.enableXfa;("string"!=typeof s.docBaseUrl||(0,_display_utils.isDataScheme)(s.docBaseUrl))&&(s.docBaseUrl=null);Number.isInteger(s.maxImageSize)||(s.maxImageSize=-1);"boolean"!=typeof s.useWorkerFetch&&(s.useWorkerFetch=s.CMapReaderFactory===_display_utils.DOMCMapReaderFactory&&s.StandardFontDataFactory===_display_utils.DOMStandardFontDataFactory);"boolean"!=typeof s.isEvalSupported&&(s.isEvalSupported=!0);"boolean"!=typeof s.disableFontFace&&(s.disableFontFace=_is_node.isNodeJS);"boolean"!=typeof s.useSystemFonts&&(s.useSystemFonts=!_is_node.isNodeJS&&!s.disableFontFace);void 0===s.ownerDocument&&(s.ownerDocument=globalThis.document);"boolean"!=typeof s.disableRange&&(s.disableRange=!1);"boolean"!=typeof s.disableStream&&(s.disableStream=!1);"boolean"!=typeof s.disableAutoFetch&&(s.disableAutoFetch=!1);(0,_util.setVerbosityLevel)(s.verbosity);if(!a){const e={verbosity:s.verbosity,port:_worker_options.GlobalWorkerOptions.workerPort};a=e.port?PDFWorker.fromPort(e):new PDFWorker(e);t._worker=a}const i=t.docId;a.promise.then((function(){if(t.destroyed)throw new Error("Loading aborted");const e=_fetchDocument(a,s,n,i),r=new Promise((function(e){let t;n?t=new _transport_stream.PDFDataTransportStream({length:s.length,initialData:s.initialData,progressiveDone:s.progressiveDone,contentDispositionFilename:s.contentDispositionFilename,disableRange:s.disableRange,disableStream:s.disableStream},n):s.data||(t=createPDFNetworkStream({url:s.url,length:s.length,httpHeaders:s.httpHeaders,withCredentials:s.withCredentials,rangeChunkSize:s.rangeChunkSize,disableRange:s.disableRange,disableStream:s.disableStream}));e(t)}));return Promise.all([e,r]).then((function([e,r]){if(t.destroyed)throw new Error("Loading aborted");const n=new _message_handler.MessageHandler(i,e,a.port);n.postMessageTransfers=a.postMessageTransfers;const o=new WorkerTransport(n,t,r,s);t._transport=o;n.send("Ready",null)}))})).catch(t._capability.reject);return t}function _fetchDocument(e,t,r,s){if(e.destroyed)return Promise.reject(new Error("Worker was destroyed"));if(r){t.length=r.length;t.initialData=r.initialData;t.progressiveDone=r.progressiveDone;t.contentDispositionFilename=r.contentDispositionFilename}return e.messageHandler.sendWithPromise("GetDocRequest",{docId:s,apiVersion:"2.10.377",source:{data:t.data,url:t.url,password:t.password,disableAutoFetch:t.disableAutoFetch,rangeChunkSize:t.rangeChunkSize,length:t.length},maxImageSize:t.maxImageSize,disableFontFace:t.disableFontFace,postMessageTransfers:e.postMessageTransfers,docBaseUrl:t.docBaseUrl,ignoreErrors:t.ignoreErrors,isEvalSupported:t.isEvalSupported,fontExtraProperties:t.fontExtraProperties,enableXfa:t.enableXfa,useSystemFonts:t.useSystemFonts,cMapUrl:t.useWorkerFetch?t.cMapUrl:null,standardFontDataUrl:t.useWorkerFetch?t.standardFontDataUrl:null}).then((function(t){if(e.destroyed)throw new Error("Worker was destroyed");return t}))}const PDFDocumentLoadingTask=function PDFDocumentLoadingTaskClosure(){let e=0;return class PDFDocumentLoadingTask{constructor(){this._capability=(0,_util.createPromiseCapability)();this._transport=null;this._worker=null;this.docId="d"+e++;this.destroyed=!1;this.onPassword=null;this.onProgress=null;this.onUnsupportedFeature=null}get promise(){return this._capability.promise}destroy(){this.destroyed=!0;return(this._transport?this._transport.destroy():Promise.resolve()).then((()=>{this._transport=null;if(this._worker){this._worker.destroy();this._worker=null}}))}}}();class PDFDataRangeTransport{constructor(e,t,r=!1,s=null){this.length=e;this.initialData=t;this.progressiveDone=r;this.contentDispositionFilename=s;this._rangeListeners=[];this._progressListeners=[];this._progressiveReadListeners=[];this._progressiveDoneListeners=[];this._readyCapability=(0,_util.createPromiseCapability)()}addRangeListener(e){this._rangeListeners.push(e)}addProgressListener(e){this._progressListeners.push(e)}addProgressiveReadListener(e){this._progressiveReadListeners.push(e)}addProgressiveDoneListener(e){this._progressiveDoneListeners.push(e)}onDataRange(e,t){for(const r of this._rangeListeners)r(e,t)}onDataProgress(e,t){this._readyCapability.promise.then((()=>{for(const r of this._progressListeners)r(e,t)}))}onDataProgressiveRead(e){this._readyCapability.promise.then((()=>{for(const t of this._progressiveReadListeners)t(e)}))}onDataProgressiveDone(){this._readyCapability.promise.then((()=>{for(const e of this._progressiveDoneListeners)e()}))}transportReady(){this._readyCapability.resolve()}requestDataRange(e,t){(0,_util.unreachable)("Abstract method PDFDataRangeTransport.requestDataRange")}abort(){}}exports.PDFDataRangeTransport=PDFDataRangeTransport;class PDFDocumentProxy{constructor(e,t){this._pdfInfo=e;this._transport=t;Object.defineProperty(this,"fingerprint",{get(){(0,_display_utils.deprecated)("`PDFDocumentProxy.fingerprint`, please use `PDFDocumentProxy.fingerprints` instead.");return this.fingerprints[0]}})}get annotationStorage(){return this._transport.annotationStorage}get numPages(){return this._pdfInfo.numPages}get fingerprints(){return this._pdfInfo.fingerprints}get isPureXfa(){return!!this._transport._htmlForXfa}get allXfaHtml(){return this._transport._htmlForXfa}getPage(e){return this._transport.getPage(e)}getPageIndex(e){return this._transport.getPageIndex(e)}getDestinations(){return this._transport.getDestinations()}getDestination(e){return this._transport.getDestination(e)}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}getStats(){return this._transport.getStats()}cleanup(e=!1){return this._transport.startCleanup(e||this.isPureXfa)}destroy(){return this.loadingTask.destroy()}get loadingParams(){return this._transport.loadingParams}get loadingTask(){return this._transport.loadingTask}saveDocument(){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(e,t,r,s,n=!1){this._pageIndex=e;this._pageInfo=t;this._ownerDocument=s;this._transport=r;this._stats=n?new _display_utils.StatTimer:null;this._pdfBug=n;this.commonObjs=r.commonObjs;this.objs=new PDFObjects;this.cleanupAfterRender=!1;this.pendingCleanup=!1;this._intentStates=new Map;this.destroyed=!1}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:e,rotation:t=this.rotate,offsetX:r=0,offsetY:s=0,dontFlip:n=!1}={}){return new _display_utils.PageViewport({viewBox:this.view,scale:e,rotation:t,offsetX:r,offsetY:s,dontFlip:n})}getAnnotations({intent:e=null}={}){const t="display"===e||"print"===e?e:null;if(!this._annotationsPromise||this._annotationsIntent!==t){this._annotationsPromise=this._transport.getAnnotations(this._pageIndex,t);this._annotationsIntent=t}return this._annotationsPromise}getJSActions(){return this._jsActionsPromise||(this._jsActionsPromise=this._transport.getPageJSActions(this._pageIndex))}async getXfa(){return this._transport._htmlForXfa?.children[this._pageIndex]||null}render({canvasContext:e,viewport:t,intent:r="display",renderInteractiveForms:s=!1,transform:n=null,imageLayer:a=null,canvasFactory:i=null,background:o=null,includeAnnotationStorage:l=!1,optionalContentConfigPromise:c=null}){var h;this._stats&&this._stats.time("Overall");const d="print"===r?"print":"display";this.pendingCleanup=!1;c||(c=this._transport.getOptionalContentConfig());let u=this._intentStates.get(d);if(!u){u=Object.create(null);this._intentStates.set(d,u)}if(u.streamReaderCancelTimeout){clearTimeout(u.streamReaderCancelTimeout);u.streamReaderCancelTimeout=null}const p=i||new DefaultCanvasFactory({ownerDocument:this._ownerDocument}),g=l?this._transport.annotationStorage.serializable:null;if(!u.displayReadyCapability){u.displayReadyCapability=(0,_util.createPromiseCapability)();u.operatorList={fnArray:[],argsArray:[],lastChunk:!1};this._stats&&this._stats.time("Page Request");this._pumpOperatorList({pageIndex:this._pageIndex,intent:d,renderInteractiveForms:!0===s,annotationStorage:g})}const complete=e=>{u.renderTasks.delete(f);(this.cleanupAfterRender||"print"===d)&&(this.pendingCleanup=!0);this._tryCleanup();if(e){f.capability.reject(e);this._abortOperatorList({intentState:u,reason:e})}else f.capability.resolve();if(this._stats){this._stats.timeEnd("Rendering");this._stats.timeEnd("Overall")}},f=new InternalRenderTask({callback:complete,params:{canvasContext:e,viewport:t,transform:n,imageLayer:a,background:o},objs:this.objs,commonObjs:this.commonObjs,operatorList:u.operatorList,pageIndex:this._pageIndex,canvasFactory:p,useRequestAnimationFrame:"print"!==d,pdfBug:this._pdfBug});((h=u).renderTasks||(h.renderTasks=new Set)).add(f);const m=f.task;Promise.all([u.displayReadyCapability.promise,c]).then((([e,t])=>{if(this.pendingCleanup)complete();else{this._stats&&this._stats.time("Rendering");f.initializeGraphics({transparency:e,optionalContentConfig:t});f.operatorListChanged()}})).catch(complete);return m}getOperatorList({intent:e="display"}={}){const t="oplist-"+("print"===e?"print":"display");let r,s=this._intentStates.get(t);if(!s){s=Object.create(null);this._intentStates.set(t,s)}if(!s.opListReadCapability){var n;r=Object.create(null);r.operatorListChanged=function operatorListChanged(){if(s.operatorList.lastChunk){s.opListReadCapability.resolve(s.operatorList);s.renderTasks.delete(r)}};s.opListReadCapability=(0,_util.createPromiseCapability)();((n=s).renderTasks||(n.renderTasks=new Set)).add(r);s.operatorList={fnArray:[],argsArray:[],lastChunk:!1};this._stats&&this._stats.time("Page Request");this._pumpOperatorList({pageIndex:this._pageIndex,intent:t})}return s.opListReadCapability.promise}streamTextContent({normalizeWhitespace:e=!1,disableCombineTextItems:t=!1,includeMarkedContent:r=!1}={}){return this._transport.messageHandler.sendWithStream("GetTextContent",{pageIndex:this._pageIndex,normalizeWhitespace:!0===e,combineTextItems:!0!==t,includeMarkedContent:!0===r},{highWaterMark:100,size:e=>e.items.length})}getTextContent(e={}){const t=this.streamTextContent(e);return new Promise((function(e,r){const s=t.getReader(),n={items:[],styles:Object.create(null)};!function pump(){s.read().then((function({value:t,done:r}){if(r)e(n);else{Object.assign(n.styles,t.styles);n.items.push(...t.items);pump()}}),r)}()}))}getStructTree(){return this._structTreePromise||(this._structTreePromise=this._transport.getStructTree(this._pageIndex))}_destroy(){this.destroyed=!0;this._transport.pageCache[this._pageIndex]=null;const e=[];for(const[t,r]of this._intentStates){this._abortOperatorList({intentState:r,reason:new Error("Page was destroyed."),force:!0});if(!t.startsWith("oplist-"))for(const t of r.renderTasks){e.push(t.completed);t.cancel()}}this.objs.clear();this._annotationsPromise=null;this._jsActionsPromise=null;this._structTreePromise=null;this.pendingCleanup=!1;return Promise.all(e)}cleanup(e=!1){this.pendingCleanup=!0;return this._tryCleanup(e)}_tryCleanup(e=!1){if(!this.pendingCleanup)return!1;for(const{renderTasks:e,operatorList:t}of this._intentStates.values())if(e.size>0||!t.lastChunk)return!1;this._intentStates.clear();this.objs.clear();this._annotationsPromise=null;this._jsActionsPromise=null;this._structTreePromise=null;e&&this._stats&&(this._stats=new _display_utils.StatTimer);this.pendingCleanup=!1;return!0}_startRenderPage(e,t){const r=this._intentStates.get(t);if(r){this._stats&&this._stats.timeEnd("Page Request");r.displayReadyCapability&&r.displayReadyCapability.resolve(e)}}_renderPageChunk(e,t){for(let r=0,s=e.length;r{t.read().then((({value:e,done:t})=>{if(t)r.streamReader=null;else if(!this._transport.destroyed){this._renderPageChunk(e,r);pump()}}),(e=>{r.streamReader=null;if(!this._transport.destroyed){if(r.operatorList){r.operatorList.lastChunk=!0;for(const e of r.renderTasks)e.operatorListChanged();this._tryCleanup()}if(r.displayReadyCapability)r.displayReadyCapability.reject(e);else{if(!r.opListReadCapability)throw e;r.opListReadCapability.reject(e)}}}))};pump()}_abortOperatorList({intentState:e,reason:t,force:r=!1}){(0,_util.assert)(t instanceof Error||"object"==typeof t&&null!==t,'PDFPageProxy._abortOperatorList: Expected "reason" argument.');if(e.streamReader){if(!r){if(e.renderTasks.size>0)return;if(t instanceof _display_utils.RenderingCancelledException){e.streamReaderCancelTimeout=setTimeout((()=>{this._abortOperatorList({intentState:e,reason:t,force:!0});e.streamReaderCancelTimeout=null}),RENDERING_CANCELLED_TIMEOUT);return}}e.streamReader.cancel(new _util.AbortException(t?.message));e.streamReader=null;if(!this._transport.destroyed){for(const[t,r]of this._intentStates)if(r===e){this._intentStates.delete(t);break}this.cleanup()}}}get stats(){return this._stats}}exports.PDFPageProxy=PDFPageProxy;class LoopbackPort{constructor(){this._listeners=[];this._deferred=Promise.resolve(void 0)}postMessage(e,t){const r=new WeakMap,s={data:function cloneValue(e){if("function"==typeof e||"symbol"==typeof e||e instanceof URL)throw new Error(`LoopbackPort.postMessage - cannot clone: ${e?.toString()}`);if("object"!=typeof e||null===e)return e;if(r.has(e))return r.get(e);let s,n;if((s=e.buffer)&&(0,_util.isArrayBuffer)(s)){n=t?.includes(s)?new e.constructor(s,e.byteOffset,e.byteLength):new e.constructor(e);r.set(e,n);return n}if(e instanceof Map){n=new Map;r.set(e,n);for(const[t,r]of e)n.set(t,cloneValue(r));return n}if(e instanceof Set){n=new Set;r.set(e,n);for(const t of e)n.add(cloneValue(t));return n}n=Array.isArray(e)?[]:Object.create(null);r.set(e,n);for(const t in e){let r,s=e;for(;!(r=Object.getOwnPropertyDescriptor(s,t));)s=Object.getPrototypeOf(s);void 0!==r.value&&(("function"!=typeof r.value||e.hasOwnProperty?.(t))&&(n[t]=cloneValue(r.value)))}return n}(e)};this._deferred.then((()=>{for(const e of this._listeners)e.call(this,s)}))}addEventListener(e,t){this._listeners.push(t)}removeEventListener(e,t){const r=this._listeners.indexOf(t);this._listeners.splice(r,1)}terminate(){this._listeners.length=0}}exports.LoopbackPort=LoopbackPort;const PDFWorker=function PDFWorkerClosure(){const pdfWorkerPorts=new WeakMap;let isWorkerDisabled=!1,fallbackWorkerSrc,nextFakeWorkerId=0,fakeWorkerCapability;if(_is_node.isNodeJS&&"function"==typeof require){isWorkerDisabled=!0;fallbackWorkerSrc="./pdf.worker.js"}else if("object"==typeof document&&"currentScript"in document){const e=document.currentScript?.src;e&&(fallbackWorkerSrc=e.replace(/(\.(?:min\.)?js)(\?.*)?$/i,".worker$1$2"))}function getWorkerSrc(){if(_worker_options.GlobalWorkerOptions.workerSrc)return _worker_options.GlobalWorkerOptions.workerSrc;if(void 0!==fallbackWorkerSrc){_is_node.isNodeJS||(0,_display_utils.deprecated)('No "GlobalWorkerOptions.workerSrc" specified.');return fallbackWorkerSrc}throw new Error('No "GlobalWorkerOptions.workerSrc" specified.')}function getMainThreadWorkerMessageHandler(){let e;try{e=globalThis.pdfjsWorker?.WorkerMessageHandler}catch(e){}return e||null}function setupFakeWorkerGlobal(){if(fakeWorkerCapability)return fakeWorkerCapability.promise;fakeWorkerCapability=(0,_util.createPromiseCapability)();const loader=async function(){const mainWorkerMessageHandler=getMainThreadWorkerMessageHandler();if(mainWorkerMessageHandler)return mainWorkerMessageHandler;if(_is_node.isNodeJS&&"function"==typeof require){const worker=eval("require")(getWorkerSrc());return worker.WorkerMessageHandler}await(0,_display_utils.loadScript)(getWorkerSrc());return window.pdfjsWorker.WorkerMessageHandler};loader().then(fakeWorkerCapability.resolve,fakeWorkerCapability.reject);return fakeWorkerCapability.promise}function createCDNWrapper(e){const t="importScripts('"+e+"');";return URL.createObjectURL(new Blob([t]))}class PDFWorker{constructor({name:e=null,port:t=null,verbosity:r=(0,_util.getVerbosityLevel)()}={}){if(t&&pdfWorkerPorts.has(t))throw new Error("Cannot use more than one PDFWorker per port");this.name=e;this.destroyed=!1;this.postMessageTransfers=!0;this.verbosity=r;this._readyCapability=(0,_util.createPromiseCapability)();this._port=null;this._webWorker=null;this._messageHandler=null;if(t){pdfWorkerPorts.set(t,this);this._initializeFromPort(t)}else this._initialize()}get promise(){return this._readyCapability.promise}get port(){return this._port}get messageHandler(){return this._messageHandler}_initializeFromPort(e){this._port=e;this._messageHandler=new _message_handler.MessageHandler("main","worker",e);this._messageHandler.on("ready",(function(){}));this._readyCapability.resolve()}_initialize(){if("undefined"!=typeof Worker&&!isWorkerDisabled&&!getMainThreadWorkerMessageHandler()){let e=getWorkerSrc();try{(0,_util.isSameOrigin)(window.location.href,e)||(e=createCDNWrapper(new URL(e,window.location).href));const t=new Worker(e),r=new _message_handler.MessageHandler("main","worker",t),terminateEarly=()=>{t.removeEventListener("error",onWorkerError);r.destroy();t.terminate();this.destroyed?this._readyCapability.reject(new Error("Worker was destroyed")):this._setupFakeWorker()},onWorkerError=()=>{this._webWorker||terminateEarly()};t.addEventListener("error",onWorkerError);r.on("test",(e=>{t.removeEventListener("error",onWorkerError);if(this.destroyed)terminateEarly();else if(e){this._messageHandler=r;this._port=t;this._webWorker=t;e.supportTransfers||(this.postMessageTransfers=!1);this._readyCapability.resolve();r.send("configure",{verbosity:this.verbosity})}else{this._setupFakeWorker();r.destroy();t.terminate()}}));r.on("ready",(e=>{t.removeEventListener("error",onWorkerError);if(this.destroyed)terminateEarly();else try{sendTest()}catch(e){this._setupFakeWorker()}}));const sendTest=()=>{const e=new Uint8Array([this.postMessageTransfers?255:0]);try{r.send("test",e,[e.buffer])}catch(t){(0,_util.warn)("Cannot use postMessage transfers.");e[0]=0;r.send("test",e)}};sendTest();return}catch(e){(0,_util.info)("The worker has been disabled.")}}this._setupFakeWorker()}_setupFakeWorker(){if(!isWorkerDisabled){(0,_util.warn)("Setting up fake worker.");isWorkerDisabled=!0}setupFakeWorkerGlobal().then((e=>{if(this.destroyed){this._readyCapability.reject(new Error("Worker was destroyed"));return}const t=new LoopbackPort;this._port=t;const r="fake"+nextFakeWorkerId++,s=new _message_handler.MessageHandler(r+"_worker",r,t);e.setup(s,t);const n=new _message_handler.MessageHandler(r,r+"_worker",t);this._messageHandler=n;this._readyCapability.resolve();n.send("configure",{verbosity:this.verbosity})})).catch((e=>{this._readyCapability.reject(new Error(`Setting up fake worker failed: "${e.message}".`))}))}destroy(){this.destroyed=!0;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}}static fromPort(e){if(!e||!e.port)throw new Error("PDFWorker.fromPort - invalid method signature.");return pdfWorkerPorts.has(e.port)?pdfWorkerPorts.get(e.port):new PDFWorker(e)}static getWorkerSrc(){return getWorkerSrc()}}return PDFWorker}();exports.PDFWorker=PDFWorker;class WorkerTransport{constructor(e,t,r,s){this.messageHandler=e;this.loadingTask=t;this.commonObjs=new PDFObjects;this.fontLoader=new _font_loader.FontLoader({docId:t.docId,onUnsupportedFeature:this._onUnsupportedFeature.bind(this),ownerDocument:s.ownerDocument,styleElement:s.styleElement});this._params=s;if(!s.useWorkerFetch){this.CMapReaderFactory=new s.CMapReaderFactory({baseUrl:s.cMapUrl,isCompressed:s.cMapPacked});this.StandardFontDataFactory=new s.StandardFontDataFactory({baseUrl:s.standardFontDataUrl})}this.destroyed=!1;this.destroyCapability=null;this._passwordCapability=null;this._networkStream=r;this._fullReader=null;this._lastProgress=null;this.pageCache=[];this.pagePromises=[];this.downloadInfoCapability=(0,_util.createPromiseCapability)();this.setupMessageHandler()}get annotationStorage(){return(0,_util.shadow)(this,"annotationStorage",new _annotation_storage.AnnotationStorage)}destroy(){if(this.destroyCapability)return this.destroyCapability.promise;this.destroyed=!0;this.destroyCapability=(0,_util.createPromiseCapability)();this._passwordCapability&&this._passwordCapability.reject(new Error("Worker was destroyed during onPassword callback"));const e=[];for(const t of this.pageCache)t&&e.push(t._destroy());this.pageCache.length=0;this.pagePromises.length=0;this.hasOwnProperty("annotationStorage")&&this.annotationStorage.resetModified();const t=this.messageHandler.sendWithPromise("Terminate",null);e.push(t);Promise.all(e).then((()=>{this.commonObjs.clear();this.fontLoader.clear();this._hasJSActionsPromise=null;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:e,loadingTask:t}=this;e.on("GetReader",((e,t)=>{(0,_util.assert)(this._networkStream,"GetReader - no `IPDFStream` instance available.");this._fullReader=this._networkStream.getFullReader();this._fullReader.onProgress=e=>{this._lastProgress={loaded:e.loaded,total:e.total}};t.onPull=()=>{this._fullReader.read().then((function({value:e,done:r}){if(r)t.close();else{(0,_util.assert)((0,_util.isArrayBuffer)(e),"GetReader - expected an ArrayBuffer.");t.enqueue(new Uint8Array(e),1,[e])}})).catch((e=>{t.error(e)}))};t.onCancel=e=>{this._fullReader.cancel(e);t.ready.catch((e=>{if(!this.destroyed)throw e}))}}));e.on("ReaderHeadersReady",(e=>{const r=(0,_util.createPromiseCapability)(),s=this._fullReader;s.headersReady.then((()=>{if(!s.isStreamingSupported||!s.isRangeSupported){this._lastProgress&&t.onProgress&&t.onProgress(this._lastProgress);s.onProgress=e=>{t.onProgress&&t.onProgress({loaded:e.loaded,total:e.total})}}r.resolve({isStreamingSupported:s.isStreamingSupported,isRangeSupported:s.isRangeSupported,contentLength:s.contentLength})}),r.reject);return r.promise}));e.on("GetRangeReader",((e,t)=>{(0,_util.assert)(this._networkStream,"GetRangeReader - no `IPDFStream` instance available.");const r=this._networkStream.getRangeReader(e.begin,e.end);if(r){t.onPull=()=>{r.read().then((function({value:e,done:r}){if(r)t.close();else{(0,_util.assert)((0,_util.isArrayBuffer)(e),"GetRangeReader - expected an ArrayBuffer.");t.enqueue(new Uint8Array(e),1,[e])}})).catch((e=>{t.error(e)}))};t.onCancel=e=>{r.cancel(e);t.ready.catch((e=>{if(!this.destroyed)throw e}))}}else t.close()}));e.on("GetDoc",(({pdfInfo:e})=>{this._numPages=e.numPages;this._htmlForXfa=e.htmlForXfa;delete e.htmlForXfa;t._capability.resolve(new PDFDocumentProxy(e,this))}));e.on("DocException",(function(e){let r;switch(e.name){case"PasswordException":r=new _util.PasswordException(e.message,e.code);break;case"InvalidPDFException":r=new _util.InvalidPDFException(e.message);break;case"MissingPDFException":r=new _util.MissingPDFException(e.message);break;case"UnexpectedResponseException":r=new _util.UnexpectedResponseException(e.message,e.status);break;case"UnknownErrorException":r=new _util.UnknownErrorException(e.message,e.details)}if(!(r instanceof Error)){const e="DocException - expected a valid Error.";(0,_util.warn)(e)}t._capability.reject(r)}));e.on("PasswordRequest",(e=>{this._passwordCapability=(0,_util.createPromiseCapability)();if(t.onPassword){const updatePassword=e=>{this._passwordCapability.resolve({password:e})};try{t.onPassword(updatePassword,e.code)}catch(e){this._passwordCapability.reject(e)}}else this._passwordCapability.reject(new _util.PasswordException(e.message,e.code));return this._passwordCapability.promise}));e.on("DataLoaded",(e=>{t.onProgress&&t.onProgress({loaded:e.length,total:e.length});this.downloadInfoCapability.resolve(e)}));e.on("StartRenderPage",(e=>{if(this.destroyed)return;this.pageCache[e.pageIndex]._startRenderPage(e.transparency,e.intent)}));e.on("commonobj",(t=>{if(this.destroyed)return;const[r,s,n]=t;if(!this.commonObjs.has(r))switch(s){case"Font":const t=this._params;if("error"in n){const e=n.error;(0,_util.warn)(`Error during font loading: ${e}`);this.commonObjs.resolve(r,e);break}let a=null;t.pdfBug&&globalThis.FontInspector?.enabled&&(a={registerFont(e,t){globalThis.FontInspector.fontAdded(e,t)}});const i=new _font_loader.FontFaceObject(n,{isEvalSupported:t.isEvalSupported,disableFontFace:t.disableFontFace,ignoreErrors:t.ignoreErrors,onUnsupportedFeature:this._onUnsupportedFeature.bind(this),fontRegistry:a});this.fontLoader.bind(i).catch((t=>e.sendWithPromise("FontFallback",{id:r}))).finally((()=>{!t.fontExtraProperties&&i.data&&(i.data=null);this.commonObjs.resolve(r,i)}));break;case"FontPath":case"Image":this.commonObjs.resolve(r,n);break;default:throw new Error(`Got unknown common object type ${s}`)}}));e.on("obj",(e=>{if(this.destroyed)return;const[t,r,s,n]=e,a=this.pageCache[r];if(!a.objs.has(t))switch(s){case"Image":a.objs.resolve(t,n);const e=8e6;n?.data?.length>e&&(a.cleanupAfterRender=!0);break;case"Pattern":a.objs.resolve(t,n);break;default:throw new Error(`Got unknown object type ${s}`)}}));e.on("DocProgress",(e=>{this.destroyed||t.onProgress&&t.onProgress({loaded:e.loaded,total:e.total})}));e.on("UnsupportedFeature",this._onUnsupportedFeature.bind(this));e.on("FetchBuiltInCMap",(e=>this.destroyed?Promise.reject(new Error("Worker was destroyed.")):this.CMapReaderFactory?this.CMapReaderFactory.fetch(e):Promise.reject(new Error("CMapReaderFactory not initialized, see the `useWorkerFetch` parameter."))));e.on("FetchStandardFontData",(e=>this.destroyed?Promise.reject(new Error("Worker was destroyed.")):this.StandardFontDataFactory?this.StandardFontDataFactory.fetch(e):Promise.reject(new Error("StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter."))))}_onUnsupportedFeature({featureId:e}){this.destroyed||this.loadingTask.onUnsupportedFeature&&this.loadingTask.onUnsupportedFeature(e)}getData(){return this.messageHandler.sendWithPromise("GetData",null)}getPage(e){if(!Number.isInteger(e)||e<=0||e>this._numPages)return Promise.reject(new Error("Invalid page request"));const t=e-1;if(t in this.pagePromises)return this.pagePromises[t];const r=this.messageHandler.sendWithPromise("GetPage",{pageIndex:t}).then((e=>{if(this.destroyed)throw new Error("Transport destroyed");const r=new PDFPageProxy(t,e,this,this._params.ownerDocument,this._params.pdfBug);this.pageCache[t]=r;return r}));this.pagePromises[t]=r;return r}getPageIndex(e){return this.messageHandler.sendWithPromise("GetPageIndex",{ref:e}).catch((function(e){return Promise.reject(new Error(e))}))}getAnnotations(e,t){return this.messageHandler.sendWithPromise("GetAnnotations",{pageIndex:e,intent:t})}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.messageHandler.sendWithPromise("GetFieldObjects",null)}hasJSActions(){return this._hasJSActionsPromise||(this._hasJSActionsPromise=this.messageHandler.sendWithPromise("HasJSActions",null))}getCalculationOrderIds(){return this.messageHandler.sendWithPromise("GetCalculationOrderIds",null)}getDestinations(){return this.messageHandler.sendWithPromise("GetDestinations",null)}getDestination(e){return"string"!=typeof e?Promise.reject(new Error("Invalid destination request.")):this.messageHandler.sendWithPromise("GetDestination",{id:e})}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(e){return this.messageHandler.sendWithPromise("GetPageJSActions",{pageIndex:e})}getStructTree(e){return this.messageHandler.sendWithPromise("GetStructTree",{pageIndex:e})}getOutline(){return this.messageHandler.sendWithPromise("GetOutline",null)}getOptionalContentConfig(){return this.messageHandler.sendWithPromise("GetOptionalContentConfig",null).then((e=>new _optional_content_config.OptionalContentConfig(e)))}getPermissions(){return this.messageHandler.sendWithPromise("GetPermissions",null)}getMetadata(){return this.messageHandler.sendWithPromise("GetMetadata",null).then((e=>({info:e[0],metadata:e[1]?new _metadata.Metadata(e[1]):null,contentDispositionFilename:this._fullReader?.filename??null,contentLength:this._fullReader?.contentLength??null})))}getMarkInfo(){return this.messageHandler.sendWithPromise("GetMarkInfo",null)}getStats(){return this.messageHandler.sendWithPromise("GetStats",null)}async startCleanup(e=!1){await this.messageHandler.sendWithPromise("Cleanup",null);if(!this.destroyed){for(let e=0,t=this.pageCache.length;e{this._nextBound().catch(this._cancelBound)})):Promise.resolve().then(this._nextBound).catch(this._cancelBound)}async _next(){if(!this.cancelled){this.operatorListIdx=this.gfx.executeOperatorList(this.operatorList,this.operatorListIdx,this._continueBound,this.stepper);if(this.operatorListIdx===this.operatorList.argsArray.length){this.running=!1;if(this.operatorList.lastChunk){this.gfx.endDrawing();this._canvas&&e.delete(this._canvas);this.callback()}}}}}}(),version="2.10.377";exports.version=version;const build="156762c48";exports.build=build},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.FontLoader=t.FontFaceObject=void 0;var s=r(2);class BaseFontLoader{constructor({docId:e,onUnsupportedFeature:t,ownerDocument:r=globalThis.document,styleElement:n=null}){this.constructor===BaseFontLoader&&(0,s.unreachable)("Cannot initialize BaseFontLoader.");this.docId=e;this._onUnsupportedFeature=t;this._document=r;this.nativeFontFaces=[];this.styleElement=null}addNativeFontFace(e){this.nativeFontFaces.push(e);this._document.fonts.add(e)}insertRule(e){let t=this.styleElement;if(!t){t=this.styleElement=this._document.createElement("style");t.id=`PDFJS_FONT_STYLE_TAG_${this.docId}`;this._document.documentElement.getElementsByTagName("head")[0].appendChild(t)}const r=t.sheet;r.insertRule(e,r.cssRules.length)}clear(){for(const e of this.nativeFontFaces)this._document.fonts.delete(e);this.nativeFontFaces.length=0;if(this.styleElement){this.styleElement.remove();this.styleElement=null}}async bind(e){if(e.attached||e.missingFile)return;e.attached=!0;if(this.isFontLoadingAPISupported){const t=e.createNativeFontFace();if(t){this.addNativeFontFace(t);try{await t.loaded}catch(r){this._onUnsupportedFeature({featureId:s.UNSUPPORTED_FEATURES.errorFontLoadNative});(0,s.warn)(`Failed to load font '${t.family}': '${r}'.`);e.disableFontFace=!0;throw r}}return}const t=e.createFontFaceRule();if(t){this.insertRule(t);if(this.isSyncFontLoadingSupported)return;await new Promise((r=>{const s=this._queueLoadingCallback(r);this._prepareFontLoadEvent([t],[e],s)}))}}_queueLoadingCallback(e){(0,s.unreachable)("Abstract method `_queueLoadingCallback`.")}get isFontLoadingAPISupported(){const e=!!this._document?.fonts;return(0,s.shadow)(this,"isFontLoadingAPISupported",e)}get isSyncFontLoadingSupported(){(0,s.unreachable)("Abstract method `isSyncFontLoadingSupported`.")}get _loadTestFont(){(0,s.unreachable)("Abstract method `_loadTestFont`.")}_prepareFontLoadEvent(e,t,r){(0,s.unreachable)("Abstract method `_prepareFontLoadEvent`.")}}let n;t.FontLoader=n;t.FontLoader=n=class GenericFontLoader extends BaseFontLoader{constructor(e){super(e);this.loadingContext={requests:[],nextRequestId:0};this.loadTestFontId=0}get isSyncFontLoadingSupported(){let e=!1;if("undefined"==typeof navigator)e=!0;else{/Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent)?.[1]>=14&&(e=!0)}return(0,s.shadow)(this,"isSyncFontLoadingSupported",e)}_queueLoadingCallback(e){const t=this.loadingContext,r={id:"pdfjs-font-loading-"+t.nextRequestId++,done:!1,complete:function completeRequest(){(0,s.assert)(!r.done,"completeRequest() cannot be called twice.");r.done=!0;for(;t.requests.length>0&&t.requests[0].done;){const e=t.requests.shift();setTimeout(e.callback,0)}},callback:e};t.requests.push(r);return r}get _loadTestFont(){return(0,s.shadow)(this,"_loadTestFont",atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA=="))}_prepareFontLoadEvent(e,t,r){function int32(e,t){return e.charCodeAt(t)<<24|e.charCodeAt(t+1)<<16|e.charCodeAt(t+2)<<8|255&e.charCodeAt(t+3)}function spliceString(e,t,r,s){return e.substring(0,t)+s+e.substring(t+r)}let n,a;const i=this._document.createElement("canvas");i.width=1;i.height=1;const o=i.getContext("2d");let l=0;const c=`lt${Date.now()}${this.loadTestFontId++}`;let h=this._loadTestFont;h=spliceString(h,976,c.length,c);const d=1482184792;let u=int32(h,16);for(n=0,a=c.length-3;n30){(0,s.warn)("Load test font never loaded.");t();return}o.font="30px "+e;o.fillText(".",0,20);o.getImageData(0,0,1,1).data[3]>0?t():setTimeout(isFontReady.bind(null,e,t))}(c,(()=>{this._document.body.removeChild(f);r.complete()}))}};t.FontFaceObject=class FontFaceObject{constructor(e,{isEvalSupported:t=!0,disableFontFace:r=!1,ignoreErrors:s=!1,onUnsupportedFeature:n,fontRegistry:a=null}){this.compiledGlyphs=Object.create(null);for(const t in e)this[t]=e[t];this.isEvalSupported=!1!==t;this.disableFontFace=!0===r;this.ignoreErrors=!0===s;this._onUnsupportedFeature=n;this.fontRegistry=a}createNativeFontFace(){if(!this.data||this.disableFontFace)return null;let e;if(this.cssFontInfo){const t={weight:this.cssFontInfo.fontWeight};this.cssFontInfo.italicAngle&&(t.style=`oblique ${this.cssFontInfo.italicAngle}deg`);e=new FontFace(this.cssFontInfo.fontFamily,this.data,t)}else e=new FontFace(this.loadedName,this.data,{});this.fontRegistry&&this.fontRegistry.registerFont(this);return e}createFontFaceRule(){if(!this.data||this.disableFontFace)return null;const e=(0,s.bytesToString)(this.data),t=`url(data:${this.mimetype};base64,${btoa(e)});`;let r;if(this.cssFontInfo){let e=`font-weight: ${this.cssFontInfo.fontWeight};`;this.cssFontInfo.italicAngle&&(e+=`font-style: oblique ${this.cssFontInfo.italicAngle}deg;`);r=`@font-face {font-family:"${this.cssFontInfo.fontFamily}";${e}src:${t}}`}else r=`@font-face {font-family:"${this.loadedName}";src:${t}}`;this.fontRegistry&&this.fontRegistry.registerFont(this,t);return r}getPathGenerator(e,t){if(void 0!==this.compiledGlyphs[t])return this.compiledGlyphs[t];let r;try{r=e.get(this.loadedName+"_path_"+t)}catch(e){if(!this.ignoreErrors)throw e;this._onUnsupportedFeature({featureId:s.UNSUPPORTED_FEATURES.errorFontGetPath});(0,s.warn)(`getPathGenerator - ignoring character: "${e}".`);return this.compiledGlyphs[t]=function(e,t){}}if(this.isEvalSupported&&s.IsEvalSupportedCached.value){const e=[];for(const t of r){const r=void 0!==t.args?t.args.join(","):"";e.push("c.",t.cmd,"(",r,");\n")}return this.compiledGlyphs[t]=new Function("c","size",e.join(""))}return this.compiledGlyphs[t]=function(e,t){for(const s of r){"scale"===s.cmd&&(s.args=[t,-t]);e[s.cmd].apply(e,s.args)}}}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.NodeStandardFontDataFactory=t.NodeCMapReaderFactory=t.NodeCanvasFactory=void 0;var s=r(5),n=r(4),a=r(2);let i=class{constructor(){(0,a.unreachable)("Not implemented: NodeCanvasFactory")}};t.NodeCanvasFactory=i;let o=class{constructor(){(0,a.unreachable)("Not implemented: NodeCMapReaderFactory")}};t.NodeCMapReaderFactory=o;let l=class{constructor(){(0,a.unreachable)("Not implemented: NodeStandardFontDataFactory")}};t.NodeStandardFontDataFactory=l;if(n.isNodeJS){const fetchData=function(e){return new Promise(((t,r)=>{require("fs").readFile(e,((e,s)=>{!e&&s?t(new Uint8Array(s)):r(new Error(e))}))}))};t.NodeCanvasFactory=i=class extends s.BaseCanvasFactory{_createCanvas(e,t){return require("canvas").createCanvas(e,t)}};t.NodeCMapReaderFactory=o=class extends s.BaseCMapReaderFactory{_fetchData(e,t){return fetchData(e).then((e=>({cMapData:e,compressionType:t})))}};t.NodeStandardFontDataFactory=l=class extends s.BaseStandardFontDataFactory{_fetchData(e){return fetchData(e)}}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.AnnotationStorage=void 0;var s=r(2);t.AnnotationStorage=class AnnotationStorage{constructor(){this._storage=new Map;this._modified=!1;this.onSetModified=null;this.onResetModified=null}getValue(e,t){const r=this._storage.get(e);return void 0!==r?r:t}setValue(e,t){const r=this._storage.get(e);let s=!1;if(void 0!==r){for(const[e,n]of Object.entries(t))if(r[e]!==n){s=!0;r[e]=n}}else{this._storage.set(e,t);s=!0}s&&this._setModified()}getAll(){return this._storage.size>0?(0,s.objectFromMap)(this._storage):null}get size(){return this._storage.size}_setModified(){if(!this._modified){this._modified=!0;"function"==typeof this.onSetModified&&this.onSetModified()}}resetModified(){if(this._modified){this._modified=!1;"function"==typeof this.onResetModified&&this.onResetModified()}}get serializable(){return this._storage.size>0?this._storage:null}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.CanvasGraphics=void 0;var s=r(2),n=r(11);const a=4096,i=16;function addContextCurrentTransform(e){if(!e.mozCurrentTransform){e._originalSave=e.save;e._originalRestore=e.restore;e._originalRotate=e.rotate;e._originalScale=e.scale;e._originalTranslate=e.translate;e._originalTransform=e.transform;e._originalSetTransform=e.setTransform;e._originalResetTransform=e.resetTransform;e._transformMatrix=e._transformMatrix||[1,0,0,1,0,0];e._transformStack=[];try{const t=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(e),"lineWidth");e._setLineWidth=t.set;e._getLineWidth=t.get;Object.defineProperty(e,"lineWidth",{set:function setLineWidth(e){this._setLineWidth(1.000001*e)},get:function getLineWidth(){return this._getLineWidth()}})}catch(e){}Object.defineProperty(e,"mozCurrentTransform",{get:function getCurrentTransform(){return this._transformMatrix}});Object.defineProperty(e,"mozCurrentTransformInverse",{get:function getCurrentTransformInverse(){const[e,t,r,s,n,a]=this._transformMatrix,i=e*s-t*r,o=t*r-e*s;return[s/i,t/o,r/o,e/i,(s*n-r*a)/o,(t*n-e*a)/i]}});e.save=function ctxSave(){const e=this._transformMatrix;this._transformStack.push(e);this._transformMatrix=e.slice(0,6);this._originalSave()};e.restore=function ctxRestore(){const e=this._transformStack.pop();if(e){this._transformMatrix=e;this._originalRestore()}};e.translate=function ctxTranslate(e,t){const r=this._transformMatrix;r[4]=r[0]*e+r[2]*t+r[4];r[5]=r[1]*e+r[3]*t+r[5];this._originalTranslate(e,t)};e.scale=function ctxScale(e,t){const r=this._transformMatrix;r[0]*=e;r[1]*=e;r[2]*=t;r[3]*=t;this._originalScale(e,t)};e.transform=function ctxTransform(t,r,s,n,a,i){const o=this._transformMatrix;this._transformMatrix=[o[0]*t+o[2]*r,o[1]*t+o[3]*r,o[0]*s+o[2]*n,o[1]*s+o[3]*n,o[0]*a+o[2]*i+o[4],o[1]*a+o[3]*i+o[5]];e._originalTransform(t,r,s,n,a,i)};e.setTransform=function ctxSetTransform(t,r,s,n,a,i){this._transformMatrix=[t,r,s,n,a,i];e._originalSetTransform(t,r,s,n,a,i)};e.resetTransform=function ctxResetTransform(){this._transformMatrix=[1,0,0,1,0,0];e._originalResetTransform()};e.rotate=function ctxRotate(e){const t=Math.cos(e),r=Math.sin(e),s=this._transformMatrix;this._transformMatrix=[s[0]*t+s[2]*r,s[1]*t+s[3]*r,s[0]*-r+s[2]*t,s[1]*-r+s[3]*t,s[4],s[5]];this._originalRotate(e)}}}class CachedCanvases{constructor(e){this.canvasFactory=e;this.cache=Object.create(null)}getCanvas(e,t,r,s){let n;if(void 0!==this.cache[e]){n=this.cache[e];this.canvasFactory.reset(n,t,r);n.context.setTransform(1,0,0,1,0,0)}else{n=this.canvasFactory.create(t,r);this.cache[e]=n}s&&addContextCurrentTransform(n.context);return n}clear(){for(const e in this.cache){const t=this.cache[e];this.canvasFactory.destroy(t);delete this.cache[e]}}}class CanvasExtraState{constructor(){this.alphaIsShape=!1;this.fontSize=0;this.fontSizeScale=1;this.textMatrix=s.IDENTITY_MATRIX;this.textMatrixScale=1;this.fontMatrix=s.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.textRenderingMode=s.TextRenderingMode.FILL;this.textRise=0;this.fillColor="#000000";this.strokeColor="#000000";this.patternFill=!1;this.fillAlpha=1;this.strokeAlpha=1;this.lineWidth=1;this.activeSMask=null;this.resumeSMaskCtx=null;this.transferMaps=null}clone(){return Object.create(this)}setCurrentPoint(e,t){this.x=e;this.y=t}}const o=function CanvasGraphicsClosure(){function putBinaryImageData(e,t,r=null){if("undefined"!=typeof ImageData&&t instanceof ImageData){e.putImageData(t,0,0);return}const n=t.height,a=t.width,o=n%i,l=(n-o)/i,c=0===o?l:l+1,h=e.createImageData(a,i);let d,u=0;const p=t.data,g=h.data;let f,m,A,_,b,y,S,v;if(r)switch(r.length){case 1:b=r[0];y=r[0];S=r[0];v=r[0];break;case 4:b=r[0];y=r[1];S=r[2];v=r[3]}if(t.kind===s.ImageKind.GRAYSCALE_1BPP){const t=p.byteLength,r=new Uint32Array(g.buffer,0,g.byteLength>>2),n=r.length,_=a+7>>3;let b=4294967295,y=s.IsLittleEndianCached.value?4278190080:255;v&&255===v[0]&&0===v[255]&&([b,y]=[y,b]);for(f=0;f_?a:8*e-7,i=-8&n;let o=0,l=0;for(;s>=1}}for(;d=l){A=o;_=a*A}d=0;for(m=_;m--;){g[d++]=p[u++];g[d++]=p[u++];g[d++]=p[u++];g[d++]=255}if(t)for(let e=0;e>=1}}e.putImageData(l,0,t*i)}}function copyCtxState(e,t){const r=["strokeStyle","fillStyle","fillRule","globalAlpha","lineWidth","lineCap","lineJoin","miterLimit","globalCompositeOperation","font"];for(let s=0,n=r.length;s>8;e[a-2]=e[a-2]*n+r*i>>8;e[a-1]=e[a-1]*n+s*i>>8}}}function composeSMaskAlpha(e,t,r){const s=e.length;for(let n=3;n>8]>>8:t[n]*s>>16}}function composeSMask(e,t,r){const s=t.canvas,n=t.context;e.setTransform(t.scaleX,0,0,t.scaleY,t.offsetX,t.offsetY);!function genericComposeSMask(e,t,r,s,n,a,i){const o=!!a,l=o?a[0]:0,c=o?a[1]:0,h=o?a[2]:0;let d;d="Luminosity"===n?composeSMaskLuminosity:composeSMaskAlpha;const u=Math.min(s,Math.ceil(1048576/r));for(let n=0;n10&&"function"==typeof r,h=c?Date.now()+15:0;let d=0;const u=this.commonObjs,p=this.objs;let g;for(;;){if(void 0!==n&&o===n.nextBreakPoint){n.breakIt(o,r);return o}g=i[o];if(g!==s.OPS.dependency)this[g].apply(this,a[o]);else for(const e of a[o]){const t=e.startsWith("g_")?u:p;if(!t.has(e)){t.get(e,r);return o}}o++;if(o===l)return o;if(c&&++d>10){if(Date.now()>h){r();return o}d=0}}}endDrawing(){for(;this.stateStack.length||null!==this.current.activeSMask;)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();this.transparentCanvas=null}this.cachedCanvases.clear();this.cachedPatterns.clear();this.imageLayer&&this.imageLayer.endLayout()}_scaleImage(e,t){const r=e.width,s=e.height;let n,a,i=Math.max(Math.hypot(t[0],t[1]),1),o=Math.max(Math.hypot(t[2],t[3]),1),l=r,c=s,h="prescale1";for(;i>2&&l>1||o>2&&c>1;){let t=l,r=c;if(i>2&&l>1){t=Math.ceil(l/2);i/=l/t}if(o>2&&c>1){r=Math.ceil(c/2);o/=c/r}n=this.cachedCanvases.getCanvas(h,t,r);a=n.context;a.clearRect(0,0,t,r);a.drawImage(e,0,0,l,c,0,0,t,r);e=n.canvas;l=t;c=r;h="prescale1"===h?"prescale2":"prescale1"}return{img:e,paintWidth:l,paintHeight:c}}_createMaskCanvas(e){const t=this.ctx,r=e.width,n=e.height,a=this.current.fillColor,i=this.current.patternFill,o=this.cachedCanvases.getCanvas("maskCanvas",r,n);putBinaryImageMask(o.context,e);const l=t.mozCurrentTransform;let c=s.Util.transform(l,[1/r,0,0,-1/n,0,0]);c=s.Util.transform(c,[1,0,0,1,0,-n]);const h=s.Util.applyTransform([0,0],c),d=s.Util.applyTransform([r,n],c),u=s.Util.normalizeRect([h[0],h[1],d[0],d[1]]),p=Math.ceil(u[2]-u[0]),g=Math.ceil(u[3]-u[1]),f=this.cachedCanvases.getCanvas("fillCanvas",p,g,!0),m=f.context,A=Math.min(h[0],d[0]),_=Math.min(h[1],d[1]);m.translate(-A,-_);m.transform.apply(m,c);const b=this._scaleImage(o.canvas,m.mozCurrentTransformInverse);m.drawImage(b.img,0,0,b.img.width,b.img.height,0,0,r,n);m.globalCompositeOperation="source-in";const y=s.Util.transform(m.mozCurrentTransformInverse,[1,0,0,1,-A,-_]);m.fillStyle=i?a.getPattern(t,this,y,!1):a;m.fillRect(0,0,r,n);return{canvas:f.canvas,offsetX:Math.round(A),offsetY:Math.round(_)}}setLineWidth(e){this.current.lineWidth=e;this.ctx.lineWidth=e}setLineCap(t){this.ctx.lineCap=e[t]}setLineJoin(e){this.ctx.lineJoin=t[e]}setMiterLimit(e){this.ctx.miterLimit=e}setDash(e,t){const r=this.ctx;if(void 0!==r.setLineDash){r.setLineDash(e);r.lineDashOffset=t}}setRenderingIntent(e){}setFlatness(e){}setGState(e){for(let t=0,r=e.length;t0&&this.stateStack[this.stateStack.length-1].activeSMask===this.current.activeSMask?this.suspendSMaskGroup():this.endSMaskGroup());this.current.activeSMask=n?this.tempSMask:null;this.current.activeSMask&&this.beginSMaskGroup();this.tempSMask=null;break;case"TR":this.current.transferMaps=n}}}beginSMaskGroup(){const e=this.current.activeSMask,t=e.canvas.width,r=e.canvas.height,s="smaskGroupAt"+this.groupLevel,n=this.cachedCanvases.getCanvas(s,t,r,!0),a=this.ctx,i=a.mozCurrentTransform;this.ctx.save();const o=n.context;o.scale(1/e.scaleX,1/e.scaleY);o.translate(-e.offsetX,-e.offsetY);o.transform.apply(o,i);e.startTransformInverse=o.mozCurrentTransformInverse;copyCtxState(a,o);this.ctx=o;this.setGState([["BM","source-over"],["ca",1],["CA",1]]);this.groupStack.push(a);this.groupLevel++}suspendSMaskGroup(){const e=this.ctx;this.groupLevel--;this.ctx=this.groupStack.pop();composeSMask(this.ctx,this.current.activeSMask,e);this.ctx.restore();this.ctx.save();copyCtxState(e,this.ctx);this.current.resumeSMaskCtx=e;const t=s.Util.transform(this.current.activeSMask.startTransformInverse,e.mozCurrentTransform);this.ctx.transform.apply(this.ctx,t);e.save();e.setTransform(1,0,0,1,0,0);e.clearRect(0,0,e.canvas.width,e.canvas.height);e.restore()}resumeSMaskGroup(){const e=this.current.resumeSMaskCtx,t=this.ctx;this.ctx=e;this.groupStack.push(t);this.groupLevel++}endSMaskGroup(){const e=this.ctx;this.groupLevel--;this.ctx=this.groupStack.pop();composeSMask(this.ctx,this.current.activeSMask,e);this.ctx.restore();copyCtxState(e,this.ctx);const t=s.Util.transform(this.current.activeSMask.startTransformInverse,e.mozCurrentTransform);this.ctx.transform.apply(this.ctx,t)}save(){this.ctx.save();const e=this.current;this.stateStack.push(e);this.current=e.clone();this.current.resumeSMaskCtx=null}restore(){this.current.resumeSMaskCtx&&this.resumeSMaskGroup();null===this.current.activeSMask||0!==this.stateStack.length&&this.stateStack[this.stateStack.length-1].activeSMask===this.current.activeSMask||this.endSMaskGroup();if(0!==this.stateStack.length){this.current=this.stateStack.pop();this.ctx.restore();this.pendingClip=null;this._cachedGetSinglePixelWidth=null}else this.current.activeSMask=null}transform(e,t,r,s,n,a){this.ctx.transform(e,t,r,s,n,a);this._cachedGetSinglePixelWidth=null}constructPath(e,t){const r=this.ctx,n=this.current;let a=n.x,i=n.y;for(let n=0,o=0,l=e.length;n=this.current.lineWidth){t.save();t.resetTransform();t.lineWidth=Math.round(this._combinedScaleFactor);t.stroke();t.restore()}else{t.lineWidth=Math.max(e,this.current.lineWidth);t.stroke()}}e&&this.consumePath();t.globalAlpha=this.current.fillAlpha}closeStroke(){this.closePath();this.stroke()}fill(e){e=void 0===e||e;const t=this.ctx,r=this.current.fillColor;let s=!1;if(this.current.patternFill){t.save();t.fillStyle=r.getPattern(t,this,t.mozCurrentTransformInverse);s=!0}if(this.contentVisible)if(this.pendingEOFill){t.fill("evenodd");this.pendingEOFill=!1}else t.fill();s&&t.restore();e&&this.consumePath()}eoFill(){this.pendingEOFill=!0;this.fill()}fillStroke(){this.fill(!1);this.stroke(!1);this.consumePath()}eoFillStroke(){this.pendingEOFill=!0;this.fillStroke()}closeFillStroke(){this.closePath();this.fillStroke()}closeEOFillStroke(){this.pendingEOFill=!0;this.closePath();this.fillStroke()}endPath(){this.consumePath()}clip(){this.pendingClip=r}eoClip(){this.pendingClip=o}beginText(){this.current.textMatrix=s.IDENTITY_MATRIX;this.current.textMatrixScale=1;this.current.x=this.current.lineX=0;this.current.y=this.current.lineY=0}endText(){const e=this.pendingTextPaths,t=this.ctx;if(void 0!==e){t.save();t.beginPath();for(let r=0;r100&&(c=100);this.current.fontSizeScale=t/c;this.ctx.font=`${o} ${i} ${c}px ${l}`}setTextRenderingMode(e){this.current.textRenderingMode=e}setTextRise(e){this.current.textRise=e}moveText(e,t){this.current.x=this.current.lineX+=e;this.current.y=this.current.lineY+=t}setLeadingMoveText(e,t){this.setLeading(-t);this.moveText(e,t)}setTextMatrix(e,t,r,s,n,a){this.current.textMatrix=[e,t,r,s,n,a];this.current.textMatrixScale=Math.hypot(e,t);this.current.x=this.current.lineX=0;this.current.y=this.current.lineY=0}nextLine(){this.moveText(0,this.current.leading)}paintChar(e,t,r,n,a){const i=this.ctx,o=this.current,l=o.font,c=o.textRenderingMode,h=o.fontSize/o.fontSizeScale,d=c&s.TextRenderingMode.FILL_STROKE_MASK,u=!!(c&s.TextRenderingMode.ADD_TO_PATH_FLAG),p=o.patternFill&&!l.missingFile;let g;(l.disableFontFace||u||p)&&(g=l.getPathGenerator(this.commonObjs,e));if(l.disableFontFace||p){i.save();i.translate(t,r);i.beginPath();g(i,h);n&&i.setTransform.apply(i,n);d!==s.TextRenderingMode.FILL&&d!==s.TextRenderingMode.FILL_STROKE||i.fill();if(d===s.TextRenderingMode.STROKE||d===s.TextRenderingMode.FILL_STROKE){if(a){i.resetTransform();i.lineWidth=Math.round(this._combinedScaleFactor)}i.stroke()}i.restore()}else{d!==s.TextRenderingMode.FILL&&d!==s.TextRenderingMode.FILL_STROKE||i.fillText(e,t,r);if(d===s.TextRenderingMode.STROKE||d===s.TextRenderingMode.FILL_STROKE)if(a){i.save();i.moveTo(t,r);i.resetTransform();i.lineWidth=Math.round(this._combinedScaleFactor);i.strokeText(e,0,0);i.restore()}else i.strokeText(e,t,r)}if(u){(this.pendingTextPaths||(this.pendingTextPaths=[])).push({transform:i.mozCurrentTransform,x:t,y:r,fontSize:h,addToPath:g})}}get isFontSubpixelAAEnabled(){const{context:e}=this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled",10,10);e.scale(1.5,1);e.fillText("I",0,10);const t=e.getImageData(0,0,10,10).data;let r=!1;for(let e=3;e0&&t[e]<255){r=!0;break}return(0,s.shadow)(this,"isFontSubpixelAAEnabled",r)}showText(e){const t=this.current,r=t.font;if(r.isType3Font)return this.showType3Text(e);const n=t.fontSize;if(0===n)return;const a=this.ctx,i=t.fontSizeScale,o=t.charSpacing,l=t.wordSpacing,c=t.fontDirection,h=t.textHScale*c,d=e.length,u=r.vertical,p=u?1:-1,g=r.defaultVMetrics,f=n*t.fontMatrix[0],m=t.textRenderingMode===s.TextRenderingMode.FILL&&!r.disableFontFace&&!t.patternFill;a.save();let A;if(t.patternFill){a.save();const e=t.fillColor.getPattern(a,this,a.mozCurrentTransformInverse);A=a.mozCurrentTransform;a.restore();a.fillStyle=e}a.transform.apply(a,t.textMatrix);a.translate(t.x,t.y+t.textRise);c>0?a.scale(h,-1):a.scale(h,1);let _=t.lineWidth,b=!1;const y=t.textMatrixScale;if(0===y||0===_){const e=t.textRenderingMode&s.TextRenderingMode.FILL_STROKE_MASK;if(e===s.TextRenderingMode.STROKE||e===s.TextRenderingMode.FILL_STROKE){this._cachedGetSinglePixelWidth=null;_=this.getSinglePixelWidth();b=_<0}}else _/=y;if(1!==i){a.scale(i,i);_/=i}a.lineWidth=_;let S,v=0;for(S=0;S0){const e=1e3*a.measureText(_).width/n*i;if(knew CanvasGraphics(e,this.commonObjs,this.objs,this.canvasFactory)};t=new n.TilingPattern(e,r,this.ctx,a,s)}else t=this._getPattern(e[1]);return t}setStrokeColorN(){this.current.strokeColor=this.getColorN_Pattern(arguments)}setFillColorN(){this.current.fillColor=this.getColorN_Pattern(arguments);this.current.patternFill=!0}setStrokeRGBColor(e,t,r){const n=s.Util.makeHexColor(e,t,r);this.ctx.strokeStyle=n;this.current.strokeColor=n}setFillRGBColor(e,t,r){const n=s.Util.makeHexColor(e,t,r);this.ctx.fillStyle=n;this.current.fillColor=n;this.current.patternFill=!1}_getPattern(e){if(this.cachedPatterns.has(e))return this.cachedPatterns.get(e);const t=(0,n.getShadingPattern)(this.objs.get(e));this.cachedPatterns.set(e,t);return t}shadingFill(e){if(!this.contentVisible)return;const t=this.ctx;this.save();const r=this._getPattern(e);t.fillStyle=r.getPattern(t,this,t.mozCurrentTransformInverse,!0);const n=t.mozCurrentTransformInverse;if(n){const e=t.canvas,r=e.width,a=e.height,i=s.Util.applyTransform([0,0],n),o=s.Util.applyTransform([0,a],n),l=s.Util.applyTransform([r,0],n),c=s.Util.applyTransform([r,a],n),h=Math.min(i[0],o[0],l[0],c[0]),d=Math.min(i[1],o[1],l[1],c[1]),u=Math.max(i[0],o[0],l[0],c[0]),p=Math.max(i[1],o[1],l[1],c[1]);this.ctx.fillRect(h,d,u-h,p-d)}else this.ctx.fillRect(-1e10,-1e10,2e10,2e10);this.restore()}beginInlineImage(){(0,s.unreachable)("Should not call beginInlineImage")}beginImageData(){(0,s.unreachable)("Should not call beginImageData")}paintFormXObjectBegin(e,t){if(this.contentVisible){this.save();this.baseTransformStack.push(this.baseTransform);Array.isArray(e)&&6===e.length&&this.transform.apply(this,e);this.baseTransform=this.ctx.mozCurrentTransform;if(t){const e=t[2]-t[0],r=t[3]-t[1];this.ctx.rect(t[0],t[1],e,r);this.clip();this.endPath()}}}paintFormXObjectEnd(){if(this.contentVisible){this.restore();this.baseTransform=this.baseTransformStack.pop()}}beginGroup(e){if(!this.contentVisible)return;this.save();const t=this.ctx;e.isolated||(0,s.info)("TODO: Support non-isolated groups.");e.knockout&&(0,s.warn)("Knockout groups not supported.");const r=t.mozCurrentTransform;e.matrix&&t.transform.apply(t,e.matrix);if(!e.bbox)throw new Error("Bounding box is required.");let n=s.Util.getAxialAlignedBoundingBox(e.bbox,t.mozCurrentTransform);const i=[0,0,t.canvas.width,t.canvas.height];n=s.Util.intersect(n,i)||[0,0,0,0];const o=Math.floor(n[0]),l=Math.floor(n[1]);let c=Math.max(Math.ceil(n[2])-o,1),h=Math.max(Math.ceil(n[3])-l,1),d=1,u=1;if(c>a){d=c/a;c=a}if(h>a){u=h/a;h=a}let p="groupAt"+this.groupLevel;e.smask&&(p+="_smask_"+this.smaskCounter++%2);const g=this.cachedCanvases.getCanvas(p,c,h,!0),f=g.context;f.scale(1/d,1/u);f.translate(-o,-l);f.transform.apply(f,r);if(e.smask)this.smaskStack.push({canvas:g.canvas,context:f,offsetX:o,offsetY:l,scaleX:d,scaleY:u,subtype:e.smask.subtype,backdrop:e.smask.backdrop,transferMap:e.smask.transferMap||null,startTransformInverse:null});else{t.setTransform(1,0,0,1,0,0);t.translate(o,l);t.scale(d,u)}copyCtxState(t,f);this.ctx=f;this.setGState([["BM","source-over"],["ca",1],["CA",1]]);this.groupStack.push(t);this.groupLevel++;this.current.activeSMask=null}endGroup(e){if(!this.contentVisible)return;this.groupLevel--;const t=this.ctx;this.ctx=this.groupStack.pop();void 0!==this.ctx.imageSmoothingEnabled?this.ctx.imageSmoothingEnabled=!1:this.ctx.mozImageSmoothingEnabled=!1;e.smask?this.tempSMask=this.smaskStack.pop():this.ctx.drawImage(t.canvas,0,0);this.restore()}beginAnnotations(){this.save();this.baseTransform&&this.ctx.setTransform.apply(this.ctx,this.baseTransform)}endAnnotations(){this.restore()}beginAnnotation(e,t,r,s){this.save();resetCtxToDefault(this.ctx);this.current=new CanvasExtraState;if(Array.isArray(t)&&4===t.length){const e=t[2]-t[0],r=t[3]-t[1];this.ctx.rect(t[0],t[1],e,r);this.clip();this.endPath()}this.transform.apply(this,r);this.transform.apply(this,s)}endAnnotation(){this.restore()}paintImageMaskXObject(e){if(!this.contentVisible)return;const t=this.ctx,r=e.width,s=e.height,n=this.processingType3;n&&void 0===n.compiled&&(n.compiled=r<=1e3&&s<=1e3?function compileType3Glyph(e){const t=new Uint8Array([0,2,4,0,1,0,5,4,8,10,0,8,0,2,1,0]),r=e.width,s=e.height,n=r+1;let a,i,o,l;const c=new Uint8Array(n*(s+1)),h=r+7&-8,d=e.data,u=new Uint8Array(h*s);let p=0;for(a=0,i=d.length;a0;){u[p++]=e&t?0:255;t>>=1}}let g=0;p=0;if(0!==u[p]){c[0]=1;++g}for(o=1;o>2)+(u[p+1]?4:0)+(u[p-h+1]?8:0);if(t[e]){c[l+o]=t[e];++g}p++}if(u[p-h]!==u[p]){c[l+o]=u[p]?2:4;++g}if(g>1e3)return null}p=h*(s-1);l=a*n;if(0!==u[p]){c[l]=8;++g}for(o=1;o1e3)return null;const f=new Int32Array([0,n,-1,0,-n,0,0,0,1]),m=[];for(a=0;g&&a<=s;a++){let e=a*n;const t=e+r;for(;e>4;c[e]&=o>>2|o<<2}s.push(e%n,e/n|0);c[e]||--g}while(i!==e);m.push(s);--a}return function(e){e.save();e.scale(1/r,-1/s);e.translate(0,-s);e.beginPath();for(let t=0,r=m.length;t1?this._cachedGetSinglePixelWidth=-this._combinedScaleFactor*n:t>Number.EPSILON?this._cachedGetSinglePixelWidth=n:this._cachedGetSinglePixelWidth=1}return this._cachedGetSinglePixelWidth}getCanvasPosition(e,t){const r=this.ctx.mozCurrentTransform;return[r[0]*e+r[2]*t+r[4],r[1]*e+r[3]*t+r[5]]}isContentVisible(){for(let e=this.markedContentStack.length-1;e>=0;e--)if(!this.markedContentStack[e].visible)return!1;return!0}}for(const e in s.OPS)CanvasGraphics.prototype[s.OPS[e]]=CanvasGraphics.prototype[e];return CanvasGraphics}();t.CanvasGraphics=o},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.getShadingPattern=function getShadingPattern(e){switch(e[0]){case"RadialAxial":return new RadialAxialShadingPattern(e);case"Mesh":return new MeshShadingPattern(e);case"Dummy":return new DummyShadingPattern}throw new Error(`Unknown IR type: ${e[0]}`)};t.TilingPattern=void 0;var s=r(2);function applyBoundingBox(e,t){if(!t||"undefined"==typeof Path2D)return;const r=t[2]-t[0],s=t[3]-t[1],n=new Path2D;n.rect(t[0],t[1],r,s);e.clip(n)}class BaseShadingPattern{constructor(){this.constructor===BaseShadingPattern&&(0,s.unreachable)("Cannot initialize BaseShadingPattern.")}getPattern(){(0,s.unreachable)("Abstract method `getPattern` called.")}}class RadialAxialShadingPattern extends BaseShadingPattern{constructor(e){super();this._type=e[1];this._bbox=e[2];this._colorStops=e[3];this._p0=e[4];this._p1=e[5];this._r0=e[6];this._r1=e[7];this._matrix=e[8];this._patternCache=null}_createGradient(e){let t;"axial"===this._type?t=e.createLinearGradient(this._p0[0],this._p0[1],this._p1[0],this._p1[1]):"radial"===this._type&&(t=e.createRadialGradient(this._p0[0],this._p0[1],this._r0,this._p1[0],this._p1[1],this._r1));for(const e of this._colorStops)t.addColorStop(e[0],e[1]);return t}getPattern(e,t,r,n=!1){let a;if(this._patternCache)a=this._patternCache;else{if(n){applyBoundingBox(e,this._bbox);a=this._createGradient(e)}else{const r=t.cachedCanvases.getCanvas("pattern",t.ctx.canvas.width,t.ctx.canvas.height,!0),s=r.context;s.clearRect(0,0,s.canvas.width,s.canvas.height);s.beginPath();s.rect(0,0,s.canvas.width,s.canvas.height);s.setTransform.apply(s,t.baseTransform);this._matrix&&s.transform.apply(s,this._matrix);applyBoundingBox(s,this._bbox);s.fillStyle=this._createGradient(s);s.fill();a=e.createPattern(r.canvas,"repeat")}this._patternCache=a}if(!n){const e=new DOMMatrix(r);try{a.setTransform(e)}catch(e){(0,s.warn)(`RadialAxialShadingPattern.getPattern: "${e?.message}".`)}}return a}}function drawTriangle(e,t,r,s,n,a,i,o){const l=t.coords,c=t.colors,h=e.data,d=4*e.width;let u;if(l[r+1]>l[s+1]){u=r;r=s;s=u;u=a;a=i;i=u}if(l[s+1]>l[n+1]){u=s;s=n;n=u;u=i;i=o;o=u}if(l[r+1]>l[s+1]){u=r;r=s;s=u;u=a;a=i;i=u}const p=(l[r]+t.offsetX)*t.scaleX,g=(l[r+1]+t.offsetY)*t.scaleY,f=(l[s]+t.offsetX)*t.scaleX,m=(l[s+1]+t.offsetY)*t.scaleY,A=(l[n]+t.offsetX)*t.scaleX,_=(l[n+1]+t.offsetY)*t.scaleY;if(g>=_)return;const b=c[a],y=c[a+1],S=c[a+2],v=c[i],x=c[i+1],C=c[i+2],P=c[o],k=c[o+1],w=c[o+2],R=Math.round(g),F=Math.round(_);let T,E,M,D,L,I,O,N;for(let e=R;e<=F;e++){if(e_?1:m===_?0:(m-e)/(m-_);T=f-(f-A)*t;E=v-(v-P)*t;M=x-(x-k)*t;D=C-(C-w)*t}let t;t=e_?1:(g-e)/(g-_);L=p-(p-A)*t;I=b-(b-P)*t;O=y-(y-k)*t;N=S-(S-w)*t;const r=Math.round(Math.min(T,L)),s=Math.round(Math.max(T,L));let n=d*e+4*r;for(let e=r;e<=s;e++){t=(T-e)/(T-L);t<0?t=0:t>1&&(t=1);h[n++]=E-(E-I)*t|0;h[n++]=M-(M-O)*t|0;h[n++]=D-(D-N)*t|0;h[n++]=255}}}function drawFigure(e,t,r){const s=t.coords,n=t.colors;let a,i;switch(t.type){case"lattice":const o=t.verticesPerRow,l=Math.floor(s.length/o)-1,c=o-1;for(a=0;a=s?n=s:r=n/e;return{scale:r,size:n}}clipBbox(e,t,r,s,n){const a=s-t,i=n-r;e.ctx.rect(t,r,a,i);e.clip();e.endPath()}setFillAndStrokeStyleToContext(e,t,r){const i=e.ctx,o=e.current;switch(t){case n:const e=this.ctx;i.fillStyle=e.fillStyle;i.strokeStyle=e.strokeStyle;o.fillColor=e.fillStyle;o.strokeColor=e.strokeStyle;break;case a:const l=s.Util.makeHexColor(r[0],r[1],r[2]);i.fillStyle=l;i.strokeStyle=l;o.fillColor=l;o.strokeColor=l;break;default:throw new s.FormatError(`Unsupported paint type: ${t}`)}}getPattern(e,t,r,n=!1){let a=r;if(!n){a=s.Util.transform(a,t.baseTransform);this.matrix&&(a=s.Util.transform(a,this.matrix))}const i=this.createPatternCanvas(t);let o=new DOMMatrix(a);o=o.translate(i.offsetX,i.offsetY);o=o.scale(1/i.scaleX,1/i.scaleY);const l=e.createPattern(i.canvas,"repeat");try{l.setTransform(o)}catch(e){(0,s.warn)(`TilingPattern.getPattern: "${e?.message}".`)}return l}}t.TilingPattern=TilingPattern},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.GlobalWorkerOptions=void 0;const r=Object.create(null);t.GlobalWorkerOptions=r;r.workerPort=void 0===r.workerPort?null:r.workerPort;r.workerSrc=void 0===r.workerSrc?"":r.workerSrc},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.MessageHandler=void 0;var s=r(2);const n=1,a=2,i=1,o=2,l=3,c=4,h=5,d=6,u=7,p=8;function wrapReason(e){if("object"!=typeof e||null===e)return e;switch(e.name){case"AbortException":return new s.AbortException(e.message);case"MissingPDFException":return new s.MissingPDFException(e.message);case"UnexpectedResponseException":return new s.UnexpectedResponseException(e.message,e.status);case"UnknownErrorException":return new s.UnknownErrorException(e.message,e.details);default:return new s.UnknownErrorException(e.message,e.toString())}}t.MessageHandler=class MessageHandler{constructor(e,t,r){this.sourceName=e;this.targetName=t;this.comObj=r;this.callbackId=1;this.streamId=1;this.postMessageTransfers=!0;this.streamSinks=Object.create(null);this.streamControllers=Object.create(null);this.callbackCapabilities=Object.create(null);this.actionHandler=Object.create(null);this._onComObjOnMessage=e=>{const t=e.data;if(t.targetName!==this.sourceName)return;if(t.stream){this._processStreamMessage(t);return}if(t.callback){const e=t.callbackId,r=this.callbackCapabilities[e];if(!r)throw new Error(`Cannot resolve callback ${e}`);delete this.callbackCapabilities[e];if(t.callback===n)r.resolve(t.data);else{if(t.callback!==a)throw new Error("Unexpected callback case");r.reject(wrapReason(t.reason))}return}const s=this.actionHandler[t.action];if(!s)throw new Error(`Unknown action from worker: ${t.action}`);if(t.callbackId){const e=this.sourceName,i=t.sourceName;new Promise((function(e){e(s(t.data))})).then((function(s){r.postMessage({sourceName:e,targetName:i,callback:n,callbackId:t.callbackId,data:s})}),(function(s){r.postMessage({sourceName:e,targetName:i,callback:a,callbackId:t.callbackId,reason:wrapReason(s)})}))}else t.streamId?this._createStreamSink(t):s(t.data)};r.addEventListener("message",this._onComObjOnMessage)}on(e,t){const r=this.actionHandler;if(r[e])throw new Error(`There is already an actionName called "${e}"`);r[e]=t}send(e,t,r){this._postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,data:t},r)}sendWithPromise(e,t,r){const n=this.callbackId++,a=(0,s.createPromiseCapability)();this.callbackCapabilities[n]=a;try{this._postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,callbackId:n,data:t},r)}catch(e){a.reject(e)}return a.promise}sendWithStream(e,t,r,n){const a=this.streamId++,o=this.sourceName,l=this.targetName,c=this.comObj;return new ReadableStream({start:r=>{const i=(0,s.createPromiseCapability)();this.streamControllers[a]={controller:r,startCall:i,pullCall:null,cancelCall:null,isClosed:!1};this._postMessage({sourceName:o,targetName:l,action:e,streamId:a,data:t,desiredSize:r.desiredSize},n);return i.promise},pull:e=>{const t=(0,s.createPromiseCapability)();this.streamControllers[a].pullCall=t;c.postMessage({sourceName:o,targetName:l,stream:d,streamId:a,desiredSize:e.desiredSize});return t.promise},cancel:e=>{(0,s.assert)(e instanceof Error,"cancel must have a valid reason");const t=(0,s.createPromiseCapability)();this.streamControllers[a].cancelCall=t;this.streamControllers[a].isClosed=!0;c.postMessage({sourceName:o,targetName:l,stream:i,streamId:a,reason:wrapReason(e)});return t.promise}},r)}_createStreamSink(e){const t=this,r=this.actionHandler[e.action],n=e.streamId,a=this.sourceName,i=e.sourceName,o=this.comObj,d={enqueue(e,r=1,o){if(this.isCancelled)return;const l=this.desiredSize;this.desiredSize-=r;if(l>0&&this.desiredSize<=0){this.sinkCapability=(0,s.createPromiseCapability)();this.ready=this.sinkCapability.promise}t._postMessage({sourceName:a,targetName:i,stream:c,streamId:n,chunk:e},o)},close(){if(!this.isCancelled){this.isCancelled=!0;o.postMessage({sourceName:a,targetName:i,stream:l,streamId:n});delete t.streamSinks[n]}},error(e){(0,s.assert)(e instanceof Error,"error must have a valid reason");if(!this.isCancelled){this.isCancelled=!0;o.postMessage({sourceName:a,targetName:i,stream:h,streamId:n,reason:wrapReason(e)})}},sinkCapability:(0,s.createPromiseCapability)(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:e.desiredSize,ready:null};d.sinkCapability.resolve();d.ready=d.sinkCapability.promise;this.streamSinks[n]=d;new Promise((function(t){t(r(e.data,d))})).then((function(){o.postMessage({sourceName:a,targetName:i,stream:p,streamId:n,success:!0})}),(function(e){o.postMessage({sourceName:a,targetName:i,stream:p,streamId:n,reason:wrapReason(e)})}))}_processStreamMessage(e){const t=e.streamId,r=this.sourceName,n=e.sourceName,a=this.comObj;switch(e.stream){case p:e.success?this.streamControllers[t].startCall.resolve():this.streamControllers[t].startCall.reject(wrapReason(e.reason));break;case u:e.success?this.streamControllers[t].pullCall.resolve():this.streamControllers[t].pullCall.reject(wrapReason(e.reason));break;case d:if(!this.streamSinks[t]){a.postMessage({sourceName:r,targetName:n,stream:u,streamId:t,success:!0});break}this.streamSinks[t].desiredSize<=0&&e.desiredSize>0&&this.streamSinks[t].sinkCapability.resolve();this.streamSinks[t].desiredSize=e.desiredSize;const{onPull:g}=this.streamSinks[e.streamId];new Promise((function(e){e(g&&g())})).then((function(){a.postMessage({sourceName:r,targetName:n,stream:u,streamId:t,success:!0})}),(function(e){a.postMessage({sourceName:r,targetName:n,stream:u,streamId:t,reason:wrapReason(e)})}));break;case c:(0,s.assert)(this.streamControllers[t],"enqueue should have stream controller");if(this.streamControllers[t].isClosed)break;this.streamControllers[t].controller.enqueue(e.chunk);break;case l:(0,s.assert)(this.streamControllers[t],"close should have stream controller");if(this.streamControllers[t].isClosed)break;this.streamControllers[t].isClosed=!0;this.streamControllers[t].controller.close();this._deleteStreamController(t);break;case h:(0,s.assert)(this.streamControllers[t],"error should have stream controller");this.streamControllers[t].controller.error(wrapReason(e.reason));this._deleteStreamController(t);break;case o:e.success?this.streamControllers[t].cancelCall.resolve():this.streamControllers[t].cancelCall.reject(wrapReason(e.reason));this._deleteStreamController(t);break;case i:if(!this.streamSinks[t])break;const{onCancel:f}=this.streamSinks[e.streamId];new Promise((function(t){t(f&&f(wrapReason(e.reason)))})).then((function(){a.postMessage({sourceName:r,targetName:n,stream:o,streamId:t,success:!0})}),(function(e){a.postMessage({sourceName:r,targetName:n,stream:o,streamId:t,reason:wrapReason(e)})}));this.streamSinks[t].sinkCapability.reject(wrapReason(e.reason));this.streamSinks[t].isCancelled=!0;delete this.streamSinks[t];break;default:throw new Error("Unexpected stream case")}}async _deleteStreamController(e){await Promise.allSettled([this.streamControllers[e].startCall,this.streamControllers[e].pullCall,this.streamControllers[e].cancelCall].map((function(e){return e&&e.promise})));delete this.streamControllers[e]}_postMessage(e,t){t&&this.postMessageTransfers?this.comObj.postMessage(e,t):this.comObj.postMessage(e)}destroy(){this.comObj.removeEventListener("message",this._onComObjOnMessage)}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.Metadata=void 0;var s=r(2);t.Metadata=class Metadata{constructor({parsedData:e,rawData:t}){this._metadataMap=e;this._data=t}getRaw(){return this._data}get(e){return this._metadataMap.get(e)??null}getAll(){return(0,s.objectFromMap)(this._metadataMap)}has(e){return this._metadataMap.has(e)}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.OptionalContentConfig=void 0;var s=r(2);class OptionalContentGroup{constructor(e,t){this.visible=!0;this.name=e;this.intent=t}}t.OptionalContentConfig=class OptionalContentConfig{constructor(e){this.name=null;this.creator=null;this._order=null;this._groups=new Map;if(null!==e){this.name=e.name;this.creator=e.creator;this._order=e.order;for(const t of e.groups)this._groups.set(t.id,new OptionalContentGroup(t.name,t.intent));if("OFF"===e.baseState)for(const e of this._groups)e.visible=!1;for(const t of e.on)this._groups.get(t).visible=!0;for(const t of e.off)this._groups.get(t).visible=!1}}_evaluateVisibilityExpression(e){const t=e.length;if(t<2)return!0;const r=e[0];for(let n=1;n0?(0,s.objectFromMap)(this._groups):null}getGroup(e){return this._groups.get(e)||null}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.PDFDataTransportStream=void 0;var s=r(2),n=r(1);t.PDFDataTransportStream=class PDFDataTransportStream{constructor(e,t){(0,s.assert)(t,'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.');this._queuedChunks=[];this._progressiveDone=e.progressiveDone||!1;this._contentDispositionFilename=e.contentDispositionFilename||null;const r=e.initialData;if(r?.length>0){const e=new Uint8Array(r).buffer;this._queuedChunks.push(e)}this._pdfDataRangeTransport=t;this._isStreamingSupported=!e.disableStream;this._isRangeSupported=!e.disableRange;this._contentLength=e.length;this._fullRequestReader=null;this._rangeReaders=[];this._pdfDataRangeTransport.addRangeListener(((e,t)=>{this._onReceiveData({begin:e,chunk:t})}));this._pdfDataRangeTransport.addProgressListener(((e,t)=>{this._onProgress({loaded:e,total:t})}));this._pdfDataRangeTransport.addProgressiveReadListener((e=>{this._onReceiveData({chunk:e})}));this._pdfDataRangeTransport.addProgressiveDoneListener((()=>{this._onProgressiveDone()}));this._pdfDataRangeTransport.transportReady()}_onReceiveData(e){const t=new Uint8Array(e.chunk).buffer;if(void 0===e.begin)this._fullRequestReader?this._fullRequestReader._enqueue(t):this._queuedChunks.push(t);else{const r=this._rangeReaders.some((function(r){if(r._begin!==e.begin)return!1;r._enqueue(t);return!0}));(0,s.assert)(r,"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.")}}get _progressiveDataLength(){return this._fullRequestReader?._loaded??0}_onProgress(e){if(void 0===e.total){const t=this._rangeReaders[0];t?.onProgress&&t.onProgress({loaded:e.loaded})}else{const t=this._fullRequestReader;t?.onProgress&&t.onProgress({loaded:e.loaded,total:e.total})}}_onProgressiveDone(){this._fullRequestReader&&this._fullRequestReader.progressiveDone();this._progressiveDone=!0}_removeRangeReader(e){const t=this._rangeReaders.indexOf(e);t>=0&&this._rangeReaders.splice(t,1)}getFullReader(){(0,s.assert)(!this._fullRequestReader,"PDFDataTransportStream.getFullReader can only be called once.");const e=this._queuedChunks;this._queuedChunks=null;return new PDFDataTransportStreamReader(this,e,this._progressiveDone,this._contentDispositionFilename)}getRangeReader(e,t){if(t<=this._progressiveDataLength)return null;const r=new PDFDataTransportStreamRangeReader(this,e,t);this._pdfDataRangeTransport.requestDataRange(e,t);this._rangeReaders.push(r);return r}cancelAllRequests(e){this._fullRequestReader&&this._fullRequestReader.cancel(e);for(const t of this._rangeReaders.slice(0))t.cancel(e);this._pdfDataRangeTransport.abort()}};class PDFDataTransportStreamReader{constructor(e,t,r=!1,s=null){this._stream=e;this._done=r||!1;this._filename=(0,n.isPdfFile)(s)?s:null;this._queuedChunks=t||[];this._loaded=0;for(const e of this._queuedChunks)this._loaded+=e.byteLength;this._requests=[];this._headersReady=Promise.resolve();e._fullRequestReader=this;this.onProgress=null}_enqueue(e){if(!this._done){if(this._requests.length>0){this._requests.shift().resolve({value:e,done:!1})}else this._queuedChunks.push(e);this._loaded+=e.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){return{value:this._queuedChunks.shift(),done:!1}}if(this._done)return{value:void 0,done:!0};const e=(0,s.createPromiseCapability)();this._requests.push(e);return e.promise}cancel(e){this._done=!0;for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0}progressiveDone(){this._done||(this._done=!0)}}class PDFDataTransportStreamRangeReader{constructor(e,t,r){this._stream=e;this._begin=t;this._end=r;this._queuedChunk=null;this._requests=[];this._done=!1;this.onProgress=null}_enqueue(e){if(!this._done){if(0===this._requests.length)this._queuedChunk=e;else{this._requests.shift().resolve({value:e,done:!1});for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0}this._done=!0;this._stream._removeRangeReader(this)}}get isStreamingSupported(){return!1}async read(){if(this._queuedChunk){const e=this._queuedChunk;this._queuedChunk=null;return{value:e,done:!1}}if(this._done)return{value:void 0,done:!0};const e=(0,s.createPromiseCapability)();this._requests.push(e);return e.promise}cancel(e){this._done=!0;for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0;this._stream._removeRangeReader(this)}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.AnnotationLayer=void 0;var s=r(1),n=r(2),a=r(9),i=r(18);class AnnotationElementFactory{static create(e){switch(e.data.annotationType){case n.AnnotationType.LINK:return new LinkAnnotationElement(e);case n.AnnotationType.TEXT:return new TextAnnotationElement(e);case n.AnnotationType.WIDGET:switch(e.data.fieldType){case"Tx":return new TextWidgetAnnotationElement(e);case"Btn":return e.data.radioButton?new RadioButtonWidgetAnnotationElement(e):e.data.checkBox?new CheckboxWidgetAnnotationElement(e):new PushButtonWidgetAnnotationElement(e);case"Ch":return new ChoiceWidgetAnnotationElement(e)}return new WidgetAnnotationElement(e);case n.AnnotationType.POPUP:return new PopupAnnotationElement(e);case n.AnnotationType.FREETEXT:return new FreeTextAnnotationElement(e);case n.AnnotationType.LINE:return new LineAnnotationElement(e);case n.AnnotationType.SQUARE:return new SquareAnnotationElement(e);case n.AnnotationType.CIRCLE:return new CircleAnnotationElement(e);case n.AnnotationType.POLYLINE:return new PolylineAnnotationElement(e);case n.AnnotationType.CARET:return new CaretAnnotationElement(e);case n.AnnotationType.INK:return new InkAnnotationElement(e);case n.AnnotationType.POLYGON:return new PolygonAnnotationElement(e);case n.AnnotationType.HIGHLIGHT:return new HighlightAnnotationElement(e);case n.AnnotationType.UNDERLINE:return new UnderlineAnnotationElement(e);case n.AnnotationType.SQUIGGLY:return new SquigglyAnnotationElement(e);case n.AnnotationType.STRIKEOUT:return new StrikeOutAnnotationElement(e);case n.AnnotationType.STAMP:return new StampAnnotationElement(e);case n.AnnotationType.FILEATTACHMENT:return new FileAttachmentAnnotationElement(e);default:return new AnnotationElement(e)}}}class AnnotationElement{constructor(e,{isRenderable:t=!1,ignoreBorder:r=!1,createQuadrilaterals:s=!1}={}){this.isRenderable=t;this.data=e.data;this.layer=e.layer;this.page=e.page;this.viewport=e.viewport;this.linkService=e.linkService;this.downloadManager=e.downloadManager;this.imageResourcesPath=e.imageResourcesPath;this.renderInteractiveForms=e.renderInteractiveForms;this.svgFactory=e.svgFactory;this.annotationStorage=e.annotationStorage;this.enableScripting=e.enableScripting;this.hasJSActions=e.hasJSActions;this._mouseState=e.mouseState;t&&(this.container=this._createContainer(r));s&&(this.quadrilaterals=this._createQuadrilaterals(r))}_createContainer(e=!1){const t=this.data,r=this.page,s=this.viewport,a=document.createElement("section");let i=t.rect[2]-t.rect[0],o=t.rect[3]-t.rect[1];a.setAttribute("data-annotation-id",t.id);const l=n.Util.normalizeRect([t.rect[0],r.view[3]-t.rect[1]+r.view[1],t.rect[2],r.view[3]-t.rect[3]+r.view[1]]);a.style.transform=`matrix(${s.transform.join(",")})`;a.style.transformOrigin=`${-l[0]}px ${-l[1]}px`;if(!e&&t.borderStyle.width>0){a.style.borderWidth=`${t.borderStyle.width}px`;if(t.borderStyle.style!==n.AnnotationBorderStyleType.UNDERLINE){i-=2*t.borderStyle.width;o-=2*t.borderStyle.width}const e=t.borderStyle.horizontalCornerRadius,r=t.borderStyle.verticalCornerRadius;if(e>0||r>0){const t=`${e}px / ${r}px`;a.style.borderRadius=t}switch(t.borderStyle.style){case n.AnnotationBorderStyleType.SOLID:a.style.borderStyle="solid";break;case n.AnnotationBorderStyleType.DASHED:a.style.borderStyle="dashed";break;case n.AnnotationBorderStyleType.BEVELED:(0,n.warn)("Unimplemented border style: beveled");break;case n.AnnotationBorderStyleType.INSET:(0,n.warn)("Unimplemented border style: inset");break;case n.AnnotationBorderStyleType.UNDERLINE:a.style.borderBottomStyle="solid"}t.color?a.style.borderColor=n.Util.makeHexColor(0|t.color[0],0|t.color[1],0|t.color[2]):a.style.borderWidth=0}a.style.left=`${l[0]}px`;a.style.top=`${l[1]}px`;a.style.width=`${i}px`;a.style.height=`${o}px`;return a}_createQuadrilaterals(e=!1){if(!this.data.quadPoints)return null;const t=[],r=this.data.rect;for(const r of this.data.quadPoints){this.data.rect=[r[2].x,r[2].y,r[1].x,r[1].y];t.push(this._createContainer(e))}this.data.rect=r;return t}_createPopup(e,t){let r=this.container;if(this.quadrilaterals){e=e||this.quadrilaterals;r=this.quadrilaterals[0]}if(!e){(e=document.createElement("div")).style.height=r.style.height;e.style.width=r.style.width;r.appendChild(e)}const s=new PopupElement({container:r,trigger:e,color:t.color,title:t.title,modificationDate:t.modificationDate,contents:t.contents,hideWrapper:!0}).render();s.style.left=r.style.width;r.appendChild(s)}_renderQuadrilaterals(e){for(const t of this.quadrilaterals)t.className=e;return this.quadrilaterals}render(){(0,n.unreachable)("Abstract method `AnnotationElement.render` called")}}class LinkAnnotationElement extends AnnotationElement{constructor(e){super(e,{isRenderable:!!(e.data.url||e.data.dest||e.data.action||e.data.isTooltipOnly||e.data.actions&&(e.data.actions.Action||e.data.actions["Mouse Up"]||e.data.actions["Mouse Down"])),createQuadrilaterals:!0})}render(){const{data:e,linkService:t}=this,r=document.createElement("a");e.url?(0,s.addLinkAttributes)(r,{url:e.url,target:e.newWindow?s.LinkTarget.BLANK:t.externalLinkTarget,rel:t.externalLinkRel,enabled:t.externalLinkEnabled}):e.action?this._bindNamedAction(r,e.action):e.dest?this._bindLink(r,e.dest):e.actions&&(e.actions.Action||e.actions["Mouse Up"]||e.actions["Mouse Down"])&&this.enableScripting&&this.hasJSActions?this._bindJSAction(r,e):this._bindLink(r,"");if(this.quadrilaterals)return this._renderQuadrilaterals("linkAnnotation").map(((e,t)=>{const s=0===t?r:r.cloneNode();e.appendChild(s);return e}));this.container.className="linkAnnotation";this.container.appendChild(r);return this.container}_bindLink(e,t){e.href=this.linkService.getDestinationHash(t);e.onclick=()=>{t&&this.linkService.goToDestination(t);return!1};(t||""===t)&&(e.className="internalLink")}_bindNamedAction(e,t){e.href=this.linkService.getAnchorUrl("");e.onclick=()=>{this.linkService.executeNamedAction(t);return!1};e.className="internalLink"}_bindJSAction(e,t){e.href=this.linkService.getAnchorUrl("");const r=new Map([["Action","onclick"],["Mouse Up","onmouseup"],["Mouse Down","onmousedown"]]);for(const s of Object.keys(t.actions)){const n=r.get(s);n&&(e[n]=()=>{this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:t.id,name:s}});return!1})}e.className="internalLink"}}class TextAnnotationElement extends AnnotationElement{constructor(e){super(e,{isRenderable:!!(e.data.hasPopup||e.data.title||e.data.contents)})}render(){this.container.className="textAnnotation";const e=document.createElement("img");e.style.height=this.container.style.height;e.style.width=this.container.style.width;e.src=this.imageResourcesPath+"annotation-"+this.data.name.toLowerCase()+".svg";e.alt="[{{type}} Annotation]";e.dataset.l10nId="text_annotation_type";e.dataset.l10nArgs=JSON.stringify({type:this.data.name});this.data.hasPopup||this._createPopup(e,this.data);this.container.appendChild(e);return this.container}}class WidgetAnnotationElement extends AnnotationElement{render(){this.data.alternativeText&&(this.container.title=this.data.alternativeText);return this.container}_getKeyModifier(e){return navigator.platform.includes("Win")&&e.ctrlKey||navigator.platform.includes("Mac")&&e.metaKey}_setEventListener(e,t,r,s){t.includes("mouse")?e.addEventListener(t,(e=>{this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:r,value:s(e),shift:e.shiftKey,modifier:this._getKeyModifier(e)}})})):e.addEventListener(t,(e=>{this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:r,value:e.target.checked}})}))}_setEventListeners(e,t,r){for(const[s,n]of t)("Action"===n||this.data.actions?.[n])&&this._setEventListener(e,s,n,r)}_dispatchEventFromSandbox(e,t){const setColor=(e,t,r)=>{const s=r.detail[e];r.target.style[t]=i.ColorConverters[`${s[0]}_HTML`](s.slice(1))},r={display:e=>{const t=e.detail.display%2==1;e.target.style.visibility=t?"hidden":"visible";this.annotationStorage.setValue(this.data.id,{hidden:t,print:0===e.detail.display||3===e.detail.display})},print:e=>{this.annotationStorage.setValue(this.data.id,{print:e.detail.print})},hidden:e=>{e.target.style.visibility=e.detail.hidden?"hidden":"visible";this.annotationStorage.setValue(this.data.id,{hidden:e.detail.hidden})},focus:e=>{setTimeout((()=>e.target.focus({preventScroll:!1})),0)},userName:e=>{e.target.title=e.detail.userName},readonly:e=>{e.detail.readonly?e.target.setAttribute("readonly",""):e.target.removeAttribute("readonly")},required:e=>{e.detail.required?e.target.setAttribute("required",""):e.target.removeAttribute("required")},bgColor:e=>{setColor("bgColor","backgroundColor",e)},fillColor:e=>{setColor("fillColor","backgroundColor",e)},fgColor:e=>{setColor("fgColor","color",e)},textColor:e=>{setColor("textColor","color",e)},borderColor:e=>{setColor("borderColor","borderColor",e)},strokeColor:e=>{setColor("strokeColor","borderColor",e)}};for(const s of Object.keys(t.detail)){const n=e[s]||r[s];n&&n(t)}}}class TextWidgetAnnotationElement extends WidgetAnnotationElement{constructor(e){super(e,{isRenderable:e.renderInteractiveForms||!e.data.hasAppearance&&!!e.data.fieldValue})}setPropertyOnSiblings(e,t,r,s){const n=this.annotationStorage;for(const a of document.getElementsByName(e.name))if(a!==e){a[t]=r;const e=Object.create(null);e[s]=r;n.setValue(a.getAttribute("id"),e)}}render(){const e=this.annotationStorage,t=this.data.id;this.container.className="textWidgetAnnotation";let r=null;if(this.renderInteractiveForms){const s=e.getValue(t,{value:this.data.fieldValue,valueAsString:this.data.fieldValue}),n=s.valueAsString||s.value||"",a={userValue:null,formattedValue:null,beforeInputSelectionRange:null,beforeInputValue:null};if(this.data.multiLine){r=document.createElement("textarea");r.textContent=n}else{r=document.createElement("input");r.type="text";r.setAttribute("value",n)}a.userValue=n;r.setAttribute("id",t);r.addEventListener("input",(s=>{e.setValue(t,{value:s.target.value});this.setPropertyOnSiblings(r,"value",s.target.value,"value")}));let blurListener=e=>{a.formattedValue&&(e.target.value=a.formattedValue);e.target.scrollLeft=0;a.beforeInputSelectionRange=null};if(this.enableScripting&&this.hasJSActions){r.addEventListener("focus",(e=>{a.userValue&&(e.target.value=a.userValue)}));r.addEventListener("updatefromsandbox",(r=>{const s={value(r){a.userValue=r.detail.value||"";e.setValue(t,{value:a.userValue.toString()});a.formattedValue||(r.target.value=a.userValue)},valueAsString(r){a.formattedValue=r.detail.valueAsString||"";r.target!==document.activeElement&&(r.target.value=a.formattedValue);e.setValue(t,{formattedValue:a.formattedValue})},selRange(e){const[t,r]=e.detail.selRange;t>=0&&r{a.beforeInputValue=e.target.value;let r=-1;"Escape"===e.key?r=0:"Enter"===e.key?r=2:"Tab"===e.key&&(r=3);if(-1!==r){a.userValue=e.target.value;this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:t,name:"Keystroke",value:e.target.value,willCommit:!0,commitKey:r,selStart:e.target.selectionStart,selEnd:e.target.selectionEnd}})}}));const s=blurListener;blurListener=null;r.addEventListener("blur",(e=>{if(this._mouseState.isDown){a.userValue=e.target.value;this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:t,name:"Keystroke",value:e.target.value,willCommit:!0,commitKey:1,selStart:e.target.selectionStart,selEnd:e.target.selectionEnd}})}s(e)}));r.addEventListener("mousedown",(e=>{a.beforeInputValue=e.target.value;a.beforeInputSelectionRange=null}));r.addEventListener("keyup",(e=>{e.target.selectionStart===e.target.selectionEnd&&(a.beforeInputSelectionRange=null)}));r.addEventListener("select",(e=>{a.beforeInputSelectionRange=[e.target.selectionStart,e.target.selectionEnd]}));this.data.actions?.Keystroke&&r.addEventListener("input",(e=>{let r=-1,s=-1;a.beforeInputSelectionRange&&([r,s]=a.beforeInputSelectionRange);this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:t,name:"Keystroke",value:a.beforeInputValue,change:e.data,willCommit:!1,selStart:r,selEnd:s}})}));this._setEventListeners(r,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],(e=>e.target.value))}blurListener&&r.addEventListener("blur",blurListener);r.disabled=this.data.readOnly;r.name=this.data.fieldName;null!==this.data.maxLen&&(r.maxLength=this.data.maxLen);if(this.data.comb){const e=(this.data.rect[2]-this.data.rect[0])/this.data.maxLen;r.classList.add("comb");r.style.letterSpacing=`calc(${e}px - 1ch)`}}else{r=document.createElement("div");r.textContent=this.data.fieldValue;r.style.verticalAlign="middle";r.style.display="table-cell"}this._setTextStyle(r);this.container.appendChild(r);return this.container}_setTextStyle(e){const t=["left","center","right"],{fontSize:r,fontColor:s}=this.data.defaultAppearanceData,a=e.style;r&&(a.fontSize=`${r}px`);a.color=n.Util.makeHexColor(s[0],s[1],s[2]);null!==this.data.textAlignment&&(a.textAlign=t[this.data.textAlignment])}}class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement{constructor(e){super(e,{isRenderable:e.renderInteractiveForms})}render(){const e=this.annotationStorage,t=this.data,r=t.id;let s=e.getValue(r,{value:t.fieldValue&&(t.exportValue&&t.exportValue===t.fieldValue||!t.exportValue&&"Off"!==t.fieldValue)}).value;if("string"==typeof s){s="Off"!==s;e.setValue(r,{value:s})}this.container.className="buttonWidgetAnnotation checkBox";const n=document.createElement("input");n.disabled=t.readOnly;n.type="checkbox";n.name=this.data.fieldName;s&&n.setAttribute("checked",!0);n.setAttribute("id",r);n.addEventListener("change",(function(t){const s=t.target.name;for(const r of document.getElementsByName(s))if(r!==t.target){r.checked=!1;e.setValue(r.parentNode.getAttribute("data-annotation-id"),{value:!1})}e.setValue(r,{value:t.target.checked})}));if(this.enableScripting&&this.hasJSActions){n.addEventListener("updatefromsandbox",(t=>{const s={value(t){t.target.checked="Off"!==t.detail.value;e.setValue(r,{value:t.target.checked})}};this._dispatchEventFromSandbox(s,t)}));this._setEventListeners(n,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],(e=>e.target.checked))}this.container.appendChild(n);return this.container}}class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement{constructor(e){super(e,{isRenderable:e.renderInteractiveForms})}render(){this.container.className="buttonWidgetAnnotation radioButton";const e=this.annotationStorage,t=this.data,r=t.id;let s=e.getValue(r,{value:t.fieldValue===t.buttonValue}).value;if("string"==typeof s){s=s!==t.buttonValue;e.setValue(r,{value:s})}const n=document.createElement("input");n.disabled=t.readOnly;n.type="radio";n.name=t.fieldName;s&&n.setAttribute("checked",!0);n.setAttribute("id",r);n.addEventListener("change",(function(t){const{target:s}=t;for(const t of document.getElementsByName(s.name))t!==s&&e.setValue(t.getAttribute("id"),{value:!1});e.setValue(r,{value:s.checked})}));if(this.enableScripting&&this.hasJSActions){const s=t.buttonValue;n.addEventListener("updatefromsandbox",(t=>{const n={value(t){const n=s===t.detail.value;for(const s of document.getElementsByName(t.target.name)){const t=s.getAttribute("id");s.checked=t===r&&n;e.setValue(t,{value:s.checked})}}};this._dispatchEventFromSandbox(n,t)}));this._setEventListeners(n,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],(e=>e.target.checked))}this.container.appendChild(n);return this.container}}class PushButtonWidgetAnnotationElement extends LinkAnnotationElement{render(){const e=super.render();e.className="buttonWidgetAnnotation pushButton";this.data.alternativeText&&(e.title=this.data.alternativeText);return e}}class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement{constructor(e){super(e,{isRenderable:e.renderInteractiveForms})}render(){this.container.className="choiceWidgetAnnotation";const e=this.annotationStorage,t=this.data.id;e.getValue(t,{value:this.data.fieldValue.length>0?this.data.fieldValue[0]:void 0});const r=document.createElement("select");r.disabled=this.data.readOnly;r.name=this.data.fieldName;r.setAttribute("id",t);if(!this.data.combo){r.size=this.data.options.length;this.data.multiSelect&&(r.multiple=!0)}for(const e of this.data.options){const t=document.createElement("option");t.textContent=e.displayValue;t.value=e.exportValue;this.data.fieldValue.includes(e.exportValue)&&t.setAttribute("selected",!0);r.appendChild(t)}const getValue=(e,t)=>{const r=t?"value":"textContent",s=e.target.options;return e.target.multiple?Array.prototype.filter.call(s,(e=>e.selected)).map((e=>e[r])):-1===s.selectedIndex?null:s[s.selectedIndex][r]},getItems=e=>{const t=e.target.options;return Array.prototype.map.call(t,(e=>({displayValue:e.textContent,exportValue:e.value})))};if(this.enableScripting&&this.hasJSActions){r.addEventListener("updatefromsandbox",(s=>{const n={value(s){const n=r.options,a=s.detail.value,i=new Set(Array.isArray(a)?a:[a]);Array.prototype.forEach.call(n,(e=>{e.selected=i.has(e.value)}));e.setValue(t,{value:getValue(s,!0)})},multipleSelection(e){r.multiple=!0},remove(s){const n=r.options,a=s.detail.remove;n[a].selected=!1;r.remove(a);if(n.length>0){-1===Array.prototype.findIndex.call(n,(e=>e.selected))&&(n[0].selected=!0)}e.setValue(t,{value:getValue(s,!0),items:getItems(s)})},clear(s){for(;0!==r.length;)r.remove(0);e.setValue(t,{value:null,items:[]})},insert(s){const{index:n,displayValue:a,exportValue:i}=s.detail.insert,o=document.createElement("option");o.textContent=a;o.value=i;r.insertBefore(o,r.children[n]);e.setValue(t,{value:getValue(s,!0),items:getItems(s)})},items(s){const{items:n}=s.detail;for(;0!==r.length;)r.remove(0);for(const e of n){const{displayValue:t,exportValue:s}=e,n=document.createElement("option");n.textContent=t;n.value=s;r.appendChild(n)}r.options.length>0&&(r.options[0].selected=!0);e.setValue(t,{value:getValue(s,!0),items:getItems(s)})},indices(r){const s=new Set(r.detail.indices),n=r.target.options;Array.prototype.forEach.call(n,((e,t)=>{e.selected=s.has(t)}));e.setValue(t,{value:getValue(r,!0)})},editable(e){e.target.disabled=!e.detail.editable}};this._dispatchEventFromSandbox(n,s)}));r.addEventListener("input",(r=>{const s=getValue(r,!0),n=getValue(r,!1);e.setValue(t,{value:s});this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:t,name:"Keystroke",value:n,changeEx:s,willCommit:!0,commitKey:1,keyDown:!1}})}));this._setEventListeners(r,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"],["input","Action"]],(e=>e.target.checked))}else r.addEventListener("input",(function(r){e.setValue(t,{value:getValue(r)})}));this.container.appendChild(r);return this.container}}class PopupAnnotationElement extends AnnotationElement{constructor(e){super(e,{isRenderable:!(!e.data.title&&!e.data.contents)})}render(){this.container.className="popupAnnotation";if(["Line","Square","Circle","PolyLine","Polygon","Ink"].includes(this.data.parentType))return this.container;const e=`[data-annotation-id="${this.data.parentId}"]`,t=this.layer.querySelectorAll(e);if(0===t.length)return this.container;const r=new PopupElement({container:this.container,trigger:Array.from(t),color:this.data.color,title:this.data.title,modificationDate:this.data.modificationDate,contents:this.data.contents}),s=this.page,a=n.Util.normalizeRect([this.data.parentRect[0],s.view[3]-this.data.parentRect[1]+s.view[1],this.data.parentRect[2],s.view[3]-this.data.parentRect[3]+s.view[1]]),i=a[0]+this.data.parentRect[2]-this.data.parentRect[0],o=a[1];this.container.style.transformOrigin=`${-i}px ${-o}px`;this.container.style.left=`${i}px`;this.container.style.top=`${o}px`;this.container.appendChild(r.render());return this.container}}class PopupElement{constructor(e){this.container=e.container;this.trigger=e.trigger;this.color=e.color;this.title=e.title;this.modificationDate=e.modificationDate;this.contents=e.contents;this.hideWrapper=e.hideWrapper||!1;this.pinned=!1}render(){const e=document.createElement("div");e.className="popupWrapper";this.hideElement=this.hideWrapper?e:this.container;this.hideElement.hidden=!0;const t=document.createElement("div");t.className="popup";const r=this.color;if(r){const e=.7*(255-r[0])+r[0],s=.7*(255-r[1])+r[1],a=.7*(255-r[2])+r[2];t.style.backgroundColor=n.Util.makeHexColor(0|e,0|s,0|a)}const a=document.createElement("h1");a.textContent=this.title;t.appendChild(a);const i=s.PDFDateString.toDateObject(this.modificationDate);if(i){const e=document.createElement("span");e.textContent="{{date}}, {{time}}";e.dataset.l10nId="annotation_date_string";e.dataset.l10nArgs=JSON.stringify({date:i.toLocaleDateString(),time:i.toLocaleTimeString()});t.appendChild(e)}const o=this._formatContents(this.contents);t.appendChild(o);Array.isArray(this.trigger)||(this.trigger=[this.trigger]);for(const e of this.trigger){e.addEventListener("click",this._toggle.bind(this));e.addEventListener("mouseover",this._show.bind(this,!1));e.addEventListener("mouseout",this._hide.bind(this,!1))}t.addEventListener("click",this._hide.bind(this,!0));e.appendChild(t);return e}_formatContents(e){const t=document.createElement("p"),r=e.split(/(?:\r\n?|\n)/);for(let e=0,s=r.length;e{Object.defineProperty(t,"__esModule",{value:!0});t.ColorConverters=void 0;function makeColorComp(e){return Math.floor(255*Math.max(0,Math.min(1,e))).toString(16).padStart(2,"0")}t.ColorConverters=class ColorConverters{static CMYK_G([e,t,r,s]){return["G",1-Math.min(1,.3*e+.59*r+.11*t+s)]}static G_CMYK([e]){return["CMYK",0,0,0,1-e]}static G_RGB([e]){return["RGB",e,e,e]}static G_HTML([e]){const t=makeColorComp(e);return`#${t}${t}${t}`}static RGB_G([e,t,r]){return["G",.3*e+.59*t+.11*r]}static RGB_HTML([e,t,r]){return`#${makeColorComp(e)}${makeColorComp(t)}${makeColorComp(r)}`}static T_HTML(){return"#00000000"}static CMYK_RGB([e,t,r,s]){return["RGB",1-Math.min(1,e+s),1-Math.min(1,r+s),1-Math.min(1,t+s)]}static CMYK_HTML(e){return this.RGB_HTML(this.CMYK_RGB(e))}static RGB_CMYK([e,t,r]){const s=1-e,n=1-t,a=1-r;return["CMYK",s,n,a,Math.min(s,n,a)]}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.renderTextLayer=function renderTextLayer(e){const t=new TextLayerRenderTask({textContent:e.textContent,textContentStream:e.textContentStream,container:e.container,viewport:e.viewport,textDivs:e.textDivs,textContentItemsStr:e.textContentItemsStr,enhanceTextSelection:e.enhanceTextSelection});t._render(e.timeout);return t};var s=r(2);const n=30,a=new Map,i=/^\s+$/g;function appendText(e,t,r,o){const l=document.createElement("span"),c={angle:0,canvasWidth:0,hasText:""!==t.str,hasEOL:t.hasEOL,originalTransform:null,paddingBottom:0,paddingLeft:0,paddingRight:0,paddingTop:0,scale:1};e._textDivs.push(l);const h=s.Util.transform(e._viewport.transform,t.transform);let d=Math.atan2(h[1],h[0]);const u=r[t.fontName];u.vertical&&(d+=Math.PI/2);const p=Math.hypot(h[2],h[3]),g=p*function getAscent(e,t){const r=a.get(e);if(r)return r;t.save();t.font=`30px ${e}`;const s=t.measureText("");let i=s.fontBoundingBoxAscent,o=Math.abs(s.fontBoundingBoxDescent);if(i){t.restore();const r=i/(i+o);a.set(e,r);return r}t.strokeStyle="red";t.clearRect(0,0,n,n);t.strokeText("g",0,0);let l=t.getImageData(0,0,n,n).data;o=0;for(let e=l.length-1-3;e>=0;e-=4)if(l[e]>0){o=Math.ceil(e/4/n);break}t.clearRect(0,0,n,n);t.strokeText("A",0,n);l=t.getImageData(0,0,n,n).data;i=0;for(let e=0,t=l.length;e0){i=n-Math.floor(e/4/n);break}t.restore();if(i){const t=i/(i+o);a.set(e,t);return t}a.set(e,.8);return.8}(u.fontFamily,o);let f,m;if(0===d){f=h[4];m=h[5]-g}else{f=h[4]+g*Math.sin(d);m=h[5]-g*Math.cos(d)}l.style.left=`${f}px`;l.style.top=`${m}px`;l.style.fontSize=`${p}px`;l.style.fontFamily=u.fontFamily;l.setAttribute("role","presentation");l.textContent=t.str;l.dir=t.dir;e._fontInspectorEnabled&&(l.dataset.fontName=t.fontName);0!==d&&(c.angle=d*(180/Math.PI));let A=!1;if(t.str.length>1||e._enhanceTextSelection&&i.test(t.str))A=!0;else if(t.transform[0]!==t.transform[3]){const e=Math.abs(t.transform[0]),r=Math.abs(t.transform[3]);e!==r&&Math.max(e,r)/Math.min(e,r)>1.5&&(A=!0)}A&&(u.vertical?c.canvasWidth=t.height*e._viewport.scale:c.canvasWidth=t.width*e._viewport.scale);e._textDivProperties.set(l,c);e._textContentStream&&e._layoutText(l);if(e._enhanceTextSelection&&c.hasText){let r=1,n=0;if(0!==d){r=Math.cos(d);n=Math.sin(d)}const a=(u.vertical?t.height:t.width)*e._viewport.scale,i=p;let o,c;if(0!==d){o=[r,n,-n,r,f,m];c=s.Util.getAxialAlignedBoundingBox([0,0,a,i],o)}else c=[f,m,f+a,m+i];e._bounds.push({left:c[0],top:c[1],right:c[2],bottom:c[3],div:l,size:[a,i],m:o})}}function render(e){if(e._canceled)return;const t=e._textDivs,r=e._capability,s=t.length;if(s>1e5){e._renderingDone=!0;r.resolve()}else{if(!e._textContentStream)for(let r=0;r0&&(s=s?Math.min(r,s):r)}return s}function expand(e){const t=e._bounds,r=e._viewport,n=function expandBounds(e,t,r){const s=r.map((function(e,t){return{x1:e.left,y1:e.top,x2:e.right,y2:e.bottom,index:t,x1New:void 0,x2New:void 0}}));expandBoundsLTR(e,s);const n=new Array(r.length);for(const e of s){const t=e.index;n[t]={left:e.x1New,top:0,right:e.x2New,bottom:0}}r.map((function(t,r){const a=n[r],i=s[r];i.x1=t.top;i.y1=e-a.right;i.x2=t.bottom;i.y2=e-a.left;i.index=r;i.x1New=void 0;i.x2New=void 0}));expandBoundsLTR(t,s);for(const e of s){const t=e.index;n[t].top=e.x1New;n[t].bottom=e.x2New}return n}(r.width,r.height,t);for(let r=0;r=0&&r[a].start>=e.y2;)a--;let i,o,l=-1/0;for(i=t;i<=a;i++){s=r[i];n=s.boundary;let t;t=n.x2>e.x1?n.index>e.index?n.x1New:e.x1:void 0===n.x2New?(n.x2+e.x1)/2:n.x2New;t>l&&(l=t)}e.x1New=l;for(i=t;i<=a;i++){s=r[i];n=s.boundary;void 0===n.x2New?n.x2>e.x1?n.index>e.index&&(n.x2New=n.x2):n.x2New=l:n.x2New>l&&(n.x2New=Math.max(l,n.x2))}const c=[];let h=null;for(i=t;i<=a;i++){s=r[i];n=s.boundary;const t=n.x2>e.x2?n:e;if(h===t)c[c.length-1].end=s.end;else{c.push({start:s.start,end:s.end,boundary:t});h=t}}if(r[t].start=0&&r[o].start>=n.y1;o--)e=r[o].boundary===n;for(o=a+1;!e&&o{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=!0;if(this._reader){this._reader.cancel(new s.AbortException("TextLayer task cancelled."));this._reader=null}if(null!==this._renderTimer){clearTimeout(this._renderTimer);this._renderTimer=null}this._capability.reject(new Error("TextLayer task cancelled."))}_processItems(e,t){for(let r=0,s=e.length;r0){t.scale=t.canvasWidth/a;r=`scaleX(${t.scale})`}}0!==t.angle&&(r=`rotate(${t.angle}deg) ${r}`);if(r.length>0){this._enhanceTextSelection&&(t.originalTransform=r);e.style.transform=r}t.hasText&&this._container.appendChild(e);if(t.hasEOL){const e=document.createElement("br");e.setAttribute("role","presentation");this._container.appendChild(e)}}_render(e=0){const t=(0,s.createPromiseCapability)();let r=Object.create(null);const a=this._document.createElement("canvas");a.height=a.width=n;a.mozOpaque=!0;this._layoutTextCtx=a.getContext("2d",{alpha:!1});if(this._textContent){const e=this._textContent.items,r=this._textContent.styles;this._processItems(e,r);t.resolve()}else{if(!this._textContentStream)throw new Error('Neither "textContent" nor "textContentStream" parameters specified.');{const pump=()=>{this._reader.read().then((({value:e,done:s})=>{if(s)t.resolve();else{Object.assign(r,e.styles);this._processItems(e.items,r);pump()}}),t.reject)};this._reader=this._textContentStream.getReader();pump()}}t.promise.then((()=>{r=null;e?this._renderTimer=setTimeout((()=>{render(this);this._renderTimer=null}),e):render(this)}),this._capability.reject)}expandTextDivs(e=!1){if(!this._enhanceTextSelection||!this._renderingDone)return;if(null!==this._bounds){expand(this);this._bounds=null}const t=[],r=[];for(let s=0,n=this._textDivs.length;s0){r.push(`${a.paddingTop}px`);t.push(`translateY(${-a.paddingTop}px)`)}else r.push(0);a.paddingRight>0?r.push(a.paddingRight/a.scale+"px"):r.push(0);a.paddingBottom>0?r.push(`${a.paddingBottom}px`):r.push(0);if(a.paddingLeft>0){r.push(a.paddingLeft/a.scale+"px");t.push(`translateX(${-a.paddingLeft/a.scale}px)`)}else r.push(0);n.style.padding=r.join(" ");t.length&&(n.style.transform=t.join(" "))}else{n.style.padding=null;n.style.transform=a.originalTransform}}}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.SVGGraphics=void 0;var s=r(2),n=r(1),a=r(4);let i=class{constructor(){(0,s.unreachable)("Not implemented: SVGGraphics")}};t.SVGGraphics=i;{const e={fontStyle:"normal",fontWeight:"normal",fillColor:"#000000"},r="http://www.w3.org/XML/1998/namespace",o="http://www.w3.org/1999/xlink",l=["butt","round","square"],c=["miter","round","bevel"],h=function(){const e=new Uint8Array([137,80,78,71,13,10,26,10]),t=new Int32Array(256);for(let e=0;e<256;e++){let r=e;for(let e=0;e<8;e++)r=1&r?3988292384^r>>1&2147483647:r>>1&2147483647;t[e]=r}function writePngChunk(e,r,s,n){let a=n;const i=r.length;s[a]=i>>24&255;s[a+1]=i>>16&255;s[a+2]=i>>8&255;s[a+3]=255&i;a+=4;s[a]=255&e.charCodeAt(0);s[a+1]=255&e.charCodeAt(1);s[a+2]=255&e.charCodeAt(2);s[a+3]=255&e.charCodeAt(3);a+=4;s.set(r,a);a+=r.length;const o=function crc32(e,r,s){let n=-1;for(let a=r;a>>8^t[r]}return-1^n}(s,n+4,a);s[a]=o>>24&255;s[a+1]=o>>16&255;s[a+2]=o>>8&255;s[a+3]=255&o}function deflateSyncUncompressed(e){let t=e.length;const r=65535,s=Math.ceil(t/r),n=new Uint8Array(2+t+5*s+4);let a=0;n[a++]=120;n[a++]=156;let i=0;for(;t>r;){n[a++]=0;n[a++]=255;n[a++]=255;n[a++]=0;n[a++]=0;n.set(e.subarray(i,i+r),a);a+=r;i+=r;t-=r}n[a++]=1;n[a++]=255&t;n[a++]=t>>8&255;n[a++]=255&~t;n[a++]=(65535&~t)>>8&255;n.set(e.subarray(i),a);a+=e.length-i;const o=function adler32(e,t,r){let s=1,n=0;for(let a=t;a>24&255;n[a++]=o>>16&255;n[a++]=o>>8&255;n[a++]=255&o;return n}function encode(t,r,n,i){const o=t.width,l=t.height;let c,h,d;const u=t.data;switch(r){case s.ImageKind.GRAYSCALE_1BPP:h=0;c=1;d=o+7>>3;break;case s.ImageKind.RGB_24BPP:h=2;c=8;d=3*o;break;case s.ImageKind.RGBA_32BPP:h=6;c=8;d=4*o;break;default:throw new Error("invalid format")}const p=new Uint8Array((1+d)*l);let g=0,f=0;for(let e=0;e>24&255,o>>16&255,o>>8&255,255&o,l>>24&255,l>>16&255,l>>8&255,255&l,c,h,0,0,0]),A=function deflateSync(e){if(!a.isNodeJS)return deflateSyncUncompressed(e);try{let t;t=parseInt(process.versions.node)>=8?e:Buffer.from(e);const r=require("zlib").deflateSync(t,{level:9});return r instanceof Uint8Array?r:new Uint8Array(r)}catch(e){(0,s.warn)("Not compressing PNG because zlib.deflateSync is unavailable: "+e)}return deflateSyncUncompressed(e)}(p),_=e.length+36+m.length+A.length,b=new Uint8Array(_);let y=0;b.set(e,y);y+=e.length;writePngChunk("IHDR",m,b,y);y+=12+m.length;writePngChunk("IDATA",A,b,y);y+=12+A.length;writePngChunk("IEND",new Uint8Array(0),b,y);return(0,s.createObjectURL)(b,"image/png",n)}return function convertImgDataToPng(e,t,r){return encode(e,void 0===e.kind?s.ImageKind.GRAYSCALE_1BPP:e.kind,t,r)}}();class SVGExtraState{constructor(){this.fontSizeScale=1;this.fontWeight=e.fontWeight;this.fontSize=0;this.textMatrix=s.IDENTITY_MATRIX;this.fontMatrix=s.FONT_IDENTITY_MATRIX;this.leading=0;this.textRenderingMode=s.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=e.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(e,t){this.x=e;this.y=t}}function opListToTree(e){let t=[];const r=[];for(const s of e)if("save"!==s.fn)"restore"===s.fn?t=r.pop():t.push(s);else{t.push({fnId:92,fn:"group",items:[]});r.push(t);t=t[t.length-1].items}return t}function pf(e){if(Number.isInteger(e))return e.toString();const t=e.toFixed(10);let r=t.length-1;if("0"!==t[r])return t;do{r--}while("0"===t[r]);return t.substring(0,"."===t[r]?r:r+1)}function pm(e){if(0===e[4]&&0===e[5]){if(0===e[1]&&0===e[2])return 1===e[0]&&1===e[3]?"":`scale(${pf(e[0])} ${pf(e[3])})`;if(e[0]===e[3]&&e[1]===-e[2]){return`rotate(${pf(180*Math.acos(e[0])/Math.PI)})`}}else if(1===e[0]&&0===e[1]&&0===e[2]&&1===e[3])return`translate(${pf(e[4])} ${pf(e[5])})`;return`matrix(${pf(e[0])} ${pf(e[1])} ${pf(e[2])} ${pf(e[3])} ${pf(e[4])} ${pf(e[5])})`}let d=0,u=0,p=0;t.SVGGraphics=i=class{constructor(e,t,r=!1){this.svgFactory=new n.DOMSVGFactory;this.current=new SVGExtraState;this.transformMatrix=s.IDENTITY_MATRIX;this.transformStack=[];this.extraStack=[];this.commonObjs=e;this.objs=t;this.pendingClip=null;this.pendingEOFill=!1;this.embedFonts=!1;this.embeddedFonts=Object.create(null);this.cssStyle=null;this.forceDataSchema=!!r;this._operatorIdMapping=[];for(const e in s.OPS)this._operatorIdMapping[s.OPS[e]]=e}save(){this.transformStack.push(this.transformMatrix);const e=this.current;this.extraStack.push(e);this.current=e.clone()}restore(){this.transformMatrix=this.transformStack.pop();this.current=this.extraStack.pop();this.pendingClip=null;this.tgrp=null}group(e){this.save();this.executeOpTree(e);this.restore()}loadDependencies(e){const t=e.fnArray,r=e.argsArray;for(let e=0,n=t.length;e{e.get(t,r)}));this.current.dependencies.push(r)}return Promise.all(this.current.dependencies)}transform(e,t,r,n,a,i){const o=[e,t,r,n,a,i];this.transformMatrix=s.Util.transform(this.transformMatrix,o);this.tgrp=null}getSVG(e,t){this.viewport=t;const r=this._initialize(t);return this.loadDependencies(e).then((()=>{this.transformMatrix=s.IDENTITY_MATRIX;this.executeOpTree(this.convertOpList(e));return r}))}convertOpList(e){const t=this._operatorIdMapping,r=e.argsArray,s=e.fnArray,n=[];for(let e=0,a=s.length;e0&&(this.current.lineWidth=e)}setLineCap(e){this.current.lineCap=l[e]}setLineJoin(e){this.current.lineJoin=c[e]}setMiterLimit(e){this.current.miterLimit=e}setStrokeAlpha(e){this.current.strokeAlpha=e}setStrokeRGBColor(e,t,r){this.current.strokeColor=s.Util.makeHexColor(e,t,r)}setFillAlpha(e){this.current.fillAlpha=e}setFillRGBColor(e,t,r){this.current.fillColor=s.Util.makeHexColor(e,t,r);this.current.tspan=this.svgFactory.createElement("svg:tspan");this.current.xcoords=[];this.current.ycoords=[]}setStrokeColorN(e){this.current.strokeColor=this._makeColorN_Pattern(e)}setFillColorN(e){this.current.fillColor=this._makeColorN_Pattern(e)}shadingFill(e){const t=this.viewport.width,r=this.viewport.height,n=s.Util.inverseTransform(this.transformMatrix),a=s.Util.applyTransform([0,0],n),i=s.Util.applyTransform([0,r],n),o=s.Util.applyTransform([t,0],n),l=s.Util.applyTransform([t,r],n),c=Math.min(a[0],i[0],o[0],l[0]),h=Math.min(a[1],i[1],o[1],l[1]),d=Math.max(a[0],i[0],o[0],l[0]),u=Math.max(a[1],i[1],o[1],l[1]),p=this.svgFactory.createElement("svg:rect");p.setAttributeNS(null,"x",c);p.setAttributeNS(null,"y",h);p.setAttributeNS(null,"width",d-c);p.setAttributeNS(null,"height",u-h);p.setAttributeNS(null,"fill",this._makeShadingPattern(e));this.current.fillAlpha<1&&p.setAttributeNS(null,"fill-opacity",this.current.fillAlpha);this._ensureTransformGroup().appendChild(p)}_makeColorN_Pattern(e){return"TilingPattern"===e[0]?this._makeTilingPattern(e):this._makeShadingPattern(e)}_makeTilingPattern(e){const t=e[1],r=e[2],n=e[3]||s.IDENTITY_MATRIX,[a,i,o,l]=e[4],c=e[5],h=e[6],d=e[7],u="shading"+p++,[g,f,m,A]=s.Util.normalizeRect([...s.Util.applyTransform([a,i],n),...s.Util.applyTransform([o,l],n)]),[_,b]=s.Util.singularValueDecompose2dScale(n),y=c*_,S=h*b,v=this.svgFactory.createElement("svg:pattern");v.setAttributeNS(null,"id",u);v.setAttributeNS(null,"patternUnits","userSpaceOnUse");v.setAttributeNS(null,"width",y);v.setAttributeNS(null,"height",S);v.setAttributeNS(null,"x",`${g}`);v.setAttributeNS(null,"y",`${f}`);const x=this.svg,C=this.transformMatrix,P=this.current.fillColor,k=this.current.strokeColor,w=this.svgFactory.create(m-g,A-f);this.svg=w;this.transformMatrix=n;if(2===d){const e=s.Util.makeHexColor(...t);this.current.fillColor=e;this.current.strokeColor=e}this.executeOpTree(this.convertOpList(r));this.svg=x;this.transformMatrix=C;this.current.fillColor=P;this.current.strokeColor=k;v.appendChild(w.childNodes[0]);this.defs.appendChild(v);return`url(#${u})`}_makeShadingPattern(e){switch(e[0]){case"RadialAxial":const t="shading"+p++,r=e[3];let n;switch(e[1]){case"axial":const r=e[4],s=e[5];n=this.svgFactory.createElement("svg:linearGradient");n.setAttributeNS(null,"id",t);n.setAttributeNS(null,"gradientUnits","userSpaceOnUse");n.setAttributeNS(null,"x1",r[0]);n.setAttributeNS(null,"y1",r[1]);n.setAttributeNS(null,"x2",s[0]);n.setAttributeNS(null,"y2",s[1]);break;case"radial":const a=e[4],i=e[5],o=e[6],l=e[7];n=this.svgFactory.createElement("svg:radialGradient");n.setAttributeNS(null,"id",t);n.setAttributeNS(null,"gradientUnits","userSpaceOnUse");n.setAttributeNS(null,"cx",i[0]);n.setAttributeNS(null,"cy",i[1]);n.setAttributeNS(null,"r",l);n.setAttributeNS(null,"fx",a[0]);n.setAttributeNS(null,"fy",a[1]);n.setAttributeNS(null,"fr",o);break;default:throw new Error(`Unknown RadialAxial type: ${e[1]}`)}for(const e of r){const t=this.svgFactory.createElement("svg:stop");t.setAttributeNS(null,"offset",e[0]);t.setAttributeNS(null,"stop-color",e[1]);n.appendChild(t)}this.defs.appendChild(n);return`url(#${t})`;case"Mesh":(0,s.warn)("Unimplemented pattern Mesh");return null;case"Dummy":return"hotpink";default:throw new Error(`Unknown IR type: ${e[0]}`)}}setDash(e,t){this.current.dashArray=e;this.current.dashPhase=t}constructPath(e,t){const r=this.current;let n=r.x,a=r.y,i=[],o=0;for(const r of e)switch(0|r){case s.OPS.rectangle:n=t[o++];a=t[o++];const e=n+t[o++],r=a+t[o++];i.push("M",pf(n),pf(a),"L",pf(e),pf(a),"L",pf(e),pf(r),"L",pf(n),pf(r),"Z");break;case s.OPS.moveTo:n=t[o++];a=t[o++];i.push("M",pf(n),pf(a));break;case s.OPS.lineTo:n=t[o++];a=t[o++];i.push("L",pf(n),pf(a));break;case s.OPS.curveTo:n=t[o+4];a=t[o+5];i.push("C",pf(t[o]),pf(t[o+1]),pf(t[o+2]),pf(t[o+3]),pf(n),pf(a));o+=6;break;case s.OPS.curveTo2:i.push("C",pf(n),pf(a),pf(t[o]),pf(t[o+1]),pf(t[o+2]),pf(t[o+3]));n=t[o+2];a=t[o+3];o+=4;break;case s.OPS.curveTo3:n=t[o+2];a=t[o+3];i.push("C",pf(t[o]),pf(t[o+1]),pf(n),pf(a),pf(n),pf(a));o+=4;break;case s.OPS.closePath:i.push("Z")}i=i.join(" ");if(r.path&&e.length>0&&e[0]!==s.OPS.rectangle&&e[0]!==s.OPS.moveTo)i=r.path.getAttributeNS(null,"d")+i;else{r.path=this.svgFactory.createElement("svg:path");this._ensureTransformGroup().appendChild(r.path)}r.path.setAttributeNS(null,"d",i);r.path.setAttributeNS(null,"fill","none");r.element=r.path;r.setCurrentPoint(n,a)}endPath(){const e=this.current;e.path=null;if(!this.pendingClip)return;if(!e.element){this.pendingClip=null;return}const t="clippath"+d++,r=this.svgFactory.createElement("svg:clipPath");r.setAttributeNS(null,"id",t);r.setAttributeNS(null,"transform",pm(this.transformMatrix));const s=e.element.cloneNode(!0);"evenodd"===this.pendingClip?s.setAttributeNS(null,"clip-rule","evenodd"):s.setAttributeNS(null,"clip-rule","nonzero");this.pendingClip=null;r.appendChild(s);this.defs.appendChild(r);if(e.activeClipUrl){e.clipGroup=null;for(const e of this.extraStack)e.clipGroup=null;r.setAttributeNS(null,"clip-path",e.activeClipUrl)}e.activeClipUrl=`url(#${t})`;this.tgrp=null}clip(e){this.pendingClip=e}closePath(){const e=this.current;if(e.path){const t=`${e.path.getAttributeNS(null,"d")}Z`;e.path.setAttributeNS(null,"d",t)}}setLeading(e){this.current.leading=-e}setTextRise(e){this.current.textRise=e}setTextRenderingMode(e){this.current.textRenderingMode=e}setHScale(e){this.current.textHScale=e/100}setRenderingIntent(e){}setFlatness(e){}setGState(e){for(const[t,r]of e)switch(t){case"LW":this.setLineWidth(r);break;case"LC":this.setLineCap(r);break;case"LJ":this.setLineJoin(r);break;case"ML":this.setMiterLimit(r);break;case"D":this.setDash(r[0],r[1]);break;case"RI":this.setRenderingIntent(r);break;case"FL":this.setFlatness(r);break;case"Font":this.setFont(r);break;case"CA":this.setStrokeAlpha(r);break;case"ca":this.setFillAlpha(r);break;default:(0,s.warn)(`Unimplemented graphic state operator ${t}`)}}fill(){const e=this.current;if(e.element){e.element.setAttributeNS(null,"fill",e.fillColor);e.element.setAttributeNS(null,"fill-opacity",e.fillAlpha);this.endPath()}}stroke(){const e=this.current;if(e.element){this._setStrokeAttributes(e.element);e.element.setAttributeNS(null,"fill","none");this.endPath()}}_setStrokeAttributes(e,t=1){const r=this.current;let s=r.dashArray;1!==t&&s.length>0&&(s=s.map((function(e){return t*e})));e.setAttributeNS(null,"stroke",r.strokeColor);e.setAttributeNS(null,"stroke-opacity",r.strokeAlpha);e.setAttributeNS(null,"stroke-miterlimit",pf(r.miterLimit));e.setAttributeNS(null,"stroke-linecap",r.lineCap);e.setAttributeNS(null,"stroke-linejoin",r.lineJoin);e.setAttributeNS(null,"stroke-width",pf(t*r.lineWidth)+"px");e.setAttributeNS(null,"stroke-dasharray",s.map(pf).join(" "));e.setAttributeNS(null,"stroke-dashoffset",pf(t*r.dashPhase)+"px")}eoFill(){this.current.element&&this.current.element.setAttributeNS(null,"fill-rule","evenodd");this.fill()}fillStroke(){this.stroke();this.fill()}eoFillStroke(){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 e=this.svgFactory.createElement("svg:rect");e.setAttributeNS(null,"x","0");e.setAttributeNS(null,"y","0");e.setAttributeNS(null,"width","1px");e.setAttributeNS(null,"height","1px");e.setAttributeNS(null,"fill",this.current.fillColor);this._ensureTransformGroup().appendChild(e)}paintImageXObject(e){const t=e.startsWith("g_")?this.commonObjs.get(e):this.objs.get(e);t?this.paintInlineImageXObject(t):(0,s.warn)(`Dependent image with object ID ${e} is not ready yet`)}paintInlineImageXObject(e,t){const r=e.width,s=e.height,n=h(e,this.forceDataSchema,!!t),a=this.svgFactory.createElement("svg:rect");a.setAttributeNS(null,"x","0");a.setAttributeNS(null,"y","0");a.setAttributeNS(null,"width",pf(r));a.setAttributeNS(null,"height",pf(s));this.current.element=a;this.clip("nonzero");const i=this.svgFactory.createElement("svg:image");i.setAttributeNS(o,"xlink:href",n);i.setAttributeNS(null,"x","0");i.setAttributeNS(null,"y",pf(-s));i.setAttributeNS(null,"width",pf(r)+"px");i.setAttributeNS(null,"height",pf(s)+"px");i.setAttributeNS(null,"transform",`scale(${pf(1/r)} ${pf(-1/s)})`);t?t.appendChild(i):this._ensureTransformGroup().appendChild(i)}paintImageMaskXObject(e){const t=this.current,r=e.width,s=e.height,n=t.fillColor;t.maskId="mask"+u++;const a=this.svgFactory.createElement("svg:mask");a.setAttributeNS(null,"id",t.maskId);const i=this.svgFactory.createElement("svg:rect");i.setAttributeNS(null,"x","0");i.setAttributeNS(null,"y","0");i.setAttributeNS(null,"width",pf(r));i.setAttributeNS(null,"height",pf(s));i.setAttributeNS(null,"fill",n);i.setAttributeNS(null,"mask",`url(#${t.maskId})`);this.defs.appendChild(a);this._ensureTransformGroup().appendChild(i);this.paintInlineImageXObject(e,a)}paintFormXObjectBegin(e,t){Array.isArray(e)&&6===e.length&&this.transform(e[0],e[1],e[2],e[3],e[4],e[5]);if(t){const e=t[2]-t[0],r=t[3]-t[1],s=this.svgFactory.createElement("svg:rect");s.setAttributeNS(null,"x",t[0]);s.setAttributeNS(null,"y",t[1]);s.setAttributeNS(null,"width",pf(e));s.setAttributeNS(null,"height",pf(r));this.current.element=s;this.clip("nonzero");this.endPath()}}paintFormXObjectEnd(){}_initialize(e){const t=this.svgFactory.create(e.width,e.height),r=this.svgFactory.createElement("svg:defs");t.appendChild(r);this.defs=r;const s=this.svgFactory.createElement("svg:g");s.setAttributeNS(null,"transform",pm(e.transform));t.appendChild(s);this.svg=s;return t}_ensureClipGroup(){if(!this.current.clipGroup){const e=this.svgFactory.createElement("svg:g");e.setAttributeNS(null,"clip-path",this.current.activeClipUrl);this.svg.appendChild(e);this.current.clipGroup=e}return this.current.clipGroup}_ensureTransformGroup(){if(!this.tgrp){this.tgrp=this.svgFactory.createElement("svg:g");this.tgrp.setAttributeNS(null,"transform",pm(this.transformMatrix));this.current.activeClipUrl?this._ensureClipGroup().appendChild(this.tgrp):this.svg.appendChild(this.tgrp)}return this.tgrp}}}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XfaLayer=void 0;t.XfaLayer=class XfaLayer{static setupStorage(e,t,r,s,n){const a=s.getValue(t,{value:null});switch(r.name){case"textarea":null!==a.value&&(e.textContent=a.value);if("print"===n)break;e.addEventListener("input",(e=>{s.setValue(t,{value:e.target.value})}));break;case"input":if("radio"===r.attributes.type||"checkbox"===r.attributes.type){a.value===r.attributes.xfaOn&&e.setAttribute("checked",!0);if("print"===n)break;e.addEventListener("change",(e=>{s.setValue(t,{value:e.target.getAttribute("xfaOn")})}))}else{null!==a.value&&e.setAttribute("value",a.value);if("print"===n)break;e.addEventListener("input",(e=>{s.setValue(t,{value:e.target.value})}))}break;case"select":if(null!==a.value)for(const e of r.children)e.attributes.value===a.value&&(e.attributes.selected=!0);e.addEventListener("input",(e=>{const r=e.target.options,n=-1===r.selectedIndex?"":r[r.selectedIndex].value;s.setValue(t,{value:n})}))}}static setAttributes(e,t,r,s){const{attributes:n}=t;"radio"===n.type&&(n.name=`${n.name}-${s}`);for(const[t,r]of Object.entries(n))null!=r&&"dataId"!==t&&("style"!==t?"textContent"===t?e.textContent=r:"class"===t?e.setAttribute(t,r.join(" ")):e.setAttribute(t,r):Object.assign(e.style,r));r&&n.dataId&&this.setupStorage(e,n.dataId,t,r)}static render(e){const t=e.annotationStorage,r=e.xfa,s=e.intent||"display",n=document.createElement(r.name);r.attributes&&this.setAttributes(n,r);const a=[[r,-1,n]],i=e.div;i.appendChild(n);const o=`matrix(${e.viewport.transform.join(",")})`;i.style.transform=o;i.setAttribute("class","xfaLayer xfaFont");for(;a.length>0;){const[e,r,n]=a[a.length-1];if(r+1===e.children.length){a.pop();continue}const i=e.children[++a[a.length-1][1]];if(null===i)continue;const{name:o}=i;if("#text"===o){n.appendChild(document.createTextNode(i.value));continue}let l;l=i?.attributes?.xmlns?document.createElementNS(i.attributes.xmlns,o):document.createElement(o);n.appendChild(l);i.attributes&&this.setAttributes(l,i,t,s);i.children&&i.children.length>0?a.push([i,-1,l]):i.value&&l.appendChild(document.createTextNode(i.value))}for(const e of i.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea"))e.setAttribute("readOnly",!0)}static update(e){const t=`matrix(${e.viewport.transform.join(",")})`;e.div.style.transform=t;e.div.hidden=!1}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.PDFNodeStream=void 0;var s=r(2),n=r(23);const a=require("fs"),i=require("http"),o=require("https"),l=require("url"),c=/^file:\/\/\/[a-zA-Z]:\//;t.PDFNodeStream=class PDFNodeStream{constructor(e){this.source=e;this.url=function parseUrl(e){const t=l.parse(e);if("file:"===t.protocol||t.host)return t;if(/^[a-z]:[/\\]/i.test(e))return l.parse(`file:///${e}`);t.host||(t.protocol="file:");return t}(e.url);this.isHttp="http:"===this.url.protocol||"https:"===this.url.protocol;this.isFsUrl="file:"===this.url.protocol;this.httpHeaders=this.isHttp&&e.httpHeaders||{};this._fullRequestReader=null;this._rangeRequestReaders=[]}get _progressiveDataLength(){return this._fullRequestReader?._loaded??0}getFullReader(){(0,s.assert)(!this._fullRequestReader,"PDFNodeStream.getFullReader can only be called once.");this._fullRequestReader=this.isFsUrl?new PDFNodeStreamFsFullReader(this):new PDFNodeStreamFullReader(this);return this._fullRequestReader}getRangeReader(e,t){if(t<=this._progressiveDataLength)return null;const r=this.isFsUrl?new PDFNodeStreamFsRangeReader(this,e,t):new PDFNodeStreamRangeReader(this,e,t);this._rangeRequestReaders.push(r);return r}cancelAllRequests(e){this._fullRequestReader&&this._fullRequestReader.cancel(e);for(const t of this._rangeRequestReaders.slice(0))t.cancel(e)}};class BaseFullReader{constructor(e){this._url=e.url;this._done=!1;this._storedError=null;this.onProgress=null;const t=e.source;this._contentLength=t.length;this._loaded=0;this._filename=null;this._disableRange=t.disableRange||!1;this._rangeChunkSize=t.rangeChunkSize;this._rangeChunkSize||this._disableRange||(this._disableRange=!0);this._isStreamingSupported=!t.disableStream;this._isRangeSupported=!t.disableRange;this._readableStream=null;this._readCapability=(0,s.createPromiseCapability)();this._headersCapability=(0,s.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:void 0,done:!0};if(this._storedError)throw this._storedError;const e=this._readableStream.read();if(null===e){this._readCapability=(0,s.createPromiseCapability)();return this.read()}this._loaded+=e.length;this.onProgress&&this.onProgress({loaded:this._loaded,total:this._contentLength});return{value:new Uint8Array(e).buffer,done:!1}}cancel(e){this._readableStream?this._readableStream.destroy(e):this._error(e)}_error(e){this._storedError=e;this._readCapability.resolve()}_setReadableStream(e){this._readableStream=e;e.on("readable",(()=>{this._readCapability.resolve()}));e.on("end",(()=>{e.destroy();this._done=!0;this._readCapability.resolve()}));e.on("error",(e=>{this._error(e)}));!this._isStreamingSupported&&this._isRangeSupported&&this._error(new s.AbortException("streaming is disabled"));this._storedError&&this._readableStream.destroy(this._storedError)}}class BaseRangeReader{constructor(e){this._url=e.url;this._done=!1;this._storedError=null;this.onProgress=null;this._loaded=0;this._readableStream=null;this._readCapability=(0,s.createPromiseCapability)();const t=e.source;this._isStreamingSupported=!t.disableStream}get isStreamingSupported(){return this._isStreamingSupported}async read(){await this._readCapability.promise;if(this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;const e=this._readableStream.read();if(null===e){this._readCapability=(0,s.createPromiseCapability)();return this.read()}this._loaded+=e.length;this.onProgress&&this.onProgress({loaded:this._loaded});return{value:new Uint8Array(e).buffer,done:!1}}cancel(e){this._readableStream?this._readableStream.destroy(e):this._error(e)}_error(e){this._storedError=e;this._readCapability.resolve()}_setReadableStream(e){this._readableStream=e;e.on("readable",(()=>{this._readCapability.resolve()}));e.on("end",(()=>{e.destroy();this._done=!0;this._readCapability.resolve()}));e.on("error",(e=>{this._error(e)}));this._storedError&&this._readableStream.destroy(this._storedError)}}function createRequestOptions(e,t){return{protocol:e.protocol,auth:e.auth,host:e.hostname,port:e.port,path:e.path,method:"GET",headers:t}}class PDFNodeStreamFullReader extends BaseFullReader{constructor(e){super(e);const handleResponse=t=>{if(404===t.statusCode){const e=new s.MissingPDFException(`Missing PDF "${this._url}".`);this._storedError=e;this._headersCapability.reject(e);return}this._headersCapability.resolve();this._setReadableStream(t);const getResponseHeader=e=>this._readableStream.headers[e.toLowerCase()],{allowRangeRequests:r,suggestedLength:a}=(0,n.validateRangeRequestCapabilities)({getResponseHeader:getResponseHeader,isHttp:e.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});this._isRangeSupported=r;this._contentLength=a||this._contentLength;this._filename=(0,n.extractFilenameFromHeader)(getResponseHeader)};this._request=null;"http:"===this._url.protocol?this._request=i.request(createRequestOptions(this._url,e.httpHeaders),handleResponse):this._request=o.request(createRequestOptions(this._url,e.httpHeaders),handleResponse);this._request.on("error",(e=>{this._storedError=e;this._headersCapability.reject(e)}));this._request.end()}}class PDFNodeStreamRangeReader extends BaseRangeReader{constructor(e,t,r){super(e);this._httpHeaders={};for(const t in e.httpHeaders){const r=e.httpHeaders[t];void 0!==r&&(this._httpHeaders[t]=r)}this._httpHeaders.Range=`bytes=${t}-${r-1}`;const handleResponse=e=>{if(404!==e.statusCode)this._setReadableStream(e);else{const e=new s.MissingPDFException(`Missing PDF "${this._url}".`);this._storedError=e}};this._request=null;"http:"===this._url.protocol?this._request=i.request(createRequestOptions(this._url,this._httpHeaders),handleResponse):this._request=o.request(createRequestOptions(this._url,this._httpHeaders),handleResponse);this._request.on("error",(e=>{this._storedError=e}));this._request.end()}}class PDFNodeStreamFsFullReader extends BaseFullReader{constructor(e){super(e);let t=decodeURIComponent(this._url.path);c.test(this._url.href)&&(t=t.replace(/^\//,""));a.lstat(t,((e,r)=>{if(e){"ENOENT"===e.code&&(e=new s.MissingPDFException(`Missing PDF "${t}".`));this._storedError=e;this._headersCapability.reject(e)}else{this._contentLength=r.size;this._setReadableStream(a.createReadStream(t));this._headersCapability.resolve()}}))}}class PDFNodeStreamFsRangeReader extends BaseRangeReader{constructor(e,t,r){super(e);let s=decodeURIComponent(this._url.path);c.test(this._url.href)&&(s=s.replace(/^\//,""));this._setReadableStream(a.createReadStream(s,{start:t,end:r-1}))}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.createResponseStatusError=function createResponseStatusError(e,t){if(404===e||0===e&&t.startsWith("file:"))return new s.MissingPDFException('Missing PDF "'+t+'".');return new s.UnexpectedResponseException(`Unexpected server response (${e}) while retrieving PDF "${t}".`,e)};t.extractFilenameFromHeader=function extractFilenameFromHeader(e){const t=e("Content-Disposition");if(t){let e=(0,n.getFilenameFromContentDispositionHeader)(t);if(e.includes("%"))try{e=decodeURIComponent(e)}catch(e){}if((0,a.isPdfFile)(e))return e}return null};t.validateRangeRequestCapabilities=function validateRangeRequestCapabilities({getResponseHeader:e,isHttp:t,rangeChunkSize:r,disableRange:n}){(0,s.assert)(r>0,"Range chunk size must be larger than zero");const a={allowRangeRequests:!1,suggestedLength:void 0},i=parseInt(e("Content-Length"),10);if(!Number.isInteger(i))return a;a.suggestedLength=i;if(i<=2*r)return a;if(n||!t)return a;if("bytes"!==e("Accept-Ranges"))return a;if("identity"!==(e("Content-Encoding")||"identity"))return a;a.allowRangeRequests=!0;return a};t.validateResponseStatus=function validateResponseStatus(e){return 200===e||206===e};var s=r(2),n=r(24),a=r(1)},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.getFilenameFromContentDispositionHeader=function getFilenameFromContentDispositionHeader(e){let t=!0,r=toParamRegExp("filename\\*","i").exec(e);if(r){r=r[1];let e=rfc2616unquote(r);e=unescape(e);e=rfc5987decode(e);e=rfc2047decode(e);return fixupEncoding(e)}r=function rfc2231getparam(e){const t=[];let r;const s=toParamRegExp("filename\\*((?!0\\d)\\d+)(\\*?)","ig");for(;null!==(r=s.exec(e));){let[,e,s,n]=r;e=parseInt(e,10);if(e in t){if(0===e)break}else t[e]=[s,n]}const n=[];for(let e=0;e{Object.defineProperty(t,"__esModule",{value:!0});t.PDFNetworkStream=void 0;var s=r(2),n=r(23);class NetworkManager{constructor(e,t){this.url=e;t=t||{};this.isHttp=/^https?:/i.test(e);this.httpHeaders=this.isHttp&&t.httpHeaders||{};this.withCredentials=t.withCredentials||!1;this.getXhr=t.getXhr||function NetworkManager_getXhr(){return new XMLHttpRequest};this.currXhrId=0;this.pendingRequests=Object.create(null)}requestRange(e,t,r){const s={begin:e,end:t};for(const e in r)s[e]=r[e];return this.request(s)}requestFull(e){return this.request(e)}request(e){const t=this.getXhr(),r=this.currXhrId++,s=this.pendingRequests[r]={xhr:t};t.open("GET",this.url);t.withCredentials=this.withCredentials;for(const e in this.httpHeaders){const r=this.httpHeaders[e];void 0!==r&&t.setRequestHeader(e,r)}if(this.isHttp&&"begin"in e&&"end"in e){t.setRequestHeader("Range",`bytes=${e.begin}-${e.end-1}`);s.expectedStatus=206}else s.expectedStatus=200;t.responseType="arraybuffer";e.onError&&(t.onerror=function(r){e.onError(t.status)});t.onreadystatechange=this.onStateChange.bind(this,r);t.onprogress=this.onProgress.bind(this,r);s.onHeadersReceived=e.onHeadersReceived;s.onDone=e.onDone;s.onError=e.onError;s.onProgress=e.onProgress;t.send(null);return r}onProgress(e,t){const r=this.pendingRequests[e];r&&r.onProgress&&r.onProgress(t)}onStateChange(e,t){const r=this.pendingRequests[e];if(!r)return;const n=r.xhr;if(n.readyState>=2&&r.onHeadersReceived){r.onHeadersReceived();delete r.onHeadersReceived}if(4!==n.readyState)return;if(!(e in this.pendingRequests))return;delete this.pendingRequests[e];if(0===n.status&&this.isHttp){r.onError&&r.onError(n.status);return}const a=n.status||200;if(!(200===a&&206===r.expectedStatus)&&a!==r.expectedStatus){r.onError&&r.onError(n.status);return}const i=function getArrayBuffer(e){const t=e.response;return"string"!=typeof t?t:(0,s.stringToBytes)(t).buffer}(n);if(206===a){const e=n.getResponseHeader("Content-Range"),t=/bytes (\d+)-(\d+)\/(\d+)/.exec(e);r.onDone({begin:parseInt(t[1],10),chunk:i})}else i?r.onDone({begin:0,chunk:i}):r.onError&&r.onError(n.status)}getRequestXhr(e){return this.pendingRequests[e].xhr}isPendingRequest(e){return e in this.pendingRequests}abortRequest(e){const t=this.pendingRequests[e].xhr;delete this.pendingRequests[e];t.abort()}}t.PDFNetworkStream=class PDFNetworkStream{constructor(e){this._source=e;this._manager=new NetworkManager(e.url,{httpHeaders:e.httpHeaders,withCredentials:e.withCredentials});this._rangeChunkSize=e.rangeChunkSize;this._fullRequestReader=null;this._rangeRequestReaders=[]}_onRangeRequestReaderClosed(e){const t=this._rangeRequestReaders.indexOf(e);t>=0&&this._rangeRequestReaders.splice(t,1)}getFullReader(){(0,s.assert)(!this._fullRequestReader,"PDFNetworkStream.getFullReader can only be called once.");this._fullRequestReader=new PDFNetworkStreamFullRequestReader(this._manager,this._source);return this._fullRequestReader}getRangeReader(e,t){const r=new PDFNetworkStreamRangeRequestReader(this._manager,e,t);r.onClosed=this._onRangeRequestReaderClosed.bind(this);this._rangeRequestReaders.push(r);return r}cancelAllRequests(e){this._fullRequestReader&&this._fullRequestReader.cancel(e);for(const t of this._rangeRequestReaders.slice(0))t.cancel(e)}};class PDFNetworkStreamFullRequestReader{constructor(e,t){this._manager=e;const r={onHeadersReceived:this._onHeadersReceived.bind(this),onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)};this._url=t.url;this._fullRequestId=e.requestFull(r);this._headersReceivedCapability=(0,s.createPromiseCapability)();this._disableRange=t.disableRange||!1;this._contentLength=t.length;this._rangeChunkSize=t.rangeChunkSize;this._rangeChunkSize||this._disableRange||(this._disableRange=!0);this._isStreamingSupported=!1;this._isRangeSupported=!1;this._cachedChunks=[];this._requests=[];this._done=!1;this._storedError=void 0;this._filename=null;this.onProgress=null}_onHeadersReceived(){const e=this._fullRequestId,t=this._manager.getRequestXhr(e),getResponseHeader=e=>t.getResponseHeader(e),{allowRangeRequests:r,suggestedLength:s}=(0,n.validateRangeRequestCapabilities)({getResponseHeader:getResponseHeader,isHttp:this._manager.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});r&&(this._isRangeSupported=!0);this._contentLength=s||this._contentLength;this._filename=(0,n.extractFilenameFromHeader)(getResponseHeader);this._isRangeSupported&&this._manager.abortRequest(e);this._headersReceivedCapability.resolve()}_onDone(e){if(e)if(this._requests.length>0){this._requests.shift().resolve({value:e.chunk,done:!1})}else this._cachedChunks.push(e.chunk);this._done=!0;if(!(this._cachedChunks.length>0)){for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0}}_onError(e){const t=this._url,r=(0,n.createResponseStatusError)(e,t);this._storedError=r;this._headersReceivedCapability.reject(r);for(const e of this._requests)e.reject(r);this._requests.length=0;this._cachedChunks.length=0}_onProgress(e){this.onProgress&&this.onProgress({loaded:e.loaded,total:e.lengthComputable?e.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){return{value:this._cachedChunks.shift(),done:!1}}if(this._done)return{value:void 0,done:!0};const e=(0,s.createPromiseCapability)();this._requests.push(e);return e.promise}cancel(e){this._done=!0;this._headersReceivedCapability.reject(e);for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0;this._manager.isPendingRequest(this._fullRequestId)&&this._manager.abortRequest(this._fullRequestId);this._fullRequestReader=null}}class PDFNetworkStreamRangeRequestReader{constructor(e,t,r){this._manager=e;const s={onDone:this._onDone.bind(this),onProgress:this._onProgress.bind(this)};this._requestId=e.requestRange(t,r,s);this._requests=[];this._queuedChunk=null;this._done=!1;this.onProgress=null;this.onClosed=null}_close(){this.onClosed&&this.onClosed(this)}_onDone(e){const t=e.chunk;if(this._requests.length>0){this._requests.shift().resolve({value:t,done:!1})}else this._queuedChunk=t;this._done=!0;for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0;this._close()}_onProgress(e){!this.isStreamingSupported&&this.onProgress&&this.onProgress({loaded:e.loaded})}get isStreamingSupported(){return!1}async read(){if(null!==this._queuedChunk){const e=this._queuedChunk;this._queuedChunk=null;return{value:e,done:!1}}if(this._done)return{value:void 0,done:!0};const e=(0,s.createPromiseCapability)();this._requests.push(e);return e.promise}cancel(e){this._done=!0;for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0;this._manager.isPendingRequest(this._requestId)&&this._manager.abortRequest(this._requestId);this._close()}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.PDFFetchStream=void 0;var s=r(2),n=r(23);function createFetchOptions(e,t,r){return{method:"GET",headers:e,signal:r?.signal,mode:"cors",credentials:t?"include":"same-origin",redirect:"follow"}}function createHeaders(e){const t=new Headers;for(const r in e){const s=e[r];void 0!==s&&t.append(r,s)}return t}t.PDFFetchStream=class PDFFetchStream{constructor(e){this.source=e;this.isHttp=/^https?:/i.test(e.url);this.httpHeaders=this.isHttp&&e.httpHeaders||{};this._fullRequestReader=null;this._rangeRequestReaders=[]}get _progressiveDataLength(){return this._fullRequestReader?._loaded??0}getFullReader(){(0,s.assert)(!this._fullRequestReader,"PDFFetchStream.getFullReader can only be called once.");this._fullRequestReader=new PDFFetchStreamReader(this);return this._fullRequestReader}getRangeReader(e,t){if(t<=this._progressiveDataLength)return null;const r=new PDFFetchStreamRangeReader(this,e,t);this._rangeRequestReaders.push(r);return r}cancelAllRequests(e){this._fullRequestReader&&this._fullRequestReader.cancel(e);for(const t of this._rangeRequestReaders.slice(0))t.cancel(e)}};class PDFFetchStreamReader{constructor(e){this._stream=e;this._reader=null;this._loaded=0;this._filename=null;const t=e.source;this._withCredentials=t.withCredentials||!1;this._contentLength=t.length;this._headersCapability=(0,s.createPromiseCapability)();this._disableRange=t.disableRange||!1;this._rangeChunkSize=t.rangeChunkSize;this._rangeChunkSize||this._disableRange||(this._disableRange=!0);"undefined"!=typeof AbortController&&(this._abortController=new AbortController);this._isStreamingSupported=!t.disableStream;this._isRangeSupported=!t.disableRange;this._headers=createHeaders(this._stream.httpHeaders);const r=t.url;fetch(r,createFetchOptions(this._headers,this._withCredentials,this._abortController)).then((e=>{if(!(0,n.validateResponseStatus)(e.status))throw(0,n.createResponseStatusError)(e.status,r);this._reader=e.body.getReader();this._headersCapability.resolve();const getResponseHeader=t=>e.headers.get(t),{allowRangeRequests:t,suggestedLength:a}=(0,n.validateRangeRequestCapabilities)({getResponseHeader:getResponseHeader,isHttp:this._stream.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});this._isRangeSupported=t;this._contentLength=a||this._contentLength;this._filename=(0,n.extractFilenameFromHeader)(getResponseHeader);!this._isStreamingSupported&&this._isRangeSupported&&this.cancel(new s.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:e,done:t}=await this._reader.read();if(t)return{value:e,done:t};this._loaded+=e.byteLength;this.onProgress&&this.onProgress({loaded:this._loaded,total:this._contentLength});return{value:new Uint8Array(e).buffer,done:!1}}cancel(e){this._reader&&this._reader.cancel(e);this._abortController&&this._abortController.abort()}}class PDFFetchStreamRangeReader{constructor(e,t,r){this._stream=e;this._reader=null;this._loaded=0;const a=e.source;this._withCredentials=a.withCredentials||!1;this._readCapability=(0,s.createPromiseCapability)();this._isStreamingSupported=!a.disableStream;"undefined"!=typeof AbortController&&(this._abortController=new AbortController);this._headers=createHeaders(this._stream.httpHeaders);this._headers.append("Range",`bytes=${t}-${r-1}`);const i=a.url;fetch(i,createFetchOptions(this._headers,this._withCredentials,this._abortController)).then((e=>{if(!(0,n.validateResponseStatus)(e.status))throw(0,n.createResponseStatusError)(e.status,i);this._readCapability.resolve();this._reader=e.body.getReader()})).catch((e=>{if("AbortError"!==e?.name)throw e}));this.onProgress=null}get isStreamingSupported(){return this._isStreamingSupported}async read(){await this._readCapability.promise;const{value:e,done:t}=await this._reader.read();if(t)return{value:e,done:t};this._loaded+=e.byteLength;this.onProgress&&this.onProgress({loaded:this._loaded});return{value:new Uint8Array(e).buffer,done:!1}}cancel(e){this._reader&&this._reader.cancel(e);this._abortController&&this._abortController.abort()}}}],__webpack_module_cache__={};function __w_pdfjs_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};__webpack_modules__[e](r,r.exports,__w_pdfjs_require__);return r.exports}var __webpack_exports__={};(()=>{var e=__webpack_exports__;Object.defineProperty(e,"__esModule",{value:!0});Object.defineProperty(e,"addLinkAttributes",{enumerable:!0,get:function(){return t.addLinkAttributes}});Object.defineProperty(e,"getFilenameFromUrl",{enumerable:!0,get:function(){return t.getFilenameFromUrl}});Object.defineProperty(e,"getPdfFilenameFromUrl",{enumerable:!0,get:function(){return t.getPdfFilenameFromUrl}});Object.defineProperty(e,"getXfaPageViewport",{enumerable:!0,get:function(){return t.getXfaPageViewport}});Object.defineProperty(e,"isPdfFile",{enumerable:!0,get:function(){return t.isPdfFile}});Object.defineProperty(e,"LinkTarget",{enumerable:!0,get:function(){return t.LinkTarget}});Object.defineProperty(e,"loadScript",{enumerable:!0,get:function(){return t.loadScript}});Object.defineProperty(e,"PDFDateString",{enumerable:!0,get:function(){return t.PDFDateString}});Object.defineProperty(e,"RenderingCancelledException",{enumerable:!0,get:function(){return t.RenderingCancelledException}});Object.defineProperty(e,"build",{enumerable:!0,get:function(){return r.build}});Object.defineProperty(e,"getDocument",{enumerable:!0,get:function(){return r.getDocument}});Object.defineProperty(e,"LoopbackPort",{enumerable:!0,get:function(){return r.LoopbackPort}});Object.defineProperty(e,"PDFDataRangeTransport",{enumerable:!0,get:function(){return r.PDFDataRangeTransport}});Object.defineProperty(e,"PDFWorker",{enumerable:!0,get:function(){return r.PDFWorker}});Object.defineProperty(e,"version",{enumerable:!0,get:function(){return r.version}});Object.defineProperty(e,"CMapCompressionType",{enumerable:!0,get:function(){return s.CMapCompressionType}});Object.defineProperty(e,"createObjectURL",{enumerable:!0,get:function(){return s.createObjectURL}});Object.defineProperty(e,"createPromiseCapability",{enumerable:!0,get:function(){return s.createPromiseCapability}});Object.defineProperty(e,"createValidAbsoluteUrl",{enumerable:!0,get:function(){return s.createValidAbsoluteUrl}});Object.defineProperty(e,"InvalidPDFException",{enumerable:!0,get:function(){return s.InvalidPDFException}});Object.defineProperty(e,"MissingPDFException",{enumerable:!0,get:function(){return s.MissingPDFException}});Object.defineProperty(e,"OPS",{enumerable:!0,get:function(){return s.OPS}});Object.defineProperty(e,"PasswordResponses",{enumerable:!0,get:function(){return s.PasswordResponses}});Object.defineProperty(e,"PermissionFlag",{enumerable:!0,get:function(){return s.PermissionFlag}});Object.defineProperty(e,"removeNullCharacters",{enumerable:!0,get:function(){return s.removeNullCharacters}});Object.defineProperty(e,"shadow",{enumerable:!0,get:function(){return s.shadow}});Object.defineProperty(e,"UnexpectedResponseException",{enumerable:!0,get:function(){return s.UnexpectedResponseException}});Object.defineProperty(e,"UNSUPPORTED_FEATURES",{enumerable:!0,get:function(){return s.UNSUPPORTED_FEATURES}});Object.defineProperty(e,"Util",{enumerable:!0,get:function(){return s.Util}});Object.defineProperty(e,"VerbosityLevel",{enumerable:!0,get:function(){return s.VerbosityLevel}});Object.defineProperty(e,"AnnotationLayer",{enumerable:!0,get:function(){return n.AnnotationLayer}});Object.defineProperty(e,"GlobalWorkerOptions",{enumerable:!0,get:function(){return a.GlobalWorkerOptions}});Object.defineProperty(e,"renderTextLayer",{enumerable:!0,get:function(){return o.renderTextLayer}});Object.defineProperty(e,"SVGGraphics",{enumerable:!0,get:function(){return l.SVGGraphics}});Object.defineProperty(e,"XfaLayer",{enumerable:!0,get:function(){return c.XfaLayer}});var t=__w_pdfjs_require__(1),r=__w_pdfjs_require__(6),s=__w_pdfjs_require__(2),n=__w_pdfjs_require__(17),a=__w_pdfjs_require__(12),i=__w_pdfjs_require__(4),o=__w_pdfjs_require__(19),l=__w_pdfjs_require__(20),c=__w_pdfjs_require__(21);if(i.isNodeJS){const{PDFNodeStream:e}=__w_pdfjs_require__(22);(0,r.setPDFNetworkStreamFactory)((t=>new e(t)))}else{const{PDFNetworkStream:e}=__w_pdfjs_require__(25),{PDFFetchStream:s}=__w_pdfjs_require__(26);(0,r.setPDFNetworkStreamFactory)((r=>(0,t.isValidFetchUrl)(r.url)?new s(r):new e(r)))}})();return __webpack_exports__})()})); \ No newline at end of file + +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define("pdfjs-dist/build/pdf", [], factory); + else if(typeof exports === 'object') + exports["pdfjs-dist/build/pdf"] = factory(); + else + root["pdfjs-dist/build/pdf"] = root.pdfjsLib = factory(); +})(globalThis, () => { +return /******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ([ +/* 0 */, +/* 1 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.RenderingIntentFlag = exports.PromiseCapability = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.MAX_IMAGE_SIZE_TO_CACHE = exports.LINE_FACTOR = exports.LINE_DESCENT_FACTOR = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FeatureTest = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.BASELINE_FACTOR = exports.AnnotationType = exports.AnnotationReplyType = exports.AnnotationMode = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationEditorType = exports.AnnotationEditorPrefix = exports.AnnotationEditorParamsType = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0; +exports.assert = assert; +exports.bytesToString = bytesToString; +exports.createValidAbsoluteUrl = createValidAbsoluteUrl; +exports.getModificationDate = getModificationDate; +exports.getVerbosityLevel = getVerbosityLevel; +exports.info = info; +exports.isArrayBuffer = isArrayBuffer; +exports.isArrayEqual = isArrayEqual; +exports.normalizeUnicode = normalizeUnicode; +exports.objectFromMap = objectFromMap; +exports.objectSize = objectSize; +exports.setVerbosityLevel = setVerbosityLevel; +exports.shadow = shadow; +exports.string32 = string32; +exports.stringToBytes = stringToBytes; +exports.stringToPDFString = stringToPDFString; +exports.stringToUTF8String = stringToUTF8String; +exports.unreachable = unreachable; +exports.utf8StringToString = utf8StringToString; +exports.warn = warn; +; +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 MAX_IMAGE_SIZE_TO_CACHE = 10e6; +exports.MAX_IMAGE_SIZE_TO_CACHE = MAX_IMAGE_SIZE_TO_CACHE; +const LINE_FACTOR = 1.35; +exports.LINE_FACTOR = LINE_FACTOR; +const LINE_DESCENT_FACTOR = 0.35; +exports.LINE_DESCENT_FACTOR = LINE_DESCENT_FACTOR; +const BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR; +exports.BASELINE_FACTOR = BASELINE_FACTOR; +const RenderingIntentFlag = { + ANY: 0x01, + DISPLAY: 0x02, + PRINT: 0x04, + SAVE: 0x08, + ANNOTATIONS_FORMS: 0x10, + ANNOTATIONS_STORAGE: 0x20, + ANNOTATIONS_DISABLE: 0x40, + OPLIST: 0x100 +}; +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, + STAMP: 13, + 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, + INVISIBLE: 3, + FILL_ADD_TO_PATH: 4, + STROKE_ADD_TO_PATH: 5, + FILL_STROKE_ADD_TO_PATH: 6, + ADD_TO_PATH: 7, + FILL_STROKE_MASK: 3, + ADD_TO_PATH_FLAG: 4 +}; +exports.TextRenderingMode = TextRenderingMode; +const ImageKind = { + GRAYSCALE_1BPP: 1, + RGB_24BPP: 2, + RGBA_32BPP: 3 +}; +exports.ImageKind = ImageKind; +const AnnotationType = { + TEXT: 1, + LINK: 2, + FREETEXT: 3, + LINE: 4, + SQUARE: 5, + CIRCLE: 6, + POLYGON: 7, + POLYLINE: 8, + HIGHLIGHT: 9, + UNDERLINE: 10, + SQUIGGLY: 11, + STRIKEOUT: 12, + STAMP: 13, + CARET: 14, + INK: 15, + POPUP: 16, + FILEATTACHMENT: 17, + SOUND: 18, + MOVIE: 19, + WIDGET: 20, + SCREEN: 21, + PRINTERMARK: 22, + TRAPNET: 23, + WATERMARK: 24, + THREED: 25, + REDACT: 26 +}; +exports.AnnotationType = AnnotationType; +const AnnotationReplyType = { + GROUP: "Group", + REPLY: "R" +}; +exports.AnnotationReplyType = AnnotationReplyType; +const AnnotationFlag = { + INVISIBLE: 0x01, + HIDDEN: 0x02, + PRINT: 0x04, + NOZOOM: 0x08, + NOROTATE: 0x10, + NOVIEW: 0x20, + READONLY: 0x40, + LOCKED: 0x80, + TOGGLENOVIEW: 0x100, + LOCKEDCONTENTS: 0x200 +}; +exports.AnnotationFlag = AnnotationFlag; +const AnnotationFieldFlag = { + READONLY: 0x0000001, + REQUIRED: 0x0000002, + NOEXPORT: 0x0000004, + MULTILINE: 0x0001000, + PASSWORD: 0x0002000, + NOTOGGLETOOFF: 0x0004000, + RADIO: 0x0008000, + PUSHBUTTON: 0x0010000, + COMBO: 0x0020000, + EDIT: 0x0040000, + SORT: 0x0080000, + FILESELECT: 0x0100000, + MULTISELECT: 0x0200000, + DONOTSPELLCHECK: 0x0400000, + DONOTSCROLL: 0x0800000, + COMB: 0x1000000, + RICHTEXT: 0x2000000, + RADIOSINUNISON: 0x2000000, + COMMITONSELCHANGE: 0x4000000 +}; +exports.AnnotationFieldFlag = AnnotationFieldFlag; +const AnnotationBorderStyleType = { + SOLID: 1, + DASHED: 2, + BEVELED: 3, + INSET: 4, + UNDERLINE: 5 +}; +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" +}; +exports.AnnotationActionEventType = AnnotationActionEventType; +const DocumentActionEventType = { + WC: "WillClose", + WS: "WillSave", + DS: "DidSave", + WP: "WillPrint", + DP: "DidPrint" +}; +exports.DocumentActionEventType = DocumentActionEventType; +const PageActionEventType = { + O: "PageOpen", + C: "PageClose" +}; +exports.PageActionEventType = PageActionEventType; +const VerbosityLevel = { + ERRORS: 0, + WARNINGS: 1, + INFOS: 5 +}; +exports.VerbosityLevel = VerbosityLevel; +const CMapCompressionType = { + NONE: 0, + BINARY: 1 +}; +exports.CMapCompressionType = CMapCompressionType; +const OPS = { + dependency: 1, + setLineWidth: 2, + setLineCap: 3, + setLineJoin: 4, + setMiterLimit: 5, + setDash: 6, + setRenderingIntent: 7, + setFlatness: 8, + setGState: 9, + save: 10, + restore: 11, + transform: 12, + moveTo: 13, + lineTo: 14, + curveTo: 15, + curveTo2: 16, + curveTo3: 17, + closePath: 18, + rectangle: 19, + stroke: 20, + closeStroke: 21, + fill: 22, + eoFill: 23, + fillStroke: 24, + eoFillStroke: 25, + closeFillStroke: 26, + closeEOFillStroke: 27, + endPath: 28, + clip: 29, + eoClip: 30, + beginText: 31, + endText: 32, + setCharSpacing: 33, + setWordSpacing: 34, + setHScale: 35, + setLeading: 36, + setFont: 37, + setTextRenderingMode: 38, + setTextRise: 39, + moveText: 40, + setLeadingMoveText: 41, + setTextMatrix: 42, + nextLine: 43, + showText: 44, + showSpacedText: 45, + nextLineShowText: 46, + nextLineSetSpacingShowText: 47, + setCharWidth: 48, + setCharWidthAndBounds: 49, + setStrokeColorSpace: 50, + setFillColorSpace: 51, + setStrokeColor: 52, + setStrokeColorN: 53, + setFillColor: 54, + setFillColorN: 55, + setStrokeGray: 56, + setFillGray: 57, + setStrokeRGBColor: 58, + setFillRGBColor: 59, + setStrokeCMYKColor: 60, + setFillCMYKColor: 61, + shadingFill: 62, + beginInlineImage: 63, + beginImageData: 64, + endInlineImage: 65, + paintXObject: 66, + markPoint: 67, + markPointProps: 68, + beginMarkedContent: 69, + beginMarkedContentProps: 70, + endMarkedContent: 71, + beginCompat: 72, + endCompat: 73, + paintFormXObjectBegin: 74, + paintFormXObjectEnd: 75, + beginGroup: 76, + endGroup: 77, + beginAnnotation: 80, + endAnnotation: 81, + paintImageMaskXObject: 83, + paintImageMaskXObjectGroup: 84, + paintImageXObject: 85, + paintInlineImageXObject: 86, + paintInlineImageXObjectGroup: 87, + paintImageXObjectRepeat: 88, + paintImageMaskXObjectRepeat: 89, + paintSolidColorImageMask: 90, + constructPath: 91 +}; +exports.OPS = OPS; +const PasswordResponses = { + NEED_PASSWORD: 1, + INCORRECT_PASSWORD: 2 +}; +exports.PasswordResponses = PasswordResponses; +let verbosity = VerbosityLevel.WARNINGS; +function setVerbosityLevel(level) { + if (Number.isInteger(level)) { + verbosity = level; + } +} +function getVerbosityLevel() { + return verbosity; +} +function info(msg) { + if (verbosity >= VerbosityLevel.INFOS) { + console.log(`Info: ${msg}`); + } +} +function warn(msg) { + if (verbosity >= VerbosityLevel.WARNINGS) { + console.log(`Warning: ${msg}`); + } +} +function unreachable(msg) { + throw new Error(msg); +} +function assert(cond, msg) { + if (!cond) { + unreachable(msg); + } +} +function _isValidProtocol(url) { + switch (url?.protocol) { + case "http:": + case "https:": + case "ftp:": + case "mailto:": + case "tel:": + return true; + default: + return false; + } +} +function createValidAbsoluteUrl(url, baseUrl = null, options = null) { + if (!url) { + return null; + } + try { + if (options && typeof url === "string") { + if (options.addDefaultProtocol && url.startsWith("www.")) { + const dots = url.match(/\./g); + if (dots?.length >= 2) { + url = `http://${url}`; + } + } + if (options.tryConvertEncoding) { + try { + url = stringToUTF8String(url); + } catch {} + } + } + const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url); + if (_isValidProtocol(absoluteUrl)) { + return absoluteUrl; + } + } catch {} + return null; +} +function shadow(obj, prop, value, nonSerializable = false) { + Object.defineProperty(obj, prop, { + value, + enumerable: !nonSerializable, + configurable: true, + writable: false + }); + return value; +} +const BaseException = function BaseExceptionClosure() { + function BaseException(message, name) { + if (this.constructor === BaseException) { + unreachable("Cannot initialize BaseException."); + } + 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; + } +} +exports.PasswordException = PasswordException; +class UnknownErrorException extends BaseException { + constructor(msg, details) { + super(msg, "UnknownErrorException"); + this.details = details; + } +} +exports.UnknownErrorException = UnknownErrorException; +class InvalidPDFException extends BaseException { + constructor(msg) { + super(msg, "InvalidPDFException"); + } +} +exports.InvalidPDFException = InvalidPDFException; +class MissingPDFException extends BaseException { + constructor(msg) { + super(msg, "MissingPDFException"); + } +} +exports.MissingPDFException = MissingPDFException; +class UnexpectedResponseException extends BaseException { + constructor(msg, status) { + super(msg, "UnexpectedResponseException"); + this.status = status; + } +} +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) { + if (typeof bytes !== "object" || 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); + } + 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(""); +} +function stringToBytes(str) { + 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 string32(value) { + return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff); +} +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 obj; +} +function isLittleEndian() { + const buffer8 = new Uint8Array(4); + buffer8[0] = 1; + const view32 = new Uint32Array(buffer8.buffer, 0, 1); + return view32[0] === 1; +} +function isEvalSupported() { + try { + new Function(""); + return true; + } catch { + return false; + } +} +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"); + } + static get platform() { + if (typeof navigator === "undefined") { + return shadow(this, "platform", { + isWin: false, + isMac: false + }); + } + return shadow(this, "platform", { + isWin: navigator.platform.includes("Win"), + isMac: navigator.platform.includes("Mac") + }); + } +} +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]]; + } + 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]; + } + 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]; + } + static getAxialAlignedBoundingBox(r, m) { + const p1 = this.applyTransform(r, m); + const p2 = this.applyTransform(r.slice(2, 4), m); + const p3 = this.applyTransform([r[0], r[3]], m); + const p4 = this.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])]; + } + 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]; + } + 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)]; + } + 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; + } + 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; + } + 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; + } + 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; + } + 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); + } + } + 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 stringToUTF8String(str) { + return decodeURIComponent(escape(str)); +} +function utf8StringToString(str) { + return unescape(encodeURIComponent(str)); +} +function isArrayBuffer(v) { + return typeof v === "object" && 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(""); +} +class PromiseCapability { + #settled = false; + constructor() { + this.promise = new Promise((resolve, reject) => { + this.resolve = data => { + this.#settled = true; + resolve(data); + }; + this.reject = reason => { + this.#settled = true; + reject(reason); + }; + }); + } + get settled() { + return this.#settled; + } +} +exports.PromiseCapability = PromiseCapability; +let NormalizeRegex = null; +let NormalizationMap = null; +function normalizeUnicode(str) { + if (!NormalizeRegex) { + NormalizeRegex = /([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc-\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa-\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu; + NormalizationMap = new Map([["ſt", "ſt"]]); + } + return str.replaceAll(NormalizeRegex, (_, p1, p2) => { + return p1 ? p1.normalize("NFKC") : NormalizationMap.get(p2); + }); +} + +/***/ }), +/* 2 */ +/***/ ((__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.DefaultFilterFactory = exports.DefaultCanvasFactory = exports.DefaultCMapReaderFactory = void 0; +exports.getDocument = getDocument; +exports.version = void 0; +var _util = __w_pdfjs_require__(1); +var _annotation_storage = __w_pdfjs_require__(3); +var _display_utils = __w_pdfjs_require__(6); +var _font_loader = __w_pdfjs_require__(9); +var _canvas = __w_pdfjs_require__(11); +var _worker_options = __w_pdfjs_require__(14); +var _is_node = __w_pdfjs_require__(10); +var _message_handler = __w_pdfjs_require__(15); +var _metadata = __w_pdfjs_require__(16); +var _optional_content_config = __w_pdfjs_require__(17); +var _transport_stream = __w_pdfjs_require__(18); +var _xfa_text = __w_pdfjs_require__(19); +const DEFAULT_RANGE_CHUNK_SIZE = 65536; +const RENDERING_CANCELLED_TIMEOUT = 100; +const DELAYED_CLEANUP_TIMEOUT = 5000; +const DefaultCanvasFactory = _is_node.isNodeJS ? (__w_pdfjs_require__(20).NodeCanvasFactory) : _display_utils.DOMCanvasFactory; +exports.DefaultCanvasFactory = DefaultCanvasFactory; +const DefaultCMapReaderFactory = _is_node.isNodeJS ? (__w_pdfjs_require__(20).NodeCMapReaderFactory) : _display_utils.DOMCMapReaderFactory; +exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory; +const DefaultFilterFactory = _is_node.isNodeJS ? (__w_pdfjs_require__(20).NodeFilterFactory) : _display_utils.DOMFilterFactory; +exports.DefaultFilterFactory = DefaultFilterFactory; +const DefaultStandardFontDataFactory = _is_node.isNodeJS ? (__w_pdfjs_require__(20).NodeStandardFontDataFactory) : _display_utils.DOMStandardFontDataFactory; +exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory; +let createPDFNetworkStream; +{ + if (_is_node.isNodeJS) { + const { + PDFNodeStream + } = __w_pdfjs_require__(21); + createPDFNetworkStream = params => { + return new PDFNodeStream(params); + }; + } else { + const { + PDFNetworkStream + } = __w_pdfjs_require__(24); + const { + PDFFetchStream + } = __w_pdfjs_require__(25); + createPDFNetworkStream = params => { + return (0, _display_utils.isValidFetchUrl)(params.url) ? new PDFFetchStream(params) : new PDFNetworkStream(params); + }; + } +} +function getDocument(src) { + if (typeof src === "string" || src instanceof URL) { + src = { + url: src + }; + } else if ((0, _util.isArrayBuffer)(src)) { + src = { + data: src + }; + } + if (typeof src !== "object") { + throw new Error("Invalid parameter in getDocument, need parameter object."); + } + if (!src.url && !src.data && !src.range) { + throw new Error("Invalid parameter object: need either .data, .range or .url"); + } + const task = new PDFDocumentLoadingTask(); + const { + docId + } = task; + const url = src.url ? getUrlProp(src.url) : null; + const data = src.data ? getDataProp(src.data) : null; + const httpHeaders = src.httpHeaders || null; + const withCredentials = src.withCredentials === true; + const password = src.password ?? null; + const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null; + const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : DEFAULT_RANGE_CHUNK_SIZE; + let worker = src.worker instanceof PDFWorker ? src.worker : null; + const verbosity = src.verbosity; + const docBaseUrl = typeof src.docBaseUrl === "string" && !(0, _display_utils.isDataScheme)(src.docBaseUrl) ? src.docBaseUrl : null; + const cMapUrl = typeof src.cMapUrl === "string" ? src.cMapUrl : null; + const cMapPacked = src.cMapPacked !== false; + const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory; + const standardFontDataUrl = typeof src.standardFontDataUrl === "string" ? src.standardFontDataUrl : null; + const StandardFontDataFactory = src.StandardFontDataFactory || DefaultStandardFontDataFactory; + const ignoreErrors = src.stopAtErrors !== true; + const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1; + const isEvalSupported = src.isEvalSupported !== false; + const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === "boolean" ? src.isOffscreenCanvasSupported : !_is_node.isNodeJS; + const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1; + const disableFontFace = typeof src.disableFontFace === "boolean" ? src.disableFontFace : _is_node.isNodeJS; + const fontExtraProperties = src.fontExtraProperties === true; + const enableXfa = src.enableXfa === true; + const ownerDocument = src.ownerDocument || globalThis.document; + const disableRange = src.disableRange === true; + const disableStream = src.disableStream === true; + const disableAutoFetch = src.disableAutoFetch === true; + const pdfBug = src.pdfBug === true; + const length = rangeTransport ? rangeTransport.length : src.length ?? NaN; + const useSystemFonts = typeof src.useSystemFonts === "boolean" ? src.useSystemFonts : !_is_node.isNodeJS && !disableFontFace; + const useWorkerFetch = typeof src.useWorkerFetch === "boolean" ? src.useWorkerFetch : CMapReaderFactory === _display_utils.DOMCMapReaderFactory && StandardFontDataFactory === _display_utils.DOMStandardFontDataFactory && (0, _display_utils.isValidFetchUrl)(cMapUrl, document.baseURI) && (0, _display_utils.isValidFetchUrl)(standardFontDataUrl, document.baseURI); + const canvasFactory = src.canvasFactory || new DefaultCanvasFactory({ + ownerDocument + }); + const filterFactory = src.filterFactory || new DefaultFilterFactory({ + docId, + ownerDocument + }); + const styleElement = null; + (0, _util.setVerbosityLevel)(verbosity); + const transportFactory = { + canvasFactory, + filterFactory + }; + if (!useWorkerFetch) { + transportFactory.cMapReaderFactory = new CMapReaderFactory({ + baseUrl: cMapUrl, + isCompressed: cMapPacked + }); + transportFactory.standardFontDataFactory = new StandardFontDataFactory({ + baseUrl: standardFontDataUrl + }); + } + if (!worker) { + const workerParams = { + verbosity, + port: _worker_options.GlobalWorkerOptions.workerPort + }; + worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams); + task._worker = worker; + } + const fetchDocParams = { + docId, + apiVersion: '3.8.162', + data, + password, + disableAutoFetch, + rangeChunkSize, + length, + docBaseUrl, + enableXfa, + evaluatorOptions: { + maxImageSize, + disableFontFace, + ignoreErrors, + isEvalSupported, + isOffscreenCanvasSupported, + canvasMaxAreaInBytes, + fontExtraProperties, + useSystemFonts, + cMapUrl: useWorkerFetch ? cMapUrl : null, + standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null + } + }; + const transportParams = { + ignoreErrors, + isEvalSupported, + disableFontFace, + fontExtraProperties, + enableXfa, + ownerDocument, + disableAutoFetch, + pdfBug, + styleElement + }; + worker.promise.then(function () { + if (task.destroyed) { + throw new Error("Loading aborted"); + } + const workerIdPromise = _fetchDocument(worker, fetchDocParams); + const networkStreamPromise = new Promise(function (resolve) { + let networkStream; + if (rangeTransport) { + networkStream = new _transport_stream.PDFDataTransportStream({ + length, + initialData: rangeTransport.initialData, + progressiveDone: rangeTransport.progressiveDone, + contentDispositionFilename: rangeTransport.contentDispositionFilename, + disableRange, + disableStream + }, rangeTransport); + } else if (!data) { + networkStream = createPDFNetworkStream({ + url, + length, + httpHeaders, + withCredentials, + rangeChunkSize, + disableRange, + 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, transportParams, transportFactory); + task._transport = transport; + messageHandler.send("Ready", null); + }); + }).catch(task._capability.reject); + return task; +} +async function _fetchDocument(worker, source) { + if (worker.destroyed) { + throw new Error("Worker was destroyed"); + } + const workerId = await worker.messageHandler.sendWithPromise("GetDocRequest", source, source.data ? [source.data.buffer] : null); + if (worker.destroyed) { + throw new Error("Worker was destroyed"); + } + return workerId; +} +function getUrlProp(val) { + if (val instanceof URL) { + return val.href; + } + try { + return new URL(val, window.location).href; + } catch { + if (_is_node.isNodeJS && typeof val === "string") { + return val; + } + } + throw new Error("Invalid PDF url data: " + "either string or URL-object is expected in the url property."); +} +function getDataProp(val) { + if (_is_node.isNodeJS && typeof Buffer !== "undefined" && val instanceof Buffer) { + throw new Error("Please provide binary data as `Uint8Array`, rather than `Buffer`."); + } + if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) { + return val; + } + if (typeof val === "string") { + return (0, _util.stringToBytes)(val); + } + if (typeof val === "object" && !isNaN(val?.length) || (0, _util.isArrayBuffer)(val)) { + return new Uint8Array(val); + } + throw new Error("Invalid PDF binary data: either TypedArray, " + "string, or array-like object is expected in the data property."); +} +class PDFDocumentLoadingTask { + static #docId = 0; + constructor() { + this._capability = new _util.PromiseCapability(); + this._transport = null; + this._worker = null; + this.docId = `d${PDFDocumentLoadingTask.#docId++}`; + this.destroyed = false; + this.onPassword = null; + this.onProgress = 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 = new _util.PromiseCapability(); + } + 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; + } + get annotationStorage() { + return this._transport.annotationStorage; + } + get filterFactory() { + return this._transport.filterFactory; + } + get numPages() { + return this._pdfInfo.numPages; + } + get fingerprints() { + return this._pdfInfo.fingerprints; + } + get isPureXfa() { + return (0, _util.shadow)(this, "isPureXfa", !!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(); + } + saveDocument() { + return this._transport.saveDocument(); + } + 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; + } + getFieldObjects() { + return this._transport.getFieldObjects(); + } + hasJSActions() { + return this._transport.hasJSActions(); + } + getCalculationOrderIds() { + return this._transport.getCalculationOrderIds(); + } +} +exports.PDFDocumentProxy = PDFDocumentProxy; +class PDFPageProxy { + #delayedCleanupTimeout = null; + #pendingCleanup = false; + constructor(pageIndex, pageInfo, transport, pdfBug = false) { + this._pageIndex = pageIndex; + this._pageInfo = pageInfo; + this._transport = transport; + this._stats = pdfBug ? new _display_utils.StatTimer() : null; + this._pdfBug = pdfBug; + this.commonObjs = transport.commonObjs; + this.objs = new PDFObjects(); + this._maybeCleanupAfterRender = false; + this._intentStates = 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); + return this._transport.getAnnotations(this._pageIndex, intentArgs.renderingIntent); + } + getJSActions() { + return this._transport.getPageJSActions(this._pageIndex); + } + get filterFactory() { + return this._transport.filterFactory; + } + get isPureXfa() { + return (0, _util.shadow)(this, "isPureXfa", !!this._transport._htmlForXfa); + } + async getXfa() { + return this._transport._htmlForXfa?.children[this._pageIndex] || null; + } + render({ + canvasContext, + viewport, + intent = "display", + annotationMode = _util.AnnotationMode.ENABLE, + transform = null, + background = null, + optionalContentConfigPromise = null, + annotationCanvasMap = null, + pageColors = null, + printAnnotationStorage = null + }) { + this._stats?.time("Overall"); + const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage); + this.#pendingCleanup = false; + this.#abortDelayedCleanup(); + 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 intentPrint = !!(intentArgs.renderingIntent & _util.RenderingIntentFlag.PRINT); + if (!intentState.displayReadyCapability) { + intentState.displayReadyCapability = new _util.PromiseCapability(); + intentState.operatorList = { + fnArray: [], + argsArray: [], + lastChunk: false, + separateAnnots: null + }; + this._stats?.time("Page Request"); + this._pumpOperatorList(intentArgs); + } + const complete = error => { + intentState.renderTasks.delete(internalRenderTask); + if (this._maybeCleanupAfterRender || intentPrint) { + this.#pendingCleanup = true; + } + this.#tryCleanup(!intentPrint); + if (error) { + internalRenderTask.capability.reject(error); + this._abortOperatorList({ + intentState, + reason: error instanceof Error ? error : new Error(error) + }); + } else { + internalRenderTask.capability.resolve(); + } + this._stats?.timeEnd("Rendering"); + this._stats?.timeEnd("Overall"); + }; + const internalRenderTask = new InternalRenderTask({ + callback: complete, + params: { + canvasContext, + viewport, + transform, + background + }, + objs: this.objs, + commonObjs: this.commonObjs, + annotationCanvasMap, + operatorList: intentState.operatorList, + pageIndex: this._pageIndex, + canvasFactory: this._transport.canvasFactory, + filterFactory: this._transport.filterFactory, + 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.destroyed) { + complete(); + return; + } + 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 = new _util.PromiseCapability(); + (intentState.renderTasks ||= new Set()).add(opListTask); + intentState.operatorList = { + fnArray: [], + argsArray: [], + lastChunk: false, + separateAnnots: null + }; + this._stats?.time("Page Request"); + this._pumpOperatorList(intentArgs); + } + return intentState.opListReadCapability.promise; + } + streamTextContent({ + includeMarkedContent = false, + disableNormalization = false + } = {}) { + const TEXT_CONTENT_CHUNK_SIZE = 100; + return this._transport.messageHandler.sendWithStream("GetTextContent", { + pageIndex: this._pageIndex, + includeMarkedContent: includeMarkedContent === true, + disableNormalization: disableNormalization === 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._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(); + this.#pendingCleanup = false; + this.#abortDelayedCleanup(); + return Promise.all(waitOn); + } + cleanup(resetStats = false) { + this.#pendingCleanup = true; + const success = this.#tryCleanup(false); + if (resetStats && success) { + this._stats &&= new _display_utils.StatTimer(); + } + return success; + } + #tryCleanup(delayed = false) { + this.#abortDelayedCleanup(); + if (!this.#pendingCleanup || this.destroyed) { + return false; + } + if (delayed) { + this.#delayedCleanupTimeout = setTimeout(() => { + this.#delayedCleanupTimeout = null; + this.#tryCleanup(false); + }, DELAYED_CLEANUP_TIMEOUT); + 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.#pendingCleanup = false; + return true; + } + #abortDelayedCleanup() { + if (this.#delayedCleanupTimeout) { + clearTimeout(this.#delayedCleanupTimeout); + this.#delayedCleanupTimeout = null; + } + } + _startRenderPage(transparency, cacheKey) { + const intentState = this._intentStates.get(cacheKey); + if (!intentState) { + return; + } + this._stats?.timeEnd("Page Request"); + 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(true); + } + } + _pumpOperatorList({ + renderingIntent, + cacheKey, + annotationStorageSerializable + }) { + const { + map, + transfers + } = annotationStorageSerializable; + const readableStream = this._transport.messageHandler.sendWithStream("GetOperatorList", { + pageIndex: this._pageIndex, + intent: renderingIntent, + cacheKey, + annotationStorage: map + }, transfers); + 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(true); + } + 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 (intentState.streamReaderCancelTimeout) { + clearTimeout(intentState.streamReaderCancelTimeout); + intentState.streamReaderCancelTimeout = null; + } + if (!force) { + if (intentState.renderTasks.size > 0) { + return; + } + if (reason instanceof _display_utils.RenderingCancelledException) { + let delay = RENDERING_CANCELLED_TIMEOUT; + if (reason.extraDelay > 0 && reason.extraDelay < 1000) { + delay += reason.extraDelay; + } + intentState.streamReaderCancelTimeout = setTimeout(() => { + intentState.streamReaderCancelTimeout = null; + this._abortOperatorList({ + intentState, + reason, + force: true + }); + }, delay); + 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 { + #listeners = new Set(); + #deferred = Promise.resolve(); + postMessage(obj, transfer) { + const event = { + data: structuredClone(obj, transfer ? { + transfer + } : null) + }; + this.#deferred.then(() => { + for (const listener of this.#listeners) { + listener.call(this, event); + } + }); + } + addEventListener(name, listener) { + this.#listeners.add(listener); + } + removeEventListener(name, listener) { + this.#listeners.delete(listener); + } + terminate() { + this.#listeners.clear(); + } +} +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 { + return false; + } + const other = new URL(otherUrl, base); + return base.origin === other.origin; + }; + 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 = new _util.PromiseCapability(); + 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(); + this._messageHandler.send("configure", { + verbosity: this.verbosity + }); + } + _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 { + this._setupFakeWorker(); + } + }); + const sendTest = () => { + const testObj = new Uint8Array(); + messageHandler.send("test", testObj, [testObj.buffer]); + }; + sendTest(); + return; + } catch { + (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 { + 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; +class WorkerTransport { + #methodPromises = new Map(); + #pageCache = new Map(); + #pagePromises = new Map(); + constructor(messageHandler, loadingTask, networkStream, params, factory) { + this.messageHandler = messageHandler; + this.loadingTask = loadingTask; + this.commonObjs = new PDFObjects(); + this.fontLoader = new _font_loader.FontLoader({ + ownerDocument: params.ownerDocument, + styleElement: params.styleElement + }); + this._params = params; + this.canvasFactory = factory.canvasFactory; + this.filterFactory = factory.filterFactory; + this.cMapReaderFactory = factory.cMapReaderFactory; + this.standardFontDataFactory = factory.standardFontDataFactory; + this.destroyed = false; + this.destroyCapability = null; + this._passwordCapability = null; + this._networkStream = networkStream; + this._fullReader = null; + this._lastProgress = null; + this.downloadInfoCapability = new _util.PromiseCapability(); + this.setupMessageHandler(); + } + #cacheSimpleMethod(name, data = null) { + const cachedPromise = this.#methodPromises.get(name); + if (cachedPromise) { + return cachedPromise; + } + const promise = this.messageHandler.sendWithPromise(name, data); + this.#methodPromises.set(name, promise); + return promise; + } + get annotationStorage() { + return (0, _util.shadow)(this, "annotationStorage", new _annotation_storage.AnnotationStorage()); + } + getRenderingIntent(intent, annotationMode = _util.AnnotationMode.ENABLE, printAnnotationStorage = null, isOpList = false) { + let renderingIntent = _util.RenderingIntentFlag.DISPLAY; + let annotationStorageSerializable = _annotation_storage.SerializableEmpty; + 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; + annotationStorageSerializable = annotationStorage.serializable; + break; + default: + (0, _util.warn)(`getRenderingIntent - invalid annotationMode: ${annotationMode}`); + } + if (isOpList) { + renderingIntent += _util.RenderingIntentFlag.OPLIST; + } + return { + renderingIntent, + cacheKey: `${renderingIntent}_${annotationStorageSerializable.hash}`, + annotationStorageSerializable + }; + } + destroy() { + if (this.destroyCapability) { + return this.destroyCapability.promise; + } + this.destroyed = true; + this.destroyCapability = new _util.PromiseCapability(); + 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.#methodPromises.clear(); + this.filterFactory.destroy(); + 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)(value instanceof ArrayBuffer, "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 = new _util.PromiseCapability(); + 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)(value instanceof ArrayBuffer, "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 = new _util.PromiseCapability(); + 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; + } + const inspectFont = params.pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null; + const font = new _font_loader.FontFaceObject(exportedData, { + isEvalSupported: params.isEvalSupported, + disableFontFace: params.disableFontFace, + ignoreErrors: params.ignoreErrors, + inspectFont + }); + 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": + case "Pattern": + 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); + if (imageData) { + let length; + if (imageData.bitmap) { + const { + width, + height + } = imageData; + length = width * height * 4; + } else { + length = imageData.data?.length || 0; + } + if (length > _util.MAX_IMAGE_SIZE_TO_CACHE) { + pageProxy._maybeCleanupAfterRender = 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("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); + }); + } + getData() { + return this.messageHandler.sendWithPromise("GetData", null); + } + saveDocument() { + if (this.annotationStorage.size <= 0) { + (0, _util.warn)("saveDocument called while `annotationStorage` is empty, " + "please use the getData-method instead."); + } + const { + map, + transfers + } = this.annotationStorage.serializable; + return this.messageHandler.sendWithPromise("SaveDocument", { + isPureXfa: !!this._htmlForXfa, + numPages: this._numPages, + annotationStorage: map, + filename: this._fullReader?.filename ?? null + }, transfers).finally(() => { + this.annotationStorage.resetModified(); + }); + } + 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.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 + }); + } + getFieldObjects() { + return this.#cacheSimpleMethod("GetFieldObjects"); + } + hasJSActions() { + return this.#cacheSimpleMethod("HasJSActions"); + } + 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() { + const name = "GetMetadata", + cachedPromise = this.#methodPromises.get(name); + if (cachedPromise) { + return cachedPromise; + } + const promise = this.messageHandler.sendWithPromise(name, 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 + }; + }); + this.#methodPromises.set(name, promise); + return promise; + } + getMarkInfo() { + return this.messageHandler.sendWithPromise("GetMarkInfo", null); + } + async startCleanup(keepLoadedFonts = false) { + if (this.destroyed) { + return; + } + await this.messageHandler.sendWithPromise("Cleanup", null); + 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.#methodPromises.clear(); + this.filterFactory.destroy(true); + } + get loadingParams() { + const { + disableAutoFetch, + enableXfa + } = this._params; + return (0, _util.shadow)(this, "loadingParams", { + disableAutoFetch, + enableXfa + }); + } +} +class PDFObjects { + #objs = Object.create(null); + #ensureObj(objId) { + const obj = this.#objs[objId]; + if (obj) { + return obj; + } + return this.#objs[objId] = { + capability: new _util.PromiseCapability(), + 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() { + for (const objId in this.#objs) { + const { + data + } = this.#objs[objId]; + data?.bitmap?.close(); + } + 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(extraDelay = 0) { + this.#internalRenderTask.cancel(null, extraDelay); + } + 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, + filterFactory, + 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.filterFactory = filterFactory; + 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 = new _util.PromiseCapability(); + 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, + background + } = this.params; + this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, { + optionalContentConfig + }, this.annotationCanvasMap, this.pageColors); + this.gfx.beginDrawing({ + transform, + viewport, + transparency, + background + }); + this.operatorListIdx = 0; + this.graphicsReady = true; + this.graphicsReadyCallback?.(); + } + cancel(error = null, extraDelay = 0) { + this.running = false; + this.cancelled = true; + this.gfx?.endDrawing(); + if (this._canvas) { + InternalRenderTask.#canvasInUse.delete(this._canvas); + } + this.callback(error || new _display_utils.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay)); + } + operatorListChanged() { + if (!this.graphicsReady) { + this.graphicsReadyCallback ||= this._continueBound; + return; + } + 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(this.pageColors); + if (this._canvas) { + InternalRenderTask.#canvasInUse.delete(this._canvas); + } + this.callback(); + } + } + } +} +const version = '3.8.162'; +exports.version = version; +const build = '2c74323e3'; +exports.build = build; + +/***/ }), +/* 3 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SerializableEmpty = exports.PrintAnnotationStorage = exports.AnnotationStorage = void 0; +var _util = __w_pdfjs_require__(1); +var _editor = __w_pdfjs_require__(4); +var _murmurhash = __w_pdfjs_require__(8); +const SerializableEmpty = Object.freeze({ + map: null, + hash: "", + transfers: undefined +}); +exports.SerializableEmpty = SerializableEmpty; +class AnnotationStorage { + #modified = false; + #storage = new Map(); + constructor() { + 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; + } + setAll(obj) { + for (const [key, val] of Object.entries(obj)) { + this.setValue(key, val); + } + } + 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 SerializableEmpty; + } + const map = new Map(), + hash = new _murmurhash.MurmurHash3_64(), + transfers = []; + for (const [key, val] of this.#storage) { + const serialized = val instanceof _editor.AnnotationEditor ? val.serialize() : val; + if (serialized) { + map.set(key, serialized); + hash.update(`${key}:${JSON.stringify(serialized)}`); + if (serialized.bitmap) { + transfers.push(serialized.bitmap); + } + } + } + return map.size > 0 ? { + map, + hash: hash.hexdigest(), + transfers + } : SerializableEmpty; + } +} +exports.AnnotationStorage = AnnotationStorage; +class PrintAnnotationStorage extends AnnotationStorage { + #serializable; + constructor(parent) { + super(); + const { + map, + hash, + transfers + } = parent.serializable; + const clone = structuredClone(map, transfers ? { + transfer: transfers + } : null); + this.#serializable = { + map: clone, + hash, + transfers + }; + } + get print() { + (0, _util.unreachable)("Should not call PrintAnnotationStorage.print"); + } + get serializable() { + return this.#serializable; + } +} +exports.PrintAnnotationStorage = PrintAnnotationStorage; + +/***/ }), +/* 4 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationEditor = void 0; +var _tools = __w_pdfjs_require__(5); +var _util = __w_pdfjs_require__(1); +class AnnotationEditor { + #boundFocusin = this.focusin.bind(this); + #boundFocusout = this.focusout.bind(this); + #hasBeenSelected = false; + #isEditing = false; + #isInEditMode = false; + _uiManager = null; + #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; + this._uiManager = parameters.uiManager; + this.annotationElementId = null; + const { + rotation, + rawDims: { + pageWidth, + pageHeight, + pageX, + pageY + } + } = this.parent.viewport; + this.rotation = rotation; + this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360; + this.pageDimensions = [pageWidth, pageHeight]; + this.pageTranslation = [pageX, pageY]; + const [width, height] = this.parentDimensions; + this.x = parameters.x / width; + this.y = parameters.y / height; + this.isAttachedToDOM = false; + this.deleted = false; + } + static get _defaultLineColor() { + return (0, _util.shadow)(this, "_defaultLineColor", this._colorManager.getHexCode("CanvasText")); + } + static deleteAnnotationElement(editor) { + const fakeEditor = new FakeEditor({ + id: editor.parent.getNextId(), + parent: editor.parent, + uiManager: editor._uiManager + }); + fakeEditor.annotationElementId = editor.annotationElementId; + fakeEditor.deleted = true; + fakeEditor._uiManager.addToAnnotationStorage(fakeEditor); + } + addCommands(params) { + this._uiManager.addCommands(params); + } + get currentLayer() { + return this._uiManager.currentLayer; + } + setInBackground() { + this.div.style.zIndex = 0; + } + setInForeground() { + this.div.style.zIndex = this.#zIndex; + } + setParent(parent) { + if (parent !== null) { + this.pageIndex = parent.pageIndex; + this.pageDimensions = parent.pageDimensions; + } + this.parent = parent; + } + 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.addToAnnotationStorage(); + } + addToAnnotationStorage() { + this._uiManager.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.parentDimensions; + [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.parentDimensions; + [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) { + switch (this.parentRotation) { + case 90: + return [y, -x]; + case 180: + return [-x, -y]; + case 270: + return [-y, x]; + default: + return [x, y]; + } + } + get parentScale() { + return this._uiManager.viewParameters.realScale; + } + get parentRotation() { + return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360; + } + get parentDimensions() { + const { + realScale + } = this._uiManager.viewParameters; + const [pageWidth, pageHeight] = this.pageDimensions; + return [pageWidth * realScale, pageHeight * realScale]; + } + setDims(width, height) { + const [parentWidth, parentHeight] = this.parentDimensions; + this.div.style.width = `${100 * width / parentWidth}%`; + this.div.style.height = `${100 * height / parentHeight}%`; + } + fixDims() { + const { + style + } = this.div; + const { + height, + width + } = style; + const widthPercent = width.endsWith("%"); + const heightPercent = height.endsWith("%"); + if (widthPercent && heightPercent) { + return; + } + const [parentWidth, parentHeight] = this.parentDimensions; + if (!widthPercent) { + style.width = `${100 * parseFloat(width) / parentWidth}%`; + } + if (!heightPercent) { + style.height = `${100 * parseFloat(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 + } = _util.FeatureTest.platform; + 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 scale = this.parentScale; + const [pageWidth, pageHeight] = this.pageDimensions; + const [pageX, pageY] = this.pageTranslation; + const shiftX = tx / scale; + const shiftY = ty / scale; + 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 + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY]; + case 90: + return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY]; + case 180: + return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY]; + case 270: + return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY]; + 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); + this.div?.addEventListener("focusout", this.#boundFocusout); + } + serialize(_isForCopying = false) { + (0, _util.unreachable)("An editor must be serializable"); + } + static deserialize(data, parent, uiManager) { + const editor = new this.prototype.constructor({ + parent, + id: parent.getNextId(), + uiManager + }); + editor.rotation = data.rotation; + const [pageWidth, pageHeight] = editor.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; +class FakeEditor extends AnnotationEditor { + constructor(params) { + super(params); + this.annotationElementId = params.annotationElementId; + this.deleted = true; + } + serialize() { + return { + id: this.annotationElementId, + deleted: true, + pageIndex: this.pageIndex + }; + } +} + +/***/ }), +/* 5 */ +/***/ ((__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__(6); +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 + } = _util.FeatureTest.platform; + for (const [keys, callback, bubbles = false] of callbacks) { + for (const key of keys) { + const isMacKey = key.startsWith("mac+"); + if (isMac && isMacKey) { + this.callbacks.set(key.slice(4), { + callback, + bubbles + }); + this.allKeys.add(key.split("+").at(-1)); + } else if (!isMac && !isMacKey) { + this.callbacks.set(key, { + callback, + bubbles + }); + this.allKeys.add(key.split("+").at(-1)); + } + } + } + } + #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 info = this.callbacks.get(this.#serialize(event)); + if (!info) { + return; + } + const { + callback, + bubbles + } = info; + callback.bind(self)(); + if (!bubbles) { + event.stopPropagation(); + event.preventDefault(); + } + } +} +exports.KeyboardManager = KeyboardManager; +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(); + #annotationStorage = null; + #commandManager = new CommandManager(); + #currentPageIndex = 0; + #deletedAnnotationsElementIds = new Set(); + #editorTypes = null; + #editorsToRescale = new Set(); + #eventBus = null; + #idManager = new IdManager(); + #isEnabled = false; + #mode = _util.AnnotationEditorType.NONE; + #selectedEditors = new Set(); + #boundCopy = this.copy.bind(this); + #boundCut = this.cut.bind(this); + #boundPaste = this.paste.bind(this); + #boundKeydown = this.keydown.bind(this); + #boundOnEditingAction = this.onEditingAction.bind(this); + #boundOnPageChanging = this.onPageChanging.bind(this); + #boundOnScaleChanging = this.onScaleChanging.bind(this); + #boundOnRotationChanging = this.onRotationChanging.bind(this); + #previousStates = { + isEditing: false, + isEmpty: true, + hasSomethingToUndo: false, + hasSomethingToRedo: false, + hasSelectedEditor: false + }; + #container = null; + static get _keyboardManager() { + return (0, _util.shadow)(this, "_keyboardManager", new KeyboardManager([[["ctrl+a", "mac+meta+a"], AnnotationEditorUIManager.prototype.selectAll], [["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, annotationStorage) { + this.#container = container; + this.#eventBus = eventBus; + this.#eventBus._on("editingaction", this.#boundOnEditingAction); + this.#eventBus._on("pagechanging", this.#boundOnPageChanging); + this.#eventBus._on("scalechanging", this.#boundOnScaleChanging); + this.#eventBus._on("rotationchanging", this.#boundOnRotationChanging); + this.#annotationStorage = annotationStorage; + this.viewParameters = { + realScale: _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS, + rotation: 0 + }; + } + destroy() { + this.#removeKeyboardManager(); + this.#eventBus._off("editingaction", this.#boundOnEditingAction); + this.#eventBus._off("pagechanging", this.#boundOnPageChanging); + this.#eventBus._off("scalechanging", this.#boundOnScaleChanging); + this.#eventBus._off("rotationchanging", this.#boundOnRotationChanging); + for (const layer of this.#allLayers.values()) { + layer.destroy(); + } + this.#allLayers.clear(); + this.#allEditors.clear(); + this.#editorsToRescale.clear(); + this.#activeEditor = null; + this.#selectedEditors.clear(); + this.#commandManager.destroy(); + } + onPageChanging({ + pageNumber + }) { + this.#currentPageIndex = pageNumber - 1; + } + focusMainContainer() { + this.#container.focus(); + } + addShouldRescale(editor) { + this.#editorsToRescale.add(editor); + } + removeShouldRescale(editor) { + this.#editorsToRescale.delete(editor); + } + onScaleChanging({ + scale + }) { + this.commitOrRemove(); + this.viewParameters.realScale = scale * _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS; + for (const editor of this.#editorsToRescale) { + editor.onScaleChanging(); + } + } + onRotationChanging({ + pagesRotation + }) { + this.commitOrRemove(); + this.viewParameters.rotation = pagesRotation; + } + addToAnnotationStorage(editor) { + if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) { + this.#annotationStorage.setValue(editor.id, editor); + } + } + #addKeyboardManager() { + this.#container.addEventListener("keydown", this.#boundKeydown); + } + #removeKeyboardManager() { + this.#container.removeEventListener("keydown", this.#boundKeydown); + } + #addCopyPasteListeners() { + document.addEventListener("copy", this.#boundCopy); + document.addEventListener("cut", this.#boundCut); + document.addEventListener("paste", this.#boundPaste); + } + #removeCopyPasteListeners() { + document.removeEventListener("copy", this.#boundCopy); + document.removeEventListener("cut", this.#boundCut); + document.removeEventListener("paste", this.#boundPaste); + } + copy(event) { + event.preventDefault(); + if (this.#activeEditor) { + this.#activeEditor.commitOrRemove(); + } + if (!this.hasSelection) { + return; + } + const editors = []; + for (const editor of this.#selectedEditors) { + const serialized = editor.serialize(true); + if (serialized) { + editors.push(serialized); + } + } + if (editors.length === 0) { + return; + } + event.clipboardData.setData("application/pdfjs", JSON.stringify(editors)); + } + cut(event) { + this.copy(event); + this.delete(); + } + paste(event) { + event.preventDefault(); + let data = event.clipboardData.getData("application/pdfjs"); + if (!data) { + return; + } + try { + data = JSON.parse(data); + } catch (ex) { + (0, _util.warn)(`paste: "${ex.message}".`); + return; + } + if (!Array.isArray(data)) { + return; + } + this.unselectAll(); + const layer = this.#allLayers.get(this.#currentPageIndex); + try { + const newEditors = []; + for (const editor of data) { + const deserializedEditor = layer.deserialize(editor); + if (!deserializedEditor) { + return; + } + newEditors.push(deserializedEditor); + } + 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 + }); + } catch (ex) { + (0, _util.warn)(`paste: "${ex.message}".`); + } + } + keydown(event) { + if (!this.getActive()?.shouldGetKeyboardEvents()) { + AnnotationEditorUIManager._keyboardManager.exec(this, event); + } + } + onEditingAction(details) { + if (["undo", "redo", "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.#addCopyPasteListeners(); + this.#dispatchUpdateStates({ + isEditing: this.#mode !== _util.AnnotationEditorType.NONE, + isEmpty: this.#isEmpty(), + hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(), + hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(), + hasSelectedEditor: false + }); + } else { + this.#removeKeyboardManager(); + this.#removeCopyPasteListeners(); + this.#dispatchUpdateStates({ + isEditing: false + }); + } + } + registerEditorTypes(types) { + if (this.#editorTypes) { + return; + } + this.#editorTypes = types; + for (const editorType of this.#editorTypes) { + this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate); + } + } + getId() { + return this.#idManager.getId(); + } + get currentLayer() { + return this.#allLayers.get(this.#currentPageIndex); + } + get currentPageIndex() { + return this.#currentPageIndex; + } + 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) { + if (!this.#editorTypes) { + return; + } + 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); + if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) { + this.#annotationStorage?.remove(editor.id); + } + } + addDeletedAnnotationElement(editor) { + this.#deletedAnnotationsElementIds.add(editor.annotationElementId); + editor.deleted = true; + } + isDeletedAnnotationElement(annotationElementId) { + return this.#deletedAnnotationsElementIds.has(annotationElementId); + } + removeDeletedAnnotationElement(editor) { + this.#deletedAnnotationsElementIds.delete(editor.annotationElementId); + editor.deleted = false; + } + #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() { + this.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 + }); + } + commitOrRemove() { + this.#activeEditor?.commitOrRemove(); + } + #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.#selectedEditors.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; + +/***/ }), +/* 6 */ +/***/ ((__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.DOMFilterFactory = 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; +exports.setLayerDimensions = setLayerDimensions; +var _base_factory = __w_pdfjs_require__(7); +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 DOMFilterFactory extends _base_factory.BaseFilterFactory { + #_cache; + #_defs; + #docId; + #document; + #hcmFilter; + #hcmKey; + #hcmUrl; + #hcmHighlightFilter; + #hcmHighlightKey; + #hcmHighlightUrl; + #id = 0; + constructor({ + docId, + ownerDocument = globalThis.document + } = {}) { + super(); + this.#docId = docId; + this.#document = ownerDocument; + } + get #cache() { + return this.#_cache ||= new Map(); + } + get #defs() { + if (!this.#_defs) { + const div = this.#document.createElement("div"); + const { + style + } = div; + style.visibility = "hidden"; + style.contain = "strict"; + style.width = style.height = 0; + style.position = "absolute"; + style.top = style.left = 0; + style.zIndex = -1; + const svg = this.#document.createElementNS(SVG_NS, "svg"); + svg.setAttribute("width", 0); + svg.setAttribute("height", 0); + this.#_defs = this.#document.createElementNS(SVG_NS, "defs"); + div.append(svg); + svg.append(this.#_defs); + this.#document.body.append(div); + } + return this.#_defs; + } + addFilter(maps) { + if (!maps) { + return "none"; + } + let value = this.#cache.get(maps); + if (value) { + return value; + } + let tableR, tableG, tableB, key; + if (maps.length === 1) { + const mapR = maps[0]; + const buffer = new Array(256); + for (let i = 0; i < 256; i++) { + buffer[i] = mapR[i] / 255; + } + key = tableR = tableG = tableB = buffer.join(","); + } else { + const [mapR, mapG, mapB] = maps; + const bufferR = new Array(256); + const bufferG = new Array(256); + const bufferB = new Array(256); + for (let i = 0; i < 256; i++) { + bufferR[i] = mapR[i] / 255; + bufferG[i] = mapG[i] / 255; + bufferB[i] = mapB[i] / 255; + } + tableR = bufferR.join(","); + tableG = bufferG.join(","); + tableB = bufferB.join(","); + key = `${tableR}${tableG}${tableB}`; + } + value = this.#cache.get(key); + if (value) { + this.#cache.set(maps, value); + return value; + } + const id = `g_${this.#docId}_transfer_map_${this.#id++}`; + const url = `url(#${id})`; + this.#cache.set(maps, url); + this.#cache.set(key, url); + const filter = this.#createFilter(id); + this.#addTransferMapConversion(tableR, tableG, tableB, filter); + return url; + } + addHCMFilter(fgColor, bgColor) { + const key = `${fgColor}-${bgColor}`; + if (this.#hcmKey === key) { + return this.#hcmUrl; + } + this.#hcmKey = key; + this.#hcmUrl = "none"; + this.#hcmFilter?.remove(); + if (!fgColor || !bgColor) { + return this.#hcmUrl; + } + const fgRGB = this.#getRGB(fgColor); + fgColor = _util.Util.makeHexColor(...fgRGB); + const bgRGB = this.#getRGB(bgColor); + bgColor = _util.Util.makeHexColor(...bgRGB); + this.#defs.style.color = ""; + if (fgColor === "#000000" && bgColor === "#ffffff" || fgColor === bgColor) { + return this.#hcmUrl; + } + const map = new Array(256); + for (let i = 0; i <= 255; i++) { + const x = i / 255; + map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4; + } + const table = map.join(","); + const id = `g_${this.#docId}_hcm_filter`; + const filter = this.#hcmHighlightFilter = this.#createFilter(id); + this.#addTransferMapConversion(table, table, table, filter); + this.#addGrayConversion(filter); + const getSteps = (c, n) => { + const start = fgRGB[c] / 255; + const end = bgRGB[c] / 255; + const arr = new Array(n + 1); + for (let i = 0; i <= n; i++) { + arr[i] = start + i / n * (end - start); + } + return arr.join(","); + }; + this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter); + this.#hcmUrl = `url(#${id})`; + return this.#hcmUrl; + } + addHighlightHCMFilter(fgColor, bgColor, newFgColor, newBgColor) { + const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`; + if (this.#hcmHighlightKey === key) { + return this.#hcmHighlightUrl; + } + this.#hcmHighlightKey = key; + this.#hcmHighlightUrl = "none"; + this.#hcmHighlightFilter?.remove(); + if (!fgColor || !bgColor) { + return this.#hcmHighlightUrl; + } + const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this)); + let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]); + let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]); + let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this)); + if (bgGray < fgGray) { + [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB]; + } + this.#defs.style.color = ""; + const getSteps = (fg, bg, n) => { + const arr = new Array(256); + const step = (bgGray - fgGray) / n; + const newStart = fg / 255; + const newStep = (bg - fg) / (255 * n); + let prev = 0; + for (let i = 0; i <= n; i++) { + const k = Math.round(fgGray + i * step); + const value = newStart + i * newStep; + for (let j = prev; j <= k; j++) { + arr[j] = value; + } + prev = k + 1; + } + for (let i = prev; i < 256; i++) { + arr[i] = arr[prev - 1]; + } + return arr.join(","); + }; + const id = `g_${this.#docId}_hcm_highlight_filter`; + const filter = this.#hcmHighlightFilter = this.#createFilter(id); + this.#addGrayConversion(filter); + this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter); + this.#hcmHighlightUrl = `url(#${id})`; + return this.#hcmHighlightUrl; + } + destroy(keepHCM = false) { + if (keepHCM && (this.#hcmUrl || this.#hcmHighlightUrl)) { + return; + } + if (this.#_defs) { + this.#_defs.parentNode.parentNode.remove(); + this.#_defs = null; + } + if (this.#_cache) { + this.#_cache.clear(); + this.#_cache = null; + } + this.#id = 0; + } + #addGrayConversion(filter) { + const feColorMatrix = this.#document.createElementNS(SVG_NS, "feColorMatrix"); + feColorMatrix.setAttribute("type", "matrix"); + feColorMatrix.setAttribute("values", "0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0"); + filter.append(feColorMatrix); + } + #createFilter(id) { + const filter = this.#document.createElementNS(SVG_NS, "filter"); + filter.setAttribute("color-interpolation-filters", "sRGB"); + filter.setAttribute("id", id); + this.#defs.append(filter); + return filter; + } + #appendFeFunc(feComponentTransfer, func, table) { + const feFunc = this.#document.createElementNS(SVG_NS, func); + feFunc.setAttribute("type", "discrete"); + feFunc.setAttribute("tableValues", table); + feComponentTransfer.append(feFunc); + } + #addTransferMapConversion(rTable, gTable, bTable, filter) { + const feComponentTransfer = this.#document.createElementNS(SVG_NS, "feComponentTransfer"); + filter.append(feComponentTransfer); + this.#appendFeFunc(feComponentTransfer, "feFuncR", rTable); + this.#appendFeFunc(feComponentTransfer, "feFuncG", gTable); + this.#appendFeFunc(feComponentTransfer, "feFuncB", bTable); + } + #getRGB(color) { + this.#defs.style.color = color; + return getRGB(getComputedStyle(this.#defs).getPropertyValue("color")); + } +} +exports.DOMFilterFactory = DOMFilterFactory; +class DOMCanvasFactory extends _base_factory.BaseCanvasFactory { + constructor({ + ownerDocument = globalThis.document + } = {}) { + super(); + this._document = ownerDocument; + } + _createCanvas(width, height) { + const canvas = this._document.createElement("canvas"); + canvas.width = width; + canvas.height = height; + return canvas; + } +} +exports.DOMCanvasFactory = DOMCanvasFactory; +async function fetchData(url, asTypedArray = false) { + if (isValidFetchUrl(url, document.baseURI)) { + const response = await fetch(url); + if (!response.ok) { + throw new Error(response.statusText); + } + return asTypedArray ? new Uint8Array(await response.arrayBuffer()) : (0, _util.stringToBytes)(await response.text()); + } + return new Promise((resolve, reject) => { + const request = new XMLHttpRequest(); + request.open("GET", url, true); + if (asTypedArray) { + request.responseType = "arraybuffer"; + } + request.onreadystatechange = () => { + if (request.readyState !== XMLHttpRequest.DONE) { + return; + } + if (request.status === 200 || request.status === 0) { + let data; + if (asTypedArray && request.response) { + data = new Uint8Array(request.response); + } else if (!asTypedArray && request.responseText) { + data = (0, _util.stringToBytes)(request.responseText); + } + if (data) { + resolve(data); + return; + } + } + reject(new Error(request.statusText)); + }; + request.send(null); + }); +} +class DOMCMapReaderFactory extends _base_factory.BaseCMapReaderFactory { + _fetchData(url, compressionType) { + return fetchData(url, this.isCompressed).then(data => { + return { + cMapData: data, + compressionType + }; + }); + } +} +exports.DOMCMapReaderFactory = DOMCMapReaderFactory; +class DOMStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory { + _fetchData(url) { + return fetchData(url, true); + } +} +exports.DOMStandardFontDataFactory = DOMStandardFontDataFactory; +class DOMSVGFactory extends _base_factory.BaseSVGFactory { + _createSVG(type) { + return document.createElementNS(SVG_NS, type); + } +} +exports.DOMSVGFactory = DOMSVGFactory; +class PageViewport { + constructor({ + viewBox, + scale, + rotation, + offsetX = 0, + offsetY = 0, + dontFlip = false + }) { + this.viewBox = viewBox; + this.scale = scale; + this.rotation = rotation; + this.offsetX = offsetX; + this.offsetY = offsetY; + const centerX = (viewBox[2] + viewBox[0]) / 2; + const centerY = (viewBox[3] + viewBox[1]) / 2; + let rotateA, rotateB, rotateC, rotateD; + rotation %= 360; + if (rotation < 0) { + rotation += 360; + } + switch (rotation) { + case 180: + rotateA = -1; + rotateB = 0; + rotateC = 0; + rotateD = 1; + break; + case 90: + rotateA = 0; + rotateB = 1; + rotateC = 1; + rotateD = 0; + break; + case 270: + rotateA = 0; + rotateB = -1; + rotateC = -1; + rotateD = 0; + break; + case 0: + rotateA = 1; + rotateB = 0; + rotateC = 0; + rotateD = -1; + break; + default: + throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees."); + } + if (dontFlip) { + rotateC = -rotateC; + rotateD = -rotateD; + } + let offsetCanvasX, offsetCanvasY; + let width, height; + if (rotateA === 0) { + offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX; + offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY; + width = (viewBox[3] - viewBox[1]) * scale; + height = (viewBox[2] - viewBox[0]) * scale; + } else { + offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX; + offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY; + width = (viewBox[2] - viewBox[0]) * scale; + height = (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; + } + get rawDims() { + const { + viewBox + } = this; + return (0, _util.shadow)(this, "rawDims", { + pageWidth: viewBox[2] - viewBox[0], + pageHeight: viewBox[3] - viewBox[1], + pageX: viewBox[0], + pageY: viewBox[1] + }); + } + 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, extraDelay = 0) { + super(msg, "RenderingCancelledException"); + this.extraDelay = extraDelay; + } +} +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, onlyStripPath = false) { + if (!onlyStripPath) { + [url] = url.split(/[#?]/, 1); + } + return url.substring(url.lastIndexOf("/") + 1); +} +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 {} + } + } + return suggestedFilename || defaultFilename; +} +class StatTimer { + started = Object.create(null); + times = []; + time(name) { + if (name in this.started) { + (0, _util.warn)(`Timer is already running for ${name}`); + } + this.started[name] = Date.now(); + } + timeEnd(name) { + if (!(name in this.started)) { + (0, _util.warn)(`Timer has not been started for ${name}`); + } + this.times.push({ + name, + start: this.started[name], + end: Date.now() + }); + delete this.started[name]; + } + toString() { + const outBuf = []; + let longest = 0; + for (const { + name + } of this.times) { + longest = Math.max(name.length, longest); + } + for (const { + name, + start, + end + } of this.times) { + outBuf.push(`${name.padEnd(longest)} ${end - start}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 { + 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 deprecated(details) { + console.log("Deprecated API usage: " + details); +} +let pdfDateStringRegex; +class PDFDateString { + static toDateObject(input) { + if (!input || typeof input !== "string") { + return null; + } + pdfDateStringRegex ||= new RegExp("^D:" + "(\\d{4})" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "([Z|+|-])?" + "(\\d{2})?" + "'?" + "(\\d{2})?" + "'?"); + const matches = pdfDateStringRegex.exec(input); + if (!matches) { + return null; + } + const year = parseInt(matches[1], 10); + let month = parseInt(matches[2], 10); + month = month >= 1 && month <= 12 ? month - 1 : 0; + let day = parseInt(matches[3], 10); + day = day >= 1 && day <= 31 ? day : 1; + let hour = parseInt(matches[4], 10); + hour = hour >= 0 && hour <= 23 ? hour : 0; + let minute = parseInt(matches[5], 10); + minute = minute >= 0 && minute <= 59 ? minute : 0; + let second = parseInt(matches[6], 10); + second = second >= 0 && second <= 59 ? second : 0; + const universalTimeRelation = matches[7] || "Z"; + let offsetHour = parseInt(matches[8], 10); + offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0; + let offsetMinute = parseInt(matches[9], 10) || 0; + offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0; + if (universalTimeRelation === "-") { + hour += offsetHour; + minute += offsetMinute; + } else if (universalTimeRelation === "+") { + hour -= offsetHour; + minute -= offsetMinute; + } + return new Date(Date.UTC(year, month, day, hour, minute, second)); + } +} +exports.PDFDateString = PDFDateString; +function getXfaPageViewport(xfaPage, { + scale = 1, + rotation = 0 +}) { + const { + width, + height + } = xfaPage.attributes.style; + const viewBox = [0, 0, parseInt(width), parseInt(height)]; + return new PageViewport({ + viewBox, + scale, + rotation + }); +} +function getRGB(color) { + if (color.startsWith("#")) { + const colorRGB = parseInt(color.slice(1), 16); + return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff]; + } + if (color.startsWith("rgb(")) { + return color.slice(4, -1).split(",").map(x => parseInt(x)); + } + if (color.startsWith("rgba(")) { + return color.slice(5, -1).split(",").map(x => parseInt(x)).slice(0, 3); + } + (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]; +} +function setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) { + if (viewport instanceof PageViewport) { + const { + pageWidth, + pageHeight + } = viewport.rawDims; + const { + style + } = div; + const widthStr = `calc(var(--scale-factor) * ${pageWidth}px)`; + const heightStr = `calc(var(--scale-factor) * ${pageHeight}px)`; + if (!mustFlip || viewport.rotation % 180 === 0) { + style.width = widthStr; + style.height = heightStr; + } else { + style.width = heightStr; + style.height = widthStr; + } + } + if (mustRotate) { + div.setAttribute("data-main-rotation", viewport.rotation); + } +} + +/***/ }), +/* 7 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.BaseStandardFontDataFactory = exports.BaseSVGFactory = exports.BaseFilterFactory = exports.BaseCanvasFactory = exports.BaseCMapReaderFactory = void 0; +var _util = __w_pdfjs_require__(1); +class BaseFilterFactory { + constructor() { + if (this.constructor === BaseFilterFactory) { + (0, _util.unreachable)("Cannot initialize BaseFilterFactory."); + } + } + addFilter(maps) { + return "none"; + } + addHCMFilter(fgColor, bgColor) { + return "none"; + } + addHighlightHCMFilter(fgColor, bgColor, newFgColor, newBgColor) { + return "none"; + } + destroy(keepHCM = false) {} +} +exports.BaseFilterFactory = BaseFilterFactory; +class BaseCanvasFactory { + constructor() { + if (this.constructor === BaseCanvasFactory) { + (0, _util.unreachable)("Cannot initialize BaseCanvasFactory."); + } + } + create(width, height) { + if (width <= 0 || height <= 0) { + throw new Error("Invalid canvas size"); + } + const canvas = this._createCanvas(width, height); + return { + canvas, + context: canvas.getContext("2d") + }; + } + reset(canvasAndContext, width, height) { + if (!canvasAndContext.canvas) { + throw new Error("Canvas is not specified"); + } + if (width <= 0 || height <= 0) { + throw new Error("Invalid canvas size"); + } + canvasAndContext.canvas.width = width; + canvasAndContext.canvas.height = height; + } + destroy(canvasAndContext) { + if (!canvasAndContext.canvas) { + throw new Error("Canvas is not specified"); + } + canvasAndContext.canvas.width = 0; + canvasAndContext.canvas.height = 0; + canvasAndContext.canvas = null; + canvasAndContext.context = null; + } + _createCanvas(width, height) { + (0, _util.unreachable)("Abstract method `_createCanvas` called."); + } +} +exports.BaseCanvasFactory = BaseCanvasFactory; +class BaseCMapReaderFactory { + constructor({ + baseUrl = null, + isCompressed = true + }) { + if (this.constructor === BaseCMapReaderFactory) { + (0, _util.unreachable)("Cannot initialize BaseCMapReaderFactory."); + } + this.baseUrl = baseUrl; + this.isCompressed = isCompressed; + } + async fetch({ + name + }) { + if (!this.baseUrl) { + throw new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.'); + } + if (!name) { + throw new Error("CMap name must be specified."); + } + const url = this.baseUrl + name + (this.isCompressed ? ".bcmap" : ""); + const compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE; + return this._fetchData(url, compressionType).catch(reason => { + throw new Error(`Unable to load ${this.isCompressed ? "binary " : ""}CMap at: ${url}`); + }); + } + _fetchData(url, compressionType) { + (0, _util.unreachable)("Abstract method `_fetchData` called."); + } +} +exports.BaseCMapReaderFactory = BaseCMapReaderFactory; +class BaseStandardFontDataFactory { + constructor({ + baseUrl = null + }) { + if (this.constructor === BaseStandardFontDataFactory) { + (0, _util.unreachable)("Cannot initialize BaseStandardFontDataFactory."); + } + this.baseUrl = baseUrl; + } + async fetch({ + filename + }) { + if (!this.baseUrl) { + throw new Error('The standard font "baseUrl" parameter must be specified, ensure that ' + 'the "standardFontDataUrl" API parameter is provided.'); + } + if (!filename) { + throw new Error("Font filename must be specified."); + } + const url = `${this.baseUrl}${filename}`; + return this._fetchData(url).catch(reason => { + throw new Error(`Unable to load font data at: ${url}`); + }); + } + _fetchData(url) { + (0, _util.unreachable)("Abstract method `_fetchData` called."); + } +} +exports.BaseStandardFontDataFactory = BaseStandardFontDataFactory; +class BaseSVGFactory { + constructor() { + if (this.constructor === BaseSVGFactory) { + (0, _util.unreachable)("Cannot initialize BaseSVGFactory."); + } + } + create(width, height, 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."); + } +} +exports.BaseSVGFactory = BaseSVGFactory; + +/***/ }), +/* 8 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MurmurHash3_64 = void 0; +var _util = __w_pdfjs_require__(1); +const SEED = 0xc3d2e1f0; +const MASK_HIGH = 0xffff0000; +const MASK_LOW = 0xffff; +class MurmurHash3_64 { + constructor(seed) { + this.h1 = seed ? seed & 0xffffffff : SEED; + this.h2 = seed ? seed & 0xffffffff : SEED; + } + 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 { + data[length++] = code >>> 8; + data[length++] = code & 0xff; + } + } + } else if ((0, _util.isArrayBuffer)(input)) { + data = input.slice(); + length = data.byteLength; + } else { + throw new Error("Wrong data format in MurmurHash3_64_update. " + "Input must be a string or array."); + } + 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; + 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 { + 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; + } + } + k1 = 0; + 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; + } + } + this.h1 = h1; + this.h2 = h2; + } + 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; + return (h1 >>> 0).toString(16).padStart(8, "0") + (h2 >>> 0).toString(16).padStart(8, "0"); + } +} +exports.MurmurHash3_64 = MurmurHash3_64; + +/***/ }), +/* 9 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.FontLoader = exports.FontFaceObject = void 0; +var _util = __w_pdfjs_require__(1); +var _is_node = __w_pdfjs_require__(10); +class FontLoader { + #systemFonts = new Set(); + constructor({ + ownerDocument = globalThis.document, + styleElement = null + }) { + this._document = ownerDocument; + this.nativeFontFaces = new Set(); + this.styleElement = null; + this.loadingRequests = []; + this.loadTestFontId = 0; + } + addNativeFontFace(nativeFontFace) { + this.nativeFontFaces.add(nativeFontFace); + this._document.fonts.add(nativeFontFace); + } + removeNativeFontFace(nativeFontFace) { + this.nativeFontFaces.delete(nativeFontFace); + this._document.fonts.delete(nativeFontFace); + } + insertRule(rule) { + if (!this.styleElement) { + this.styleElement = this._document.createElement("style"); + this._document.documentElement.getElementsByTagName("head")[0].append(this.styleElement); + } + const styleSheet = this.styleElement.sheet; + styleSheet.insertRule(rule, styleSheet.cssRules.length); + } + clear() { + for (const nativeFontFace of this.nativeFontFaces) { + this._document.fonts.delete(nativeFontFace); + } + this.nativeFontFaces.clear(); + this.#systemFonts.clear(); + if (this.styleElement) { + this.styleElement.remove(); + this.styleElement = null; + } + } + async loadSystemFont(info) { + if (!info || this.#systemFonts.has(info.loadedName)) { + return; + } + (0, _util.assert)(!this.disableFontFace, "loadSystemFont shouldn't be called when `disableFontFace` is set."); + if (this.isFontLoadingAPISupported) { + const { + loadedName, + src, + style + } = info; + const fontFace = new FontFace(loadedName, src, style); + this.addNativeFontFace(fontFace); + try { + await fontFace.load(); + this.#systemFonts.add(loadedName); + } catch { + (0, _util.warn)(`Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`); + this.removeNativeFontFace(fontFace); + } + return; + } + (0, _util.unreachable)("Not implemented: loadSystemFont without the Font Loading API."); + } + async bind(font) { + if (font.attached || font.missingFile && !font.systemFontInfo) { + return; + } + font.attached = true; + if (font.systemFontInfo) { + await this.loadSystemFont(font.systemFontInfo); + return; + } + if (this.isFontLoadingAPISupported) { + const nativeFontFace = font.createNativeFontFace(); + if (nativeFontFace) { + this.addNativeFontFace(nativeFontFace); + try { + await nativeFontFace.loaded; + } catch (ex) { + (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(font, request); + }); + } + } + get isFontLoadingAPISupported() { + const hasFonts = !!this._document?.fonts; + return (0, _util.shadow)(this, "isFontLoadingAPISupported", hasFonts); + } + get isSyncFontLoadingSupported() { + let supported = false; + if (_is_node.isNodeJS) { + supported = true; + } else if (typeof navigator !== "undefined" && /Mozilla\/5.0.*?rv:\d+.*? Gecko/.test(navigator.userAgent)) { + 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 (loadingRequests.length > 0 && loadingRequests[0].done) { + const otherRequest = loadingRequests.shift(); + setTimeout(otherRequest.callback, 0); + } + } + const { + loadingRequests + } = this; + const request = { + done: false, + complete: completeRequest, + callback + }; + loadingRequests.push(request); + return request; + } + get _loadTestFont() { + const testFont = 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", testFont); + } + _prepareFontLoadEvent(font, 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) { + 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 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 [font.loadedName, loadTestFontId]) { + 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(); + }); + } +} +exports.FontLoader = FontLoader; +class FontFaceObject { + constructor(translatedData, { + isEvalSupported = true, + disableFontFace = false, + ignoreErrors = false, + inspectFont = 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._inspectFont = inspectFont; + } + 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); + } + this._inspectFont?.(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}}`; + } + this._inspectFont?.(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; + } + (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; + +/***/ }), +/* 10 */ +/***/ ((__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; + +/***/ }), +/* 11 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.CanvasGraphics = void 0; +var _util = __w_pdfjs_require__(1); +var _display_utils = __w_pdfjs_require__(6); +var _pattern_helper = __w_pdfjs_require__(12); +var _image_utils = __w_pdfjs_require__(13); +var _is_node = __w_pdfjs_require__(10); +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 = 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(); + }; +} +class CachedCanvases { + constructor(canvasFactory) { + this.canvasFactory = canvasFactory; + this.cache = Object.create(null); + } + 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 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) { + 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; + } + } + 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; + } + 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; + } + const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]); + const path = new Path2D(); + for (i = 0; count && i <= height; i++) { + let p = i * width1; + const end = p + width; + while (p < end && !points[p]) { + p++; + } + if (p === end) { + continue; + } + path.moveTo(p % width1, i); + const p0 = p; + let type = points[p]; + do { + const step = steps[type]; + do { + p += step; + } while (!points[p]); + const pp = points[p]; + if (pp !== 5 && pp !== 10) { + type = pp; + points[p] = 0; + } else { + type = pp & 0x33 * type >> 4; + points[p] &= type >> 2 | type << 2; + } + path.lineTo(p % width1, p / width1 | 0); + if (!points[p]) { + --count; + } + } while (p0 !== p); + --i; + } + data = null; + points = null; + const drawOutline = function (c) { + c.save(); + c.scale(1 / width, -1 / height); + c.translate(0, -height); + c.fill(path); + c.beginPath(); + c.restore(); + }; + return drawOutline; +} +class CanvasExtraState { + constructor(width, height) { + this.alphaIsShape = false; + this.fontSize = 0; + this.fontSizeScale = 1; + this.textMatrix = _util.IDENTITY_MATRIX; + this.textMatrixScale = 1; + 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.textRenderingMode = _util.TextRenderingMode.FILL; + this.textRise = 0; + this.fillColor = "#000000"; + this.strokeColor = "#000000"; + this.patternFill = false; + this.fillAlpha = 1; + this.strokeAlpha = 1; + this.lineWidth = 1; + this.activeSMask = null; + this.transferMaps = "none"; + this.startNewPathAndClipBox([0, 0, width, height]); + } + 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; + } + 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) { + 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; + 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; + const white = 0xffffffff; + const black = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff; + 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) { + 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) { + 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.convertBlackAndWhiteToRGBA)({ + src, + srcPos, + dest, + width, + height: thisChunkHeight, + nonBlackColor: 0 + })); + ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); + } +} +function copyCtxState(sourceCtx, destCtx) { + const properties = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", "lineJoin", "miterLimit", "globalCompositeOperation", "font", "filter"]; + for (const property of properties) { + 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 = 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; + } + if (!_is_node.isNodeJS) { + ctx.filter = "none"; + } +} +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, filterFactory, { + optionalContentConfig, + markedContentStack = null + }, annotationCanvasMap, pageColors) { + this.ctx = canvasCtx; + this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height); + this.stateStack = []; + this.pendingClip = null; + this.pendingEOFill = false; + this.res = null; + this.xobjs = null; + this.commonObjs = commonObjs; + this.objs = objs; + this.canvasFactory = canvasFactory; + this.filterFactory = filterFactory; + this.groupStack = []; + this.processingType3 = null; + this.baseTransform = null; + this.baseTransformStack = []; + this.groupLevel = 0; + this.smaskStack = []; + this.smaskCounter = 0; + this.tempSMask = null; + this.suspendedCtx = null; + this.contentVisible = true; + this.markedContentStack = markedContentStack || []; + this.optionalContentConfig = optionalContentConfig; + this.cachedCanvases = new CachedCanvases(this.canvasFactory); + this.cachedPatterns = new Map(); + this.annotationCanvasMap = annotationCanvasMap; + this.viewportScale = 1; + this.outputScaleX = 1; + this.outputScaleY = 1; + this.pageColors = pageColors; + this._cachedScaleForStroking = [-1, 0]; + this._cachedGetSinglePixelWidth = null; + this._cachedBitmapsMap = new Map(); + } + getObject(data, fallback = null) { + if (typeof data === "string") { + return data.startsWith("g_") ? this.commonObjs.get(data) : this.objs.get(data); + } + return fallback; + } + beginDrawing({ + transform, + viewport, + transparency = false, + background = null + }) { + const width = this.ctx.canvas.width; + const height = this.ctx.canvas.height; + const savedFillStyle = this.ctx.fillStyle; + this.ctx.fillStyle = background || "#ffffff"; + this.ctx.fillRect(0, 0, width, height); + this.ctx.fillStyle = savedFillStyle; + 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); + 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); + } + 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; + } + 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; + } + } + } + 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(); + 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(); + this.#drawFilter(); + } + #drawFilter() { + if (this.pageColors) { + const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background); + if (hcmFilterId !== "none") { + const savedFilter = this.ctx.filter; + this.ctx.filter = hcmFilterId; + this.ctx.drawImage(this.ctx.canvas, 0, 0); + this.ctx.filter = savedFilter; + } + } + } + _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 = paintWidth >= 16384 ? Math.floor(paintWidth / 2) - 1 || 1 : Math.ceil(paintWidth / 2); + widthScale /= paintWidth / newWidth; + } + if (heightScale > 2 && paintHeight > 1) { + newHeight = paintHeight >= 16384 ? Math.floor(paintHeight / 2) - 1 || 1 : 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; + cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), 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[0] = -1; + } + 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 (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[0], value[1]); + break; + case "CA": + this.current.strokeAlpha = value; + break; + case "ca": + this.current.fillAlpha = value; + this.ctx.globalAlpha = value; + 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.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(value); + break; + } + } + } + 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.checkSMaskState(); + this.pendingClip = null; + this._cachedScaleForStroking[0] = -1; + this._cachedGetSinglePixelWidth = null; + } + } + transform(a, b, c, d, e, f) { + this.ctx.transform(a, b, c, d, e, f); + this._cachedScaleForStroking[0] = -1; + 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; + } + } + if (isScalingMatrix) { + current.updateScalingPathMinMax(currentTransform, minMaxForBezier); + } + current.setCurrentPoint(x, y); + } + closePath() { + this.ctx.closePath(); + } + stroke(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, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.STROKE); + this.rescaleAndStroke(false); + ctx.restore(); + } else { + this.rescaleAndStroke(true); + } + } + if (consumePath) { + this.consumePath(this.current.getClippedPathBoundingBox()); + } + ctx.globalAlpha = this.current.fillAlpha; + } + closeStroke() { + this.closePath(); + this.stroke(); + } + fill(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"); + this.pendingEOFill = false; + } else { + ctx.fill(); + } + } + if (needRestore) { + ctx.restore(); + } + 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(); + 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"; + const typeface = fontObj.systemFontInfo?.css || `"${name}", ${fontObj.fallbackName}`; + let bold = "normal"; + if (fontObj.black) { + bold = "900"; + } else if (fontObj.bold) { + bold = "bold"; + } + const italic = fontObj.italic ? "italic" : "normal"; + 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.translate(x, y); + ctx.beginPath(); + addToPath(ctx, fontSize); + if (patternTransform) { + ctx.setTransform(...patternTransform); + } + 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) { + const paths = 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; + if (font.isInvalidPDFjsFont) { + const chars = []; + let width = 0; + for (const glyph of glyphs) { + chars.push(glyph.unicode); + width += glyph.width; + } + ctx.fillText(chars.join(""), 0, 0); + current.x += width * widthAdvanceScale * textHScale; + ctx.restore(); + this.compose(); + return undefined; + } + 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) { + 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 { + scaledX = x / fontSizeScale; + scaledY = 0; + } + 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; + } + } + 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[0] = -1; + 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(...fontMatrix); + this.executeOperatorList(operatorList); + this.restore(); + } + 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, this.filterFactory, { + optionalContentConfig: this.optionalContentConfig, + markedContentStack: this.markedContentStack + }); + } + }; + 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 = _util.Util.makeHexColor(r, g, b); + this.ctx.strokeStyle = color; + this.current.strokeColor = color; + } + setFillRGBColor(r, g, b) { + const color = _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.getObject(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 { + width, + height + } = ctx.canvas; + const [x0, y0, x1, y1] = _util.Util.getAxialAlignedBoundingBox([0, 0, width, height], inv); + 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(); + } + } + 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; + } + 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(); + } else { + this.ctx.restore(); + const currentMtx = (0, _display_utils.getCurrentTransform)(this.ctx); + this.restore(); + 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.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.save(); + this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY); + resetCtxToDefault(this.ctx); + } else { + resetCtxToDefault(this.ctx); + this.ctx.rect(rect[0], rect[1], width, height); + this.ctx.clip(); + this.endPath(); + } + } + this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height); + this.transform(...transform); + this.transform(...matrix); + } + endAnnotation() { + if (this.annotationCanvas) { + this.ctx.restore(); + this.#drawFilter(); + 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); + } + if (glyph.compiled) { + glyph.compiled(ctx); + return; + } + } + 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, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]); + 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, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.FILL) : fillColor; + maskCtx.fillRect(0, 0, width, height); + maskCtx.restore(); + 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); + } + applyTransferMapsToCanvas(ctx) { + if (this.current.transferMaps !== "none") { + ctx.filter = this.current.transferMaps; + ctx.drawImage(ctx.canvas, 0, 0); + ctx.filter = "none"; + } + return ctx.canvas; + } + applyTransferMapsToBitmap(imgData) { + if (this.current.transferMaps === "none") { + return imgData.bitmap; + } + const { + bitmap, + width, + height + } = imgData; + const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height); + const tmpCtx = tmpCanvas.context; + tmpCtx.filter = this.current.transferMaps; + tmpCtx.drawImage(bitmap, 0, 0); + tmpCtx.filter = "none"; + return tmpCanvas.canvas; + } + paintInlineImageXObject(imgData) { + if (!this.contentVisible) { + return; + } + const width = imgData.width; + const height = imgData.height; + const ctx = this.ctx; + this.save(); + if (!_is_node.isNodeJS) { + ctx.filter = "none"; + } + ctx.scale(1 / width, -1 / height); + let imgToPaint; + if (imgData.bitmap) { + imgToPaint = this.applyTransferMapsToBitmap(imgData); + } else 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); + imgToPaint = this.applyTransferMapsToCanvas(tmpCtx); + } + const scaled = this._scaleImage(imgToPaint, (0, _display_utils.getCurrentTransformInverse)(ctx)); + ctx.imageSmoothingEnabled = getImageSmoothingEnabled((0, _display_utils.getCurrentTransform)(ctx), imgData.interpolate); + drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height); + this.compose(); + this.restore(); + } + paintInlineImageXObjectGroup(imgData, map) { + if (!this.contentVisible) { + return; + } + const ctx = this.ctx; + let imgToPaint; + if (imgData.bitmap) { + imgToPaint = imgData.bitmap; + } else { + const w = imgData.width; + const h = imgData.height; + const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", w, h); + const tmpCtx = tmpCanvas.context; + putBinaryImageData(tmpCtx, imgData); + imgToPaint = this.applyTransferMapsToCanvas(tmpCtx); + } + for (const entry of map) { + ctx.save(); + ctx.transform(...entry.transform); + ctx.scale(1, -1); + drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1); + 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"); + } else { + ctx.clip(); + } + } + this.pendingClip = null; + } + this.current.startNewPathAndClipBox(this.current.clipBox); + ctx.beginPath(); + } + getSinglePixelWidth() { + if (!this._cachedGetSinglePixelWidth) { + const m = (0, _display_utils.getCurrentTransform)(this.ctx); + 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; + } + } + return this._cachedGetSinglePixelWidth; + } + getScaleForStroking() { + if (this._cachedScaleForStroking[0] === -1) { + const { + lineWidth + } = this.current; + const { + a, + b, + c, + d + } = this.ctx.getTransform(); + let scaleX, scaleY; + if (b === 0 && c === 0) { + const normX = Math.abs(a); + const normY = Math.abs(d); + if (normX === normY) { + if (lineWidth === 0) { + scaleX = scaleY = 1 / normX; + } else { + const scaledLineWidth = normX * lineWidth; + scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1; + } + } else 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 { + const absDet = Math.abs(a * d - b * c); + const normX = Math.hypot(a, b); + const normY = Math.hypot(c, d); + if (lineWidth === 0) { + scaleX = normY / absDet; + scaleY = normX / absDet; + } else { + const baseArea = lineWidth * absDet; + scaleX = normY > baseArea ? normY / baseArea : 1; + scaleY = normX > baseArea ? normX / baseArea : 1; + } + } + this._cachedScaleForStroking[0] = scaleX; + this._cachedScaleForStroking[1] = scaleY; + } + 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; + } + const dashes = ctx.getLineDash(); + if (saveRestore) { + ctx.save(); + } + ctx.scale(scaleX, scaleY); + if (dashes.length > 0) { + const scale = Math.max(scaleX, scaleY); + ctx.setLineDash(dashes.map(x => x / scale)); + ctx.lineDashOffset /= scale; + } + ctx.stroke(); + if (saveRestore) { + ctx.restore(); + } + } + 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]; + } +} + +/***/ }), +/* 12 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TilingPattern = exports.PathType = void 0; +exports.getShadingPattern = getShadingPattern; +var _util = __w_pdfjs_require__(1); +var _display_utils = __w_pdfjs_require__(6); +const PathType = { + FILL: "Fill", + STROKE: "Stroke", + SHADING: "Shading" +}; +exports.PathType = PathType; +function applyBoundingBox(ctx, bbox) { + if (!bbox) { + 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); + pattern.setTransform(domMatrix); + } 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; + const bytes = data.data, + rowSize = data.width * 4; + 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]; + const c2r = colors[c2], + c2g = colors[c2 + 1], + c2b = colors[c2 + 2]; + const c3r = colors[c3], + c3g = colors[c3 + 1], + c3b = colors[c3 + 2]; + const minY = Math.round(y1), + maxY = Math.round(y3); + 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 = (y1 - y) / (y1 - y2); + } + 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) { + 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"); + } +} +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 + }; + 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 (const figure of this._figures) { + drawFigure(data, figure, context); + } + tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE); + const canvas = tmpCanvas.canvas; + return { + canvas, + offsetX: offsetX - BORDER_SIZE * scaleX, + offsetY: offsetY - BORDER_SIZE * scaleY, + scaleX, + scaleY + }; + } + 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]]; + } + } + 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"); + } +} +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 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]; + this.xstep = IR[5]; + this.ystep = IR[6]; + this.paintType = IR[7]; + this.tilingType = IR[8]; + this.color = color; + this.ctx = ctx; + this.canvasGraphicsFactory = canvasGraphicsFactory; + this.baseTransform = baseTransform; + } + 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]; + 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); + } + 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"); + pattern.setTransform(domMatrix); + return pattern; + } +} +exports.TilingPattern = TilingPattern; + +/***/ }), +/* 13 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.convertBlackAndWhiteToRGBA = convertBlackAndWhiteToRGBA; +exports.convertToRGBA = convertToRGBA; +exports.grayToRGBA = grayToRGBA; +var _util = __w_pdfjs_require__(1); +function convertToRGBA(params) { + switch (params.kind) { + case _util.ImageKind.GRAYSCALE_1BPP: + return convertBlackAndWhiteToRGBA(params); + case _util.ImageKind.RGB_24BPP: + return convertRGBToRGBA(params); + } + return null; +} +function convertBlackAndWhiteToRGBA({ + src, + srcPos = 0, + dest, + width, + height, + nonBlackColor = 0xffffffff, + inverseDecode = false +}) { + const black = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff; + const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor]; + const widthInSource = width >> 3; + const widthRemainder = width & 7; + const srcLength = src.length; + dest = new Uint32Array(dest.buffer); + let destPos = 0; + 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 + }; +} +function convertRGBToRGBA({ + src, + srcPos = 0, + dest, + destPos = 0, + width, + height +}) { + let i = 0; + const len32 = src.length >> 2; + const src32 = new Uint32Array(src.buffer, srcPos, len32); + if (_util.FeatureTest.isLittleEndian) { + for (; i < len32 - 2; i += 3, destPos += 4) { + const s1 = src32[i]; + const s2 = src32[i + 1]; + const s3 = src32[i + 2]; + dest[destPos] = s1 | 0xff000000; + dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000; + dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000; + dest[destPos + 3] = s3 >>> 8 | 0xff000000; + } + for (let j = i * 4, jj = src.length; j < jj; j += 3) { + dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000; + } + } else { + for (; i < len32 - 2; i += 3, destPos += 4) { + const s1 = src32[i]; + const s2 = src32[i + 1]; + const s3 = src32[i + 2]; + dest[destPos] = s1 | 0xff; + dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff; + dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff; + dest[destPos + 3] = s3 << 8 | 0xff; + } + for (let j = i * 4, jj = src.length; j < jj; j += 3) { + dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff; + } + } + return { + srcPos, + destPos + }; +} +function grayToRGBA(src, dest) { + if (_util.FeatureTest.isLittleEndian) { + for (let i = 0, ii = src.length; i < ii; i++) { + dest[i] = src[i] * 0x10101 | 0xff000000; + } + } else { + for (let i = 0, ii = src.length; i < ii; i++) { + dest[i] = src[i] * 0x1010100 | 0x000000ff; + } + } +} + +/***/ }), +/* 14 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GlobalWorkerOptions = void 0; +const GlobalWorkerOptions = Object.create(null); +exports.GlobalWorkerOptions = GlobalWorkerOptions; +GlobalWorkerOptions.workerPort = null; +GlobalWorkerOptions.workerSrc = ""; + +/***/ }), +/* 15 */ +/***/ ((__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 = new _util.PromiseCapability(); + 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 = new _util.PromiseCapability(); + 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 = new _util.PromiseCapability(); + 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 = new _util.PromiseCapability(); + 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 = new _util.PromiseCapability(); + 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: new _util.PromiseCapability(), + 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?.()); + }).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?.(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?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]); + delete this.streamControllers[streamId]; + } + destroy() { + this.comObj.removeEventListener("message", this._onComObjOnMessage); + } +} +exports.MessageHandler = MessageHandler; + +/***/ }), +/* 16 */ +/***/ ((__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; + +/***/ }), +/* 17 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.OptionalContentConfig = void 0; +var _util = __w_pdfjs_require__(1); +var _murmurhash = __w_pdfjs_require__(8); +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 { + #cachedGetHash = null; + #groups = new Map(); + #initialHash = 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.#initialHash = this.getHash(); + } + #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.#cachedGetHash = null; + } + get hasInitialVisibility() { + return this.getHash() === this.#initialHash; + } + 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; + } + getHash() { + if (this.#cachedGetHash !== null) { + return this.#cachedGetHash; + } + const hash = new _murmurhash.MurmurHash3_64(); + for (const [id, group] of this.#groups) { + hash.update(`${id}:${group.visible}`); + } + return this.#cachedGetHash = hash.hexdigest(); + } +} +exports.OptionalContentConfig = OptionalContentConfig; + +/***/ }), +/* 18 */ +/***/ ((__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__(6); +class PDFDataTransportStream { + constructor({ + length, + initialData, + progressiveDone = false, + contentDispositionFilename = null, + disableRange = false, + disableStream = false + }, pdfDataRangeTransport) { + (0, _util.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.'); + this._queuedChunks = []; + this._progressiveDone = progressiveDone; + this._contentDispositionFilename = contentDispositionFilename; + if (initialData?.length > 0) { + const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer; + this._queuedChunks.push(buffer); + } + this._pdfDataRangeTransport = pdfDataRangeTransport; + this._isStreamingSupported = !disableStream; + this._isRangeSupported = !disableRange; + this._contentLength = length; + this._fullRequestReader = null; + this._rangeReaders = []; + this._pdfDataRangeTransport.addRangeListener((begin, chunk) => { + this._onReceiveData({ + begin, + chunk + }); + }); + this._pdfDataRangeTransport.addProgressListener((loaded, total) => { + this._onProgress({ + loaded, + total + }); + }); + this._pdfDataRangeTransport.addProgressiveReadListener(chunk => { + this._onReceiveData({ + chunk + }); + }); + this._pdfDataRangeTransport.addProgressiveDoneListener(() => { + this._onProgressiveDone(); + }); + this._pdfDataRangeTransport.transportReady(); + } + _onReceiveData({ + begin, + chunk + }) { + const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer; + if (begin === undefined) { + if (this._fullRequestReader) { + this._fullRequestReader._enqueue(buffer); + } else { + this._queuedChunks.push(buffer); + } + } else { + const found = this._rangeReaders.some(function (rangeReader) { + if (rangeReader._begin !== begin) { + return false; + } + rangeReader._enqueue(buffer); + return true; + }); + (0, _util.assert)(found, "_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found."); + } + } + get _progressiveDataLength() { + return this._fullRequestReader?._loaded ?? 0; + } + _onProgress(evt) { + if (evt.total === undefined) { + this._rangeReaders[0]?.onProgress?.({ + loaded: evt.loaded + }); + } else { + this._fullRequestReader?.onProgress?.({ + loaded: evt.loaded, + total: evt.total + }); + } + } + _onProgressiveDone() { + 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) { + 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 = 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; + } + _enqueue(chunk) { + if (this._done) { + return; + } + 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 = new _util.PromiseCapability(); + 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; + this._queuedChunk = null; + this._requests = []; + this._done = false; + this.onProgress = null; + } + _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.length = 0; + } + this._done = true; + this._stream._removeRangeReader(this); + } + get isStreamingSupported() { + return false; + } + async read() { + if (this._queuedChunk) { + const chunk = this._queuedChunk; + this._queuedChunk = null; + return { + value: chunk, + done: false + }; + } + if (this._done) { + return { + value: undefined, + done: true + }; + } + const requestCapability = new _util.PromiseCapability(); + 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; + this._stream._removeRangeReader(this); + } +} + +/***/ }), +/* 19 */ +/***/ ((__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 walk(node) { + if (!node) { + return; + } + 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 (str !== null) { + items.push({ + str + }); + } + 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; + +/***/ }), +/* 20 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.NodeStandardFontDataFactory = exports.NodeFilterFactory = exports.NodeCanvasFactory = exports.NodeCMapReaderFactory = void 0; +var _base_factory = __w_pdfjs_require__(7); +; +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)); + }); + }); +}; +class NodeFilterFactory extends _base_factory.BaseFilterFactory {} +exports.NodeFilterFactory = NodeFilterFactory; +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 + }; + }); + } +} +exports.NodeCMapReaderFactory = NodeCMapReaderFactory; +class NodeStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory { + _fetchData(url) { + return fetchData(url); + } +} +exports.NodeStandardFontDataFactory = NodeStandardFontDataFactory; + +/***/ }), +/* 21 */ +/***/ ((__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__(22); +; +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) { + 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 = new _util.PromiseCapability(); + this._headersCapability = new _util.PromiseCapability(); + } + 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 = new _util.PromiseCapability(); + return this.read(); + } + this._loaded += chunk.length; + 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 = new _util.PromiseCapability(); + 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 = new _util.PromiseCapability(); + return this.read(); + } + this._loaded += chunk.length; + 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 (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 + })); + } +} + +/***/ }), +/* 22 */ +/***/ ((__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__(23); +var _display_utils = __w_pdfjs_require__(6); +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 {} + } + 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; +} + +/***/ }), +/* 23 */ +/***/ ((__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 {} + } + 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].replaceAll(/\\(.)/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.replaceAll(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g, function (matches, charset, encoding, text) { + if (encoding === "q" || encoding === "Q") { + text = text.replaceAll("_", " "); + text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) { + return String.fromCharCode(parseInt(hex, 16)); + }); + return textdecode(charset, text); + } + try { + text = atob(text); + } catch {} + return textdecode(charset, text); + }); + } + return ""; +} + +/***/ }), +/* 24 */ +/***/ ((__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__(22); +; +const OK_RESPONSE = 200; +const PARTIAL_CONTENT_RESPONSE = 206; +function getArrayBuffer(xhr) { + const data = xhr.response; + if (typeof data !== "string") { + return data; + } + return (0, _util.stringToBytes)(data).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.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 = new XMLHttpRequest(); + 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 (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 = new _util.PromiseCapability(); + 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 = new _util.PromiseCapability(); + 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 = new _util.PromiseCapability(); + 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(); + } +} + +/***/ }), +/* 25 */ +/***/ ((__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__(22); +; +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 (value === undefined) { + continue; + } + headers.append(property, value); + } + return headers; +} +function getArrayBuffer(val) { + if (val instanceof Uint8Array) { + return val.buffer; + } + if (val instanceof ArrayBuffer) { + return val; + } + (0, _util.warn)(`getArrayBuffer - unexpected data format: ${val}`); + return new Uint8Array(val).buffer; +} +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) { + 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 = new _util.PromiseCapability(); + 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; + this.onProgress?.({ + loaded: this._loaded, + total: this._contentLength + }); + return { + value: getArrayBuffer(value), + done: false + }; + } + cancel(reason) { + 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 = new _util.PromiseCapability(); + 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; + this.onProgress?.({ + loaded: this._loaded + }); + return { + value: getArrayBuffer(value), + done: false + }; + } + cancel(reason) { + this._reader?.cancel(reason); + this._abortController.abort(); + } +} + +/***/ }), +/* 26 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TextLayerRenderTask = void 0; +exports.renderTextLayer = renderTextLayer; +exports.updateTextLayer = updateTextLayer; +var _util = __w_pdfjs_require__(1); +var _display_utils = __w_pdfjs_require__(6); +const MAX_TEXT_DIVS_TO_RENDER = 100000; +const DEFAULT_FONT_SIZE = 30; +const DEFAULT_FONT_ASCENT = 0.8; +const ascentCache = new Map(); +function getCtx(size, isOffscreenCanvasSupported) { + let ctx; + if (isOffscreenCanvasSupported && _util.FeatureTest.isOffscreenCanvasSupported) { + ctx = new OffscreenCanvas(size, size).getContext("2d", { + alpha: false + }); + } else { + const canvas = document.createElement("canvas"); + canvas.width = canvas.height = size; + ctx = canvas.getContext("2d", { + alpha: false + }); + } + return ctx; +} +function getAscent(fontFamily, isOffscreenCanvasSupported) { + const cachedAscent = ascentCache.get(fontFamily); + if (cachedAscent) { + return cachedAscent; + } + const ctx = getCtx(DEFAULT_FONT_SIZE, isOffscreenCanvasSupported); + ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`; + const metrics = ctx.measureText(""); + let ascent = metrics.fontBoundingBoxAscent; + let descent = Math.abs(metrics.fontBoundingBoxDescent); + if (ascent) { + const ratio = ascent / (ascent + descent); + ascentCache.set(fontFamily, ratio); + ctx.canvas.width = ctx.canvas.height = 0; + 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.canvas.width = ctx.canvas.height = 0; + 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) { + const textDiv = document.createElement("span"); + const textDivProperties = { + angle: 0, + canvasWidth: 0, + hasText: geom.str !== "", + hasEOL: geom.hasEOL, + fontSize: 0 + }; + task._textDivs.push(textDiv); + const tx = _util.Util.transform(task._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, task._isOffscreenCanvasSupported); + 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); + } + const scaleFactorStr = "calc(var(--scale-factor)*"; + const divStyle = textDiv.style; + if (task._container === task._rootContainer) { + divStyle.left = `${(100 * left / task._pageWidth).toFixed(2)}%`; + divStyle.top = `${(100 * top / task._pageHeight).toFixed(2)}%`; + } else { + divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`; + divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`; + } + divStyle.fontSize = `${scaleFactorStr}${fontHeight.toFixed(2)}px)`; + divStyle.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) { + 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) { + textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width; + } + task._textDivProperties.set(textDiv, textDivProperties); + if (task._isReadableStream) { + task._layoutText(textDiv); + } +} +function layout(params) { + const { + div, + scale, + properties, + ctx, + prevFontSize, + prevFontFamily + } = params; + const { + style + } = div; + let transform = ""; + if (properties.canvasWidth !== 0 && properties.hasText) { + const { + fontFamily + } = style; + const { + canvasWidth, + fontSize + } = properties; + if (prevFontSize !== fontSize || prevFontFamily !== fontFamily) { + ctx.font = `${fontSize * scale}px ${fontFamily}`; + params.prevFontSize = fontSize; + params.prevFontFamily = fontFamily; + } + const { + width + } = ctx.measureText(div.textContent); + if (width > 0) { + transform = `scaleX(${canvasWidth * scale / width})`; + } + } + if (properties.angle !== 0) { + transform = `rotate(${properties.angle}deg) ${transform}`; + } + if (transform.length > 0) { + style.transform = transform; + } +} +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) { + capability.resolve(); + return; + } + if (!task._isReadableStream) { + for (const textDiv of textDivs) { + task._layoutText(textDiv); + } + } + capability.resolve(); +} +class TextLayerRenderTask { + constructor({ + textContentSource, + container, + viewport, + textDivs, + textDivProperties, + textContentItemsStr, + isOffscreenCanvasSupported + }) { + this._textContentSource = textContentSource; + this._isReadableStream = textContentSource instanceof ReadableStream; + this._container = this._rootContainer = container; + this._textDivs = textDivs || []; + this._textContentItemsStr = textContentItemsStr || []; + this._isOffscreenCanvasSupported = isOffscreenCanvasSupported; + this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled; + this._reader = null; + this._textDivProperties = textDivProperties || new WeakMap(); + this._canceled = false; + this._capability = new _util.PromiseCapability(); + this._layoutTextParams = { + prevFontSize: null, + prevFontFamily: null, + div: null, + scale: viewport.scale * (globalThis.devicePixelRatio || 1), + properties: null, + ctx: getCtx(0, isOffscreenCanvasSupported) + }; + const { + pageWidth, + pageHeight, + pageX, + pageY + } = viewport.rawDims; + this._transform = [1, 0, 0, -1, -pageX, pageY + pageHeight]; + this._pageWidth = pageWidth; + this._pageHeight = pageHeight; + (0, _display_utils.setLayerDimensions)(container, viewport); + this._capability.promise.finally(() => { + this._layoutTextParams = 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; + } + this._capability.reject(new _util.AbortException("TextLayer task cancelled.")); + } + _processItems(items, styleCache) { + for (const item of items) { + if (item.str === undefined) { + if (item.type === "beginMarkedContentProps" || item.type === "beginMarkedContent") { + const parent = this._container; + this._container = document.createElement("span"); + this._container.classList.add("markedContent"); + if (item.id !== null) { + this._container.setAttribute("id", `${item.id}`); + } + parent.append(this._container); + } else if (item.type === "endMarkedContent") { + this._container = this._container.parentNode; + } + continue; + } + this._textContentItemsStr.push(item.str); + appendText(this, item, styleCache); + } + } + _layoutText(textDiv) { + const textDivProperties = this._layoutTextParams.properties = this._textDivProperties.get(textDiv); + this._layoutTextParams.div = textDiv; + layout(this._layoutTextParams); + if (textDivProperties.hasText) { + this._container.append(textDiv); + } + if (textDivProperties.hasEOL) { + const br = document.createElement("br"); + br.setAttribute("role", "presentation"); + this._container.append(br); + } + } + _render() { + const capability = new _util.PromiseCapability(); + let styleCache = Object.create(null); + if (this._isReadableStream) { + 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._textContentSource.getReader(); + pump(); + } else if (this._textContentSource) { + const { + items, + styles + } = this._textContentSource; + this._processItems(items, styles); + capability.resolve(); + } else { + throw new Error('No "textContentSource" parameter specified.'); + } + capability.promise.then(() => { + styleCache = null; + render(this); + }, this._capability.reject); + } +} +exports.TextLayerRenderTask = TextLayerRenderTask; +function renderTextLayer(params) { + if (!params.textContentSource && (params.textContent || params.textContentStream)) { + (0, _display_utils.deprecated)("The TextLayerRender `textContent`/`textContentStream` parameters " + "will be removed in the future, please use `textContentSource` instead."); + params.textContentSource = params.textContent || params.textContentStream; + } + const { + container, + viewport + } = params; + const style = getComputedStyle(container); + const visibility = style.getPropertyValue("visibility"); + const scaleFactor = parseFloat(style.getPropertyValue("--scale-factor")); + if (visibility === "visible" && (!scaleFactor || Math.abs(scaleFactor - viewport.scale) > 1e-5)) { + console.error("The `--scale-factor` CSS-variable must be set, " + "to the same value as `viewport.scale`, " + "either on the `container`-element itself or higher up in the DOM."); + } + const task = new TextLayerRenderTask(params); + task._render(); + return task; +} +function updateTextLayer({ + container, + viewport, + textDivs, + textDivProperties, + isOffscreenCanvasSupported, + mustRotate = true, + mustRescale = true +}) { + if (mustRotate) { + (0, _display_utils.setLayerDimensions)(container, { + rotation: viewport.rotation + }); + } + if (mustRescale) { + const ctx = getCtx(0, isOffscreenCanvasSupported); + const scale = viewport.scale * (globalThis.devicePixelRatio || 1); + const params = { + prevFontSize: null, + prevFontFamily: null, + div: null, + scale, + properties: null, + ctx + }; + for (const div of textDivs) { + params.properties = textDivProperties.get(div); + params.div = div; + layout(params); + } + } +} + +/***/ }), +/* 27 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationEditorLayer = void 0; +var _util = __w_pdfjs_require__(1); +var _editor = __w_pdfjs_require__(4); +var _tools = __w_pdfjs_require__(5); +var _freetext = __w_pdfjs_require__(28); +var _ink = __w_pdfjs_require__(33); +var _display_utils = __w_pdfjs_require__(6); +class AnnotationEditorLayer { + #accessibilityManager; + #allowClick = false; + #annotationLayer = null; + #boundPointerup = this.pointerup.bind(this); + #boundPointerdown = this.pointerdown.bind(this); + #editors = new Map(); + #hadPointerDown = false; + #isCleaningUp = false; + #isDisabling = 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.pageIndex = options.pageIndex; + this.div = options.div; + this.#accessibilityManager = options.accessibilityManager; + this.#annotationLayer = options.annotationLayer; + this.viewport = options.viewport; + this.#uiManager.addLayer(this); + } + get isEmpty() { + return this.#editors.size === 0; + } + 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(); + if (mode !== _util.AnnotationEditorType.NONE) { + this.div.classList.toggle("freeTextEditing", mode === _util.AnnotationEditorType.FREETEXT); + this.div.classList.toggle("inkEditing", mode === _util.AnnotationEditorType.INK); + this.div.hidden = false; + } + } + addInkEditorIfNeeded(isCommitting) { + if (!isCommitting && this.#uiManager.getMode() !== _util.AnnotationEditorType.INK) { + return; + } + if (!isCommitting) { + for (const editor of this.#editors.values()) { + if (editor.isEmpty()) { + editor.setInBackground(); + return; + } + } + } + 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"; + const annotationElementIds = new Set(); + for (const editor of this.#editors.values()) { + editor.enableEditing(); + if (editor.annotationElementId) { + annotationElementIds.add(editor.annotationElementId); + } + } + if (!this.#annotationLayer) { + return; + } + const editables = this.#annotationLayer.getEditableAnnotations(); + for (const editable of editables) { + editable.hide(); + if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) { + continue; + } + if (annotationElementIds.has(editable.data.id)) { + continue; + } + const editor = this.deserialize(editable); + if (!editor) { + continue; + } + this.addOrRebuild(editor); + editor.enableEditing(); + } + } + disable() { + this.#isDisabling = true; + this.div.style.pointerEvents = "none"; + const hiddenAnnotationIds = new Set(); + for (const editor of this.#editors.values()) { + editor.disableEditing(); + if (!editor.annotationElementId || editor.serialize() !== null) { + hiddenAnnotationIds.add(editor.annotationElementId); + continue; + } + this.getEditableAnnotation(editor.annotationElementId)?.show(); + editor.remove(); + } + if (this.#annotationLayer) { + const editables = this.#annotationLayer.getEditableAnnotations(); + for (const editable of editables) { + const { + id + } = editable.data; + if (hiddenAnnotationIds.has(id) || this.#uiManager.isDeletedAnnotationElement(id)) { + continue; + } + editable.show(); + } + } + this.#cleanup(); + if (this.isEmpty) { + this.div.hidden = true; + } + this.#isDisabling = false; + } + getEditableAnnotation(id) { + return this.#annotationLayer?.getEditableAnnotation(id) || null; + } + 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); + const { + annotationElementId + } = editor; + if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) { + this.#uiManager.removeDeletedAnnotationElement(editor); + } + } + detach(editor) { + this.#editors.delete(editor.id); + this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv); + if (!this.#isDisabling && editor.annotationElementId) { + this.#uiManager.addDeletedAnnotationElement(editor); + } + } + remove(editor) { + this.detach(editor); + this.#uiManager.removeEditor(editor); + 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; + } + if (editor.annotationElementId) { + this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId); + _editor.AnnotationEditor.deleteAnnotationElement(editor); + editor.annotationElementId = null; + } + this.attach(editor); + editor.parent?.detach(editor); + editor.setParent(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.#uiManager.addToAnnotationStorage(editor); + } + moveEditorInDOM(editor) { + this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true); + } + addOrRebuild(editor) { + if (editor.needsToBeRebuilt()) { + editor.rebuild(); + } else { + this.add(editor); + } + } + 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 ?? data.annotationEditorType) { + case _util.AnnotationEditorType.FREETEXT: + return _freetext.FreeTextEditor.deserialize(data, this, this.#uiManager); + case _util.AnnotationEditorType.INK: + return _ink.InkEditor.deserialize(data, this, this.#uiManager); + } + return null; + } + #createAndAddNewEditor(event) { + const id = this.getNextId(); + const editor = this.#createNewEditor({ + parent: this, + id, + x: event.offsetX, + y: event.offsetY, + uiManager: this.#uiManager + }); + 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 + } = _util.FeatureTest.platform; + 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 + } = _util.FeatureTest.platform; + 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.setParent(null); + editor.isAttachedToDOM = false; + editor.div.remove(); + } + 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({ + viewport + }) { + this.viewport = viewport; + (0, _display_utils.setLayerDimensions)(this.div, viewport); + (0, _tools.bindEvents)(this, this.div, ["dragover", "drop"]); + for (const editor of this.#uiManager.getEditors(this.pageIndex)) { + this.add(editor); + } + this.updateMode(); + } + update({ + viewport + }) { + this.#uiManager.commitOrRemove(); + this.viewport = viewport; + (0, _display_utils.setLayerDimensions)(this.div, { + rotation: viewport.rotation + }); + this.updateMode(); + } + get pageDimensions() { + const { + pageWidth, + pageHeight + } = this.viewport.rawDims; + return [pageWidth, pageHeight]; + } +} +exports.AnnotationEditorLayer = AnnotationEditorLayer; + +/***/ }), +/* 28 */ +/***/ ((__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__(5); +var _editor = __w_pdfjs_require__(4); +var _annotation_layer = __w_pdfjs_require__(29); +class FreeTextEditor extends _editor.AnnotationEditor { + #boundEditorDivBlur = this.editorDivBlur.bind(this); + #boundEditorDivFocus = this.editorDivFocus.bind(this); + #boundEditorDivInput = this.editorDivInput.bind(this); + #boundEditorDivKeydown = this.editorDivKeydown.bind(this); + #color; + #content = ""; + #editorDivId = `${this.id}-editor`; + #fontSize; + #initialData = null; + static _freeTextDefaultContent = ""; + static _l10nPromise; + static _internalPadding = 0; + static _defaultColor = null; + static _defaultFontSize = 10; + static get _keyboardManager() { + return (0, _util.shadow)(this, "_keyboardManager", new _tools.KeyboardManager([[["ctrl+s", "mac+meta+s", "ctrl+p", "mac+meta+p"], FreeTextEditor.prototype.commitOrRemove, true], [["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_text2_default_content", "editor_free_text2_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.parentScale); + this.#fontSize = size; + this.#setEditorDimensions(); + }; + const savedFontsize = this.#fontSize; + this.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.addCommands({ + cmd: () => { + this.#color = this.editorDiv.style.color = color; + }, + undo: () => { + this.#color = this.editorDiv.style.color = savedColor; + }, + mustExec: true, + type: _util.AnnotationEditorParamsType.FREETEXT_COLOR, + overwriteIfSameType: true, + keepUndo: true + }); + } + getInitialTranslation() { + const scale = this.parentScale; + return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale]; + } + 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.overlayDiv.classList.remove("enabled"); + this.editorDiv.contentEditable = true; + this.div.draggable = false; + this.div.removeAttribute("aria-activedescendant"); + this.editorDiv.addEventListener("keydown", this.#boundEditorDivKeydown); + this.editorDiv.addEventListener("focus", this.#boundEditorDivFocus); + this.editorDiv.addEventListener("blur", this.#boundEditorDivBlur); + this.editorDiv.addEventListener("input", this.#boundEditorDivInput); + } + disableEditMode() { + if (!this.isInEditMode()) { + return; + } + this.parent.setEditingState(true); + super.disableEditMode(); + this.overlayDiv.classList.add("enabled"); + this.editorDiv.contentEditable = false; + this.div.setAttribute("aria-activedescendant", this.#editorDivId); + this.div.draggable = true; + this.editorDiv.removeEventListener("keydown", this.#boundEditorDivKeydown); + this.editorDiv.removeEventListener("focus", this.#boundEditorDivFocus); + this.editorDiv.removeEventListener("blur", this.#boundEditorDivBlur); + this.editorDiv.removeEventListener("input", this.#boundEditorDivInput); + this.div.focus({ + preventScroll: true + }); + this.isEditing = false; + this.parent.div.classList.add("freeTextEditing"); + } + focusin(event) { + super.focusin(event); + if (event.target !== this.editorDiv) { + this.editorDiv.focus(); + } + } + onceAdded() { + if (this.width) { + this.#cheatInitialRect(); + return; + } + this.enableEditMode(); + this.editorDiv.focus(); + } + isEmpty() { + return !this.editorDiv || this.editorDiv.innerText.trim() === ""; + } + remove() { + this.isEditing = false; + this.parent.setEditingState(true); + this.parent.div.classList.add("freeTextEditing"); + super.remove(); + } + #extractText() { + const divs = this.editorDiv.getElementsByTagName("div"); + if (divs.length === 0) { + return this.editorDiv.innerText; + } + const buffer = []; + for (const div of divs) { + buffer.push(div.innerText.replace(/\r\n?|\n/, "")); + } + return buffer.join("\n"); + } + #setEditorDimensions() { + const [parentWidth, parentHeight] = this.parentDimensions; + let rect; + if (this.isAttachedToDOM) { + rect = this.div.getBoundingClientRect(); + } else { + const { + currentLayer, + div + } = this; + const savedDisplay = div.style.display; + div.style.display = "hidden"; + currentLayer.div.append(this.div); + rect = div.getBoundingClientRect(); + div.remove(); + div.style.display = savedDisplay; + } + this.width = rect.width / parentWidth; + this.height = rect.height / parentHeight; + } + commit() { + if (!this.isInEditMode()) { + return; + } + super.commit(); + this.disableEditMode(); + const savedText = this.#content; + const newText = this.#content = this.#extractText().trimEnd(); + if (savedText === newText) { + return; + } + const setText = text => { + this.#content = text; + if (!text) { + this.remove(); + return; + } + this.#setContent(); + this.rebuild(); + this.#setEditorDimensions(); + }; + this.addCommands({ + cmd: () => { + setText(newText); + }, + undo: () => { + setText(savedText); + }, + mustExec: false + }); + 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; + } + editorDivInput(event) { + this.parent.div.classList.toggle("freeTextEditing", this.isEmpty()); + } + 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.#editorDivId); + this.enableEditing(); + FreeTextEditor._l10nPromise.get("editor_free_text2_aria_label").then(msg => this.editorDiv?.setAttribute("aria-label", msg)); + FreeTextEditor._l10nPromise.get("free_text2_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.parentDimensions; + if (this.annotationElementId) { + const [tx] = this.getInitialTranslation(); + this.setAt(baseX * parentWidth, baseY * parentHeight, tx, tx); + } else { + this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight); + } + this.#setContent(); + this.div.draggable = true; + this.editorDiv.contentEditable = false; + } else { + this.div.draggable = false; + this.editorDiv.contentEditable = true; + } + return this.div; + } + #setContent() { + this.editorDiv.replaceChildren(); + if (!this.#content) { + return; + } + 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); + } + } + get contentDiv() { + return this.editorDiv; + } + static deserialize(data, parent, uiManager) { + let initialData = null; + if (data instanceof _annotation_layer.FreeTextAnnotationElement) { + const { + data: { + defaultAppearanceData: { + fontSize, + fontColor + }, + rect, + rotation, + id + }, + textContent, + parent: { + page: { + pageNumber + } + } + } = data; + if (!textContent || textContent.length === 0) { + return null; + } + initialData = data = { + annotationType: _util.AnnotationEditorType.FREETEXT, + color: Array.from(fontColor), + fontSize, + value: textContent.join("\n"), + pageIndex: pageNumber - 1, + rect, + rotation, + id, + deleted: false + }; + } + const editor = super.deserialize(data, parent, uiManager); + editor.#fontSize = data.fontSize; + editor.#color = _util.Util.makeHexColor(...data.color); + editor.#content = data.value; + editor.annotationElementId = data.id || null; + editor.#initialData = initialData; + return editor; + } + serialize(isForCopying = false) { + if (this.isEmpty()) { + return null; + } + if (this.deleted) { + return { + pageIndex: this.pageIndex, + id: this.annotationElementId, + deleted: true + }; + } + const padding = FreeTextEditor._internalPadding * this.parentScale; + const rect = this.getRect(padding, padding); + const color = _editor.AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.#color); + const serialized = { + annotationType: _util.AnnotationEditorType.FREETEXT, + color, + fontSize: this.#fontSize, + value: this.#content, + pageIndex: this.pageIndex, + rect, + rotation: this.rotation + }; + if (isForCopying) { + return serialized; + } + if (this.annotationElementId && !this.#hasElementChanged(serialized)) { + return null; + } + serialized.id = this.annotationElementId; + return serialized; + } + #hasElementChanged(serialized) { + const { + value, + fontSize, + color, + rect, + pageIndex + } = this.#initialData; + return serialized.value !== value || serialized.fontSize !== fontSize || serialized.rect.some((x, i) => Math.abs(x - rect[i]) >= 1) || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex; + } + #cheatInitialRect(delayed = false) { + if (!this.annotationElementId) { + return; + } + this.#setEditorDimensions(); + if (!delayed && (this.width === 0 || this.height === 0)) { + setTimeout(() => this.#cheatInitialRect(true), 0); + return; + } + const padding = FreeTextEditor._internalPadding * this.parentScale; + this.#initialData.rect = this.getRect(padding, padding); + } +} +exports.FreeTextEditor = FreeTextEditor; + +/***/ }), +/* 29 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.InkAnnotationElement = exports.FreeTextAnnotationElement = exports.AnnotationLayer = void 0; +var _util = __w_pdfjs_require__(1); +var _display_utils = __w_pdfjs_require__(6); +var _annotation_storage = __w_pdfjs_require__(3); +var _scripting_utils = __w_pdfjs_require__(30); +var _xfa_layer = __w_pdfjs_require__(31); +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); + case "Sig": + return new SignatureWidgetAnnotationElement(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.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.parent = parameters.parent; + if (isRenderable) { + this.container = this._createContainer(ignoreBorder); + } + if (createQuadrilaterals) { + this.quadrilaterals = this._createQuadrilaterals(ignoreBorder); + } + } + _createContainer(ignoreBorder) { + const { + data, + parent: { + page, + viewport + } + } = this; + const container = document.createElement("section"); + container.setAttribute("data-annotation-id", data.id); + container.style.zIndex = this.parent.zIndex++; + if (this.data.popupRef) { + container.setAttribute("aria-haspopup", "dialog"); + } + if (data.noRotate) { + container.classList.add("norotate"); + } + const { + pageWidth, + pageHeight, + pageX, + pageY + } = viewport.rawDims; + if (!data.rect || this instanceof PopupAnnotationElement) { + const { + rotation + } = data; + if (!data.hasOwnCanvas && rotation !== 0) { + this.setRotation(rotation, container); + } + return container; + } + const { + width, + height + } = getRectDims(data.rect); + 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] - pageX) / pageWidth}%`; + container.style.top = `${100 * (rect[1] - pageY) / 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 { + pageWidth, + pageHeight + } = this.parent.viewport.rawDims; + 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]; + 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; + let firstQuadRect = null; + 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)); + firstQuadRect ||= this.data.rect; + } + this.data.rect = savedRect; + this.firstQuadRect = firstQuadRect; + return quadrilaterals; + } + _createPopup() { + const { + container, + data + } = this; + container.setAttribute("aria-haspopup", "dialog"); + const popup = new PopupAnnotationElement({ + data: { + color: data.color, + titleObj: data.titleObj, + modificationDate: data.modificationDate, + contentsObj: data.contentsObj, + richText: data.richText, + parentRect: this.firstQuadRect || data.rect, + borderStyle: 0, + id: `popup_${data.id}`, + rotation: data.rotation + }, + parent: this.parent, + elements: [this] + }); + this.parent.div.append(popup.render()); + } + _renderQuadrilaterals(className) { + for (const quadrilateral of this.quadrilaterals) { + quadrilateral.classList.add(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; + } + 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 + }); + } + } + return fields; + } + for (const domElement of document.getElementsByName(name)) { + const { + exportValue + } = domElement; + const id = domElement.getAttribute("data-element-id"); + if (id === skipId) { + continue; + } + if (!GetElementsByNameSet.has(domElement)) { + continue; + } + fields.push({ + id, + exportValue, + domElement + }); + } + return fields; + } + show() { + if (this.container) { + this.container.hidden = false; + } + this.popup?.maybeShow(); + } + hide() { + if (this.container) { + this.container.hidden = true; + } + this.popup?.forceHide(); + } + getElementsToTriggerPopup() { + return this.quadrilaterals || this.container; + } + addHighlightArea() { + const triggers = this.getElementsToTriggerPopup(); + if (Array.isArray(triggers)) { + for (const element of triggers) { + element.classList.add("highlightArea"); + } + } else { + triggers.classList.add("highlightArea"); + } + } +} +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.attachment) { + this._bindAttachment(link, data.attachment); + isBound = true; + } else if (data.setOCGState) { + this.#bindSetOCGState(link, data.setOCGState); + 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; + } + if (data.resetForm) { + this._bindResetFormAction(link, data.resetForm); + isBound = true; + } else if (this.isTooltipOnly && !isBound) { + this._bindLink(link, ""); + isBound = true; + } + } + if (this.quadrilaterals) { + return this._renderQuadrilaterals("linkAnnotation").map((quadrilateral, index) => { + const linkElement = index === 0 ? link : link.cloneNode(); + quadrilateral.append(linkElement); + return quadrilateral; + }); + } + this.container.classList.add("linkAnnotation"); + if (isBound) { + this.container.append(link); + } + return this.container; + } + #setInternalLink() { + this.container.setAttribute("data-internal-link", ""); + } + _bindLink(link, destination) { + link.href = this.linkService.getDestinationHash(destination); + link.onclick = () => { + if (destination) { + this.linkService.goToDestination(destination); + } + return false; + }; + if (destination || destination === "") { + this.#setInternalLink(); + } + } + _bindNamedAction(link, action) { + link.href = this.linkService.getAnchorUrl(""); + link.onclick = () => { + this.linkService.executeNamedAction(action); + return false; + }; + this.#setInternalLink(); + } + _bindAttachment(link, attachment) { + link.href = this.linkService.getAnchorUrl(""); + link.onclick = () => { + this.downloadManager?.openOrDownloadData(this.container, attachment.content, attachment.filename); + return false; + }; + this.#setInternalLink(); + } + #bindSetOCGState(link, action) { + link.href = this.linkService.getAnchorUrl(""); + link.onclick = () => { + this.linkService.executeSetOCGState(action); + return false; + }; + this.#setInternalLink(); + } + _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 + } + }); + return false; + }; + } + if (!link.onclick) { + link.onclick = () => false; + } + this.#setInternalLink(); + } + _bindResetFormAction(link, resetForm) { + const otherClickAction = link.onclick; + if (!otherClickAction) { + link.href = this.linkService.getAnchorUrl(""); + } + this.#setInternalLink(); + if (!this._fieldObjects) { + (0, _util.warn)(`_bindResetFormAction - "resetForm" action not supported, ` + "ensure that the `fieldObjects` parameter is provided."); + if (!otherClickAction) { + link.onclick = () => false; + } + return; + } + link.onclick = () => { + 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.popupRef || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable + }); + } + render() { + this.container.classList.add("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.popupRef) { + this._createPopup(); + } + 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; + } + showElementAndHideCanvas(element) { + if (this.data.hasOwnCanvas) { + if (element.previousSibling?.nodeName === "CANVAS") { + element.previousSibling.hidden = true; + } + element.hidden = false; + } + } + _getKeyModifier(event) { + const { + isWin, + isMac + } = _util.FeatureTest.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); + } + } + } + _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; + const BORDER_SIZE = 2; + const roundToOneDecimal = x => Math.round(10 * x) / 10; + if (this.data.multiLine) { + const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE); + const numberOfLines = Math.round(height / (_util.LINE_FACTOR * fontSize)) || 1; + const lineHeight = height / numberOfLines; + computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / _util.LINE_FACTOR)); + } else { + const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE); + computedFontSize = Math.min(fontSize, roundToOneDecimal(height / _util.LINE_FACTOR)); + } + 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]; + } + } + _setRequired(element, isRequired) { + if (isRequired) { + element.setAttribute("required", true); + } else { + element.removeAttribute("required"); + } + 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 + }); + } + } + render() { + const storage = this.annotationStorage; + const id = this.data.id; + this.container.classList.add("textWidgetAnnotation"); + let element = null; + if (this.renderForms) { + const storedData = storage.getValue(id, { + value: this.data.fieldValue + }); + let textContent = storedData.value || ""; + const maxLen = storage.getValue(id, { + charLimit: this.data.maxLen + }).charLimit; + if (maxLen && textContent.length > maxLen) { + textContent = textContent.slice(0, maxLen); + } + let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join("\n") || null; + if (fieldFormattedValues && this.data.comb) { + fieldFormattedValues = fieldFormattedValues.replaceAll(/\s+/g, ""); + } + const elementData = { + userValue: textContent, + formattedValue: fieldFormattedValues, + lastCommittedValue: null, + commitKey: 1 + }; + if (this.data.multiLine) { + element = document.createElement("textarea"); + element.textContent = fieldFormattedValues ?? textContent; + if (this.data.doNotScroll) { + element.style.overflowY = "hidden"; + } + } else { + element = document.createElement("input"); + element.type = "text"; + element.setAttribute("value", fieldFormattedValues ?? textContent); + if (this.data.doNotScroll) { + element.style.overflowX = "hidden"; + } + } + if (this.data.hasOwnCanvas) { + element.hidden = true; + } + GetElementsByNameSet.add(element); + element.setAttribute("data-element-id", id); + element.disabled = this.data.readOnly; + element.name = this.data.baseFieldName || 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"); + elementData.formattedValue = null; + }); + 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 => { + const { + target + } = event; + if (elementData.userValue) { + target.value = elementData.userValue; + } + elementData.lastCommittedValue = target.value; + elementData.commitKey = 1; + }); + element.addEventListener("updatefromsandbox", jsEvent => { + this.showElementAndHideCanvas(jsEvent.target); + 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 => { + elementData.commitKey = 1; + let commitKey = -1; + if (event.key === "Escape") { + commitKey = 0; + } else if (event.key === "Enter" && !this.data.multiLine) { + commitKey = 2; + } else if (event.key === "Tab") { + elementData.commitKey = 3; + } + if (commitKey === -1) { + return; + } + const { + value + } = event.target; + if (elementData.lastCommittedValue === value) { + return; + } + elementData.lastCommittedValue = value; + 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 => { + if (!event.relatedTarget) { + return; + } + const { + value + } = event.target; + elementData.userValue = value; + if (elementData.lastCommittedValue !== value) { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + willCommit: true, + commitKey: elementData.commitKey, + selStart: event.target.selectionStart, + selEnd: event.target.selectionEnd + } + }); + } + _blurListener(event); + }); + if (this.data.actions?.Keystroke) { + element.addEventListener("beforeinput", event => { + elementData.lastCommittedValue = null; + 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 { + element = document.createElement("div"); + element.textContent = this.data.fieldValue; + element.style.verticalAlign = "middle"; + element.style.display = "table-cell"; + } + this._setTextStyle(element); + this._setBackgroundColor(element); + this._setDefaultPropertiesFromJS(element); + this.container.append(element); + return this.container; + } +} +class SignatureWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: !!parameters.data.hasOwnCanvas + }); + } +} +class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: parameters.renderForms + }); + } + 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 + }); + } + this.container.classList.add("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.baseFieldName || data.fieldName; + if (value) { + element.setAttribute("checked", true); + } + 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; + } + storage.setValue(checkbox.id, { + value: curChecked + }); + } + storage.setValue(id, { + value: checked + }); + }); + 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.classList.add("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.baseFieldName || 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 + }); + } + 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.classList.add("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.classList.add("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.baseFieldName || 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 = isExport => { + const name = isExport ? "value" : "textContent"; + const { + options, + multiple + } = selectElement; + if (!multiple) { + return options.selectedIndex === -1 ? null : options[options.selectedIndex][name]; + } + return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]); + }; + let selectedValues = getValue(false); + 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(true) + }); + selectedValues = getValue(false); + }, + 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(true), + items: getItems(event) + }); + selectedValues = getValue(false); + }, + clear(event) { + while (selectElement.length !== 0) { + selectElement.remove(0); + } + storage.setValue(id, { + value: null, + items: [] + }); + selectedValues = getValue(false); + }, + 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(true), + items: getItems(event) + }); + selectedValues = getValue(false); + }, + 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(true), + items: getItems(event) + }); + selectedValues = getValue(false); + }, + 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(true) + }); + selectedValues = getValue(false); + }, + editable(event) { + event.target.disabled = !event.detail.editable; + } + }; + this._dispatchEventFromSandbox(actions, jsEvent); + }); + selectElement.addEventListener("input", event => { + const exportValue = getValue(true); + storage.setValue(id, { + value: exportValue + }); + event.preventDefault(); + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value: selectedValues, + changeEx: exportValue, + willCommit: false, + 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"], ["input", "Validate"]], event => event.target.value); + } else { + selectElement.addEventListener("input", function (event) { + storage.setValue(id, { + value: getValue(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 { + data, + elements + } = parameters; + const isRenderable = !!(data.titleObj?.str || data.contentsObj?.str || data.richText?.str); + super(parameters, { + isRenderable + }); + this.elements = elements; + } + render() { + this.container.classList.add("popupAnnotation"); + const popup = new PopupElement({ + container: this.container, + color: this.data.color, + titleObj: this.data.titleObj, + modificationDate: this.data.modificationDate, + contentsObj: this.data.contentsObj, + richText: this.data.richText, + rect: this.data.rect, + parentRect: this.data.parentRect || null, + parent: this.parent, + elements: this.elements, + open: this.data.open + }); + const elementIds = []; + for (const element of this.elements) { + element.popup = popup; + elementIds.push(element.data.id); + element.addHighlightArea(); + } + this.container.setAttribute("aria-controls", elementIds.join(",")); + return this.container; + } +} +class PopupElement { + #dateTimePromise = null; + #boundHide = this.#hide.bind(this); + #boundShow = this.#show.bind(this); + #boundToggle = this.#toggle.bind(this); + #color = null; + #container = null; + #contentsObj = null; + #elements = null; + #parent = null; + #parentRect = null; + #pinned = false; + #popup = null; + #rect = null; + #richText = null; + #titleObj = null; + #wasVisible = false; + constructor({ + container, + color, + elements, + titleObj, + modificationDate, + contentsObj, + richText, + parent, + rect, + parentRect, + open + }) { + this.#container = container; + this.#titleObj = titleObj; + this.#contentsObj = contentsObj; + this.#richText = richText; + this.#parent = parent; + this.#color = color; + this.#rect = rect; + this.#parentRect = parentRect; + this.#elements = elements; + const dateObject = _display_utils.PDFDateString.toDateObject(modificationDate); + if (dateObject) { + this.#dateTimePromise = parent.l10n.get("annotation_date_string", { + date: dateObject.toLocaleDateString(), + time: dateObject.toLocaleTimeString() + }); + } + this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup()); + for (const element of this.trigger) { + element.addEventListener("click", this.#boundToggle); + element.addEventListener("mouseenter", this.#boundShow); + element.addEventListener("mouseleave", this.#boundHide); + } + this.#container.hidden = true; + if (open) { + this.#toggle(); + } + } + render() { + if (this.#popup) { + return; + } + const { + page: { + view + }, + viewport: { + rawDims: { + pageWidth, + pageHeight, + pageX, + pageY + } + } + } = this.#parent; + const popup = this.#popup = document.createElement("div"); + popup.className = "popup"; + if (this.#color) { + const baseColor = popup.style.outlineColor = _util.Util.makeHexColor(...this.#color); + if (CSS.supports("background-color", "color-mix(in srgb, red 30%, white)")) { + popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`; + } else { + const BACKGROUND_ENLIGHT = 0.7; + popup.style.backgroundColor = _util.Util.makeHexColor(...this.#color.map(c => Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c))); + } + } + const header = document.createElement("span"); + header.className = "header"; + const title = document.createElement("h1"); + header.append(title); + ({ + dir: title.dir, + str: title.textContent + } = this.#titleObj); + popup.append(header); + if (this.#dateTimePromise) { + const modificationDate = document.createElement("span"); + modificationDate.classList.add("popupDate"); + this.#dateTimePromise.then(localized => { + modificationDate.textContent = localized; + }); + header.append(modificationDate); + } + const contentsObj = this.#contentsObj; + const richText = this.#richText; + if (richText?.str && (!contentsObj?.str || contentsObj.str === richText.str)) { + _xfa_layer.XfaLayer.render({ + xfaHtml: richText.html, + intent: "richText", + div: popup + }); + popup.lastChild.classList.add("richText", "popupContent"); + } else { + const contents = this._formatContents(contentsObj); + popup.append(contents); + } + let useParentRect = !!this.#parentRect; + let rect = useParentRect ? this.#parentRect : this.#rect; + for (const element of this.#elements) { + if (!rect || _util.Util.intersect(element.data.rect, rect) !== null) { + rect = element.data.rect; + useParentRect = true; + break; + } + } + const normalizedRect = _util.Util.normalizeRect([rect[0], view[3] - rect[1] + view[1], rect[2], view[3] - rect[3] + view[1]]); + const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5; + const parentWidth = useParentRect ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION : 0; + const popupLeft = normalizedRect[0] + parentWidth; + const popupTop = normalizedRect[1]; + const { + style + } = this.#container; + style.left = `${100 * (popupLeft - pageX) / pageWidth}%`; + style.top = `${100 * (popupTop - pageY) / pageHeight}%`; + this.#container.append(popup); + } + _formatContents({ + str, + dir + }) { + const p = document.createElement("p"); + p.classList.add("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() { + this.#pinned = !this.#pinned; + if (this.#pinned) { + this.#show(); + this.#container.addEventListener("click", this.#boundToggle); + } else { + this.#hide(); + this.#container.removeEventListener("click", this.#boundToggle); + } + } + #show() { + if (!this.#popup) { + this.render(); + } + if (!this.isVisible) { + this.#container.hidden = false; + this.#container.style.zIndex = parseInt(this.#container.style.zIndex) + 1000; + } else if (this.#pinned) { + this.#container.classList.add("focused"); + } + } + #hide() { + this.#container.classList.remove("focused"); + if (this.#pinned) { + return; + } + this.#container.hidden = true; + this.#container.style.zIndex = parseInt(this.#container.style.zIndex) - 1000; + } + forceHide() { + this.#wasVisible = this.isVisible; + if (!this.#wasVisible) { + return; + } + this.#container.hidden = true; + } + maybeShow() { + if (!this.#wasVisible) { + return; + } + this.#wasVisible = false; + this.#container.hidden = false; + } + get isVisible() { + return this.#container.hidden === false; + } +} +class FreeTextAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.popupRef || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + this.textContent = parameters.data.textContent; + this.annotationEditorType = _util.AnnotationEditorType.FREETEXT; + } + render() { + this.container.classList.add("freeTextAnnotation"); + if (this.textContent) { + const content = document.createElement("div"); + content.classList.add("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.popupRef) { + this._createPopup(); + } + return this.container; + } +} +exports.FreeTextAnnotationElement = FreeTextAnnotationElement; +class LineAnnotationElement extends AnnotationElement { + #line = null; + constructor(parameters) { + const isRenderable = !!(parameters.data.popupRef || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + render() { + this.container.classList.add("lineAnnotation"); + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + const line = this.#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); + if (!data.popupRef) { + this._createPopup(); + } + return this.container; + } + getElementsToTriggerPopup() { + return this.#line; + } + addHighlightArea() { + this.container.classList.add("highlightArea"); + } +} +class SquareAnnotationElement extends AnnotationElement { + #square = null; + constructor(parameters) { + const isRenderable = !!(parameters.data.popupRef || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + render() { + this.container.classList.add("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.#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); + if (!data.popupRef) { + this._createPopup(); + } + return this.container; + } + getElementsToTriggerPopup() { + return this.#square; + } + addHighlightArea() { + this.container.classList.add("highlightArea"); + } +} +class CircleAnnotationElement extends AnnotationElement { + #circle = null; + constructor(parameters) { + const isRenderable = !!(parameters.data.popupRef || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + render() { + this.container.classList.add("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.#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); + if (!data.popupRef) { + this._createPopup(); + } + return this.container; + } + getElementsToTriggerPopup() { + return this.#circle; + } + addHighlightArea() { + this.container.classList.add("highlightArea"); + } +} +class PolylineAnnotationElement extends AnnotationElement { + #polyline = null; + constructor(parameters) { + const isRenderable = !!(parameters.data.popupRef || 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.classList.add(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.#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); + if (!data.popupRef) { + this._createPopup(polyline, data); + } + return this.container; + } + getElementsToTriggerPopup() { + return this.#polyline; + } + addHighlightArea() { + this.container.classList.add("highlightArea"); + } +} +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.popupRef || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + render() { + this.container.classList.add("caretAnnotation"); + if (!this.data.popupRef) { + this._createPopup(); + } + return this.container; + } +} +class InkAnnotationElement extends AnnotationElement { + #polylines = []; + constructor(parameters) { + const isRenderable = !!(parameters.data.popupRef || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + this.containerClassName = "inkAnnotation"; + this.svgElementName = "svg:polyline"; + this.annotationEditorType = _util.AnnotationEditorType.INK; + } + render() { + this.container.classList.add(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); + this.#polylines.push(polyline); + polyline.setAttribute("points", points); + polyline.setAttribute("stroke-width", data.borderStyle.width || 1); + polyline.setAttribute("stroke", "transparent"); + polyline.setAttribute("fill", "transparent"); + if (!data.popupRef) { + this._createPopup(polyline, data); + } + svg.append(polyline); + } + this.container.append(svg); + return this.container; + } + getElementsToTriggerPopup() { + return this.#polylines; + } + addHighlightArea() { + this.container.classList.add("highlightArea"); + } +} +exports.InkAnnotationElement = InkAnnotationElement; +class HighlightAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.popupRef || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + render() { + if (!this.data.popupRef) { + this._createPopup(); + } + if (this.quadrilaterals) { + return this._renderQuadrilaterals("highlightAnnotation"); + } + this.container.classList.add("highlightAnnotation"); + return this.container; + } +} +class UnderlineAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.popupRef || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + render() { + if (!this.data.popupRef) { + this._createPopup(); + } + if (this.quadrilaterals) { + return this._renderQuadrilaterals("underlineAnnotation"); + } + this.container.classList.add("underlineAnnotation"); + return this.container; + } +} +class SquigglyAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.popupRef || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + render() { + if (!this.data.popupRef) { + this._createPopup(); + } + if (this.quadrilaterals) { + return this._renderQuadrilaterals("squigglyAnnotation"); + } + this.container.classList.add("squigglyAnnotation"); + return this.container; + } +} +class StrikeOutAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.popupRef || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + render() { + if (!this.data.popupRef) { + this._createPopup(); + } + if (this.quadrilaterals) { + return this._renderQuadrilaterals("strikeoutAnnotation"); + } + this.container.classList.add("strikeoutAnnotation"); + return this.container; + } +} +class StampAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.popupRef || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + render() { + this.container.classList.add("stampAnnotation"); + if (!this.data.popupRef) { + this._createPopup(); + } + return this.container; + } +} +class FileAttachmentAnnotationElement extends AnnotationElement { + #trigger = null; + constructor(parameters) { + super(parameters, { + isRenderable: true + }); + const { + filename, + content + } = this.data.file; + this.filename = (0, _display_utils.getFilenameFromUrl)(filename, true); + this.content = content; + this.linkService.eventBus?.dispatch("fileattachmentannotation", { + source: this, + filename, + content + }); + } + render() { + this.container.classList.add("fileAttachmentAnnotation"); + let trigger; + if (this.data.hasAppearance) { + trigger = document.createElement("div"); + } else { + trigger = document.createElement("img"); + trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(this.data.name) ? "paperclip" : "pushpin"}.svg`; + } + trigger.classList.add("popupTriggerArea"); + trigger.addEventListener("dblclick", this._download.bind(this)); + this.#trigger = trigger; + if (!this.data.popupRef && (this.data.titleObj?.str || this.data.contentsObj?.str || this.data.richText)) { + this._createPopup(); + } + this.container.append(trigger); + return this.container; + } + getElementsToTriggerPopup() { + return this.#trigger; + } + addHighlightArea() { + this.container.classList.add("highlightArea"); + } + _download() { + this.downloadManager?.openOrDownloadData(this.container, this.content, this.filename); + } +} +class AnnotationLayer { + #accessibilityManager = null; + #annotationCanvasMap = null; + #editableAnnotations = new Map(); + constructor({ + div, + accessibilityManager, + annotationCanvasMap, + l10n, + page, + viewport + }) { + this.div = div; + this.#accessibilityManager = accessibilityManager; + this.#annotationCanvasMap = annotationCanvasMap; + this.l10n = l10n; + this.page = page; + this.viewport = viewport; + this.zIndex = 0; + const { + NullL10n + } = __w_pdfjs_require__(32); + this.l10n ||= NullL10n; + } + #appendElement(element, id) { + const contentElement = element.firstChild || element; + contentElement.id = `${_display_utils.AnnotationPrefix}${id}`; + this.div.append(element); + this.#accessibilityManager?.moveElementInDOM(this.div, element, contentElement, false); + } + async render(params) { + const { + annotations + } = params; + const layer = this.div; + (0, _display_utils.setLayerDimensions)(layer, this.viewport); + const popupToElements = new Map(); + const elementParams = { + data: null, + layer, + linkService: params.linkService, + downloadManager: params.downloadManager, + imageResourcesPath: params.imageResourcesPath || "", + renderForms: params.renderForms !== false, + svgFactory: new _display_utils.DOMSVGFactory(), + annotationStorage: params.annotationStorage || new _annotation_storage.AnnotationStorage(), + enableScripting: params.enableScripting === true, + hasJSActions: params.hasJSActions, + fieldObjects: params.fieldObjects, + parent: this, + elements: null + }; + for (const data of annotations) { + if (data.noHTML) { + continue; + } + const isPopupAnnotation = data.annotationType === _util.AnnotationType.POPUP; + if (!isPopupAnnotation) { + const { + width, + height + } = getRectDims(data.rect); + if (width <= 0 || height <= 0) { + continue; + } + } else { + const elements = popupToElements.get(data.id); + if (!elements) { + continue; + } + elementParams.elements = elements; + } + elementParams.data = data; + const element = AnnotationElementFactory.create(elementParams); + if (!element.isRenderable) { + continue; + } + if (!isPopupAnnotation && data.popupRef) { + const elements = popupToElements.get(data.popupRef); + if (!elements) { + popupToElements.set(data.popupRef, [element]); + } else { + elements.push(element); + } + } + if (element.annotationEditorType > 0) { + this.#editableAnnotations.set(element.data.id, element); + } + const rendered = element.render(); + if (data.hidden) { + rendered.style.visibility = "hidden"; + } + if (Array.isArray(rendered)) { + for (const renderedElement of rendered) { + this.#appendElement(renderedElement, data.id); + } + } else { + this.#appendElement(rendered, data.id); + } + } + this.#setAnnotationCanvasMap(); + await this.l10n.translate(layer); + } + update({ + viewport + }) { + const layer = this.div; + this.viewport = viewport; + (0, _display_utils.setLayerDimensions)(layer, { + rotation: viewport.rotation + }); + this.#setAnnotationCanvasMap(); + layer.hidden = false; + } + #setAnnotationCanvasMap() { + if (!this.#annotationCanvasMap) { + return; + } + const layer = this.div; + for (const [id, canvas] of this.#annotationCanvasMap) { + const element = layer.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); + } + } + this.#annotationCanvasMap.clear(); + } + getEditableAnnotations() { + return Array.from(this.#editableAnnotations.values()); + } + getEditableAnnotation(id) { + return this.#editableAnnotations.get(id); + } +} +exports.AnnotationLayer = AnnotationLayer; + +/***/ }), +/* 30 */ +/***/ ((__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; + +/***/ }), +/* 31 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XfaLayer = void 0; +var _xfa_text = __w_pdfjs_require__(19); +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; + +/***/ }), +/* 32 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.NullL10n = void 0; +exports.getL10nFallback = getL10nFallback; +const DEFAULT_L10N_STRINGS = { + of_pages: "of {{pagesCount}}", + page_of_pages: "({{pageNumber}} of {{pagesCount}})", + document_properties_kb: "{{size_kb}} KB ({{size_b}} bytes)", + document_properties_mb: "{{size_mb}} MB ({{size_b}} bytes)", + document_properties_date_string: "{{date}}, {{time}}", + document_properties_page_size_unit_inches: "in", + document_properties_page_size_unit_millimeters: "mm", + document_properties_page_size_orientation_portrait: "portrait", + document_properties_page_size_orientation_landscape: "landscape", + document_properties_page_size_name_a3: "A3", + document_properties_page_size_name_a4: "A4", + document_properties_page_size_name_letter: "Letter", + document_properties_page_size_name_legal: "Legal", + document_properties_page_size_dimension_string: "{{width}} × {{height}} {{unit}} ({{orientation}})", + document_properties_page_size_dimension_name_string: "{{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})", + document_properties_linearized_yes: "Yes", + document_properties_linearized_no: "No", + additional_layers: "Additional Layers", + page_landmark: "Page {{page}}", + thumb_page_title: "Page {{page}}", + thumb_page_canvas: "Thumbnail of Page {{page}}", + find_reached_top: "Reached top of document, continued from bottom", + find_reached_bottom: "Reached end of document, continued from top", + "find_match_count[one]": "{{current}} of {{total}} match", + "find_match_count[other]": "{{current}} of {{total}} matches", + "find_match_count_limit[one]": "More than {{limit}} match", + "find_match_count_limit[other]": "More than {{limit}} matches", + find_not_found: "Phrase not found", + page_scale_width: "Page Width", + page_scale_fit: "Page Fit", + page_scale_auto: "Automatic Zoom", + page_scale_actual: "Actual Size", + page_scale_percent: "{{scale}}%", + loading_error: "An error occurred while loading the PDF.", + invalid_file_error: "Invalid or corrupted PDF file.", + missing_file_error: "Missing PDF file.", + unexpected_response_error: "Unexpected server response.", + rendering_error: "An error occurred while rendering the page.", + annotation_date_string: "{{date}}, {{time}}", + printing_not_supported: "Warning: Printing is not fully supported by this browser.", + printing_not_ready: "Warning: The PDF is not fully loaded for printing.", + web_fonts_disabled: "Web fonts are disabled: unable to use embedded PDF fonts.", + free_text2_default_content: "Start typing…", + editor_free_text2_aria_label: "Text Editor", + editor_ink2_aria_label: "Draw Editor", + editor_ink_canvas_aria_label: "User-created image" +}; +{ + DEFAULT_L10N_STRINGS.print_progress_percent = "{{progress}}%"; +} +function getL10nFallback(key, args) { + switch (key) { + case "find_match_count": + key = `find_match_count[${args.total === 1 ? "one" : "other"}]`; + break; + case "find_match_count_limit": + key = `find_match_count_limit[${args.limit === 1 ? "one" : "other"}]`; + break; + } + return DEFAULT_L10N_STRINGS[key] || ""; +} +function formatL10nValue(text, args) { + if (!args) { + return text; + } + return text.replaceAll(/\{\{\s*(\w+)\s*\}\}/g, (all, name) => { + return name in args ? args[name] : "{{" + name + "}}"; + }); +} +const NullL10n = { + async getLanguage() { + return "en-us"; + }, + async getDirection() { + return "ltr"; + }, + async get(key, args = null, fallback = getL10nFallback(key, args)) { + return formatL10nValue(fallback, args); + }, + async translate(element) {} +}; +exports.NullL10n = NullL10n; + +/***/ }), +/* 33 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.InkEditor = void 0; +var _util = __w_pdfjs_require__(1); +var _editor = __w_pdfjs_require__(4); +var _annotation_layer = __w_pdfjs_require__(29); +var _tools = __w_pdfjs_require__(5); +const RESIZER_SIZE = 16; +class InkEditor extends _editor.AnnotationEditor { + #aspectRatio = 0; + #baseHeight = 0; + #baseWidth = 0; + #boundCanvasContextMenu = this.canvasContextMenu.bind(this); + #boundCanvasPointermove = this.canvasPointermove.bind(this); + #boundCanvasPointerleave = this.canvasPointerleave.bind(this); + #boundCanvasPointerup = this.canvasPointerup.bind(this); + #boundCanvasPointerdown = this.canvasPointerdown.bind(this); + #currentPath2D = new Path2D(); + #disableEditing = false; + #hasSomethingToDraw = false; + #isCanvasInitialized = false; + #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.allRawPaths = []; + 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_ink2_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.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.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.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(); + } + setParent(parent) { + if (!this.parent && parent) { + this._uiManager.removeShouldRescale(this); + } else if (this.parent && parent === null) { + this._uiManager.addShouldRescale(this); + } + super.setParent(parent); + } + onScaleChanging() { + const [parentWidth, parentHeight] = this.parentDimensions; + const width = this.width * parentWidth; + const height = this.height * parentHeight; + this.setDimensions(width, height); + } + enableEditMode() { + if (this.#disableEditing || this.canvas === null) { + return; + } + super.enableEditMode(); + this.div.draggable = false; + this.canvas.addEventListener("pointerdown", this.#boundCanvasPointerdown); + } + 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); + } + onceAdded() { + this.div.draggable = !this.isEmpty(); + } + isEmpty() { + return this.paths.length === 0 || this.paths.length === 1 && this.paths[0].length === 0; + } + #getInitialBBox() { + const { + parentRotation, + parentDimensions: [width, height] + } = this; + switch (parentRotation) { + case 90: + return [0, height, height, width]; + case 180: + return [width, height, width, height]; + case 270: + return [width, 0, height, width]; + default: + return [0, 0, width, height]; + } + } + #setStroke() { + const { + ctx, + color, + opacity, + thickness, + parentScale, + scaleFactor + } = this; + ctx.lineWidth = thickness * parentScale / scaleFactor; + ctx.lineCap = "round"; + ctx.lineJoin = "round"; + ctx.miterLimit = 10; + ctx.strokeStyle = `${color}${(0, _tools.opacityToHex)(opacity)}`; + } + #startDrawing(x, y) { + this.canvas.addEventListener("contextmenu", this.#boundCanvasContextMenu); + this.canvas.addEventListener("pointerleave", this.#boundCanvasPointerleave); + this.canvas.addEventListener("pointermove", this.#boundCanvasPointermove); + this.canvas.addEventListener("pointerup", this.#boundCanvasPointerup); + this.canvas.removeEventListener("pointerdown", this.#boundCanvasPointerdown); + 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.#hasSomethingToDraw = false; + this.#setStroke(); + this.#requestFrameCallback = () => { + this.#drawPoints(); + if (this.#requestFrameCallback) { + window.requestAnimationFrame(this.#requestFrameCallback); + } + }; + window.requestAnimationFrame(this.#requestFrameCallback); + } + #draw(x, y) { + const [lastX, lastY] = this.currentPath.at(-1); + if (this.currentPath.length > 1 && x === lastX && y === lastY) { + return; + } + const currentPath = this.currentPath; + let path2D = this.#currentPath2D; + currentPath.push([x, y]); + this.#hasSomethingToDraw = true; + if (currentPath.length <= 2) { + path2D.moveTo(...currentPath[0]); + path2D.lineTo(x, y); + return; + } + if (currentPath.length === 3) { + this.#currentPath2D = path2D = new Path2D(); + path2D.moveTo(...currentPath[0]); + } + this.#makeBezierCurve(path2D, ...currentPath.at(-3), ...currentPath.at(-2), x, y); + } + #endPath() { + if (this.currentPath.length === 0) { + return; + } + const lastPoint = this.currentPath.at(-1); + this.#currentPath2D.lineTo(...lastPoint); + } + #stopDrawing(x, y) { + this.#requestFrameCallback = null; + x = Math.min(Math.max(x, 0), this.canvas.width); + y = Math.min(Math.max(y, 0), this.canvas.height); + this.#draw(x, y); + this.#endPath(); + let bezier; + if (this.currentPath.length !== 1) { + bezier = this.#generateBezierPoints(); + } else { + const xy = [x, y]; + bezier = [[xy, xy.slice(), xy.slice(), xy]]; + } + const path2D = this.#currentPath2D; + const currentPath = this.currentPath; + this.currentPath = []; + this.#currentPath2D = new Path2D(); + const cmd = () => { + this.allRawPaths.push(currentPath); + this.paths.push(bezier); + this.bezierPath2D.push(path2D); + this.rebuild(); + }; + const undo = () => { + this.allRawPaths.pop(); + this.paths.pop(); + this.bezierPath2D.pop(); + if (this.paths.length === 0) { + this.remove(); + } else { + if (!this.canvas) { + this.#createCanvas(); + this.#createObserver(); + } + this.#fitToContent(); + } + }; + this.addCommands({ + cmd, + undo, + mustExec: true + }); + } + #drawPoints() { + if (!this.#hasSomethingToDraw) { + return; + } + this.#hasSomethingToDraw = false; + const thickness = Math.ceil(this.thickness * this.parentScale); + const lastPoints = this.currentPath.slice(-3); + const x = lastPoints.map(xy => xy[0]); + const y = lastPoints.map(xy => xy[1]); + const xMin = Math.min(...x) - thickness; + const xMax = Math.max(...x) + thickness; + const yMin = Math.min(...y) - thickness; + const yMax = Math.max(...y) + thickness; + const { + ctx + } = this; + ctx.save(); + ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); + for (const path of this.bezierPath2D) { + ctx.stroke(path); + } + ctx.stroke(this.#currentPath2D); + ctx.restore(); + } + #makeBezierCurve(path2D, x0, y0, x1, y1, x2, y2) { + const prevX = (x0 + x1) / 2; + const prevY = (y0 + y1) / 2; + const x3 = (x1 + x2) / 2; + const y3 = (y1 + y2) / 2; + path2D.bezierCurveTo(prevX + 2 * (x1 - prevX) / 3, prevY + 2 * (y1 - prevY) / 3, x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3, x3, y3); + } + #generateBezierPoints() { + const path = this.currentPath; + if (path.length <= 2) { + return [[path[0], path[0], path.at(-1), path.at(-1)]]; + } + const bezierPoints = []; + let i; + let [x0, y0] = path[0]; + for (i = 1; i < path.length - 2; i++) { + const [x1, y1] = path[i]; + const [x2, y2] = path[i + 1]; + const x3 = (x1 + x2) / 2; + const y3 = (y1 + y2) / 2; + const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3]; + const control2 = [x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3]; + bezierPoints.push([[x0, y0], control1, control2, [x3, y3]]); + [x0, y0] = [x3, y3]; + } + const [x1, y1] = path[i]; + const [x2, y2] = path[i + 1]; + const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3]; + const control2 = [x2 + 2 * (x1 - x2) / 3, y2 + 2 * (y1 - y2) / 3]; + bezierPoints.push([[x0, y0], control1, control2, [x2, y2]]); + return bezierPoints; + } + #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({ + preventScroll: true + }); + } + focusin(event) { + super.focusin(event); + this.enableEditMode(); + } + canvasPointerdown(event) { + if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) { + return; + } + this.setInForeground(); + event.preventDefault(); + if (event.type !== "mouse") { + this.div.focus(); + } + this.#startDrawing(event.offsetX, event.offsetY); + } + canvasContextMenu(event) { + event.preventDefault(); + } + canvasPointermove(event) { + event.preventDefault(); + this.#draw(event.offsetX, event.offsetY); + } + canvasPointerup(event) { + event.preventDefault(); + this.#endDrawing(event); + } + canvasPointerleave(event) { + this.#endDrawing(event); + } + #endDrawing(event) { + this.canvas.removeEventListener("pointerleave", this.#boundCanvasPointerleave); + this.canvas.removeEventListener("pointermove", this.#boundCanvasPointermove); + this.canvas.removeEventListener("pointerup", this.#boundCanvasPointerup); + this.canvas.addEventListener("pointerdown", this.#boundCanvasPointerdown); + setTimeout(() => { + this.canvas.removeEventListener("contextmenu", this.#boundCanvasContextMenu); + }, 10); + this.#stopDrawing(event.offsetX, event.offsetY); + this.addToAnnotationStorage(); + this.setInBackground(); + } + #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_ink2_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.parentDimensions; + 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.parentDimensions; + 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.parentDimensions; + this.width = width / parentWidth; + this.height = height / parentHeight; + if (this.#disableEditing) { + this.#setScaleFactor(width, height); + } + this.#setCanvasDims(); + this.#redraw(); + this.canvas.style.visibility = "visible"; + this.fixDims(); + } + #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; + } + static #toPDFCoordinates(points, rect, rotation) { + const [blX, blY, trX, trY] = rect; + switch (rotation) { + case 0: + for (let i = 0, ii = points.length; i < ii; i += 2) { + points[i] += blX; + points[i + 1] = trY - points[i + 1]; + } + break; + case 90: + for (let i = 0, ii = points.length; i < ii; i += 2) { + const x = points[i]; + points[i] = points[i + 1] + blX; + points[i + 1] = x + blY; + } + break; + case 180: + for (let i = 0, ii = points.length; i < ii; i += 2) { + points[i] = trX - points[i]; + points[i + 1] += blY; + } + break; + case 270: + for (let i = 0, ii = points.length; i < ii; i += 2) { + const x = points[i]; + points[i] = trX - points[i + 1]; + points[i + 1] = trY - x; + } + break; + default: + throw new Error("Invalid rotation"); + } + return points; + } + static #fromPDFCoordinates(points, rect, rotation) { + const [blX, blY, trX, trY] = rect; + switch (rotation) { + case 0: + for (let i = 0, ii = points.length; i < ii; i += 2) { + points[i] -= blX; + points[i + 1] = trY - points[i + 1]; + } + break; + case 90: + for (let i = 0, ii = points.length; i < ii; i += 2) { + const x = points[i]; + points[i] = points[i + 1] - blY; + points[i + 1] = x - blX; + } + break; + case 180: + for (let i = 0, ii = points.length; i < ii; i += 2) { + points[i] = trX - points[i]; + points[i + 1] -= blY; + } + break; + case 270: + for (let i = 0, ii = points.length; i < ii; i += 2) { + const x = points[i]; + points[i] = trY - points[i + 1]; + points[i + 1] = trX - x; + } + break; + default: + throw new Error("Invalid rotation"); + } + return points; + } + #serializePaths(s, tx, ty, rect) { + const paths = []; + const padding = this.thickness / 2; + const shiftX = s * tx + padding; + const shiftY = s * ty + padding; + for (const bezier of this.paths) { + const buffer = []; + const points = []; + for (let j = 0, jj = bezier.length; j < jj; j++) { + const [first, control1, control2, second] = bezier[j]; + const p10 = s * first[0] + shiftX; + const p11 = s * first[1] + shiftY; + const p20 = s * control1[0] + shiftX; + const p21 = s * control1[1] + shiftY; + const p30 = s * control2[0] + shiftX; + const p31 = s * control2[1] + shiftY; + const p40 = s * second[0] + shiftX; + const p41 = s * second[1] + shiftY; + if (j === 0) { + buffer.push(p10, p11); + points.push(p10, p11); + } + buffer.push(p20, p21, p30, p31, p40, p41); + points.push(p20, p21); + if (j === jj - 1) { + points.push(p40, p41); + } + } + paths.push({ + bezier: InkEditor.#toPDFCoordinates(buffer, rect, this.rotation), + points: InkEditor.#toPDFCoordinates(points, rect, this.rotation) + }); + } + return paths; + } + #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.parentScale) : 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.parentDimensions; + 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, uiManager) { + if (data instanceof _annotation_layer.InkAnnotationElement) { + return null; + } + const editor = super.deserialize(data, parent, uiManager); + editor.thickness = data.thickness; + editor.color = _util.Util.makeHexColor(...data.color); + editor.opacity = data.opacity; + const [pageWidth, pageHeight] = editor.pageDimensions; + const width = editor.width * pageWidth; + const height = editor.height * pageHeight; + const scaleFactor = editor.parentScale; + const padding = data.thickness / 2; + editor.#aspectRatio = width / height; + editor.#disableEditing = true; + editor.#realWidth = Math.round(width); + editor.#realHeight = Math.round(height); + const { + paths, + rect, + rotation + } = data; + for (let { + bezier + } of paths) { + bezier = InkEditor.#fromPDFCoordinates(bezier, rect, rotation); + const path = []; + editor.paths.push(path); + let p0 = scaleFactor * (bezier[0] - padding); + let p1 = scaleFactor * (bezier[1] - padding); + for (let i = 2, ii = bezier.length; i < ii; i += 6) { + const p10 = scaleFactor * (bezier[i] - padding); + const p11 = scaleFactor * (bezier[i + 1] - padding); + const p20 = scaleFactor * (bezier[i + 2] - padding); + const p21 = scaleFactor * (bezier[i + 3] - padding); + const p30 = scaleFactor * (bezier[i + 4] - padding); + const p31 = scaleFactor * (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 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.parentScale, this.translationX, this.translationY, rect), + pageIndex: this.pageIndex, + rect, + rotation: this.rotation + }; + } +} +exports.InkEditor = InkEditor; + +/***/ }), +/* 34 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SVGGraphics = void 0; +var _display_utils = __w_pdfjs_require__(6); +var _util = __w_pdfjs_require__(1); +var _is_node = __w_pdfjs_require__(10); +; +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; + } + } + 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; +class SVGGraphics { + 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; + } + } + getObject(data, fallback = null) { + if (typeof data === "string") { + return data.startsWith("g_") ? this.commonObjs.get(data) : this.objs.get(data); + } + return fallback; + } + 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, + height + } = this.viewport; + const inv = _util.Util.inverseTransform(this.transformMatrix); + const [x0, y0, x1, y1] = _util.Util.getAxialAlignedBoundingBox([0, 0, width, height], inv); + 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() { + this.current.element?.setAttributeNS(null, "fill-rule", "evenodd"); + this.fill(); + } + fillStroke() { + this.stroke(); + this.fill(); + } + eoFillStroke() { + 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 = this.getObject(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(img) { + const imgData = this.getObject(img.data, img); + if (imgData.bitmap) { + (0, _util.warn)("paintImageMaskXObject: ImageBitmap support is not implemented, " + "ensure that the `isOffscreenCanvasSupported` API parameter is disabled."); + return; + } + 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; + } +} +exports.SVGGraphics = SVGGraphics; + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // 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, "AbortException", ({ + enumerable: true, + get: function () { + return _util.AbortException; + } +})); +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, "FeatureTest", ({ + enumerable: true, + get: function () { + return _util.FeatureTest; + } +})); +Object.defineProperty(exports, "GlobalWorkerOptions", ({ + enumerable: true, + get: function () { + return _worker_options.GlobalWorkerOptions; + } +})); +Object.defineProperty(exports, "ImageKind", ({ + enumerable: true, + get: function () { + return _util.ImageKind; + } +})); +Object.defineProperty(exports, "InvalidPDFException", ({ + enumerable: true, + get: function () { + return _util.InvalidPDFException; + } +})); +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, "PromiseCapability", ({ + enumerable: true, + get: function () { + return _util.PromiseCapability; + } +})); +Object.defineProperty(exports, "RenderingCancelledException", ({ + enumerable: true, + get: function () { + return _display_utils.RenderingCancelledException; + } +})); +exports.SVGGraphics = void 0; +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, "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, "isDataScheme", ({ + enumerable: true, + get: function () { + return _display_utils.isDataScheme; + } +})); +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, "normalizeUnicode", ({ + enumerable: true, + get: function () { + return _util.normalizeUnicode; + } +})); +Object.defineProperty(exports, "renderTextLayer", ({ + enumerable: true, + get: function () { + return _text_layer.renderTextLayer; + } +})); +Object.defineProperty(exports, "setLayerDimensions", ({ + enumerable: true, + get: function () { + return _display_utils.setLayerDimensions; + } +})); +Object.defineProperty(exports, "shadow", ({ + enumerable: true, + get: function () { + return _util.shadow; + } +})); +Object.defineProperty(exports, "updateTextLayer", ({ + enumerable: true, + get: function () { + return _text_layer.updateTextLayer; + } +})); +Object.defineProperty(exports, "version", ({ + enumerable: true, + get: function () { + return _api.version; + } +})); +var _util = __w_pdfjs_require__(1); +var _api = __w_pdfjs_require__(2); +var _display_utils = __w_pdfjs_require__(6); +var _text_layer = __w_pdfjs_require__(26); +var _annotation_editor_layer = __w_pdfjs_require__(27); +var _tools = __w_pdfjs_require__(5); +var _annotation_layer = __w_pdfjs_require__(29); +var _worker_options = __w_pdfjs_require__(14); +var _xfa_layer = __w_pdfjs_require__(31); +const pdfjsVersion = '3.8.162'; +const pdfjsBuild = '2c74323e3'; +const SVGGraphics = (__w_pdfjs_require__(34).SVGGraphics); +exports.SVGGraphics = SVGGraphics; +})(); + +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=pdf.js.map \ No newline at end of file diff --git a/media/js/pdf/build/pdf.worker.js b/media/js/pdf/build/pdf.worker.js index ef11a8cdfa..c09d04eaa2 100644 --- a/media/js/pdf/build/pdf.worker.js +++ b/media/js/pdf/build/pdf.worker.js @@ -1,8 +1,8 @@ /** * @licstart The following is the entire license notice for the - * Javascript code in this page + * JavaScript code in this page * - * Copyright 2021 Mozilla Foundation + * Copyright 2023 Mozilla Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,6 +17,58555 @@ * limitations under the License. * * @licend The above is the entire license notice for the - * Javascript code in this page + * JavaScript code in this page */ -!function webpackUniversalModuleDefinition(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("pdfjs-dist/build/pdf.worker",[],t):"object"==typeof exports?exports["pdfjs-dist/build/pdf.worker"]=t():e["pdfjs-dist/build/pdf.worker"]=e.pdfjsWorker=t()}(this,(function(){return(()=>{"use strict";var e=[,(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.WorkerTask=t.WorkerMessageHandler=void 0;var a=r(2),i=r(5),n=r(7),s=r(71),o=r(4),c=r(99),l=r(100),h=r(9);class WorkerTask{constructor(e){this.name=e;this.terminated=!1;this._capability=(0,a.createPromiseCapability)()}get finished(){return this._capability.promise}finish(){this._capability.resolve()}terminate(){this.terminated=!0}ensureNotTerminated(){if(this.terminated)throw new Error("Worker task was terminated")}}t.WorkerTask=WorkerTask;class WorkerMessageHandler{static setup(e,t){let r=!1;e.on("test",(function wphSetupTest(t){if(r)return;r=!0;if(!(t instanceof Uint8Array)){e.send("test",null);return}const a=255===t[0];e.postMessageTransfers=a;e.send("test",{supportTransfers:a})}));e.on("configure",(function wphConfigure(e){(0,a.setVerbosityLevel)(e.verbosity)}));e.on("GetDocRequest",(function wphSetupDoc(e){return WorkerMessageHandler.createDocumentHandler(e,t)}))}static createDocumentHandler(e,t){let r,o=!1,u=null;const d=[],f=(0,a.getVerbosityLevel)(),g=e.apiVersion,p="2.10.377";if(g!==p)throw new Error(`The API version "${g}" does not match the Worker version "2.10.377".`);const m=[];for(const e in[])m.push(e);if(m.length)throw new Error("The `Array.prototype` contains unexpected enumerable properties: "+m.join(", ")+"; thus breaking e.g. `for...in` iteration of `Array`s.");if("undefined"==typeof ReadableStream)throw new Error("The browser/environment lacks native support for critical functionality used by the PDF.js library (e.g. `ReadableStream`); please use a `legacy`-build instead.");const b=e.docId,y=e.docBaseUrl,w=e.docId+"_worker";let S=new c.MessageHandler(w,b,t);S.postMessageTransfers=e.postMessageTransfers;function ensureNotTerminated(){if(o)throw new Error("Worker was terminated")}function startWorkerTask(e){d.push(e)}function finishWorkerTask(e){e.finish();const t=d.indexOf(e);d.splice(t,1)}async function loadDocument(e){await r.ensureDoc("checkHeader");await r.ensureDoc("parseStartXRef");await r.ensureDoc("parse",[e]);e||await r.ensureDoc("checkFirstPage");const t=await r.ensureDoc("isPureXfa");if(t){const e=new WorkerTask("loadXfaFonts");startWorkerTask(e);await Promise.all([r.loadXfaFonts(S,e).catch((e=>{})).then((()=>finishWorkerTask(e))),r.loadXfaImages()])}const[a,i]=await Promise.all([r.ensureDoc("numPages"),r.ensureDoc("fingerprints")]);return{numPages:a,fingerprints:i,htmlForXfa:t?await r.ensureDoc("htmlForXfa"):null}}function getPdfManager(e,t,r){const i=(0,a.createPromiseCapability)();let s;const o=e.source;if(o.data){try{s=new n.LocalPdfManager(b,o.data,o.password,t,r,y);i.resolve(s)}catch(e){i.reject(e)}return i.promise}let c,h=[];try{c=new l.PDFWorkerStream(S)}catch(e){i.reject(e);return i.promise}const d=c.getFullReader();d.headersReady.then((function(){if(!d.isRangeSupported)return;const e=o.disableAutoFetch||d.isStreamingSupported;s=new n.NetworkPdfManager(b,c,{msgHandler:S,password:o.password,length:d.contentLength,disableAutoFetch:e,rangeChunkSize:o.rangeChunkSize},t,r,y);for(let e=0;enull!==e)).reduce(((e,t)=>e.concat(t)),h);if(0===h.length)return t.bytes}const d=r instanceof i.Dict&&r.get("XFA")||[];let f=null;if(Array.isArray(d))for(let e=0,t=d.length;e{(0,a.isString)(t)&&(0,a.isString)(r)&&(e[t]=(0,a.stringToPDFString)(r))}));g={rootRef:n.trailer.getRaw("Root")||null,encryptRef:n.trailer.getRaw("Encrypt")||null,newRef:n.getNewRef(),infoRef:n.trailer.getRaw("Info")||null,info:e,fileIds:n.trailer.get("ID")||null,startXRef:c,filename:o}}n.resetNewRef();return(0,s.incrementalUpdate)({originalData:t.bytes,xrefInfo:g,newRefs:h,xref:n,datasetsRef:f,xfaData:u})}))}));S.on("GetOperatorList",(function wphSetupRenderPage(e,t){const i=e.pageIndex;r.getPage(i).then((function(r){const n=new WorkerTask(`GetOperatorList: page ${i}`);startWorkerTask(n);const s=f>=a.VerbosityLevel.INFOS?Date.now():0;r.getOperatorList({handler:S,sink:t,task:n,intent:e.intent,renderInteractiveForms:e.renderInteractiveForms,annotationStorage:e.annotationStorage}).then((function(e){finishWorkerTask(n);s&&(0,a.info)(`page=${i+1} - getOperatorList: time=${Date.now()-s}ms, len=${e.length}`);t.close()}),(function(e){finishWorkerTask(n);if(!n.terminated){S.send("UnsupportedFeature",{featureId:a.UNSUPPORTED_FEATURES.errorOperatorList});t.error(e)}}))}))}));S.on("GetTextContent",(function wphExtractText(e,t){const i=e.pageIndex;t.onPull=function(e){};t.onCancel=function(e){};r.getPage(i).then((function(r){const n=new WorkerTask("GetTextContent: page "+i);startWorkerTask(n);const s=f>=a.VerbosityLevel.INFOS?Date.now():0;r.extractTextContent({handler:S,task:n,sink:t,normalizeWhitespace:e.normalizeWhitespace,includeMarkedContent:e.includeMarkedContent,combineTextItems:e.combineTextItems}).then((function(){finishWorkerTask(n);s&&(0,a.info)(`page=${i+1} - getTextContent: time=`+(Date.now()-s)+"ms");t.close()}),(function(e){finishWorkerTask(n);n.terminated||t.error(e)}))}))}));S.on("GetStructTree",(function wphGetStructTree(e){return r.getPage(e.pageIndex).then((function(e){return r.ensure(e,"getStructTree")}))}));S.on("FontFallback",(function(e){return r.fontFallback(e.id,S)}));S.on("Cleanup",(function wphCleanup(e){return r.cleanup(!0)}));S.on("Terminate",(function wphTerminate(e){o=!0;const t=[];if(r){r.terminate(new a.AbortException("Worker was terminated."));const e=r.cleanup();t.push(e);r=null}else(0,i.clearPrimitiveCaches)();u&&u(new a.AbortException("Worker was terminated."));for(const e of d){t.push(e.finished);e.terminate()}return Promise.all(t).then((function(){S.destroy();S=null}))}));S.on("Ready",(function wphReady(t){!function setupDoc(e){function onSuccess(e){ensureNotTerminated();S.send("GetDoc",{pdfInfo:e})}function onFailure(e){ensureNotTerminated();if(e instanceof a.PasswordException){const t=new WorkerTask(`PasswordException: response ${e.code}`);startWorkerTask(t);S.sendWithPromise("PasswordRequest",e).then((function({password:e}){finishWorkerTask(t);r.updatePassword(e);pdfManagerReady()})).catch((function(){finishWorkerTask(t);S.send("DocException",e)}))}else e instanceof a.InvalidPDFException||e instanceof a.MissingPDFException||e instanceof a.UnexpectedResponseException||e instanceof a.UnknownErrorException?S.send("DocException",e):S.send("DocException",new a.UnknownErrorException(e.message,e.toString()))}function pdfManagerReady(){ensureNotTerminated();loadDocument(!1).then(onSuccess,(function(e){ensureNotTerminated();if(e instanceof h.XRefParseException){r.requestLoadedStream();r.onLoadedStream().then((function(){ensureNotTerminated();loadDocument(!0).then(onSuccess,onFailure)}))}else onFailure(e)}))}ensureNotTerminated();getPdfManager(e,{maxImageSize:e.maxImageSize,disableFontFace:e.disableFontFace,ignoreErrors:e.ignoreErrors,isEvalSupported:e.isEvalSupported,fontExtraProperties:e.fontExtraProperties,useSystemFonts:e.useSystemFonts,cMapUrl:e.cMapUrl,standardFontDataUrl:e.standardFontDataUrl},e.enableXfa).then((function(e){if(o){e.terminate(new a.AbortException("Worker was terminated."));throw new Error("Worker was terminated")}r=e;r.onLoadedStream().then((function(e){S.send("DataLoaded",{length:e.bytes.byteLength})}))})).then(pdfManagerReady,onFailure)}(e);e=null}));return w}static initializeFromPort(e){const t=new c.MessageHandler("worker","main",e);WorkerMessageHandler.setup(t,e);t.send("ready",null)}}t.WorkerMessageHandler=WorkerMessageHandler;"undefined"==typeof window&&!o.isNodeJS&&"undefined"!=typeof self&&function isMessagePort(e){return"function"==typeof e.postMessage&&"onmessage"in e}(self)&&WorkerMessageHandler.initializeFromPort(self)},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.arrayByteLength=arrayByteLength;t.arraysToBytes=function arraysToBytes(e){const t=e.length;if(1===t&&e[0]instanceof Uint8Array)return e[0];let r=0;for(let a=0;a>2]+a[(3&n)<<4|s>>4]+a[t+1>6:64]+a[t+2t});e.promise=new Promise((function(r,a){e.resolve=function(e){t=!0;r(e)};e.reject=function(e){t=!0;a(e)}}));return e};t.createValidAbsoluteUrl=function createValidAbsoluteUrl(e,t){if(!e)return null;try{const r=t?new URL(e,t):new URL(e);if(function _isValidProtocol(e){if(!e)return!1;switch(e.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}(r))return r}catch(e){}return null};t.escapeString=function escapeString(e){return e.replace(/([()\\\n\r])/g,(e=>"\n"===e?"\\n":"\r"===e?"\\r":`\\${e}`))};t.getModificationDate=function getModificationDate(e=new Date){return[e.getUTCFullYear().toString(),(e.getUTCMonth()+1).toString().padStart(2,"0"),e.getUTCDate().toString().padStart(2,"0"),e.getUTCHours().toString().padStart(2,"0"),e.getUTCMinutes().toString().padStart(2,"0"),e.getUTCSeconds().toString().padStart(2,"0")].join("")};t.getVerbosityLevel=function getVerbosityLevel(){return i};t.info=function info(e){i>=a.INFOS&&console.log(`Info: ${e}`)};t.isArrayBuffer=function isArrayBuffer(e){return"object"==typeof e&&null!==e&&void 0!==e.byteLength};t.isArrayEqual=function isArrayEqual(e,t){if(e.length!==t.length)return!1;for(let r=0,a=e.length;r>24&255,e>>16&255,e>>8&255,255&e)};t.stringToBytes=stringToBytes;t.stringToPDFString=function stringToPDFString(e){const t=e.length,r=[];if("þ"===e[0]&&"ÿ"===e[1])for(let a=2;a>8&255),String.fromCharCode(255&a))}return t.join("")};t.stringToUTF8String=function stringToUTF8String(e){return decodeURIComponent(escape(e))};t.unreachable=unreachable;t.utf8StringToString=function utf8StringToString(e){return unescape(encodeURIComponent(e))};t.warn=warn;t.VerbosityLevel=t.Util=t.UNSUPPORTED_FEATURES=t.UnknownErrorException=t.UnexpectedResponseException=t.TextRenderingMode=t.StreamType=t.PermissionFlag=t.PasswordResponses=t.PasswordException=t.PageActionEventType=t.OPS=t.MissingPDFException=t.IsLittleEndianCached=t.IsEvalSupportedCached=t.InvalidPDFException=t.ImageKind=t.IDENTITY_MATRIX=t.FormatError=t.FontType=t.FONT_IDENTITY_MATRIX=t.DocumentActionEventType=t.CMapCompressionType=t.BaseException=t.AnnotationType=t.AnnotationStateModelType=t.AnnotationReviewState=t.AnnotationReplyType=t.AnnotationMarkedState=t.AnnotationFlag=t.AnnotationFieldFlag=t.AnnotationBorderStyleType=t.AnnotationActionEventType=t.AbortException=void 0;r(3);t.IDENTITY_MATRIX=[1,0,0,1,0,0];t.FONT_IDENTITY_MATRIX=[.001,0,0,.001,0,0];t.PermissionFlag={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048};t.TextRenderingMode={FILL:0,STROKE:1,FILL_STROKE:2,INVISIBLE:3,FILL_ADD_TO_PATH:4,STROKE_ADD_TO_PATH:5,FILL_STROKE_ADD_TO_PATH:6,ADD_TO_PATH:7,FILL_STROKE_MASK:3,ADD_TO_PATH_FLAG:4};t.ImageKind={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3};t.AnnotationType={TEXT:1,LINK:2,FREETEXT:3,LINE:4,SQUARE:5,CIRCLE:6,POLYGON:7,POLYLINE:8,HIGHLIGHT:9,UNDERLINE:10,SQUIGGLY:11,STRIKEOUT:12,STAMP:13,CARET:14,INK:15,POPUP:16,FILEATTACHMENT:17,SOUND:18,MOVIE:19,WIDGET:20,SCREEN:21,PRINTERMARK:22,TRAPNET:23,WATERMARK:24,THREED:25,REDACT:26};t.AnnotationStateModelType={MARKED:"Marked",REVIEW:"Review"};t.AnnotationMarkedState={MARKED:"Marked",UNMARKED:"Unmarked"};t.AnnotationReviewState={ACCEPTED:"Accepted",REJECTED:"Rejected",CANCELLED:"Cancelled",COMPLETED:"Completed",NONE:"None"};t.AnnotationReplyType={GROUP:"Group",REPLY:"R"};t.AnnotationFlag={INVISIBLE:1,HIDDEN:2,PRINT:4,NOZOOM:8,NOROTATE:16,NOVIEW:32,READONLY:64,LOCKED:128,TOGGLENOVIEW:256,LOCKEDCONTENTS:512};t.AnnotationFieldFlag={READONLY:1,REQUIRED:2,NOEXPORT:4,MULTILINE:4096,PASSWORD:8192,NOTOGGLETOOFF:16384,RADIO:32768,PUSHBUTTON:65536,COMBO:131072,EDIT:262144,SORT:524288,FILESELECT:1048576,MULTISELECT:2097152,DONOTSPELLCHECK:4194304,DONOTSCROLL:8388608,COMB:16777216,RICHTEXT:33554432,RADIOSINUNISON:33554432,COMMITONSELCHANGE:67108864};t.AnnotationBorderStyleType={SOLID:1,DASHED:2,BEVELED:3,INSET:4,UNDERLINE:5};t.AnnotationActionEventType={E:"Mouse Enter",X:"Mouse Exit",D:"Mouse Down",U:"Mouse Up",Fo:"Focus",Bl:"Blur",PO:"PageOpen",PC:"PageClose",PV:"PageVisible",PI:"PageInvisible",K:"Keystroke",F:"Format",V:"Validate",C:"Calculate"};t.DocumentActionEventType={WC:"WillClose",WS:"WillSave",DS:"DidSave",WP:"WillPrint",DP:"DidPrint"};t.PageActionEventType={O:"PageOpen",C:"PageClose"};t.StreamType={UNKNOWN:"UNKNOWN",FLATE:"FLATE",LZW:"LZW",DCT:"DCT",JPX:"JPX",JBIG:"JBIG",A85:"A85",AHX:"AHX",CCF:"CCF",RLX:"RLX"};t.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"};const a={ERRORS:0,WARNINGS:1,INFOS:5};t.VerbosityLevel=a;t.CMapCompressionType={NONE:0,BINARY:1,STREAM:2};t.OPS={dependency:1,setLineWidth:2,setLineCap:3,setLineJoin:4,setMiterLimit:5,setDash:6,setRenderingIntent:7,setFlatness:8,setGState:9,save:10,restore:11,transform:12,moveTo:13,lineTo:14,curveTo:15,curveTo2:16,curveTo3:17,closePath:18,rectangle:19,stroke:20,closeStroke:21,fill:22,eoFill:23,fillStroke:24,eoFillStroke:25,closeFillStroke:26,closeEOFillStroke:27,endPath:28,clip:29,eoClip:30,beginText:31,endText:32,setCharSpacing:33,setWordSpacing:34,setHScale:35,setLeading:36,setFont:37,setTextRenderingMode:38,setTextRise:39,moveText:40,setLeadingMoveText:41,setTextMatrix:42,nextLine:43,showText:44,showSpacedText:45,nextLineShowText:46,nextLineSetSpacingShowText:47,setCharWidth:48,setCharWidthAndBounds:49,setStrokeColorSpace:50,setFillColorSpace:51,setStrokeColor:52,setStrokeColorN:53,setFillColor:54,setFillColorN:55,setStrokeGray:56,setFillGray:57,setStrokeRGBColor:58,setFillRGBColor:59,setStrokeCMYKColor:60,setFillCMYKColor:61,shadingFill:62,beginInlineImage:63,beginImageData:64,endInlineImage:65,paintXObject:66,markPoint:67,markPointProps:68,beginMarkedContent:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,paintFormXObjectBegin:74,paintFormXObjectEnd:75,beginGroup:76,endGroup:77,beginAnnotations:78,endAnnotations:79,beginAnnotation:80,endAnnotation:81,paintJpegXObject:82,paintImageMaskXObject:83,paintImageMaskXObjectGroup:84,paintImageXObject:85,paintInlineImageXObject:86,paintInlineImageXObjectGroup:87,paintImageXObjectRepeat:88,paintImageMaskXObjectRepeat:89,paintSolidColorImageMask:90,constructPath:91};t.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"};t.PasswordResponses={NEED_PASSWORD:1,INCORRECT_PASSWORD:2};let i=a.WARNINGS;function warn(e){i>=a.WARNINGS&&console.log(`Warning: ${e}`)}function unreachable(e){throw new Error(e)}function assert(e,t){e||unreachable(t)}function shadow(e,t,r){Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!1});return r}const n=function BaseExceptionClosure(){function BaseException(e){this.constructor===BaseException&&unreachable("Cannot initialize BaseException.");this.message=e;this.name=this.constructor.name}BaseException.prototype=new Error;BaseException.constructor=BaseException;return BaseException}();t.BaseException=n;t.PasswordException=class PasswordException extends n{constructor(e,t){super(e);this.code=t}};t.UnknownErrorException=class UnknownErrorException extends n{constructor(e,t){super(e);this.details=t}};t.InvalidPDFException=class InvalidPDFException extends n{};t.MissingPDFException=class MissingPDFException extends n{};t.UnexpectedResponseException=class UnexpectedResponseException extends n{constructor(e,t){super(e);this.status=t}};t.FormatError=class FormatError extends n{};t.AbortException=class AbortException extends n{};const s=/\x00/g;function stringToBytes(e){assert("string"==typeof e,"Invalid argument for stringToBytes");const t=e.length,r=new Uint8Array(t);for(let a=0;ae.toString(16).padStart(2,"0")));class Util{static makeHexColor(e,t,r){return`#${l[e]}${l[t]}${l[r]}`}static transform(e,t){return[e[0]*t[0]+e[2]*t[1],e[1]*t[0]+e[3]*t[1],e[0]*t[2]+e[2]*t[3],e[1]*t[2]+e[3]*t[3],e[0]*t[4]+e[2]*t[5]+e[4],e[1]*t[4]+e[3]*t[5]+e[5]]}static applyTransform(e,t){return[e[0]*t[0]+e[1]*t[2]+t[4],e[0]*t[1]+e[1]*t[3]+t[5]]}static applyInverseTransform(e,t){const r=t[0]*t[3]-t[1]*t[2];return[(e[0]*t[3]-e[1]*t[2]+t[2]*t[5]-t[4]*t[3])/r,(-e[0]*t[1]+e[1]*t[0]+t[4]*t[1]-t[5]*t[0])/r]}static getAxialAlignedBoundingBox(e,t){const r=Util.applyTransform(e,t),a=Util.applyTransform(e.slice(2,4),t),i=Util.applyTransform([e[0],e[3]],t),n=Util.applyTransform([e[2],e[1]],t);return[Math.min(r[0],a[0],i[0],n[0]),Math.min(r[1],a[1],i[1],n[1]),Math.max(r[0],a[0],i[0],n[0]),Math.max(r[1],a[1],i[1],n[1])]}static inverseTransform(e){const t=e[0]*e[3]-e[1]*e[2];return[e[3]/t,-e[1]/t,-e[2]/t,e[0]/t,(e[2]*e[5]-e[4]*e[3])/t,(e[4]*e[1]-e[5]*e[0])/t]}static apply3dTransform(e,t){return[e[0]*t[0]+e[1]*t[1]+e[2]*t[2],e[3]*t[0]+e[4]*t[1]+e[5]*t[2],e[6]*t[0]+e[7]*t[1]+e[8]*t[2]]}static singularValueDecompose2dScale(e){const t=[e[0],e[2],e[1],e[3]],r=e[0]*t[0]+e[1]*t[2],a=e[0]*t[1]+e[1]*t[3],i=e[2]*t[0]+e[3]*t[2],n=e[2]*t[1]+e[3]*t[3],s=(r+n)/2,o=Math.sqrt((r+n)**2-4*(r*n-i*a))/2,c=s+o||1,l=s-o||1;return[Math.sqrt(c),Math.sqrt(l)]}static normalizeRect(e){const t=e.slice(0);if(e[0]>e[2]){t[0]=e[2];t[2]=e[0]}if(e[1]>e[3]){t[1]=e[3];t[3]=e[1]}return t}static intersect(e,t){function compare(e,t){return e-t}const r=[e[0],e[2],t[0],t[2]].sort(compare),a=[e[1],e[3],t[1],t[3]].sort(compare),i=[];e=Util.normalizeRect(e);t=Util.normalizeRect(t);if(!(r[0]===e[0]&&r[1]===t[0]||r[0]===t[0]&&r[1]===e[0]))return null;i[0]=r[1];i[2]=r[2];if(!(a[0]===e[1]&&a[1]===t[1]||a[0]===t[1]&&a[1]===e[1]))return null;i[1]=a[1];i[3]=a[2];return i}}t.Util=Util;const h=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,728,711,710,729,733,731,730,732,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8226,8224,8225,8230,8212,8211,402,8260,8249,8250,8722,8240,8222,8220,8221,8216,8217,8218,8482,64257,64258,321,338,352,376,381,305,322,339,353,382,0,8364]},(e,t,r)=>{r(4)},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.isNodeJS=void 0;const r=!("object"!=typeof process||process+""!="[object process]"||process.versions.nw||process.versions.electron&&process.type&&"browser"!==process.type);t.isNodeJS=r},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.clearPrimitiveCaches=function clearPrimitiveCaches(){o._clearCache();s._clearCache();l._clearCache()};t.isCmd=function isCmd(e,t){return e instanceof o&&(void 0===t||e.cmd===t)};t.isDict=function isDict(e,t){return e instanceof Dict&&(void 0===t||isName(e.get("Type"),t))};t.isEOF=function isEOF(e){return e===n};t.isName=isName;t.isRef=function isRef(e){return e instanceof l};t.isRefsEqual=function isRefsEqual(e,t){return e.num===t.num&&e.gen===t.gen};t.isStream=function isStream(e){return e instanceof i.BaseStream};t.RefSetCache=t.RefSet=t.Ref=t.Name=t.EOF=t.Dict=t.Cmd=void 0;var a=r(2),i=r(6);const n={};t.EOF=n;const s=function NameClosure(){let e=Object.create(null);class Name{constructor(e){this.name=e}static get(t){const r=e[t];return r||(e[t]=new Name(t))}static _clearCache(){e=Object.create(null)}}return Name}();t.Name=s;const o=function CmdClosure(){let e=Object.create(null);class Cmd{constructor(e){this.cmd=e}static get(t){const r=e[t];return r||(e[t]=new Cmd(t))}static _clearCache(){e=Object.create(null)}}return Cmd}();t.Cmd=o;const c=function nonSerializableClosure(){return c};class Dict{constructor(e=null){this._map=Object.create(null);this.xref=e;this.objId=null;this.suppressEncryption=!1;this.__nonSerializable__=c}assignXref(e){this.xref=e}get size(){return Object.keys(this._map).length}get(e,t,r){let a=this._map[e];if(void 0===a&&void 0!==t){a=this._map[t];void 0===a&&void 0!==r&&(a=this._map[r])}return a instanceof l&&this.xref?this.xref.fetch(a,this.suppressEncryption):a}async getAsync(e,t,r){let a=this._map[e];if(void 0===a&&void 0!==t){a=this._map[t];void 0===a&&void 0!==r&&(a=this._map[r])}return a instanceof l&&this.xref?this.xref.fetchAsync(a,this.suppressEncryption):a}getArray(e,t,r){let a=this._map[e];if(void 0===a&&void 0!==t){a=this._map[t];void 0===a&&void 0!==r&&(a=this._map[r])}a instanceof l&&this.xref&&(a=this.xref.fetch(a,this.suppressEncryption));if(Array.isArray(a)){a=a.slice();for(let e=0,t=a.length;e{(0,a.unreachable)("Should not call `set` on the empty dictionary.")};return(0,a.shadow)(this,"empty",e)}static merge({xref:e,dictArray:t,mergeSubDicts:r=!1}){const a=new Dict(e),i=new Map;for(const e of t)if(e instanceof Dict)for(const[t,a]of Object.entries(e._map)){let e=i.get(t);if(void 0===e){e=[];i.set(t,e)}else if(!r)continue;e.push(a)}for(const[t,r]of i){if(1===r.length||!(r[0]instanceof Dict)){a._map[t]=r[0];continue}const i=new Dict(e);for(const e of r)if(e instanceof Dict)for(const[t,r]of Object.entries(e._map))void 0===i._map[t]&&(i._map[t]=r);i.size>0&&(a._map[t]=i)}i.clear();return a.size>0?a:Dict.empty}}t.Dict=Dict;const l=function RefClosure(){let e=Object.create(null);class Ref{constructor(e,t){this.num=e;this.gen=t}toString(){return 0===this.gen?`${this.num}R`:`${this.num}R${this.gen}`}static get(t,r){const a=0===r?`${t}R`:`${t}R${r}`,i=e[a];return i||(e[a]=new Ref(t,r))}static _clearCache(){e=Object.create(null)}}return Ref}();t.Ref=l;t.RefSet=class RefSet{constructor(e=null){this._set=new Set(e&&e._set)}has(e){return this._set.has(e.toString())}put(e){this._set.add(e.toString())}remove(e){this._set.delete(e.toString())}forEach(e){for(const t of this._set.values())e(t)}clear(){this._set.clear()}};t.RefSetCache=class RefSetCache{constructor(){this._map=new Map}get size(){return this._map.size}get(e){return this._map.get(e.toString())}has(e){return this._map.has(e.toString())}put(e,t){this._map.set(e.toString(),t)}putAlias(e,t){this._map.set(e.toString(),this.get(t))}forEach(e){for(const t of this._map.values())e(t)}clear(){this._map.clear()}};function isName(e,t){return e instanceof s&&(void 0===t||e.name===t)}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.BaseStream=void 0;var a=r(2);class BaseStream{constructor(){this.constructor===BaseStream&&(0,a.unreachable)("Cannot initialize BaseStream.")}get length(){(0,a.unreachable)("Abstract getter `length` accessed")}get isEmpty(){(0,a.unreachable)("Abstract getter `isEmpty` accessed")}get isDataLoaded(){return(0,a.shadow)(this,"isDataLoaded",!0)}getByte(){(0,a.unreachable)("Abstract method `getByte` called")}getBytes(e,t=!1){(0,a.unreachable)("Abstract method `getBytes` called")}peekByte(){const e=this.getByte();-1!==e&&this.pos--;return e}peekBytes(e,t=!1){const r=this.getBytes(e,t);this.pos-=r.length;return r}getUint16(){const e=this.getByte(),t=this.getByte();return-1===e||-1===t?-1:(e<<8)+t}getInt32(){return(this.getByte()<<24)+(this.getByte()<<16)+(this.getByte()<<8)+this.getByte()}getByteRange(e,t){(0,a.unreachable)("Abstract method `getByteRange` called")}getString(e){return(0,a.bytesToString)(this.getBytes(e,!1))}skip(e){this.pos+=e||1}reset(){(0,a.unreachable)("Abstract method `reset` called")}moveStart(){(0,a.unreachable)("Abstract method `moveStart` called")}makeSubStream(e,t,r=null){(0,a.unreachable)("Abstract method `makeSubStream` called")}getBaseStreams(){return null}}t.BaseStream=BaseStream},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.NetworkPdfManager=t.LocalPdfManager=void 0;var a=r(2),i=r(8),n=r(9),s=r(11),o=r(10);function parseDocBaseUrl(e){if(e){const t=(0,a.createValidAbsoluteUrl)(e);if(t)return t.href;(0,a.warn)(`Invalid absolute docBaseUrl: "${e}".`)}return null}class BasePdfManager{constructor(){this.constructor===BasePdfManager&&(0,a.unreachable)("Cannot initialize BasePdfManager.")}get docId(){return this._docId}get password(){return this._password}get docBaseUrl(){return this._docBaseUrl}onLoadedStream(){(0,a.unreachable)("Abstract method `onLoadedStream` called")}ensureDoc(e,t){return this.ensure(this.pdfDocument,e,t)}ensureXRef(e,t){return this.ensure(this.pdfDocument.xref,e,t)}ensureCatalog(e,t){return this.ensure(this.pdfDocument.catalog,e,t)}getPage(e){return this.pdfDocument.getPage(e)}fontFallback(e,t){return this.pdfDocument.fontFallback(e,t)}loadXfaFonts(e,t){return this.pdfDocument.loadXfaFonts(e,t)}loadXfaImages(){return this.pdfDocument.loadXfaImages()}serializeXfaData(e){return this.pdfDocument.serializeXfaData(e)}cleanup(e=!1){return this.pdfDocument.cleanup(e)}async ensure(e,t,r){(0,a.unreachable)("Abstract method `ensure` called")}requestRange(e,t){(0,a.unreachable)("Abstract method `requestRange` called")}requestLoadedStream(){(0,a.unreachable)("Abstract method `requestLoadedStream` called")}sendProgressiveData(e){(0,a.unreachable)("Abstract method `sendProgressiveData` called")}updatePassword(e){this._password=e}terminate(e){(0,a.unreachable)("Abstract method `terminate` called")}}t.LocalPdfManager=class LocalPdfManager extends BasePdfManager{constructor(e,t,r,a,i,n){super();this._docId=e;this._password=r;this._docBaseUrl=parseDocBaseUrl(n);this.evaluatorOptions=a;this.enableXfa=i;const c=new o.Stream(t);this.pdfDocument=new s.PDFDocument(this,c);this._loadedStreamPromise=Promise.resolve(c)}async ensure(e,t,r){const a=e[t];return"function"==typeof a?a.apply(e,r):a}requestRange(e,t){return Promise.resolve()}requestLoadedStream(){}onLoadedStream(){return this._loadedStreamPromise}terminate(e){}};t.NetworkPdfManager=class NetworkPdfManager extends BasePdfManager{constructor(e,t,r,a,n,o){super();this._docId=e;this._password=r.password;this._docBaseUrl=parseDocBaseUrl(o);this.msgHandler=r.msgHandler;this.evaluatorOptions=a;this.enableXfa=n;this.streamManager=new i.ChunkedStreamManager(t,{msgHandler:r.msgHandler,length:r.length,disableAutoFetch:r.disableAutoFetch,rangeChunkSize:r.rangeChunkSize});this.pdfDocument=new s.PDFDocument(this,this.streamManager.getStream())}async ensure(e,t,r){try{const a=e[t];return"function"==typeof a?a.apply(e,r):a}catch(a){if(!(a instanceof n.MissingDataException))throw a;await this.requestRange(a.begin,a.end);return this.ensure(e,t,r)}}requestRange(e,t){return this.streamManager.requestRange(e,t)}requestLoadedStream(){this.streamManager.requestAllChunks()}sendProgressiveData(e){this.streamManager.onReceiveData({chunk:e})}onLoadedStream(){return this.streamManager.onLoadedStream()}terminate(e){this.streamManager.abort(e)}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ChunkedStreamManager=t.ChunkedStream=void 0;var a=r(2),i=r(9),n=r(10);class ChunkedStream extends n.Stream{constructor(e,t,r){super(new Uint8Array(e),0,e,null);this.chunkSize=t;this._loadedChunks=new Set;this.numChunks=Math.ceil(e/t);this.manager=r;this.progressiveDataLength=0;this.lastSuccessfulEnsureByteChunk=-1}getMissingChunks(){const e=[];for(let t=0,r=this.numChunks;t=this.end?this.numChunks:Math.floor(t/this.chunkSize);for(let e=r;e=t)return;if(t<=this.progressiveDataLength)return;const r=this.chunkSize,a=Math.floor(e/r),n=Math.floor((t-1)/r)+1;for(let r=a;r=this.end)return-1;e>=this.progressiveDataLength&&this.ensureByte(e);return this.bytes[this.pos++]}getBytes(e,t=!1){const r=this.bytes,a=this.pos,i=this.end;if(!e){i>this.progressiveDataLength&&this.ensureRange(a,i);const e=r.subarray(a,i);return t?new Uint8ClampedArray(e):e}let n=a+e;n>i&&(n=i);n>this.progressiveDataLength&&this.ensureRange(a,n);this.pos=n;const s=r.subarray(a,n);return t?new Uint8ClampedArray(s):s}getByteRange(e,t){e<0&&(e=0);t>this.end&&(t=this.end);t>this.progressiveDataLength&&this.ensureRange(e,t);return this.bytes.subarray(e,t)}makeSubStream(e,t,r=null){t?e+t>this.progressiveDataLength&&this.ensureRange(e,e+t):e>=this.progressiveDataLength&&this.ensureByte(e);function ChunkedStreamSubstream(){}ChunkedStreamSubstream.prototype=Object.create(this);ChunkedStreamSubstream.prototype.getMissingChunks=function(){const e=this.chunkSize,t=Math.floor(this.start/e),r=Math.floor((this.end-1)/e)+1,a=[];for(let e=t;e{const readChunk=s=>{try{if(!s.done){const e=s.value;i.push(e);n+=(0,a.arrayByteLength)(e);r.isStreamingSupported&&this.onProgress({loaded:n});r.read().then(readChunk,t);return}const o=(0,a.arraysToBytes)(i);i=null;e(o)}catch(e){t(e)}};r.read().then(readChunk,t)})).then((t=>{this.aborted||this.onReceiveData({chunk:t,begin:e})}))}requestAllChunks(){const e=this.stream.getMissingChunks();this._requestChunks(e);return this._loadedStreamCapability.promise}_requestChunks(e){const t=this.currRequestId++,r=new Set;this._chunksNeededByRequest.set(t,r);for(const t of e)this.stream.hasChunk(t)||r.add(t);if(0===r.size)return Promise.resolve();const i=(0,a.createPromiseCapability)();this._promisesByRequest.set(t,i);const n=[];for(const e of r){let r=this._requestsByChunk.get(e);if(!r){r=[];this._requestsByChunk.set(e,r);n.push(e)}r.push(t)}if(n.length>0){const e=this.groupChunks(n);for(const t of e){const e=t.beginChunk*this.chunkSize,r=Math.min(t.endChunk*this.chunkSize,this.length);this.sendRequest(e,r)}}return i.promise.catch((e=>{if(!this.aborted)throw e}))}getStream(){return this.stream}requestRange(e,t){t=Math.min(t,this.length);const r=this.getBeginChunk(e),a=this.getEndChunk(t),i=[];for(let e=r;e=0&&a+1!==n){t.push({beginChunk:r,endChunk:a+1});r=n}i+1===e.length&&t.push({beginChunk:r,endChunk:n+1});a=n}return t}onProgress(e){this.msgHandler.send("DocProgress",{loaded:this.stream.numChunksLoaded*this.chunkSize+e.loaded,total:this.length})}onReceiveData(e){const t=e.chunk,r=void 0===e.begin,a=r?this.progressiveDataLength:e.begin,i=a+t.byteLength,n=Math.floor(a/this.chunkSize),s=i0||o.push(r)}}}if(!this.disableAutoFetch&&0===this._requestsByChunk.size){let e;if(1===this.stream.numChunksLoaded){const t=this.stream.numChunks-1;this.stream.hasChunk(t)||(e=t)}else e=this.stream.nextEmptyChunk(s);Number.isInteger(e)&&this._requestChunks([e])}for(const e of o){const t=this._promisesByRequest.get(e);this._promisesByRequest.delete(e);t.resolve()}this.msgHandler.send("DocProgress",{loaded:this.stream.numChunksLoaded*this.chunkSize,total:this.length})}onError(e){this._loadedStreamCapability.reject(e)}getBeginChunk(e){return Math.floor(e/this.chunkSize)}getEndChunk(e){return Math.floor((e-1)/this.chunkSize)+1}abort(e){this.aborted=!0;this.pdfNetworkStream&&this.pdfNetworkStream.cancelAllRequests(e);for(const t of this._promisesByRequest.values())t.reject(e)}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.collectActions=function collectActions(e,t,r){const n=Object.create(null),s=getInheritableProperty({dict:t,key:"AA",stopWhenFound:!1});if(s)for(let t=s.length-1;t>=0;t--){const a=s[t];if(a instanceof i.Dict)for(const t of a.getKeys()){const s=r[t];if(!s)continue;const o=a.getRaw(t),c=new i.RefSet,l=[];_collectJS(o,e,l,c);l.length>0&&(n[s]=l)}}if(t.has("A")){const r=t.get("A"),a=new i.RefSet,s=[];_collectJS(r,e,s,a);s.length>0&&(n.Action=s)}return(0,a.objectSize)(n)>0?n:null};t.encodeToXmlString=function encodeToXmlString(e){const t=[];let r=0;for(let a=0,i=e.length;a55295&&(i<57344||i>65533)&&a++;r=a+1}}if(0===t.length)return e;r126||35===i||40===i||41===i||60===i||62===i||91===i||93===i||123===i||125===i||47===i||37===i){r{const r=e.match(t);return r?{name:r[1],pos:parseInt(r[2],10)}:{name:e,pos:0}}))};t.readInt8=function readInt8(e,t){return e[t]<<24>>24};t.readUint16=function readUint16(e,t){return e[t]<<8|e[t+1]};t.readUint32=function readUint32(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0};t.toRomanNumerals=function toRomanNumerals(e,t=!1){(0,a.assert)(Number.isInteger(e)&&e>0,"The number should be a positive integer.");const r=[];let i;for(;e>=1e3;){e-=1e3;r.push("M")}i=e/100|0;e%=100;r.push(n[i]);i=e/10|0;e%=10;r.push(n[10+i]);r.push(n[20+e]);const s=r.join("");return t?s.toLowerCase():s};t.validateCSSFont=function validateCSSFont(e){const t=new Set(["100","200","300","400","500","600","700","800","900","1000","normal","bold","bolder","lighter"]),{fontFamily:r,fontWeight:i,italicAngle:n}=e;if(/^".*"$/.test(r)){if(/[^\\]"/.test(r.slice(1,r.length-1))){(0,a.warn)(`XFA - FontFamily contains some unescaped ": ${r}.`);return!1}}else if(/^'.*'$/.test(r)){if(/[^\\]'/.test(r.slice(1,r.length-1))){(0,a.warn)(`XFA - FontFamily contains some unescaped ': ${r}.`);return!1}}else for(const e of r.split(/[ \t]+/))if(/^([0-9]|(-([0-9]|-)))/.test(e)||!/^[a-zA-Z0-9\-_\\]+$/.test(e)){(0,a.warn)(`XFA - FontFamily contains some invalid : ${r}.`);return!1}const s=i?i.toString():"";e.fontWeight=t.has(s)?s:"400";const o=parseFloat(n);e.italicAngle=isNaN(o)||o<-90||o>90?"14":n.toString();return!0};t.XRefParseException=t.XRefEntryException=t.ParserEOFException=t.MissingDataException=void 0;var a=r(2),i=r(5);class MissingDataException extends a.BaseException{constructor(e,t){super(`Missing data [${e}, ${t})`);this.begin=e;this.end=t}}t.MissingDataException=MissingDataException;class ParserEOFException extends a.BaseException{}t.ParserEOFException=ParserEOFException;class XRefEntryException extends a.BaseException{}t.XRefEntryException=XRefEntryException;class XRefParseException extends a.BaseException{}t.XRefParseException=XRefParseException;function getInheritableProperty({dict:e,key:t,getArray:r=!1,stopWhenFound:a=!0}){let n;const s=new i.RefSet;for(;e instanceof i.Dict&&(!e.objId||!s.has(e.objId));){e.objId&&s.put(e.objId);const i=r?e.getArray(t):e.get(t);if(void 0!==i){if(a)return i;n||(n=[]);n.push(i)}e=e.get("Parent")}return n}const n=["","C","CC","CCC","CD","D","DC","DCC","DCCC","CM","","X","XX","XXX","XL","L","LX","LXX","LXXX","XC","","I","II","III","IV","V","VI","VII","VIII","IX"];function _collectJS(e,t,r,n){if(!e)return;let s=null;if((0,i.isRef)(e)){if(n.has(e))return;s=e;n.put(s);e=t.fetch(e)}if(Array.isArray(e))for(const a of e)_collectJS(a,t,r,n);else if(e instanceof i.Dict){if((0,i.isName)(e.get("S"),"JavaScript")&&e.has("JS")){const t=e.get("JS");let n;n=(0,i.isStream)(t)?t.getString():t;n=(0,a.stringToPDFString)(n);n&&r.push(n)}_collectJS(e.getRaw("Next"),t,r,n)}s&&n.remove(s)}const s={60:"<",62:">",38:"&",34:""",39:"'"}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.StringStream=t.Stream=t.NullStream=void 0;var a=r(6),i=r(2);class Stream extends a.BaseStream{constructor(e,t,r,a){super();this.bytes=e instanceof Uint8Array?e:new Uint8Array(e);this.start=t||0;this.pos=this.start;this.end=t+r||this.bytes.length;this.dict=a}get length(){return this.end-this.start}get isEmpty(){return 0===this.length}getByte(){return this.pos>=this.end?-1:this.bytes[this.pos++]}getBytes(e,t=!1){const r=this.bytes,a=this.pos,i=this.end;if(!e){const e=r.subarray(a,i);return t?new Uint8ClampedArray(e):e}let n=a+e;n>i&&(n=i);this.pos=n;const s=r.subarray(a,n);return t?new Uint8ClampedArray(s):s}getByteRange(e,t){e<0&&(e=0);t>this.end&&(t=this.end);return this.bytes.subarray(e,t)}reset(){this.pos=this.start}moveStart(){this.start=this.pos}makeSubStream(e,t,r=null){return new Stream(this.bytes.buffer,e,t,r)}}t.Stream=Stream;t.StringStream=class StringStream extends Stream{constructor(e){super((0,i.stringToBytes)(e))}};t.NullStream=class NullStream extends Stream{constructor(){super(new Uint8Array(0))}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.PDFDocument=t.Page=void 0;var a=r(2),i=r(5),n=r(9),s=r(10),o=r(12),c=r(6),l=r(72),h=r(64),u=r(55),d=r(17),f=r(70),g=r(62),p=r(15),m=r(19),b=r(69),y=r(74),w=r(98);const S=[0,0,612,792];class Page{constructor({pdfManager:e,xref:t,pageIndex:r,pageDict:a,ref:i,globalIdFactory:n,fontCache:s,builtInCMapCache:o,standardFontDataCache:c,globalImageCache:l,nonBlendModesSet:h,xfaFactory:u}){this.pdfManager=e;this.pageIndex=r;this.pageDict=a;this.xref=t;this.ref=i;this.fontCache=s;this.builtInCMapCache=o;this.standardFontDataCache=c;this.globalImageCache=l;this.nonBlendModesSet=h;this.evaluatorOptions=e.evaluatorOptions;this.resourcesPromise=null;this.xfaFactory=u;const d={obj:0};this._localIdFactory=class extends n{static createObjId(){return`p${r}_${++d.obj}`}static getPageObjId(){return`page${i.toString()}`}}}_getInheritableProperty(e,t=!1){const r=(0,n.getInheritableProperty)({dict:this.pageDict,key:e,getArray:t,stopWhenFound:!1});return Array.isArray(r)?1!==r.length&&(0,i.isDict)(r[0])?i.Dict.merge({xref:this.xref,dictArray:r}):r[0]:r}get content(){return this.pageDict.getArray("Contents")}get resources(){return(0,a.shadow)(this,"resources",this._getInheritableProperty("Resources")||i.Dict.empty)}_getBoundingBox(e){if(this.xfaData)return this.xfaData.bbox;const t=this._getInheritableProperty(e,!0);if(Array.isArray(t)&&4===t.length){if(t[2]-t[0]!=0&&t[3]-t[1]!=0)return t;(0,a.warn)(`Empty /${e} entry.`)}return null}get mediaBox(){return(0,a.shadow)(this,"mediaBox",this._getBoundingBox("MediaBox")||S)}get cropBox(){return(0,a.shadow)(this,"cropBox",this._getBoundingBox("CropBox")||this.mediaBox)}get userUnit(){let e=this.pageDict.get("UserUnit");(!(0,a.isNum)(e)||e<=0)&&(e=1);return(0,a.shadow)(this,"userUnit",e)}get view(){const{cropBox:e,mediaBox:t}=this;let r;if(e===t||(0,a.isArrayEqual)(e,t))r=t;else{const i=a.Util.intersect(e,t);i&&i[2]-i[0]!=0&&i[3]-i[1]!=0?r=i:(0,a.warn)("Empty /CropBox and /MediaBox intersection.")}return(0,a.shadow)(this,"view",r||t)}get rotate(){let e=this._getInheritableProperty("Rotate")||0;e%90!=0?e=0:e>=360?e%=360:e<0&&(e=(e%360+360)%360);return(0,a.shadow)(this,"rotate",e)}getContentStream(){return this.pdfManager.ensure(this,"content").then((e=>e instanceof c.BaseStream?e:Array.isArray(e)?new m.StreamsSequenceStream(e):new s.NullStream))}get xfaData(){return this.xfaFactory?(0,a.shadow)(this,"xfaData",{bbox:this.xfaFactory.getBoundingBox(this.pageIndex)}):(0,a.shadow)(this,"xfaData",null)}save(e,t,r){const i=new p.PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,options:this.evaluatorOptions});return this._parsedAnnotations.then((function(e){const n=[];for(const s of e)s.mustBePrinted(r)&&n.push(s.save(i,t,r).catch((function(e){(0,a.warn)(`save - ignoring annotation data during "${t.name}" task: "${e}".`);return null})));return Promise.all(n)}))}loadResources(e){this.resourcesPromise||(this.resourcesPromise=this.pdfManager.ensure(this,"resources"));return this.resourcesPromise.then((()=>new f.ObjectLoader(this.resources,e,this.xref).load()))}getOperatorList({handler:e,sink:t,task:r,intent:i,renderInteractiveForms:n,annotationStorage:s}){const o=this.getContentStream(),c=this.loadResources(["ColorSpace","ExtGState","Font","Pattern","Properties","Shading","XObject"]),l=new p.PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,options:this.evaluatorOptions}),h=Promise.all([o,c]).then((([a])=>{const n=new g.OperatorList(i,t);e.send("StartRenderPage",{transparency:l.hasBlendModes(this.resources,this.nonBlendModesSet),pageIndex:this.pageIndex,intent:i});return l.getOperatorList({stream:a,task:r,resources:this.resources,operatorList:n}).then((function(){return n}))}));return Promise.all([h,this._parsedAnnotations]).then((function([e,t]){if(0===t.length){e.flush(!0);return{length:e.totalLength}}const o=i.startsWith("oplist-")?i.split("-")[1]:i,c=[];for(const e of t)("display"===o&&e.mustBeViewed(s)||"print"===o&&e.mustBePrinted(s))&&c.push(e.getOperatorList(l,r,n,s).catch((function(e){(0,a.warn)(`getOperatorList - ignoring annotation data during "${r.name}" task: "${e}".`);return null})));return Promise.all(c).then((function(t){e.addOp(a.OPS.beginAnnotations,[]);for(const r of t)e.addOpList(r);e.addOp(a.OPS.endAnnotations,[]);e.flush(!0);return{length:e.totalLength}}))}))}extractTextContent({handler:e,task:t,normalizeWhitespace:r,includeMarkedContent:a,sink:i,combineTextItems:n}){const s=this.getContentStream(),o=this.loadResources(["ExtGState","Font","Properties","XObject"]);return Promise.all([s,o]).then((([s])=>new p.PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,options:this.evaluatorOptions}).getTextContent({stream:s,task:t,resources:this.resources,normalizeWhitespace:r,includeMarkedContent:a,combineTextItems:n,sink:i})))}async getStructTree(){const e=await this.pdfManager.ensureCatalog("structTreeRoot");if(!e)return null;return(await this.pdfManager.ensure(this,"_parseStructTree",[e])).serializable}_parseStructTree(e){const t=new b.StructTreePage(e,this.pageDict);t.parse();return t}getAnnotationsData(e){return this._parsedAnnotations.then((function(t){const r=[];for(let a=0,i=t.length;a{const e=[];for(const t of this.annotations)e.push(o.AnnotationFactory.create(this.xref,t,this.pdfManager,this._localIdFactory,!1).catch((function(e){(0,a.warn)(`_parsedAnnotations: "${e}".`);return null})));return Promise.all(e).then((function(e){return e.filter((e=>!!e))}))}));return(0,a.shadow)(this,"_parsedAnnotations",e)}get jsActions(){const e=(0,n.collectActions)(this.xref,this.pageDict,a.PageActionEventType);return(0,a.shadow)(this,"jsActions",e)}}t.Page=Page;const x=new Uint8Array([37,80,68,70,45]),k=new Uint8Array([115,116,97,114,116,120,114,101,102]),C=new Uint8Array([101,110,100,111,98,106]),v=/^[1-9]\.[0-9]$/;function find(e,t,r=1024,a=!1){const i=t.length,n=e.peekBytes(r),s=n.length-i;if(s<=0)return!1;if(a){const r=i-1;let a=n.length-1;for(;a>=r;){let s=0;for(;s=i){e.pos+=a-r;return!0}a--}}else{let r=0;for(;r<=s;){let a=0;for(;a=i){e.pos+=r;return!0}r++}}return!1}t.PDFDocument=class PDFDocument{constructor(e,t){let r;if((0,i.isStream)(t))r=t;else{if(!(0,a.isArrayBuffer)(t))throw new Error("PDFDocument: Unknown argument type");r=new s.Stream(t)}if(r.length<=0)throw new a.InvalidPDFException("The PDF file is empty, i.e. its size is zero bytes.");this.pdfManager=e;this.stream=r;this.xref=new w.XRef(r,e);this._pagePromises=[];this._version=null;const n={font:0};this._globalIdFactory=class{static getDocId(){return`g_${e.docId}`}static createFontId(){return"f"+ ++n.font}static createObjId(){(0,a.unreachable)("Abstract method `createObjId` called.")}static getPageObjId(){(0,a.unreachable)("Abstract method `getPageObjId` called.")}}}parse(e){this.xref.parse(e);this.catalog=new h.Catalog(this.pdfManager,this.xref);this.catalog.version&&(this._version=this.catalog.version)}get linearization(){let e=null;try{e=d.Linearization.create(this.stream)}catch(e){if(e instanceof n.MissingDataException)throw e;(0,a.info)(e)}return(0,a.shadow)(this,"linearization",e)}get startXRef(){const e=this.stream;let t=0;if(this.linearization){e.reset();find(e,C)&&(t=e.pos+6-e.start)}else{const r=1024,a=k.length;let i=!1,s=e.end;for(;!i&&s>0;){s-=r-a;s<0&&(s=0);e.pos=s;i=find(e,k,r,!0)}if(i){e.skip(9);let r;do{r=e.getByte()}while((0,n.isWhiteSpace)(r));let a="";for(;r>=32&&r<=57;){a+=String.fromCharCode(r);r=e.getByte()}t=parseInt(a,10);isNaN(t)&&(t=0)}}return(0,a.shadow)(this,"startXRef",t)}checkHeader(){const e=this.stream;e.reset();if(!find(e,x))return;e.moveStart();let t,r="";for(;(t=e.getByte())>32&&!(r.length>=12);)r+=String.fromCharCode(t);this._version||(this._version=r.substring(5))}parseStartXRef(){this.xref.setStartXRef(this.startXRef)}get numPages(){if(this.xfaFactory)return(0,a.shadow)(this,"numPages",this.xfaFactory.numberPages);const e=this.linearization,t=e?e.numPages:this.catalog.numPages;return(0,a.shadow)(this,"numPages",t)}_hasOnlyDocumentSignatures(e,t=0){return!!Array.isArray(e)&&e.every((e=>{if(!((e=this.xref.fetchIfRef(e))instanceof i.Dict))return!1;if(e.has("Kids")){if(++t>10){(0,a.warn)("_hasOnlyDocumentSignatures: maximum recursion depth reached");return!1}return this._hasOnlyDocumentSignatures(e.get("Kids"),t)}const r=(0,i.isName)(e.get("FT"),"Sig"),n=e.get("Rect"),s=Array.isArray(n)&&n.every((e=>0===e));return r&&s}))}get xfaData(){const e=this.catalog.acroForm;if(!e)return null;const t=e.get("XFA"),r={"xdp:xdp":"",template:"",datasets:"",config:"",connectionSet:"",localeSet:"",stylesheet:"","/xdp:xdp":""};if((0,i.isStream)(t)&&!t.isEmpty)try{r["xdp:xdp"]=(0,a.stringToUTF8String)(t.getString());return r}catch(e){(0,a.warn)("XFA - Invalid utf-8 string.");return null}if(!Array.isArray(t)||0===t.length)return null;for(let e=0,n=t.length;e{y.set(e,t)}));const w=[];for(const[e,r]of y){const o=r.get("FontDescriptor");if(!(o instanceof i.Dict))continue;let c=o.get("FontFamily");c=c.replace(/[ ]+([0-9])/g,"$1");const l={fontFamily:c,fontWeight:o.get("FontWeight"),italicAngle:-o.get("ItalicAngle")};(0,n.validateCSSFont)(l)&&w.push(h.handleSetFont(s,[i.Name.get(e),1],null,d,t,b,null,l).catch((function(e){(0,a.warn)(`loadXfaFonts: "${e}".`);return null})))}await Promise.all(w);const S=this.xfaFactory.setFonts(m);if(!S)return;l.ignoreErrors=!0;w.length=0;m.length=0;const x=new Set;for(const e of S)(0,u.getXfaFontWidths)(`${e}-Regular`)||x.add(e);x.size&&S.push("PdfJS-Fallback");for(const e of S)if(!x.has(e))for(const r of[{name:"Regular",fontWeight:400,italicAngle:0},{name:"Bold",fontWeight:700,italicAngle:0},{name:"Italic",fontWeight:400,italicAngle:12},{name:"BoldItalic",fontWeight:700,italicAngle:12}]){const n=`${e}-${r.name}`,o=(0,u.getXfaFontWidths)(n),c=new i.Dict(null);c.set("BaseFont",i.Name.get(n));c.set("Type",i.Name.get("Font"));c.set("Subtype",i.Name.get("TrueType"));c.set("Encoding",i.Name.get("WinAnsiEncoding"));const l=new i.Dict(null);l.set("Widths",o);c.set("FontDescriptor",l);w.push(h.handleSetFont(s,[i.Name.get(n),1],null,d,t,b,c,{fontFamily:e,fontWeight:r.fontWeight,italicAngle:r.italicAngle}).catch((function(e){(0,a.warn)(`loadXfaFonts: "${e}".`);return null})))}await Promise.all(w);this.xfaFactory.appendFonts(m,x)}async serializeXfaData(e){return this.xfaFactory?this.xfaFactory.serializeData(e):null}get formInfo(){const e={hasFields:!1,hasAcroForm:!1,hasXfa:!1,hasSignatures:!1},t=this.catalog.acroForm;if(!t)return(0,a.shadow)(this,"formInfo",e);try{const r=t.get("Fields"),a=Array.isArray(r)&&r.length>0;e.hasFields=a;const n=t.get("XFA");e.hasXfa=Array.isArray(n)&&n.length>0||(0,i.isStream)(n)&&!n.isEmpty;const s=!!(1&t.get("SigFlags")),o=s&&this._hasOnlyDocumentSignatures(r);e.hasAcroForm=a&&!o;e.hasSignatures=s}catch(e){if(e instanceof n.MissingDataException)throw e;(0,a.warn)(`Cannot fetch form information: "${e}".`)}return(0,a.shadow)(this,"formInfo",e)}get documentInfo(){const e={Title:a.isString,Author:a.isString,Subject:a.isString,Keywords:a.isString,Creator:a.isString,Producer:a.isString,CreationDate:a.isString,ModDate:a.isString,Trapped:i.isName};let t=this._version;if("string"!=typeof t||!v.test(t)){(0,a.warn)(`Invalid PDF header version number: ${t}`);t=null}const r={PDFFormatVersion:t,IsLinearized:!!this.linearization,IsAcroFormPresent:this.formInfo.hasAcroForm,IsXFAPresent:this.formInfo.hasXfa,IsCollectionPresent:!!this.catalog.collection,IsSignaturesPresent:this.formInfo.hasSignatures};let s;try{s=this.xref.trailer.get("Info")}catch(e){if(e instanceof n.MissingDataException)throw e;(0,a.info)("The document information dictionary is invalid.")}if((0,i.isDict)(s))for(const t of s.getKeys()){const n=s.get(t);if(e[t])e[t](n)?r[t]="string"!=typeof n?n:(0,a.stringToPDFString)(n):(0,a.info)(`Bad value in document info for "${t}".`);else if("string"==typeof t){let e;if((0,a.isString)(n))e=(0,a.stringToPDFString)(n);else{if(!((0,i.isName)(n)||(0,a.isNum)(n)||(0,a.isBool)(n))){(0,a.info)(`Unsupported value in document info for (custom) "${t}".`);continue}e=n}r.Custom||(r.Custom=Object.create(null));r.Custom[t]=e}}return(0,a.shadow)(this,"documentInfo",r)}get fingerprints(){function validate(e){return"string"==typeof e&&e.length>0&&"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"!==e}function hexString(e){const t=[];for(let r=0,a=e.length;r{if((0,i.isDict)(e,"Page")||(0,i.isDict)(e)&&!e.has("Type")&&e.has("Contents")){n&&!t.pageKidsCountCache.has(n)&&t.pageKidsCountCache.put(n,1);return[e,n]}throw new a.FormatError("The Linearization dictionary doesn't point to a valid Page dictionary.")})).catch((r=>{(0,a.info)(r);return t.getPageDict(e)}))}getPage(e){if(void 0!==this._pagePromises[e])return this._pagePromises[e];const{catalog:t,linearization:r}=this;if(this.xfaFactory)return Promise.resolve(new Page({pdfManager:this.pdfManager,xref:this.xref,pageIndex:e,pageDict:i.Dict.empty,ref:null,globalIdFactory:this._globalIdFactory,fontCache:t.fontCache,builtInCMapCache:t.builtInCMapCache,standardFontDataCache:t.standardFontDataCache,globalImageCache:t.globalImageCache,nonBlendModesSet:t.nonBlendModesSet,xfaFactory:this.xfaFactory}));const a=r&&r.pageFirst===e?this._getLinearizationPage(e):t.getPageDict(e);return this._pagePromises[e]=a.then((([r,a])=>new Page({pdfManager:this.pdfManager,xref:this.xref,pageIndex:e,pageDict:r,ref:a,globalIdFactory:this._globalIdFactory,fontCache:t.fontCache,builtInCMapCache:t.builtInCMapCache,standardFontDataCache:t.standardFontDataCache,globalImageCache:t.globalImageCache,nonBlendModesSet:t.nonBlendModesSet,xfaFactory:null})))}checkFirstPage(){return this.getPage(0).catch((async e=>{if(e instanceof n.XRefEntryException){this._pagePromises.length=0;await this.cleanup();throw new n.XRefParseException}}))}fontFallback(e,t){return this.catalog.fontFallback(e,t)}async cleanup(e=!1){return this.catalog?this.catalog.cleanup(e):(0,i.clearPrimitiveCaches)()}_collectFieldObjects(e,t,r){const i=this.xref.fetchIfRef(t);if(i.has("T")){const t=(0,a.stringToPDFString)(i.get("T"));e=""===e?t:`${e}.${t}`}r.has(e)||r.set(e,[]);r.get(e).push(o.AnnotationFactory.create(this.xref,t,this.pdfManager,this._localIdFactory,!0).then((e=>e&&e.getFieldObject())).catch((function(e){(0,a.warn)(`_collectFieldObjects: "${e}".`);return null})));if(i.has("Kids")){const t=i.get("Kids");for(const a of t)this._collectFieldObjects(e,a,r)}}get fieldObjects(){if(!this.formInfo.hasFields)return(0,a.shadow)(this,"fieldObjects",Promise.resolve(null));const e=Object.create(null),t=new Map;for(const e of this.catalog.acroForm.get("Fields"))this._collectFieldObjects("",e,t);const r=[];for(const[a,i]of t)r.push(Promise.all(i).then((t=>{(t=t.filter((e=>!!e))).length>0&&(e[a]=t)})));return(0,a.shadow)(this,"fieldObjects",Promise.all(r).then((()=>e)))}get hasJSActions(){const e=this.pdfManager.ensureDoc("_parseHasJSActions");return(0,a.shadow)(this,"hasJSActions",e)}async _parseHasJSActions(){const[e,t]=await Promise.all([this.pdfManager.ensureCatalog("jsActions"),this.pdfManager.ensureDoc("fieldObjects")]);return!!e||!!t&&Object.values(t).some((e=>e.some((e=>null!==e.actions))))}get calculationOrderIds(){const e=this.catalog.acroForm;if(!e||!e.has("CO"))return(0,a.shadow)(this,"calculationOrderIds",null);const t=e.get("CO");if(!Array.isArray(t)||0===t.length)return(0,a.shadow)(this,"calculationOrderIds",null);const r=t.filter(i.isRef).map((e=>e.toString()));return 0===r.length?(0,a.shadow)(this,"calculationOrderIds",null):(0,a.shadow)(this,"calculationOrderIds",r)}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.getQuadPoints=getQuadPoints;t.MarkupAnnotation=t.AnnotationFactory=t.AnnotationBorderStyle=t.Annotation=void 0;var a=r(2),i=r(9),n=r(13),s=r(5),o=r(64),c=r(14),l=r(66),h=r(70),u=r(62),d=r(10),f=r(71);t.AnnotationFactory=class AnnotationFactory{static create(e,t,r,a,i){return Promise.all([r.ensureCatalog("acroForm"),i?this._getPageIndex(e,t,r):-1]).then((([n,s])=>r.ensure(this,"_create",[e,t,r,a,n,i,s])))}static _create(e,t,r,n,o,c,l=-1){const h=e.fetchIfRef(t);if(!(0,s.isDict)(h))return;const u=(0,s.isRef)(t)?t.toString():`annot_${n.createObjId()}`;let d=h.get("Subtype");d=(0,s.isName)(d)?d.name:null;const f={xref:e,ref:t,dict:h,subtype:d,id:u,pdfManager:r,acroForm:o instanceof s.Dict?o:s.Dict.empty,collectFields:c,pageIndex:l};switch(d){case"Link":return new LinkAnnotation(f);case"Text":return new TextAnnotation(f);case"Widget":let e=(0,i.getInheritableProperty)({dict:h,key:"FT"});e=(0,s.isName)(e)?e.name:null;switch(e){case"Tx":return new TextWidgetAnnotation(f);case"Btn":return new ButtonWidgetAnnotation(f);case"Ch":return new ChoiceWidgetAnnotation(f);case"Sig":return new SignatureWidgetAnnotation(f)}(0,a.warn)(`Unimplemented widget field type "${e}", falling back to base field type.`);return new WidgetAnnotation(f);case"Popup":return new PopupAnnotation(f);case"FreeText":return new FreeTextAnnotation(f);case"Line":return new LineAnnotation(f);case"Square":return new SquareAnnotation(f);case"Circle":return new CircleAnnotation(f);case"PolyLine":return new PolylineAnnotation(f);case"Polygon":return new PolygonAnnotation(f);case"Caret":return new CaretAnnotation(f);case"Ink":return new InkAnnotation(f);case"Highlight":return new HighlightAnnotation(f);case"Underline":return new UnderlineAnnotation(f);case"Squiggly":return new SquigglyAnnotation(f);case"StrikeOut":return new StrikeOutAnnotation(f);case"Stamp":return new StampAnnotation(f);case"FileAttachment":return new FileAttachmentAnnotation(f);default:c||(d?(0,a.warn)(`Unimplemented annotation type "${d}", falling back to base annotation.`):(0,a.warn)("Annotation is missing the required /Subtype."));return new Annotation(f)}}static async _getPageIndex(e,t,r){try{const a=await e.fetchIfRefAsync(t);if(!(0,s.isDict)(a))return-1;const i=a.getRaw("P");if(!(0,s.isRef)(i))return-1;return await r.ensureCatalog("getPageIndex",[i])}catch(e){(0,a.warn)(`_getPageIndex: "${e}".`);return-1}}};function getRgbColor(e){const t=new Uint8ClampedArray(3);if(!Array.isArray(e))return t;switch(e.length){case 0:return null;case 1:c.ColorSpace.singletons.gray.getRgbItem(e,0,t,0);return t;case 3:c.ColorSpace.singletons.rgb.getRgbItem(e,0,t,0);return t;case 4:c.ColorSpace.singletons.cmyk.getRgbItem(e,0,t,0);return t;default:return t}}function getQuadPoints(e,t){if(!e.has("QuadPoints"))return null;const r=e.getArray("QuadPoints");if(!Array.isArray(r)||0===r.length||r.length%8>0)return null;const a=[];for(let e=0,i=r.length/8;et[2]||st[3]))return null;a[e].push({x:n,y:s})}}return a.map((e=>{const[t,r,a,i]=e.reduce((([e,t,r,a],i)=>[Math.min(e,i.x),Math.max(t,i.x),Math.min(r,i.y),Math.max(a,i.y)]),[Number.MAX_VALUE,Number.MIN_VALUE,Number.MAX_VALUE,Number.MIN_VALUE]);return[{x:t,y:i},{x:r,y:i},{x:t,y:a},{x:r,y:a}]}))}function getTransformMatrix(e,t,r){const[i,n,s,o]=a.Util.getAxialAlignedBoundingBox(t,r);if(i===s||n===o)return[1,0,0,1,e[0],e[1]];const c=(e[2]-e[0])/(s-i),l=(e[3]-e[1])/(o-n);return[c,0,0,l,e[0]-i*c,e[1]-n*l]}class Annotation{constructor(e){const t=e.dict;this.setContents(t.get("Contents"));this.setModificationDate(t.get("M"));this.setFlags(t.get("F"));this.setRectangle(t.getArray("Rect"));this.setColor(t.getArray("C"));this.setBorderStyle(t);this.setAppearance(t);this._streams=[];this.appearance&&this._streams.push(this.appearance);this.data={annotationFlags:this.flags,borderStyle:this.borderStyle,color:this.color,contents:this.contents,hasAppearance:!!this.appearance,id:e.id,modificationDate:this.modificationDate,rect:this.rectangle,subtype:e.subtype};if(e.collectFields){const r=t.get("Kids");if(Array.isArray(r)){const e=[];for(const t of r)(0,s.isRef)(t)&&e.push(t.toString());0!==e.length&&(this.data.kidIds=e)}this.data.actions=(0,i.collectActions)(e.xref,t,a.AnnotationActionEventType);this.data.fieldName=this._constructFieldName(t);this.data.pageIndex=e.pageIndex}this._fallbackFontDict=null}_hasFlag(e,t){return!!(e&t)}_isViewable(e){return!this._hasFlag(e,a.AnnotationFlag.INVISIBLE)&&!this._hasFlag(e,a.AnnotationFlag.NOVIEW)}_isPrintable(e){return this._hasFlag(e,a.AnnotationFlag.PRINT)&&!this._hasFlag(e,a.AnnotationFlag.INVISIBLE)}mustBeViewed(e){const t=e&&e.get(this.data.id);return t&&void 0!==t.hidden?!t.hidden:this.viewable&&!this._hasFlag(this.flags,a.AnnotationFlag.HIDDEN)}mustBePrinted(e){const t=e&&e.get(this.data.id);return t&&void 0!==t.print?t.print:this.printable}get viewable(){return null!==this.data.quadPoints&&(0===this.flags||this._isViewable(this.flags))}get printable(){return null!==this.data.quadPoints&&(0!==this.flags&&this._isPrintable(this.flags))}setContents(e){this.contents=(0,a.stringToPDFString)(e||"")}setModificationDate(e){this.modificationDate=(0,a.isString)(e)?e:null}setFlags(e){this.flags=Number.isInteger(e)&&e>0?e:0}hasFlag(e){return this._hasFlag(this.flags,e)}setRectangle(e){Array.isArray(e)&&4===e.length?this.rectangle=a.Util.normalizeRect(e):this.rectangle=[0,0,0,0]}setColor(e){this.color=getRgbColor(e)}setBorderStyle(e){this.borderStyle=new AnnotationBorderStyle;if((0,s.isDict)(e))if(e.has("BS")){const t=e.get("BS"),r=t.get("Type");if(!r||(0,s.isName)(r,"Border")){this.borderStyle.setWidth(t.get("W"),this.rectangle);this.borderStyle.setStyle(t.get("S"));this.borderStyle.setDashArray(t.getArray("D"))}}else if(e.has("Border")){const t=e.getArray("Border");if(Array.isArray(t)&&t.length>=3){this.borderStyle.setHorizontalCornerRadius(t[0]);this.borderStyle.setVerticalCornerRadius(t[1]);this.borderStyle.setWidth(t[2],this.rectangle);4===t.length&&this.borderStyle.setDashArray(t[3])}}else this.borderStyle.setWidth(0)}setAppearance(e){this.appearance=null;const t=e.get("AP");if(!(0,s.isDict)(t))return;const r=t.get("N");if((0,s.isStream)(r)){this.appearance=r;return}if(!(0,s.isDict)(r))return;const a=e.get("AS");(0,s.isName)(a)&&r.has(a.name)&&(this.appearance=r.get(a.name))}loadResources(e){return this.appearance.dict.getAsync("Resources").then((t=>{if(!t)return;return new h.ObjectLoader(t,e,t.xref).load().then((function(){return t}))}))}getOperatorList(e,t,r,i){if(!this.appearance)return Promise.resolve(new u.OperatorList);const n=this.appearance,s=this.data,o=n.dict,c=this.loadResources(["ExtGState","ColorSpace","Pattern","Shading","XObject","Font"]),l=o.getArray("BBox")||[0,0,1,1],h=o.getArray("Matrix")||[1,0,0,1,0,0],d=getTransformMatrix(s.rect,l,h);return c.then((r=>{const i=new u.OperatorList;i.addOp(a.OPS.beginAnnotation,[s.id,s.rect,d,h]);return e.getOperatorList({stream:n,task:t,resources:r,operatorList:i,fallbackFontDict:this._fallbackFontDict}).then((()=>{i.addOp(a.OPS.endAnnotation,[]);this.reset();return i}))}))}async save(e,t,r){return null}getFieldObject(){return this.data.kidIds?{id:this.data.id,actions:this.data.actions,name:this.data.fieldName,type:"",kidIds:this.data.kidIds,page:this.data.pageIndex}:null}reset(){for(const e of this._streams)e.reset()}_constructFieldName(e){if(!e.has("T")&&!e.has("Parent")){(0,a.warn)("Unknown field name, falling back to empty field name.");return""}if(!e.has("Parent"))return(0,a.stringToPDFString)(e.get("T"));const t=[];e.has("T")&&t.unshift((0,a.stringToPDFString)(e.get("T")));let r=e;const i=new s.RefSet;e.objId&&i.put(e.objId);for(;r.has("Parent");){r=r.get("Parent");if(!(r instanceof s.Dict)||r.objId&&i.has(r.objId))break;r.objId&&i.put(r.objId);r.has("T")&&t.unshift((0,a.stringToPDFString)(r.get("T")))}return t.join(".")}}t.Annotation=Annotation;class AnnotationBorderStyle{constructor(){this.width=1;this.style=a.AnnotationBorderStyleType.SOLID;this.dashArray=[3];this.horizontalCornerRadius=0;this.verticalCornerRadius=0}setWidth(e,t=[0,0,0,0]){if((0,s.isName)(e))this.width=0;else if(Number.isInteger(e)){if(e>0){const r=(t[2]-t[0])/2,i=(t[3]-t[1])/2;if(r>0&&i>0&&(e>r||e>i)){(0,a.warn)(`AnnotationBorderStyle.setWidth - ignoring width: ${e}`);e=1}}this.width=e}}setStyle(e){if((0,s.isName)(e))switch(e.name){case"S":this.style=a.AnnotationBorderStyleType.SOLID;break;case"D":this.style=a.AnnotationBorderStyleType.DASHED;break;case"B":this.style=a.AnnotationBorderStyleType.BEVELED;break;case"I":this.style=a.AnnotationBorderStyleType.INSET;break;case"U":this.style=a.AnnotationBorderStyleType.UNDERLINE}}setDashArray(e){if(Array.isArray(e)&&e.length>0){let t=!0,r=!0;for(const a of e){if(!(+a>=0)){t=!1;break}a>0&&(r=!1)}t&&!r?this.dashArray=e:this.width=0}else e&&(this.width=0)}setHorizontalCornerRadius(e){Number.isInteger(e)&&(this.horizontalCornerRadius=e)}setVerticalCornerRadius(e){Number.isInteger(e)&&(this.verticalCornerRadius=e)}}t.AnnotationBorderStyle=AnnotationBorderStyle;class MarkupAnnotation extends Annotation{constructor(e){super(e);const t=e.dict;if(t.has("IRT")){const e=t.getRaw("IRT");this.data.inReplyTo=(0,s.isRef)(e)?e.toString():null;const r=t.get("RT");this.data.replyType=(0,s.isName)(r)?r.name:a.AnnotationReplyType.REPLY}if(this.data.replyType===a.AnnotationReplyType.GROUP){const e=t.get("IRT");this.data.title=(0,a.stringToPDFString)(e.get("T")||"");this.setContents(e.get("Contents"));this.data.contents=this.contents;if(e.has("CreationDate")){this.setCreationDate(e.get("CreationDate"));this.data.creationDate=this.creationDate}else this.data.creationDate=null;if(e.has("M")){this.setModificationDate(e.get("M"));this.data.modificationDate=this.modificationDate}else this.data.modificationDate=null;this.data.hasPopup=e.has("Popup");if(e.has("C")){this.setColor(e.getArray("C"));this.data.color=this.color}else this.data.color=null}else{this.data.title=(0,a.stringToPDFString)(t.get("T")||"");this.setCreationDate(t.get("CreationDate"));this.data.creationDate=this.creationDate;this.data.hasPopup=t.has("Popup");t.has("C")||(this.data.color=null)}}setCreationDate(e){this.creationDate=(0,a.isString)(e)?e:null}_setDefaultAppearance({xref:e,extra:t,strokeColor:r,fillColor:a,blendMode:i,strokeAlpha:n,fillAlpha:o,pointsCallback:c}){let l=Number.MAX_VALUE,h=Number.MAX_VALUE,u=Number.MIN_VALUE,f=Number.MIN_VALUE;const g=["q"];t&&g.push(t);r&&g.push(`${r[0]} ${r[1]} ${r[2]} RG`);a&&g.push(`${a[0]} ${a[1]} ${a[2]} rg`);let p=this.data.quadPoints;p||(p=[[{x:this.rectangle[0],y:this.rectangle[3]},{x:this.rectangle[2],y:this.rectangle[3]},{x:this.rectangle[0],y:this.rectangle[1]},{x:this.rectangle[2],y:this.rectangle[1]}]]);for(const e of p){const[t,r,a,i]=c(g,e);l=Math.min(l,t);u=Math.max(u,r);h=Math.min(h,a);f=Math.max(f,i)}g.push("Q");const m=new s.Dict(e),b=new s.Dict(e);b.set("Subtype",s.Name.get("Form"));const y=new d.StringStream(g.join(" "));y.dict=b;m.set("Fm0",y);const w=new s.Dict(e);i&&w.set("BM",s.Name.get(i));"number"==typeof n&&w.set("CA",n);"number"==typeof o&&w.set("ca",o);const S=new s.Dict(e);S.set("GS0",w);const x=new s.Dict(e);x.set("ExtGState",S);x.set("XObject",m);const k=new s.Dict(e);k.set("Resources",x);const C=this.data.rect=[l,h,u,f];k.set("BBox",C);this.appearance=new d.StringStream("/GS0 gs /Fm0 Do");this.appearance.dict=k;this._streams.push(this.appearance,y)}}t.MarkupAnnotation=MarkupAnnotation;class WidgetAnnotation extends Annotation{constructor(e){super(e);const t=e.dict,r=this.data;this.ref=e.ref;r.annotationType=a.AnnotationType.WIDGET;void 0===r.fieldName&&(r.fieldName=this._constructFieldName(t));void 0===r.actions&&(r.actions=(0,i.collectActions)(e.xref,t,a.AnnotationActionEventType));const o=(0,i.getInheritableProperty)({dict:t,key:"V",getArray:!0});r.fieldValue=this._decodeFormValue(o);const c=(0,i.getInheritableProperty)({dict:t,key:"DV",getArray:!0});r.defaultFieldValue=this._decodeFormValue(c);r.alternativeText=(0,a.stringToPDFString)(t.get("TU")||"");const l=(0,i.getInheritableProperty)({dict:t,key:"DA"})||e.acroForm.get("DA");this._defaultAppearance=(0,a.isString)(l)?l:"";r.defaultAppearanceData=(0,n.parseDefaultAppearance)(this._defaultAppearance);const h=(0,i.getInheritableProperty)({dict:t,key:"FT"});r.fieldType=(0,s.isName)(h)?h.name:null;const u=(0,i.getInheritableProperty)({dict:t,key:"DR"}),d=e.acroForm.get("DR"),f=this.appearance&&this.appearance.dict.get("Resources");this._fieldResources={localResources:u,acroFormResources:d,appearanceResources:f,mergedResources:s.Dict.merge({xref:e.xref,dictArray:[u,f,d],mergeSubDicts:!0})};r.fieldFlags=(0,i.getInheritableProperty)({dict:t,key:"Ff"});(!Number.isInteger(r.fieldFlags)||r.fieldFlags<0)&&(r.fieldFlags=0);r.readOnly=this.hasFieldFlag(a.AnnotationFieldFlag.READONLY);r.hidden=this._hasFlag(r.annotationFlags,a.AnnotationFlag.HIDDEN)}_decodeFormValue(e){return Array.isArray(e)?e.filter((e=>(0,a.isString)(e))).map((e=>(0,a.stringToPDFString)(e))):(0,s.isName)(e)?(0,a.stringToPDFString)(e.name):(0,a.isString)(e)?(0,a.stringToPDFString)(e):null}hasFieldFlag(e){return!!(this.data.fieldFlags&e)}getOperatorList(e,t,r,i){return!r||this instanceof SignatureWidgetAnnotation?this._hasText?this._getAppearance(e,t,i).then((n=>{if(this.appearance&&null===n)return super.getOperatorList(e,t,r,i);const s=new u.OperatorList;if(!this._defaultAppearance||null===n)return s;const o=[1,0,0,1,0,0],c=[0,0,this.data.rect[2]-this.data.rect[0],this.data.rect[3]-this.data.rect[1]],l=getTransformMatrix(this.data.rect,c,o);s.addOp(a.OPS.beginAnnotation,[this.data.id,this.data.rect,l,o]);const h=new d.StringStream(n);return e.getOperatorList({stream:h,task:t,resources:this._fieldResources.mergedResources,operatorList:s}).then((function(){s.addOp(a.OPS.endAnnotation,[]);return s}))})):super.getOperatorList(e,t,r,i):Promise.resolve(new u.OperatorList)}async save(e,t,r){if(!r)return null;const i=r.get(this.data.id),n=i&&i.value;if(n===this.data.fieldValue||void 0===n)return null;let o=await this._getAppearance(e,t,r);if(null===o)return null;const{xref:c}=e,l=c.fetchIfRef(this.ref);if(!(0,s.isDict)(l))return null;const h=[0,0,this.data.rect[2]-this.data.rect[0],this.data.rect[3]-this.data.rect[1]],u={path:(0,a.stringToPDFString)(l.get("T")||""),value:n},d=c.getNewRef(),g=new s.Dict(c);g.set("N",d);const p=c.encrypt;let m=null,b=null;if(p){m=p.createCipherTransform(this.ref.num,this.ref.gen);b=p.createCipherTransform(d.num,d.gen);o=b.encryptString(o)}l.set("V",(0,a.isAscii)(n)?n:(0,a.stringToUTF16BEString)(n));l.set("AP",g);l.set("M",`D:${(0,a.getModificationDate)()}`);const y=new s.Dict(c);y.set("Length",o.length);y.set("Subtype",s.Name.get("Form"));y.set("Resources",this._getSaveFieldResources(c));y.set("BBox",h);const w=[`${this.ref.num} ${this.ref.gen} obj\n`];(0,f.writeDict)(l,w,m);w.push("\nendobj\n");const S=[`${d.num} ${d.gen} obj\n`];(0,f.writeDict)(y,S,b);S.push(" stream\n",o,"\nendstream\nendobj\n");return[{ref:this.ref,data:w.join(""),xfa:u},{ref:d,data:S.join(""),xfa:null}]}async _getAppearance(e,t,r){const i=this.hasFieldFlag(a.AnnotationFieldFlag.PASSWORD);if(!r||i)return null;const s=r.get(this.data.id);let o=s&&s.value;if(void 0===o)return null;o=o.trim();if(""===o)return"";let c=-1;this.data.multiLine&&(c=o.split(/\r\n|\r|\n/).length);const l=this.data.rect[3]-this.data.rect[1],h=this.data.rect[2]-this.data.rect[0];this._defaultAppearance||(this.data.defaultAppearanceData=(0,n.parseDefaultAppearance)(this._defaultAppearance="/Helvetica 0 Tf 0 g"));const[u,d]=this._computeFontSize(l,c),f=await this._getFontData(e,t);let g=f.descent;isNaN(g)&&(g=0);const p=2+Math.abs(g)*d,m=this.data.textAlignment;if(this.data.multiLine)return this._getMultilineAppearance(u,o,f,d,h,l,m,2,p);const b=f.encodeString(o).join("");if(this.data.comb)return this._getCombAppearance(u,f,b,h,2,p);if(0===m||m>2)return"/Tx BMC q BT "+u+` 1 0 0 1 2 ${p} Tm (${(0,a.escapeString)(b)}) Tj ET Q EMC`;return"/Tx BMC q BT "+u+` 1 0 0 1 0 0 Tm ${this._renderText(b,f,d,h,m,2,p)} ET Q EMC`}async _getFontData(e,t){const r=new u.OperatorList,a={font:null,clone(){return this}},{fontName:i,fontSize:n}=this.data.defaultAppearanceData;await e.handleSetFont(this._fieldResources.mergedResources,[i&&s.Name.get(i),n],null,r,t,a,null);return a.font}_computeFontSize(e,t){let{fontSize:r}=this.data.defaultAppearanceData;if(!r){const roundWithOneDigit=e=>Math.round(10*e)/10,a=.8;if(-1===t)r=roundWithOneDigit(a*e);else{r=10;let i=r/a,n=Math.round(e/i);n=Math.max(n,t);i=e/n;r=roundWithOneDigit(a*i)}const{fontName:i,fontColor:s}=this.data.defaultAppearanceData;this._defaultAppearance=(0,n.createDefaultAppearance)({fontSize:r,fontName:i,fontColor:s})}return[this._defaultAppearance,r]}_renderText(e,t,r,i,n,s,o){const c=t.charsToGlyphs(e),l=r/1e3;let h,u=0;for(const e of c)u+=e.width*l;h=1===n?(i-u)/2:2===n?i-u-s:s;h=h.toFixed(2);return`${h} ${o=o.toFixed(2)} Td (${(0,a.escapeString)(e)}) Tj`}_getSaveFieldResources(e){const{localResources:t,appearanceResources:r,acroFormResources:a}=this._fieldResources,i=this.data.defaultAppearanceData&&this.data.defaultAppearanceData.fontName;if(!i)return t||s.Dict.empty;for(const e of[t,r])if(e instanceof s.Dict){const t=e.get("Font");if(t instanceof s.Dict&&t.has(i))return e}if(a instanceof s.Dict){const r=a.get("Font");if(r instanceof s.Dict&&r.has(i)){const a=new s.Dict(e);a.set(i,r.getRaw(i));const n=new s.Dict(e);n.set("Font",a);return s.Dict.merge({xref:e,dictArray:[n,t],mergeSubDicts:!0})}}return t||s.Dict.empty}getFieldObject(){return null}}class TextWidgetAnnotation extends WidgetAnnotation{constructor(e){super(e);this._hasText=!0;const t=e.dict;(0,a.isString)(this.data.fieldValue)||(this.data.fieldValue="");let r=(0,i.getInheritableProperty)({dict:t,key:"Q"});(!Number.isInteger(r)||r<0||r>2)&&(r=null);this.data.textAlignment=r;let n=(0,i.getInheritableProperty)({dict:t,key:"MaxLen"});(!Number.isInteger(n)||n<0)&&(n=null);this.data.maxLen=n;this.data.multiLine=this.hasFieldFlag(a.AnnotationFieldFlag.MULTILINE);this.data.comb=this.hasFieldFlag(a.AnnotationFieldFlag.COMB)&&!this.hasFieldFlag(a.AnnotationFieldFlag.MULTILINE)&&!this.hasFieldFlag(a.AnnotationFieldFlag.PASSWORD)&&!this.hasFieldFlag(a.AnnotationFieldFlag.FILESELECT)&&null!==this.data.maxLen}_getCombAppearance(e,t,r,i,n,s){const o=(i/this.data.maxLen).toFixed(2),c=[],l=t.getCharPositions(r);for(const[e,t]of l)c.push(`(${(0,a.escapeString)(r.substring(e,t))}) Tj`);return"/Tx BMC q BT "+e+` 1 0 0 1 ${n} ${s} Tm ${c.join(` ${o} 0 Td `)} ET Q EMC`}_getMultilineAppearance(e,t,r,a,i,n,s,o,c){const l=t.split(/\r\n|\r|\n/),h=[],u=i-2*o;for(const e of l){const t=this._splitLine(e,r,a,u);for(const e of t){const t=0===h.length?o:0;h.push(this._renderText(e,r,a,i,s,t,-a))}}return"/Tx BMC q BT "+e+` 1 0 0 1 0 ${n} Tm ${h.join("\n")} ET Q EMC`}_splitLine(e,t,r,a){e=t.encodeString(e).join("");const i=t.charsToGlyphs(e);if(i.length<=1)return[e];const n=t.getCharPositions(e),s=r/1e3,o=[];let c=-1,l=-1,h=-1,u=0,d=0;for(let t=0,r=i.length;ta){o.push(e.substring(u,r));u=r;d=p;c=-1;h=-1}else{d+=p;c=r;l=f;h=t}else if(d+p>a)if(-1!==c){o.push(e.substring(u,l));u=l;t=h+1;c=-1;d=0}else{o.push(e.substring(u,r));u=r;d=p}else d+=p}u0?this.data.fieldValue[0]:null;return{id:this.data.id,value:t,defaultValue:this.data.defaultFieldValue,editable:!this.data.readOnly,name:this.data.fieldName,rect:this.data.rect,numItems:this.data.fieldValue.length,multipleSelection:this.data.multiSelect,hidden:this.data.hidden,actions:this.data.actions,items:this.data.options,page:this.data.pageIndex,type:e}}}class SignatureWidgetAnnotation extends WidgetAnnotation{constructor(e){super(e);this.data.fieldValue=null}getFieldObject(){return{id:this.data.id,value:null,page:this.data.pageIndex,type:"signature"}}}class TextAnnotation extends MarkupAnnotation{constructor(e){super(e);const t=e.dict;this.data.annotationType=a.AnnotationType.TEXT;if(this.data.hasAppearance)this.data.name="NoIcon";else{this.data.rect[1]=this.data.rect[3]-22;this.data.rect[2]=this.data.rect[0]+22;this.data.name=t.has("Name")?t.get("Name").name:"Note"}if(t.has("State")){this.data.state=t.get("State")||null;this.data.stateModel=t.get("StateModel")||null}else{this.data.state=null;this.data.stateModel=null}}}class LinkAnnotation extends Annotation{constructor(e){super(e);this.data.annotationType=a.AnnotationType.LINK;const t=getQuadPoints(e.dict,this.rectangle);t&&(this.data.quadPoints=t);o.Catalog.parseDestDictionary({destDict:e.dict,resultObj:this.data,docBaseUrl:e.pdfManager.docBaseUrl})}}class PopupAnnotation extends Annotation{constructor(e){super(e);this.data.annotationType=a.AnnotationType.POPUP;let t=e.dict.get("Parent");if(!t){(0,a.warn)("Popup annotation has a missing or invalid parent annotation.");return}const r=t.get("Subtype");this.data.parentType=(0,s.isName)(r)?r.name:null;const i=e.dict.getRaw("Parent");this.data.parentId=(0,s.isRef)(i)?i.toString():null;const n=t.getArray("Rect");Array.isArray(n)&&4===n.length?this.data.parentRect=a.Util.normalizeRect(n):this.data.parentRect=[0,0,0,0];const o=t.get("RT");(0,s.isName)(o,a.AnnotationReplyType.GROUP)&&(t=t.get("IRT"));if(t.has("M")){this.setModificationDate(t.get("M"));this.data.modificationDate=this.modificationDate}else this.data.modificationDate=null;if(t.has("C")){this.setColor(t.getArray("C"));this.data.color=this.color}else this.data.color=null;if(!this.viewable){const e=t.get("F");this._isViewable(e)&&this.setFlags(e)}this.data.title=(0,a.stringToPDFString)(t.get("T")||"");this.data.contents=(0,a.stringToPDFString)(t.get("Contents")||"")}}class FreeTextAnnotation extends MarkupAnnotation{constructor(e){super(e);this.data.annotationType=a.AnnotationType.FREETEXT}}class LineAnnotation extends MarkupAnnotation{constructor(e){super(e);this.data.annotationType=a.AnnotationType.LINE;const t=e.dict.getArray("L");this.data.lineCoordinates=a.Util.normalizeRect(t);if(!this.appearance){const r=this.color?Array.from(this.color).map((e=>e/255)):[0,0,0],i=e.dict.get("CA");let n=null,s=e.dict.getArray("IC");if(s){s=getRgbColor(s);n=s?Array.from(s).map((e=>e/255)):null}const o=n?i:null,c=this.borderStyle.width||1,l=2*c,h=[this.data.lineCoordinates[0]-l,this.data.lineCoordinates[1]-l,this.data.lineCoordinates[2]+l,this.data.lineCoordinates[3]+l];a.Util.intersect(this.rectangle,h)||(this.rectangle=h);this._setDefaultAppearance({xref:e.xref,extra:`${c} w`,strokeColor:r,fillColor:n,strokeAlpha:i,fillAlpha:o,pointsCallback:(e,r)=>{e.push(`${t[0]} ${t[1]} m`,`${t[2]} ${t[3]} l`,"S");return[r[0].x-c,r[1].x+c,r[3].y-c,r[1].y+c]}})}}}class SquareAnnotation extends MarkupAnnotation{constructor(e){super(e);this.data.annotationType=a.AnnotationType.SQUARE;if(!this.appearance){const t=this.color?Array.from(this.color).map((e=>e/255)):[0,0,0],r=e.dict.get("CA");let a=null,i=e.dict.getArray("IC");if(i){i=getRgbColor(i);a=i?Array.from(i).map((e=>e/255)):null}const n=a?r:null;this._setDefaultAppearance({xref:e.xref,extra:`${this.borderStyle.width} w`,strokeColor:t,fillColor:a,strokeAlpha:r,fillAlpha:n,pointsCallback:(e,t)=>{const r=t[2].x+this.borderStyle.width/2,i=t[2].y+this.borderStyle.width/2,n=t[3].x-t[2].x-this.borderStyle.width,s=t[1].y-t[3].y-this.borderStyle.width;e.push(`${r} ${i} ${n} ${s} re`);a?e.push("B"):e.push("S");return[t[0].x,t[1].x,t[3].y,t[1].y]}})}}}class CircleAnnotation extends MarkupAnnotation{constructor(e){super(e);this.data.annotationType=a.AnnotationType.CIRCLE;if(!this.appearance){const t=this.color?Array.from(this.color).map((e=>e/255)):[0,0,0],r=e.dict.get("CA");let a=null,i=e.dict.getArray("IC");if(i){i=getRgbColor(i);a=i?Array.from(i).map((e=>e/255)):null}const n=a?r:null,s=4/3*Math.tan(Math.PI/8);this._setDefaultAppearance({xref:e.xref,extra:`${this.borderStyle.width} w`,strokeColor:t,fillColor:a,strokeAlpha:r,fillAlpha:n,pointsCallback:(e,t)=>{const r=t[0].x+this.borderStyle.width/2,i=t[0].y-this.borderStyle.width/2,n=t[3].x-this.borderStyle.width/2,o=t[3].y+this.borderStyle.width/2,c=r+(n-r)/2,l=i+(o-i)/2,h=(n-r)/2*s,u=(o-i)/2*s;e.push(`${c} ${o} m`,`${c+h} ${o} ${n} ${l+u} ${n} ${l} c`,`${n} ${l-u} ${c+h} ${i} ${c} ${i} c`,`${c-h} ${i} ${r} ${l-u} ${r} ${l} c`,`${r} ${l+u} ${c-h} ${o} ${c} ${o} c`,"h");a?e.push("B"):e.push("S");return[t[0].x,t[1].x,t[3].y,t[1].y]}})}}}class PolylineAnnotation extends MarkupAnnotation{constructor(e){super(e);this.data.annotationType=a.AnnotationType.POLYLINE;this.data.vertices=[];const t=e.dict.getArray("Vertices");if(Array.isArray(t)){for(let e=0,r=t.length;ee/255)):[0,0,0],r=e.dict.get("CA"),i=this.borderStyle.width||1,n=2*i,s=[1/0,1/0,-1/0,-1/0];for(const e of this.data.vertices){s[0]=Math.min(s[0],e.x-n);s[1]=Math.min(s[1],e.y-n);s[2]=Math.max(s[2],e.x+n);s[3]=Math.max(s[3],e.y+n)}a.Util.intersect(this.rectangle,s)||(this.rectangle=s);this._setDefaultAppearance({xref:e.xref,extra:`${i} w`,strokeColor:t,strokeAlpha:r,pointsCallback:(e,t)=>{const r=this.data.vertices;for(let t=0,a=r.length;te/255)):[0,0,0],r=e.dict.get("CA"),i=this.borderStyle.width||1,n=2*i,s=[1/0,1/0,-1/0,-1/0];for(const e of this.data.inkLists)for(const t of e){s[0]=Math.min(s[0],t.x-n);s[1]=Math.min(s[1],t.y-n);s[2]=Math.max(s[2],t.x+n);s[3]=Math.max(s[3],t.y+n)}a.Util.intersect(this.rectangle,s)||(this.rectangle=s);this._setDefaultAppearance({xref:e.xref,extra:`${i} w`,strokeColor:t,strokeAlpha:r,pointsCallback:(e,t)=>{for(const t of this.data.inkLists){for(let r=0,a=t.length;re/255)):[1,1,0],r=e.dict.get("CA");this._setDefaultAppearance({xref:e.xref,fillColor:t,blendMode:"Multiply",fillAlpha:r,pointsCallback:(e,t)=>{e.push(`${t[0].x} ${t[0].y} m`,`${t[1].x} ${t[1].y} l`,`${t[3].x} ${t[3].y} l`,`${t[2].x} ${t[2].y} l`,"f");return[t[0].x,t[1].x,t[3].y,t[1].y]}})}}else this.data.hasPopup=!1}}class UnderlineAnnotation extends MarkupAnnotation{constructor(e){super(e);this.data.annotationType=a.AnnotationType.UNDERLINE;if(this.data.quadPoints=getQuadPoints(e.dict,null)){if(!this.appearance){const t=this.color?Array.from(this.color).map((e=>e/255)):[0,0,0],r=e.dict.get("CA");this._setDefaultAppearance({xref:e.xref,extra:"[] 0 d 1 w",strokeColor:t,strokeAlpha:r,pointsCallback:(e,t)=>{e.push(`${t[2].x} ${t[2].y} m`,`${t[3].x} ${t[3].y} l`,"S");return[t[0].x,t[1].x,t[3].y,t[1].y]}})}}else this.data.hasPopup=!1}}class SquigglyAnnotation extends MarkupAnnotation{constructor(e){super(e);this.data.annotationType=a.AnnotationType.SQUIGGLY;if(this.data.quadPoints=getQuadPoints(e.dict,null)){if(!this.appearance){const t=this.color?Array.from(this.color).map((e=>e/255)):[0,0,0],r=e.dict.get("CA");this._setDefaultAppearance({xref:e.xref,extra:"[] 0 d 1 w",strokeColor:t,strokeAlpha:r,pointsCallback:(e,t)=>{const r=(t[0].y-t[2].y)/6;let a=r,i=t[2].x;const n=t[2].y,s=t[3].x;e.push(`${i} ${n+a} m`);do{i+=2;a=0===a?r:0;e.push(`${i} ${n+a} l`)}while(ie/255)):[0,0,0],r=e.dict.get("CA");this._setDefaultAppearance({xref:e.xref,extra:"[] 0 d 1 w",strokeColor:t,strokeAlpha:r,pointsCallback:(e,t)=>{e.push((t[0].x+t[2].x)/2+" "+(t[0].y+t[2].y)/2+" m",(t[1].x+t[3].x)/2+" "+(t[1].y+t[3].y)/2+" l","S");return[t[0].x,t[1].x,t[3].y,t[1].y]}})}}else this.data.hasPopup=!1}}class StampAnnotation extends MarkupAnnotation{constructor(e){super(e);this.data.annotationType=a.AnnotationType.STAMP}}class FileAttachmentAnnotation extends MarkupAnnotation{constructor(e){super(e);const t=new l.FileSpec(e.dict.get("FS"),e.xref);this.data.annotationType=a.AnnotationType.FILEATTACHMENT;this.data.file=t.serializable}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.createDefaultAppearance=function createDefaultAppearance({fontSize:e,fontName:t,fontColor:r}){let a;a=r.every((e=>0===e))?"0 g":Array.from(r).map((e=>(e/255).toFixed(2))).join(" ")+" rg";return`/${(0,n.escapePDFName)(t)} ${e} Tf ${a}`};t.parseDefaultAppearance=function parseDefaultAppearance(e){return new DefaultAppearanceEvaluator(e).parse()};var a=r(2),i=r(14),n=r(9),s=r(15),o=r(5),c=r(10);class DefaultAppearanceEvaluator extends s.EvaluatorPreprocessor{constructor(e){super(new c.StringStream(e))}parse(){const e={fn:0,args:[]},t={fontSize:0,fontName:"",fontColor:new Uint8ClampedArray(3)};try{for(;;){e.args.length=0;if(!this.read(e))break;if(0!==this.savedStatesDepth)continue;const{fn:r,args:n}=e;switch(0|r){case a.OPS.setFont:const[e,r]=n;e instanceof o.Name&&(t.fontName=e.name);"number"==typeof r&&r>0&&(t.fontSize=r);break;case a.OPS.setFillRGBColor:i.ColorSpace.singletons.rgb.getRgbItem(n,0,t.fontColor,0);break;case a.OPS.setFillGray:i.ColorSpace.singletons.gray.getRgbItem(n,0,t.fontColor,0);break;case a.OPS.setFillColorSpace:i.ColorSpace.singletons.cmyk.getRgbItem(n,0,t.fontColor,0)}}}catch(e){(0,a.warn)(`parseDefaultAppearance - ignoring errors: "${e}".`)}return t}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ColorSpace=void 0;var a=r(2),i=r(5),n=r(9);class ColorSpace{constructor(e,t){this.constructor===ColorSpace&&(0,a.unreachable)("Cannot initialize ColorSpace.");this.name=e;this.numComps=t}getRgb(e,t){const r=new Uint8ClampedArray(3);this.getRgbItem(e,t,r,0);return r}getRgbItem(e,t,r,i){(0,a.unreachable)("Should not call ColorSpace.getRgbItem")}getRgbBuffer(e,t,r,i,n,s,o){(0,a.unreachable)("Should not call ColorSpace.getRgbBuffer")}getOutputLength(e,t){(0,a.unreachable)("Should not call ColorSpace.getOutputLength")}isPassthrough(e){return!1}isDefaultDecode(e,t){return ColorSpace.isDefaultDecode(e,this.numComps)}fillRgb(e,t,r,a,i,n,s,o,c){const l=t*r;let h=null;const u=1<u&&"DeviceGray"!==this.name&&"DeviceRGB"!==this.name){const t=s<=8?new Uint8Array(u):new Uint16Array(u);for(let e=0;e=.99554525?1:adjustToRange(0,1,1.055*e**(1/2.4)-.055)}function adjustToRange(e,t,r){return Math.max(e,Math.min(t,r))}function decodeL(e){return e<0?-decodeL(-e):e>8?((e+16)/116)**3:.0011070564598794539*e}function convertToRgb(a,c,l,h,u,d){const f=adjustToRange(0,1,c[l]*d),g=adjustToRange(0,1,c[l+1]*d),p=adjustToRange(0,1,c[l+2]*d),m=1===f?1:f**a.GR,b=1===g?1:g**a.GG,y=1===p?1:p**a.GB,w=a.MXA*m+a.MXB*b+a.MXC*y,S=a.MYA*m+a.MYB*b+a.MYC*y,x=a.MZA*m+a.MZB*b+a.MZC*y,k=s;k[0]=w;k[1]=S;k[2]=x;const C=o;!function normalizeWhitePointToFlat(r,a,i){if(1===r[0]&&1===r[2]){i[0]=a[0];i[1]=a[1];i[2]=a[2];return}const s=i;matrixProduct(e,a,s);const o=n;!function convertToFlat(e,t,r){r[0]=1*t[0]/e[0];r[1]=1*t[1]/e[1];r[2]=1*t[2]/e[2]}(r,s,o);matrixProduct(t,o,i)}(a.whitePoint,k,C);const v=s;!function compensateBlackPoint(e,t,r){if(0===e[0]&&0===e[1]&&0===e[2]){r[0]=t[0];r[1]=t[1];r[2]=t[2];return}const a=decodeL(0),i=(1-a)/(1-decodeL(e[0])),n=1-i,s=(1-a)/(1-decodeL(e[1])),o=1-s,c=(1-a)/(1-decodeL(e[2])),l=1-c;r[0]=t[0]*i+n;r[1]=t[1]*s+o;r[2]=t[2]*c+l}(a.blackPoint,C,v);const F=o;!function normalizeWhitePointToD65(r,a,i){const s=i;matrixProduct(e,a,s);const o=n;!function convertToD65(e,t,r){r[0]=.95047*t[0]/e[0];r[1]=1*t[1]/e[1];r[2]=1.08883*t[2]/e[2]}(r,s,o);matrixProduct(t,o,i)}(i,v,F);const O=s;matrixProduct(r,F,O);h[u]=255*sRGBTransferFunction(O[0]);h[u+1]=255*sRGBTransferFunction(O[1]);h[u+2]=255*sRGBTransferFunction(O[2])}return class CalRGBCS extends ColorSpace{constructor(e,t,r,i){super("CalRGB",3);if(!e)throw new a.FormatError("WhitePoint missing - required for color space CalRGB");t=t||new Float32Array(3);r=r||new Float32Array([1,1,1]);i=i||new Float32Array([1,0,0,0,1,0,0,0,1]);const n=e[0],s=e[1],o=e[2];this.whitePoint=e;const c=t[0],l=t[1],h=t[2];this.blackPoint=t;this.GR=r[0];this.GG=r[1];this.GB=r[2];this.MXA=i[0];this.MYA=i[1];this.MZA=i[2];this.MXB=i[3];this.MYB=i[4];this.MZB=i[5];this.MXC=i[6];this.MYC=i[7];this.MZC=i[8];if(n<0||o<0||1!==s)throw new a.FormatError(`Invalid WhitePoint components for ${this.name}, no fallback available`);if(c<0||l<0||h<0){(0,a.info)(`Invalid BlackPoint for ${this.name} [${c}, ${l}, ${h}], falling back to default.`);this.blackPoint=new Float32Array(3)}if(this.GR<0||this.GG<0||this.GB<0){(0,a.info)(`Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ${this.name}, falling back to default.`);this.GR=this.GG=this.GB=1}}getRgbItem(e,t,r,a){convertToRgb(this,e,t,r,a,1)}getRgbBuffer(e,t,r,a,i,n,s){const o=1/((1<=6/29?e**3:108/841*(e-4/29);return t}function decode(e,t,r,a){return r+e*(a-r)/t}function convertToRgb(e,t,r,a,i,n){let s=t[r],o=t[r+1],c=t[r+2];if(!1!==a){s=decode(s,a,0,100);o=decode(o,a,e.amin,e.amax);c=decode(c,a,e.bmin,e.bmax)}o>e.amax?o=e.amax:oe.bmax?c=e.bmax:cthis.amax||this.bmin>this.bmax){(0,a.info)("Invalid Range, falling back to defaults");this.amin=-100;this.amax=100;this.bmin=-100;this.bmax=100}}getRgbItem(e,t,r,a){convertToRgb(this,e,t,!1,r,a)}getRgbBuffer(e,t,r,a,i,n,s){const o=(1<{Object.defineProperty(t,"__esModule",{value:!0});t.PartialEvaluator=t.EvaluatorPreprocessor=void 0;var a=r(2),i=r(16),n=r(5),s=r(34),o=r(38),c=r(37),l=r(41),h=r(40),u=r(49),d=r(42),f=r(50),g=r(17),p=r(52),m=r(10),b=r(53),y=r(14),w=r(19),S=r(39),x=r(9),k=r(54),C=r(55),v=r(61),F=r(62),O=r(63);const T=Object.freeze({maxImageSize:-1,disableFontFace:!1,ignoreErrors:!1,isEvalSupported:!0,fontExtraProperties:!1,useSystemFonts:!0,cMapUrl:null,standardFontDataUrl:null}),M=1,E=2,D=Promise.resolve();function normalizeBlendMode(e,t=!1){if(Array.isArray(e)){for(let t=0,r=e.length;t{t.put(e)}));return!1}async fetchBuiltInCMap(e){const t=this.builtInCMapCache.get(e);if(t)return t;let r;if(null!==this.options.cMapUrl){const t=`${this.options.cMapUrl}${e}.bcmap`,i=await fetch(t);if(!i.ok)throw new Error(`fetchBuiltInCMap: failed to fetch file "${t}" with "${i.statusText}".`);r={cMapData:new Uint8Array(await i.arrayBuffer()),compressionType:a.CMapCompressionType.BINARY}}else r=await this.handler.sendWithPromise("FetchBuiltInCMap",{name:e});r.compressionType!==a.CMapCompressionType.NONE&&this.builtInCMapCache.set(e,r);return r}async fetchStandardFontData(e){const t=this.standardFontDataCache.get(e);if(t)return new m.Stream(t);if(this.options.useSystemFonts&&"Symbol"!==e&&"ZapfDingbats"!==e)return null;const r=(0,l.getFontNameToFileMap)()[e];let i;if(null!==this.options.standardFontDataUrl){const e=`${this.options.standardFontDataUrl}${r}`,t=await fetch(e);t.ok?i=await t.arrayBuffer():(0,a.warn)(`fetchStandardFontData: failed to fetch file "${e}" with "${t.statusText}".`)}else try{i=await this.handler.sendWithPromise("FetchStandardFontData",{filename:r})}catch(e){(0,a.warn)(`fetchStandardFontData: failed to fetch file "${r}" with "${e}".`)}if(!i)return null;this.standardFontDataCache.set(e,i);return new m.Stream(i)}async buildFormXObject(e,t,r,i,s,o,c){const l=t.dict,h=l.getArray("Matrix");let u=l.getArray("BBox");u=Array.isArray(u)&&4===u.length?a.Util.normalizeRect(u):null;let d,f=null;if(l.has("OC")){f=await this.parseMarkedContentProps(l.get("OC"),e);i.addOp(a.OPS.beginMarkedContentProps,["OC",f])}const g=l.get("Group");if(g){d={matrix:h,bbox:u,smask:r,isolated:!1,knockout:!1};const t=g.get("S");let s=null;if((0,n.isName)(t,"Transparency")){d.isolated=g.get("I")||!1;d.knockout=g.get("K")||!1;if(g.has("CS")){const t=g.getRaw("CS"),r=y.ColorSpace.getCached(t,this.xref,c);s=r||await this.parseColorSpace({cs:t,resources:e,localColorSpaceCache:c})}}if(r&&r.backdrop){s=s||y.ColorSpace.singletons.rgb;r.backdrop=s.getRgb(r.backdrop,0)}i.addOp(a.OPS.beginGroup,[d])}i.addOp(a.OPS.paintFormXObjectBegin,[h,u]);return this.getOperatorList({stream:t,task:s,resources:l.get("Resources")||e,operatorList:i,initialState:o}).then((function(){i.addOp(a.OPS.paintFormXObjectEnd,[]);g&&i.addOp(a.OPS.endGroup,[d]);f&&i.addOp(a.OPS.endMarkedContent,[])}))}_sendImgData(e,t,r=!1){const a=t?[t.data.buffer]:null;return this.parsingType3Font||r?this.handler.send("commonobj",[e,"Image",t],a):this.handler.send("obj",[e,this.pageIndex,"Image",t],a)}async buildPaintImageXObject({resources:e,image:t,isInline:r=!1,operatorList:i,cacheKey:n,localImageCache:s,localColorSpaceCache:o}){const c=t.dict,l=c.objId,h=c.get("Width","W"),u=c.get("Height","H");if(!(h&&(0,a.isNum)(h)&&u&&(0,a.isNum)(u))){(0,a.warn)("Image dimensions are missing, or not numbers.");return}const d=this.options.maxImageSize;if(-1!==d&&h*u>d){(0,a.warn)("Image exceeded maximum allowed size and was removed.");return}let f,g;if(c.get("ImageMask","IM")||!1){const e=c.get("Width","W"),r=c.get("Height","H"),o=e+7>>3,h=t.getBytes(o*r,!0),u=c.getArray("Decode","D");f=O.PDFImage.createMask({imgArray:h,width:e,height:r,imageIsFromDecodeStream:t instanceof w.DecodeStream,inverseDecode:!!u&&u[0]>0});f.cached=!!n;g=[f];i.addOp(a.OPS.paintImageMaskXObject,g);n&&s.set(n,l,{fn:a.OPS.paintImageMaskXObject,args:g});return}const p=c.get("SMask","SM")||!1,m=c.get("Mask")||!1;if(r&&!p&&!m&&h+u<200){const n=new O.PDFImage({xref:this.xref,res:e,image:t,isInline:r,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:o});f=n.createImageData(!0);i.addOp(a.OPS.paintInlineImageXObject,[f]);return}let b=`img_${this.idFactory.createObjId()}`,y=!1;if(this.parsingType3Font)b=`${this.idFactory.getDocId()}_type3_${b}`;else if(l){y=this.globalImageCache.shouldCache(l,this.pageIndex);y&&(b=`${this.idFactory.getDocId()}_${b}`)}i.addDependency(b);g=[b,h,u];O.PDFImage.buildImage({xref:this.xref,res:e,image:t,isInline:r,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:o}).then((e=>{f=e.createImageData(!1);n&&l&&y&&this.globalImageCache.addByteSize(l,f.data.length);return this._sendImgData(b,f,y)})).catch((e=>{(0,a.warn)(`Unable to decode image "${b}": "${e}".`);return this._sendImgData(b,null,y)}));i.addOp(a.OPS.paintImageXObject,g);if(n){s.set(n,l,{fn:a.OPS.paintImageXObject,args:g});if(l){(0,a.assert)(!r,"Cannot cache an inline image globally.");this.globalImageCache.addPageIndex(l,this.pageIndex);y&&this.globalImageCache.setData(l,{objId:b,fn:a.OPS.paintImageXObject,args:g,byteSize:0})}}}handleSMask(e,t,r,a,i,n){const s=e.get("G"),o={subtype:e.get("S").name,backdrop:e.get("BC")},c=e.get("TR");if((0,f.isPDFFunction)(c)){const e=this._pdfFunctionFactory.create(c),t=new Uint8Array(256),r=new Float32Array(1);for(let a=0;a<256;a++){r[0]=a/255;e(r,0,r,0);t[a]=255*r[0]|0}o.transferMap=t}return this.buildFormXObject(t,s,o,r,a,i.state.clone(),n)}handleTransferFunction(e){let t;if(Array.isArray(e))t=e;else{if(!(0,f.isPDFFunction)(e))return null;t=[e]}const r=[];let a=0,i=0;for(const e of t){const t=this.xref.fetchIfRef(e);a++;if((0,n.isName)(t,"Identity")){r.push(null);continue}if(!(0,f.isPDFFunction)(t))return null;const s=this._pdfFunctionFactory.create(t),o=new Uint8Array(256),c=new Float32Array(1);for(let e=0;e<256;e++){c[0]=e/255;s(c,0,c,0);o[e]=255*c[0]|0}r.push(o);i++}return 1!==a&&4!==a||0===i?null:r}handleTilingType(e,t,r,i,s,o,c,l,h){const d=new F.OperatorList,f=n.Dict.merge({xref:this.xref,dictArray:[s.get("Resources"),r]});return this.getOperatorList({stream:i,task:c,resources:f,operatorList:d}).then((function(){const r=d.getIR(),a=(0,u.getTilingPatternIR)(r,s,t);o.addDependencies(d.dependencies);o.addOp(e,a);l&&h.set(l,s.objId,{operatorListIR:r,dict:s})})).catch((e=>{if(!(e instanceof a.AbortException)){if(!this.options.ignoreErrors)throw e;this.handler.send("UnsupportedFeature",{featureId:a.UNSUPPORTED_FEATURES.errorTilingPattern});(0,a.warn)(`handleTilingType - ignoring pattern: "${e}".`)}}))}handleSetFont(e,t,r,i,o,c,l=null,h=null){const u=t&&t[0]instanceof n.Name?t[0].name:null;return this.loadFont(u,r,e,l,h).then((t=>t.font.isType3Font?t.loadType3Data(this,e,o).then((function(){i.addDependencies(t.type3Dependencies);return t})).catch((e=>{this.handler.send("UnsupportedFeature",{featureId:a.UNSUPPORTED_FEATURES.errorFontLoadType3});return new TranslatedFont({loadedName:"g_font_error",font:new s.ErrorFont(`Type3 font load error: ${e}`),dict:t.font,evaluatorOptions:this.options})})):t)).then((e=>{c.font=e.font;e.send(this.handler);return e.loadedName}))}handleText(e,t){const r=t.font,i=r.charsToGlyphs(e);if(r.data){(!!(t.textRenderingMode&a.TextRenderingMode.ADD_TO_PATH_FLAG)||"Pattern"===t.fillColorSpace.name||r.disableFontFace||this.options.disableFontFace)&&PartialEvaluator.buildFontPaths(r,i,this.handler,this.options)}return i}ensureStateFont(e){if(e.font)return;const t=new a.FormatError("Missing setFont (Tf) operator before text rendering operator.");if(!this.options.ignoreErrors)throw t;this.handler.send("UnsupportedFeature",{featureId:a.UNSUPPORTED_FEATURES.errorFontState});(0,a.warn)(`ensureStateFont: "${t}".`)}async setGState({resources:e,gState:t,operatorList:r,cacheKey:i,task:s,stateManager:o,localGStateCache:c,localColorSpaceCache:l}){const h=t.objId;let u=!0;const d=[],f=t.getKeys();let g=Promise.resolve();for(let i=0,c=f.length;ithis.handleSetFont(e,null,h[0],r,s,o.state).then((function(e){r.addDependency(e);d.push([c,[e,h[1]]])}))));break;case"BM":d.push([c,normalizeBlendMode(h)]);break;case"SMask":if((0,n.isName)(h,"None")){d.push([c,!1]);break}if((0,n.isDict)(h)){u=!1;g=g.then((()=>this.handleSMask(h,e,r,s,o,l)));d.push([c,!0])}else(0,a.warn)("Unsupported SMask type");break;case"TR":const t=this.handleTransferFunction(h);d.push([c,t]);break;case"OP":case"op":case"OPM":case"BG":case"BG2":case"UCR":case"UCR2":case"TR2":case"HT":case"SM":case"SA":case"AIS":case"TK":(0,a.info)("graphic state operator "+c);break;default:(0,a.info)("Unknown graphic state operator "+c)}}return g.then((function(){d.length>0&&r.addOp(a.OPS.setGState,[d]);u&&c.set(i,h,d)}))}loadFont(e,t,r,i=null,c=null){const errorFont=async()=>new TranslatedFont({loadedName:"g_font_error",font:new s.ErrorFont(`Font "${e}" is not available.`),dict:t,evaluatorOptions:this.options}),l=this.xref;let h;if(t){if(!(0,n.isRef)(t))throw new a.FormatError('The "font" object should be a reference.');h=t}else{const t=r.get("Font");t&&(h=t.getRaw(e))}if(!h){const r=`Font "${e||t&&t.toString()}" is not available`;if(!this.options.ignoreErrors&&!this.parsingType3Font){(0,a.warn)(`${r}.`);return errorFont()}this.handler.send("UnsupportedFeature",{featureId:a.UNSUPPORTED_FEATURES.errorFontMissing});(0,a.warn)(`${r} -- attempting to fallback to a default font.`);h=i||PartialEvaluator.fallbackFontDict}if(this.fontCache.has(h))return this.fontCache.get(h);t=l.fetchIfRef(h);if(!(0,n.isDict)(t))return errorFont();if(t.cacheKey&&this.fontCache.has(t.cacheKey))return this.fontCache.get(t.cacheKey);const u=(0,a.createPromiseCapability)();let d;try{d=this.preEvaluateFont(t);d.cssFontInfo=c}catch(e){(0,a.warn)(`loadFont - preEvaluateFont failed: "${e}".`);return errorFont()}const{descriptor:f,hash:g}=d,p=(0,n.isRef)(h);let m;p&&(m=`f${h.toString()}`);if(g&&(0,n.isDict)(f)){f.fontAliases||(f.fontAliases=Object.create(null));const e=f.fontAliases;if(e[g]){const t=e[g].aliasRef;if(p&&t&&this.fontCache.has(t)){this.fontCache.putAlias(h,t);return this.fontCache.get(h)}}else e[g]={fontID:this.idFactory.createFontId()};p&&(e[g].aliasRef=h);m=e[g].fontID}if(p)this.fontCache.put(h,u.promise);else{m||(m=this.idFactory.createFontId());t.cacheKey=`cacheKey_${m}`;this.fontCache.put(t.cacheKey,u.promise)}(0,a.assert)(m&&m.startsWith("f"),'The "fontID" must be (correctly) defined.');t.loadedName=`${this.idFactory.getDocId()}_${m}`;this.translateFont(d).then((e=>{if(void 0!==e.fontType){l.stats.fontTypes[e.fontType]=!0}u.resolve(new TranslatedFont({loadedName:t.loadedName,font:e,dict:t,evaluatorOptions:this.options}))})).catch((e=>{this.handler.send("UnsupportedFeature",{featureId:a.UNSUPPORTED_FEATURES.errorFontTranslate});(0,a.warn)(`loadFont - translateFont failed: "${e}".`);try{const e=f&&f.get("FontFile3"),t=e&&e.get("Subtype"),r=(0,o.getFontType)(d.type,t&&t.name);l.stats.fontTypes[r]=!0}catch(e){}u.resolve(new TranslatedFont({loadedName:t.loadedName,font:new s.ErrorFont(e instanceof Error?e.message:e),dict:t,evaluatorOptions:this.options}))}));return u.promise}buildPath(e,t,r,i=!1){const n=e.length-1;r||(r=[]);if(n<0||e.fnArray[n]!==a.OPS.constructPath){if(i){(0,a.warn)(`Encountered path operator "${t}" inside of a text object.`);e.addOp(a.OPS.save,null)}e.addOp(a.OPS.constructPath,[[t],r]);i&&e.addOp(a.OPS.restore,null)}else{const a=e.argsArray[n];a[0].push(t);Array.prototype.push.apply(a[1],r)}}parseColorSpace({cs:e,resources:t,localColorSpaceCache:r}){return y.ColorSpace.parseAsync({cs:e,xref:this.xref,resources:t,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:r}).catch((e=>{if(e instanceof a.AbortException)return null;if(this.options.ignoreErrors){this.handler.send("UnsupportedFeature",{featureId:a.UNSUPPORTED_FEATURES.errorColorSpace});(0,a.warn)(`parseColorSpace - ignoring ColorSpace: "${e}".`);return null}throw e}))}parseShading({keyObj:e,shading:t,resources:r,localColorSpaceCache:a,localShadingPatternCache:i,matrix:n=null}){let s=i.get(e);if(!s){const o=u.Pattern.parseShading(t,n,this.xref,r,this.handler,this._pdfFunctionFactory,a).getIR();s=`pattern_${this.idFactory.createObjId()}`;i.set(e,s);this.handler.send("obj",[s,this.pageIndex,"Pattern",o])}return s}handleColorN(e,t,r,i,s,o,c,l,h,d){const f=r.pop();if(f instanceof n.Name){const g=f.name,p=h.getByName(g);if(p)try{const a=i.base?i.base.getRgb(r,0):null,n=(0,u.getTilingPatternIR)(p.operatorListIR,p.dict,a);e.addOp(t,n);return}catch(e){}const m=s.get(g);if(m){const s=(0,n.isStream)(m)?m.dict:m,u=s.get("PatternType");if(u===M){const a=i.base?i.base.getRgb(r,0):null;return this.handleTilingType(t,a,o,m,s,e,c,g,h)}if(u===E){const r=s.get("Shading"),a=s.getArray("Matrix"),i=this.parseShading({keyObj:m,shading:r,matrix:a,resources:o,localColorSpaceCache:l,localShadingPatternCache:d});e.addOp(t,["Shading",i]);return}throw new a.FormatError(`Unknown PatternType: ${u}`)}}throw new a.FormatError(`Unknown PatternName: ${f}`)}_parseVisibilityExpression(e,t,r){if(++t>10){(0,a.warn)("Visibility expression is too deeply nested");return}const i=e.length,s=this.xref.fetchIfRef(e[0]);if(i<2||!(0,n.isName)(s))(0,a.warn)("Invalid visibility expression");else{switch(s.name){case"And":case"Or":case"Not":r.push(s.name);break;default:(0,a.warn)(`Invalid operator ${s.name} in visibility expression`);return}for(let a=1;a0)return{type:"OCMD",expression:t}}const t=r.get("OCGs");if(Array.isArray(t)||(0,n.isDict)(t)){const e=[];if(Array.isArray(t))for(const r of t)e.push(r.toString());else e.push(t.objId);return{type:i,ids:e,policy:(0,n.isName)(r.get("P"))?r.get("P").name:null,expression:null}}if((0,n.isRef)(t))return{type:i,id:t.toString()}}return null}getOperatorList({stream:e,task:t,resources:r,operatorList:i,initialState:s=null,fallbackFontDict:o=null}){r=r||n.Dict.empty;s=s||new EvalState;if(!i)throw new Error('getOperatorList: missing "operatorList" parameter');const c=this,l=this.xref;let h=!1;const u=new p.LocalImageCache,d=new p.LocalColorSpaceCache,f=new p.LocalGStateCache,g=new p.LocalTilingPatternCache,m=new Map,b=r.get("XObject")||n.Dict.empty,w=r.get("Pattern")||n.Dict.empty,S=new StateManager(s),x=new EvaluatorPreprocessor(e,l,S),k=new TimeSlotManager;function closePendingRestoreOPS(e){for(let e=0,t=x.savedStatesDepth;e0&&i.addOp(a.OPS.setGState,[t]);e=null;continue}}next(new Promise((function(e,s){if(!M)throw new a.FormatError("GState must be referred to by name.");const o=r.get("ExtGState");if(!(o instanceof n.Dict))throw new a.FormatError("ExtGState should be a dictionary.");const l=o.get(T);if(!(l instanceof n.Dict))throw new a.FormatError("GState should be a dictionary.");c.setGState({resources:r,gState:l,operatorList:i,cacheKey:T,task:t,stateManager:S,localGStateCache:f,localColorSpaceCache:d}).then(e,s)})).catch((function(e){if(!(e instanceof a.AbortException)){if(!c.options.ignoreErrors)throw e;c.handler.send("UnsupportedFeature",{featureId:a.UNSUPPORTED_FEATURES.errorExtGState});(0,a.warn)(`getOperatorList - ignoring ExtGState: "${e}".`)}})));return;case a.OPS.moveTo:case a.OPS.lineTo:case a.OPS.curveTo:case a.OPS.curveTo2:case a.OPS.curveTo3:case a.OPS.closePath:case a.OPS.rectangle:c.buildPath(i,s,e,h);continue;case a.OPS.markPoint:case a.OPS.markPointProps:case a.OPS.beginCompat:case a.OPS.endCompat:continue;case a.OPS.beginMarkedContentProps:if(!(0,n.isName)(e[0])){(0,a.warn)(`Expected name for beginMarkedContentProps arg0=${e[0]}`);continue}if("OC"===e[0].name){next(c.parseMarkedContentProps(e[1],r).then((e=>{i.addOp(a.OPS.beginMarkedContentProps,["OC",e])})).catch((e=>{if(!(e instanceof a.AbortException)){if(!c.options.ignoreErrors)throw e;c.handler.send("UnsupportedFeature",{featureId:a.UNSUPPORTED_FEATURES.errorMarkedContent});(0,a.warn)(`getOperatorList - ignoring beginMarkedContentProps: "${e}".`)}})));return}e=[e[0].name,e[1]instanceof n.Dict?e[1].get("MCID"):null];break;case a.OPS.beginMarkedContent:case a.OPS.endMarkedContent:default:if(null!==e){for(v=0,F=e.length;v{if(!(e instanceof a.AbortException)){if(!this.options.ignoreErrors)throw e;this.handler.send("UnsupportedFeature",{featureId:a.UNSUPPORTED_FEATURES.errorOperatorList});(0,a.warn)(`getOperatorList - ignoring errors during "${t.name}" task: "${e}".`);closePendingRestoreOPS()}}))}getTextContent({stream:e,task:t,resources:r,stateManager:i=null,normalizeWhitespace:s=!1,combineTextItems:o=!1,includeMarkedContent:c=!1,sink:l,seenStyles:u=new Set}){r=r||n.Dict.empty;i=i||new StateManager(new TextState);const d=/\s/g,f={items:[],styles:Object.create(null)},g={initialized:!1,str:[],totalWidth:0,totalHeight:0,width:0,height:0,vertical:!1,lastCharSize:0,prevTransform:null,textAdvanceScale:0,spaceWidth:0,spaceInFlowMin:0,spaceInFlowMax:0,trackingSpaceMin:1/0,transform:null,fontName:null,hasEOL:!1,isLastCharWhiteSpace:!1},m=this,y=this.xref,w=[];let S=null;const x=new p.LocalImageCache,k=new p.LocalGStateCache,C=new EvaluatorPreprocessor(e,y,i);let v;function getCurrentTextTransform(){const e=v.font,t=[v.fontSize*v.textHScale,0,0,v.fontSize,0,v.textRise];if(e.isType3Font&&(v.fontSize<=1||e.isCharBBox)&&!(0,a.isArrayEqual)(v.fontMatrix,a.FONT_IDENTITY_MATRIX)){const r=e.bbox[3]-e.bbox[1];r>0&&(t[3]*=r*v.fontMatrix[3])}return a.Util.transform(v.ctm,a.Util.transform(v.textMatrix,t))}function ensureTextContentItem(){if(g.initialized)return g;const e=v.font,t=e.loadedName;if(!u.has(t)){u.add(t);f.styles[t]={fontFamily:e.fallbackName,ascent:e.ascent,descent:e.descent,vertical:e.vertical}}g.fontName=t;const r=g.transform=getCurrentTextTransform();if(e.vertical){g.width=g.totalWidth=Math.hypot(r[0],r[1]);g.height=g.totalHeight=0;g.vertical=!0}else{g.width=g.totalWidth=0;g.height=g.totalHeight=Math.hypot(r[2],r[3]);g.vertical=!1}const a=Math.hypot(v.textLineMatrix[0],v.textLineMatrix[1]),i=Math.hypot(v.ctm[0],v.ctm[1]);g.textAdvanceScale=i*a;g.lastCharSize=g.lastCharSize||0;const n=e.spaceWidth/1e3*v.fontSize;if(n){g.spaceWidth=n;g.trackingSpaceMin=.3*n;g.spaceInFlowMin=.3*n;g.spaceInFlowMax=1.3*n}else{g.spaceWidth=0;g.trackingSpaceMin=1/0}g.hasEOL=!1;g.initialized=!0;return g}function updateAdvanceScale(){if(!g.initialized)return;const e=Math.hypot(v.textLineMatrix[0],v.textLineMatrix[1]),t=Math.hypot(v.ctm[0],v.ctm[1])*e;if(t!==g.textAdvanceScale){if(g.vertical){g.totalHeight+=g.height*g.textAdvanceScale;g.height=0}else{g.totalWidth+=g.width*g.textAdvanceScale;g.width=0}g.textAdvanceScale=t}}function runBidiTransform(e){const t=e.str.join(""),r=(0,b.bidi)(t,-1,e.vertical);return{str:s?function replaceWhitespace(e){const t=e.length;let r,a=0;for(;a=32&&r<=127;)a++;return ag.width/g.textAdvanceScale){appendEOL();return}if(l>c)return;if(c>g.trackingSpaceMin)g.height+=c;else if(!addFakeSpaces(c,0,g.prevTransform))if(0===g.str.length){f.items.push({str:" ",dir:"ltr",width:0,height:c,transform:g.prevTransform,fontName:g.fontName,hasEOL:!1});g.isLastCharWhiteSpace=!0}else g.height+=c}else if(Math.abs(c)>g.height/g.textAdvanceScale)appendEOL();else if(!(l>s))if(s<=g.trackingSpaceMin)g.width+=s;else if(!addFakeSpaces(s,0,g.prevTransform))if(0===g.str.length){f.items.push({str:" ",dir:"ltr",width:s,height:0,transform:g.prevTransform,fontName:g.fontName,hasEOL:!1});g.isLastCharWhiteSpace=!0}else g.width+=s}();let c=ensureTextContentItem(),l=0,u=0;for(let e=0,r=n.length;eg.trackingSpaceMin&&addFakeSpaces(d,l);a.vertical?v.translateTextMatrix(0,d):v.translateTextMatrix(d,0);if(e){c=ensureTextContentItem();l=0}else l+=d}u=p}c.lastCharSize=u;a.vertical?c.height+=l:c.width+=l;c.prevTransform=getCurrentTextTransform()}function appendEOL(){if(g.initialized){g.hasEOL=!0;flushTextContentItem()}else f.items.length>0?f.items[f.items.length-1].hasEOL=!0:f.items.push({str:"",dir:"ltr",width:0,height:0,transform:getCurrentTextTransform(),fontName:v.font.loadedName,hasEOL:!0});g.isLastCharWhiteSpace=!1;g.lastCharSize=0}function addFakeSpaces(e,t,r=null){if(g.spaceInFlowMin<=e&&e<=g.spaceInFlowMax){if(g.initialized){g.str.push(" ");g.isLastCharWhiteSpace=!0}return!1}const a=g.fontName;let i=0;e*=g.textAdvanceScale;if(g.vertical){g.height+=t;i=e;e=0}else g.width+=t;flushTextContentItem();if(g.isLastCharWhiteSpace)return!0;g.isLastCharWhiteSpace=!0;f.items.push({str:" ",dir:"ltr",width:e,height:i,transform:r||getCurrentTextTransform(),fontName:a,hasEOL:!1});return!0}function flushTextContentItem(){if(g.initialized&&g.str){g.vertical?g.totalHeight+=g.height*g.textAdvanceScale:g.totalWidth+=g.width*g.textAdvanceScale;f.items.push(runBidiTransform(g));g.initialized=!1;g.str.length=0}}function enqueueChunk(){const e=f.items.length;if(e>0){l.enqueue(f,e);f.items=[];f.styles=Object.create(null)}}const F=new TimeSlotManager;return new Promise((function promiseBody(e,h){const next=function(t){enqueueChunk();Promise.all([t,l.ready]).then((function(){try{promiseBody(e,h)}catch(e){h(e)}}),h)};t.ensureNotTerminated();F.reset();const d={};let p,b=[];for(;!(p=F.check());){b.length=0;d.args=b;if(!C.read(d))break;v=i.state;const e=d.fn;b=d.args;switch(0|e){case a.OPS.setFont:var O=b[0].name,T=b[1];if(v.font&&O===v.fontName&&T===v.fontSize)break;flushTextContentItem();v.fontName=O;v.fontSize=T;next(handleSetFont(O,null));return;case a.OPS.setTextRise:flushTextContentItem();v.textRise=b[0];break;case a.OPS.setHScale:flushTextContentItem();v.textHScale=b[0]/100;break;case a.OPS.setLeading:flushTextContentItem();v.leading=b[0];break;case a.OPS.moveText:v.translateTextLineMatrix(b[0],b[1]);v.textMatrix=v.textLineMatrix.slice();break;case a.OPS.setLeadingMoveText:flushTextContentItem();v.leading=-b[1];v.translateTextLineMatrix(b[0],b[1]);v.textMatrix=v.textLineMatrix.slice();break;case a.OPS.nextLine:appendEOL();v.carriageReturn();break;case a.OPS.setTextMatrix:v.setTextMatrix(b[0],b[1],b[2],b[3],b[4],b[5]);v.setTextLineMatrix(b[0],b[1],b[2],b[3],b[4],b[5]);updateAdvanceScale();break;case a.OPS.setCharSpacing:v.charSpacing=b[0];break;case a.OPS.setWordSpacing:v.wordSpacing=b[0];break;case a.OPS.beginText:flushTextContentItem();v.textMatrix=a.IDENTITY_MATRIX.slice();v.textLineMatrix=a.IDENTITY_MATRIX.slice();break;case a.OPS.showSpacedText:if(!i.state.font){m.ensureStateFont(i.state);continue}const e=(v.font.vertical?1:-1)*v.fontSize/1e3,h=b[0];let d=!0;for(let t=0,r=h.length;t0){const e=w.join("");w.length=0;buildTextContentItem({chars:e,extraSpacing:0,isFirstChunk:d})}break;case a.OPS.showText:if(!i.state.font){m.ensureStateFont(i.state);continue}buildTextContentItem({chars:b[0],extraSpacing:0,isFirstChunk:!0});break;case a.OPS.nextLineShowText:if(!i.state.font){m.ensureStateFont(i.state);continue}g.hasEOL=!0;flushTextContentItem();v.carriageReturn();buildTextContentItem({chars:b[0],extraSpacing:0,isFirstChunk:!0});break;case a.OPS.nextLineSetSpacingShowText:if(!i.state.font){m.ensureStateFont(i.state);continue}g.hasEOL=!0;flushTextContentItem();v.wordSpacing=b[0];v.charSpacing=b[1];v.carriageReturn();buildTextContentItem({chars:b[2],extraSpacing:0,isFirstChunk:!0});break;case a.OPS.paintXObject:flushTextContentItem();S||(S=r.get("XObject")||n.Dict.empty);var M=b[0]instanceof n.Name,E=b[0].name;if(M&&x.getByName(E))break;next(new Promise((function(e,h){if(!M)throw new a.FormatError("XObject must be referred to by name.");let d=S.getRaw(E);if(d instanceof n.Ref){if(x.getByRef(d)){e();return}if(m.globalImageCache.getData(d,m.pageIndex)){e();return}d=y.fetch(d)}if(!(0,n.isStream)(d))throw new a.FormatError("XObject should be a stream");const f=d.dict.get("Subtype");if(!(0,n.isName)(f))throw new a.FormatError("XObject should have a Name subtype");if("Form"!==f.name){x.set(E,d.dict.objId,!0);e();return}const g=i.state.clone(),p=new StateManager(g),b=d.dict.getArray("Matrix");Array.isArray(b)&&6===b.length&&p.transform(b);enqueueChunk();const w={enqueueInvoked:!1,enqueue(e,t){this.enqueueInvoked=!0;l.enqueue(e,t)},get desiredSize(){return l.desiredSize},get ready(){return l.ready}};m.getTextContent({stream:d,task:t,resources:d.dict.get("Resources")||r,stateManager:p,normalizeWhitespace:s,combineTextItems:o,includeMarkedContent:c,sink:w,seenStyles:u}).then((function(){w.enqueueInvoked||x.set(E,d.dict.objId,!0);e()}),h)})).catch((function(e){if(!(e instanceof a.AbortException)){if(!m.options.ignoreErrors)throw e;(0,a.warn)(`getTextContent - ignoring XObject: "${e}".`)}})));return;case a.OPS.setGState:M=b[0]instanceof n.Name;E=b[0].name;if(M&&k.getByName(E))break;next(new Promise((function(e,t){if(!M)throw new a.FormatError("GState must be referred to by name.");const i=r.get("ExtGState");if(!(i instanceof n.Dict))throw new a.FormatError("ExtGState should be a dictionary.");const s=i.get(E);if(!(s instanceof n.Dict))throw new a.FormatError("GState should be a dictionary.");const o=s.get("Font");if(o){flushTextContentItem();v.fontName=null;v.fontSize=o[1];handleSetFont(null,o[0]).then(e,t)}else{k.set(E,s.objId,!0);e()}})).catch((function(e){if(!(e instanceof a.AbortException)){if(!m.options.ignoreErrors)throw e;(0,a.warn)(`getTextContent - ignoring ExtGState: "${e}".`)}})));return;case a.OPS.beginMarkedContent:c&&f.items.push({type:"beginMarkedContent",tag:(0,n.isName)(b[0])?b[0].name:null});break;case a.OPS.beginMarkedContentProps:if(c){flushTextContentItem();let e=null;(0,n.isDict)(b[1])&&(e=b[1].get("MCID"));f.items.push({type:"beginMarkedContentProps",id:Number.isInteger(e)?`${m.idFactory.getPageObjId()}_mcid${e}`:null,tag:(0,n.isName)(b[0])?b[0].name:null})}break;case a.OPS.endMarkedContent:if(c){flushTextContentItem();f.items.push({type:"endMarkedContent"})}}if(f.items.length>=l.desiredSize){p=!0;break}}if(p)next(D);else{flushTextContentItem();enqueueChunk();e()}})).catch((e=>{if(!(e instanceof a.AbortException)){if(!this.options.ignoreErrors)throw e;(0,a.warn)(`getTextContent - ignoring errors during "${t.name}" task: "${e}".`);flushTextContentItem();enqueueChunk()}}))}extractDataStructures(e,t,r){const i=this.xref;let s;const l=this.readToUnicode(r.toUnicode||e.get("ToUnicode")||t.get("ToUnicode"));if(r.composite){const t=e.get("CIDSystemInfo");(0,n.isDict)(t)&&(r.cidSystemInfo={registry:(0,a.stringToPDFString)(t.get("Registry")),ordering:(0,a.stringToPDFString)(t.get("Ordering")),supplement:t.get("Supplement")});const i=e.get("CIDToGIDMap");(0,n.isStream)(i)&&(s=i.getBytes())}const h=[];let u,d=null;if(e.has("Encoding")){u=e.get("Encoding");if((0,n.isDict)(u)){d=u.get("BaseEncoding");d=(0,n.isName)(d)?d.name:null;if(u.has("Differences")){const e=u.get("Differences");let t=0;for(let r=0,s=e.length;r0;r.dict=e;return l.then((e=>{r.toUnicode=e;return this.buildToUnicode(r)})).then((e=>{r.toUnicode=e;s&&(r.cidToGidMap=this.readCidToGidMap(s,e));return r}))}_simpleFontToUnicode(e,t=!1){(0,a.assert)(!e.composite,"Must be a simple font.");const r=[],i=e.defaultEncoding.slice(),n=e.baseEncodingName,s=e.differences;for(const e in s){const t=s[e];".notdef"!==t&&(i[e]=t)}const o=(0,S.getGlyphsUnicode)();for(const a in i){let s=i[a];if(""!==s)if(void 0!==o[s])r[a]=String.fromCharCode(o[s]);else{let i=0;switch(s[0]){case"G":3===s.length&&(i=parseInt(s.substring(1),16));break;case"g":5===s.length&&(i=parseInt(s.substring(1),16));break;case"C":case"c":if(s.length>=3&&s.length<=4){const r=s.substring(1);if(t){i=parseInt(r,16);break}i=+r;if(Number.isNaN(i)&&Number.isInteger(parseInt(r,16)))return this._simpleFontToUnicode(e,!0)}break;default:const r=(0,h.getUnicodeForGlyph)(s,o);-1!==r&&(i=r)}if(i>0&&i<=1114111&&Number.isInteger(i)){if(n&&i===+a){const e=(0,c.getEncoding)(n);if(e&&(s=e[a])){r[a]=String.fromCharCode(o[s]);continue}}r[a]=String.fromCodePoint(i)}}}return r}async buildToUnicode(e){e.hasIncludedToUnicodeMap=!!e.toUnicode&&e.toUnicode.length>0;if(e.hasIncludedToUnicodeMap){!e.composite&&e.hasEncoding&&(e.fallbackToUnicode=this._simpleFontToUnicode(e));return e.toUnicode}if(!e.composite)return new d.ToUnicodeMap(this._simpleFontToUnicode(e));if(e.composite&&(e.cMap.builtInCMap&&!(e.cMap instanceof i.IdentityCMap)||"Adobe"===e.cidSystemInfo.registry&&("GB1"===e.cidSystemInfo.ordering||"CNS1"===e.cidSystemInfo.ordering||"Japan1"===e.cidSystemInfo.ordering||"Korea1"===e.cidSystemInfo.ordering))){const{registry:t,ordering:r}=e.cidSystemInfo,s=n.Name.get(`${t}-${r}-UCS2`),o=await i.CMapFactory.create({encoding:s,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null}),c=[];e.cMap.forEach((function(e,t){if(t>65535)throw new a.FormatError("Max size of CID is 65,535");const r=o.lookup(t);r&&(c[e]=String.fromCharCode((r.charCodeAt(0)<<8)+r.charCodeAt(1)))}));return new d.ToUnicodeMap(c)}return new d.IdentityToUnicodeMap(e.firstChar,e.lastChar)}readToUnicode(e){return e?(0,n.isName)(e)?i.CMapFactory.create({encoding:e,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null}).then((function(e){return e instanceof i.IdentityCMap?new d.IdentityToUnicodeMap(0,65535):new d.ToUnicodeMap(e.getMap())})):(0,n.isStream)(e)?i.CMapFactory.create({encoding:e,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null}).then((function(e){if(e instanceof i.IdentityCMap)return new d.IdentityToUnicodeMap(0,65535);const t=new Array(e.length);e.forEach((function(e,r){const a=[];for(let e=0;e{if(e instanceof a.AbortException)return null;if(this.options.ignoreErrors){this.handler.send("UnsupportedFeature",{featureId:a.UNSUPPORTED_FEATURES.errorFontToUnicode});(0,a.warn)(`readToUnicode - ignoring ToUnicode data: "${e}".`);return null}throw e})):Promise.resolve(null):Promise.resolve(null)}readCidToGidMap(e,t){const r=[];for(let a=0,i=e.length;a>1;(0!==i||t.has(n))&&(r[n]=i)}return r}extractWidths(e,t,r){const a=this.xref;let i=[],s=0;const c=[];let l,h,u,d,f,g,p,m;if(r.composite){s=e.has("DW")?e.get("DW"):1e3;m=e.get("W");if(m)for(h=0,u=m.length;h{if(m){const e=[];let r=u;for(let t=0,a=m.length;t{this.extractWidths(t,e,r);return new s.Font(v.name,y,r)}))}static buildFontPaths(e,t,r,i){function buildPath(t){const n=`${e.loadedName}_path_${t}`;try{if(e.renderer.hasBuiltPath(t))return;r.send("commonobj",[n,"FontPath",e.renderer.getPathJs(t)])}catch(e){if(i.ignoreErrors){r.send("UnsupportedFeature",{featureId:a.UNSUPPORTED_FEATURES.errorFontBuildPath});(0,a.warn)(`buildFontPaths - ignoring ${n} glyph: "${e}".`);return}throw e}}for(const e of t){buildPath(e.fontChar);const t=e.accent;t&&t.fontChar&&buildPath(t.fontChar)}}static get fallbackFontDict(){const e=new n.Dict;e.set("BaseFont",n.Name.get("PDFJS-FallbackFont"));e.set("Type",n.Name.get("FallbackType"));e.set("Subtype",n.Name.get("FallbackType"));e.set("Encoding",n.Name.get("WinAnsiEncoding"));return(0,a.shadow)(this,"fallbackFontDict",e)}}t.PartialEvaluator=PartialEvaluator;class TranslatedFont{constructor({loadedName:e,font:t,dict:r,evaluatorOptions:a}){this.loadedName=e;this.font=t;this.dict=r;this._evaluatorOptions=a||T;this.type3Loaded=null;this.type3Dependencies=t.isType3Font?new Set:null;this.sent=!1}send(e){if(!this.sent){this.sent=!0;e.send("commonobj",[this.loadedName,"Font",this.font.exportData(this._evaluatorOptions.fontExtraProperties)])}}fallback(e){if(this.font.data){this.font.disableFontFace=!0;PartialEvaluator.buildFontPaths(this.font,this.font.glyphCacheValues,e,this._evaluatorOptions)}}loadType3Data(e,t,r){if(this.type3Loaded)return this.type3Loaded;if(!this.font.isType3Font)throw new Error("Must be a Type3 font.");const i=e.clone({ignoreErrors:!1});i.parsingType3Font=!0;const n=this.font,s=this.type3Dependencies;let o=Promise.resolve();const c=this.dict.get("CharProcs"),l=this.dict.get("Resources")||t,h=Object.create(null),u=!n.bbox||(0,a.isArrayEqual)(n.bbox,[0,0,0,0]);for(const e of c.getKeys())o=o.then((()=>{const t=c.get(e),n=new F.OperatorList;return i.getOperatorList({stream:t,task:r,resources:l,operatorList:n}).then((()=>{n.fnArray[0]===a.OPS.setCharWidthAndBounds&&this._removeType3ColorOperators(n,u);h[e]=n.getIR();for(const e of n.dependencies)s.add(e)})).catch((function(t){(0,a.warn)(`Type3 font resource "${e}" is not available.`);const r=new F.OperatorList;h[e]=r.getIR()}))}));this.type3Loaded=o.then((()=>{n.charProcOperatorList=h;if(this._bbox){n.isCharBBox=!0;n.bbox=this._bbox}}));return this.type3Loaded}_removeType3ColorOperators(e,t=!1){if(t){this._bbox||(this._bbox=[1/0,1/0,-1/0,-1/0]);const t=a.Util.normalizeRect(e.argsArray[0].slice(2));this._bbox[0]=Math.min(this._bbox[0],t[0]);this._bbox[1]=Math.min(this._bbox[1],t[1]);this._bbox[2]=Math.max(this._bbox[2],t[2]);this._bbox[3]=Math.max(this._bbox[3],t[3])}let r=1,i=e.length;for(;ro&&(0,a.info)(`Command ${i}: expected [0, ${o}] args, but received ${c} args.`);else{if(c!==o){const e=this.nonProcessedArgs;for(;c>o;){e.push(t.shift());c--}for(;c=a.OPS.moveTo&&s<=a.OPS.endPath&&++this._numInvalidPathOPS>EvaluatorPreprocessor.MAX_INVALID_PATH_OPS)throw new a.FormatError(`Invalid ${e}`);(0,a.warn)(`Skipping ${e}`);null!==t&&(t.length=0);continue}}this.preprocessCommand(s,t);e.fn=s;e.args=t;return!0}if(r===n.EOF)return!1;if(null!==r){null===t&&(t=[]);t.push(r);if(t.length>33)throw new a.FormatError("Too many arguments")}}}preprocessCommand(e,t){switch(0|e){case a.OPS.save:this.stateManager.save();break;case a.OPS.restore:this.stateManager.restore();break;case a.OPS.transform:this.stateManager.transform(t)}}}t.EvaluatorPreprocessor=EvaluatorPreprocessor},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.IdentityCMap=t.CMapFactory=t.CMap=void 0;var a=r(2),i=r(5),n=r(17),s=r(9),o=r(10);const c=["Adobe-GB1-UCS2","Adobe-CNS1-UCS2","Adobe-Japan1-UCS2","Adobe-Korea1-UCS2","78-EUC-H","78-EUC-V","78-H","78-RKSJ-H","78-RKSJ-V","78-V","78ms-RKSJ-H","78ms-RKSJ-V","83pv-RKSJ-H","90ms-RKSJ-H","90ms-RKSJ-V","90msp-RKSJ-H","90msp-RKSJ-V","90pv-RKSJ-H","90pv-RKSJ-V","Add-H","Add-RKSJ-H","Add-RKSJ-V","Add-V","Adobe-CNS1-0","Adobe-CNS1-1","Adobe-CNS1-2","Adobe-CNS1-3","Adobe-CNS1-4","Adobe-CNS1-5","Adobe-CNS1-6","Adobe-GB1-0","Adobe-GB1-1","Adobe-GB1-2","Adobe-GB1-3","Adobe-GB1-4","Adobe-GB1-5","Adobe-Japan1-0","Adobe-Japan1-1","Adobe-Japan1-2","Adobe-Japan1-3","Adobe-Japan1-4","Adobe-Japan1-5","Adobe-Japan1-6","Adobe-Korea1-0","Adobe-Korea1-1","Adobe-Korea1-2","B5-H","B5-V","B5pc-H","B5pc-V","CNS-EUC-H","CNS-EUC-V","CNS1-H","CNS1-V","CNS2-H","CNS2-V","ETHK-B5-H","ETHK-B5-V","ETen-B5-H","ETen-B5-V","ETenms-B5-H","ETenms-B5-V","EUC-H","EUC-V","Ext-H","Ext-RKSJ-H","Ext-RKSJ-V","Ext-V","GB-EUC-H","GB-EUC-V","GB-H","GB-V","GBK-EUC-H","GBK-EUC-V","GBK2K-H","GBK2K-V","GBKp-EUC-H","GBKp-EUC-V","GBT-EUC-H","GBT-EUC-V","GBT-H","GBT-V","GBTpc-EUC-H","GBTpc-EUC-V","GBpc-EUC-H","GBpc-EUC-V","H","HKdla-B5-H","HKdla-B5-V","HKdlb-B5-H","HKdlb-B5-V","HKgccs-B5-H","HKgccs-B5-V","HKm314-B5-H","HKm314-B5-V","HKm471-B5-H","HKm471-B5-V","HKscs-B5-H","HKscs-B5-V","Hankaku","Hiragana","KSC-EUC-H","KSC-EUC-V","KSC-H","KSC-Johab-H","KSC-Johab-V","KSC-V","KSCms-UHC-H","KSCms-UHC-HW-H","KSCms-UHC-HW-V","KSCms-UHC-V","KSCpc-EUC-H","KSCpc-EUC-V","Katakana","NWP-H","NWP-V","RKSJ-H","RKSJ-V","Roman","UniCNS-UCS2-H","UniCNS-UCS2-V","UniCNS-UTF16-H","UniCNS-UTF16-V","UniCNS-UTF32-H","UniCNS-UTF32-V","UniCNS-UTF8-H","UniCNS-UTF8-V","UniGB-UCS2-H","UniGB-UCS2-V","UniGB-UTF16-H","UniGB-UTF16-V","UniGB-UTF32-H","UniGB-UTF32-V","UniGB-UTF8-H","UniGB-UTF8-V","UniJIS-UCS2-H","UniJIS-UCS2-HW-H","UniJIS-UCS2-HW-V","UniJIS-UCS2-V","UniJIS-UTF16-H","UniJIS-UTF16-V","UniJIS-UTF32-H","UniJIS-UTF32-V","UniJIS-UTF8-H","UniJIS-UTF8-V","UniJIS2004-UTF16-H","UniJIS2004-UTF16-V","UniJIS2004-UTF32-H","UniJIS2004-UTF32-V","UniJIS2004-UTF8-H","UniJIS2004-UTF8-V","UniJISPro-UCS2-HW-V","UniJISPro-UCS2-V","UniJISPro-UTF8-V","UniJISX0213-UTF32-H","UniJISX0213-UTF32-V","UniJISX02132004-UTF32-H","UniJISX02132004-UTF32-V","UniKS-UCS2-H","UniKS-UCS2-V","UniKS-UTF16-H","UniKS-UTF16-V","UniKS-UTF32-H","UniKS-UTF32-V","UniKS-UTF8-H","UniKS-UTF8-V","V","WP-Symbol"],l=2**24-1;class CMap{constructor(e=!1){this.codespaceRanges=[[],[],[],[]];this.numCodespaceRanges=0;this._map=[];this.name="";this.vertical=!1;this.useCMap=null;this.builtInCMap=e}addCodespaceRange(e,t,r){this.codespaceRanges[e-1].push(t,r);this.numCodespaceRanges++}mapCidRange(e,t,r){if(t-e>l)throw new Error("mapCidRange - ignoring data above MAX_MAP_RANGE.");for(;e<=t;)this._map[e++]=r++}mapBfRange(e,t,r){if(t-e>l)throw new Error("mapBfRange - ignoring data above MAX_MAP_RANGE.");const a=r.length-1;for(;e<=t;){this._map[e++]=r;r=r.substring(0,a)+String.fromCharCode(r.charCodeAt(a)+1)}}mapBfRangeToArray(e,t,r){if(t-e>l)throw new Error("mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.");const a=r.length;let i=0;for(;e<=t&&i>>0;const s=i[n];for(let e=0,t=s.length;e=t&&a<=i){r.charcode=a;r.length=n+1;return}}}r.charcode=0;r.length=1}getCharCodeLength(e){const t=this.codespaceRanges;for(let r=0,a=t.length;r=i&&e<=n)return r+1}}return 1}get length(){return this._map.length}get isIdentityCMap(){if("Identity-H"!==this.name&&"Identity-V"!==this.name)return!1;if(65536!==this._map.length)return!1;for(let e=0;e<65536;e++)if(this._map[e]!==e)return!1;return!0}}t.CMap=CMap;class IdentityCMap extends CMap{constructor(e,t){super();this.vertical=e;this.addCodespaceRange(t,0,65535)}mapCidRange(e,t,r){(0,a.unreachable)("should not call mapCidRange")}mapBfRange(e,t,r){(0,a.unreachable)("should not call mapBfRange")}mapBfRangeToArray(e,t,r){(0,a.unreachable)("should not call mapBfRangeToArray")}mapOne(e,t){(0,a.unreachable)("should not call mapCidOne")}lookup(e){return Number.isInteger(e)&&e<=65535?e:void 0}contains(e){return Number.isInteger(e)&&e<=65535}forEach(e){for(let t=0;t<=65535;t++)e(t,t)}charCodeOf(e){return Number.isInteger(e)&&e<=65535?e:-1}getMap(){const e=new Array(65536);for(let t=0;t<=65535;t++)e[t]=t;return e}get length(){return 65536}get isIdentityCMap(){(0,a.unreachable)("should not access .isIdentityCMap")}}t.IdentityCMap=IdentityCMap;const h=function BinaryCMapReaderClosure(){function hexToInt(e,t){let r=0;for(let a=0;a<=t;a++)r=r<<8|e[a];return r>>>0}function hexToStr(e,t){return 1===t?String.fromCharCode(e[0],e[1]):3===t?String.fromCharCode(e[0],e[1],e[2],e[3]):String.fromCharCode.apply(null,e.subarray(0,t+1))}function addHex(e,t,r){let a=0;for(let i=r;i>=0;i--){a+=e[i]+t[i];e[i]=255&a;a>>=8}}function incHex(e,t){let r=1;for(let a=t;a>=0&&r>0;a--){r+=e[a];e[a]=255&r;r>>=8}}const e=16;class BinaryCMapStream{constructor(e){this.buffer=e;this.pos=0;this.end=e.length;this.tmpBuf=new Uint8Array(19)}readByte(){return this.pos>=this.end?-1:this.buffer[this.pos++]}readNumber(){let e,t=0;do{const r=this.readByte();if(r<0)throw new a.FormatError("unexpected EOF in bcmap");e=!(128&r);t=t<<7|127&r}while(!e);return t}readSigned(){const e=this.readNumber();return 1&e?~(e>>>1):e>>>1}readHex(e,t){e.set(this.buffer.subarray(this.pos,this.pos+t+1));this.pos+=t+1}readHexNumber(e,t){let r;const i=this.tmpBuf;let n=0;do{const e=this.readByte();if(e<0)throw new a.FormatError("unexpected EOF in bcmap");r=!(128&e);i[n++]=127&e}while(!r);let s=t,o=0,c=0;for(;s>=0;){for(;c<8&&i.length>0;){o|=i[--n]<>=8;c-=8}}readHexSigned(e,t){this.readHexNumber(e,t);const r=1&e[t]?255:0;let a=0;for(let i=0;i<=t;i++){a=(1&a)<<8|e[i];e[i]=a>>1^r}}readString(){const e=this.readNumber();let t="";for(let r=0;r=0;){const t=f>>5;if(7===t){switch(31&f){case 0:i.readString();break;case 1:s=i.readString()}continue}const a=!!(16&f),n=15&f;if(n+1>e)throw new Error("BinaryCMapReader.process: Invalid dataSize.");const g=1,p=i.readNumber();switch(t){case 0:i.readHex(o,n);i.readHexNumber(c,n);addHex(c,o,n);r.addCodespaceRange(n+1,hexToInt(o,n),hexToInt(c,n));for(let e=1;e>>0}function expectString(e){if(!(0,a.isString)(e))throw new a.FormatError("Malformed CMap: expected string.")}function expectInt(e){if(!Number.isInteger(e))throw new a.FormatError("Malformed CMap: expected int.")}function parseBfChar(e,t){for(;;){let r=t.getObj();if((0,i.isEOF)(r))break;if((0,i.isCmd)(r,"endbfchar"))return;expectString(r);const a=strToInt(r);r=t.getObj();expectString(r);const n=r;e.mapOne(a,n)}}function parseBfRange(e,t){for(;;){let r=t.getObj();if((0,i.isEOF)(r))break;if((0,i.isCmd)(r,"endbfrange"))return;expectString(r);const n=strToInt(r);r=t.getObj();expectString(r);const s=strToInt(r);r=t.getObj();if(Number.isInteger(r)||(0,a.isString)(r)){const t=Number.isInteger(r)?String.fromCharCode(r):r;e.mapBfRange(n,s,t)}else{if(!(0,i.isCmd)(r,"["))break;{r=t.getObj();const a=[];for(;!(0,i.isCmd)(r,"]")&&!(0,i.isEOF)(r);){a.push(r);r=t.getObj()}e.mapBfRangeToArray(n,s,a)}}}throw new a.FormatError("Invalid bf range.")}function parseCidChar(e,t){for(;;){let r=t.getObj();if((0,i.isEOF)(r))break;if((0,i.isCmd)(r,"endcidchar"))return;expectString(r);const a=strToInt(r);r=t.getObj();expectInt(r);const n=r;e.mapOne(a,n)}}function parseCidRange(e,t){for(;;){let r=t.getObj();if((0,i.isEOF)(r))break;if((0,i.isCmd)(r,"endcidrange"))return;expectString(r);const a=strToInt(r);r=t.getObj();expectString(r);const n=strToInt(r);r=t.getObj();expectInt(r);const s=r;e.mapCidRange(a,n,s)}}function parseCodespaceRange(e,t){for(;;){let r=t.getObj();if((0,i.isEOF)(r))break;if((0,i.isCmd)(r,"endcodespacerange"))return;if(!(0,a.isString)(r))break;const n=strToInt(r);r=t.getObj();if(!(0,a.isString)(r))break;const s=strToInt(r);e.addCodespaceRange(r.length,n,s)}throw new a.FormatError("Invalid codespace range.")}function parseWMode(e,t){const r=t.getObj();Number.isInteger(r)&&(e.vertical=!!r)}function parseCMapName(e,t){const r=t.getObj();(0,i.isName)(r)&&(0,a.isString)(r.name)&&(e.name=r.name)}async function parseCMap(e,t,r,n){let o,c;e:for(;;)try{const r=t.getObj();if((0,i.isEOF)(r))break;if((0,i.isName)(r)){"WMode"===r.name?parseWMode(e,t):"CMapName"===r.name&&parseCMapName(e,t);o=r}else if((0,i.isCmd)(r))switch(r.cmd){case"endcmap":break e;case"usecmap":(0,i.isName)(o)&&(c=o.name);break;case"begincodespacerange":parseCodespaceRange(e,t);break;case"beginbfchar":parseBfChar(e,t);break;case"begincidchar":parseCidChar(e,t);break;case"beginbfrange":parseBfRange(e,t);break;case"begincidrange":parseCidRange(e,t)}}catch(e){if(e instanceof s.MissingDataException)throw e;(0,a.warn)("Invalid cMap data: "+e);continue}!n&&c&&(n=c);return n?extendCMap(e,r,n):e}async function extendCMap(e,t,r){e.useCMap=await createBuiltInCMap(r,t);if(0===e.numCodespaceRanges){const t=e.useCMap.codespaceRanges;for(let r=0;rextendCMap(s,t,e)));if(i===a.CMapCompressionType.NONE){const e=new n.Lexer(new o.Stream(r));return parseCMap(s,e,t,null)}throw new Error("TODO: Only BINARY/NONE CMap compression is currently supported.")}return{async create(e){const t=e.encoding,r=e.fetchBuiltInCMap,a=e.useCMap;if((0,i.isName)(t))return createBuiltInCMap(t.name,r);if((0,i.isStream)(t)){const e=await parseCMap(new CMap,new n.Lexer(t),r,a);return e.isIdentityCMap?createBuiltInCMap(e.name,r):e}throw new Error("Encoding required.")}}}();t.CMapFactory=u},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.Parser=t.Linearization=t.Lexer=void 0;var a=r(2),i=r(5),n=r(9),s=r(18),o=r(20),c=r(21),l=r(23),h=r(24),u=r(27),d=r(29),f=r(31),g=r(10),p=r(32),m=r(33);function computeAdler32(e){const t=e.length;let r=1,a=0;for(let i=0;i>")&&!(0,i.isEOF)(this.buf1);){if(!(0,i.isName)(this.buf1)){(0,a.info)("Malformed dictionary: key must be a name object");this.shift();continue}const t=this.buf1.name;this.shift();if((0,i.isEOF)(this.buf1))break;s.set(t,this.getObj(e))}if((0,i.isEOF)(this.buf1)){if(this.recoveryMode)return s;throw new n.ParserEOFException("End of file inside dictionary.")}if((0,i.isCmd)(this.buf2,"stream"))return this.allowStreams?this.makeStream(s,e):s;this.shift();return s;default:return t}if(Number.isInteger(t)){if(Number.isInteger(this.buf1)&&(0,i.isCmd)(this.buf2,"R")){const e=i.Ref.get(t,this.buf1);this.shift();this.shift();return e}return t}return"string"==typeof t&&e?e.decryptString(t):t}findDefaultInlineStreamEnd(e){const t=this.lexer,r=e.pos;let s,o,c=0;for(;-1!==(s=e.getByte());)if(0===c)c=69===s?1:0;else if(1===c)c=73===s?2:0;else{(0,a.assert)(2===c,"findDefaultInlineStreamEnd - invalid state.");if(32===s||10===s||13===s){o=e.pos;const r=e.peekBytes(10);for(let e=0,t=r.length;e127))){c=0;break}}if(2!==c)continue;if(t.knownCommands){const e=t.peekObj();e instanceof i.Cmd&&!t.knownCommands[e.cmd]&&(c=0)}else(0,a.warn)("findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.");if(2===c)break}else c=0}if(-1===s){(0,a.warn)("findDefaultInlineStreamEnd: Reached the end of the stream without finding a valid EI marker");if(o){(0,a.warn)('... trying to recover by using the last "EI" occurrence.');e.skip(-(e.pos-o))}}let l=4;e.skip(-l);s=e.peekByte();e.skip(l);(0,n.isWhiteSpace)(s)||l--;return e.pos-l-r}findDCTDecodeInlineStreamEnd(e){const t=e.pos;let r,i,n=!1;for(;-1!==(r=e.getByte());)if(255===r){switch(e.getByte()){case 0:break;case 255:e.skip(-1);break;case 217:n=!0;break;case 192:case 193:case 194:case 195:case 197:case 198:case 199:case 201:case 202:case 203:case 205:case 206:case 207:case 196:case 204:case 218:case 219:case 220:case 221:case 222:case 223:case 224:case 225:case 226:case 227:case 228:case 229:case 230:case 231:case 232:case 233:case 234:case 235:case 236:case 237:case 238:case 239:case 254:i=e.getUint16();i>2?e.skip(i-2):e.skip(-2)}if(n)break}const s=e.pos-t;if(-1===r){(0,a.warn)("Inline DCTDecode image stream: EOI marker not found, searching for /EI/ instead.");e.skip(-s);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return s}findASCII85DecodeInlineStreamEnd(e){const t=e.pos;let r;for(;-1!==(r=e.getByte());)if(126===r){const t=e.pos;r=e.peekByte();for(;(0,n.isWhiteSpace)(r);){e.skip();r=e.peekByte()}if(62===r){e.skip();break}if(e.pos>t){const t=e.peekBytes(2);if(69===t[0]&&73===t[1])break}}const i=e.pos-t;if(-1===r){(0,a.warn)("Inline ASCII85Decode image stream: EOD marker not found, searching for /EI/ instead.");e.skip(-i);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return i}findASCIIHexDecodeInlineStreamEnd(e){const t=e.pos;let r;for(;-1!==(r=e.getByte())&&62!==r;);const i=e.pos-t;if(-1===r){(0,a.warn)("Inline ASCIIHexDecode image stream: EOD marker not found, searching for /EI/ instead.");e.skip(-i);return this.findDefaultInlineStreamEnd(e)}this.inlineStreamSkipEI(e);return i}inlineStreamSkipEI(e){let t,r=0;for(;-1!==(t=e.getByte());)if(0===r)r=69===t?1:0;else if(1===r)r=73===t?2:0;else if(2===r)break}makeInlineImage(e){const t=this.lexer,r=t.stream,n=new i.Dict(this.xref);let s;for(;!(0,i.isCmd)(this.buf1,"ID")&&!(0,i.isEOF)(this.buf1);){if(!(0,i.isName)(this.buf1))throw new a.FormatError("Dictionary key must be a name object");const t=this.buf1.name;this.shift();if((0,i.isEOF)(this.buf1))break;n.set(t,this.getObj(e))}-1!==t.beginInlineImagePos&&(s=r.pos-t.beginInlineImagePos);const o=n.get("Filter","F");let c;if((0,i.isName)(o))c=o.name;else if(Array.isArray(o)){const e=this.xref.fetchIfRef(o[0]);(0,i.isName)(e)&&(c=e.name)}const l=r.pos;let h;h="DCTDecode"===c||"DCT"===c?this.findDCTDecodeInlineStreamEnd(r):"ASCII85Decode"===c||"A85"===c?this.findASCII85DecodeInlineStreamEnd(r):"ASCIIHexDecode"===c||"AHx"===c?this.findASCIIHexDecodeInlineStreamEnd(r):this.findDefaultInlineStreamEnd(r);let u,d=r.makeSubStream(l,h,n);if(h<1e3&&s<5552){const e=d.getBytes();d.reset();const a=r.pos;r.pos=t.beginInlineImagePos;const n=r.getBytes(s);r.pos=a;u=computeAdler32(e)+"_"+computeAdler32(n);const o=this.imageCache[u];if(void 0!==o){this.buf2=i.Cmd.get("EI");this.shift();o.reset();return o}}e&&(d=e.createStream(d,h));d=this.filter(d,n,h);d.dict=n;if(void 0!==u){d.cacheKey=`inline_${h}_${u}`;this.imageCache[u]=d}this.buf2=i.Cmd.get("EI");this.shift();return d}_findStreamLength(e,t){const{stream:r}=this.lexer;r.pos=e;const a=t.length;for(;r.pos=a){r.pos+=s;return r.pos-e}s++}r.pos+=n}return-1}makeStream(e,t){const r=this.lexer;let s=r.stream;r.skipToNextLine();const o=s.pos-1;let c=e.get("Length");if(!Number.isInteger(c)){(0,a.info)(`Bad length "${c}" in stream`);c=0}s.pos=o+c;r.nextChar();if(this.tryShift()&&(0,i.isCmd)(this.buf2,"endstream"))this.shift();else{const e=new Uint8Array([101,110,100,115,116,114,101,97,109]);let t=this._findStreamLength(o,e);if(t<0){const r=1;for(let i=1;i<=r;i++){const r=e.length-i,c=e.slice(0,r),l=this._findStreamLength(o,c);if(l>=0){const e=s.peekBytes(r+1)[r];if(!(0,n.isWhiteSpace)(e))break;(0,a.info)(`Found "${(0,a.bytesToString)(c)}" when searching for endstream command.`);t=l;break}}if(t<0)throw new a.FormatError("Missing endstream command.")}c=t;r.nextChar();this.shift();this.shift()}this.shift();s=s.makeSubStream(o,c,e);t&&(s=t.createStream(s,c));s=this.filter(s,e,c);s.dict=e;return s}filter(e,t,r){let n=t.get("Filter","F"),s=t.get("DecodeParms","DP");if((0,i.isName)(n)){Array.isArray(s)&&(0,a.warn)("/DecodeParms should not contain an Array, when /Filter contains a Name.");return this.makeFilter(e,n.name,r,s)}let o=r;if(Array.isArray(n)){const t=n,r=s;for(let c=0,l=t.length;c=48&&e<=57?15&e:e>=65&&e<=70||e>=97&&e<=102?9+(15&e):-1}class Lexer{constructor(e,t=null){this.stream=e;this.nextChar();this.strBuf=[];this.knownCommands=t;this._hexStringNumWarn=0;this.beginInlineImagePos=-1}nextChar(){return this.currentChar=this.stream.getByte()}peekChar(){return this.stream.peekByte()}getNumber(){let e=this.currentChar,t=!1,r=0,i=0;if(45===e){i=-1;e=this.nextChar();45===e&&(e=this.nextChar())}else if(43===e){i=1;e=this.nextChar()}if(10===e||13===e)do{e=this.nextChar()}while(10===e||13===e);if(46===e){r=10;e=this.nextChar()}if(e<48||e>57){if(10===r&&0===i&&((0,n.isWhiteSpace)(e)||-1===e)){(0,a.warn)("Lexer.getNumber - treating a single decimal point as zero.");return 0}throw new a.FormatError(`Invalid number: ${String.fromCharCode(e)} (charCode ${e})`)}i=i||1;let s=e-48,o=0,c=1;for(;(e=this.nextChar())>=0;)if(e>=48&&e<=57){const a=e-48;if(t)o=10*o+a;else{0!==r&&(r*=10);s=10*s+a}}else if(46===e){if(0!==r)break;r=1}else if(45===e)(0,a.warn)("Badly formatted number: minus sign in the middle");else{if(69!==e&&101!==e)break;e=this.peekChar();if(43===e||45===e){c=45===e?-1:1;this.nextChar()}else if(e<48||e>57)break;t=!0}0!==r&&(s/=r);t&&(s*=10**(c*o));return i*s}getString(){let e=1,t=!1;const r=this.strBuf;r.length=0;let i=this.nextChar();for(;;){let n=!1;switch(0|i){case-1:(0,a.warn)("Unterminated string");t=!0;break;case 40:++e;r.push("(");break;case 41:if(0==--e){this.nextChar();t=!0}else r.push(")");break;case 92:i=this.nextChar();switch(i){case-1:(0,a.warn)("Unterminated string");t=!0;break;case 110:r.push("\n");break;case 114:r.push("\r");break;case 116:r.push("\t");break;case 98:r.push("\b");break;case 102:r.push("\f");break;case 92:case 40:case 41:r.push(String.fromCharCode(i));break;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:let e=15&i;i=this.nextChar();n=!0;if(i>=48&&i<=55){e=(e<<3)+(15&i);i=this.nextChar();if(i>=48&&i<=55){n=!1;e=(e<<3)+(15&i)}}r.push(String.fromCharCode(e));break;case 13:10===this.peekChar()&&this.nextChar();break;case 10:break;default:r.push(String.fromCharCode(i))}break;default:r.push(String.fromCharCode(i))}if(t)break;n||(i=this.nextChar())}return r.join("")}getName(){let e,t;const r=this.strBuf;r.length=0;for(;(e=this.nextChar())>=0&&!b[e];)if(35===e){e=this.nextChar();if(b[e]){(0,a.warn)("Lexer_getName: NUMBER SIGN (#) should be followed by a hexadecimal number.");r.push("#");break}const i=toHexDigit(e);if(-1!==i){t=e;e=this.nextChar();const n=toHexDigit(e);if(-1===n){(0,a.warn)(`Lexer_getName: Illegal digit (${String.fromCharCode(e)}) in hexadecimal number.`);r.push("#",String.fromCharCode(t));if(b[e])break;r.push(String.fromCharCode(e));continue}r.push(String.fromCharCode(i<<4|n))}else r.push("#",String.fromCharCode(e))}else r.push(String.fromCharCode(e));r.length>127?(0,a.warn)(`Name token is longer than allowed by the spec: ${r.length}`):0===r.length&&(0,a.warn)("Name token is empty.");return i.Name.get(r.join(""))}_hexStringWarn(e){5!=this._hexStringNumWarn++?this._hexStringNumWarn>5||(0,a.warn)(`getHexString - ignoring invalid character: ${e}`):(0,a.warn)("getHexString - ignoring additional invalid characters.")}getHexString(){const e=this.strBuf;e.length=0;let t,r,i=this.currentChar,n=!0;this._hexStringNumWarn=0;for(;;){if(i<0){(0,a.warn)("Unterminated hex string");break}if(62===i){this.nextChar();break}if(1!==b[i]){if(n){t=toHexDigit(i);if(-1===t){this._hexStringWarn(i);i=this.nextChar();continue}}else{r=toHexDigit(i);if(-1===r){this._hexStringWarn(i);i=this.nextChar();continue}e.push(String.fromCharCode(t<<4|r))}n=!n;i=this.nextChar()}else i=this.nextChar()}return e.join("")}getObj(){let e=!1,t=this.currentChar;for(;;){if(t<0)return i.EOF;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(1!==b[t])break;t=this.nextChar()}switch(0|t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 43:case 45:case 46:return this.getNumber();case 40:return this.getString();case 47:return this.getName();case 91:this.nextChar();return i.Cmd.get("[");case 93:this.nextChar();return i.Cmd.get("]");case 60:t=this.nextChar();if(60===t){this.nextChar();return i.Cmd.get("<<")}return this.getHexString();case 62:t=this.nextChar();if(62===t){this.nextChar();return i.Cmd.get(">>")}return i.Cmd.get(">");case 123:this.nextChar();return i.Cmd.get("{");case 125:this.nextChar();return i.Cmd.get("}");case 41:this.nextChar();throw new a.FormatError(`Illegal character: ${t}`)}let r=String.fromCharCode(t);const n=this.knownCommands;let s=n&&void 0!==n[r];for(;(t=this.nextChar())>=0&&!b[t];){const e=r+String.fromCharCode(t);if(s&&void 0===n[e])break;if(128===r.length)throw new a.FormatError(`Command token too long: ${r.length}`);r=e;s=n&&void 0!==n[r]}if("true"===r)return!0;if("false"===r)return!1;if("null"===r)return null;"BI"===r&&(this.beginInlineImagePos=this.stream.pos);return i.Cmd.get(r)}peekObj(){const e=this.stream.pos,t=this.currentChar,r=this.beginInlineImagePos;let i;try{i=this.getObj()}catch(e){if(e instanceof n.MissingDataException)throw e;(0,a.warn)(`peekObj: ${e}`)}this.stream.pos=e;this.currentChar=t;this.beginInlineImagePos=r;return i}skipToNextLine(){let e=this.currentChar;for(;e>=0;){if(13===e){e=this.nextChar();10===e&&this.nextChar();break}if(10===e){this.nextChar();break}e=this.nextChar()}}}t.Lexer=Lexer;t.Linearization=class Linearization{static create(e){function getInt(e,t,r=!1){const a=e.get(t);if(Number.isInteger(a)&&(r?a>=0:a>0))return a;throw new Error(`The "${t}" parameter in the linearization dictionary is invalid.`)}const t=new Parser({lexer:new Lexer(e),xref:null}),r=t.getObj(),n=t.getObj(),s=t.getObj(),o=t.getObj();let c,l;if(!(Number.isInteger(r)&&Number.isInteger(n)&&(0,i.isCmd)(s,"obj")&&(0,i.isDict)(o)&&(0,a.isNum)(c=o.get("Linearized"))&&c>0))return null;if((l=getInt(o,"L"))!==e.length)throw new Error('The "L" parameter in the linearization dictionary does not equal the stream length.');return{length:l,hints:function getHints(e){const t=e.get("H");let r;if(Array.isArray(t)&&(2===(r=t.length)||4===r)){for(let e=0;e0))throw new Error(`Hint (${e}) in the linearization dictionary is invalid.`)}return t}throw new Error("Hint array in the linearization dictionary is invalid.")}(o),objectNumberFirst:getInt(o,"O"),endFirst:getInt(o,"E"),numPages:getInt(o,"N"),mainXRefEntriesOffset:getInt(o,"T"),pageFirst:o.has("P")?getInt(o,"P",!0):0}}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.Ascii85Stream=void 0;var a=r(19),i=r(9);class Ascii85Stream extends a.DecodeStream{constructor(e,t){t&&(t*=.8);super(t);this.str=e;this.dict=e.dict;this.input=new Uint8Array(5)}readBlock(){const e=this.str;let t=e.getByte();for(;(0,i.isWhiteSpace)(t);)t=e.getByte();if(-1===t||126===t){this.eof=!0;return}const r=this.bufferLength;let a,n;if(122===t){a=this.ensureBuffer(r+4);for(n=0;n<4;++n)a[r+n]=0;this.bufferLength+=4}else{const s=this.input;s[0]=t;for(n=1;n<5;++n){t=e.getByte();for(;(0,i.isWhiteSpace)(t);)t=e.getByte();s[n]=t;if(-1===t||126===t)break}a=this.ensureBuffer(r+n-1);this.bufferLength+=n-1;if(n<5){for(;n<5;++n)s[n]=117;this.eof=!0}let o=0;for(n=0;n<5;++n)o=85*o+(s[n]-33);for(n=3;n>=0;--n){a[r+n]=255&o;o>>=8}}}}t.Ascii85Stream=Ascii85Stream},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.StreamsSequenceStream=t.DecodeStream=void 0;var a=r(6),i=r(10);const n=new Uint8Array(0);class DecodeStream extends a.BaseStream{constructor(e){super();this._rawMinBufferLength=e||0;this.pos=0;this.bufferLength=0;this.eof=!1;this.buffer=n;this.minBufferLength=512;if(e)for(;this.minBufferLengtht&&(a=t)}else{for(;!this.eof;)this.readBlock();a=this.bufferLength}this.pos=a;const i=this.buffer.subarray(r,a);return!t||i instanceof Uint8ClampedArray?i:new Uint8ClampedArray(i)}reset(){this.pos=0}makeSubStream(e,t,r=null){if(void 0===t)for(;!this.eof;)this.readBlock();else{const r=e+t;for(;this.bufferLength<=r&&!this.eof;)this.readBlock()}return new i.Stream(this.buffer,e,t,r)}getBaseStreams(){return this.str?this.str.getBaseStreams():null}}t.DecodeStream=DecodeStream;t.StreamsSequenceStream=class StreamsSequenceStream extends DecodeStream{constructor(e){let t=0;for(const r of e)t+=r instanceof DecodeStream?r._rawMinBufferLength:r.length;super(t);this.streams=e}readBlock(){const e=this.streams;if(0===e.length){this.eof=!0;return}const t=e.shift().getBytes(),r=this.bufferLength,a=r+t.length;this.ensureBuffer(a).set(t,r);this.bufferLength=a}getBaseStreams(){const e=[];for(const t of this.streams){const r=t.getBaseStreams();r&&e.push(...r)}return e.length>0?e:null}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.AsciiHexStream=void 0;var a=r(19);class AsciiHexStream extends a.DecodeStream{constructor(e,t){t&&(t*=.5);super(t);this.str=e;this.dict=e.dict;this.firstDigit=-1}readBlock(){const e=this.str.getBytes(8e3);if(!e.length){this.eof=!0;return}const t=e.length+1>>1,r=this.ensureBuffer(this.bufferLength+t);let a=this.bufferLength,i=this.firstDigit;for(const t of e){let e;if(t>=48&&t<=57)e=15&t;else{if(!(t>=65&&t<=70||t>=97&&t<=102)){if(62===t){this.eof=!0;break}continue}e=9+(15&t)}if(i<0)i=e;else{r[a++]=i<<4|e;i=-1}}if(i>=0&&this.eof){r[a++]=i<<4;i=-1}this.firstDigit=i;this.bufferLength=a}}t.AsciiHexStream=AsciiHexStream},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.CCITTFaxStream=void 0;var a=r(5),i=r(22),n=r(19);class CCITTFaxStream extends n.DecodeStream{constructor(e,t,r){super(t);this.str=e;this.dict=e.dict;(0,a.isDict)(r)||(r=a.Dict.empty);const n={next:()=>e.getByte()};this.ccittFaxDecoder=new i.CCITTFaxDecoder(n,{K:r.get("K"),EndOfLine:r.get("EndOfLine"),EncodedByteAlign:r.get("EncodedByteAlign"),Columns:r.get("Columns"),Rows:r.get("Rows"),EndOfBlock:r.get("EndOfBlock"),BlackIs1:r.get("BlackIs1")})}readBlock(){for(;!this.eof;){const e=this.ccittFaxDecoder.readNextChar();if(-1===e){this.eof=!0;return}this.ensureBuffer(this.bufferLength+1);this.buffer[this.bufferLength++]=e}}}t.CCITTFaxStream=CCITTFaxStream},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.CCITTFaxDecoder=void 0;var a=r(2);const i=-1,n=[[-1,-1],[-1,-1],[7,8],[7,7],[6,6],[6,6],[6,5],[6,5],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2]],s=[[-1,-1],[12,-2],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[11,1792],[11,1792],[12,1984],[12,2048],[12,2112],[12,2176],[12,2240],[12,2304],[11,1856],[11,1856],[11,1920],[11,1920],[12,2368],[12,2432],[12,2496],[12,2560]],o=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[8,29],[8,29],[8,30],[8,30],[8,45],[8,45],[8,46],[8,46],[7,22],[7,22],[7,22],[7,22],[7,23],[7,23],[7,23],[7,23],[8,47],[8,47],[8,48],[8,48],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[7,20],[7,20],[7,20],[7,20],[8,33],[8,33],[8,34],[8,34],[8,35],[8,35],[8,36],[8,36],[8,37],[8,37],[8,38],[8,38],[7,19],[7,19],[7,19],[7,19],[8,31],[8,31],[8,32],[8,32],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[8,53],[8,53],[8,54],[8,54],[7,26],[7,26],[7,26],[7,26],[8,39],[8,39],[8,40],[8,40],[8,41],[8,41],[8,42],[8,42],[8,43],[8,43],[8,44],[8,44],[7,21],[7,21],[7,21],[7,21],[7,28],[7,28],[7,28],[7,28],[8,61],[8,61],[8,62],[8,62],[8,63],[8,63],[8,0],[8,0],[8,320],[8,320],[8,384],[8,384],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[7,27],[7,27],[7,27],[7,27],[8,59],[8,59],[8,60],[8,60],[9,1472],[9,1536],[9,1600],[9,1728],[7,18],[7,18],[7,18],[7,18],[7,24],[7,24],[7,24],[7,24],[8,49],[8,49],[8,50],[8,50],[8,51],[8,51],[8,52],[8,52],[7,25],[7,25],[7,25],[7,25],[8,55],[8,55],[8,56],[8,56],[8,57],[8,57],[8,58],[8,58],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[8,448],[8,448],[8,512],[8,512],[9,704],[9,768],[8,640],[8,640],[8,576],[8,576],[9,832],[9,896],[9,960],[9,1024],[9,1088],[9,1152],[9,1216],[9,1280],[9,1344],[9,1408],[7,256],[7,256],[7,256],[7,256],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7]],c=[[-1,-1],[-1,-1],[12,-2],[12,-2],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[11,1792],[11,1792],[11,1792],[11,1792],[12,1984],[12,1984],[12,2048],[12,2048],[12,2112],[12,2112],[12,2176],[12,2176],[12,2240],[12,2240],[12,2304],[12,2304],[11,1856],[11,1856],[11,1856],[11,1856],[11,1920],[11,1920],[11,1920],[11,1920],[12,2368],[12,2368],[12,2432],[12,2432],[12,2496],[12,2496],[12,2560],[12,2560],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[12,52],[12,52],[13,640],[13,704],[13,768],[13,832],[12,55],[12,55],[12,56],[12,56],[13,1280],[13,1344],[13,1408],[13,1472],[12,59],[12,59],[12,60],[12,60],[13,1536],[13,1600],[11,24],[11,24],[11,24],[11,24],[11,25],[11,25],[11,25],[11,25],[13,1664],[13,1728],[12,320],[12,320],[12,384],[12,384],[12,448],[12,448],[13,512],[13,576],[12,53],[12,53],[12,54],[12,54],[13,896],[13,960],[13,1024],[13,1088],[13,1152],[13,1216],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64]],l=[[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[11,23],[11,23],[12,50],[12,51],[12,44],[12,45],[12,46],[12,47],[12,57],[12,58],[12,61],[12,256],[10,16],[10,16],[10,16],[10,16],[10,17],[10,17],[10,17],[10,17],[12,48],[12,49],[12,62],[12,63],[12,30],[12,31],[12,32],[12,33],[12,40],[12,41],[11,22],[11,22],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[12,128],[12,192],[12,26],[12,27],[12,28],[12,29],[11,19],[11,19],[11,20],[11,20],[12,34],[12,35],[12,36],[12,37],[12,38],[12,39],[11,21],[11,21],[12,42],[12,43],[10,0],[10,0],[10,0],[10,0],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12]],h=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[6,9],[6,8],[5,7],[5,7],[4,6],[4,6],[4,6],[4,6],[4,5],[4,5],[4,5],[4,5],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2]];t.CCITTFaxDecoder=class CCITTFaxDecoder{constructor(e,t={}){if(!e||"function"!=typeof e.next)throw new Error('CCITTFaxDecoder - invalid "source" parameter.');this.source=e;this.eof=!1;this.encoding=t.K||0;this.eoline=t.EndOfLine||!1;this.byteAlign=t.EncodedByteAlign||!1;this.columns=t.Columns||1728;this.rows=t.Rows||0;let r,a=t.EndOfBlock;null==a&&(a=!0);this.eoblock=a;this.black=t.BlackIs1||!1;this.codingLine=new Uint32Array(this.columns+1);this.refLine=new Uint32Array(this.columns+2);this.codingLine[0]=this.columns;this.codingPos=0;this.row=0;this.nextLine2D=this.encoding<0;this.inputBits=0;this.inputBuf=0;this.outputBits=0;this.rowsDone=!1;for(;0===(r=this._lookBits(12));)this._eatBits(1);1===r&&this._eatBits(12);if(this.encoding>0){this.nextLine2D=!this._lookBits(1);this._eatBits(1)}}readNextChar(){if(this.eof)return-1;const e=this.refLine,t=this.codingLine,r=this.columns;let n,s,o,c,l;if(0===this.outputBits){this.rowsDone&&(this.eof=!0);if(this.eof)return-1;this.err=!1;let o,l,h;if(this.nextLine2D){for(c=0;t[c]=64);do{l+=h=this._getWhiteCode()}while(h>=64)}else{do{o+=h=this._getWhiteCode()}while(h>=64);do{l+=h=this._getBlackCode()}while(h>=64)}this._addPixels(t[this.codingPos]+o,s);t[this.codingPos]0?--n:++n;for(;e[n]<=t[this.codingPos]&&e[n]0?--n:++n;for(;e[n]<=t[this.codingPos]&&e[n]0?--n:++n;for(;e[n]<=t[this.codingPos]&&e[n]=64);else do{o+=h=this._getWhiteCode()}while(h>=64);this._addPixels(t[this.codingPos]+o,s);s^=1}}let u=!1;this.byteAlign&&(this.inputBits&=-8);if(this.eoblock||this.row!==this.rows-1){o=this._lookBits(12);if(this.eoline)for(;o!==i&&1!==o;){this._eatBits(1);o=this._lookBits(12)}else for(;0===o;){this._eatBits(1);o=this._lookBits(12)}if(1===o){this._eatBits(12);u=!0}else o===i&&(this.eof=!0)}else this.rowsDone=!0;if(!this.eof&&this.encoding>0&&!this.rowsDone){this.nextLine2D=!this._lookBits(1);this._eatBits(1)}if(this.eoblock&&u&&this.byteAlign){o=this._lookBits(12);if(1===o){this._eatBits(12);if(this.encoding>0){this._lookBits(1);this._eatBits(1)}if(this.encoding>=0)for(c=0;c<4;++c){o=this._lookBits(12);1!==o&&(0,a.info)("bad rtc code: "+o);this._eatBits(12);if(this.encoding>0){this._lookBits(1);this._eatBits(1)}}this.eof=!0}}else if(this.err&&this.eoline){for(;;){o=this._lookBits(13);if(o===i){this.eof=!0;return-1}if(o>>1==1)break;this._eatBits(1)}this._eatBits(12);if(this.encoding>0){this._eatBits(1);this.nextLine2D=!(1&o)}}t[0]>0?this.outputBits=t[this.codingPos=0]:this.outputBits=t[this.codingPos=1];this.row++}if(this.outputBits>=8){l=1&this.codingPos?0:255;this.outputBits-=8;if(0===this.outputBits&&t[this.codingPos]o){l<<=o;1&this.codingPos||(l|=255>>8-o);this.outputBits-=o;o=0}else{l<<=this.outputBits;1&this.codingPos||(l|=255>>8-this.outputBits);o-=this.outputBits;this.outputBits=0;if(t[this.codingPos]0){l<<=o;o=0}}}while(o)}this.black&&(l^=255);return l}_addPixels(e,t){const r=this.codingLine;let i=this.codingPos;if(e>r[i]){if(e>this.columns){(0,a.info)("row is wrong length");this.err=!0;e=this.columns}1&i^t&&++i;r[i]=e}this.codingPos=i}_addPixelsNeg(e,t){const r=this.codingLine;let i=this.codingPos;if(e>r[i]){if(e>this.columns){(0,a.info)("row is wrong length");this.err=!0;e=this.columns}1&i^t&&++i;r[i]=e}else if(e0&&e=n){const t=r[e-n];if(t[0]===a){this._eatBits(a);return[!0,t[1],!0]}}}return[!1,0,!1]}_getTwoDimCode(){let e,t=0;if(this.eoblock){t=this._lookBits(7);e=n[t];if(e&&e[0]>0){this._eatBits(e[0]);return e[1]}}else{const e=this._findTableCode(1,7,n);if(e[0]&&e[2])return e[1]}(0,a.info)("Bad two dim code");return i}_getWhiteCode(){let e,t=0;if(this.eoblock){t=this._lookBits(12);if(t===i)return 1;e=t>>5==0?s[t]:o[t>>3];if(e[0]>0){this._eatBits(e[0]);return e[1]}}else{let e=this._findTableCode(1,9,o);if(e[0])return e[1];e=this._findTableCode(11,12,s);if(e[0])return e[1]}(0,a.info)("bad white code");this._eatBits(1);return 1}_getBlackCode(){let e,t;if(this.eoblock){e=this._lookBits(13);if(e===i)return 1;t=e>>7==0?c[e]:e>>9==0&&e>>7!=0?l[(e>>1)-64]:h[e>>7];if(t[0]>0){this._eatBits(t[0]);return t[1]}}else{let e=this._findTableCode(2,6,h);if(e[0])return e[1];e=this._findTableCode(7,12,l,64);if(e[0])return e[1];e=this._findTableCode(10,13,c);if(e[0])return e[1]}(0,a.info)("bad black code");this._eatBits(1);return 1}_lookBits(e){let t;for(;this.inputBits>16-e;this.inputBuf=this.inputBuf<<8|t;this.inputBits+=8}return this.inputBuf>>this.inputBits-e&65535>>16-e}_eatBits(e){(this.inputBits-=e)<0&&(this.inputBits=0)}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.FlateStream=void 0;var a=r(19),i=r(2);const n=new Int32Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),s=new Int32Array([3,4,5,6,7,8,9,10,65547,65549,65551,65553,131091,131095,131099,131103,196643,196651,196659,196667,262211,262227,262243,262259,327811,327843,327875,327907,258,258,258]),o=new Int32Array([1,2,3,4,65541,65543,131081,131085,196625,196633,262177,262193,327745,327777,393345,393409,459009,459137,524801,525057,590849,591361,657409,658433,724993,727041,794625,798721,868353,876545]),c=[new Int32Array([459008,524368,524304,524568,459024,524400,524336,590016,459016,524384,524320,589984,524288,524416,524352,590048,459012,524376,524312,589968,459028,524408,524344,590032,459020,524392,524328,59e4,524296,524424,524360,590064,459010,524372,524308,524572,459026,524404,524340,590024,459018,524388,524324,589992,524292,524420,524356,590056,459014,524380,524316,589976,459030,524412,524348,590040,459022,524396,524332,590008,524300,524428,524364,590072,459009,524370,524306,524570,459025,524402,524338,590020,459017,524386,524322,589988,524290,524418,524354,590052,459013,524378,524314,589972,459029,524410,524346,590036,459021,524394,524330,590004,524298,524426,524362,590068,459011,524374,524310,524574,459027,524406,524342,590028,459019,524390,524326,589996,524294,524422,524358,590060,459015,524382,524318,589980,459031,524414,524350,590044,459023,524398,524334,590012,524302,524430,524366,590076,459008,524369,524305,524569,459024,524401,524337,590018,459016,524385,524321,589986,524289,524417,524353,590050,459012,524377,524313,589970,459028,524409,524345,590034,459020,524393,524329,590002,524297,524425,524361,590066,459010,524373,524309,524573,459026,524405,524341,590026,459018,524389,524325,589994,524293,524421,524357,590058,459014,524381,524317,589978,459030,524413,524349,590042,459022,524397,524333,590010,524301,524429,524365,590074,459009,524371,524307,524571,459025,524403,524339,590022,459017,524387,524323,589990,524291,524419,524355,590054,459013,524379,524315,589974,459029,524411,524347,590038,459021,524395,524331,590006,524299,524427,524363,590070,459011,524375,524311,524575,459027,524407,524343,590030,459019,524391,524327,589998,524295,524423,524359,590062,459015,524383,524319,589982,459031,524415,524351,590046,459023,524399,524335,590014,524303,524431,524367,590078,459008,524368,524304,524568,459024,524400,524336,590017,459016,524384,524320,589985,524288,524416,524352,590049,459012,524376,524312,589969,459028,524408,524344,590033,459020,524392,524328,590001,524296,524424,524360,590065,459010,524372,524308,524572,459026,524404,524340,590025,459018,524388,524324,589993,524292,524420,524356,590057,459014,524380,524316,589977,459030,524412,524348,590041,459022,524396,524332,590009,524300,524428,524364,590073,459009,524370,524306,524570,459025,524402,524338,590021,459017,524386,524322,589989,524290,524418,524354,590053,459013,524378,524314,589973,459029,524410,524346,590037,459021,524394,524330,590005,524298,524426,524362,590069,459011,524374,524310,524574,459027,524406,524342,590029,459019,524390,524326,589997,524294,524422,524358,590061,459015,524382,524318,589981,459031,524414,524350,590045,459023,524398,524334,590013,524302,524430,524366,590077,459008,524369,524305,524569,459024,524401,524337,590019,459016,524385,524321,589987,524289,524417,524353,590051,459012,524377,524313,589971,459028,524409,524345,590035,459020,524393,524329,590003,524297,524425,524361,590067,459010,524373,524309,524573,459026,524405,524341,590027,459018,524389,524325,589995,524293,524421,524357,590059,459014,524381,524317,589979,459030,524413,524349,590043,459022,524397,524333,590011,524301,524429,524365,590075,459009,524371,524307,524571,459025,524403,524339,590023,459017,524387,524323,589991,524291,524419,524355,590055,459013,524379,524315,589975,459029,524411,524347,590039,459021,524395,524331,590007,524299,524427,524363,590071,459011,524375,524311,524575,459027,524407,524343,590031,459019,524391,524327,589999,524295,524423,524359,590063,459015,524383,524319,589983,459031,524415,524351,590047,459023,524399,524335,590015,524303,524431,524367,590079]),9],l=[new Int32Array([327680,327696,327688,327704,327684,327700,327692,327708,327682,327698,327690,327706,327686,327702,327694,0,327681,327697,327689,327705,327685,327701,327693,327709,327683,327699,327691,327707,327687,327703,327695,0]),5];class FlateStream extends a.DecodeStream{constructor(e,t){super(t);this.str=e;this.dict=e.dict;const r=e.getByte(),a=e.getByte();if(-1===r||-1===a)throw new i.FormatError(`Invalid header in flate stream: ${r}, ${a}`);if(8!=(15&r))throw new i.FormatError(`Unknown compression method in flate stream: ${r}, ${a}`);if(((r<<8)+a)%31!=0)throw new i.FormatError(`Bad FCHECK in flate stream: ${r}, ${a}`);if(32&a)throw new i.FormatError(`FDICT bit set in flate stream: ${r}, ${a}`);this.codeSize=0;this.codeBuf=0}getBits(e){const t=this.str;let r,a=this.codeSize,n=this.codeBuf;for(;a>e;this.codeSize=a-=e;return r}getCode(e){const t=this.str,r=e[0],a=e[1];let n,s=this.codeSize,o=this.codeBuf;for(;s>16,h=65535&c;if(l<1||s>l;this.codeSize=s-l;return h}generateHuffmanTable(e){const t=e.length;let r,a=0;for(r=0;ra&&(a=e[r]);const i=1<>=1}for(r=e;r>=1;if(0===u){let t;if(-1===(t=r.getByte()))throw new i.FormatError("Bad block header in flate stream");let a=t;if(-1===(t=r.getByte()))throw new i.FormatError("Bad block header in flate stream");a|=t<<8;if(-1===(t=r.getByte()))throw new i.FormatError("Bad block header in flate stream");let n=t;if(-1===(t=r.getByte()))throw new i.FormatError("Bad block header in flate stream");n|=t<<8;if(n!==(65535&~a)&&(0!==a||0!==n))throw new i.FormatError("Bad uncompressed block length in flate stream");this.codeBuf=0;this.codeSize=0;const s=this.bufferLength,o=s+a;e=this.ensureBuffer(o);this.bufferLength=o;if(0===a)-1===r.peekByte()&&(this.eof=!0);else{const t=r.getBytes(a);e.set(t,s);t.length0;)u[o++]=g}a=this.generateHuffmanTable(u.subarray(0,e));h=this.generateHuffmanTable(u.subarray(e,l))}}e=this.buffer;let d=e?e.length:0,f=this.bufferLength;for(;;){let r=this.getCode(a);if(r<256){if(f+1>=d){e=this.ensureBuffer(f+1);d=e.length}e[f++]=r;continue}if(256===r){this.bufferLength=f;return}r-=257;r=s[r];let i=r>>16;i>0&&(i=this.getBits(i));t=(65535&r)+i;r=this.getCode(h);r=o[r];i=r>>16;i>0&&(i=this.getBits(i));const n=(65535&r)+i;if(f+t>=d){e=this.ensureBuffer(f+t);d=e.length}for(let r=0;r{Object.defineProperty(t,"__esModule",{value:!0});t.Jbig2Stream=void 0;var a=r(5),i=r(19),n=r(25),s=r(2);class Jbig2Stream extends i.DecodeStream{constructor(e,t,r){super(t);this.stream=e;this.dict=e.dict;this.maybeLength=t;this.params=r}get bytes(){return(0,s.shadow)(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}readBlock(){if(this.eof)return;const e=new n.Jbig2Image,t=[];if((0,a.isDict)(this.params)){const e=this.params.get("JBIG2Globals");if((0,a.isStream)(e)){const r=e.getBytes();t.push({data:r,start:0,end:r.length})}}t.push({data:this.bytes,start:0,end:this.bytes.length});const r=e.parseChunks(t),i=r.length;for(let e=0;e{Object.defineProperty(t,"__esModule",{value:!0});t.Jbig2Image=void 0;var a=r(2),i=r(9),n=r(26),s=r(22);class Jbig2Error extends a.BaseException{constructor(e){super(`JBIG2 error: ${e}`)}}class ContextCache{getContexts(e){return e in this?this[e]:this[e]=new Int8Array(65536)}}class DecodingContext{constructor(e,t,r){this.data=e;this.start=t;this.end=r}get decoder(){const e=new n.ArithmeticDecoder(this.data,this.start,this.end);return(0,a.shadow)(this,"decoder",e)}get contextCache(){const e=new ContextCache;return(0,a.shadow)(this,"contextCache",e)}}function decodeInteger(e,t,r){const a=e.getContexts(t);let i=1;function readBits(e){let t=0;for(let n=0;n>>0}const n=readBits(1),s=readBits(1)?readBits(1)?readBits(1)?readBits(1)?readBits(1)?readBits(32)+4436:readBits(12)+340:readBits(8)+84:readBits(6)+20:readBits(4)+4:readBits(2);return 0===n?s:s>0?-s:null}function decodeIAID(e,t,r){const a=e.getContexts("IAID");let i=1;for(let e=0;e=O&&j=T){q=q<<1&y;for(b=0;b=0&&_=0){U=N[$][_];U&&(q|=U<=e?l<<=1:l=l<<1|C[o][c]}for(p=0;p=x||c<0||c>=S?l<<=1:l=l<<1|a[o][c]}const h=v.readBit(F,l);t[s]=h}}return C}function decodeTextRegion(e,t,r,a,i,n,s,o,c,l,h,u,d,f,g,p,m,b,y){if(e&&t)throw new Jbig2Error("refinement with Huffman is not supported");const w=[];let S,x;for(S=0;S1&&(i=e?y.readBits(b):decodeInteger(C,"IAIT",k));const n=s*v+i,F=e?f.symbolIDTable.decode(y):decodeIAID(C,k,c),O=t&&(e?y.readBit():decodeInteger(C,"IARI",k));let T=o[F],M=T[0].length,E=T.length;if(O){const e=decodeInteger(C,"IARDW",k),t=decodeInteger(C,"IARDH",k),r=decodeInteger(C,"IARDX",k),a=decodeInteger(C,"IARDY",k);M+=e;E+=t;T=decodeRefinement(M,E,g,T,(e>>1)+r,(t>>1)+a,!1,p,m)}const D=n-(1&u?0:E-1),N=a-(2&u?M-1:0);let L,R,j;if(l){for(L=0;L>5&7;const h=[31&c];let u=t+6;if(7===c){l=536870911&(0,i.readUint32)(e,u-1);u+=3;let t=l+7>>3;h[0]=e[u++];for(;--t>0;)h.push(e[u++])}else if(5===c||6===c)throw new Jbig2Error("invalid referred-to flags");r.retainBits=h;let f=4;r.number<=256?f=1:r.number<=65536&&(f=2);const g=[];let p,m;for(p=0;p>>24&255;n[3]=t.height>>16&255;n[4]=t.height>>8&255;n[5]=255&t.height;for(p=u,m=e.length;p>2&3;e.huffmanDWSelector=t>>4&3;e.bitmapSizeSelector=t>>6&1;e.aggregationInstancesSelector=t>>7&1;e.bitmapCodingContextUsed=!!(256&t);e.bitmapCodingContextRetained=!!(512&t);e.template=t>>10&3;e.refinementTemplate=t>>12&1;h+=2;if(!e.huffman){l=0===e.template?4:1;o=[];for(c=0;c>2&3;u.stripSize=1<>4&3;u.transposed=!!(64&f);u.combinationOperator=f>>7&3;u.defaultPixelValue=f>>9&1;u.dsOffset=f<<17>>27;u.refinementTemplate=f>>15&1;if(u.huffman){const e=(0,i.readUint16)(a,h);h+=2;u.huffmanFS=3&e;u.huffmanDS=e>>2&3;u.huffmanDT=e>>4&3;u.huffmanRefinementDW=e>>6&3;u.huffmanRefinementDH=e>>8&3;u.huffmanRefinementDX=e>>10&3;u.huffmanRefinementDY=e>>12&3;u.huffmanRefinementSizeSelector=!!(16384&e)}if(u.refinement&&!u.refinementTemplate){o=[];for(c=0;c<2;c++){o.push({x:(0,i.readInt8)(a,h),y:(0,i.readInt8)(a,h+1)});h+=2}u.refinementAt=o}u.numberOfSymbolInstances=(0,i.readUint32)(a,h);h+=4;s=[u,r.referredTo,a,h,n];break;case 16:const g={},p=a[h++];g.mmr=!!(1&p);g.template=p>>1&3;g.patternWidth=a[h++];g.patternHeight=a[h++];g.maxPatternIndex=(0,i.readUint32)(a,h);h+=4;s=[g,r.number,a,h,n];break;case 22:case 23:const m={};m.info=readRegionSegmentInformation(a,h);h+=d;const b=a[h++];m.mmr=!!(1&b);m.template=b>>1&3;m.enableSkip=!!(8&b);m.combinationOperator=b>>4&7;m.defaultPixelValue=b>>7&1;m.gridWidth=(0,i.readUint32)(a,h);h+=4;m.gridHeight=(0,i.readUint32)(a,h);h+=4;m.gridOffsetX=4294967295&(0,i.readUint32)(a,h);h+=4;m.gridOffsetY=4294967295&(0,i.readUint32)(a,h);h+=4;m.gridVectorX=(0,i.readUint16)(a,h);h+=2;m.gridVectorY=(0,i.readUint16)(a,h);h+=2;s=[m,r.referredTo,a,h,n];break;case 38:case 39:const y={};y.info=readRegionSegmentInformation(a,h);h+=d;const w=a[h++];y.mmr=!!(1&w);y.template=w>>1&3;y.prediction=!!(8&w);if(!y.mmr){l=0===y.template?4:1;o=[];for(c=0;c>2&1;S.combinationOperator=x>>3&3;S.requiresBuffer=!!(32&x);S.combinationOperatorOverride=!!(64&x);s=[S];break;case 49:case 50:case 51:break;case 53:s=[r.number,a,h,n];break;case 62:break;default:throw new Jbig2Error(`segment type ${r.typeName}(${r.type}) is not implemented`)}const u="on"+r.typeName;u in t&&t[u].apply(t,s)}function processSegments(e,t){for(let r=0,a=e.length;r>3,r=new Uint8ClampedArray(t*e.height);if(e.defaultPixelValue)for(let e=0,t=r.length;e>3,s=r.combinationOperatorOverride?e.combinationOperator:r.combinationOperator,o=this.buffer,c=128>>(7&e.x);let l,h,u,d,f=e.y*n+(e.x>>3);switch(s){case 0:for(l=0;l>=1;if(!u){u=128;d++}}f+=n}break;case 2:for(l=0;l>=1;if(!u){u=128;d++}}f+=n}break;default:throw new Jbig2Error(`operator ${s} is not supported`)}}onImmediateGenericRegion(e,t,r,a){const i=e.info,n=new DecodingContext(t,r,a),s=decodeBitmap(e.mmr,i.width,i.height,e.template,e.prediction,null,e.at,n);this.drawBitmap(i,s)}onImmediateLosslessGenericRegion(){this.onImmediateGenericRegion.apply(this,arguments)}onSymbolDictionary(e,t,r,a,n,s){let o,c;if(e.huffman){o=function getSymbolDictionaryHuffmanTables(e,t,r){let a,i,n,s,o=0;switch(e.huffmanDHSelector){case 0:case 1:a=getStandardTable(e.huffmanDHSelector+4);break;case 3:a=getCustomHuffmanTable(o,t,r);o++;break;default:throw new Jbig2Error("invalid Huffman DH selector")}switch(e.huffmanDWSelector){case 0:case 1:i=getStandardTable(e.huffmanDWSelector+2);break;case 3:i=getCustomHuffmanTable(o,t,r);o++;break;default:throw new Jbig2Error("invalid Huffman DW selector")}if(e.bitmapSizeSelector){n=getCustomHuffmanTable(o,t,r);o++}else n=getStandardTable(1);s=e.aggregationInstancesSelector?getCustomHuffmanTable(o,t,r):getStandardTable(1);return{tableDeltaHeight:a,tableDeltaWidth:i,tableBitmapSize:n,tableAggregateInstances:s}}(e,r,this.customTables);c=new Reader(a,n,s)}let l=this.symbols;l||(this.symbols=l={});let h=[];for(let e=0,t=r.length;e1)y=decodeTextRegion(e,t,a,g,0,i,1,r.concat(f),p,0,0,1,0,s,l,h,u,0,d);else{const e=decodeIAID(b,m,p),t=decodeInteger(b,"IARDX",m),i=decodeInteger(b,"IARDY",m);y=decodeRefinement(a,g,l,e=32){let r,a,s;switch(t){case 32:if(0===e)throw new Jbig2Error("no previous value in symbol ID table");a=i.readBits(2)+3;r=n[e-1].prefixLength;break;case 33:a=i.readBits(3)+3;r=0;break;case 34:a=i.readBits(7)+11;r=0;break;default:throw new Jbig2Error("invalid code length in symbol ID table")}for(s=0;s=0;b--){M=e?decodeMMRBitmap(T,l,h,!0):decodeBitmap(!1,l,h,r,!1,null,F,p);O[b]=M}for(E=0;E=0;y--){N^=O[y][E][D];L|=N<>8;$=d+E*f-D*g>>8;if(j>=0&&j+k<=a&&$>=0&&$+C<=n)for(b=0;b=n)){U=m[t];_=R[b];for(y=0;y=0&&e>1&7),l=1+(a>>4&7),h=[];let u,d,f=n;do{u=o.readBits(c);d=o.readBits(l);h.push(new HuffmanLine([f,u,d,0]));f+=1<>t&1;if(t<=0)this.children[r]=new HuffmanTreeNode(e);else{let a=this.children[r];a||(this.children[r]=a=new HuffmanTreeNode(null));a.buildTree(e,t-1)}}decodeNode(e){if(this.isLeaf){if(this.isOOB)return null;const t=e.readBits(this.rangeLength);return this.rangeLow+(this.isLowerRange?-t:t)}const t=this.children[e.readBit()];if(!t)throw new Jbig2Error("invalid Huffman data");return t.decodeNode(e)}}class HuffmanTable{constructor(e,t){t||this.assignPrefixCodes(e);this.rootNode=new HuffmanTreeNode(null);for(let t=0,r=e.length;t0&&this.rootNode.buildTree(r,r.prefixLength-1)}}decode(e){return this.rootNode.decodeNode(e)}assignPrefixCodes(e){const t=e.length;let r=0;for(let a=0;a=this.end)throw new Jbig2Error("end of data while reading bit");this.currentByte=this.data[this.position++];this.shift=7}const e=this.currentByte>>this.shift&1;this.shift--;return e}readBits(e){let t,r=0;for(t=e-1;t>=0;t--)r|=this.readBit()<=this.end?-1:this.data[this.position++]}}function getCustomHuffmanTable(e,t,r){let a=0;for(let i=0,n=t.length;i>r&1;r--}}if(a&&!l){const e=5;for(let t=0;t>=1}}return{imgData:u,width:c,height:l}}(e);this.width=r;this.height=a;return t}}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ArithmeticDecoder=void 0;const r=[{qe:22017,nmps:1,nlps:1,switchFlag:1},{qe:13313,nmps:2,nlps:6,switchFlag:0},{qe:6145,nmps:3,nlps:9,switchFlag:0},{qe:2753,nmps:4,nlps:12,switchFlag:0},{qe:1313,nmps:5,nlps:29,switchFlag:0},{qe:545,nmps:38,nlps:33,switchFlag:0},{qe:22017,nmps:7,nlps:6,switchFlag:1},{qe:21505,nmps:8,nlps:14,switchFlag:0},{qe:18433,nmps:9,nlps:14,switchFlag:0},{qe:14337,nmps:10,nlps:14,switchFlag:0},{qe:12289,nmps:11,nlps:17,switchFlag:0},{qe:9217,nmps:12,nlps:18,switchFlag:0},{qe:7169,nmps:13,nlps:20,switchFlag:0},{qe:5633,nmps:29,nlps:21,switchFlag:0},{qe:22017,nmps:15,nlps:14,switchFlag:1},{qe:21505,nmps:16,nlps:14,switchFlag:0},{qe:20737,nmps:17,nlps:15,switchFlag:0},{qe:18433,nmps:18,nlps:16,switchFlag:0},{qe:14337,nmps:19,nlps:17,switchFlag:0},{qe:13313,nmps:20,nlps:18,switchFlag:0},{qe:12289,nmps:21,nlps:19,switchFlag:0},{qe:10241,nmps:22,nlps:19,switchFlag:0},{qe:9217,nmps:23,nlps:20,switchFlag:0},{qe:8705,nmps:24,nlps:21,switchFlag:0},{qe:7169,nmps:25,nlps:22,switchFlag:0},{qe:6145,nmps:26,nlps:23,switchFlag:0},{qe:5633,nmps:27,nlps:24,switchFlag:0},{qe:5121,nmps:28,nlps:25,switchFlag:0},{qe:4609,nmps:29,nlps:26,switchFlag:0},{qe:4353,nmps:30,nlps:27,switchFlag:0},{qe:2753,nmps:31,nlps:28,switchFlag:0},{qe:2497,nmps:32,nlps:29,switchFlag:0},{qe:2209,nmps:33,nlps:30,switchFlag:0},{qe:1313,nmps:34,nlps:31,switchFlag:0},{qe:1089,nmps:35,nlps:32,switchFlag:0},{qe:673,nmps:36,nlps:33,switchFlag:0},{qe:545,nmps:37,nlps:34,switchFlag:0},{qe:321,nmps:38,nlps:35,switchFlag:0},{qe:273,nmps:39,nlps:36,switchFlag:0},{qe:133,nmps:40,nlps:37,switchFlag:0},{qe:73,nmps:41,nlps:38,switchFlag:0},{qe:37,nmps:42,nlps:39,switchFlag:0},{qe:21,nmps:43,nlps:40,switchFlag:0},{qe:9,nmps:44,nlps:41,switchFlag:0},{qe:5,nmps:45,nlps:42,switchFlag:0},{qe:1,nmps:45,nlps:43,switchFlag:0},{qe:22017,nmps:46,nlps:46,switchFlag:0}];t.ArithmeticDecoder=class ArithmeticDecoder{constructor(e,t,r){this.data=e;this.bp=t;this.dataEnd=r;this.chigh=e[t];this.clow=0;this.byteIn();this.chigh=this.chigh<<7&65535|this.clow>>9&127;this.clow=this.clow<<7&65535;this.ct-=7;this.a=32768}byteIn(){const e=this.data;let t=this.bp;if(255===e[t])if(e[t+1]>143){this.clow+=65280;this.ct=8}else{t++;this.clow+=e[t]<<9;this.ct=7;this.bp=t}else{t++;this.clow+=t65535){this.chigh+=this.clow>>16;this.clow&=65535}}readBit(e,t){let a=e[t]>>1,i=1&e[t];const n=r[a],s=n.qe;let o,c=this.a-s;if(this.chigh>15&1;this.clow=this.clow<<1&65535;this.ct--}while(0==(32768&c));this.a=c;e[t]=a<<1|i;return o}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.JpegStream=void 0;var a=r(19),i=r(5),n=r(28),s=r(2);class JpegStream extends a.DecodeStream{constructor(e,t,r){let a;for(;-1!==(a=e.getByte());)if(255===a){e.skip(-1);break}super(t);this.stream=e;this.dict=e.dict;this.maybeLength=t;this.params=r}get bytes(){return(0,s.shadow)(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}readBlock(){if(this.eof)return;const e={decodeTransform:void 0,colorTransform:void 0},t=this.dict.getArray("Decode","D");if(this.forceRGB&&Array.isArray(t)){const r=this.dict.get("BitsPerComponent")||8,a=t.length,i=new Int32Array(a);let n=!1;const s=(1<{Object.defineProperty(t,"__esModule",{value:!0});t.JpegImage=void 0;var a=r(2),i=r(9);class JpegError extends a.BaseException{constructor(e){super(`JPEG error: ${e}`)}}class DNLMarkerError extends a.BaseException{constructor(e,t){super(e);this.scanLines=t}}class EOIMarkerError extends a.BaseException{}const n=new Uint8Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),s=4017,o=799,c=3406,l=2276,h=1567,u=3784,d=5793,f=2896;function buildHuffmanTable(e,t){let r,a,i=0,n=16;for(;n>0&&!e[n-1];)n--;const s=[{children:[],index:0}];let o,c=s[0];for(r=0;r0;)c=s.pop();c.index++;s.push(c);for(;s.length<=r;){s.push(o={children:[],index:0});c.children[c.index]=o.children;c=o}i++}if(r+10){b--;return m>>b&1}m=e[t++];if(255===m){const a=e[t++];if(a){if(220===a&&d){t+=2;const a=(0,i.readUint16)(e,t);t+=2;if(a>0&&a!==r.scanLines)throw new DNLMarkerError("Found DNL marker (0xFFDC) while parsing scan data",a)}else if(217===a){if(d){const e=x*(8===r.precision?8:0);if(e>0&&Math.round(r.scanLines/e)>=10)throw new DNLMarkerError("Found EOI marker (0xFFD9) while parsing scan data, possibly caused by incorrect `scanLines` parameter",e)}throw new EOIMarkerError("Found EOI marker (0xFFD9) while parsing scan data")}throw new JpegError(`unexpected marker ${(m<<8|a).toString(16)}`)}}b=7;return m>>>7}function decodeHuffman(e){let t=e;for(;;){t=t[readBit()];switch(typeof t){case"number":return t;case"object":continue}throw new JpegError("invalid huffman sequence")}}function receive(e){let t=0;for(;e>0;){t=t<<1|readBit();e--}return t}function receiveAndExtend(e){if(1===e)return 1===readBit()?1:-1;const t=receive(e);return t>=1<0){y--;return}let r=c;const a=l;for(;r<=a;){const a=decodeHuffman(e.huffmanTableAC),i=15&a,s=a>>4;if(0===i){if(s<15){y=receive(s)+(1<>4;if(0===i)if(o<15){y=receive(o)+(1<>4;if(0===a){if(s<15)break;i+=16;continue}i+=s;const o=n[i];e.blockData[t+o]=receiveAndExtend(a);i++}};let E,D,N,L,R=0;D=1===k?s[0].blocksPerLine*s[0].blocksPerColumn:f*r.mcusPerColumn;for(;R<=D;){const r=o?Math.min(D-R,o):D;if(r>0){for(v=0;v0?"unexpected":"excessive";(0,a.warn)(`decodeScan - ${e} MCU data, current marker is: ${E.invalid}`);t=E.offset}if(!(E.marker>=65488&&E.marker<=65495))break;t+=2}return t-p}function quantizeAndInverse(e,t,r){const a=e.quantizationTable,i=e.blockData;let n,g,p,m,b,y,w,S,x,k,C,v,F,O,T,M,E;if(!a)throw new JpegError("missing required Quantization Table.");for(let e=0;e<64;e+=8){x=i[t+e];k=i[t+e+1];C=i[t+e+2];v=i[t+e+3];F=i[t+e+4];O=i[t+e+5];T=i[t+e+6];M=i[t+e+7];x*=a[e];if(0!=(k|C|v|F|O|T|M)){k*=a[e+1];C*=a[e+2];v*=a[e+3];F*=a[e+4];O*=a[e+5];T*=a[e+6];M*=a[e+7];n=d*x+128>>8;g=d*F+128>>8;p=C;m=T;b=f*(k-M)+128>>8;S=f*(k+M)+128>>8;y=v<<4;w=O<<4;n=n+g+1>>1;g=n-g;E=p*u+m*h+128>>8;p=p*h-m*u+128>>8;m=E;b=b+w+1>>1;w=b-w;S=S+y+1>>1;y=S-y;n=n+m+1>>1;m=n-m;g=g+p+1>>1;p=g-p;E=b*l+S*c+2048>>12;b=b*c-S*l+2048>>12;S=E;E=y*o+w*s+2048>>12;y=y*s-w*o+2048>>12;w=E;r[e]=n+S;r[e+7]=n-S;r[e+1]=g+w;r[e+6]=g-w;r[e+2]=p+y;r[e+5]=p-y;r[e+3]=m+b;r[e+4]=m-b}else{E=d*x+512>>10;r[e]=E;r[e+1]=E;r[e+2]=E;r[e+3]=E;r[e+4]=E;r[e+5]=E;r[e+6]=E;r[e+7]=E}}for(let e=0;e<8;++e){x=r[e];k=r[e+8];C=r[e+16];v=r[e+24];F=r[e+32];O=r[e+40];T=r[e+48];M=r[e+56];if(0!=(k|C|v|F|O|T|M)){n=d*x+2048>>12;g=d*F+2048>>12;p=C;m=T;b=f*(k-M)+2048>>12;S=f*(k+M)+2048>>12;y=v;w=O;n=4112+(n+g+1>>1);g=n-g;E=p*u+m*h+2048>>12;p=p*h-m*u+2048>>12;m=E;b=b+w+1>>1;w=b-w;S=S+y+1>>1;y=S-y;n=n+m+1>>1;m=n-m;g=g+p+1>>1;p=g-p;E=b*l+S*c+2048>>12;b=b*c-S*l+2048>>12;S=E;E=y*o+w*s+2048>>12;y=y*s-w*o+2048>>12;w=E;x=n+S;M=n-S;k=g+w;T=g-w;C=p+y;O=p-y;v=m+b;F=m-b;x<16?x=0:x>=4080?x=255:x>>=4;k<16?k=0:k>=4080?k=255:k>>=4;C<16?C=0:C>=4080?C=255:C>>=4;v<16?v=0:v>=4080?v=255:v>>=4;F<16?F=0:F>=4080?F=255:F>>=4;O<16?O=0:O>=4080?O=255:O>>=4;T<16?T=0:T>=4080?T=255:T>>=4;M<16?M=0:M>=4080?M=255:M>>=4;i[t+e]=x;i[t+e+8]=k;i[t+e+16]=C;i[t+e+24]=v;i[t+e+32]=F;i[t+e+40]=O;i[t+e+48]=T;i[t+e+56]=M}else{E=d*x+8192>>14;E=E<-2040?0:E>=2024?255:E+2056>>4;i[t+e]=E;i[t+e+8]=E;i[t+e+16]=E;i[t+e+24]=E;i[t+e+32]=E;i[t+e+40]=E;i[t+e+48]=E;i[t+e+56]=E}}}function buildComponentData(e,t){const r=t.blocksPerLine,a=t.blocksPerColumn,i=new Int16Array(64);for(let e=0;e=a)return null;const s=(0,i.readUint16)(e,t);if(s>=65472&&s<=65534)return{invalid:null,marker:s,offset:t};let o=(0,i.readUint16)(e,n);for(;!(o>=65472&&o<=65534);){if(++n>=a)return null;o=(0,i.readUint16)(e,n)}return{invalid:s.toString(16),marker:o,offset:n}}t.JpegImage=class JpegImage{constructor({decodeTransform:e=null,colorTransform:t=-1}={}){this._decodeTransform=e;this._colorTransform=t}parse(e,{dnlScanLines:t=null}={}){function readDataBlock(){const t=(0,i.readUint16)(e,o);o+=2;let r=o+t-2;const n=findNextFileMarker(e,r,o);if(n&&n.invalid){(0,a.warn)("readDataBlock - incorrect length, current marker is: "+n.invalid);r=n.offset}const s=e.subarray(o,r);o+=s.length;return s}function prepareComponents(e){const t=Math.ceil(e.samplesPerLine/8/e.maxH),r=Math.ceil(e.scanLines/8/e.maxV);for(let a=0,i=e.components.length;a>4==0)for(m=0;m<64;m++){x=n[m];r[x]=e[o++]}else{if(t>>4!=1)throw new JpegError("DQT - invalid table spec");for(m=0;m<64;m++){x=n[m];r[x]=(0,i.readUint16)(e,o);o+=2}}u[15&t]=r}break;case 65472:case 65473:case 65474:if(r)throw new JpegError("Only single frame JPEGs supported");o+=2;r={};r.extended=65473===g;r.progressive=65474===g;r.precision=e[o++];const k=(0,i.readUint16)(e,o);o+=2;r.scanLines=t||k;r.samplesPerLine=(0,i.readUint16)(e,o);o+=2;r.components=[];r.componentIds={};const C=e[o++];let v=0,F=0;for(p=0;p>4,i=15&e[o+1];v>4==0?f:d)[15&t]=buildHuffmanTable(r,i)}break;case 65501:o+=2;s=(0,i.readUint16)(e,o);o+=2;break;case 65498:const T=1==++h&&!t;o+=2;const M=e[o++],E=[];for(p=0;p>4];i.huffmanTableAC=d[15&n];E.push(i)}const D=e[o++],N=e[o++],L=e[o++];try{const t=decodeScan(e,o,r,E,s,D,N,L>>4,15&L,T);o+=t}catch(t){if(t instanceof DNLMarkerError){(0,a.warn)(`${t.message} -- attempting to re-parse the JPEG image.`);return this.parse(e,{dnlScanLines:t.scanLines})}if(t instanceof EOIMarkerError){(0,a.warn)(`${t.message} -- ignoring the rest of the image data.`);break e}throw t}break;case 65500:o+=4;break;case 65535:255!==e[o]&&o--;break;default:const R=findNextFileMarker(e,o-2,o-3);if(R&&R.invalid){(0,a.warn)("JpegImage.parse - unexpected data, current marker is: "+R.invalid);o=R.offset;break}if(!R||o>=e.length-1){(0,a.warn)("JpegImage.parse - reached the end of the image data without finding an EOI marker (0xFFD9).");break e}throw new JpegError("JpegImage.parse - unknown marker: "+g.toString(16))}g=(0,i.readUint16)(e,o);o+=2}this.width=r.samplesPerLine;this.height=r.scanLines;this.jfif=c;this.adobe=l;this.components=[];for(let e=0,t=r.components.length;e>8)+C[f+1];return w}get _isColorConversionNeeded(){return this.adobe?!!this.adobe.transformCode:3===this.numComponents?0!==this._colorTransform&&(82!==this.components[0].index||71!==this.components[1].index||66!==this.components[2].index):1===this._colorTransform}_convertYccToRgb(e){let t,r,a;for(let i=0,n=e.length;i4)throw new JpegError("Unsupported color mode");const i=this._getLinearizedBlockData(e,t,a);if(1===this.numComponents&&r){const e=i.length,t=new Uint8ClampedArray(3*e);let r=0;for(let a=0;a{Object.defineProperty(t,"__esModule",{value:!0});t.JpxStream=void 0;var a=r(19),i=r(30),n=r(2);class JpxStream extends a.DecodeStream{constructor(e,t,r){super(t);this.stream=e;this.dict=e.dict;this.maybeLength=t;this.params=r}get bytes(){return(0,n.shadow)(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}readBlock(){if(this.eof)return;const e=new i.JpxImage;e.parse(this.bytes);const t=e.width,r=e.height,a=e.componentsCount,n=e.tiles.length;if(1===n)this.buffer=e.tiles[0].items;else{const i=new Uint8ClampedArray(t*r*a);for(let r=0;r{Object.defineProperty(t,"__esModule",{value:!0});t.JpxImage=void 0;var a=r(2),i=r(9),n=r(26);class JpxError extends a.BaseException{constructor(e){super(`JPX error: ${e}`)}}const s={LL:0,LH:1,HL:1,HH:2};t.JpxImage=class JpxImage{constructor(){this.failOnCorruptedImage=!1}parse(e){if(65359===(0,i.readUint16)(e,0)){this.parseCodestream(e,0,e.length);return}const t=e.length;let r=0;for(;r>24&255,o>>16&255,o>>8&255,255&o);(0,a.warn)(`Unsupported header type ${o} (${n}).`)}l&&(r+=c)}}parseImageProperties(e){let t=e.getByte();for(;t>=0;){const r=t;t=e.getByte();if(65361===(r<<8|t)){e.skip(4);const t=e.getInt32()>>>0,r=e.getInt32()>>>0,a=e.getInt32()>>>0,i=e.getInt32()>>>0;e.skip(16);const n=e.getUint16();this.width=t-a;this.height=r-i;this.componentsCount=n;this.bitsPerComponent=8;return}}throw new JpxError("No size marker found in JPX stream")}parseCodestream(e,t,r){const n={};let s=!1;try{let o=t;for(;o+1>5;l=[];for(;r>3;t.mu=0}else{t.epsilon=e[r]>>3;t.mu=(7&e[r])<<8|e[r+1];r+=2}l.push(t)}b.SPqcds=l;if(n.mainHeader)n.QCD=b;else{n.currentTile.QCD=b;n.currentTile.QCC=[]}break;case 65373:f=(0,i.readUint16)(e,o);const y={};r=o+2;let w;if(n.SIZ.Csiz<257)w=e[r++];else{w=(0,i.readUint16)(e,r);r+=2}c=e[r++];switch(31&c){case 0:h=8;u=!0;break;case 1:h=16;u=!1;break;case 2:h=16;u=!0;break;default:throw new Error("Invalid SQcd value "+c)}y.noQuantization=8===h;y.scalarExpounded=u;y.guardBits=c>>5;l=[];for(;r>3;t.mu=0}else{t.epsilon=e[r]>>3;t.mu=(7&e[r])<<8|e[r+1];r+=2}l.push(t)}y.SPqcds=l;n.mainHeader?n.QCC[w]=y:n.currentTile.QCC[w]=y;break;case 65362:f=(0,i.readUint16)(e,o);const S={};r=o+2;const x=e[r++];S.entropyCoderWithCustomPrecincts=!!(1&x);S.sopMarkerUsed=!!(2&x);S.ephMarkerUsed=!!(4&x);S.progressionOrder=e[r++];S.layersCount=(0,i.readUint16)(e,r);r+=2;S.multipleComponentTransform=e[r++];S.decompositionLevelsCount=e[r++];S.xcb=2+(15&e[r++]);S.ycb=2+(15&e[r++]);const k=e[r++];S.selectiveArithmeticCodingBypass=!!(1&k);S.resetContextProbabilities=!!(2&k);S.terminationOnEachCodingPass=!!(4&k);S.verticallyStripe=!!(8&k);S.predictableTermination=!!(16&k);S.segmentationSymbolUsed=!!(32&k);S.reversibleTransformation=e[r++];if(S.entropyCoderWithCustomPrecincts){const t=[];for(;r>4})}S.precinctsSizes=t}const C=[];S.selectiveArithmeticCodingBypass&&C.push("selectiveArithmeticCodingBypass");S.resetContextProbabilities&&C.push("resetContextProbabilities");S.terminationOnEachCodingPass&&C.push("terminationOnEachCodingPass");S.verticallyStripe&&C.push("verticallyStripe");S.predictableTermination&&C.push("predictableTermination");if(C.length>0){s=!0;(0,a.warn)(`JPX: Unsupported COD options (${C.join(", ")}).`)}if(n.mainHeader)n.COD=S;else{n.currentTile.COD=S;n.currentTile.COC=[]}break;case 65424:f=(0,i.readUint16)(e,o);d={};d.index=(0,i.readUint16)(e,o+2);d.length=(0,i.readUint32)(e,o+4);d.dataEnd=d.length+o-2;d.partIndex=e[o+8];d.partsCount=e[o+9];n.mainHeader=!1;if(0===d.partIndex){d.COD=n.COD;d.COC=n.COC.slice(0);d.QCD=n.QCD;d.QCC=n.QCC.slice(0)}n.currentTile=d;break;case 65427:d=n.currentTile;if(0===d.partIndex){initializeTile(n,d.index);buildPackets(n)}f=d.dataEnd-o;parseTilePackets(n,e,o,f);break;case 65363:(0,a.warn)("JPX: Codestream code 0xFF53 (COC) is not implemented.");case 65365:case 65367:case 65368:case 65380:f=(0,i.readUint16)(e,o);break;default:throw new Error("Unknown codestream code: "+t.toString(16))}o+=f}}catch(e){if(s||this.failOnCorruptedImage)throw new JpxError(e.message);(0,a.warn)(`JPX: Trying to recover from: "${e.message}".`)}this.tiles=function transformComponents(e){const t=e.SIZ,r=e.components,a=t.Csiz,i=[];for(let t=0,n=e.tiles.length;t>2);c[b++]=e+m>>h;c[b++]=e>>h;c[b++]=e+p>>h}else for(d=0;d>h;c[b++]=g-.34413*p-.71414*m>>h;c[b++]=g+1.772*p>>h}if(e)for(d=0,b=3;d>h}else for(let e=0;e>h;b+=a}}i.push(l)}return i}(n);this.width=n.SIZ.Xsiz-n.SIZ.XOsiz;this.height=n.SIZ.Ysiz-n.SIZ.YOsiz;this.componentsCount=n.SIZ.Csiz}};function calculateComponentDimensions(e,t){e.x0=Math.ceil(t.XOsiz/e.XRsiz);e.x1=Math.ceil(t.Xsiz/e.XRsiz);e.y0=Math.ceil(t.YOsiz/e.YRsiz);e.y1=Math.ceil(t.Ysiz/e.YRsiz);e.width=e.x1-e.x0;e.height=e.y1-e.y0}function calculateTileGrids(e,t){const r=e.SIZ,a=[];let i;const n=Math.ceil((r.Xsiz-r.XTOsiz)/r.XTsiz),s=Math.ceil((r.Ysiz-r.YTOsiz)/r.YTsiz);for(let e=0;e0?Math.min(a.xcb,i.PPx-1):Math.min(a.xcb,i.PPx);i.ycb_=r>0?Math.min(a.ycb,i.PPy-1):Math.min(a.ycb,i.PPy);return i}function buildPrecincts(e,t,r){const a=1<t.trx0?Math.ceil(t.trx1/a)-Math.floor(t.trx0/a):0,l=t.try1>t.try0?Math.ceil(t.try1/i)-Math.floor(t.try0/i):0,h=c*l;t.precinctParameters={precinctWidth:a,precinctHeight:i,numprecinctswide:c,numprecinctshigh:l,numprecincts:h,precinctWidthInSubband:s,precinctHeightInSubband:o}}function buildCodeblocks(e,t,r){const a=r.xcb_,i=r.ycb_,n=1<>a,c=t.tby0>>i,l=t.tbx1+n-1>>a,h=t.tby1+s-1>>i,u=t.resolution.precinctParameters,d=[],f=[];let g,p,m,b;for(p=c;pe.cbxMax&&(e.cbxMax=g);pe.cbyMax&&(e.cbyMax=p)}else f[b]=e={cbxMin:g,cbyMin:p,cbxMax:g,cbyMax:p};m.precinct=e}t.codeblockParameters={codeblockWidth:a,codeblockHeight:i,numcodeblockwide:l-o+1,numcodeblockhigh:h-c+1};t.codeblocks=d;t.precincts=f}function createPacket(e,t,r){const a=[],i=e.subbands;for(let e=0,r=i.length;ee.codingStyleParameters.decompositionLevelsCount)continue;const t=e.resolutions[c],r=t.precinctParameters.numprecincts;for(;he.codingStyleParameters.decompositionLevelsCount)continue;const t=e.resolutions[o],r=t.precinctParameters.numprecincts;for(;he.codingStyleParameters.decompositionLevelsCount)continue;const t=e.resolutions[o],r=t.precinctParameters.numprecincts;if(!(l>=r)){for(;s=0;--e){const r=t.resolutions[e],a=g*r.precinctParameters.precinctWidth,i=g*r.precinctParameters.precinctHeight;h=Math.min(h,a);u=Math.min(u,i);d=Math.max(d,r.precinctParameters.numprecinctswide);f=Math.max(f,r.precinctParameters.numprecinctshigh);l[e]={width:a,height:i};g<<=1}r=Math.min(r,h);a=Math.min(a,u);i=Math.max(i,d);n=Math.max(n,f);s[o]={resolutions:l,minWidth:h,minHeight:u,maxNumWide:d,maxNumHigh:f}}return{components:s,minWidth:r,minHeight:a,maxNumWide:i,maxNumHigh:n}}function buildPackets(e){const t=e.SIZ,r=e.currentTile.index,a=e.tiles[r],i=t.Csiz;for(let e=0;e>>o&(1<0;){const e=n.shift();o=e.codeblock;void 0===o.data&&(o.data=[]);o.data.push({data:t,start:r+s,end:r+s+e.dataLength,codingpasses:e.codingpasses});s+=e.dataLength}}return s}function copyCoefficients(e,t,r,a,i,s,c,l){const h=a.tbx0,u=a.tby0,d=a.tbx1-a.tbx0,f=a.codeblocks,g="H"===a.type.charAt(0)?1:0,p="H"===a.type.charAt(1)?t:0;for(let r=0,m=f.length;r=s?_:_*(1<0?1-e:0)}const g=t.subbands[a],p=s[g.type];copyCoefficients(n,r,0,g,f?1:2**(d+p-o)*(1+i/2048),h+o-1,f,u)}p.push({width:r,height:i,items:n})}const b=g.calculate(p,a.tcx0,a.tcy0);return{left:a.tcx0,top:a.tcy0,width:b.width,height:b.height,items:b.items}}function initializeTile(e,t){const r=e.SIZ.Csiz,a=e.tiles[t];for(let t=0;t>=1;t>>=1;a++}a--;r=this.levels[a];r.items[r.index]=i;this.currentLevel=a;delete this.value}incrementValue(){const e=this.levels[this.currentLevel];e.items[e.index]++}nextLevel(){let e=this.currentLevel,t=this.levels[e];const r=t.items[t.index];e--;if(e<0){this.value=r;return!1}this.currentLevel=e;t=this.levels[e];t.items[t.index]=r;return!0}}class InclusionTree{constructor(e,t,r){const a=(0,i.log2)(Math.max(e,t))+1;this.levels=[];for(let i=0;ir){this.currentLevel=a;this.propagateValues();return!1}e>>=1;t>>=1;a++}this.currentLevel=a-1;return!0}incrementValue(e){const t=this.levels[this.currentLevel];t.items[t.index]=e+1;this.propagateValues()}propagateValues(){let e=this.currentLevel,t=this.levels[e];const r=t.items[t.index];for(;--e>=0;){t=this.levels[e];t.items[t.index]=r}}nextLevel(){let e=this.currentLevel,t=this.levels[e];const r=t.items[t.index];t.items[t.index]=255;e--;if(e<0)return!1;this.currentLevel=e;t=this.levels[e];t.items[t.index]=r;return!0}}const o=function BitModelClosure(){const e=17,t=new Uint8Array([0,5,8,0,3,7,8,0,4,7,8,0,0,0,0,0,1,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8]),r=new Uint8Array([0,3,4,0,5,7,7,0,8,8,8,0,0,0,0,0,1,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8]),a=new Uint8Array([0,1,2,0,1,2,2,0,2,2,2,0,0,0,0,0,3,4,5,0,4,5,5,0,5,5,5,0,0,0,0,0,6,7,7,0,7,7,7,0,7,7,7,0,0,0,0,0,8,8,8,0,8,8,8,0,8,8,8,0,0,0,0,0,8,8,8,0,8,8,8,0,8,8,8]);return class BitModel{constructor(e,i,n,s,o){this.width=e;this.height=i;let c;c="HH"===n?a:"HL"===n?r:t;this.contextLabelTable=c;const l=e*i;this.neighborsSignificance=new Uint8Array(l);this.coefficentsSign=new Uint8Array(l);let h;h=o>14?new Uint32Array(l):o>6?new Uint16Array(l):new Uint8Array(l);this.coefficentsMagnitude=h;this.processingFlags=new Uint8Array(l);const u=new Uint8Array(l);if(0!==s)for(let e=0;e0,o=t+10){c=r-i;s&&(a[c-1]+=16);o&&(a[c+1]+=16);a[c]+=4}if(e+1=r)break;s[d]&=-2;if(a[d]||!n[d])continue;const g=c[n[d]];if(e.readBit(o,g)){const e=this.decodeSignBit(t,u,d);i[d]=e;a[d]=1;this.setNeighborsSignificance(t,u,d);s[d]|=2}l[d]++;s[d]|=1}}}decodeSignBit(e,t,r){const a=this.width,i=this.height,n=this.coefficentsMagnitude,s=this.coefficentsSign;let o,c,l,h,u,d;h=t>0&&0!==n[r-1];if(t+10&&0!==n[r-a];if(e+1=0){u=9+o;d=this.decoder.readBit(this.contexts,u)}else{u=9-o;d=1^this.decoder.readBit(this.contexts,u)}return d}runMagnitudeRefinementPass(){const e=this.decoder,t=this.width,r=this.height,a=this.coefficentsMagnitude,i=this.neighborsSignificance,n=this.contexts,s=this.bitsDecoded,o=this.processingFlags,c=t*r,l=4*t;for(let r,h=0;h>1;let i,n,s,o;const c=-1.586134342059924,l=-.052980118572961,h=.882911075530934,u=.443506852043971,d=1.230174104914001;i=(t|=0)-3;for(n=a+4;n--;i+=2)e[i]*=.8128930661159609;i=t-2;s=u*e[i-1];for(n=a+3;n--;i+=2){o=u*e[i+1];e[i]=d*e[i]-s-o;if(!n--)break;i+=2;s=u*e[i+1];e[i]=d*e[i]-s-o}i=t-1;s=h*e[i-1];for(n=a+2;n--;i+=2){o=h*e[i+1];e[i]-=s+o;if(!n--)break;i+=2;s=h*e[i+1];e[i]-=s+o}i=t;s=l*e[i-1];for(n=a+1;n--;i+=2){o=l*e[i+1];e[i]-=s+o;if(!n--)break;i+=2;s=l*e[i+1];e[i]-=s+o}if(0!==a){i=t+1;s=c*e[i-1];for(n=a;n--;i+=2){o=c*e[i+1];e[i]-=s+o;if(!n--)break;i+=2;s=c*e[i+1];e[i]-=s+o}}}}class ReversibleTransform extends Transform{filter(e,t,r){const a=r>>1;let i,n;for(i=t|=0,n=a+1;n--;i+=2)e[i]-=e[i-1]+e[i+1]+2>>2;for(i=t+1,n=a;n--;i+=2)e[i]+=e[i-1]+e[i+1]>>1}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.LZWStream=void 0;var a=r(19);class LZWStream extends a.DecodeStream{constructor(e,t,r){super(t);this.str=e;this.dict=e.dict;this.cachedData=0;this.bitsCached=0;const a=4096,i={earlyChange:r,codeLength:9,nextCode:258,dictionaryValues:new Uint8Array(a),dictionaryLengths:new Uint16Array(a),dictionaryPrevCodes:new Uint16Array(a),currentSequence:new Uint8Array(a),currentSequenceLength:0};for(let e=0;e<256;++e){i.dictionaryValues[e]=e;i.dictionaryLengths[e]=1}this.lzwState=i}readBits(e){let t=this.bitsCached,r=this.cachedData;for(;t>>t&(1<0;if(e<256){d[0]=e;f=1}else{if(!(e>=258)){if(256===e){h=9;s=258;f=0;continue}this.eof=!0;delete this.lzwState;break}if(e=0;t--){d[t]=o[r];r=l[r]}}else d[f++]=d[0]}if(i){l[s]=u;c[s]=c[u]+1;o[s]=d[0];s++;h=s+n&s+n-1?h:0|Math.min(Math.log(s+n)/.6931471805599453+1,12)}u=e;g+=f;if(a{Object.defineProperty(t,"__esModule",{value:!0});t.PredictorStream=void 0;var a=r(19),i=r(2),n=r(5);class PredictorStream extends a.DecodeStream{constructor(e,t,r){super(t);if(!(0,n.isDict)(r))return e;const a=this.predictor=r.get("Predictor")||1;if(a<=1)return e;if(2!==a&&(a<10||a>15))throw new i.FormatError(`Unsupported predictor: ${a}`);this.readBlock=2===a?this.readBlockTiff:this.readBlockPng;this.str=e;this.dict=e.dict;const s=this.colors=r.get("Colors")||1,o=this.bits=r.get("BitsPerComponent")||8,c=this.columns=r.get("Columns")||1;this.pixBytes=s*o+7>>3;this.rowBytes=c*s*o+7>>3;return this}readBlockTiff(){const e=this.rowBytes,t=this.bufferLength,r=this.ensureBuffer(t+e),a=this.bits,i=this.colors,n=this.str.getBytes(e);this.eof=!n.length;if(this.eof)return;let s,o=0,c=0,l=0,h=0,u=t;if(1===a&&1===i)for(s=0;s>1;e^=e>>2;e^=e>>4;o=(1&e)<<7;r[u++]=e}else if(8===a){for(s=0;s>8&255;r[u++]=255&e}}else{const e=new Uint8Array(i+1),u=(1<>l-a)&u;l-=a;c=c<=8){r[f++]=c>>h-8&255;h-=8}}h>0&&(r[f++]=(c<<8-h)+(o&(1<<8-h)-1))}this.bufferLength+=e}readBlockPng(){const e=this.rowBytes,t=this.pixBytes,r=this.str.getByte(),a=this.str.getBytes(e);this.eof=!a.length;if(this.eof)return;const n=this.bufferLength,s=this.ensureBuffer(n+e);let o=s.subarray(n-e,n);0===o.length&&(o=new Uint8Array(e));let c,l,h,u=n;switch(r){case 0:for(c=0;c>1)+a[c];for(;c>1)+a[c]&255;u++}break;case 4:for(c=0;c{Object.defineProperty(t,"__esModule",{value:!0});t.RunLengthStream=void 0;var a=r(19);class RunLengthStream extends a.DecodeStream{constructor(e,t){super(t);this.str=e;this.dict=e.dict}readBlock(){const e=this.str.getBytes(2);if(!e||e.length<2||128===e[0]){this.eof=!0;return}let t,r=this.bufferLength,a=e[0];if(a<128){t=this.ensureBuffer(r+a+1);t[r++]=e[1];if(a>0){const e=this.str.getBytes(a);t.set(e,r);r+=a}}else{a=257-a;const i=e[1];t=this.ensureBuffer(r+a+1);for(let e=0;e{Object.defineProperty(t,"__esModule",{value:!0});t.Font=t.ErrorFont=void 0;var a=r(2),i=r(35),n=r(38),s=r(39),o=r(37),c=r(41),l=r(40),h=r(42),u=r(43),d=r(44),f=r(45),g=r(16),p=r(46),m=r(9),b=r(10),y=r(47);const w=[[57344,63743],[1048576,1114109]],S=1e3,x=["ascent","bbox","black","bold","charProcOperatorList","composite","cssFontInfo","data","defaultVMetrics","defaultWidth","descent","fallbackName","fontMatrix","fontType","isMonospace","isSerifFont","isType3Font","italic","loadedName","mimetype","missingFile","name","remeasure","subtype","type","vertical"],k=["cMap","defaultEncoding","differences","isSymbolicFont","seacMap","toFontChar","toUnicode","vmetrics","widths"];function adjustWidths(e){if(!e.fontMatrix)return;if(e.fontMatrix[0]===a.FONT_IDENTITY_MATRIX[0])return;const t=.001/e.fontMatrix[0],r=e.widths;for(const e in r)r[e]*=t;e.defaultWidth*=t}function amendFallbackToUnicode(e){if(!e.fallbackToUnicode)return;if(e.toUnicode instanceof h.IdentityToUnicodeMap)return;const t=[];for(const r in e.fallbackToUnicode)e.toUnicode.has(r)||(t[r]=e.fallbackToUnicode[r]);t.length>0&&e.toUnicode.amend(t)}class Glyph{constructor(e,t,r,a,i,n,s,o,c){this.originalCharCode=e;this.fontChar=t;this.unicode=r;this.accent=a;this.width=i;this.vmetric=n;this.operatorListId=s;this.isSpace=o;this.isInFont=c}matchesForCache(e,t,r,a,i,n,s,o,c){return this.originalCharCode===e&&this.fontChar===t&&this.unicode===r&&this.accent===a&&this.width===i&&this.vmetric===n&&this.operatorListId===s&&this.isSpace===o&&this.isInFont===c}}function int16(e,t){return(e<<8)+t}function writeSignedInt16(e,t,r){e[t+1]=r;e[t]=r>>>8}function signedInt16(e,t){const r=(e<<8)+t;return 32768&r?r-65536:r}function string16(e){return String.fromCharCode(e>>8&255,255&e)}function safeString16(e){e>32767?e=32767:e<-32768&&(e=-32768);return String.fromCharCode(e>>8&255,255&e)}function isTrueTypeCollectionFile(e){const t=e.peekBytes(4);return"ttcf"===(0,a.bytesToString)(t)}function getFontFileType(e,{type:t,subtype:r,composite:i}){let n,s;if(function isTrueTypeFile(e){const t=e.peekBytes(4);return 65536===(0,m.readUint32)(t,0)||"true"===(0,a.bytesToString)(t)}(e)||isTrueTypeCollectionFile(e))n=i?"CIDFontType2":"TrueType";else if(function isOpenTypeFile(e){const t=e.peekBytes(4);return"OTTO"===(0,a.bytesToString)(t)}(e))n=i?"CIDFontType2":"OpenType";else if(function isType1File(e){const t=e.peekBytes(2);return 37===t[0]&&33===t[1]||128===t[0]&&1===t[1]}(e))n=i?"CIDFontType0":"MMType1"===t?"MMType1":"Type1";else if(function isCFFFile(e){const t=e.peekBytes(4);return t[0]>=1&&t[3]>=1&&t[3]<=4}(e))if(i){n="CIDFontType0";s="CIDFontType0C"}else{n="MMType1"===t?"MMType1":"Type1";s="Type1C"}else{(0,a.warn)("getFontFileType: Unable to detect correct font file Type/Subtype.");n=t;s=r}return[n,s]}function buildToFontChar(e,t,r){const a=[];let i;for(let r=0,n=e.length;rc){s++;if(s>=w.length){(0,a.warn)("Ran out of space in font private use area.");break}o=w[s][0];c=w[s][1]}const u=o++;0===h&&(h=r);i[u]=h;n[l]=u}return{toFontChar:n,charCodeToGlyphId:i,nextAvailableFontCharCode:o}}function createCmapTable(e,t){const r=function getRanges(e,t){const r=[];for(const a in e)e[a]>=t||r.push({fontCharCode:0|a,glyphId:e[a]});0===r.length&&r.push({fontCharCode:0,glyphId:0});r.sort((function fontGetRangesSort(e,t){return e.fontCharCode-t.fontCharCode}));const a=[],i=r.length;for(let e=0;e65535?2:1;let n,s,o,c,l="\0\0"+string16(i)+"\0\0"+(0,a.string32)(4+8*i);for(n=r.length-1;n>=0&&!(r[n][0]<=65535);--n);const h=n+1;r[n][0]<65535&&65535===r[n][1]&&(r[n][1]=65534);const u=r[n][1]<65535?1:0,d=h+u,f=p.OpenTypeFileBuilder.getSearchParams(d,2);let g,m,b,y,w="",S="",x="",k="",C="",v=0;for(n=0,s=h;n0){S+="ÿÿ";w+="ÿÿ";x+="\0";k+="\0\0"}const F="\0\0"+string16(2*d)+string16(f.range)+string16(f.entry)+string16(f.rangeShift)+S+"\0\0"+w+x+k+C;let O="",T="";if(i>1){l+="\0\0\n"+(0,a.string32)(4+8*i+4+F.length);O="";for(n=0,s=r.length;ne||!c)&&(c=e);h 123 are reserved for internal usage");o|=1<65535&&(h=65535)}else{c=0;h=255}const u=e.bbox||[0,0,0,0],d=r.unitsPerEm||1/(e.fontMatrix||a.FONT_IDENTITY_MATRIX)[0],f=e.ascentScaled?1:d/S,g=r.ascent||Math.round(f*(e.ascent||u[3]));let p=r.descent||Math.round(f*(e.descent||u[1]));p>0&&e.descent>0&&u[1]<0&&(p=-p);const m=r.yMax||g,b=-r.yMin||-p;return"\0$ô\0\0\0Š»\0\0\0ŒŠ»\0\0ß\x001\0\0\0\0"+String.fromCharCode(e.fixedPitch?9:0)+"\0\0\0\0\0\0"+(0,a.string32)(i)+(0,a.string32)(n)+(0,a.string32)(s)+(0,a.string32)(o)+"*21*"+string16(e.italicAngle?1:0)+string16(c||e.firstChar)+string16(h||e.lastChar)+string16(g)+string16(p)+"\0d"+string16(m)+string16(b)+"\0\0\0\0\0\0\0\0"+string16(e.xHeight)+string16(e.capHeight)+string16(0)+string16(c||e.firstChar)+"\0"}function createPostTable(e){const t=Math.floor(65536*e.italicAngle);return"\0\0\0"+(0,a.string32)(t)+"\0\0\0\0"+(0,a.string32)(e.fixedPitch?1:0)+"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}function createPostscriptName(e){return e.replace(/[^\x21-\x7E]|[[\](){}<>/%]/g,"").slice(0,63)}function createNameTable(e,t){t||(t=[[],[]]);const r=[t[0][0]||"Original licence",t[0][1]||e,t[0][2]||"Unknown",t[0][3]||"uniqueID",t[0][4]||e,t[0][5]||"Version 0.11",t[0][6]||createPostscriptName(e),t[0][7]||"Unknown",t[0][8]||"Unknown",t[0][9]||"Unknown"],a=[];let i,n,s,o,c;for(i=0,n=r.length;i0;if((g||p)&&"CIDFontType2"===r&&this.cidEncoding.startsWith("Identity-")){const r=(0,c.getGlyphMapForStandardFonts)(),a=e.cidToGidMap,i=[];for(const e in r)i[+e]=r[e];if(/Arial-?Black/i.test(t)){const e=(0,c.getSupplementalGlyphMapForArialBlack)();for(const t in e)i[+t]=e[t]}else if(/Calibri/i.test(t)){const e=(0,c.getSupplementalGlyphMapForCalibri)();for(const t in e)i[+t]=e[t]}if(a)for(const e in i){const t=i[e];void 0!==a[t]&&(i[+e]=a[t])}this.toUnicode instanceof h.IdentityToUnicodeMap||this.toUnicode.forEach((function(e,t){i[+e]=t}));this.toFontChar=i;this.toUnicode=new h.ToUnicodeMap(i)}else if(/Symbol/i.test(u))this.toFontChar=buildToFontChar(o.SymbolSetEncoding,(0,s.getGlyphsUnicode)(),this.differences);else if(/Dingbats/i.test(u)){/Wingdings/i.test(t)&&(0,a.warn)("Non-embedded Wingdings font, falling back to ZapfDingbats.");this.toFontChar=buildToFontChar(o.ZapfDingbatsEncoding,(0,s.getDingbatsGlyphsUnicode)(),this.differences)}else if(g)this.toFontChar=buildToFontChar(this.defaultEncoding,(0,s.getGlyphsUnicode)(),this.differences);else{const e=(0,s.getGlyphsUnicode)(),r=[];this.toUnicode.forEach(((t,a)=>{if(!this.composite){const r=this.differences[t]||this.defaultEncoding[t],i=(0,l.getUnicodeForGlyph)(r,e);-1!==i&&(a=i)}r[+t]=a}));if(this.composite&&this.toUnicode instanceof h.IdentityToUnicodeMap&&/Verdana/i.test(t)){const e=(0,c.getGlyphMapForStandardFonts)();for(const t in e)r[+t]=e[t]}this.toFontChar=r}amendFallbackToUnicode(e);this.loadedName=u.split("-")[0];this.fontType=(0,n.getFontType)(r,i,e.isStandardFont)}checkAndRepair(e,t,r){const c=["OS/2","cmap","head","hhea","hmtx","maxp","name","post","loca","glyf","fpgm","prep","cvt ","CFF "];function readTables(e,t){const r=Object.create(null);r["OS/2"]=null;r.cmap=null;r.head=null;r.hhea=null;r.hmtx=null;r.maxp=null;r.name=null;r.post=null;for(let a=0;a>>0,a=e.getInt32()>>>0,i=e.getInt32()>>>0,n=e.pos;e.pos=e.start?e.start:0;e.skip(a);const s=e.getBytes(i);e.pos=n;if("head"===t){s[8]=s[9]=s[10]=s[11]=0;s[17]|=32}return{tag:t,checksum:r,length:i,offset:a,data:s}}function readOpenTypeHeader(e){return{version:e.getString(4),numTables:e.getUint16(),searchRange:e.getUint16(),entrySelector:e.getUint16(),rangeShift:e.getUint16()}}function sanitizeGlyph(e,t,r,a,i,n){const s={length:0,sizeOfInstructions:0};if(r-t<=12)return s;const o=e.subarray(t,r);let c=signedInt16(o[0],o[1]);if(c<0){c=-1;writeSignedInt16(o,0,c);a.set(o,i);s.length=o.length;return s}let l,h=10,u=0;for(l=0;lo.length)return s;if(!n&&f>0){a.set(o.subarray(0,d),i);a.set([0,0],i+d);a.set(o.subarray(g,m),i+d+2);m-=f;o.length-m>3&&(m=m+3&-4);s.length=m;return s}if(o.length-m>3){m=m+3&-4;a.set(o.subarray(0,m),i);s.length=m;return s}a.set(o,i);s.length=o.length;return s}function readNameTable(e){const r=(t.start?t.start:0)+e.offset;t.pos=r;const a=[[],[]],i=e.length,n=r+i;if(0!==t.getUint16()||i<6)return a;const s=t.getUint16(),o=t.getUint16(),c=[];let l,h;for(l=0;ln)continue;t.pos=i;const s=e.name;if(e.encoding){let r="";for(let a=0,i=e.length;a0&&(h+=e-1)}}else{if(b||w){(0,a.warn)("TT: nested FDEFs not allowed");m=!0}b=!0;d=h;s=f.pop();t.functionsDefined[s]={data:c,i:h}}else if(!b&&!w){s=f[f.length-1];if(isNaN(s))(0,a.info)("TT: CALL empty stack (or invalid entry).");else{t.functionsUsed[s]=!0;if(s in t.functionsStackDeltas){const e=f.length+t.functionsStackDeltas[s];if(e<0){(0,a.warn)("TT: CALL invalid functions stack delta.");t.hintsValid=!1;return}f.length=e}else if(s in t.functionsDefined&&!p.includes(s)){g.push({data:c,i:h,stackTop:f.length-1});p.push(s);o=t.functionsDefined[s];if(!o){(0,a.warn)("TT: CALL non-existent function");t.hintsValid=!1;return}c=o.data;h=o.i}}}if(!b&&!w){let t=0;e<=142?t=l[e]:e>=192&&e<=223?t=-1:e>=224&&(t=-2);if(e>=113&&e<=117){i=f.pop();isNaN(i)||(t=2*-i)}for(;t<0&&f.length>0;){f.pop();t++}for(;t>0;){f.push(NaN);t--}}}t.tooComplexToFollowFunctions=m;const S=[c];h>c.length&&S.push(new Uint8Array(h-c.length));if(d>u){(0,a.warn)("TT: complementing a missing function tail");S.push(new Uint8Array([34,45]))}!function foldTTTable(e,t){if(t.length>1){let r,a,i=0;for(r=0,a=t.length;r>>0,s=[];for(let t=0;t>>0);const o={ttcTag:t,majorVersion:r,minorVersion:i,numFonts:n,offsetTable:s};switch(r){case 1:return o;case 2:o.dsigTag=e.getInt32()>>>0;o.dsigLength=e.getInt32()>>>0;o.dsigOffset=e.getInt32()>>>0;return o}throw new a.FormatError(`Invalid TrueType Collection majorVersion: ${r}.`)}(e),n=t.split("+");let s;for(let o=0;o0||!(r.cMap instanceof g.IdentityCMap));if("OTTO"===h.version&&!t||!d.head||!d.hhea||!d.maxp||!d.post){y=new b.Stream(d["CFF "].data);m=new u.CFFFont(y,r);adjustWidths(r);return this.convert(e,m,r)}delete d.glyf;delete d.loca;delete d.fpgm;delete d.prep;delete d["cvt "];this.isOpenType=!0}if(!d.maxp)throw new a.FormatError('Required "maxp" table is not found');t.pos=(t.start||0)+d.maxp.offset;const S=t.getInt32(),x=t.getUint16();if(r.scaleFactors&&r.scaleFactors.length===x&&w){const{scaleFactors:e}=r,t=int16(d.head.data[50],d.head.data[51]),a=new f.GlyfTable({glyfTable:d.glyf.data,isGlyphLocationsLong:t,locaTable:d.loca.data,numGlyphs:x});a.scale(e);const{glyf:i,loca:n,isLocationLong:s}=a.write();d.glyf.data=i;d.loca.data=n;if(s!==!!t){d.head.data[50]=0;d.head.data[51]=s?1:0}const o=d.hmtx.data;for(let t=0;t>8&255;o[r+1]=255&a;writeSignedInt16(o,r+2,Math.round(e[t]*signedInt16(o[r+2],o[r+3])))}}let k=x+1,C=!0;if(k>65535){C=!1;k=x;(0,a.warn)("Not enough space in glyfs to duplicate first glyph.")}let v=0,F=0;if(S>=65536&&d.maxp.length>=22){t.pos+=8;if(t.getUint16()>2){d.maxp.data[14]=0;d.maxp.data[15]=2}t.pos+=4;v=t.getUint16();t.pos+=4;F=t.getUint16()}d.maxp.data[4]=k>>8;d.maxp.data[5]=255&k;const O=function sanitizeTTPrograms(e,t,r,i){const n={functionsDefined:[],functionsUsed:[],functionsStackDeltas:[],tooComplexToFollowFunctions:!1,hintsValid:!0};e&&sanitizeTTProgram(e,n);t&&sanitizeTTProgram(t,n);e&&function checkInvalidFunctions(e,t){if(!e.tooComplexToFollowFunctions)if(e.functionsDefined.length>t){(0,a.warn)("TT: more functions defined than expected");e.hintsValid=!1}else for(let r=0,i=e.functionsUsed.length;rt){(0,a.warn)("TT: invalid function id: "+r);e.hintsValid=!1;return}if(e.functionsUsed[r]&&!e.functionsDefined[r]){(0,a.warn)("TT: undefined function: "+r);e.hintsValid=!1;return}}}(n,i);if(r&&1&r.length){const e=new Uint8Array(r.length+1);e.set(r.data);r.data=e}return n.hintsValid}(d.fpgm,d.prep,d["cvt "],v);if(!O){delete d.fpgm;delete d.prep;delete d["cvt "]}!function sanitizeMetrics(e,t,r,i,n,s){if(!t){r&&(r.data=null);return}e.pos=(e.start?e.start:0)+t.offset;e.pos+=4;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;e.pos+=2;const o=e.getUint16();e.pos+=8;e.pos+=2;let c=e.getUint16();if(0!==o){if(!(2&int16(i.data[44],i.data[45]))){t.data[22]=0;t.data[23]=0}}if(c>n){(0,a.info)(`The numOfMetrics (${c}) should not be greater than the numGlyphs (${n}).`);c=n;t.data[34]=(65280&c)>>8;t.data[35]=255&c}const l=n-c-(r.length-4*c>>1);if(l>0){const e=new Uint8Array(r.length+2*l);e.set(r.data);if(s){e[r.length]=r.data[2];e[r.length+1]=r.data[3]}r.data=e}}(t,d.hhea,d.hmtx,d.head,k,C);if(!d.head)throw new a.FormatError('Required "head" table is not found');!function sanitizeHead(e,t,r){const i=e.data,n=function int32(e,t,r,a){return(e<<24)+(t<<16)+(r<<8)+a}(i[0],i[1],i[2],i[3]);if(n>>16!=1){(0,a.info)("Attempting to fix invalid version in head table: "+n);i[0]=0;i[1]=1;i[2]=0;i[3]=0}const s=int16(i[50],i[51]);if(s<0||s>1){(0,a.info)("Attempting to fix invalid indexToLocFormat in head table: "+s);const e=t+1;if(r===e<<1){i[50]=0;i[51]=0}else{if(r!==e<<2)throw new a.FormatError("Could not fix indexToLocFormat: "+s);i[50]=0;i[51]=1}}}(d.head,x,w?d.loca.length:0);let T=Object.create(null);if(w){const e=int16(d.head.data[50],d.head.data[51]),t=function sanitizeGlyphLocations(e,t,r,a,i,n,s){let o,c,l;if(a){o=4;c=function fontItemDecodeLong(e,t){return e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]};l=function fontItemEncodeLong(e,t,r){e[t]=r>>>24&255;e[t+1]=r>>16&255;e[t+2]=r>>8&255;e[t+3]=255&r}}else{o=2;c=function fontItemDecode(e,t){return e[t]<<9|e[t+1]<<1};l=function fontItemEncode(e,t,r){e[t]=r>>9&255;e[t+1]=r>>1&255}}const h=n?r+1:r,u=o*(1+h),d=new Uint8Array(u);d.set(e.data.subarray(0,u));e.data=d;const f=t.data,g=f.length,p=new Uint8Array(g);let m,b;const y=[];for(m=0,b=0;mg&&(e=g);y.push({index:m,offset:e,endOffset:0})}y.sort(((e,t)=>e.offset-t.offset));for(m=0;me.index-t.index));const w=Object.create(null);let S=0;l(d,0,S);for(m=0,b=o;ms&&(s=e.sizeOfInstructions);S+=t;l(d,b,S)}if(0===S){const e=new Uint8Array([0,1,0,0,0,0,0,0,0,0,0,0,0,0,49,0]);for(m=0,b=o;mr+S)t.data=p.subarray(0,r+S);else{t.data=new Uint8Array(r+S);t.data.set(p.subarray(0,S))}t.data.set(p.subarray(0,r),S);l(e.data,d.length-o,S+r)}else t.data=p.subarray(0,S);return{missingGlyphs:w,maxSizeOfInstructions:s}}(d.loca,d.glyf,x,e,O,C,F);T=t.missingGlyphs;if(S>=65536&&d.maxp.length>=22){d.maxp.data[26]=t.maxSizeOfInstructions>>8;d.maxp.data[27]=255&t.maxSizeOfInstructions}}if(!d.hhea)throw new a.FormatError('Required "hhea" table is not found');if(0===d.hhea.data[10]&&0===d.hhea.data[11]){d.hhea.data[10]=255;d.hhea.data[11]=255}const M={unitsPerEm:int16(d.head.data[18],d.head.data[19]),yMax:int16(d.head.data[42],d.head.data[43]),yMin:signedInt16(d.head.data[38],d.head.data[39]),ascent:signedInt16(d.hhea.data[4],d.hhea.data[5]),descent:signedInt16(d.hhea.data[6],d.hhea.data[7]),lineGap:signedInt16(d.hhea.data[8],d.hhea.data[9])};this.ascent=M.ascent/M.unitsPerEm;this.descent=M.descent/M.unitsPerEm;this.lineGap=M.lineGap/M.unitsPerEm;this.cssFontInfo&&this.cssFontInfo.lineHeight?this.lineHeight=this.cssFontInfo.lineHeight:this.lineHeight=this.ascent-this.descent+this.lineGap;d.post&&function readPostScriptTable(e,r,i){const s=(t.start?t.start:0)+e.offset;t.pos=s;const o=s+e.length,c=t.getInt32();t.skip(28);let l,h,u=!0;switch(c){case 65536:l=n.MacStandardGlyphOrdering;break;case 131072:const e=t.getUint16();if(e!==i){u=!1;break}const s=[];for(h=0;h=32768){u=!1;break}s.push(e)}if(!u)break;const d=[],f=[];for(;t.pos65535)throw new a.FormatError("Max size of CID is 65,535");let n=-1;t?n=i:void 0!==e[i]&&(n=e[i]);n>=0&&n>>0;let h=!1;if(!c||c.platformId!==a||c.encodingId!==n){if(0!==a||0!==n&&1!==n&&3!==n)if(1===a&&0===n)h=!0;else if(3!==a||1!==n||!i&&c){if(r&&3===a&&0===n){h=!0;let r=!0;if(e>1;t.skip(6);const r=[];let a;for(a=0;a>1)-(e-a);n.offsetIndex=i;o=Math.max(o,i+n.end-n.start+1)}else n.offsetIndex=-1}const c=[];for(f=0;f=61440&&t<=61695&&(t&=255);E[t]=l[e].glyphId}if(r.glyphNames&&(u.length||this.differences.length))for(let e=0;e<256;++e){if(void 0!==E[e])continue;const t=this.differences[e]||u[e];if(!t)continue;const a=r.glyphNames.indexOf(t);a>0&&hasGlyph(a)&&(E[e]=a)}}0===E.length&&(E[0]=0);let D=k-1;C||(D=0);if(!r.cssFontInfo){const e=adjustMapping(E,hasGlyph,D);this.toFontChar=e.toFontChar;d.cmap={tag:"cmap",data:createCmapTable(e.charCodeToGlyphId,k)};d["OS/2"]&&function validateOS2Table(e,t){t.pos=(t.start||0)+e.offset;const r=t.getUint16();t.skip(60);const a=t.getUint16();if(r<4&&768&a)return!1;if(t.getUint16()>t.getUint16())return!1;t.skip(6);if(0===t.getUint16())return!1;e.data[8]=e.data[9]=0;return!0}(d["OS/2"],t)||(d["OS/2"]={tag:"OS/2",data:createOS2Table(r,e.charCodeToGlyphId,M)})}if(!w)try{y=new b.Stream(d["CFF "].data);m=new i.CFFParser(y,r,n.SEAC_ANALYSIS_ENABLED).parse();m.duplicateFirstGlyph();const e=new i.CFFCompiler(m);d["CFF "].data=e.compile()}catch(e){(0,a.warn)("Failed to compile font "+r.loadedName)}if(d.name){const t=readNameTable(d.name);d.name.data=createNameTable(e,t);this.psName=t[0][6]||null}else d.name={tag:"name",data:createNameTable(this.name)};const N=new p.OpenTypeFileBuilder(h.version);for(const e in d)N.addTable(e,d[e].data);return N.toArray()}convert(e,t,r){r.fixedPitch=!1;r.builtInEncoding&&function adjustToUnicode(e,t){if(e.isInternalFont)return;if(t===e.defaultEncoding)return;if(e.toUnicode instanceof h.IdentityToUnicodeMap)return;const r=[],a=(0,s.getGlyphsUnicode)();for(const i in t){if(e.hasIncludedToUnicodeMap){if(e.toUnicode.has(i))continue}else if(e.hasEncoding&&void 0!==e.differences[i])continue;const n=t[i],s=(0,l.getUnicodeForGlyph)(n,a);-1!==s&&(r[i]=String.fromCharCode(s))}r.length>0&&e.toUnicode.amend(r)}(r,r.builtInEncoding);let i=1;t instanceof u.CFFFont&&(i=t.numGlyphs-1);const c=t.getGlyphMapping(r);let d=null,f=c;if(!r.cssFontInfo){d=adjustMapping(c,t.hasGlyphId.bind(t),i);this.toFontChar=d.toFontChar;f=d.charCodeToGlyphId}const g=t.numGlyphs;function getCharCodes(e,t){let r=null;for(const a in e)if(t===e[a]){r||(r=[]);r.push(0|a)}return r}function createCharCode(e,t){for(const r in e)if(t===e[r])return 0|r;d.charCodeToGlyphId[d.nextAvailableFontCharCode]=t;return d.nextAvailableFontCharCode++}const m=t.seacs;if(d&&n.SEAC_ANALYSIS_ENABLED&&m&&m.length){const e=r.fontMatrix||a.FONT_IDENTITY_MATRIX,i=t.getCharset(),n=Object.create(null);for(let t in m){t|=0;const r=m[t],a=o.StandardEncoding[r[2]],s=o.StandardEncoding[r[3]],l=i.indexOf(a),h=i.indexOf(s);if(l<0||h<0)continue;const u={x:r[0]*e[0]+r[1]*e[2]+e[4],y:r[0]*e[1]+r[1]*e[3]+e[5]},f=getCharCodes(c,t);if(f)for(let e=0,t=f.length;et.length%2==1;for(let a=0,i=e.length;a55295&&(i<57344||i>65533)&&a++;if(this.toUnicode){const e=String.fromCodePoint(i),a=this.toUnicode.charCodeOf(e);if(-1!==a){if(hasCurrentBufErrors()){t.push(r.join(""));r.length=0}for(let e=(this.cMap?this.cMap.getCharCodeLength(a):1)-1;e>=0;e--)r.push(String.fromCharCode(a>>8*e&255));continue}}if(!hasCurrentBufErrors()){t.push(r.join(""));r.length=0}r.push(String.fromCodePoint(i))}t.push(r.join(""));return t}};t.ErrorFont=class ErrorFont{constructor(e){this.error=e;this.loadedName="g_font_error";this.missingFile=!0}charsToGlyphs(){return[]}encodeString(e){return[e]}exportData(e=!1){return{error:this.error}}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.CFFTopDict=t.CFFStrings=t.CFFStandardStrings=t.CFFPrivateDict=t.CFFParser=t.CFFIndex=t.CFFHeader=t.CFFFDSelect=t.CFFCompiler=t.CFFCharset=t.CFF=void 0;var a=r(2),i=r(36),n=r(37);const s=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall","001.000","001.001","001.002","001.003","Black","Bold","Book","Light","Medium","Regular","Roman","Semibold"];t.CFFStandardStrings=s;const o=391,c=function CFFParserClosure(){const e=[null,{id:"hstem",min:2,stackClearing:!0,stem:!0},null,{id:"vstem",min:2,stackClearing:!0,stem:!0},{id:"vmoveto",min:1,stackClearing:!0},{id:"rlineto",min:2,resetStack:!0},{id:"hlineto",min:1,resetStack:!0},{id:"vlineto",min:1,resetStack:!0},{id:"rrcurveto",min:6,resetStack:!0},null,{id:"callsubr",min:1,undefStack:!0},{id:"return",min:0,undefStack:!0},null,null,{id:"endchar",min:0,stackClearing:!0},null,null,null,{id:"hstemhm",min:2,stackClearing:!0,stem:!0},{id:"hintmask",min:0,stackClearing:!0},{id:"cntrmask",min:0,stackClearing:!0},{id:"rmoveto",min:2,stackClearing:!0},{id:"hmoveto",min:1,stackClearing:!0},{id:"vstemhm",min:2,stackClearing:!0,stem:!0},{id:"rcurveline",min:8,resetStack:!0},{id:"rlinecurve",min:8,resetStack:!0},{id:"vvcurveto",min:4,resetStack:!0},{id:"hhcurveto",min:4,resetStack:!0},null,{id:"callgsubr",min:1,undefStack:!0},{id:"vhcurveto",min:4,resetStack:!0},{id:"hvcurveto",min:4,resetStack:!0}],t=[null,null,null,{id:"and",min:2,stackDelta:-1},{id:"or",min:2,stackDelta:-1},{id:"not",min:1,stackDelta:0},null,null,null,{id:"abs",min:1,stackDelta:0},{id:"add",min:2,stackDelta:-1,stackFn:function stack_div(e,t){e[t-2]=e[t-2]+e[t-1]}},{id:"sub",min:2,stackDelta:-1,stackFn:function stack_div(e,t){e[t-2]=e[t-2]-e[t-1]}},{id:"div",min:2,stackDelta:-1,stackFn:function stack_div(e,t){e[t-2]=e[t-2]/e[t-1]}},null,{id:"neg",min:1,stackDelta:0,stackFn:function stack_div(e,t){e[t-1]=-e[t-1]}},{id:"eq",min:2,stackDelta:-1},null,null,{id:"drop",min:1,stackDelta:-1},null,{id:"put",min:2,stackDelta:-2},{id:"get",min:1,stackDelta:0},{id:"ifelse",min:4,stackDelta:-3},{id:"random",min:0,stackDelta:1},{id:"mul",min:2,stackDelta:-1,stackFn:function stack_div(e,t){e[t-2]=e[t-2]*e[t-1]}},null,{id:"sqrt",min:1,stackDelta:0},{id:"dup",min:1,stackDelta:1},{id:"exch",min:2,stackDelta:0},{id:"index",min:2,stackDelta:0},{id:"roll",min:3,stackDelta:-2},null,null,null,{id:"hflex",min:7,resetStack:!0},{id:"flex",min:13,resetStack:!0},{id:"hflex1",min:9,resetStack:!0},{id:"flex1",min:11,resetStack:!0}];return class CFFParser{constructor(e,t,r){this.bytes=e.getBytes();this.properties=t;this.seacAnalysisEnabled=!!r}parse(){const e=this.properties,t=new CFF;this.cff=t;const r=this.parseHeader(),a=this.parseIndex(r.endPos),i=this.parseIndex(a.endPos),n=this.parseIndex(i.endPos),s=this.parseIndex(n.endPos),o=this.parseDict(i.obj.get(0)),c=this.createDict(l,o,t.strings);t.header=r.obj;t.names=this.parseNameIndex(a.obj);t.strings=this.parseStringIndex(n.obj);t.topDict=c;t.globalSubrIndex=s.obj;this.parsePrivateDict(t.topDict);t.isCIDFont=c.hasName("ROS");const h=c.getByName("CharStrings"),u=this.parseIndex(h).obj,d=c.getByName("FontMatrix");d&&(e.fontMatrix=d);const f=c.getByName("FontBBox");if(f){e.ascent=Math.max(f[3],f[1]);e.descent=Math.min(f[1],f[3]);e.ascentScaled=!0}let g,p;if(t.isCIDFont){const e=this.parseIndex(c.getByName("FDArray")).obj;for(let r=0,a=e.count;r=t)throw new a.FormatError("Invalid CFF header");if(0!==r){(0,a.info)("cff data is shifted");e=e.subarray(r);this.bytes=e}const i=e[0],n=e[1],s=e[2],o=e[3];return{obj:new CFFHeader(i,n,s,o),endPos:s}}parseDict(e){let t=0;function parseOperand(){let r=e[t++];if(30===r)return function parseFloatOperand(){let r="";const a=15,i=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"],n=e.length;for(;t>4,o=15&n;if(s===a)break;r+=i[s];if(o===a)break;r+=i[o]}return parseFloat(r)}();if(28===r){r=e[t++];r=(r<<24|e[t++]<<16)>>16;return r}if(29===r){r=e[t++];r=r<<8|e[t++];r=r<<8|e[t++];r=r<<8|e[t++];return r}if(r>=32&&r<=246)return r-139;if(r>=247&&r<=250)return 256*(r-247)+e[t++]+108;if(r>=251&&r<=254)return-256*(r-251)-e[t++]-108;(0,a.warn)('CFFParser_parseDict: "'+r+'" is a reserved command.');return NaN}let r=[];const i=[];t=0;const n=e.length;for(;t10)return!1;let o=r.stackSize;const c=r.stack,l=i.length;for(let h=0;h>16;h+=2;o++}else if(14===l){if(o>=4){o-=4;if(this.seacAnalysisEnabled){r.seac=c.slice(o,o+4);return!1}}u=e[l]}else if(l>=32&&l<=246){c[o]=l-139;o++}else if(l>=247&&l<=254){c[o]=l<251?(l-247<<8)+i[h]+108:-(l-251<<8)-i[h]-108;h++;o++}else if(255===l){c[o]=(i[h]<<24|i[h+1]<<16|i[h+2]<<8|i[h+3])/65536;h+=4;o++}else if(19===l||20===l){r.hints+=o>>1;h+=r.hints+7>>3;o%=2;u=e[l]}else{if(10===l||29===l){let t;t=10===l?n:s;if(!t){u=e[l];(0,a.warn)("Missing subrsIndex for "+u.id);return!1}let i=32768;t.count<1240?i=107:t.count<33900&&(i=1131);const h=c[--o]+i;if(h<0||h>=t.count||isNaN(h)){u=e[l];(0,a.warn)("Out of bounds subrIndex for "+u.id);return!1}r.stackSize=o;r.callDepth++;if(!this.parseCharString(r,t.get(h),n,s))return!1;r.callDepth--;o=r.stackSize;continue}if(11===l){r.stackSize=o;return!0}if(0===l&&h===i.length){i[h-1]=14;u=e[14]}else u=e[l]}if(u){if(u.stem){r.hints+=o>>1;if(3===l||23===l)r.hasVStems=!0;else if(r.hasVStems&&(1===l||18===l)){(0,a.warn)("CFF stem hints are in wrong order");i[h-1]=1===l?3:23}}if("min"in u&&!r.undefStack&&o=2&&u.stem?o%=2:o>1&&(0,a.warn)("Found too many parameters for stack-clearing command");o>0&&(r.width=c[o-1])}if("stackDelta"in u){"stackFn"in u&&u.stackFn(c,o);o+=u.stackDelta}else if(u.stackClearing)o=0;else if(u.resetStack){o=0;r.undefStack=!1}else if(u.undefStack){o=0;r.undefStack=!0;r.firstStackClearing=!1}}}r.stackSize=o;return!0}parseCharStrings({charStrings:e,localSubrIndex:t,globalSubrIndex:r,fdSelect:i,fdArray:n,privateDict:s}){const o=[],c=[],l=e.count;for(let h=0;h=n.length){(0,a.warn)("Invalid fd index for glyph index.");d=!1}if(d){g=n[e].privateDict;f=g.subrsIndex}}else t&&(f=t);d&&(d=this.parseCharString(u,l,f,r));if(null!==u.width){const e=g.getByName("nominalWidthX");c[h]=e+u.width}else{const e=g.getByName("defaultWidthX");c[h]=e}null!==u.seac&&(o[h]=u.seac);d||e.set(h,new Uint8Array([14]))}return{charStrings:e,seacs:o,widths:c}}emptyPrivateDictionary(e){const t=this.createDict(h,[],e.strings);e.setByKey(18,[0,0]);e.privateDict=t}parsePrivateDict(e){if(!e.hasName("Private")){this.emptyPrivateDictionary(e);return}const t=e.getByName("Private");if(!Array.isArray(t)||2!==t.length){e.removeByName("Private");return}const r=t[0],a=t[1];if(0===r||a>=this.bytes.length){this.emptyPrivateDictionary(e);return}const i=a+r,n=this.bytes.subarray(a,i),s=this.parseDict(n),o=this.createDict(h,s,e.strings);e.privateDict=o;if(!o.getByName("Subrs"))return;const c=o.getByName("Subrs"),l=a+c;if(0===c||l>=this.bytes.length){this.emptyPrivateDictionary(e);return}const u=this.parseIndex(l);o.subrsIndex=u.obj}parseCharsets(e,t,r,n){if(0===e)return new CFFCharset(!0,u.ISO_ADOBE,i.ISOAdobeCharset);if(1===e)return new CFFCharset(!0,u.EXPERT,i.ExpertCharset);if(2===e)return new CFFCharset(!0,u.EXPERT_SUBSET,i.ExpertSubsetCharset);const s=this.bytes,o=e,c=s[e++],l=[n?0:".notdef"];let h,d,f;t-=1;switch(c){case 0:for(f=0;f=65535){(0,a.warn)("Not enough space in charstrings to duplicate first glyph.");return}const e=this.charStrings.get(0);this.charStrings.add(e);this.isCIDFont&&this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0])}hasGlyphId(e){if(e<0||e>=this.charStrings.count)return!1;return this.charStrings.get(e).length>0}}t.CFF=CFF;class CFFHeader{constructor(e,t,r,a){this.major=e;this.minor=t;this.hdrSize=r;this.offSize=a}}t.CFFHeader=CFFHeader;class CFFStrings{constructor(){this.strings=[]}get(e){return e>=0&&e<=390?s[e]:e-o<=this.strings.length?this.strings[e-o]:s[0]}getSID(e){let t=s.indexOf(e);if(-1!==t)return t;t=this.strings.indexOf(e);return-1!==t?t+o:-1}add(e){this.strings.push(e)}get count(){return this.strings.length}}t.CFFStrings=CFFStrings;class CFFIndex{constructor(){this.objects=[];this.length=0}add(e){this.length+=e.length;this.objects.push(e)}set(e,t){this.length+=t.length-this.objects[e].length;this.objects[e]=t}get(e){return this.objects[e]}get count(){return this.objects.length}}t.CFFIndex=CFFIndex;class CFFDict{constructor(e,t){this.keyToNameMap=e.keyToNameMap;this.nameToKeyMap=e.nameToKeyMap;this.defaults=e.defaults;this.types=e.types;this.opcodes=e.opcodes;this.order=e.order;this.strings=t;this.values=Object.create(null)}setByKey(e,t){if(!(e in this.keyToNameMap))return!1;const r=t.length;if(0===r)return!0;for(let i=0;i=this.fdSelect.length?-1:this.fdSelect[e]}}t.CFFFDSelect=CFFFDSelect;class CFFOffsetTracker{constructor(){this.offsets=Object.create(null)}isTracking(e){return e in this.offsets}track(e,t){if(e in this.offsets)throw new a.FormatError(`Already tracking location of ${e}`);this.offsets[e]=t}offset(e){for(const t in this.offsets)this.offsets[t]+=e}setEntryLocation(e,t,r){if(!(e in this.offsets))throw new a.FormatError(`Not tracking location of ${e}`);const i=r.data,n=this.offsets[e];for(let e=0,r=t.length;e>24&255;i[o]=h>>16&255;i[c]=h>>8&255;i[l]=255&h}}}class CFFCompiler{constructor(e){this.cff=e}compile(){const e=this.cff,t={data:[],length:0,add:function CFFCompiler_add(e){this.data=this.data.concat(e);this.length=this.data.length}},r=this.compileHeader(e.header);t.add(r);const i=this.compileNameIndex(e.names);t.add(i);if(e.isCIDFont&&e.topDict.hasName("FontMatrix")){const t=e.topDict.getByName("FontMatrix");e.topDict.removeByName("FontMatrix");for(let r=0,i=e.fdArray.length;r16&&e.topDict.removeByName("XUID");e.topDict.setByName("charset",0);let s=this.compileTopDicts([e.topDict],t.length,e.isCIDFont);t.add(s.output);const o=s.trackers[0],c=this.compileStringIndex(e.strings.strings);t.add(c);const l=this.compileIndex(e.globalSubrIndex);t.add(l);if(e.encoding&&e.topDict.hasName("Encoding"))if(e.encoding.predefined)o.setEntryLocation("Encoding",[e.encoding.format],t);else{const r=this.compileEncoding(e.encoding);o.setEntryLocation("Encoding",[t.length],t);t.add(r)}const h=this.compileCharset(e.charset,e.charStrings.count,e.strings,e.isCIDFont);o.setEntryLocation("charset",[t.length],t);t.add(h);const u=this.compileCharStrings(e.charStrings);o.setEntryLocation("CharStrings",[t.length],t);t.add(u);if(e.isCIDFont){o.setEntryLocation("FDSelect",[t.length],t);const r=this.compileFDSelect(e.fdSelect);t.add(r);s=this.compileTopDicts(e.fdArray,t.length,!0);o.setEntryLocation("FDArray",[t.length],t);t.add(s.output);const a=s.trackers;this.compilePrivateDicts(e.fdArray,a,t)}this.compilePrivateDicts([e.topDict],[o],t);t.add([0]);return t.data}encodeNumber(e){return Number.isInteger(e)?this.encodeInteger(e):this.encodeFloat(e)}static get EncodeFloatRegExp(){return(0,a.shadow)(this,"EncodeFloatRegExp",/\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/)}encodeFloat(e){let t=e.toString();const r=CFFCompiler.EncodeFloatRegExp.exec(t);if(r){const a=parseFloat("1e"+((r[2]?+r[2]:0)+r[1].length));t=(Math.round(e*a)/a).toString()}let a,i,n="";for(a=0,i=t.length;a=-107&&e<=107?[e+139]:e>=108&&e<=1131?[247+((e-=108)>>8),255&e]:e>=-1131&&e<=-108?[251+((e=-e-108)>>8),255&e]:e>=-32768&&e<=32767?[28,e>>8&255,255&e]:[29,e>>24&255,e>>16&255,e>>8&255,255&e];return t}compileHeader(e){return[e.major,e.minor,4,e.offSize]}compileNameIndex(e){const t=new CFFIndex;for(let r=0,i=e.length;r"~"||"["===t||"]"===t||"("===t||")"===t||"{"===t||"}"===t||"<"===t||">"===t||"/"===t||"%"===t)&&(t="_");s[e]=t}s=s.join("");""===s&&(s="Bad_Font_Name");t.add((0,a.stringToBytes)(s))}return this.compileIndex(t)}compileTopDicts(e,t,r){const a=[];let i=new CFFIndex;for(let n=0,s=e.length;n>8&255,255&s]);else{n=new Uint8Array(1+2*s);n[0]=0;let t=0;const i=e.charset.length;let o=!1;for(let s=1;s>8&255;n[s+1]=255&c}}return this.compileTypedArray(n)}compileEncoding(e){return this.compileTypedArray(e.raw)}compileFDSelect(e){const t=e.format;let r,a;switch(t){case 0:r=new Uint8Array(1+e.fdSelect.length);r[0]=t;for(a=0;a>8&255,255&i,n];for(a=1;a>8&255,255&a,t);n=t}}const o=(s.length-3)/3;s[1]=o>>8&255;s[2]=255&o;s.push(a>>8&255,255&a);r=new Uint8Array(s)}return this.compileTypedArray(r)}compileTypedArray(e){const t=[];for(let r=0,a=e.length;r>8&255,255&a];let n,s,o=1;for(n=0;n>8&255,255&c):3===s?i.push(c>>16&255,c>>8&255,255&c):i.push(c>>>24&255,c>>16&255,c>>8&255,255&c);r[n]&&(c+=r[n].length)}for(n=0;n{Object.defineProperty(t,"__esModule",{value:!0});t.ISOAdobeCharset=t.ExpertSubsetCharset=t.ExpertCharset=void 0;t.ISOAdobeCharset=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron"];t.ExpertCharset=[".notdef","space","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"];t.ExpertSubsetCharset=[".notdef","space","dollaroldstyle","dollarsuperior","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","hyphensuperior","colonmonetary","onefitted","rupiah","centoldstyle","figuredash","hypheninferior","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior"]},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.getEncoding=function getEncoding(e){switch(e){case"WinAnsiEncoding":return s;case"StandardEncoding":return n;case"MacRomanEncoding":return i;case"SymbolSetEncoding":return o;case"ZapfDingbatsEncoding":return c;case"ExpertEncoding":return r;case"MacExpertEncoding":return a;default:return null}};t.ZapfDingbatsEncoding=t.WinAnsiEncoding=t.SymbolSetEncoding=t.StandardEncoding=t.MacRomanEncoding=t.ExpertEncoding=void 0;const r=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","","asuperior","bsuperior","centsuperior","dsuperior","esuperior","","","","isuperior","","","lsuperior","msuperior","nsuperior","osuperior","","","rsuperior","ssuperior","tsuperior","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdownsmall","centoldstyle","Lslashsmall","","","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","","Dotaccentsmall","","","Macronsmall","","","figuredash","hypheninferior","","","Ogoneksmall","Ringsmall","Cedillasmall","","","","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"];t.ExpertEncoding=r;const a=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","centoldstyle","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","","threequartersemdash","","questionsmall","","","","","Ethsmall","","","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","","","","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hypheninferior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","asuperior","centsuperior","","","","","Aacutesmall","Agravesmall","Acircumflexsmall","Adieresissmall","Atildesmall","Aringsmall","Ccedillasmall","Eacutesmall","Egravesmall","Ecircumflexsmall","Edieresissmall","Iacutesmall","Igravesmall","Icircumflexsmall","Idieresissmall","Ntildesmall","Oacutesmall","Ogravesmall","Ocircumflexsmall","Odieresissmall","Otildesmall","Uacutesmall","Ugravesmall","Ucircumflexsmall","Udieresissmall","","eightsuperior","fourinferior","threeinferior","sixinferior","eightinferior","seveninferior","Scaronsmall","","centinferior","twoinferior","","Dieresissmall","","Caronsmall","osuperior","fiveinferior","","commainferior","periodinferior","Yacutesmall","","dollarinferior","","","Thornsmall","","nineinferior","zeroinferior","Zcaronsmall","AEsmall","Oslashsmall","questiondownsmall","oneinferior","Lslashsmall","","","","","","","Cedillasmall","","","","","","OEsmall","figuredash","hyphensuperior","","","","","exclamdownsmall","","Ydieresissmall","","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","ninesuperior","zerosuperior","","esuperior","rsuperior","tsuperior","","","isuperior","ssuperior","dsuperior","","","","","","lsuperior","Ogoneksmall","Brevesmall","Macronsmall","bsuperior","nsuperior","msuperior","commasuperior","periodsuperior","Dotaccentsmall","Ringsmall","","","",""],i=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","space","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron"];t.MacRomanEncoding=i;const n=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","","endash","dagger","daggerdbl","periodcentered","","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","","questiondown","","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","","ring","cedilla","","hungarumlaut","ogonek","caron","emdash","","","","","","","","","","","","","","","","","AE","","ordfeminine","","","","","Lslash","Oslash","OE","ordmasculine","","","","","","ae","","","","dotlessi","","","lslash","oslash","oe","germandbls","","","",""];t.StandardEncoding=n;const s=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","bullet","Euro","bullet","quotesinglbase","florin","quotedblbase","ellipsis","dagger","daggerdbl","circumflex","perthousand","Scaron","guilsinglleft","OE","bullet","Zcaron","bullet","bullet","quoteleft","quoteright","quotedblleft","quotedblright","bullet","endash","emdash","tilde","trademark","scaron","guilsinglright","oe","bullet","zcaron","Ydieresis","space","exclamdown","cent","sterling","currency","yen","brokenbar","section","dieresis","copyright","ordfeminine","guillemotleft","logicalnot","hyphen","registered","macron","degree","plusminus","twosuperior","threesuperior","acute","mu","paragraph","periodcentered","cedilla","onesuperior","ordmasculine","guillemotright","onequarter","onehalf","threequarters","questiondown","Agrave","Aacute","Acircumflex","Atilde","Adieresis","Aring","AE","Ccedilla","Egrave","Eacute","Ecircumflex","Edieresis","Igrave","Iacute","Icircumflex","Idieresis","Eth","Ntilde","Ograve","Oacute","Ocircumflex","Otilde","Odieresis","multiply","Oslash","Ugrave","Uacute","Ucircumflex","Udieresis","Yacute","Thorn","germandbls","agrave","aacute","acircumflex","atilde","adieresis","aring","ae","ccedilla","egrave","eacute","ecircumflex","edieresis","igrave","iacute","icircumflex","idieresis","eth","ntilde","ograve","oacute","ocircumflex","otilde","odieresis","divide","oslash","ugrave","uacute","ucircumflex","udieresis","yacute","thorn","ydieresis"];t.WinAnsiEncoding=s;const o=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","universal","numbersign","existential","percent","ampersand","suchthat","parenleft","parenright","asteriskmath","plus","comma","minus","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","congruent","Alpha","Beta","Chi","Delta","Epsilon","Phi","Gamma","Eta","Iota","theta1","Kappa","Lambda","Mu","Nu","Omicron","Pi","Theta","Rho","Sigma","Tau","Upsilon","sigma1","Omega","Xi","Psi","Zeta","bracketleft","therefore","bracketright","perpendicular","underscore","radicalex","alpha","beta","chi","delta","epsilon","phi","gamma","eta","iota","phi1","kappa","lambda","mu","nu","omicron","pi","theta","rho","sigma","tau","upsilon","omega1","omega","xi","psi","zeta","braceleft","bar","braceright","similar","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Euro","Upsilon1","minute","lessequal","fraction","infinity","florin","club","diamond","heart","spade","arrowboth","arrowleft","arrowup","arrowright","arrowdown","degree","plusminus","second","greaterequal","multiply","proportional","partialdiff","bullet","divide","notequal","equivalence","approxequal","ellipsis","arrowvertex","arrowhorizex","carriagereturn","aleph","Ifraktur","Rfraktur","weierstrass","circlemultiply","circleplus","emptyset","intersection","union","propersuperset","reflexsuperset","notsubset","propersubset","reflexsubset","element","notelement","angle","gradient","registerserif","copyrightserif","trademarkserif","product","radical","dotmath","logicalnot","logicaland","logicalor","arrowdblboth","arrowdblleft","arrowdblup","arrowdblright","arrowdbldown","lozenge","angleleft","registersans","copyrightsans","trademarksans","summation","parenlefttp","parenleftex","parenleftbt","bracketlefttp","bracketleftex","bracketleftbt","bracelefttp","braceleftmid","braceleftbt","braceex","","angleright","integral","integraltp","integralex","integralbt","parenrighttp","parenrightex","parenrightbt","bracketrighttp","bracketrightex","bracketrightbt","bracerighttp","bracerightmid","bracerightbt",""];t.SymbolSetEncoding=o;const c=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","a1","a2","a202","a3","a4","a5","a119","a118","a117","a11","a12","a13","a14","a15","a16","a105","a17","a18","a19","a20","a21","a22","a23","a24","a25","a26","a27","a28","a6","a7","a8","a9","a10","a29","a30","a31","a32","a33","a34","a35","a36","a37","a38","a39","a40","a41","a42","a43","a44","a45","a46","a47","a48","a49","a50","a51","a52","a53","a54","a55","a56","a57","a58","a59","a60","a61","a62","a63","a64","a65","a66","a67","a68","a69","a70","a71","a72","a73","a74","a203","a75","a204","a76","a77","a78","a79","a81","a82","a83","a84","a97","a98","a99","a100","","a89","a90","a93","a94","a91","a92","a205","a85","a206","a86","a87","a88","a95","a96","","","","","","","","","","","","","","","","","","","","a101","a102","a103","a104","a106","a107","a108","a112","a111","a110","a109","a120","a121","a122","a123","a124","a125","a126","a127","a128","a129","a130","a131","a132","a133","a134","a135","a136","a137","a138","a139","a140","a141","a142","a143","a144","a145","a146","a147","a148","a149","a150","a151","a152","a153","a154","a155","a156","a157","a158","a159","a160","a161","a163","a164","a196","a165","a192","a166","a167","a168","a169","a170","a171","a172","a173","a162","a174","a175","a176","a177","a178","a179","a193","a180","a199","a181","a200","a182","","a201","a183","a184","a197","a185","a194","a198","a186","a195","a187","a188","a189","a190","a191",""];t.ZapfDingbatsEncoding=c},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.getFontType=function getFontType(e,t,r=!1){switch(e){case"Type1":return r?a.FontType.TYPE1STANDARD:"Type1C"===t?a.FontType.TYPE1C:a.FontType.TYPE1;case"CIDFontType0":return"CIDFontType0C"===t?a.FontType.CIDFONTTYPE0C:a.FontType.CIDFONTTYPE0;case"OpenType":return a.FontType.OPENTYPE;case"TrueType":return a.FontType.TRUETYPE;case"CIDFontType2":return a.FontType.CIDFONTTYPE2;case"MMType1":return a.FontType.MMTYPE1;case"Type0":return a.FontType.TYPE0;default:return a.FontType.UNKNOWN}};t.normalizeFontName=function normalizeFontName(e){return e.replace(/[,_]/g,"-").replace(/\s/g,"")};t.recoverGlyphName=recoverGlyphName;t.type1FontGlyphMapping=function type1FontGlyphMapping(e,t,r){const a=Object.create(null);let s,c,l;const h=!!(e.flags&o.Symbolic);if(e.isInternalFont){l=t;for(c=0;c=0?s:0}}else if(e.baseEncodingName){l=(0,i.getEncoding)(e.baseEncodingName);for(c=0;c=0?s:0}}else if(h)for(c in t)a[c]=t[c];else{l=i.StandardEncoding;for(c=0;c=0?s:0}}const u=e.differences;let d;if(u)for(c in u){const e=u[c];s=r.indexOf(e);if(-1===s){d||(d=(0,n.getGlyphsUnicode)());const t=recoverGlyphName(e,d);t!==e&&(s=r.indexOf(t))}a[c]=s>=0?s:0}return a};t.SEAC_ANALYSIS_ENABLED=t.MacStandardGlyphOrdering=t.FontFlags=void 0;var a=r(2),i=r(37),n=r(39),s=r(40);t.SEAC_ANALYSIS_ENABLED=!0;const o={FixedPitch:1,Serif:2,Symbolic:4,Script:8,Nonsymbolic:32,Italic:64,AllCap:65536,SmallCap:131072,ForceBold:262144};t.FontFlags=o;t.MacStandardGlyphOrdering=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"];function recoverGlyphName(e,t){if(void 0!==t[e])return e;const r=(0,s.getUnicodeForGlyph)(e,t);if(-1!==r)for(const e in t)if(t[e]===r)return e;(0,a.info)("Unable to recover a standard glyph name for: "+e);return e}},(e,t,r)=>{r.r(t);r.d(t,{getDingbatsGlyphsUnicode:()=>n,getGlyphsUnicode:()=>i});var a=r(9);const i=(0,a.getArrayLookupTableFactory)((function(){return["A",65,"AE",198,"AEacute",508,"AEmacron",482,"AEsmall",63462,"Aacute",193,"Aacutesmall",63457,"Abreve",258,"Abreveacute",7854,"Abrevecyrillic",1232,"Abrevedotbelow",7862,"Abrevegrave",7856,"Abrevehookabove",7858,"Abrevetilde",7860,"Acaron",461,"Acircle",9398,"Acircumflex",194,"Acircumflexacute",7844,"Acircumflexdotbelow",7852,"Acircumflexgrave",7846,"Acircumflexhookabove",7848,"Acircumflexsmall",63458,"Acircumflextilde",7850,"Acute",63177,"Acutesmall",63412,"Acyrillic",1040,"Adblgrave",512,"Adieresis",196,"Adieresiscyrillic",1234,"Adieresismacron",478,"Adieresissmall",63460,"Adotbelow",7840,"Adotmacron",480,"Agrave",192,"Agravesmall",63456,"Ahookabove",7842,"Aiecyrillic",1236,"Ainvertedbreve",514,"Alpha",913,"Alphatonos",902,"Amacron",256,"Amonospace",65313,"Aogonek",260,"Aring",197,"Aringacute",506,"Aringbelow",7680,"Aringsmall",63461,"Asmall",63329,"Atilde",195,"Atildesmall",63459,"Aybarmenian",1329,"B",66,"Bcircle",9399,"Bdotaccent",7682,"Bdotbelow",7684,"Becyrillic",1041,"Benarmenian",1330,"Beta",914,"Bhook",385,"Blinebelow",7686,"Bmonospace",65314,"Brevesmall",63220,"Bsmall",63330,"Btopbar",386,"C",67,"Caarmenian",1342,"Cacute",262,"Caron",63178,"Caronsmall",63221,"Ccaron",268,"Ccedilla",199,"Ccedillaacute",7688,"Ccedillasmall",63463,"Ccircle",9400,"Ccircumflex",264,"Cdot",266,"Cdotaccent",266,"Cedillasmall",63416,"Chaarmenian",1353,"Cheabkhasiancyrillic",1212,"Checyrillic",1063,"Chedescenderabkhasiancyrillic",1214,"Chedescendercyrillic",1206,"Chedieresiscyrillic",1268,"Cheharmenian",1347,"Chekhakassiancyrillic",1227,"Cheverticalstrokecyrillic",1208,"Chi",935,"Chook",391,"Circumflexsmall",63222,"Cmonospace",65315,"Coarmenian",1361,"Csmall",63331,"D",68,"DZ",497,"DZcaron",452,"Daarmenian",1332,"Dafrican",393,"Dcaron",270,"Dcedilla",7696,"Dcircle",9401,"Dcircumflexbelow",7698,"Dcroat",272,"Ddotaccent",7690,"Ddotbelow",7692,"Decyrillic",1044,"Deicoptic",1006,"Delta",8710,"Deltagreek",916,"Dhook",394,"Dieresis",63179,"DieresisAcute",63180,"DieresisGrave",63181,"Dieresissmall",63400,"Digammagreek",988,"Djecyrillic",1026,"Dlinebelow",7694,"Dmonospace",65316,"Dotaccentsmall",63223,"Dslash",272,"Dsmall",63332,"Dtopbar",395,"Dz",498,"Dzcaron",453,"Dzeabkhasiancyrillic",1248,"Dzecyrillic",1029,"Dzhecyrillic",1039,"E",69,"Eacute",201,"Eacutesmall",63465,"Ebreve",276,"Ecaron",282,"Ecedillabreve",7708,"Echarmenian",1333,"Ecircle",9402,"Ecircumflex",202,"Ecircumflexacute",7870,"Ecircumflexbelow",7704,"Ecircumflexdotbelow",7878,"Ecircumflexgrave",7872,"Ecircumflexhookabove",7874,"Ecircumflexsmall",63466,"Ecircumflextilde",7876,"Ecyrillic",1028,"Edblgrave",516,"Edieresis",203,"Edieresissmall",63467,"Edot",278,"Edotaccent",278,"Edotbelow",7864,"Efcyrillic",1060,"Egrave",200,"Egravesmall",63464,"Eharmenian",1335,"Ehookabove",7866,"Eightroman",8551,"Einvertedbreve",518,"Eiotifiedcyrillic",1124,"Elcyrillic",1051,"Elevenroman",8554,"Emacron",274,"Emacronacute",7702,"Emacrongrave",7700,"Emcyrillic",1052,"Emonospace",65317,"Encyrillic",1053,"Endescendercyrillic",1186,"Eng",330,"Enghecyrillic",1188,"Enhookcyrillic",1223,"Eogonek",280,"Eopen",400,"Epsilon",917,"Epsilontonos",904,"Ercyrillic",1056,"Ereversed",398,"Ereversedcyrillic",1069,"Escyrillic",1057,"Esdescendercyrillic",1194,"Esh",425,"Esmall",63333,"Eta",919,"Etarmenian",1336,"Etatonos",905,"Eth",208,"Ethsmall",63472,"Etilde",7868,"Etildebelow",7706,"Euro",8364,"Ezh",439,"Ezhcaron",494,"Ezhreversed",440,"F",70,"Fcircle",9403,"Fdotaccent",7710,"Feharmenian",1366,"Feicoptic",996,"Fhook",401,"Fitacyrillic",1138,"Fiveroman",8548,"Fmonospace",65318,"Fourroman",8547,"Fsmall",63334,"G",71,"GBsquare",13191,"Gacute",500,"Gamma",915,"Gammaafrican",404,"Gangiacoptic",1002,"Gbreve",286,"Gcaron",486,"Gcedilla",290,"Gcircle",9404,"Gcircumflex",284,"Gcommaaccent",290,"Gdot",288,"Gdotaccent",288,"Gecyrillic",1043,"Ghadarmenian",1346,"Ghemiddlehookcyrillic",1172,"Ghestrokecyrillic",1170,"Gheupturncyrillic",1168,"Ghook",403,"Gimarmenian",1331,"Gjecyrillic",1027,"Gmacron",7712,"Gmonospace",65319,"Grave",63182,"Gravesmall",63328,"Gsmall",63335,"Gsmallhook",667,"Gstroke",484,"H",72,"H18533",9679,"H18543",9642,"H18551",9643,"H22073",9633,"HPsquare",13259,"Haabkhasiancyrillic",1192,"Hadescendercyrillic",1202,"Hardsigncyrillic",1066,"Hbar",294,"Hbrevebelow",7722,"Hcedilla",7720,"Hcircle",9405,"Hcircumflex",292,"Hdieresis",7718,"Hdotaccent",7714,"Hdotbelow",7716,"Hmonospace",65320,"Hoarmenian",1344,"Horicoptic",1e3,"Hsmall",63336,"Hungarumlaut",63183,"Hungarumlautsmall",63224,"Hzsquare",13200,"I",73,"IAcyrillic",1071,"IJ",306,"IUcyrillic",1070,"Iacute",205,"Iacutesmall",63469,"Ibreve",300,"Icaron",463,"Icircle",9406,"Icircumflex",206,"Icircumflexsmall",63470,"Icyrillic",1030,"Idblgrave",520,"Idieresis",207,"Idieresisacute",7726,"Idieresiscyrillic",1252,"Idieresissmall",63471,"Idot",304,"Idotaccent",304,"Idotbelow",7882,"Iebrevecyrillic",1238,"Iecyrillic",1045,"Ifraktur",8465,"Igrave",204,"Igravesmall",63468,"Ihookabove",7880,"Iicyrillic",1048,"Iinvertedbreve",522,"Iishortcyrillic",1049,"Imacron",298,"Imacroncyrillic",1250,"Imonospace",65321,"Iniarmenian",1339,"Iocyrillic",1025,"Iogonek",302,"Iota",921,"Iotaafrican",406,"Iotadieresis",938,"Iotatonos",906,"Ismall",63337,"Istroke",407,"Itilde",296,"Itildebelow",7724,"Izhitsacyrillic",1140,"Izhitsadblgravecyrillic",1142,"J",74,"Jaarmenian",1345,"Jcircle",9407,"Jcircumflex",308,"Jecyrillic",1032,"Jheharmenian",1355,"Jmonospace",65322,"Jsmall",63338,"K",75,"KBsquare",13189,"KKsquare",13261,"Kabashkircyrillic",1184,"Kacute",7728,"Kacyrillic",1050,"Kadescendercyrillic",1178,"Kahookcyrillic",1219,"Kappa",922,"Kastrokecyrillic",1182,"Kaverticalstrokecyrillic",1180,"Kcaron",488,"Kcedilla",310,"Kcircle",9408,"Kcommaaccent",310,"Kdotbelow",7730,"Keharmenian",1364,"Kenarmenian",1343,"Khacyrillic",1061,"Kheicoptic",998,"Khook",408,"Kjecyrillic",1036,"Klinebelow",7732,"Kmonospace",65323,"Koppacyrillic",1152,"Koppagreek",990,"Ksicyrillic",1134,"Ksmall",63339,"L",76,"LJ",455,"LL",63167,"Lacute",313,"Lambda",923,"Lcaron",317,"Lcedilla",315,"Lcircle",9409,"Lcircumflexbelow",7740,"Lcommaaccent",315,"Ldot",319,"Ldotaccent",319,"Ldotbelow",7734,"Ldotbelowmacron",7736,"Liwnarmenian",1340,"Lj",456,"Ljecyrillic",1033,"Llinebelow",7738,"Lmonospace",65324,"Lslash",321,"Lslashsmall",63225,"Lsmall",63340,"M",77,"MBsquare",13190,"Macron",63184,"Macronsmall",63407,"Macute",7742,"Mcircle",9410,"Mdotaccent",7744,"Mdotbelow",7746,"Menarmenian",1348,"Mmonospace",65325,"Msmall",63341,"Mturned",412,"Mu",924,"N",78,"NJ",458,"Nacute",323,"Ncaron",327,"Ncedilla",325,"Ncircle",9411,"Ncircumflexbelow",7754,"Ncommaaccent",325,"Ndotaccent",7748,"Ndotbelow",7750,"Nhookleft",413,"Nineroman",8552,"Nj",459,"Njecyrillic",1034,"Nlinebelow",7752,"Nmonospace",65326,"Nowarmenian",1350,"Nsmall",63342,"Ntilde",209,"Ntildesmall",63473,"Nu",925,"O",79,"OE",338,"OEsmall",63226,"Oacute",211,"Oacutesmall",63475,"Obarredcyrillic",1256,"Obarreddieresiscyrillic",1258,"Obreve",334,"Ocaron",465,"Ocenteredtilde",415,"Ocircle",9412,"Ocircumflex",212,"Ocircumflexacute",7888,"Ocircumflexdotbelow",7896,"Ocircumflexgrave",7890,"Ocircumflexhookabove",7892,"Ocircumflexsmall",63476,"Ocircumflextilde",7894,"Ocyrillic",1054,"Odblacute",336,"Odblgrave",524,"Odieresis",214,"Odieresiscyrillic",1254,"Odieresissmall",63478,"Odotbelow",7884,"Ogoneksmall",63227,"Ograve",210,"Ogravesmall",63474,"Oharmenian",1365,"Ohm",8486,"Ohookabove",7886,"Ohorn",416,"Ohornacute",7898,"Ohorndotbelow",7906,"Ohorngrave",7900,"Ohornhookabove",7902,"Ohorntilde",7904,"Ohungarumlaut",336,"Oi",418,"Oinvertedbreve",526,"Omacron",332,"Omacronacute",7762,"Omacrongrave",7760,"Omega",8486,"Omegacyrillic",1120,"Omegagreek",937,"Omegaroundcyrillic",1146,"Omegatitlocyrillic",1148,"Omegatonos",911,"Omicron",927,"Omicrontonos",908,"Omonospace",65327,"Oneroman",8544,"Oogonek",490,"Oogonekmacron",492,"Oopen",390,"Oslash",216,"Oslashacute",510,"Oslashsmall",63480,"Osmall",63343,"Ostrokeacute",510,"Otcyrillic",1150,"Otilde",213,"Otildeacute",7756,"Otildedieresis",7758,"Otildesmall",63477,"P",80,"Pacute",7764,"Pcircle",9413,"Pdotaccent",7766,"Pecyrillic",1055,"Peharmenian",1354,"Pemiddlehookcyrillic",1190,"Phi",934,"Phook",420,"Pi",928,"Piwrarmenian",1363,"Pmonospace",65328,"Psi",936,"Psicyrillic",1136,"Psmall",63344,"Q",81,"Qcircle",9414,"Qmonospace",65329,"Qsmall",63345,"R",82,"Raarmenian",1356,"Racute",340,"Rcaron",344,"Rcedilla",342,"Rcircle",9415,"Rcommaaccent",342,"Rdblgrave",528,"Rdotaccent",7768,"Rdotbelow",7770,"Rdotbelowmacron",7772,"Reharmenian",1360,"Rfraktur",8476,"Rho",929,"Ringsmall",63228,"Rinvertedbreve",530,"Rlinebelow",7774,"Rmonospace",65330,"Rsmall",63346,"Rsmallinverted",641,"Rsmallinvertedsuperior",694,"S",83,"SF010000",9484,"SF020000",9492,"SF030000",9488,"SF040000",9496,"SF050000",9532,"SF060000",9516,"SF070000",9524,"SF080000",9500,"SF090000",9508,"SF100000",9472,"SF110000",9474,"SF190000",9569,"SF200000",9570,"SF210000",9558,"SF220000",9557,"SF230000",9571,"SF240000",9553,"SF250000",9559,"SF260000",9565,"SF270000",9564,"SF280000",9563,"SF360000",9566,"SF370000",9567,"SF380000",9562,"SF390000",9556,"SF400000",9577,"SF410000",9574,"SF420000",9568,"SF430000",9552,"SF440000",9580,"SF450000",9575,"SF460000",9576,"SF470000",9572,"SF480000",9573,"SF490000",9561,"SF500000",9560,"SF510000",9554,"SF520000",9555,"SF530000",9579,"SF540000",9578,"Sacute",346,"Sacutedotaccent",7780,"Sampigreek",992,"Scaron",352,"Scarondotaccent",7782,"Scaronsmall",63229,"Scedilla",350,"Schwa",399,"Schwacyrillic",1240,"Schwadieresiscyrillic",1242,"Scircle",9416,"Scircumflex",348,"Scommaaccent",536,"Sdotaccent",7776,"Sdotbelow",7778,"Sdotbelowdotaccent",7784,"Seharmenian",1357,"Sevenroman",8550,"Shaarmenian",1351,"Shacyrillic",1064,"Shchacyrillic",1065,"Sheicoptic",994,"Shhacyrillic",1210,"Shimacoptic",1004,"Sigma",931,"Sixroman",8549,"Smonospace",65331,"Softsigncyrillic",1068,"Ssmall",63347,"Stigmagreek",986,"T",84,"Tau",932,"Tbar",358,"Tcaron",356,"Tcedilla",354,"Tcircle",9417,"Tcircumflexbelow",7792,"Tcommaaccent",354,"Tdotaccent",7786,"Tdotbelow",7788,"Tecyrillic",1058,"Tedescendercyrillic",1196,"Tenroman",8553,"Tetsecyrillic",1204,"Theta",920,"Thook",428,"Thorn",222,"Thornsmall",63486,"Threeroman",8546,"Tildesmall",63230,"Tiwnarmenian",1359,"Tlinebelow",7790,"Tmonospace",65332,"Toarmenian",1337,"Tonefive",444,"Tonesix",388,"Tonetwo",423,"Tretroflexhook",430,"Tsecyrillic",1062,"Tshecyrillic",1035,"Tsmall",63348,"Twelveroman",8555,"Tworoman",8545,"U",85,"Uacute",218,"Uacutesmall",63482,"Ubreve",364,"Ucaron",467,"Ucircle",9418,"Ucircumflex",219,"Ucircumflexbelow",7798,"Ucircumflexsmall",63483,"Ucyrillic",1059,"Udblacute",368,"Udblgrave",532,"Udieresis",220,"Udieresisacute",471,"Udieresisbelow",7794,"Udieresiscaron",473,"Udieresiscyrillic",1264,"Udieresisgrave",475,"Udieresismacron",469,"Udieresissmall",63484,"Udotbelow",7908,"Ugrave",217,"Ugravesmall",63481,"Uhookabove",7910,"Uhorn",431,"Uhornacute",7912,"Uhorndotbelow",7920,"Uhorngrave",7914,"Uhornhookabove",7916,"Uhorntilde",7918,"Uhungarumlaut",368,"Uhungarumlautcyrillic",1266,"Uinvertedbreve",534,"Ukcyrillic",1144,"Umacron",362,"Umacroncyrillic",1262,"Umacrondieresis",7802,"Umonospace",65333,"Uogonek",370,"Upsilon",933,"Upsilon1",978,"Upsilonacutehooksymbolgreek",979,"Upsilonafrican",433,"Upsilondieresis",939,"Upsilondieresishooksymbolgreek",980,"Upsilonhooksymbol",978,"Upsilontonos",910,"Uring",366,"Ushortcyrillic",1038,"Usmall",63349,"Ustraightcyrillic",1198,"Ustraightstrokecyrillic",1200,"Utilde",360,"Utildeacute",7800,"Utildebelow",7796,"V",86,"Vcircle",9419,"Vdotbelow",7806,"Vecyrillic",1042,"Vewarmenian",1358,"Vhook",434,"Vmonospace",65334,"Voarmenian",1352,"Vsmall",63350,"Vtilde",7804,"W",87,"Wacute",7810,"Wcircle",9420,"Wcircumflex",372,"Wdieresis",7812,"Wdotaccent",7814,"Wdotbelow",7816,"Wgrave",7808,"Wmonospace",65335,"Wsmall",63351,"X",88,"Xcircle",9421,"Xdieresis",7820,"Xdotaccent",7818,"Xeharmenian",1341,"Xi",926,"Xmonospace",65336,"Xsmall",63352,"Y",89,"Yacute",221,"Yacutesmall",63485,"Yatcyrillic",1122,"Ycircle",9422,"Ycircumflex",374,"Ydieresis",376,"Ydieresissmall",63487,"Ydotaccent",7822,"Ydotbelow",7924,"Yericyrillic",1067,"Yerudieresiscyrillic",1272,"Ygrave",7922,"Yhook",435,"Yhookabove",7926,"Yiarmenian",1349,"Yicyrillic",1031,"Yiwnarmenian",1362,"Ymonospace",65337,"Ysmall",63353,"Ytilde",7928,"Yusbigcyrillic",1130,"Yusbigiotifiedcyrillic",1132,"Yuslittlecyrillic",1126,"Yuslittleiotifiedcyrillic",1128,"Z",90,"Zaarmenian",1334,"Zacute",377,"Zcaron",381,"Zcaronsmall",63231,"Zcircle",9423,"Zcircumflex",7824,"Zdot",379,"Zdotaccent",379,"Zdotbelow",7826,"Zecyrillic",1047,"Zedescendercyrillic",1176,"Zedieresiscyrillic",1246,"Zeta",918,"Zhearmenian",1338,"Zhebrevecyrillic",1217,"Zhecyrillic",1046,"Zhedescendercyrillic",1174,"Zhedieresiscyrillic",1244,"Zlinebelow",7828,"Zmonospace",65338,"Zsmall",63354,"Zstroke",437,"a",97,"aabengali",2438,"aacute",225,"aadeva",2310,"aagujarati",2694,"aagurmukhi",2566,"aamatragurmukhi",2622,"aarusquare",13059,"aavowelsignbengali",2494,"aavowelsigndeva",2366,"aavowelsigngujarati",2750,"abbreviationmarkarmenian",1375,"abbreviationsigndeva",2416,"abengali",2437,"abopomofo",12570,"abreve",259,"abreveacute",7855,"abrevecyrillic",1233,"abrevedotbelow",7863,"abrevegrave",7857,"abrevehookabove",7859,"abrevetilde",7861,"acaron",462,"acircle",9424,"acircumflex",226,"acircumflexacute",7845,"acircumflexdotbelow",7853,"acircumflexgrave",7847,"acircumflexhookabove",7849,"acircumflextilde",7851,"acute",180,"acutebelowcmb",791,"acutecmb",769,"acutecomb",769,"acutedeva",2388,"acutelowmod",719,"acutetonecmb",833,"acyrillic",1072,"adblgrave",513,"addakgurmukhi",2673,"adeva",2309,"adieresis",228,"adieresiscyrillic",1235,"adieresismacron",479,"adotbelow",7841,"adotmacron",481,"ae",230,"aeacute",509,"aekorean",12624,"aemacron",483,"afii00208",8213,"afii08941",8356,"afii10017",1040,"afii10018",1041,"afii10019",1042,"afii10020",1043,"afii10021",1044,"afii10022",1045,"afii10023",1025,"afii10024",1046,"afii10025",1047,"afii10026",1048,"afii10027",1049,"afii10028",1050,"afii10029",1051,"afii10030",1052,"afii10031",1053,"afii10032",1054,"afii10033",1055,"afii10034",1056,"afii10035",1057,"afii10036",1058,"afii10037",1059,"afii10038",1060,"afii10039",1061,"afii10040",1062,"afii10041",1063,"afii10042",1064,"afii10043",1065,"afii10044",1066,"afii10045",1067,"afii10046",1068,"afii10047",1069,"afii10048",1070,"afii10049",1071,"afii10050",1168,"afii10051",1026,"afii10052",1027,"afii10053",1028,"afii10054",1029,"afii10055",1030,"afii10056",1031,"afii10057",1032,"afii10058",1033,"afii10059",1034,"afii10060",1035,"afii10061",1036,"afii10062",1038,"afii10063",63172,"afii10064",63173,"afii10065",1072,"afii10066",1073,"afii10067",1074,"afii10068",1075,"afii10069",1076,"afii10070",1077,"afii10071",1105,"afii10072",1078,"afii10073",1079,"afii10074",1080,"afii10075",1081,"afii10076",1082,"afii10077",1083,"afii10078",1084,"afii10079",1085,"afii10080",1086,"afii10081",1087,"afii10082",1088,"afii10083",1089,"afii10084",1090,"afii10085",1091,"afii10086",1092,"afii10087",1093,"afii10088",1094,"afii10089",1095,"afii10090",1096,"afii10091",1097,"afii10092",1098,"afii10093",1099,"afii10094",1100,"afii10095",1101,"afii10096",1102,"afii10097",1103,"afii10098",1169,"afii10099",1106,"afii10100",1107,"afii10101",1108,"afii10102",1109,"afii10103",1110,"afii10104",1111,"afii10105",1112,"afii10106",1113,"afii10107",1114,"afii10108",1115,"afii10109",1116,"afii10110",1118,"afii10145",1039,"afii10146",1122,"afii10147",1138,"afii10148",1140,"afii10192",63174,"afii10193",1119,"afii10194",1123,"afii10195",1139,"afii10196",1141,"afii10831",63175,"afii10832",63176,"afii10846",1241,"afii299",8206,"afii300",8207,"afii301",8205,"afii57381",1642,"afii57388",1548,"afii57392",1632,"afii57393",1633,"afii57394",1634,"afii57395",1635,"afii57396",1636,"afii57397",1637,"afii57398",1638,"afii57399",1639,"afii57400",1640,"afii57401",1641,"afii57403",1563,"afii57407",1567,"afii57409",1569,"afii57410",1570,"afii57411",1571,"afii57412",1572,"afii57413",1573,"afii57414",1574,"afii57415",1575,"afii57416",1576,"afii57417",1577,"afii57418",1578,"afii57419",1579,"afii57420",1580,"afii57421",1581,"afii57422",1582,"afii57423",1583,"afii57424",1584,"afii57425",1585,"afii57426",1586,"afii57427",1587,"afii57428",1588,"afii57429",1589,"afii57430",1590,"afii57431",1591,"afii57432",1592,"afii57433",1593,"afii57434",1594,"afii57440",1600,"afii57441",1601,"afii57442",1602,"afii57443",1603,"afii57444",1604,"afii57445",1605,"afii57446",1606,"afii57448",1608,"afii57449",1609,"afii57450",1610,"afii57451",1611,"afii57452",1612,"afii57453",1613,"afii57454",1614,"afii57455",1615,"afii57456",1616,"afii57457",1617,"afii57458",1618,"afii57470",1607,"afii57505",1700,"afii57506",1662,"afii57507",1670,"afii57508",1688,"afii57509",1711,"afii57511",1657,"afii57512",1672,"afii57513",1681,"afii57514",1722,"afii57519",1746,"afii57534",1749,"afii57636",8362,"afii57645",1470,"afii57658",1475,"afii57664",1488,"afii57665",1489,"afii57666",1490,"afii57667",1491,"afii57668",1492,"afii57669",1493,"afii57670",1494,"afii57671",1495,"afii57672",1496,"afii57673",1497,"afii57674",1498,"afii57675",1499,"afii57676",1500,"afii57677",1501,"afii57678",1502,"afii57679",1503,"afii57680",1504,"afii57681",1505,"afii57682",1506,"afii57683",1507,"afii57684",1508,"afii57685",1509,"afii57686",1510,"afii57687",1511,"afii57688",1512,"afii57689",1513,"afii57690",1514,"afii57694",64298,"afii57695",64299,"afii57700",64331,"afii57705",64287,"afii57716",1520,"afii57717",1521,"afii57718",1522,"afii57723",64309,"afii57793",1460,"afii57794",1461,"afii57795",1462,"afii57796",1467,"afii57797",1464,"afii57798",1463,"afii57799",1456,"afii57800",1458,"afii57801",1457,"afii57802",1459,"afii57803",1474,"afii57804",1473,"afii57806",1465,"afii57807",1468,"afii57839",1469,"afii57841",1471,"afii57842",1472,"afii57929",700,"afii61248",8453,"afii61289",8467,"afii61352",8470,"afii61573",8236,"afii61574",8237,"afii61575",8238,"afii61664",8204,"afii63167",1645,"afii64937",701,"agrave",224,"agujarati",2693,"agurmukhi",2565,"ahiragana",12354,"ahookabove",7843,"aibengali",2448,"aibopomofo",12574,"aideva",2320,"aiecyrillic",1237,"aigujarati",2704,"aigurmukhi",2576,"aimatragurmukhi",2632,"ainarabic",1593,"ainfinalarabic",65226,"aininitialarabic",65227,"ainmedialarabic",65228,"ainvertedbreve",515,"aivowelsignbengali",2504,"aivowelsigndeva",2376,"aivowelsigngujarati",2760,"akatakana",12450,"akatakanahalfwidth",65393,"akorean",12623,"alef",1488,"alefarabic",1575,"alefdageshhebrew",64304,"aleffinalarabic",65166,"alefhamzaabovearabic",1571,"alefhamzaabovefinalarabic",65156,"alefhamzabelowarabic",1573,"alefhamzabelowfinalarabic",65160,"alefhebrew",1488,"aleflamedhebrew",64335,"alefmaddaabovearabic",1570,"alefmaddaabovefinalarabic",65154,"alefmaksuraarabic",1609,"alefmaksurafinalarabic",65264,"alefmaksurainitialarabic",65267,"alefmaksuramedialarabic",65268,"alefpatahhebrew",64302,"alefqamatshebrew",64303,"aleph",8501,"allequal",8780,"alpha",945,"alphatonos",940,"amacron",257,"amonospace",65345,"ampersand",38,"ampersandmonospace",65286,"ampersandsmall",63270,"amsquare",13250,"anbopomofo",12578,"angbopomofo",12580,"angbracketleft",12296,"angbracketright",12297,"angkhankhuthai",3674,"angle",8736,"anglebracketleft",12296,"anglebracketleftvertical",65087,"anglebracketright",12297,"anglebracketrightvertical",65088,"angleleft",9001,"angleright",9002,"angstrom",8491,"anoteleia",903,"anudattadeva",2386,"anusvarabengali",2434,"anusvaradeva",2306,"anusvaragujarati",2690,"aogonek",261,"apaatosquare",13056,"aparen",9372,"apostrophearmenian",1370,"apostrophemod",700,"apple",63743,"approaches",8784,"approxequal",8776,"approxequalorimage",8786,"approximatelyequal",8773,"araeaekorean",12686,"araeakorean",12685,"arc",8978,"arighthalfring",7834,"aring",229,"aringacute",507,"aringbelow",7681,"arrowboth",8596,"arrowdashdown",8675,"arrowdashleft",8672,"arrowdashright",8674,"arrowdashup",8673,"arrowdblboth",8660,"arrowdbldown",8659,"arrowdblleft",8656,"arrowdblright",8658,"arrowdblup",8657,"arrowdown",8595,"arrowdownleft",8601,"arrowdownright",8600,"arrowdownwhite",8681,"arrowheaddownmod",709,"arrowheadleftmod",706,"arrowheadrightmod",707,"arrowheadupmod",708,"arrowhorizex",63719,"arrowleft",8592,"arrowleftdbl",8656,"arrowleftdblstroke",8653,"arrowleftoverright",8646,"arrowleftwhite",8678,"arrowright",8594,"arrowrightdblstroke",8655,"arrowrightheavy",10142,"arrowrightoverleft",8644,"arrowrightwhite",8680,"arrowtableft",8676,"arrowtabright",8677,"arrowup",8593,"arrowupdn",8597,"arrowupdnbse",8616,"arrowupdownbase",8616,"arrowupleft",8598,"arrowupleftofdown",8645,"arrowupright",8599,"arrowupwhite",8679,"arrowvertex",63718,"asciicircum",94,"asciicircummonospace",65342,"asciitilde",126,"asciitildemonospace",65374,"ascript",593,"ascriptturned",594,"asmallhiragana",12353,"asmallkatakana",12449,"asmallkatakanahalfwidth",65383,"asterisk",42,"asteriskaltonearabic",1645,"asteriskarabic",1645,"asteriskmath",8727,"asteriskmonospace",65290,"asterisksmall",65121,"asterism",8258,"asuperior",63209,"asymptoticallyequal",8771,"at",64,"atilde",227,"atmonospace",65312,"atsmall",65131,"aturned",592,"aubengali",2452,"aubopomofo",12576,"audeva",2324,"augujarati",2708,"augurmukhi",2580,"aulengthmarkbengali",2519,"aumatragurmukhi",2636,"auvowelsignbengali",2508,"auvowelsigndeva",2380,"auvowelsigngujarati",2764,"avagrahadeva",2365,"aybarmenian",1377,"ayin",1506,"ayinaltonehebrew",64288,"ayinhebrew",1506,"b",98,"babengali",2476,"backslash",92,"backslashmonospace",65340,"badeva",2348,"bagujarati",2732,"bagurmukhi",2604,"bahiragana",12400,"bahtthai",3647,"bakatakana",12496,"bar",124,"barmonospace",65372,"bbopomofo",12549,"bcircle",9425,"bdotaccent",7683,"bdotbelow",7685,"beamedsixteenthnotes",9836,"because",8757,"becyrillic",1073,"beharabic",1576,"behfinalarabic",65168,"behinitialarabic",65169,"behiragana",12409,"behmedialarabic",65170,"behmeeminitialarabic",64671,"behmeemisolatedarabic",64520,"behnoonfinalarabic",64621,"bekatakana",12505,"benarmenian",1378,"bet",1489,"beta",946,"betasymbolgreek",976,"betdagesh",64305,"betdageshhebrew",64305,"bethebrew",1489,"betrafehebrew",64332,"bhabengali",2477,"bhadeva",2349,"bhagujarati",2733,"bhagurmukhi",2605,"bhook",595,"bihiragana",12403,"bikatakana",12499,"bilabialclick",664,"bindigurmukhi",2562,"birusquare",13105,"blackcircle",9679,"blackdiamond",9670,"blackdownpointingtriangle",9660,"blackleftpointingpointer",9668,"blackleftpointingtriangle",9664,"blacklenticularbracketleft",12304,"blacklenticularbracketleftvertical",65083,"blacklenticularbracketright",12305,"blacklenticularbracketrightvertical",65084,"blacklowerlefttriangle",9699,"blacklowerrighttriangle",9698,"blackrectangle",9644,"blackrightpointingpointer",9658,"blackrightpointingtriangle",9654,"blacksmallsquare",9642,"blacksmilingface",9787,"blacksquare",9632,"blackstar",9733,"blackupperlefttriangle",9700,"blackupperrighttriangle",9701,"blackuppointingsmalltriangle",9652,"blackuppointingtriangle",9650,"blank",9251,"blinebelow",7687,"block",9608,"bmonospace",65346,"bobaimaithai",3610,"bohiragana",12412,"bokatakana",12508,"bparen",9373,"bqsquare",13251,"braceex",63732,"braceleft",123,"braceleftbt",63731,"braceleftmid",63730,"braceleftmonospace",65371,"braceleftsmall",65115,"bracelefttp",63729,"braceleftvertical",65079,"braceright",125,"bracerightbt",63742,"bracerightmid",63741,"bracerightmonospace",65373,"bracerightsmall",65116,"bracerighttp",63740,"bracerightvertical",65080,"bracketleft",91,"bracketleftbt",63728,"bracketleftex",63727,"bracketleftmonospace",65339,"bracketlefttp",63726,"bracketright",93,"bracketrightbt",63739,"bracketrightex",63738,"bracketrightmonospace",65341,"bracketrighttp",63737,"breve",728,"brevebelowcmb",814,"brevecmb",774,"breveinvertedbelowcmb",815,"breveinvertedcmb",785,"breveinverteddoublecmb",865,"bridgebelowcmb",810,"bridgeinvertedbelowcmb",826,"brokenbar",166,"bstroke",384,"bsuperior",63210,"btopbar",387,"buhiragana",12406,"bukatakana",12502,"bullet",8226,"bulletinverse",9688,"bulletoperator",8729,"bullseye",9678,"c",99,"caarmenian",1390,"cabengali",2458,"cacute",263,"cadeva",2330,"cagujarati",2714,"cagurmukhi",2586,"calsquare",13192,"candrabindubengali",2433,"candrabinducmb",784,"candrabindudeva",2305,"candrabindugujarati",2689,"capslock",8682,"careof",8453,"caron",711,"caronbelowcmb",812,"caroncmb",780,"carriagereturn",8629,"cbopomofo",12568,"ccaron",269,"ccedilla",231,"ccedillaacute",7689,"ccircle",9426,"ccircumflex",265,"ccurl",597,"cdot",267,"cdotaccent",267,"cdsquare",13253,"cedilla",184,"cedillacmb",807,"cent",162,"centigrade",8451,"centinferior",63199,"centmonospace",65504,"centoldstyle",63394,"centsuperior",63200,"chaarmenian",1401,"chabengali",2459,"chadeva",2331,"chagujarati",2715,"chagurmukhi",2587,"chbopomofo",12564,"cheabkhasiancyrillic",1213,"checkmark",10003,"checyrillic",1095,"chedescenderabkhasiancyrillic",1215,"chedescendercyrillic",1207,"chedieresiscyrillic",1269,"cheharmenian",1395,"chekhakassiancyrillic",1228,"cheverticalstrokecyrillic",1209,"chi",967,"chieuchacirclekorean",12919,"chieuchaparenkorean",12823,"chieuchcirclekorean",12905,"chieuchkorean",12618,"chieuchparenkorean",12809,"chochangthai",3594,"chochanthai",3592,"chochingthai",3593,"chochoethai",3596,"chook",392,"cieucacirclekorean",12918,"cieucaparenkorean",12822,"cieuccirclekorean",12904,"cieuckorean",12616,"cieucparenkorean",12808,"cieucuparenkorean",12828,"circle",9675,"circlecopyrt",169,"circlemultiply",8855,"circleot",8857,"circleplus",8853,"circlepostalmark",12342,"circlewithlefthalfblack",9680,"circlewithrighthalfblack",9681,"circumflex",710,"circumflexbelowcmb",813,"circumflexcmb",770,"clear",8999,"clickalveolar",450,"clickdental",448,"clicklateral",449,"clickretroflex",451,"club",9827,"clubsuitblack",9827,"clubsuitwhite",9831,"cmcubedsquare",13220,"cmonospace",65347,"cmsquaredsquare",13216,"coarmenian",1409,"colon",58,"colonmonetary",8353,"colonmonospace",65306,"colonsign",8353,"colonsmall",65109,"colontriangularhalfmod",721,"colontriangularmod",720,"comma",44,"commaabovecmb",787,"commaaboverightcmb",789,"commaaccent",63171,"commaarabic",1548,"commaarmenian",1373,"commainferior",63201,"commamonospace",65292,"commareversedabovecmb",788,"commareversedmod",701,"commasmall",65104,"commasuperior",63202,"commaturnedabovecmb",786,"commaturnedmod",699,"compass",9788,"congruent",8773,"contourintegral",8750,"control",8963,"controlACK",6,"controlBEL",7,"controlBS",8,"controlCAN",24,"controlCR",13,"controlDC1",17,"controlDC2",18,"controlDC3",19,"controlDC4",20,"controlDEL",127,"controlDLE",16,"controlEM",25,"controlENQ",5,"controlEOT",4,"controlESC",27,"controlETB",23,"controlETX",3,"controlFF",12,"controlFS",28,"controlGS",29,"controlHT",9,"controlLF",10,"controlNAK",21,"controlNULL",0,"controlRS",30,"controlSI",15,"controlSO",14,"controlSOT",2,"controlSTX",1,"controlSUB",26,"controlSYN",22,"controlUS",31,"controlVT",11,"copyright",169,"copyrightsans",63721,"copyrightserif",63193,"cornerbracketleft",12300,"cornerbracketlefthalfwidth",65378,"cornerbracketleftvertical",65089,"cornerbracketright",12301,"cornerbracketrighthalfwidth",65379,"cornerbracketrightvertical",65090,"corporationsquare",13183,"cosquare",13255,"coverkgsquare",13254,"cparen",9374,"cruzeiro",8354,"cstretched",663,"curlyand",8911,"curlyor",8910,"currency",164,"cyrBreve",63185,"cyrFlex",63186,"cyrbreve",63188,"cyrflex",63189,"d",100,"daarmenian",1380,"dabengali",2470,"dadarabic",1590,"dadeva",2342,"dadfinalarabic",65214,"dadinitialarabic",65215,"dadmedialarabic",65216,"dagesh",1468,"dageshhebrew",1468,"dagger",8224,"daggerdbl",8225,"dagujarati",2726,"dagurmukhi",2598,"dahiragana",12384,"dakatakana",12480,"dalarabic",1583,"dalet",1491,"daletdagesh",64307,"daletdageshhebrew",64307,"dalethebrew",1491,"dalfinalarabic",65194,"dammaarabic",1615,"dammalowarabic",1615,"dammatanaltonearabic",1612,"dammatanarabic",1612,"danda",2404,"dargahebrew",1447,"dargalefthebrew",1447,"dasiapneumatacyrilliccmb",1157,"dblGrave",63187,"dblanglebracketleft",12298,"dblanglebracketleftvertical",65085,"dblanglebracketright",12299,"dblanglebracketrightvertical",65086,"dblarchinvertedbelowcmb",811,"dblarrowleft",8660,"dblarrowright",8658,"dbldanda",2405,"dblgrave",63190,"dblgravecmb",783,"dblintegral",8748,"dbllowline",8215,"dbllowlinecmb",819,"dbloverlinecmb",831,"dblprimemod",698,"dblverticalbar",8214,"dblverticallineabovecmb",782,"dbopomofo",12553,"dbsquare",13256,"dcaron",271,"dcedilla",7697,"dcircle",9427,"dcircumflexbelow",7699,"dcroat",273,"ddabengali",2465,"ddadeva",2337,"ddagujarati",2721,"ddagurmukhi",2593,"ddalarabic",1672,"ddalfinalarabic",64393,"dddhadeva",2396,"ddhabengali",2466,"ddhadeva",2338,"ddhagujarati",2722,"ddhagurmukhi",2594,"ddotaccent",7691,"ddotbelow",7693,"decimalseparatorarabic",1643,"decimalseparatorpersian",1643,"decyrillic",1076,"degree",176,"dehihebrew",1453,"dehiragana",12391,"deicoptic",1007,"dekatakana",12487,"deleteleft",9003,"deleteright",8998,"delta",948,"deltaturned",397,"denominatorminusonenumeratorbengali",2552,"dezh",676,"dhabengali",2471,"dhadeva",2343,"dhagujarati",2727,"dhagurmukhi",2599,"dhook",599,"dialytikatonos",901,"dialytikatonoscmb",836,"diamond",9830,"diamondsuitwhite",9826,"dieresis",168,"dieresisacute",63191,"dieresisbelowcmb",804,"dieresiscmb",776,"dieresisgrave",63192,"dieresistonos",901,"dihiragana",12386,"dikatakana",12482,"dittomark",12291,"divide",247,"divides",8739,"divisionslash",8725,"djecyrillic",1106,"dkshade",9619,"dlinebelow",7695,"dlsquare",13207,"dmacron",273,"dmonospace",65348,"dnblock",9604,"dochadathai",3598,"dodekthai",3604,"dohiragana",12393,"dokatakana",12489,"dollar",36,"dollarinferior",63203,"dollarmonospace",65284,"dollaroldstyle",63268,"dollarsmall",65129,"dollarsuperior",63204,"dong",8363,"dorusquare",13094,"dotaccent",729,"dotaccentcmb",775,"dotbelowcmb",803,"dotbelowcomb",803,"dotkatakana",12539,"dotlessi",305,"dotlessj",63166,"dotlessjstrokehook",644,"dotmath",8901,"dottedcircle",9676,"doubleyodpatah",64287,"doubleyodpatahhebrew",64287,"downtackbelowcmb",798,"downtackmod",725,"dparen",9375,"dsuperior",63211,"dtail",598,"dtopbar",396,"duhiragana",12389,"dukatakana",12485,"dz",499,"dzaltone",675,"dzcaron",454,"dzcurl",677,"dzeabkhasiancyrillic",1249,"dzecyrillic",1109,"dzhecyrillic",1119,"e",101,"eacute",233,"earth",9793,"ebengali",2447,"ebopomofo",12572,"ebreve",277,"ecandradeva",2317,"ecandragujarati",2701,"ecandravowelsigndeva",2373,"ecandravowelsigngujarati",2757,"ecaron",283,"ecedillabreve",7709,"echarmenian",1381,"echyiwnarmenian",1415,"ecircle",9428,"ecircumflex",234,"ecircumflexacute",7871,"ecircumflexbelow",7705,"ecircumflexdotbelow",7879,"ecircumflexgrave",7873,"ecircumflexhookabove",7875,"ecircumflextilde",7877,"ecyrillic",1108,"edblgrave",517,"edeva",2319,"edieresis",235,"edot",279,"edotaccent",279,"edotbelow",7865,"eegurmukhi",2575,"eematragurmukhi",2631,"efcyrillic",1092,"egrave",232,"egujarati",2703,"eharmenian",1383,"ehbopomofo",12573,"ehiragana",12360,"ehookabove",7867,"eibopomofo",12575,"eight",56,"eightarabic",1640,"eightbengali",2542,"eightcircle",9319,"eightcircleinversesansserif",10129,"eightdeva",2414,"eighteencircle",9329,"eighteenparen",9349,"eighteenperiod",9369,"eightgujarati",2798,"eightgurmukhi",2670,"eighthackarabic",1640,"eighthangzhou",12328,"eighthnotebeamed",9835,"eightideographicparen",12839,"eightinferior",8328,"eightmonospace",65304,"eightoldstyle",63288,"eightparen",9339,"eightperiod",9359,"eightpersian",1784,"eightroman",8567,"eightsuperior",8312,"eightthai",3672,"einvertedbreve",519,"eiotifiedcyrillic",1125,"ekatakana",12456,"ekatakanahalfwidth",65396,"ekonkargurmukhi",2676,"ekorean",12628,"elcyrillic",1083,"element",8712,"elevencircle",9322,"elevenparen",9342,"elevenperiod",9362,"elevenroman",8570,"ellipsis",8230,"ellipsisvertical",8942,"emacron",275,"emacronacute",7703,"emacrongrave",7701,"emcyrillic",1084,"emdash",8212,"emdashvertical",65073,"emonospace",65349,"emphasismarkarmenian",1371,"emptyset",8709,"enbopomofo",12579,"encyrillic",1085,"endash",8211,"endashvertical",65074,"endescendercyrillic",1187,"eng",331,"engbopomofo",12581,"enghecyrillic",1189,"enhookcyrillic",1224,"enspace",8194,"eogonek",281,"eokorean",12627,"eopen",603,"eopenclosed",666,"eopenreversed",604,"eopenreversedclosed",606,"eopenreversedhook",605,"eparen",9376,"epsilon",949,"epsilontonos",941,"equal",61,"equalmonospace",65309,"equalsmall",65126,"equalsuperior",8316,"equivalence",8801,"erbopomofo",12582,"ercyrillic",1088,"ereversed",600,"ereversedcyrillic",1101,"escyrillic",1089,"esdescendercyrillic",1195,"esh",643,"eshcurl",646,"eshortdeva",2318,"eshortvowelsigndeva",2374,"eshreversedloop",426,"eshsquatreversed",645,"esmallhiragana",12359,"esmallkatakana",12455,"esmallkatakanahalfwidth",65386,"estimated",8494,"esuperior",63212,"eta",951,"etarmenian",1384,"etatonos",942,"eth",240,"etilde",7869,"etildebelow",7707,"etnahtafoukhhebrew",1425,"etnahtafoukhlefthebrew",1425,"etnahtahebrew",1425,"etnahtalefthebrew",1425,"eturned",477,"eukorean",12641,"euro",8364,"evowelsignbengali",2503,"evowelsigndeva",2375,"evowelsigngujarati",2759,"exclam",33,"exclamarmenian",1372,"exclamdbl",8252,"exclamdown",161,"exclamdownsmall",63393,"exclammonospace",65281,"exclamsmall",63265,"existential",8707,"ezh",658,"ezhcaron",495,"ezhcurl",659,"ezhreversed",441,"ezhtail",442,"f",102,"fadeva",2398,"fagurmukhi",2654,"fahrenheit",8457,"fathaarabic",1614,"fathalowarabic",1614,"fathatanarabic",1611,"fbopomofo",12552,"fcircle",9429,"fdotaccent",7711,"feharabic",1601,"feharmenian",1414,"fehfinalarabic",65234,"fehinitialarabic",65235,"fehmedialarabic",65236,"feicoptic",997,"female",9792,"ff",64256,"f_f",64256,"ffi",64259,"ffl",64260,"fi",64257,"fifteencircle",9326,"fifteenparen",9346,"fifteenperiod",9366,"figuredash",8210,"filledbox",9632,"filledrect",9644,"finalkaf",1498,"finalkafdagesh",64314,"finalkafdageshhebrew",64314,"finalkafhebrew",1498,"finalmem",1501,"finalmemhebrew",1501,"finalnun",1503,"finalnunhebrew",1503,"finalpe",1507,"finalpehebrew",1507,"finaltsadi",1509,"finaltsadihebrew",1509,"firsttonechinese",713,"fisheye",9673,"fitacyrillic",1139,"five",53,"fivearabic",1637,"fivebengali",2539,"fivecircle",9316,"fivecircleinversesansserif",10126,"fivedeva",2411,"fiveeighths",8541,"fivegujarati",2795,"fivegurmukhi",2667,"fivehackarabic",1637,"fivehangzhou",12325,"fiveideographicparen",12836,"fiveinferior",8325,"fivemonospace",65301,"fiveoldstyle",63285,"fiveparen",9336,"fiveperiod",9356,"fivepersian",1781,"fiveroman",8564,"fivesuperior",8309,"fivethai",3669,"fl",64258,"florin",402,"fmonospace",65350,"fmsquare",13209,"fofanthai",3615,"fofathai",3613,"fongmanthai",3663,"forall",8704,"four",52,"fourarabic",1636,"fourbengali",2538,"fourcircle",9315,"fourcircleinversesansserif",10125,"fourdeva",2410,"fourgujarati",2794,"fourgurmukhi",2666,"fourhackarabic",1636,"fourhangzhou",12324,"fourideographicparen",12835,"fourinferior",8324,"fourmonospace",65300,"fournumeratorbengali",2551,"fouroldstyle",63284,"fourparen",9335,"fourperiod",9355,"fourpersian",1780,"fourroman",8563,"foursuperior",8308,"fourteencircle",9325,"fourteenparen",9345,"fourteenperiod",9365,"fourthai",3668,"fourthtonechinese",715,"fparen",9377,"fraction",8260,"franc",8355,"g",103,"gabengali",2455,"gacute",501,"gadeva",2327,"gafarabic",1711,"gaffinalarabic",64403,"gafinitialarabic",64404,"gafmedialarabic",64405,"gagujarati",2711,"gagurmukhi",2583,"gahiragana",12364,"gakatakana",12460,"gamma",947,"gammalatinsmall",611,"gammasuperior",736,"gangiacoptic",1003,"gbopomofo",12557,"gbreve",287,"gcaron",487,"gcedilla",291,"gcircle",9430,"gcircumflex",285,"gcommaaccent",291,"gdot",289,"gdotaccent",289,"gecyrillic",1075,"gehiragana",12370,"gekatakana",12466,"geometricallyequal",8785,"gereshaccenthebrew",1436,"gereshhebrew",1523,"gereshmuqdamhebrew",1437,"germandbls",223,"gershayimaccenthebrew",1438,"gershayimhebrew",1524,"getamark",12307,"ghabengali",2456,"ghadarmenian",1394,"ghadeva",2328,"ghagujarati",2712,"ghagurmukhi",2584,"ghainarabic",1594,"ghainfinalarabic",65230,"ghaininitialarabic",65231,"ghainmedialarabic",65232,"ghemiddlehookcyrillic",1173,"ghestrokecyrillic",1171,"gheupturncyrillic",1169,"ghhadeva",2394,"ghhagurmukhi",2650,"ghook",608,"ghzsquare",13203,"gihiragana",12366,"gikatakana",12462,"gimarmenian",1379,"gimel",1490,"gimeldagesh",64306,"gimeldageshhebrew",64306,"gimelhebrew",1490,"gjecyrillic",1107,"glottalinvertedstroke",446,"glottalstop",660,"glottalstopinverted",662,"glottalstopmod",704,"glottalstopreversed",661,"glottalstopreversedmod",705,"glottalstopreversedsuperior",740,"glottalstopstroke",673,"glottalstopstrokereversed",674,"gmacron",7713,"gmonospace",65351,"gohiragana",12372,"gokatakana",12468,"gparen",9378,"gpasquare",13228,"gradient",8711,"grave",96,"gravebelowcmb",790,"gravecmb",768,"gravecomb",768,"gravedeva",2387,"gravelowmod",718,"gravemonospace",65344,"gravetonecmb",832,"greater",62,"greaterequal",8805,"greaterequalorless",8923,"greatermonospace",65310,"greaterorequivalent",8819,"greaterorless",8823,"greateroverequal",8807,"greatersmall",65125,"gscript",609,"gstroke",485,"guhiragana",12368,"guillemotleft",171,"guillemotright",187,"guilsinglleft",8249,"guilsinglright",8250,"gukatakana",12464,"guramusquare",13080,"gysquare",13257,"h",104,"haabkhasiancyrillic",1193,"haaltonearabic",1729,"habengali",2489,"hadescendercyrillic",1203,"hadeva",2361,"hagujarati",2745,"hagurmukhi",2617,"haharabic",1581,"hahfinalarabic",65186,"hahinitialarabic",65187,"hahiragana",12399,"hahmedialarabic",65188,"haitusquare",13098,"hakatakana",12495,"hakatakanahalfwidth",65418,"halantgurmukhi",2637,"hamzaarabic",1569,"hamzalowarabic",1569,"hangulfiller",12644,"hardsigncyrillic",1098,"harpoonleftbarbup",8636,"harpoonrightbarbup",8640,"hasquare",13258,"hatafpatah",1458,"hatafpatah16",1458,"hatafpatah23",1458,"hatafpatah2f",1458,"hatafpatahhebrew",1458,"hatafpatahnarrowhebrew",1458,"hatafpatahquarterhebrew",1458,"hatafpatahwidehebrew",1458,"hatafqamats",1459,"hatafqamats1b",1459,"hatafqamats28",1459,"hatafqamats34",1459,"hatafqamatshebrew",1459,"hatafqamatsnarrowhebrew",1459,"hatafqamatsquarterhebrew",1459,"hatafqamatswidehebrew",1459,"hatafsegol",1457,"hatafsegol17",1457,"hatafsegol24",1457,"hatafsegol30",1457,"hatafsegolhebrew",1457,"hatafsegolnarrowhebrew",1457,"hatafsegolquarterhebrew",1457,"hatafsegolwidehebrew",1457,"hbar",295,"hbopomofo",12559,"hbrevebelow",7723,"hcedilla",7721,"hcircle",9431,"hcircumflex",293,"hdieresis",7719,"hdotaccent",7715,"hdotbelow",7717,"he",1492,"heart",9829,"heartsuitblack",9829,"heartsuitwhite",9825,"hedagesh",64308,"hedageshhebrew",64308,"hehaltonearabic",1729,"heharabic",1607,"hehebrew",1492,"hehfinalaltonearabic",64423,"hehfinalalttwoarabic",65258,"hehfinalarabic",65258,"hehhamzaabovefinalarabic",64421,"hehhamzaaboveisolatedarabic",64420,"hehinitialaltonearabic",64424,"hehinitialarabic",65259,"hehiragana",12408,"hehmedialaltonearabic",64425,"hehmedialarabic",65260,"heiseierasquare",13179,"hekatakana",12504,"hekatakanahalfwidth",65421,"hekutaarusquare",13110,"henghook",615,"herutusquare",13113,"het",1495,"hethebrew",1495,"hhook",614,"hhooksuperior",689,"hieuhacirclekorean",12923,"hieuhaparenkorean",12827,"hieuhcirclekorean",12909,"hieuhkorean",12622,"hieuhparenkorean",12813,"hihiragana",12402,"hikatakana",12498,"hikatakanahalfwidth",65419,"hiriq",1460,"hiriq14",1460,"hiriq21",1460,"hiriq2d",1460,"hiriqhebrew",1460,"hiriqnarrowhebrew",1460,"hiriqquarterhebrew",1460,"hiriqwidehebrew",1460,"hlinebelow",7830,"hmonospace",65352,"hoarmenian",1392,"hohipthai",3627,"hohiragana",12411,"hokatakana",12507,"hokatakanahalfwidth",65422,"holam",1465,"holam19",1465,"holam26",1465,"holam32",1465,"holamhebrew",1465,"holamnarrowhebrew",1465,"holamquarterhebrew",1465,"holamwidehebrew",1465,"honokhukthai",3630,"hookabovecomb",777,"hookcmb",777,"hookpalatalizedbelowcmb",801,"hookretroflexbelowcmb",802,"hoonsquare",13122,"horicoptic",1001,"horizontalbar",8213,"horncmb",795,"hotsprings",9832,"house",8962,"hparen",9379,"hsuperior",688,"hturned",613,"huhiragana",12405,"huiitosquare",13107,"hukatakana",12501,"hukatakanahalfwidth",65420,"hungarumlaut",733,"hungarumlautcmb",779,"hv",405,"hyphen",45,"hypheninferior",63205,"hyphenmonospace",65293,"hyphensmall",65123,"hyphensuperior",63206,"hyphentwo",8208,"i",105,"iacute",237,"iacyrillic",1103,"ibengali",2439,"ibopomofo",12583,"ibreve",301,"icaron",464,"icircle",9432,"icircumflex",238,"icyrillic",1110,"idblgrave",521,"ideographearthcircle",12943,"ideographfirecircle",12939,"ideographicallianceparen",12863,"ideographiccallparen",12858,"ideographiccentrecircle",12965,"ideographicclose",12294,"ideographiccomma",12289,"ideographiccommaleft",65380,"ideographiccongratulationparen",12855,"ideographiccorrectcircle",12963,"ideographicearthparen",12847,"ideographicenterpriseparen",12861,"ideographicexcellentcircle",12957,"ideographicfestivalparen",12864,"ideographicfinancialcircle",12950,"ideographicfinancialparen",12854,"ideographicfireparen",12843,"ideographichaveparen",12850,"ideographichighcircle",12964,"ideographiciterationmark",12293,"ideographiclaborcircle",12952,"ideographiclaborparen",12856,"ideographicleftcircle",12967,"ideographiclowcircle",12966,"ideographicmedicinecircle",12969,"ideographicmetalparen",12846,"ideographicmoonparen",12842,"ideographicnameparen",12852,"ideographicperiod",12290,"ideographicprintcircle",12958,"ideographicreachparen",12867,"ideographicrepresentparen",12857,"ideographicresourceparen",12862,"ideographicrightcircle",12968,"ideographicsecretcircle",12953,"ideographicselfparen",12866,"ideographicsocietyparen",12851,"ideographicspace",12288,"ideographicspecialparen",12853,"ideographicstockparen",12849,"ideographicstudyparen",12859,"ideographicsunparen",12848,"ideographicsuperviseparen",12860,"ideographicwaterparen",12844,"ideographicwoodparen",12845,"ideographiczero",12295,"ideographmetalcircle",12942,"ideographmooncircle",12938,"ideographnamecircle",12948,"ideographsuncircle",12944,"ideographwatercircle",12940,"ideographwoodcircle",12941,"ideva",2311,"idieresis",239,"idieresisacute",7727,"idieresiscyrillic",1253,"idotbelow",7883,"iebrevecyrillic",1239,"iecyrillic",1077,"ieungacirclekorean",12917,"ieungaparenkorean",12821,"ieungcirclekorean",12903,"ieungkorean",12615,"ieungparenkorean",12807,"igrave",236,"igujarati",2695,"igurmukhi",2567,"ihiragana",12356,"ihookabove",7881,"iibengali",2440,"iicyrillic",1080,"iideva",2312,"iigujarati",2696,"iigurmukhi",2568,"iimatragurmukhi",2624,"iinvertedbreve",523,"iishortcyrillic",1081,"iivowelsignbengali",2496,"iivowelsigndeva",2368,"iivowelsigngujarati",2752,"ij",307,"ikatakana",12452,"ikatakanahalfwidth",65394,"ikorean",12643,"ilde",732,"iluyhebrew",1452,"imacron",299,"imacroncyrillic",1251,"imageorapproximatelyequal",8787,"imatragurmukhi",2623,"imonospace",65353,"increment",8710,"infinity",8734,"iniarmenian",1387,"integral",8747,"integralbottom",8993,"integralbt",8993,"integralex",63733,"integraltop",8992,"integraltp",8992,"intersection",8745,"intisquare",13061,"invbullet",9688,"invcircle",9689,"invsmileface",9787,"iocyrillic",1105,"iogonek",303,"iota",953,"iotadieresis",970,"iotadieresistonos",912,"iotalatin",617,"iotatonos",943,"iparen",9380,"irigurmukhi",2674,"ismallhiragana",12355,"ismallkatakana",12451,"ismallkatakanahalfwidth",65384,"issharbengali",2554,"istroke",616,"isuperior",63213,"iterationhiragana",12445,"iterationkatakana",12541,"itilde",297,"itildebelow",7725,"iubopomofo",12585,"iucyrillic",1102,"ivowelsignbengali",2495,"ivowelsigndeva",2367,"ivowelsigngujarati",2751,"izhitsacyrillic",1141,"izhitsadblgravecyrillic",1143,"j",106,"jaarmenian",1393,"jabengali",2460,"jadeva",2332,"jagujarati",2716,"jagurmukhi",2588,"jbopomofo",12560,"jcaron",496,"jcircle",9433,"jcircumflex",309,"jcrossedtail",669,"jdotlessstroke",607,"jecyrillic",1112,"jeemarabic",1580,"jeemfinalarabic",65182,"jeeminitialarabic",65183,"jeemmedialarabic",65184,"jeharabic",1688,"jehfinalarabic",64395,"jhabengali",2461,"jhadeva",2333,"jhagujarati",2717,"jhagurmukhi",2589,"jheharmenian",1403,"jis",12292,"jmonospace",65354,"jparen",9381,"jsuperior",690,"k",107,"kabashkircyrillic",1185,"kabengali",2453,"kacute",7729,"kacyrillic",1082,"kadescendercyrillic",1179,"kadeva",2325,"kaf",1499,"kafarabic",1603,"kafdagesh",64315,"kafdageshhebrew",64315,"kaffinalarabic",65242,"kafhebrew",1499,"kafinitialarabic",65243,"kafmedialarabic",65244,"kafrafehebrew",64333,"kagujarati",2709,"kagurmukhi",2581,"kahiragana",12363,"kahookcyrillic",1220,"kakatakana",12459,"kakatakanahalfwidth",65398,"kappa",954,"kappasymbolgreek",1008,"kapyeounmieumkorean",12657,"kapyeounphieuphkorean",12676,"kapyeounpieupkorean",12664,"kapyeounssangpieupkorean",12665,"karoriisquare",13069,"kashidaautoarabic",1600,"kashidaautonosidebearingarabic",1600,"kasmallkatakana",12533,"kasquare",13188,"kasraarabic",1616,"kasratanarabic",1613,"kastrokecyrillic",1183,"katahiraprolongmarkhalfwidth",65392,"kaverticalstrokecyrillic",1181,"kbopomofo",12558,"kcalsquare",13193,"kcaron",489,"kcedilla",311,"kcircle",9434,"kcommaaccent",311,"kdotbelow",7731,"keharmenian",1412,"kehiragana",12369,"kekatakana",12465,"kekatakanahalfwidth",65401,"kenarmenian",1391,"kesmallkatakana",12534,"kgreenlandic",312,"khabengali",2454,"khacyrillic",1093,"khadeva",2326,"khagujarati",2710,"khagurmukhi",2582,"khaharabic",1582,"khahfinalarabic",65190,"khahinitialarabic",65191,"khahmedialarabic",65192,"kheicoptic",999,"khhadeva",2393,"khhagurmukhi",2649,"khieukhacirclekorean",12920,"khieukhaparenkorean",12824,"khieukhcirclekorean",12906,"khieukhkorean",12619,"khieukhparenkorean",12810,"khokhaithai",3586,"khokhonthai",3589,"khokhuatthai",3587,"khokhwaithai",3588,"khomutthai",3675,"khook",409,"khorakhangthai",3590,"khzsquare",13201,"kihiragana",12365,"kikatakana",12461,"kikatakanahalfwidth",65399,"kiroguramusquare",13077,"kiromeetorusquare",13078,"kirosquare",13076,"kiyeokacirclekorean",12910,"kiyeokaparenkorean",12814,"kiyeokcirclekorean",12896,"kiyeokkorean",12593,"kiyeokparenkorean",12800,"kiyeoksioskorean",12595,"kjecyrillic",1116,"klinebelow",7733,"klsquare",13208,"kmcubedsquare",13222,"kmonospace",65355,"kmsquaredsquare",13218,"kohiragana",12371,"kohmsquare",13248,"kokaithai",3585,"kokatakana",12467,"kokatakanahalfwidth",65402,"kooposquare",13086,"koppacyrillic",1153,"koreanstandardsymbol",12927,"koroniscmb",835,"kparen",9382,"kpasquare",13226,"ksicyrillic",1135,"ktsquare",13263,"kturned",670,"kuhiragana",12367,"kukatakana",12463,"kukatakanahalfwidth",65400,"kvsquare",13240,"kwsquare",13246,"l",108,"labengali",2482,"lacute",314,"ladeva",2354,"lagujarati",2738,"lagurmukhi",2610,"lakkhangyaothai",3653,"lamaleffinalarabic",65276,"lamalefhamzaabovefinalarabic",65272,"lamalefhamzaaboveisolatedarabic",65271,"lamalefhamzabelowfinalarabic",65274,"lamalefhamzabelowisolatedarabic",65273,"lamalefisolatedarabic",65275,"lamalefmaddaabovefinalarabic",65270,"lamalefmaddaaboveisolatedarabic",65269,"lamarabic",1604,"lambda",955,"lambdastroke",411,"lamed",1500,"lameddagesh",64316,"lameddageshhebrew",64316,"lamedhebrew",1500,"lamfinalarabic",65246,"lamhahinitialarabic",64714,"laminitialarabic",65247,"lamjeeminitialarabic",64713,"lamkhahinitialarabic",64715,"lamlamhehisolatedarabic",65010,"lammedialarabic",65248,"lammeemhahinitialarabic",64904,"lammeeminitialarabic",64716,"largecircle",9711,"lbar",410,"lbelt",620,"lbopomofo",12556,"lcaron",318,"lcedilla",316,"lcircle",9435,"lcircumflexbelow",7741,"lcommaaccent",316,"ldot",320,"ldotaccent",320,"ldotbelow",7735,"ldotbelowmacron",7737,"leftangleabovecmb",794,"lefttackbelowcmb",792,"less",60,"lessequal",8804,"lessequalorgreater",8922,"lessmonospace",65308,"lessorequivalent",8818,"lessorgreater",8822,"lessoverequal",8806,"lesssmall",65124,"lezh",622,"lfblock",9612,"lhookretroflex",621,"lira",8356,"liwnarmenian",1388,"lj",457,"ljecyrillic",1113,"ll",63168,"lladeva",2355,"llagujarati",2739,"llinebelow",7739,"llladeva",2356,"llvocalicbengali",2529,"llvocalicdeva",2401,"llvocalicvowelsignbengali",2531,"llvocalicvowelsigndeva",2403,"lmiddletilde",619,"lmonospace",65356,"lmsquare",13264,"lochulathai",3628,"logicaland",8743,"logicalnot",172,"logicalnotreversed",8976,"logicalor",8744,"lolingthai",3621,"longs",383,"lowlinecenterline",65102,"lowlinecmb",818,"lowlinedashed",65101,"lozenge",9674,"lparen",9383,"lslash",322,"lsquare",8467,"lsuperior",63214,"ltshade",9617,"luthai",3622,"lvocalicbengali",2444,"lvocalicdeva",2316,"lvocalicvowelsignbengali",2530,"lvocalicvowelsigndeva",2402,"lxsquare",13267,"m",109,"mabengali",2478,"macron",175,"macronbelowcmb",817,"macroncmb",772,"macronlowmod",717,"macronmonospace",65507,"macute",7743,"madeva",2350,"magujarati",2734,"magurmukhi",2606,"mahapakhhebrew",1444,"mahapakhlefthebrew",1444,"mahiragana",12414,"maichattawalowleftthai",63637,"maichattawalowrightthai",63636,"maichattawathai",3659,"maichattawaupperleftthai",63635,"maieklowleftthai",63628,"maieklowrightthai",63627,"maiekthai",3656,"maiekupperleftthai",63626,"maihanakatleftthai",63620,"maihanakatthai",3633,"maitaikhuleftthai",63625,"maitaikhuthai",3655,"maitholowleftthai",63631,"maitholowrightthai",63630,"maithothai",3657,"maithoupperleftthai",63629,"maitrilowleftthai",63634,"maitrilowrightthai",63633,"maitrithai",3658,"maitriupperleftthai",63632,"maiyamokthai",3654,"makatakana",12510,"makatakanahalfwidth",65423,"male",9794,"mansyonsquare",13127,"maqafhebrew",1470,"mars",9794,"masoracirclehebrew",1455,"masquare",13187,"mbopomofo",12551,"mbsquare",13268,"mcircle",9436,"mcubedsquare",13221,"mdotaccent",7745,"mdotbelow",7747,"meemarabic",1605,"meemfinalarabic",65250,"meeminitialarabic",65251,"meemmedialarabic",65252,"meemmeeminitialarabic",64721,"meemmeemisolatedarabic",64584,"meetorusquare",13133,"mehiragana",12417,"meizierasquare",13182,"mekatakana",12513,"mekatakanahalfwidth",65426,"mem",1502,"memdagesh",64318,"memdageshhebrew",64318,"memhebrew",1502,"menarmenian",1396,"merkhahebrew",1445,"merkhakefulahebrew",1446,"merkhakefulalefthebrew",1446,"merkhalefthebrew",1445,"mhook",625,"mhzsquare",13202,"middledotkatakanahalfwidth",65381,"middot",183,"mieumacirclekorean",12914,"mieumaparenkorean",12818,"mieumcirclekorean",12900,"mieumkorean",12609,"mieumpansioskorean",12656,"mieumparenkorean",12804,"mieumpieupkorean",12654,"mieumsioskorean",12655,"mihiragana",12415,"mikatakana",12511,"mikatakanahalfwidth",65424,"minus",8722,"minusbelowcmb",800,"minuscircle",8854,"minusmod",727,"minusplus",8723,"minute",8242,"miribaarusquare",13130,"mirisquare",13129,"mlonglegturned",624,"mlsquare",13206,"mmcubedsquare",13219,"mmonospace",65357,"mmsquaredsquare",13215,"mohiragana",12418,"mohmsquare",13249,"mokatakana",12514,"mokatakanahalfwidth",65427,"molsquare",13270,"momathai",3617,"moverssquare",13223,"moverssquaredsquare",13224,"mparen",9384,"mpasquare",13227,"mssquare",13235,"msuperior",63215,"mturned",623,"mu",181,"mu1",181,"muasquare",13186,"muchgreater",8811,"muchless",8810,"mufsquare",13196,"mugreek",956,"mugsquare",13197,"muhiragana",12416,"mukatakana",12512,"mukatakanahalfwidth",65425,"mulsquare",13205,"multiply",215,"mumsquare",13211,"munahhebrew",1443,"munahlefthebrew",1443,"musicalnote",9834,"musicalnotedbl",9835,"musicflatsign",9837,"musicsharpsign",9839,"mussquare",13234,"muvsquare",13238,"muwsquare",13244,"mvmegasquare",13241,"mvsquare",13239,"mwmegasquare",13247,"mwsquare",13245,"n",110,"nabengali",2472,"nabla",8711,"nacute",324,"nadeva",2344,"nagujarati",2728,"nagurmukhi",2600,"nahiragana",12394,"nakatakana",12490,"nakatakanahalfwidth",65413,"napostrophe",329,"nasquare",13185,"nbopomofo",12555,"nbspace",160,"ncaron",328,"ncedilla",326,"ncircle",9437,"ncircumflexbelow",7755,"ncommaaccent",326,"ndotaccent",7749,"ndotbelow",7751,"nehiragana",12397,"nekatakana",12493,"nekatakanahalfwidth",65416,"newsheqelsign",8362,"nfsquare",13195,"ngabengali",2457,"ngadeva",2329,"ngagujarati",2713,"ngagurmukhi",2585,"ngonguthai",3591,"nhiragana",12435,"nhookleft",626,"nhookretroflex",627,"nieunacirclekorean",12911,"nieunaparenkorean",12815,"nieuncieuckorean",12597,"nieuncirclekorean",12897,"nieunhieuhkorean",12598,"nieunkorean",12596,"nieunpansioskorean",12648,"nieunparenkorean",12801,"nieunsioskorean",12647,"nieuntikeutkorean",12646,"nihiragana",12395,"nikatakana",12491,"nikatakanahalfwidth",65414,"nikhahitleftthai",63641,"nikhahitthai",3661,"nine",57,"ninearabic",1641,"ninebengali",2543,"ninecircle",9320,"ninecircleinversesansserif",10130,"ninedeva",2415,"ninegujarati",2799,"ninegurmukhi",2671,"ninehackarabic",1641,"ninehangzhou",12329,"nineideographicparen",12840,"nineinferior",8329,"ninemonospace",65305,"nineoldstyle",63289,"nineparen",9340,"nineperiod",9360,"ninepersian",1785,"nineroman",8568,"ninesuperior",8313,"nineteencircle",9330,"nineteenparen",9350,"nineteenperiod",9370,"ninethai",3673,"nj",460,"njecyrillic",1114,"nkatakana",12531,"nkatakanahalfwidth",65437,"nlegrightlong",414,"nlinebelow",7753,"nmonospace",65358,"nmsquare",13210,"nnabengali",2467,"nnadeva",2339,"nnagujarati",2723,"nnagurmukhi",2595,"nnnadeva",2345,"nohiragana",12398,"nokatakana",12494,"nokatakanahalfwidth",65417,"nonbreakingspace",160,"nonenthai",3603,"nonuthai",3609,"noonarabic",1606,"noonfinalarabic",65254,"noonghunnaarabic",1722,"noonghunnafinalarabic",64415,"nooninitialarabic",65255,"noonjeeminitialarabic",64722,"noonjeemisolatedarabic",64587,"noonmedialarabic",65256,"noonmeeminitialarabic",64725,"noonmeemisolatedarabic",64590,"noonnoonfinalarabic",64653,"notcontains",8716,"notelement",8713,"notelementof",8713,"notequal",8800,"notgreater",8815,"notgreaternorequal",8817,"notgreaternorless",8825,"notidentical",8802,"notless",8814,"notlessnorequal",8816,"notparallel",8742,"notprecedes",8832,"notsubset",8836,"notsucceeds",8833,"notsuperset",8837,"nowarmenian",1398,"nparen",9385,"nssquare",13233,"nsuperior",8319,"ntilde",241,"nu",957,"nuhiragana",12396,"nukatakana",12492,"nukatakanahalfwidth",65415,"nuktabengali",2492,"nuktadeva",2364,"nuktagujarati",2748,"nuktagurmukhi",2620,"numbersign",35,"numbersignmonospace",65283,"numbersignsmall",65119,"numeralsigngreek",884,"numeralsignlowergreek",885,"numero",8470,"nun",1504,"nundagesh",64320,"nundageshhebrew",64320,"nunhebrew",1504,"nvsquare",13237,"nwsquare",13243,"nyabengali",2462,"nyadeva",2334,"nyagujarati",2718,"nyagurmukhi",2590,"o",111,"oacute",243,"oangthai",3629,"obarred",629,"obarredcyrillic",1257,"obarreddieresiscyrillic",1259,"obengali",2451,"obopomofo",12571,"obreve",335,"ocandradeva",2321,"ocandragujarati",2705,"ocandravowelsigndeva",2377,"ocandravowelsigngujarati",2761,"ocaron",466,"ocircle",9438,"ocircumflex",244,"ocircumflexacute",7889,"ocircumflexdotbelow",7897,"ocircumflexgrave",7891,"ocircumflexhookabove",7893,"ocircumflextilde",7895,"ocyrillic",1086,"odblacute",337,"odblgrave",525,"odeva",2323,"odieresis",246,"odieresiscyrillic",1255,"odotbelow",7885,"oe",339,"oekorean",12634,"ogonek",731,"ogonekcmb",808,"ograve",242,"ogujarati",2707,"oharmenian",1413,"ohiragana",12362,"ohookabove",7887,"ohorn",417,"ohornacute",7899,"ohorndotbelow",7907,"ohorngrave",7901,"ohornhookabove",7903,"ohorntilde",7905,"ohungarumlaut",337,"oi",419,"oinvertedbreve",527,"okatakana",12458,"okatakanahalfwidth",65397,"okorean",12631,"olehebrew",1451,"omacron",333,"omacronacute",7763,"omacrongrave",7761,"omdeva",2384,"omega",969,"omega1",982,"omegacyrillic",1121,"omegalatinclosed",631,"omegaroundcyrillic",1147,"omegatitlocyrillic",1149,"omegatonos",974,"omgujarati",2768,"omicron",959,"omicrontonos",972,"omonospace",65359,"one",49,"onearabic",1633,"onebengali",2535,"onecircle",9312,"onecircleinversesansserif",10122,"onedeva",2407,"onedotenleader",8228,"oneeighth",8539,"onefitted",63196,"onegujarati",2791,"onegurmukhi",2663,"onehackarabic",1633,"onehalf",189,"onehangzhou",12321,"oneideographicparen",12832,"oneinferior",8321,"onemonospace",65297,"onenumeratorbengali",2548,"oneoldstyle",63281,"oneparen",9332,"oneperiod",9352,"onepersian",1777,"onequarter",188,"oneroman",8560,"onesuperior",185,"onethai",3665,"onethird",8531,"oogonek",491,"oogonekmacron",493,"oogurmukhi",2579,"oomatragurmukhi",2635,"oopen",596,"oparen",9386,"openbullet",9702,"option",8997,"ordfeminine",170,"ordmasculine",186,"orthogonal",8735,"oshortdeva",2322,"oshortvowelsigndeva",2378,"oslash",248,"oslashacute",511,"osmallhiragana",12361,"osmallkatakana",12457,"osmallkatakanahalfwidth",65387,"ostrokeacute",511,"osuperior",63216,"otcyrillic",1151,"otilde",245,"otildeacute",7757,"otildedieresis",7759,"oubopomofo",12577,"overline",8254,"overlinecenterline",65098,"overlinecmb",773,"overlinedashed",65097,"overlinedblwavy",65100,"overlinewavy",65099,"overscore",175,"ovowelsignbengali",2507,"ovowelsigndeva",2379,"ovowelsigngujarati",2763,"p",112,"paampssquare",13184,"paasentosquare",13099,"pabengali",2474,"pacute",7765,"padeva",2346,"pagedown",8671,"pageup",8670,"pagujarati",2730,"pagurmukhi",2602,"pahiragana",12401,"paiyannoithai",3631,"pakatakana",12497,"palatalizationcyrilliccmb",1156,"palochkacyrillic",1216,"pansioskorean",12671,"paragraph",182,"parallel",8741,"parenleft",40,"parenleftaltonearabic",64830,"parenleftbt",63725,"parenleftex",63724,"parenleftinferior",8333,"parenleftmonospace",65288,"parenleftsmall",65113,"parenleftsuperior",8317,"parenlefttp",63723,"parenleftvertical",65077,"parenright",41,"parenrightaltonearabic",64831,"parenrightbt",63736,"parenrightex",63735,"parenrightinferior",8334,"parenrightmonospace",65289,"parenrightsmall",65114,"parenrightsuperior",8318,"parenrighttp",63734,"parenrightvertical",65078,"partialdiff",8706,"paseqhebrew",1472,"pashtahebrew",1433,"pasquare",13225,"patah",1463,"patah11",1463,"patah1d",1463,"patah2a",1463,"patahhebrew",1463,"patahnarrowhebrew",1463,"patahquarterhebrew",1463,"patahwidehebrew",1463,"pazerhebrew",1441,"pbopomofo",12550,"pcircle",9439,"pdotaccent",7767,"pe",1508,"pecyrillic",1087,"pedagesh",64324,"pedageshhebrew",64324,"peezisquare",13115,"pefinaldageshhebrew",64323,"peharabic",1662,"peharmenian",1402,"pehebrew",1508,"pehfinalarabic",64343,"pehinitialarabic",64344,"pehiragana",12410,"pehmedialarabic",64345,"pekatakana",12506,"pemiddlehookcyrillic",1191,"perafehebrew",64334,"percent",37,"percentarabic",1642,"percentmonospace",65285,"percentsmall",65130,"period",46,"periodarmenian",1417,"periodcentered",183,"periodhalfwidth",65377,"periodinferior",63207,"periodmonospace",65294,"periodsmall",65106,"periodsuperior",63208,"perispomenigreekcmb",834,"perpendicular",8869,"perthousand",8240,"peseta",8359,"pfsquare",13194,"phabengali",2475,"phadeva",2347,"phagujarati",2731,"phagurmukhi",2603,"phi",966,"phi1",981,"phieuphacirclekorean",12922,"phieuphaparenkorean",12826,"phieuphcirclekorean",12908,"phieuphkorean",12621,"phieuphparenkorean",12812,"philatin",632,"phinthuthai",3642,"phisymbolgreek",981,"phook",421,"phophanthai",3614,"phophungthai",3612,"phosamphaothai",3616,"pi",960,"pieupacirclekorean",12915,"pieupaparenkorean",12819,"pieupcieuckorean",12662,"pieupcirclekorean",12901,"pieupkiyeokkorean",12658,"pieupkorean",12610,"pieupparenkorean",12805,"pieupsioskiyeokkorean",12660,"pieupsioskorean",12612,"pieupsiostikeutkorean",12661,"pieupthieuthkorean",12663,"pieuptikeutkorean",12659,"pihiragana",12404,"pikatakana",12500,"pisymbolgreek",982,"piwrarmenian",1411,"plus",43,"plusbelowcmb",799,"pluscircle",8853,"plusminus",177,"plusmod",726,"plusmonospace",65291,"plussmall",65122,"plussuperior",8314,"pmonospace",65360,"pmsquare",13272,"pohiragana",12413,"pointingindexdownwhite",9759,"pointingindexleftwhite",9756,"pointingindexrightwhite",9758,"pointingindexupwhite",9757,"pokatakana",12509,"poplathai",3611,"postalmark",12306,"postalmarkface",12320,"pparen",9387,"precedes",8826,"prescription",8478,"primemod",697,"primereversed",8245,"product",8719,"projective",8965,"prolongedkana",12540,"propellor",8984,"propersubset",8834,"propersuperset",8835,"proportion",8759,"proportional",8733,"psi",968,"psicyrillic",1137,"psilipneumatacyrilliccmb",1158,"pssquare",13232,"puhiragana",12407,"pukatakana",12503,"pvsquare",13236,"pwsquare",13242,"q",113,"qadeva",2392,"qadmahebrew",1448,"qafarabic",1602,"qaffinalarabic",65238,"qafinitialarabic",65239,"qafmedialarabic",65240,"qamats",1464,"qamats10",1464,"qamats1a",1464,"qamats1c",1464,"qamats27",1464,"qamats29",1464,"qamats33",1464,"qamatsde",1464,"qamatshebrew",1464,"qamatsnarrowhebrew",1464,"qamatsqatanhebrew",1464,"qamatsqatannarrowhebrew",1464,"qamatsqatanquarterhebrew",1464,"qamatsqatanwidehebrew",1464,"qamatsquarterhebrew",1464,"qamatswidehebrew",1464,"qarneyparahebrew",1439,"qbopomofo",12561,"qcircle",9440,"qhook",672,"qmonospace",65361,"qof",1511,"qofdagesh",64327,"qofdageshhebrew",64327,"qofhebrew",1511,"qparen",9388,"quarternote",9833,"qubuts",1467,"qubuts18",1467,"qubuts25",1467,"qubuts31",1467,"qubutshebrew",1467,"qubutsnarrowhebrew",1467,"qubutsquarterhebrew",1467,"qubutswidehebrew",1467,"question",63,"questionarabic",1567,"questionarmenian",1374,"questiondown",191,"questiondownsmall",63423,"questiongreek",894,"questionmonospace",65311,"questionsmall",63295,"quotedbl",34,"quotedblbase",8222,"quotedblleft",8220,"quotedblmonospace",65282,"quotedblprime",12318,"quotedblprimereversed",12317,"quotedblright",8221,"quoteleft",8216,"quoteleftreversed",8219,"quotereversed",8219,"quoteright",8217,"quoterightn",329,"quotesinglbase",8218,"quotesingle",39,"quotesinglemonospace",65287,"r",114,"raarmenian",1404,"rabengali",2480,"racute",341,"radeva",2352,"radical",8730,"radicalex",63717,"radoverssquare",13230,"radoverssquaredsquare",13231,"radsquare",13229,"rafe",1471,"rafehebrew",1471,"ragujarati",2736,"ragurmukhi",2608,"rahiragana",12425,"rakatakana",12521,"rakatakanahalfwidth",65431,"ralowerdiagonalbengali",2545,"ramiddlediagonalbengali",2544,"ramshorn",612,"ratio",8758,"rbopomofo",12566,"rcaron",345,"rcedilla",343,"rcircle",9441,"rcommaaccent",343,"rdblgrave",529,"rdotaccent",7769,"rdotbelow",7771,"rdotbelowmacron",7773,"referencemark",8251,"reflexsubset",8838,"reflexsuperset",8839,"registered",174,"registersans",63720,"registerserif",63194,"reharabic",1585,"reharmenian",1408,"rehfinalarabic",65198,"rehiragana",12428,"rekatakana",12524,"rekatakanahalfwidth",65434,"resh",1512,"reshdageshhebrew",64328,"reshhebrew",1512,"reversedtilde",8765,"reviahebrew",1431,"reviamugrashhebrew",1431,"revlogicalnot",8976,"rfishhook",638,"rfishhookreversed",639,"rhabengali",2525,"rhadeva",2397,"rho",961,"rhook",637,"rhookturned",635,"rhookturnedsuperior",693,"rhosymbolgreek",1009,"rhotichookmod",734,"rieulacirclekorean",12913,"rieulaparenkorean",12817,"rieulcirclekorean",12899,"rieulhieuhkorean",12608,"rieulkiyeokkorean",12602,"rieulkiyeoksioskorean",12649,"rieulkorean",12601,"rieulmieumkorean",12603,"rieulpansioskorean",12652,"rieulparenkorean",12803,"rieulphieuphkorean",12607,"rieulpieupkorean",12604,"rieulpieupsioskorean",12651,"rieulsioskorean",12605,"rieulthieuthkorean",12606,"rieultikeutkorean",12650,"rieulyeorinhieuhkorean",12653,"rightangle",8735,"righttackbelowcmb",793,"righttriangle",8895,"rihiragana",12426,"rikatakana",12522,"rikatakanahalfwidth",65432,"ring",730,"ringbelowcmb",805,"ringcmb",778,"ringhalfleft",703,"ringhalfleftarmenian",1369,"ringhalfleftbelowcmb",796,"ringhalfleftcentered",723,"ringhalfright",702,"ringhalfrightbelowcmb",825,"ringhalfrightcentered",722,"rinvertedbreve",531,"rittorusquare",13137,"rlinebelow",7775,"rlongleg",636,"rlonglegturned",634,"rmonospace",65362,"rohiragana",12429,"rokatakana",12525,"rokatakanahalfwidth",65435,"roruathai",3619,"rparen",9389,"rrabengali",2524,"rradeva",2353,"rragurmukhi",2652,"rreharabic",1681,"rrehfinalarabic",64397,"rrvocalicbengali",2528,"rrvocalicdeva",2400,"rrvocalicgujarati",2784,"rrvocalicvowelsignbengali",2500,"rrvocalicvowelsigndeva",2372,"rrvocalicvowelsigngujarati",2756,"rsuperior",63217,"rtblock",9616,"rturned",633,"rturnedsuperior",692,"ruhiragana",12427,"rukatakana",12523,"rukatakanahalfwidth",65433,"rupeemarkbengali",2546,"rupeesignbengali",2547,"rupiah",63197,"ruthai",3620,"rvocalicbengali",2443,"rvocalicdeva",2315,"rvocalicgujarati",2699,"rvocalicvowelsignbengali",2499,"rvocalicvowelsigndeva",2371,"rvocalicvowelsigngujarati",2755,"s",115,"sabengali",2488,"sacute",347,"sacutedotaccent",7781,"sadarabic",1589,"sadeva",2360,"sadfinalarabic",65210,"sadinitialarabic",65211,"sadmedialarabic",65212,"sagujarati",2744,"sagurmukhi",2616,"sahiragana",12373,"sakatakana",12469,"sakatakanahalfwidth",65403,"sallallahoualayhewasallamarabic",65018,"samekh",1505,"samekhdagesh",64321,"samekhdageshhebrew",64321,"samekhhebrew",1505,"saraaathai",3634,"saraaethai",3649,"saraaimaimalaithai",3652,"saraaimaimuanthai",3651,"saraamthai",3635,"saraathai",3632,"saraethai",3648,"saraiileftthai",63622,"saraiithai",3637,"saraileftthai",63621,"saraithai",3636,"saraothai",3650,"saraueeleftthai",63624,"saraueethai",3639,"saraueleftthai",63623,"sarauethai",3638,"sarauthai",3640,"sarauuthai",3641,"sbopomofo",12569,"scaron",353,"scarondotaccent",7783,"scedilla",351,"schwa",601,"schwacyrillic",1241,"schwadieresiscyrillic",1243,"schwahook",602,"scircle",9442,"scircumflex",349,"scommaaccent",537,"sdotaccent",7777,"sdotbelow",7779,"sdotbelowdotaccent",7785,"seagullbelowcmb",828,"second",8243,"secondtonechinese",714,"section",167,"seenarabic",1587,"seenfinalarabic",65202,"seeninitialarabic",65203,"seenmedialarabic",65204,"segol",1462,"segol13",1462,"segol1f",1462,"segol2c",1462,"segolhebrew",1462,"segolnarrowhebrew",1462,"segolquarterhebrew",1462,"segoltahebrew",1426,"segolwidehebrew",1462,"seharmenian",1405,"sehiragana",12379,"sekatakana",12475,"sekatakanahalfwidth",65406,"semicolon",59,"semicolonarabic",1563,"semicolonmonospace",65307,"semicolonsmall",65108,"semivoicedmarkkana",12444,"semivoicedmarkkanahalfwidth",65439,"sentisquare",13090,"sentosquare",13091,"seven",55,"sevenarabic",1639,"sevenbengali",2541,"sevencircle",9318,"sevencircleinversesansserif",10128,"sevendeva",2413,"seveneighths",8542,"sevengujarati",2797,"sevengurmukhi",2669,"sevenhackarabic",1639,"sevenhangzhou",12327,"sevenideographicparen",12838,"seveninferior",8327,"sevenmonospace",65303,"sevenoldstyle",63287,"sevenparen",9338,"sevenperiod",9358,"sevenpersian",1783,"sevenroman",8566,"sevensuperior",8311,"seventeencircle",9328,"seventeenparen",9348,"seventeenperiod",9368,"seventhai",3671,"sfthyphen",173,"shaarmenian",1399,"shabengali",2486,"shacyrillic",1096,"shaddaarabic",1617,"shaddadammaarabic",64609,"shaddadammatanarabic",64606,"shaddafathaarabic",64608,"shaddakasraarabic",64610,"shaddakasratanarabic",64607,"shade",9618,"shadedark",9619,"shadelight",9617,"shademedium",9618,"shadeva",2358,"shagujarati",2742,"shagurmukhi",2614,"shalshelethebrew",1427,"shbopomofo",12565,"shchacyrillic",1097,"sheenarabic",1588,"sheenfinalarabic",65206,"sheeninitialarabic",65207,"sheenmedialarabic",65208,"sheicoptic",995,"sheqel",8362,"sheqelhebrew",8362,"sheva",1456,"sheva115",1456,"sheva15",1456,"sheva22",1456,"sheva2e",1456,"shevahebrew",1456,"shevanarrowhebrew",1456,"shevaquarterhebrew",1456,"shevawidehebrew",1456,"shhacyrillic",1211,"shimacoptic",1005,"shin",1513,"shindagesh",64329,"shindageshhebrew",64329,"shindageshshindot",64300,"shindageshshindothebrew",64300,"shindageshsindot",64301,"shindageshsindothebrew",64301,"shindothebrew",1473,"shinhebrew",1513,"shinshindot",64298,"shinshindothebrew",64298,"shinsindot",64299,"shinsindothebrew",64299,"shook",642,"sigma",963,"sigma1",962,"sigmafinal",962,"sigmalunatesymbolgreek",1010,"sihiragana",12375,"sikatakana",12471,"sikatakanahalfwidth",65404,"siluqhebrew",1469,"siluqlefthebrew",1469,"similar",8764,"sindothebrew",1474,"siosacirclekorean",12916,"siosaparenkorean",12820,"sioscieuckorean",12670,"sioscirclekorean",12902,"sioskiyeokkorean",12666,"sioskorean",12613,"siosnieunkorean",12667,"siosparenkorean",12806,"siospieupkorean",12669,"siostikeutkorean",12668,"six",54,"sixarabic",1638,"sixbengali",2540,"sixcircle",9317,"sixcircleinversesansserif",10127,"sixdeva",2412,"sixgujarati",2796,"sixgurmukhi",2668,"sixhackarabic",1638,"sixhangzhou",12326,"sixideographicparen",12837,"sixinferior",8326,"sixmonospace",65302,"sixoldstyle",63286,"sixparen",9337,"sixperiod",9357,"sixpersian",1782,"sixroman",8565,"sixsuperior",8310,"sixteencircle",9327,"sixteencurrencydenominatorbengali",2553,"sixteenparen",9347,"sixteenperiod",9367,"sixthai",3670,"slash",47,"slashmonospace",65295,"slong",383,"slongdotaccent",7835,"smileface",9786,"smonospace",65363,"sofpasuqhebrew",1475,"softhyphen",173,"softsigncyrillic",1100,"sohiragana",12381,"sokatakana",12477,"sokatakanahalfwidth",65407,"soliduslongoverlaycmb",824,"solidusshortoverlaycmb",823,"sorusithai",3625,"sosalathai",3624,"sosothai",3595,"sosuathai",3626,"space",32,"spacehackarabic",32,"spade",9824,"spadesuitblack",9824,"spadesuitwhite",9828,"sparen",9390,"squarebelowcmb",827,"squarecc",13252,"squarecm",13213,"squarediagonalcrosshatchfill",9641,"squarehorizontalfill",9636,"squarekg",13199,"squarekm",13214,"squarekmcapital",13262,"squareln",13265,"squarelog",13266,"squaremg",13198,"squaremil",13269,"squaremm",13212,"squaremsquared",13217,"squareorthogonalcrosshatchfill",9638,"squareupperlefttolowerrightfill",9639,"squareupperrighttolowerleftfill",9640,"squareverticalfill",9637,"squarewhitewithsmallblack",9635,"srsquare",13275,"ssabengali",2487,"ssadeva",2359,"ssagujarati",2743,"ssangcieuckorean",12617,"ssanghieuhkorean",12677,"ssangieungkorean",12672,"ssangkiyeokkorean",12594,"ssangnieunkorean",12645,"ssangpieupkorean",12611,"ssangsioskorean",12614,"ssangtikeutkorean",12600,"ssuperior",63218,"sterling",163,"sterlingmonospace",65505,"strokelongoverlaycmb",822,"strokeshortoverlaycmb",821,"subset",8834,"subsetnotequal",8842,"subsetorequal",8838,"succeeds",8827,"suchthat",8715,"suhiragana",12377,"sukatakana",12473,"sukatakanahalfwidth",65405,"sukunarabic",1618,"summation",8721,"sun",9788,"superset",8835,"supersetnotequal",8843,"supersetorequal",8839,"svsquare",13276,"syouwaerasquare",13180,"t",116,"tabengali",2468,"tackdown",8868,"tackleft",8867,"tadeva",2340,"tagujarati",2724,"tagurmukhi",2596,"taharabic",1591,"tahfinalarabic",65218,"tahinitialarabic",65219,"tahiragana",12383,"tahmedialarabic",65220,"taisyouerasquare",13181,"takatakana",12479,"takatakanahalfwidth",65408,"tatweelarabic",1600,"tau",964,"tav",1514,"tavdages",64330,"tavdagesh",64330,"tavdageshhebrew",64330,"tavhebrew",1514,"tbar",359,"tbopomofo",12554,"tcaron",357,"tccurl",680,"tcedilla",355,"tcheharabic",1670,"tchehfinalarabic",64379,"tchehinitialarabic",64380,"tchehmedialarabic",64381,"tcircle",9443,"tcircumflexbelow",7793,"tcommaaccent",355,"tdieresis",7831,"tdotaccent",7787,"tdotbelow",7789,"tecyrillic",1090,"tedescendercyrillic",1197,"teharabic",1578,"tehfinalarabic",65174,"tehhahinitialarabic",64674,"tehhahisolatedarabic",64524,"tehinitialarabic",65175,"tehiragana",12390,"tehjeeminitialarabic",64673,"tehjeemisolatedarabic",64523,"tehmarbutaarabic",1577,"tehmarbutafinalarabic",65172,"tehmedialarabic",65176,"tehmeeminitialarabic",64676,"tehmeemisolatedarabic",64526,"tehnoonfinalarabic",64627,"tekatakana",12486,"tekatakanahalfwidth",65411,"telephone",8481,"telephoneblack",9742,"telishagedolahebrew",1440,"telishaqetanahebrew",1449,"tencircle",9321,"tenideographicparen",12841,"tenparen",9341,"tenperiod",9361,"tenroman",8569,"tesh",679,"tet",1496,"tetdagesh",64312,"tetdageshhebrew",64312,"tethebrew",1496,"tetsecyrillic",1205,"tevirhebrew",1435,"tevirlefthebrew",1435,"thabengali",2469,"thadeva",2341,"thagujarati",2725,"thagurmukhi",2597,"thalarabic",1584,"thalfinalarabic",65196,"thanthakhatlowleftthai",63640,"thanthakhatlowrightthai",63639,"thanthakhatthai",3660,"thanthakhatupperleftthai",63638,"theharabic",1579,"thehfinalarabic",65178,"thehinitialarabic",65179,"thehmedialarabic",65180,"thereexists",8707,"therefore",8756,"theta",952,"theta1",977,"thetasymbolgreek",977,"thieuthacirclekorean",12921,"thieuthaparenkorean",12825,"thieuthcirclekorean",12907,"thieuthkorean",12620,"thieuthparenkorean",12811,"thirteencircle",9324,"thirteenparen",9344,"thirteenperiod",9364,"thonangmonthothai",3601,"thook",429,"thophuthaothai",3602,"thorn",254,"thothahanthai",3607,"thothanthai",3600,"thothongthai",3608,"thothungthai",3606,"thousandcyrillic",1154,"thousandsseparatorarabic",1644,"thousandsseparatorpersian",1644,"three",51,"threearabic",1635,"threebengali",2537,"threecircle",9314,"threecircleinversesansserif",10124,"threedeva",2409,"threeeighths",8540,"threegujarati",2793,"threegurmukhi",2665,"threehackarabic",1635,"threehangzhou",12323,"threeideographicparen",12834,"threeinferior",8323,"threemonospace",65299,"threenumeratorbengali",2550,"threeoldstyle",63283,"threeparen",9334,"threeperiod",9354,"threepersian",1779,"threequarters",190,"threequartersemdash",63198,"threeroman",8562,"threesuperior",179,"threethai",3667,"thzsquare",13204,"tihiragana",12385,"tikatakana",12481,"tikatakanahalfwidth",65409,"tikeutacirclekorean",12912,"tikeutaparenkorean",12816,"tikeutcirclekorean",12898,"tikeutkorean",12599,"tikeutparenkorean",12802,"tilde",732,"tildebelowcmb",816,"tildecmb",771,"tildecomb",771,"tildedoublecmb",864,"tildeoperator",8764,"tildeoverlaycmb",820,"tildeverticalcmb",830,"timescircle",8855,"tipehahebrew",1430,"tipehalefthebrew",1430,"tippigurmukhi",2672,"titlocyrilliccmb",1155,"tiwnarmenian",1407,"tlinebelow",7791,"tmonospace",65364,"toarmenian",1385,"tohiragana",12392,"tokatakana",12488,"tokatakanahalfwidth",65412,"tonebarextrahighmod",741,"tonebarextralowmod",745,"tonebarhighmod",742,"tonebarlowmod",744,"tonebarmidmod",743,"tonefive",445,"tonesix",389,"tonetwo",424,"tonos",900,"tonsquare",13095,"topatakthai",3599,"tortoiseshellbracketleft",12308,"tortoiseshellbracketleftsmall",65117,"tortoiseshellbracketleftvertical",65081,"tortoiseshellbracketright",12309,"tortoiseshellbracketrightsmall",65118,"tortoiseshellbracketrightvertical",65082,"totaothai",3605,"tpalatalhook",427,"tparen",9391,"trademark",8482,"trademarksans",63722,"trademarkserif",63195,"tretroflexhook",648,"triagdn",9660,"triaglf",9668,"triagrt",9658,"triagup",9650,"ts",678,"tsadi",1510,"tsadidagesh",64326,"tsadidageshhebrew",64326,"tsadihebrew",1510,"tsecyrillic",1094,"tsere",1461,"tsere12",1461,"tsere1e",1461,"tsere2b",1461,"tserehebrew",1461,"tserenarrowhebrew",1461,"tserequarterhebrew",1461,"tserewidehebrew",1461,"tshecyrillic",1115,"tsuperior",63219,"ttabengali",2463,"ttadeva",2335,"ttagujarati",2719,"ttagurmukhi",2591,"tteharabic",1657,"ttehfinalarabic",64359,"ttehinitialarabic",64360,"ttehmedialarabic",64361,"tthabengali",2464,"tthadeva",2336,"tthagujarati",2720,"tthagurmukhi",2592,"tturned",647,"tuhiragana",12388,"tukatakana",12484,"tukatakanahalfwidth",65410,"tusmallhiragana",12387,"tusmallkatakana",12483,"tusmallkatakanahalfwidth",65391,"twelvecircle",9323,"twelveparen",9343,"twelveperiod",9363,"twelveroman",8571,"twentycircle",9331,"twentyhangzhou",21316,"twentyparen",9351,"twentyperiod",9371,"two",50,"twoarabic",1634,"twobengali",2536,"twocircle",9313,"twocircleinversesansserif",10123,"twodeva",2408,"twodotenleader",8229,"twodotleader",8229,"twodotleadervertical",65072,"twogujarati",2792,"twogurmukhi",2664,"twohackarabic",1634,"twohangzhou",12322,"twoideographicparen",12833,"twoinferior",8322,"twomonospace",65298,"twonumeratorbengali",2549,"twooldstyle",63282,"twoparen",9333,"twoperiod",9353,"twopersian",1778,"tworoman",8561,"twostroke",443,"twosuperior",178,"twothai",3666,"twothirds",8532,"u",117,"uacute",250,"ubar",649,"ubengali",2441,"ubopomofo",12584,"ubreve",365,"ucaron",468,"ucircle",9444,"ucircumflex",251,"ucircumflexbelow",7799,"ucyrillic",1091,"udattadeva",2385,"udblacute",369,"udblgrave",533,"udeva",2313,"udieresis",252,"udieresisacute",472,"udieresisbelow",7795,"udieresiscaron",474,"udieresiscyrillic",1265,"udieresisgrave",476,"udieresismacron",470,"udotbelow",7909,"ugrave",249,"ugujarati",2697,"ugurmukhi",2569,"uhiragana",12358,"uhookabove",7911,"uhorn",432,"uhornacute",7913,"uhorndotbelow",7921,"uhorngrave",7915,"uhornhookabove",7917,"uhorntilde",7919,"uhungarumlaut",369,"uhungarumlautcyrillic",1267,"uinvertedbreve",535,"ukatakana",12454,"ukatakanahalfwidth",65395,"ukcyrillic",1145,"ukorean",12636,"umacron",363,"umacroncyrillic",1263,"umacrondieresis",7803,"umatragurmukhi",2625,"umonospace",65365,"underscore",95,"underscoredbl",8215,"underscoremonospace",65343,"underscorevertical",65075,"underscorewavy",65103,"union",8746,"universal",8704,"uogonek",371,"uparen",9392,"upblock",9600,"upperdothebrew",1476,"upsilon",965,"upsilondieresis",971,"upsilondieresistonos",944,"upsilonlatin",650,"upsilontonos",973,"uptackbelowcmb",797,"uptackmod",724,"uragurmukhi",2675,"uring",367,"ushortcyrillic",1118,"usmallhiragana",12357,"usmallkatakana",12453,"usmallkatakanahalfwidth",65385,"ustraightcyrillic",1199,"ustraightstrokecyrillic",1201,"utilde",361,"utildeacute",7801,"utildebelow",7797,"uubengali",2442,"uudeva",2314,"uugujarati",2698,"uugurmukhi",2570,"uumatragurmukhi",2626,"uuvowelsignbengali",2498,"uuvowelsigndeva",2370,"uuvowelsigngujarati",2754,"uvowelsignbengali",2497,"uvowelsigndeva",2369,"uvowelsigngujarati",2753,"v",118,"vadeva",2357,"vagujarati",2741,"vagurmukhi",2613,"vakatakana",12535,"vav",1493,"vavdagesh",64309,"vavdagesh65",64309,"vavdageshhebrew",64309,"vavhebrew",1493,"vavholam",64331,"vavholamhebrew",64331,"vavvavhebrew",1520,"vavyodhebrew",1521,"vcircle",9445,"vdotbelow",7807,"vecyrillic",1074,"veharabic",1700,"vehfinalarabic",64363,"vehinitialarabic",64364,"vehmedialarabic",64365,"vekatakana",12537,"venus",9792,"verticalbar",124,"verticallineabovecmb",781,"verticallinebelowcmb",809,"verticallinelowmod",716,"verticallinemod",712,"vewarmenian",1406,"vhook",651,"vikatakana",12536,"viramabengali",2509,"viramadeva",2381,"viramagujarati",2765,"visargabengali",2435,"visargadeva",2307,"visargagujarati",2691,"vmonospace",65366,"voarmenian",1400,"voicediterationhiragana",12446,"voicediterationkatakana",12542,"voicedmarkkana",12443,"voicedmarkkanahalfwidth",65438,"vokatakana",12538,"vparen",9393,"vtilde",7805,"vturned",652,"vuhiragana",12436,"vukatakana",12532,"w",119,"wacute",7811,"waekorean",12633,"wahiragana",12431,"wakatakana",12527,"wakatakanahalfwidth",65436,"wakorean",12632,"wasmallhiragana",12430,"wasmallkatakana",12526,"wattosquare",13143,"wavedash",12316,"wavyunderscorevertical",65076,"wawarabic",1608,"wawfinalarabic",65262,"wawhamzaabovearabic",1572,"wawhamzaabovefinalarabic",65158,"wbsquare",13277,"wcircle",9446,"wcircumflex",373,"wdieresis",7813,"wdotaccent",7815,"wdotbelow",7817,"wehiragana",12433,"weierstrass",8472,"wekatakana",12529,"wekorean",12638,"weokorean",12637,"wgrave",7809,"whitebullet",9702,"whitecircle",9675,"whitecircleinverse",9689,"whitecornerbracketleft",12302,"whitecornerbracketleftvertical",65091,"whitecornerbracketright",12303,"whitecornerbracketrightvertical",65092,"whitediamond",9671,"whitediamondcontainingblacksmalldiamond",9672,"whitedownpointingsmalltriangle",9663,"whitedownpointingtriangle",9661,"whiteleftpointingsmalltriangle",9667,"whiteleftpointingtriangle",9665,"whitelenticularbracketleft",12310,"whitelenticularbracketright",12311,"whiterightpointingsmalltriangle",9657,"whiterightpointingtriangle",9655,"whitesmallsquare",9643,"whitesmilingface",9786,"whitesquare",9633,"whitestar",9734,"whitetelephone",9743,"whitetortoiseshellbracketleft",12312,"whitetortoiseshellbracketright",12313,"whiteuppointingsmalltriangle",9653,"whiteuppointingtriangle",9651,"wihiragana",12432,"wikatakana",12528,"wikorean",12639,"wmonospace",65367,"wohiragana",12434,"wokatakana",12530,"wokatakanahalfwidth",65382,"won",8361,"wonmonospace",65510,"wowaenthai",3623,"wparen",9394,"wring",7832,"wsuperior",695,"wturned",653,"wynn",447,"x",120,"xabovecmb",829,"xbopomofo",12562,"xcircle",9447,"xdieresis",7821,"xdotaccent",7819,"xeharmenian",1389,"xi",958,"xmonospace",65368,"xparen",9395,"xsuperior",739,"y",121,"yaadosquare",13134,"yabengali",2479,"yacute",253,"yadeva",2351,"yaekorean",12626,"yagujarati",2735,"yagurmukhi",2607,"yahiragana",12420,"yakatakana",12516,"yakatakanahalfwidth",65428,"yakorean",12625,"yamakkanthai",3662,"yasmallhiragana",12419,"yasmallkatakana",12515,"yasmallkatakanahalfwidth",65388,"yatcyrillic",1123,"ycircle",9448,"ycircumflex",375,"ydieresis",255,"ydotaccent",7823,"ydotbelow",7925,"yeharabic",1610,"yehbarreearabic",1746,"yehbarreefinalarabic",64431,"yehfinalarabic",65266,"yehhamzaabovearabic",1574,"yehhamzaabovefinalarabic",65162,"yehhamzaaboveinitialarabic",65163,"yehhamzaabovemedialarabic",65164,"yehinitialarabic",65267,"yehmedialarabic",65268,"yehmeeminitialarabic",64733,"yehmeemisolatedarabic",64600,"yehnoonfinalarabic",64660,"yehthreedotsbelowarabic",1745,"yekorean",12630,"yen",165,"yenmonospace",65509,"yeokorean",12629,"yeorinhieuhkorean",12678,"yerahbenyomohebrew",1450,"yerahbenyomolefthebrew",1450,"yericyrillic",1099,"yerudieresiscyrillic",1273,"yesieungkorean",12673,"yesieungpansioskorean",12675,"yesieungsioskorean",12674,"yetivhebrew",1434,"ygrave",7923,"yhook",436,"yhookabove",7927,"yiarmenian",1397,"yicyrillic",1111,"yikorean",12642,"yinyang",9775,"yiwnarmenian",1410,"ymonospace",65369,"yod",1497,"yoddagesh",64313,"yoddageshhebrew",64313,"yodhebrew",1497,"yodyodhebrew",1522,"yodyodpatahhebrew",64287,"yohiragana",12424,"yoikorean",12681,"yokatakana",12520,"yokatakanahalfwidth",65430,"yokorean",12635,"yosmallhiragana",12423,"yosmallkatakana",12519,"yosmallkatakanahalfwidth",65390,"yotgreek",1011,"yoyaekorean",12680,"yoyakorean",12679,"yoyakthai",3618,"yoyingthai",3597,"yparen",9396,"ypogegrammeni",890,"ypogegrammenigreekcmb",837,"yr",422,"yring",7833,"ysuperior",696,"ytilde",7929,"yturned",654,"yuhiragana",12422,"yuikorean",12684,"yukatakana",12518,"yukatakanahalfwidth",65429,"yukorean",12640,"yusbigcyrillic",1131,"yusbigiotifiedcyrillic",1133,"yuslittlecyrillic",1127,"yuslittleiotifiedcyrillic",1129,"yusmallhiragana",12421,"yusmallkatakana",12517,"yusmallkatakanahalfwidth",65389,"yuyekorean",12683,"yuyeokorean",12682,"yyabengali",2527,"yyadeva",2399,"z",122,"zaarmenian",1382,"zacute",378,"zadeva",2395,"zagurmukhi",2651,"zaharabic",1592,"zahfinalarabic",65222,"zahinitialarabic",65223,"zahiragana",12374,"zahmedialarabic",65224,"zainarabic",1586,"zainfinalarabic",65200,"zakatakana",12470,"zaqefgadolhebrew",1429,"zaqefqatanhebrew",1428,"zarqahebrew",1432,"zayin",1494,"zayindagesh",64310,"zayindageshhebrew",64310,"zayinhebrew",1494,"zbopomofo",12567,"zcaron",382,"zcircle",9449,"zcircumflex",7825,"zcurl",657,"zdot",380,"zdotaccent",380,"zdotbelow",7827,"zecyrillic",1079,"zedescendercyrillic",1177,"zedieresiscyrillic",1247,"zehiragana",12380,"zekatakana",12476,"zero",48,"zeroarabic",1632,"zerobengali",2534,"zerodeva",2406,"zerogujarati",2790,"zerogurmukhi",2662,"zerohackarabic",1632,"zeroinferior",8320,"zeromonospace",65296,"zerooldstyle",63280,"zeropersian",1776,"zerosuperior",8304,"zerothai",3664,"zerowidthjoiner",65279,"zerowidthnonjoiner",8204,"zerowidthspace",8203,"zeta",950,"zhbopomofo",12563,"zhearmenian",1386,"zhebrevecyrillic",1218,"zhecyrillic",1078,"zhedescendercyrillic",1175,"zhedieresiscyrillic",1245,"zihiragana",12376,"zikatakana",12472,"zinorhebrew",1454,"zlinebelow",7829,"zmonospace",65370,"zohiragana",12382,"zokatakana",12478,"zparen",9397,"zretroflexhook",656,"zstroke",438,"zuhiragana",12378,"zukatakana",12474,".notdef",0,"angbracketleftbig",9001,"angbracketleftBig",9001,"angbracketleftbigg",9001,"angbracketleftBigg",9001,"angbracketrightBig",9002,"angbracketrightbig",9002,"angbracketrightBigg",9002,"angbracketrightbigg",9002,"arrowhookleft",8618,"arrowhookright",8617,"arrowlefttophalf",8636,"arrowleftbothalf",8637,"arrownortheast",8599,"arrownorthwest",8598,"arrowrighttophalf",8640,"arrowrightbothalf",8641,"arrowsoutheast",8600,"arrowsouthwest",8601,"backslashbig",8726,"backslashBig",8726,"backslashBigg",8726,"backslashbigg",8726,"bardbl",8214,"bracehtipdownleft",65079,"bracehtipdownright",65079,"bracehtipupleft",65080,"bracehtipupright",65080,"braceleftBig",123,"braceleftbig",123,"braceleftbigg",123,"braceleftBigg",123,"bracerightBig",125,"bracerightbig",125,"bracerightbigg",125,"bracerightBigg",125,"bracketleftbig",91,"bracketleftBig",91,"bracketleftbigg",91,"bracketleftBigg",91,"bracketrightBig",93,"bracketrightbig",93,"bracketrightbigg",93,"bracketrightBigg",93,"ceilingleftbig",8968,"ceilingleftBig",8968,"ceilingleftBigg",8968,"ceilingleftbigg",8968,"ceilingrightbig",8969,"ceilingrightBig",8969,"ceilingrightbigg",8969,"ceilingrightBigg",8969,"circledotdisplay",8857,"circledottext",8857,"circlemultiplydisplay",8855,"circlemultiplytext",8855,"circleplusdisplay",8853,"circleplustext",8853,"contintegraldisplay",8750,"contintegraltext",8750,"coproductdisplay",8720,"coproducttext",8720,"floorleftBig",8970,"floorleftbig",8970,"floorleftbigg",8970,"floorleftBigg",8970,"floorrightbig",8971,"floorrightBig",8971,"floorrightBigg",8971,"floorrightbigg",8971,"hatwide",770,"hatwider",770,"hatwidest",770,"intercal",7488,"integraldisplay",8747,"integraltext",8747,"intersectiondisplay",8898,"intersectiontext",8898,"logicalanddisplay",8743,"logicalandtext",8743,"logicalordisplay",8744,"logicalortext",8744,"parenleftBig",40,"parenleftbig",40,"parenleftBigg",40,"parenleftbigg",40,"parenrightBig",41,"parenrightbig",41,"parenrightBigg",41,"parenrightbigg",41,"prime",8242,"productdisplay",8719,"producttext",8719,"radicalbig",8730,"radicalBig",8730,"radicalBigg",8730,"radicalbigg",8730,"radicalbt",8730,"radicaltp",8730,"radicalvertex",8730,"slashbig",47,"slashBig",47,"slashBigg",47,"slashbigg",47,"summationdisplay",8721,"summationtext",8721,"tildewide",732,"tildewider",732,"tildewidest",732,"uniondisplay",8899,"unionmultidisplay",8846,"unionmultitext",8846,"unionsqdisplay",8852,"unionsqtext",8852,"uniontext",8899,"vextenddouble",8741,"vextendsingle",8739]})),n=(0,a.getArrayLookupTableFactory)((function(){return["space",32,"a1",9985,"a2",9986,"a202",9987,"a3",9988,"a4",9742,"a5",9990,"a119",9991,"a118",9992,"a117",9993,"a11",9755,"a12",9758,"a13",9996,"a14",9997,"a15",9998,"a16",9999,"a105",1e4,"a17",10001,"a18",10002,"a19",10003,"a20",10004,"a21",10005,"a22",10006,"a23",10007,"a24",10008,"a25",10009,"a26",10010,"a27",10011,"a28",10012,"a6",10013,"a7",10014,"a8",10015,"a9",10016,"a10",10017,"a29",10018,"a30",10019,"a31",10020,"a32",10021,"a33",10022,"a34",10023,"a35",9733,"a36",10025,"a37",10026,"a38",10027,"a39",10028,"a40",10029,"a41",10030,"a42",10031,"a43",10032,"a44",10033,"a45",10034,"a46",10035,"a47",10036,"a48",10037,"a49",10038,"a50",10039,"a51",10040,"a52",10041,"a53",10042,"a54",10043,"a55",10044,"a56",10045,"a57",10046,"a58",10047,"a59",10048,"a60",10049,"a61",10050,"a62",10051,"a63",10052,"a64",10053,"a65",10054,"a66",10055,"a67",10056,"a68",10057,"a69",10058,"a70",10059,"a71",9679,"a72",10061,"a73",9632,"a74",10063,"a203",10064,"a75",10065,"a204",10066,"a76",9650,"a77",9660,"a78",9670,"a79",10070,"a81",9687,"a82",10072,"a83",10073,"a84",10074,"a97",10075,"a98",10076,"a99",10077,"a100",10078,"a101",10081,"a102",10082,"a103",10083,"a104",10084,"a106",10085,"a107",10086,"a108",10087,"a112",9827,"a111",9830,"a110",9829,"a109",9824,"a120",9312,"a121",9313,"a122",9314,"a123",9315,"a124",9316,"a125",9317,"a126",9318,"a127",9319,"a128",9320,"a129",9321,"a130",10102,"a131",10103,"a132",10104,"a133",10105,"a134",10106,"a135",10107,"a136",10108,"a137",10109,"a138",10110,"a139",10111,"a140",10112,"a141",10113,"a142",10114,"a143",10115,"a144",10116,"a145",10117,"a146",10118,"a147",10119,"a148",10120,"a149",10121,"a150",10122,"a151",10123,"a152",10124,"a153",10125,"a154",10126,"a155",10127,"a156",10128,"a157",10129,"a158",10130,"a159",10131,"a160",10132,"a161",8594,"a163",8596,"a164",8597,"a196",10136,"a165",10137,"a192",10138,"a166",10139,"a167",10140,"a168",10141,"a169",10142,"a170",10143,"a171",10144,"a172",10145,"a173",10146,"a162",10147,"a174",10148,"a175",10149,"a176",10150,"a177",10151,"a178",10152,"a179",10153,"a193",10154,"a180",10155,"a199",10156,"a181",10157,"a200",10158,"a182",10159,"a201",10161,"a183",10162,"a184",10163,"a197",10164,"a185",10165,"a194",10166,"a198",10167,"a186",10168,"a195",10169,"a187",10170,"a188",10171,"a189",10172,"a190",10173,"a191",10174,"a89",10088,"a90",10089,"a93",10090,"a94",10091,"a91",10092,"a92",10093,"a205",10094,"a85",10095,"a206",10096,"a86",10097,"a87",10098,"a88",10099,"a95",10100,"a96",10101,".notdef",0]}))},(e,t,r)=>{r.r(t);r.d(t,{getNormalizedUnicodes:()=>s,getUnicodeForGlyph:()=>getUnicodeForGlyph,getUnicodeRangeFor:()=>getUnicodeRangeFor,mapSpecialUnicodeValues:()=>mapSpecialUnicodeValues,reverseIfRtl:()=>reverseIfRtl});var a=r(9);const i=(0,a.getLookupTableFactory)((function(e){e[63721]=169;e[63193]=169;e[63720]=174;e[63194]=174;e[63722]=8482;e[63195]=8482;e[63729]=9127;e[63730]=9128;e[63731]=9129;e[63740]=9131;e[63741]=9132;e[63742]=9133;e[63726]=9121;e[63727]=9122;e[63728]=9123;e[63737]=9124;e[63738]=9125;e[63739]=9126;e[63723]=9115;e[63724]=9116;e[63725]=9117;e[63734]=9118;e[63735]=9119;e[63736]=9120}));function mapSpecialUnicodeValues(e){return e>=65520&&e<=65535?0:e>=62976&&e<=63743?i()[e]||e:173===e?45:e}function getUnicodeForGlyph(e,t){let r=t[e];if(void 0!==r)return r;if(!e)return-1;if("u"===e[0]){const t=e.length;let a;if(7===t&&"n"===e[1]&&"i"===e[2])a=e.substring(3);else{if(!(t>=5&&t<=7))return-1;a=e.substring(1)}if(a===a.toUpperCase()){r=parseInt(a,16);if(r>=0)return r}}return-1}const n=[{begin:0,end:127},{begin:128,end:255},{begin:256,end:383},{begin:384,end:591},{begin:592,end:687},{begin:688,end:767},{begin:768,end:879},{begin:880,end:1023},{begin:11392,end:11519},{begin:1024,end:1279},{begin:1328,end:1423},{begin:1424,end:1535},{begin:42240,end:42559},{begin:1536,end:1791},{begin:1984,end:2047},{begin:2304,end:2431},{begin:2432,end:2559},{begin:2560,end:2687},{begin:2688,end:2815},{begin:2816,end:2943},{begin:2944,end:3071},{begin:3072,end:3199},{begin:3200,end:3327},{begin:3328,end:3455},{begin:3584,end:3711},{begin:3712,end:3839},{begin:4256,end:4351},{begin:6912,end:7039},{begin:4352,end:4607},{begin:7680,end:7935},{begin:7936,end:8191},{begin:8192,end:8303},{begin:8304,end:8351},{begin:8352,end:8399},{begin:8400,end:8447},{begin:8448,end:8527},{begin:8528,end:8591},{begin:8592,end:8703},{begin:8704,end:8959},{begin:8960,end:9215},{begin:9216,end:9279},{begin:9280,end:9311},{begin:9312,end:9471},{begin:9472,end:9599},{begin:9600,end:9631},{begin:9632,end:9727},{begin:9728,end:9983},{begin:9984,end:10175},{begin:12288,end:12351},{begin:12352,end:12447},{begin:12448,end:12543},{begin:12544,end:12591},{begin:12592,end:12687},{begin:43072,end:43135},{begin:12800,end:13055},{begin:13056,end:13311},{begin:44032,end:55215},{begin:55296,end:57343},{begin:67840,end:67871},{begin:19968,end:40959},{begin:57344,end:63743},{begin:12736,end:12783},{begin:64256,end:64335},{begin:64336,end:65023},{begin:65056,end:65071},{begin:65040,end:65055},{begin:65104,end:65135},{begin:65136,end:65279},{begin:65280,end:65519},{begin:65520,end:65535},{begin:3840,end:4095},{begin:1792,end:1871},{begin:1920,end:1983},{begin:3456,end:3583},{begin:4096,end:4255},{begin:4608,end:4991},{begin:5024,end:5119},{begin:5120,end:5759},{begin:5760,end:5791},{begin:5792,end:5887},{begin:6016,end:6143},{begin:6144,end:6319},{begin:10240,end:10495},{begin:40960,end:42127},{begin:5888,end:5919},{begin:66304,end:66351},{begin:66352,end:66383},{begin:66560,end:66639},{begin:118784,end:119039},{begin:119808,end:120831},{begin:1044480,end:1048573},{begin:65024,end:65039},{begin:917504,end:917631},{begin:6400,end:6479},{begin:6480,end:6527},{begin:6528,end:6623},{begin:6656,end:6687},{begin:11264,end:11359},{begin:11568,end:11647},{begin:19904,end:19967},{begin:43008,end:43055},{begin:65536,end:65663},{begin:65856,end:65935},{begin:66432,end:66463},{begin:66464,end:66527},{begin:66640,end:66687},{begin:66688,end:66735},{begin:67584,end:67647},{begin:68096,end:68191},{begin:119552,end:119647},{begin:73728,end:74751},{begin:119648,end:119679},{begin:7040,end:7103},{begin:7168,end:7247},{begin:7248,end:7295},{begin:43136,end:43231},{begin:43264,end:43311},{begin:43312,end:43359},{begin:43520,end:43615},{begin:65936,end:65999},{begin:66e3,end:66047},{begin:66208,end:66271},{begin:127024,end:127135}];function getUnicodeRangeFor(e){for(let t=0,r=n.length;t=r.begin&&e=t.begin&&e=t.begin&&e=0;a--)r.push(e[a]);return r.join("")}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.getStandardFontName=function getStandardFontName(e){const t=(0,i.normalizeFontName)(e);return n()[t]};t.getSymbolsFonts=t.getSupplementalGlyphMapForCalibri=t.getSupplementalGlyphMapForArialBlack=t.getStdFontMap=t.getSerifFonts=t.getNonStdFontMap=t.getGlyphMapForStandardFonts=t.getFontNameToFileMap=void 0;var a=r(9),i=r(38);const n=(0,a.getLookupTableFactory)((function(e){e["Times-Roman"]="Times-Roman";e.Helvetica="Helvetica";e.Courier="Courier";e.Symbol="Symbol";e["Times-Bold"]="Times-Bold";e["Helvetica-Bold"]="Helvetica-Bold";e["Courier-Bold"]="Courier-Bold";e.ZapfDingbats="ZapfDingbats";e["Times-Italic"]="Times-Italic";e["Helvetica-Oblique"]="Helvetica-Oblique";e["Courier-Oblique"]="Courier-Oblique";e["Times-BoldItalic"]="Times-BoldItalic";e["Helvetica-BoldOblique"]="Helvetica-BoldOblique";e["Courier-BoldOblique"]="Courier-BoldOblique";e.ArialNarrow="Helvetica";e["ArialNarrow-Bold"]="Helvetica-Bold";e["ArialNarrow-BoldItalic"]="Helvetica-BoldOblique";e["ArialNarrow-Italic"]="Helvetica-Oblique";e.ArialBlack="Helvetica";e["ArialBlack-Bold"]="Helvetica-Bold";e["ArialBlack-BoldItalic"]="Helvetica-BoldOblique";e["ArialBlack-Italic"]="Helvetica-Oblique";e["Arial-Black"]="Helvetica";e["Arial-Black-Bold"]="Helvetica-Bold";e["Arial-Black-BoldItalic"]="Helvetica-BoldOblique";e["Arial-Black-Italic"]="Helvetica-Oblique";e.Arial="Helvetica";e["Arial-Bold"]="Helvetica-Bold";e["Arial-BoldItalic"]="Helvetica-BoldOblique";e["Arial-Italic"]="Helvetica-Oblique";e["Arial-BoldItalicMT"]="Helvetica-BoldOblique";e["Arial-BoldMT"]="Helvetica-Bold";e["Arial-ItalicMT"]="Helvetica-Oblique";e.ArialMT="Helvetica";e["Courier-BoldItalic"]="Courier-BoldOblique";e["Courier-Italic"]="Courier-Oblique";e.CourierNew="Courier";e["CourierNew-Bold"]="Courier-Bold";e["CourierNew-BoldItalic"]="Courier-BoldOblique";e["CourierNew-Italic"]="Courier-Oblique";e["CourierNewPS-BoldItalicMT"]="Courier-BoldOblique";e["CourierNewPS-BoldMT"]="Courier-Bold";e["CourierNewPS-ItalicMT"]="Courier-Oblique";e.CourierNewPSMT="Courier";e["Helvetica-BoldItalic"]="Helvetica-BoldOblique";e["Helvetica-Italic"]="Helvetica-Oblique";e["Symbol-Bold"]="Symbol";e["Symbol-BoldItalic"]="Symbol";e["Symbol-Italic"]="Symbol";e.TimesNewRoman="Times-Roman";e["TimesNewRoman-Bold"]="Times-Bold";e["TimesNewRoman-BoldItalic"]="Times-BoldItalic";e["TimesNewRoman-Italic"]="Times-Italic";e.TimesNewRomanPS="Times-Roman";e["TimesNewRomanPS-Bold"]="Times-Bold";e["TimesNewRomanPS-BoldItalic"]="Times-BoldItalic";e["TimesNewRomanPS-BoldItalicMT"]="Times-BoldItalic";e["TimesNewRomanPS-BoldMT"]="Times-Bold";e["TimesNewRomanPS-Italic"]="Times-Italic";e["TimesNewRomanPS-ItalicMT"]="Times-Italic";e.TimesNewRomanPSMT="Times-Roman";e["TimesNewRomanPSMT-Bold"]="Times-Bold";e["TimesNewRomanPSMT-BoldItalic"]="Times-BoldItalic";e["TimesNewRomanPSMT-Italic"]="Times-Italic"}));t.getStdFontMap=n;const s=(0,a.getLookupTableFactory)((function(e){e.Courier="FoxitFixed.pfb";e["Courier-Bold"]="FoxitFixedBold.pfb";e["Courier-BoldOblique"]="FoxitFixedBoldItalic.pfb";e["Courier-Oblique"]="FoxitFixedItalic.pfb";e.Helvetica="FoxitSans.pfb";e["Helvetica-Bold"]="FoxitSansBold.pfb";e["Helvetica-BoldOblique"]="FoxitSansBoldItalic.pfb";e["Helvetica-Oblique"]="FoxitSansItalic.pfb";e["Times-Roman"]="FoxitSerif.pfb";e["Times-Bold"]="FoxitSerifBold.pfb";e["Times-BoldItalic"]="FoxitSerifBoldItalic.pfb";e["Times-Italic"]="FoxitSerifItalic.pfb";e.Symbol="FoxitSymbol.pfb";e.ZapfDingbats="FoxitDingbats.pfb";e["LiberationSans-Regular"]="LiberationSans-Regular.ttf";e["LiberationSans-Bold"]="LiberationSans-Bold.ttf";e["LiberationSans-Italic"]="LiberationSans-Italic.ttf";e["LiberationSans-BoldItalic"]="LiberationSans-BoldItalic.ttf"}));t.getFontNameToFileMap=s;const o=(0,a.getLookupTableFactory)((function(e){e.Calibri="Helvetica";e["Calibri-Bold"]="Helvetica-Bold";e["Calibri-BoldItalic"]="Helvetica-BoldOblique";e["Calibri-Italic"]="Helvetica-Oblique";e.CenturyGothic="Helvetica";e["CenturyGothic-Bold"]="Helvetica-Bold";e["CenturyGothic-BoldItalic"]="Helvetica-BoldOblique";e["CenturyGothic-Italic"]="Helvetica-Oblique";e.ComicSansMS="Comic Sans MS";e["ComicSansMS-Bold"]="Comic Sans MS-Bold";e["ComicSansMS-BoldItalic"]="Comic Sans MS-BoldItalic";e["ComicSansMS-Italic"]="Comic Sans MS-Italic";e.LucidaConsole="Courier";e["LucidaConsole-Bold"]="Courier-Bold";e["LucidaConsole-BoldItalic"]="Courier-BoldOblique";e["LucidaConsole-Italic"]="Courier-Oblique";e["LucidaSans-Demi"]="Helvetica-Bold";e["MS-Gothic"]="MS Gothic";e["MS-Gothic-Bold"]="MS Gothic-Bold";e["MS-Gothic-BoldItalic"]="MS Gothic-BoldItalic";e["MS-Gothic-Italic"]="MS Gothic-Italic";e["MS-Mincho"]="MS Mincho";e["MS-Mincho-Bold"]="MS Mincho-Bold";e["MS-Mincho-BoldItalic"]="MS Mincho-BoldItalic";e["MS-Mincho-Italic"]="MS Mincho-Italic";e["MS-PGothic"]="MS PGothic";e["MS-PGothic-Bold"]="MS PGothic-Bold";e["MS-PGothic-BoldItalic"]="MS PGothic-BoldItalic";e["MS-PGothic-Italic"]="MS PGothic-Italic";e["MS-PMincho"]="MS PMincho";e["MS-PMincho-Bold"]="MS PMincho-Bold";e["MS-PMincho-BoldItalic"]="MS PMincho-BoldItalic";e["MS-PMincho-Italic"]="MS PMincho-Italic";e.NuptialScript="Times-Italic";e.SegoeUISymbol="Helvetica";e.Wingdings="ZapfDingbats";e["Wingdings-Regular"]="ZapfDingbats"}));t.getNonStdFontMap=o;const c=(0,a.getLookupTableFactory)((function(e){e["Adobe Jenson"]=!0;e["Adobe Text"]=!0;e.Albertus=!0;e.Aldus=!0;e.Alexandria=!0;e.Algerian=!0;e["American Typewriter"]=!0;e.Antiqua=!0;e.Apex=!0;e.Arno=!0;e.Aster=!0;e.Aurora=!0;e.Baskerville=!0;e.Bell=!0;e.Bembo=!0;e["Bembo Schoolbook"]=!0;e.Benguiat=!0;e["Berkeley Old Style"]=!0;e["Bernhard Modern"]=!0;e["Berthold City"]=!0;e.Bodoni=!0;e["Bauer Bodoni"]=!0;e["Book Antiqua"]=!0;e.Bookman=!0;e["Bordeaux Roman"]=!0;e["Californian FB"]=!0;e.Calisto=!0;e.Calvert=!0;e.Capitals=!0;e.Cambria=!0;e.Cartier=!0;e.Caslon=!0;e.Catull=!0;e.Centaur=!0;e["Century Old Style"]=!0;e["Century Schoolbook"]=!0;e.Chaparral=!0;e["Charis SIL"]=!0;e.Cheltenham=!0;e["Cholla Slab"]=!0;e.Clarendon=!0;e.Clearface=!0;e.Cochin=!0;e.Colonna=!0;e["Computer Modern"]=!0;e["Concrete Roman"]=!0;e.Constantia=!0;e["Cooper Black"]=!0;e.Corona=!0;e.Ecotype=!0;e.Egyptienne=!0;e.Elephant=!0;e.Excelsior=!0;e.Fairfield=!0;e["FF Scala"]=!0;e.Folkard=!0;e.Footlight=!0;e.FreeSerif=!0;e["Friz Quadrata"]=!0;e.Garamond=!0;e.Gentium=!0;e.Georgia=!0;e.Gloucester=!0;e["Goudy Old Style"]=!0;e["Goudy Schoolbook"]=!0;e["Goudy Pro Font"]=!0;e.Granjon=!0;e["Guardian Egyptian"]=!0;e.Heather=!0;e.Hercules=!0;e["High Tower Text"]=!0;e.Hiroshige=!0;e["Hoefler Text"]=!0;e["Humana Serif"]=!0;e.Imprint=!0;e["Ionic No. 5"]=!0;e.Janson=!0;e.Joanna=!0;e.Korinna=!0;e.Lexicon=!0;e["Liberation Serif"]=!0;e["Linux Libertine"]=!0;e.Literaturnaya=!0;e.Lucida=!0;e["Lucida Bright"]=!0;e.Melior=!0;e.Memphis=!0;e.Miller=!0;e.Minion=!0;e.Modern=!0;e["Mona Lisa"]=!0;e["Mrs Eaves"]=!0;e["MS Serif"]=!0;e["Museo Slab"]=!0;e["New York"]=!0;e["Nimbus Roman"]=!0;e["NPS Rawlinson Roadway"]=!0;e.NuptialScript=!0;e.Palatino=!0;e.Perpetua=!0;e.Plantin=!0;e["Plantin Schoolbook"]=!0;e.Playbill=!0;e["Poor Richard"]=!0;e["Rawlinson Roadway"]=!0;e.Renault=!0;e.Requiem=!0;e.Rockwell=!0;e.Roman=!0;e["Rotis Serif"]=!0;e.Sabon=!0;e.Scala=!0;e.Seagull=!0;e.Sistina=!0;e.Souvenir=!0;e.STIX=!0;e["Stone Informal"]=!0;e["Stone Serif"]=!0;e.Sylfaen=!0;e.Times=!0;e.Trajan=!0;e["Trinité"]=!0;e["Trump Mediaeval"]=!0;e.Utopia=!0;e["Vale Type"]=!0;e["Bitstream Vera"]=!0;e["Vera Serif"]=!0;e.Versailles=!0;e.Wanted=!0;e.Weiss=!0;e["Wide Latin"]=!0;e.Windsor=!0;e.XITS=!0}));t.getSerifFonts=c;const l=(0,a.getLookupTableFactory)((function(e){e.Dingbats=!0;e.Symbol=!0;e.ZapfDingbats=!0}));t.getSymbolsFonts=l;const h=(0,a.getLookupTableFactory)((function(e){e[2]=10;e[3]=32;e[4]=33;e[5]=34;e[6]=35;e[7]=36;e[8]=37;e[9]=38;e[10]=39;e[11]=40;e[12]=41;e[13]=42;e[14]=43;e[15]=44;e[16]=45;e[17]=46;e[18]=47;e[19]=48;e[20]=49;e[21]=50;e[22]=51;e[23]=52;e[24]=53;e[25]=54;e[26]=55;e[27]=56;e[28]=57;e[29]=58;e[30]=894;e[31]=60;e[32]=61;e[33]=62;e[34]=63;e[35]=64;e[36]=65;e[37]=66;e[38]=67;e[39]=68;e[40]=69;e[41]=70;e[42]=71;e[43]=72;e[44]=73;e[45]=74;e[46]=75;e[47]=76;e[48]=77;e[49]=78;e[50]=79;e[51]=80;e[52]=81;e[53]=82;e[54]=83;e[55]=84;e[56]=85;e[57]=86;e[58]=87;e[59]=88;e[60]=89;e[61]=90;e[62]=91;e[63]=92;e[64]=93;e[65]=94;e[66]=95;e[67]=96;e[68]=97;e[69]=98;e[70]=99;e[71]=100;e[72]=101;e[73]=102;e[74]=103;e[75]=104;e[76]=105;e[77]=106;e[78]=107;e[79]=108;e[80]=109;e[81]=110;e[82]=111;e[83]=112;e[84]=113;e[85]=114;e[86]=115;e[87]=116;e[88]=117;e[89]=118;e[90]=119;e[91]=120;e[92]=121;e[93]=122;e[94]=123;e[95]=124;e[96]=125;e[97]=126;e[98]=196;e[99]=197;e[100]=199;e[101]=201;e[102]=209;e[103]=214;e[104]=220;e[105]=225;e[106]=224;e[107]=226;e[108]=228;e[109]=227;e[110]=229;e[111]=231;e[112]=233;e[113]=232;e[114]=234;e[115]=235;e[116]=237;e[117]=236;e[118]=238;e[119]=239;e[120]=241;e[121]=243;e[122]=242;e[123]=244;e[124]=246;e[125]=245;e[126]=250;e[127]=249;e[128]=251;e[129]=252;e[130]=8224;e[131]=176;e[132]=162;e[133]=163;e[134]=167;e[135]=8226;e[136]=182;e[137]=223;e[138]=174;e[139]=169;e[140]=8482;e[141]=180;e[142]=168;e[143]=8800;e[144]=198;e[145]=216;e[146]=8734;e[147]=177;e[148]=8804;e[149]=8805;e[150]=165;e[151]=181;e[152]=8706;e[153]=8721;e[154]=8719;e[156]=8747;e[157]=170;e[158]=186;e[159]=8486;e[160]=230;e[161]=248;e[162]=191;e[163]=161;e[164]=172;e[165]=8730;e[166]=402;e[167]=8776;e[168]=8710;e[169]=171;e[170]=187;e[171]=8230;e[210]=218;e[223]=711;e[224]=321;e[225]=322;e[227]=353;e[229]=382;e[234]=253;e[252]=263;e[253]=268;e[254]=269;e[258]=258;e[260]=260;e[261]=261;e[265]=280;e[266]=281;e[268]=283;e[269]=313;e[275]=323;e[276]=324;e[278]=328;e[284]=345;e[285]=346;e[286]=347;e[292]=367;e[295]=377;e[296]=378;e[298]=380;e[305]=963;e[306]=964;e[307]=966;e[308]=8215;e[309]=8252;e[310]=8319;e[311]=8359;e[312]=8592;e[313]=8593;e[337]=9552;e[493]=1039;e[494]=1040;e[705]=1524;e[706]=8362;e[710]=64288;e[711]=64298;e[759]=1617;e[761]=1776;e[763]=1778;e[775]=1652;e[777]=1764;e[778]=1780;e[779]=1781;e[780]=1782;e[782]=771;e[783]=64726;e[786]=8363;e[788]=8532;e[790]=768;e[791]=769;e[792]=768;e[795]=803;e[797]=64336;e[798]=64337;e[799]=64342;e[800]=64343;e[801]=64344;e[802]=64345;e[803]=64362;e[804]=64363;e[805]=64364;e[2424]=7821;e[2425]=7822;e[2426]=7823;e[2427]=7824;e[2428]=7825;e[2429]=7826;e[2430]=7827;e[2433]=7682;e[2678]=8045;e[2679]=8046;e[2830]=1552;e[2838]=686;e[2840]=751;e[2842]=753;e[2843]=754;e[2844]=755;e[2846]=757;e[2856]=767;e[2857]=848;e[2858]=849;e[2862]=853;e[2863]=854;e[2864]=855;e[2865]=861;e[2866]=862;e[2906]=7460;e[2908]=7462;e[2909]=7463;e[2910]=7464;e[2912]=7466;e[2913]=7467;e[2914]=7468;e[2916]=7470;e[2917]=7471;e[2918]=7472;e[2920]=7474;e[2921]=7475;e[2922]=7476;e[2924]=7478;e[2925]=7479;e[2926]=7480;e[2928]=7482;e[2929]=7483;e[2930]=7484;e[2932]=7486;e[2933]=7487;e[2934]=7488;e[2936]=7490;e[2937]=7491;e[2938]=7492;e[2940]=7494;e[2941]=7495;e[2942]=7496;e[2944]=7498;e[2946]=7500;e[2948]=7502;e[2950]=7504;e[2951]=7505;e[2952]=7506;e[2954]=7508;e[2955]=7509;e[2956]=7510;e[2958]=7512;e[2959]=7513;e[2960]=7514;e[2962]=7516;e[2963]=7517;e[2964]=7518;e[2966]=7520;e[2967]=7521;e[2968]=7522;e[2970]=7524;e[2971]=7525;e[2972]=7526;e[2974]=7528;e[2975]=7529;e[2976]=7530;e[2978]=1537;e[2979]=1538;e[2980]=1539;e[2982]=1549;e[2983]=1551;e[2984]=1552;e[2986]=1554;e[2987]=1555;e[2988]=1556;e[2990]=1623;e[2991]=1624;e[2995]=1775;e[2999]=1791;e[3002]=64290;e[3003]=64291;e[3004]=64292;e[3006]=64294;e[3007]=64295;e[3008]=64296;e[3011]=1900;e[3014]=8223;e[3015]=8244;e[3017]=7532;e[3018]=7533;e[3019]=7534;e[3075]=7590;e[3076]=7591;e[3079]=7594;e[3080]=7595;e[3083]=7598;e[3084]=7599;e[3087]=7602;e[3088]=7603;e[3091]=7606;e[3092]=7607;e[3095]=7610;e[3096]=7611;e[3099]=7614;e[3100]=7615;e[3103]=7618;e[3104]=7619;e[3107]=8337;e[3108]=8338;e[3116]=1884;e[3119]=1885;e[3120]=1885;e[3123]=1886;e[3124]=1886;e[3127]=1887;e[3128]=1887;e[3131]=1888;e[3132]=1888;e[3135]=1889;e[3136]=1889;e[3139]=1890;e[3140]=1890;e[3143]=1891;e[3144]=1891;e[3147]=1892;e[3148]=1892;e[3153]=580;e[3154]=581;e[3157]=584;e[3158]=585;e[3161]=588;e[3162]=589;e[3165]=891;e[3166]=892;e[3169]=1274;e[3170]=1275;e[3173]=1278;e[3174]=1279;e[3181]=7622;e[3182]=7623;e[3282]=11799;e[3316]=578;e[3379]=42785;e[3393]=1159;e[3416]=8377}));t.getGlyphMapForStandardFonts=h;const u=(0,a.getLookupTableFactory)((function(e){e[227]=322;e[264]=261;e[291]=346}));t.getSupplementalGlyphMapForArialBlack=u;const d=(0,a.getLookupTableFactory)((function(e){e[1]=32;e[4]=65;e[17]=66;e[18]=67;e[24]=68;e[28]=69;e[38]=70;e[39]=71;e[44]=72;e[47]=73;e[58]=74;e[60]=75;e[62]=76;e[68]=77;e[69]=78;e[75]=79;e[87]=80;e[89]=81;e[90]=82;e[94]=83;e[100]=84;e[104]=85;e[115]=86;e[116]=87;e[121]=88;e[122]=89;e[127]=90;e[258]=97;e[268]=261;e[271]=98;e[272]=99;e[273]=263;e[282]=100;e[286]=101;e[295]=281;e[296]=102;e[336]=103;e[346]=104;e[349]=105;e[361]=106;e[364]=107;e[367]=108;e[371]=322;e[373]=109;e[374]=110;e[381]=111;e[383]=243;e[393]=112;e[395]=113;e[396]=114;e[400]=115;e[401]=347;e[410]=116;e[437]=117;e[448]=118;e[449]=119;e[454]=120;e[455]=121;e[460]=122;e[463]=380;e[853]=44;e[855]=58;e[856]=46;e[876]=47;e[878]=45;e[882]=45;e[894]=40;e[895]=41;e[896]=91;e[897]=93;e[923]=64;e[1004]=48;e[1005]=49;e[1006]=50;e[1007]=51;e[1008]=52;e[1009]=53;e[1010]=54;e[1011]=55;e[1012]=56;e[1013]=57;e[1081]=37;e[1085]=43;e[1086]=45}));t.getSupplementalGlyphMapForCalibri=d},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ToUnicodeMap=t.IdentityToUnicodeMap=void 0;var a=r(2);t.ToUnicodeMap=class ToUnicodeMap{constructor(e=[]){this._map=e}get length(){return this._map.length}forEach(e){for(const t in this._map)e(t,this._map[t].charCodeAt(0))}has(e){return void 0!==this._map[e]}get(e){return this._map[e]}charCodeOf(e){const t=this._map;if(t.length<=65536)return t.indexOf(e);for(const r in t)if(t[r]===e)return 0|r;return-1}amend(e){for(const t in e)this._map[t]=e[t]}};t.IdentityToUnicodeMap=class IdentityToUnicodeMap{constructor(e,t){this.firstChar=e;this.lastChar=t}get length(){return this.lastChar+1-this.firstChar}forEach(e){for(let t=this.firstChar,r=this.lastChar;t<=r;t++)e(t,t)}has(e){return this.firstChar<=e&&e<=this.lastChar}get(e){if(this.firstChar<=e&&e<=this.lastChar)return String.fromCharCode(e)}charCodeOf(e){return Number.isInteger(e)&&e>=this.firstChar&&e<=this.lastChar?e:-1}amend(e){(0,a.unreachable)("Should not call amend()")}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.CFFFont=void 0;var a=r(35),i=r(38),n=r(2);t.CFFFont=class CFFFont{constructor(e,t){this.properties=t;const r=new a.CFFParser(e,t,i.SEAC_ANALYSIS_ENABLED);this.cff=r.parse();this.cff.duplicateFirstGlyph();const s=new a.CFFCompiler(this.cff);this.seacs=this.cff.seacs;try{this.data=s.compile()}catch(r){(0,n.warn)("Failed to compile font "+t.loadedName);this.data=e}this._createBuiltInEncoding()}get numGlyphs(){return this.cff.charStrings.count}getCharset(){return this.cff.charset.charset}getGlyphMapping(){const e=this.cff,t=this.properties,r=e.charset.charset;let a,n;if(t.composite){a=Object.create(null);let i;if(e.isCIDFont)for(n=0;n=0){const a=r[t];a&&(i[e]=a)}}i.length>0&&(this.properties.builtInEncoding=i)}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.FontRendererFactory=void 0;var a=r(2),i=r(35),n=r(39),s=r(37),o=r(10);function getLong(e,t){return e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]}function getUshort(e,t){return e[t]<<8|e[t+1]}function getSubroutineBias(e){const t=e.length;let r=32768;t<1240?r=107:t<33900&&(r=1131);return r}function parseCmap(e,t,r){const i=1===getUshort(e,t+2)?getLong(e,t+8):getLong(e,t+16),n=getUshort(e,t+i);let s,o,c;if(4===n){getUshort(e,t+i+2);const r=getUshort(e,t+i+6)>>1;o=t+i+14;s=[];for(c=0;c>1;r>16;let n,s=0,o=0;a+=10;if(i<0)do{n=e[a]<<8|e[a+1];const i=e[a+2]<<8|e[a+3];a+=4;let c,l;if(1&n){c=(e[a]<<24|e[a+1]<<16)>>16;l=(e[a+2]<<24|e[a+3]<<16)>>16;a+=4}else{c=e[a++];l=e[a++]}if(2&n){s=c;o=l}else{s=0;o=0}let h=1,u=1,d=0,f=0;if(8&n){h=u=(e[a]<<24|e[a+1]<<16)/1073741824;a+=2}else if(64&n){h=(e[a]<<24|e[a+1]<<16)/1073741824;u=(e[a+2]<<24|e[a+3]<<16)/1073741824;a+=4}else if(128&n){h=(e[a]<<24|e[a+1]<<16)/1073741824;d=(e[a+2]<<24|e[a+3]<<16)/1073741824;f=(e[a+4]<<24|e[a+5]<<16)/1073741824;u=(e[a+6]<<24|e[a+7]<<16)/1073741824;a+=8}const g=r.glyphs[i];if(g){t.push({cmd:"save"},{cmd:"transform",args:[h,d,f,u,s,o]});compileGlyf(g,t,r);t.push({cmd:"restore"})}}while(32&n);else{const t=[];let r,c;for(r=0;r0;)h.push({flags:n})}for(r=0;r>16;a+=2;break;case 2:s-=e[a++];break;case 18:s+=e[a++]}h[r].x=s}for(r=0;r>16;a+=2;break;case 4:o-=e[a++];break;case 36:o+=e[a++]}h[r].y=o}let u=0;for(a=0;a>1;S=!0;break;case 4:c+=n.pop();moveTo(o,c);S=!0;break;case 5:for(;n.length>0;){o+=n.shift();c+=n.shift();lineTo(o,c)}break;case 6:for(;n.length>0;){o+=n.shift();lineTo(o,c);if(0===n.length)break;c+=n.shift();lineTo(o,c)}break;case 7:for(;n.length>0;){c+=n.shift();lineTo(o,c);if(0===n.length)break;o+=n.shift();lineTo(o,c)}break;case 8:for(;n.length>0;){u=o+n.shift();f=c+n.shift();d=u+n.shift();g=f+n.shift();o=d+n.shift();c=g+n.shift();bezierCurveTo(u,f,d,g,o,c)}break;case 10:y=n.pop();w=null;if(r.isCFFCIDFont){const e=r.fdSelect.getFDIndex(i);if(e>=0&&eMath.abs(c-t)?o+=n.shift():c+=n.shift();bezierCurveTo(u,f,d,g,o,c);break;default:throw new a.FormatError(`unknown operator: 12 ${x}`)}break;case 14:if(n.length>=4){const e=n.pop(),a=n.pop();c=n.pop();o=n.pop();t.push({cmd:"save"},{cmd:"translate",args:[o,c]});let i=lookupCmap(r.cmap,String.fromCharCode(r.glyphNameMap[s.StandardEncoding[e]]));compileCharString(r.glyphs[i.glyphId],t,r,i.glyphId);t.push({cmd:"restore"});i=lookupCmap(r.cmap,String.fromCharCode(r.glyphNameMap[s.StandardEncoding[a]]));compileCharString(r.glyphs[i.glyphId],t,r,i.glyphId)}return;case 18:l+=n.length>>1;S=!0;break;case 19:case 20:l+=n.length>>1;h+=l+7>>3;S=!0;break;case 21:c+=n.pop();o+=n.pop();moveTo(o,c);S=!0;break;case 22:o+=n.pop();moveTo(o,c);S=!0;break;case 23:l+=n.length>>1;S=!0;break;case 24:for(;n.length>2;){u=o+n.shift();f=c+n.shift();d=u+n.shift();g=f+n.shift();o=d+n.shift();c=g+n.shift();bezierCurveTo(u,f,d,g,o,c)}o+=n.shift();c+=n.shift();lineTo(o,c);break;case 25:for(;n.length>6;){o+=n.shift();c+=n.shift();lineTo(o,c)}u=o+n.shift();f=c+n.shift();d=u+n.shift();g=f+n.shift();o=d+n.shift();c=g+n.shift();bezierCurveTo(u,f,d,g,o,c);break;case 26:n.length%2&&(o+=n.shift());for(;n.length>0;){u=o;f=c+n.shift();d=u+n.shift();g=f+n.shift();o=d;c=g+n.shift();bezierCurveTo(u,f,d,g,o,c)}break;case 27:n.length%2&&(c+=n.shift());for(;n.length>0;){u=o+n.shift();f=c;d=u+n.shift();g=f+n.shift();o=d+n.shift();c=g;bezierCurveTo(u,f,d,g,o,c)}break;case 28:n.push((e[h]<<24|e[h+1]<<16)>>16);h+=2;break;case 29:y=n.pop()+r.gsubrsBias;w=r.gsubrs[y];w&&parse(w);break;case 30:for(;n.length>0;){u=o;f=c+n.shift();d=u+n.shift();g=f+n.shift();o=d+n.shift();c=g+(1===n.length?n.shift():0);bezierCurveTo(u,f,d,g,o,c);if(0===n.length)break;u=o+n.shift();f=c;d=u+n.shift();g=f+n.shift();c=g+n.shift();o=d+(1===n.length?n.shift():0);bezierCurveTo(u,f,d,g,o,c)}break;case 31:for(;n.length>0;){u=o+n.shift();f=c;d=u+n.shift();g=f+n.shift();c=g+n.shift();o=d+(1===n.length?n.shift():0);bezierCurveTo(u,f,d,g,o,c);if(0===n.length)break;u=o;f=c+n.shift();d=u+n.shift();g=f+n.shift();o=d+n.shift();c=g+(1===n.length?n.shift():0);bezierCurveTo(u,f,d,g,o,c)}break;default:if(x<32)throw new a.FormatError(`unknown operator: ${x}`);if(x<247)n.push(x-139);else if(x<251)n.push(256*(x-247)+e[h++]+108);else if(x<255)n.push(256*-(x-251)-e[h++]-108);else{n.push((e[h]<<24|e[h+1]<<16|e[h+2]<<8|e[h+3])/65536);h+=4}}S&&(n.length=0)}}(e)}const c=[];class CompiledFont{constructor(e){this.constructor===CompiledFont&&(0,a.unreachable)("Cannot initialize CompiledFont.");this.fontMatrix=e;this.compiledGlyphs=Object.create(null);this.compiledCharCodeToGlyphId=Object.create(null)}getPathJs(e){const{charCode:t,glyphId:r}=lookupCmap(this.cmap,e);let a=this.compiledGlyphs[r];if(!a)try{a=this.compileGlyph(this.glyphs[r],r);this.compiledGlyphs[r]=a}catch(e){this.compiledGlyphs[r]=c;void 0===this.compiledCharCodeToGlyphId[t]&&(this.compiledCharCodeToGlyphId[t]=r);throw e}void 0===this.compiledCharCodeToGlyphId[t]&&(this.compiledCharCodeToGlyphId[t]=r);return a}compileGlyph(e,t){if(!e||0===e.length||14===e[0])return c;let r=this.fontMatrix;if(this.isCFFCIDFont){const e=this.fdSelect.getFDIndex(t);if(e>=0&&e{Object.defineProperty(t,"__esModule",{value:!0});t.GlyfTable=void 0;t.GlyfTable=class GlyfTable{constructor({glyfTable:e,isGlyphLocationsLong:t,locaTable:r,numGlyphs:a}){this.glyphs=[];const i=new DataView(r.buffer,r.byteOffset,r.byteLength),n=new DataView(e.buffer,e.byteOffset,e.byteLength),s=t?4:2;let o=t?i.getUint32(0):2*i.getUint16(0),c=0;for(let e=0;ee+(t.getSize()+3&-4)),0)}write(){const e=this.getSize(),t=new DataView(new ArrayBuffer(e)),r=e>131070,a=r?4:2,i=new DataView(new ArrayBuffer((this.glyphs.length+1)*a));r?i.setUint32(0,0):i.setUint16(0,0);let n=0,s=0;for(const e of this.glyphs){n+=e.write(n,t);n=n+3&-4;s+=a;r?i.setUint32(s,n):i.setUint16(s,n>>1)}return{isLocationLong:r,loca:new Uint8Array(i.buffer),glyf:new Uint8Array(t.buffer)}}scale(e){for(let t=0,r=this.glyphs.length;te+t.getSize()),0);return this.header.getSize()+e}write(e,t){if(!this.header)return 0;const r=e;e+=this.header.write(e,t);if(this.simple)e+=this.simple.write(e,t);else for(const r of this.composites)e+=r.write(e,t);return e-r}scale(e){if(!this.header)return;const t=(this.header.xMin+this.header.xMax)/2;this.header.scale(t,e);if(this.simple)this.simple.scale(t,e);else for(const r of this.composites)r.scale(t,e)}}class GlyphHeader{constructor({numberOfContours:e,xMin:t,yMin:r,xMax:a,yMax:i}){this.numberOfContours=e;this.xMin=t;this.yMin=r;this.xMax=a;this.yMax=i}static parse(e,t){return[10,new GlyphHeader({numberOfContours:t.getInt16(e),xMin:t.getInt16(e+2),yMin:t.getInt16(e+4),xMax:t.getInt16(e+6),yMax:t.getInt16(e+8)})]}getSize(){return 10}write(e,t){t.setInt16(e,this.numberOfContours);t.setInt16(e+2,this.xMin);t.setInt16(e+4,this.yMin);t.setInt16(e+6,this.xMax);t.setInt16(e+8,this.yMax);return 10}scale(e,t){this.xMin=Math.round(e+(this.xMin-e)*t);this.xMax=Math.round(e+(this.xMax-e)*t)}}class Contour{constructor({flags:e,xCoordinates:t,yCoordinates:r}){this.xCoordinates=t;this.yCoordinates=r;this.flags=e}}class SimpleGlyph{constructor({contours:e,instructions:t}){this.contours=e;this.instructions=t}static parse(e,t,r){const a=[];for(let i=0;i255?e+=2:o>0&&(e+=1);t=n;o=Math.abs(s-r);o>255?e+=2:o>0&&(e+=1);r=s}}return e}write(e,t){const r=e,a=[],i=[],n=[];let s=0,o=0;for(const r of this.contours){for(let e=0,t=r.xCoordinates.length;e=0?18:2;a.push(e)}else a.push(l)}s=c;const h=r.yCoordinates[e];l=h-o;if(0===l){t|=32;i.push(0)}else{const e=Math.abs(l);if(e<=255){t|=l>=0?36:4;i.push(e)}else i.push(l)}o=h;n.push(t)}t.setUint16(e,a.length-1);e+=2}t.setUint16(e,this.instructions.length);e+=2;if(this.instructions.length){new Uint8Array(t.buffer,0,t.buffer.byteLength).set(this.instructions,e);e+=this.instructions.length}for(const r of n)t.setUint8(e++,r);for(let r=0,i=a.length;r=-128&&this.argument1<=127&&this.argument2>=-128&&this.argument2<=127||(e+=2):this.argument1>=0&&this.argument1<=255&&this.argument2>=0&&this.argument2<=255||(e+=2);return e}write(e,t){const r=e;2&this.flags?this.argument1>=-128&&this.argument1<=127&&this.argument2>=-128&&this.argument2<=127||(this.flags|=1):this.argument1>=0&&this.argument1<=255&&this.argument2>=0&&this.argument2<=255||(this.flags|=1);t.setUint16(e,this.flags);t.setUint16(e+2,this.glyphIndex);e+=4;if(1&this.flags){if(2&this.flags){t.setInt16(e,this.argument1);t.setInt16(e+2,this.argument2)}else{t.setUint16(e,this.argument1);t.setUint16(e+2,this.argument2)}e+=4}else{t.setUint8(e,this.argument1);t.setUint8(e+1,this.argument2);e+=2}if(256&this.flags){t.setUint16(e,this.instructions.length);e+=2;if(this.instructions.length){new Uint8Array(t.buffer,0,t.buffer.byteLength).set(this.instructions,e);e+=this.instructions.length}}return e-r}scale(e,t){}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.OpenTypeFileBuilder=void 0;var a=r(9),i=r(2);function writeInt16(e,t,r){e[t]=r>>8&255;e[t+1]=255&r}function writeInt32(e,t,r){e[t]=r>>24&255;e[t+1]=r>>16&255;e[t+2]=r>>8&255;e[t+3]=255&r}function writeData(e,t,r){if(r instanceof Uint8Array)e.set(r,t);else if("string"==typeof r)for(let a=0,i=r.length;ar;){r<<=1;a++}const i=r*t;return{range:i,entry:a,rangeShift:t*e-i}}toArray(){let e=this.sfnt;const t=this.tables,r=Object.keys(t);r.sort();const n=r.length;let s,o,c,l,h,u=12+16*n;const d=[u];for(s=0;s>>0;d.push(u)}const f=new Uint8Array(u);for(s=0;s>>0}writeInt32(f,u+4,e);writeInt32(f,u+8,d[s]);writeInt32(f,u+12,t[h].length);u+=16}return f}addTable(e,t){if(e in this.tables)throw new Error("Table "+e+" already exists");this.tables[e]=t}}t.OpenTypeFileBuilder=OpenTypeFileBuilder},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.Type1Font=void 0;var a=r(35),i=r(38),n=r(9),s=r(10),o=r(48),c=r(2);function findBlock(e,t,r){const a=e.length,i=t.length,s=a-i;let o=r,c=!1;for(;o=i){o+=r;for(;o=0&&(a[e]=n)}}return(0,i.type1FontGlyphMapping)(e,a,r)}hasGlyphId(e){if(e<0||e>=this.numGlyphs)return!1;if(0===e)return!0;return this.charstrings[e-1].charstring.length>0}getSeacs(e){const t=[];for(let r=0,a=e.length;r0;e--)t[e]-=t[e-1];g.setByName(e,t)}s.topDict.privateDict=g;const m=new a.CFFIndex;for(u=0,d=i.length;u{Object.defineProperty(t,"__esModule",{value:!0});t.Type1Parser=void 0;var a=r(37),i=r(9),n=r(10),s=r(2);const o=function Type1CharStringClosure(){const e=[4],t=[5],r=[6],a=[7],i=[8],n=[12,35],o=[14],c=[21],l=[22],h=[30],u=[31];return class Type1CharString{constructor(){this.width=0;this.lsb=0;this.flexing=!1;this.output=[];this.stack=[]}convert(d,f,g){const p=d.length;let m,b,y,w=!1;for(let S=0;Sa)return!0;const i=a-e;for(let e=i;e>8&255,255&t);else{t=65536*t|0;this.output.push(255,t>>24&255,t>>16&255,t>>8&255,255&t)}}this.output.push.apply(this.output,t);r?this.stack.splice(i,e):this.stack.length=0;return!1}}}(),c=function Type1ParserClosure(){function isHexDigit(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function decrypt(e,t,r){if(r>=e.length)return new Uint8Array(0);let a,i,n=0|t;for(a=0;a>8;n=52845*(t+n)+22719&65535}return o}function isSpecial(e){return 47===e||91===e||93===e||123===e||125===e||40===e||41===e}return class Type1Parser{constructor(e,t,r){if(t){const t=e.getBytes(),r=!((isHexDigit(t[0])||(0,i.isWhiteSpace)(t[0]))&&isHexDigit(t[1])&&isHexDigit(t[2])&&isHexDigit(t[3])&&isHexDigit(t[4])&&isHexDigit(t[5])&&isHexDigit(t[6])&&isHexDigit(t[7]));e=new n.Stream(r?decrypt(t,55665,4):function decryptAscii(e,t,r){let a=0|t;const i=e.length,n=new Uint8Array(i>>>1);let s,o;for(s=0,o=0;s>8;a=52845*(e+a)+22719&65535}}return n.slice(r,o)}(t,55665,4))}this.seacAnalysisEnabled=!!r;this.stream=e;this.nextChar()}readNumberArray(){this.getToken();const e=[];for(;;){const t=this.getToken();if(null===t||"]"===t||"}"===t)break;e.push(parseFloat(t||0))}return e}readNumber(){const e=this.getToken();return parseFloat(e||0)}readInt(){const e=this.getToken();return 0|parseInt(e||0,10)}readBoolean(){return"true"===this.getToken()?1:0}nextChar(){return this.currentChar=this.stream.getByte()}getToken(){let e=!1,t=this.currentChar;for(;;){if(-1===t)return null;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(!(0,i.isWhiteSpace)(t))break;t=this.nextChar()}if(isSpecial(t)){this.nextChar();return String.fromCharCode(t)}let r="";do{r+=String.fromCharCode(t);t=this.nextChar()}while(t>=0&&!(0,i.isWhiteSpace)(t)&&!isSpecial(t));return r}readCharStrings(e,t){return-1===t?e:decrypt(e,4330,t)}extractFontProgram(e){const t=this.stream,r=[],a=[],i=Object.create(null);i.lenIV=4;const n={subrs:[],charstrings:[],properties:{privateData:i}};let s,c,l,h,u;for(;null!==(s=this.getToken());)if("/"===s){s=this.getToken();switch(s){case"CharStrings":this.getToken();this.getToken();this.getToken();this.getToken();for(;;){s=this.getToken();if(null===s||"end"===s)break;if("/"!==s)continue;const e=this.getToken();c=this.readInt();this.getToken();l=c>0?t.getBytes(c):new Uint8Array(0);h=n.properties.privateData.lenIV;u=this.readCharStrings(l,h);this.nextChar();s=this.getToken();"noaccess"===s&&this.getToken();a.push({glyph:e,encoded:u})}break;case"Subrs":this.readInt();this.getToken();for(;"dup"===this.getToken();){const e=this.readInt();c=this.readInt();this.getToken();l=c>0?t.getBytes(c):new Uint8Array(0);h=n.properties.privateData.lenIV;u=this.readCharStrings(l,h);this.nextChar();s=this.getToken();"noaccess"===s&&this.getToken();r[e]=u}break;case"BlueValues":case"OtherBlues":case"FamilyBlues":case"FamilyOtherBlues":const e=this.readNumberArray();e.length>0&&e.length,0;break;case"StemSnapH":case"StemSnapV":n.properties.privateData[s]=this.readNumberArray();break;case"StdHW":case"StdVW":n.properties.privateData[s]=this.readNumberArray()[0];break;case"BlueShift":case"lenIV":case"BlueFuzz":case"BlueScale":case"LanguageGroup":case"ExpansionFactor":n.properties.privateData[s]=this.readNumber();break;case"ForceBold":n.properties.privateData[s]=this.readBoolean()}}for(let t=0;t-1&&void 0===e.widths[t]&&t>=e.firstChar&&t<=e.lastChar&&(e.widths[t]=s.width)}}return n}extractFontHeader(e){let t;for(;null!==(t=this.getToken());)if("/"===t){t=this.getToken();switch(t){case"FontMatrix":const r=this.readNumberArray();e.fontMatrix=r;break;case"Encoding":const i=this.getToken();let n;if(/^\d+$/.test(i)){n=[];const e=0|parseInt(i,10);this.getToken();for(let r=0;r{Object.defineProperty(t,"__esModule",{value:!0});t.getTilingPatternIR=function getTilingPatternIR(e,t,r){const i=t.getArray("Matrix"),n=a.Util.normalizeRect(t.getArray("BBox")),s=t.get("XStep"),o=t.get("YStep"),c=t.get("PaintType"),l=t.get("TilingType");if(n[2]-n[0]==0||n[3]-n[1]==0)throw new a.FormatError(`Invalid getTilingPatternIR /BBox array: [${n}].`);return["TilingPattern",r,e,i,n,s,o,c,l]};t.Pattern=void 0;var a=r(2),i=r(14),n=r(5),s=r(9);const o=2,c=3,l=4,h=5,u=6,d=7;t.Pattern=class Pattern{constructor(){(0,a.unreachable)("Cannot initialize Pattern.")}static parseShading(e,t,r,i,f,g,p){const m=(0,n.isStream)(e)?e.dict:e,b=m.get("ShadingType");try{switch(b){case o:case c:return new RadialAxialShading(m,t,r,i,g,p);case l:case h:case u:case d:return new MeshShading(e,t,r,i,g,p);default:throw new a.FormatError("Unsupported ShadingType: "+b)}}catch(e){if(e instanceof s.MissingDataException)throw e;f.send("UnsupportedFeature",{featureId:a.UNSUPPORTED_FEATURES.shadingPattern});(0,a.warn)(e);return new DummyShading}}};class BaseShading{static get SMALL_NUMBER(){return(0,a.shadow)(this,"SMALL_NUMBER",1e-6)}constructor(){this.constructor===BaseShading&&(0,a.unreachable)("Cannot initialize BaseShading.")}getIR(){(0,a.unreachable)("Abstract method `getIR` called.")}}class RadialAxialShading extends BaseShading{constructor(e,t,r,n,s,o){super();this.matrix=t;this.coordsArr=e.getArray("Coords");this.shadingType=e.get("ShadingType");const l=i.ColorSpace.parse({cs:e.getRaw("ColorSpace")||e.getRaw("CS"),xref:r,resources:n,pdfFunctionFactory:s,localColorSpaceCache:o}),h=e.getArray("BBox");Array.isArray(h)&&4===h.length?this.bbox=a.Util.normalizeRect(h):this.bbox=null;let u=0,d=1;if(e.has("Domain")){const t=e.getArray("Domain");u=t[0];d=t[1]}let f=!1,g=!1;if(e.has("Extend")){const t=e.getArray("Extend");f=t[0];g=t[1]}if(!(this.shadingType!==c||f&&g)){const[e,t,r,i,n,s]=this.coordsArr,o=Math.hypot(e-i,t-n);r<=s+o&&s<=r+o&&(0,a.warn)("Unsupported radial gradient.")}this.extendStart=f;this.extendEnd=g;const p=e.getRaw("Function"),m=s.createFromArray(p),b=(d-u)/10,y=this.colorStops=[];if(u>=d||b<=0){(0,a.info)("Bad shading domain.");return}const w=new Float32Array(l.numComps),S=new Float32Array(1);let x;for(let e=0;e<=10;e++){S[0]=u+e*b;m(S,0,w,0);x=l.getRgb(w,0);const t=a.Util.makeHexColor(x[0],x[1],x[2]);y.push([e/10,t])}let k="transparent";if(e.has("Background")){x=l.getRgb(e.get("Background"),0);k=a.Util.makeHexColor(x[0],x[1],x[2])}if(!f){y.unshift([0,k]);y[1][0]+=BaseShading.SMALL_NUMBER}if(!g){y[y.length-1][0]-=BaseShading.SMALL_NUMBER;y.push([1,k])}this.colorStops=y}getIR(){const e=this.coordsArr,t=this.shadingType;let r,i,n,s,l;if(t===o){i=[e[0],e[1]];n=[e[2],e[3]];s=null;l=null;r="axial"}else if(t===c){i=[e[0],e[1]];n=[e[3],e[4]];s=e[2];l=e[5];r="radial"}else(0,a.unreachable)(`getPattern type unknown: ${t}`);return["RadialAxial",r,this.bbox,this.colorStops,i,n,s,l,this.matrix]}}class MeshStreamReader{constructor(e,t){this.stream=e;this.context=t;this.buffer=0;this.bufferLength=0;const r=t.numComps;this.tmpCompsBuf=new Float32Array(r);const a=t.colorSpace.numComps;this.tmpCsCompsBuf=t.colorFn?new Float32Array(a):this.tmpCompsBuf}get hasData(){if(this.stream.end)return this.stream.pos0)return!0;const e=this.stream.getByte();if(e<0)return!1;this.buffer=e;this.bufferLength=8;return!0}readBits(e){let t=this.buffer,r=this.bufferLength;if(32===e){if(0===r)return(this.stream.getByte()<<24|this.stream.getByte()<<16|this.stream.getByte()<<8|this.stream.getByte())>>>0;t=t<<24|this.stream.getByte()<<16|this.stream.getByte()<<8|this.stream.getByte();const e=this.stream.getByte();this.buffer=e&(1<>r)>>>0}if(8===e&&0===r)return this.stream.getByte();for(;r>r}align(){this.buffer=0;this.bufferLength=0}readFlag(){return this.readBits(this.context.bitsPerFlag)}readCoordinate(){const e=this.context.bitsPerCoordinate,t=this.readBits(e),r=this.readBits(e),a=this.context.decode,i=e<32?1/((1<n?n:e;t=t>s?s:t;r=r{Object.defineProperty(t,"__esModule",{value:!0});t.isPDFFunction=function isPDFFunction(e){let t;if("object"!=typeof e)return!1;if((0,a.isDict)(e))t=e;else{if(!(0,a.isStream)(e))return!1;t=e.dict}return t.has("FunctionType")};t.PostScriptEvaluator=t.PostScriptCompiler=t.PDFFunctionFactory=void 0;var a=r(5),i=r(2),n=r(51),s=r(52);t.PDFFunctionFactory=class PDFFunctionFactory{constructor({xref:e,isEvalSupported:t=!0}){this.xref=e;this.isEvalSupported=!1!==t}create(e){const t=this.getCached(e);if(t)return t;const r=PDFFunction.parse({xref:this.xref,isEvalSupported:this.isEvalSupported,fn:e instanceof a.Ref?this.xref.fetch(e):e});this._cache(e,r);return r}createFromArray(e){const t=this.getCached(e);if(t)return t;const r=PDFFunction.parseArray({xref:this.xref,isEvalSupported:this.isEvalSupported,fnObj:e instanceof a.Ref?this.xref.fetch(e):e});this._cache(e,r);return r}getCached(e){let t;e instanceof a.Ref?t=e:e instanceof a.Dict?t=e.objId:(0,a.isStream)(e)&&(t=e.dict&&e.dict.objId);if(t){const e=this._localFunctionCache.getByRef(t);if(e)return e}return null}_cache(e,t){if(!t)throw new Error('PDFFunctionFactory._cache - expected "parsedFunction" argument.');let r;e instanceof a.Ref?r=e:e instanceof a.Dict?r=e.objId:(0,a.isStream)(e)&&(r=e.dict&&e.dict.objId);r&&this._localFunctionCache.set(null,r,t)}get _localFunctionCache(){return(0,i.shadow)(this,"_localFunctionCache",new s.LocalFunctionCache)}};function toNumberArray(e){if(!Array.isArray(e))return null;const t=e.length;for(let r=0;r>c)*h;l&=(1<r?e=r:e0&&(d=o[u-1]);let f=a[1];u>1,d=s.length>>1,f=new PostScriptEvaluator(h),g=Object.create(null);let p=8192;const m=new Float32Array(d);return function constructPostScriptFn(e,t,r,a){let i,n,s="";const o=m;for(i=0;ie&&(n=e)}h[i]=n}if(p>0){p--;g[s]=h}r.set(h,a)}}}class PostScriptStack{static get MAX_STACK_SIZE(){return(0,i.shadow)(this,"MAX_STACK_SIZE",100)}constructor(e){this.stack=e?Array.prototype.slice.call(e,0):[]}push(e){if(this.stack.length>=PostScriptStack.MAX_STACK_SIZE)throw new Error("PostScript function stack overflow.");this.stack.push(e)}pop(){if(this.stack.length<=0)throw new Error("PostScript function stack underflow.");return this.stack.pop()}copy(e){if(this.stack.length+e>=PostScriptStack.MAX_STACK_SIZE)throw new Error("PostScript function stack overflow.");const t=this.stack;for(let r=t.length-e,a=e-1;a>=0;a--,r++)t.push(t[r])}index(e){this.push(this.stack[this.stack.length-e-1])}roll(e,t){const r=this.stack,a=r.length-e,i=r.length-1,n=a+(t-Math.floor(t/e)*e);for(let e=a,t=i;e0?t.push(o<>c);break;case"ceiling":o=t.pop();t.push(Math.ceil(o));break;case"copy":o=t.pop();t.copy(o);break;case"cos":o=t.pop();t.push(Math.cos(o));break;case"cvi":o=0|t.pop();t.push(o);break;case"cvr":break;case"div":c=t.pop();o=t.pop();t.push(o/c);break;case"dup":t.copy(1);break;case"eq":c=t.pop();o=t.pop();t.push(o===c);break;case"exch":t.roll(2,1);break;case"exp":c=t.pop();o=t.pop();t.push(o**c);break;case"false":t.push(!1);break;case"floor":o=t.pop();t.push(Math.floor(o));break;case"ge":c=t.pop();o=t.pop();t.push(o>=c);break;case"gt":c=t.pop();o=t.pop();t.push(o>c);break;case"idiv":c=t.pop();o=t.pop();t.push(o/c|0);break;case"index":o=t.pop();t.index(o);break;case"le":c=t.pop();o=t.pop();t.push(o<=c);break;case"ln":o=t.pop();t.push(Math.log(o));break;case"log":o=t.pop();t.push(Math.log(o)/Math.LN10);break;case"lt":c=t.pop();o=t.pop();t.push(o=t?new AstLiteral(t):e.max<=t?e:new AstMin(e,t)}return class PostScriptCompiler{compile(e,t,r){const a=[],i=[],n=t.length>>1,s=r.length>>1;let o,c,l,h,u,d,f,g,p=0;for(let e=0;et.min){o.unshift("Math.max(",n,", ");o.push(")")}if(s{Object.defineProperty(t,"__esModule",{value:!0});t.PostScriptParser=t.PostScriptLexer=void 0;var a=r(2),i=r(5),n=r(9);t.PostScriptParser=class PostScriptParser{constructor(e){this.lexer=e;this.operators=[];this.token=null;this.prev=null}nextToken(){this.prev=this.token;this.token=this.lexer.getToken()}accept(e){if(this.token.type===e){this.nextToken();return!0}return!1}expect(e){if(this.accept(e))return!0;throw new a.FormatError(`Unexpected symbol: found ${this.token.type} expected ${e}.`)}parse(){this.nextToken();this.expect(s.LBRACE);this.parseBlock();this.expect(s.RBRACE);return this.operators}parseBlock(){for(;;)if(this.accept(s.NUMBER))this.operators.push(this.prev.value);else if(this.accept(s.OPERATOR))this.operators.push(this.prev.value);else{if(!this.accept(s.LBRACE))return;this.parseCondition()}}parseCondition(){const e=this.operators.length;this.operators.push(null,null);this.parseBlock();this.expect(s.RBRACE);if(this.accept(s.IF)){this.operators[e]=this.operators.length;this.operators[e+1]="jz"}else{if(!this.accept(s.LBRACE))throw new a.FormatError("PS Function: error parsing conditional.");{const t=this.operators.length;this.operators.push(null,null);const r=this.operators.length;this.parseBlock();this.expect(s.RBRACE);this.expect(s.IFELSE);this.operators[t]=this.operators.length;this.operators[t+1]="j";this.operators[e]=r;this.operators[e+1]="jz"}}}};const s={LBRACE:0,RBRACE:1,NUMBER:2,OPERATOR:3,IF:4,IFELSE:5};class PostScriptToken{static get opCache(){return(0,a.shadow)(this,"opCache",Object.create(null))}constructor(e,t){this.type=e;this.value=t}static getOperator(e){const t=PostScriptToken.opCache[e];return t||(PostScriptToken.opCache[e]=new PostScriptToken(s.OPERATOR,e))}static get LBRACE(){return(0,a.shadow)(this,"LBRACE",new PostScriptToken(s.LBRACE,"{"))}static get RBRACE(){return(0,a.shadow)(this,"RBRACE",new PostScriptToken(s.RBRACE,"}"))}static get IF(){return(0,a.shadow)(this,"IF",new PostScriptToken(s.IF,"IF"))}static get IFELSE(){return(0,a.shadow)(this,"IFELSE",new PostScriptToken(s.IFELSE,"IFELSE"))}}t.PostScriptLexer=class PostScriptLexer{constructor(e){this.stream=e;this.nextChar();this.strBuf=[]}nextChar(){return this.currentChar=this.stream.getByte()}getToken(){let e=!1,t=this.currentChar;for(;;){if(t<0)return i.EOF;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(!(0,n.isWhiteSpace)(t))break;t=this.nextChar()}switch(0|t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 43:case 45:case 46:return new PostScriptToken(s.NUMBER,this.getNumber());case 123:this.nextChar();return PostScriptToken.LBRACE;case 125:this.nextChar();return PostScriptToken.RBRACE}const r=this.strBuf;r.length=0;r[0]=String.fromCharCode(t);for(;(t=this.nextChar())>=0&&(t>=65&&t<=90||t>=97&&t<=122);)r.push(String.fromCharCode(t));const a=r.join("");switch(a.toLowerCase()){case"if":return PostScriptToken.IF;case"ifelse":return PostScriptToken.IFELSE;default:return PostScriptToken.getOperator(a)}}getNumber(){let e=this.currentChar;const t=this.strBuf;t.length=0;t[0]=String.fromCharCode(e);for(;(e=this.nextChar())>=0&&(e>=48&&e<=57||45===e||46===e);)t.push(String.fromCharCode(e));const r=parseFloat(t.join(""));if(isNaN(r))throw new a.FormatError(`Invalid floating point number: ${r}`);return r}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.LocalTilingPatternCache=t.LocalImageCache=t.LocalGStateCache=t.LocalFunctionCache=t.LocalColorSpaceCache=t.GlobalImageCache=void 0;var a=r(2),i=r(5);class BaseLocalCache{constructor(e){this.constructor===BaseLocalCache&&(0,a.unreachable)("Cannot initialize BaseLocalCache.");if(!e||!e.onlyRefs){this._nameRefMap=new Map;this._imageMap=new Map}this._imageCache=new i.RefSetCache}getByName(e){const t=this._nameRefMap.get(e);return t?this.getByRef(t):this._imageMap.get(e)||null}getByRef(e){return this._imageCache.get(e)||null}set(e,t,r){(0,a.unreachable)("Abstract method `set` called.")}}t.LocalImageCache=class LocalImageCache extends BaseLocalCache{set(e,t=null,r){if("string"!=typeof e)throw new Error('LocalImageCache.set - expected "name" argument.');if(t){if(this._imageCache.has(t))return;this._nameRefMap.set(e,t);this._imageCache.put(t,r)}else this._imageMap.has(e)||this._imageMap.set(e,r)}};t.LocalColorSpaceCache=class LocalColorSpaceCache extends BaseLocalCache{set(e=null,t=null,r){if("string"!=typeof e&&!t)throw new Error('LocalColorSpaceCache.set - expected "name" and/or "ref" argument.');if(t){if(this._imageCache.has(t))return;null!==e&&this._nameRefMap.set(e,t);this._imageCache.put(t,r)}else this._imageMap.has(e)||this._imageMap.set(e,r)}};t.LocalFunctionCache=class LocalFunctionCache extends BaseLocalCache{constructor(e){super({onlyRefs:!0})}getByName(e){(0,a.unreachable)("Should not call `getByName` method.")}set(e=null,t,r){if(!t)throw new Error('LocalFunctionCache.set - expected "ref" argument.');this._imageCache.has(t)||this._imageCache.put(t,r)}};t.LocalGStateCache=class LocalGStateCache extends BaseLocalCache{set(e,t=null,r){if("string"!=typeof e)throw new Error('LocalGStateCache.set - expected "name" argument.');if(t){if(this._imageCache.has(t))return;this._nameRefMap.set(e,t);this._imageCache.put(t,r)}else this._imageMap.has(e)||this._imageMap.set(e,r)}};t.LocalTilingPatternCache=class LocalTilingPatternCache extends BaseLocalCache{set(e,t=null,r){if("string"!=typeof e)throw new Error('LocalTilingPatternCache.set - expected "name" argument.');if(t){if(this._imageCache.has(t))return;this._nameRefMap.set(e,t);this._imageCache.put(t,r)}else this._imageMap.has(e)||this._imageMap.set(e,r)}};class GlobalImageCache{static get NUM_PAGES_THRESHOLD(){return(0,a.shadow)(this,"NUM_PAGES_THRESHOLD",2)}static get MIN_IMAGES_TO_CACHE(){return(0,a.shadow)(this,"MIN_IMAGES_TO_CACHE",10)}static get MAX_BYTE_SIZE(){return(0,a.shadow)(this,"MAX_BYTE_SIZE",4e7)}constructor(){this._refCache=new i.RefSetCache;this._imageCache=new i.RefSetCache}get _byteSize(){let e=0;this._imageCache.forEach((t=>{e+=t.byteSize}));return e}get _cacheLimitReached(){return!(this._imageCache.size{Object.defineProperty(t,"__esModule",{value:!0});t.bidi=function bidi(e,t,r){let c=!0;const l=e.length;if(0===l||r)return createBidiText(e,c,r);s.length=l;o.length=l;let h,u,d=0;for(h=0;h=0&&"ET"===o[e];--e)o[e]="EN";for(let e=h+1;e0&&(t=o[h-1]);let r=m;e+1w&&isOdd(w)&&(x=w)}for(w=S;w>=x;--w){let e=-1;for(h=0,u=f.length;h=0){reverseValues(s,e,h);e=-1}}else e<0&&(e=h);e>=0&&reverseValues(s,e,f.length)}for(h=0,u=s.length;h"!==e||(s[h]="")}return createBidiText(s.join(""),c)};var a=r(2);const i=["BN","BN","BN","BN","BN","BN","BN","BN","BN","S","B","S","WS","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","B","B","B","S","WS","ON","ON","ET","ET","ET","ON","ON","ON","ON","ON","ES","CS","ES","CS","CS","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","CS","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","BN","BN","BN","BN","BN","BN","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","CS","ON","ET","ET","ET","ET","ON","ON","ON","ON","L","ON","ON","BN","ON","ON","ET","ET","EN","EN","ON","L","ON","ON","ON","EN","L","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L"],n=["AN","AN","AN","AN","AN","AN","ON","ON","AL","ET","ET","AL","CS","AL","ON","ON","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AN","AN","AN","AN","AN","AN","AN","AN","AN","AN","ET","AN","AN","AL","AL","AL","NSM","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AN","ON","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","NSM","NSM","ON","NSM","NSM","NSM","NSM","AL","AL","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","AL","AL","AL","AL","AL","AL"];function isOdd(e){return 0!=(1&e)}function isEven(e){return 0==(1&e)}function findUnequal(e,t,r){let a,i;for(a=t,i=e.length;a{Object.defineProperty(t,"__esModule",{value:!0});t.getMetrics=void 0;var a=r(9);const i=(0,a.getLookupTableFactory)((function(e){e.Courier=600;e["Courier-Bold"]=600;e["Courier-BoldOblique"]=600;e["Courier-Oblique"]=600;e.Helvetica=(0,a.getLookupTableFactory)((function(e){e.space=278;e.exclam=278;e.quotedbl=355;e.numbersign=556;e.dollar=556;e.percent=889;e.ampersand=667;e.quoteright=222;e.parenleft=333;e.parenright=333;e.asterisk=389;e.plus=584;e.comma=278;e.hyphen=333;e.period=278;e.slash=278;e.zero=556;e.one=556;e.two=556;e.three=556;e.four=556;e.five=556;e.six=556;e.seven=556;e.eight=556;e.nine=556;e.colon=278;e.semicolon=278;e.less=584;e.equal=584;e.greater=584;e.question=556;e.at=1015;e.A=667;e.B=667;e.C=722;e.D=722;e.E=667;e.F=611;e.G=778;e.H=722;e.I=278;e.J=500;e.K=667;e.L=556;e.M=833;e.N=722;e.O=778;e.P=667;e.Q=778;e.R=722;e.S=667;e.T=611;e.U=722;e.V=667;e.W=944;e.X=667;e.Y=667;e.Z=611;e.bracketleft=278;e.backslash=278;e.bracketright=278;e.asciicircum=469;e.underscore=556;e.quoteleft=222;e.a=556;e.b=556;e.c=500;e.d=556;e.e=556;e.f=278;e.g=556;e.h=556;e.i=222;e.j=222;e.k=500;e.l=222;e.m=833;e.n=556;e.o=556;e.p=556;e.q=556;e.r=333;e.s=500;e.t=278;e.u=556;e.v=500;e.w=722;e.x=500;e.y=500;e.z=500;e.braceleft=334;e.bar=260;e.braceright=334;e.asciitilde=584;e.exclamdown=333;e.cent=556;e.sterling=556;e.fraction=167;e.yen=556;e.florin=556;e.section=556;e.currency=556;e.quotesingle=191;e.quotedblleft=333;e.guillemotleft=556;e.guilsinglleft=333;e.guilsinglright=333;e.fi=500;e.fl=500;e.endash=556;e.dagger=556;e.daggerdbl=556;e.periodcentered=278;e.paragraph=537;e.bullet=350;e.quotesinglbase=222;e.quotedblbase=333;e.quotedblright=333;e.guillemotright=556;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=611;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=1e3;e.ordfeminine=370;e.Lslash=556;e.Oslash=778;e.OE=1e3;e.ordmasculine=365;e.ae=889;e.dotlessi=278;e.lslash=222;e.oslash=611;e.oe=944;e.germandbls=611;e.Idieresis=278;e.eacute=556;e.abreve=556;e.uhungarumlaut=556;e.ecaron=556;e.Ydieresis=667;e.divide=584;e.Yacute=667;e.Acircumflex=667;e.aacute=556;e.Ucircumflex=722;e.yacute=500;e.scommaaccent=500;e.ecircumflex=556;e.Uring=722;e.Udieresis=722;e.aogonek=556;e.Uacute=722;e.uogonek=556;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=737;e.Emacron=667;e.ccaron=500;e.aring=556;e.Ncommaaccent=722;e.lacute=222;e.agrave=556;e.Tcommaaccent=611;e.Cacute=722;e.atilde=556;e.Edotaccent=667;e.scaron=500;e.scedilla=500;e.iacute=278;e.lozenge=471;e.Rcaron=722;e.Gcommaaccent=778;e.ucircumflex=556;e.acircumflex=556;e.Amacron=667;e.rcaron=333;e.ccedilla=500;e.Zdotaccent=611;e.Thorn=667;e.Omacron=778;e.Racute=722;e.Sacute=667;e.dcaron=643;e.Umacron=722;e.uring=556;e.threesuperior=333;e.Ograve=778;e.Agrave=667;e.Abreve=667;e.multiply=584;e.uacute=556;e.Tcaron=611;e.partialdiff=476;e.ydieresis=500;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=556;e.edieresis=556;e.cacute=500;e.nacute=556;e.umacron=556;e.Ncaron=722;e.Iacute=278;e.plusminus=584;e.brokenbar=260;e.registered=737;e.Gbreve=778;e.Idotaccent=278;e.summation=600;e.Egrave=667;e.racute=333;e.omacron=556;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=722;e.lcommaaccent=222;e.tcaron=317;e.eogonek=556;e.Uogonek=722;e.Aacute=667;e.Adieresis=667;e.egrave=556;e.zacute=500;e.iogonek=222;e.Oacute=778;e.oacute=556;e.amacron=556;e.sacute=500;e.idieresis=278;e.Ocircumflex=778;e.Ugrave=722;e.Delta=612;e.thorn=556;e.twosuperior=333;e.Odieresis=778;e.mu=556;e.igrave=278;e.ohungarumlaut=556;e.Eogonek=667;e.dcroat=556;e.threequarters=834;e.Scedilla=667;e.lcaron=299;e.Kcommaaccent=667;e.Lacute=556;e.trademark=1e3;e.edotaccent=556;e.Igrave=278;e.Imacron=278;e.Lcaron=556;e.onehalf=834;e.lessequal=549;e.ocircumflex=556;e.ntilde=556;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=556;e.gbreve=556;e.onequarter=834;e.Scaron=667;e.Scommaaccent=667;e.Ohungarumlaut=778;e.degree=400;e.ograve=556;e.Ccaron=722;e.ugrave=556;e.radical=453;e.Dcaron=722;e.rcommaaccent=333;e.Ntilde=722;e.otilde=556;e.Rcommaaccent=722;e.Lcommaaccent=556;e.Atilde=667;e.Aogonek=667;e.Aring=667;e.Otilde=778;e.zdotaccent=500;e.Ecaron=667;e.Iogonek=278;e.kcommaaccent=500;e.minus=584;e.Icircumflex=278;e.ncaron=556;e.tcommaaccent=278;e.logicalnot=584;e.odieresis=556;e.udieresis=556;e.notequal=549;e.gcommaaccent=556;e.eth=556;e.zcaron=500;e.ncommaaccent=556;e.onesuperior=333;e.imacron=278;e.Euro=556}));e["Helvetica-Bold"]=(0,a.getLookupTableFactory)((function(e){e.space=278;e.exclam=333;e.quotedbl=474;e.numbersign=556;e.dollar=556;e.percent=889;e.ampersand=722;e.quoteright=278;e.parenleft=333;e.parenright=333;e.asterisk=389;e.plus=584;e.comma=278;e.hyphen=333;e.period=278;e.slash=278;e.zero=556;e.one=556;e.two=556;e.three=556;e.four=556;e.five=556;e.six=556;e.seven=556;e.eight=556;e.nine=556;e.colon=333;e.semicolon=333;e.less=584;e.equal=584;e.greater=584;e.question=611;e.at=975;e.A=722;e.B=722;e.C=722;e.D=722;e.E=667;e.F=611;e.G=778;e.H=722;e.I=278;e.J=556;e.K=722;e.L=611;e.M=833;e.N=722;e.O=778;e.P=667;e.Q=778;e.R=722;e.S=667;e.T=611;e.U=722;e.V=667;e.W=944;e.X=667;e.Y=667;e.Z=611;e.bracketleft=333;e.backslash=278;e.bracketright=333;e.asciicircum=584;e.underscore=556;e.quoteleft=278;e.a=556;e.b=611;e.c=556;e.d=611;e.e=556;e.f=333;e.g=611;e.h=611;e.i=278;e.j=278;e.k=556;e.l=278;e.m=889;e.n=611;e.o=611;e.p=611;e.q=611;e.r=389;e.s=556;e.t=333;e.u=611;e.v=556;e.w=778;e.x=556;e.y=556;e.z=500;e.braceleft=389;e.bar=280;e.braceright=389;e.asciitilde=584;e.exclamdown=333;e.cent=556;e.sterling=556;e.fraction=167;e.yen=556;e.florin=556;e.section=556;e.currency=556;e.quotesingle=238;e.quotedblleft=500;e.guillemotleft=556;e.guilsinglleft=333;e.guilsinglright=333;e.fi=611;e.fl=611;e.endash=556;e.dagger=556;e.daggerdbl=556;e.periodcentered=278;e.paragraph=556;e.bullet=350;e.quotesinglbase=278;e.quotedblbase=500;e.quotedblright=500;e.guillemotright=556;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=611;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=1e3;e.ordfeminine=370;e.Lslash=611;e.Oslash=778;e.OE=1e3;e.ordmasculine=365;e.ae=889;e.dotlessi=278;e.lslash=278;e.oslash=611;e.oe=944;e.germandbls=611;e.Idieresis=278;e.eacute=556;e.abreve=556;e.uhungarumlaut=611;e.ecaron=556;e.Ydieresis=667;e.divide=584;e.Yacute=667;e.Acircumflex=722;e.aacute=556;e.Ucircumflex=722;e.yacute=556;e.scommaaccent=556;e.ecircumflex=556;e.Uring=722;e.Udieresis=722;e.aogonek=556;e.Uacute=722;e.uogonek=611;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=737;e.Emacron=667;e.ccaron=556;e.aring=556;e.Ncommaaccent=722;e.lacute=278;e.agrave=556;e.Tcommaaccent=611;e.Cacute=722;e.atilde=556;e.Edotaccent=667;e.scaron=556;e.scedilla=556;e.iacute=278;e.lozenge=494;e.Rcaron=722;e.Gcommaaccent=778;e.ucircumflex=611;e.acircumflex=556;e.Amacron=722;e.rcaron=389;e.ccedilla=556;e.Zdotaccent=611;e.Thorn=667;e.Omacron=778;e.Racute=722;e.Sacute=667;e.dcaron=743;e.Umacron=722;e.uring=611;e.threesuperior=333;e.Ograve=778;e.Agrave=722;e.Abreve=722;e.multiply=584;e.uacute=611;e.Tcaron=611;e.partialdiff=494;e.ydieresis=556;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=556;e.edieresis=556;e.cacute=556;e.nacute=611;e.umacron=611;e.Ncaron=722;e.Iacute=278;e.plusminus=584;e.brokenbar=280;e.registered=737;e.Gbreve=778;e.Idotaccent=278;e.summation=600;e.Egrave=667;e.racute=389;e.omacron=611;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=722;e.lcommaaccent=278;e.tcaron=389;e.eogonek=556;e.Uogonek=722;e.Aacute=722;e.Adieresis=722;e.egrave=556;e.zacute=500;e.iogonek=278;e.Oacute=778;e.oacute=611;e.amacron=556;e.sacute=556;e.idieresis=278;e.Ocircumflex=778;e.Ugrave=722;e.Delta=612;e.thorn=611;e.twosuperior=333;e.Odieresis=778;e.mu=611;e.igrave=278;e.ohungarumlaut=611;e.Eogonek=667;e.dcroat=611;e.threequarters=834;e.Scedilla=667;e.lcaron=400;e.Kcommaaccent=722;e.Lacute=611;e.trademark=1e3;e.edotaccent=556;e.Igrave=278;e.Imacron=278;e.Lcaron=611;e.onehalf=834;e.lessequal=549;e.ocircumflex=611;e.ntilde=611;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=556;e.gbreve=611;e.onequarter=834;e.Scaron=667;e.Scommaaccent=667;e.Ohungarumlaut=778;e.degree=400;e.ograve=611;e.Ccaron=722;e.ugrave=611;e.radical=549;e.Dcaron=722;e.rcommaaccent=389;e.Ntilde=722;e.otilde=611;e.Rcommaaccent=722;e.Lcommaaccent=611;e.Atilde=722;e.Aogonek=722;e.Aring=722;e.Otilde=778;e.zdotaccent=500;e.Ecaron=667;e.Iogonek=278;e.kcommaaccent=556;e.minus=584;e.Icircumflex=278;e.ncaron=611;e.tcommaaccent=333;e.logicalnot=584;e.odieresis=611;e.udieresis=611;e.notequal=549;e.gcommaaccent=611;e.eth=611;e.zcaron=500;e.ncommaaccent=611;e.onesuperior=333;e.imacron=278;e.Euro=556}));e["Helvetica-BoldOblique"]=(0,a.getLookupTableFactory)((function(e){e.space=278;e.exclam=333;e.quotedbl=474;e.numbersign=556;e.dollar=556;e.percent=889;e.ampersand=722;e.quoteright=278;e.parenleft=333;e.parenright=333;e.asterisk=389;e.plus=584;e.comma=278;e.hyphen=333;e.period=278;e.slash=278;e.zero=556;e.one=556;e.two=556;e.three=556;e.four=556;e.five=556;e.six=556;e.seven=556;e.eight=556;e.nine=556;e.colon=333;e.semicolon=333;e.less=584;e.equal=584;e.greater=584;e.question=611;e.at=975;e.A=722;e.B=722;e.C=722;e.D=722;e.E=667;e.F=611;e.G=778;e.H=722;e.I=278;e.J=556;e.K=722;e.L=611;e.M=833;e.N=722;e.O=778;e.P=667;e.Q=778;e.R=722;e.S=667;e.T=611;e.U=722;e.V=667;e.W=944;e.X=667;e.Y=667;e.Z=611;e.bracketleft=333;e.backslash=278;e.bracketright=333;e.asciicircum=584;e.underscore=556;e.quoteleft=278;e.a=556;e.b=611;e.c=556;e.d=611;e.e=556;e.f=333;e.g=611;e.h=611;e.i=278;e.j=278;e.k=556;e.l=278;e.m=889;e.n=611;e.o=611;e.p=611;e.q=611;e.r=389;e.s=556;e.t=333;e.u=611;e.v=556;e.w=778;e.x=556;e.y=556;e.z=500;e.braceleft=389;e.bar=280;e.braceright=389;e.asciitilde=584;e.exclamdown=333;e.cent=556;e.sterling=556;e.fraction=167;e.yen=556;e.florin=556;e.section=556;e.currency=556;e.quotesingle=238;e.quotedblleft=500;e.guillemotleft=556;e.guilsinglleft=333;e.guilsinglright=333;e.fi=611;e.fl=611;e.endash=556;e.dagger=556;e.daggerdbl=556;e.periodcentered=278;e.paragraph=556;e.bullet=350;e.quotesinglbase=278;e.quotedblbase=500;e.quotedblright=500;e.guillemotright=556;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=611;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=1e3;e.ordfeminine=370;e.Lslash=611;e.Oslash=778;e.OE=1e3;e.ordmasculine=365;e.ae=889;e.dotlessi=278;e.lslash=278;e.oslash=611;e.oe=944;e.germandbls=611;e.Idieresis=278;e.eacute=556;e.abreve=556;e.uhungarumlaut=611;e.ecaron=556;e.Ydieresis=667;e.divide=584;e.Yacute=667;e.Acircumflex=722;e.aacute=556;e.Ucircumflex=722;e.yacute=556;e.scommaaccent=556;e.ecircumflex=556;e.Uring=722;e.Udieresis=722;e.aogonek=556;e.Uacute=722;e.uogonek=611;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=737;e.Emacron=667;e.ccaron=556;e.aring=556;e.Ncommaaccent=722;e.lacute=278;e.agrave=556;e.Tcommaaccent=611;e.Cacute=722;e.atilde=556;e.Edotaccent=667;e.scaron=556;e.scedilla=556;e.iacute=278;e.lozenge=494;e.Rcaron=722;e.Gcommaaccent=778;e.ucircumflex=611;e.acircumflex=556;e.Amacron=722;e.rcaron=389;e.ccedilla=556;e.Zdotaccent=611;e.Thorn=667;e.Omacron=778;e.Racute=722;e.Sacute=667;e.dcaron=743;e.Umacron=722;e.uring=611;e.threesuperior=333;e.Ograve=778;e.Agrave=722;e.Abreve=722;e.multiply=584;e.uacute=611;e.Tcaron=611;e.partialdiff=494;e.ydieresis=556;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=556;e.edieresis=556;e.cacute=556;e.nacute=611;e.umacron=611;e.Ncaron=722;e.Iacute=278;e.plusminus=584;e.brokenbar=280;e.registered=737;e.Gbreve=778;e.Idotaccent=278;e.summation=600;e.Egrave=667;e.racute=389;e.omacron=611;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=722;e.lcommaaccent=278;e.tcaron=389;e.eogonek=556;e.Uogonek=722;e.Aacute=722;e.Adieresis=722;e.egrave=556;e.zacute=500;e.iogonek=278;e.Oacute=778;e.oacute=611;e.amacron=556;e.sacute=556;e.idieresis=278;e.Ocircumflex=778;e.Ugrave=722;e.Delta=612;e.thorn=611;e.twosuperior=333;e.Odieresis=778;e.mu=611;e.igrave=278;e.ohungarumlaut=611;e.Eogonek=667;e.dcroat=611;e.threequarters=834;e.Scedilla=667;e.lcaron=400;e.Kcommaaccent=722;e.Lacute=611;e.trademark=1e3;e.edotaccent=556;e.Igrave=278;e.Imacron=278;e.Lcaron=611;e.onehalf=834;e.lessequal=549;e.ocircumflex=611;e.ntilde=611;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=556;e.gbreve=611;e.onequarter=834;e.Scaron=667;e.Scommaaccent=667;e.Ohungarumlaut=778;e.degree=400;e.ograve=611;e.Ccaron=722;e.ugrave=611;e.radical=549;e.Dcaron=722;e.rcommaaccent=389;e.Ntilde=722;e.otilde=611;e.Rcommaaccent=722;e.Lcommaaccent=611;e.Atilde=722;e.Aogonek=722;e.Aring=722;e.Otilde=778;e.zdotaccent=500;e.Ecaron=667;e.Iogonek=278;e.kcommaaccent=556;e.minus=584;e.Icircumflex=278;e.ncaron=611;e.tcommaaccent=333;e.logicalnot=584;e.odieresis=611;e.udieresis=611;e.notequal=549;e.gcommaaccent=611;e.eth=611;e.zcaron=500;e.ncommaaccent=611;e.onesuperior=333;e.imacron=278;e.Euro=556}));e["Helvetica-Oblique"]=(0,a.getLookupTableFactory)((function(e){e.space=278;e.exclam=278;e.quotedbl=355;e.numbersign=556;e.dollar=556;e.percent=889;e.ampersand=667;e.quoteright=222;e.parenleft=333;e.parenright=333;e.asterisk=389;e.plus=584;e.comma=278;e.hyphen=333;e.period=278;e.slash=278;e.zero=556;e.one=556;e.two=556;e.three=556;e.four=556;e.five=556;e.six=556;e.seven=556;e.eight=556;e.nine=556;e.colon=278;e.semicolon=278;e.less=584;e.equal=584;e.greater=584;e.question=556;e.at=1015;e.A=667;e.B=667;e.C=722;e.D=722;e.E=667;e.F=611;e.G=778;e.H=722;e.I=278;e.J=500;e.K=667;e.L=556;e.M=833;e.N=722;e.O=778;e.P=667;e.Q=778;e.R=722;e.S=667;e.T=611;e.U=722;e.V=667;e.W=944;e.X=667;e.Y=667;e.Z=611;e.bracketleft=278;e.backslash=278;e.bracketright=278;e.asciicircum=469;e.underscore=556;e.quoteleft=222;e.a=556;e.b=556;e.c=500;e.d=556;e.e=556;e.f=278;e.g=556;e.h=556;e.i=222;e.j=222;e.k=500;e.l=222;e.m=833;e.n=556;e.o=556;e.p=556;e.q=556;e.r=333;e.s=500;e.t=278;e.u=556;e.v=500;e.w=722;e.x=500;e.y=500;e.z=500;e.braceleft=334;e.bar=260;e.braceright=334;e.asciitilde=584;e.exclamdown=333;e.cent=556;e.sterling=556;e.fraction=167;e.yen=556;e.florin=556;e.section=556;e.currency=556;e.quotesingle=191;e.quotedblleft=333;e.guillemotleft=556;e.guilsinglleft=333;e.guilsinglright=333;e.fi=500;e.fl=500;e.endash=556;e.dagger=556;e.daggerdbl=556;e.periodcentered=278;e.paragraph=537;e.bullet=350;e.quotesinglbase=222;e.quotedblbase=333;e.quotedblright=333;e.guillemotright=556;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=611;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=1e3;e.ordfeminine=370;e.Lslash=556;e.Oslash=778;e.OE=1e3;e.ordmasculine=365;e.ae=889;e.dotlessi=278;e.lslash=222;e.oslash=611;e.oe=944;e.germandbls=611;e.Idieresis=278;e.eacute=556;e.abreve=556;e.uhungarumlaut=556;e.ecaron=556;e.Ydieresis=667;e.divide=584;e.Yacute=667;e.Acircumflex=667;e.aacute=556;e.Ucircumflex=722;e.yacute=500;e.scommaaccent=500;e.ecircumflex=556;e.Uring=722;e.Udieresis=722;e.aogonek=556;e.Uacute=722;e.uogonek=556;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=737;e.Emacron=667;e.ccaron=500;e.aring=556;e.Ncommaaccent=722;e.lacute=222;e.agrave=556;e.Tcommaaccent=611;e.Cacute=722;e.atilde=556;e.Edotaccent=667;e.scaron=500;e.scedilla=500;e.iacute=278;e.lozenge=471;e.Rcaron=722;e.Gcommaaccent=778;e.ucircumflex=556;e.acircumflex=556;e.Amacron=667;e.rcaron=333;e.ccedilla=500;e.Zdotaccent=611;e.Thorn=667;e.Omacron=778;e.Racute=722;e.Sacute=667;e.dcaron=643;e.Umacron=722;e.uring=556;e.threesuperior=333;e.Ograve=778;e.Agrave=667;e.Abreve=667;e.multiply=584;e.uacute=556;e.Tcaron=611;e.partialdiff=476;e.ydieresis=500;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=556;e.edieresis=556;e.cacute=500;e.nacute=556;e.umacron=556;e.Ncaron=722;e.Iacute=278;e.plusminus=584;e.brokenbar=260;e.registered=737;e.Gbreve=778;e.Idotaccent=278;e.summation=600;e.Egrave=667;e.racute=333;e.omacron=556;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=722;e.lcommaaccent=222;e.tcaron=317;e.eogonek=556;e.Uogonek=722;e.Aacute=667;e.Adieresis=667;e.egrave=556;e.zacute=500;e.iogonek=222;e.Oacute=778;e.oacute=556;e.amacron=556;e.sacute=500;e.idieresis=278;e.Ocircumflex=778;e.Ugrave=722;e.Delta=612;e.thorn=556;e.twosuperior=333;e.Odieresis=778;e.mu=556;e.igrave=278;e.ohungarumlaut=556;e.Eogonek=667;e.dcroat=556;e.threequarters=834;e.Scedilla=667;e.lcaron=299;e.Kcommaaccent=667;e.Lacute=556;e.trademark=1e3;e.edotaccent=556;e.Igrave=278;e.Imacron=278;e.Lcaron=556;e.onehalf=834;e.lessequal=549;e.ocircumflex=556;e.ntilde=556;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=556;e.gbreve=556;e.onequarter=834;e.Scaron=667;e.Scommaaccent=667;e.Ohungarumlaut=778;e.degree=400;e.ograve=556;e.Ccaron=722;e.ugrave=556;e.radical=453;e.Dcaron=722;e.rcommaaccent=333;e.Ntilde=722;e.otilde=556;e.Rcommaaccent=722;e.Lcommaaccent=556;e.Atilde=667;e.Aogonek=667;e.Aring=667;e.Otilde=778;e.zdotaccent=500;e.Ecaron=667;e.Iogonek=278;e.kcommaaccent=500;e.minus=584;e.Icircumflex=278;e.ncaron=556;e.tcommaaccent=278;e.logicalnot=584;e.odieresis=556;e.udieresis=556;e.notequal=549;e.gcommaaccent=556;e.eth=556;e.zcaron=500;e.ncommaaccent=556;e.onesuperior=333;e.imacron=278;e.Euro=556}));e.Symbol=(0,a.getLookupTableFactory)((function(e){e.space=250;e.exclam=333;e.universal=713;e.numbersign=500;e.existential=549;e.percent=833;e.ampersand=778;e.suchthat=439;e.parenleft=333;e.parenright=333;e.asteriskmath=500;e.plus=549;e.comma=250;e.minus=549;e.period=250;e.slash=278;e.zero=500;e.one=500;e.two=500;e.three=500;e.four=500;e.five=500;e.six=500;e.seven=500;e.eight=500;e.nine=500;e.colon=278;e.semicolon=278;e.less=549;e.equal=549;e.greater=549;e.question=444;e.congruent=549;e.Alpha=722;e.Beta=667;e.Chi=722;e.Delta=612;e.Epsilon=611;e.Phi=763;e.Gamma=603;e.Eta=722;e.Iota=333;e.theta1=631;e.Kappa=722;e.Lambda=686;e.Mu=889;e.Nu=722;e.Omicron=722;e.Pi=768;e.Theta=741;e.Rho=556;e.Sigma=592;e.Tau=611;e.Upsilon=690;e.sigma1=439;e.Omega=768;e.Xi=645;e.Psi=795;e.Zeta=611;e.bracketleft=333;e.therefore=863;e.bracketright=333;e.perpendicular=658;e.underscore=500;e.radicalex=500;e.alpha=631;e.beta=549;e.chi=549;e.delta=494;e.epsilon=439;e.phi=521;e.gamma=411;e.eta=603;e.iota=329;e.phi1=603;e.kappa=549;e.lambda=549;e.mu=576;e.nu=521;e.omicron=549;e.pi=549;e.theta=521;e.rho=549;e.sigma=603;e.tau=439;e.upsilon=576;e.omega1=713;e.omega=686;e.xi=493;e.psi=686;e.zeta=494;e.braceleft=480;e.bar=200;e.braceright=480;e.similar=549;e.Euro=750;e.Upsilon1=620;e.minute=247;e.lessequal=549;e.fraction=167;e.infinity=713;e.florin=500;e.club=753;e.diamond=753;e.heart=753;e.spade=753;e.arrowboth=1042;e.arrowleft=987;e.arrowup=603;e.arrowright=987;e.arrowdown=603;e.degree=400;e.plusminus=549;e.second=411;e.greaterequal=549;e.multiply=549;e.proportional=713;e.partialdiff=494;e.bullet=460;e.divide=549;e.notequal=549;e.equivalence=549;e.approxequal=549;e.ellipsis=1e3;e.arrowvertex=603;e.arrowhorizex=1e3;e.carriagereturn=658;e.aleph=823;e.Ifraktur=686;e.Rfraktur=795;e.weierstrass=987;e.circlemultiply=768;e.circleplus=768;e.emptyset=823;e.intersection=768;e.union=768;e.propersuperset=713;e.reflexsuperset=713;e.notsubset=713;e.propersubset=713;e.reflexsubset=713;e.element=713;e.notelement=713;e.angle=768;e.gradient=713;e.registerserif=790;e.copyrightserif=790;e.trademarkserif=890;e.product=823;e.radical=549;e.dotmath=250;e.logicalnot=713;e.logicaland=603;e.logicalor=603;e.arrowdblboth=1042;e.arrowdblleft=987;e.arrowdblup=603;e.arrowdblright=987;e.arrowdbldown=603;e.lozenge=494;e.angleleft=329;e.registersans=790;e.copyrightsans=790;e.trademarksans=786;e.summation=713;e.parenlefttp=384;e.parenleftex=384;e.parenleftbt=384;e.bracketlefttp=384;e.bracketleftex=384;e.bracketleftbt=384;e.bracelefttp=494;e.braceleftmid=494;e.braceleftbt=494;e.braceex=494;e.angleright=329;e.integral=274;e.integraltp=686;e.integralex=686;e.integralbt=686;e.parenrighttp=384;e.parenrightex=384;e.parenrightbt=384;e.bracketrighttp=384;e.bracketrightex=384;e.bracketrightbt=384;e.bracerighttp=494;e.bracerightmid=494;e.bracerightbt=494;e.apple=790}));e["Times-Roman"]=(0,a.getLookupTableFactory)((function(e){e.space=250;e.exclam=333;e.quotedbl=408;e.numbersign=500;e.dollar=500;e.percent=833;e.ampersand=778;e.quoteright=333;e.parenleft=333;e.parenright=333;e.asterisk=500;e.plus=564;e.comma=250;e.hyphen=333;e.period=250;e.slash=278;e.zero=500;e.one=500;e.two=500;e.three=500;e.four=500;e.five=500;e.six=500;e.seven=500;e.eight=500;e.nine=500;e.colon=278;e.semicolon=278;e.less=564;e.equal=564;e.greater=564;e.question=444;e.at=921;e.A=722;e.B=667;e.C=667;e.D=722;e.E=611;e.F=556;e.G=722;e.H=722;e.I=333;e.J=389;e.K=722;e.L=611;e.M=889;e.N=722;e.O=722;e.P=556;e.Q=722;e.R=667;e.S=556;e.T=611;e.U=722;e.V=722;e.W=944;e.X=722;e.Y=722;e.Z=611;e.bracketleft=333;e.backslash=278;e.bracketright=333;e.asciicircum=469;e.underscore=500;e.quoteleft=333;e.a=444;e.b=500;e.c=444;e.d=500;e.e=444;e.f=333;e.g=500;e.h=500;e.i=278;e.j=278;e.k=500;e.l=278;e.m=778;e.n=500;e.o=500;e.p=500;e.q=500;e.r=333;e.s=389;e.t=278;e.u=500;e.v=500;e.w=722;e.x=500;e.y=500;e.z=444;e.braceleft=480;e.bar=200;e.braceright=480;e.asciitilde=541;e.exclamdown=333;e.cent=500;e.sterling=500;e.fraction=167;e.yen=500;e.florin=500;e.section=500;e.currency=500;e.quotesingle=180;e.quotedblleft=444;e.guillemotleft=500;e.guilsinglleft=333;e.guilsinglright=333;e.fi=556;e.fl=556;e.endash=500;e.dagger=500;e.daggerdbl=500;e.periodcentered=250;e.paragraph=453;e.bullet=350;e.quotesinglbase=333;e.quotedblbase=444;e.quotedblright=444;e.guillemotright=500;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=444;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=889;e.ordfeminine=276;e.Lslash=611;e.Oslash=722;e.OE=889;e.ordmasculine=310;e.ae=667;e.dotlessi=278;e.lslash=278;e.oslash=500;e.oe=722;e.germandbls=500;e.Idieresis=333;e.eacute=444;e.abreve=444;e.uhungarumlaut=500;e.ecaron=444;e.Ydieresis=722;e.divide=564;e.Yacute=722;e.Acircumflex=722;e.aacute=444;e.Ucircumflex=722;e.yacute=500;e.scommaaccent=389;e.ecircumflex=444;e.Uring=722;e.Udieresis=722;e.aogonek=444;e.Uacute=722;e.uogonek=500;e.Edieresis=611;e.Dcroat=722;e.commaaccent=250;e.copyright=760;e.Emacron=611;e.ccaron=444;e.aring=444;e.Ncommaaccent=722;e.lacute=278;e.agrave=444;e.Tcommaaccent=611;e.Cacute=667;e.atilde=444;e.Edotaccent=611;e.scaron=389;e.scedilla=389;e.iacute=278;e.lozenge=471;e.Rcaron=667;e.Gcommaaccent=722;e.ucircumflex=500;e.acircumflex=444;e.Amacron=722;e.rcaron=333;e.ccedilla=444;e.Zdotaccent=611;e.Thorn=556;e.Omacron=722;e.Racute=667;e.Sacute=556;e.dcaron=588;e.Umacron=722;e.uring=500;e.threesuperior=300;e.Ograve=722;e.Agrave=722;e.Abreve=722;e.multiply=564;e.uacute=500;e.Tcaron=611;e.partialdiff=476;e.ydieresis=500;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=611;e.adieresis=444;e.edieresis=444;e.cacute=444;e.nacute=500;e.umacron=500;e.Ncaron=722;e.Iacute=333;e.plusminus=564;e.brokenbar=200;e.registered=760;e.Gbreve=722;e.Idotaccent=333;e.summation=600;e.Egrave=611;e.racute=333;e.omacron=500;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=667;e.lcommaaccent=278;e.tcaron=326;e.eogonek=444;e.Uogonek=722;e.Aacute=722;e.Adieresis=722;e.egrave=444;e.zacute=444;e.iogonek=278;e.Oacute=722;e.oacute=500;e.amacron=444;e.sacute=389;e.idieresis=278;e.Ocircumflex=722;e.Ugrave=722;e.Delta=612;e.thorn=500;e.twosuperior=300;e.Odieresis=722;e.mu=500;e.igrave=278;e.ohungarumlaut=500;e.Eogonek=611;e.dcroat=500;e.threequarters=750;e.Scedilla=556;e.lcaron=344;e.Kcommaaccent=722;e.Lacute=611;e.trademark=980;e.edotaccent=444;e.Igrave=333;e.Imacron=333;e.Lcaron=611;e.onehalf=750;e.lessequal=549;e.ocircumflex=500;e.ntilde=500;e.Uhungarumlaut=722;e.Eacute=611;e.emacron=444;e.gbreve=500;e.onequarter=750;e.Scaron=556;e.Scommaaccent=556;e.Ohungarumlaut=722;e.degree=400;e.ograve=500;e.Ccaron=667;e.ugrave=500;e.radical=453;e.Dcaron=722;e.rcommaaccent=333;e.Ntilde=722;e.otilde=500;e.Rcommaaccent=667;e.Lcommaaccent=611;e.Atilde=722;e.Aogonek=722;e.Aring=722;e.Otilde=722;e.zdotaccent=444;e.Ecaron=611;e.Iogonek=333;e.kcommaaccent=500;e.minus=564;e.Icircumflex=333;e.ncaron=500;e.tcommaaccent=278;e.logicalnot=564;e.odieresis=500;e.udieresis=500;e.notequal=549;e.gcommaaccent=500;e.eth=500;e.zcaron=444;e.ncommaaccent=500;e.onesuperior=300;e.imacron=278;e.Euro=500}));e["Times-Bold"]=(0,a.getLookupTableFactory)((function(e){e.space=250;e.exclam=333;e.quotedbl=555;e.numbersign=500;e.dollar=500;e.percent=1e3;e.ampersand=833;e.quoteright=333;e.parenleft=333;e.parenright=333;e.asterisk=500;e.plus=570;e.comma=250;e.hyphen=333;e.period=250;e.slash=278;e.zero=500;e.one=500;e.two=500;e.three=500;e.four=500;e.five=500;e.six=500;e.seven=500;e.eight=500;e.nine=500;e.colon=333;e.semicolon=333;e.less=570;e.equal=570;e.greater=570;e.question=500;e.at=930;e.A=722;e.B=667;e.C=722;e.D=722;e.E=667;e.F=611;e.G=778;e.H=778;e.I=389;e.J=500;e.K=778;e.L=667;e.M=944;e.N=722;e.O=778;e.P=611;e.Q=778;e.R=722;e.S=556;e.T=667;e.U=722;e.V=722;e.W=1e3;e.X=722;e.Y=722;e.Z=667;e.bracketleft=333;e.backslash=278;e.bracketright=333;e.asciicircum=581;e.underscore=500;e.quoteleft=333;e.a=500;e.b=556;e.c=444;e.d=556;e.e=444;e.f=333;e.g=500;e.h=556;e.i=278;e.j=333;e.k=556;e.l=278;e.m=833;e.n=556;e.o=500;e.p=556;e.q=556;e.r=444;e.s=389;e.t=333;e.u=556;e.v=500;e.w=722;e.x=500;e.y=500;e.z=444;e.braceleft=394;e.bar=220;e.braceright=394;e.asciitilde=520;e.exclamdown=333;e.cent=500;e.sterling=500;e.fraction=167;e.yen=500;e.florin=500;e.section=500;e.currency=500;e.quotesingle=278;e.quotedblleft=500;e.guillemotleft=500;e.guilsinglleft=333;e.guilsinglright=333;e.fi=556;e.fl=556;e.endash=500;e.dagger=500;e.daggerdbl=500;e.periodcentered=250;e.paragraph=540;e.bullet=350;e.quotesinglbase=333;e.quotedblbase=500;e.quotedblright=500;e.guillemotright=500;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=500;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=1e3;e.ordfeminine=300;e.Lslash=667;e.Oslash=778;e.OE=1e3;e.ordmasculine=330;e.ae=722;e.dotlessi=278;e.lslash=278;e.oslash=500;e.oe=722;e.germandbls=556;e.Idieresis=389;e.eacute=444;e.abreve=500;e.uhungarumlaut=556;e.ecaron=444;e.Ydieresis=722;e.divide=570;e.Yacute=722;e.Acircumflex=722;e.aacute=500;e.Ucircumflex=722;e.yacute=500;e.scommaaccent=389;e.ecircumflex=444;e.Uring=722;e.Udieresis=722;e.aogonek=500;e.Uacute=722;e.uogonek=556;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=747;e.Emacron=667;e.ccaron=444;e.aring=500;e.Ncommaaccent=722;e.lacute=278;e.agrave=500;e.Tcommaaccent=667;e.Cacute=722;e.atilde=500;e.Edotaccent=667;e.scaron=389;e.scedilla=389;e.iacute=278;e.lozenge=494;e.Rcaron=722;e.Gcommaaccent=778;e.ucircumflex=556;e.acircumflex=500;e.Amacron=722;e.rcaron=444;e.ccedilla=444;e.Zdotaccent=667;e.Thorn=611;e.Omacron=778;e.Racute=722;e.Sacute=556;e.dcaron=672;e.Umacron=722;e.uring=556;e.threesuperior=300;e.Ograve=778;e.Agrave=722;e.Abreve=722;e.multiply=570;e.uacute=556;e.Tcaron=667;e.partialdiff=494;e.ydieresis=500;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=500;e.edieresis=444;e.cacute=444;e.nacute=556;e.umacron=556;e.Ncaron=722;e.Iacute=389;e.plusminus=570;e.brokenbar=220;e.registered=747;e.Gbreve=778;e.Idotaccent=389;e.summation=600;e.Egrave=667;e.racute=444;e.omacron=500;e.Zacute=667;e.Zcaron=667;e.greaterequal=549;e.Eth=722;e.Ccedilla=722;e.lcommaaccent=278;e.tcaron=416;e.eogonek=444;e.Uogonek=722;e.Aacute=722;e.Adieresis=722;e.egrave=444;e.zacute=444;e.iogonek=278;e.Oacute=778;e.oacute=500;e.amacron=500;e.sacute=389;e.idieresis=278;e.Ocircumflex=778;e.Ugrave=722;e.Delta=612;e.thorn=556;e.twosuperior=300;e.Odieresis=778;e.mu=556;e.igrave=278;e.ohungarumlaut=500;e.Eogonek=667;e.dcroat=556;e.threequarters=750;e.Scedilla=556;e.lcaron=394;e.Kcommaaccent=778;e.Lacute=667;e.trademark=1e3;e.edotaccent=444;e.Igrave=389;e.Imacron=389;e.Lcaron=667;e.onehalf=750;e.lessequal=549;e.ocircumflex=500;e.ntilde=556;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=444;e.gbreve=500;e.onequarter=750;e.Scaron=556;e.Scommaaccent=556;e.Ohungarumlaut=778;e.degree=400;e.ograve=500;e.Ccaron=722;e.ugrave=556;e.radical=549;e.Dcaron=722;e.rcommaaccent=444;e.Ntilde=722;e.otilde=500;e.Rcommaaccent=722;e.Lcommaaccent=667;e.Atilde=722;e.Aogonek=722;e.Aring=722;e.Otilde=778;e.zdotaccent=444;e.Ecaron=667;e.Iogonek=389;e.kcommaaccent=556;e.minus=570;e.Icircumflex=389;e.ncaron=556;e.tcommaaccent=333;e.logicalnot=570;e.odieresis=500;e.udieresis=556;e.notequal=549;e.gcommaaccent=500;e.eth=500;e.zcaron=444;e.ncommaaccent=556;e.onesuperior=300;e.imacron=278;e.Euro=500}));e["Times-BoldItalic"]=(0,a.getLookupTableFactory)((function(e){e.space=250;e.exclam=389;e.quotedbl=555;e.numbersign=500;e.dollar=500;e.percent=833;e.ampersand=778;e.quoteright=333;e.parenleft=333;e.parenright=333;e.asterisk=500;e.plus=570;e.comma=250;e.hyphen=333;e.period=250;e.slash=278;e.zero=500;e.one=500;e.two=500;e.three=500;e.four=500;e.five=500;e.six=500;e.seven=500;e.eight=500;e.nine=500;e.colon=333;e.semicolon=333;e.less=570;e.equal=570;e.greater=570;e.question=500;e.at=832;e.A=667;e.B=667;e.C=667;e.D=722;e.E=667;e.F=667;e.G=722;e.H=778;e.I=389;e.J=500;e.K=667;e.L=611;e.M=889;e.N=722;e.O=722;e.P=611;e.Q=722;e.R=667;e.S=556;e.T=611;e.U=722;e.V=667;e.W=889;e.X=667;e.Y=611;e.Z=611;e.bracketleft=333;e.backslash=278;e.bracketright=333;e.asciicircum=570;e.underscore=500;e.quoteleft=333;e.a=500;e.b=500;e.c=444;e.d=500;e.e=444;e.f=333;e.g=500;e.h=556;e.i=278;e.j=278;e.k=500;e.l=278;e.m=778;e.n=556;e.o=500;e.p=500;e.q=500;e.r=389;e.s=389;e.t=278;e.u=556;e.v=444;e.w=667;e.x=500;e.y=444;e.z=389;e.braceleft=348;e.bar=220;e.braceright=348;e.asciitilde=570;e.exclamdown=389;e.cent=500;e.sterling=500;e.fraction=167;e.yen=500;e.florin=500;e.section=500;e.currency=500;e.quotesingle=278;e.quotedblleft=500;e.guillemotleft=500;e.guilsinglleft=333;e.guilsinglright=333;e.fi=556;e.fl=556;e.endash=500;e.dagger=500;e.daggerdbl=500;e.periodcentered=250;e.paragraph=500;e.bullet=350;e.quotesinglbase=333;e.quotedblbase=500;e.quotedblright=500;e.guillemotright=500;e.ellipsis=1e3;e.perthousand=1e3;e.questiondown=500;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=1e3;e.AE=944;e.ordfeminine=266;e.Lslash=611;e.Oslash=722;e.OE=944;e.ordmasculine=300;e.ae=722;e.dotlessi=278;e.lslash=278;e.oslash=500;e.oe=722;e.germandbls=500;e.Idieresis=389;e.eacute=444;e.abreve=500;e.uhungarumlaut=556;e.ecaron=444;e.Ydieresis=611;e.divide=570;e.Yacute=611;e.Acircumflex=667;e.aacute=500;e.Ucircumflex=722;e.yacute=444;e.scommaaccent=389;e.ecircumflex=444;e.Uring=722;e.Udieresis=722;e.aogonek=500;e.Uacute=722;e.uogonek=556;e.Edieresis=667;e.Dcroat=722;e.commaaccent=250;e.copyright=747;e.Emacron=667;e.ccaron=444;e.aring=500;e.Ncommaaccent=722;e.lacute=278;e.agrave=500;e.Tcommaaccent=611;e.Cacute=667;e.atilde=500;e.Edotaccent=667;e.scaron=389;e.scedilla=389;e.iacute=278;e.lozenge=494;e.Rcaron=667;e.Gcommaaccent=722;e.ucircumflex=556;e.acircumflex=500;e.Amacron=667;e.rcaron=389;e.ccedilla=444;e.Zdotaccent=611;e.Thorn=611;e.Omacron=722;e.Racute=667;e.Sacute=556;e.dcaron=608;e.Umacron=722;e.uring=556;e.threesuperior=300;e.Ograve=722;e.Agrave=667;e.Abreve=667;e.multiply=570;e.uacute=556;e.Tcaron=611;e.partialdiff=494;e.ydieresis=444;e.Nacute=722;e.icircumflex=278;e.Ecircumflex=667;e.adieresis=500;e.edieresis=444;e.cacute=444;e.nacute=556;e.umacron=556;e.Ncaron=722;e.Iacute=389;e.plusminus=570;e.brokenbar=220;e.registered=747;e.Gbreve=722;e.Idotaccent=389;e.summation=600;e.Egrave=667;e.racute=389;e.omacron=500;e.Zacute=611;e.Zcaron=611;e.greaterequal=549;e.Eth=722;e.Ccedilla=667;e.lcommaaccent=278;e.tcaron=366;e.eogonek=444;e.Uogonek=722;e.Aacute=667;e.Adieresis=667;e.egrave=444;e.zacute=389;e.iogonek=278;e.Oacute=722;e.oacute=500;e.amacron=500;e.sacute=389;e.idieresis=278;e.Ocircumflex=722;e.Ugrave=722;e.Delta=612;e.thorn=500;e.twosuperior=300;e.Odieresis=722;e.mu=576;e.igrave=278;e.ohungarumlaut=500;e.Eogonek=667;e.dcroat=500;e.threequarters=750;e.Scedilla=556;e.lcaron=382;e.Kcommaaccent=667;e.Lacute=611;e.trademark=1e3;e.edotaccent=444;e.Igrave=389;e.Imacron=389;e.Lcaron=611;e.onehalf=750;e.lessequal=549;e.ocircumflex=500;e.ntilde=556;e.Uhungarumlaut=722;e.Eacute=667;e.emacron=444;e.gbreve=500;e.onequarter=750;e.Scaron=556;e.Scommaaccent=556;e.Ohungarumlaut=722;e.degree=400;e.ograve=500;e.Ccaron=667;e.ugrave=556;e.radical=549;e.Dcaron=722;e.rcommaaccent=389;e.Ntilde=722;e.otilde=500;e.Rcommaaccent=667;e.Lcommaaccent=611;e.Atilde=667;e.Aogonek=667;e.Aring=667;e.Otilde=722;e.zdotaccent=389;e.Ecaron=667;e.Iogonek=389;e.kcommaaccent=500;e.minus=606;e.Icircumflex=389;e.ncaron=556;e.tcommaaccent=278;e.logicalnot=606;e.odieresis=500;e.udieresis=556;e.notequal=549;e.gcommaaccent=500;e.eth=500;e.zcaron=389;e.ncommaaccent=556;e.onesuperior=300;e.imacron=278;e.Euro=500}));e["Times-Italic"]=(0,a.getLookupTableFactory)((function(e){e.space=250;e.exclam=333;e.quotedbl=420;e.numbersign=500;e.dollar=500;e.percent=833;e.ampersand=778;e.quoteright=333;e.parenleft=333;e.parenright=333;e.asterisk=500;e.plus=675;e.comma=250;e.hyphen=333;e.period=250;e.slash=278;e.zero=500;e.one=500;e.two=500;e.three=500;e.four=500;e.five=500;e.six=500;e.seven=500;e.eight=500;e.nine=500;e.colon=333;e.semicolon=333;e.less=675;e.equal=675;e.greater=675;e.question=500;e.at=920;e.A=611;e.B=611;e.C=667;e.D=722;e.E=611;e.F=611;e.G=722;e.H=722;e.I=333;e.J=444;e.K=667;e.L=556;e.M=833;e.N=667;e.O=722;e.P=611;e.Q=722;e.R=611;e.S=500;e.T=556;e.U=722;e.V=611;e.W=833;e.X=611;e.Y=556;e.Z=556;e.bracketleft=389;e.backslash=278;e.bracketright=389;e.asciicircum=422;e.underscore=500;e.quoteleft=333;e.a=500;e.b=500;e.c=444;e.d=500;e.e=444;e.f=278;e.g=500;e.h=500;e.i=278;e.j=278;e.k=444;e.l=278;e.m=722;e.n=500;e.o=500;e.p=500;e.q=500;e.r=389;e.s=389;e.t=278;e.u=500;e.v=444;e.w=667;e.x=444;e.y=444;e.z=389;e.braceleft=400;e.bar=275;e.braceright=400;e.asciitilde=541;e.exclamdown=389;e.cent=500;e.sterling=500;e.fraction=167;e.yen=500;e.florin=500;e.section=500;e.currency=500;e.quotesingle=214;e.quotedblleft=556;e.guillemotleft=500;e.guilsinglleft=333;e.guilsinglright=333;e.fi=500;e.fl=500;e.endash=500;e.dagger=500;e.daggerdbl=500;e.periodcentered=250;e.paragraph=523;e.bullet=350;e.quotesinglbase=333;e.quotedblbase=556;e.quotedblright=556;e.guillemotright=500;e.ellipsis=889;e.perthousand=1e3;e.questiondown=500;e.grave=333;e.acute=333;e.circumflex=333;e.tilde=333;e.macron=333;e.breve=333;e.dotaccent=333;e.dieresis=333;e.ring=333;e.cedilla=333;e.hungarumlaut=333;e.ogonek=333;e.caron=333;e.emdash=889;e.AE=889;e.ordfeminine=276;e.Lslash=556;e.Oslash=722;e.OE=944;e.ordmasculine=310;e.ae=667;e.dotlessi=278;e.lslash=278;e.oslash=500;e.oe=667;e.germandbls=500;e.Idieresis=333;e.eacute=444;e.abreve=500;e.uhungarumlaut=500;e.ecaron=444;e.Ydieresis=556;e.divide=675;e.Yacute=556;e.Acircumflex=611;e.aacute=500;e.Ucircumflex=722;e.yacute=444;e.scommaaccent=389;e.ecircumflex=444;e.Uring=722;e.Udieresis=722;e.aogonek=500;e.Uacute=722;e.uogonek=500;e.Edieresis=611;e.Dcroat=722;e.commaaccent=250;e.copyright=760;e.Emacron=611;e.ccaron=444;e.aring=500;e.Ncommaaccent=667;e.lacute=278;e.agrave=500;e.Tcommaaccent=556;e.Cacute=667;e.atilde=500;e.Edotaccent=611;e.scaron=389;e.scedilla=389;e.iacute=278;e.lozenge=471;e.Rcaron=611;e.Gcommaaccent=722;e.ucircumflex=500;e.acircumflex=500;e.Amacron=611;e.rcaron=389;e.ccedilla=444;e.Zdotaccent=556;e.Thorn=611;e.Omacron=722;e.Racute=611;e.Sacute=500;e.dcaron=544;e.Umacron=722;e.uring=500;e.threesuperior=300;e.Ograve=722;e.Agrave=611;e.Abreve=611;e.multiply=675;e.uacute=500;e.Tcaron=556;e.partialdiff=476;e.ydieresis=444;e.Nacute=667;e.icircumflex=278;e.Ecircumflex=611;e.adieresis=500;e.edieresis=444;e.cacute=444;e.nacute=500;e.umacron=500;e.Ncaron=667;e.Iacute=333;e.plusminus=675;e.brokenbar=275;e.registered=760;e.Gbreve=722;e.Idotaccent=333;e.summation=600;e.Egrave=611;e.racute=389;e.omacron=500;e.Zacute=556;e.Zcaron=556;e.greaterequal=549;e.Eth=722;e.Ccedilla=667;e.lcommaaccent=278;e.tcaron=300;e.eogonek=444;e.Uogonek=722;e.Aacute=611;e.Adieresis=611;e.egrave=444;e.zacute=389;e.iogonek=278;e.Oacute=722;e.oacute=500;e.amacron=500;e.sacute=389;e.idieresis=278;e.Ocircumflex=722;e.Ugrave=722;e.Delta=612;e.thorn=500;e.twosuperior=300;e.Odieresis=722;e.mu=500;e.igrave=278;e.ohungarumlaut=500;e.Eogonek=611;e.dcroat=500;e.threequarters=750;e.Scedilla=500;e.lcaron=300;e.Kcommaaccent=667;e.Lacute=556;e.trademark=980;e.edotaccent=444;e.Igrave=333;e.Imacron=333;e.Lcaron=611;e.onehalf=750;e.lessequal=549;e.ocircumflex=500;e.ntilde=500;e.Uhungarumlaut=722;e.Eacute=611;e.emacron=444;e.gbreve=500;e.onequarter=750;e.Scaron=500;e.Scommaaccent=500;e.Ohungarumlaut=722;e.degree=400;e.ograve=500;e.Ccaron=667;e.ugrave=500;e.radical=453;e.Dcaron=722;e.rcommaaccent=389;e.Ntilde=667;e.otilde=500;e.Rcommaaccent=611;e.Lcommaaccent=556;e.Atilde=611;e.Aogonek=611;e.Aring=611;e.Otilde=722;e.zdotaccent=389;e.Ecaron=611;e.Iogonek=333;e.kcommaaccent=444;e.minus=675;e.Icircumflex=333;e.ncaron=500;e.tcommaaccent=278;e.logicalnot=675;e.odieresis=500;e.udieresis=500;e.notequal=549;e.gcommaaccent=500;e.eth=500;e.zcaron=389;e.ncommaaccent=500;e.onesuperior=300;e.imacron=278;e.Euro=500}));e.ZapfDingbats=(0,a.getLookupTableFactory)((function(e){e.space=278;e.a1=974;e.a2=961;e.a202=974;e.a3=980;e.a4=719;e.a5=789;e.a119=790;e.a118=791;e.a117=690;e.a11=960;e.a12=939;e.a13=549;e.a14=855;e.a15=911;e.a16=933;e.a105=911;e.a17=945;e.a18=974;e.a19=755;e.a20=846;e.a21=762;e.a22=761;e.a23=571;e.a24=677;e.a25=763;e.a26=760;e.a27=759;e.a28=754;e.a6=494;e.a7=552;e.a8=537;e.a9=577;e.a10=692;e.a29=786;e.a30=788;e.a31=788;e.a32=790;e.a33=793;e.a34=794;e.a35=816;e.a36=823;e.a37=789;e.a38=841;e.a39=823;e.a40=833;e.a41=816;e.a42=831;e.a43=923;e.a44=744;e.a45=723;e.a46=749;e.a47=790;e.a48=792;e.a49=695;e.a50=776;e.a51=768;e.a52=792;e.a53=759;e.a54=707;e.a55=708;e.a56=682;e.a57=701;e.a58=826;e.a59=815;e.a60=789;e.a61=789;e.a62=707;e.a63=687;e.a64=696;e.a65=689;e.a66=786;e.a67=787;e.a68=713;e.a69=791;e.a70=785;e.a71=791;e.a72=873;e.a73=761;e.a74=762;e.a203=762;e.a75=759;e.a204=759;e.a76=892;e.a77=892;e.a78=788;e.a79=784;e.a81=438;e.a82=138;e.a83=277;e.a84=415;e.a97=392;e.a98=392;e.a99=668;e.a100=668;e.a89=390;e.a90=390;e.a93=317;e.a94=317;e.a91=276;e.a92=276;e.a205=509;e.a85=509;e.a206=410;e.a86=410;e.a87=234;e.a88=234;e.a95=334;e.a96=334;e.a101=732;e.a102=544;e.a103=544;e.a104=910;e.a106=667;e.a107=760;e.a108=760;e.a112=776;e.a111=595;e.a110=694;e.a109=626;e.a120=788;e.a121=788;e.a122=788;e.a123=788;e.a124=788;e.a125=788;e.a126=788;e.a127=788;e.a128=788;e.a129=788;e.a130=788;e.a131=788;e.a132=788;e.a133=788;e.a134=788;e.a135=788;e.a136=788;e.a137=788;e.a138=788;e.a139=788;e.a140=788;e.a141=788;e.a142=788;e.a143=788;e.a144=788;e.a145=788;e.a146=788;e.a147=788;e.a148=788;e.a149=788;e.a150=788;e.a151=788;e.a152=788;e.a153=788;e.a154=788;e.a155=788;e.a156=788;e.a157=788;e.a158=788;e.a159=788;e.a160=894;e.a161=838;e.a163=1016;e.a164=458;e.a196=748;e.a165=924;e.a192=748;e.a166=918;e.a167=927;e.a168=928;e.a169=928;e.a170=834;e.a171=873;e.a172=828;e.a173=924;e.a162=924;e.a174=917;e.a175=930;e.a176=931;e.a177=463;e.a178=883;e.a179=836;e.a193=836;e.a180=867;e.a199=867;e.a181=696;e.a200=696;e.a182=874;e.a201=874;e.a183=760;e.a184=946;e.a197=771;e.a185=865;e.a194=771;e.a198=888;e.a186=967;e.a195=888;e.a187=831;e.a188=873;e.a189=927;e.a190=970;e.a191=918}))}));t.getMetrics=i},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.getXfaFontName=getXfaFontName;t.getXfaFontWidths=function getXfaFontWidths(e){const t=getXfaFontName(e);if(!t)return null;const{baseWidths:r,factors:a}=t;if(!a)return r;return r.map(((e,t)=>e*a[t]))};var a=r(56),i=r(57),n=r(58),s=r(59),o=r(60),c=r(9),l=r(38);const h=(0,c.getLookupTableFactory)((function(e){e["MyriadPro-Regular"]=e["PdfJS-Fallback-Regular"]={name:"LiberationSans-Regular",factors:s.MyriadProRegularFactors,baseWidths:n.LiberationSansRegularWidths,lineHeight:s.MyriadProRegularLineHeight};e["MyriadPro-Bold"]=e["PdfJS-Fallback-Bold"]={name:"LiberationSans-Bold",factors:s.MyriadProBoldFactors,baseWidths:n.LiberationSansBoldWidths,lineHeight:s.MyriadProBoldLineHeight};e["MyriadPro-It"]=e["MyriadPro-Italic"]=e["PdfJS-Fallback-Italic"]={name:"LiberationSans-Italic",factors:s.MyriadProItalicFactors,baseWidths:n.LiberationSansItalicWidths,lineHeight:s.MyriadProItalicLineHeight};e["MyriadPro-BoldIt"]=e["MyriadPro-BoldItalic"]=e["PdfJS-Fallback-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:s.MyriadProBoldItalicFactors,baseWidths:n.LiberationSansBoldItalicWidths,lineHeight:s.MyriadProBoldItalicLineHeight};e.ArialMT=e.Arial=e["Arial-Regular"]={name:"LiberationSans-Regular",baseWidths:n.LiberationSansRegularWidths};e["Arial-BoldMT"]=e["Arial-Bold"]={name:"LiberationSans-Bold",baseWidths:n.LiberationSansBoldWidths};e["Arial-ItalicMT"]=e["Arial-Italic"]={name:"LiberationSans-Italic",baseWidths:n.LiberationSansItalicWidths};e["Arial-BoldItalicMT"]=e["Arial-BoldItalic"]={name:"LiberationSans-BoldItalic",baseWidths:n.LiberationSansBoldItalicWidths};e["Calibri-Regular"]={name:"LiberationSans-Regular",factors:a.CalibriRegularFactors,baseWidths:n.LiberationSansRegularWidths,lineHeight:a.CalibriRegularLineHeight};e["Calibri-Bold"]={name:"LiberationSans-Bold",factors:a.CalibriBoldFactors,baseWidths:n.LiberationSansBoldWidths,lineHeight:a.CalibriBoldLineHeight};e["Calibri-Italic"]={name:"LiberationSans-Italic",factors:a.CalibriItalicFactors,baseWidths:n.LiberationSansItalicWidths,lineHeight:a.CalibriItalicLineHeight};e["Calibri-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:a.CalibriBoldItalicFactors,baseWidths:n.LiberationSansBoldItalicWidths,lineHeight:a.CalibriBoldItalicLineHeight};e["Segoeui-Regular"]={name:"LiberationSans-Regular",factors:o.SegoeuiRegularFactors,baseWidths:n.LiberationSansRegularWidths,lineHeight:o.SegoeuiRegularLineHeight};e["Segoeui-Bold"]={name:"LiberationSans-Bold",factors:o.SegoeuiBoldFactors,baseWidths:n.LiberationSansBoldWidths,lineHeight:o.SegoeuiBoldLineHeight};e["Segoeui-Italic"]={name:"LiberationSans-Italic",factors:o.SegoeuiItalicFactors,baseWidths:n.LiberationSansItalicWidths,lineHeight:o.SegoeuiItalicLineHeight};e["Segoeui-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:o.SegoeuiBoldItalicFactors,baseWidths:n.LiberationSansBoldItalicWidths,lineHeight:o.SegoeuiBoldItalicLineHeight};e["Helvetica-Regular"]=e.Helvetica={name:"LiberationSans-Regular",factors:i.HelveticaRegularFactors,baseWidths:n.LiberationSansRegularWidths,lineHeight:i.HelveticaRegularLineHeight};e["Helvetica-Bold"]={name:"LiberationSans-Bold",factors:i.HelveticaBoldFactors,baseWidths:n.LiberationSansBoldWidths,lineHeight:i.HelveticaBoldLineHeight};e["Helvetica-Italic"]={name:"LiberationSans-Italic",factors:i.HelveticaItalicFactors,baseWidths:n.LiberationSansItalicWidths,lineHeight:i.HelveticaItalicLineHeight};e["Helvetica-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:i.HelveticaBoldItalicFactors,baseWidths:n.LiberationSansBoldItalicWidths,lineHeight:i.HelveticaBoldItalicLineHeight}}));function getXfaFontName(e){const t=(0,l.normalizeFontName)(e);return h()[t]}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.CalibriRegularLineHeight=t.CalibriRegularFactors=t.CalibriItalicLineHeight=t.CalibriItalicFactors=t.CalibriBoldLineHeight=t.CalibriBoldItalicLineHeight=t.CalibriBoldItalicFactors=t.CalibriBoldFactors=void 0;t.CalibriBoldFactors=[1.3877,1,.83908,.77539,.77539,.83908,.83908,.83908,.83908,.83908,.83908,.83908,.83908,.83908,.83908,.83908,.83908,.7762,.7762,.73293,.73293,.73293,.73293,.73293,.73293,.82577,.87289,.87289,.88506,.80367,.73133,.73133,.73133,.73133,.73133,.73133,.73133,.73133,.73133,.88656,.73133,.73133,.57184,.87356,.6965,.88506,.91133,.7514,.81921,.68156,.81921,.81921,1,.81921,.87356,1,.99862,.99862,1,.91075,.87356,.95958,.76229,.95958,.95958,.95958,.95958,.95958,.95958,.95958,.95958,.95958,.95958,.56289,.95958,.59526,.59526,.75727,.75727,1,.69225,.69225,.89019,.70424,1,.91926,.70823,1.04924,1.04924,.9121,.9121,.9121,1,.9121,.9121,.86943,.87402,.86943,.86943,.86943,.86943,.86943,.86943,.86943,.84896,.81235,.86943,.82001,.87508,.87508,.86943,.79795,.9762,.87356,.99819,.88198,.77958,.77958,.77958,1,.79795,.70864,.70572,.70572,.70572,.70572,1,1,1,1,1,.70572,.8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.70864,.70864,.70864,.70864,1,.78275,.81055,.81055,.81055,.81055,1,.86943,.79795,.90399,.90399,.90399,.90399,.90399,.90399,.90399,.90399,.90399,.77892,.77892,.56029,.90399,.90399,.88653,.96017,.96017,.96017,.96017,.96017,.82577,.7648,.77892,.77892,.77892,.77892,.77892,.78257,.78257,.78257,.78257,.78257,.88762,.88762,.88762,.88762,.90323,1,.88762,.8715,.8715,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.88762,.96108,.96108,.88762,.97566,.80352,.88762,.90747,.88762,.88762,1.31006,1.81055,.90527,.90527,1.81055,1.53711,.94434,.85284,.85284,1.2798,.92138,.88762,.8785,1.54657,1.69808,.8936,1,.88331,.88331,.97507,.97507,1.15543,1,1.7801,1.42259,.75241,.75241,1.20528,1,1,.75241,.75241,.75241,.75241,.91056,.89552,.78287,.91027,1.20528,1,1,.82845,.92794,1,1,1.13254,.89552,1,.8785,.89552,.89552,.83016,.93125,.85592,.87842,1,1.24487,1,1.06303,.90747,1,1,.91133,.70674,.88401,.90518,.90518,.90518,.90518,.90518,.90518,.90518,.90518,.91133,1,.71143,.90518,.90527,.89552,.8785,.90518,.96399,1.01407,.85284,.85356,1.23108,.89049,.89049,.8785,.97801,.97171,.97801,.95015,1,1,1,.91133,.88525,1,.56892,.91133,1,.83406,.77618,.84021,.77618,.77618,1,.77618,.90807,.90176,1,.85284,.90747,.96839,.96839,1.03372,1.03372,.8785,.89608,.8785,1,1.44947,1.45894,1,.88401,.88401,.88401,.88401,.88401,.88401,.90167,.88401,1.17534,1.37077,.8941,.8941,.9716,1,1,1,.88401,1.02988,1.02988,1.02988,1.02988,.88401,.91916,.91916,.86304,.86077,1,.86304,.88401,.88401,.87445,.79468,1,.88175,.85284,.90747,1,.91133,.85284,.9297,1.08004,.94903,1,.91488,.70645,1,1,.85284,1,.92099,.85284,1,1,.8785,.8785,.87802,.8785,1,.91133,1,.90747,.8785,.84723,.89552,.8801,.8801,.8801,.8801,.8801,.89291,.94721,.8801,.8801,.8801,.84971,.84971,.8801,.8801,.91133,.83489,.82845,.78864,.99862,1.12401,1.19118,.69825,.89049,.89049,.8801,.8785,1.07463,.93548,.93548,1.08696,.81988,.96134,1.06152,.84107,.97747,.75638,.85284,.90747,.95018,.97926,.8785,.75859,.75859,.92482,.87012,.87012,.87012,.92794,.92794,.92794,.92794,.98152,.91343,.91343,.90747,.91343,1,.68787,.85284,.85714,.98387,1,.7173,.7173,.7173,.7173,.7173,1,1,.89552,.91133,.81499,1,1,.79586,.78216,.91133,1.54657,1,1,.91133,.77192,1,1.04106,.87965,1.06452,.75841,1,1.00813,.8785,.91133,.88525,.84133,1.33431,1,.95161,.72021,1,1,1,1,.91133,.8785,.8785,.8785,.8785,.8785,.8785,.8785,.8785,.89552,.90363,1,1,1.01466,1.0088,1,.75806,.81055,1.04106,1,.82845,.73133,.90264,.90518,.90548,1,1,1.4956,.93835,1,1,2.2807,1,1,1,.90727,.90727,.8785,1,.94211,.94211,.94211,.94211,.8785,.8785,.85075,.95794,.95794,.95794,.95794,.95794,.82616,.86513,.85162,.85162,.85162,.85162,.91133,.85162,.79492,.79492,.79492,.79492,.91133,.79109];t.CalibriBoldLineHeight=1.2207;t.CalibriBoldItalicFactors=[1.3877,1,.83908,.77539,.77539,.83908,.83908,.83908,.83908,.83908,.83908,.83908,.83908,.83908,.83908,.83908,.83908,.7762,.7762,.71805,.71805,.71805,.71805,.71805,.71805,.82577,.87289,.87289,.88506,.86036,.73133,.73133,.73133,.73133,.73133,.73133,.73133,.73133,.73133,.88116,.73133,.73133,.57118,.87356,.6965,.88506,.91133,.7514,.81921,.67174,.81921,.81921,1,.81921,.87356,1,.99862,.99862,1,.91075,.87356,.95958,.76467,.95958,.95958,.95958,.95958,.95958,.95958,.95958,.95958,.95958,.95958,.56347,.95958,.59526,.59526,.75727,.75727,1,.69225,.69225,.89019,.70424,1,.91926,.70823,1.04924,1.04924,.90872,.90872,.90872,1,.90872,.90872,.85938,.87402,.85938,.85938,.85938,.85938,.85938,.85938,.85938,.87179,.80346,.85938,.79179,.87068,.87068,.85938,.79795,.97447,.87891,.97466,.87068,.77958,.77958,.77958,1,.79795,.69766,.70572,.70572,.70572,.70572,1,1,1,1,1,.70572,.8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.69766,.69766,.69766,.69766,1,.7957,.81055,.81055,.81055,.81055,1,.86441,.79795,.90399,.90399,.90399,.90399,.90399,.90399,.90399,.90399,.90399,.77892,.77892,.55853,.90399,.90399,.88653,.96068,.96068,.96068,.96068,.96068,.82577,.74889,.77892,.77892,.77892,.77892,.77892,.78257,.78257,.78257,.78257,.78257,.94908,.94908,.94908,.94908,.90323,1,.94908,.85887,.85887,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.94908,.94252,.94252,.94908,.97566,.80352,.94908,.90747,.94908,.94908,1.3107,1.81055,.90616,.90527,1.81055,1.53711,.94434,.85284,.85284,1.2798,.92138,.94908,.86411,1.529,1.69808,.87411,1,.88331,.88331,.97507,.97507,1.15543,1,1.7801,1.42259,.74012,.74012,1.20528,1,1,.74012,.74012,.74012,.74012,.91056,.89552,.78022,.91027,1.20528,1,1,.82845,.92794,1,1,1.13254,.89552,1,.86411,.89552,.89552,.79538,.92726,.85592,.8728,1,1.24487,1,1.48387,.90747,1,1,.91133,.70088,.88401,.88323,.88323,.88323,.88323,.88323,.88323,.88323,.88323,.91133,1,.71094,.88323,.90527,.89552,.86331,.88323,.95612,.95612,.85284,.85356,1.23108,.8753,.8753,.8785,.97801,.97171,.97801,.95015,1,1,1,.91133,.88525,1,.56892,.91133,1,.83406,.86411,.84021,.86411,.86411,1,.86411,.90807,.90176,1,.85284,.90747,.96839,.96839,1.03372,1.03372,.86331,.8777,.86331,1,1.44947,1.45894,1,.88401,.88401,.88401,.88401,.88401,.88401,.90167,.88401,1.17534,1.37077,.8941,.8941,.9716,1,1,1,.88401,1.02988,1.02988,1.02988,1.02988,.88401,.91916,.91916,.86304,.84814,1,.86304,.88401,.88401,.87445,.77312,1,.88175,.85284,.90747,1,.91133,.85284,.9297,1.08004,.94903,1,.9039,.70645,1,1,.85284,1,.91822,.85284,1,1,.86331,.86331,.86906,.86331,1,.91133,1,.90747,.86331,.84723,.89552,.86331,.86331,.86331,.86331,.86331,.86549,.94721,.86331,.86331,.86331,.86015,.86015,.86331,.86331,.91133,.83489,.82845,.78864,.99862,1.19129,1.19118,.69825,.89049,.89049,.86331,.86411,1.07463,.93548,.93548,1.08696,.81988,.96134,1.06152,.83326,.99375,.81344,.85284,.90747,.95018,.95452,.86411,.75859,.75859,.92482,.87012,.87012,.87012,.92794,.89807,.92794,.92794,.98152,.90464,.90464,.90747,.90464,1,.68787,.85284,.87581,.98387,1,.70852,.70852,.70852,.70852,.70852,1,1,.89552,.91133,.81499,1,1,.82046,.76422,.91133,1.56239,1,1,.91133,.77192,1,1.04106,.96057,1.06452,.75841,1,1.02189,.86411,.91133,.88525,.84133,1.33431,1,.95161,.72021,1,1,1,1,.91133,.86331,.86331,.86331,.86331,.86331,.86331,.86331,.86331,.89552,.90363,1,1,1.01466,1.0088,1,.75806,.81055,1.04106,1,.82845,.73133,.90631,.88323,.85174,1,1,1.4956,.92972,1,1,2.2807,1,1,1,.90727,.90727,.86331,1,.92733,.92733,.92733,.92733,.86331,.86331,.84372,.95794,.95794,.95794,.95794,.95794,.82616,.85668,.84548,.84548,.84548,.84548,.91133,.84548,.79492,.79492,.79492,.79492,.91133,.74081];t.CalibriBoldItalicLineHeight=1.2207;t.CalibriItalicFactors=[1.3877,1,.8675,.76318,.76318,.8675,.8675,.8675,.8675,.8675,.8675,.8675,.8675,.8675,.8675,.8675,.8675,.81552,.81552,.72346,.72346,.72346,.72346,.72346,.72346,.77818,.85193,.85193,.86477,.84134,.73206,.73206,.73206,.73206,.73206,.73206,.73206,.73206,.73206,.86698,.73206,.73206,.6192,.86275,.7363,.86477,.91133,.7522,.81105,.7286,.81105,.81105,1,.81105,.86275,1,.99862,.99862,1,.90872,.86275,.90685,.77896,.90685,.90685,.90685,.90685,.90685,.90685,.90685,.90685,.90685,.90685,.64824,.90685,.6377,.6377,.77892,.77892,1,.75593,.75593,.85871,.76032,1,.98156,.77261,1.02638,1.02638,.89249,.89249,.89249,1,.89249,.89249,.84118,.8667,.84118,.84118,.84118,.84118,.84118,.84118,.84118,.87291,.85696,.84118,.82411,.84557,.84557,.84118,.77452,.90782,.85984,.903,.85374,.75186,.75186,.75186,1,.77452,.67789,.70572,.70572,.70572,.70572,1,1,1,1,1,.70572,.8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.67789,.67789,.67789,.67789,1,.76466,.79776,.79776,.79776,.79776,1,.84369,.77452,.88844,.88844,.88844,.88844,.88844,.88844,.88844,.88844,.88844,.7306,.7306,.56321,.88844,.88844,.85066,.94309,.94309,.94309,.94309,.94309,.77818,.75828,.7306,.7306,.7306,.7306,.7306,.76659,.76659,.76659,.76659,.76659,.9245,.9245,.9245,.9245,.87683,1,.9245,.84843,.84843,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.9245,.99058,.99058,.9245,1.02269,.90861,.9245,.90747,.9245,.9245,1.28809,1.81055,.90572,.90749,1.81055,1.55469,.94434,1.06139,.85284,1.2798,.88071,.9245,.9245,1.38313,1.77256,.92393,1,.94152,.94152,1.10369,1.10369,1.1437,1,1.91729,1.42259,.83203,.83203,1.18622,1,1,.83203,.83203,.83203,.83203,.92229,.89552,.78086,.91027,1.18622,1,1,.96309,.89807,1,1,1.13254,.89552,1,.9245,.89552,.89552,.8875,.99034,.84737,.942,1,1.17889,1,1.48387,.90747,1,1,.91133,.67009,.82601,.85865,.85865,.85865,.85865,.85865,.85865,.85865,.85865,.91133,1,.68994,.85865,.90527,.89552,.9245,.85865,1.03667,1.03667,.85284,.85284,1.23108,.94635,.94635,.94469,1.17223,1.11523,.97801,1.09842,1,1,1,.91133,.84426,1,.54873,.91133,1,.82616,.9245,.8916,.9245,.9245,1,.9245,.86331,.8739,1,.85284,.90747,.92098,.92098,1.0176,1.0176,.9245,.93591,.9245,1,1.44947,1.40909,1,1.03297,.82601,.82601,.82601,.82601,.82601,1.05611,.82601,1.19658,1.33512,.8941,.8941,.97622,1,1,1,1.03297,1.23516,1.23516,1.23516,1.23516,.82601,1.07692,1.07692,.90918,.90918,1,.90918,1.03297,1.03297,.94048,.9375,1,.93407,.85284,.90747,1,.91133,.85284,1.09231,1.0336,1.11429,1,.94959,.71353,1,1,.85284,1,.98217,.85284,1,1,.9245,.9245,.92534,.9245,1,.91133,1,.90747,.9245,.89746,.89552,.92274,.92274,.92274,.92274,.92274,.86291,.93695,.92274,.92274,.92274,.89404,.89404,.92274,.92274,.91133,.79801,.80504,.76288,.99862,1.16359,1.15642,.69825,.86651,.86651,.92274,.9245,1.09091,.91056,.91056,1.07806,.80395,.90861,1.03809,.83437,1.00225,.82507,.85284,.90747,.97094,.97248,.9245,.83319,.75859,1.1293,1.2566,1.2566,1.2566,1.12308,1.12308,1.12308,1.12308,1.15601,1.02933,1.02933,.90747,1.02933,1,.68787,.85284,.88832,.96334,1,.77832,.77832,.77832,.77832,.77832,1,1,.89552,.91133,.774,1,1,.88178,.84438,.91133,1.39543,1,1,.91133,.7589,1,1.20562,1.03525,1.23023,.97655,1,1.0297,.9245,.91133,.84426,.80972,1.35191,1,.95161,.70508,1,1,1,1,.91133,.9245,.9245,.9245,.9245,.9245,.9245,.9245,.9245,.89552,.90186,1,1,1.0088,1.0044,1,.739,.79776,1.20562,1,.96309,.73206,.89693,.85865,.90933,1,1,1.4956,.97858,1,1,2.01462,1,1,1,1.05859,1.05859,.9245,1,.9849,.9849,.9849,.9849,.9245,.9245,.8916,.98986,.98986,.98986,.98986,.98986,.86621,.84153,.89453,.89453,.89453,.89453,.91133,.89453,.79004,.79004,.79004,.79004,.91133,.75026];t.CalibriItalicLineHeight=1.2207;t.CalibriRegularFactors=[1.3877,1,.8675,.76318,.76318,.8675,.8675,.8675,.8675,.8675,.8675,.86686,.8675,.8675,.8675,.8675,.8675,.81552,.81552,.73834,.73834,.73834,.73834,.73834,.73834,.77818,.85193,.85193,.86477,.84503,.73206,.73206,.73206,.73206,.73206,.73206,.73206,.73206,.73206,.86901,.73206,.73206,.62267,.86275,.74359,.86477,.91133,.7522,.81105,.75443,.81105,.81105,1,.81105,.86275,1,.99862,.99862,1,.90872,.86275,.90685,.77741,.90685,.90685,.90685,.90685,.90685,.90685,.90685,.90685,.90685,.90685,.65649,.90685,.6377,.6377,.77892,.77892,1,.75593,.75593,.85746,.76032,1,.98156,.77261,1.02638,1.02638,.89385,.89385,.89385,1,.89385,.89385,.85122,.8667,.85122,.85122,.85122,.85122,.85122,.85122,.85122,.88831,.88254,.85122,.85498,.85311,.85311,.85122,.77452,.95165,.86275,.89772,.86503,.75186,.75186,.75186,1,.77452,.68887,.70572,.70572,.70572,.70572,1,1,1,1,1,.70572,.8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.68887,.68887,.68887,.68887,1,.74171,.79776,.79776,.79776,.79776,1,.85122,.77452,.88844,.88844,.88844,.88844,.88844,.88844,.88844,.88844,.88844,.7306,.7306,.56963,.88844,.88844,.85066,.94258,.94258,.94258,.94258,.94258,.77818,.75657,.7306,.7306,.7306,.7306,.7306,.76659,.76659,.76659,.76659,.76659,.86128,.86128,.86128,.86128,.87683,.86128,.8693,.8693,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.86128,.98142,.98142,.86128,1.02269,.90861,.86128,.90747,.86128,.86128,1.28809,1.81055,.90527,.90527,1.81055,1.55469,.94434,1.06139,.85284,1.2798,.88071,.86128,.94469,1.39016,1.77256,.9236,1,.94152,.94152,1.10369,1.10369,1.1437,1.91729,1.42259,.8457,.8457,1.18622,.8457,.8457,.8457,.8457,.92229,.89552,.81209,.91027,1.18622,1,.96309,.89807,1.13254,.89552,.94469,.89552,.89552,.92454,.9921,.84737,.94035,1,1.17889,1.48387,.90747,1,1,.91133,.67742,.82601,.89464,.89464,.89464,.89464,.89464,.89464,.89464,.89464,.91133,.69043,.89464,.90527,.89552,.94469,.89464,1.02191,1.02191,.85284,.85356,1.23108,.96576,.96576,.94469,1.17223,1.11523,.97801,1.09842,1,1,1,.91133,.84426,.54873,.91133,.82616,.84636,.89258,.84636,.84636,1,.84636,.86331,1,1,1,1,1,1,1,1,1,1,1,.8739,.85284,.90747,.92098,.92098,1.0176,1.0176,.94469,.95786,.94469,1,1.44947,1.40909,1.03297,.82601,.82601,.82601,.82601,.82601,1.05611,.82601,1.19658,1.33512,.8941,.8941,.97622,1,1,1,1.03297,1.23516,1.23516,1.23516,1.23516,.82601,1.07692,1.07692,.90918,.90918,1,.90918,1.03297,1.03297,.92578,.90452,1,1.11842,.85284,.90747,1,.91133,.85284,1.09231,1.0336,1.11429,1,.95897,.71353,1,1,.85284,1,.95424,.85284,1,1,.94469,.94469,.95877,.94469,1,.91133,1,.90747,.94469,.89746,.89552,.9482,.9482,.9482,.9482,.9482,.90016,.93695,.9482,.9482,.9482,.89181,.89181,.9482,.9482,.91133,.79801,.80504,.76288,.99862,1.08707,1.15642,.69825,.86651,.86651,.9482,.94469,1.09091,.91056,.91056,1.07806,.80395,.90861,1.03809,.84286,1.00452,.80113,.85284,.90747,.97094,.99247,.94469,.83319,.75859,1.1293,1.2566,1.2566,1.2566,1.12308,1.12308,1.12308,1.12308,1.15601,1.04692,1.04692,.90747,1.04692,1,.68787,.85284,.89442,.96334,1,.78223,.78223,.78223,.78223,.78223,1,1,.89552,.91133,.774,1,.86155,.85208,.91133,1.39016,1,1,.91133,.7589,1,1.20562,.98022,1.23023,.92188,1,.9561,.94469,.91133,.84426,.80972,1.35191,.95161,.70508,1,1,1,1,.91133,.94469,.94469,.94469,.94469,.94469,.94469,.94469,.94469,.89552,.90186,1,1,1.0088,1.0044,1,.739,.79776,1.20562,1,.96309,.73206,.88844,.89464,.96766,1,1,1.4956,1.07185,.99413,.96334,1.08065,.99331,1,1,2.01462,1,1,1,1,1.05859,1.05859,.94469,1,.99018,.99018,.99018,.99018,.94469,.94469,.90332,.98986,.98986,.98986,.98986,.98986,.86621,.83969,.90527,.90527,.90527,.90527,.91133,.90527,.79004,.79004,.79004,.79004,.91133,.78848];t.CalibriRegularLineHeight=1.2207},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.HelveticaRegularLineHeight=t.HelveticaRegularFactors=t.HelveticaItalicLineHeight=t.HelveticaItalicFactors=t.HelveticaBoldLineHeight=t.HelveticaBoldItalicLineHeight=t.HelveticaBoldItalicFactors=t.HelveticaBoldFactors=void 0;t.HelveticaBoldFactors=[.76116,1,.99977,1,1,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,1.00001,.99977,.99977,.99977,.85148,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,.9998,1.00001,1.00001,.99997,.99977,1.00026,.99977,.99973,1.00026,1.00022,.99988,1.00022,1.00022,1.00022,1.00022,.99977,.99999,.99861,.99861,1,.99977,.99977,1.0006,1.00042,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.00078,1.0006,.99973,.99973,.99977,.99977,.99977,1.00026,1.00026,1.00001,1.00026,1.00026,1.00026,1.00026,.99999,.99999,.99977,.99977,.99977,.99977,.99977,.99977,1.00022,1,1.00022,1.00022,1.00022,1.00022,1.00022,1.00022,1.00022,1,1.00013,1.00022,1.00036,1.00022,1.00022,1.00022,1.00001,1.00024,.99977,.9999,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.00001,1.00001,1.00001,1.00001,1.00001,.99984,1.00026,1.00026,1.00026,1.00026,1.00026,1.00022,1.00001,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,1.00001,1.00001,.99973,.99977,.99977,1.00001,1.00016,1.00016,1.00016,1.00016,1.00016,1.00001,1.00069,1.00001,1.00001,1.00001,1.00001,1.00001,1.00026,1.00026,1.00026,1.00026,1.00026,.99973,.99973,.99973,.99973,.99998,1,.99973,.99982,.99982,1,.99977,1.00035,.99977,1.00019,.99944,1.00001,1.00008,1.00021,.99926,1.00035,1.00035,.99942,1.00048,.99999,.99977,1.00022,1.00035,1.00001,.99977,1.00026,.99989,1.00057,1.00001,.99936,1.00052,1.00012,.99996,1.00043,1,1.00035,.9994,.99976,1.00035,1.00038,.99971,1.00019,.9994,1.00001,1.0006,1.00044,.99973,1.00023,1.00047,1,.99942,.99989,.99973,1.00052,1.00041,1.00119,1.00037,.99973,.99973,1.00002,.99986,1.00041,1.00041,.99902,.9996,1.00034,.99999,1.00026,.99999,1.00026,.99973,1.00052,.99973,1,.99973,1.00041,1.00075,.9994,1.0003,.99999,1,1.00041,.99955,1,.99915,1.0005,1.00026,1.00119,.99955,.99973,1.0006,.99911,1.0006,1.00026,.99972,1.00026,.99902,.99973,1.00035,1,.99999,1,.99971,1.00047,1.00023,.99973,1.00041,1.00041,.99973,.99977,1,.99973,1.00031,.99973,.99973,1,1,1,1,1,1,1,1.00003,1.00003,.99959,.9999,.99973,1.00026,1.0006,1.00077,.99942,1.41144,.99959,.99959,.99998,.99998,.99998,1,1.00077,.99972,.99973,.99973,.99998,1,1,.99973,.99973,.99973,.99973,.99998,.99973,1.00055,.99999,.99998,1,.99962,.99998,1.0006,1,1,1.00025,.99973,1,1.00026,.99973,.99973,1.03374,1.00026,1.00024,.99927,.9995,.99998,1,1.00034,1.06409,1.36625,1.41144,.99973,.99998,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99998,1,.99973,1,.99973,1.00026,.99973,1.00082,.99962,1.00003,.99915,.99984,1.00026,1.00026,1.00026,.99998,.99999,.99998,.99998,1,.99999,1,.99973,1.00002,.99998,.99973,.99973,.99998,.99973,1.00026,.99973,1.00026,1.00026,1.00026,1.00026,1.00026,.99998,1,1.00003,1.00031,.99973,.99973,.99998,.99998,1.00026,1.00026,1.00026,1.00042,.99999,.99998,1,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,.99973,1.0006,1.00015,1.00027,.99999,.99999,.99561,.99999,.99999,.99977,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,.99973,1.00069,.99973,.99973,1.0006,1.0006,.99973,1.03828,1.0006,.99999,1.00003,1.00031,1.41144,.99973,1.00003,1.0006,.99972,1.0006,1.40579,.99982,.60299,1,1,1.00003,1.00106,.99867,1.00003,1,1,1.00026,1.00026,.9993,1.00026,1.00026,.99973,1,1.00031,1.00026,.99973,.99973,1.00026,1.00026,1.00026,1.00026,1.00026,1.00016,.99998,1.00026,1.00026,1.00026,1.00032,1.00032,1.00026,1.00026,.99973,1.00002,1.00002,1.00002,1.40483,.99968,.99936,1,1.00026,1.00026,1.00026,1.00026,.99973,.99998,.99998,.99972,.99982,1.0006,1,1.00023,.99954,1.00049,1.00003,1.06409,1.20985,.99945,1.00026,1.00026,1.00026,.99974,1,1,1,1.0006,1.0006,1.0006,1.0006,1.00087,.99959,.99959,1.00031,.99959,.99959,1.00025,1.00003,1.00056,.99998,1.41144,.99973,.99973,.99973,.99973,.99973,.99973,.99999,.99973,.99973,1.00002,.99998,1.40579,.99988,1,.99973,1.0006,1,.99953,.99973,1.39713,1.00054,.99998,.99935,.99998,.8121,.99998,1.00087,1.00026,.99973,1.00002,1.00002,.99998,1,.99998,1,1.00026,1.00026,1.00026,1.00026,.99973,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,.99973,.99955,1.0006,.99998,1,1,1,1,1.00026,.99998,.99998,1,1.00001,.99561,.99973,1.00041,1,1,.99998,1,.99991,1,1.66475,1.0006,1,1,1,1,1.00026,1.41144,.99995,.99995,.99995,.99995,1.00026,1.00026,.99973,1.00022,1.00022,1.00022,1.00022,1.00022,.99973,.9993,.99973,.99973,.99973,.99973,.99973,.99973,1,1,1,1,.99973,.99902];t.HelveticaBoldLineHeight=1.2;t.HelveticaBoldItalicFactors=[.76116,1,.99977,1,1,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,1.00001,.99977,.99977,.99977,.91155,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,.9998,1.00001,1.00001,1,.99977,1.00026,.99977,.99973,1.00026,1.00022,1.00022,1.00022,1.00022,1.00022,1.00022,.99977,.99999,.99861,.99861,1,.99977,.99977,1.0006,.99971,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,.99969,1.0006,.99973,.99973,.99977,.99977,.99977,1.00026,1.00026,1.00001,1.00026,1.00026,1.00026,1.00026,.99999,.99999,.99977,.99977,.99977,.99977,.99977,.99977,1.00022,1,1.00022,1.00022,1.00022,1.00022,1.00022,1.00022,1.00022,1,.9998,1.00022,.99972,1.00022,1.00022,1.00022,1.00001,.99968,1.00032,1.00047,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.00001,1.00001,1.00001,1.00001,1.00001,.99944,1.00026,1.00026,1.00026,1.00026,1.00026,1.00022,1.00001,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,1.00001,1.00001,.99981,.99977,.99977,1.00001,1.00016,1.00016,1.00016,1.00016,1.00016,1.00001,.99966,1.00001,1.00001,1.00001,1.00001,1.00001,1.00026,1.00026,1.00026,1.00026,1.00026,.99973,.99973,.99973,.99973,.99998,1,.99973,.99982,.99982,1,.99977,.99999,.99977,1.00038,.99977,1.00001,1.00001,.99973,1.00066,.99967,.99967,1.00041,.99998,.99999,.99977,1.00022,.99967,1.00001,.99977,1.00026,.99964,1.00031,1.00001,.99999,.99999,1,1.00023,1,1,.99999,1.00035,1.00001,.99999,.99966,1.00029,1.00038,1.00035,1.00001,1.0006,1.0006,.99973,.99978,1.00001,1.00057,.99989,.99964,.99973,.99977,.99999,1.00058,.99973,.99973,.99973,.99955,.9995,1.00026,1.00026,1.00032,.99989,1.00034,.99999,1.00026,1.00026,1.00026,.99973,.45998,.99973,1.00026,.99973,1.00001,.99999,.99982,.99994,.99996,1,1.00042,1.00044,1.00029,1.00023,1.00044,1.00026,.99949,1.00002,.99973,1.0006,1.0006,1.0006,.99975,1.00026,1.00026,1.00032,.99973,.99967,1,1.00026,1,.99971,.99978,1,.99973,.99981,.99981,.99973,.99977,1,.99973,1.00031,.99973,.99973,1.00049,1,1.00098,1,1,1,1,1.00003,1.00003,.99959,.9999,.99973,1.00026,1.0006,1.00077,1.00064,1.41144,.99959,.99959,.99998,.99998,.99998,1,1.00077,.99972,.99973,.99973,.99998,1,1,.99973,.99973,.99973,.99973,.99998,.99973,1.00063,.99999,.99998,1,.99962,.99998,1.0006,1,1,1.00025,.99973,1,1.00026,.99973,.99973,1.0044,1.00026,1.00024,.99942,.9995,.99998,1,.99998,1.06409,1.36625,1.41144,.99973,.99998,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99998,1,.99973,1,.99973,1.00026,.99973,1.00101,1.00101,1.00003,.99915,.99984,1.00026,1.00026,1.00026,.99998,.99999,.99998,.99998,1,.99999,1,.99973,1.00002,.99998,.99973,.99973,.99998,.99973,1.00026,.99973,1.00026,1.00026,1.00026,1.00026,1.00026,.99998,1,1.00003,1.00031,.99973,.99973,.99998,.99998,1.00026,1.00026,1.00026,1.00042,.99999,.99998,1,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,.99973,1.0006,1.00015,1.00027,.99999,.99999,.99561,.99999,.99999,.99977,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,.99973,1.00014,.99973,.99973,1.0006,1.0006,.99973,1.01011,1.0006,.99999,1.00003,1.00031,1.41144,.99973,1.00003,1.0006,.99972,1.0006,1.40579,.99982,.60299,1,1,1.00003,1.00106,1.01322,1.00003,1,1,1.00026,1.00026,.9993,1.00026,1.00026,.99973,1,1.00031,1.00026,.99973,.99973,1.00026,1.00026,1.00026,1.00026,1.00026,1.00016,.99998,1.00026,1.00026,1.00026,.99943,.99943,1.00026,1.00026,.99973,1.00002,1.00002,1.00002,1.40483,.99968,.99936,1,1.00026,1.00026,1.00026,1.00026,.99973,.99998,.99998,.99972,.99982,1.0006,1,1,1.00055,1.00012,1.00003,1.06409,1.20985,1.00007,1.00026,1.00026,1.00026,.99974,1,1,1,1.0006,1.0006,1.0006,1.0006,1.00087,.99959,.99959,1.00031,.99959,.99959,1.00025,1.00003,.99923,.99998,1.41144,.99973,.99973,.99973,.99973,.99973,.99973,.99999,.99973,.99973,1.00002,.99998,1.40579,1.00064,1,.99973,1.0006,1,.99953,.99973,1.39713,1.00054,.99998,1.00076,.99998,.8121,.99998,1.00069,1.00026,.99973,1.00002,1.00002,.99998,1,.99998,1,1.00026,1.00026,1.00026,1.00026,.99973,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,.99973,.99955,1.0006,.99998,1,1,1,1,1.00026,.99998,.99998,1,1.00001,.99967,.99973,.98685,1,1,.99998,1,.99991,1,1.66475,1.0006,1,1,1,1,1.00026,1.41144,.99948,.99948,.99948,.99948,1.00026,1.00026,.99973,1.00022,1.00022,1.00022,1.00022,1.00022,.99973,1.00065,.99973,.99973,.99973,.99973,.99973,.99973,1,1,1,1,.99973,1.00061];t.HelveticaBoldItalicLineHeight=1.35;t.HelveticaItalicFactors=[.76116,1,1.00001,1,1,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,.99977,.99977,.99977,.99977,.99977,.99977,1.00001,.99977,.99977,.99977,.91221,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,.9998,1.00001,1.00001,1.00054,.99977,.99977,.99977,.99973,1.00026,1.00022,.99945,1.00022,1.00022,1.00022,1.00022,.99977,.99999,.99861,.99861,1,.99977,.99977,1.0006,.99946,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.00084,1.0006,1,1,1.00001,1.00001,1.00001,.99973,.99973,1.00001,.99973,.99973,.99973,.99973,.99999,.99999,.99977,.99977,.99977,.99977,.99977,.99977,1.00022,1,1.00022,1.00022,1.00022,1.00022,1.00022,1.00022,1.00022,1,1.00013,1.00022,1.00007,1.00022,1.00022,1.00022,1.00001,1.0001,1.00054,1.00052,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.00001,1.00001,1.00001,1.00001,1.00001,1.00065,1.00026,1.00026,1.00026,1.00026,1.00026,1.00022,1.00001,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,1.00001,1.00001,.99973,.99977,.99977,1.00001,1.00016,1.00016,1.00016,1.00016,1.00016,1.00001,.99933,1.00001,1.00001,1.00001,1.00001,1.00001,1.00026,1.00026,1.00026,1.00026,1.00026,.99973,.99973,.99973,.99973,.99998,1,.99973,.99982,.99982,1,1.00001,1.00019,1.00001,1.0001,.99986,1.00001,1.00001,1.00001,1.00038,.99954,.99954,.9994,1.00066,.99999,.99977,1.00022,1.00054,1.00001,.99977,1.00026,.99975,1.0001,1.00001,.99993,.9995,.99955,1.00016,.99978,.99974,1.00019,1.00022,.99955,1.00053,.99962,1.00027,1.0001,1.00068,1.00001,1.0006,1.0006,1,1.00008,.99957,.99972,.9994,.99975,.99973,1.00089,1.00005,.99967,1.00048,.99973,.99973,1.00002,1.00034,.99973,.99973,.99964,1.00006,1.00066,.99947,.99973,.98894,.99973,1,.44898,1,.99946,1,1.00039,1.00082,.99991,.99991,.99985,1.00022,1.00023,1.00061,1.00006,.99966,.99895,.99973,1.00019,1.0008,1,.99924,.99924,.99924,.99983,1.00044,.99973,.99964,1,1.00051,1,.99973,1,1.00423,.99925,.99999,.99973,.99945,.99945,.99973,1.00001,1,.99973,1.00031,.99973,.99973,1,1,1.00049,1.00245,1,1,1,.99949,1.00003,.99959,.99987,.99973,.99973,1.0006,1.0009,.99949,1.41144,1.00005,1.00005,1.0006,1.0006,.99998,1,1.0009,.99972,1,1,.99998,1,1,1,1,1,1,.99998,.99973,1.00019,.99999,.99998,1,.99962,1.0006,1.0006,1,1,1.00025,.99973,1,.99973,.99973,.99973,1.0288,.99973,1.00024,1.0006,.9995,.99998,1,.99998,1.06409,1.36625,1.41144,.99973,.99998,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99998,1,.99973,1,.99973,.99973,.99973,.99897,.99897,1.00003,1.00003,.99984,.99968,.99968,.99973,1.0006,1,.99998,1.0006,1,.99999,1,.99973,1.00002,.99998,.99973,.99973,.99998,.99973,.99973,1,.99973,.99973,.99973,.99973,1.00026,.99998,1,1.00003,1.00031,.99973,.99973,.99998,.99998,.99973,.99973,.99973,1.00042,.99999,.99998,1,.99924,1.0006,1.0006,1.0006,1.0006,1.0006,1.00034,1.0006,1.00015,1.00027,.99999,.99999,1.00035,.99999,.99999,.99977,.99924,.99924,.99924,.99924,.99924,1.0006,.99924,.99924,1,1,1,1,.99924,.99924,.99962,1.06311,.99924,1.00024,1.00003,1.00031,1.41144,.99973,1.00003,.99924,.95317,.99924,1.40579,.99999,.60299,1,1,1.00003,1.00267,1.01487,1.00003,1,1,.99973,.99973,1.00041,.99973,.99973,.99973,1,1.00031,.99973,1,.99973,.99973,.99973,.99973,.99973,.99973,1.00016,.99998,.99973,.99973,.99973,1.00025,1.00025,.99973,.99973,.99973,1.00002,1.00002,1.00002,1.40483,.99968,.99936,1,1.00026,1.00026,.99973,.99973,.9998,.99998,.99998,.96329,.99982,1.0006,1,1.00023,.99947,1.00012,1.00003,1.06409,1.20985,1.00063,.99973,.99973,1.00026,1.00006,.99998,.99998,.99998,.99924,.99924,.99924,.99924,1.00043,.99998,.99998,.8254,.99998,.99998,1.00025,1.00003,1.00043,.99998,1.41144,1,1,1,1,1,1,.99999,.99973,.99973,1.00002,.99998,1.40579,.99995,1,.99973,1.0006,1,.99953,.99973,1.39713,1.00054,1.0006,.99994,1.0006,.89547,1.0006,.99911,.99973,.99973,1.00002,1.00002,.99998,1,.99998,1,1.00026,1.00026,1.00026,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99955,1.0006,.99998,1,1,1,1,1.00026,1.0006,.99998,1,1.00001,.99954,.99973,.98332,1,1,.99998,1,.99991,1,1.66475,1.0006,1,1,1,1,.99973,1.41144,1.00036,1.00036,1.00036,1.00036,.99973,.99973,1,.99977,.99977,.99977,.99977,.99977,1,1.0005,1,1,1,1,.99973,1,1,1,1,1,.99973,.99918];t.HelveticaItalicLineHeight=1.35;t.HelveticaRegularFactors=[.76116,1,1.00001,1,1,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,.99928,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,.99977,.99977,.99977,.99977,.99977,.99977,1.00001,.99977,.99977,.99977,.91621,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,.9998,1.00001,1.00001,.99977,.99977,1.00013,.99977,.99973,1.00026,1.00022,1.0004,1.00022,1.00022,1.00022,1.00022,.99977,.99999,.99861,.99861,1,.99977,.99977,1.0006,1.00019,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.00055,1.0006,1,1,1.00001,1.00001,1.00001,.99973,.99973,1.00005,.99973,.99973,.99973,.99973,.99999,.99999,.99977,.99977,.99977,.99977,.99977,.99977,1.00022,1,1.00022,1.00022,1.00022,1.00022,1.00022,1.00022,1.00022,1,.99941,1.00022,.99947,1.00022,1.00022,1.00022,1.00001,1.00019,.99977,.99946,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.00001,1.00001,1.00001,1.00001,1.00001,.99973,1.00026,1.00026,1.00026,1.00026,1.00026,1.00022,1.00001,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,.99977,1.00001,1.00001,.99945,.99977,.99977,1.00001,1.00016,1.00016,1.00016,1.00016,1.00016,1.00001,1.00015,1.00001,1.00001,1.00001,1.00001,1.00001,1.00026,1.00026,1.00026,1.00026,1.00026,.99973,.99973,.99973,.99973,.99998,.99973,.99982,.99982,1,1.00001,.99962,1.00001,1.00092,.99964,1.00001,.99928,.99963,.99999,1.00035,1.00035,1.00082,.99962,.99999,.99977,1.00022,1.00035,1.00001,.99977,1.00026,.9996,.99967,1.00001,1.00034,1.00074,1.00054,1.00053,1.00063,.99971,.99962,1.00035,.99975,.99977,1.00047,1.00029,1.00092,1.00035,1.00001,1.0006,1.0006,1,.99988,.99975,1,1.00082,.9996,.99973,1.00043,.99953,1.0007,.99915,.99973,.99973,1.00008,.99892,1.00073,1.00073,1.00114,.99915,1.00073,.99955,.99973,1.00092,.99973,1,.99998,1,1.0003,1,1.00043,1.00001,.99969,1.0003,1,1.00035,1.00001,.9995,1,1.00092,.99968,.99973,1.0007,.9995,1,.99924,1.0006,.99924,.99972,1.00062,.99973,1.00114,1,1.00035,1,.99955,1,.99971,.99925,1.00023,.99973,.99978,.99978,.99973,1.00001,1,.99973,1.00031,.99973,.99973,1,1,1,1,1,1,1,.99949,1.00003,.99959,.99987,.99973,.99973,1.0006,1.0009,.99966,1.41144,1.00005,1.00005,1.0006,1.0006,.99998,1.0009,.99972,1,1,.99998,1,1,1,1,.99998,.99973,1.00019,.99999,.99998,.99962,1.0006,1.0006,1.00025,.99973,.99973,.99973,.99973,1.04596,.99973,1.00024,1.00065,.9995,.99998,.99998,1.06409,1.36625,1.41144,.99973,.99998,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,1,.99973,1,.99973,.99973,.99973,1.00045,1.00045,1.00003,.99915,.99984,.99973,.99973,.99973,1.0006,1,.99998,1.0006,1,.99999,1,.99973,1.00002,.99973,.99973,.99973,.99973,1,.99973,.99973,.99973,.99973,1.00026,1,1,1,1,1,1,1,1,1,1,1,.99998,1.00003,1.00031,.99973,.99973,.99998,.99998,.99973,.99973,.99973,1.00042,.99999,.99998,.99924,1.0006,1.0006,1.0006,1.0006,1.0006,1.00034,1.0006,1.00015,1.00027,.99999,.99999,1.00035,.99999,.99999,.99977,.99924,.99924,.99924,.99924,.99924,1.0006,.99924,.99924,1,1,1,1,.99924,.99924,1,1.02572,.99924,1.00005,1.00003,1.00031,1.41144,.99973,1.00003,.99924,.95317,.99924,1.40579,.99999,.60299,1,1,1.00003,1.00267,.96499,1.00003,1,1,.99973,.99973,.99999,.99973,.99973,.99973,1,1.00031,.99973,1,.99973,.99973,.99973,.99973,.99973,.99973,1.00016,.99998,.99973,.99973,.99973,1.00031,1.00031,.99973,.99973,.99973,1.00002,1.00002,1.00002,1.40483,.99968,.99936,1,1.00026,1.00026,.99973,.99973,.9998,.99998,.99998,.96329,.99982,1.0006,1,1.00023,.99933,1.00008,1.00003,1.06409,1.20985,1.00015,.99973,.99973,1.00026,1.00006,.99998,.99998,.99998,.99924,.99924,.99924,.99924,1.00043,.99998,.99998,.8254,.99998,.99998,1.00025,1.00003,1.00027,.99998,1.41144,1,1,1,1,1,1,.99999,.99973,.99973,1.00002,1.40579,.9997,1,.99973,1.0006,1,.99953,.99973,1.39713,1.00054,1.0006,.99995,1.0006,.84533,1.0006,.99973,.99973,.99973,1.00002,1.00002,.99998,.99998,1,1.00026,1.00026,1.00026,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99955,1.0006,.99998,1,1,1,1,1.00026,1.0006,.99998,1,1.00001,.99561,.99973,1.00073,1,1,.99998,1,1,1,1,1,.99991,1,1.66475,1.0006,1,1,1,1,1,.99973,1.41144,1.00023,1.00023,1.00023,1.00023,.99973,.99973,1,.99977,.99977,.99977,.99977,.99977,1,1.00055,1,1,1,1,.99973,1,1,1,1,1,.99973,1.00019];t.HelveticaRegularLineHeight=1.2},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.LiberationSansRegularWidths=t.LiberationSansItalicWidths=t.LiberationSansBoldWidths=t.LiberationSansBoldItalicWidths=void 0;t.LiberationSansBoldWidths=[365,0,722,1e3,1e3,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,667,722,722,722,719,667,667,667,667,667,667,667,667,667,723,667,667,853,722,906,722,556,611,778,601,778,778,778,778,722,604,354,354,604,722,722,278,785,278,278,278,278,278,278,278,278,278,278,474,278,556,556,722,722,722,611,611,667,611,611,611,611,833,833,722,722,722,722,722,722,778,1e3,778,778,778,778,778,778,778,802,838,778,825,778,778,778,667,821,722,809,778,722,722,722,722,667,667,708,708,708,708,708,708,708,708,708,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,667,667,667,667,667,600,611,611,611,611,611,778,667,722,722,722,722,722,722,722,722,722,667,667,927,722,722,667,944,944,944,944,944,667,644,667,667,667,667,667,611,611,611,611,611,556,556,556,556,333,333,556,889,889,1e3,722,719,722,567,712,667,669,904,626,719,719,610,702,833,722,778,719,667,722,611,622,854,667,730,703,1005,1019,870,979,719,711,1031,719,487,885,567,711,667,278,276,556,1094,1062,875,610,622,556,618,615,417,635,556,556,709,497,615,615,500,635,740,604,611,604,611,556,490,556,875,556,615,581,833,844,729,854,615,552,854,583,447,611,417,552,556,278,281,278,969,906,611,500,556,719,778,604,611,885,489,1115,556,615,615,556,722,333,556,549,556,556,1e3,500,1e3,1e3,500,500,500,584,584,389,975,556,611,278,280,610,708,389,389,333,333,333,333,280,350,556,556,333,333,222,556,556,556,556,333,556,576,604,333,333,656,333,278,333,222,737,556,333,611,556,556,719,611,400,606,510,333,333,465,549,729,708,556,333,278,556,556,556,556,556,556,556,556,556,333,1e3,556,1e3,556,611,556,475,451,584,583,600,611,611,611,333,604,333,333,750,604,1e3,556,834,333,556,556,333,556,611,556,611,611,611,611,611,333,333,584,549,556,556,333,333,611,611,611,594,604,333,333,278,278,278,278,278,278,556,278,713,274,604,604,722,604,604,1052,278,278,278,278,278,278,278,278,556,558,556,556,278,278,556,385,278,479,584,549,708,556,584,278,494,278,708,889,552,750,333,584,240,612,584,500,750,611,611,708,611,611,556,333,549,611,556,556,611,611,611,611,611,944,333,611,611,611,845,845,611,611,556,834,834,834,354,370,365,979,611,611,611,611,556,333,333,494,889,278,1e3,1094,715,766,584,549,823,753,611,611,611,474,500,500,500,278,278,278,278,238,389,389,549,389,389,737,584,619,333,708,556,556,556,556,556,556,479,556,556,834,333,708,684,520,556,278,1021,531,556,713,917,333,446,333,479,333,541,611,556,834,834,333,333,333,1e3,990,990,990,990,556,611,611,611,611,611,611,611,611,556,552,278,333,333,333,576,333,611,333,333,333,667,722,556,615,333,333,333,396,768,612,167,278,750,333,611,611,611,708,582,582,582,582,611,611,556,778,778,778,778,778,556,445,556,556,556,556,556,556,500,500,500,500,556,460];t.LiberationSansBoldItalicWidths=[365,0,722,1e3,1e3,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,667,722,722,722,671,667,667,667,667,667,667,667,667,667,723,667,667,854,722,906,722,556,611,778,610,778,778,778,778,722,604,354,354,604,722,722,278,782,278,278,278,278,278,278,278,278,278,278,473,278,556,556,722,722,722,611,611,667,611,611,611,611,833,833,722,722,722,722,722,722,778,1e3,778,778,778,778,778,778,778,781,847,778,844,778,778,778,667,822,718,829,778,722,722,722,722,667,667,708,708,708,708,708,708,708,708,708,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,667,667,667,667,667,590,611,611,611,611,611,778,667,722,722,722,722,722,722,722,722,722,667,667,930,722,722,667,944,944,944,944,944,667,657,667,667,667,667,667,611,611,611,611,611,556,556,556,556,333,333,556,889,889,1e3,722,708,722,614,722,667,667,927,643,719,719,615,687,833,722,778,719,667,722,611,677,781,667,729,708,979,989,854,1e3,708,719,1042,729,575,886,614,719,667,278,278,556,1094,1042,854,622,677,556,619,604,534,618,556,556,736,510,611,611,507,622,740,604,611,611,611,556,889,556,885,556,646,583,889,935,707,854,594,552,865,589,467,611,469,563,556,278,278,278,969,906,611,507,556,719,778,611,611,885,516,1146,556,620,620,556,722,333,556,549,556,556,1e3,500,999,1e3,500,500,500,584,584,389,975,556,611,278,280,621,708,389,389,333,333,333,333,280,350,556,556,333,333,222,556,556,556,556,333,556,578,604,333,333,656,333,278,333,222,737,556,333,611,556,556,740,611,400,610,510,333,333,333,549,729,708,556,333,278,556,556,556,556,556,556,556,556,556,333,1e3,556,1e3,556,611,556,479,479,584,583,600,611,611,611,333,604,333,333,750,604,1e3,556,834,333,556,556,333,556,611,556,611,611,611,611,611,333,333,584,549,556,556,333,333,611,611,611,594,604,333,333,278,278,278,278,278,278,556,278,713,274,604,604,722,604,604,1052,278,278,278,278,278,278,278,278,556,566,556,556,278,278,556,396,278,479,584,549,708,556,584,278,494,278,708,889,552,750,333,584,240,603,584,500,750,611,611,708,611,611,556,333,549,611,556,556,611,611,611,611,611,944,333,611,611,611,834,834,611,611,556,834,834,834,354,370,365,979,611,611,611,611,556,333,333,494,889,278,1e3,1104,704,712,584,549,823,773,611,611,611,474,500,500,500,278,278,278,278,238,389,389,549,389,389,737,584,605,333,708,556,556,556,556,556,556,479,556,556,834,333,708,664,532,556,278,1021,531,556,713,917,333,409,333,479,333,558,611,556,834,834,333,333,333,1e3,990,990,990,990,556,611,611,611,611,611,611,611,611,556,552,278,333,333,333,576,333,611,333,333,333,667,719,556,619,333,333,333,396,768,612,167,278,750,333,611,611,611,708,591,591,591,591,611,611,556,778,778,778,778,778,556,450,556,556,556,556,556,556,500,500,500,500,556,492];t.LiberationSansItalicWidths=[365,0,667,1e3,1e3,667,667,667,667,667,667,667,667,667,667,667,667,667,667,722,722,722,722,722,722,667,722,722,722,671,667,667,667,667,667,667,667,667,667,723,667,667,789,722,846,722,556,611,778,570,778,778,778,778,722,604,354,354,604,722,722,278,733,278,278,278,278,278,278,278,278,278,278,389,278,500,500,667,667,667,556,556,667,556,556,556,556,833,833,722,722,722,722,722,722,778,1e3,778,778,778,778,778,778,778,761,775,778,794,778,778,778,667,837,725,831,778,722,722,722,722,667,667,708,708,708,708,708,708,708,708,708,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,667,667,667,667,667,600,611,611,611,611,611,778,667,722,722,722,722,722,722,722,722,722,667,667,865,722,722,667,944,944,944,944,944,667,648,667,667,667,667,667,611,611,611,611,611,556,556,556,556,333,294,556,889,889,1e3,667,651,667,544,704,667,667,917,614,715,715,589,686,833,722,778,725,667,722,611,639,795,667,727,673,920,923,805,886,651,694,1022,682,492,843,544,708,667,278,278,500,1066,982,844,589,639,556,562,522,493,553,556,556,688,465,556,556,472,564,686,550,556,556,556,500,833,500,835,500,572,518,830,851,621,736,526,492,752,534,339,556,378,496,500,222,222,222,910,828,556,472,500,724,778,556,556,885,323,1083,556,570,570,556,667,278,556,549,556,556,1e3,500,1e3,998,500,500,500,469,584,389,1015,556,556,278,260,571,708,334,334,278,278,333,285,260,350,500,500,333,324,222,500,500,500,500,333,556,546,604,333,324,656,278,278,333,222,737,556,333,556,556,556,625,556,400,556,510,333,316,333,549,729,708,556,333,278,556,556,556,556,556,556,556,556,556,333,1e3,556,1e3,556,556,556,439,439,584,584,600,555,555,556,278,500,333,278,750,604,1e3,556,834,333,556,556,333,556,556,500,556,556,556,556,611,333,294,584,549,556,556,333,333,556,556,556,594,604,333,398,222,278,278,278,278,278,444,278,713,274,604,604,719,604,604,1052,222,222,222,222,222,278,222,222,500,500,500,500,222,222,492,281,222,400,584,549,708,556,584,222,494,222,708,833,552,750,333,584,188,548,584,500,750,556,556,615,556,556,556,333,549,556,500,556,556,556,556,556,556,944,333,556,556,556,779,779,556,556,556,834,834,834,354,370,365,979,611,611,556,556,537,333,333,494,889,278,1e3,1094,652,670,584,549,823,728,556,556,611,355,333,333,333,222,222,222,222,191,333,333,549,333,333,737,584,573,333,708,500,500,500,500,500,500,354,556,556,834,333,708,603,486,556,278,1021,531,556,713,917,278,374,278,354,278,542,556,556,834,834,333,328,333,1e3,990,990,990,990,556,556,556,556,556,556,556,556,556,556,552,278,333,333,333,576,333,611,278,333,278,667,715,556,565,333,333,333,365,768,612,167,278,750,333,500,500,556,708,550,550,550,550,556,556,500,722,722,722,722,722,500,447,500,500,500,500,556,500,500,500,500,500,556,463];t.LiberationSansRegularWidths=[365,0,667,1e3,1e3,667,667,667,667,667,667,667,667,667,667,667,667,667,667,722,722,722,722,722,722,667,722,722,722,668,667,667,667,667,667,667,667,667,667,723,667,667,784,722,838,722,556,611,778,551,778,778,778,778,722,604,354,354,604,722,722,278,735,278,278,278,278,278,278,278,278,278,278,384,278,500,500,667,667,667,556,556,668,556,556,556,556,833,833,722,722,722,722,722,722,778,1e3,778,778,778,778,778,778,778,748,752,778,774,778,778,778,667,798,722,835,778,722,722,722,722,667,667,708,708,708,708,708,708,708,708,708,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,667,667,667,667,667,618,611,611,611,611,611,778,667,722,722,722,722,722,722,722,722,722,667,667,855,722,722,667,944,944,944,944,944,667,650,667,667,667,667,667,611,611,611,611,611,556,556,556,556,333,556,889,889,1e3,667,656,667,542,677,667,667,923,604,719,719,583,656,833,722,778,719,667,722,611,635,760,667,740,667,917,938,792,885,656,719,1010,722,489,865,542,719,667,278,278,500,1057,1010,854,583,635,556,573,531,365,583,556,556,669,458,559,559,438,583,688,552,556,542,556,500,458,500,823,500,573,521,802,823,625,719,521,510,750,542,411,556,365,510,500,222,278,222,906,812,556,438,500,719,778,552,556,885,323,1073,556,578,578,556,667,278,556,549,556,556,1e3,500,1e3,1e3,500,500,500,469,584,389,1015,556,556,278,260,575,708,334,334,278,278,333,260,350,500,500,333,500,500,500,500,333,556,525,604,333,656,278,278,737,556,556,556,556,615,556,400,557,510,333,333,549,729,708,556,333,278,556,556,556,556,556,556,556,556,556,1e3,556,1e3,556,556,556,446,446,584,583,600,556,556,556,278,500,333,278,750,604,1e3,556,834,556,556,556,556,500,556,556,556,556,611,333,222,222,294,294,324,324,316,328,398,285,333,584,549,556,556,333,333,556,556,556,594,604,333,222,278,278,278,278,278,444,278,713,274,604,604,719,604,604,1052,222,222,222,222,222,278,222,222,500,500,500,500,222,222,500,292,222,334,584,549,708,556,584,222,494,222,708,833,552,750,333,584,188,576,584,500,750,556,556,604,556,556,556,333,549,556,500,556,556,556,556,556,556,944,333,556,556,556,781,781,556,556,556,834,834,834,354,370,365,979,611,611,556,556,537,333,333,494,889,278,1e3,1094,648,690,584,549,823,713,556,556,611,355,333,333,333,222,222,222,222,191,333,333,549,333,333,737,584,569,333,708,500,500,500,500,500,500,354,556,556,834,708,617,482,556,278,1021,531,556,713,917,278,395,278,375,278,556,556,556,834,834,333,333,1e3,990,990,990,990,556,556,556,556,556,556,556,556,556,556,552,278,333,333,333,576,333,611,278,333,278,667,722,556,559,333,333,333,333,333,333,333,365,768,612,167,278,750,333,333,500,500,556,708,547,547,547,547,556,556,500,722,722,722,722,722,500,448,500,500,500,500,556,500,500,500,500,500,556,441]},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.MyriadProRegularLineHeight=t.MyriadProRegularFactors=t.MyriadProItalicLineHeight=t.MyriadProItalicFactors=t.MyriadProBoldLineHeight=t.MyriadProBoldItalicLineHeight=t.MyriadProBoldItalicFactors=t.MyriadProBoldFactors=void 0;t.MyriadProBoldFactors=[1.36898,1,.90838,.868,.868,.90838,.90838,.90838,.90838,.90838,.90838,.91945,.90838,.90838,.90838,.90838,.90838,.83637,.83637,.82391,.82391,.82391,.82391,.82391,.82391,.91905,.96376,.96376,.97484,.90157,.80061,.80061,.80061,.80061,.80061,.80061,.80061,.80061,.80061,.95417,.80061,.80061,.75261,.95407,.87992,.97484,.99793,.86275,.8768,.8019,.8768,.8768,1,.8768,.95407,1,1,1,1,.97069,.95407,1.0258,.887,1.0258,1.0258,1.0258,1.0258,1.0258,1.0258,1.0258,1.0258,1.0258,1.0258,.82976,1.0258,.73901,.73901,.85022,.85022,1,.83655,.83655,.97153,.83655,1,.83655,.84638,1.0156,1.0156,.95546,.95546,.95546,1,.95546,.95546,.92179,.936,.92179,.92179,.92179,.92179,.92179,.92179,.92179,.92796,.97268,.92179,.96034,.92179,.92179,.92179,.87107,.95638,.92361,.91709,.92179,.82114,.82114,.82114,1,.87107,.8096,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.8096,.8096,1,.8096,1,.96318,.89713,.89713,.89713,.89713,1,.92436,.86958,.94438,.94438,.94438,.94438,.94438,.94438,.94438,.94438,.94438,.93704,.93704,.83689,.94438,.94438,.95353,.94083,.94083,.94083,.94083,.94083,.91905,.89192,.90406,.90406,.90406,.90406,.90406,.9446,.9446,.9446,.9446,.9446,.94938,.94938,.94938,.94938,.90088,1,.94938,.9031,.9031,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.94938,.94836,.94836,.94938,.93884,.83181,.94938,1.08595,.94938,.94938,1,1,1,1,1,1,1,1.02058,1.02058,1.16661,.78966,.94938,.97898,1.18777,1.01149,.96174,1,.80687,.80687,.94292,.94292,.90088,1,1.01149,.96544,.81093,.81093,.90088,1,1,.81093,.81093,.81093,.81093,.90088,.99793,.87548,1,.90088,1,1,.78076,.93582,1,1,.91882,.99793,1,.97571,.94219,.94219,.84313,.97571,.89022,.9498,1,.90088,1,.9358,1.08595,1,1,.99793,.90088,.98621,.94938,.94938,.94938,.94938,.94938,.94938,.94938,.94938,.99793,1,1,.94938,1,.89903,.95933,.94938,.98607,1.0373,1.02058,1,1.36145,.95933,.95933,.93969,.80479,1,.80479,1.024,1,1,1,.99793,1,1,.99793,.99793,1,1,.9577,.92601,.9577,.9577,1,.9577,.98225,.90088,1,1.02058,1.08595,.8361,.8361,.81079,.81079,.95933,.95933,.95933,1,1,.90088,1,.98621,.98621,.98621,.98621,.98621,.98621,1.01591,.98621,1.05486,1.30692,1,1,1,1,1,1,.98621,1.0078,1.0078,1.0078,1.0078,.98621,1.0474,1.0474,.97455,.98275,1,.97455,.98981,.98981,.9314,.73977,1,.73903,1.02058,1.08595,1,1,1.02058,1,1.16161,1.033,1,.9672,.54324,1,1,1.02058,1,.95617,1.02058,1,1,.95933,.95933,.8271,.95933,1,.99793,1,1.08595,.95933,.91701,.98894,.9446,.9446,.9446,.9446,.9446,.91964,.90088,.9446,.9446,.9446,.86774,.86774,.9446,.9446,.99793,1,.99642,.99642,1,1.0213,1.05686,1,.9446,.9446,.9446,.97898,.97455,.94292,.94292,1.17173,.9897,.93582,1.285,1,.99394,.78367,1.02058,1.08595,.80535,.96361,.97407,.72851,.72851,.83734,.918,.908,.908,.93582,1,.93582,.93582,.86209,.97646,.97646,1.0732,.97646,1,.62295,1,.9553,.90088,1,.78036,.78036,.78036,1,.78036,1,1,1.00872,.99793,1,1,1,.86832,1,.99793,1.19137,1,1,.99793,.76169,1,1.10208,1.0128,1.10208,.77452,1,1.05453,.97898,.99793,1,.99642,.90088,1,.90989,.65,1,1,1,1,.99793,.95442,.95442,.95442,.95442,.95442,.95442,.95442,.95442,.89903,1,.72706,.96694,1,1,1,1,.89713,1.10208,.90088,.78076,1,1,1,1,.96694,1,1,1,1,1,.74854,.93582,1,1,1,1,.95442,1,.95871,.95871,.95871,.95871,.95442,.95442,.95298,.97579,.97579,.97579,.97579,.97579,.9332,1.05993,.94039,.94039,.94039,.94039,.99793,.94039,.938,.938,.938,.938,.99793,.95776];t.MyriadProBoldLineHeight=1.2;t.MyriadProBoldItalicFactors=[1.36898,1,.85576,.845,.845,.85576,.85576,.85576,.85576,.85576,.85576,.85576,.85576,.85576,.85576,.85576,.85576,.80591,.80591,.80729,.80729,.80729,.80729,.80729,.80729,.85308,.94299,.94299,.95961,.94729,.77512,.77512,.77512,.77512,.77512,.77512,.77512,.77512,.77512,.92098,.77512,.77512,.66862,.92222,.7927,.95961,.97276,.83655,.86523,.7805,.86523,.86523,1,.86523,.92222,1,1,1,1,.92222,.92222,.98621,.86036,.98621,.98621,.98621,.98621,.98621,.98621,.98621,.98621,.98621,.98621,.69323,.98621,.71743,.71743,.81698,.81698,1,.79726,.79726,.92655,.79726,1,.79726,.81691,.98558,.98558,.92222,.92222,.92222,1,.92222,.92222,.90637,.909,.90637,.90637,.90637,.90637,.90637,.90637,.90637,.92346,.89711,.90637,.88127,.90251,.90251,.90637,.83809,.93157,.90976,.83392,.90637,.80729,.80729,.80729,1,.83809,.76463,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.76463,.76463,1,.76463,1,.94523,.86275,.86275,.86275,.86275,1,.90637,.83659,.90699,.90699,.90699,.90699,.90699,.90699,.90699,.90699,.90699,.83509,.83509,.72459,.90699,.90699,.91605,.9154,.9154,.9154,.9154,.9154,.85308,.85359,.85458,.85458,.85458,.85458,.85458,.90531,.90531,.90531,.90531,.90531,.99613,.99613,.99613,.99613,1.18616,1,.99613,.85811,.85811,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.99613,.92886,.92886,.99613,.92222,.80178,.99613,1.08595,.99613,.99613,1,1,1,1,1,1,1,1.02058,1.02058,1.16148,.76813,.99613,.91677,1.21296,.8578,.90557,1,.80687,.80687,.94292,.94292,1.18616,1,.8578,.95973,.78216,.78216,1.18616,1,1,.78216,.78216,.78216,.78216,1.18616,.97276,.81539,1,1.18616,1,1,.78076,.93582,1,1,.91339,.97276,1,.91677,.9332,.9332,.76783,.91677,.89022,.90276,1,1.18616,1,1.30628,1.08595,1,1,.97276,1.18616,.95381,.90083,.90083,.90083,.90083,.90083,.90083,.90083,.90083,.97276,1,1,.90083,1,.89903,.92168,.90083,.91324,.91324,1.02058,1,1.36145,.92168,.92168,.9135,.80779,1,.80779,.98796,1,1,1,.97276,1,1,.97276,.97276,1,1,.9135,.86847,.9135,.9135,1,.9135,.94951,1.18616,1,1.02058,1.08595,.82891,.82711,.80479,.80178,.92168,.92168,.92168,1,1,1.18616,1,.95381,.95381,.95381,.95381,.95381,.95381,.97096,.95381,1.05486,1.23026,1,1,1,1,1,1,.95381,.95381,.95381,.95381,.95381,.95381,.98981,.98981,.95298,.9224,1,.95298,.95381,.95381,.85408,.6894,1,.74321,1.02058,1.08595,1,1,1.02058,1,1.20006,1.0006,1,.93459,.71526,1,1,1.02058,1,.92699,1.02058,1,1,.92168,.92168,.79464,.92168,1,.97276,1,1.08595,.92168,.86847,.97276,.91513,.91513,.91513,.91513,.91513,.87514,1.18616,.91513,.91513,.91513,.85923,.85923,.91513,.91513,.97276,1,.99043,.99043,1,1.08074,1.04864,1,.91677,.91677,.91513,.92004,.96736,.94292,.94292,1.14542,.97733,.93582,1.26,1,.97355,.80487,1.02058,1.08595,.79199,.89398,.91677,.71541,.71541,.81625,.896,.896,.896,.91782,1,.91782,.91782,.83266,.95077,.95077,1.03493,.95077,1,.55509,1,.93481,1.18616,1,.748,.748,.748,1,.748,1,1,.99973,.97276,1,1,1,.88159,1,.97276,1.17337,1,1,.97276,.78694,1,1.04502,1.05214,1.04502,.72651,1,.99531,.92332,.97276,1,.99043,1.18616,1,1.00899,.698,1,1,1,1,.97276,.91677,.91677,.91677,.91677,.91677,.91677,.91677,.91677,.89903,1,.66227,.96694,1,1,1,1,.86275,1.04502,1.18616,.78076,1,1,1,1,.96694,1,1,1,1,1,.85633,.93582,1,1,1,1,.91677,1,.90646,.90646,.90646,.90646,.91677,.91677,.92061,.94236,.94236,.94236,.94236,.94236,.89544,1.0051,.89364,.89364,.89364,.89364,.97276,.89364,.9,.9,.9,.9,.97276,.86842];t.MyriadProBoldItalicLineHeight=1.2;t.MyriadProItalicFactors=[1.36898,1,.85158,.773,.773,.85158,.85158,.85158,.85158,.85158,.85158,.85158,.85158,.85158,.85158,.85158,.85158,.77812,.77812,.76852,.76852,.76852,.76852,.76852,.76852,.78112,.89591,.89591,.90561,.88836,.70466,.70466,.70466,.70466,.70466,.70466,.70466,.70466,.70466,.87396,.70466,.70466,.62264,.86822,.7646,.90561,.88465,.76125,.80094,.76449,.80094,.80094,1,.80094,.86822,1,1,1,1,.86822,.86822,.83864,.81402,.83864,.83864,.83864,.83864,.83864,.83864,.83864,.83864,.83864,.83864,.65351,.83864,.728,.728,.77212,.77212,1,.79475,.79475,.85308,.79475,1,.79475,.80553,.93637,.93637,.87514,.87514,.87514,1,.87514,.87514,.8588,.867,.8588,.8588,.8588,.8588,.8588,.8588,.8588,.89386,.89947,.8588,.86026,.85751,.85751,.8588,.76013,.82565,.85701,.77899,.8588,.72421,.72421,.72421,1,.76013,.69866,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.69866,.69866,1,.69866,1,.89058,.77598,.77598,.77598,.77598,1,.8588,.76013,.85991,.85991,.85991,.85991,.85991,.85991,.85991,.85991,.85991,.8156,.8156,.69461,.85991,.85991,.80811,.87832,.87832,.87832,.87832,.87832,.78112,.82352,.77512,.77512,.77512,.77512,.77512,.8562,.8562,.8562,.8562,.8562,.93859,.93859,.93859,.93859,1.15012,1,.93859,.8075,.8075,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.93859,.9486,.9486,.93859,.88307,.77025,.93859,1.08595,.93859,.93859,1,1,1,1,1,1,1,1.27014,1.02058,1.06383,.70926,.93859,.94399,1.18417,.83537,.93298,1,.85034,.85034,1.0222,1.0222,1.15012,1,.83537,.79121,.846,.846,1.15012,1,1,.846,.846,.846,.846,1.15012,.88465,.77487,1,1.15012,1,1,.75945,.75945,1,1,.9161,.88465,1,.94399,.86847,.86847,.8544,.94399,.79519,.93942,1,1.15012,1,1.03901,1.08595,1,1,.88465,1.15012,.82424,.81453,.81453,.81453,.81453,.81453,.81453,.81453,.81453,.88465,1,1,.81453,1,.89903,.96017,.81453,.92388,.92388,1.02058,1,1.36145,.96186,.96186,.9278,.84943,1,.70869,1.0186,1,1,1,.88465,1,1,.88465,.88465,1,1,.94219,.878,.94219,.94219,1,.94219,.88075,1.15012,1,1.02058,1.08595,.73541,.73361,.73572,.73572,.96017,.96017,.96017,1,1,1.15012,1,1.03075,.82424,.82424,.82424,.82424,.82424,1.02738,.82424,1.02119,1.06233,1,1,1,1,1,1,1.03075,1.03075,1.03075,1.03075,1.03075,.82424,1.02175,1.02175,.912,.922,1,.912,1.03075,1.03075,.88787,.83911,1,.66266,1.02058,1.08595,1,1,1.02058,1,1.05233,1.06676,1,.96998,.69353,1,1,1.02058,1,.95829,1.02058,1,1,.96017,.96017,.86865,.96017,1,.88465,1,1.08595,.96017,.88,.88465,.93859,.93859,.93859,.93859,.93859,.84759,1.15012,.93859,.93859,.93859,.86799,.86799,.93859,.93859,.88465,1,.9005,.9005,1,.94565,.9446,1,.8562,.8562,.93859,.94399,.91974,.85283,.85283,1.04828,.86936,.75945,1.124,1,.93969,.78815,1.02058,1.08595,.74948,.85769,.94399,.69046,.62864,.85639,1.027,1.027,1.027,.87321,1,.87321,.87321,.86948,.95493,.95493,.98391,.95493,1,.53609,1,.93758,1.15313,1,.746,.746,.746,1,.746,1,1,.90083,.88465,1,1,1,.89217,1,.88465,1.17337,1,1,.88465,.75187,1,1.12658,1.03737,1.12658,.88417,1,.95119,.94578,.88465,1,.9005,1.15012,1,1.08106,.669,1,1,1,1,.88465,.94578,.94578,.94578,.94578,.94578,.94578,.94578,.94578,.89903,1,.65507,.9219,1,1,1,1,.77598,1.12658,1.15012,.75945,1,1,1,1,.9219,1,1,1,1,1,.85034,.75945,1,1,1,1,.94578,1,.91123,.91123,.91123,.91123,.94578,.94578,.91,.979,.979,.979,.979,.979,.882,.93559,.882,.882,.882,.882,.88465,.882,.83,.83,.83,.83,.88465,.84596];t.MyriadProItalicLineHeight=1.2;t.MyriadProRegularFactors=[1.36898,1,.91755,.788,.788,.91755,.91755,.91755,.91755,.91755,.91755,.92138,.91755,.91755,.91755,.91755,.91755,.8126,.8126,.80314,.80314,.80314,.80314,.80314,.80314,.85608,.92222,.92222,.92915,.92819,.73764,.73764,.73764,.73764,.73764,.73764,.73764,.73764,.73764,.90991,.73764,.73764,.7154,.90284,.86169,.92915,.92241,.79726,.83051,.81884,.83051,.83051,1,.83051,.90284,1,1,1,1,.90976,.90284,.86023,.82873,.86023,.86023,.86023,.86023,.86023,.86023,.86023,.86023,.86023,.86023,.80513,.86023,.74,.74,.8126,.8126,1,.84869,.84869,.91172,.84869,1,.84869,.85588,.96518,.96518,.91115,.91115,.91115,1,.91115,.91115,.8858,.894,.8858,.8858,.8858,.8858,.8858,.8858,.8858,.94307,.98612,.8858,.94007,.8858,.8858,.8858,.79761,.89992,.87791,.81992,.8858,.74498,.74498,.74498,1,.79761,.73914,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.73914,.73914,1,.73914,1,.89297,.81363,.81363,.81363,.81363,1,.8858,.79611,.89591,.89591,.89591,.89591,.89591,.89591,.89591,.89591,.89591,.88157,.88157,.82528,.89591,.89591,.83659,.89633,.89633,.89633,.89633,.89633,.85608,.83089,.8111,.8111,.8111,.8111,.8111,.90531,.90531,.90531,.90531,.90531,.86667,.86667,.86667,.86667,.90088,.86667,.86936,.86936,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.86667,.95308,.95308,.86667,.90706,.78105,.86667,1.08595,.86667,.86667,1,1,1,1,1,1,1,1.27014,1.02058,1.0664,.72601,.86667,1.0231,1.22736,.92006,.97358,1,.85034,.85034,1.0222,1.0222,.90088,.92006,.80549,.896,.896,.90088,.896,.896,.896,.896,.90088,.92241,.87064,1,.90088,1,.74505,.74505,.91882,.92241,1.01411,.89903,.89903,.93372,1.01411,.79519,.98088,1,.90088,1.03901,1.08595,1,1,.92241,.90088,.84224,.90083,.90083,.90083,.90083,.90083,.90083,.90083,.90083,.92241,1,.90083,1,.89903,.99793,.90083,.98699,.98699,1.02058,1,1.36145,.99793,.99793,.97276,.82784,1,.69067,1.05099,1,1,1,.92241,1,.92241,.92241,1,1.00512,.928,1.00512,1.00512,1,1.00512,.89713,1,1,1,1,1,1,1,1,1,1,1,.90088,1.02058,1.08595,.75339,.75339,.76575,.76575,.99793,.99793,.99793,1,1,.90088,1.05326,.84224,.84224,.84224,.84224,.84224,1.07469,.84224,1.02119,1.1536,1,1,1,1,1,1,1.05326,1.06226,1.06226,1.06226,1.06226,.84224,1.09377,1.09377,.938,.986,1,.938,1.06226,1.06226,.944,.83704,1,.81441,1.02058,1.08595,1,1,1.02058,1,1.05638,1.08927,1,1.00119,.54324,1,1,1.02058,1,.95978,1.02058,1,1,.99793,.99793,.91887,.99793,1,.92241,1,1.08595,.99793,.938,.89364,.98714,.98714,.98714,.98714,.98714,.91434,.90088,.98714,.98714,.98714,.88888,.88888,.98714,.98714,.92241,1,.91009,.91009,1,.93484,.97198,1,.89876,.89876,.98714,1.0231,.95325,.85283,.85283,1.07257,.89073,.74505,1.156,1,.99007,.80442,1.02058,1.08595,.74705,.91879,1.01231,.73002,.66466,.94935,1.06904,1.06304,1.06304,.93173,1,.93173,.93173,.98472,.98196,.98196,1.024,.98196,1,.56866,1,.98972,.90088,1,.792,.792,.792,1,.792,1,1,.9332,.92241,1,1,.89762,1,.92241,1.23456,1,1,.92241,.71119,1,1.19137,1.04552,1.19137,.904,1,.96017,1.0231,.92241,1,.91009,.90088,.90388,.619,1,1,1,1,.92241,.99074,.99074,.99074,.99074,.99074,.99074,.99074,.99074,.89903,1,.76305,.9219,1,1,1,1,.81363,1.19137,.90088,.74505,1,1,1,1,.9219,1,1,1,1,1,1,1,1,1,.72458,.74505,1,1,1,1,1,.99074,1,.95817,.95817,.95817,.95817,.99074,.99074,.962,1.01915,1.01915,1.01915,1.01915,1.01915,.926,.96705,.942,.942,.942,.942,.92241,.942,.856,.856,.856,.856,.92241,.92761];t.MyriadProRegularLineHeight=1.2},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.SegoeuiRegularLineHeight=t.SegoeuiRegularFactors=t.SegoeuiItalicLineHeight=t.SegoeuiItalicFactors=t.SegoeuiBoldLineHeight=t.SegoeuiBoldItalicLineHeight=t.SegoeuiBoldItalicFactors=t.SegoeuiBoldFactors=void 0;t.SegoeuiBoldFactors=[1.76738,1,.97363,.93506,.93506,.97363,.97363,.97363,.97363,.97363,.97363,1.01149,.97363,.97363,.97363,.97363,.97363,.88776,.88776,.8641,.8641,.8641,.8641,.8641,.8641,.98243,1.02096,1.02096,1.02096,.97826,.79795,.79795,.79795,.79795,.79795,.79795,.79795,.79795,.79795,1.09251,.79795,.79795,.7676,1.06085,.98167,1.02096,1.03424,.85132,.914,.85134,.914,.914,1,.914,1.06085,1,.99862,.99862,1,1.06085,1.06085,1.1406,.97138,1.1406,1.1406,1.1406,1.1406,1.1406,1.1406,1.1406,1.1406,1.1406,1.1406,1.01134,1.1406,.8007,.8007,.89858,.89858,1,.83693,.83693,1.0388,.83693,1,.83693,.83693,1.14889,1.14889,1.09398,1.09398,1.09398,1,1.09398,1.09398,.97489,.93994,.97426,.97489,.97426,.97426,.97426,.97489,.97489,.95493,1.03089,.97489,1.02546,.97489,.97489,.97426,.92094,.99346,1.0595,1.02112,.97489,.90399,.90399,.90399,1,.92094,.84041,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.84041,.84041,.84041,.84041,1,.94793,.95923,.95923,.95923,.95923,1,.97489,.92094,1.00135,1.00135,1.00135,1.00135,1.00135,1.00135,1.00135,1.00135,1.00135,.90996,.90996,.84097,1.00135,1.00135,1,1.06467,1.06467,1.06467,1.06467,1.06467,.98243,.86039,.90996,.90996,.90996,.90996,.90996,.99361,.99361,.99361,.99361,.99361,.96752,.96752,.96752,.96752,.91056,1,.96752,.93136,.93136,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.96752,1.03574,1.03574,.96752,1.17647,.81525,.96752,1.29004,.96752,.96752,.86182,.94434,.86279,.86279,.94434,1,1,1.2107,1.2107,1.16939,.97847,.96752,1.01519,1.56942,1.16579,1.0192,1,.94856,.94856,1.1085,1.1085,1.03959,1,1.16579,1.20642,.86304,.86304,1.15103,1,1,.86304,.86304,.86304,.86304,.64663,1.03424,.96268,1.42603,1.15103,1,1.04315,.81378,.9754,1,1,1.18622,1,1,1.01359,.73047,.73047,1.03057,1.03517,.94994,1.00886,1.34163,1.3871,1,.87815,1.28826,1,1,1.03424,.75953,1.02285,.97278,.97278,.97278,.97278,.97278,.97278,.97278,.97278,1.03424,1,.91211,.97278,1,.89903,.99041,.97278,.97531,1.02597,1.2107,1.21172,1,1.0008,1.0008,.97122,.9824,.96039,.9824,1.15103,1,1.42603,1,1.03424,1.15749,1,1.03424,1.03424,1,.93503,1.01359,1.01932,1.01359,1.01359,1,1.01359,1.02798,.94282,1,1.2107,1.29004,1.04478,1.04478,1.03372,1.03372,.98561,1.00879,.98561,1.15296,1,1.21994,1,1.02285,1.02285,1.02285,1.02285,1.02285,1.02285,1.08692,1.02285,1.13973,2.10339,1,1,.9716,1.42603,1.42603,1,1.02285,1.18102,1.18102,1.18102,1.18102,1.02285,1.02285,1.02285,1.00527,1.02277,1,1.00527,1.02285,1.02285,.98683,.9455,1,.90418,1.2107,1.29004,1,1.03424,1.2107,1.07733,1.18874,1.13005,1,1.0302,.75155,1,1,1.2107,1.222,1.0016,1.2107,1,1,.99041,.99041,.96692,.99041,1,1.03424,1,1.29004,.99041,.99561,1.06497,1.0008,1,1.0008,1,1,.97931,.79912,1,1.0008,1.0008,.98439,.98439,1.0008,1.0008,1.03424,1.15749,1.15749,1.14169,.99862,1.10818,1.24866,.69825,1.0008,1.0008,1,1.01519,.91572,1.1085,1.1085,1.16897,.97529,.9754,1.25635,1.19687,1.04983,.90434,1.2107,1.28826,.96085,1.0499,1.01359,.71703,.71703,1.04016,.98633,.98633,.98633,1.04394,1.04394,1.04394,1.04394,1.23203,1.02258,1.02258,1.18416,1.02258,1,1.18622,1,.99921,.81378,1,.79104,.79104,.79104,.79104,.79104,1,1.02956,.8727,1.03424,1.10948,1,1,.8965,.93803,1.03424,1.59578,1,1.2886,1.03424,.90137,1,1.16862,1.23085,1.16862,1.07034,1,1.13189,1.01519,1.03424,1.15749,1.17389,1.15103,1,.95161,.771,.87025,.87025,.87025,.87025,1.03424,.99041,.99041,.99041,.99041,.99041,.99041,.99041,.99041,.74627,.75155,.99297,1.21408,1.21408,1.21408,1,1.18328,.95923,1.16862,1.01173,.81378,.79795,1.09466,.97278,1.02065,1,1.21408,1.24633,1.12454,1,1,1,.9754,1,1,1.09193,1.09193,.99041,1,1.06628,1.06628,1.06628,1.06628,.99041,.99041,.97454,1.02511,1.02511,1.02511,1.02511,1.02511,.99298,1.07237,.96752,.96752,.96752,.96752,1.03424,.96752,.95801,.95801,.95801,.95801,1.03424,1.0106];t.SegoeuiBoldLineHeight=1.33008;t.SegoeuiBoldItalicFactors=[1.76738,1,.97363,.94385,.94385,.97363,.97363,.97363,.97363,.97363,.97363,1.00811,.97363,.97363,.97363,.97363,.97363,.89723,.89723,.87897,.87897,.87897,.87897,.87897,.87897,.9817,1.0426,1.0426,1.0426,1.09818,.79429,.79429,.79429,.79429,.79429,.79429,.79429,.79429,.79429,1.10466,.79429,.79429,.77702,1.05815,.99137,1.0426,1.036,.85292,.91149,.86869,.91149,.91149,1,.91149,1.05815,1,.99862,.99862,1,1.05815,1.05815,1.1406,.97441,1.1406,1.1406,1.1406,1.1406,1.1406,1.1406,1.1406,1.1406,1.1406,1.1406,.95253,1.1406,.79631,.79631,.90128,.90128,1,.83853,.83853,1.06662,.83853,1,.83853,.83853,1.04396,1.04396,1.10615,1.10615,1.10615,1,1.10615,1.10615,.97552,.91602,.97552,.97552,.97552,.97552,.97552,.97552,.97552,.98999,1.07205,.97552,1.0347,.97552,.97552,.97552,.94436,1.00356,1.04694,1.01945,.97552,.88641,.88641,.88641,1,.94436,.80527,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.80527,.80527,.80527,.80527,1,.98015,.96083,.96083,.95923,.96083,1,.97552,.94436,1.00135,1.00135,1.00135,1.00135,1.00135,1.00135,1.00135,1.00135,1.00135,.91142,.91142,.86142,1.00135,1.00135,1,1.06777,1.06777,1.06777,1.06777,1.06777,.9817,.84918,.91142,.91142,.91142,.91142,.91142,.99361,.99361,.99361,.99361,.99361,1.06585,1.06585,1.06585,1.06585,1.31818,1,1.06585,.96705,.96705,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.06585,1.04961,1.04961,1.06585,1.10953,.83284,1.06585,1.29004,1.06585,1.06585,.86224,.94434,.86364,.86279,.94434,1,1,1.21237,1.21237,1.16939,.97847,1.06585,.97042,1.57293,1.16579,.99607,1,.95107,.95107,1.11144,1.11144,1.31818,1,1.16579,1.20502,.83055,.83055,1.31818,1,1,.83055,.83055,.83055,.83055,1.31818,1.036,.93491,1.42603,1.31818,1,1.04315,.81378,.9754,1,1,1.18754,1,1,.97042,.72959,.72959,1.0033,.97042,.94994,1.008,1.34163,1.31818,1,1.27126,1.29004,1,1,1.036,1.31818,1.14236,.93503,.93503,.93503,.93503,.93503,.93503,.93503,.93503,1.036,1,.91406,.93503,1,.89903,.97922,.93503,.9898,.9898,1.21237,1.21339,1,1.00639,1.00639,.93125,1.03959,.96039,1.03959,1.1261,1,1.42603,1,1.036,1.15574,1,1.036,1.036,1,.93327,.97042,1.02897,.97042,.97042,1,.97042,.98721,1.31818,1,1.21237,1.29004,1.05356,1.05356,1.03372,1.03372,.97922,.97922,.97922,1.15296,1,1.31818,1,1.14236,1.14236,1.14236,1.14236,1.14236,1.14236,1.04302,1.14236,1.13904,2.10339,1,1,.9716,1.42603,1.42603,1,1.14236,1.14236,1.14236,1.14236,1.14236,1.14236,.94552,1.01582,1.01054,1.00518,1,1.01054,1.14236,1.14236,.97981,1.09125,1,.90418,1.21237,1.29004,1,1.03336,1.21237,1.23199,1.18775,1.19508,1,1.02471,.79487,1,1,1.21237,1.222,1.02186,1.21237,1,1,.97922,.97922,1.01034,.97922,1,1.036,1,1.29004,.97922,1,1.02809,.94165,.94165,.94165,.94165,.94165,.91981,1.31818,.94165,.94165,.94165,1.00351,1.00351,.94165,.94165,1.036,1.15574,1.15574,1.13934,.99862,1.26781,1.24866,.69825,.94165,.94165,.94165,.97042,.91484,1.11144,1.11144,1.16798,.97639,.9754,1.26514,1.16541,1.10687,.99314,1.21237,1.29004,.96085,1.04232,.97042,.73541,.73541,1.04016,.98633,.98633,.98633,1.04745,1.04394,1.04745,1.04745,1.23203,1.0276,1.0276,1.18416,1.0276,1,1.18622,1,.98387,1.31818,1,.78929,.78929,.78929,.78929,.78929,1,1.02956,.87357,1.036,1.15574,1,1,.93377,.93028,1.036,1.59754,1,1.2886,1.036,.90068,1,1.1261,1.35125,1.16862,1.05403,1,1.11121,.97042,1.036,1.15574,1.17389,1.31818,1,.95161,.771,.87025,.87025,.87025,.87025,1.036,.97922,.97922,.97922,.97922,.97922,.97922,.97922,.97922,.74627,.75155,.98946,1.21261,1.24047,1.24047,1,1.1349,.96083,1.1261,1.31818,.81378,.79429,1.09097,.93503,.96609,1,1.21261,1.24633,1.09125,1,1,1,.9754,1,1,1.13269,1.13269,.97922,1,1.07514,1.07514,1.07514,1.07514,.97922,.97922,.95874,1.02197,1.02197,1.02197,1.02197,1.02197,.98507,1.08578,.96752,.96752,.96752,.96752,1.036,.96752,.97168,.97168,.97168,.97168,1.036,.95134];t.SegoeuiBoldItalicLineHeight=1.33008;t.SegoeuiItalicFactors=[1.76738,1,.94729,.85498,.85498,.94729,.94729,.94729,.94729,.94729,.94729,.94729,.94729,.94729,.94729,.94729,.94729,.85944,.85944,.88506,.88506,.88506,.88506,.88506,.88506,.8858,.9858,.9858,.9858,.9607,.74817,.74817,.74817,.74817,.74817,.74817,.74817,.74817,.74817,1.03849,.74817,.74817,.71022,.98039,.90883,.9858,.96927,.80016,.88449,.82791,.88449,.88449,1,.88449,.98039,1,.99862,.99862,1,.98039,.98039,.95782,.84421,.95782,.95782,.95782,.95782,.95782,.95782,.95782,.95782,.95782,.95782,.84171,.95782,.69238,.69238,.89898,.89898,1,.83231,.83231,.98316,.84723,1,.84723,.83231,.98183,.98183,1.03989,1.03989,1.03989,1,1.03989,1.03989,.96924,.92383,.96924,.96924,.96924,.96924,.96924,.96924,.96924,1.01284,1.05734,.96924,.99877,.96924,.96924,.96924,.86237,.90082,.97642,.97296,.96924,.80595,.80595,.80595,1,.86237,.74524,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.74524,.74524,.74524,.74524,1,.86075,.86091,.86091,.85771,.86091,1,.96924,.86237,.95402,.95402,.95402,.95402,.95402,.95402,.95402,.95402,.95402,.83089,.83089,.77596,.95402,.95402,.94143,.98448,.98448,.98448,.98448,.98448,.8858,.78614,.83089,.83089,.83089,.83089,.83089,.93285,.93285,.93285,.93285,.93285,.97454,.97454,.97454,.97454,1.04839,1,.97454,.92916,.92916,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.97454,1.0976,1.0976,.97454,1.15373,.78032,.97454,1.24822,.97454,.97454,.86182,.94434,.86321,.8649,.94434,1,1,1.45994,1.17308,1.07403,.94565,.97454,.97454,1.39016,.92481,.98205,1,.91082,.91082,1.0949,1.0949,1.04839,1,.92481,1.15621,.87207,.87207,1.04839,1,1,.87207,.87207,.87207,.87207,1.04839,.96927,.99821,1.42603,1.04839,1,1.04315,.78383,.78383,1,1,1.23393,1,1,.97454,.67603,.67603,.95391,.97454,.94261,1.05097,1.34163,1.04839,1,.81965,1.24822,1,1,.96927,1.04839,.93146,.87533,.87533,.87533,.87533,.87533,.87533,.87533,.87533,.96927,1,.73584,.87533,1,.89903,1.01054,.87533,1.04,1.04,1.17308,1.17308,1,1.03342,1.03342,.93854,1.14763,.95996,.95748,1.06151,1,1.42603,1,.96927,1.09836,1,.96927,.96927,1,.87709,.97454,1.03809,.97454,.97454,1,.97454,.88409,1.04839,1,1.17308,1.24822,.9245,.9245,.94868,.94868,1.00176,1.00176,1.00176,1.15296,1,1.04839,1,1.16484,.93146,.93146,.93146,.93146,.93146,1.12761,.93146,1.14589,1.96791,1,1,.97622,1.42603,1.42603,1,1.16484,1.2,1.2,1.2,1.2,.93146,1.08132,1.08132,.98047,1.02148,1,.98047,1.16484,1.16484,1.0119,1.04861,1,.78755,1.17308,1.24822,1,.96927,1.17308,1.31868,1.17984,1.23736,1,1.02989,.63218,1,1,1.17308,1.22135,1.04724,1.17308,1,1,1.01054,1.01054,.9857,1.01054,1,.96927,1,1.24822,1.01054,1.0127,1.06234,.96225,.96225,.96225,.96225,.96225,.90171,1.04839,.96225,.96225,.96225,1.0326,1.0326,.96225,.96225,.96927,1.09836,1.13525,1.09836,.99862,1.1781,1.22326,.69825,.8761,.8761,.96225,.97454,.85273,.91349,.91349,1.083,.92586,.78383,1.21191,1.01473,1.11826,.8965,1.17308,1.24822,.91578,1.0557,.97454,.77349,.70424,1.05365,1.12317,1.12317,1.12317,.94945,.94945,.94945,.94945,1.18414,1.06598,1.06598,1.18416,1.06598,1,1.20808,1,.97783,1.04839,1,.79004,.79004,.79004,.79004,.79004,1,1.06483,.80597,.96927,1.01522,1,1,.94818,.93574,.96927,1.42531,1,1.2886,.96927,.86438,1,1.16344,1.30679,1.16344,1.02759,1,1.05401,.97454,.96927,1.09836,1.15222,1.04839,1,.81965,.77295,.87025,.87025,.87025,.87025,.96927,1.00351,1.00351,1.00351,1.00351,1.00351,1.00351,1.00351,1.00351,.74627,.75155,.98946,1.20088,1.09971,1.09971,1,1.09971,.86091,1.16344,1.04839,.78383,.74817,1.03754,.87533,.98705,1,1.20088,1.24633,1.07497,1,1,1,.78032,1,1,1.10742,1.10742,1.00351,1,1.0675,1.0675,1.0675,1.0675,1.00351,1.00351,.94629,.9973,.9973,.9973,.9973,.9973,.91016,1.02732,.96777,.96777,.96777,.96777,.96927,.96777,.9043,.9043,.9043,.9043,.96927,.95364];t.SegoeuiItalicLineHeight=1.33008;t.SegoeuiRegularFactors=[1.76738,1,.96706,.86035,.86035,.96706,.96706,.96706,.96706,.96706,.96706,.96635,.96706,.96706,.96706,.96706,.96706,.85944,.85944,.85734,.85734,.85734,.85734,.85734,.85734,.88433,.97093,.97093,.97093,.96491,.75842,.75842,.75842,.75842,.75842,.75842,.75842,.75842,.75842,1.03444,.75842,.75842,.72727,.9831,.92366,.97093,.96927,.79936,.88198,.85638,.88198,.88198,1,.88198,.9831,1,.99862,.99862,1,.9831,.9831,.95782,.84784,.95782,.95782,.95782,.95782,.95782,.95782,.95782,.95782,.95782,.95782,.98601,.95782,.71387,.71387,.86969,.86969,1,.84636,.84636,.94152,.84636,1,.84636,.84636,1.07796,1.07796,1.03584,1.03584,1.03584,1,1.03584,1.03584,.96924,.93066,.96924,.96924,.96924,.96924,.96924,.96924,.96924,1.0098,1.09799,.96924,1.03405,.96924,.96924,.96924,.83968,.94492,.98715,.9287,.96924,.82826,.82826,.82826,1,.83968,.79649,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.79649,.79649,.79649,.79649,1,.83491,.85771,.85771,.85771,.85771,1,.96924,.83968,.95132,.95132,.95132,.95132,.95132,.95132,.95132,.95132,.95132,.8287,.8287,.77968,.95132,.95132,.93119,.98965,.98965,.98965,.98965,.98965,.88433,.78437,.8287,.8287,.8287,.8287,.8287,.93365,.93365,.93365,.93365,.93365,.91484,.91484,.91484,.91484,.84751,.91484,.93575,.93575,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.91484,1.0625,1.0625,.91484,1.19985,.78032,.91484,1.24822,.91484,.91484,.86182,.94434,.86279,.86279,.94434,1,1,1.45786,1.1714,1.07152,.94084,.91484,1.05707,1.3638,.92105,.95246,1,.90351,.90351,1.08612,1.08612,.91202,.92105,1.16039,.92383,.92383,1.11437,.92383,.92383,.92383,.92383,.61584,.96927,1.02512,1.42603,1.11437,1.04315,.78032,.78032,1.20808,.99912,1.05882,.67428,.67428,1.0969,1.05882,.94261,1.04912,1.34163,1.2434,.81818,1.24644,1,1,.96927,.60411,.8717,.9403,.9403,.9403,.9403,.9403,.9403,.9403,.9403,.96927,.73291,.9403,1,.89903,1.01756,.9403,.98248,.98248,1.1714,1.17238,1,1.03424,1.03424,1.00527,1.02285,.95996,.85337,1.12654,1,1.42603,1,.96927,1.11358,.96927,.96927,.87796,1.05882,1.03809,1.05882,1.05882,1,1.05882,.89049,1,1,1,1,1,1,1,1,1,1,1,.80499,1.1714,1.24822,.90957,.90957,.94868,.94868,1.01756,1.01756,1.01756,1.15296,1,.97361,1.09011,.8717,.8717,.8717,.8717,.8717,1.11551,.8717,1.14589,1.9697,1,1,.97622,1.42603,1.42603,1,1.09011,1.2,1.2,1.2,1.2,.8717,1.09011,1.09011,.99414,1.04785,1,.99414,1.09011,1.09011,.99609,1.0536,1,.94298,1.1714,1.24822,1,.96927,1.1714,1.08571,1.18083,1.23297,1,1.034,.75155,1,1,1.1714,1.22135,1.00169,1.1714,1,1,1.01756,1.01756,1.00323,1.01756,1,.96927,1,1.24822,1.01756,1.05176,1.06234,1.05356,1.05356,1.05356,1.05356,1.05356,.98293,.55572,1.05356,1.05356,1.05356,1.03502,1.03502,1.05356,1.05356,.96927,1.10539,1.11593,1.08665,.99862,1.05937,1.17914,.69825,.95923,.95923,1.05356,1.05707,.85273,.90616,.90616,1.083,.92037,.78032,1.20996,1.01518,1.07831,.9087,1.1714,1.24644,.91578,1.05205,1.05882,.80597,.73381,1.10454,1.13196,1.13196,1.13196,1.03077,1.03077,1.03077,1.03077,1.2046,1.04399,1.04399,1.18416,1.04399,1,1.20808,1,1.03004,.84164,1,.84863,.84863,.84863,.84863,.84863,1,1.06483,.80597,.96927,1.06967,1,.93117,.95542,.96927,1.40246,1,1.2886,.96927,.86507,1,1.21968,1.23362,1.21968,1.17318,1,1.05443,1.05707,.96927,1.10539,1.14169,1.01173,.81818,.77295,.87025,.87025,.87025,.87025,.96927,1.01756,1.01756,1.01756,1.01756,1.01756,1.01756,1.01756,1.01756,.74627,.75155,.98594,1.20088,1.09971,1.09971,1,1.05425,.85771,1.21968,.93109,.78032,.75842,1.03719,.9403,1.04021,1,1.20088,1.24633,1.05425,1.09971,1.09971,1.09971,1.07497,1,1,1,.78032,1,1,1,1.10938,1.10938,1.01756,1,1.01071,1.01071,1.01071,1.01071,1.01756,1.01756,.95801,1.00068,1.00068,1.00068,1.00068,1.00068,.91797,.99346,.96777,.96777,.96777,.96777,.96927,.96777,.9043,.9043,.9043,.9043,.96927,1.00221];t.SegoeuiRegularLineHeight=1.33008},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.MurmurHash3_64=void 0;var a=r(2);const i=3285377520,n=4294901760,s=65535;t.MurmurHash3_64=class MurmurHash3_64{constructor(e){this.h1=e?4294967295&e:i;this.h2=e?4294967295&e:i}update(e){let t,r;if((0,a.isString)(e)){t=new Uint8Array(2*e.length);r=0;for(let a=0,i=e.length;a>>8;t[r++]=255&i}}}else{if(!(0,a.isArrayBuffer)(e))throw new Error("Wrong data format in MurmurHash3_64_update. Input must be a string or array.");t=e.slice();r=t.byteLength}const i=r>>2,o=r-4*i,c=new Uint32Array(t.buffer,0,i);let l=0,h=0,u=this.h1,d=this.h2;const f=3432918353,g=461845907,p=11601,m=13715;for(let e=0;e>>17;l=l*g&n|l*m&s;u^=l;u=u<<13|u>>>19;u=5*u+3864292196}else{h=c[e];h=h*f&n|h*p&s;h=h<<15|h>>>17;h=h*g&n|h*m&s;d^=h;d=d<<13|d>>>19;d=5*d+3864292196}l=0;switch(o){case 3:l^=t[4*i+2]<<16;case 2:l^=t[4*i+1]<<8;case 1:l^=t[4*i];l=l*f&n|l*p&s;l=l<<15|l>>>17;l=l*g&n|l*m&s;1&i?u^=l:d^=l}this.h1=u;this.h2=d}hexdigest(){let e=this.h1,t=this.h2;e^=t>>>1;e=3981806797*e&n|36045*e&s;t=4283543511*t&n|(2950163797*(t<<16|e>>>16)&n)>>>16;e^=t>>>1;e=444984403*e&n|60499*e&s;t=3301882366*t&n|(3120437893*(t<<16|e>>>16)&n)>>>16;e^=t>>>1;const r=(e>>>0).toString(16),a=(t>>>0).toString(16);return r.padStart(8,"0")+a.padStart(8,"0")}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.OperatorList=void 0;var a=r(2);function addState(e,t,r,a,i){let n=e;for(let e=0,r=t.length-1;e1e3){h=Math.max(h,f);g+=d+2;f=0;d=0}u.push({transform:t,x:f,y:g,w:r.width,h:r.height});f+=r.width+2;d=Math.max(d,r.height)}const p=Math.max(h,f)+1,m=g+d+1,b=new Uint8ClampedArray(p*m*4),y=p<<2;for(let e=0;e=0;){t[n-4]=t[n];t[n-3]=t[n+1];t[n-2]=t[n+2];t[n-1]=t[n+3];t[n+r]=t[n+r-4];t[n+r+1]=t[n+r-3];t[n+r+2]=t[n+r-2];t[n+r+3]=t[n+r-1];n-=y}}r.splice(s,4*l,a.OPS.paintInlineImageXObjectGroup);i.splice(s,4*l,[{width:p,height:m,kind:a.ImageKind.RGBA_32BPP,data:b},u]);return s+1}));addState(i,[a.OPS.save,a.OPS.transform,a.OPS.paintImageMaskXObject,a.OPS.restore],null,(function iterateImageMaskGroup(e,t){const r=e.fnArray,i=(t-(e.iCurr-3))%4;switch(i){case 0:return r[t]===a.OPS.save;case 1:return r[t]===a.OPS.transform;case 2:return r[t]===a.OPS.paintImageMaskXObject;case 3:return r[t]===a.OPS.restore}throw new Error(`iterateImageMaskGroup - invalid pos: ${i}`)}),(function foundImageMaskGroup(e,t){const r=e.fnArray,i=e.argsArray,n=e.iCurr,s=n-3,o=n-2,c=n-1;let l=Math.floor((t-s)/4);l=function handlePaintSolidColorImageMask(e,t,r,i){const n=e+2;let s;for(s=0;s=4&&r[n-4]===r[s]&&r[n-3]===r[o]&&r[n-2]===r[c]&&r[n-1]===r[l]&&a[n-4][0]===h&&a[n-4][1]===u){d++;f-=5}let g=f+4;for(let e=1;e=r)break}a=(a||i)[e[t]];if(a&&!Array.isArray(a)){s.iCurr=t;t++;if(!a.checkFn||(0,a.checkFn)(s)){n=a;a=null}else a=null}else t++}this.state=a;this.match=n;this.lastProcessed=t}flush(){for(;this.match;){const e=this.queue.fnArray.length;this.lastProcessed=(0,this.match.processFn)(this.context,e);this.match=null;this.state=null;this._optimize()}}reset(){this.state=null;this.match=null;this.lastProcessed=0}}class OperatorList{static get CHUNK_SIZE(){return(0,a.shadow)(this,"CHUNK_SIZE",1e3)}static get CHUNK_SIZE_ABOUT(){return(0,a.shadow)(this,"CHUNK_SIZE_ABOUT",this.CHUNK_SIZE-5)}constructor(e,t){this._streamSink=t;this.fnArray=[];this.argsArray=[];!t||e&&e.startsWith("oplist-")?this.optimizer=new NullOptimizer(this):this.optimizer=new QueueOptimizer(this);this.dependencies=new Set;this._totalLength=0;this.weight=0;this._resolved=t?null:Promise.resolve()}get length(){return this.argsArray.length}get ready(){return this._resolved||this._streamSink.ready}get totalLength(){return this._totalLength+this.length}addOp(e,t){this.optimizer.push(e,t);this.weight++;this._streamSink&&(this.weight>=OperatorList.CHUNK_SIZE||this.weight>=OperatorList.CHUNK_SIZE_ABOUT&&(e===a.OPS.restore||e===a.OPS.endText))&&this.flush()}addDependency(e){if(!this.dependencies.has(e)){this.dependencies.add(e);this.addOp(a.OPS.dependency,[e])}}addDependencies(e){for(const t of e)this.addDependency(t)}addOpList(e){if(e instanceof OperatorList){for(const t of e.dependencies)this.dependencies.add(t);for(let t=0,r=e.length;t{Object.defineProperty(t,"__esModule",{value:!0});t.PDFImage=void 0;var a=r(2),i=r(5),n=r(14),s=r(19),o=r(27),c=r(30);function decodeAndClamp(e,t,r,a){(e=t+e*r)<0?e=0:e>a&&(e=a);return e}function resizeImageMask(e,t,r,a,i,n){const s=i*n;let o;o=t<=8?new Uint8Array(s):t<=16?new Uint16Array(s):new Uint32Array(s);const c=r/i,l=a/n;let h,u,d,f,g=0;const p=new Uint16Array(i),m=r;for(h=0;h0&&Number.isInteger(r.height)&&r.height>0&&(r.width!==p||r.height!==m)){(0,a.warn)("PDFImage - using the Width/Height of the image data, rather than the image dictionary.");p=r.width;m=r.height}if(p<1||m<1)throw new a.FormatError(`Invalid image width: ${p} or height: ${m}`);this.width=p;this.height=m;this.interpolate=f.get("Interpolate","I")||!1;this.imageMask=f.get("ImageMask","IM")||!1;this.matte=f.get("Matte")||!1;let b=r.bitsPerComponent;if(!b){b=f.get("BitsPerComponent","BPC");if(!b){if(!this.imageMask)throw new a.FormatError(`Bits per component missing in image: ${this.imageMask}`);b=1}}this.bpc=b;if(!this.imageMask){let o=f.getRaw("ColorSpace")||f.getRaw("CS");if(!o){(0,a.info)("JPX images (which do not require color spaces)");switch(r.numComps){case 1:o=i.Name.get("DeviceGray");break;case 3:o=i.Name.get("DeviceRGB");break;case 4:o=i.Name.get("DeviceCMYK");break;default:throw new Error(`JPX images with ${r.numComps} color components not supported.`)}}this.colorSpace=n.ColorSpace.parse({cs:o,xref:e,resources:s?t:null,pdfFunctionFactory:u,localColorSpaceCache:d});this.numComps=this.colorSpace.numComps}this.decode=f.getArray("Decode","D");this.needsDecode=!1;if(this.decode&&(this.colorSpace&&!this.colorSpace.isDefaultDecode(this.decode,b)||h&&!n.ColorSpace.isDefaultDecode(this.decode,1))){this.needsDecode=!0;const e=(1<>3)*r,s=e.byteLength;let o,c;if(!a||i&&!(n===s))if(i){o=new Uint8ClampedArray(n);o.set(e);for(c=s;c>7&1;s[d+1]=u>>6&1;s[d+2]=u>>5&1;s[d+3]=u>>4&1;s[d+4]=u>>3&1;s[d+5]=u>>2&1;s[d+6]=u>>1&1;s[d+7]=1&u;d+=8}if(d>=1}}}}else{let r=0;u=0;for(d=0,h=n;d>a;i<0?i=0:i>l&&(i=l);s[d]=i;u&=(1<o[a+1]){t=255;break}}c[u]=t}}}if(c)for(u=0,f=3,d=t*i;u>3;let d;if(!e){let e;"DeviceGray"===this.colorSpace.name&&1===h?e=a.ImageKind.GRAYSCALE_1BPP:"DeviceRGB"!==this.colorSpace.name||8!==h||this.needsDecode||(e=a.ImageKind.RGB_24BPP);if(e&&!this.smask&&!this.mask&&t===c&&r===l){i.kind=e;d=this.getImageBytes(l*u);if(this.image instanceof s.DecodeStream)i.data=d;else{const e=new Uint8ClampedArray(d.length);e.set(d);i.data=e}if(this.needsDecode){(0,a.assert)(e===a.ImageKind.GRAYSCALE_1BPP,"PDFImage.createImageData: The image must be grayscale.");const t=i.data;for(let e=0,r=t.length;e>3,o=this.getImageBytes(i*s),c=this.getComponents(o);let l,h;if(1===n){h=r*i;if(this.needsDecode)for(l=0;l{Object.defineProperty(t,"__esModule",{value:!0});t.Catalog=void 0;var a=r(5),i=r(9),n=r(2),s=r(65),o=r(14),c=r(66),l=r(52),h=r(67),u=r(69);function fetchDestination(e){e instanceof a.Dict&&(e=e.get("D"));return Array.isArray(e)?e:null}class Catalog{constructor(e,t){this.pdfManager=e;this.xref=t;this._catDict=t.getCatalogObj();if(!(0,a.isDict)(this._catDict))throw new n.FormatError("Catalog object is not a dictionary.");this.fontCache=new a.RefSetCache;this.builtInCMapCache=new Map;this.standardFontDataCache=new Map;this.globalImageCache=new l.GlobalImageCache;this.pageKidsCountCache=new a.RefSetCache;this.pageIndexCache=new a.RefSetCache;this.nonBlendModesSet=new a.RefSet}get version(){const e=this._catDict.get("Version");return(0,a.isName)(e)?(0,n.shadow)(this,"version",e.name):(0,n.shadow)(this,"version",null)}get collection(){let e=null;try{const t=this._catDict.get("Collection");(0,a.isDict)(t)&&t.size>0&&(e=t)}catch(e){if(e instanceof i.MissingDataException)throw e;(0,n.info)("Cannot fetch Collection entry; assuming no collection is present.")}return(0,n.shadow)(this,"collection",e)}get acroForm(){let e=null;try{const t=this._catDict.get("AcroForm");(0,a.isDict)(t)&&t.size>0&&(e=t)}catch(e){if(e instanceof i.MissingDataException)throw e;(0,n.info)("Cannot fetch AcroForm entry; assuming no forms are present.")}return(0,n.shadow)(this,"acroForm",e)}get metadata(){const e=this._catDict.getRaw("Metadata");if(!(0,a.isRef)(e))return(0,n.shadow)(this,"metadata",null);const t=!(this.xref.encrypt&&this.xref.encrypt.encryptMetadata),r=this.xref.fetch(e,t);let s=null;if((0,a.isStream)(r)&&(0,a.isDict)(r.dict)){const e=r.dict.get("Type"),t=r.dict.get("Subtype");if((0,a.isName)(e,"Metadata")&&(0,a.isName)(t,"XML"))try{const e=(0,n.stringToUTF8String)(r.getString());e&&(s=new h.MetadataParser(e).serializable)}catch(e){if(e instanceof i.MissingDataException)throw e;(0,n.info)("Skipping invalid metadata.")}}return(0,n.shadow)(this,"metadata",s)}get markInfo(){let e=null;try{e=this._readMarkInfo()}catch(e){if(e instanceof i.MissingDataException)throw e;(0,n.warn)("Unable to read mark info.")}return(0,n.shadow)(this,"markInfo",e)}_readMarkInfo(){const e=this._catDict.get("MarkInfo");if(!(0,a.isDict)(e))return null;const t=Object.assign(Object.create(null),{Marked:!1,UserProperties:!1,Suspects:!1});for(const r in t){if(!e.has(r))continue;const a=e.get(r);(0,n.isBool)(a)&&(t[r]=a)}return t}get structTreeRoot(){let e=null;try{e=this._readStructTreeRoot()}catch(e){if(e instanceof i.MissingDataException)throw e;(0,n.warn)("Unable read to structTreeRoot info.")}return(0,n.shadow)(this,"structTreeRoot",e)}_readStructTreeRoot(){const e=this._catDict.get("StructTreeRoot");if(!(0,a.isDict)(e))return null;const t=new u.StructTreeRoot(e);t.init();return t}get toplevelPagesDict(){const e=this._catDict.get("Pages");if(!(0,a.isDict)(e))throw new n.FormatError("Invalid top-level pages dictionary.");return(0,n.shadow)(this,"toplevelPagesDict",e)}get documentOutline(){let e=null;try{e=this._readDocumentOutline()}catch(e){if(e instanceof i.MissingDataException)throw e;(0,n.warn)("Unable to read document outline.")}return(0,n.shadow)(this,"documentOutline",e)}_readDocumentOutline(){let e=this._catDict.get("Outlines");if(!(0,a.isDict)(e))return null;e=e.getRaw("First");if(!(0,a.isRef)(e))return null;const t={items:[]},r=[{obj:e,parent:t}],i=new a.RefSet;i.put(e);const s=this.xref,c=new Uint8ClampedArray(3);for(;r.length>0;){const t=r.shift(),l=s.fetchIfRef(t.obj);if(null===l)continue;if(!l.has("Title"))throw new n.FormatError("Invalid outline item encountered.");const h={url:null,dest:null};Catalog.parseDestDictionary({destDict:l,resultObj:h,docBaseUrl:this.pdfManager.docBaseUrl});const u=l.get("Title"),d=l.get("F")||0,f=l.getArray("C"),g=l.get("Count");let p=c;!Array.isArray(f)||3!==f.length||0===f[0]&&0===f[1]&&0===f[2]||(p=o.ColorSpace.singletons.rgb.getRgb(f,0));const m={dest:h.dest,url:h.url,unsafeUrl:h.unsafeUrl,newWindow:h.newWindow,title:(0,n.stringToPDFString)(u),color:p,count:Number.isInteger(g)?g:void 0,bold:!!(2&d),italic:!!(1&d),items:[]};t.parent.items.push(m);e=l.getRaw("First");if((0,a.isRef)(e)&&!i.has(e)){r.push({obj:e,parent:m});i.put(e)}e=l.getRaw("Next");if((0,a.isRef)(e)&&!i.has(e)){r.push({obj:e,parent:t.parent});i.put(e)}}return t.items.length>0?t.items:null}get permissions(){let e=null;try{e=this._readPermissions()}catch(e){if(e instanceof i.MissingDataException)throw e;(0,n.warn)("Unable to read permissions.")}return(0,n.shadow)(this,"permissions",e)}_readPermissions(){const e=this.xref.trailer.get("Encrypt");if(!(0,a.isDict)(e))return null;let t=e.get("P");if(!(0,n.isNum)(t))return null;t+=2**32;const r=[];for(const e in n.PermissionFlag){const a=n.PermissionFlag[e];t&a&&r.push(a)}return r}get optionalContentConfig(){let e=null;try{const t=this._catDict.get("OCProperties");if(!t)return(0,n.shadow)(this,"optionalContentConfig",null);const r=t.get("D");if(!r)return(0,n.shadow)(this,"optionalContentConfig",null);const i=t.get("OCGs");if(!Array.isArray(i))return(0,n.shadow)(this,"optionalContentConfig",null);const s=[],o=[];for(const e of i){if(!(0,a.isRef)(e))continue;o.push(e);const t=this.xref.fetchIfRef(e);s.push({id:e.toString(),name:(0,n.isString)(t.get("Name"))?(0,n.stringToPDFString)(t.get("Name")):null,intent:(0,n.isString)(t.get("Intent"))?(0,n.stringToPDFString)(t.get("Intent")):null})}e=this._readOptionalContentConfig(r,o);e.groups=s}catch(e){if(e instanceof i.MissingDataException)throw e;(0,n.warn)(`Unable to read optional content config: ${e}`)}return(0,n.shadow)(this,"optionalContentConfig",e)}_readOptionalContentConfig(e,t){function parseOnOff(e){const r=[];if(Array.isArray(e))for(const i of e)(0,a.isRef)(i)&&t.includes(i)&&r.push(i.toString());return r}function parseOrder(e,r=0){if(!Array.isArray(e))return null;const n=[];for(const s of e){if((0,a.isRef)(s)&&t.includes(s)){i.put(s);n.push(s.toString());continue}const e=parseNestedOrder(s,r);e&&n.push(e)}if(r>0)return n;const s=[];for(const e of t)i.has(e)||s.push(e.toString());s.length&&n.push({name:null,order:s});return n}function parseNestedOrder(e,t){if(++t>s){(0,n.warn)("parseNestedOrder - reached MAX_NESTED_LEVELS.");return null}const a=r.fetchIfRef(e);if(!Array.isArray(a))return null;const i=r.fetchIfRef(a[0]);if("string"!=typeof i)return null;const o=parseOrder(a.slice(1),t);return o&&o.length?{name:(0,n.stringToPDFString)(i),order:o}:null}const r=this.xref,i=new a.RefSet,s=10;return{name:(0,n.isString)(e.get("Name"))?(0,n.stringToPDFString)(e.get("Name")):null,creator:(0,n.isString)(e.get("Creator"))?(0,n.stringToPDFString)(e.get("Creator")):null,baseState:(0,a.isName)(e.get("BaseState"))?e.get("BaseState").name:null,on:parseOnOff(e.get("ON")),off:parseOnOff(e.get("OFF")),order:parseOrder(e.get("Order")),groups:null}}get numPages(){const e=this.toplevelPagesDict.get("Count");if(!Number.isInteger(e))throw new n.FormatError("Page count in top-level pages dictionary is not an integer.");return(0,n.shadow)(this,"numPages",e)}get destinations(){const e=this._readDests(),t=Object.create(null);if(e instanceof s.NameTree)for(const[r,a]of e.getAll()){const e=fetchDestination(a);e&&(t[r]=e)}else e instanceof a.Dict&&e.forEach((function(e,r){const a=fetchDestination(r);a&&(t[e]=a)}));return(0,n.shadow)(this,"destinations",t)}getDestination(e){const t=this._readDests();if(t instanceof s.NameTree){const r=fetchDestination(t.get(e));if(r)return r;const a=this.destinations[e];if(a){(0,n.warn)(`Found "${e}" at an incorrect position in the NameTree.`);return a}}else if(t instanceof a.Dict){const r=fetchDestination(t.get(e));if(r)return r}return null}_readDests(){const e=this._catDict.get("Names");return e&&e.has("Dests")?new s.NameTree(e.getRaw("Dests"),this.xref):this._catDict.has("Dests")?this._catDict.get("Dests"):void 0}get pageLabels(){let e=null;try{e=this._readPageLabels()}catch(e){if(e instanceof i.MissingDataException)throw e;(0,n.warn)("Unable to read page labels.")}return(0,n.shadow)(this,"pageLabels",e)}_readPageLabels(){const e=this._catDict.getRaw("PageLabels");if(!e)return null;const t=new Array(this.numPages);let r=null,o="";const c=new s.NumberTree(e,this.xref).getAll();let l="",h=1;for(let e=0,s=this.numPages;e=1))throw new n.FormatError("Invalid start in PageLabel dictionary.");h=e}else h=1}switch(r){case"D":l=h;break;case"R":case"r":l=(0,i.toRomanNumerals)(h,"r"===r);break;case"A":case"a":const e=26,t=65,a=97,s="a"===r?a:t,o=h-1,c=String.fromCharCode(s+o%e),u=[];for(let t=0,r=o/e|0;t<=r;t++)u.push(c);l=u.join("");break;default:if(r)throw new n.FormatError(`Invalid style "${r}" in PageLabel dictionary.`);l=""}t[e]=o+l;h++}return t}get pageLayout(){const e=this._catDict.get("PageLayout");let t="";if((0,a.isName)(e))switch(e.name){case"SinglePage":case"OneColumn":case"TwoColumnLeft":case"TwoColumnRight":case"TwoPageLeft":case"TwoPageRight":t=e.name}return(0,n.shadow)(this,"pageLayout",t)}get pageMode(){const e=this._catDict.get("PageMode");let t="UseNone";if((0,a.isName)(e))switch(e.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"FullScreen":case"UseOC":case"UseAttachments":t=e.name}return(0,n.shadow)(this,"pageMode",t)}get viewerPreferences(){const e={HideToolbar:n.isBool,HideMenubar:n.isBool,HideWindowUI:n.isBool,FitWindow:n.isBool,CenterWindow:n.isBool,DisplayDocTitle:n.isBool,NonFullScreenPageMode:a.isName,Direction:a.isName,ViewArea:a.isName,ViewClip:a.isName,PrintArea:a.isName,PrintClip:a.isName,PrintScaling:a.isName,Duplex:a.isName,PickTrayByPDFSize:n.isBool,PrintPageRange:Array.isArray,NumCopies:Number.isInteger},t=this._catDict.get("ViewerPreferences");let r=null;if((0,a.isDict)(t))for(const a in e){if(!t.has(a))continue;const i=t.get(a);if(!e[a](i)){(0,n.info)(`Bad value in ViewerPreferences for "${a}".`);continue}let s;switch(a){case"NonFullScreenPageMode":switch(i.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"UseOC":s=i.name;break;default:s="UseNone"}break;case"Direction":switch(i.name){case"L2R":case"R2L":s=i.name;break;default:s="L2R"}break;case"ViewArea":case"ViewClip":case"PrintArea":case"PrintClip":switch(i.name){case"MediaBox":case"CropBox":case"BleedBox":case"TrimBox":case"ArtBox":s=i.name;break;default:s="CropBox"}break;case"PrintScaling":switch(i.name){case"None":case"AppDefault":s=i.name;break;default:s="AppDefault"}break;case"Duplex":switch(i.name){case"Simplex":case"DuplexFlipShortEdge":case"DuplexFlipLongEdge":s=i.name;break;default:s="None"}break;case"PrintPageRange":if(i.length%2!=0)break;i.every(((e,t,r)=>Number.isInteger(e)&&e>0&&(0===t||e>=r[t-1])&&e<=this.numPages))&&(s=i);break;case"NumCopies":i>0&&(s=i);break;default:if("boolean"!=typeof i)throw new n.FormatError(`viewerPreferences - expected a boolean value for: ${a}`);s=i}if(void 0!==s){r||(r=Object.create(null));r[a]=s}else(0,n.info)(`Bad value in ViewerPreferences for "${a}".`)}return(0,n.shadow)(this,"viewerPreferences",r)}get openAction(){const e=this._catDict.get("OpenAction"),t=Object.create(null);if((0,a.isDict)(e)){const r=new a.Dict(this.xref);r.set("A",e);const i={url:null,dest:null,action:null};Catalog.parseDestDictionary({destDict:r,resultObj:i});Array.isArray(i.dest)?t.dest=i.dest:i.action&&(t.action=i.action)}else Array.isArray(e)&&(t.dest=e);return(0,n.shadow)(this,"openAction",(0,n.objectSize)(t)>0?t:null)}get attachments(){const e=this._catDict.get("Names");let t=null;if(e instanceof a.Dict&&e.has("EmbeddedFiles")){const r=new s.NameTree(e.getRaw("EmbeddedFiles"),this.xref);for(const[e,a]of r.getAll()){const r=new c.FileSpec(a,this.xref);t||(t=Object.create(null));t[(0,n.stringToPDFString)(e)]=r.serializable}}return(0,n.shadow)(this,"attachments",t)}get xfaImages(){const e=this._catDict.get("Names");let t=null;if(e instanceof a.Dict&&e.has("XFAImages")){const r=new s.NameTree(e.getRaw("XFAImages"),this.xref);for(const[e,i]of r.getAll()){t||(t=new a.Dict(this.xref));t.set(e,i)}}return(0,n.shadow)(this,"xfaImages",t)}_collectJavaScript(){const e=this._catDict.get("Names");let t=null;function appendIfJavaScriptDict(e,r){if(!(r instanceof a.Dict))return;if(!(0,a.isName)(r.get("S"),"JavaScript"))return;let i=r.get("JS");if((0,a.isStream)(i))i=i.getString();else if("string"!=typeof i)return;null===t&&(t=new Map);t.set(e,(0,n.stringToPDFString)(i))}if(e instanceof a.Dict&&e.has("JavaScript")){const t=new s.NameTree(e.getRaw("JavaScript"),this.xref);for(const[e,r]of t.getAll())appendIfJavaScriptDict(e,r)}const r=this._catDict.get("OpenAction");r&&appendIfJavaScriptDict("OpenAction",r);return t}get javaScript(){const e=this._collectJavaScript();return(0,n.shadow)(this,"javaScript",e?[...e.values()]:null)}get jsActions(){const e=this._collectJavaScript();let t=(0,i.collectActions)(this.xref,this._catDict,n.DocumentActionEventType);if(e){t||(t=Object.create(null));for(const[r,a]of e)r in t?t[r].push(a):t[r]=[a]}return(0,n.shadow)(this,"jsActions",t)}fontFallback(e,t){const r=[];this.fontCache.forEach((function(e){r.push(e)}));return Promise.all(r).then((r=>{for(const a of r)if(a.loadedName===e){a.fallback(t);return}}))}cleanup(e=!1){(0,a.clearPrimitiveCaches)();this.globalImageCache.clear(e);this.pageKidsCountCache.clear();this.pageIndexCache.clear();this.nonBlendModesSet.clear();const t=[];this.fontCache.forEach((function(e){t.push(e)}));return Promise.all(t).then((e=>{for(const{dict:t}of e)delete t.cacheKey;this.fontCache.clear();this.builtInCMapCache.clear();this.standardFontDataCache.clear()}))}getPageDict(e){const t=(0,n.createPromiseCapability)(),r=[this._catDict.getRaw("Pages")],i=new a.RefSet,s=this.xref,o=this.pageKidsCountCache;let c,l=0;!function next(){for(;r.length;){const h=r.pop();if((0,a.isRef)(h)){c=o.get(h);if(c>0&&l+c=0){const t=h.objId;t&&!o.has(t)&&o.put(t,c);if(l+c<=e){l+=c;continue}}const u=h.get("Kids");if(!Array.isArray(u)){if((0,a.isName)(h.get("Type"),"Page")||!h.has("Type")&&h.has("Contents")){if(l===e){t.resolve([h,null]);return}l++;continue}t.reject(new n.FormatError("Page dictionary kids object is not an array."));return}for(let e=u.length-1;e>=0;e--)r.push(u[e])}t.reject(new Error(`Page index ${e} not found.`))}();return t.promise}getPageIndex(e){const t=this.pageIndexCache.get(e);if(void 0!==t)return Promise.resolve(t);const r=this.xref;let i=0;const next=t=>function pagesBeforeRef(t){let i,s=0;return r.fetchAsync(t).then((function(r){if((0,a.isRefsEqual)(t,e)&&!(0,a.isDict)(r,"Page")&&(!(0,a.isDict)(r)||r.has("Type")||!r.has("Contents")))throw new n.FormatError("The reference does not point to a /Page dictionary.");if(!r)return null;if(!(0,a.isDict)(r))throw new n.FormatError("Node must be a dictionary.");i=r.getRaw("Parent");return r.getAsync("Parent")})).then((function(e){if(!e)return null;if(!(0,a.isDict)(e))throw new n.FormatError("Parent must be a dictionary.");return e.getAsync("Kids")})).then((function(e){if(!e)return null;const o=[];let c=!1;for(let i=0,l=e.length;i{if(!t){this.pageIndexCache.put(e,i);return i}const[r,a]=t;i+=r;return next(a)}));return next(e)}static parseDestDictionary(e){const t=e.destDict;if(!(0,a.isDict)(t)){(0,n.warn)("parseDestDictionary: `destDict` must be a dictionary.");return}const r=e.resultObj;if("object"!=typeof r){(0,n.warn)("parseDestDictionary: `resultObj` must be an object.");return}const i=e.docBaseUrl||null;let s,o,c=t.get("A");if(!(0,a.isDict)(c))if(t.has("Dest"))c=t.get("Dest");else{c=t.get("AA");(0,a.isDict)(c)&&(c.has("D")?c=c.get("D"):c.has("U")&&(c=c.get("U")))}if((0,a.isDict)(c)){const e=c.get("S");if(!(0,a.isName)(e)){(0,n.warn)("parseDestDictionary: Invalid type in Action dictionary.");return}const t=e.name;switch(t){case"URI":s=c.get("URI");(0,a.isName)(s)?s="/"+s.name:(0,n.isString)(s)&&(s=function addDefaultProtocolToUrl(e){return e.startsWith("www.")?`http://${e}`:e}(s));break;case"GoTo":o=c.get("D");break;case"Launch":case"GoToR":const e=c.get("F");(0,a.isDict)(e)?s=e.get("F")||null:(0,n.isString)(e)&&(s=e);let i=c.get("D");if(i){(0,a.isName)(i)&&(i=i.name);if((0,n.isString)(s)){const e=s.split("#")[0];(0,n.isString)(i)?s=e+"#"+i:Array.isArray(i)&&(s=e+"#"+JSON.stringify(i))}}const l=c.get("NewWindow");(0,n.isBool)(l)&&(r.newWindow=l);break;case"Named":const h=c.get("N");(0,a.isName)(h)&&(r.action=h.name);break;case"JavaScript":const u=c.get("JS");let d;(0,a.isStream)(u)?d=u.getString():(0,n.isString)(u)&&(d=u);if(d){const e=new RegExp("^\\s*("+["app.launchURL","window.open"].join("|").split(".").join("\\.")+")\\((?:'|\")([^'\"]*)(?:'|\")(?:,\\s*(\\w+)\\)|\\))","i").exec((0,n.stringToPDFString)(d));if(e&&e[2]){s=e[2];"true"===e[3]&&"app.launchURL"===e[1]&&(r.newWindow=!0);break}}default:if("JavaScript"===t||"ResetForm"===t||"SubmitForm"===t)break;(0,n.warn)(`parseDestDictionary - unsupported action: "${t}".`)}}else t.has("Dest")&&(o=t.get("Dest"));if((0,n.isString)(s)){s=function tryConvertUrlEncoding(e){try{return(0,n.stringToUTF8String)(e)}catch(t){return e}}(s);const e=(0,n.createValidAbsoluteUrl)(s,i);e&&(r.url=e.href);r.unsafeUrl=s}if(o){(0,a.isName)(o)&&(o=o.name);((0,n.isString)(o)||Array.isArray(o))&&(r.dest=o)}}}t.Catalog=Catalog},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.NumberTree=t.NameTree=void 0;var a=r(2),i=r(5);class NameOrNumberTree{constructor(e,t,r){this.constructor===NameOrNumberTree&&(0,a.unreachable)("Cannot initialize NameOrNumberTree.");this.root=e;this.xref=t;this._type=r}getAll(){const e=new Map;if(!this.root)return e;const t=this.xref,r=new i.RefSet;r.put(this.root);const n=[this.root];for(;n.length>0;){const s=t.fetchIfRef(n.shift());if(!(0,i.isDict)(s))continue;if(s.has("Kids")){const e=s.get("Kids");for(let t=0,i=e.length;t10){(0,a.warn)(`Search depth limit reached for "${this._type}" tree.`);return null}const n=r.get("Kids");if(!Array.isArray(n))return null;let s=0,o=n.length-1;for(;s<=o;){const a=s+o>>1,i=t.fetchIfRef(n[a]).get("Limits");if(et.fetchIfRef(i[1]))){r=t.fetchIfRef(n[a]);break}s=a+1}}if(s>o)return null}const n=r.get(this._type);if(Array.isArray(n)){let r=0,a=n.length-2;for(;r<=a;){const i=r+a>>1,s=i+(1&i),o=t.fetchIfRef(n[s]);if(eo))return t.fetchIfRef(n[s+1]);r=s+2}}}return null}}t.NameTree=class NameTree extends NameOrNumberTree{constructor(e,t){super(e,t,"Names")}};t.NumberTree=class NumberTree extends NameOrNumberTree{constructor(e,t){super(e,t,"Nums")}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.FileSpec=void 0;var a=r(5),i=r(2);function pickPlatformItem(e){return e.has("UF")?e.get("UF"):e.has("F")?e.get("F"):e.has("Unix")?e.get("Unix"):e.has("Mac")?e.get("Mac"):e.has("DOS")?e.get("DOS"):null}t.FileSpec=class FileSpec{constructor(e,t){if(e&&(0,a.isDict)(e)){this.xref=t;this.root=e;e.has("FS")&&(this.fs=e.get("FS"));this.description=e.has("Desc")?(0,i.stringToPDFString)(e.get("Desc")):"";e.has("RF")&&(0,i.warn)("Related file specifications are not supported");this.contentAvailable=!0;if(!e.has("EF")){this.contentAvailable=!1;(0,i.warn)("Non-embedded file specifications are not supported")}}}get filename(){if(!this._filename&&this.root){const e=pickPlatformItem(this.root)||"unnamed";this._filename=(0,i.stringToPDFString)(e).replace(/\\\\/g,"\\").replace(/\\\//g,"/").replace(/\\/g,"/")}return this._filename}get content(){if(!this.contentAvailable)return null;!this.contentRef&&this.root&&(this.contentRef=pickPlatformItem(this.root.get("EF")));let e=null;if(this.contentRef){const t=this.xref.fetchIfRef(this.contentRef);t&&(0,a.isStream)(t)?e=t.getBytes():(0,i.warn)("Embedded file specification points to non-existing/invalid content")}else(0,i.warn)("Embedded file specification does not have a content");return e}get serializable(){return{filename:this.filename,content:this.content}}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.MetadataParser=void 0;var a=r(68);t.MetadataParser=class MetadataParser{constructor(e){e=this._repair(e);const t=new a.SimpleXMLParser({lowerCaseName:!0}).parseFromString(e);this._metadataMap=new Map;this._data=e;t&&this._parse(t)}_repair(e){return e.replace(/^[^<]+/,"").replace(/>\\376\\377([^<]+)/g,(function(e,t){const r=t.replace(/\\([0-3])([0-7])([0-7])/g,(function(e,t,r,a){return String.fromCharCode(64*t+8*r+1*a)})).replace(/&(amp|apos|gt|lt|quot);/g,(function(e,t){switch(t){case"amp":return"&";case"apos":return"'";case"gt":return">";case"lt":return"<";case"quot":return'"'}throw new Error(`_repair: ${t} isn't defined.`)})),a=[];for(let e=0,t=r.length;e=32&&t<127&&60!==t&&62!==t&&38!==t?a.push(String.fromCharCode(t)):a.push("&#x"+(65536+t).toString(16).substring(1)+";")}return">"+a.join("")}))}_getSequence(e){const t=e.nodeName;return"rdf:bag"!==t&&"rdf:seq"!==t&&"rdf:alt"!==t?null:e.childNodes.filter((e=>"rdf:li"===e.nodeName))}_parseArray(e){if(!e.hasChildNodes())return;const[t]=e.childNodes,r=this._getSequence(t)||[];this._metadataMap.set(e.nodeName,r.map((e=>e.textContent.trim())))}_parse(e){let t=e.documentElement;if("rdf:rdf"!==t.nodeName){t=t.firstChild;for(;t&&"rdf:rdf"!==t.nodeName;)t=t.nextSibling}if(t&&"rdf:rdf"===t.nodeName&&t.hasChildNodes())for(const e of t.childNodes)if("rdf:description"===e.nodeName)for(const t of e.childNodes){const e=t.nodeName;switch(e){case"#text":continue;case"dc:creator":case"dc:subject":this._parseArray(t);continue}this._metadataMap.set(e,t.textContent.trim())}}get serializable(){return{parsedData:this._metadataMap,rawData:this._data}}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XMLParserErrorCode=t.XMLParserBase=t.SimpleXMLParser=t.SimpleDOMNode=void 0;var a=r(9);const i={NoError:0,EndOfDocument:-1,UnterminatedCdat:-2,UnterminatedXmlDeclaration:-3,UnterminatedDoctypeDeclaration:-4,UnterminatedComment:-5,MalformedElement:-6,OutOfMemory:-7,UnterminatedAttributeValue:-8,UnterminatedElement:-9,ElementNeverBegun:-10};t.XMLParserErrorCode=i;function isWhitespace(e,t){const r=e[t];return" "===r||"\n"===r||"\r"===r||"\t"===r}class XMLParserBase{_resolveEntities(e){return e.replace(/&([^;]+);/g,((e,t)=>{if("#x"===t.substring(0,2))return String.fromCodePoint(parseInt(t.substring(2),16));if("#"===t.substring(0,1))return String.fromCodePoint(parseInt(t.substring(1),10));switch(t){case"lt":return"<";case"gt":return">";case"amp":return"&";case"quot":return'"';case"apos":return"'"}return this.onResolveEntity(t)}))}_parseContent(e,t){const r=[];let a=t;function skipWs(){for(;a"!==e[a]&&"/"!==e[a];)++a;const i=e.substring(t,a);skipWs();for(;a"!==e[a]&&"/"!==e[a]&&"?"!==e[a];){skipWs();let t="",i="";for(;a"!==e[r]&&"?"!==e[r]&&"/"!==e[r];)++r;const a=e.substring(t,r);!function skipWs(){for(;r"!==e[r+1]);)++r;return{name:a,value:e.substring(i,r),parsed:r-t}}parseXml(e){let t=0;for(;t",r);if(t<0){this.onError(i.UnterminatedElement);return}this.onEndElement(e.substring(r,t));r=t+1;break;case"?":++r;const a=this._parseProcessingInstruction(e,r);if("?>"!==e.substring(r+a.parsed,r+a.parsed+2)){this.onError(i.UnterminatedXmlDeclaration);return}this.onPi(a.name,a.value);r+=a.parsed+2;break;case"!":if("--"===e.substring(r+1,r+3)){t=e.indexOf("--\x3e",r+3);if(t<0){this.onError(i.UnterminatedComment);return}this.onComment(e.substring(r+3,t));r=t+3}else if("[CDATA["===e.substring(r+1,r+8)){t=e.indexOf("]]>",r+8);if(t<0){this.onError(i.UnterminatedCdat);return}this.onCdata(e.substring(r+8,t));r=t+3}else{if("DOCTYPE"!==e.substring(r+1,r+8)){this.onError(i.MalformedElement);return}{const a=e.indexOf("[",r+8);let n=!1;t=e.indexOf(">",r+8);if(t<0){this.onError(i.UnterminatedDoctypeDeclaration);return}if(a>0&&t>a){t=e.indexOf("]>",r+8);if(t<0){this.onError(i.UnterminatedDoctypeDeclaration);return}n=!0}const s=e.substring(r+8,t+(n?1:0));this.onDoctype(s);r=t+(n?2:1)}}break;default:const n=this._parseContent(e,r);if(null===n){this.onError(i.MalformedElement);return}let s=!1;if("/>"===e.substring(r+n.parsed,r+n.parsed+2))s=!0;else if(">"!==e.substring(r+n.parsed,r+n.parsed+1)){this.onError(i.UnterminatedElement);return}this.onBeginElement(n.name,n.attributes,s);r+=n.parsed+(s?2:1)}}else{for(;r0}searchNode(e,t){if(t>=e.length)return this;const r=e[t],a=[];let i=this;for(;;){if(r.name===i.nodeName){if(0!==r.pos){if(0===a.length)return null;{const[n]=a.pop();let s=0;for(const a of n.childNodes)if(r.name===a.nodeName){if(s===r.pos)return a.searchNode(e,t+1);s++}return i.searchNode(e,t+1)}}{const r=i.searchNode(e,t+1);if(null!==r)return r}}if(i.childNodes&&0!==i.childNodes.length){a.push([i,0]);i=i.childNodes[0]}else{if(0===a.length)return null;for(;0!==a.length;){const[e,t]=a.pop(),r=t+1;if(r");for(const t of this.childNodes)t.dump(e);e.push(``)}else this.nodeValue?e.push(`>${(0,a.encodeToXmlString)(this.nodeValue)}`):e.push("/>")}else e.push((0,a.encodeToXmlString)(this.nodeValue))}}t.SimpleDOMNode=SimpleDOMNode;t.SimpleXMLParser=class SimpleXMLParser extends XMLParserBase{constructor({hasAttributes:e=!1,lowerCaseName:t=!1}){super();this._currentFragment=null;this._stack=null;this._errorCode=i.NoError;this._hasAttributes=e;this._lowerCaseName=t}parseFromString(e){this._currentFragment=[];this._stack=[];this._errorCode=i.NoError;this.parseXml(e);if(this._errorCode!==i.NoError)return;const[t]=this._currentFragment;return t?{documentElement:t}:void 0}onText(e){if(function isWhitespaceString(e){for(let t=0,r=e.length;t{Object.defineProperty(t,"__esModule",{value:!0});t.StructTreeRoot=t.StructTreePage=void 0;var a=r(5),i=r(2),n=r(65);const s="PAGE_CONTENT",o="STREAM_CONTENT",c="OBJECT",l="ELEMENT";t.StructTreeRoot=class StructTreeRoot{constructor(e){this.dict=e;this.roleMap=new Map}init(){this.readRoleMap()}readRoleMap(){const e=this.dict.get("RoleMap");(0,a.isDict)(e)&&e.forEach(((e,t)=>{(0,a.isName)(t)&&this.roleMap.set(e,t.name)}))}};class StructElementNode{constructor(e,t){this.tree=e;this.dict=t;this.kids=[];this.parseKids()}get role(){const e=this.dict.get("S"),t=(0,a.isName)(e)?e.name:"",{root:r}=this.tree;return r.roleMap.has(t)?r.roleMap.get(t):t}parseKids(){let e=null;const t=this.dict.getRaw("Pg");(0,a.isRef)(t)&&(e=t.toString());const r=this.dict.get("K");if(Array.isArray(r))for(const t of r){const r=this.parseKid(e,t);r&&this.kids.push(r)}else{const t=this.parseKid(e,r);t&&this.kids.push(t)}}parseKid(e,t){if(Number.isInteger(t))return this.tree.pageDict.objId!==e?null:new StructElement({type:s,mcid:t,pageObjId:e});let r=null;(0,a.isRef)(t)?r=this.dict.xref.fetch(t):(0,a.isDict)(t)&&(r=t);if(!r)return null;const i=r.getRaw("Pg");(0,a.isRef)(i)&&(e=i.toString());const n=(0,a.isName)(r.get("Type"))?r.get("Type").name:null;return"MCR"===n?this.tree.pageDict.objId!==e?null:new StructElement({type:o,refObjId:(0,a.isRef)(r.getRaw("Stm"))?r.getRaw("Stm").toString():null,pageObjId:e,mcid:r.get("MCID")}):"OBJR"===n?this.tree.pageDict.objId!==e?null:new StructElement({type:c,refObjId:(0,a.isRef)(r.getRaw("Obj"))?r.getRaw("Obj").toString():null,pageObjId:e}):new StructElement({type:l,dict:r})}}class StructElement{constructor({type:e,dict:t=null,mcid:r=null,pageObjId:a=null,refObjId:i=null}){this.type=e;this.dict=t;this.mcid=r;this.pageObjId=a;this.refObjId=i;this.parentNode=null}}t.StructTreePage=class StructTreePage{constructor(e,t){this.root=e;this.rootDict=e?e.dict:null;this.pageDict=t;this.nodes=[]}parse(){if(!this.root||!this.rootDict)return;const e=this.rootDict.get("ParentTree");if(!e)return;const t=this.pageDict.get("StructParents");if(!Number.isInteger(t))return;const r=new n.NumberTree(e,this.rootDict.xref).get(t);if(!Array.isArray(r))return;const i=new Map;for(const e of r)(0,a.isRef)(e)&&this.addNode(this.rootDict.xref.fetch(e),i)}addNode(e,t,r=0){if(r>40){(0,i.warn)("StructTree MAX_DEPTH reached.");return null}if(t.has(e))return t.get(e);const n=new StructElementNode(this,e);t.set(e,n);const s=e.get("P");if(!s||(0,a.isName)(s.get("Type"),"StructTreeRoot")){this.addTopLevelNode(e,n)||t.delete(e);return n}const o=this.addNode(s,t,r+1);if(!o)return n;let c=!1;for(const t of o.kids)if(t.type===l&&t.dict===e){t.parentNode=n;c=!0}c||t.delete(e);return n}addTopLevelNode(e,t){const r=this.rootDict.get("K");if(!r)return!1;if((0,a.isDict)(r)){if(r.objId!==e.objId)return!1;this.nodes[0]=t;return!0}if(!Array.isArray(r))return!0;let i=!1;for(let a=0;a40){(0,i.warn)("StructTree too deep to be fully serialized.");return}const a=Object.create(null);a.role=e.role;a.children=[];t.children.push(a);const n=e.dict.get("Alt");(0,i.isString)(n)&&(a.alt=(0,i.stringToPDFString)(n));for(const t of e.kids){const e=t.type===l?t.parentNode:null;e?nodeToSerializable(e,a,r+1):t.type===s||t.type===o?a.children.push({type:"content",id:`page${t.pageObjId}_mcid${t.mcid}`}):t.type===c&&a.children.push({type:"object",id:t.refObjId})}}const e=Object.create(null);e.children=[];e.role="Root";for(const t of this.nodes)t&&nodeToSerializable(t,e);return e}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ObjectLoader=void 0;var a=r(5),i=r(9),n=r(2);function addChildren(e,t){if(e instanceof a.Dict)e=e.getRawValues();else if((0,a.isStream)(e))e=e.dict.getRawValues();else if(!Array.isArray(e))return;for(const i of e)((r=i)instanceof a.Ref||r instanceof a.Dict||Array.isArray(r)||(0,a.isStream)(r))&&t.push(i);var r}t.ObjectLoader=class ObjectLoader{constructor(e,t,r){this.dict=e;this.keys=t;this.xref=r;this.refSet=null}async load(){if(this.xref.stream.isDataLoaded)return;const{keys:e,dict:t}=this;this.refSet=new a.RefSet;const r=[];for(let a=0,i=e.length;a{Object.defineProperty(t,"__esModule",{value:!0});t.incrementalUpdate=function incrementalUpdate({originalData:e,xrefInfo:t,newRefs:r,xref:c=null,datasetsRef:l=null,xfaData:h=null}){!function updateXFA(e,t,r,i){if(null===t||null===i)return;if(null===e){e=function writeXFADataForAcroform(e,t){const r=new s.SimpleXMLParser({hasAttributes:!0}).parseFromString(e);for(const{xfa:e}of t){if(!e)continue;const{path:t,value:i}=e;if(!t)continue;const o=r.documentElement.searchNode((0,n.parseXFAPath)(t),0);o?o.childNodes=[new s.SimpleDOMNode("#text",i)]:(0,a.warn)(`Node not found for path: ${t}`)}const i=[];r.documentElement.dump(i);return i.join("")}(i.fetchIfRef(t).getString(),r)}const o=i.encrypt;if(o){e=o.createCipherTransform(t.num,t.gen).encryptString(e)}const c=`${t.num} ${t.gen} obj\n<< /Type /EmbeddedFile /Length ${e.length}>>\nstream\n`+e+"\nendstream\nendobj\n";r.push({ref:t,data:c})}(h,l,r,c);const u=new i.Dict(null),d=t.newRef;let f,g;const p=e[e.length-1];if(10===p||13===p){f=[];g=e.length}else{f=["\n"];g=e.length+1}u.set("Size",d.num+1);u.set("Prev",t.startXRef);u.set("Type",i.Name.get("XRef"));null!==t.rootRef&&u.set("Root",t.rootRef);null!==t.infoRef&&u.set("Info",t.infoRef);null!==t.encryptRef&&u.set("Encrypt",t.encryptRef);r.push({ref:d,data:""});r=r.sort(((e,t)=>e.ref.num-t.ref.num));const m=[[0,1,65535]],b=[0,1];let y=0;for(const{ref:e,data:t}of r){y=Math.max(y,g);m.push([1,g,Math.min(e.gen,65535)]);g+=t.length;b.push(e.num,1);f.push(t)}u.set("Index",b);if(Array.isArray(t.fileIds)&&t.fileIds.length>0){const e=function computeMD5(e,t){const r=Math.floor(Date.now()/1e3),i=t.filename||"",n=[r.toString(),i,e.toString()];let s=n.reduce(((e,t)=>e+t.length),0);for(const e of Object.values(t.info)){n.push(e);s+=e.length}const c=new Uint8Array(s);let l=0;for(const e of n){writeString(e,l,c);l+=e.length}return(0,a.bytesToString)((0,o.calculateMD5)(c))}(g,t);u.set("ID",[t.fileIds[0],e])}const w=[1,Math.ceil(Math.log2(y)/8),2],S=(w[0]+w[1]+w[2])*m.length;u.set("W",w);u.set("Length",S);f.push(`${d.num} ${d.gen} obj\n`);writeDict(u,f,null);f.push(" stream\n");const x=f.reduce(((e,t)=>e+t.length),0),k=`\nendstream\nendobj\nstartxref\n${g}\n%%EOF\n`,C=new Uint8Array(e.length+x+S+k.length);C.set(e);let v=e.length;for(const e of f){writeString(e,v,C);v+=e.length}for(const[e,t,r]of m){v=writeInt(e,w[0],v,C);v=writeInt(t,w[1],v,C);v=writeInt(r,w[2],v,C)}writeString(k,v,C);return C};t.writeDict=writeDict;var a=r(2),i=r(5),n=r(9),s=r(68),o=r(72);function writeDict(e,t,r){t.push("<<");for(const a of e.getKeys()){t.push(` /${(0,n.escapePDFName)(a)} `);writeValue(e.getRaw(a),t,r)}t.push(">>")}function writeValue(e,t,r){if((0,i.isName)(e))t.push(`/${(0,n.escapePDFName)(e.name)}`);else if((0,i.isRef)(e))t.push(`${e.num} ${e.gen} R`);else if(Array.isArray(e))!function writeArray(e,t,r){t.push("[");let a=!0;for(const i of e){a?a=!1:t.push(" ");writeValue(i,t,r)}t.push("]")}(e,t,r);else if("string"==typeof e){null!==r&&(e=r.encryptString(e));t.push(`(${(0,a.escapeString)(e)})`)}else"number"==typeof e?t.push(function numberToString(e){if(Number.isInteger(e))return e.toString();const t=Math.round(100*e);return t%100==0?(t/100).toString():t%10==0?e.toFixed(1):e.toFixed(2)}(e)):(0,i.isDict)(e)?writeDict(e,t,r):(0,i.isStream)(e)&&function writeStream(e,t,r){writeDict(e.dict,t,r);t.push(" stream\n");let a=e.getString();null!==r&&(a=r.encryptString(a));t.push(a,"\nendstream\n")}(e,t,r)}function writeInt(e,t,r,a){for(let i=t+r-1;i>r-1;i--){a[i]=255&e;e>>=8}return r+t}function writeString(e,t,r){for(let a=0,i=e.length;a{Object.defineProperty(t,"__esModule",{value:!0});t.calculateSHA384=calculateSHA384;t.PDF20=t.PDF17=t.CipherTransformFactory=t.calculateSHA512=t.calculateSHA256=t.calculateMD5=t.ARCFourCipher=t.AES256Cipher=t.AES128Cipher=void 0;var a=r(2),i=r(5),n=r(73);class ARCFourCipher{constructor(e){this.a=0;this.b=0;const t=new Uint8Array(256),r=e.length;for(let e=0;e<256;++e)t[e]=e;for(let a=0,i=0;a<256;++a){const n=t[a];i=i+n+e[a%r]&255;t[a]=t[i];t[i]=n}this.s=t}encryptBlock(e){let t=this.a,r=this.b;const a=this.s,i=e.length,n=new Uint8Array(i);for(let s=0;s>5&255;h[u++]=i>>13&255;h[u++]=i>>21&255;h[u++]=i>>>29&255;h[u++]=0;h[u++]=0;h[u++]=0;const g=new Int32Array(16);for(u=0;u>>32-o)|0;i=n}n=n+i|0;s=s+l|0;o=o+f|0;c=c+p|0}return new Uint8Array([255&n,n>>8&255,n>>16&255,n>>>24&255,255&s,s>>8&255,s>>16&255,s>>>24&255,255&o,o>>8&255,o>>16&255,o>>>24&255,255&c,c>>8&255,c>>16&255,c>>>24&255])}}();t.calculateMD5=s;class Word64{constructor(e,t){this.high=0|e;this.low=0|t}and(e){this.high&=e.high;this.low&=e.low}xor(e){this.high^=e.high;this.low^=e.low}or(e){this.high|=e.high;this.low|=e.low}shiftRight(e){if(e>=32){this.low=this.high>>>e-32|0;this.high=0}else{this.low=this.low>>>e|this.high<<32-e;this.high=this.high>>>e|0}}shiftLeft(e){if(e>=32){this.high=this.low<>>32-e;this.low<<=e}}rotateRight(e){let t,r;if(32&e){r=this.low;t=this.high}else{t=this.low;r=this.high}e&=31;this.low=t>>>e|r<<32-e;this.high=r>>>e|t<<32-e}not(){this.high=~this.high;this.low=~this.low}add(e){const t=(this.low>>>0)+(e.low>>>0);let r=(this.high>>>0)+(e.high>>>0);t>4294967295&&(r+=1);this.low=0|t;this.high=0|r}copyTo(e,t){e[t]=this.high>>>24&255;e[t+1]=this.high>>16&255;e[t+2]=this.high>>8&255;e[t+3]=255&this.high;e[t+4]=this.low>>>24&255;e[t+5]=this.low>>16&255;e[t+6]=this.low>>8&255;e[t+7]=255&this.low}assign(e){this.high=e.high;this.low=e.low}}const o=function calculateSHA256Closure(){function rotr(e,t){return e>>>t|e<<32-t}function ch(e,t,r){return e&t^~e&r}function maj(e,t,r){return e&t^e&r^t&r}function sigma(e){return rotr(e,2)^rotr(e,13)^rotr(e,22)}function sigmaPrime(e){return rotr(e,6)^rotr(e,11)^rotr(e,25)}function littleSigma(e){return rotr(e,7)^rotr(e,18)^e>>>3}const e=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];return function hash(t,r,a){let i=1779033703,n=3144134277,s=1013904242,o=2773480762,c=1359893119,l=2600822924,h=528734635,u=1541459225;const d=64*Math.ceil((a+9)/64),f=new Uint8Array(d);let g,p;for(g=0;g>>29&255;f[g++]=a>>21&255;f[g++]=a>>13&255;f[g++]=a>>5&255;f[g++]=a<<3&255;const b=new Uint32Array(64);for(g=0;g>>10)+b[p-7]+littleSigma(b[p-15])+b[p-16]|0;let t,r,a=i,d=n,m=s,w=o,S=c,x=l,k=h,C=u;for(p=0;p<64;++p){t=C+sigmaPrime(S)+ch(S,x,k)+e[p]+b[p];r=sigma(a)+maj(a,d,m);C=k;k=x;x=S;S=w+t|0;w=m;m=d;d=a;a=t+r|0}i=i+a|0;n=n+d|0;s=s+m|0;o=o+w|0;c=c+S|0;l=l+x|0;h=h+k|0;u=u+C|0}var y;return new Uint8Array([i>>24&255,i>>16&255,i>>8&255,255&i,n>>24&255,n>>16&255,n>>8&255,255&n,s>>24&255,s>>16&255,s>>8&255,255&s,o>>24&255,o>>16&255,o>>8&255,255&o,c>>24&255,c>>16&255,c>>8&255,255&c,l>>24&255,l>>16&255,l>>8&255,255&l,h>>24&255,h>>16&255,h>>8&255,255&h,u>>24&255,u>>16&255,u>>8&255,255&u])}}();t.calculateSHA256=o;const c=function calculateSHA512Closure(){function ch(e,t,r,a,i){e.assign(t);e.and(r);i.assign(t);i.not();i.and(a);e.xor(i)}function maj(e,t,r,a,i){e.assign(t);e.and(r);i.assign(t);i.and(a);e.xor(i);i.assign(r);i.and(a);e.xor(i)}function sigma(e,t,r){e.assign(t);e.rotateRight(28);r.assign(t);r.rotateRight(34);e.xor(r);r.assign(t);r.rotateRight(39);e.xor(r)}function sigmaPrime(e,t,r){e.assign(t);e.rotateRight(14);r.assign(t);r.rotateRight(18);e.xor(r);r.assign(t);r.rotateRight(41);e.xor(r)}function littleSigma(e,t,r){e.assign(t);e.rotateRight(1);r.assign(t);r.rotateRight(8);e.xor(r);r.assign(t);r.shiftRight(7);e.xor(r)}function littleSigmaPrime(e,t,r){e.assign(t);e.rotateRight(19);r.assign(t);r.rotateRight(61);e.xor(r);r.assign(t);r.shiftRight(6);e.xor(r)}const e=[new Word64(1116352408,3609767458),new Word64(1899447441,602891725),new Word64(3049323471,3964484399),new Word64(3921009573,2173295548),new Word64(961987163,4081628472),new Word64(1508970993,3053834265),new Word64(2453635748,2937671579),new Word64(2870763221,3664609560),new Word64(3624381080,2734883394),new Word64(310598401,1164996542),new Word64(607225278,1323610764),new Word64(1426881987,3590304994),new Word64(1925078388,4068182383),new Word64(2162078206,991336113),new Word64(2614888103,633803317),new Word64(3248222580,3479774868),new Word64(3835390401,2666613458),new Word64(4022224774,944711139),new Word64(264347078,2341262773),new Word64(604807628,2007800933),new Word64(770255983,1495990901),new Word64(1249150122,1856431235),new Word64(1555081692,3175218132),new Word64(1996064986,2198950837),new Word64(2554220882,3999719339),new Word64(2821834349,766784016),new Word64(2952996808,2566594879),new Word64(3210313671,3203337956),new Word64(3336571891,1034457026),new Word64(3584528711,2466948901),new Word64(113926993,3758326383),new Word64(338241895,168717936),new Word64(666307205,1188179964),new Word64(773529912,1546045734),new Word64(1294757372,1522805485),new Word64(1396182291,2643833823),new Word64(1695183700,2343527390),new Word64(1986661051,1014477480),new Word64(2177026350,1206759142),new Word64(2456956037,344077627),new Word64(2730485921,1290863460),new Word64(2820302411,3158454273),new Word64(3259730800,3505952657),new Word64(3345764771,106217008),new Word64(3516065817,3606008344),new Word64(3600352804,1432725776),new Word64(4094571909,1467031594),new Word64(275423344,851169720),new Word64(430227734,3100823752),new Word64(506948616,1363258195),new Word64(659060556,3750685593),new Word64(883997877,3785050280),new Word64(958139571,3318307427),new Word64(1322822218,3812723403),new Word64(1537002063,2003034995),new Word64(1747873779,3602036899),new Word64(1955562222,1575990012),new Word64(2024104815,1125592928),new Word64(2227730452,2716904306),new Word64(2361852424,442776044),new Word64(2428436474,593698344),new Word64(2756734187,3733110249),new Word64(3204031479,2999351573),new Word64(3329325298,3815920427),new Word64(3391569614,3928383900),new Word64(3515267271,566280711),new Word64(3940187606,3454069534),new Word64(4118630271,4000239992),new Word64(116418474,1914138554),new Word64(174292421,2731055270),new Word64(289380356,3203993006),new Word64(460393269,320620315),new Word64(685471733,587496836),new Word64(852142971,1086792851),new Word64(1017036298,365543100),new Word64(1126000580,2618297676),new Word64(1288033470,3409855158),new Word64(1501505948,4234509866),new Word64(1607167915,987167468),new Word64(1816402316,1246189591)];return function hash(t,r,a,i=!1){let n,s,o,c,l,h,u,d;if(i){n=new Word64(3418070365,3238371032);s=new Word64(1654270250,914150663);o=new Word64(2438529370,812702999);c=new Word64(355462360,4144912697);l=new Word64(1731405415,4290775857);h=new Word64(2394180231,1750603025);u=new Word64(3675008525,1694076839);d=new Word64(1203062813,3204075428)}else{n=new Word64(1779033703,4089235720);s=new Word64(3144134277,2227873595);o=new Word64(1013904242,4271175723);c=new Word64(2773480762,1595750129);l=new Word64(1359893119,2917565137);h=new Word64(2600822924,725511199);u=new Word64(528734635,4215389547);d=new Word64(1541459225,327033209)}const f=128*Math.ceil((a+17)/128),g=new Uint8Array(f);let p,m;for(p=0;p>>29&255;g[p++]=a>>21&255;g[p++]=a>>13&255;g[p++]=a>>5&255;g[p++]=a<<3&255;const y=new Array(80);for(p=0;p<80;p++)y[p]=new Word64(0,0);let w=new Word64(0,0),S=new Word64(0,0),x=new Word64(0,0),k=new Word64(0,0),C=new Word64(0,0),v=new Word64(0,0),F=new Word64(0,0),O=new Word64(0,0);const T=new Word64(0,0),M=new Word64(0,0),E=new Word64(0,0),D=new Word64(0,0);let N,L;for(p=0;p=1;--e){r=n[13];n[13]=n[9];n[9]=n[5];n[5]=n[1];n[1]=r;r=n[14];a=n[10];n[14]=n[6];n[10]=n[2];n[6]=r;n[2]=a;r=n[15];a=n[11];i=n[7];n[15]=n[3];n[11]=r;n[7]=a;n[3]=i;for(let e=0;e<16;++e)n[e]=this._inv_s[n[e]];for(let r=0,a=16*e;r<16;++r,++a)n[r]^=t[a];for(let e=0;e<16;e+=4){const t=this._mix[n[e]],a=this._mix[n[e+1]],i=this._mix[n[e+2]],s=this._mix[n[e+3]];r=t^a>>>8^a<<24^i>>>16^i<<16^s>>>24^s<<8;n[e]=r>>>24&255;n[e+1]=r>>16&255;n[e+2]=r>>8&255;n[e+3]=255&r}}r=n[13];n[13]=n[9];n[9]=n[5];n[5]=n[1];n[1]=r;r=n[14];a=n[10];n[14]=n[6];n[10]=n[2];n[6]=r;n[2]=a;r=n[15];a=n[11];i=n[7];n[15]=n[3];n[11]=r;n[7]=a;n[3]=i;for(let e=0;e<16;++e){n[e]=this._inv_s[n[e]];n[e]^=t[e]}return n}_encrypt(e,t){const r=this._s;let a,i,n;const s=new Uint8Array(16);s.set(e);for(let e=0;e<16;++e)s[e]^=t[e];for(let e=1;e=a;--r)if(e[r]!==t){t=0;break}o-=t;n[n.length-1]=e.subarray(0,16-t)}}const c=new Uint8Array(o);for(let e=0,t=0,r=n.length;e=256&&(o=255&(27^o))}for(let t=0;t<4;++t){r[e]=a^=r[e-32];e++;r[e]=i^=r[e-32];e++;r[e]=n^=r[e-32];e++;r[e]=s^=r[e-32];e++}}return r}}t.AES256Cipher=AES256Cipher;class PDF17{checkOwnerPassword(e,t,r,i){const n=new Uint8Array(e.length+56);n.set(e,0);n.set(t,e.length);n.set(r,e.length+t.length);const s=o(n,0,n.length);return(0,a.isArrayEqual)(s,i)}checkUserPassword(e,t,r){const i=new Uint8Array(e.length+8);i.set(e,0);i.set(t,e.length);const n=o(i,0,i.length);return(0,a.isArrayEqual)(n,r)}getOwnerKey(e,t,r,a){const i=new Uint8Array(e.length+56);i.set(e,0);i.set(t,e.length);i.set(r,e.length+t.length);const n=o(i,0,i.length);return new AES256Cipher(n).decryptBlock(a,!1,new Uint8Array(16))}getUserKey(e,t,r){const a=new Uint8Array(e.length+8);a.set(e,0);a.set(t,e.length);const i=o(a,0,a.length);return new AES256Cipher(i).decryptBlock(r,!1,new Uint8Array(16))}}t.PDF17=PDF17;const l=function PDF20Closure(){function calculatePDF20Hash(e,t,r){let a=o(t,0,t.length).subarray(0,32),i=[0],n=0;for(;n<64||i[i.length-1]>n-32;){const t=e.length+a.length+r.length,s=new Uint8Array(t);let l=0;s.set(e,l);l+=e.length;s.set(a,l);l+=a.length;s.set(r,l);const h=new Uint8Array(64*t);for(let e=0,r=0;e<64;e++,r+=t)h.set(s,r);i=new AES128Cipher(a.subarray(0,16)).encrypt(h,a.subarray(16,32));let u=0;for(let e=0;e<16;e++){u*=1;u%=3;u+=(i[e]>>>0)%3;u%=3}0===u?a=o(i,0,i.length):1===u?a=calculateSHA384(i,0,i.length):2===u&&(a=c(i,0,i.length));n++}return a.subarray(0,32)}return class PDF20{hash(e,t,r){return calculatePDF20Hash(e,t,r)}checkOwnerPassword(e,t,r,i){const n=new Uint8Array(e.length+56);n.set(e,0);n.set(t,e.length);n.set(r,e.length+t.length);const s=calculatePDF20Hash(e,n,r);return(0,a.isArrayEqual)(s,i)}checkUserPassword(e,t,r){const i=new Uint8Array(e.length+8);i.set(e,0);i.set(t,e.length);const n=calculatePDF20Hash(e,i,[]);return(0,a.isArrayEqual)(n,r)}getOwnerKey(e,t,r,a){const i=new Uint8Array(e.length+56);i.set(e,0);i.set(t,e.length);i.set(r,e.length+t.length);const n=calculatePDF20Hash(e,i,r);return new AES256Cipher(n).decryptBlock(a,!1,new Uint8Array(16))}getUserKey(e,t,r){const a=new Uint8Array(e.length+8);a.set(e,0);a.set(t,e.length);const i=calculatePDF20Hash(e,a,[]);return new AES256Cipher(i).decryptBlock(r,!1,new Uint8Array(16))}}}();t.PDF20=l;class CipherTransform{constructor(e,t){this.StringCipherConstructor=e;this.StreamCipherConstructor=t}createStream(e,t){const r=new this.StreamCipherConstructor;return new n.DecryptStream(e,t,(function cipherTransformDecryptStream(e,t){return r.decryptBlock(e,t)}))}decryptString(e){const t=new this.StringCipherConstructor;let r=(0,a.stringToBytes)(e);r=t.decryptBlock(r,!0);return(0,a.bytesToString)(r)}encryptString(e){const t=new this.StringCipherConstructor;if(t instanceof AESBaseCipher){const r=e.length,i=16-r%16;16!==i&&(e=e.padEnd(16*Math.ceil(r/16),String.fromCharCode(i)));const n=new Uint8Array(16);if("undefined"!=typeof crypto)crypto.getRandomValues(n);else for(let e=0;e<16;e++)n[e]=Math.floor(256*Math.random());let s=(0,a.stringToBytes)(e);s=t.encrypt(s,n);const o=new Uint8Array(16+s.length);o.set(n);o.set(s,16);return(0,a.bytesToString)(o)}let r=(0,a.stringToBytes)(e);r=t.encrypt(r);return(0,a.bytesToString)(r)}}const h=function CipherTransformFactoryClosure(){const e=new Uint8Array([40,191,78,94,78,117,138,65,100,0,78,86,255,250,1,8,46,46,0,182,208,104,62,128,47,12,169,254,100,83,105,122]);function prepareKeyData(t,r,a,i,n,o,c,l){const h=40+a.length+t.length,u=new Uint8Array(h);let d,f,g=0;if(r){f=Math.min(32,r.length);for(;g>8&255;u[g++]=n>>16&255;u[g++]=n>>>24&255;for(d=0,f=t.length;d=4&&!l){u[g++]=255;u[g++]=255;u[g++]=255;u[g++]=255}let p=s(u,0,g);const m=c>>3;if(o>=3)for(d=0;d<50;++d)p=s(p,0,m);const b=p.subarray(0,m);let y,w;if(o>=3){for(g=0;g<32;++g)u[g]=e[g];for(d=0,f=t.length;d>8&255;i[o++]=e>>16&255;i[o++]=255&t;i[o++]=t>>8&255;if(a){i[o++]=115;i[o++]=65;i[o++]=108;i[o++]=84}return s(i,0,o).subarray(0,Math.min(r.length+5,16))}function buildCipherConstructor(e,t,r,n,s){if(!(0,i.isName)(t))throw new a.FormatError("Invalid crypt filter name.");const o=e.get(t.name);let c;null!=o&&(c=o.get("CFM"));if(!c||"None"===c.name)return function cipherTransformFactoryBuildCipherConstructorNone(){return new NullCipher};if("V2"===c.name)return function cipherTransformFactoryBuildCipherConstructorV2(){return new ARCFourCipher(buildObjectKey(r,n,s,!1))};if("AESV2"===c.name)return function cipherTransformFactoryBuildCipherConstructorAESV2(){return new AES128Cipher(buildObjectKey(r,n,s,!0))};if("AESV3"===c.name)return function cipherTransformFactoryBuildCipherConstructorAESV3(){return new AES256Cipher(s)};throw new a.FormatError("Unknown crypto method")}return class CipherTransformFactory{constructor(r,n,o){const c=r.get("Filter");if(!(0,i.isName)(c,"Standard"))throw new a.FormatError("unknown encryption method");this.dict=r;const h=r.get("V");if(!Number.isInteger(h)||1!==h&&2!==h&&4!==h&&5!==h)throw new a.FormatError("unsupported encryption algorithm");this.algorithm=h;let u=r.get("Length");if(!u)if(h<=3)u=40;else{const e=r.get("CF"),t=r.get("StmF");if((0,i.isDict)(e)&&(0,i.isName)(t)){e.suppressEncryption=!0;const r=e.get(t.name);u=r&&r.get("Length")||128;u<40&&(u<<=3)}}if(!Number.isInteger(u)||u<40||u%8!=0)throw new a.FormatError("invalid key length");const d=(0,a.stringToBytes)(r.get("O")).subarray(0,32),f=(0,a.stringToBytes)(r.get("U")).subarray(0,32),g=r.get("P"),p=r.get("R"),m=(4===h||5===h)&&!1!==r.get("EncryptMetadata");this.encryptMetadata=m;const b=(0,a.stringToBytes)(n);let y,w;if(o){if(6===p)try{o=(0,a.utf8StringToString)(o)}catch(e){(0,a.warn)("CipherTransformFactory: Unable to convert UTF8 encoded password.")}y=(0,a.stringToBytes)(o)}if(5!==h)w=prepareKeyData(b,y,d,f,g,p,u,m);else{const e=(0,a.stringToBytes)(r.get("O")).subarray(32,40),t=(0,a.stringToBytes)(r.get("O")).subarray(40,48),i=(0,a.stringToBytes)(r.get("U")).subarray(0,48),n=(0,a.stringToBytes)(r.get("U")).subarray(32,40),s=(0,a.stringToBytes)(r.get("U")).subarray(40,48),o=(0,a.stringToBytes)(r.get("OE")),c=(0,a.stringToBytes)(r.get("UE"));(0,a.stringToBytes)(r.get("Perms"));w=function createEncryptionKey20(e,t,r,a,i,n,s,o,c,h,u,d){if(t){const e=Math.min(127,t.length);t=t.subarray(0,e)}else t=[];let f;f=6===e?new l:new PDF17;return f.checkUserPassword(t,o,s)?f.getUserKey(t,c,u):t.length&&f.checkOwnerPassword(t,a,n,r)?f.getOwnerKey(t,i,n,h):null}(p,y,d,e,t,i,f,n,s,o,c)}if(!w&&!o)throw new a.PasswordException("No password given",a.PasswordResponses.NEED_PASSWORD);if(!w&&o){w=prepareKeyData(b,function decodeUserPassword(t,r,a,i){const n=new Uint8Array(32);let o=0;const c=Math.min(32,t.length);for(;o>3;if(a>=3)for(l=0;l<50;++l)h=s(h,0,h.length);let d,f;if(a>=3){f=r;const e=new Uint8Array(u);for(l=19;l>=0;l--){for(let t=0;t=4){const e=r.get("CF");(0,i.isDict)(e)&&(e.suppressEncryption=!0);this.cf=e;this.stmf=r.get("StmF")||t;this.strf=r.get("StrF")||t;this.eff=r.get("EFF")||this.stmf}}createCipherTransform(e,t){if(4===this.algorithm||5===this.algorithm)return new CipherTransform(buildCipherConstructor(this.cf,this.stmf,e,t,this.encryptionKey),buildCipherConstructor(this.cf,this.strf,e,t,this.encryptionKey));const r=buildObjectKey(e,t,this.encryptionKey,!1),a=function buildCipherCipherConstructor(){return new ARCFourCipher(r)};return new CipherTransform(a,a)}}}();t.CipherTransformFactory=h},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.DecryptStream=void 0;var a=r(19);class DecryptStream extends a.DecodeStream{constructor(e,t,r){super(t);this.str=e;this.dict=e.dict;this.decrypt=r;this.nextChunk=null;this.initialized=!1}readBlock(){let e;if(this.initialized)e=this.nextChunk;else{e=this.str.getBytes(512);this.initialized=!0}if(!e||0===e.length){this.eof=!0;return}this.nextChunk=this.str.getBytes(512);const t=this.nextChunk&&this.nextChunk.length>0;e=(0,this.decrypt)(e,!t);let r=this.bufferLength;const a=e.length,i=this.ensureBuffer(r+a);for(let t=0;t{Object.defineProperty(t,"__esModule",{value:!0});t.XFAFactory=void 0;var a=r(75),i=r(79),n=r(85),s=r(83),o=r(76),c=r(2),l=r(86);class XFAFactory{constructor(e){try{this.root=(new l.XFAParser).parse(XFAFactory._createDocument(e));const t=new i.Binder(this.root);this.form=t.bind();this.dataHandler=new n.DataHandler(this.root,t.getData());this.form[a.$globalData].template=this.form}catch(e){(0,c.warn)(`XFA - an error occurred during parsing and binding: ${e}`)}}isValid(){return this.root&&this.form}_createPages(){try{this.pages=this.form[a.$toHTML]();this.dims=this.pages.children.map((e=>{const{width:t,height:r}=e.attributes.style;return[0,0,parseInt(t),parseInt(r)]}))}catch(e){(0,c.warn)(`XFA - an error occurred during layout: ${e}`)}}getBoundingBox(e){return this.dims[e]}get numberPages(){this.pages||this._createPages();return this.dims.length}setImages(e){this.form[a.$globalData].images=e}setFonts(e){this.form[a.$globalData].fontFinder=new s.FontFinder(e);const t=[];for(let e of this.form[a.$globalData].usedTypefaces){e=(0,o.stripQuotes)(e);this.form[a.$globalData].fontFinder.find(e)||t.push(e)}return t.length>0?t:null}appendFonts(e,t){this.form[a.$globalData].fontFinder.add(e,t)}getPages(){this.pages||this._createPages();const e=this.pages;this.pages=null;return e}serializeData(e){return this.dataHandler.serialize(e)}static _createDocument(e){return e["/xdp:xdp"]?Object.values(e).join(""):e["xdp:xdp"]}}t.XFAFactory=XFAFactory},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XmlObject=t.XFAObjectArray=t.XFAObject=t.XFAAttribute=t.StringObject=t.OptionObject=t.Option10=t.Option01=t.IntegerObject=t.ContentObject=t.$uid=t.$toStyle=t.$toString=t.$toHTML=t.$text=t.$tabIndex=t.$setValue=t.$setSetAttributes=t.$setId=t.$searchNode=t.$root=t.$resolvePrototypes=t.$removeChild=t.$pushGlyphs=t.$onText=t.$onChildCheck=t.$onChild=t.$nsAttributes=t.$nodeName=t.$namespaceId=t.$isUsable=t.$isTransparent=t.$isThereMoreWidth=t.$isSplittable=t.$isNsAgnostic=t.$isDescendent=t.$isDataValue=t.$isCDATAXml=t.$isBindable=t.$insertAt=t.$indexOf=t.$ids=t.$hasSettableValue=t.$globalData=t.$getTemplateRoot=t.$getSubformParent=t.$getRealChildrenByNameIt=t.$getParent=t.$getNextPage=t.$getExtra=t.$getDataValue=t.$getContainedChildren=t.$getChildrenByNameIt=t.$getChildrenByName=t.$getChildrenByClass=t.$getChildren=t.$getAvailableSpace=t.$getAttributes=t.$getAttributeIt=t.$flushHTML=t.$finalize=t.$extra=t.$dump=t.$data=t.$content=t.$consumed=t.$clone=t.$cleanup=t.$cleanPage=t.$clean=t.$childrenToHTML=t.$appendChild=t.$addHTML=t.$acceptWhitespace=void 0;var a=r(76),i=r(2),n=r(9),s=r(77),o=r(78);const c=Symbol();t.$acceptWhitespace=c;const l=Symbol();t.$addHTML=l;const h=Symbol();t.$appendChild=h;const u=Symbol();t.$childrenToHTML=u;const d=Symbol();t.$clean=d;const f=Symbol();t.$cleanPage=f;const g=Symbol();t.$cleanup=g;const p=Symbol();t.$clone=p;const m=Symbol();t.$consumed=m;const b=Symbol("content");t.$content=b;const y=Symbol("data");t.$data=y;const w=Symbol();t.$dump=w;const S=Symbol("extra");t.$extra=S;const x=Symbol();t.$finalize=x;const k=Symbol();t.$flushHTML=k;const C=Symbol();t.$getAttributeIt=C;const v=Symbol();t.$getAttributes=v;const F=Symbol();t.$getAvailableSpace=F;const O=Symbol();t.$getChildrenByClass=O;const T=Symbol();t.$getChildrenByName=T;const M=Symbol();t.$getChildrenByNameIt=M;const E=Symbol();t.$getDataValue=E;const D=Symbol();t.$getExtra=D;const N=Symbol();t.$getRealChildrenByNameIt=N;const L=Symbol();t.$getChildren=L;const R=Symbol();t.$getContainedChildren=R;const j=Symbol();t.$getNextPage=j;const $=Symbol();t.$getSubformParent=$;const _=Symbol();t.$getParent=_;const U=Symbol();t.$getTemplateRoot=U;const X=Symbol();t.$globalData=X;const H=Symbol();t.$hasSettableValue=H;const q=Symbol();t.$ids=q;const z=Symbol();t.$indexOf=z;const W=Symbol();t.$insertAt=W;const G=Symbol();t.$isCDATAXml=G;const V=Symbol();t.$isBindable=V;const K=Symbol();t.$isDataValue=K;const Y=Symbol();t.$isDescendent=Y;const J=Symbol();t.$isNsAgnostic=J;const Z=Symbol();t.$isSplittable=Z;const Q=Symbol();t.$isThereMoreWidth=Q;const ee=Symbol();t.$isTransparent=ee;const te=Symbol();t.$isUsable=te;const re=Symbol(),ae=Symbol("namespaceId");t.$namespaceId=ae;const ie=Symbol("nodeName");t.$nodeName=ie;const ne=Symbol();t.$nsAttributes=ne;const se=Symbol();t.$onChild=se;const oe=Symbol();t.$onChildCheck=oe;const ce=Symbol();t.$onText=ce;const le=Symbol();t.$pushGlyphs=le;const he=Symbol();t.$removeChild=he;const ue=Symbol("root");t.$root=ue;const de=Symbol();t.$resolvePrototypes=de;const fe=Symbol();t.$searchNode=fe;const ge=Symbol();t.$setId=ge;const pe=Symbol();t.$setSetAttributes=pe;const me=Symbol();t.$setValue=me;const be=Symbol();t.$tabIndex=be;const ye=Symbol();t.$text=ye;const we=Symbol();t.$toHTML=we;const Se=Symbol();t.$toString=Se;const xe=Symbol();t.$toStyle=xe;const ke=Symbol("uid");t.$uid=ke;const Ae=Symbol(),Ce=Symbol(),ve=Symbol(),Fe=Symbol("_children"),Oe=Symbol(),Te=Symbol(),Ie=Symbol(),Pe=Symbol(),Me=Symbol(),Ee=Symbol(),De=Symbol(),Be=Symbol(),Ne=Symbol(),Le=Symbol("parent"),Re=Symbol(),je=Symbol(),$e=Symbol();let _e=0;const Ue=s.NamespaceIds.datasets.id;class XFAObject{constructor(e,t,r=!1){this[ae]=e;this[ie]=t;this[De]=r;this[Le]=null;this[Fe]=[];this[ke]=`${t}${_e++}`;this[X]=null}[se](e){if(!this[De]||!this[oe](e))return!1;const t=e[ie],r=this[t];if(!(r instanceof XFAObjectArray)){null!==r&&this[he](r);this[t]=e;this[h](e);return!0}if(r.push(e)){this[h](e);return!0}let a="";this.id?a=` (id: ${this.id})`:this.name&&(a=` (name: ${this.name} ${this.h.value})`);(0,i.warn)(`XFA - node "${this[ie]}"${a} has already enough "${t}"!`);return!1}[oe](e){return this.hasOwnProperty(e[ie])&&e[ae]===this[ae]}[J](){return!1}[c](){return!1}[G](){return!1}[V](){return!1}[ge](e){this.id&&this[ae]===s.NamespaceIds.template.id&&e.set(this.id,this)}[U](){return this[X].template}[Z](){return!1}[Q](){return!1}[h](e){e[Le]=this;this[Fe].push(e)}[he](e){const t=this[Fe].indexOf(e);this[Fe].splice(t,1)}[H](){return this.hasOwnProperty("value")}[me](e){}[ce](e){}[x](){}[d](e){delete this[De];if(this[g]){e.clean(this[g]);delete this[g]}}[z](e){return this[Fe].indexOf(e)}[W](e,t){t[Le]=this;this[Fe].splice(e,0,t)}[ee](){return!this.name}[re](){return""}[ye](){return 0===this[Fe].length?this[b]:this[Fe].map((e=>e[ye]())).join("")}get[ve](){const e=Object.getPrototypeOf(this);if(!e._attributes){const t=e._attributes=new Set;for(const e of Object.getOwnPropertyNames(this)){if(null===this[e]||this[e]instanceof XFAObject||this[e]instanceof XFAObjectArray)break;t.add(e)}}return(0,i.shadow)(this,ve,e._attributes)}[Y](e){let t=this;for(;t;){if(t===e)return!0;t=t[_]()}return!1}[_](){return this[Le]}[$](){return this[_]()}[L](e=null){return e?this[e]:this[Fe]}[w](){const e=Object.create(null);this[b]&&(e.$content=this[b]);for(const t of Object.getOwnPropertyNames(this)){const r=this[t];null!==r&&(r instanceof XFAObject?e[t]=r[w]():r instanceof XFAObjectArray?r.isEmpty()||(e[t]=r.dump()):e[t]=r)}return e}[xe](){return null}[we](){return a.HTMLResult.EMPTY}*[R](){for(const e of this[L]())yield e}*[Pe](e,t){for(const r of this[R]())if(!e||t===e.has(r[ie])){const e=this[F](),t=r[we](e);t.success||(this[S].failingNode=r);yield t}}[k](){return null}[l](e,t){this[S].children.push(e)}[F](){}[u]({filter:e=null,include:t=!0}){if(this[S].generator){const e=this[F](),t=this[S].failingNode[we](e);if(!t.success)return t;t.html&&this[l](t.html,t.bbox);delete this[S].failingNode}else this[S].generator=this[Pe](e,t);for(;;){const e=this[S].generator.next();if(e.done)break;const t=e.value;if(!t.success)return t;t.html&&this[l](t.html,t.bbox)}this[S].generator=null;return a.HTMLResult.EMPTY}[pe](e){this[je]=new Set(Object.keys(e))}[Ee](e){const t=this[ve],r=this[je];return[...e].filter((e=>t.has(e)&&!r.has(e)))}[de](e,t=new Set){for(const r of this[Fe])r[Re](e,t)}[Re](e,t){const r=this[Me](e,t);r?this[Ae](r,e,t):this[de](e,t)}[Me](e,t){const{use:r,usehref:a}=this;if(!r&&!a)return null;let n=null,s=null,c=null,l=r;if(a){l=a;a.startsWith("#som(")&&a.endsWith(")")?s=a.slice("#som(".length,a.length-1):a.startsWith(".#som(")&&a.endsWith(")")?s=a.slice(".#som(".length,a.length-1):a.startsWith("#")?c=a.slice(1):a.startsWith(".#")&&(c=a.slice(2))}else r.startsWith("#")?c=r.slice(1):s=r;this.use=this.usehref="";if(c)n=e.get(c);else{n=(0,o.searchNode)(e.get(ue),this,s,!0,!1);n&&(n=n[0])}if(!n){(0,i.warn)(`XFA - Invalid prototype reference: ${l}.`);return null}if(n[ie]!==this[ie]){(0,i.warn)(`XFA - Incompatible prototype: ${n[ie]} !== ${this[ie]}.`);return null}if(t.has(n)){(0,i.warn)("XFA - Cycle detected in prototypes use.");return null}t.add(n);const h=n[Me](e,t);h&&n[Ae](h,e,t);n[de](e,t);t.delete(n);return n}[Ae](e,t,r){if(r.has(e)){(0,i.warn)("XFA - Cycle detected in prototypes use.");return}!this[b]&&e[b]&&(this[b]=e[b]);new Set(r).add(e);for(const t of this[Ee](e[je])){this[t]=e[t];this[je]&&this[je].add(t)}for(const a of Object.getOwnPropertyNames(this)){if(this[ve].has(a))continue;const i=this[a],n=e[a];if(i instanceof XFAObjectArray){for(const e of i[Fe])e[Re](t,r);for(let a=i[Fe].length,s=n[Fe].length;aXFAObject[Oe](e))):"object"==typeof e&&null!==e?Object.assign({},e):e}[p](){const e=Object.create(Object.getPrototypeOf(this));for(const t of Object.getOwnPropertySymbols(this))try{e[t]=this[t]}catch(r){(0,i.shadow)(e,t,this[t])}e[ke]=`${e[ie]}${_e++}`;e[Fe]=[];for(const t of Object.getOwnPropertyNames(this)){if(this[ve].has(t)){e[t]=XFAObject[Oe](this[t]);continue}const r=this[t];e[t]=r instanceof XFAObjectArray?new XFAObjectArray(r[Be]):null}for(const t of this[Fe]){const r=t[ie],a=t[p]();e[Fe].push(a);a[Le]=e;null===e[r]?e[r]=a:e[r][Fe].push(a)}return e}[L](e=null){return e?this[Fe].filter((t=>t[ie]===e)):this[Fe]}[O](e){return this[e]}[T](e,t,r=!0){return Array.from(this[M](e,t,r))}*[M](e,t,r=!0){if("parent"!==e){for(const r of this[Fe]){r[ie]===e&&(yield r);r.name===e&&(yield r);(t||r[ee]())&&(yield*r[M](e,t,!1))}r&&this[ve].has(e)&&(yield new XFAAttribute(this,e,this[e]))}else yield this[Le]}}t.XFAObject=XFAObject;class XFAObjectArray{constructor(e=1/0){this[Be]=e;this[Fe]=[]}push(e){if(this[Fe].length<=this[Be]){this[Fe].push(e);return!0}(0,i.warn)(`XFA - node "${e[ie]}" accepts no more than ${this[Be]} children`);return!1}isEmpty(){return 0===this[Fe].length}dump(){return 1===this[Fe].length?this[Fe][0][w]():this[Fe].map((e=>e[w]()))}[p](){const e=new XFAObjectArray(this[Be]);e[Fe]=this[Fe].map((e=>e[p]()));return e}get children(){return this[Fe]}clear(){this[Fe].length=0}}t.XFAObjectArray=XFAObjectArray;class XFAAttribute{constructor(e,t,r){this[Le]=e;this[ie]=t;this[b]=r;this[m]=!1;this[ke]="attribute"+_e++}[_](){return this[Le]}[K](){return!0}[E](){return this[b].trim()}[me](e){e=e.value||"";this[b]=e.toString()}[ye](){return this[b]}[Y](e){return this[Le]===e||this[Le][Y](e)}}t.XFAAttribute=XFAAttribute;class XmlObject extends XFAObject{constructor(e,t,r={}){super(e,t);this[b]="";this[Te]=null;if("#text"!==t){const e=new Map;this[Ce]=e;for(const[t,a]of Object.entries(r))e.set(t,new XFAAttribute(this,t,a));if(r.hasOwnProperty(ne)){const e=r[ne].xfa.dataNode;void 0!==e&&("dataGroup"===e?this[Te]=!1:"dataValue"===e&&(this[Te]=!0))}}this[m]=!1}[Se](e){const t=this[ie];if("#text"===t){e.push((0,n.encodeToXmlString)(this[b]));return}const r=this[ae]===Ue?"xfa:":"";e.push(`<${r}${t}`);for(const[t,r]of this[Ce].entries())e.push(` ${t}="${(0,n.encodeToXmlString)(r[b])}"`);null!==this[Te]&&(this[Te]?e.push(' xfa:dataNode="dataValue"'):e.push(' xfa:dataNode="dataGroup"'));if(this[b]||0!==this[Fe].length){e.push(">");if(this[b])"string"==typeof this[b]?e.push((0,n.encodeToXmlString)(this[b])):this[b][Se](e);else for(const t of this[Fe])t[Se](e);e.push(``)}else e.push("/>")}[se](e){if(this[b]){const e=new XmlObject(this[ae],"#text");this[h](e);e[b]=this[b];this[b]=""}this[h](e);return!0}[ce](e){this[b]+=e}[x](){if(this[b]&&this[Fe].length>0){const e=new XmlObject(this[ae],"#text");this[h](e);e[b]=this[b];delete this[b]}}[we](){return"#text"===this[ie]?a.HTMLResult.success({name:"#text",value:this[b]}):a.HTMLResult.EMPTY}[L](e=null){return e?this[Fe].filter((t=>t[ie]===e)):this[Fe]}[v](){return this[Ce]}[O](e){const t=this[Ce].get(e);return void 0!==t?t:this[L](e)}*[M](e,t){const r=this[Ce].get(e);r&&(yield r);for(const r of this[Fe]){r[ie]===e&&(yield r);t&&(yield*r[M](e,t))}}*[C](e,t){const r=this[Ce].get(e);!r||t&&r[m]||(yield r);for(const r of this[Fe])yield*r[C](e,t)}*[N](e,t,r){for(const a of this[Fe]){a[ie]!==e||r&&a[m]||(yield a);t&&(yield*a[N](e,t,r))}}[K](){return null===this[Te]?0===this[Fe].length||this[Fe][0][ae]===s.NamespaceIds.xhtml.id:this[Te]}[E](){return null===this[Te]?0===this[Fe].length?this[b].trim():this[Fe][0][ae]===s.NamespaceIds.xhtml.id?this[Fe][0][ye]().trim():null:this[b].trim()}[me](e){e=e.value||"";this[b]=e.toString()}[w](){const e=Object.create(null);this[b]&&(e.$content=this[b]);e.$name=this[ie];e.children=[];for(const t of this[Fe])e.children.push(t[w]());e.attributes=Object.create(null);for(const[t,r]of this[Ce])e.attributes[t]=r[b];return e}}t.XmlObject=XmlObject;class ContentObject extends XFAObject{constructor(e,t){super(e,t);this[b]=""}[ce](e){this[b]+=e}[x](){}}t.ContentObject=ContentObject;t.OptionObject=class OptionObject extends ContentObject{constructor(e,t,r){super(e,t);this[Ne]=r}[x](){this[b]=(0,a.getKeyword)({data:this[b],defaultValue:this[Ne][0],validate:e=>this[Ne].includes(e)})}[d](e){super[d](e);delete this[Ne]}};t.StringObject=class StringObject extends ContentObject{[x](){this[b]=this[b].trim()}};class IntegerObject extends ContentObject{constructor(e,t,r,a){super(e,t);this[Ie]=r;this[$e]=a}[x](){this[b]=(0,a.getInteger)({data:this[b],defaultValue:this[Ie],validate:this[$e]})}[d](e){super[d](e);delete this[Ie];delete this[$e]}}t.IntegerObject=IntegerObject;t.Option01=class Option01 extends IntegerObject{constructor(e,t){super(e,t,0,(e=>1===e))}};t.Option10=class Option10 extends IntegerObject{constructor(e,t){super(e,t,1,(e=>0===e))}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.getBBox=function getBBox(e){const t=-1;if(!e)return{x:t,y:t,width:t,height:t};const r=e.trim().split(/\s*,\s*/).map((e=>getMeasurement(e,"-1")));if(r.length<4||r[2]<0||r[3]<0)return{x:t,y:t,width:t,height:t};const[a,i,n,s]=r;return{x:a,y:i,width:n,height:s}};t.getColor=function getColor(e,t=[0,0,0]){let[r,a,i]=t;if(!e)return{r:r,g:a,b:i};const n=e.trim().split(/\s*,\s*/).map((e=>Math.min(Math.max(0,parseInt(e.trim(),10)),255))).map((e=>isNaN(e)?0:e));if(n.length<3)return{r:r,g:a,b:i};[r,a,i]=n;return{r:r,g:a,b:i}};t.getFloat=function getFloat({data:e,defaultValue:t,validate:r}){if(!e)return t;e=e.trim();const a=parseFloat(e);if(!isNaN(a)&&r(a))return a;return t};t.getInteger=function getInteger({data:e,defaultValue:t,validate:r}){if(!e)return t;e=e.trim();const a=parseInt(e,10);if(!isNaN(a)&&r(a))return a;return t};t.getKeyword=getKeyword;t.getMeasurement=getMeasurement;t.getRatio=function getRatio(e){if(!e)return{num:1,den:1};const t=e.trim().split(/\s*:\s*/).map((e=>parseFloat(e))).filter((e=>!isNaN(e)));1===t.length&&t.push(1);if(0===t.length)return{num:1,den:1};const[r,a]=t;return{num:r,den:a}};t.getRelevant=function getRelevant(e){if(!e)return[];return e.trim().split(/\s+/).map((e=>({excluded:"-"===e[0],viewname:e.substring(1)})))};t.getStringOption=function getStringOption(e,t){return getKeyword({data:e,defaultValue:t[0],validate:e=>t.includes(e)})};t.stripQuotes=function stripQuotes(e){if(e.startsWith("'")||e.startsWith('"'))return e.slice(1,e.length-1);return e};t.HTMLResult=void 0;var a=r(2);const i={pt:e=>e,cm:e=>e/2.54*72,mm:e=>e/25.4*72,in:e=>72*e,px:e=>e},n=/([+-]?[0-9]+\.?[0-9]*)(.*)/;function getKeyword({data:e,defaultValue:t,validate:r}){return e&&r(e=e.trim())?e:t}function getMeasurement(e,t="0"){t=t||"0";if(!e)return getMeasurement(t);const r=e.trim().match(n);if(!r)return getMeasurement(t);const[,a,s]=r,o=parseFloat(a);if(isNaN(o))return getMeasurement(t);if(0===o)return 0;const c=i[s];return c?c(o):o}class HTMLResult{static get FAILURE(){return(0,a.shadow)(this,"FAILURE",new HTMLResult(!1,null,null,null))}static get EMPTY(){return(0,a.shadow)(this,"EMPTY",new HTMLResult(!0,null,null,null))}constructor(e,t,r,a){this.success=e;this.html=t;this.bbox=r;this.breakNode=a}isBreak(){return!!this.breakNode}static breakNode(e){return new HTMLResult(!1,null,null,e)}static success(e,t=null){return new HTMLResult(!0,e,t,null)}}t.HTMLResult=HTMLResult},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.NamespaceIds=t.$buildXFAObject=void 0;const r=Symbol();t.$buildXFAObject=r;t.NamespaceIds={config:{id:0,check:e=>e.startsWith("http://www.xfa.org/schema/xci/")},connectionSet:{id:1,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-connection-set/")},datasets:{id:2,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-data/")},form:{id:3,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-form/")},localeSet:{id:4,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-locale-set/")},pdf:{id:5,check:e=>"http://ns.adobe.com/xdp/pdf/"===e},signature:{id:6,check:e=>"http://www.w3.org/2000/09/xmldsig#"===e},sourceSet:{id:7,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-source-set/")},stylesheet:{id:8,check:e=>"http://www.w3.org/1999/XSL/Transform"===e},template:{id:9,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-template/")},xdc:{id:10,check:e=>e.startsWith("http://www.xfa.org/schema/xdc/")},xdp:{id:11,check:e=>"http://ns.adobe.com/xdp/"===e},xfdf:{id:12,check:e=>"http://ns.adobe.com/xfdf/"===e},xhtml:{id:13,check:e=>"http://www.w3.org/1999/xhtml"===e},xmpmeta:{id:14,check:e=>"http://ns.adobe.com/xmpmeta/"===e}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.createDataNode=function createDataNode(e,t,r){const n=parseExpression(r);if(!n)return null;if(n.some((e=>e.operator===c)))return null;const s=d.get(n[0].name);let h=0;if(s){e=s(e,t);h=1}else e=t||e;for(let t=n.length;h0&&p.push(e)}if(0!==p.length||u||0!==g)e=isFinite(d)?p.filter((e=>de[d])):p.reduce(((e,t)=>e.concat(t)),[]);else{const r=t[a.$getParent]();if(!(t=r))return null;g=-1;e=[t]}}if(0===e.length)return null;return e};var a=r(75),i=r(2);const n=/^[^.[]+/,s=/^[^\]]+/,o=0,c=1,l=2,h=3,u=4,d=new Map([["$data",(e,t)=>e.datasets.data],["$template",(e,t)=>e.template],["$connectionSet",(e,t)=>e.connectionSet],["$form",(e,t)=>e.form],["$layout",(e,t)=>e.layout],["$host",(e,t)=>e.host],["$dataWindow",(e,t)=>e.dataWindow],["$event",(e,t)=>e.event],["!",(e,t)=>e.datasets],["$xfa",(e,t)=>e],["xfa",(e,t)=>e],["$",(e,t)=>t]]),f=new WeakMap;function parseExpression(e,t,r=!0){let a=e.match(n);if(!a)return null;let[d]=a;const f=[{name:d,cacheName:"."+d,index:0,js:null,formCalc:null,operator:o}];let g=d.length;for(;g{Object.defineProperty(t,"__esModule",{value:!0});t.Binder=void 0;var a=r(75),i=r(80),n=r(78),s=r(77),o=r(2);function createText(e){const t=new i.Text({});t[a.$content]=e;return t}t.Binder=class Binder{constructor(e){this.root=e;this.datasets=e.datasets;e.datasets&&e.datasets.data?this.data=e.datasets.data:this.data=new a.XmlObject(s.NamespaceIds.datasets.id,"data");this.emptyMerge=0===this.data[a.$getChildren]().length;this.root.form=this.form=e.template[a.$clone]()}_isConsumeData(){return!this.emptyMerge&&this._mergeMode}_isMatchTemplate(){return!this._isConsumeData()}bind(){this._bindElement(this.form,this.data);return this.form}getData(){return this.data}_bindValue(e,t,r){e[a.$data]=t;if(e[a.$hasSettableValue]())if(t[a.$isDataValue]()){const r=t[a.$getDataValue]();e[a.$setValue](createText(r))}else if(e instanceof i.Field&&e.ui&&e.ui.choiceList&&"multiSelect"===e.ui.choiceList.open){const r=t[a.$getChildren]().map((e=>e[a.$content].trim())).join("\n");e[a.$setValue](createText(r))}else this._isConsumeData()&&(0,o.warn)("XFA - Nodes haven't the same type.");else!t[a.$isDataValue]()||this._isMatchTemplate()?this._bindElement(e,t):(0,o.warn)("XFA - Nodes haven't the same type.")}_findDataByNameToConsume(e,t,r,i){if(!e)return null;let n,o;for(let i=0;i<3;i++){n=r[a.$getRealChildrenByNameIt](e,!1,!0);for(;;){o=n.next().value;if(!o)break;if(t===o[a.$isDataValue]())return o}if(r[a.$namespaceId]===s.NamespaceIds.datasets.id&&"data"===r[a.$nodeName])break;r=r[a.$getParent]()}if(!i)return null;n=this.data[a.$getRealChildrenByNameIt](e,!0,!1);o=n.next().value;if(o)return o;n=this.data[a.$getAttributeIt](e,!0);o=n.next().value;return o&&o[a.$isDataValue]()?o:null}_setProperties(e,t){if(e.hasOwnProperty("setProperty"))for(const{ref:r,target:s,connection:c}of e.setProperty.children){if(c)continue;if(!r)continue;const l=(0,n.searchNode)(this.root,t,r,!1,!1);if(!l){(0,o.warn)(`XFA - Invalid reference: ${r}.`);continue}const[h]=l;if(!h[a.$isDescendent](this.data)){(0,o.warn)("XFA - Invalid node: must be a data node.");continue}const u=(0,n.searchNode)(this.root,e,s,!1,!1);if(!u){(0,o.warn)(`XFA - Invalid target: ${s}.`);continue}const[d]=u;if(!d[a.$isDescendent](e)){(0,o.warn)("XFA - Invalid target: must be a property or subproperty.");continue}const f=d[a.$getParent]();if(d instanceof i.SetProperty||f instanceof i.SetProperty){(0,o.warn)("XFA - Invalid target: cannot be a setProperty or one of its properties.");continue}if(d instanceof i.BindItems||f instanceof i.BindItems){(0,o.warn)("XFA - Invalid target: cannot be a bindItems or one of its properties.");continue}const g=h[a.$text](),p=d[a.$nodeName];if(d instanceof a.XFAAttribute){const e=Object.create(null);e[p]=g;const t=Reflect.construct(Object.getPrototypeOf(f).constructor,[e]);f[p]=t[p]}else if(d.hasOwnProperty(a.$content)){d[a.$data]=h;d[a.$content]=g;d[a.$finalize]()}else(0,o.warn)("XFA - Invalid node to use in setProperty")}}_bindItems(e,t){if(!e.hasOwnProperty("items")||!e.hasOwnProperty("bindItems")||e.bindItems.isEmpty())return;for(const t of e.items.children)e[a.$removeChild](t);e.items.clear();const r=new i.Items({}),s=new i.Items({});e[a.$appendChild](r);e.items.push(r);e[a.$appendChild](s);e.items.push(s);for(const{ref:i,labelRef:c,valueRef:l,connection:h}of e.bindItems.children){if(h)continue;if(!i)continue;const e=(0,n.searchNode)(this.root,t,i,!1,!1);if(e)for(const t of e){if(!t[a.$isDescendent](this.datasets)){(0,o.warn)(`XFA - Invalid ref (${i}): must be a datasets child.`);continue}const e=(0,n.searchNode)(this.root,t,c,!0,!1);if(!e){(0,o.warn)(`XFA - Invalid label: ${c}.`);continue}const[h]=e;if(!h[a.$isDescendent](this.datasets)){(0,o.warn)("XFA - Invalid label: must be a datasets child.");continue}const u=(0,n.searchNode)(this.root,t,l,!0,!1);if(!u){(0,o.warn)(`XFA - Invalid value: ${l}.`);continue}const[d]=u;if(!d[a.$isDescendent](this.datasets)){(0,o.warn)("XFA - Invalid value: must be a datasets child.");continue}const f=createText(h[a.$text]()),g=createText(d[a.$text]());r[a.$appendChild](f);r.text.push(f);s[a.$appendChild](g);s.text.push(g)}else(0,o.warn)(`XFA - Invalid reference: ${i}.`)}}_bindOccurrences(e,t,r){let i;t.length>1&&(i=e[a.$clone]());this._bindValue(e,t[0],r);this._setProperties(e,t[0]);this._bindItems(e,t[0]);if(1===t.length)return;const n=e[a.$getParent](),s=e[a.$nodeName],o=n[a.$indexOf](e);for(let e=1,c=t.length;e0)this._bindOccurrences(i,[e[0]],null);else if(this.emptyMerge){const e=i[a.$data]=new a.XmlObject(t[a.$namespaceId],i.name||"root");t[a.$appendChild](e);this._bindElement(i,e)}continue}if(!i[a.$isBindable]())continue;let s=!1,c=null,l=null,h=null;if(i.bind){switch(i.bind.match){case"none":this._bindElement(i,t);continue;case"global":s=!0;break;case"dataRef":if(!i.bind.ref){(0,o.warn)(`XFA - ref is empty in node ${i[a.$nodeName]}.`);this._bindElement(i,t);continue}l=i.bind.ref}i.bind.picture&&(c=i.bind.picture[a.$content])}const[u,d]=this._getOccurInfo(i);if(l){h=(0,n.searchNode)(this.root,t,l,!0,!1);if(null===h){h=(0,n.createDataNode)(this.data,t,l);if(!h)continue;this._isConsumeData()&&(h[a.$consumed]=!0);this._bindElement(i,h);continue}this._isConsumeData()&&(h=h.filter((e=>!e[a.$consumed])));h.length>d?h=h.slice(0,d):0===h.length&&(h=null);h&&this._isConsumeData()&&h.forEach((e=>{e[a.$consumed]=!0}))}else{if(!i.name){this._bindElement(i,t);continue}if(this._isConsumeData()){const e=[];for(;e.length0?e:null}else{h=t[a.$getRealChildrenByNameIt](i.name,!1,this.emptyMerge).next().value;if(!h){h=i[a.$data]=new a.XmlObject(t[a.$namespaceId],i.name);this.emptyMerge&&(h[a.$consumed]=!0);t[a.$appendChild](h);this._setProperties(i,h);this._bindItems(i,h);this._bindElement(i,h);continue}this.emptyMerge&&(h[a.$consumed]=!0);h=[h]}}if(h){if(h.length0){this._setProperties(i,t);this._bindItems(i,t);this._bindElement(i,t)}else r.push(i)}r.forEach((e=>e[a.$getParent]()[a.$removeChild](e)))}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.Value=t.Text=t.TemplateNamespace=t.Template=t.SetProperty=t.Items=t.Field=t.BindItems=void 0;var a=r(75),i=r(77),n=r(81),s=r(82),o=r(76),c=r(2),l=r(78);const h=i.NamespaceIds.template.id,u="http://www.w3.org/2000/svg";function hasMargin(e){return e.margin&&(e.margin.topInset||e.margin.rightInset||e.margin.bottomInset||e.margin.leftInset)}function _setValue(e,t){if(!e.value){const t=new Value({});e[a.$appendChild](t);e.value=t}e.value[a.$setValue](t)}function*getContainedChildren(e){for(const t of e[a.$getChildren]())t instanceof SubformSet?yield*t[a.$getContainedChildren]():yield t}function valueToHtml(e){return o.HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:Object.create(null)},children:[{name:"span",attributes:{style:Object.create(null)},value:e}]})}function setFirstUnsplittable(e){const t=e[a.$getTemplateRoot]();if(null===t[a.$extra].firstUnsplittable){t[a.$extra].firstUnsplittable=e;t[a.$extra].noLayoutFailure=!0}}function unsetFirstUnsplittable(e){const t=e[a.$getTemplateRoot]();t[a.$extra].firstUnsplittable===e&&(t[a.$extra].noLayoutFailure=!1)}function handleBreak(e){if(e[a.$extra])return!1;e[a.$extra]=Object.create(null);if("auto"===e.targetType)return!1;const t=e[a.$getTemplateRoot]();let r=null;if(e.target){r=t[a.$searchNode](e.target,e[a.$getParent]());if(!r)return!1;r=r[0]}const{currentPageArea:i,currentContentArea:n}=t[a.$extra];if("pageArea"===e.targetType){r instanceof PageArea||(r=null);if(e.startNew){e[a.$extra].target=r||i;return!0}if(r&&r!==i){e[a.$extra].target=r;return!0}return!1}r instanceof ContentArea||(r=null);const s=r&&r[a.$getParent]();let o;if(e.startNew)if(r){o=s.contentArea.children.findIndex((e=>e===r))-1}else o=i.contentArea.children.findIndex((e=>e===n));else{if(!r||r===n)return!1;o=s.contentArea.children.findIndex((e=>e===r))-1}e[a.$extra].target=s===i?null:s;e[a.$extra].index=o;return!0}function handleOverflow(e,t,r){const i=e[a.$getTemplateRoot](),n=i[a.$extra].noLayoutFailure,s=t[a.$getSubformParent];t[a.$getSubformParent]=()=>e;i[a.$extra].noLayoutFailure=!0;const o=t[a.$toHTML](r);e[a.$addHTML](o.html,o.bbox);i[a.$extra].noLayoutFailure=n;t[a.$getSubformParent]=s}class AppearanceFilter extends a.StringObject{constructor(e){super(h,"appearanceFilter");this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Arc extends a.XFAObject{constructor(e){super(h,"arc",!0);this.circular=(0,o.getInteger)({data:e.circular,defaultValue:0,validate:e=>1===e});this.hand=(0,o.getStringOption)(e.hand,["even","left","right"]);this.id=e.id||"";this.startAngle=(0,o.getFloat)({data:e.startAngle,defaultValue:0,validate:e=>!0});this.sweepAngle=(0,o.getFloat)({data:e.sweepAngle,defaultValue:360,validate:e=>!0});this.use=e.use||"";this.usehref=e.usehref||"";this.edge=null;this.fill=null}[a.$toHTML](){const e=this.edge?this.edge:new Edge({}),t=e[a.$toStyle](),r=Object.create(null);this.fill&&"visible"===this.fill.presence?Object.assign(r,this.fill[a.$toStyle]()):r.fill="transparent";r.strokeWidth=(0,s.measureToString)("visible"===e.presence?e.thickness:0);r.stroke=t.color;let i;const n={xmlns:u,style:{width:"100%",height:"100%",overflow:"visible"}};if(0===this.startAngle&&360===this.sweepAngle)i={name:"ellipse",attributes:{xmlns:u,cx:"50%",cy:"50%",rx:"50%",ry:"50%",style:r}};else{const e=this.startAngle*Math.PI/180,t=this.sweepAngle*Math.PI/180,a=this.sweepAngle-this.startAngle>180?1:0,[s,o,c,l]=[50*(1+Math.cos(e)),50*(1-Math.sin(e)),50*(1+Math.cos(t)),50*(1-Math.sin(t))];i={name:"path",attributes:{xmlns:u,d:`M ${s} ${o} A 50 50 0 ${a} 0 ${c} ${l}`,vectorEffect:"non-scaling-stroke",style:r}};Object.assign(n,{viewBox:"0 0 100 100",preserveAspectRatio:"none"})}const c={name:"svg",children:[i],attributes:n};if(hasMargin(this[a.$getParent]()[a.$getParent]()))return o.HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[c]});c.attributes.style.position="absolute";return o.HTMLResult.success(c)}}class Area extends a.XFAObject{constructor(e){super(h,"area",!0);this.colSpan=(0,o.getInteger)({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.id=e.id||"";this.name=e.name||"";this.relevant=(0,o.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.x=(0,o.getMeasurement)(e.x,"0pt");this.y=(0,o.getMeasurement)(e.y,"0pt");this.desc=null;this.extras=null;this.area=new a.XFAObjectArray;this.draw=new a.XFAObjectArray;this.exObject=new a.XFAObjectArray;this.exclGroup=new a.XFAObjectArray;this.field=new a.XFAObjectArray;this.subform=new a.XFAObjectArray;this.subformSet=new a.XFAObjectArray}*[a.$getContainedChildren](){yield*getContainedChildren(this)}[a.$isTransparent](){return!0}[a.$addHTML](e,t){const[r,i,n,s]=t;this[a.$extra].width=Math.max(this[a.$extra].width,r+n);this[a.$extra].height=Math.max(this[a.$extra].height,i+s);this[a.$extra].children.push(e)}[a.$getAvailableSpace](){return this[a.$extra].availableSpace}[a.$toHTML](e){const t=(0,s.toStyle)(this,"position"),r={style:t,id:this[a.$uid],class:["xfaArea"]};(0,s.isPrintOnly)(this)&&r.class.push("xfaPrintOnly");this.name&&(r.xfaName=this.name);const i=[];this[a.$extra]={children:i,width:0,height:0,availableSpace:e};const n=this[a.$childrenToHTML]({filter:new Set(["area","draw","field","exclGroup","subform","subformSet"]),include:!0});if(!n.success){if(n.isBreak())return n;delete this[a.$extra];return o.HTMLResult.FAILURE}t.width=(0,s.measureToString)(this[a.$extra].width);t.height=(0,s.measureToString)(this[a.$extra].height);const c={name:"div",attributes:r,children:i},l=[this.x,this.y,this[a.$extra].width,this[a.$extra].height];delete this[a.$extra];return o.HTMLResult.success(c,l)}}class Assist extends a.XFAObject{constructor(e){super(h,"assist",!0);this.id=e.id||"";this.role=e.role||"";this.use=e.use||"";this.usehref=e.usehref||"";this.speak=null;this.toolTip=null}[a.$toHTML](){return this.toolTip&&this.toolTip[a.$content]?this.toolTip[a.$content]:null}}class Barcode extends a.XFAObject{constructor(e){super(h,"barcode",!0);this.charEncoding=(0,o.getKeyword)({data:e.charEncoding?e.charEncoding.toLowerCase():"",defaultValue:"",validate:e=>["utf-8","big-five","fontspecific","gbk","gb-18030","gb-2312","ksc-5601","none","shift-jis","ucs-2","utf-16"].includes(e)||e.match(/iso-8859-[0-9]{2}/)});this.checksum=(0,o.getStringOption)(e.checksum,["none","1mod10","1mod10_1mod11","2mod10","auto"]);this.dataColumnCount=(0,o.getInteger)({data:e.dataColumnCount,defaultValue:-1,validate:e=>e>=0});this.dataLength=(0,o.getInteger)({data:e.dataLength,defaultValue:-1,validate:e=>e>=0});this.dataPrep=(0,o.getStringOption)(e.dataPrep,["none","flateCompress"]);this.dataRowCount=(0,o.getInteger)({data:e.dataRowCount,defaultValue:-1,validate:e=>e>=0});this.endChar=e.endChar||"";this.errorCorrectionLevel=(0,o.getInteger)({data:e.errorCorrectionLevel,defaultValue:-1,validate:e=>e>=0&&e<=8});this.id=e.id||"";this.moduleHeight=(0,o.getMeasurement)(e.moduleHeight,"5mm");this.moduleWidth=(0,o.getMeasurement)(e.moduleWidth,"0.25mm");this.printCheckDigit=(0,o.getInteger)({data:e.printCheckDigit,defaultValue:0,validate:e=>1===e});this.rowColumnRatio=(0,o.getRatio)(e.rowColumnRatio);this.startChar=e.startChar||"";this.textLocation=(0,o.getStringOption)(e.textLocation,["below","above","aboveEmbedded","belowEmbedded","none"]);this.truncate=(0,o.getInteger)({data:e.truncate,defaultValue:0,validate:e=>1===e});this.type=(0,o.getStringOption)(e.type?e.type.toLowerCase():"",["aztec","codabar","code2of5industrial","code2of5interleaved","code2of5matrix","code2of5standard","code3of9","code3of9extended","code11","code49","code93","code128","code128a","code128b","code128c","code128sscc","datamatrix","ean8","ean8add2","ean8add5","ean13","ean13add2","ean13add5","ean13pwcd","fim","logmars","maxicode","msi","pdf417","pdf417macro","plessey","postauscust2","postauscust3","postausreplypaid","postausstandard","postukrm4scc","postusdpbc","postusimb","postusstandard","postus5zip","qrcode","rfid","rss14","rss14expanded","rss14limited","rss14stacked","rss14stackedomni","rss14truncated","telepen","ucc128","ucc128random","ucc128sscc","upca","upcaadd2","upcaadd5","upcapwcd","upce","upceadd2","upceadd5","upcean2","upcean5","upsmaxicode"]);this.upsMode=(0,o.getStringOption)(e.upsMode,["usCarrier","internationalCarrier","secureSymbol","standardSymbol"]);this.use=e.use||"";this.usehref=e.usehref||"";this.wideNarrowRatio=(0,o.getRatio)(e.wideNarrowRatio);this.encrypt=null;this.extras=null}}class Bind extends a.XFAObject{constructor(e){super(h,"bind",!0);this.match=(0,o.getStringOption)(e.match,["once","dataRef","global","none"]);this.ref=e.ref||"";this.picture=null}}class BindItems extends a.XFAObject{constructor(e){super(h,"bindItems");this.connection=e.connection||"";this.labelRef=e.labelRef||"";this.ref=e.ref||"";this.valueRef=e.valueRef||""}}t.BindItems=BindItems;class Bookend extends a.XFAObject{constructor(e){super(h,"bookend");this.id=e.id||"";this.leader=e.leader||"";this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||""}}class BooleanElement extends a.Option01{constructor(e){super(h,"boolean");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[a.$toHTML](e){return valueToHtml(1===this[a.$content]?"1":"0")}}class Border extends a.XFAObject{constructor(e){super(h,"border",!0);this.break=(0,o.getStringOption)(e.break,["close","open"]);this.hand=(0,o.getStringOption)(e.hand,["even","left","right"]);this.id=e.id||"";this.presence=(0,o.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=(0,o.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.corner=new a.XFAObjectArray(4);this.edge=new a.XFAObjectArray(4);this.extras=null;this.fill=null;this.margin=null}[a.$toStyle](){const e=this.edge.children.slice();if(e.length<4){const t=e[e.length-1]||new Edge({});for(let r=e.length;r<4;r++)e.push(t)}const t=e.map((e=>{const t=e[a.$toStyle]();t.color=t.color||"#000000";return t})),r=e.map((e=>e.thickness)),i=[0,0,0,0];if(this.margin){i[0]=this.margin.topInset;i[1]=this.margin.rightInset;i[2]=this.margin.bottomInset;i[3]=this.margin.leftInset}this[a.$extra]={widths:r,insets:i};const n=Object.create(null);this.margin&&Object.assign(n,this.margin[a.$toStyle]());this.fill&&"visible"===this.fill.presence&&Object.assign(n,this.fill[a.$toStyle]());if(this.corner.children.some((e=>0!==e.radius))){const e=this.corner.children.map((e=>e[a.$toStyle]()));if(2===e.length||3===e.length){const t=e[e.length-1];for(let r=e.length;r<4;r++)e.push(t)}n.borderRadius=e.map((e=>e.radius)).join(" ")}switch(this.presence){case"invisible":case"hidden":n.borderStyle="";break;case"inactive":n.borderStyle="none";break;default:n.borderStyle=t.map((e=>e.style)).join(" ")}n.borderWidth=t.map((e=>e.width)).join(" ");n.borderColor=t.map((e=>e.color)).join(" ");return n}}class Break extends a.XFAObject{constructor(e){super(h,"break",!0);this.after=(0,o.getStringOption)(e.after,["auto","contentArea","pageArea","pageEven","pageOdd"]);this.afterTarget=e.afterTarget||"";this.before=(0,o.getStringOption)(e.before,["auto","contentArea","pageArea","pageEven","pageOdd"]);this.beforeTarget=e.beforeTarget||"";this.bookendLeader=e.bookendLeader||"";this.bookendTrailer=e.bookendTrailer||"";this.id=e.id||"";this.overflowLeader=e.overflowLeader||"";this.overflowTarget=e.overflowTarget||"";this.overflowTrailer=e.overflowTrailer||"";this.startNew=(0,o.getInteger)({data:e.startNew,defaultValue:0,validate:e=>1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class BreakAfter extends a.XFAObject{constructor(e){super(h,"breakAfter",!0);this.id=e.id||"";this.leader=e.leader||"";this.startNew=(0,o.getInteger)({data:e.startNew,defaultValue:0,validate:e=>1===e});this.target=e.target||"";this.targetType=(0,o.getStringOption)(e.targetType,["auto","contentArea","pageArea"]);this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||"";this.script=null}}class BreakBefore extends a.XFAObject{constructor(e){super(h,"breakBefore",!0);this.id=e.id||"";this.leader=e.leader||"";this.startNew=(0,o.getInteger)({data:e.startNew,defaultValue:0,validate:e=>1===e});this.target=e.target||"";this.targetType=(0,o.getStringOption)(e.targetType,["auto","contentArea","pageArea"]);this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||"";this.script=null}[a.$toHTML](e){this[a.$extra]={};return o.HTMLResult.FAILURE}}class Button extends a.XFAObject{constructor(e){super(h,"button",!0);this.highlight=(0,o.getStringOption)(e.highlight,["inverted","none","outline","push"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[a.$toHTML](e){return o.HTMLResult.success({name:"button",attributes:{id:this[a.$uid],class:["xfaButton"],style:{}},children:[]})}}class Calculate extends a.XFAObject{constructor(e){super(h,"calculate",!0);this.id=e.id||"";this.override=(0,o.getStringOption)(e.override,["disabled","error","ignore","warning"]);this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.message=null;this.script=null}}class Caption extends a.XFAObject{constructor(e){super(h,"caption",!0);this.id=e.id||"";this.placement=(0,o.getStringOption)(e.placement,["left","bottom","inline","right","top"]);this.presence=(0,o.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.reserve=Math.ceil((0,o.getMeasurement)(e.reserve));this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.font=null;this.margin=null;this.para=null;this.value=null}[a.$setValue](e){_setValue(this,e)}[a.$getExtra](e){if(!this[a.$extra]){let{width:t,height:r}=e;switch(this.placement){case"left":case"right":case"inline":t=this.reserve<=0?t:this.reserve;break;case"top":case"bottom":r=this.reserve<=0?r:this.reserve}this[a.$extra]=(0,s.layoutNode)(this,{width:t,height:r})}return this[a.$extra]}[a.$toHTML](e){if(!this.value)return o.HTMLResult.EMPTY;const t=this.value[a.$toHTML](e).html;if(!t)return o.HTMLResult.EMPTY;const r=this.reserve;if(this.reserve<=0){const{w:t,h:r}=this[a.$getExtra](e);switch(this.placement){case"left":case"right":case"inline":this.reserve=t;break;case"top":case"bottom":this.reserve=r}}const i=[];"string"==typeof t?i.push({name:"#text",value:t}):i.push(t);const n=(0,s.toStyle)(this,"font","margin","visibility");switch(this.placement){case"left":case"right":this.reserve>0&&(n.width=(0,s.measureToString)(this.reserve));break;case"top":case"bottom":this.reserve>0&&(n.height=(0,s.measureToString)(this.reserve))}(0,s.setPara)(this,null,t);this.reserve=r;return o.HTMLResult.success({name:"div",attributes:{style:n,class:["xfaCaption"]},children:i})}}class Certificate extends a.StringObject{constructor(e){super(h,"certificate");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Certificates extends a.XFAObject{constructor(e){super(h,"certificates",!0);this.credentialServerPolicy=(0,o.getStringOption)(e.credentialServerPolicy,["optional","required"]);this.id=e.id||"";this.url=e.url||"";this.urlPolicy=e.urlPolicy||"";this.use=e.use||"";this.usehref=e.usehref||"";this.encryption=null;this.issuers=null;this.keyUsage=null;this.oids=null;this.signing=null;this.subjectDNs=null}}class CheckButton extends a.XFAObject{constructor(e){super(h,"checkButton",!0);this.id=e.id||"";this.mark=(0,o.getStringOption)(e.mark,["default","check","circle","cross","diamond","square","star"]);this.shape=(0,o.getStringOption)(e.shape,["square","round"]);this.size=(0,o.getMeasurement)(e.size,"10pt");this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}[a.$toHTML](e){const t=(0,s.toStyle)("margin"),r=(0,s.measureToString)(this.size);t.width=t.height=r;let i,n,c;const l=this[a.$getParent]()[a.$getParent](),h=l.items.children.length&&l.items.children[0][a.$toHTML]().html||[],u={on:(h[0]||"on").toString(),off:(h[1]||"off").toString()},d=(l.value&&l.value[a.$text]()||"off")===u.on||void 0,f=l[a.$getSubformParent](),g=l[a.$uid];let p;if(f instanceof ExclGroup){c=f[a.$uid];i="radio";n="xfaRadio";p=f[a.$data]&&f[a.$data][a.$uid]||f[a.$uid]}else{i="checkbox";n="xfaCheckbox";p=l[a.$data]&&l[a.$data][a.$uid]||l[a.$uid]}const m={name:"input",attributes:{class:[n],style:t,fieldId:g,dataId:p,type:i,checked:d,xfaOn:u.on}};c&&(m.attributes.name=c);return o.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[m]})}}class ChoiceList extends a.XFAObject{constructor(e){super(h,"choiceList",!0);this.commitOn=(0,o.getStringOption)(e.commitOn,["select","exit"]);this.id=e.id||"";this.open=(0,o.getStringOption)(e.open,["userControl","always","multiSelect","onEntry"]);this.textEntry=(0,o.getInteger)({data:e.textEntry,defaultValue:0,validate:e=>1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}[a.$toHTML](e){const t=(0,s.toStyle)(this,"border","margin"),r=this[a.$getParent]()[a.$getParent](),i=[];if(r.items.children.length>0){const e=r.items;let t=0,n=0;if(2===e.children.length){t=e.children[0].save;n=1-t}const s=e.children[t][a.$toHTML]().html,o=e.children[n][a.$toHTML]().html;let c=!1;const l=r.value&&r.value[a.$text]()||"";for(let e=0,t=s.length;ee>=0});this.use=e.use||"";this.usehref=e.usehref||""}}class Connect extends a.XFAObject{constructor(e){super(h,"connect",!0);this.connection=e.connection||"";this.id=e.id||"";this.ref=e.ref||"";this.usage=(0,o.getStringOption)(e.usage,["exportAndImport","exportOnly","importOnly"]);this.use=e.use||"";this.usehref=e.usehref||"";this.picture=null}}class ContentArea extends a.XFAObject{constructor(e){super(h,"contentArea",!0);this.h=(0,o.getMeasurement)(e.h);this.id=e.id||"";this.name=e.name||"";this.relevant=(0,o.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.w=(0,o.getMeasurement)(e.w);this.x=(0,o.getMeasurement)(e.x,"0pt");this.y=(0,o.getMeasurement)(e.y,"0pt");this.desc=null;this.extras=null}[a.$toHTML](e){const t={left:(0,s.measureToString)(this.x),top:(0,s.measureToString)(this.y),width:(0,s.measureToString)(this.w),height:(0,s.measureToString)(this.h)},r=["xfaContentarea"];(0,s.isPrintOnly)(this)&&r.push("xfaPrintOnly");return o.HTMLResult.success({name:"div",children:[],attributes:{style:t,class:r,id:this[a.$uid]}})}}class Corner extends a.XFAObject{constructor(e){super(h,"corner",!0);this.id=e.id||"";this.inverted=(0,o.getInteger)({data:e.inverted,defaultValue:0,validate:e=>1===e});this.join=(0,o.getStringOption)(e.join,["square","round"]);this.presence=(0,o.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.radius=(0,o.getMeasurement)(e.radius);this.stroke=(0,o.getStringOption)(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]);this.thickness=(0,o.getMeasurement)(e.thickness,"0.5pt");this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[a.$toStyle](){const e=(0,s.toStyle)(this,"visibility");e.radius=(0,s.measureToString)("square"===this.join?0:this.radius);return e}}class DateElement extends a.ContentObject{constructor(e){super(h,"date");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[a.$finalize](){const e=this[a.$content].trim();this[a.$content]=e?new Date(e):null}[a.$toHTML](e){return valueToHtml(this[a.$content]?this[a.$content].toString():"")}}class DateTime extends a.ContentObject{constructor(e){super(h,"dateTime");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[a.$finalize](){const e=this[a.$content].trim();this[a.$content]=e?new Date(e):null}[a.$toHTML](e){return valueToHtml(this[a.$content]?this[a.$content].toString():"")}}class DateTimeEdit extends a.XFAObject{constructor(e){super(h,"dateTimeEdit",!0);this.hScrollPolicy=(0,o.getStringOption)(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.picker=(0,o.getStringOption)(e.picker,["host","none"]);this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.comb=null;this.extras=null;this.margin=null}[a.$toHTML](e){const t=(0,s.toStyle)(this,"border","font","margin"),r=this[a.$getParent]()[a.$getParent](),i={name:"input",attributes:{type:"text",fieldId:r[a.$uid],dataId:r[a.$data]&&r[a.$data][a.$uid]||r[a.$uid],class:["xfaTextfield"],style:t}};return o.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[i]})}}class Decimal extends a.ContentObject{constructor(e){super(h,"decimal");this.fracDigits=(0,o.getInteger)({data:e.fracDigits,defaultValue:2,validate:e=>!0});this.id=e.id||"";this.leadDigits=(0,o.getInteger)({data:e.leadDigits,defaultValue:-1,validate:e=>!0});this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[a.$finalize](){const e=parseFloat(this[a.$content].trim());this[a.$content]=isNaN(e)?null:e}[a.$toHTML](e){return valueToHtml(null!==this[a.$content]?this[a.$content].toString():"")}}class DefaultUi extends a.XFAObject{constructor(e){super(h,"defaultUi",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class Desc extends a.XFAObject{constructor(e){super(h,"desc",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.boolean=new a.XFAObjectArray;this.date=new a.XFAObjectArray;this.dateTime=new a.XFAObjectArray;this.decimal=new a.XFAObjectArray;this.exData=new a.XFAObjectArray;this.float=new a.XFAObjectArray;this.image=new a.XFAObjectArray;this.integer=new a.XFAObjectArray;this.text=new a.XFAObjectArray;this.time=new a.XFAObjectArray}}class DigestMethod extends a.OptionObject{constructor(e){super(h,"digestMethod",["","SHA1","SHA256","SHA512","RIPEMD160"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class DigestMethods extends a.XFAObject{constructor(e){super(h,"digestMethods",!0);this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.digestMethod=new a.XFAObjectArray}}class Draw extends a.XFAObject{constructor(e){super(h,"draw",!0);this.anchorType=(0,o.getStringOption)(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]);this.colSpan=(0,o.getInteger)({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.h=e.h?(0,o.getMeasurement)(e.h):"";this.hAlign=(0,o.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.locale=e.locale||"";this.maxH=(0,o.getMeasurement)(e.maxH,"0pt");this.maxW=(0,o.getMeasurement)(e.maxW,"0pt");this.minH=(0,o.getMeasurement)(e.minH,"0pt");this.minW=(0,o.getMeasurement)(e.minW,"0pt");this.name=e.name||"";this.presence=(0,o.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=(0,o.getRelevant)(e.relevant);this.rotate=(0,o.getInteger)({data:e.rotate,defaultValue:0,validate:e=>e%90==0});this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?(0,o.getMeasurement)(e.w):"";this.x=(0,o.getMeasurement)(e.x,"0pt");this.y=(0,o.getMeasurement)(e.y,"0pt");this.assist=null;this.border=null;this.caption=null;this.desc=null;this.extras=null;this.font=null;this.keep=null;this.margin=null;this.para=null;this.traversal=null;this.ui=null;this.value=null;this.setProperty=new a.XFAObjectArray}[a.$setValue](e){_setValue(this,e)}[a.$toHTML](e){if("hidden"===this.presence||"inactive"===this.presence)return o.HTMLResult.EMPTY;(0,s.fixDimensions)(this);const t=this.w,r=this.h,{w:i,h:c,isBroken:l}=(0,s.layoutNode)(this,e);if(i&&""===this.w){if(l&&this[a.$getSubformParent]()[a.$isThereMoreWidth]())return o.HTMLResult.FAILURE;this.w=i}c&&""===this.h&&(this.h=c);setFirstUnsplittable(this);if(!(0,n.checkDimensions)(this,e)){this.w=t;this.h=r;return o.HTMLResult.FAILURE}unsetFirstUnsplittable(this);const h=(0,s.toStyle)(this,"font","hAlign","dimensions","position","presence","rotate","anchorType","border","margin");(0,s.setMinMaxDimensions)(this,h);if(h.margin){h.padding=h.margin;delete h.margin}const u=["xfaDraw"];this.font&&u.push("xfaFont");(0,s.isPrintOnly)(this)&&u.push("xfaPrintOnly");const d={style:h,id:this[a.$uid],class:u};this.name&&(d.xfaName=this.name);const f={name:"div",attributes:d,children:[]},g=this.assist?this.assist[a.$toHTML]():null;g&&(f.attributes.title=g);const p=(0,s.computeBbox)(this,f,e),m=this.value?this.value[a.$toHTML](e).html:null;if(null===m){this.w=t;this.h=r;return o.HTMLResult.success((0,s.createWrapper)(this,f),p)}f.children.push(m);(0,s.setPara)(this,h,m);this.w=t;this.h=r;return o.HTMLResult.success((0,s.createWrapper)(this,f),p)}}class Edge extends a.XFAObject{constructor(e){super(h,"edge",!0);this.cap=(0,o.getStringOption)(e.cap,["square","butt","round"]);this.id=e.id||"";this.presence=(0,o.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.stroke=(0,o.getStringOption)(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]);this.thickness=(0,o.getMeasurement)(e.thickness,"0.5pt");this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[a.$toStyle](){const e=(0,s.toStyle)(this,"visibility");Object.assign(e,{linecap:this.cap,width:(0,s.measureToString)(this.thickness),color:this.color?this.color[a.$toStyle]():"#000000",style:""});if("visible"!==this.presence)e.style="none";else switch(this.stroke){case"solid":e.style="solid";break;case"dashDot":case"dashDotDot":case"dashed":e.style="dashed";break;case"dotted":e.style="dotted";break;case"embossed":e.style="ridge";break;case"etched":e.style="groove";break;case"lowered":e.style="inset";break;case"raised":e.style="outset"}return e}}class Encoding extends a.OptionObject{constructor(e){super(h,"encoding",["adbe.x509.rsa_sha1","adbe.pkcs7.detached","adbe.pkcs7.sha1"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Encodings extends a.XFAObject{constructor(e){super(h,"encodings",!0);this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.encoding=new a.XFAObjectArray}}class Encrypt extends a.XFAObject{constructor(e){super(h,"encrypt",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=null}}class EncryptData extends a.XFAObject{constructor(e){super(h,"encryptData",!0);this.id=e.id||"";this.operation=(0,o.getStringOption)(e.operation,["encrypt","decrypt"]);this.target=e.target||"";this.use=e.use||"";this.usehref=e.usehref||"";this.filter=null;this.manifest=null}}class Encryption extends a.XFAObject{constructor(e){super(h,"encryption",!0);this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=new a.XFAObjectArray}}class EncryptionMethod extends a.OptionObject{constructor(e){super(h,"encryptionMethod",["","AES256-CBC","TRIPLEDES-CBC","AES128-CBC","AES192-CBC"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class EncryptionMethods extends a.XFAObject{constructor(e){super(h,"encryptionMethods",!0);this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.encryptionMethod=new a.XFAObjectArray}}class Event extends a.XFAObject{constructor(e){super(h,"event",!0);this.activity=(0,o.getStringOption)(e.activity,["click","change","docClose","docReady","enter","exit","full","indexChange","initialize","mouseDown","mouseEnter","mouseExit","mouseUp","postExecute","postOpen","postPrint","postSave","postSign","postSubmit","preExecute","preOpen","prePrint","preSave","preSign","preSubmit","ready","validationState"]);this.id=e.id||"";this.listen=(0,o.getStringOption)(e.listen,["refOnly","refAndDescendents"]);this.name=e.name||"";this.ref=e.ref||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.encryptData=null;this.execute=null;this.script=null;this.signData=null;this.submit=null}}class ExData extends a.ContentObject{constructor(e){super(h,"exData");this.contentType=e.contentType||"";this.href=e.href||"";this.id=e.id||"";this.maxLength=(0,o.getInteger)({data:e.maxLength,defaultValue:-1,validate:e=>e>=-1});this.name=e.name||"";this.rid=e.rid||"";this.transferEncoding=(0,o.getStringOption)(e.transferEncoding,["none","base64","package"]);this.use=e.use||"";this.usehref=e.usehref||""}[a.$isCDATAXml](){return"text/html"===this.contentType}[a.$onChild](e){if("text/html"===this.contentType&&e[a.$namespaceId]===i.NamespaceIds.xhtml.id){this[a.$content]=e;return!0}if("text/xml"===this.contentType){this[a.$content]=e;return!0}return!1}[a.$toHTML](e){return"text/html"===this.contentType&&this[a.$content]?this[a.$content][a.$toHTML](e):o.HTMLResult.EMPTY}}class ExObject extends a.XFAObject{constructor(e){super(h,"exObject",!0);this.archive=e.archive||"";this.classId=e.classId||"";this.codeBase=e.codeBase||"";this.codeType=e.codeType||"";this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.boolean=new a.XFAObjectArray;this.date=new a.XFAObjectArray;this.dateTime=new a.XFAObjectArray;this.decimal=new a.XFAObjectArray;this.exData=new a.XFAObjectArray;this.exObject=new a.XFAObjectArray;this.float=new a.XFAObjectArray;this.image=new a.XFAObjectArray;this.integer=new a.XFAObjectArray;this.text=new a.XFAObjectArray;this.time=new a.XFAObjectArray}}class ExclGroup extends a.XFAObject{constructor(e){super(h,"exclGroup",!0);this.access=(0,o.getStringOption)(e.access,["open","nonInteractive","protected","readOnly"]);this.accessKey=e.accessKey||"";this.anchorType=(0,o.getStringOption)(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]);this.colSpan=(0,o.getInteger)({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.h=e.h?(0,o.getMeasurement)(e.h):"";this.hAlign=(0,o.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.layout=(0,o.getStringOption)(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]);this.maxH=(0,o.getMeasurement)(e.maxH,"0pt");this.maxW=(0,o.getMeasurement)(e.maxW,"0pt");this.minH=(0,o.getMeasurement)(e.minH,"0pt");this.minW=(0,o.getMeasurement)(e.minW,"0pt");this.name=e.name||"";this.presence=(0,o.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=(0,o.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?(0,o.getMeasurement)(e.w):"";this.x=(0,o.getMeasurement)(e.x,"0pt");this.y=(0,o.getMeasurement)(e.y,"0pt");this.assist=null;this.bind=null;this.border=null;this.calculate=null;this.caption=null;this.desc=null;this.extras=null;this.margin=null;this.para=null;this.traversal=null;this.validate=null;this.connect=new a.XFAObjectArray;this.event=new a.XFAObjectArray;this.field=new a.XFAObjectArray;this.setProperty=new a.XFAObjectArray}[a.$isBindable](){return!0}[a.$hasSettableValue](){return!0}[a.$setValue](e){for(const t of this.field.children){if(!t.value){const e=new Value({});t[a.$appendChild](e);t.value=e}t.value[a.$setValue](e)}}[a.$isThereMoreWidth](){return this.layout.endsWith("-tb")&&0===this[a.$extra].attempt&&this[a.$extra].numberInLine>0||this[a.$getParent]()[a.$isThereMoreWidth]()}[a.$isSplittable](){const e=this[a.$getSubformParent]();if(!e[a.$isSplittable]())return!1;if(void 0!==this[a.$extra]._isSplittable)return this[a.$extra]._isSplittable;if("position"===this.layout||this.layout.includes("row")){this[a.$extra]._isSplittable=!1;return!1}if(e.layout&&e.layout.endsWith("-tb")&&0!==e[a.$extra].numberInLine)return!1;this[a.$extra]._isSplittable=!0;return!0}[a.$flushHTML](){return(0,n.flushHTML)(this)}[a.$addHTML](e,t){(0,n.addHTML)(this,e,t)}[a.$getAvailableSpace](){return(0,n.getAvailableSpace)(this)}[a.$toHTML](e){if("hidden"===this.presence||"inactive"===this.presence||0===this.h||0===this.w)return o.HTMLResult.EMPTY;(0,s.fixDimensions)(this);const t=[],r={id:this[a.$uid],class:[]};(0,s.setAccess)(this,r.class);this[a.$extra]||(this[a.$extra]=Object.create(null));Object.assign(this[a.$extra],{children:t,attributes:r,attempt:0,line:null,numberInLine:0,availableSpace:{width:Math.min(this.w||1/0,e.width),height:Math.min(this.h||1/0,e.height)},width:0,height:0,prevHeight:0,currentWidth:0});const i=this[a.$isSplittable]();i||setFirstUnsplittable(this);if(!(0,n.checkDimensions)(this,e))return o.HTMLResult.FAILURE;e={width:""===this.w?e.width:this.w,height:""===this.h?e.height:this.h};const c=new Set(["field"]);if(this.layout.includes("row")){const e=this[a.$getSubformParent]().columnWidths;if(Array.isArray(e)&&e.length>0){this[a.$extra].columnWidths=e;this[a.$extra].currentColumn=0}}const l=(0,s.toStyle)(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),h=["xfaExclgroup"],u=(0,s.layoutClass)(this);u&&h.push(u);(0,s.isPrintOnly)(this)&&h.push("xfaPrintOnly");r.style=l;r.class=h;this.name&&(r.xfaName=this.name);const d="lr-tb"===this.layout||"rl-tb"===this.layout,f=d?2:1;for(;this[a.$extra].attempte>=1||-1===e});this.h=e.h?(0,o.getMeasurement)(e.h):"";this.hAlign=(0,o.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.locale=e.locale||"";this.maxH=(0,o.getMeasurement)(e.maxH,"0pt");this.maxW=(0,o.getMeasurement)(e.maxW,"0pt");this.minH=(0,o.getMeasurement)(e.minH,"0pt");this.minW=(0,o.getMeasurement)(e.minW,"0pt");this.name=e.name||"";this.presence=(0,o.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=(0,o.getRelevant)(e.relevant);this.rotate=(0,o.getInteger)({data:e.rotate,defaultValue:0,validate:e=>e%90==0});this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?(0,o.getMeasurement)(e.w):"";this.x=(0,o.getMeasurement)(e.x,"0pt");this.y=(0,o.getMeasurement)(e.y,"0pt");this.assist=null;this.bind=null;this.border=null;this.calculate=null;this.caption=null;this.desc=null;this.extras=null;this.font=null;this.format=null;this.items=new a.XFAObjectArray(2);this.keep=null;this.margin=null;this.para=null;this.traversal=null;this.ui=null;this.validate=null;this.value=null;this.bindItems=new a.XFAObjectArray;this.connect=new a.XFAObjectArray;this.event=new a.XFAObjectArray;this.setProperty=new a.XFAObjectArray}[a.$isBindable](){return!0}[a.$setValue](e){_setValue(this,e)}[a.$toHTML](e){if(!this.ui){this.ui=new Ui({});this.ui[a.$globalData]=this[a.$globalData];this[a.$appendChild](this.ui);let e;switch(this.items.children.length){case 0:e=new TextEdit({});this.ui.textEdit=e;break;case 1:e=new CheckButton({});this.ui.checkButton=e;break;case 2:e=new ChoiceList({});this.ui.choiceList=e}this.ui[a.$appendChild](e)}!function setTabIndex(e){for(;e;){if(!e.traversal||e[a.$tabIndex])return;let t=null;for(const r of e.traversal[a.$getChildren]())if("next"===r.operation){t=r;break}if(!t||!t.ref)return;const r=e[a.$getTemplateRoot]();e[a.$tabIndex]=++r[a.$tabIndex];const i=r[a.$searchNode](t.ref,e);if(!i)return;e=i[0]}}(this);if(!this.ui||"hidden"===this.presence||"inactive"===this.presence||0===this.h||0===this.w)return o.HTMLResult.EMPTY;this.caption&&delete this.caption[a.$extra];const t=this.caption?this.caption[a.$toHTML](e).html:null,r=this.w,i=this.h;if(""===this.w||""===this.h){let t=0,r=0;if(this.margin){t=this.margin.leftInset+this.margin.rightInset;r=this.margin.topInset+this.margin.bottomInset}let i=null,n=null;if(this.caption){const{w:t,h:r,isBroken:s}=this.caption[a.$getExtra](e);if(s&&this[a.$getSubformParent]()[a.$isThereMoreWidth]())return o.HTMLResult.FAILURE;i=t;n=r;if(this.ui.checkButton)switch(this.caption.placement){case"left":case"right":case"inline":i+=this.ui.checkButton.size;break;case"top":case"bottom":n+=this.ui.checkButton.size}}i&&""===this.w&&(this.w=Math.min(this.maxW<=0?1/0:this.maxW,Math.max(this.minW,i+t)));n&&""===this.h&&(this.h=Math.min(this.maxH<=0?1/0:this.maxH,Math.max(this.minH,n+r)))}(0,s.fixDimensions)(this);setFirstUnsplittable(this);if(!(0,n.checkDimensions)(this,e)){this.w=r;this.h=i;return o.HTMLResult.FAILURE}unsetFirstUnsplittable(this);const c=(0,s.toStyle)(this,"font","dimensions","position","rotate","anchorType","presence","margin","hAlign");(0,s.setMinMaxDimensions)(this,c);const l=["xfaField"];this.font&&l.push("xfaFont");(0,s.isPrintOnly)(this)&&l.push("xfaPrintOnly");const h={style:c,id:this[a.$uid],class:l};if(c.margin){c.padding=c.margin;delete c.margin}(0,s.setAccess)(this,l);this.name&&(h.xfaName=this.name);const u=[],d={name:"div",attributes:h,children:u},f=this.assist?this.assist[a.$toHTML]():null;f&&(d.attributes.title=f);const g=this.border?this.border[a.$toStyle]():null,p=(0,s.computeBbox)(this,d,e),m=this.ui[a.$toHTML]().html;if(!m){Object.assign(c,g);return o.HTMLResult.success((0,s.createWrapper)(this,d),p)}this[a.$tabIndex]&&(m.children&&m.children[0]?m.children[0].attributes.tabindex=this[a.$tabIndex]:m.attributes.tabindex=this[a.$tabIndex]);m.attributes.style||(m.attributes.style=Object.create(null));this.ui.button?Object.assign(m.attributes.style,g):Object.assign(c,g);u.push(m);if(this.value)if(this.ui.imageEdit)m.children.push(this.value[a.$toHTML]().html);else if(!this.ui.button){let e="";if(this.value.exData)e=this.value.exData[a.$text]();else{const t=this.value[a.$toHTML]().html;null!==t&&(e=t.children[0].value)}this.ui.textEdit&&this.value.text&&this.value.text.maxChars&&(m.children[0].attributes.maxLength=this.value.text.maxChars);e&&("textarea"===m.children[0].name?m.children[0].attributes.textContent=e:m.children[0].attributes.value=e)}if(!t){m.attributes.class&&m.attributes.class.push("xfaLeft");this.w=r;this.h=i;return o.HTMLResult.success((0,s.createWrapper)(this,d),p)}if(this.ui.button){c.padding&&delete c.padding;"div"===t.name&&(t.name="span");m.children.push(t);return o.HTMLResult.success(d,p)}this.ui.checkButton&&(t.attributes.class[0]="xfaCaptionForCheckButton");m.attributes.class||(m.attributes.class=[]);switch(this.caption.placement){case"left":m.children.splice(0,0,t);m.attributes.class.push("xfaLeft");break;case"right":m.children.push(t);m.attributes.class.push("xfaLeft");break;case"top":m.children.splice(0,0,t);m.attributes.class.push("xfaTop");break;case"bottom":m.children.push(t);m.attributes.class.push("xfaTop");break;case"inline":m.attributes.class.push("xfaLeft")}this.w=r;this.h=i;return o.HTMLResult.success((0,s.createWrapper)(this,d),p)}}t.Field=Field;class Fill extends a.XFAObject{constructor(e){super(h,"fill",!0);this.id=e.id||"";this.presence=(0,o.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null;this.linear=null;this.pattern=null;this.radial=null;this.solid=null;this.stipple=null}[a.$toStyle](){const e=this[a.$getParent](),t=Object.create(null);let r="color";e instanceof Border&&(r="background");if(e instanceof Rectangle||e instanceof Arc){r="fill";t.fill="white"}for(const e of Object.getOwnPropertyNames(this)){if("extras"===e||"color"===e)continue;const i=this[e];if(i instanceof a.XFAObject){t[r]=i[a.$toStyle](this.color);return t}}this.color&&(t[r]=this.color[a.$toStyle]());return t}}class Filter extends a.XFAObject{constructor(e){super(h,"filter",!0);this.addRevocationInfo=(0,o.getStringOption)(e.addRevocationInfo,["","required","optional","none"]);this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||"";this.version=(0,o.getInteger)({data:this.version,defaultValue:5,validate:e=>e>=1&&e<=5});this.appearanceFilter=null;this.certificates=null;this.digestMethods=null;this.encodings=null;this.encryptionMethods=null;this.handler=null;this.lockDocument=null;this.mdp=null;this.reasons=null;this.timeStamp=null}}class Float extends a.ContentObject{constructor(e){super(h,"float");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[a.$finalize](){const e=parseFloat(this[a.$content].trim());this[a.$content]=isNaN(e)?null:e}[a.$toHTML](e){return valueToHtml(null!==this[a.$content]?this[a.$content].toString():"")}}class Font extends a.XFAObject{constructor(e){super(h,"font",!0);this.baselineShift=(0,o.getMeasurement)(e.baselineShift);this.fontHorizontalScale=(0,o.getFloat)({data:e.fontHorizontalScale,defaultValue:100,validate:e=>e>=0});this.fontVerticalScale=(0,o.getFloat)({data:e.fontVerticalScale,defaultValue:100,validate:e=>e>=0});this.id=e.id||"";this.kerningMode=(0,o.getStringOption)(e.kerningMode,["none","pair"]);this.letterSpacing=(0,o.getMeasurement)(e.letterSpacing,"0");this.lineThrough=(0,o.getInteger)({data:e.lineThrough,defaultValue:0,validate:e=>1===e||2===e});this.lineThroughPeriod=(0,o.getStringOption)(e.lineThroughPeriod,["all","word"]);this.overline=(0,o.getInteger)({data:e.overline,defaultValue:0,validate:e=>1===e||2===e});this.overlinePeriod=(0,o.getStringOption)(e.overlinePeriod,["all","word"]);this.posture=(0,o.getStringOption)(e.posture,["normal","italic"]);this.size=(0,o.getMeasurement)(e.size,"10pt");this.typeface=e.typeface||"Courier";this.underline=(0,o.getInteger)({data:e.underline,defaultValue:0,validate:e=>1===e||2===e});this.underlinePeriod=(0,o.getStringOption)(e.underlinePeriod,["all","word"]);this.use=e.use||"";this.usehref=e.usehref||"";this.weight=(0,o.getStringOption)(e.weight,["normal","bold"]);this.extras=null;this.fill=null}[a.$clean](e){super[a.$clean](e);this[a.$globalData].usedTypefaces.add(this.typeface)}[a.$toStyle](){const e=(0,s.toStyle)(this,"fill"),t=e.color;if(t)if("#000000"===t)delete e.color;else if(!t.startsWith("#")){e.background=t;e.backgroundClip="text";e.color="transparent"}this.baselineShift&&(e.verticalAlign=(0,s.measureToString)(this.baselineShift));e.fontKerning="none"===this.kerningMode?"none":"normal";e.letterSpacing=(0,s.measureToString)(this.letterSpacing);if(0!==this.lineThrough){e.textDecoration="line-through";2===this.lineThrough&&(e.textDecorationStyle="double")}if(0!==this.overline){e.textDecoration="overline";2===this.overline&&(e.textDecorationStyle="double")}e.fontStyle=this.posture;e.fontSize=(0,s.measureToString)(.99*this.size);(0,s.setFontFamily)(this,this[a.$globalData].fontFinder,e);if(0!==this.underline){e.textDecoration="underline";2===this.underline&&(e.textDecorationStyle="double")}e.fontWeight=this.weight;return e}}class Format extends a.XFAObject{constructor(e){super(h,"format",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.picture=null}}class Handler extends a.StringObject{constructor(e){super(h,"handler");this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Hyphenation extends a.XFAObject{constructor(e){super(h,"hyphenation");this.excludeAllCaps=(0,o.getInteger)({data:e.excludeAllCaps,defaultValue:0,validate:e=>1===e});this.excludeInitialCap=(0,o.getInteger)({data:e.excludeInitialCap,defaultValue:0,validate:e=>1===e});this.hyphenate=(0,o.getInteger)({data:e.hyphenate,defaultValue:0,validate:e=>1===e});this.id=e.id||"";this.pushCharacterCount=(0,o.getInteger)({data:e.pushCharacterCount,defaultValue:3,validate:e=>e>=0});this.remainCharacterCount=(0,o.getInteger)({data:e.remainCharacterCount,defaultValue:3,validate:e=>e>=0});this.use=e.use||"";this.usehref=e.usehref||"";this.wordCharacterCount=(0,o.getInteger)({data:e.wordCharacterCount,defaultValue:7,validate:e=>e>=0})}}class Image extends a.StringObject{constructor(e){super(h,"image");this.aspect=(0,o.getStringOption)(e.aspect,["fit","actual","height","none","width"]);this.contentType=e.contentType||"";this.href=e.href||"";this.id=e.id||"";this.name=e.name||"";this.transferEncoding=(0,o.getStringOption)(e.transferEncoding,["base64","none","package"]);this.use=e.use||"";this.usehref=e.usehref||""}[a.$toHTML](){let e=this[a.$globalData].images&&this[a.$globalData].images.get(this.href);if(!e&&(this.href||!this[a.$content]))return o.HTMLResult.EMPTY;e||"base64"!==this.transferEncoding||(e=(0,c.stringToBytes)(atob(this[a.$content])));if(!e)return o.HTMLResult.EMPTY;const t=new Blob([e],{type:this.contentType});let r;switch(this.aspect){case"fit":case"actual":break;case"height":r={height:"100%",objectFit:"fill"};break;case"none":r={width:"100%",height:"100%",objectFit:"fill"};break;case"width":r={width:"100%",objectFit:"fill"}}return o.HTMLResult.success({name:"img",attributes:{class:["xfaImage"],style:r,src:URL.createObjectURL(t)}})}}class ImageEdit extends a.XFAObject{constructor(e){super(h,"imageEdit",!0);this.data=(0,o.getStringOption)(e.data,["link","embed"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}[a.$toHTML](e){return"embed"===this.data?o.HTMLResult.success({name:"div",children:[],attributes:{}}):o.HTMLResult.EMPTY}}class Integer extends a.ContentObject{constructor(e){super(h,"integer");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[a.$finalize](){const e=parseInt(this[a.$content].trim(),10);this[a.$content]=isNaN(e)?null:e}[a.$toHTML](e){return valueToHtml(null!==this[a.$content]?this[a.$content].toString():"")}}class Issuers extends a.XFAObject{constructor(e){super(h,"issuers",!0);this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=new a.XFAObjectArray}}class Items extends a.XFAObject{constructor(e){super(h,"items",!0);this.id=e.id||"";this.name=e.name||"";this.presence=(0,o.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.ref=e.ref||"";this.save=(0,o.getInteger)({data:e.save,defaultValue:0,validate:e=>1===e});this.use=e.use||"";this.usehref=e.usehref||"";this.boolean=new a.XFAObjectArray;this.date=new a.XFAObjectArray;this.dateTime=new a.XFAObjectArray;this.decimal=new a.XFAObjectArray;this.exData=new a.XFAObjectArray;this.float=new a.XFAObjectArray;this.image=new a.XFAObjectArray;this.integer=new a.XFAObjectArray;this.text=new a.XFAObjectArray;this.time=new a.XFAObjectArray}[a.$toHTML](){const e=[];for(const t of this[a.$getChildren]())e.push(t[a.$text]());return o.HTMLResult.success(e)}}t.Items=Items;class Keep extends a.XFAObject{constructor(e){super(h,"keep",!0);this.id=e.id||"";const t=["none","contentArea","pageArea"];this.intact=(0,o.getStringOption)(e.intact,t);this.next=(0,o.getStringOption)(e.next,t);this.previous=(0,o.getStringOption)(e.previous,t);this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class KeyUsage extends a.XFAObject{constructor(e){super(h,"keyUsage");const t=["","yes","no"];this.crlSign=(0,o.getStringOption)(e.crlSign,t);this.dataEncipherment=(0,o.getStringOption)(e.dataEncipherment,t);this.decipherOnly=(0,o.getStringOption)(e.decipherOnly,t);this.digitalSignature=(0,o.getStringOption)(e.digitalSignature,t);this.encipherOnly=(0,o.getStringOption)(e.encipherOnly,t);this.id=e.id||"";this.keyAgreement=(0,o.getStringOption)(e.keyAgreement,t);this.keyCertSign=(0,o.getStringOption)(e.keyCertSign,t);this.keyEncipherment=(0,o.getStringOption)(e.keyEncipherment,t);this.nonRepudiation=(0,o.getStringOption)(e.nonRepudiation,t);this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Line extends a.XFAObject{constructor(e){super(h,"line",!0);this.hand=(0,o.getStringOption)(e.hand,["even","left","right"]);this.id=e.id||"";this.slope=(0,o.getStringOption)(e.slope,["\\","/"]);this.use=e.use||"";this.usehref=e.usehref||"";this.edge=null}[a.$toHTML](){const e=this[a.$getParent]()[a.$getParent](),t=this.edge?this.edge:new Edge({}),r=t[a.$toStyle](),i=Object.create(null),n="visible"===t.presence?t.thickness:0;i.strokeWidth=(0,s.measureToString)(n);i.stroke=r.color;let c,l,h,d,f="100%",g="100%";if(e.w<=n){[c,l,h,d]=["50%",0,"50%","100%"];f=i.strokeWidth}else if(e.h<=n){[c,l,h,d]=[0,"50%","100%","50%"];g=i.strokeWidth}else"\\"===this.slope?[c,l,h,d]=[0,0,"100%","100%"]:[c,l,h,d]=[0,"100%","100%",0];const p={name:"svg",children:[{name:"line",attributes:{xmlns:u,x1:c,y1:l,x2:h,y2:d,style:i}}],attributes:{xmlns:u,width:f,height:g,style:{overflow:"visible"}}};if(hasMargin(e))return o.HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[p]});p.attributes.style.position="absolute";return o.HTMLResult.success(p)}}class Linear extends a.XFAObject{constructor(e){super(h,"linear",!0);this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["toRight","toBottom","toLeft","toTop"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[a.$toStyle](e){e=e?e[a.$toStyle]():"#FFFFFF";return`linear-gradient(${this.type.replace(/([RBLT])/," $1").toLowerCase()}, ${e}, ${this.color?this.color[a.$toStyle]():"#000000"})`}}class LockDocument extends a.ContentObject{constructor(e){super(h,"lockDocument");this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}[a.$finalize](){this[a.$content]=(0,o.getStringOption)(this[a.$content],["auto","0","1"])}}class Manifest extends a.XFAObject{constructor(e){super(h,"manifest",!0);this.action=(0,o.getStringOption)(e.action,["include","all","exclude"]);this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.ref=new a.XFAObjectArray}}class Margin extends a.XFAObject{constructor(e){super(h,"margin",!0);this.bottomInset=(0,o.getMeasurement)(e.bottomInset,"0");this.id=e.id||"";this.leftInset=(0,o.getMeasurement)(e.leftInset,"0");this.rightInset=(0,o.getMeasurement)(e.rightInset,"0");this.topInset=(0,o.getMeasurement)(e.topInset,"0");this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[a.$toStyle](){return{margin:(0,s.measureToString)(this.topInset)+" "+(0,s.measureToString)(this.rightInset)+" "+(0,s.measureToString)(this.bottomInset)+" "+(0,s.measureToString)(this.leftInset)}}}class Mdp extends a.XFAObject{constructor(e){super(h,"mdp");this.id=e.id||"";this.permissions=(0,o.getInteger)({data:e.permissions,defaultValue:2,validate:e=>1===e||3===e});this.signatureType=(0,o.getStringOption)(e.signatureType,["filler","author"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Medium extends a.XFAObject{constructor(e){super(h,"medium");this.id=e.id||"";this.imagingBBox=(0,o.getBBox)(e.imagingBBox);this.long=(0,o.getMeasurement)(e.long);this.orientation=(0,o.getStringOption)(e.orientation,["portrait","landscape"]);this.short=(0,o.getMeasurement)(e.short);this.stock=e.stock||"";this.trayIn=(0,o.getStringOption)(e.trayIn,["auto","delegate","pageFront"]);this.trayOut=(0,o.getStringOption)(e.trayOut,["auto","delegate"]);this.use=e.use||"";this.usehref=e.usehref||""}}class Message extends a.XFAObject{constructor(e){super(h,"message",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.text=new a.XFAObjectArray}}class NumericEdit extends a.XFAObject{constructor(e){super(h,"numericEdit",!0);this.hScrollPolicy=(0,o.getStringOption)(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.comb=null;this.extras=null;this.margin=null}[a.$toHTML](e){const t=(0,s.toStyle)(this,"border","font","margin"),r=this[a.$getParent]()[a.$getParent](),i={name:"input",attributes:{type:"text",fieldId:r[a.$uid],dataId:r[a.$data]&&r[a.$data][a.$uid]||r[a.$uid],class:["xfaTextfield"],style:t}};return o.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[i]})}}class Occur extends a.XFAObject{constructor(e){super(h,"occur",!0);this.id=e.id||"";this.initial=(0,o.getInteger)({data:e.initial,defaultValue:1,validate:e=>!0});this.max=(0,o.getInteger)({data:e.max,defaultValue:1,validate:e=>!0});this.min=(0,o.getInteger)({data:e.min,defaultValue:1,validate:e=>!0});this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}}class Oid extends a.StringObject{constructor(e){super(h,"oid");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Oids extends a.XFAObject{constructor(e){super(h,"oids",!0);this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.oid=new a.XFAObjectArray}}class Overflow extends a.XFAObject{constructor(e){super(h,"overflow");this.id=e.id||"";this.leader=e.leader||"";this.target=e.target||"";this.trailer=e.trailer||"";this.use=e.use||"";this.usehref=e.usehref||""}[a.$getExtra](){if(!this[a.$extra]){const e=this[a.$getParent](),t=this[a.$getTemplateRoot](),r=t[a.$searchNode](this.target,e),i=t[a.$searchNode](this.leader,e),n=t[a.$searchNode](this.trailer,e);this[a.$extra]={target:r&&r[0]||null,leader:i&&i[0]||null,trailer:n&&n[0]||null,addLeader:!1,addTrailer:!1}}return this[a.$extra]}}class PageArea extends a.XFAObject{constructor(e){super(h,"pageArea",!0);this.blankOrNotBlank=(0,o.getStringOption)(e.blankOrNotBlank,["any","blank","notBlank"]);this.id=e.id||"";this.initialNumber=(0,o.getInteger)({data:e.initialNumber,defaultValue:1,validate:e=>!0});this.name=e.name||"";this.numbered=(0,o.getInteger)({data:e.numbered,defaultValue:1,validate:e=>!0});this.oddOrEven=(0,o.getStringOption)(e.oddOrEven,["any","even","odd"]);this.pagePosition=(0,o.getStringOption)(e.pagePosition,["any","first","last","only","rest"]);this.relevant=(0,o.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.desc=null;this.extras=null;this.medium=null;this.occur=null;this.area=new a.XFAObjectArray;this.contentArea=new a.XFAObjectArray;this.draw=new a.XFAObjectArray;this.exclGroup=new a.XFAObjectArray;this.field=new a.XFAObjectArray;this.subform=new a.XFAObjectArray}[a.$isUsable](){if(!this[a.$extra]){this[a.$extra]={numberOfUse:0};return!0}return!this.occur||-1===this.occur.max||this[a.$extra].numberOfUsee.oddOrEven===t&&e.pagePosition===r));if(i)return i;i=this.pageArea.children.find((e=>"any"===e.oddOrEven&&e.pagePosition===r));if(i)return i;i=this.pageArea.children.find((e=>"any"===e.oddOrEven&&"any"===e.pagePosition));return i||this.pageArea.children[0]}}class Para extends a.XFAObject{constructor(e){super(h,"para",!0);this.hAlign=(0,o.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.lineHeight=e.lineHeight?(0,o.getMeasurement)(e.lineHeight,"0pt"):"";this.marginLeft=e.marginLeft?(0,o.getMeasurement)(e.marginLeft,"0pt"):"";this.marginRight=e.marginRight?(0,o.getMeasurement)(e.marginRight,"0pt"):"";this.orphans=(0,o.getInteger)({data:e.orphans,defaultValue:0,validate:e=>e>=0});this.preserve=e.preserve||"";this.radixOffset=e.radixOffset?(0,o.getMeasurement)(e.radixOffset,"0pt"):"";this.spaceAbove=e.spaceAbove?(0,o.getMeasurement)(e.spaceAbove,"0pt"):"";this.spaceBelow=e.spaceBelow?(0,o.getMeasurement)(e.spaceBelow,"0pt"):"";this.tabDefault=e.tabDefault?(0,o.getMeasurement)(this.tabDefault):"";this.tabStops=(e.tabStops||"").trim().split(/\s+/).map(((e,t)=>t%2==1?(0,o.getMeasurement)(e):e));this.textIndent=e.textIndent?(0,o.getMeasurement)(e.textIndent,"0pt"):"";this.use=e.use||"";this.usehref=e.usehref||"";this.vAlign=(0,o.getStringOption)(e.vAlign,["top","bottom","middle"]);this.widows=(0,o.getInteger)({data:e.widows,defaultValue:0,validate:e=>e>=0});this.hyphenation=null}[a.$toStyle](){const e=(0,s.toStyle)(this,"hAlign");""!==this.marginLeft&&(e.paddingLeft=(0,s.measureToString)(this.marginLeft));""!==this.marginRight&&(e.paddingight=(0,s.measureToString)(this.marginRight));""!==this.spaceAbove&&(e.paddingTop=(0,s.measureToString)(this.spaceAbove));""!==this.spaceBelow&&(e.paddingBottom=(0,s.measureToString)(this.spaceBelow));if(""!==this.textIndent){e.textIndent=(0,s.measureToString)(this.textIndent);(0,s.fixTextIndent)(e)}this.lineHeight>0&&(e.lineHeight=(0,s.measureToString)(this.lineHeight));""!==this.tabDefault&&(e.tabSize=(0,s.measureToString)(this.tabDefault));this.tabStops.length;this.hyphenatation&&Object.assign(e,this.hyphenatation[a.$toStyle]());return e}}class PasswordEdit extends a.XFAObject{constructor(e){super(h,"passwordEdit",!0);this.hScrollPolicy=(0,o.getStringOption)(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.passwordChar=e.passwordChar||"*";this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.margin=null}}class Pattern extends a.XFAObject{constructor(e){super(h,"pattern",!0);this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["crossHatch","crossDiagonal","diagonalLeft","diagonalRight","horizontal","vertical"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[a.$toStyle](e){e=e?e[a.$toStyle]():"#FFFFFF";const t=this.color?this.color[a.$toStyle]():"#000000",r="repeating-linear-gradient",i=`${e},${e} 5px,${t} 5px,${t} 10px`;switch(this.type){case"crossHatch":return`${r}(to top,${i}) ${r}(to right,${i})`;case"crossDiagonal":return`${r}(45deg,${i}) ${r}(-45deg,${i})`;case"diagonalLeft":return`${r}(45deg,${i})`;case"diagonalRight":return`${r}(-45deg,${i})`;case"horizontal":return`${r}(to top,${i})`;case"vertical":return`${r}(to right,${i})`}return""}}class Picture extends a.StringObject{constructor(e){super(h,"picture");this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Proto extends a.XFAObject{constructor(e){super(h,"proto",!0);this.appearanceFilter=new a.XFAObjectArray;this.arc=new a.XFAObjectArray;this.area=new a.XFAObjectArray;this.assist=new a.XFAObjectArray;this.barcode=new a.XFAObjectArray;this.bindItems=new a.XFAObjectArray;this.bookend=new a.XFAObjectArray;this.boolean=new a.XFAObjectArray;this.border=new a.XFAObjectArray;this.break=new a.XFAObjectArray;this.breakAfter=new a.XFAObjectArray;this.breakBefore=new a.XFAObjectArray;this.button=new a.XFAObjectArray;this.calculate=new a.XFAObjectArray;this.caption=new a.XFAObjectArray;this.certificate=new a.XFAObjectArray;this.certificates=new a.XFAObjectArray;this.checkButton=new a.XFAObjectArray;this.choiceList=new a.XFAObjectArray;this.color=new a.XFAObjectArray;this.comb=new a.XFAObjectArray;this.connect=new a.XFAObjectArray;this.contentArea=new a.XFAObjectArray;this.corner=new a.XFAObjectArray;this.date=new a.XFAObjectArray;this.dateTime=new a.XFAObjectArray;this.dateTimeEdit=new a.XFAObjectArray;this.decimal=new a.XFAObjectArray;this.defaultUi=new a.XFAObjectArray;this.desc=new a.XFAObjectArray;this.digestMethod=new a.XFAObjectArray;this.digestMethods=new a.XFAObjectArray;this.draw=new a.XFAObjectArray;this.edge=new a.XFAObjectArray;this.encoding=new a.XFAObjectArray;this.encodings=new a.XFAObjectArray;this.encrypt=new a.XFAObjectArray;this.encryptData=new a.XFAObjectArray;this.encryption=new a.XFAObjectArray;this.encryptionMethod=new a.XFAObjectArray;this.encryptionMethods=new a.XFAObjectArray;this.event=new a.XFAObjectArray;this.exData=new a.XFAObjectArray;this.exObject=new a.XFAObjectArray;this.exclGroup=new a.XFAObjectArray;this.execute=new a.XFAObjectArray;this.extras=new a.XFAObjectArray;this.field=new a.XFAObjectArray;this.fill=new a.XFAObjectArray;this.filter=new a.XFAObjectArray;this.float=new a.XFAObjectArray;this.font=new a.XFAObjectArray;this.format=new a.XFAObjectArray;this.handler=new a.XFAObjectArray;this.hyphenation=new a.XFAObjectArray;this.image=new a.XFAObjectArray;this.imageEdit=new a.XFAObjectArray;this.integer=new a.XFAObjectArray;this.issuers=new a.XFAObjectArray;this.items=new a.XFAObjectArray;this.keep=new a.XFAObjectArray;this.keyUsage=new a.XFAObjectArray;this.line=new a.XFAObjectArray;this.linear=new a.XFAObjectArray;this.lockDocument=new a.XFAObjectArray;this.manifest=new a.XFAObjectArray;this.margin=new a.XFAObjectArray;this.mdp=new a.XFAObjectArray;this.medium=new a.XFAObjectArray;this.message=new a.XFAObjectArray;this.numericEdit=new a.XFAObjectArray;this.occur=new a.XFAObjectArray;this.oid=new a.XFAObjectArray;this.oids=new a.XFAObjectArray;this.overflow=new a.XFAObjectArray;this.pageArea=new a.XFAObjectArray;this.pageSet=new a.XFAObjectArray;this.para=new a.XFAObjectArray;this.passwordEdit=new a.XFAObjectArray;this.pattern=new a.XFAObjectArray;this.picture=new a.XFAObjectArray;this.radial=new a.XFAObjectArray;this.reason=new a.XFAObjectArray;this.reasons=new a.XFAObjectArray;this.rectangle=new a.XFAObjectArray;this.ref=new a.XFAObjectArray;this.script=new a.XFAObjectArray;this.setProperty=new a.XFAObjectArray;this.signData=new a.XFAObjectArray;this.signature=new a.XFAObjectArray;this.signing=new a.XFAObjectArray;this.solid=new a.XFAObjectArray;this.speak=new a.XFAObjectArray;this.stipple=new a.XFAObjectArray;this.subform=new a.XFAObjectArray;this.subformSet=new a.XFAObjectArray;this.subjectDN=new a.XFAObjectArray;this.subjectDNs=new a.XFAObjectArray;this.submit=new a.XFAObjectArray;this.text=new a.XFAObjectArray;this.textEdit=new a.XFAObjectArray;this.time=new a.XFAObjectArray;this.timeStamp=new a.XFAObjectArray;this.toolTip=new a.XFAObjectArray;this.traversal=new a.XFAObjectArray;this.traverse=new a.XFAObjectArray;this.ui=new a.XFAObjectArray;this.validate=new a.XFAObjectArray;this.value=new a.XFAObjectArray;this.variables=new a.XFAObjectArray}}class Radial extends a.XFAObject{constructor(e){super(h,"radial",!0);this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["toEdge","toCenter"]);this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[a.$toStyle](e){e=e?e[a.$toStyle]():"#FFFFFF";const t=this.color?this.color[a.$toStyle]():"#000000";return`radial-gradient(circle at center, ${"toEdge"===this.type?`${e},${t}`:`${t},${e}`})`}}class Reason extends a.StringObject{constructor(e){super(h,"reason");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Reasons extends a.XFAObject{constructor(e){super(h,"reasons",!0);this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.reason=new a.XFAObjectArray}}class Rectangle extends a.XFAObject{constructor(e){super(h,"rectangle",!0);this.hand=(0,o.getStringOption)(e.hand,["even","left","right"]);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.corner=new a.XFAObjectArray(4);this.edge=new a.XFAObjectArray(4);this.fill=null}[a.$toHTML](){const e=this.edge.children.length?this.edge.children[0]:new Edge({}),t=e[a.$toStyle](),r=Object.create(null);this.fill&&"visible"===this.fill.presence?Object.assign(r,this.fill[a.$toStyle]()):r.fill="transparent";r.strokeWidth=(0,s.measureToString)("visible"===e.presence?e.thickness:0);r.stroke=t.color;const i=(this.corner.children.length?this.corner.children[0]:new Corner({}))[a.$toStyle](),n={name:"svg",children:[{name:"rect",attributes:{xmlns:u,width:"100%",height:"100%",x:0,y:0,rx:i.radius,ry:i.radius,style:r}}],attributes:{xmlns:u,style:{overflow:"visible"},width:"100%",height:"100%"}};if(hasMargin(this[a.$getParent]()[a.$getParent]()))return o.HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[n]});n.attributes.style.position="absolute";return o.HTMLResult.success(n)}}class RefElement extends a.StringObject{constructor(e){super(h,"ref");this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Script extends a.StringObject{constructor(e){super(h,"script");this.binding=e.binding||"";this.contentType=e.contentType||"";this.id=e.id||"";this.name=e.name||"";this.runAt=(0,o.getStringOption)(e.runAt,["client","both","server"]);this.use=e.use||"";this.usehref=e.usehref||""}}class SetProperty extends a.XFAObject{constructor(e){super(h,"setProperty");this.connection=e.connection||"";this.ref=e.ref||"";this.target=e.target||""}}t.SetProperty=SetProperty;class SignData extends a.XFAObject{constructor(e){super(h,"signData",!0);this.id=e.id||"";this.operation=(0,o.getStringOption)(e.operation,["sign","clear","verify"]);this.ref=e.ref||"";this.target=e.target||"";this.use=e.use||"";this.usehref=e.usehref||"";this.filter=null;this.manifest=null}}class Signature extends a.XFAObject{constructor(e){super(h,"signature",!0);this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["PDF1.3","PDF1.6"]);this.use=e.use||"";this.usehref=e.usehref||"";this.border=null;this.extras=null;this.filter=null;this.manifest=null;this.margin=null}}class Signing extends a.XFAObject{constructor(e){super(h,"signing",!0);this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.certificate=new a.XFAObjectArray}}class Solid extends a.XFAObject{constructor(e){super(h,"solid",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null}[a.$toStyle](e){return e?e[a.$toStyle]():"#FFFFFF"}}class Speak extends a.StringObject{constructor(e){super(h,"speak");this.disable=(0,o.getInteger)({data:e.disable,defaultValue:0,validate:e=>1===e});this.id=e.id||"";this.priority=(0,o.getStringOption)(e.priority,["custom","caption","name","toolTip"]);this.rid=e.rid||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Stipple extends a.XFAObject{constructor(e){super(h,"stipple",!0);this.id=e.id||"";this.rate=(0,o.getInteger)({data:e.rate,defaultValue:50,validate:e=>e>=0&&e<=100});this.use=e.use||"";this.usehref=e.usehref||"";this.color=null;this.extras=null}[a.$toStyle](e){const t=this.rate/100;return c.Util.makeHexColor(Math.round(e.value.r*(1-t)+this.value.r*t),Math.round(e.value.g*(1-t)+this.value.g*t),Math.round(e.value.b*(1-t)+this.value.b*t))}}class Subform extends a.XFAObject{constructor(e){super(h,"subform",!0);this.access=(0,o.getStringOption)(e.access,["open","nonInteractive","protected","readOnly"]);this.allowMacro=(0,o.getInteger)({data:e.allowMacro,defaultValue:0,validate:e=>1===e});this.anchorType=(0,o.getStringOption)(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]);this.colSpan=(0,o.getInteger)({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e});this.columnWidths=(e.columnWidths||"").trim().split(/\s+/).map((e=>"-1"===e?-1:(0,o.getMeasurement)(e)));this.h=e.h?(0,o.getMeasurement)(e.h):"";this.hAlign=(0,o.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]);this.id=e.id||"";this.layout=(0,o.getStringOption)(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]);this.locale=e.locale||"";this.maxH=(0,o.getMeasurement)(e.maxH,"0pt");this.maxW=(0,o.getMeasurement)(e.maxW,"0pt");this.mergeMode=(0,o.getStringOption)(e.mergeMode,["consumeData","matchTemplate"]);this.minH=(0,o.getMeasurement)(e.minH,"0pt");this.minW=(0,o.getMeasurement)(e.minW,"0pt");this.name=e.name||"";this.presence=(0,o.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]);this.relevant=(0,o.getRelevant)(e.relevant);this.restoreState=(0,o.getStringOption)(e.restoreState,["manual","auto"]);this.scope=(0,o.getStringOption)(e.scope,["name","none"]);this.use=e.use||"";this.usehref=e.usehref||"";this.w=e.w?(0,o.getMeasurement)(e.w):"";this.x=(0,o.getMeasurement)(e.x,"0pt");this.y=(0,o.getMeasurement)(e.y,"0pt");this.assist=null;this.bind=null;this.bookend=null;this.border=null;this.break=null;this.calculate=null;this.desc=null;this.extras=null;this.keep=null;this.margin=null;this.occur=null;this.overflow=null;this.pageSet=null;this.para=null;this.traversal=null;this.validate=null;this.variables=null;this.area=new a.XFAObjectArray;this.breakAfter=new a.XFAObjectArray;this.breakBefore=new a.XFAObjectArray;this.connect=new a.XFAObjectArray;this.draw=new a.XFAObjectArray;this.event=new a.XFAObjectArray;this.exObject=new a.XFAObjectArray;this.exclGroup=new a.XFAObjectArray;this.field=new a.XFAObjectArray;this.proto=new a.XFAObjectArray;this.setProperty=new a.XFAObjectArray;this.subform=new a.XFAObjectArray;this.subformSet=new a.XFAObjectArray}[a.$getSubformParent](){const e=this[a.$getParent]();return e instanceof SubformSet?e[a.$getSubformParent]():e}[a.$isBindable](){return!0}[a.$isThereMoreWidth](){return this.layout.endsWith("-tb")&&0===this[a.$extra].attempt&&this[a.$extra].numberInLine>0||this[a.$getParent]()[a.$isThereMoreWidth]()}*[a.$getContainedChildren](){yield*getContainedChildren(this)}[a.$flushHTML](){return(0,n.flushHTML)(this)}[a.$addHTML](e,t){(0,n.addHTML)(this,e,t)}[a.$getAvailableSpace](){return(0,n.getAvailableSpace)(this)}[a.$isSplittable](){const e=this[a.$getSubformParent]();if(!e[a.$isSplittable]())return!1;const t=this[a.$getTemplateRoot]()[a.$extra].currentContentArea;if(this.overflow&&this.overflow[a.$getExtra]().target===t)return!1;if(void 0!==this[a.$extra]._isSplittable)return this[a.$extra]._isSplittable;if("position"===this.layout||this.layout.includes("row")){this[a.$extra]._isSplittable=!1;return!1}if(this.keep&&"none"!==this.keep.intact){this[a.$extra]._isSplittable=!1;return!1}if(e.layout&&e.layout.endsWith("-tb")&&0!==e[a.$extra].numberInLine)return!1;this[a.$extra]._isSplittable=!0;return!0}[a.$toHTML](e){if(this.break){if("auto"!==this.break.after||""!==this.break.afterTarget){const e=new BreakAfter({targetType:this.break.after,target:this.break.afterTarget,startNew:this.break.startNew.toString()});e[a.$globalData]=this[a.$globalData];this[a.$appendChild](e);this.breakAfter.push(e)}if("auto"!==this.break.before||""!==this.break.beforeTarget){const e=new BreakBefore({targetType:this.break.before,target:this.break.beforeTarget,startNew:this.break.startNew.toString()});e[a.$globalData]=this[a.$globalData];this[a.$appendChild](e);this.breakBefore.push(e)}if(""!==this.break.overflowTarget){const e=new Overflow({target:this.break.overflowTarget,leader:this.break.overflowLeader,trailer:this.break.overflowTrailer});e[a.$globalData]=this[a.$globalData];this[a.$appendChild](e);this.overflow.push(e)}this[a.$removeChild](this.break);this.break=null}if("hidden"===this.presence||"inactive"===this.presence)return o.HTMLResult.EMPTY;(this.breakBefore.children.length>1||this.breakAfter.children.length>1)&&(0,c.warn)("XFA - Several breakBefore or breakAfter in subforms: please file a bug.");if(this.breakBefore.children.length>=1){const e=this.breakBefore.children[0];if(handleBreak(e))return o.HTMLResult.breakNode(e)}if(this[a.$extra]&&this[a.$extra].afterBreakAfter)return o.HTMLResult.EMPTY;(0,s.fixDimensions)(this);const t=[],r={id:this[a.$uid],class:[]};(0,s.setAccess)(this,r.class);this[a.$extra]||(this[a.$extra]=Object.create(null));Object.assign(this[a.$extra],{children:t,line:null,attributes:r,attempt:0,numberInLine:0,availableSpace:{width:Math.min(this.w||1/0,e.width),height:Math.min(this.h||1/0,e.height)},width:0,height:0,prevHeight:0,currentWidth:0});const i=this[a.$getTemplateRoot](),l=i[a.$extra].currentContentArea,h=i[a.$extra].noLayoutFailure;this.overflow&&(i[a.$extra].noLayoutFailure=i[a.$extra].noLayoutFailure||this.overflow[a.$getExtra]().target===l);const u=this[a.$isSplittable]();u||setFirstUnsplittable(this);if(!(0,n.checkDimensions)(this,e))return o.HTMLResult.FAILURE;const d=new Set(["area","draw","exclGroup","field","subform","subformSet"]);if(this.layout.includes("row")){const e=this[a.$getSubformParent]().columnWidths;if(Array.isArray(e)&&e.length>0){this[a.$extra].columnWidths=e;this[a.$extra].currentColumn=0}}const f=(0,s.toStyle)(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),g=["xfaSubform"],p=(0,s.layoutClass)(this);p&&g.push(p);r.style=f;r.class=g;this.name&&(r.xfaName=this.name);if(this.overflow){const t=this.overflow[a.$getExtra]();if(t.addLeader){t.addLeader=!1;handleOverflow(this,t.leader,e)}}const m="lr-tb"===this.layout||"rl-tb"===this.layout,b=m?2:1;for(;this[a.$extra].attempt=1){const e=this.breakAfter.children[0];if(handleBreak(e)){this[a.$extra].afterBreakAfter=F;return o.HTMLResult.breakNode(e)}}delete this[a.$extra];return F}}class SubformSet extends a.XFAObject{constructor(e){super(h,"subformSet",!0);this.id=e.id||"";this.name=e.name||"";this.relation=(0,o.getStringOption)(e.relation,["ordered","choice","unordered"]);this.relevant=(0,o.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.bookend=null;this.break=null;this.desc=null;this.extras=null;this.occur=null;this.overflow=null;this.breakAfter=new a.XFAObjectArray;this.breakBefore=new a.XFAObjectArray;this.subform=new a.XFAObjectArray;this.subformSet=new a.XFAObjectArray}*[a.$getContainedChildren](){yield*getContainedChildren(this)}[a.$getSubformParent](){let e=this[a.$getParent]();for(;!(e instanceof Subform);)e=e[a.$getParent]();return e}}class SubjectDN extends a.ContentObject{constructor(e){super(h,"subjectDN");this.delimiter=e.delimiter||",";this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[a.$finalize](){this[a.$content]=new Map(this[a.$content].split(this.delimiter).map((e=>{(e=e.split("=",2))[0]=e[0].trim();return e})))}}class SubjectDNs extends a.XFAObject{constructor(e){super(h,"subjectDNs",!0);this.id=e.id||"";this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||"";this.subjectDN=new a.XFAObjectArray}}class Submit extends a.XFAObject{constructor(e){super(h,"submit",!0);this.embedPDF=(0,o.getInteger)({data:e.embedPDF,defaultValue:0,validate:e=>1===e});this.format=(0,o.getStringOption)(e.format,["xdp","formdata","pdf","urlencoded","xfd","xml"]);this.id=e.id||"";this.target=e.target||"";this.textEncoding=(0,o.getKeyword)({data:e.textEncoding?e.textEncoding.toLowerCase():"",defaultValue:"",validate:e=>["utf-8","big-five","fontspecific","gbk","gb-18030","gb-2312","ksc-5601","none","shift-jis","ucs-2","utf-16"].includes(e)||e.match(/iso-8859-[0-9]{2}/)});this.use=e.use||"";this.usehref=e.usehref||"";this.xdpContent=e.xdpContent||"";this.encrypt=null;this.encryptData=new a.XFAObjectArray;this.signData=new a.XFAObjectArray}}class Template extends a.XFAObject{constructor(e){super(h,"template",!0);this.baseProfile=(0,o.getStringOption)(e.baseProfile,["full","interactiveForms"]);this.extras=null;this.subform=new a.XFAObjectArray}[a.$finalize](){0===this.subform.children.length&&(0,c.warn)("XFA - No subforms in template node.");this.subform.children.length>=2&&(0,c.warn)("XFA - Several subforms in template node: please file a bug.");this[a.$tabIndex]=1e3}[a.$isSplittable](){return!0}[a.$searchNode](e,t){return e.startsWith("#")?[this[a.$ids].get(e.slice(1))]:(0,l.searchNode)(this,t,e,!0,!0)}[a.$toHTML](){if(!this.subform.children.length)return o.HTMLResult.success({name:"div",children:[]});this[a.$extra]={overflowNode:null,firstUnsplittable:null,currentContentArea:null,currentPageArea:null,noLayoutFailure:!1,pageNumber:1,pagePosition:"first",oddOrEven:"odd",blankOrNotBlank:"nonBlank"};const e=this.subform.children[0];e.pageSet[a.$cleanPage]();const t=e.pageSet.pageArea.children,r={name:"div",children:[]};let i=null,n=null,s=null;if(e.breakBefore.children.length>=1){n=e.breakBefore.children[0];s=n.target}else if(e.subform.children.length>=1&&e.subform.children[0].breakBefore.children.length>=1){n=e.subform.children[0].breakBefore.children[0];s=n.target}else if(e.break&&e.break.beforeTarget){n=e.break;s=n.beforeTarget}else if(e.subform.children.length>=1&&e.subform.children[0].break&&e.subform.children[0].break.beforeTarget){n=e.subform.children[0].break;s=n.beforeTarget}if(n){const e=this[a.$searchNode](s,n[a.$getParent]());if(e instanceof PageArea){i=e;n[a.$extra]={}}}i||(i=t[0]);i[a.$extra]={numberOfUse:1};const l=i[a.$getParent]();l[a.$extra]={numberOfUse:1,pageIndex:l.pageArea.children.indexOf(i),pageSetIndex:0};let h,u=null,d=null,f=!0,g=0,p=0;for(;;){if(f)g=0;else{r.children.pop();if(3==++g){(0,c.warn)("XFA - Something goes wrong: please file a bug.");return r}}h=null;this[a.$extra].currentPageArea=i;const t=i[a.$toHTML]().html;r.children.push(t);if(u){this[a.$extra].noLayoutFailure=!0;t.children.push(u[a.$toHTML](i[a.$extra].space).html);u=null}if(d){this[a.$extra].noLayoutFailure=!0;t.children.push(d[a.$toHTML](i[a.$extra].space).html);d=null}const n=i.contentArea.children,s=t.children.filter((e=>e.attributes.class.includes("xfaContentarea")));f=!1;this[a.$extra].firstUnsplittable=null;this[a.$extra].noLayoutFailure=!1;const flush=t=>{const r=e[a.$flushHTML]();if(r){f=f||r.children&&0!==r.children.length;s[t].children.push(r)}};for(let t=p,i=n.length;te===i));if(-1!==e)t=e-1;else{h=i[a.$getParent]();p=h.contentArea.children.findIndex((e=>e===i))}}}else flush(t)}this[a.$extra].pageNumber+=1;h&&(h[a.$isUsable]()?h[a.$extra].numberOfUse+=1:h=null);i=h||i[a.$getNextPage]()}}}t.Template=Template;class Text extends a.ContentObject{constructor(e){super(h,"text");this.id=e.id||"";this.maxChars=(0,o.getInteger)({data:e.maxChars,defaultValue:0,validate:e=>e>=0});this.name=e.name||"";this.rid=e.rid||"";this.use=e.use||"";this.usehref=e.usehref||""}[a.$acceptWhitespace](){return!0}[a.$onChild](e){if(e[a.$namespaceId]===i.NamespaceIds.xhtml.id){this[a.$content]=e;return!0}(0,c.warn)(`XFA - Invalid content in Text: ${e[a.$nodeName]}.`);return!1}[a.$onText](e){this[a.$content]instanceof a.XFAObject||super[a.$onText](e)}[a.$toHTML](e){if("string"==typeof this[a.$content]){const e=valueToHtml(this[a.$content]).html;if(this[a.$content].includes("\u2029")){e.name="div";e.children=[];this[a.$content].split("\u2029").map((e=>e.split(/[\u2028\n]/).reduce(((e,t)=>{e.push({name:"span",value:t},{name:"br"});return e}),[]))).forEach((t=>{e.children.push({name:"p",children:t})}))}else if(/[\u2028\n]/.test(this[a.$content])){e.name="div";e.children=[];this[a.$content].split(/[\u2028\n]/).forEach((t=>{e.children.push({name:"span",value:t},{name:"br"})}))}return o.HTMLResult.success(e)}return this[a.$content][a.$toHTML](e)}}t.Text=Text;class TextEdit extends a.XFAObject{constructor(e){super(h,"textEdit",!0);this.allowRichText=(0,o.getInteger)({data:e.allowRichText,defaultValue:0,validate:e=>1===e});this.hScrollPolicy=(0,o.getStringOption)(e.hScrollPolicy,["auto","off","on"]);this.id=e.id||"";this.multiLine=e.multiLine||"";this.use=e.use||"";this.usehref=e.usehref||"";this.vScrollPolicy=(0,o.getStringOption)(e.vScrollPolicy,["auto","off","on"]);this.border=null;this.comb=null;this.extras=null;this.margin=null}[a.$clean](e){super[a.$clean](e);const t=this[a.$getParent]()instanceof Draw?1:0;this.multiLine=(0,o.getInteger)({data:this.multiLine,defaultValue:t,validate:e=>0===e||1===e})}[a.$toHTML](e){const t=(0,s.toStyle)(this,"border","font","margin");let r;const i=this[a.$getParent]()[a.$getParent]();r=1===this.multiLine?{name:"textarea",attributes:{dataId:i[a.$data]&&i[a.$data][a.$uid]||i[a.$uid],fieldId:i[a.$uid],class:["xfaTextfield"],style:t}}:{name:"input",attributes:{type:"text",dataId:i[a.$data]&&i[a.$data][a.$uid]||i[a.$uid],fieldId:i[a.$uid],class:["xfaTextfield"],style:t}};return o.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[r]})}}class Time extends a.StringObject{constructor(e){super(h,"time");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}[a.$finalize](){const e=this[a.$content].trim();this[a.$content]=e?new Date(e):null}[a.$toHTML](e){return valueToHtml(this[a.$content]?this[a.$content].toString():"")}}class TimeStamp extends a.XFAObject{constructor(e){super(h,"timeStamp");this.id=e.id||"";this.server=e.server||"";this.type=(0,o.getStringOption)(e.type,["optional","required"]);this.use=e.use||"";this.usehref=e.usehref||""}}class ToolTip extends a.StringObject{constructor(e){super(h,"toolTip");this.id=e.id||"";this.rid=e.rid||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Traversal extends a.XFAObject{constructor(e){super(h,"traversal",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.traverse=new a.XFAObjectArray}}class Traverse extends a.XFAObject{constructor(e){super(h,"traverse",!0);this.id=e.id||"";this.operation=(0,o.getStringOption)(e.operation,["next","back","down","first","left","right","up"]);this.ref=e.ref||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.script=null}get name(){return this.operation}[a.$isTransparent](){return!1}}class Ui extends a.XFAObject{constructor(e){super(h,"ui",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.picture=null;this.barcode=null;this.button=null;this.checkButton=null;this.choiceList=null;this.dateTimeEdit=null;this.defaultUi=null;this.imageEdit=null;this.numericEdit=null;this.passwordEdit=null;this.signature=null;this.textEdit=null}[a.$toHTML](e){for(const t of Object.getOwnPropertyNames(this)){if("extras"===t||"picture"===t)continue;const r=this[t];if(r instanceof a.XFAObject)return r[a.$toHTML](e)}return o.HTMLResult.EMPTY}}class Validate extends a.XFAObject{constructor(e){super(h,"validate",!0);this.formatTest=(0,o.getStringOption)(e.formatTest,["warning","disabled","error"]);this.id=e.id||"";this.nullTest=(0,o.getStringOption)(e.nullTest,["disabled","error","warning"]);this.scriptTest=(0,o.getStringOption)(e.scriptTest,["error","disabled","warning"]);this.use=e.use||"";this.usehref=e.usehref||"";this.extras=null;this.message=null;this.picture=null;this.script=null}}class Value extends a.XFAObject{constructor(e){super(h,"value",!0);this.id=e.id||"";this.override=(0,o.getInteger)({data:e.override,defaultValue:0,validate:e=>1===e});this.relevant=(0,o.getRelevant)(e.relevant);this.use=e.use||"";this.usehref=e.usehref||"";this.arc=null;this.boolean=null;this.date=null;this.dateTime=null;this.decimal=null;this.exData=null;this.float=null;this.image=null;this.integer=null;this.line=null;this.rectangle=null;this.text=null;this.time=null}[a.$setValue](e){const t=this[a.$getParent]();if(t instanceof Field&&t.ui&&t.ui.imageEdit){this.image||(this.image=new Image({}));this.image[a.$content]=e[a.$content];return}const r=e[a.$nodeName];if(null===this[r]){for(const e of Object.getOwnPropertyNames(this)){const t=this[e];if(t instanceof a.XFAObject){this[e]=null;this[a.$removeChild](t)}}this[e[a.$nodeName]]=e;this[a.$appendChild](e)}else this[r][a.$content]=e[a.$content]}[a.$text](){if(this.exData)return this.exData[a.$content][a.$text]().trim();for(const e of Object.getOwnPropertyNames(this)){if("image"===e)continue;const t=this[e];if(t instanceof a.XFAObject)return(t[a.$content]||"").toString().trim()}return null}[a.$toHTML](e){for(const t of Object.getOwnPropertyNames(this)){const r=this[t];if(r instanceof a.XFAObject)return r[a.$toHTML](e)}return o.HTMLResult.EMPTY}}t.Value=Value;class Variables extends a.XFAObject{constructor(e){super(h,"variables",!0);this.id=e.id||"";this.use=e.use||"";this.usehref=e.usehref||"";this.boolean=new a.XFAObjectArray;this.date=new a.XFAObjectArray;this.dateTime=new a.XFAObjectArray;this.decimal=new a.XFAObjectArray;this.exData=new a.XFAObjectArray;this.float=new a.XFAObjectArray;this.image=new a.XFAObjectArray;this.integer=new a.XFAObjectArray;this.manifest=new a.XFAObjectArray;this.script=new a.XFAObjectArray;this.text=new a.XFAObjectArray;this.time=new a.XFAObjectArray}[a.$isTransparent](){return!0}}class TemplateNamespace{static[i.$buildXFAObject](e,t){if(TemplateNamespace.hasOwnProperty(e)){const r=TemplateNamespace[e](t);r[a.$setSetAttributes](t);return r}}static appearanceFilter(e){return new AppearanceFilter(e)}static arc(e){return new Arc(e)}static area(e){return new Area(e)}static assist(e){return new Assist(e)}static barcode(e){return new Barcode(e)}static bind(e){return new Bind(e)}static bindItems(e){return new BindItems(e)}static bookend(e){return new Bookend(e)}static boolean(e){return new BooleanElement(e)}static border(e){return new Border(e)}static break(e){return new Break(e)}static breakAfter(e){return new BreakAfter(e)}static breakBefore(e){return new BreakBefore(e)}static button(e){return new Button(e)}static calculate(e){return new Calculate(e)}static caption(e){return new Caption(e)}static certificate(e){return new Certificate(e)}static certificates(e){return new Certificates(e)}static checkButton(e){return new CheckButton(e)}static choiceList(e){return new ChoiceList(e)}static color(e){return new Color(e)}static comb(e){return new Comb(e)}static connect(e){return new Connect(e)}static contentArea(e){return new ContentArea(e)}static corner(e){return new Corner(e)}static date(e){return new DateElement(e)}static dateTime(e){return new DateTime(e)}static dateTimeEdit(e){return new DateTimeEdit(e)}static decimal(e){return new Decimal(e)}static defaultUi(e){return new DefaultUi(e)}static desc(e){return new Desc(e)}static digestMethod(e){return new DigestMethod(e)}static digestMethods(e){return new DigestMethods(e)}static draw(e){return new Draw(e)}static edge(e){return new Edge(e)}static encoding(e){return new Encoding(e)}static encodings(e){return new Encodings(e)}static encrypt(e){return new Encrypt(e)}static encryptData(e){return new EncryptData(e)}static encryption(e){return new Encryption(e)}static encryptionMethod(e){return new EncryptionMethod(e)}static encryptionMethods(e){return new EncryptionMethods(e)}static event(e){return new Event(e)}static exData(e){return new ExData(e)}static exObject(e){return new ExObject(e)}static exclGroup(e){return new ExclGroup(e)}static execute(e){return new Execute(e)}static extras(e){return new Extras(e)}static field(e){return new Field(e)}static fill(e){return new Fill(e)}static filter(e){return new Filter(e)}static float(e){return new Float(e)}static font(e){return new Font(e)}static format(e){return new Format(e)}static handler(e){return new Handler(e)}static hyphenation(e){return new Hyphenation(e)}static image(e){return new Image(e)}static imageEdit(e){return new ImageEdit(e)}static integer(e){return new Integer(e)}static issuers(e){return new Issuers(e)}static items(e){return new Items(e)}static keep(e){return new Keep(e)}static keyUsage(e){return new KeyUsage(e)}static line(e){return new Line(e)}static linear(e){return new Linear(e)}static lockDocument(e){return new LockDocument(e)}static manifest(e){return new Manifest(e)}static margin(e){return new Margin(e)}static mdp(e){return new Mdp(e)}static medium(e){return new Medium(e)}static message(e){return new Message(e)}static numericEdit(e){return new NumericEdit(e)}static occur(e){return new Occur(e)}static oid(e){return new Oid(e)}static oids(e){return new Oids(e)}static overflow(e){return new Overflow(e)}static pageArea(e){return new PageArea(e)}static pageSet(e){return new PageSet(e)}static para(e){return new Para(e)}static passwordEdit(e){return new PasswordEdit(e)}static pattern(e){return new Pattern(e)}static picture(e){return new Picture(e)}static proto(e){return new Proto(e)}static radial(e){return new Radial(e)}static reason(e){return new Reason(e)}static reasons(e){return new Reasons(e)}static rectangle(e){return new Rectangle(e)}static ref(e){return new RefElement(e)}static script(e){return new Script(e)}static setProperty(e){return new SetProperty(e)}static signData(e){return new SignData(e)}static signature(e){return new Signature(e)}static signing(e){return new Signing(e)}static solid(e){return new Solid(e)}static speak(e){return new Speak(e)}static stipple(e){return new Stipple(e)}static subform(e){return new Subform(e)}static subformSet(e){return new SubformSet(e)}static subjectDN(e){return new SubjectDN(e)}static subjectDNs(e){return new SubjectDNs(e)}static submit(e){return new Submit(e)}static template(e){return new Template(e)}static text(e){return new Text(e)}static textEdit(e){return new TextEdit(e)}static time(e){return new Time(e)}static timeStamp(e){return new TimeStamp(e)}static toolTip(e){return new ToolTip(e)}static traversal(e){return new Traversal(e)}static traverse(e){return new Traverse(e)}static ui(e){return new Ui(e)}static validate(e){return new Validate(e)}static value(e){return new Value(e)}static variables(e){return new Variables(e)}}t.TemplateNamespace=TemplateNamespace},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.addHTML=function addHTML(e,t,r){const n=e[a.$extra],s=n.availableSpace,[o,c,l,h]=r;switch(e.layout){case"position":n.width=Math.max(n.width,o+l);n.height=Math.max(n.height,c+h);n.children.push(t);break;case"lr-tb":case"rl-tb":if(!n.line||1===n.attempt){n.line=createLine(e,[]);n.children.push(n.line);n.numberInLine=0}n.numberInLine+=1;n.line.children.push(t);if(0===n.attempt){n.currentWidth+=l;n.height=Math.max(n.height,n.prevHeight+h)}else{n.currentWidth=l;n.prevHeight=n.height;n.height+=h;n.attempt=0}n.width=Math.max(n.width,n.currentWidth);break;case"rl-row":case"row":{n.children.push(t);n.width+=l;n.height=Math.max(n.height,h);const e=(0,i.measureToString)(n.height);for(const t of n.children)t.attributes.style.height=e;break}case"table":n.width=Math.min(s.width,Math.max(n.width,l));n.height+=h;n.children.push(t);break;case"tb":n.width=s.width;n.height+=h;n.children.push(t)}};t.checkDimensions=function checkDimensions(e,t){if(null===e[a.$getTemplateRoot]()[a.$extra].firstUnsplittable)return!0;if(0===e.w||0===e.h)return!0;const r=e[a.$getSubformParent](),i=r[a.$extra]&&r[a.$extra].attempt||0,[,n,s,o]=function getTransformedBBox(e){let t,r,a=""===e.w?NaN:e.w,i=""===e.h?NaN:e.h,[n,s]=[0,0];switch(e.anchorType||""){case"bottomCenter":[n,s]=[a/2,i];break;case"bottomLeft":[n,s]=[0,i];break;case"bottomRight":[n,s]=[a,i];break;case"middleCenter":[n,s]=[a/2,i/2];break;case"middleLeft":[n,s]=[0,i/2];break;case"middleRight":[n,s]=[a,i/2];break;case"topCenter":[n,s]=[a/2,0];break;case"topRight":[n,s]=[a,0]}switch(e.rotate||0){case 0:[t,r]=[-n,-s];break;case 90:[t,r]=[-s,n];[a,i]=[i,-a];break;case 180:[t,r]=[n,s];[a,i]=[-a,-i];break;case 270:[t,r]=[s,-n];[a,i]=[-i,a]}return[e.x+t+Math.min(0,a),e.y+r+Math.min(0,i),Math.abs(a),Math.abs(i)]}(e);switch(r.layout){case"lr-tb":case"rl-tb":return 0===i?e[a.$getTemplateRoot]()[a.$extra].noLayoutFailure?""!==e.w?Math.round(s-t.width)<=2:t.width>0:!(""!==e.h&&Math.round(o-t.height)>2)&&(""!==e.w?Math.round(s-t.width)<=2||0===r[a.$extra].numberInLine&&t.height>0:t.width>0):!!e[a.$getTemplateRoot]()[a.$extra].noLayoutFailure||!(""!==e.h&&Math.round(o-t.height)>2)&&((""===e.w||Math.round(s-t.width)<=2||!r[a.$isThereMoreWidth]())&&t.height>0);case"table":case"tb":return!!e[a.$getTemplateRoot]()[a.$extra].noLayoutFailure||(""===e.h||e[a.$isSplittable]()?(""===e.w||Math.round(s-t.width)<=2||!r[a.$isThereMoreWidth]())&&t.height>0:Math.round(o-t.height)<=2);case"position":if(e[a.$getTemplateRoot]()[a.$extra].noLayoutFailure)return!0;if(""===e.h||Math.round(o+n-t.height)<=2)return!0;const c=e[a.$getTemplateRoot]()[a.$extra].currentContentArea;return o+n>c.h;case"rl-row":case"row":return!!e[a.$getTemplateRoot]()[a.$extra].noLayoutFailure||(""===e.h||Math.round(o-t.height)<=2);default:return!0}};t.flushHTML=function flushHTML(e){if(!e[a.$extra])return null;const t={name:"div",attributes:e[a.$extra].attributes,children:e[a.$extra].children};if(e[a.$extra].failingNode){const r=e[a.$extra].failingNode[a.$flushHTML]();r&&(e.layout.endsWith("-tb")?t.children.push(createLine(e,[r])):t.children.push(r))}if(0===t.children.length)return null;return t};t.getAvailableSpace=function getAvailableSpace(e){const t=e[a.$extra].availableSpace,r=e.margin?e.margin.topInset+e.margin.bottomInset:0,i=e.margin?e.margin.leftInset+e.margin.rightInset:0;switch(e.layout){case"lr-tb":case"rl-tb":return 0===e[a.$extra].attempt?{width:t.width-i-e[a.$extra].currentWidth,height:t.height-r-e[a.$extra].prevHeight}:{width:t.width-i,height:t.height-r-e[a.$extra].height};case"rl-row":case"row":return{width:e[a.$extra].columnWidths.slice(e[a.$extra].currentColumn).reduce(((e,t)=>e+t)),height:t.height-i};case"table":case"tb":return{width:t.width-i,height:t.height-r-e[a.$extra].height};case"position":default:return t}};var a=r(75),i=r(82);function createLine(e,t){return{name:"div",attributes:{class:["lr-tb"===e.layout?"xfaLr":"xfaRl"]},children:t}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.computeBbox=function computeBbox(e,t,r){let i;if(""!==e.w&&""!==e.h)i=[e.x,e.y,e.w,e.h];else{if(!r)return null;let n=e.w;if(""===n){if(0===e.maxW){const t=e[a.$getSubformParent]();n="position"===t.layout&&""!==t.w?0:e.minW}else n=Math.min(e.maxW,r.width);t.attributes.style.width=measureToString(n)}let s=e.h;if(""===s){if(0===e.maxH){const t=e[a.$getSubformParent]();s="position"===t.layout&&""!==t.h?0:e.minH}else s=Math.min(e.maxH,r.height);t.attributes.style.height=measureToString(s)}i=[e.x,e.y,n,s]}return i};t.createWrapper=function createWrapper(e,t){const{attributes:r}=t,{style:i}=r,n={name:"div",attributes:{class:["xfaWrapper"],style:Object.create(null)},children:[]};r.class.push("xfaWrapped");if(e.border){const{widths:r,insets:s}=e.border[a.$extra];let o,c,l=s[0],h=s[3];const u=s[0]+s[2],d=s[1]+s[3];switch(e.border.hand){case"even":l-=r[0]/2;h-=r[3]/2;o=`calc(100% + ${(r[1]+r[3])/2-d}px)`;c=`calc(100% + ${(r[0]+r[2])/2-u}px)`;break;case"left":l-=r[0];h-=r[3];o=`calc(100% + ${r[1]+r[3]-d}px)`;c=`calc(100% + ${r[0]+r[2]-u}px)`;break;case"right":o=d?`calc(100% - ${d}px)`:"100%";c=u?`calc(100% - ${u}px)`:"100%"}const f=["xfaBorder"];isPrintOnly(e.border)&&f.push("xfaPrintOnly");const g={name:"div",attributes:{class:f,style:{top:`${l}px`,left:`${h}px`,width:o,height:c}},children:[]};for(const e of["border","borderWidth","borderColor","borderRadius","borderStyle"])if(void 0!==i[e]){g.attributes.style[e]=i[e];delete i[e]}n.children.push(g,t)}else n.children.push(t);for(const e of["background","backgroundClip","top","left","width","height","minWidth","minHeight","maxWidth","maxHeight","transform","transformOrigin","visibility"])if(void 0!==i[e]){n.attributes.style[e]=i[e];delete i[e]}"absolute"===i.position?n.attributes.style.position="absolute":n.attributes.style.position="relative";delete i.position;if(i.alignSelf){n.attributes.style.alignSelf=i.alignSelf;delete i.alignSelf}return n};t.fixDimensions=function fixDimensions(e){const t=e[a.$getSubformParent]();if(t.layout&&t.layout.includes("row")){const r=t[a.$extra],i=e.colSpan;let n;n=-1===i?r.columnWidths.slice(r.currentColumn).reduce(((e,t)=>e+t),0):r.columnWidths.slice(r.currentColumn,r.currentColumn+i).reduce(((e,t)=>e+t),0);isNaN(n)||(e.w=n)}t.layout&&"position"!==t.layout&&(e.x=e.y=0);"table"===e.layout&&""===e.w&&Array.isArray(e.columnWidths)&&(e.w=e.columnWidths.reduce(((e,t)=>e+t),0))};t.fixTextIndent=function fixTextIndent(e){const t=(0,i.getMeasurement)(e.textIndent,"0px");if(t>=0)return;const r="padding"+("left"==("right"===e.textAlign?"right":"left")?"Left":"Right"),a=(0,i.getMeasurement)(e[r],"0px");e[r]=a-t+"px"};t.isPrintOnly=isPrintOnly;t.layoutClass=function layoutClass(e){switch(e.layout){case"position":return"xfaPosition";case"lr-tb":return"xfaLrTb";case"rl-row":return"xfaRlRow";case"rl-tb":return"xfaRlTb";case"row":return"xfaRow";case"table":return"xfaTable";case"tb":return"xfaTb";default:return"xfaPosition"}};t.layoutNode=function layoutNode(e,t){let r=null,i=null,n=!1;if((!e.w||!e.h)&&e.value){let s=0,o=0;if(e.margin){s=e.margin.leftInset+e.margin.rightInset;o=e.margin.topInset+e.margin.bottomInset}let c=null,l=null;if(e.para){l=Object.create(null);c=""===e.para.lineHeight?null:e.para.lineHeight;l.top=""===e.para.spaceAbove?0:e.para.spaceAbove;l.bottom=""===e.para.spaceBelow?0:e.para.spaceBelow;l.left=""===e.para.marginLeft?0:e.para.marginLeft;l.right=""===e.para.marginRight?0:e.para.marginRight}let h=e.font;if(!h){const t=e[a.$getTemplateRoot]();let r=e[a.$getParent]();for(;r!==t;){if(r.font){h=r.font;break}r=r[a.$getParent]()}}const u=e.w?e.w:t.width,d=e[a.$globalData].fontFinder;if(e.value.exData&&e.value.exData[a.$content]&&"text/html"===e.value.exData.contentType){const t=layoutText(e.value.exData[a.$content],h,l,c,d,u);i=t.width;r=t.height;n=t.isBroken}else{const t=e.value[a.$text]();if(t){const e=layoutText(t,h,l,c,d,u);i=e.width;r=e.height;n=e.isBroken}}null===i||e.w||(i+=s);null===r||e.h||(r+=o)}return{w:i,h:r,isBroken:n}};t.measureToString=measureToString;t.setAccess=function setAccess(e,t){switch(e.access){case"nonInteractive":t.push("xfaNonInteractive");break;case"readOnly":t.push("xfaReadOnly");break;case"protected":t.push("xfaDisabled")}};t.setFontFamily=function setFontFamily(e,t,r){const a=(0,i.stripQuotes)(e.typeface),s=t.find(a);r.fontFamily=`"${a}"`;if(s){const{fontFamily:t}=s.regular.cssFontInfo;t!==a&&(r.fontFamily=`"${t}"`);if(r.lineHeight)return;const i=(0,n.selectFont)(e,s);i&&i.lineHeight>0?r.lineHeight=Math.max(1.2,i.lineHeight):r.lineHeight=1.2}};t.setMinMaxDimensions=function setMinMaxDimensions(e,t){if("position"===e[a.$getSubformParent]().layout){e.minW>0&&(t.minWidth=measureToString(e.minW));e.maxW>0&&(t.maxWidth=measureToString(e.maxW));e.minH>0&&(t.minHeight=measureToString(e.minH));e.maxH>0&&(t.maxHeight=measureToString(e.maxH))}};t.setPara=function setPara(e,t,r){if(r.attributes.class&&r.attributes.class.includes("xfaRich")){if(t){""===e.h&&(t.height="auto");""===e.w&&(t.width="auto")}if(e.para){const t=r.attributes.style;t.display="flex";t.flexDirection="column";switch(e.para.vAlign){case"top":t.justifyContent="start";break;case"bottom":t.justifyContent="end";break;case"middle":t.justifyContent="center"}const i=e.para[a.$toStyle]();for(const[e,r]of Object.entries(i))e in t||(t[e]=r)}}};t.toStyle=function toStyle(e,...t){const r=Object.create(null);for(const i of t){const t=e[i];if(null!==t)if(c.hasOwnProperty(i))c[i](e,r);else if(t instanceof a.XFAObject){const e=t[a.$toStyle]();e?Object.assign(r,e):(0,o.warn)(`(DEBUG) - XFA - style for ${i} not implemented yet`)}}return r};var a=r(75),i=r(76),n=r(83),s=r(84),o=r(2);function measureToString(e){return"string"==typeof e?"0px":Number.isInteger(e)?`${e}px`:`${e.toFixed(2)}px`}const c={anchorType(e,t){const r=e[a.$getSubformParent]();if(r&&(!r.layout||"position"===r.layout)){"transform"in t||(t.transform="");switch(e.anchorType){case"bottomCenter":t.transform+="translate(-50%, -100%)";break;case"bottomLeft":t.transform+="translate(0,-100%)";break;case"bottomRight":t.transform+="translate(-100%,-100%)";break;case"middleCenter":t.transform+="translate(-50%,-50%)";break;case"middleLeft":t.transform+="translate(0,-50%)";break;case"middleRight":t.transform+="translate(-100%,-50%)";break;case"topCenter":t.transform+="translate(-50%,0)";break;case"topRight":t.transform+="translate(-100%,0)"}}},dimensions(e,t){const r=e[a.$getSubformParent]();let i=e.w;const n=e.h;if(r.layout&&r.layout.includes("row")){const t=r[a.$extra],n=e.colSpan;let s;if(-1===n){s=t.columnWidths.slice(t.currentColumn).reduce(((e,t)=>e+t),0);t.currentColumn=0}else{s=t.columnWidths.slice(t.currentColumn,t.currentColumn+n).reduce(((e,t)=>e+t),0);t.currentColumn=(t.currentColumn+e.colSpan)%t.columnWidths.length}isNaN(s)||(i=e.w=s)}t.width=""!==i?measureToString(i):"auto";t.height=""!==n?measureToString(n):"auto"},position(e,t){const r=e[a.$getSubformParent]();if(!r||!r.layout||"position"===r.layout){t.position="absolute";t.left=measureToString(e.x);t.top=measureToString(e.y)}},rotate(e,t){if(e.rotate){"transform"in t||(t.transform="");t.transform+=`rotate(-${e.rotate}deg)`;t.transformOrigin="top left"}},presence(e,t){switch(e.presence){case"invisible":t.visibility="hidden";break;case"hidden":case"inactive":t.display="none"}},hAlign(e,t){if("para"===e[a.$nodeName])switch(e.hAlign){case"justifyAll":t.textAlign="justify-all";break;case"radix":t.textAlign="left";break;default:t.textAlign=e.hAlign}else switch(e.hAlign){case"left":t.alignSelf="start";break;case"center":t.alignSelf="center";break;case"right":t.alignSelf="end"}},margin(e,t){e.margin&&(t.margin=e.margin[a.$toStyle]().margin)}};function layoutText(e,t,r,i,n,o){const c=new s.TextMeasure(t,r,i,n);"string"==typeof e?c.addString(e):e[a.$pushGlyphs](c);return c.compute(o)}function isPrintOnly(e){return e.relevant.length>0&&!e.relevant[0].excluded&&"print"===e.relevant[0].viewname}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.selectFont=function selectFont(e,t){if("italic"===e.posture)return"bold"===e.weight?t.bolditalic:t.italic;if("bold"===e.weight)return t.bold;return t.regular};t.FontFinder=void 0;var a=r(2);t.FontFinder=class FontFinder{constructor(e){this.fonts=new Map;this.cache=new Map;this.warned=new Set;this.defaultFont=null;this.add(e)}add(e,t=null){for(const t of e)this.addPdfFont(t);for(const e of this.fonts.values())e.regular||(e.regular=e.italic||e.bold||e.bolditalic);if(!t||0===t.size)return;const r=this.fonts.get("PdfJS-Fallback-PdfJS-XFA");for(const e of t)this.fonts.set(e,r)}addPdfFont(e){const t=e.cssFontInfo,r=t.fontFamily;let a=this.fonts.get(r);if(!a){a=Object.create(null);this.fonts.set(r,a);this.defaultFont||(this.defaultFont=a)}let i="";const n=parseFloat(t.fontWeight);0!==parseFloat(t.italicAngle)?i=n>=700?"bolditalic":"italic":n>=700&&(i="bold");if(!i){(e.name.includes("Bold")||e.psName&&e.psName.includes("Bold"))&&(i="bold");(e.name.includes("Italic")||e.name.endsWith("It")||e.psName&&(e.psName.includes("Italic")||e.psName.endsWith("It")))&&(i+="italic")}i||(i="regular");a[i]=e}getDefault(){return this.defaultFont}find(e,t=!0){let r=this.fonts.get(e)||this.cache.get(e);if(r)return r;const i=/,|-|_| |bolditalic|bold|italic|regular|it/gi;let n=e.replace(i,"");r=this.fonts.get(n);if(r){this.cache.set(e,r);return r}n=n.toLowerCase();const s=[];for(const[e,t]of this.fonts.entries())e.replace(i,"").toLowerCase().startsWith(n)&&s.push(t);if(0===s.length)for(const[,e]of this.fonts.entries())e.regular.name&&e.regular.name.replace(i,"").toLowerCase().startsWith(n)&&s.push(e);if(0===s.length){n=n.replace(/psmt|mt/gi,"");for(const[e,t]of this.fonts.entries())e.replace(i,"").toLowerCase().startsWith(n)&&s.push(t)}if(0===s.length)for(const e of this.fonts.values())e.regular.name&&e.regular.name.replace(i,"").toLowerCase().startsWith(n)&&s.push(e);if(s.length>=1){1!==s.length&&t&&(0,a.warn)(`XFA - Too many choices to guess the correct font: ${e}`);this.cache.set(e,s[0]);return s[0]}if(t&&!this.warned.has(e)){this.warned.add(e);(0,a.warn)(`XFA - Cannot find the font: ${e}`)}return null}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.TextMeasure=void 0;var a=r(83);class FontInfo{constructor(e,t,r,i){this.lineHeight=r;this.paraMargin=t||{top:0,bottom:0,left:0,right:0};if(!e){[this.pdfFont,this.xfaFont]=this.defaultFont(i);return}this.xfaFont={typeface:e.typeface,posture:e.posture,weight:e.weight,size:e.size,letterSpacing:e.letterSpacing};const n=i.find(e.typeface);if(n){this.pdfFont=(0,a.selectFont)(e,n);this.pdfFont||([this.pdfFont,this.xfaFont]=this.defaultFont(i))}else[this.pdfFont,this.xfaFont]=this.defaultFont(i)}defaultFont(e){const t=e.find("Helvetica",!1)||e.find("Myriad Pro",!1)||e.find("Arial",!1)||e.getDefault();if(t&&t.regular){const e=t.regular;return[e,{typeface:e.cssFontInfo.fontFamily,posture:"normal",weight:"normal",size:10,letterSpacing:0}]}return[null,{typeface:"Courier",posture:"normal",weight:"normal",size:10,letterSpacing:0}]}}class FontSelector{constructor(e,t,r,a){this.fontFinder=a;this.stack=[new FontInfo(e,t,r,a)]}pushData(e,t,r){const a=this.stack[this.stack.length-1];for(const t of["typeface","posture","weight","size","letterSpacing"])e[t]||(e[t]=a.xfaFont[t]);for(const e of["top","bottom","left","right"])isNaN(t[e])&&(t[e]=a.paraMargin[e]);const i=new FontInfo(e,t,r||a.lineHeight,this.fontFinder);i.pdfFont||(i.pdfFont=a.pdfFont);this.stack.push(i)}popFont(){this.stack.pop()}topFont(){return this.stack[this.stack.length-1]}}t.TextMeasure=class TextMeasure{constructor(e,t,r,a){this.glyphs=[];this.fontSelector=new FontSelector(e,t,r,a);this.extraHeight=0}pushData(e,t,r){this.fontSelector.pushData(e,t,r)}popFont(e){return this.fontSelector.popFont()}addPara(){const e=this.fontSelector.topFont();this.extraHeight+=e.paraMargin.top+e.paraMargin.bottom}addString(e){if(!e)return;const t=this.fontSelector.topFont(),r=t.xfaFont.size;if(t.pdfFont){const a=t.xfaFont.letterSpacing,i=t.pdfFont,n=t.lineHeight||Math.ceil(Math.max(1.2,i.lineHeight)*r),s=r/1e3;for(const t of e.split(/[\u2029\n]/)){const e=i.encodeString(t).join(""),r=i.charsToGlyphs(e);for(const e of r)this.glyphs.push([e.width*s+a,n," "===e.unicode,!1]);this.glyphs.push([0,0,!1,!0])}this.glyphs.pop()}else{for(const t of e.split(/[\u2029\n]/)){for(const e of t.split(""))this.glyphs.push([r,r," "===e,!1]);this.glyphs.push([0,0,!1,!0])}this.glyphs.pop()}}compute(e){let t=-1,r=0,a=0,i=0,n=0,s=0,o=!1;for(let c=0,l=this.glyphs.length;ce){a=Math.max(a,n);n=0;i+=s;s=h;t=-1;r=0;o=!0}else{s=Math.max(h,s);r=n;n+=l;t=c}else if(n+l>e){i+=s;s=h;if(-1!==t){c=t;a=Math.max(a,r);n=0;t=-1;r=0}else{a=Math.max(a,n);n=l}o=!0}else{n+=l;s=Math.max(h,s)}}a=Math.max(a,n);i+=s+this.extraHeight;return{width:1.01*a,height:i,isBroken:o}}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.DataHandler=void 0;var a=r(75);t.DataHandler=class DataHandler{constructor(e,t){this.data=t;this.dataset=e.datasets||null}serialize(e){const t=[[-1,this.data[a.$getChildren]()]];for(;t.length>0;){const r=t[t.length-1],[i,n]=r;if(i+1===n.length){t.pop();continue}const s=n[++r[0]],o=e.get(s[a.$uid]);if(o)s[a.$setValue](o);else{const t=s[a.$getAttributes]();for(const r of t.values()){const t=e.get(r[a.$uid]);if(t){r[a.$setValue](t);break}}}const c=s[a.$getChildren]();c.length>0&&t.push([-1,c])}const r=[''];if(this.dataset)for(const e of this.dataset[a.$getChildren]())"data"!==e[a.$nodeName]&&e[a.$toString](r);this.data[a.$toString](r);r.push("");return r.join("")}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XFAParser=void 0;var a=r(75),i=r(68),n=r(87),s=r(2);class XFAParser extends i.XMLParserBase{constructor(){super();this._builder=new n.Builder;this._stack=[];this._globalData={usedTypefaces:new Set};this._ids=new Map;this._current=this._builder.buildRoot(this._ids);this._errorCode=i.XMLParserErrorCode.NoError;this._whiteRegex=/^\s+$/;this._nbsps=/\xa0+/g}parse(e){this.parseXml(e);if(this._errorCode===i.XMLParserErrorCode.NoError){this._current[a.$finalize]();return this._current.element}}onText(e){e=e.replace(this._nbsps,(e=>e.slice(1)+" "));this._current[a.$acceptWhitespace]()?this._current[a.$onText](e):this._whiteRegex.test(e)||this._current[a.$onText](e.trim())}onCdata(e){this._current[a.$onText](e)}_mkAttributes(e,t){let r=null,i=null;const n=Object.create({});for(const{name:o,value:c}of e)if("xmlns"===o)r?(0,s.warn)(`XFA - multiple namespace definition in <${t}>`):r=c;else if(o.startsWith("xmlns:")){const e=o.substring("xmlns:".length);i||(i=[]);i.push({prefix:e,value:c})}else{const e=o.indexOf(":");if(-1===e)n[o]=c;else{let t=n[a.$nsAttributes];t||(t=n[a.$nsAttributes]=Object.create(null));const[r,i]=[o.slice(0,e),o.slice(e+1)];let s=t[r];s||(s=t[r]=Object.create(null));s[i]=c}}return[r,i,n]}_getNameAndPrefix(e,t){const r=e.indexOf(":");return-1===r?[e,null]:[e.substring(r+1),t?"":e.substring(0,r)]}onBeginElement(e,t,r){const[i,n,s]=this._mkAttributes(t,e),[o,c]=this._getNameAndPrefix(e,this._builder.isNsAgnostic()),l=this._builder.build({nsPrefix:c,name:o,attributes:s,namespace:i,prefixes:n});l[a.$globalData]=this._globalData;if(r){l[a.$finalize]();this._current[a.$onChild](l)&&l[a.$setId](this._ids);l[a.$clean](this._builder)}else{this._stack.push(this._current);this._current=l}}onEndElement(e){const t=this._current;if(t[a.$isCDATAXml]()&&"string"==typeof t[a.$content]){const e=new XFAParser;e._globalData=this._globalData;const r=e.parse(t[a.$content]);t[a.$content]=null;t[a.$onChild](r)}t[a.$finalize]();this._current=this._stack.pop();this._current[a.$onChild](t)&&t[a.$setId](this._ids);t[a.$clean](this._builder)}onError(e){this._errorCode=e}}t.XFAParser=XFAParser},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.Builder=void 0;var a=r(77),i=r(75),n=r(88),s=r(80),o=r(97),c=r(2);class Root extends i.XFAObject{constructor(e){super(-1,"root",Object.create(null));this.element=null;this[i.$ids]=e}[i.$onChild](e){this.element=e;return!0}[i.$finalize](){super[i.$finalize]();if(this.element.template instanceof s.Template){this[i.$ids].set(i.$root,this.element);this.element.template[i.$resolvePrototypes](this[i.$ids]);this.element.template[i.$ids]=this[i.$ids]}}}class Empty extends i.XFAObject{constructor(){super(-1,"",Object.create(null))}[i.$onChild](e){return!1}}t.Builder=class Builder{constructor(){this._namespaceStack=[];this._nsAgnosticLevel=0;this._namespacePrefixes=new Map;this._namespaces=new Map;this._nextNsId=Math.max(...Object.values(a.NamespaceIds).map((({id:e})=>e)));this._currentNamespace=new o.UnknownNamespace(++this._nextNsId)}buildRoot(e){return new Root(e)}build({nsPrefix:e,name:t,attributes:r,namespace:s,prefixes:o}){const c=null!==s;if(c){this._namespaceStack.push(this._currentNamespace);this._currentNamespace=this._searchNamespace(s)}o&&this._addNamespacePrefix(o);if(r.hasOwnProperty(i.$nsAttributes)){const e=n.NamespaceSetUp.datasets,t=r[i.$nsAttributes];let a=null;for(const[r,i]of Object.entries(t)){if(this._getNamespaceToUse(r)===e){a={xfa:i};break}}a?r[i.$nsAttributes]=a:delete r[i.$nsAttributes]}const l=this._getNamespaceToUse(e),h=l&&l[a.$buildXFAObject](t,r)||new Empty;h[i.$isNsAgnostic]()&&this._nsAgnosticLevel++;(c||o||h[i.$isNsAgnostic]())&&(h[i.$cleanup]={hasNamespace:c,prefixes:o,nsAgnostic:h[i.$isNsAgnostic]()});return h}isNsAgnostic(){return this._nsAgnosticLevel>0}_searchNamespace(e){let t=this._namespaces.get(e);if(t)return t;for(const[r,{check:i}]of Object.entries(a.NamespaceIds))if(i(e)){t=n.NamespaceSetUp[r];if(t){this._namespaces.set(e,t);return t}break}t=new o.UnknownNamespace(++this._nextNsId);this._namespaces.set(e,t);return t}_addNamespacePrefix(e){for(const{prefix:t,value:r}of e){const e=this._searchNamespace(r);let a=this._namespacePrefixes.get(t);if(!a){a=[];this._namespacePrefixes.set(t,a)}a.push(e)}}_getNamespaceToUse(e){if(!e)return this._currentNamespace;const t=this._namespacePrefixes.get(e);if(t&&t.length>0)return t[t.length-1];(0,c.warn)(`Unknown namespace prefix: ${e}.`);return null}clean(e){const{hasNamespace:t,prefixes:r,nsAgnostic:a}=e;t&&(this._currentNamespace=this._namespaceStack.pop());r&&r.forEach((({prefix:e})=>{this._namespacePrefixes.get(e).pop()}));a&&this._nsAgnosticLevel--}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.NamespaceSetUp=void 0;var a=r(89),i=r(90),n=r(91),s=r(92),o=r(93),c=r(94),l=r(80),h=r(95),u=r(96);const d={config:a.ConfigNamespace,connection:i.ConnectionSetNamespace,datasets:n.DatasetsNamespace,localeSet:s.LocaleSetNamespace,signature:o.SignatureNamespace,stylesheet:c.StylesheetNamespace,template:l.TemplateNamespace,xdp:h.XdpNamespace,xhtml:u.XhtmlNamespace};t.NamespaceSetUp=d},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ConfigNamespace=void 0;var a=r(77),i=r(75),n=r(76),s=r(2);const o=a.NamespaceIds.config.id;class Acrobat extends i.XFAObject{constructor(e){super(o,"acrobat",!0);this.acrobat7=null;this.autoSave=null;this.common=null;this.validate=null;this.validateApprovalSignatures=null;this.submitUrl=new i.XFAObjectArray}}class Acrobat7 extends i.XFAObject{constructor(e){super(o,"acrobat7",!0);this.dynamicRender=null}}class ADBE_JSConsole extends i.OptionObject{constructor(e){super(o,"ADBE_JSConsole",["delegate","Enable","Disable"])}}class ADBE_JSDebugger extends i.OptionObject{constructor(e){super(o,"ADBE_JSDebugger",["delegate","Enable","Disable"])}}class AddSilentPrint extends i.Option01{constructor(e){super(o,"addSilentPrint")}}class AddViewerPreferences extends i.Option01{constructor(e){super(o,"addViewerPreferences")}}class AdjustData extends i.Option10{constructor(e){super(o,"adjustData")}}class AdobeExtensionLevel extends i.IntegerObject{constructor(e){super(o,"adobeExtensionLevel",0,(e=>e>=1&&e<=8))}}class Agent extends i.XFAObject{constructor(e){super(o,"agent",!0);this.name=e.name?e.name.trim():"";this.common=new i.XFAObjectArray}}class AlwaysEmbed extends i.ContentObject{constructor(e){super(o,"alwaysEmbed")}}class Amd extends i.StringObject{constructor(e){super(o,"amd")}}class Area extends i.XFAObject{constructor(e){super(o,"area");this.level=(0,n.getInteger)({data:e.level,defaultValue:0,validate:e=>e>=1&&e<=3});this.name=(0,n.getStringOption)(e.name,["","barcode","coreinit","deviceDriver","font","general","layout","merge","script","signature","sourceSet","templateCache"])}}class Attributes extends i.OptionObject{constructor(e){super(o,"attributes",["preserve","delegate","ignore"])}}class AutoSave extends i.OptionObject{constructor(e){super(o,"autoSave",["disabled","enabled"])}}class Base extends i.StringObject{constructor(e){super(o,"base")}}class BatchOutput extends i.XFAObject{constructor(e){super(o,"batchOutput");this.format=(0,n.getStringOption)(e.format,["none","concat","zip","zipCompress"])}}class BehaviorOverride extends i.ContentObject{constructor(e){super(o,"behaviorOverride")}[i.$finalize](){this[i.$content]=new Map(this[i.$content].trim().split(/\s+/).filter((e=>e.includes(":"))).map((e=>e.split(":",2))))}}class Cache extends i.XFAObject{constructor(e){super(o,"cache",!0);this.templateCache=null}}class Change extends i.Option01{constructor(e){super(o,"change")}}class Common extends i.XFAObject{constructor(e){super(o,"common",!0);this.data=null;this.locale=null;this.localeSet=null;this.messaging=null;this.suppressBanner=null;this.template=null;this.validationMessaging=null;this.versionControl=null;this.log=new i.XFAObjectArray}}class Compress extends i.XFAObject{constructor(e){super(o,"compress");this.scope=(0,n.getStringOption)(e.scope,["imageOnly","document"])}}class CompressLogicalStructure extends i.Option01{constructor(e){super(o,"compressLogicalStructure")}}class CompressObjectStream extends i.Option10{constructor(e){super(o,"compressObjectStream")}}class Compression extends i.XFAObject{constructor(e){super(o,"compression",!0);this.compressLogicalStructure=null;this.compressObjectStream=null;this.level=null;this.type=null}}class Config extends i.XFAObject{constructor(e){super(o,"config",!0);this.acrobat=null;this.present=null;this.trace=null;this.agent=new i.XFAObjectArray}}class Conformance extends i.OptionObject{constructor(e){super(o,"conformance",["A","B"])}}class ContentCopy extends i.Option01{constructor(e){super(o,"contentCopy")}}class Copies extends i.IntegerObject{constructor(e){super(o,"copies",1,(e=>e>=1))}}class Creator extends i.StringObject{constructor(e){super(o,"creator")}}class CurrentPage extends i.IntegerObject{constructor(e){super(o,"currentPage",0,(e=>e>=0))}}class Data extends i.XFAObject{constructor(e){super(o,"data",!0);this.adjustData=null;this.attributes=null;this.incrementalLoad=null;this.outputXSL=null;this.range=null;this.record=null;this.startNode=null;this.uri=null;this.window=null;this.xsl=null;this.excludeNS=new i.XFAObjectArray;this.transform=new i.XFAObjectArray}}class Debug extends i.XFAObject{constructor(e){super(o,"debug",!0);this.uri=null}}class DefaultTypeface extends i.ContentObject{constructor(e){super(o,"defaultTypeface");this.writingScript=(0,n.getStringOption)(e.writingScript,["*","Arabic","Cyrillic","EastEuropeanRoman","Greek","Hebrew","Japanese","Korean","Roman","SimplifiedChinese","Thai","TraditionalChinese","Vietnamese"])}}class Destination extends i.OptionObject{constructor(e){super(o,"destination",["pdf","pcl","ps","webClient","zpl"])}}class DocumentAssembly extends i.Option01{constructor(e){super(o,"documentAssembly")}}class Driver extends i.XFAObject{constructor(e){super(o,"driver",!0);this.name=e.name?e.name.trim():"";this.fontInfo=null;this.xdc=null}}class DuplexOption extends i.OptionObject{constructor(e){super(o,"duplexOption",["simplex","duplexFlipLongEdge","duplexFlipShortEdge"])}}class DynamicRender extends i.OptionObject{constructor(e){super(o,"dynamicRender",["forbidden","required"])}}class Embed extends i.Option01{constructor(e){super(o,"embed")}}class Encrypt extends i.Option01{constructor(e){super(o,"encrypt")}}class Encryption extends i.XFAObject{constructor(e){super(o,"encryption",!0);this.encrypt=null;this.encryptionLevel=null;this.permissions=null}}class EncryptionLevel extends i.OptionObject{constructor(e){super(o,"encryptionLevel",["40bit","128bit"])}}class Enforce extends i.StringObject{constructor(e){super(o,"enforce")}}class Equate extends i.XFAObject{constructor(e){super(o,"equate");this.force=(0,n.getInteger)({data:e.force,defaultValue:1,validate:e=>0===e});this.from=e.from||"";this.to=e.to||""}}class EquateRange extends i.XFAObject{constructor(e){super(o,"equateRange");this.from=e.from||"";this.to=e.to||"";this._unicodeRange=e.unicodeRange||""}get unicodeRange(){const e=[],t=/U\+([0-9a-fA-F]+)/,r=this._unicodeRange;for(let a of r.split(",").map((e=>e.trim())).filter((e=>!!e))){a=a.split("-",2).map((e=>{const r=e.match(t);return r?parseInt(r[1],16):0}));1===a.length&&a.push(a[0]);e.push(a)}return(0,s.shadow)(this,"unicodeRange",e)}}class Exclude extends i.ContentObject{constructor(e){super(o,"exclude")}[i.$finalize](){this[i.$content]=this[i.$content].trim().split(/\s+/).filter((e=>e&&["calculate","close","enter","exit","initialize","ready","validate"].includes(e)))}}class ExcludeNS extends i.StringObject{constructor(e){super(o,"excludeNS")}}class FlipLabel extends i.OptionObject{constructor(e){super(o,"flipLabel",["usePrinterSetting","on","off"])}}class FontInfo extends i.XFAObject{constructor(e){super(o,"fontInfo",!0);this.embed=null;this.map=null;this.subsetBelow=null;this.alwaysEmbed=new i.XFAObjectArray;this.defaultTypeface=new i.XFAObjectArray;this.neverEmbed=new i.XFAObjectArray}}class FormFieldFilling extends i.Option01{constructor(e){super(o,"formFieldFilling")}}class GroupParent extends i.StringObject{constructor(e){super(o,"groupParent")}}class IfEmpty extends i.OptionObject{constructor(e){super(o,"ifEmpty",["dataValue","dataGroup","ignore","remove"])}}class IncludeXDPContent extends i.StringObject{constructor(e){super(o,"includeXDPContent")}}class IncrementalLoad extends i.OptionObject{constructor(e){super(o,"incrementalLoad",["none","forwardOnly"])}}class IncrementalMerge extends i.Option01{constructor(e){super(o,"incrementalMerge")}}class Interactive extends i.Option01{constructor(e){super(o,"interactive")}}class Jog extends i.OptionObject{constructor(e){super(o,"jog",["usePrinterSetting","none","pageSet"])}}class LabelPrinter extends i.XFAObject{constructor(e){super(o,"labelPrinter",!0);this.name=(0,n.getStringOption)(e.name,["zpl","dpl","ipl","tcpl"]);this.batchOutput=null;this.flipLabel=null;this.fontInfo=null;this.xdc=null}}class Layout extends i.OptionObject{constructor(e){super(o,"layout",["paginate","panel"])}}class Level extends i.IntegerObject{constructor(e){super(o,"level",0,(e=>e>0))}}class Linearized extends i.Option01{constructor(e){super(o,"linearized")}}class Locale extends i.StringObject{constructor(e){super(o,"locale")}}class LocaleSet extends i.StringObject{constructor(e){super(o,"localeSet")}}class Log extends i.XFAObject{constructor(e){super(o,"log",!0);this.mode=null;this.threshold=null;this.to=null;this.uri=null}}class MapElement extends i.XFAObject{constructor(e){super(o,"map",!0);this.equate=new i.XFAObjectArray;this.equateRange=new i.XFAObjectArray}}class MediumInfo extends i.XFAObject{constructor(e){super(o,"mediumInfo",!0);this.map=null}}class Message extends i.XFAObject{constructor(e){super(o,"message",!0);this.msgId=null;this.severity=null}}class Messaging extends i.XFAObject{constructor(e){super(o,"messaging",!0);this.message=new i.XFAObjectArray}}class Mode extends i.OptionObject{constructor(e){super(o,"mode",["append","overwrite"])}}class ModifyAnnots extends i.Option01{constructor(e){super(o,"modifyAnnots")}}class MsgId extends i.IntegerObject{constructor(e){super(o,"msgId",1,(e=>e>=1))}}class NameAttr extends i.StringObject{constructor(e){super(o,"nameAttr")}}class NeverEmbed extends i.ContentObject{constructor(e){super(o,"neverEmbed")}}class NumberOfCopies extends i.IntegerObject{constructor(e){super(o,"numberOfCopies",null,(e=>e>=2&&e<=5))}}class OpenAction extends i.XFAObject{constructor(e){super(o,"openAction",!0);this.destination=null}}class Output extends i.XFAObject{constructor(e){super(o,"output",!0);this.to=null;this.type=null;this.uri=null}}class OutputBin extends i.StringObject{constructor(e){super(o,"outputBin")}}class OutputXSL extends i.XFAObject{constructor(e){super(o,"outputXSL",!0);this.uri=null}}class Overprint extends i.OptionObject{constructor(e){super(o,"overprint",["none","both","draw","field"])}}class Packets extends i.StringObject{constructor(e){super(o,"packets")}[i.$finalize](){"*"!==this[i.$content]&&(this[i.$content]=this[i.$content].trim().split(/\s+/).filter((e=>["config","datasets","template","xfdf","xslt"].includes(e))))}}class PageOffset extends i.XFAObject{constructor(e){super(o,"pageOffset");this.x=(0,n.getInteger)({data:e.x,defaultValue:"useXDCSetting",validate:e=>!0});this.y=(0,n.getInteger)({data:e.y,defaultValue:"useXDCSetting",validate:e=>!0})}}class PageRange extends i.StringObject{constructor(e){super(o,"pageRange")}[i.$finalize](){const e=this[i.$content].trim().split(/\s+/).map((e=>parseInt(e,10))),t=[];for(let r=0,a=e.length;r!1))}}class Pcl extends i.XFAObject{constructor(e){super(o,"pcl",!0);this.name=e.name||"";this.batchOutput=null;this.fontInfo=null;this.jog=null;this.mediumInfo=null;this.outputBin=null;this.pageOffset=null;this.staple=null;this.xdc=null}}class Pdf extends i.XFAObject{constructor(e){super(o,"pdf",!0);this.name=e.name||"";this.adobeExtensionLevel=null;this.batchOutput=null;this.compression=null;this.creator=null;this.encryption=null;this.fontInfo=null;this.interactive=null;this.linearized=null;this.openAction=null;this.pdfa=null;this.producer=null;this.renderPolicy=null;this.scriptModel=null;this.silentPrint=null;this.submitFormat=null;this.tagged=null;this.version=null;this.viewerPreferences=null;this.xdc=null}}class Pdfa extends i.XFAObject{constructor(e){super(o,"pdfa",!0);this.amd=null;this.conformance=null;this.includeXDPContent=null;this.part=null}}class Permissions extends i.XFAObject{constructor(e){super(o,"permissions",!0);this.accessibleContent=null;this.change=null;this.contentCopy=null;this.documentAssembly=null;this.formFieldFilling=null;this.modifyAnnots=null;this.plaintextMetadata=null;this.print=null;this.printHighQuality=null}}class PickTrayByPDFSize extends i.Option01{constructor(e){super(o,"pickTrayByPDFSize")}}class Picture extends i.StringObject{constructor(e){super(o,"picture")}}class PlaintextMetadata extends i.Option01{constructor(e){super(o,"plaintextMetadata")}}class Presence extends i.OptionObject{constructor(e){super(o,"presence",["preserve","dissolve","dissolveStructure","ignore","remove"])}}class Present extends i.XFAObject{constructor(e){super(o,"present",!0);this.behaviorOverride=null;this.cache=null;this.common=null;this.copies=null;this.destination=null;this.incrementalMerge=null;this.layout=null;this.output=null;this.overprint=null;this.pagination=null;this.paginationOverride=null;this.script=null;this.validate=null;this.xdp=null;this.driver=new i.XFAObjectArray;this.labelPrinter=new i.XFAObjectArray;this.pcl=new i.XFAObjectArray;this.pdf=new i.XFAObjectArray;this.ps=new i.XFAObjectArray;this.submitUrl=new i.XFAObjectArray;this.webClient=new i.XFAObjectArray;this.zpl=new i.XFAObjectArray}}class Print extends i.Option01{constructor(e){super(o,"print")}}class PrintHighQuality extends i.Option01{constructor(e){super(o,"printHighQuality")}}class PrintScaling extends i.OptionObject{constructor(e){super(o,"printScaling",["appdefault","noScaling"])}}class PrinterName extends i.StringObject{constructor(e){super(o,"printerName")}}class Producer extends i.StringObject{constructor(e){super(o,"producer")}}class Ps extends i.XFAObject{constructor(e){super(o,"ps",!0);this.name=e.name||"";this.batchOutput=null;this.fontInfo=null;this.jog=null;this.mediumInfo=null;this.outputBin=null;this.staple=null;this.xdc=null}}class Range extends i.ContentObject{constructor(e){super(o,"range")}[i.$finalize](){this[i.$content]=this[i.$content].trim().split(/\s*,\s*/,2).map((e=>e.split("-").map((e=>parseInt(e.trim(),10))))).filter((e=>e.every((e=>!isNaN(e))))).map((e=>{1===e.length&&e.push(e[0]);return e}))}}class Record extends i.ContentObject{constructor(e){super(o,"record")}[i.$finalize](){this[i.$content]=this[i.$content].trim();const e=parseInt(this[i.$content],10);!isNaN(e)&&e>=0&&(this[i.$content]=e)}}class Relevant extends i.ContentObject{constructor(e){super(o,"relevant")}[i.$finalize](){this[i.$content]=this[i.$content].trim().split(/\s+/)}}class Rename extends i.ContentObject{constructor(e){super(o,"rename")}[i.$finalize](){this[i.$content]=this[i.$content].trim();(this[i.$content].toLowerCase().startsWith("xml")||this[i.$content].match(new RegExp("[\\p{L}_][\\p{L}\\d._\\p{M}-]*","u")))&&(0,s.warn)("XFA - Rename: invalid XFA name")}}class RenderPolicy extends i.OptionObject{constructor(e){super(o,"renderPolicy",["server","client"])}}class RunScripts extends i.OptionObject{constructor(e){super(o,"runScripts",["both","client","none","server"])}}class Script extends i.XFAObject{constructor(e){super(o,"script",!0);this.currentPage=null;this.exclude=null;this.runScripts=null}}class ScriptModel extends i.OptionObject{constructor(e){super(o,"scriptModel",["XFA","none"])}}class Severity extends i.OptionObject{constructor(e){super(o,"severity",["ignore","error","information","trace","warning"])}}class SilentPrint extends i.XFAObject{constructor(e){super(o,"silentPrint",!0);this.addSilentPrint=null;this.printerName=null}}class Staple extends i.XFAObject{constructor(e){super(o,"staple");this.mode=(0,n.getStringOption)(e.mode,["usePrinterSetting","on","off"])}}class StartNode extends i.StringObject{constructor(e){super(o,"startNode")}}class StartPage extends i.IntegerObject{constructor(e){super(o,"startPage",0,(e=>!0))}}class SubmitFormat extends i.OptionObject{constructor(e){super(o,"submitFormat",["html","delegate","fdf","xml","pdf"])}}class SubmitUrl extends i.StringObject{constructor(e){super(o,"submitUrl")}}class SubsetBelow extends i.IntegerObject{constructor(e){super(o,"subsetBelow",100,(e=>e>=0&&e<=100))}}class SuppressBanner extends i.Option01{constructor(e){super(o,"suppressBanner")}}class Tagged extends i.Option01{constructor(e){super(o,"tagged")}}class Template extends i.XFAObject{constructor(e){super(o,"template",!0);this.base=null;this.relevant=null;this.startPage=null;this.uri=null;this.xsl=null}}class Threshold extends i.OptionObject{constructor(e){super(o,"threshold",["trace","error","information","warning"])}}class To extends i.OptionObject{constructor(e){super(o,"to",["null","memory","stderr","stdout","system","uri"])}}class TemplateCache extends i.XFAObject{constructor(e){super(o,"templateCache");this.maxEntries=(0,n.getInteger)({data:e.maxEntries,defaultValue:5,validate:e=>e>=0})}}class Trace extends i.XFAObject{constructor(e){super(o,"trace",!0);this.area=new i.XFAObjectArray}}class Transform extends i.XFAObject{constructor(e){super(o,"transform",!0);this.groupParent=null;this.ifEmpty=null;this.nameAttr=null;this.picture=null;this.presence=null;this.rename=null;this.whitespace=null}}class Type extends i.OptionObject{constructor(e){super(o,"type",["none","ascii85","asciiHex","ccittfax","flate","lzw","runLength","native","xdp","mergedXDP"])}}class Uri extends i.StringObject{constructor(e){super(o,"uri")}}class Validate extends i.OptionObject{constructor(e){super(o,"validate",["preSubmit","prePrint","preExecute","preSave"])}}class ValidateApprovalSignatures extends i.ContentObject{constructor(e){super(o,"validateApprovalSignatures")}[i.$finalize](){this[i.$content]=this[i.$content].trim().split(/\s+/).filter((e=>["docReady","postSign"].includes(e)))}}class ValidationMessaging extends i.OptionObject{constructor(e){super(o,"validationMessaging",["allMessagesIndividually","allMessagesTogether","firstMessageOnly","noMessages"])}}class Version extends i.OptionObject{constructor(e){super(o,"version",["1.7","1.6","1.5","1.4","1.3","1.2"])}}class VersionControl extends i.XFAObject{constructor(e){super(o,"VersionControl");this.outputBelow=(0,n.getStringOption)(e.outputBelow,["warn","error","update"]);this.sourceAbove=(0,n.getStringOption)(e.sourceAbove,["warn","error"]);this.sourceBelow=(0,n.getStringOption)(e.sourceBelow,["update","maintain"])}}class ViewerPreferences extends i.XFAObject{constructor(e){super(o,"viewerPreferences",!0);this.ADBE_JSConsole=null;this.ADBE_JSDebugger=null;this.addViewerPreferences=null;this.duplexOption=null;this.enforce=null;this.numberOfCopies=null;this.pageRange=null;this.pickTrayByPDFSize=null;this.printScaling=null}}class WebClient extends i.XFAObject{constructor(e){super(o,"webClient",!0);this.name=e.name?e.name.trim():"";this.fontInfo=null;this.xdc=null}}class Whitespace extends i.OptionObject{constructor(e){super(o,"whitespace",["preserve","ltrim","normalize","rtrim","trim"])}}class Window extends i.ContentObject{constructor(e){super(o,"window")}[i.$finalize](){const e=this[i.$content].trim().split(/\s*,\s*/,2).map((e=>parseInt(e,10)));if(e.some((e=>isNaN(e))))this[i.$content]=[0,0];else{1===e.length&&e.push(e[0]);this[i.$content]=e}}}class Xdc extends i.XFAObject{constructor(e){super(o,"xdc",!0);this.uri=new i.XFAObjectArray;this.xsl=new i.XFAObjectArray}}class Xdp extends i.XFAObject{constructor(e){super(o,"xdp",!0);this.packets=null}}class Xsl extends i.XFAObject{constructor(e){super(o,"xsl",!0);this.debug=null;this.uri=null}}class Zpl extends i.XFAObject{constructor(e){super(o,"zpl",!0);this.name=e.name?e.name.trim():"";this.batchOutput=null;this.flipLabel=null;this.fontInfo=null;this.xdc=null}}class ConfigNamespace{static[a.$buildXFAObject](e,t){if(ConfigNamespace.hasOwnProperty(e))return ConfigNamespace[e](t)}static acrobat(e){return new Acrobat(e)}static acrobat7(e){return new Acrobat7(e)}static ADBE_JSConsole(e){return new ADBE_JSConsole(e)}static ADBE_JSDebugger(e){return new ADBE_JSDebugger(e)}static addSilentPrint(e){return new AddSilentPrint(e)}static addViewerPreferences(e){return new AddViewerPreferences(e)}static adjustData(e){return new AdjustData(e)}static adobeExtensionLevel(e){return new AdobeExtensionLevel(e)}static agent(e){return new Agent(e)}static alwaysEmbed(e){return new AlwaysEmbed(e)}static amd(e){return new Amd(e)}static area(e){return new Area(e)}static attributes(e){return new Attributes(e)}static autoSave(e){return new AutoSave(e)}static base(e){return new Base(e)}static batchOutput(e){return new BatchOutput(e)}static behaviorOverride(e){return new BehaviorOverride(e)}static cache(e){return new Cache(e)}static change(e){return new Change(e)}static common(e){return new Common(e)}static compress(e){return new Compress(e)}static compressLogicalStructure(e){return new CompressLogicalStructure(e)}static compressObjectStream(e){return new CompressObjectStream(e)}static compression(e){return new Compression(e)}static config(e){return new Config(e)}static conformance(e){return new Conformance(e)}static contentCopy(e){return new ContentCopy(e)}static copies(e){return new Copies(e)}static creator(e){return new Creator(e)}static currentPage(e){return new CurrentPage(e)}static data(e){return new Data(e)}static debug(e){return new Debug(e)}static defaultTypeface(e){return new DefaultTypeface(e)}static destination(e){return new Destination(e)}static documentAssembly(e){return new DocumentAssembly(e)}static driver(e){return new Driver(e)}static duplexOption(e){return new DuplexOption(e)}static dynamicRender(e){return new DynamicRender(e)}static embed(e){return new Embed(e)}static encrypt(e){return new Encrypt(e)}static encryption(e){return new Encryption(e)}static encryptionLevel(e){return new EncryptionLevel(e)}static enforce(e){return new Enforce(e)}static equate(e){return new Equate(e)}static equateRange(e){return new EquateRange(e)}static exclude(e){return new Exclude(e)}static excludeNS(e){return new ExcludeNS(e)}static flipLabel(e){return new FlipLabel(e)}static fontInfo(e){return new FontInfo(e)}static formFieldFilling(e){return new FormFieldFilling(e)}static groupParent(e){return new GroupParent(e)}static ifEmpty(e){return new IfEmpty(e)}static includeXDPContent(e){return new IncludeXDPContent(e)}static incrementalLoad(e){return new IncrementalLoad(e)}static incrementalMerge(e){return new IncrementalMerge(e)}static interactive(e){return new Interactive(e)}static jog(e){return new Jog(e)}static labelPrinter(e){return new LabelPrinter(e)}static layout(e){return new Layout(e)}static level(e){return new Level(e)}static linearized(e){return new Linearized(e)}static locale(e){return new Locale(e)}static localeSet(e){return new LocaleSet(e)}static log(e){return new Log(e)}static map(e){return new MapElement(e)}static mediumInfo(e){return new MediumInfo(e)}static message(e){return new Message(e)}static messaging(e){return new Messaging(e)}static mode(e){return new Mode(e)}static modifyAnnots(e){return new ModifyAnnots(e)}static msgId(e){return new MsgId(e)}static nameAttr(e){return new NameAttr(e)}static neverEmbed(e){return new NeverEmbed(e)}static numberOfCopies(e){return new NumberOfCopies(e)}static openAction(e){return new OpenAction(e)}static output(e){return new Output(e)}static outputBin(e){return new OutputBin(e)}static outputXSL(e){return new OutputXSL(e)}static overprint(e){return new Overprint(e)}static packets(e){return new Packets(e)}static pageOffset(e){return new PageOffset(e)}static pageRange(e){return new PageRange(e)}static pagination(e){return new Pagination(e)}static paginationOverride(e){return new PaginationOverride(e)}static part(e){return new Part(e)}static pcl(e){return new Pcl(e)}static pdf(e){return new Pdf(e)}static pdfa(e){return new Pdfa(e)}static permissions(e){return new Permissions(e)}static pickTrayByPDFSize(e){return new PickTrayByPDFSize(e)}static picture(e){return new Picture(e)}static plaintextMetadata(e){return new PlaintextMetadata(e)}static presence(e){return new Presence(e)}static present(e){return new Present(e)}static print(e){return new Print(e)}static printHighQuality(e){return new PrintHighQuality(e)}static printScaling(e){return new PrintScaling(e)}static printerName(e){return new PrinterName(e)}static producer(e){return new Producer(e)}static ps(e){return new Ps(e)}static range(e){return new Range(e)}static record(e){return new Record(e)}static relevant(e){return new Relevant(e)}static rename(e){return new Rename(e)}static renderPolicy(e){return new RenderPolicy(e)}static runScripts(e){return new RunScripts(e)}static script(e){return new Script(e)}static scriptModel(e){return new ScriptModel(e)}static severity(e){return new Severity(e)}static silentPrint(e){return new SilentPrint(e)}static staple(e){return new Staple(e)}static startNode(e){return new StartNode(e)}static startPage(e){return new StartPage(e)}static submitFormat(e){return new SubmitFormat(e)}static submitUrl(e){return new SubmitUrl(e)}static subsetBelow(e){return new SubsetBelow(e)}static suppressBanner(e){return new SuppressBanner(e)}static tagged(e){return new Tagged(e)}static template(e){return new Template(e)}static templateCache(e){return new TemplateCache(e)}static threshold(e){return new Threshold(e)}static to(e){return new To(e)}static trace(e){return new Trace(e)}static transform(e){return new Transform(e)}static type(e){return new Type(e)}static uri(e){return new Uri(e)}static validate(e){return new Validate(e)}static validateApprovalSignatures(e){return new ValidateApprovalSignatures(e)}static validationMessaging(e){return new ValidationMessaging(e)}static version(e){return new Version(e)}static versionControl(e){return new VersionControl(e)}static viewerPreferences(e){return new ViewerPreferences(e)}static webClient(e){return new WebClient(e)}static whitespace(e){return new Whitespace(e)}static window(e){return new Window(e)}static xdc(e){return new Xdc(e)}static xdp(e){return new Xdp(e)}static xsl(e){return new Xsl(e)}static zpl(e){return new Zpl(e)}}t.ConfigNamespace=ConfigNamespace},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.ConnectionSetNamespace=void 0;var a=r(77),i=r(75);const n=a.NamespaceIds.connectionSet.id;class ConnectionSet extends i.XFAObject{constructor(e){super(n,"connectionSet",!0);this.wsdlConnection=new i.XFAObjectArray;this.xmlConnection=new i.XFAObjectArray;this.xsdConnection=new i.XFAObjectArray}}class EffectiveInputPolicy extends i.XFAObject{constructor(e){super(n,"effectiveInputPolicy");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class EffectiveOutputPolicy extends i.XFAObject{constructor(e){super(n,"effectiveOutputPolicy");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Operation extends i.StringObject{constructor(e){super(n,"operation");this.id=e.id||"";this.input=e.input||"";this.name=e.name||"";this.output=e.output||"";this.use=e.use||"";this.usehref=e.usehref||""}}class RootElement extends i.StringObject{constructor(e){super(n,"rootElement");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class SoapAction extends i.StringObject{constructor(e){super(n,"soapAction");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class SoapAddress extends i.StringObject{constructor(e){super(n,"soapAddress");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class Uri extends i.StringObject{constructor(e){super(n,"uri");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class WsdlAddress extends i.StringObject{constructor(e){super(n,"wsdlAddress");this.id=e.id||"";this.name=e.name||"";this.use=e.use||"";this.usehref=e.usehref||""}}class WsdlConnection extends i.XFAObject{constructor(e){super(n,"wsdlConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.effectiveInputPolicy=null;this.effectiveOutputPolicy=null;this.operation=null;this.soapAction=null;this.soapAddress=null;this.wsdlAddress=null}}class XmlConnection extends i.XFAObject{constructor(e){super(n,"xmlConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.uri=null}}class XsdConnection extends i.XFAObject{constructor(e){super(n,"xsdConnection",!0);this.dataDescription=e.dataDescription||"";this.name=e.name||"";this.rootElement=null;this.uri=null}}class ConnectionSetNamespace{static[a.$buildXFAObject](e,t){if(ConnectionSetNamespace.hasOwnProperty(e))return ConnectionSetNamespace[e](t)}static connectionSet(e){return new ConnectionSet(e)}static effectiveInputPolicy(e){return new EffectiveInputPolicy(e)}static effectiveOutputPolicy(e){return new EffectiveOutputPolicy(e)}static operation(e){return new Operation(e)}static rootElement(e){return new RootElement(e)}static soapAction(e){return new SoapAction(e)}static soapAddress(e){return new SoapAddress(e)}static uri(e){return new Uri(e)}static wsdlAddress(e){return new WsdlAddress(e)}static wsdlConnection(e){return new WsdlConnection(e)}static xmlConnection(e){return new XmlConnection(e)}static xsdConnection(e){return new XsdConnection(e)}}t.ConnectionSetNamespace=ConnectionSetNamespace},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.DatasetsNamespace=void 0;var a=r(75),i=r(77);const n=i.NamespaceIds.datasets.id;class Data extends a.XmlObject{constructor(e){super(n,"data",e)}[a.$isNsAgnostic](){return!0}}class Datasets extends a.XFAObject{constructor(e){super(n,"datasets",!0);this.data=null;this.Signature=null}[a.$onChild](e){const t=e[a.$nodeName];("data"===t&&e[a.$namespaceId]===n||"Signature"===t&&e[a.$namespaceId]===i.NamespaceIds.signature.id)&&(this[t]=e);this[a.$appendChild](e)}}class DatasetsNamespace{static[i.$buildXFAObject](e,t){if(DatasetsNamespace.hasOwnProperty(e))return DatasetsNamespace[e](t)}static datasets(e){return new Datasets(e)}static data(e){return new Data(e)}}t.DatasetsNamespace=DatasetsNamespace},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.LocaleSetNamespace=void 0;var a=r(77),i=r(75),n=r(76);const s=a.NamespaceIds.localeSet.id;class CalendarSymbols extends i.XFAObject{constructor(e){super(s,"calendarSymbols",!0);this.name="gregorian";this.dayNames=new i.XFAObjectArray(2);this.eraNames=null;this.meridiemNames=null;this.monthNames=new i.XFAObjectArray(2)}}class CurrencySymbol extends i.StringObject{constructor(e){super(s,"currencySymbol");this.name=(0,n.getStringOption)(e.name,["symbol","isoname","decimal"])}}class CurrencySymbols extends i.XFAObject{constructor(e){super(s,"currencySymbols",!0);this.currencySymbol=new i.XFAObjectArray(3)}}class DatePattern extends i.StringObject{constructor(e){super(s,"datePattern");this.name=(0,n.getStringOption)(e.name,["full","long","med","short"])}}class DatePatterns extends i.XFAObject{constructor(e){super(s,"datePatterns",!0);this.datePattern=new i.XFAObjectArray(4)}}class DateTimeSymbols extends i.ContentObject{constructor(e){super(s,"dateTimeSymbols")}}class Day extends i.StringObject{constructor(e){super(s,"day")}}class DayNames extends i.XFAObject{constructor(e){super(s,"dayNames",!0);this.abbr=(0,n.getInteger)({data:e.abbr,defaultValue:0,validate:e=>1===e});this.day=new i.XFAObjectArray(7)}}class Era extends i.StringObject{constructor(e){super(s,"era")}}class EraNames extends i.XFAObject{constructor(e){super(s,"eraNames",!0);this.era=new i.XFAObjectArray(2)}}class Locale extends i.XFAObject{constructor(e){super(s,"locale",!0);this.desc=e.desc||"";this.name="isoname";this.calendarSymbols=null;this.currencySymbols=null;this.datePatterns=null;this.dateTimeSymbols=null;this.numberPatterns=null;this.numberSymbols=null;this.timePatterns=null;this.typeFaces=null}}class LocaleSet extends i.XFAObject{constructor(e){super(s,"localeSet",!0);this.locale=new i.XFAObjectArray}}class Meridiem extends i.StringObject{constructor(e){super(s,"meridiem")}}class MeridiemNames extends i.XFAObject{constructor(e){super(s,"meridiemNames",!0);this.meridiem=new i.XFAObjectArray(2)}}class Month extends i.StringObject{constructor(e){super(s,"month")}}class MonthNames extends i.XFAObject{constructor(e){super(s,"monthNames",!0);this.abbr=(0,n.getInteger)({data:e.abbr,defaultValue:0,validate:e=>1===e});this.month=new i.XFAObjectArray(12)}}class NumberPattern extends i.StringObject{constructor(e){super(s,"numberPattern");this.name=(0,n.getStringOption)(e.name,["full","long","med","short"])}}class NumberPatterns extends i.XFAObject{constructor(e){super(s,"numberPatterns",!0);this.numberPattern=new i.XFAObjectArray(4)}}class NumberSymbol extends i.StringObject{constructor(e){super(s,"numberSymbol");this.name=(0,n.getStringOption)(e.name,["decimal","grouping","percent","minus","zero"])}}class NumberSymbols extends i.XFAObject{constructor(e){super(s,"numberSymbols",!0);this.numberSymbol=new i.XFAObjectArray(5)}}class TimePattern extends i.StringObject{constructor(e){super(s,"timePattern");this.name=(0,n.getStringOption)(e.name,["full","long","med","short"])}}class TimePatterns extends i.XFAObject{constructor(e){super(s,"timePatterns",!0);this.timePattern=new i.XFAObjectArray(4)}}class TypeFace extends i.XFAObject{constructor(e){super(s,"typeFace",!0);this.name=""|e.name}}class TypeFaces extends i.XFAObject{constructor(e){super(s,"typeFaces",!0);this.typeFace=new i.XFAObjectArray}}class LocaleSetNamespace{static[a.$buildXFAObject](e,t){if(LocaleSetNamespace.hasOwnProperty(e))return LocaleSetNamespace[e](t)}static calendarSymbols(e){return new CalendarSymbols(e)}static currencySymbol(e){return new CurrencySymbol(e)}static currencySymbols(e){return new CurrencySymbols(e)}static datePattern(e){return new DatePattern(e)}static datePatterns(e){return new DatePatterns(e)}static dateTimeSymbols(e){return new DateTimeSymbols(e)}static day(e){return new Day(e)}static dayNames(e){return new DayNames(e)}static era(e){return new Era(e)}static eraNames(e){return new EraNames(e)}static locale(e){return new Locale(e)}static localeSet(e){return new LocaleSet(e)}static meridiem(e){return new Meridiem(e)}static meridiemNames(e){return new MeridiemNames(e)}static month(e){return new Month(e)}static monthNames(e){return new MonthNames(e)}static numberPattern(e){return new NumberPattern(e)}static numberPatterns(e){return new NumberPatterns(e)}static numberSymbol(e){return new NumberSymbol(e)}static numberSymbols(e){return new NumberSymbols(e)}static timePattern(e){return new TimePattern(e)}static timePatterns(e){return new TimePatterns(e)}static typeFace(e){return new TypeFace(e)}static typeFaces(e){return new TypeFaces(e)}}t.LocaleSetNamespace=LocaleSetNamespace},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.SignatureNamespace=void 0;var a=r(77),i=r(75);const n=a.NamespaceIds.signature.id;class Signature extends i.XFAObject{constructor(e){super(n,"signature",!0)}}class SignatureNamespace{static[a.$buildXFAObject](e,t){if(SignatureNamespace.hasOwnProperty(e))return SignatureNamespace[e](t)}static signature(e){return new Signature(e)}}t.SignatureNamespace=SignatureNamespace},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.StylesheetNamespace=void 0;var a=r(77),i=r(75);const n=a.NamespaceIds.stylesheet.id;class Stylesheet extends i.XFAObject{constructor(e){super(n,"stylesheet",!0)}}class StylesheetNamespace{static[a.$buildXFAObject](e,t){if(StylesheetNamespace.hasOwnProperty(e))return StylesheetNamespace[e](t)}static stylesheet(e){return new Stylesheet(e)}}t.StylesheetNamespace=StylesheetNamespace},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XdpNamespace=void 0;var a=r(77),i=r(75);const n=a.NamespaceIds.xdp.id;class Xdp extends i.XFAObject{constructor(e){super(n,"xdp",!0);this.uuid=e.uuid||"";this.timeStamp=e.timeStamp||"";this.config=null;this.connectionSet=null;this.datasets=null;this.localeSet=null;this.stylesheet=new i.XFAObjectArray;this.template=null}[i.$onChildCheck](e){const t=a.NamespaceIds[e[i.$nodeName]];return t&&e[i.$namespaceId]===t.id}}class XdpNamespace{static[a.$buildXFAObject](e,t){if(XdpNamespace.hasOwnProperty(e))return XdpNamespace[e](t)}static xdp(e){return new Xdp(e)}}t.XdpNamespace=XdpNamespace},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XhtmlNamespace=void 0;var a=r(75),i=r(77),n=r(82),s=r(76);const o=i.NamespaceIds.xhtml.id,c=new Set(["color","font","font-family","font-size","font-stretch","font-style","font-weight","margin","margin-bottom","margin-left","margin-right","margin-top","letter-spacing","line-height","orphans","page-break-after","page-break-before","page-break-inside","tab-interval","tab-stop","text-align","text-decoration","text-indent","vertical-align","widows","kerning-mode","xfa-font-horizontal-scale","xfa-font-vertical-scale","xfa-spacerun","xfa-tab-stops"]),l=new Map([["page-break-after","breakAfter"],["page-break-before","breakBefore"],["page-break-inside","breakInside"],["kerning-mode",e=>"none"===e?"none":"normal"],["xfa-font-horizontal-scale",e=>`scaleX(${Math.max(0,Math.min(parseInt(e)/100)).toFixed(2)})`],["xfa-font-vertical-scale",e=>`scaleY(${Math.max(0,Math.min(parseInt(e)/100)).toFixed(2)})`],["xfa-spacerun",""],["xfa-tab-stops",""],["font-size",(e,t)=>{e=t.fontSize=(0,s.getMeasurement)(e);return(0,n.measureToString)(.99*e)}],["letter-spacing",e=>(0,n.measureToString)((0,s.getMeasurement)(e))],["line-height",e=>(0,n.measureToString)((0,s.getMeasurement)(e))],["margin",e=>(0,n.measureToString)((0,s.getMeasurement)(e))],["margin-bottom",e=>(0,n.measureToString)((0,s.getMeasurement)(e))],["margin-left",e=>(0,n.measureToString)((0,s.getMeasurement)(e))],["margin-right",e=>(0,n.measureToString)((0,s.getMeasurement)(e))],["margin-top",e=>(0,n.measureToString)((0,s.getMeasurement)(e))],["text-indent",e=>(0,n.measureToString)((0,s.getMeasurement)(e))],["font-family",e=>e]]),h=/\s+/g,u=/[\r\n]+/g;function mapStyle(e,t){const r=Object.create(null);if(!e)return r;const a=Object.create(null);for(const[t,i]of e.split(";").map((e=>e.split(":",2)))){const e=l.get(t);if(""===e)continue;let n=i;e&&(n="string"==typeof e?e:e(i,a));t.endsWith("scale")?r.transform?r.transform=`${r[t]} ${n}`:r.transform=n:r[t.replaceAll(/-([a-zA-Z])/g,((e,t)=>t.toUpperCase()))]=n}r.fontFamily&&(0,n.setFontFamily)({typeface:r.fontFamily,weight:r.fontWeight||"normal",posture:r.fontStyle||"normal",size:a.fontSize||0},t,r);(0,n.fixTextIndent)(r);return r}const d=new Set(["body","html"]);class XhtmlObject extends a.XmlObject{constructor(e,t){super(o,t);this.style=e.style||""}[a.$clean](e){super[a.$clean](e);this.style=function checkStyle(e){return e.style?e.style.trim().split(/\s*;\s*/).filter((e=>!!e)).map((e=>e.split(/\s*:\s*/,2))).filter((([t,r])=>{"font-family"===t&&e[a.$globalData].usedTypefaces.add(r);return c.has(t)})).map((e=>e.join(":"))).join(";"):""}(this)}[a.$acceptWhitespace](){return!d.has(this[a.$nodeName])}[a.$onText](e){e=e.replace(u,"");this.style.includes("xfa-spacerun:yes")||(e=e.replace(h," "));e&&(this[a.$content]+=e)}[a.$pushGlyphs](e,t=!0){const r=Object.create(null),i={top:NaN,bottom:NaN,left:NaN,right:NaN};let n=null;for(const[e,t]of this.style.split(";").map((e=>e.split(":",2))))switch(e){case"font-family":r.typeface=(0,s.stripQuotes)(t);break;case"font-size":r.size=(0,s.getMeasurement)(t);break;case"font-weight":r.weight=t;break;case"font-style":r.posture=t;break;case"letter-spacing":r.letterSpacing=(0,s.getMeasurement)(t);break;case"margin":const e=t.split(/ \t/).map((e=>(0,s.getMeasurement)(e)));switch(e.length){case 1:i.top=i.bottom=i.left=i.right=e[0];break;case 2:i.top=i.bottom=e[0];i.left=i.right=e[1];break;case 3:i.top=e[0];i.bottom=e[2];i.left=i.right=e[1];break;case 4:i.top=e[0];i.left=e[1];i.bottom=e[2];i.right=e[3]}break;case"margin-top":i.top=(0,s.getMeasurement)(t);break;case"margin-bottom":i.bottom=(0,s.getMeasurement)(t);break;case"margin-left":i.left=(0,s.getMeasurement)(t);break;case"margin-right":i.right=(0,s.getMeasurement)(t);break;case"line-height":n=(0,s.getMeasurement)(t)}e.pushData(r,i,n);if(this[a.$content])e.addString(this[a.$content]);else for(const t of this[a.$getChildren]())"#text"!==t[a.$nodeName]?t[a.$pushGlyphs](e):e.addString(t[a.$content]);t&&e.popFont()}[a.$toHTML](e){const t=[];this[a.$extra]={children:t};this[a.$childrenToHTML]({});return 0!==t.length||this[a.$content]?s.HTMLResult.success({name:this[a.$nodeName],attributes:{href:this.href,style:mapStyle(this.style,this[a.$globalData].fontFinder)},children:t,value:this[a.$content]||""}):s.HTMLResult.EMPTY}}class A extends XhtmlObject{constructor(e){super(e,"a");this.href=e.href||""}}class B extends XhtmlObject{constructor(e){super(e,"b")}[a.$pushGlyphs](e){e.pushFont({weight:"bold"});super[a.$pushGlyphs](e);e.popFont()}}class Body extends XhtmlObject{constructor(e){super(e,"body")}[a.$toHTML](e){const t=super[a.$toHTML](e),{html:r}=t;if(!r)return s.HTMLResult.EMPTY;r.name="div";r.attributes.class=["xfaRich"];return t}}class Br extends XhtmlObject{constructor(e){super(e,"br")}[a.$text](){return"\n"}[a.$pushGlyphs](e){e.addString("\n")}[a.$toHTML](e){return s.HTMLResult.success({name:"br"})}}class Html extends XhtmlObject{constructor(e){super(e,"html")}[a.$toHTML](e){const t=[];this[a.$extra]={children:t};this[a.$childrenToHTML]({});if(0===t.length)return s.HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:{}},value:this[a.$content]||""});if(1===t.length){const e=t[0];if(e.attributes&&e.attributes.class.includes("xfaRich"))return s.HTMLResult.success(e)}return s.HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:{}},children:t})}}class I extends XhtmlObject{constructor(e){super(e,"i")}[a.$pushGlyphs](e){e.pushFont({posture:"italic"});super[a.$pushGlyphs](e);e.popFont()}}class Li extends XhtmlObject{constructor(e){super(e,"li")}}class Ol extends XhtmlObject{constructor(e){super(e,"ol")}}class P extends XhtmlObject{constructor(e){super(e,"p")}[a.$pushGlyphs](e){super[a.$pushGlyphs](e,!1);e.addString("\n");e.addPara();e.popFont()}[a.$text](){return super[a.$text]()+"\n"}}class Span extends XhtmlObject{constructor(e){super(e,"span")}}class Sub extends XhtmlObject{constructor(e){super(e,"sub")}}class Sup extends XhtmlObject{constructor(e){super(e,"sup")}}class Ul extends XhtmlObject{constructor(e){super(e,"ul")}}class XhtmlNamespace{static[i.$buildXFAObject](e,t){if(XhtmlNamespace.hasOwnProperty(e))return XhtmlNamespace[e](t)}static a(e){return new A(e)}static b(e){return new B(e)}static body(e){return new Body(e)}static br(e){return new Br(e)}static html(e){return new Html(e)}static i(e){return new I(e)}static li(e){return new Li(e)}static ol(e){return new Ol(e)}static p(e){return new P(e)}static span(e){return new Span(e)}static sub(e){return new Sub(e)}static sup(e){return new Sup(e)}static ul(e){return new Ul(e)}}t.XhtmlNamespace=XhtmlNamespace},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.UnknownNamespace=void 0;var a=r(77),i=r(75);class UnknownNamespace{constructor(e){this.namespaceId=e}[a.$buildXFAObject](e,t){return new i.XmlObject(this.namespaceId,e,t)}}t.UnknownNamespace=UnknownNamespace},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.XRef=void 0;var a=r(2),i=r(5),n=r(17),s=r(9),o=r(72);t.XRef=class XRef{constructor(e,t){this.stream=e;this.pdfManager=t;this.entries=[];this.xrefstms=Object.create(null);this._cacheMap=new Map;this.stats={streamTypes:Object.create(null),fontTypes:Object.create(null)};this._newRefNum=null}getNewRef(){null===this._newRefNum&&(this._newRefNum=this.entries.length);return i.Ref.get(this._newRefNum++,0)}resetNewRef(){this._newRefNum=null}setStartXRef(e){this.startXRefQueue=[e]}parse(e=!1){let t,r,n;if(e){(0,a.warn)("Indexing all PDF objects");t=this.indexObjects()}else t=this.readXRef();t.assignXref(this);this.trailer=t;try{r=t.get("Encrypt")}catch(e){if(e instanceof s.MissingDataException)throw e;(0,a.warn)(`XRef.parse - Invalid "Encrypt" reference: "${e}".`)}if((0,i.isDict)(r)){const e=t.get("ID"),a=e&&e.length?e[0]:"";r.suppressEncryption=!0;this.encrypt=new o.CipherTransformFactory(r,a,this.pdfManager.password)}try{n=t.get("Root")}catch(e){if(e instanceof s.MissingDataException)throw e;(0,a.warn)(`XRef.parse - Invalid "Root" reference: "${e}".`)}if(!(0,i.isDict)(n)||!n.has("Pages")){if(!e)throw new s.XRefParseException;throw new a.FormatError("Invalid root reference")}this.root=n}processXRefTable(e){"tableState"in this||(this.tableState={entryNum:0,streamPos:e.lexer.stream.pos,parserBuf1:e.buf1,parserBuf2:e.buf2});const t=this.readXRefTable(e);if(!(0,i.isCmd)(t,"trailer"))throw new a.FormatError("Invalid XRef table: could not find trailer dictionary");let r=e.getObj();!(0,i.isDict)(r)&&r.dict&&(r=r.dict);if(!(0,i.isDict)(r))throw new a.FormatError("Invalid XRef table: could not parse trailer dictionary");delete this.tableState;return r}readXRefTable(e){const t=e.lexer.stream,r=this.tableState;t.pos=r.streamPos;e.buf1=r.parserBuf1;e.buf2=r.parserBuf2;let n;for(;;){if(!("firstEntryNum"in r)||!("entryCount"in r)){if((0,i.isCmd)(n=e.getObj(),"trailer"))break;r.firstEntryNum=n;r.entryCount=e.getObj()}let s=r.firstEntryNum;const o=r.entryCount;if(!Number.isInteger(s)||!Number.isInteger(o))throw new a.FormatError("Invalid XRef table: wrong types in subsection header");for(let n=r.entryNum;n0;){const n=l[0],h=l[1];if(!Number.isInteger(n)||!Number.isInteger(h))throw new a.FormatError(`Invalid XRef range fields: ${n}, ${h}`);if(!Number.isInteger(s)||!Number.isInteger(o)||!Number.isInteger(c))throw new a.FormatError(`Invalid XRef entry fields length: ${n}, ${h}`);for(t=i.entryNum;t=e.length);){r+=String.fromCharCode(a);a=e[t]}return r}function skipUntil(e,t,r){const a=r.length,i=e.length;let n=0;for(;t=a)break;t++;n++}return n}const e=/^(\d+)\s+(\d+)\s+obj\b/,t=/\bendobj[\b\s]$/,r=/\s+(\d+\s+\d+\s+obj[\b\s<])$/,o=new Uint8Array([116,114,97,105,108,101,114]),c=new Uint8Array([115,116,97,114,116,120,114,101,102]),l=new Uint8Array([111,98,106]),h=new Uint8Array([47,88,82,101,102]);this.entries.length=0;const u=this.stream;u.pos=0;const d=u.getBytes(),f=d.length;let g=u.start;const p=[],m=[];for(;g=f)break;i=d[g]}while(10!==i&&13!==i);continue}const b=readToken(d,g);let y;if(b.startsWith("xref")&&(4===b.length||/\s/.test(b[4]))){g+=skipUntil(d,g,o);p.push(g);g+=skipUntil(d,g,c)}else if(y=e.exec(b)){const e=0|y[1],i=0|y[2];let o,c=g+b.length,f=!1;if(this.entries[e]){if(this.entries[e].gen===i)try{new n.Parser({lexer:new n.Lexer(u.makeSubStream(c))}).getObj();f=!0}catch(e){e instanceof s.ParserEOFException?(0,a.warn)(`indexObjects -- checking object (${b}): "${e}".`):f=!0}}else f=!0;f&&(this.entries[e]={offset:g-u.start,gen:i,uncompressed:!0});for(;c{Object.defineProperty(t,"__esModule",{value:!0});t.MessageHandler=void 0;var a=r(2);const i=1,n=2,s=1,o=2,c=3,l=4,h=5,u=6,d=7,f=8;function wrapReason(e){if("object"!=typeof e||null===e)return e;switch(e.name){case"AbortException":return new a.AbortException(e.message);case"MissingPDFException":return new a.MissingPDFException(e.message);case"UnexpectedResponseException":return new a.UnexpectedResponseException(e.message,e.status);case"UnknownErrorException":return new a.UnknownErrorException(e.message,e.details);default:return new a.UnknownErrorException(e.message,e.toString())}}t.MessageHandler=class MessageHandler{constructor(e,t,r){this.sourceName=e;this.targetName=t;this.comObj=r;this.callbackId=1;this.streamId=1;this.postMessageTransfers=!0;this.streamSinks=Object.create(null);this.streamControllers=Object.create(null);this.callbackCapabilities=Object.create(null);this.actionHandler=Object.create(null);this._onComObjOnMessage=e=>{const t=e.data;if(t.targetName!==this.sourceName)return;if(t.stream){this._processStreamMessage(t);return}if(t.callback){const e=t.callbackId,r=this.callbackCapabilities[e];if(!r)throw new Error(`Cannot resolve callback ${e}`);delete this.callbackCapabilities[e];if(t.callback===i)r.resolve(t.data);else{if(t.callback!==n)throw new Error("Unexpected callback case");r.reject(wrapReason(t.reason))}return}const a=this.actionHandler[t.action];if(!a)throw new Error(`Unknown action from worker: ${t.action}`);if(t.callbackId){const e=this.sourceName,s=t.sourceName;new Promise((function(e){e(a(t.data))})).then((function(a){r.postMessage({sourceName:e,targetName:s,callback:i,callbackId:t.callbackId,data:a})}),(function(a){r.postMessage({sourceName:e,targetName:s,callback:n,callbackId:t.callbackId,reason:wrapReason(a)})}))}else t.streamId?this._createStreamSink(t):a(t.data)};r.addEventListener("message",this._onComObjOnMessage)}on(e,t){const r=this.actionHandler;if(r[e])throw new Error(`There is already an actionName called "${e}"`);r[e]=t}send(e,t,r){this._postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,data:t},r)}sendWithPromise(e,t,r){const i=this.callbackId++,n=(0,a.createPromiseCapability)();this.callbackCapabilities[i]=n;try{this._postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,callbackId:i,data:t},r)}catch(e){n.reject(e)}return n.promise}sendWithStream(e,t,r,i){const n=this.streamId++,o=this.sourceName,c=this.targetName,l=this.comObj;return new ReadableStream({start:r=>{const s=(0,a.createPromiseCapability)();this.streamControllers[n]={controller:r,startCall:s,pullCall:null,cancelCall:null,isClosed:!1};this._postMessage({sourceName:o,targetName:c,action:e,streamId:n,data:t,desiredSize:r.desiredSize},i);return s.promise},pull:e=>{const t=(0,a.createPromiseCapability)();this.streamControllers[n].pullCall=t;l.postMessage({sourceName:o,targetName:c,stream:u,streamId:n,desiredSize:e.desiredSize});return t.promise},cancel:e=>{(0,a.assert)(e instanceof Error,"cancel must have a valid reason");const t=(0,a.createPromiseCapability)();this.streamControllers[n].cancelCall=t;this.streamControllers[n].isClosed=!0;l.postMessage({sourceName:o,targetName:c,stream:s,streamId:n,reason:wrapReason(e)});return t.promise}},r)}_createStreamSink(e){const t=this,r=this.actionHandler[e.action],i=e.streamId,n=this.sourceName,s=e.sourceName,o=this.comObj,u={enqueue(e,r=1,o){if(this.isCancelled)return;const c=this.desiredSize;this.desiredSize-=r;if(c>0&&this.desiredSize<=0){this.sinkCapability=(0,a.createPromiseCapability)();this.ready=this.sinkCapability.promise}t._postMessage({sourceName:n,targetName:s,stream:l,streamId:i,chunk:e},o)},close(){if(!this.isCancelled){this.isCancelled=!0;o.postMessage({sourceName:n,targetName:s,stream:c,streamId:i});delete t.streamSinks[i]}},error(e){(0,a.assert)(e instanceof Error,"error must have a valid reason");if(!this.isCancelled){this.isCancelled=!0;o.postMessage({sourceName:n,targetName:s,stream:h,streamId:i,reason:wrapReason(e)})}},sinkCapability:(0,a.createPromiseCapability)(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:e.desiredSize,ready:null};u.sinkCapability.resolve();u.ready=u.sinkCapability.promise;this.streamSinks[i]=u;new Promise((function(t){t(r(e.data,u))})).then((function(){o.postMessage({sourceName:n,targetName:s,stream:f,streamId:i,success:!0})}),(function(e){o.postMessage({sourceName:n,targetName:s,stream:f,streamId:i,reason:wrapReason(e)})}))}_processStreamMessage(e){const t=e.streamId,r=this.sourceName,i=e.sourceName,n=this.comObj;switch(e.stream){case f:e.success?this.streamControllers[t].startCall.resolve():this.streamControllers[t].startCall.reject(wrapReason(e.reason));break;case d:e.success?this.streamControllers[t].pullCall.resolve():this.streamControllers[t].pullCall.reject(wrapReason(e.reason));break;case u:if(!this.streamSinks[t]){n.postMessage({sourceName:r,targetName:i,stream:d,streamId:t,success:!0});break}this.streamSinks[t].desiredSize<=0&&e.desiredSize>0&&this.streamSinks[t].sinkCapability.resolve();this.streamSinks[t].desiredSize=e.desiredSize;const{onPull:g}=this.streamSinks[e.streamId];new Promise((function(e){e(g&&g())})).then((function(){n.postMessage({sourceName:r,targetName:i,stream:d,streamId:t,success:!0})}),(function(e){n.postMessage({sourceName:r,targetName:i,stream:d,streamId:t,reason:wrapReason(e)})}));break;case l:(0,a.assert)(this.streamControllers[t],"enqueue should have stream controller");if(this.streamControllers[t].isClosed)break;this.streamControllers[t].controller.enqueue(e.chunk);break;case c:(0,a.assert)(this.streamControllers[t],"close should have stream controller");if(this.streamControllers[t].isClosed)break;this.streamControllers[t].isClosed=!0;this.streamControllers[t].controller.close();this._deleteStreamController(t);break;case h:(0,a.assert)(this.streamControllers[t],"error should have stream controller");this.streamControllers[t].controller.error(wrapReason(e.reason));this._deleteStreamController(t);break;case o:e.success?this.streamControllers[t].cancelCall.resolve():this.streamControllers[t].cancelCall.reject(wrapReason(e.reason));this._deleteStreamController(t);break;case s:if(!this.streamSinks[t])break;const{onCancel:p}=this.streamSinks[e.streamId];new Promise((function(t){t(p&&p(wrapReason(e.reason)))})).then((function(){n.postMessage({sourceName:r,targetName:i,stream:o,streamId:t,success:!0})}),(function(e){n.postMessage({sourceName:r,targetName:i,stream:o,streamId:t,reason:wrapReason(e)})}));this.streamSinks[t].sinkCapability.reject(wrapReason(e.reason));this.streamSinks[t].isCancelled=!0;delete this.streamSinks[t];break;default:throw new Error("Unexpected stream case")}}async _deleteStreamController(e){await Promise.allSettled([this.streamControllers[e].startCall,this.streamControllers[e].pullCall,this.streamControllers[e].cancelCall].map((function(e){return e&&e.promise})));delete this.streamControllers[e]}_postMessage(e,t){t&&this.postMessageTransfers?this.comObj.postMessage(e,t):this.comObj.postMessage(e)}destroy(){this.comObj.removeEventListener("message",this._onComObjOnMessage)}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});t.PDFWorkerStream=void 0;var a=r(2);t.PDFWorkerStream=class PDFWorkerStream{constructor(e){this._msgHandler=e;this._contentLength=null;this._fullRequestReader=null;this._rangeRequestReaders=[]}getFullReader(){(0,a.assert)(!this._fullRequestReader,"PDFWorkerStream.getFullReader can only be called once.");this._fullRequestReader=new PDFWorkerStreamReader(this._msgHandler);return this._fullRequestReader}getRangeReader(e,t){const r=new PDFWorkerStreamRangeReader(e,t,this._msgHandler);this._rangeRequestReaders.push(r);return r}cancelAllRequests(e){this._fullRequestReader&&this._fullRequestReader.cancel(e);for(const t of this._rangeRequestReaders.slice(0))t.cancel(e)}};class PDFWorkerStreamReader{constructor(e){this._msgHandler=e;this.onProgress=null;this._contentLength=null;this._isRangeSupported=!1;this._isStreamingSupported=!1;const t=this._msgHandler.sendWithStream("GetReader");this._reader=t.getReader();this._headersReady=this._msgHandler.sendWithPromise("ReaderHeadersReady").then((e=>{this._isStreamingSupported=e.isStreamingSupported;this._isRangeSupported=e.isRangeSupported;this._contentLength=e.contentLength}))}get headersReady(){return this._headersReady}get contentLength(){return this._contentLength}get isStreamingSupported(){return this._isStreamingSupported}get isRangeSupported(){return this._isRangeSupported}async read(){const{value:e,done:t}=await this._reader.read();return t?{value:void 0,done:!0}:{value:e.buffer,done:!1}}cancel(e){this._reader.cancel(e)}}class PDFWorkerStreamRangeReader{constructor(e,t,r){this._msgHandler=r;this.onProgress=null;const a=this._msgHandler.sendWithStream("GetRangeReader",{begin:e,end:t});this._reader=a.getReader()}get isStreamingSupported(){return!1}async read(){const{value:e,done:t}=await this._reader.read();return t?{value:void 0,done:!0}:{value:e.buffer,done:!1}}cancel(e){this._reader.cancel(e)}}}],t={};function __w_pdfjs_require__(r){var a=t[r];if(void 0!==a)return a.exports;var i=t[r]={exports:{}};e[r](i,i.exports,__w_pdfjs_require__);return i.exports}__w_pdfjs_require__.d=(e,t)=>{for(var r in t)__w_pdfjs_require__.o(t,r)&&!__w_pdfjs_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})};__w_pdfjs_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);__w_pdfjs_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});Object.defineProperty(e,"__esModule",{value:!0})};var r={};(()=>{var e=r;Object.defineProperty(e,"__esModule",{value:!0});Object.defineProperty(e,"WorkerMessageHandler",{enumerable:!0,get:function(){return t.WorkerMessageHandler}});var t=__w_pdfjs_require__(1)})();return r})()})); \ No newline at end of file + +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define("pdfjs-dist/build/pdf.worker", [], factory); + else if(typeof exports === 'object') + exports["pdfjs-dist/build/pdf.worker"] = factory(); + else + root["pdfjs-dist/build/pdf.worker"] = root.pdfjsWorker = factory(); +})(globalThis, () => { +return /******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ([ +/* 0 */, +/* 1 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.WorkerTask = exports.WorkerMessageHandler = void 0; +var _util = __w_pdfjs_require__(2); +var _core_utils = __w_pdfjs_require__(3); +var _primitives = __w_pdfjs_require__(4); +var _pdf_manager = __w_pdfjs_require__(6); +var _annotation = __w_pdfjs_require__(10); +var _cleanup_helper = __w_pdfjs_require__(72); +var _writer = __w_pdfjs_require__(66); +var _is_node = __w_pdfjs_require__(104); +var _message_handler = __w_pdfjs_require__(105); +var _worker_stream = __w_pdfjs_require__(106); +class WorkerTask { + constructor(name) { + this.name = name; + this.terminated = false; + this._capability = new _util.PromiseCapability(); + } + get finished() { + return this._capability.promise; + } + finish() { + this._capability.resolve(); + } + terminate() { + this.terminated = true; + } + ensureNotTerminated() { + if (this.terminated) { + throw new Error("Worker task was terminated"); + } + } +} +exports.WorkerTask = WorkerTask; +class WorkerMessageHandler { + static setup(handler, port) { + let testMessageProcessed = false; + handler.on("test", function (data) { + if (testMessageProcessed) { + return; + } + testMessageProcessed = true; + handler.send("test", data instanceof Uint8Array); + }); + handler.on("configure", function (data) { + (0, _util.setVerbosityLevel)(data.verbosity); + }); + handler.on("GetDocRequest", function (data) { + return WorkerMessageHandler.createDocumentHandler(data, port); + }); + } + static createDocumentHandler(docParams, port) { + let pdfManager; + let terminated = false; + let cancelXHRs = null; + const WorkerTasks = new Set(); + const verbosity = (0, _util.getVerbosityLevel)(); + const { + docId, + apiVersion + } = docParams; + const workerVersion = '3.8.162'; + if (apiVersion !== workerVersion) { + throw new Error(`The API version "${apiVersion}" does not match ` + `the Worker version "${workerVersion}".`); + } + const enumerableProperties = []; + for (const property in []) { + enumerableProperties.push(property); + } + if (enumerableProperties.length) { + throw new Error("The `Array.prototype` contains unexpected enumerable properties: " + enumerableProperties.join(", ") + "; thus breaking e.g. `for...in` iteration of `Array`s."); + } + const workerHandlerName = docId + "_worker"; + let handler = new _message_handler.MessageHandler(workerHandlerName, docId, port); + function ensureNotTerminated() { + if (terminated) { + throw new Error("Worker was terminated"); + } + } + function startWorkerTask(task) { + WorkerTasks.add(task); + } + function finishWorkerTask(task) { + task.finish(); + WorkerTasks.delete(task); + } + async function loadDocument(recoveryMode) { + await pdfManager.ensureDoc("checkHeader"); + await pdfManager.ensureDoc("parseStartXRef"); + await pdfManager.ensureDoc("parse", [recoveryMode]); + await pdfManager.ensureDoc("checkFirstPage", [recoveryMode]); + await pdfManager.ensureDoc("checkLastPage", [recoveryMode]); + const isPureXfa = await pdfManager.ensureDoc("isPureXfa"); + if (isPureXfa) { + const task = new WorkerTask("loadXfaFonts"); + startWorkerTask(task); + await Promise.all([pdfManager.loadXfaFonts(handler, task).catch(reason => {}).then(() => finishWorkerTask(task)), pdfManager.loadXfaImages()]); + } + const [numPages, fingerprints] = await Promise.all([pdfManager.ensureDoc("numPages"), pdfManager.ensureDoc("fingerprints")]); + const htmlForXfa = isPureXfa ? await pdfManager.ensureDoc("htmlForXfa") : null; + return { + numPages, + fingerprints, + htmlForXfa + }; + } + function getPdfManager({ + data, + password, + disableAutoFetch, + rangeChunkSize, + length, + docBaseUrl, + enableXfa, + evaluatorOptions + }) { + const pdfManagerArgs = { + source: null, + disableAutoFetch, + docBaseUrl, + docId, + enableXfa, + evaluatorOptions, + handler, + length, + password, + rangeChunkSize + }; + const pdfManagerCapability = new _util.PromiseCapability(); + let newPdfManager; + if (data) { + try { + pdfManagerArgs.source = data; + newPdfManager = new _pdf_manager.LocalPdfManager(pdfManagerArgs); + pdfManagerCapability.resolve(newPdfManager); + } catch (ex) { + pdfManagerCapability.reject(ex); + } + return pdfManagerCapability.promise; + } + let pdfStream, + cachedChunks = []; + try { + pdfStream = new _worker_stream.PDFWorkerStream(handler); + } catch (ex) { + pdfManagerCapability.reject(ex); + return pdfManagerCapability.promise; + } + const fullRequest = pdfStream.getFullReader(); + fullRequest.headersReady.then(function () { + if (!fullRequest.isRangeSupported) { + return; + } + pdfManagerArgs.source = pdfStream; + pdfManagerArgs.length = fullRequest.contentLength; + pdfManagerArgs.disableAutoFetch ||= fullRequest.isStreamingSupported; + newPdfManager = new _pdf_manager.NetworkPdfManager(pdfManagerArgs); + for (const chunk of cachedChunks) { + newPdfManager.sendProgressiveData(chunk); + } + cachedChunks = []; + pdfManagerCapability.resolve(newPdfManager); + cancelXHRs = null; + }).catch(function (reason) { + pdfManagerCapability.reject(reason); + cancelXHRs = null; + }); + let loaded = 0; + const flushChunks = function () { + const pdfFile = (0, _core_utils.arrayBuffersToBytes)(cachedChunks); + if (length && pdfFile.length !== length) { + (0, _util.warn)("reported HTTP length is different from actual"); + } + try { + pdfManagerArgs.source = pdfFile; + newPdfManager = new _pdf_manager.LocalPdfManager(pdfManagerArgs); + pdfManagerCapability.resolve(newPdfManager); + } catch (ex) { + pdfManagerCapability.reject(ex); + } + cachedChunks = []; + }; + new Promise(function (resolve, reject) { + const readChunk = function ({ + value, + done + }) { + try { + ensureNotTerminated(); + if (done) { + if (!newPdfManager) { + flushChunks(); + } + cancelXHRs = null; + return; + } + loaded += value.byteLength; + if (!fullRequest.isStreamingSupported) { + handler.send("DocProgress", { + loaded, + total: Math.max(loaded, fullRequest.contentLength || 0) + }); + } + if (newPdfManager) { + newPdfManager.sendProgressiveData(value); + } else { + cachedChunks.push(value); + } + fullRequest.read().then(readChunk, reject); + } catch (e) { + reject(e); + } + }; + fullRequest.read().then(readChunk, reject); + }).catch(function (e) { + pdfManagerCapability.reject(e); + cancelXHRs = null; + }); + cancelXHRs = function (reason) { + pdfStream.cancelAllRequests(reason); + }; + return pdfManagerCapability.promise; + } + function setupDoc(data) { + function onSuccess(doc) { + ensureNotTerminated(); + handler.send("GetDoc", { + pdfInfo: doc + }); + } + function onFailure(ex) { + ensureNotTerminated(); + if (ex instanceof _util.PasswordException) { + const task = new WorkerTask(`PasswordException: response ${ex.code}`); + startWorkerTask(task); + handler.sendWithPromise("PasswordRequest", ex).then(function ({ + password + }) { + finishWorkerTask(task); + pdfManager.updatePassword(password); + pdfManagerReady(); + }).catch(function () { + finishWorkerTask(task); + handler.send("DocException", ex); + }); + } else if (ex instanceof _util.InvalidPDFException || ex instanceof _util.MissingPDFException || ex instanceof _util.UnexpectedResponseException || ex instanceof _util.UnknownErrorException) { + handler.send("DocException", ex); + } else { + handler.send("DocException", new _util.UnknownErrorException(ex.message, ex.toString())); + } + } + function pdfManagerReady() { + ensureNotTerminated(); + loadDocument(false).then(onSuccess, function (reason) { + ensureNotTerminated(); + if (!(reason instanceof _core_utils.XRefParseException)) { + onFailure(reason); + return; + } + pdfManager.requestLoadedStream().then(function () { + ensureNotTerminated(); + loadDocument(true).then(onSuccess, onFailure); + }); + }); + } + ensureNotTerminated(); + getPdfManager(data).then(function (newPdfManager) { + if (terminated) { + newPdfManager.terminate(new _util.AbortException("Worker was terminated.")); + throw new Error("Worker was terminated"); + } + pdfManager = newPdfManager; + pdfManager.requestLoadedStream(true).then(stream => { + handler.send("DataLoaded", { + length: stream.bytes.byteLength + }); + }); + }).then(pdfManagerReady, onFailure); + } + handler.on("GetPage", function (data) { + return pdfManager.getPage(data.pageIndex).then(function (page) { + return Promise.all([pdfManager.ensure(page, "rotate"), pdfManager.ensure(page, "ref"), pdfManager.ensure(page, "userUnit"), pdfManager.ensure(page, "view")]).then(function ([rotate, ref, userUnit, view]) { + return { + rotate, + ref, + userUnit, + view + }; + }); + }); + }); + handler.on("GetPageIndex", function (data) { + const pageRef = _primitives.Ref.get(data.num, data.gen); + return pdfManager.ensureCatalog("getPageIndex", [pageRef]); + }); + handler.on("GetDestinations", function (data) { + return pdfManager.ensureCatalog("destinations"); + }); + handler.on("GetDestination", function (data) { + return pdfManager.ensureCatalog("getDestination", [data.id]); + }); + handler.on("GetPageLabels", function (data) { + return pdfManager.ensureCatalog("pageLabels"); + }); + handler.on("GetPageLayout", function (data) { + return pdfManager.ensureCatalog("pageLayout"); + }); + handler.on("GetPageMode", function (data) { + return pdfManager.ensureCatalog("pageMode"); + }); + handler.on("GetViewerPreferences", function (data) { + return pdfManager.ensureCatalog("viewerPreferences"); + }); + handler.on("GetOpenAction", function (data) { + return pdfManager.ensureCatalog("openAction"); + }); + handler.on("GetAttachments", function (data) { + return pdfManager.ensureCatalog("attachments"); + }); + handler.on("GetJavaScript", function (data) { + return pdfManager.ensureCatalog("javaScript"); + }); + handler.on("GetDocJSActions", function (data) { + return pdfManager.ensureCatalog("jsActions"); + }); + handler.on("GetPageJSActions", function ({ + pageIndex + }) { + return pdfManager.getPage(pageIndex).then(function (page) { + return pdfManager.ensure(page, "jsActions"); + }); + }); + handler.on("GetOutline", function (data) { + return pdfManager.ensureCatalog("documentOutline"); + }); + handler.on("GetOptionalContentConfig", function (data) { + return pdfManager.ensureCatalog("optionalContentConfig"); + }); + handler.on("GetPermissions", function (data) { + return pdfManager.ensureCatalog("permissions"); + }); + handler.on("GetMetadata", function (data) { + return Promise.all([pdfManager.ensureDoc("documentInfo"), pdfManager.ensureCatalog("metadata")]); + }); + handler.on("GetMarkInfo", function (data) { + return pdfManager.ensureCatalog("markInfo"); + }); + handler.on("GetData", function (data) { + return pdfManager.requestLoadedStream().then(function (stream) { + return stream.bytes; + }); + }); + handler.on("GetAnnotations", function ({ + pageIndex, + intent + }) { + return pdfManager.getPage(pageIndex).then(function (page) { + const task = new WorkerTask(`GetAnnotations: page ${pageIndex}`); + startWorkerTask(task); + return page.getAnnotationsData(handler, task, intent).then(data => { + finishWorkerTask(task); + return data; + }, reason => { + finishWorkerTask(task); + throw reason; + }); + }); + }); + handler.on("GetFieldObjects", function (data) { + return pdfManager.ensureDoc("fieldObjects"); + }); + handler.on("HasJSActions", function (data) { + return pdfManager.ensureDoc("hasJSActions"); + }); + handler.on("GetCalculationOrderIds", function (data) { + return pdfManager.ensureDoc("calculationOrderIds"); + }); + handler.on("SaveDocument", async function ({ + isPureXfa, + numPages, + annotationStorage, + filename + }) { + const promises = [pdfManager.requestLoadedStream(), pdfManager.ensureCatalog("acroForm"), pdfManager.ensureCatalog("acroFormRef"), pdfManager.ensureDoc("startXRef")]; + const newAnnotationsByPage = !isPureXfa ? (0, _core_utils.getNewAnnotationsMap)(annotationStorage) : null; + const xref = await pdfManager.ensureDoc("xref"); + if (newAnnotationsByPage) { + const imagePromises = _annotation.AnnotationFactory.generateImages(annotationStorage.values(), xref, pdfManager.evaluatorOptions.isOffscreenCanvasSupported); + for (const [pageIndex, annotations] of newAnnotationsByPage) { + promises.push(pdfManager.getPage(pageIndex).then(page => { + const task = new WorkerTask(`Save (editor): page ${pageIndex}`); + return page.saveNewAnnotations(handler, task, annotations, imagePromises).finally(function () { + finishWorkerTask(task); + }); + })); + } + } + if (isPureXfa) { + promises.push(pdfManager.serializeXfaData(annotationStorage)); + } else { + for (let pageIndex = 0; pageIndex < numPages; pageIndex++) { + promises.push(pdfManager.getPage(pageIndex).then(function (page) { + const task = new WorkerTask(`Save: page ${pageIndex}`); + return page.save(handler, task, annotationStorage).finally(function () { + finishWorkerTask(task); + }); + })); + } + } + return Promise.all(promises).then(function ([stream, acroForm, acroFormRef, startXRef, ...refs]) { + let newRefs = []; + let xfaData = null; + if (isPureXfa) { + xfaData = refs[0]; + if (!xfaData) { + return stream.bytes; + } + } else { + newRefs = refs.flat(2); + if (newRefs.length === 0) { + return stream.bytes; + } + } + const needAppearances = acroFormRef && acroForm instanceof _primitives.Dict && newRefs.some(ref => ref.needAppearances); + const xfa = acroForm instanceof _primitives.Dict && acroForm.get("XFA") || null; + let xfaDatasetsRef = null; + let hasXfaDatasetsEntry = false; + if (Array.isArray(xfa)) { + for (let i = 0, ii = xfa.length; i < ii; i += 2) { + if (xfa[i] === "datasets") { + xfaDatasetsRef = xfa[i + 1]; + hasXfaDatasetsEntry = true; + } + } + if (xfaDatasetsRef === null) { + xfaDatasetsRef = xref.getNewTemporaryRef(); + } + } else if (xfa) { + (0, _util.warn)("Unsupported XFA type."); + } + let newXrefInfo = Object.create(null); + if (xref.trailer) { + const infoObj = Object.create(null); + const xrefInfo = xref.trailer.get("Info") || null; + if (xrefInfo instanceof _primitives.Dict) { + xrefInfo.forEach((key, value) => { + if (typeof value === "string") { + infoObj[key] = (0, _util.stringToPDFString)(value); + } + }); + } + newXrefInfo = { + rootRef: xref.trailer.getRaw("Root") || null, + encryptRef: xref.trailer.getRaw("Encrypt") || null, + newRef: xref.getNewTemporaryRef(), + infoRef: xref.trailer.getRaw("Info") || null, + info: infoObj, + fileIds: xref.trailer.get("ID") || null, + startXRef: xref.lastXRefStreamPos ?? startXRef, + filename + }; + } + try { + return (0, _writer.incrementalUpdate)({ + originalData: stream.bytes, + xrefInfo: newXrefInfo, + newRefs, + xref, + hasXfa: !!xfa, + xfaDatasetsRef, + hasXfaDatasetsEntry, + needAppearances, + acroFormRef, + acroForm, + xfaData + }); + } finally { + xref.resetNewTemporaryRef(); + } + }); + }); + handler.on("GetOperatorList", function (data, sink) { + const pageIndex = data.pageIndex; + pdfManager.getPage(pageIndex).then(function (page) { + const task = new WorkerTask(`GetOperatorList: page ${pageIndex}`); + startWorkerTask(task); + const start = verbosity >= _util.VerbosityLevel.INFOS ? Date.now() : 0; + page.getOperatorList({ + handler, + sink, + task, + intent: data.intent, + cacheKey: data.cacheKey, + annotationStorage: data.annotationStorage + }).then(function (operatorListInfo) { + finishWorkerTask(task); + if (start) { + (0, _util.info)(`page=${pageIndex + 1} - getOperatorList: time=` + `${Date.now() - start}ms, len=${operatorListInfo.length}`); + } + sink.close(); + }, function (reason) { + finishWorkerTask(task); + if (task.terminated) { + return; + } + sink.error(reason); + }); + }); + }); + handler.on("GetTextContent", function (data, sink) { + const { + pageIndex, + includeMarkedContent, + disableNormalization + } = data; + pdfManager.getPage(pageIndex).then(function (page) { + const task = new WorkerTask("GetTextContent: page " + pageIndex); + startWorkerTask(task); + const start = verbosity >= _util.VerbosityLevel.INFOS ? Date.now() : 0; + page.extractTextContent({ + handler, + task, + sink, + includeMarkedContent, + disableNormalization + }).then(function () { + finishWorkerTask(task); + if (start) { + (0, _util.info)(`page=${pageIndex + 1} - getTextContent: time=` + `${Date.now() - start}ms`); + } + sink.close(); + }, function (reason) { + finishWorkerTask(task); + if (task.terminated) { + return; + } + sink.error(reason); + }); + }); + }); + handler.on("GetStructTree", function (data) { + return pdfManager.getPage(data.pageIndex).then(function (page) { + return pdfManager.ensure(page, "getStructTree"); + }); + }); + handler.on("FontFallback", function (data) { + return pdfManager.fontFallback(data.id, handler); + }); + handler.on("Cleanup", function (data) { + return pdfManager.cleanup(true); + }); + handler.on("Terminate", function (data) { + terminated = true; + const waitOn = []; + if (pdfManager) { + pdfManager.terminate(new _util.AbortException("Worker was terminated.")); + const cleanupPromise = pdfManager.cleanup(); + waitOn.push(cleanupPromise); + pdfManager = null; + } else { + (0, _cleanup_helper.clearGlobalCaches)(); + } + if (cancelXHRs) { + cancelXHRs(new _util.AbortException("Worker was terminated.")); + } + for (const task of WorkerTasks) { + waitOn.push(task.finished); + task.terminate(); + } + return Promise.all(waitOn).then(function () { + handler.destroy(); + handler = null; + }); + }); + handler.on("Ready", function (data) { + setupDoc(docParams); + docParams = null; + }); + return workerHandlerName; + } + static initializeFromPort(port) { + const handler = new _message_handler.MessageHandler("worker", "main", port); + WorkerMessageHandler.setup(handler, port); + handler.send("ready", null); + } +} +exports.WorkerMessageHandler = WorkerMessageHandler; +function isMessagePort(maybePort) { + return typeof maybePort.postMessage === "function" && "onmessage" in maybePort; +} +if (typeof window === "undefined" && !_is_node.isNodeJS && typeof self !== "undefined" && isMessagePort(self)) { + WorkerMessageHandler.initializeFromPort(self); +} + +/***/ }), +/* 2 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.RenderingIntentFlag = exports.PromiseCapability = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.MAX_IMAGE_SIZE_TO_CACHE = exports.LINE_FACTOR = exports.LINE_DESCENT_FACTOR = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FeatureTest = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.BASELINE_FACTOR = exports.AnnotationType = exports.AnnotationReplyType = exports.AnnotationMode = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationEditorType = exports.AnnotationEditorPrefix = exports.AnnotationEditorParamsType = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0; +exports.assert = assert; +exports.bytesToString = bytesToString; +exports.createValidAbsoluteUrl = createValidAbsoluteUrl; +exports.getModificationDate = getModificationDate; +exports.getVerbosityLevel = getVerbosityLevel; +exports.info = info; +exports.isArrayBuffer = isArrayBuffer; +exports.isArrayEqual = isArrayEqual; +exports.normalizeUnicode = normalizeUnicode; +exports.objectFromMap = objectFromMap; +exports.objectSize = objectSize; +exports.setVerbosityLevel = setVerbosityLevel; +exports.shadow = shadow; +exports.string32 = string32; +exports.stringToBytes = stringToBytes; +exports.stringToPDFString = stringToPDFString; +exports.stringToUTF8String = stringToUTF8String; +exports.unreachable = unreachable; +exports.utf8StringToString = utf8StringToString; +exports.warn = warn; +; +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 MAX_IMAGE_SIZE_TO_CACHE = 10e6; +exports.MAX_IMAGE_SIZE_TO_CACHE = MAX_IMAGE_SIZE_TO_CACHE; +const LINE_FACTOR = 1.35; +exports.LINE_FACTOR = LINE_FACTOR; +const LINE_DESCENT_FACTOR = 0.35; +exports.LINE_DESCENT_FACTOR = LINE_DESCENT_FACTOR; +const BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR; +exports.BASELINE_FACTOR = BASELINE_FACTOR; +const RenderingIntentFlag = { + ANY: 0x01, + DISPLAY: 0x02, + PRINT: 0x04, + SAVE: 0x08, + ANNOTATIONS_FORMS: 0x10, + ANNOTATIONS_STORAGE: 0x20, + ANNOTATIONS_DISABLE: 0x40, + OPLIST: 0x100 +}; +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, + STAMP: 13, + 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, + INVISIBLE: 3, + FILL_ADD_TO_PATH: 4, + STROKE_ADD_TO_PATH: 5, + FILL_STROKE_ADD_TO_PATH: 6, + ADD_TO_PATH: 7, + FILL_STROKE_MASK: 3, + ADD_TO_PATH_FLAG: 4 +}; +exports.TextRenderingMode = TextRenderingMode; +const ImageKind = { + GRAYSCALE_1BPP: 1, + RGB_24BPP: 2, + RGBA_32BPP: 3 +}; +exports.ImageKind = ImageKind; +const AnnotationType = { + TEXT: 1, + LINK: 2, + FREETEXT: 3, + LINE: 4, + SQUARE: 5, + CIRCLE: 6, + POLYGON: 7, + POLYLINE: 8, + HIGHLIGHT: 9, + UNDERLINE: 10, + SQUIGGLY: 11, + STRIKEOUT: 12, + STAMP: 13, + CARET: 14, + INK: 15, + POPUP: 16, + FILEATTACHMENT: 17, + SOUND: 18, + MOVIE: 19, + WIDGET: 20, + SCREEN: 21, + PRINTERMARK: 22, + TRAPNET: 23, + WATERMARK: 24, + THREED: 25, + REDACT: 26 +}; +exports.AnnotationType = AnnotationType; +const AnnotationReplyType = { + GROUP: "Group", + REPLY: "R" +}; +exports.AnnotationReplyType = AnnotationReplyType; +const AnnotationFlag = { + INVISIBLE: 0x01, + HIDDEN: 0x02, + PRINT: 0x04, + NOZOOM: 0x08, + NOROTATE: 0x10, + NOVIEW: 0x20, + READONLY: 0x40, + LOCKED: 0x80, + TOGGLENOVIEW: 0x100, + LOCKEDCONTENTS: 0x200 +}; +exports.AnnotationFlag = AnnotationFlag; +const AnnotationFieldFlag = { + READONLY: 0x0000001, + REQUIRED: 0x0000002, + NOEXPORT: 0x0000004, + MULTILINE: 0x0001000, + PASSWORD: 0x0002000, + NOTOGGLETOOFF: 0x0004000, + RADIO: 0x0008000, + PUSHBUTTON: 0x0010000, + COMBO: 0x0020000, + EDIT: 0x0040000, + SORT: 0x0080000, + FILESELECT: 0x0100000, + MULTISELECT: 0x0200000, + DONOTSPELLCHECK: 0x0400000, + DONOTSCROLL: 0x0800000, + COMB: 0x1000000, + RICHTEXT: 0x2000000, + RADIOSINUNISON: 0x2000000, + COMMITONSELCHANGE: 0x4000000 +}; +exports.AnnotationFieldFlag = AnnotationFieldFlag; +const AnnotationBorderStyleType = { + SOLID: 1, + DASHED: 2, + BEVELED: 3, + INSET: 4, + UNDERLINE: 5 +}; +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" +}; +exports.AnnotationActionEventType = AnnotationActionEventType; +const DocumentActionEventType = { + WC: "WillClose", + WS: "WillSave", + DS: "DidSave", + WP: "WillPrint", + DP: "DidPrint" +}; +exports.DocumentActionEventType = DocumentActionEventType; +const PageActionEventType = { + O: "PageOpen", + C: "PageClose" +}; +exports.PageActionEventType = PageActionEventType; +const VerbosityLevel = { + ERRORS: 0, + WARNINGS: 1, + INFOS: 5 +}; +exports.VerbosityLevel = VerbosityLevel; +const CMapCompressionType = { + NONE: 0, + BINARY: 1 +}; +exports.CMapCompressionType = CMapCompressionType; +const OPS = { + dependency: 1, + setLineWidth: 2, + setLineCap: 3, + setLineJoin: 4, + setMiterLimit: 5, + setDash: 6, + setRenderingIntent: 7, + setFlatness: 8, + setGState: 9, + save: 10, + restore: 11, + transform: 12, + moveTo: 13, + lineTo: 14, + curveTo: 15, + curveTo2: 16, + curveTo3: 17, + closePath: 18, + rectangle: 19, + stroke: 20, + closeStroke: 21, + fill: 22, + eoFill: 23, + fillStroke: 24, + eoFillStroke: 25, + closeFillStroke: 26, + closeEOFillStroke: 27, + endPath: 28, + clip: 29, + eoClip: 30, + beginText: 31, + endText: 32, + setCharSpacing: 33, + setWordSpacing: 34, + setHScale: 35, + setLeading: 36, + setFont: 37, + setTextRenderingMode: 38, + setTextRise: 39, + moveText: 40, + setLeadingMoveText: 41, + setTextMatrix: 42, + nextLine: 43, + showText: 44, + showSpacedText: 45, + nextLineShowText: 46, + nextLineSetSpacingShowText: 47, + setCharWidth: 48, + setCharWidthAndBounds: 49, + setStrokeColorSpace: 50, + setFillColorSpace: 51, + setStrokeColor: 52, + setStrokeColorN: 53, + setFillColor: 54, + setFillColorN: 55, + setStrokeGray: 56, + setFillGray: 57, + setStrokeRGBColor: 58, + setFillRGBColor: 59, + setStrokeCMYKColor: 60, + setFillCMYKColor: 61, + shadingFill: 62, + beginInlineImage: 63, + beginImageData: 64, + endInlineImage: 65, + paintXObject: 66, + markPoint: 67, + markPointProps: 68, + beginMarkedContent: 69, + beginMarkedContentProps: 70, + endMarkedContent: 71, + beginCompat: 72, + endCompat: 73, + paintFormXObjectBegin: 74, + paintFormXObjectEnd: 75, + beginGroup: 76, + endGroup: 77, + beginAnnotation: 80, + endAnnotation: 81, + paintImageMaskXObject: 83, + paintImageMaskXObjectGroup: 84, + paintImageXObject: 85, + paintInlineImageXObject: 86, + paintInlineImageXObjectGroup: 87, + paintImageXObjectRepeat: 88, + paintImageMaskXObjectRepeat: 89, + paintSolidColorImageMask: 90, + constructPath: 91 +}; +exports.OPS = OPS; +const PasswordResponses = { + NEED_PASSWORD: 1, + INCORRECT_PASSWORD: 2 +}; +exports.PasswordResponses = PasswordResponses; +let verbosity = VerbosityLevel.WARNINGS; +function setVerbosityLevel(level) { + if (Number.isInteger(level)) { + verbosity = level; + } +} +function getVerbosityLevel() { + return verbosity; +} +function info(msg) { + if (verbosity >= VerbosityLevel.INFOS) { + console.log(`Info: ${msg}`); + } +} +function warn(msg) { + if (verbosity >= VerbosityLevel.WARNINGS) { + console.log(`Warning: ${msg}`); + } +} +function unreachable(msg) { + throw new Error(msg); +} +function assert(cond, msg) { + if (!cond) { + unreachable(msg); + } +} +function _isValidProtocol(url) { + switch (url?.protocol) { + case "http:": + case "https:": + case "ftp:": + case "mailto:": + case "tel:": + return true; + default: + return false; + } +} +function createValidAbsoluteUrl(url, baseUrl = null, options = null) { + if (!url) { + return null; + } + try { + if (options && typeof url === "string") { + if (options.addDefaultProtocol && url.startsWith("www.")) { + const dots = url.match(/\./g); + if (dots?.length >= 2) { + url = `http://${url}`; + } + } + if (options.tryConvertEncoding) { + try { + url = stringToUTF8String(url); + } catch {} + } + } + const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url); + if (_isValidProtocol(absoluteUrl)) { + return absoluteUrl; + } + } catch {} + return null; +} +function shadow(obj, prop, value, nonSerializable = false) { + Object.defineProperty(obj, prop, { + value, + enumerable: !nonSerializable, + configurable: true, + writable: false + }); + return value; +} +const BaseException = function BaseExceptionClosure() { + function BaseException(message, name) { + if (this.constructor === BaseException) { + unreachable("Cannot initialize BaseException."); + } + 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; + } +} +exports.PasswordException = PasswordException; +class UnknownErrorException extends BaseException { + constructor(msg, details) { + super(msg, "UnknownErrorException"); + this.details = details; + } +} +exports.UnknownErrorException = UnknownErrorException; +class InvalidPDFException extends BaseException { + constructor(msg) { + super(msg, "InvalidPDFException"); + } +} +exports.InvalidPDFException = InvalidPDFException; +class MissingPDFException extends BaseException { + constructor(msg) { + super(msg, "MissingPDFException"); + } +} +exports.MissingPDFException = MissingPDFException; +class UnexpectedResponseException extends BaseException { + constructor(msg, status) { + super(msg, "UnexpectedResponseException"); + this.status = status; + } +} +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) { + if (typeof bytes !== "object" || 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); + } + 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(""); +} +function stringToBytes(str) { + 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 string32(value) { + return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff); +} +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 obj; +} +function isLittleEndian() { + const buffer8 = new Uint8Array(4); + buffer8[0] = 1; + const view32 = new Uint32Array(buffer8.buffer, 0, 1); + return view32[0] === 1; +} +function isEvalSupported() { + try { + new Function(""); + return true; + } catch { + return false; + } +} +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"); + } + static get platform() { + if (typeof navigator === "undefined") { + return shadow(this, "platform", { + isWin: false, + isMac: false + }); + } + return shadow(this, "platform", { + isWin: navigator.platform.includes("Win"), + isMac: navigator.platform.includes("Mac") + }); + } +} +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]]; + } + 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]; + } + 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]; + } + static getAxialAlignedBoundingBox(r, m) { + const p1 = this.applyTransform(r, m); + const p2 = this.applyTransform(r.slice(2, 4), m); + const p3 = this.applyTransform([r[0], r[3]], m); + const p4 = this.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])]; + } + 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]; + } + 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)]; + } + 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; + } + 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; + } + 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; + } + 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; + } + 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); + } + } + 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 stringToUTF8String(str) { + return decodeURIComponent(escape(str)); +} +function utf8StringToString(str) { + return unescape(encodeURIComponent(str)); +} +function isArrayBuffer(v) { + return typeof v === "object" && 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(""); +} +class PromiseCapability { + #settled = false; + constructor() { + this.promise = new Promise((resolve, reject) => { + this.resolve = data => { + this.#settled = true; + resolve(data); + }; + this.reject = reason => { + this.#settled = true; + reject(reason); + }; + }); + } + get settled() { + return this.#settled; + } +} +exports.PromiseCapability = PromiseCapability; +let NormalizeRegex = null; +let NormalizationMap = null; +function normalizeUnicode(str) { + if (!NormalizeRegex) { + NormalizeRegex = /([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc-\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa-\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu; + NormalizationMap = new Map([["ſt", "ſt"]]); + } + return str.replaceAll(NormalizeRegex, (_, p1, p2) => { + return p1 ? p1.normalize("NFKC") : NormalizationMap.get(p2); + }); +} + +/***/ }), +/* 3 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XRefParseException = exports.XRefEntryException = exports.ParserEOFException = exports.PDF_VERSION_REGEXP = exports.MissingDataException = void 0; +exports.arrayBuffersToBytes = arrayBuffersToBytes; +exports.collectActions = collectActions; +exports.encodeToXmlString = encodeToXmlString; +exports.escapePDFName = escapePDFName; +exports.escapeString = escapeString; +exports.getInheritableProperty = getInheritableProperty; +exports.getLookupTableFactory = getLookupTableFactory; +exports.getNewAnnotationsMap = getNewAnnotationsMap; +exports.getRotationMatrix = getRotationMatrix; +exports.isAscii = isAscii; +exports.isWhiteSpace = isWhiteSpace; +exports.log2 = log2; +exports.numberToString = numberToString; +exports.parseXFAPath = parseXFAPath; +exports.readInt8 = readInt8; +exports.readUint16 = readUint16; +exports.readUint32 = readUint32; +exports.recoverJsURL = recoverJsURL; +exports.stringToUTF16HexString = stringToUTF16HexString; +exports.stringToUTF16String = stringToUTF16String; +exports.toRomanNumerals = toRomanNumerals; +exports.validateCSSFont = validateCSSFont; +exports.validateFontName = validateFontName; +var _util = __w_pdfjs_require__(2); +var _primitives = __w_pdfjs_require__(4); +var _base_stream = __w_pdfjs_require__(5); +const PDF_VERSION_REGEXP = /^[1-9]\.\d$/; +exports.PDF_VERSION_REGEXP = PDF_VERSION_REGEXP; +function getLookupTableFactory(initializer) { + let lookup; + return function () { + if (initializer) { + lookup = Object.create(null); + initializer(lookup); + initializer = null; + } + return lookup; + }; +} +class MissingDataException extends _util.BaseException { + constructor(begin, end) { + super(`Missing data [${begin}, ${end})`, "MissingDataException"); + this.begin = begin; + this.end = end; + } +} +exports.MissingDataException = MissingDataException; +class ParserEOFException extends _util.BaseException { + constructor(msg) { + super(msg, "ParserEOFException"); + } +} +exports.ParserEOFException = ParserEOFException; +class XRefEntryException extends _util.BaseException { + constructor(msg) { + super(msg, "XRefEntryException"); + } +} +exports.XRefEntryException = XRefEntryException; +class XRefParseException extends _util.BaseException { + constructor(msg) { + super(msg, "XRefParseException"); + } +} +exports.XRefParseException = XRefParseException; +function arrayBuffersToBytes(arr) { + const length = arr.length; + if (length === 0) { + return new Uint8Array(0); + } + if (length === 1) { + return new Uint8Array(arr[0]); + } + let dataLength = 0; + for (let i = 0; i < length; i++) { + dataLength += arr[i].byteLength; + } + const data = new Uint8Array(dataLength); + let pos = 0; + for (let i = 0; i < length; i++) { + const item = new Uint8Array(arr[i]); + data.set(item, pos); + pos += item.byteLength; + } + return data; +} +function getInheritableProperty({ + dict, + key, + getArray = false, + stopWhenFound = true +}) { + let values; + const visited = new _primitives.RefSet(); + while (dict instanceof _primitives.Dict && !(dict.objId && visited.has(dict.objId))) { + if (dict.objId) { + visited.put(dict.objId); + } + const value = getArray ? dict.getArray(key) : dict.get(key); + if (value !== undefined) { + if (stopWhenFound) { + return value; + } + (values ||= []).push(value); + } + dict = dict.get("Parent"); + } + return values; +} +const 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"]; +function toRomanNumerals(number, lowerCase = false) { + (0, _util.assert)(Number.isInteger(number) && number > 0, "The number should be a positive integer."); + const romanBuf = []; + let pos; + 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]); + const romanStr = romanBuf.join(""); + return lowerCase ? romanStr.toLowerCase() : romanStr; +} +function log2(x) { + if (x <= 0) { + return 0; + } + return Math.ceil(Math.log2(x)); +} +function readInt8(data, offset) { + return data[offset] << 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; +} +function isWhiteSpace(ch) { + return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a; +} +function parseXFAPath(path) { + const positionPattern = /(.+)\[(\d+)\]$/; + return path.split(".").map(component => { + const m = component.match(positionPattern); + if (m) { + return { + name: m[1], + pos: parseInt(m[2], 10) + }; + } + return { + name: component, + pos: 0 + }; + }); +} +function escapePDFName(str) { + const buffer = []; + let start = 0; + for (let i = 0, ii = str.length; i < ii; i++) { + const char = str.charCodeAt(i); + if (char < 0x21 || char > 0x7e || char === 0x23 || char === 0x28 || char === 0x29 || char === 0x3c || char === 0x3e || char === 0x5b || char === 0x5d || char === 0x7b || char === 0x7d || char === 0x2f || char === 0x25) { + if (start < i) { + buffer.push(str.substring(start, i)); + } + buffer.push(`#${char.toString(16)}`); + start = i + 1; + } + } + if (buffer.length === 0) { + return str; + } + if (start < str.length) { + buffer.push(str.substring(start, str.length)); + } + return buffer.join(""); +} +function escapeString(str) { + return str.replaceAll(/([()\\\n\r])/g, match => { + if (match === "\n") { + return "\\n"; + } else if (match === "\r") { + return "\\r"; + } + return `\\${match}`; + }); +} +function _collectJS(entry, xref, list, parents) { + if (!entry) { + return; + } + let parent = null; + if (entry instanceof _primitives.Ref) { + if (parents.has(entry)) { + return; + } + parent = entry; + parents.put(parent); + entry = xref.fetch(entry); + } + if (Array.isArray(entry)) { + for (const element of entry) { + _collectJS(element, xref, list, parents); + } + } else if (entry instanceof _primitives.Dict) { + if ((0, _primitives.isName)(entry.get("S"), "JavaScript")) { + const js = entry.get("JS"); + let code; + if (js instanceof _base_stream.BaseStream) { + code = js.getString(); + } else if (typeof js === "string") { + code = js; + } + code &&= (0, _util.stringToPDFString)(code).replaceAll("\x00", ""); + if (code) { + list.push(code); + } + } + _collectJS(entry.getRaw("Next"), xref, list, parents); + } + if (parent) { + parents.remove(parent); + } +} +function collectActions(xref, dict, eventType) { + const actions = Object.create(null); + const additionalActionsDicts = getInheritableProperty({ + dict, + key: "AA", + stopWhenFound: false + }); + if (additionalActionsDicts) { + for (let i = additionalActionsDicts.length - 1; i >= 0; i--) { + const additionalActions = additionalActionsDicts[i]; + if (!(additionalActions instanceof _primitives.Dict)) { + continue; + } + for (const key of additionalActions.getKeys()) { + const action = eventType[key]; + if (!action) { + continue; + } + const actionDict = additionalActions.getRaw(key); + const parents = new _primitives.RefSet(); + const list = []; + _collectJS(actionDict, xref, list, parents); + if (list.length > 0) { + actions[action] = list; + } + } + } + } + if (dict.has("A")) { + const actionDict = dict.get("A"); + const parents = new _primitives.RefSet(); + const list = []; + _collectJS(actionDict, xref, list, parents); + if (list.length > 0) { + actions.Action = list; + } + } + return (0, _util.objectSize)(actions) > 0 ? actions : null; +} +const XMLEntities = { + 0x3c: "<", + 0x3e: ">", + 0x26: "&", + 0x22: """, + 0x27: "'" +}; +function encodeToXmlString(str) { + const buffer = []; + let start = 0; + for (let i = 0, ii = str.length; i < ii; i++) { + const char = str.codePointAt(i); + if (0x20 <= char && char <= 0x7e) { + const entity = XMLEntities[char]; + if (entity) { + if (start < i) { + buffer.push(str.substring(start, i)); + } + buffer.push(entity); + start = i + 1; + } + } else { + if (start < i) { + buffer.push(str.substring(start, i)); + } + buffer.push(`&#x${char.toString(16).toUpperCase()};`); + if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) { + i++; + } + start = i + 1; + } + } + if (buffer.length === 0) { + return str; + } + if (start < str.length) { + buffer.push(str.substring(start, str.length)); + } + return buffer.join(""); +} +function validateFontName(fontFamily, mustWarn = false) { + const m = /^("|').*("|')$/.exec(fontFamily); + if (m && m[1] === m[2]) { + const re = new RegExp(`[^\\\\]${m[1]}`); + if (re.test(fontFamily.slice(1, -1))) { + if (mustWarn) { + (0, _util.warn)(`FontFamily contains unescaped ${m[1]}: ${fontFamily}.`); + } + return false; + } + } else { + for (const ident of fontFamily.split(/[ \t]+/)) { + if (/^(\d|(-(\d|-)))/.test(ident) || !/^[\w-\\]+$/.test(ident)) { + if (mustWarn) { + (0, _util.warn)(`FontFamily contains invalid : ${fontFamily}.`); + } + return false; + } + } + } + return true; +} +function validateCSSFont(cssFontInfo) { + const DEFAULT_CSS_FONT_OBLIQUE = "14"; + const DEFAULT_CSS_FONT_WEIGHT = "400"; + const CSS_FONT_WEIGHT_VALUES = new Set(["100", "200", "300", "400", "500", "600", "700", "800", "900", "1000", "normal", "bold", "bolder", "lighter"]); + const { + fontFamily, + fontWeight, + italicAngle + } = cssFontInfo; + if (!validateFontName(fontFamily, true)) { + return false; + } + const weight = fontWeight ? fontWeight.toString() : ""; + cssFontInfo.fontWeight = CSS_FONT_WEIGHT_VALUES.has(weight) ? weight : DEFAULT_CSS_FONT_WEIGHT; + const angle = parseFloat(italicAngle); + cssFontInfo.italicAngle = isNaN(angle) || angle < -90 || angle > 90 ? DEFAULT_CSS_FONT_OBLIQUE : italicAngle.toString(); + return true; +} +function recoverJsURL(str) { + const URL_OPEN_METHODS = ["app.launchURL", "window.open", "xfa.host.gotoURL"]; + const regex = new RegExp("^\\s*(" + URL_OPEN_METHODS.join("|").replaceAll(".", "\\.") + ")\\((?:'|\")([^'\"]*)(?:'|\")(?:,\\s*(\\w+)\\)|\\))", "i"); + const jsUrl = regex.exec(str); + if (jsUrl?.[2]) { + const url = jsUrl[2]; + let newWindow = false; + if (jsUrl[3] === "true" && jsUrl[1] === "app.launchURL") { + newWindow = true; + } + return { + url, + newWindow + }; + } + return null; +} +function numberToString(value) { + if (Number.isInteger(value)) { + return value.toString(); + } + const roundedValue = Math.round(value * 100); + if (roundedValue % 100 === 0) { + return (roundedValue / 100).toString(); + } + if (roundedValue % 10 === 0) { + return value.toFixed(1); + } + return value.toFixed(2); +} +function getNewAnnotationsMap(annotationStorage) { + if (!annotationStorage) { + return null; + } + const newAnnotationsByPage = new Map(); + for (const [key, value] of annotationStorage) { + if (!key.startsWith(_util.AnnotationEditorPrefix)) { + continue; + } + let annotations = newAnnotationsByPage.get(value.pageIndex); + if (!annotations) { + annotations = []; + newAnnotationsByPage.set(value.pageIndex, annotations); + } + annotations.push(value); + } + return newAnnotationsByPage.size > 0 ? newAnnotationsByPage : null; +} +function isAscii(str) { + return /^[\x00-\x7F]*$/.test(str); +} +function stringToUTF16HexString(str) { + const buf = []; + for (let i = 0, ii = str.length; i < ii; i++) { + const char = str.charCodeAt(i); + buf.push((char >> 8 & 0xff).toString(16).padStart(2, "0"), (char & 0xff).toString(16).padStart(2, "0")); + } + return buf.join(""); +} +function stringToUTF16String(str, bigEndian = false) { + const buf = []; + if (bigEndian) { + buf.push("\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 getRotationMatrix(rotation, width, height) { + switch (rotation) { + case 90: + return [0, 1, -1, 0, width, 0]; + case 180: + return [-1, 0, 0, -1, width, height]; + case 270: + return [0, -1, 1, 0, 0, height]; + default: + throw new Error("Invalid rotation"); + } +} + +/***/ }), +/* 4 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.RefSetCache = exports.RefSet = exports.Ref = exports.Name = exports.EOF = exports.Dict = exports.Cmd = exports.CIRCULAR_REF = void 0; +exports.clearPrimitiveCaches = clearPrimitiveCaches; +exports.isCmd = isCmd; +exports.isDict = isDict; +exports.isName = isName; +exports.isRefsEqual = isRefsEqual; +var _util = __w_pdfjs_require__(2); +const CIRCULAR_REF = Symbol("CIRCULAR_REF"); +exports.CIRCULAR_REF = CIRCULAR_REF; +const EOF = Symbol("EOF"); +exports.EOF = EOF; +let CmdCache = Object.create(null); +let NameCache = Object.create(null); +let RefCache = Object.create(null); +function clearPrimitiveCaches() { + CmdCache = Object.create(null); + NameCache = Object.create(null); + RefCache = Object.create(null); +} +class Name { + constructor(name) { + this.name = name; + } + static get(name) { + return NameCache[name] ||= new Name(name); + } +} +exports.Name = Name; +class Cmd { + constructor(cmd) { + this.cmd = cmd; + } + static get(cmd) { + return CmdCache[cmd] ||= new Cmd(cmd); + } +} +exports.Cmd = Cmd; +const nonSerializable = function nonSerializableClosure() { + return nonSerializable; +}; +class Dict { + constructor(xref = null) { + this._map = Object.create(null); + this.xref = xref; + this.objId = null; + this.suppressEncryption = false; + this.__nonSerializable__ = nonSerializable; + } + assignXref(newXref) { + this.xref = newXref; + } + get size() { + return Object.keys(this._map).length; + } + get(key1, key2, key3) { + let value = this._map[key1]; + if (value === undefined && key2 !== undefined) { + value = this._map[key2]; + if (value === undefined && key3 !== undefined) { + value = this._map[key3]; + } + } + if (value instanceof Ref && this.xref) { + return this.xref.fetch(value, this.suppressEncryption); + } + return value; + } + async getAsync(key1, key2, key3) { + let value = this._map[key1]; + if (value === undefined && key2 !== undefined) { + value = this._map[key2]; + if (value === undefined && key3 !== undefined) { + value = this._map[key3]; + } + } + if (value instanceof Ref && this.xref) { + return this.xref.fetchAsync(value, this.suppressEncryption); + } + return value; + } + getArray(key1, key2, key3) { + let value = this._map[key1]; + if (value === undefined && key2 !== undefined) { + value = this._map[key2]; + if (value === undefined && key3 !== undefined) { + value = this._map[key3]; + } + } + if (value instanceof Ref && this.xref) { + value = this.xref.fetch(value, this.suppressEncryption); + } + if (Array.isArray(value)) { + value = value.slice(); + for (let i = 0, ii = value.length; i < ii; i++) { + if (value[i] instanceof Ref && this.xref) { + value[i] = this.xref.fetch(value[i], this.suppressEncryption); + } + } + } + return value; + } + getRaw(key) { + return this._map[key]; + } + getKeys() { + return Object.keys(this._map); + } + getRawValues() { + return Object.values(this._map); + } + set(key, value) { + this._map[key] = value; + } + has(key) { + return this._map[key] !== undefined; + } + forEach(callback) { + for (const key in this._map) { + callback(key, this.get(key)); + } + } + static get empty() { + const emptyDict = new Dict(null); + emptyDict.set = (key, value) => { + (0, _util.unreachable)("Should not call `set` on the empty dictionary."); + }; + return (0, _util.shadow)(this, "empty", emptyDict); + } + static merge({ + xref, + dictArray, + mergeSubDicts = false + }) { + const mergedDict = new Dict(xref), + properties = new Map(); + for (const dict of dictArray) { + if (!(dict instanceof Dict)) { + continue; + } + for (const [key, value] of Object.entries(dict._map)) { + let property = properties.get(key); + if (property === undefined) { + property = []; + properties.set(key, property); + } else if (!mergeSubDicts || !(value instanceof Dict)) { + continue; + } + property.push(value); + } + } + for (const [name, values] of properties) { + if (values.length === 1 || !(values[0] instanceof Dict)) { + mergedDict._map[name] = values[0]; + continue; + } + const subDict = new Dict(xref); + for (const dict of values) { + for (const [key, value] of Object.entries(dict._map)) { + if (subDict._map[key] === undefined) { + subDict._map[key] = value; + } + } + } + if (subDict.size > 0) { + mergedDict._map[name] = subDict; + } + } + properties.clear(); + return mergedDict.size > 0 ? mergedDict : Dict.empty; + } +} +exports.Dict = Dict; +class Ref { + constructor(num, gen) { + this.num = num; + this.gen = gen; + } + toString() { + if (this.gen === 0) { + return `${this.num}R`; + } + return `${this.num}R${this.gen}`; + } + static fromString(str) { + const ref = RefCache[str]; + if (ref) { + return ref; + } + const m = /^(\d+)R(\d*)$/.exec(str); + if (!m || m[1] === "0") { + return null; + } + return RefCache[str] = new Ref(parseInt(m[1]), !m[2] ? 0 : parseInt(m[2])); + } + static get(num, gen) { + const key = gen === 0 ? `${num}R` : `${num}R${gen}`; + return RefCache[key] ||= new Ref(num, gen); + } +} +exports.Ref = Ref; +class RefSet { + constructor(parent = null) { + this._set = new Set(parent?._set); + } + has(ref) { + return this._set.has(ref.toString()); + } + put(ref) { + this._set.add(ref.toString()); + } + remove(ref) { + this._set.delete(ref.toString()); + } + [Symbol.iterator]() { + return this._set.values(); + } + clear() { + this._set.clear(); + } +} +exports.RefSet = RefSet; +class RefSetCache { + constructor() { + this._map = new Map(); + } + get size() { + return this._map.size; + } + get(ref) { + return this._map.get(ref.toString()); + } + has(ref) { + return this._map.has(ref.toString()); + } + put(ref, obj) { + this._map.set(ref.toString(), obj); + } + putAlias(ref, aliasRef) { + this._map.set(ref.toString(), this.get(aliasRef)); + } + [Symbol.iterator]() { + return this._map.values(); + } + clear() { + this._map.clear(); + } +} +exports.RefSetCache = RefSetCache; +function isName(v, name) { + return v instanceof Name && (name === undefined || v.name === name); +} +function isCmd(v, cmd) { + return v instanceof Cmd && (cmd === undefined || v.cmd === cmd); +} +function isDict(v, type) { + return v instanceof Dict && (type === undefined || isName(v.get("Type"), type)); +} +function isRefsEqual(v1, v2) { + return v1.num === v2.num && v1.gen === v2.gen; +} + +/***/ }), +/* 5 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.BaseStream = void 0; +var _util = __w_pdfjs_require__(2); +class BaseStream { + constructor() { + if (this.constructor === BaseStream) { + (0, _util.unreachable)("Cannot initialize BaseStream."); + } + } + get length() { + (0, _util.unreachable)("Abstract getter `length` accessed"); + } + get isEmpty() { + (0, _util.unreachable)("Abstract getter `isEmpty` accessed"); + } + get isDataLoaded() { + return (0, _util.shadow)(this, "isDataLoaded", true); + } + getByte() { + (0, _util.unreachable)("Abstract method `getByte` called"); + } + getBytes(length) { + (0, _util.unreachable)("Abstract method `getBytes` called"); + } + peekByte() { + const peekedByte = this.getByte(); + if (peekedByte !== -1) { + this.pos--; + } + return peekedByte; + } + peekBytes(length) { + const bytes = this.getBytes(length); + this.pos -= bytes.length; + return bytes; + } + getUint16() { + const b0 = this.getByte(); + const b1 = this.getByte(); + if (b0 === -1 || b1 === -1) { + return -1; + } + return (b0 << 8) + b1; + } + getInt32() { + const b0 = this.getByte(); + const b1 = this.getByte(); + const b2 = this.getByte(); + const b3 = this.getByte(); + return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; + } + getByteRange(begin, end) { + (0, _util.unreachable)("Abstract method `getByteRange` called"); + } + getString(length) { + return (0, _util.bytesToString)(this.getBytes(length)); + } + skip(n) { + this.pos += n || 1; + } + reset() { + (0, _util.unreachable)("Abstract method `reset` called"); + } + moveStart() { + (0, _util.unreachable)("Abstract method `moveStart` called"); + } + makeSubStream(start, length, dict = null) { + (0, _util.unreachable)("Abstract method `makeSubStream` called"); + } + getBaseStreams() { + return null; + } +} +exports.BaseStream = BaseStream; + +/***/ }), +/* 6 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.NetworkPdfManager = exports.LocalPdfManager = void 0; +var _util = __w_pdfjs_require__(2); +var _chunked_stream = __w_pdfjs_require__(7); +var _core_utils = __w_pdfjs_require__(3); +var _document = __w_pdfjs_require__(9); +var _stream = __w_pdfjs_require__(8); +function parseDocBaseUrl(url) { + if (url) { + const absoluteUrl = (0, _util.createValidAbsoluteUrl)(url); + if (absoluteUrl) { + return absoluteUrl.href; + } + (0, _util.warn)(`Invalid absolute docBaseUrl: "${url}".`); + } + return null; +} +class BasePdfManager { + constructor(args) { + if (this.constructor === BasePdfManager) { + (0, _util.unreachable)("Cannot initialize BasePdfManager."); + } + this._docBaseUrl = parseDocBaseUrl(args.docBaseUrl); + this._docId = args.docId; + this._password = args.password; + this.enableXfa = args.enableXfa; + args.evaluatorOptions.isOffscreenCanvasSupported &&= _util.FeatureTest.isOffscreenCanvasSupported; + this.evaluatorOptions = args.evaluatorOptions; + } + get docId() { + return this._docId; + } + get password() { + return this._password; + } + get docBaseUrl() { + const catalog = this.pdfDocument.catalog; + return (0, _util.shadow)(this, "docBaseUrl", catalog.baseUrl || this._docBaseUrl); + } + ensureDoc(prop, args) { + return this.ensure(this.pdfDocument, prop, args); + } + ensureXRef(prop, args) { + return this.ensure(this.pdfDocument.xref, prop, args); + } + ensureCatalog(prop, args) { + return this.ensure(this.pdfDocument.catalog, prop, args); + } + getPage(pageIndex) { + return this.pdfDocument.getPage(pageIndex); + } + fontFallback(id, handler) { + return this.pdfDocument.fontFallback(id, handler); + } + loadXfaFonts(handler, task) { + return this.pdfDocument.loadXfaFonts(handler, task); + } + loadXfaImages() { + return this.pdfDocument.loadXfaImages(); + } + serializeXfaData(annotationStorage) { + return this.pdfDocument.serializeXfaData(annotationStorage); + } + cleanup(manuallyTriggered = false) { + return this.pdfDocument.cleanup(manuallyTriggered); + } + async ensure(obj, prop, args) { + (0, _util.unreachable)("Abstract method `ensure` called"); + } + requestRange(begin, end) { + (0, _util.unreachable)("Abstract method `requestRange` called"); + } + requestLoadedStream(noFetch = false) { + (0, _util.unreachable)("Abstract method `requestLoadedStream` called"); + } + sendProgressiveData(chunk) { + (0, _util.unreachable)("Abstract method `sendProgressiveData` called"); + } + updatePassword(password) { + this._password = password; + } + terminate(reason) { + (0, _util.unreachable)("Abstract method `terminate` called"); + } +} +class LocalPdfManager extends BasePdfManager { + constructor(args) { + super(args); + const stream = new _stream.Stream(args.source); + this.pdfDocument = new _document.PDFDocument(this, stream); + this._loadedStreamPromise = Promise.resolve(stream); + } + async ensure(obj, prop, args) { + const value = obj[prop]; + if (typeof value === "function") { + return value.apply(obj, args); + } + return value; + } + requestRange(begin, end) { + return Promise.resolve(); + } + requestLoadedStream(noFetch = false) { + return this._loadedStreamPromise; + } + terminate(reason) {} +} +exports.LocalPdfManager = LocalPdfManager; +class NetworkPdfManager extends BasePdfManager { + constructor(args) { + super(args); + this.streamManager = new _chunked_stream.ChunkedStreamManager(args.source, { + msgHandler: args.handler, + length: args.length, + disableAutoFetch: args.disableAutoFetch, + rangeChunkSize: args.rangeChunkSize + }); + this.pdfDocument = new _document.PDFDocument(this, this.streamManager.getStream()); + } + async ensure(obj, prop, args) { + try { + const value = obj[prop]; + if (typeof value === "function") { + return value.apply(obj, args); + } + return value; + } catch (ex) { + if (!(ex instanceof _core_utils.MissingDataException)) { + throw ex; + } + await this.requestRange(ex.begin, ex.end); + return this.ensure(obj, prop, args); + } + } + requestRange(begin, end) { + return this.streamManager.requestRange(begin, end); + } + requestLoadedStream(noFetch = false) { + return this.streamManager.requestAllChunks(noFetch); + } + sendProgressiveData(chunk) { + this.streamManager.onReceiveData({ + chunk + }); + } + terminate(reason) { + this.streamManager.abort(reason); + } +} +exports.NetworkPdfManager = NetworkPdfManager; + +/***/ }), +/* 7 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ChunkedStreamManager = exports.ChunkedStream = void 0; +var _core_utils = __w_pdfjs_require__(3); +var _util = __w_pdfjs_require__(2); +var _stream = __w_pdfjs_require__(8); +class ChunkedStream extends _stream.Stream { + constructor(length, chunkSize, manager) { + super(new Uint8Array(length), 0, length, null); + this.chunkSize = chunkSize; + this._loadedChunks = new Set(); + this.numChunks = Math.ceil(length / chunkSize); + this.manager = manager; + this.progressiveDataLength = 0; + this.lastSuccessfulEnsureByteChunk = -1; + } + getMissingChunks() { + const chunks = []; + for (let chunk = 0, n = this.numChunks; chunk < n; ++chunk) { + if (!this._loadedChunks.has(chunk)) { + chunks.push(chunk); + } + } + return chunks; + } + get numChunksLoaded() { + return this._loadedChunks.size; + } + get isDataLoaded() { + return this.numChunksLoaded === this.numChunks; + } + onReceiveData(begin, chunk) { + const chunkSize = this.chunkSize; + if (begin % chunkSize !== 0) { + throw new Error(`Bad begin offset: ${begin}`); + } + const end = begin + chunk.byteLength; + if (end % chunkSize !== 0 && end !== this.bytes.length) { + throw new Error(`Bad end offset: ${end}`); + } + this.bytes.set(new Uint8Array(chunk), begin); + const beginChunk = Math.floor(begin / chunkSize); + const endChunk = Math.floor((end - 1) / chunkSize) + 1; + for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) { + this._loadedChunks.add(curChunk); + } + } + onReceiveProgressiveData(data) { + let position = this.progressiveDataLength; + const beginChunk = Math.floor(position / this.chunkSize); + this.bytes.set(new Uint8Array(data), position); + position += data.byteLength; + this.progressiveDataLength = position; + const endChunk = position >= this.end ? this.numChunks : Math.floor(position / this.chunkSize); + for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) { + this._loadedChunks.add(curChunk); + } + } + ensureByte(pos) { + if (pos < this.progressiveDataLength) { + return; + } + const chunk = Math.floor(pos / this.chunkSize); + if (chunk > this.numChunks) { + return; + } + if (chunk === this.lastSuccessfulEnsureByteChunk) { + return; + } + if (!this._loadedChunks.has(chunk)) { + throw new _core_utils.MissingDataException(pos, pos + 1); + } + this.lastSuccessfulEnsureByteChunk = chunk; + } + ensureRange(begin, end) { + if (begin >= end) { + return; + } + if (end <= this.progressiveDataLength) { + return; + } + const beginChunk = Math.floor(begin / this.chunkSize); + if (beginChunk > this.numChunks) { + return; + } + const endChunk = Math.min(Math.floor((end - 1) / this.chunkSize) + 1, this.numChunks); + for (let chunk = beginChunk; chunk < endChunk; ++chunk) { + if (!this._loadedChunks.has(chunk)) { + throw new _core_utils.MissingDataException(begin, end); + } + } + } + nextEmptyChunk(beginChunk) { + const numChunks = this.numChunks; + for (let i = 0; i < numChunks; ++i) { + const chunk = (beginChunk + i) % numChunks; + if (!this._loadedChunks.has(chunk)) { + return chunk; + } + } + return null; + } + hasChunk(chunk) { + return this._loadedChunks.has(chunk); + } + getByte() { + const pos = this.pos; + if (pos >= this.end) { + return -1; + } + if (pos >= this.progressiveDataLength) { + this.ensureByte(pos); + } + return this.bytes[this.pos++]; + } + getBytes(length) { + const bytes = this.bytes; + const pos = this.pos; + const strEnd = this.end; + if (!length) { + if (strEnd > this.progressiveDataLength) { + this.ensureRange(pos, strEnd); + } + return bytes.subarray(pos, strEnd); + } + let end = pos + length; + if (end > strEnd) { + end = strEnd; + } + if (end > this.progressiveDataLength) { + this.ensureRange(pos, end); + } + this.pos = end; + return bytes.subarray(pos, end); + } + getByteRange(begin, end) { + if (begin < 0) { + begin = 0; + } + if (end > this.end) { + end = this.end; + } + if (end > this.progressiveDataLength) { + this.ensureRange(begin, end); + } + return this.bytes.subarray(begin, end); + } + makeSubStream(start, length, dict = null) { + if (length) { + if (start + length > this.progressiveDataLength) { + this.ensureRange(start, start + length); + } + } else { + if (start >= this.progressiveDataLength) { + this.ensureByte(start); + } + } + function ChunkedStreamSubstream() {} + ChunkedStreamSubstream.prototype = Object.create(this); + ChunkedStreamSubstream.prototype.getMissingChunks = function () { + const chunkSize = this.chunkSize; + const beginChunk = Math.floor(this.start / chunkSize); + const endChunk = Math.floor((this.end - 1) / chunkSize) + 1; + const missingChunks = []; + for (let chunk = beginChunk; chunk < endChunk; ++chunk) { + if (!this._loadedChunks.has(chunk)) { + missingChunks.push(chunk); + } + } + return missingChunks; + }; + Object.defineProperty(ChunkedStreamSubstream.prototype, "isDataLoaded", { + get() { + if (this.numChunksLoaded === this.numChunks) { + return true; + } + return this.getMissingChunks().length === 0; + }, + configurable: true + }); + const subStream = new ChunkedStreamSubstream(); + subStream.pos = subStream.start = start; + subStream.end = start + length || this.end; + subStream.dict = dict; + return subStream; + } + getBaseStreams() { + return [this]; + } +} +exports.ChunkedStream = ChunkedStream; +class ChunkedStreamManager { + constructor(pdfNetworkStream, args) { + this.length = args.length; + this.chunkSize = args.rangeChunkSize; + this.stream = new ChunkedStream(this.length, this.chunkSize, this); + this.pdfNetworkStream = pdfNetworkStream; + this.disableAutoFetch = args.disableAutoFetch; + this.msgHandler = args.msgHandler; + this.currRequestId = 0; + this._chunksNeededByRequest = new Map(); + this._requestsByChunk = new Map(); + this._promisesByRequest = new Map(); + this.progressiveDataLength = 0; + this.aborted = false; + this._loadedStreamCapability = new _util.PromiseCapability(); + } + sendRequest(begin, end) { + const rangeReader = this.pdfNetworkStream.getRangeReader(begin, end); + if (!rangeReader.isStreamingSupported) { + rangeReader.onProgress = this.onProgress.bind(this); + } + let chunks = [], + loaded = 0; + return new Promise((resolve, reject) => { + const readChunk = ({ + value, + done + }) => { + try { + if (done) { + const chunkData = (0, _core_utils.arrayBuffersToBytes)(chunks); + chunks = null; + resolve(chunkData); + return; + } + loaded += value.byteLength; + if (rangeReader.isStreamingSupported) { + this.onProgress({ + loaded + }); + } + chunks.push(value); + rangeReader.read().then(readChunk, reject); + } catch (e) { + reject(e); + } + }; + rangeReader.read().then(readChunk, reject); + }).then(data => { + if (this.aborted) { + return; + } + this.onReceiveData({ + chunk: data, + begin + }); + }); + } + requestAllChunks(noFetch = false) { + if (!noFetch) { + const missingChunks = this.stream.getMissingChunks(); + this._requestChunks(missingChunks); + } + return this._loadedStreamCapability.promise; + } + _requestChunks(chunks) { + const requestId = this.currRequestId++; + const chunksNeeded = new Set(); + this._chunksNeededByRequest.set(requestId, chunksNeeded); + for (const chunk of chunks) { + if (!this.stream.hasChunk(chunk)) { + chunksNeeded.add(chunk); + } + } + if (chunksNeeded.size === 0) { + return Promise.resolve(); + } + const capability = new _util.PromiseCapability(); + this._promisesByRequest.set(requestId, capability); + const chunksToRequest = []; + for (const chunk of chunksNeeded) { + let requestIds = this._requestsByChunk.get(chunk); + if (!requestIds) { + requestIds = []; + this._requestsByChunk.set(chunk, requestIds); + chunksToRequest.push(chunk); + } + requestIds.push(requestId); + } + if (chunksToRequest.length > 0) { + const groupedChunksToRequest = this.groupChunks(chunksToRequest); + for (const groupedChunk of groupedChunksToRequest) { + const begin = groupedChunk.beginChunk * this.chunkSize; + const end = Math.min(groupedChunk.endChunk * this.chunkSize, this.length); + this.sendRequest(begin, end).catch(capability.reject); + } + } + return capability.promise.catch(reason => { + if (this.aborted) { + return; + } + throw reason; + }); + } + getStream() { + return this.stream; + } + requestRange(begin, end) { + end = Math.min(end, this.length); + const beginChunk = this.getBeginChunk(begin); + const endChunk = this.getEndChunk(end); + const chunks = []; + for (let chunk = beginChunk; chunk < endChunk; ++chunk) { + chunks.push(chunk); + } + return this._requestChunks(chunks); + } + requestRanges(ranges = []) { + const chunksToRequest = []; + for (const range of ranges) { + const beginChunk = this.getBeginChunk(range.begin); + const endChunk = this.getEndChunk(range.end); + for (let chunk = beginChunk; chunk < endChunk; ++chunk) { + if (!chunksToRequest.includes(chunk)) { + chunksToRequest.push(chunk); + } + } + } + chunksToRequest.sort(function (a, b) { + return a - b; + }); + return this._requestChunks(chunksToRequest); + } + groupChunks(chunks) { + const groupedChunks = []; + let beginChunk = -1; + let prevChunk = -1; + for (let i = 0, ii = chunks.length; i < ii; ++i) { + const chunk = chunks[i]; + if (beginChunk < 0) { + beginChunk = chunk; + } + if (prevChunk >= 0 && prevChunk + 1 !== chunk) { + groupedChunks.push({ + beginChunk, + endChunk: prevChunk + 1 + }); + beginChunk = chunk; + } + if (i + 1 === chunks.length) { + groupedChunks.push({ + beginChunk, + endChunk: chunk + 1 + }); + } + prevChunk = chunk; + } + return groupedChunks; + } + onProgress(args) { + this.msgHandler.send("DocProgress", { + loaded: this.stream.numChunksLoaded * this.chunkSize + args.loaded, + total: this.length + }); + } + onReceiveData(args) { + const chunk = args.chunk; + const isProgressive = args.begin === undefined; + const begin = isProgressive ? this.progressiveDataLength : args.begin; + const end = begin + chunk.byteLength; + const beginChunk = Math.floor(begin / this.chunkSize); + const endChunk = end < this.length ? Math.floor(end / this.chunkSize) : Math.ceil(end / this.chunkSize); + if (isProgressive) { + this.stream.onReceiveProgressiveData(chunk); + this.progressiveDataLength = end; + } else { + this.stream.onReceiveData(begin, chunk); + } + if (this.stream.isDataLoaded) { + this._loadedStreamCapability.resolve(this.stream); + } + const loadedRequests = []; + for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) { + const requestIds = this._requestsByChunk.get(curChunk); + if (!requestIds) { + continue; + } + this._requestsByChunk.delete(curChunk); + for (const requestId of requestIds) { + const chunksNeeded = this._chunksNeededByRequest.get(requestId); + if (chunksNeeded.has(curChunk)) { + chunksNeeded.delete(curChunk); + } + if (chunksNeeded.size > 0) { + continue; + } + loadedRequests.push(requestId); + } + } + if (!this.disableAutoFetch && this._requestsByChunk.size === 0) { + let nextEmptyChunk; + if (this.stream.numChunksLoaded === 1) { + const lastChunk = this.stream.numChunks - 1; + if (!this.stream.hasChunk(lastChunk)) { + nextEmptyChunk = lastChunk; + } + } else { + nextEmptyChunk = this.stream.nextEmptyChunk(endChunk); + } + if (Number.isInteger(nextEmptyChunk)) { + this._requestChunks([nextEmptyChunk]); + } + } + for (const requestId of loadedRequests) { + const capability = this._promisesByRequest.get(requestId); + this._promisesByRequest.delete(requestId); + capability.resolve(); + } + this.msgHandler.send("DocProgress", { + loaded: this.stream.numChunksLoaded * this.chunkSize, + total: this.length + }); + } + onError(err) { + this._loadedStreamCapability.reject(err); + } + getBeginChunk(begin) { + return Math.floor(begin / this.chunkSize); + } + getEndChunk(end) { + return Math.floor((end - 1) / this.chunkSize) + 1; + } + abort(reason) { + this.aborted = true; + if (this.pdfNetworkStream) { + this.pdfNetworkStream.cancelAllRequests(reason); + } + for (const capability of this._promisesByRequest.values()) { + capability.reject(reason); + } + } +} +exports.ChunkedStreamManager = ChunkedStreamManager; + +/***/ }), +/* 8 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.StringStream = exports.Stream = exports.NullStream = void 0; +var _base_stream = __w_pdfjs_require__(5); +var _util = __w_pdfjs_require__(2); +class Stream extends _base_stream.BaseStream { + constructor(arrayBuffer, start, length, dict) { + super(); + this.bytes = arrayBuffer instanceof Uint8Array ? arrayBuffer : new Uint8Array(arrayBuffer); + this.start = start || 0; + this.pos = this.start; + this.end = start + length || this.bytes.length; + this.dict = dict; + } + get length() { + return this.end - this.start; + } + get isEmpty() { + return this.length === 0; + } + getByte() { + if (this.pos >= this.end) { + return -1; + } + return this.bytes[this.pos++]; + } + getBytes(length) { + const bytes = this.bytes; + const pos = this.pos; + const strEnd = this.end; + if (!length) { + return bytes.subarray(pos, strEnd); + } + let end = pos + length; + if (end > strEnd) { + end = strEnd; + } + this.pos = end; + return bytes.subarray(pos, end); + } + getByteRange(begin, end) { + if (begin < 0) { + begin = 0; + } + if (end > this.end) { + end = this.end; + } + return this.bytes.subarray(begin, end); + } + reset() { + this.pos = this.start; + } + moveStart() { + this.start = this.pos; + } + makeSubStream(start, length, dict = null) { + return new Stream(this.bytes.buffer, start, length, dict); + } +} +exports.Stream = Stream; +class StringStream extends Stream { + constructor(str) { + super((0, _util.stringToBytes)(str)); + } +} +exports.StringStream = StringStream; +class NullStream extends Stream { + constructor() { + super(new Uint8Array(0)); + } +} +exports.NullStream = NullStream; + +/***/ }), +/* 9 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Page = exports.PDFDocument = void 0; +var _util = __w_pdfjs_require__(2); +var _annotation = __w_pdfjs_require__(10); +var _core_utils = __w_pdfjs_require__(3); +var _primitives = __w_pdfjs_require__(4); +var _xfa_fonts = __w_pdfjs_require__(51); +var _base_stream = __w_pdfjs_require__(5); +var _crypto = __w_pdfjs_require__(68); +var _catalog = __w_pdfjs_require__(70); +var _cleanup_helper = __w_pdfjs_require__(72); +var _dataset_reader = __w_pdfjs_require__(102); +var _parser = __w_pdfjs_require__(16); +var _stream = __w_pdfjs_require__(8); +var _object_loader = __w_pdfjs_require__(76); +var _operator_list = __w_pdfjs_require__(64); +var _evaluator = __w_pdfjs_require__(13); +var _decode_stream = __w_pdfjs_require__(18); +var _struct_tree = __w_pdfjs_require__(75); +var _writer = __w_pdfjs_require__(66); +var _factory = __w_pdfjs_require__(77); +var _xref = __w_pdfjs_require__(103); +const DEFAULT_USER_UNIT = 1.0; +const LETTER_SIZE_MEDIABOX = [0, 0, 612, 792]; +class Page { + constructor({ + pdfManager, + xref, + pageIndex, + pageDict, + ref, + globalIdFactory, + fontCache, + builtInCMapCache, + standardFontDataCache, + globalImageCache, + systemFontCache, + nonBlendModesSet, + xfaFactory + }) { + this.pdfManager = pdfManager; + this.pageIndex = pageIndex; + this.pageDict = pageDict; + this.xref = xref; + this.ref = ref; + this.fontCache = fontCache; + this.builtInCMapCache = builtInCMapCache; + this.standardFontDataCache = standardFontDataCache; + this.globalImageCache = globalImageCache; + this.systemFontCache = systemFontCache; + this.nonBlendModesSet = nonBlendModesSet; + this.evaluatorOptions = pdfManager.evaluatorOptions; + this.resourcesPromise = null; + this.xfaFactory = xfaFactory; + const idCounters = { + obj: 0 + }; + this._localIdFactory = class extends globalIdFactory { + static createObjId() { + return `p${pageIndex}_${++idCounters.obj}`; + } + static getPageObjId() { + return `p${ref.toString()}`; + } + }; + } + _getInheritableProperty(key, getArray = false) { + const value = (0, _core_utils.getInheritableProperty)({ + dict: this.pageDict, + key, + getArray, + stopWhenFound: false + }); + if (!Array.isArray(value)) { + return value; + } + if (value.length === 1 || !(value[0] instanceof _primitives.Dict)) { + return value[0]; + } + return _primitives.Dict.merge({ + xref: this.xref, + dictArray: value + }); + } + get content() { + return this.pageDict.getArray("Contents"); + } + get resources() { + const resources = this._getInheritableProperty("Resources"); + return (0, _util.shadow)(this, "resources", resources instanceof _primitives.Dict ? resources : _primitives.Dict.empty); + } + _getBoundingBox(name) { + if (this.xfaData) { + return this.xfaData.bbox; + } + let box = this._getInheritableProperty(name, true); + if (Array.isArray(box) && box.length === 4) { + box = _util.Util.normalizeRect(box); + if (box[2] - box[0] > 0 && box[3] - box[1] > 0) { + return box; + } + (0, _util.warn)(`Empty, or invalid, /${name} entry.`); + } + return null; + } + get mediaBox() { + return (0, _util.shadow)(this, "mediaBox", this._getBoundingBox("MediaBox") || LETTER_SIZE_MEDIABOX); + } + get cropBox() { + return (0, _util.shadow)(this, "cropBox", this._getBoundingBox("CropBox") || this.mediaBox); + } + get userUnit() { + let obj = this.pageDict.get("UserUnit"); + if (typeof obj !== "number" || obj <= 0) { + obj = DEFAULT_USER_UNIT; + } + return (0, _util.shadow)(this, "userUnit", obj); + } + get view() { + const { + cropBox, + mediaBox + } = this; + if (cropBox !== mediaBox && !(0, _util.isArrayEqual)(cropBox, mediaBox)) { + const box = _util.Util.intersect(cropBox, mediaBox); + if (box && box[2] - box[0] > 0 && box[3] - box[1] > 0) { + return (0, _util.shadow)(this, "view", box); + } + (0, _util.warn)("Empty /CropBox and /MediaBox intersection."); + } + return (0, _util.shadow)(this, "view", mediaBox); + } + get rotate() { + let rotate = this._getInheritableProperty("Rotate") || 0; + if (rotate % 90 !== 0) { + rotate = 0; + } else if (rotate >= 360) { + rotate %= 360; + } else if (rotate < 0) { + rotate = (rotate % 360 + 360) % 360; + } + return (0, _util.shadow)(this, "rotate", rotate); + } + _onSubStreamError(reason, objId) { + if (this.evaluatorOptions.ignoreErrors) { + (0, _util.warn)(`getContentStream - ignoring sub-stream (${objId}): "${reason}".`); + return; + } + throw reason; + } + getContentStream() { + return this.pdfManager.ensure(this, "content").then(content => { + if (content instanceof _base_stream.BaseStream) { + return content; + } + if (Array.isArray(content)) { + return new _decode_stream.StreamsSequenceStream(content, this._onSubStreamError.bind(this)); + } + return new _stream.NullStream(); + }); + } + get xfaData() { + return (0, _util.shadow)(this, "xfaData", this.xfaFactory ? { + bbox: this.xfaFactory.getBoundingBox(this.pageIndex) + } : null); + } + #replaceIdByRef(annotations, deletedAnnotations, existingAnnotations) { + for (const annotation of annotations) { + if (annotation.id) { + const ref = _primitives.Ref.fromString(annotation.id); + if (!ref) { + (0, _util.warn)(`A non-linked annotation cannot be modified: ${annotation.id}`); + continue; + } + if (annotation.deleted) { + deletedAnnotations.put(ref); + continue; + } + existingAnnotations?.put(ref); + annotation.ref = ref; + delete annotation.id; + } + } + } + async saveNewAnnotations(handler, task, annotations, imagePromises) { + if (this.xfaFactory) { + throw new Error("XFA: Cannot save new annotations."); + } + const partialEvaluator = new _evaluator.PartialEvaluator({ + xref: this.xref, + handler, + pageIndex: this.pageIndex, + idFactory: this._localIdFactory, + fontCache: this.fontCache, + builtInCMapCache: this.builtInCMapCache, + standardFontDataCache: this.standardFontDataCache, + globalImageCache: this.globalImageCache, + systemFontCache: this.systemFontCache, + options: this.evaluatorOptions + }); + const deletedAnnotations = new _primitives.RefSet(); + const existingAnnotations = new _primitives.RefSet(); + this.#replaceIdByRef(annotations, deletedAnnotations, existingAnnotations); + const pageDict = this.pageDict; + const annotationsArray = this.annotations.filter(a => !(a instanceof _primitives.Ref && deletedAnnotations.has(a))); + const newData = await _annotation.AnnotationFactory.saveNewAnnotations(partialEvaluator, task, annotations, imagePromises); + for (const { + ref + } of newData.annotations) { + if (ref instanceof _primitives.Ref && !existingAnnotations.has(ref)) { + annotationsArray.push(ref); + } + } + const savedDict = pageDict.get("Annots"); + pageDict.set("Annots", annotationsArray); + const buffer = []; + let transform = null; + if (this.xref.encrypt) { + transform = this.xref.encrypt.createCipherTransform(this.ref.num, this.ref.gen); + } + await (0, _writer.writeObject)(this.ref, pageDict, buffer, transform); + if (savedDict) { + pageDict.set("Annots", savedDict); + } + const objects = newData.dependencies; + objects.push({ + ref: this.ref, + data: buffer.join("") + }, ...newData.annotations); + return objects; + } + save(handler, task, annotationStorage) { + const partialEvaluator = new _evaluator.PartialEvaluator({ + xref: this.xref, + handler, + pageIndex: this.pageIndex, + idFactory: this._localIdFactory, + fontCache: this.fontCache, + builtInCMapCache: this.builtInCMapCache, + standardFontDataCache: this.standardFontDataCache, + globalImageCache: this.globalImageCache, + systemFontCache: this.systemFontCache, + options: this.evaluatorOptions + }); + return this._parsedAnnotations.then(function (annotations) { + const newRefsPromises = []; + for (const annotation of annotations) { + if (!annotation.mustBePrinted(annotationStorage)) { + continue; + } + newRefsPromises.push(annotation.save(partialEvaluator, task, annotationStorage).catch(function (reason) { + (0, _util.warn)("save - ignoring annotation data during " + `"${task.name}" task: "${reason}".`); + return null; + })); + } + return Promise.all(newRefsPromises).then(function (newRefs) { + return newRefs.filter(newRef => !!newRef); + }); + }); + } + loadResources(keys) { + if (!this.resourcesPromise) { + this.resourcesPromise = this.pdfManager.ensure(this, "resources"); + } + return this.resourcesPromise.then(() => { + const objectLoader = new _object_loader.ObjectLoader(this.resources, keys, this.xref); + return objectLoader.load(); + }); + } + getOperatorList({ + handler, + sink, + task, + intent, + cacheKey, + annotationStorage = null + }) { + const contentStreamPromise = this.getContentStream(); + const resourcesPromise = this.loadResources(["ColorSpace", "ExtGState", "Font", "Pattern", "Properties", "Shading", "XObject"]); + const partialEvaluator = new _evaluator.PartialEvaluator({ + xref: this.xref, + handler, + pageIndex: this.pageIndex, + idFactory: this._localIdFactory, + fontCache: this.fontCache, + builtInCMapCache: this.builtInCMapCache, + standardFontDataCache: this.standardFontDataCache, + globalImageCache: this.globalImageCache, + systemFontCache: this.systemFontCache, + options: this.evaluatorOptions + }); + const newAnnotationsByPage = !this.xfaFactory ? (0, _core_utils.getNewAnnotationsMap)(annotationStorage) : null; + let deletedAnnotations = null; + let newAnnotationsPromise = Promise.resolve(null); + if (newAnnotationsByPage) { + let imagePromises; + const newAnnotations = newAnnotationsByPage.get(this.pageIndex); + if (newAnnotations) { + const missingBitmaps = new Set(); + for (const { + bitmapId, + bitmap + } of newAnnotations) { + if (bitmapId && !bitmap && !missingBitmaps.has(bitmapId)) { + missingBitmaps.add(bitmapId); + } + } + const { + isOffscreenCanvasSupported + } = this.evaluatorOptions; + if (missingBitmaps.size > 0) { + const annotationWithBitmaps = []; + for (const [key, annotation] of annotationStorage) { + if (!key.startsWith(_util.AnnotationEditorPrefix)) { + continue; + } + if (annotation.bitmap && missingBitmaps.has(annotation.bitmapId)) { + annotationWithBitmaps.push(annotation); + } + } + imagePromises = _annotation.AnnotationFactory.generateImages(annotationWithBitmaps, this.xref, isOffscreenCanvasSupported); + } else { + imagePromises = _annotation.AnnotationFactory.generateImages(newAnnotations, this.xref, isOffscreenCanvasSupported); + } + deletedAnnotations = new _primitives.RefSet(); + this.#replaceIdByRef(newAnnotations, deletedAnnotations, null); + newAnnotationsPromise = _annotation.AnnotationFactory.printNewAnnotations(partialEvaluator, task, newAnnotations, imagePromises); + } + } + const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]); + const pageListPromise = dataPromises.then(([contentStream]) => { + const opList = new _operator_list.OperatorList(intent, sink); + handler.send("StartRenderPage", { + transparency: partialEvaluator.hasBlendModes(this.resources, this.nonBlendModesSet), + pageIndex: this.pageIndex, + cacheKey + }); + return partialEvaluator.getOperatorList({ + stream: contentStream, + task, + resources: this.resources, + operatorList: opList + }).then(function () { + return opList; + }); + }); + return Promise.all([pageListPromise, this._parsedAnnotations, newAnnotationsPromise]).then(function ([pageOpList, annotations, newAnnotations]) { + if (newAnnotations) { + annotations = annotations.filter(a => !(a.ref && deletedAnnotations.has(a.ref))); + for (let i = 0, ii = newAnnotations.length; i < ii; i++) { + const newAnnotation = newAnnotations[i]; + if (newAnnotation.refToReplace) { + const j = annotations.findIndex(a => a.ref && (0, _primitives.isRefsEqual)(a.ref, newAnnotation.refToReplace)); + if (j >= 0) { + annotations.splice(j, 1, newAnnotation); + newAnnotations.splice(i--, 1); + ii--; + } + } + } + annotations = annotations.concat(newAnnotations); + } + if (annotations.length === 0 || intent & _util.RenderingIntentFlag.ANNOTATIONS_DISABLE) { + pageOpList.flush(true); + return { + length: pageOpList.totalLength + }; + } + const renderForms = !!(intent & _util.RenderingIntentFlag.ANNOTATIONS_FORMS), + intentAny = !!(intent & _util.RenderingIntentFlag.ANY), + intentDisplay = !!(intent & _util.RenderingIntentFlag.DISPLAY), + intentPrint = !!(intent & _util.RenderingIntentFlag.PRINT); + const opListPromises = []; + for (const annotation of annotations) { + if (intentAny || intentDisplay && annotation.mustBeViewed(annotationStorage) || intentPrint && annotation.mustBePrinted(annotationStorage)) { + opListPromises.push(annotation.getOperatorList(partialEvaluator, task, intent, renderForms, annotationStorage).catch(function (reason) { + (0, _util.warn)("getOperatorList - ignoring annotation data during " + `"${task.name}" task: "${reason}".`); + return { + opList: null, + separateForm: false, + separateCanvas: false + }; + })); + } + } + return Promise.all(opListPromises).then(function (opLists) { + let form = false, + canvas = false; + for (const { + opList, + separateForm, + separateCanvas + } of opLists) { + pageOpList.addOpList(opList); + form ||= separateForm; + canvas ||= separateCanvas; + } + pageOpList.flush(true, { + form, + canvas + }); + return { + length: pageOpList.totalLength + }; + }); + }); + } + extractTextContent({ + handler, + task, + includeMarkedContent, + disableNormalization, + sink + }) { + const contentStreamPromise = this.getContentStream(); + const resourcesPromise = this.loadResources(["ExtGState", "Font", "Properties", "XObject"]); + const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]); + return dataPromises.then(([contentStream]) => { + const partialEvaluator = new _evaluator.PartialEvaluator({ + xref: this.xref, + handler, + pageIndex: this.pageIndex, + idFactory: this._localIdFactory, + fontCache: this.fontCache, + builtInCMapCache: this.builtInCMapCache, + standardFontDataCache: this.standardFontDataCache, + globalImageCache: this.globalImageCache, + systemFontCache: this.systemFontCache, + options: this.evaluatorOptions + }); + return partialEvaluator.getTextContent({ + stream: contentStream, + task, + resources: this.resources, + includeMarkedContent, + disableNormalization, + sink, + viewBox: this.view + }); + }); + } + async getStructTree() { + const structTreeRoot = await this.pdfManager.ensureCatalog("structTreeRoot"); + if (!structTreeRoot) { + return null; + } + const structTree = await this.pdfManager.ensure(this, "_parseStructTree", [structTreeRoot]); + return structTree.serializable; + } + _parseStructTree(structTreeRoot) { + const tree = new _struct_tree.StructTreePage(structTreeRoot, this.pageDict); + tree.parse(); + return tree; + } + async getAnnotationsData(handler, task, intent) { + const annotations = await this._parsedAnnotations; + if (annotations.length === 0) { + return []; + } + const annotationsData = [], + textContentPromises = []; + let partialEvaluator; + const intentAny = !!(intent & _util.RenderingIntentFlag.ANY), + intentDisplay = !!(intent & _util.RenderingIntentFlag.DISPLAY), + intentPrint = !!(intent & _util.RenderingIntentFlag.PRINT); + for (const annotation of annotations) { + const isVisible = intentAny || intentDisplay && annotation.viewable; + if (isVisible || intentPrint && annotation.printable) { + annotationsData.push(annotation.data); + } + if (annotation.hasTextContent && isVisible) { + partialEvaluator ||= new _evaluator.PartialEvaluator({ + xref: this.xref, + handler, + pageIndex: this.pageIndex, + idFactory: this._localIdFactory, + fontCache: this.fontCache, + builtInCMapCache: this.builtInCMapCache, + standardFontDataCache: this.standardFontDataCache, + globalImageCache: this.globalImageCache, + systemFontCache: this.systemFontCache, + options: this.evaluatorOptions + }); + textContentPromises.push(annotation.extractTextContent(partialEvaluator, task, [-Infinity, -Infinity, Infinity, Infinity]).catch(function (reason) { + (0, _util.warn)(`getAnnotationsData - ignoring textContent during "${task.name}" task: "${reason}".`); + })); + } + } + await Promise.all(textContentPromises); + return annotationsData; + } + get annotations() { + const annots = this._getInheritableProperty("Annots"); + return (0, _util.shadow)(this, "annotations", Array.isArray(annots) ? annots : []); + } + get _parsedAnnotations() { + const parsedAnnotations = this.pdfManager.ensure(this, "annotations").then(() => { + const annotationPromises = []; + for (const annotationRef of this.annotations) { + annotationPromises.push(_annotation.AnnotationFactory.create(this.xref, annotationRef, this.pdfManager, this._localIdFactory, false).catch(function (reason) { + (0, _util.warn)(`_parsedAnnotations: "${reason}".`); + return null; + })); + } + return Promise.all(annotationPromises).then(function (annotations) { + if (annotations.length === 0) { + return annotations; + } + const sortedAnnotations = []; + let popupAnnotations; + for (const annotation of annotations) { + if (!annotation) { + continue; + } + if (annotation instanceof _annotation.PopupAnnotation) { + (popupAnnotations ||= []).push(annotation); + continue; + } + sortedAnnotations.push(annotation); + } + if (popupAnnotations) { + sortedAnnotations.push(...popupAnnotations); + } + return sortedAnnotations; + }); + }); + return (0, _util.shadow)(this, "_parsedAnnotations", parsedAnnotations); + } + get jsActions() { + const actions = (0, _core_utils.collectActions)(this.xref, this.pageDict, _util.PageActionEventType); + return (0, _util.shadow)(this, "jsActions", actions); + } +} +exports.Page = Page; +const PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]); +const STARTXREF_SIGNATURE = new Uint8Array([0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66]); +const ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]); +const FINGERPRINT_FIRST_BYTES = 1024; +const EMPTY_FINGERPRINT = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"; +function find(stream, signature, limit = 1024, backwards = false) { + const signatureLength = signature.length; + const scanBytes = stream.peekBytes(limit); + const scanLength = scanBytes.length - signatureLength; + if (scanLength <= 0) { + return false; + } + if (backwards) { + const signatureEnd = signatureLength - 1; + let pos = scanBytes.length - 1; + while (pos >= signatureEnd) { + let j = 0; + while (j < signatureLength && scanBytes[pos - j] === signature[signatureEnd - j]) { + j++; + } + if (j >= signatureLength) { + stream.pos += pos - signatureEnd; + return true; + } + pos--; + } + } else { + let pos = 0; + while (pos <= scanLength) { + let j = 0; + while (j < signatureLength && scanBytes[pos + j] === signature[j]) { + j++; + } + if (j >= signatureLength) { + stream.pos += pos; + return true; + } + pos++; + } + } + return false; +} +class PDFDocument { + constructor(pdfManager, stream) { + if (stream.length <= 0) { + throw new _util.InvalidPDFException("The PDF file is empty, i.e. its size is zero bytes."); + } + this.pdfManager = pdfManager; + this.stream = stream; + this.xref = new _xref.XRef(stream, pdfManager); + this._pagePromises = new Map(); + this._version = null; + const idCounters = { + font: 0 + }; + this._globalIdFactory = class { + static getDocId() { + return `g_${pdfManager.docId}`; + } + static createFontId() { + return `f${++idCounters.font}`; + } + static createObjId() { + (0, _util.unreachable)("Abstract method `createObjId` called."); + } + static getPageObjId() { + (0, _util.unreachable)("Abstract method `getPageObjId` called."); + } + }; + } + parse(recoveryMode) { + this.xref.parse(recoveryMode); + this.catalog = new _catalog.Catalog(this.pdfManager, this.xref); + } + get linearization() { + let linearization = null; + try { + linearization = _parser.Linearization.create(this.stream); + } catch (err) { + if (err instanceof _core_utils.MissingDataException) { + throw err; + } + (0, _util.info)(err); + } + return (0, _util.shadow)(this, "linearization", linearization); + } + get startXRef() { + const stream = this.stream; + let startXRef = 0; + if (this.linearization) { + stream.reset(); + if (find(stream, ENDOBJ_SIGNATURE)) { + startXRef = stream.pos + 6 - stream.start; + } + } else { + const step = 1024; + const startXRefLength = STARTXREF_SIGNATURE.length; + let found = false, + pos = stream.end; + while (!found && pos > 0) { + pos -= step - startXRefLength; + if (pos < 0) { + pos = 0; + } + stream.pos = pos; + found = find(stream, STARTXREF_SIGNATURE, step, true); + } + if (found) { + stream.skip(9); + let ch; + do { + ch = stream.getByte(); + } while ((0, _core_utils.isWhiteSpace)(ch)); + let str = ""; + while (ch >= 0x20 && ch <= 0x39) { + str += String.fromCharCode(ch); + ch = stream.getByte(); + } + startXRef = parseInt(str, 10); + if (isNaN(startXRef)) { + startXRef = 0; + } + } + } + return (0, _util.shadow)(this, "startXRef", startXRef); + } + checkHeader() { + const stream = this.stream; + stream.reset(); + if (!find(stream, PDF_HEADER_SIGNATURE)) { + return; + } + stream.moveStart(); + stream.skip(PDF_HEADER_SIGNATURE.length); + let version = "", + ch; + while ((ch = stream.getByte()) > 0x20 && version.length < 7) { + version += String.fromCharCode(ch); + } + if (_core_utils.PDF_VERSION_REGEXP.test(version)) { + this._version = version; + } else { + (0, _util.warn)(`Invalid PDF header version: ${version}`); + } + } + parseStartXRef() { + this.xref.setStartXRef(this.startXRef); + } + get numPages() { + let num = 0; + if (this.catalog.hasActualNumPages) { + num = this.catalog.numPages; + } else if (this.xfaFactory) { + num = this.xfaFactory.getNumPages(); + } else if (this.linearization) { + num = this.linearization.numPages; + } else { + num = this.catalog.numPages; + } + return (0, _util.shadow)(this, "numPages", num); + } + _hasOnlyDocumentSignatures(fields, recursionDepth = 0) { + const RECURSION_LIMIT = 10; + if (!Array.isArray(fields)) { + return false; + } + return fields.every(field => { + field = this.xref.fetchIfRef(field); + if (!(field instanceof _primitives.Dict)) { + return false; + } + if (field.has("Kids")) { + if (++recursionDepth > RECURSION_LIMIT) { + (0, _util.warn)("_hasOnlyDocumentSignatures: maximum recursion depth reached"); + return false; + } + return this._hasOnlyDocumentSignatures(field.get("Kids"), recursionDepth); + } + const isSignature = (0, _primitives.isName)(field.get("FT"), "Sig"); + const rectangle = field.get("Rect"); + const isInvisible = Array.isArray(rectangle) && rectangle.every(value => value === 0); + return isSignature && isInvisible; + }); + } + get _xfaStreams() { + const acroForm = this.catalog.acroForm; + if (!acroForm) { + return null; + } + const xfa = acroForm.get("XFA"); + const entries = { + "xdp:xdp": "", + template: "", + datasets: "", + config: "", + connectionSet: "", + localeSet: "", + stylesheet: "", + "/xdp:xdp": "" + }; + if (xfa instanceof _base_stream.BaseStream && !xfa.isEmpty) { + entries["xdp:xdp"] = xfa; + return entries; + } + if (!Array.isArray(xfa) || xfa.length === 0) { + return null; + } + for (let i = 0, ii = xfa.length; i < ii; i += 2) { + let name; + if (i === 0) { + name = "xdp:xdp"; + } else if (i === ii - 2) { + name = "/xdp:xdp"; + } else { + name = xfa[i]; + } + if (!entries.hasOwnProperty(name)) { + continue; + } + const data = this.xref.fetchIfRef(xfa[i + 1]); + if (!(data instanceof _base_stream.BaseStream) || data.isEmpty) { + continue; + } + entries[name] = data; + } + return entries; + } + get xfaDatasets() { + const streams = this._xfaStreams; + if (!streams) { + return (0, _util.shadow)(this, "xfaDatasets", null); + } + for (const key of ["datasets", "xdp:xdp"]) { + const stream = streams[key]; + if (!stream) { + continue; + } + try { + const str = (0, _util.stringToUTF8String)(stream.getString()); + const data = { + [key]: str + }; + return (0, _util.shadow)(this, "xfaDatasets", new _dataset_reader.DatasetReader(data)); + } catch { + (0, _util.warn)("XFA - Invalid utf-8 string."); + break; + } + } + return (0, _util.shadow)(this, "xfaDatasets", null); + } + get xfaData() { + const streams = this._xfaStreams; + if (!streams) { + return null; + } + const data = Object.create(null); + for (const [key, stream] of Object.entries(streams)) { + if (!stream) { + continue; + } + try { + data[key] = (0, _util.stringToUTF8String)(stream.getString()); + } catch { + (0, _util.warn)("XFA - Invalid utf-8 string."); + return null; + } + } + return data; + } + get xfaFactory() { + let data; + if (this.pdfManager.enableXfa && this.catalog.needsRendering && this.formInfo.hasXfa && !this.formInfo.hasAcroForm) { + data = this.xfaData; + } + return (0, _util.shadow)(this, "xfaFactory", data ? new _factory.XFAFactory(data) : null); + } + get isPureXfa() { + return this.xfaFactory ? this.xfaFactory.isValid() : false; + } + get htmlForXfa() { + return this.xfaFactory ? this.xfaFactory.getPages() : null; + } + async loadXfaImages() { + const xfaImagesDict = await this.pdfManager.ensureCatalog("xfaImages"); + if (!xfaImagesDict) { + return; + } + const keys = xfaImagesDict.getKeys(); + const objectLoader = new _object_loader.ObjectLoader(xfaImagesDict, keys, this.xref); + await objectLoader.load(); + const xfaImages = new Map(); + for (const key of keys) { + const stream = xfaImagesDict.get(key); + if (stream instanceof _base_stream.BaseStream) { + xfaImages.set(key, stream.getBytes()); + } + } + this.xfaFactory.setImages(xfaImages); + } + async loadXfaFonts(handler, task) { + const acroForm = await this.pdfManager.ensureCatalog("acroForm"); + if (!acroForm) { + return; + } + const resources = await acroForm.getAsync("DR"); + if (!(resources instanceof _primitives.Dict)) { + return; + } + const objectLoader = new _object_loader.ObjectLoader(resources, ["Font"], this.xref); + await objectLoader.load(); + const fontRes = resources.get("Font"); + if (!(fontRes instanceof _primitives.Dict)) { + return; + } + const options = Object.assign(Object.create(null), this.pdfManager.evaluatorOptions); + options.useSystemFonts = false; + const partialEvaluator = new _evaluator.PartialEvaluator({ + xref: this.xref, + handler, + pageIndex: -1, + idFactory: this._globalIdFactory, + fontCache: this.catalog.fontCache, + builtInCMapCache: this.catalog.builtInCMapCache, + standardFontDataCache: this.catalog.standardFontDataCache, + options + }); + const operatorList = new _operator_list.OperatorList(); + const pdfFonts = []; + const initialState = { + get font() { + return pdfFonts.at(-1); + }, + set font(font) { + pdfFonts.push(font); + }, + clone() { + return this; + } + }; + const fonts = new Map(); + fontRes.forEach((fontName, font) => { + fonts.set(fontName, font); + }); + const promises = []; + for (const [fontName, font] of fonts) { + const descriptor = font.get("FontDescriptor"); + if (!(descriptor instanceof _primitives.Dict)) { + continue; + } + let fontFamily = descriptor.get("FontFamily"); + fontFamily = fontFamily.replaceAll(/[ ]+(\d)/g, "$1"); + const fontWeight = descriptor.get("FontWeight"); + const italicAngle = -descriptor.get("ItalicAngle"); + const cssFontInfo = { + fontFamily, + fontWeight, + italicAngle + }; + if (!(0, _core_utils.validateCSSFont)(cssFontInfo)) { + continue; + } + promises.push(partialEvaluator.handleSetFont(resources, [_primitives.Name.get(fontName), 1], null, operatorList, task, initialState, null, cssFontInfo).catch(function (reason) { + (0, _util.warn)(`loadXfaFonts: "${reason}".`); + return null; + })); + } + await Promise.all(promises); + const missingFonts = this.xfaFactory.setFonts(pdfFonts); + if (!missingFonts) { + return; + } + options.ignoreErrors = true; + promises.length = 0; + pdfFonts.length = 0; + const reallyMissingFonts = new Set(); + for (const missing of missingFonts) { + if (!(0, _xfa_fonts.getXfaFontName)(`${missing}-Regular`)) { + reallyMissingFonts.add(missing); + } + } + if (reallyMissingFonts.size) { + missingFonts.push("PdfJS-Fallback"); + } + for (const missing of missingFonts) { + if (reallyMissingFonts.has(missing)) { + continue; + } + for (const fontInfo of [{ + name: "Regular", + fontWeight: 400, + italicAngle: 0 + }, { + name: "Bold", + fontWeight: 700, + italicAngle: 0 + }, { + name: "Italic", + fontWeight: 400, + italicAngle: 12 + }, { + name: "BoldItalic", + fontWeight: 700, + italicAngle: 12 + }]) { + const name = `${missing}-${fontInfo.name}`; + const dict = (0, _xfa_fonts.getXfaFontDict)(name); + promises.push(partialEvaluator.handleSetFont(resources, [_primitives.Name.get(name), 1], null, operatorList, task, initialState, dict, { + fontFamily: missing, + fontWeight: fontInfo.fontWeight, + italicAngle: fontInfo.italicAngle + }).catch(function (reason) { + (0, _util.warn)(`loadXfaFonts: "${reason}".`); + return null; + })); + } + } + await Promise.all(promises); + this.xfaFactory.appendFonts(pdfFonts, reallyMissingFonts); + } + async serializeXfaData(annotationStorage) { + return this.xfaFactory ? this.xfaFactory.serializeData(annotationStorage) : null; + } + get version() { + return this.catalog.version || this._version; + } + get formInfo() { + const formInfo = { + hasFields: false, + hasAcroForm: false, + hasXfa: false, + hasSignatures: false + }; + const acroForm = this.catalog.acroForm; + if (!acroForm) { + return (0, _util.shadow)(this, "formInfo", formInfo); + } + try { + const fields = acroForm.get("Fields"); + const hasFields = Array.isArray(fields) && fields.length > 0; + formInfo.hasFields = hasFields; + const xfa = acroForm.get("XFA"); + formInfo.hasXfa = Array.isArray(xfa) && xfa.length > 0 || xfa instanceof _base_stream.BaseStream && !xfa.isEmpty; + const sigFlags = acroForm.get("SigFlags"); + const hasSignatures = !!(sigFlags & 0x1); + const hasOnlyDocumentSignatures = hasSignatures && this._hasOnlyDocumentSignatures(fields); + formInfo.hasAcroForm = hasFields && !hasOnlyDocumentSignatures; + formInfo.hasSignatures = hasSignatures; + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + (0, _util.warn)(`Cannot fetch form information: "${ex}".`); + } + return (0, _util.shadow)(this, "formInfo", formInfo); + } + get documentInfo() { + const docInfo = { + PDFFormatVersion: this.version, + Language: this.catalog.lang, + EncryptFilterName: this.xref.encrypt ? this.xref.encrypt.filterName : null, + IsLinearized: !!this.linearization, + IsAcroFormPresent: this.formInfo.hasAcroForm, + IsXFAPresent: this.formInfo.hasXfa, + IsCollectionPresent: !!this.catalog.collection, + IsSignaturesPresent: this.formInfo.hasSignatures + }; + let infoDict; + try { + infoDict = this.xref.trailer.get("Info"); + } catch (err) { + if (err instanceof _core_utils.MissingDataException) { + throw err; + } + (0, _util.info)("The document information dictionary is invalid."); + } + if (!(infoDict instanceof _primitives.Dict)) { + return (0, _util.shadow)(this, "documentInfo", docInfo); + } + for (const key of infoDict.getKeys()) { + const value = infoDict.get(key); + switch (key) { + case "Title": + case "Author": + case "Subject": + case "Keywords": + case "Creator": + case "Producer": + case "CreationDate": + case "ModDate": + if (typeof value === "string") { + docInfo[key] = (0, _util.stringToPDFString)(value); + continue; + } + break; + case "Trapped": + if (value instanceof _primitives.Name) { + docInfo[key] = value; + continue; + } + break; + default: + let customValue; + switch (typeof value) { + case "string": + customValue = (0, _util.stringToPDFString)(value); + break; + case "number": + case "boolean": + customValue = value; + break; + default: + if (value instanceof _primitives.Name) { + customValue = value; + } + break; + } + if (customValue === undefined) { + (0, _util.warn)(`Bad value, for custom key "${key}", in Info: ${value}.`); + continue; + } + if (!docInfo.Custom) { + docInfo.Custom = Object.create(null); + } + docInfo.Custom[key] = customValue; + continue; + } + (0, _util.warn)(`Bad value, for key "${key}", in Info: ${value}.`); + } + return (0, _util.shadow)(this, "documentInfo", docInfo); + } + get fingerprints() { + function validate(data) { + return typeof data === "string" && data.length > 0 && data !== EMPTY_FINGERPRINT; + } + function hexString(hash) { + const buf = []; + for (const num of hash) { + const hex = num.toString(16); + buf.push(hex.padStart(2, "0")); + } + return buf.join(""); + } + const idArray = this.xref.trailer.get("ID"); + let hashOriginal, hashModified; + if (Array.isArray(idArray) && validate(idArray[0])) { + hashOriginal = (0, _util.stringToBytes)(idArray[0]); + if (idArray[1] !== idArray[0] && validate(idArray[1])) { + hashModified = (0, _util.stringToBytes)(idArray[1]); + } + } else { + hashOriginal = (0, _crypto.calculateMD5)(this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES), 0, FINGERPRINT_FIRST_BYTES); + } + return (0, _util.shadow)(this, "fingerprints", [hexString(hashOriginal), hashModified ? hexString(hashModified) : null]); + } + async _getLinearizationPage(pageIndex) { + const { + catalog, + linearization, + xref + } = this; + const ref = _primitives.Ref.get(linearization.objectNumberFirst, 0); + try { + const obj = await xref.fetchAsync(ref); + if (obj instanceof _primitives.Dict) { + let type = obj.getRaw("Type"); + if (type instanceof _primitives.Ref) { + type = await xref.fetchAsync(type); + } + if ((0, _primitives.isName)(type, "Page") || !obj.has("Type") && !obj.has("Kids")) { + if (!catalog.pageKidsCountCache.has(ref)) { + catalog.pageKidsCountCache.put(ref, 1); + } + if (!catalog.pageIndexCache.has(ref)) { + catalog.pageIndexCache.put(ref, 0); + } + return [obj, ref]; + } + } + throw new _util.FormatError("The Linearization dictionary doesn't point to a valid Page dictionary."); + } catch (reason) { + (0, _util.warn)(`_getLinearizationPage: "${reason.message}".`); + return catalog.getPageDict(pageIndex); + } + } + getPage(pageIndex) { + const cachedPromise = this._pagePromises.get(pageIndex); + if (cachedPromise) { + return cachedPromise; + } + const { + catalog, + linearization, + xfaFactory + } = this; + let promise; + if (xfaFactory) { + promise = Promise.resolve([_primitives.Dict.empty, null]); + } else if (linearization?.pageFirst === pageIndex) { + promise = this._getLinearizationPage(pageIndex); + } else { + promise = catalog.getPageDict(pageIndex); + } + promise = promise.then(([pageDict, ref]) => { + return new Page({ + pdfManager: this.pdfManager, + xref: this.xref, + pageIndex, + pageDict, + ref, + globalIdFactory: this._globalIdFactory, + fontCache: catalog.fontCache, + builtInCMapCache: catalog.builtInCMapCache, + standardFontDataCache: catalog.standardFontDataCache, + globalImageCache: catalog.globalImageCache, + systemFontCache: catalog.systemFontCache, + nonBlendModesSet: catalog.nonBlendModesSet, + xfaFactory + }); + }); + this._pagePromises.set(pageIndex, promise); + return promise; + } + async checkFirstPage(recoveryMode = false) { + if (recoveryMode) { + return; + } + try { + await this.getPage(0); + } catch (reason) { + if (reason instanceof _core_utils.XRefEntryException) { + this._pagePromises.delete(0); + await this.cleanup(); + throw new _core_utils.XRefParseException(); + } + } + } + async checkLastPage(recoveryMode = false) { + const { + catalog, + pdfManager + } = this; + catalog.setActualNumPages(); + let numPages; + try { + await Promise.all([pdfManager.ensureDoc("xfaFactory"), pdfManager.ensureDoc("linearization"), pdfManager.ensureCatalog("numPages")]); + if (this.xfaFactory) { + return; + } else if (this.linearization) { + numPages = this.linearization.numPages; + } else { + numPages = catalog.numPages; + } + if (!Number.isInteger(numPages)) { + throw new _util.FormatError("Page count is not an integer."); + } else if (numPages <= 1) { + return; + } + await this.getPage(numPages - 1); + } catch (reason) { + this._pagePromises.delete(numPages - 1); + await this.cleanup(); + if (reason instanceof _core_utils.XRefEntryException && !recoveryMode) { + throw new _core_utils.XRefParseException(); + } + (0, _util.warn)(`checkLastPage - invalid /Pages tree /Count: ${numPages}.`); + let pagesTree; + try { + pagesTree = await catalog.getAllPageDicts(recoveryMode); + } catch (reasonAll) { + if (reasonAll instanceof _core_utils.XRefEntryException && !recoveryMode) { + throw new _core_utils.XRefParseException(); + } + catalog.setActualNumPages(1); + return; + } + for (const [pageIndex, [pageDict, ref]] of pagesTree) { + let promise; + if (pageDict instanceof Error) { + promise = Promise.reject(pageDict); + promise.catch(() => {}); + } else { + promise = Promise.resolve(new Page({ + pdfManager, + xref: this.xref, + pageIndex, + pageDict, + ref, + globalIdFactory: this._globalIdFactory, + fontCache: catalog.fontCache, + builtInCMapCache: catalog.builtInCMapCache, + standardFontDataCache: catalog.standardFontDataCache, + globalImageCache: catalog.globalImageCache, + systemFontCache: catalog.systemFontCache, + nonBlendModesSet: catalog.nonBlendModesSet, + xfaFactory: null + })); + } + this._pagePromises.set(pageIndex, promise); + } + catalog.setActualNumPages(pagesTree.size); + } + } + fontFallback(id, handler) { + return this.catalog.fontFallback(id, handler); + } + async cleanup(manuallyTriggered = false) { + return this.catalog ? this.catalog.cleanup(manuallyTriggered) : (0, _cleanup_helper.clearGlobalCaches)(); + } + _collectFieldObjects(name, fieldRef, promises) { + const field = this.xref.fetchIfRef(fieldRef); + if (field.has("T")) { + const partName = (0, _util.stringToPDFString)(field.get("T")); + if (name === "") { + name = partName; + } else { + name = `${name}.${partName}`; + } + } + if (!field.has("Kids") && /\[\d+\]$/.test(name)) { + name = name.substring(0, name.lastIndexOf("[")); + } + if (!promises.has(name)) { + promises.set(name, []); + } + promises.get(name).push(_annotation.AnnotationFactory.create(this.xref, fieldRef, this.pdfManager, this._localIdFactory, true).then(annotation => annotation?.getFieldObject()).catch(function (reason) { + (0, _util.warn)(`_collectFieldObjects: "${reason}".`); + return null; + })); + if (field.has("Kids")) { + const kids = field.get("Kids"); + for (const kid of kids) { + this._collectFieldObjects(name, kid, promises); + } + } + } + get fieldObjects() { + if (!this.formInfo.hasFields) { + return (0, _util.shadow)(this, "fieldObjects", Promise.resolve(null)); + } + const allFields = Object.create(null); + const fieldPromises = new Map(); + for (const fieldRef of this.catalog.acroForm.get("Fields")) { + this._collectFieldObjects("", fieldRef, fieldPromises); + } + const allPromises = []; + for (const [name, promises] of fieldPromises) { + allPromises.push(Promise.all(promises).then(fields => { + fields = fields.filter(field => !!field); + if (fields.length > 0) { + allFields[name] = fields; + } + })); + } + return (0, _util.shadow)(this, "fieldObjects", Promise.all(allPromises).then(() => allFields)); + } + get hasJSActions() { + const promise = this.pdfManager.ensureDoc("_parseHasJSActions"); + return (0, _util.shadow)(this, "hasJSActions", promise); + } + async _parseHasJSActions() { + const [catalogJsActions, fieldObjects] = await Promise.all([this.pdfManager.ensureCatalog("jsActions"), this.pdfManager.ensureDoc("fieldObjects")]); + if (catalogJsActions) { + return true; + } + if (fieldObjects) { + return Object.values(fieldObjects).some(fieldObject => fieldObject.some(object => object.actions !== null)); + } + return false; + } + get calculationOrderIds() { + const acroForm = this.catalog.acroForm; + if (!acroForm?.has("CO")) { + return (0, _util.shadow)(this, "calculationOrderIds", null); + } + const calculationOrder = acroForm.get("CO"); + if (!Array.isArray(calculationOrder) || calculationOrder.length === 0) { + return (0, _util.shadow)(this, "calculationOrderIds", null); + } + const ids = []; + for (const id of calculationOrder) { + if (id instanceof _primitives.Ref) { + ids.push(id.toString()); + } + } + if (ids.length === 0) { + return (0, _util.shadow)(this, "calculationOrderIds", null); + } + return (0, _util.shadow)(this, "calculationOrderIds", ids); + } +} +exports.PDFDocument = PDFDocument; + +/***/ }), +/* 10 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PopupAnnotation = exports.MarkupAnnotation = exports.AnnotationFactory = exports.AnnotationBorderStyle = exports.Annotation = void 0; +exports.getQuadPoints = getQuadPoints; +var _util = __w_pdfjs_require__(2); +var _core_utils = __w_pdfjs_require__(3); +var _default_appearance = __w_pdfjs_require__(11); +var _primitives = __w_pdfjs_require__(4); +var _stream = __w_pdfjs_require__(8); +var _writer = __w_pdfjs_require__(66); +var _base_stream = __w_pdfjs_require__(5); +var _bidi = __w_pdfjs_require__(60); +var _catalog = __w_pdfjs_require__(70); +var _colorspace = __w_pdfjs_require__(12); +var _file_spec = __w_pdfjs_require__(73); +var _jpeg_stream = __w_pdfjs_require__(26); +var _object_loader = __w_pdfjs_require__(76); +var _operator_list = __w_pdfjs_require__(64); +var _factory = __w_pdfjs_require__(77); +class AnnotationFactory { + static create(xref, ref, pdfManager, idFactory, collectFields) { + return Promise.all([pdfManager.ensureCatalog("acroForm"), pdfManager.ensureCatalog("baseUrl"), pdfManager.ensureCatalog("attachments"), pdfManager.ensureDoc("xfaDatasets"), collectFields ? this._getPageIndex(xref, ref, pdfManager) : -1]).then(([acroForm, baseUrl, attachments, xfaDatasets, pageIndex]) => pdfManager.ensure(this, "_create", [xref, ref, pdfManager, idFactory, acroForm, attachments, xfaDatasets, collectFields, pageIndex])); + } + static _create(xref, ref, pdfManager, idFactory, acroForm, attachments = null, xfaDatasets, collectFields, pageIndex = -1) { + const dict = xref.fetchIfRef(ref); + if (!(dict instanceof _primitives.Dict)) { + return undefined; + } + const id = ref instanceof _primitives.Ref ? ref.toString() : `annot_${idFactory.createObjId()}`; + let subtype = dict.get("Subtype"); + subtype = subtype instanceof _primitives.Name ? subtype.name : null; + const acroFormDict = acroForm instanceof _primitives.Dict ? acroForm : _primitives.Dict.empty; + const parameters = { + xref, + ref, + dict, + subtype, + id, + pdfManager, + acroForm: acroFormDict, + attachments, + xfaDatasets, + collectFields, + needAppearances: !collectFields && acroFormDict.get("NeedAppearances") === true, + pageIndex, + isOffscreenCanvasSupported: pdfManager.evaluatorOptions.isOffscreenCanvasSupported + }; + switch (subtype) { + case "Link": + return new LinkAnnotation(parameters); + case "Text": + return new TextAnnotation(parameters); + case "Widget": + let fieldType = (0, _core_utils.getInheritableProperty)({ + dict, + key: "FT" + }); + fieldType = fieldType instanceof _primitives.Name ? fieldType.name : null; + switch (fieldType) { + case "Tx": + return new TextWidgetAnnotation(parameters); + case "Btn": + return new ButtonWidgetAnnotation(parameters); + case "Ch": + return new ChoiceWidgetAnnotation(parameters); + case "Sig": + return new SignatureWidgetAnnotation(parameters); + } + (0, _util.warn)(`Unimplemented widget field type "${fieldType}", ` + "falling back to base field type."); + return new WidgetAnnotation(parameters); + case "Popup": + return new PopupAnnotation(parameters); + case "FreeText": + return new FreeTextAnnotation(parameters); + case "Line": + return new LineAnnotation(parameters); + case "Square": + return new SquareAnnotation(parameters); + case "Circle": + return new CircleAnnotation(parameters); + case "PolyLine": + return new PolylineAnnotation(parameters); + case "Polygon": + return new PolygonAnnotation(parameters); + case "Caret": + return new CaretAnnotation(parameters); + case "Ink": + return new InkAnnotation(parameters); + case "Highlight": + return new HighlightAnnotation(parameters); + case "Underline": + return new UnderlineAnnotation(parameters); + case "Squiggly": + return new SquigglyAnnotation(parameters); + case "StrikeOut": + return new StrikeOutAnnotation(parameters); + case "Stamp": + return new StampAnnotation(parameters); + case "FileAttachment": + return new FileAttachmentAnnotation(parameters); + default: + if (!collectFields) { + if (!subtype) { + (0, _util.warn)("Annotation is missing the required /Subtype."); + } else { + (0, _util.warn)(`Unimplemented annotation type "${subtype}", ` + "falling back to base annotation."); + } + } + return new Annotation(parameters); + } + } + static async _getPageIndex(xref, ref, pdfManager) { + try { + const annotDict = await xref.fetchIfRefAsync(ref); + if (!(annotDict instanceof _primitives.Dict)) { + return -1; + } + const pageRef = annotDict.getRaw("P"); + if (!(pageRef instanceof _primitives.Ref)) { + return -1; + } + const pageIndex = await pdfManager.ensureCatalog("getPageIndex", [pageRef]); + return pageIndex; + } catch (ex) { + (0, _util.warn)(`_getPageIndex: "${ex}".`); + return -1; + } + } + static generateImages(annotations, xref, isOffscreenCanvasSupported) { + if (!isOffscreenCanvasSupported) { + (0, _util.warn)("generateImages: OffscreenCanvas is not supported, cannot save or print some annotations with images."); + return null; + } + let imagePromises; + for (const { + bitmapId, + bitmap + } of annotations) { + if (!bitmap) { + continue; + } + imagePromises ||= new Map(); + imagePromises.set(bitmapId, StampAnnotation.createImage(bitmap, xref)); + } + return imagePromises; + } + static async saveNewAnnotations(evaluator, task, annotations, imagePromises) { + const xref = evaluator.xref; + let baseFontRef; + const dependencies = []; + const promises = []; + const { + isOffscreenCanvasSupported + } = evaluator.options; + for (const annotation of annotations) { + if (annotation.deleted) { + continue; + } + switch (annotation.annotationType) { + case _util.AnnotationEditorType.FREETEXT: + if (!baseFontRef) { + const baseFont = new _primitives.Dict(xref); + baseFont.set("BaseFont", _primitives.Name.get("Helvetica")); + baseFont.set("Type", _primitives.Name.get("Font")); + baseFont.set("Subtype", _primitives.Name.get("Type1")); + baseFont.set("Encoding", _primitives.Name.get("WinAnsiEncoding")); + const buffer = []; + baseFontRef = xref.getNewTemporaryRef(); + await (0, _writer.writeObject)(baseFontRef, baseFont, buffer, null); + dependencies.push({ + ref: baseFontRef, + data: buffer.join("") + }); + } + promises.push(FreeTextAnnotation.createNewAnnotation(xref, annotation, dependencies, { + evaluator, + task, + baseFontRef + })); + break; + case _util.AnnotationEditorType.INK: + promises.push(InkAnnotation.createNewAnnotation(xref, annotation, dependencies)); + break; + case _util.AnnotationEditorType.STAMP: + if (!isOffscreenCanvasSupported) { + break; + } + const image = await imagePromises.get(annotation.bitmapId); + if (image.imageStream) { + const { + imageStream, + smaskStream + } = image; + const buffer = []; + if (smaskStream) { + const smaskRef = xref.getNewTemporaryRef(); + await (0, _writer.writeObject)(smaskRef, smaskStream, buffer, null); + dependencies.push({ + ref: smaskRef, + data: buffer.join("") + }); + imageStream.dict.set("SMask", smaskRef); + buffer.length = 0; + } + const imageRef = image.imageRef = xref.getNewTemporaryRef(); + await (0, _writer.writeObject)(imageRef, imageStream, buffer, null); + dependencies.push({ + ref: imageRef, + data: buffer.join("") + }); + image.imageStream = image.smaskStream = null; + } + promises.push(StampAnnotation.createNewAnnotation(xref, annotation, dependencies, image)); + break; + } + } + return { + annotations: await Promise.all(promises), + dependencies + }; + } + static async printNewAnnotations(evaluator, task, annotations, imagePromises) { + if (!annotations) { + return null; + } + const xref = evaluator.xref; + const { + isOffscreenCanvasSupported + } = evaluator.options; + const promises = []; + for (const annotation of annotations) { + if (annotation.deleted) { + continue; + } + switch (annotation.annotationType) { + case _util.AnnotationEditorType.FREETEXT: + promises.push(FreeTextAnnotation.createNewPrintAnnotation(xref, annotation, { + evaluator, + task, + isOffscreenCanvasSupported + })); + break; + case _util.AnnotationEditorType.INK: + promises.push(InkAnnotation.createNewPrintAnnotation(xref, annotation, { + isOffscreenCanvasSupported + })); + break; + case _util.AnnotationEditorType.STAMP: + if (!isOffscreenCanvasSupported) { + break; + } + const image = await imagePromises.get(annotation.bitmapId); + if (image.imageStream) { + const { + imageStream, + smaskStream + } = image; + if (smaskStream) { + imageStream.dict.set("SMask", smaskStream); + } + image.imageRef = new _jpeg_stream.JpegStream(imageStream, imageStream.length); + image.imageStream = image.smaskStream = null; + } + promises.push(StampAnnotation.createNewPrintAnnotation(xref, annotation, image)); + break; + } + } + return Promise.all(promises); + } +} +exports.AnnotationFactory = AnnotationFactory; +function getRgbColor(color, defaultColor = new Uint8ClampedArray(3)) { + if (!Array.isArray(color)) { + return defaultColor; + } + const rgbColor = defaultColor || new Uint8ClampedArray(3); + switch (color.length) { + case 0: + return null; + case 1: + _colorspace.ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0); + return rgbColor; + case 3: + _colorspace.ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0); + return rgbColor; + case 4: + _colorspace.ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0); + return rgbColor; + default: + return defaultColor; + } +} +function getPdfColorArray(color) { + return Array.from(color, c => c / 255); +} +function getQuadPoints(dict, rect) { + const quadPoints = dict.getArray("QuadPoints"); + if (!Array.isArray(quadPoints) || quadPoints.length === 0 || quadPoints.length % 8 > 0) { + return null; + } + const quadPointsLists = []; + for (let i = 0, ii = quadPoints.length / 8; i < ii; i++) { + let minX = Infinity, + maxX = -Infinity, + minY = Infinity, + maxY = -Infinity; + for (let j = i * 8, jj = i * 8 + 8; j < jj; j += 2) { + const x = quadPoints[j]; + const y = quadPoints[j + 1]; + minX = Math.min(x, minX); + maxX = Math.max(x, maxX); + minY = Math.min(y, minY); + maxY = Math.max(y, maxY); + } + if (rect !== null && (minX < rect[0] || maxX > rect[2] || minY < rect[1] || maxY > rect[3])) { + return null; + } + quadPointsLists.push([{ + x: minX, + y: maxY + }, { + x: maxX, + y: maxY + }, { + x: minX, + y: minY + }, { + x: maxX, + y: minY + }]); + } + return quadPointsLists; +} +function getTransformMatrix(rect, bbox, matrix) { + const [minX, minY, maxX, maxY] = _util.Util.getAxialAlignedBoundingBox(bbox, matrix); + if (minX === maxX || minY === maxY) { + return [1, 0, 0, 1, rect[0], rect[1]]; + } + const xRatio = (rect[2] - rect[0]) / (maxX - minX); + const yRatio = (rect[3] - rect[1]) / (maxY - minY); + return [xRatio, 0, 0, yRatio, rect[0] - minX * xRatio, rect[1] - minY * yRatio]; +} +class Annotation { + constructor(params) { + const { + dict, + xref + } = params; + this.setTitle(dict.get("T")); + this.setContents(dict.get("Contents")); + this.setModificationDate(dict.get("M")); + this.setFlags(dict.get("F")); + this.setRectangle(dict.getArray("Rect")); + this.setColor(dict.getArray("C")); + this.setBorderStyle(dict); + this.setAppearance(dict); + this.setOptionalContent(dict); + const MK = dict.get("MK"); + this.setBorderAndBackgroundColors(MK); + this.setRotation(MK); + this.ref = params.ref instanceof _primitives.Ref ? params.ref : null; + this._streams = []; + if (this.appearance) { + this._streams.push(this.appearance); + } + const isLocked = !!(this.flags & _util.AnnotationFlag.LOCKED); + const isContentLocked = !!(this.flags & _util.AnnotationFlag.LOCKEDCONTENTS); + this.data = { + annotationFlags: this.flags, + borderStyle: this.borderStyle, + color: this.color, + backgroundColor: this.backgroundColor, + borderColor: this.borderColor, + rotation: this.rotation, + contentsObj: this._contents, + hasAppearance: !!this.appearance, + id: params.id, + modificationDate: this.modificationDate, + rect: this.rectangle, + subtype: params.subtype, + hasOwnCanvas: false, + noRotate: !!(this.flags & _util.AnnotationFlag.NOROTATE), + noHTML: isLocked && isContentLocked + }; + if (params.collectFields) { + const kids = dict.get("Kids"); + if (Array.isArray(kids)) { + const kidIds = []; + for (const kid of kids) { + if (kid instanceof _primitives.Ref) { + kidIds.push(kid.toString()); + } + } + if (kidIds.length !== 0) { + this.data.kidIds = kidIds; + } + } + this.data.actions = (0, _core_utils.collectActions)(xref, dict, _util.AnnotationActionEventType); + this.data.fieldName = this._constructFieldName(dict); + this.data.pageIndex = params.pageIndex; + } + this._isOffscreenCanvasSupported = params.isOffscreenCanvasSupported; + this._fallbackFontDict = null; + this._needAppearances = false; + } + _hasFlag(flags, flag) { + return !!(flags & flag); + } + _isViewable(flags) { + return !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, _util.AnnotationFlag.NOVIEW); + } + _isPrintable(flags) { + return this._hasFlag(flags, _util.AnnotationFlag.PRINT) && !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE); + } + mustBeViewed(annotationStorage) { + const hidden = annotationStorage?.get(this.data.id)?.hidden; + if (hidden !== undefined) { + return !hidden; + } + return this.viewable && !this._hasFlag(this.flags, _util.AnnotationFlag.HIDDEN); + } + mustBePrinted(annotationStorage) { + const print = annotationStorage?.get(this.data.id)?.print; + if (print !== undefined) { + return print; + } + return this.printable; + } + get viewable() { + if (this.data.quadPoints === null) { + return false; + } + if (this.flags === 0) { + return true; + } + return this._isViewable(this.flags); + } + get printable() { + if (this.data.quadPoints === null) { + return false; + } + if (this.flags === 0) { + return false; + } + return this._isPrintable(this.flags); + } + _parseStringHelper(data) { + const str = typeof data === "string" ? (0, _util.stringToPDFString)(data) : ""; + const dir = str && (0, _bidi.bidi)(str).dir === "rtl" ? "rtl" : "ltr"; + return { + str, + dir + }; + } + setDefaultAppearance(params) { + const defaultAppearance = (0, _core_utils.getInheritableProperty)({ + dict: params.dict, + key: "DA" + }) || params.acroForm.get("DA"); + this._defaultAppearance = typeof defaultAppearance === "string" ? defaultAppearance : ""; + this.data.defaultAppearanceData = (0, _default_appearance.parseDefaultAppearance)(this._defaultAppearance); + } + setTitle(title) { + this._title = this._parseStringHelper(title); + } + setContents(contents) { + this._contents = this._parseStringHelper(contents); + } + setModificationDate(modificationDate) { + this.modificationDate = typeof modificationDate === "string" ? modificationDate : null; + } + setFlags(flags) { + this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0; + } + hasFlag(flag) { + return this._hasFlag(this.flags, flag); + } + setRectangle(rectangle) { + if (Array.isArray(rectangle) && rectangle.length === 4) { + this.rectangle = _util.Util.normalizeRect(rectangle); + } else { + this.rectangle = [0, 0, 0, 0]; + } + } + setColor(color) { + this.color = getRgbColor(color); + } + setLineEndings(lineEndings) { + this.lineEndings = ["None", "None"]; + if (Array.isArray(lineEndings) && lineEndings.length === 2) { + for (let i = 0; i < 2; i++) { + const obj = lineEndings[i]; + if (obj instanceof _primitives.Name) { + switch (obj.name) { + case "None": + continue; + case "Square": + case "Circle": + case "Diamond": + case "OpenArrow": + case "ClosedArrow": + case "Butt": + case "ROpenArrow": + case "RClosedArrow": + case "Slash": + this.lineEndings[i] = obj.name; + continue; + } + } + (0, _util.warn)(`Ignoring invalid lineEnding: ${obj}`); + } + } + } + setRotation(mk) { + this.rotation = 0; + if (mk instanceof _primitives.Dict) { + let angle = mk.get("R") || 0; + if (Number.isInteger(angle) && angle !== 0) { + angle %= 360; + if (angle < 0) { + angle += 360; + } + if (angle % 90 === 0) { + this.rotation = angle; + } + } + } + } + setBorderAndBackgroundColors(mk) { + if (mk instanceof _primitives.Dict) { + this.borderColor = getRgbColor(mk.getArray("BC"), null); + this.backgroundColor = getRgbColor(mk.getArray("BG"), null); + } else { + this.borderColor = this.backgroundColor = null; + } + } + setBorderStyle(borderStyle) { + this.borderStyle = new AnnotationBorderStyle(); + if (!(borderStyle instanceof _primitives.Dict)) { + return; + } + if (borderStyle.has("BS")) { + const dict = borderStyle.get("BS"); + const dictType = dict.get("Type"); + if (!dictType || (0, _primitives.isName)(dictType, "Border")) { + this.borderStyle.setWidth(dict.get("W"), this.rectangle); + this.borderStyle.setStyle(dict.get("S")); + this.borderStyle.setDashArray(dict.getArray("D")); + } + } else if (borderStyle.has("Border")) { + const array = borderStyle.getArray("Border"); + if (Array.isArray(array) && array.length >= 3) { + this.borderStyle.setHorizontalCornerRadius(array[0]); + this.borderStyle.setVerticalCornerRadius(array[1]); + this.borderStyle.setWidth(array[2], this.rectangle); + if (array.length === 4) { + this.borderStyle.setDashArray(array[3], true); + } + } + } else { + this.borderStyle.setWidth(0); + } + } + setAppearance(dict) { + this.appearance = null; + const appearanceStates = dict.get("AP"); + if (!(appearanceStates instanceof _primitives.Dict)) { + return; + } + const normalAppearanceState = appearanceStates.get("N"); + if (normalAppearanceState instanceof _base_stream.BaseStream) { + this.appearance = normalAppearanceState; + return; + } + if (!(normalAppearanceState instanceof _primitives.Dict)) { + return; + } + const as = dict.get("AS"); + if (!(as instanceof _primitives.Name) || !normalAppearanceState.has(as.name)) { + return; + } + const appearance = normalAppearanceState.get(as.name); + if (appearance instanceof _base_stream.BaseStream) { + this.appearance = appearance; + } + } + setOptionalContent(dict) { + this.oc = null; + const oc = dict.get("OC"); + if (oc instanceof _primitives.Name) { + (0, _util.warn)("setOptionalContent: Support for /Name-entry is not implemented."); + } else if (oc instanceof _primitives.Dict) { + this.oc = oc; + } + } + loadResources(keys, appearance) { + return appearance.dict.getAsync("Resources").then(resources => { + if (!resources) { + return undefined; + } + const objectLoader = new _object_loader.ObjectLoader(resources, keys, resources.xref); + return objectLoader.load().then(function () { + return resources; + }); + }); + } + async getOperatorList(evaluator, task, intent, renderForms, annotationStorage) { + const data = this.data; + let appearance = this.appearance; + const isUsingOwnCanvas = !!(this.data.hasOwnCanvas && intent & _util.RenderingIntentFlag.DISPLAY); + if (!appearance) { + if (!isUsingOwnCanvas) { + return { + opList: new _operator_list.OperatorList(), + separateForm: false, + separateCanvas: false + }; + } + appearance = new _stream.StringStream(""); + appearance.dict = new _primitives.Dict(); + } + const appearanceDict = appearance.dict; + const resources = await this.loadResources(["ExtGState", "ColorSpace", "Pattern", "Shading", "XObject", "Font"], appearance); + const bbox = appearanceDict.getArray("BBox") || [0, 0, 1, 1]; + const matrix = appearanceDict.getArray("Matrix") || [1, 0, 0, 1, 0, 0]; + const transform = getTransformMatrix(data.rect, bbox, matrix); + const opList = new _operator_list.OperatorList(); + let optionalContent; + if (this.oc) { + optionalContent = await evaluator.parseMarkedContentProps(this.oc, null); + } + if (optionalContent !== undefined) { + opList.addOp(_util.OPS.beginMarkedContentProps, ["OC", optionalContent]); + } + opList.addOp(_util.OPS.beginAnnotation, [data.id, data.rect, transform, matrix, isUsingOwnCanvas]); + await evaluator.getOperatorList({ + stream: appearance, + task, + resources, + operatorList: opList, + fallbackFontDict: this._fallbackFontDict + }); + opList.addOp(_util.OPS.endAnnotation, []); + if (optionalContent !== undefined) { + opList.addOp(_util.OPS.endMarkedContent, []); + } + this.reset(); + return { + opList, + separateForm: false, + separateCanvas: isUsingOwnCanvas + }; + } + async save(evaluator, task, annotationStorage) { + return null; + } + get hasTextContent() { + return false; + } + async extractTextContent(evaluator, task, viewBox) { + if (!this.appearance) { + return; + } + const resources = await this.loadResources(["ExtGState", "Font", "Properties", "XObject"], this.appearance); + const text = []; + const buffer = []; + const sink = { + desiredSize: Math.Infinity, + ready: true, + enqueue(chunk, size) { + for (const item of chunk.items) { + if (item.str === undefined) { + continue; + } + buffer.push(item.str); + if (item.hasEOL) { + text.push(buffer.join("")); + buffer.length = 0; + } + } + } + }; + await evaluator.getTextContent({ + stream: this.appearance, + task, + resources, + includeMarkedContent: true, + sink, + viewBox + }); + this.reset(); + if (buffer.length) { + text.push(buffer.join("")); + } + if (text.length > 1 || text[0]) { + this.data.textContent = text; + } + } + getFieldObject() { + if (this.data.kidIds) { + return { + id: this.data.id, + actions: this.data.actions, + name: this.data.fieldName, + strokeColor: this.data.borderColor, + fillColor: this.data.backgroundColor, + type: "", + kidIds: this.data.kidIds, + page: this.data.pageIndex, + rotation: this.rotation + }; + } + return null; + } + reset() { + for (const stream of this._streams) { + stream.reset(); + } + } + _constructFieldName(dict) { + if (!dict.has("T") && !dict.has("Parent")) { + (0, _util.warn)("Unknown field name, falling back to empty field name."); + return ""; + } + if (!dict.has("Parent")) { + return (0, _util.stringToPDFString)(dict.get("T")); + } + const fieldName = []; + if (dict.has("T")) { + fieldName.unshift((0, _util.stringToPDFString)(dict.get("T"))); + } + let loopDict = dict; + const visited = new _primitives.RefSet(); + if (dict.objId) { + visited.put(dict.objId); + } + while (loopDict.has("Parent")) { + loopDict = loopDict.get("Parent"); + if (!(loopDict instanceof _primitives.Dict) || loopDict.objId && visited.has(loopDict.objId)) { + break; + } + if (loopDict.objId) { + visited.put(loopDict.objId); + } + if (loopDict.has("T")) { + const t = (0, _util.stringToPDFString)(loopDict.get("T")); + if (!t.startsWith("#")) { + fieldName.unshift(t); + } + } + } + return fieldName.join("."); + } +} +exports.Annotation = Annotation; +class AnnotationBorderStyle { + constructor() { + this.width = 1; + this.style = _util.AnnotationBorderStyleType.SOLID; + this.dashArray = [3]; + this.horizontalCornerRadius = 0; + this.verticalCornerRadius = 0; + } + setWidth(width, rect = [0, 0, 0, 0]) { + if (width instanceof _primitives.Name) { + this.width = 0; + return; + } + if (typeof width === "number") { + if (width > 0) { + const maxWidth = (rect[2] - rect[0]) / 2; + const maxHeight = (rect[3] - rect[1]) / 2; + if (maxWidth > 0 && maxHeight > 0 && (width > maxWidth || width > maxHeight)) { + (0, _util.warn)(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`); + width = 1; + } + } + this.width = width; + } + } + setStyle(style) { + if (!(style instanceof _primitives.Name)) { + return; + } + switch (style.name) { + case "S": + this.style = _util.AnnotationBorderStyleType.SOLID; + break; + case "D": + this.style = _util.AnnotationBorderStyleType.DASHED; + break; + case "B": + this.style = _util.AnnotationBorderStyleType.BEVELED; + break; + case "I": + this.style = _util.AnnotationBorderStyleType.INSET; + break; + case "U": + this.style = _util.AnnotationBorderStyleType.UNDERLINE; + break; + default: + break; + } + } + setDashArray(dashArray, forceStyle = false) { + if (Array.isArray(dashArray) && dashArray.length > 0) { + let isValid = true; + let allZeros = true; + for (const element of dashArray) { + const validNumber = +element >= 0; + if (!validNumber) { + isValid = false; + break; + } else if (element > 0) { + allZeros = false; + } + } + if (isValid && !allZeros) { + this.dashArray = dashArray; + if (forceStyle) { + this.setStyle(_primitives.Name.get("D")); + } + } else { + this.width = 0; + } + } else if (dashArray) { + this.width = 0; + } + } + setHorizontalCornerRadius(radius) { + if (Number.isInteger(radius)) { + this.horizontalCornerRadius = radius; + } + } + setVerticalCornerRadius(radius) { + if (Number.isInteger(radius)) { + this.verticalCornerRadius = radius; + } + } +} +exports.AnnotationBorderStyle = AnnotationBorderStyle; +class MarkupAnnotation extends Annotation { + constructor(params) { + super(params); + const { + dict + } = params; + if (dict.has("IRT")) { + const rawIRT = dict.getRaw("IRT"); + this.data.inReplyTo = rawIRT instanceof _primitives.Ref ? rawIRT.toString() : null; + const rt = dict.get("RT"); + this.data.replyType = rt instanceof _primitives.Name ? rt.name : _util.AnnotationReplyType.REPLY; + } + let popupRef = null; + if (this.data.replyType === _util.AnnotationReplyType.GROUP) { + const parent = dict.get("IRT"); + this.setTitle(parent.get("T")); + this.data.titleObj = this._title; + this.setContents(parent.get("Contents")); + this.data.contentsObj = this._contents; + if (!parent.has("CreationDate")) { + this.data.creationDate = null; + } else { + this.setCreationDate(parent.get("CreationDate")); + this.data.creationDate = this.creationDate; + } + if (!parent.has("M")) { + this.data.modificationDate = null; + } else { + this.setModificationDate(parent.get("M")); + this.data.modificationDate = this.modificationDate; + } + popupRef = parent.getRaw("Popup"); + if (!parent.has("C")) { + this.data.color = null; + } else { + this.setColor(parent.getArray("C")); + this.data.color = this.color; + } + } else { + this.data.titleObj = this._title; + this.setCreationDate(dict.get("CreationDate")); + this.data.creationDate = this.creationDate; + popupRef = dict.getRaw("Popup"); + if (!dict.has("C")) { + this.data.color = null; + } + } + this.data.popupRef = popupRef instanceof _primitives.Ref ? popupRef.toString() : null; + if (dict.has("RC")) { + this.data.richText = _factory.XFAFactory.getRichTextAsHtml(dict.get("RC")); + } + } + setCreationDate(creationDate) { + this.creationDate = typeof creationDate === "string" ? creationDate : null; + } + _setDefaultAppearance({ + xref, + extra, + strokeColor, + fillColor, + blendMode, + strokeAlpha, + fillAlpha, + pointsCallback + }) { + let minX = Number.MAX_VALUE; + let minY = Number.MAX_VALUE; + let maxX = Number.MIN_VALUE; + let maxY = Number.MIN_VALUE; + const buffer = ["q"]; + if (extra) { + buffer.push(extra); + } + if (strokeColor) { + buffer.push(`${strokeColor[0]} ${strokeColor[1]} ${strokeColor[2]} RG`); + } + if (fillColor) { + buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`); + } + let pointsArray = this.data.quadPoints; + if (!pointsArray) { + pointsArray = [[{ + x: this.rectangle[0], + y: this.rectangle[3] + }, { + x: this.rectangle[2], + y: this.rectangle[3] + }, { + x: this.rectangle[0], + y: this.rectangle[1] + }, { + x: this.rectangle[2], + y: this.rectangle[1] + }]]; + } + for (const points of pointsArray) { + const [mX, MX, mY, MY] = pointsCallback(buffer, points); + minX = Math.min(minX, mX); + maxX = Math.max(maxX, MX); + minY = Math.min(minY, mY); + maxY = Math.max(maxY, MY); + } + buffer.push("Q"); + const formDict = new _primitives.Dict(xref); + const appearanceStreamDict = new _primitives.Dict(xref); + appearanceStreamDict.set("Subtype", _primitives.Name.get("Form")); + const appearanceStream = new _stream.StringStream(buffer.join(" ")); + appearanceStream.dict = appearanceStreamDict; + formDict.set("Fm0", appearanceStream); + const gsDict = new _primitives.Dict(xref); + if (blendMode) { + gsDict.set("BM", _primitives.Name.get(blendMode)); + } + if (typeof strokeAlpha === "number") { + gsDict.set("CA", strokeAlpha); + } + if (typeof fillAlpha === "number") { + gsDict.set("ca", fillAlpha); + } + const stateDict = new _primitives.Dict(xref); + stateDict.set("GS0", gsDict); + const resources = new _primitives.Dict(xref); + resources.set("ExtGState", stateDict); + resources.set("XObject", formDict); + const appearanceDict = new _primitives.Dict(xref); + appearanceDict.set("Resources", resources); + const bbox = this.data.rect = [minX, minY, maxX, maxY]; + appearanceDict.set("BBox", bbox); + this.appearance = new _stream.StringStream("/GS0 gs /Fm0 Do"); + this.appearance.dict = appearanceDict; + this._streams.push(this.appearance, appearanceStream); + } + static async createNewAnnotation(xref, annotation, dependencies, params) { + const annotationRef = annotation.ref || xref.getNewTemporaryRef(); + const ap = await this.createNewAppearanceStream(annotation, xref, params); + const buffer = []; + let annotationDict; + if (ap) { + const apRef = xref.getNewTemporaryRef(); + annotationDict = this.createNewDict(annotation, xref, { + apRef + }); + const transform = xref.encrypt ? xref.encrypt.createCipherTransform(apRef.num, apRef.gen) : null; + await (0, _writer.writeObject)(apRef, ap, buffer, transform); + dependencies.push({ + ref: apRef, + data: buffer.join("") + }); + } else { + annotationDict = this.createNewDict(annotation, xref, {}); + } + buffer.length = 0; + const transform = xref.encrypt ? xref.encrypt.createCipherTransform(annotationRef.num, annotationRef.gen) : null; + await (0, _writer.writeObject)(annotationRef, annotationDict, buffer, transform); + return { + ref: annotationRef, + data: buffer.join("") + }; + } + static async createNewPrintAnnotation(xref, annotation, params) { + const ap = await this.createNewAppearanceStream(annotation, xref, params); + const annotationDict = this.createNewDict(annotation, xref, { + ap + }); + const newAnnotation = new this.prototype.constructor({ + dict: annotationDict, + xref, + isOffscreenCanvasSupported: params.isOffscreenCanvasSupported + }); + if (annotation.ref) { + newAnnotation.ref = newAnnotation.refToReplace = annotation.ref; + } + return newAnnotation; + } +} +exports.MarkupAnnotation = MarkupAnnotation; +class WidgetAnnotation extends Annotation { + constructor(params) { + super(params); + const { + dict, + xref + } = params; + const data = this.data; + this._needAppearances = params.needAppearances; + data.annotationType = _util.AnnotationType.WIDGET; + if (data.fieldName === undefined) { + data.fieldName = this._constructFieldName(dict); + } + if (data.fieldName && /\[\d+\]$/.test(data.fieldName) && !dict.has("Kids")) { + data.baseFieldName = data.fieldName.substring(0, data.fieldName.lastIndexOf("[")); + } + if (data.actions === undefined) { + data.actions = (0, _core_utils.collectActions)(xref, dict, _util.AnnotationActionEventType); + } + let fieldValue = (0, _core_utils.getInheritableProperty)({ + dict, + key: "V", + getArray: true + }); + data.fieldValue = this._decodeFormValue(fieldValue); + const defaultFieldValue = (0, _core_utils.getInheritableProperty)({ + dict, + key: "DV", + getArray: true + }); + data.defaultFieldValue = this._decodeFormValue(defaultFieldValue); + if (fieldValue === undefined && params.xfaDatasets) { + const path = this._title.str; + if (path) { + this._hasValueFromXFA = true; + data.fieldValue = fieldValue = params.xfaDatasets.getValue(path); + } + } + if (fieldValue === undefined && data.defaultFieldValue !== null) { + data.fieldValue = data.defaultFieldValue; + } + data.alternativeText = (0, _util.stringToPDFString)(dict.get("TU") || ""); + this.setDefaultAppearance(params); + data.hasAppearance ||= this._needAppearances && data.fieldValue !== undefined && data.fieldValue !== null; + const fieldType = (0, _core_utils.getInheritableProperty)({ + dict, + key: "FT" + }); + data.fieldType = fieldType instanceof _primitives.Name ? fieldType.name : null; + const localResources = (0, _core_utils.getInheritableProperty)({ + dict, + key: "DR" + }); + const acroFormResources = params.acroForm.get("DR"); + const appearanceResources = this.appearance?.dict.get("Resources"); + this._fieldResources = { + localResources, + acroFormResources, + appearanceResources, + mergedResources: _primitives.Dict.merge({ + xref, + dictArray: [localResources, appearanceResources, acroFormResources], + mergeSubDicts: true + }) + }; + data.fieldFlags = (0, _core_utils.getInheritableProperty)({ + dict, + key: "Ff" + }); + if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) { + data.fieldFlags = 0; + } + data.readOnly = this.hasFieldFlag(_util.AnnotationFieldFlag.READONLY); + data.required = this.hasFieldFlag(_util.AnnotationFieldFlag.REQUIRED); + data.hidden = this._hasFlag(data.annotationFlags, _util.AnnotationFlag.HIDDEN); + } + _decodeFormValue(formValue) { + if (Array.isArray(formValue)) { + return formValue.filter(item => typeof item === "string").map(item => (0, _util.stringToPDFString)(item)); + } else if (formValue instanceof _primitives.Name) { + return (0, _util.stringToPDFString)(formValue.name); + } else if (typeof formValue === "string") { + return (0, _util.stringToPDFString)(formValue); + } + return null; + } + hasFieldFlag(flag) { + return !!(this.data.fieldFlags & flag); + } + getRotationMatrix(annotationStorage) { + let rotation = annotationStorage?.get(this.data.id)?.rotation; + if (rotation === undefined) { + rotation = this.rotation; + } + if (rotation === 0) { + return _util.IDENTITY_MATRIX; + } + const width = this.data.rect[2] - this.data.rect[0]; + const height = this.data.rect[3] - this.data.rect[1]; + return (0, _core_utils.getRotationMatrix)(rotation, width, height); + } + getBorderAndBackgroundAppearances(annotationStorage) { + let rotation = annotationStorage?.get(this.data.id)?.rotation; + if (rotation === undefined) { + rotation = this.rotation; + } + if (!this.backgroundColor && !this.borderColor) { + return ""; + } + const width = this.data.rect[2] - this.data.rect[0]; + const height = this.data.rect[3] - this.data.rect[1]; + const rect = rotation === 0 || rotation === 180 ? `0 0 ${width} ${height} re` : `0 0 ${height} ${width} re`; + let str = ""; + if (this.backgroundColor) { + str = `${(0, _default_appearance.getPdfColor)(this.backgroundColor, true)} ${rect} f `; + } + if (this.borderColor) { + const borderWidth = this.borderStyle.width || 1; + str += `${borderWidth} w ${(0, _default_appearance.getPdfColor)(this.borderColor, false)} ${rect} S `; + } + return str; + } + async getOperatorList(evaluator, task, intent, renderForms, annotationStorage) { + if (renderForms && !(this instanceof SignatureWidgetAnnotation) && !this.data.noHTML && !this.data.hasOwnCanvas) { + return { + opList: new _operator_list.OperatorList(), + separateForm: true, + separateCanvas: false + }; + } + if (!this._hasText) { + return super.getOperatorList(evaluator, task, intent, renderForms, annotationStorage); + } + const content = await this._getAppearance(evaluator, task, intent, annotationStorage); + if (this.appearance && content === null) { + return super.getOperatorList(evaluator, task, intent, renderForms, annotationStorage); + } + const opList = new _operator_list.OperatorList(); + if (!this._defaultAppearance || content === null) { + return { + opList, + separateForm: false, + separateCanvas: false + }; + } + const matrix = [1, 0, 0, 1, 0, 0]; + const bbox = [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]]; + const transform = getTransformMatrix(this.data.rect, bbox, matrix); + let optionalContent; + if (this.oc) { + optionalContent = await evaluator.parseMarkedContentProps(this.oc, null); + } + if (optionalContent !== undefined) { + opList.addOp(_util.OPS.beginMarkedContentProps, ["OC", optionalContent]); + } + opList.addOp(_util.OPS.beginAnnotation, [this.data.id, this.data.rect, transform, this.getRotationMatrix(annotationStorage), false]); + const stream = new _stream.StringStream(content); + await evaluator.getOperatorList({ + stream, + task, + resources: this._fieldResources.mergedResources, + operatorList: opList + }); + opList.addOp(_util.OPS.endAnnotation, []); + if (optionalContent !== undefined) { + opList.addOp(_util.OPS.endMarkedContent, []); + } + return { + opList, + separateForm: false, + separateCanvas: false + }; + } + _getMKDict(rotation) { + const mk = new _primitives.Dict(null); + if (rotation) { + mk.set("R", rotation); + } + if (this.borderColor) { + mk.set("BC", getPdfColorArray(this.borderColor)); + } + if (this.backgroundColor) { + mk.set("BG", getPdfColorArray(this.backgroundColor)); + } + return mk.size > 0 ? mk : null; + } + amendSavedDict(annotationStorage, dict) {} + async save(evaluator, task, annotationStorage) { + const storageEntry = annotationStorage?.get(this.data.id); + let value = storageEntry?.value, + rotation = storageEntry?.rotation; + if (value === this.data.fieldValue || value === undefined) { + if (!this._hasValueFromXFA && rotation === undefined) { + return null; + } + value ||= this.data.fieldValue; + } + if (rotation === undefined && !this._hasValueFromXFA && Array.isArray(value) && Array.isArray(this.data.fieldValue) && value.length === this.data.fieldValue.length && value.every((x, i) => x === this.data.fieldValue[i])) { + return null; + } + if (rotation === undefined) { + rotation = this.rotation; + } + let appearance = null; + if (!this._needAppearances) { + appearance = await this._getAppearance(evaluator, task, _util.RenderingIntentFlag.SAVE, annotationStorage); + if (appearance === null) { + return null; + } + } else {} + let needAppearances = false; + if (appearance?.needAppearances) { + needAppearances = true; + appearance = null; + } + const { + xref + } = evaluator; + const originalDict = xref.fetchIfRef(this.ref); + if (!(originalDict instanceof _primitives.Dict)) { + return null; + } + const dict = new _primitives.Dict(xref); + for (const key of originalDict.getKeys()) { + if (key !== "AP") { + dict.set(key, originalDict.getRaw(key)); + } + } + const xfa = { + path: this.data.fieldName, + value + }; + const encoder = val => { + return (0, _core_utils.isAscii)(val) ? val : (0, _core_utils.stringToUTF16String)(val, true); + }; + dict.set("V", Array.isArray(value) ? value.map(encoder) : encoder(value)); + this.amendSavedDict(annotationStorage, dict); + const maybeMK = this._getMKDict(rotation); + if (maybeMK) { + dict.set("MK", maybeMK); + } + const encrypt = xref.encrypt; + const originalTransform = encrypt ? encrypt.createCipherTransform(this.ref.num, this.ref.gen) : null; + const buffer = []; + const changes = [{ + ref: this.ref, + data: "", + xfa, + needAppearances + }]; + if (appearance !== null) { + const newRef = xref.getNewTemporaryRef(); + const AP = new _primitives.Dict(xref); + dict.set("AP", AP); + AP.set("N", newRef); + let newTransform = null; + if (encrypt) { + newTransform = encrypt.createCipherTransform(newRef.num, newRef.gen); + } + const resources = this._getSaveFieldResources(xref); + const appearanceStream = new _stream.StringStream(appearance); + const appearanceDict = appearanceStream.dict = new _primitives.Dict(xref); + appearanceDict.set("Subtype", _primitives.Name.get("Form")); + appearanceDict.set("Resources", resources); + appearanceDict.set("BBox", [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]]); + const rotationMatrix = this.getRotationMatrix(annotationStorage); + if (rotationMatrix !== _util.IDENTITY_MATRIX) { + appearanceDict.set("Matrix", rotationMatrix); + } + await (0, _writer.writeObject)(newRef, appearanceStream, buffer, newTransform); + changes.push({ + ref: newRef, + data: buffer.join(""), + xfa: null, + needAppearances: false + }); + buffer.length = 0; + } + dict.set("M", `D:${(0, _util.getModificationDate)()}`); + await (0, _writer.writeObject)(this.ref, dict, buffer, originalTransform); + changes[0].data = buffer.join(""); + return changes; + } + async _getAppearance(evaluator, task, intent, annotationStorage) { + const isPassword = this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD); + if (isPassword) { + return null; + } + const storageEntry = annotationStorage?.get(this.data.id); + let value, rotation; + if (storageEntry) { + value = storageEntry.formattedValue || storageEntry.value; + rotation = storageEntry.rotation; + } + if (rotation === undefined && value === undefined && !this._needAppearances) { + if (!this._hasValueFromXFA || this.appearance) { + return null; + } + } + const colors = this.getBorderAndBackgroundAppearances(annotationStorage); + if (value === undefined) { + value = this.data.fieldValue; + if (!value) { + return `/Tx BMC q ${colors}Q EMC`; + } + } + if (Array.isArray(value) && value.length === 1) { + value = value[0]; + } + (0, _util.assert)(typeof value === "string", "Expected `value` to be a string."); + value = value.trim(); + if (this.data.combo) { + const option = this.data.options.find(({ + exportValue + }) => value === exportValue); + value = option?.displayValue || value; + } + if (value === "") { + return `/Tx BMC q ${colors}Q EMC`; + } + if (rotation === undefined) { + rotation = this.rotation; + } + let lineCount = -1; + let lines; + if (this.data.multiLine) { + lines = value.split(/\r\n?|\n/).map(line => line.normalize("NFC")); + lineCount = lines.length; + } else { + lines = [value.replace(/\r\n?|\n/, "").normalize("NFC")]; + } + const defaultPadding = 1; + const defaultHPadding = 2; + let totalHeight = this.data.rect[3] - this.data.rect[1]; + let totalWidth = this.data.rect[2] - this.data.rect[0]; + if (rotation === 90 || rotation === 270) { + [totalWidth, totalHeight] = [totalHeight, totalWidth]; + } + if (!this._defaultAppearance) { + this.data.defaultAppearanceData = (0, _default_appearance.parseDefaultAppearance)(this._defaultAppearance = "/Helvetica 0 Tf 0 g"); + } + let font = await WidgetAnnotation._getFontData(evaluator, task, this.data.defaultAppearanceData, this._fieldResources.mergedResources); + let defaultAppearance, fontSize, lineHeight; + const encodedLines = []; + let encodingError = false; + for (const line of lines) { + const encodedString = font.encodeString(line); + if (encodedString.length > 1) { + encodingError = true; + } + encodedLines.push(encodedString.join("")); + } + if (encodingError && intent & _util.RenderingIntentFlag.SAVE) { + return { + needAppearances: true + }; + } + if (encodingError && this._isOffscreenCanvasSupported) { + const fontFamily = this.data.comb ? "monospace" : "sans-serif"; + const fakeUnicodeFont = new _default_appearance.FakeUnicodeFont(evaluator.xref, fontFamily); + const resources = fakeUnicodeFont.createFontResources(lines.join("")); + const newFont = resources.getRaw("Font"); + if (this._fieldResources.mergedResources.has("Font")) { + const oldFont = this._fieldResources.mergedResources.get("Font"); + for (const key of newFont.getKeys()) { + oldFont.set(key, newFont.getRaw(key)); + } + } else { + this._fieldResources.mergedResources.set("Font", newFont); + } + const fontName = fakeUnicodeFont.fontName.name; + font = await WidgetAnnotation._getFontData(evaluator, task, { + fontName, + fontSize: 0 + }, resources); + for (let i = 0, ii = encodedLines.length; i < ii; i++) { + encodedLines[i] = (0, _core_utils.stringToUTF16String)(lines[i]); + } + const savedDefaultAppearance = Object.assign(Object.create(null), this.data.defaultAppearanceData); + this.data.defaultAppearanceData.fontSize = 0; + this.data.defaultAppearanceData.fontName = fontName; + [defaultAppearance, fontSize, lineHeight] = this._computeFontSize(totalHeight - 2 * defaultPadding, totalWidth - 2 * defaultHPadding, value, font, lineCount); + this.data.defaultAppearanceData = savedDefaultAppearance; + } else { + if (!this._isOffscreenCanvasSupported) { + (0, _util.warn)("_getAppearance: OffscreenCanvas is not supported, annotation may not render correctly."); + } + [defaultAppearance, fontSize, lineHeight] = this._computeFontSize(totalHeight - 2 * defaultPadding, totalWidth - 2 * defaultHPadding, value, font, lineCount); + } + let descent = font.descent; + if (isNaN(descent)) { + descent = _util.BASELINE_FACTOR * lineHeight; + } else { + descent = Math.max(_util.BASELINE_FACTOR * lineHeight, Math.abs(descent) * fontSize); + } + const defaultVPadding = Math.min(Math.floor((totalHeight - fontSize) / 2), defaultPadding); + const alignment = this.data.textAlignment; + if (this.data.multiLine) { + return this._getMultilineAppearance(defaultAppearance, encodedLines, font, fontSize, totalWidth, totalHeight, alignment, defaultHPadding, defaultVPadding, descent, lineHeight, annotationStorage); + } + if (this.data.comb) { + return this._getCombAppearance(defaultAppearance, font, encodedLines[0], fontSize, totalWidth, totalHeight, defaultHPadding, defaultVPadding, descent, lineHeight, annotationStorage); + } + const bottomPadding = defaultVPadding + descent; + if (alignment === 0 || alignment > 2) { + return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 ${(0, _core_utils.numberToString)(defaultHPadding)} ${(0, _core_utils.numberToString)(bottomPadding)} Tm (${(0, _core_utils.escapeString)(encodedLines[0])}) Tj` + " ET Q EMC"; + } + const prevInfo = { + shift: 0 + }; + const renderedText = this._renderText(encodedLines[0], font, fontSize, totalWidth, alignment, prevInfo, defaultHPadding, bottomPadding); + return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 0 0 Tm ${renderedText}` + " ET Q EMC"; + } + static async _getFontData(evaluator, task, appearanceData, resources) { + const operatorList = new _operator_list.OperatorList(); + const initialState = { + font: null, + clone() { + return this; + } + }; + const { + fontName, + fontSize + } = appearanceData; + await evaluator.handleSetFont(resources, [fontName && _primitives.Name.get(fontName), fontSize], null, operatorList, task, initialState, null); + return initialState.font; + } + _getTextWidth(text, font) { + return font.charsToGlyphs(text).reduce((width, glyph) => width + glyph.width, 0) / 1000; + } + _computeFontSize(height, width, text, font, lineCount) { + let { + fontSize + } = this.data.defaultAppearanceData; + let lineHeight = (fontSize || 12) * _util.LINE_FACTOR, + numberOfLines = Math.round(height / lineHeight); + if (!fontSize) { + const roundWithTwoDigits = x => Math.floor(x * 100) / 100; + if (lineCount === -1) { + const textWidth = this._getTextWidth(text, font); + fontSize = roundWithTwoDigits(Math.min(height / _util.LINE_FACTOR, textWidth > width ? width / textWidth : Infinity)); + numberOfLines = 1; + } else { + const lines = text.split(/\r\n?|\n/); + const cachedLines = []; + for (const line of lines) { + const encoded = font.encodeString(line).join(""); + const glyphs = font.charsToGlyphs(encoded); + const positions = font.getCharPositions(encoded); + cachedLines.push({ + line: encoded, + glyphs, + positions + }); + } + const isTooBig = fsize => { + let totalHeight = 0; + for (const cache of cachedLines) { + const chunks = this._splitLine(null, font, fsize, width, cache); + totalHeight += chunks.length * fsize; + if (totalHeight > height) { + return true; + } + } + return false; + }; + numberOfLines = Math.max(numberOfLines, lineCount); + while (true) { + lineHeight = height / numberOfLines; + fontSize = roundWithTwoDigits(lineHeight / _util.LINE_FACTOR); + if (isTooBig(fontSize)) { + numberOfLines++; + continue; + } + break; + } + } + const { + fontName, + fontColor + } = this.data.defaultAppearanceData; + this._defaultAppearance = (0, _default_appearance.createDefaultAppearance)({ + fontSize, + fontName, + fontColor + }); + } + return [this._defaultAppearance, fontSize, height / numberOfLines]; + } + _renderText(text, font, fontSize, totalWidth, alignment, prevInfo, hPadding, vPadding) { + let shift; + if (alignment === 1) { + const width = this._getTextWidth(text, font) * fontSize; + shift = (totalWidth - width) / 2; + } else if (alignment === 2) { + const width = this._getTextWidth(text, font) * fontSize; + shift = totalWidth - width - hPadding; + } else { + shift = hPadding; + } + const shiftStr = (0, _core_utils.numberToString)(shift - prevInfo.shift); + prevInfo.shift = shift; + vPadding = (0, _core_utils.numberToString)(vPadding); + return `${shiftStr} ${vPadding} Td (${(0, _core_utils.escapeString)(text)}) Tj`; + } + _getSaveFieldResources(xref) { + const { + localResources, + appearanceResources, + acroFormResources + } = this._fieldResources; + const fontName = this.data.defaultAppearanceData?.fontName; + if (!fontName) { + return localResources || _primitives.Dict.empty; + } + for (const resources of [localResources, appearanceResources]) { + if (resources instanceof _primitives.Dict) { + const localFont = resources.get("Font"); + if (localFont instanceof _primitives.Dict && localFont.has(fontName)) { + return resources; + } + } + } + if (acroFormResources instanceof _primitives.Dict) { + const acroFormFont = acroFormResources.get("Font"); + if (acroFormFont instanceof _primitives.Dict && acroFormFont.has(fontName)) { + const subFontDict = new _primitives.Dict(xref); + subFontDict.set(fontName, acroFormFont.getRaw(fontName)); + const subResourcesDict = new _primitives.Dict(xref); + subResourcesDict.set("Font", subFontDict); + return _primitives.Dict.merge({ + xref, + dictArray: [subResourcesDict, localResources], + mergeSubDicts: true + }); + } + } + return localResources || _primitives.Dict.empty; + } + getFieldObject() { + return null; + } +} +class TextWidgetAnnotation extends WidgetAnnotation { + constructor(params) { + super(params); + this.data.hasOwnCanvas = this.data.readOnly && !this.data.noHTML; + this._hasText = true; + const dict = params.dict; + if (typeof this.data.fieldValue !== "string") { + this.data.fieldValue = ""; + } + let alignment = (0, _core_utils.getInheritableProperty)({ + dict, + key: "Q" + }); + if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) { + alignment = null; + } + this.data.textAlignment = alignment; + let maximumLength = (0, _core_utils.getInheritableProperty)({ + dict, + key: "MaxLen" + }); + if (!Number.isInteger(maximumLength) || maximumLength < 0) { + maximumLength = 0; + } + this.data.maxLen = maximumLength; + this.data.multiLine = this.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE); + this.data.comb = this.hasFieldFlag(_util.AnnotationFieldFlag.COMB) && !this.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE) && !this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD) && !this.hasFieldFlag(_util.AnnotationFieldFlag.FILESELECT) && this.data.maxLen !== 0; + this.data.doNotScroll = this.hasFieldFlag(_util.AnnotationFieldFlag.DONOTSCROLL); + } + get hasTextContent() { + return !!this.appearance; + } + _getCombAppearance(defaultAppearance, font, text, fontSize, width, height, hPadding, vPadding, descent, lineHeight, annotationStorage) { + const combWidth = width / this.data.maxLen; + const colors = this.getBorderAndBackgroundAppearances(annotationStorage); + const buf = []; + const positions = font.getCharPositions(text); + for (const [start, end] of positions) { + buf.push(`(${(0, _core_utils.escapeString)(text.substring(start, end))}) Tj`); + } + const renderedComb = buf.join(` ${(0, _core_utils.numberToString)(combWidth)} 0 Td `); + return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 ${(0, _core_utils.numberToString)(hPadding)} ${(0, _core_utils.numberToString)(vPadding + descent)} Tm ${renderedComb}` + " ET Q EMC"; + } + _getMultilineAppearance(defaultAppearance, lines, font, fontSize, width, height, alignment, hPadding, vPadding, descent, lineHeight, annotationStorage) { + const buf = []; + const totalWidth = width - 2 * hPadding; + const prevInfo = { + shift: 0 + }; + for (let i = 0, ii = lines.length; i < ii; i++) { + const line = lines[i]; + const chunks = this._splitLine(line, font, fontSize, totalWidth); + for (let j = 0, jj = chunks.length; j < jj; j++) { + const chunk = chunks[j]; + const vShift = i === 0 && j === 0 ? -vPadding - (lineHeight - descent) : -lineHeight; + buf.push(this._renderText(chunk, font, fontSize, width, alignment, prevInfo, hPadding, vShift)); + } + } + const colors = this.getBorderAndBackgroundAppearances(annotationStorage); + const renderedText = buf.join("\n"); + return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 0 ${(0, _core_utils.numberToString)(height)} Tm ${renderedText}` + " ET Q EMC"; + } + _splitLine(line, font, fontSize, width, cache = {}) { + line = cache.line || line; + const glyphs = cache.glyphs || font.charsToGlyphs(line); + if (glyphs.length <= 1) { + return [line]; + } + const positions = cache.positions || font.getCharPositions(line); + const scale = fontSize / 1000; + const chunks = []; + let lastSpacePosInStringStart = -1, + lastSpacePosInStringEnd = -1, + lastSpacePos = -1, + startChunk = 0, + currentWidth = 0; + for (let i = 0, ii = glyphs.length; i < ii; i++) { + const [start, end] = positions[i]; + const glyph = glyphs[i]; + const glyphWidth = glyph.width * scale; + if (glyph.unicode === " ") { + if (currentWidth + glyphWidth > width) { + chunks.push(line.substring(startChunk, start)); + startChunk = start; + currentWidth = glyphWidth; + lastSpacePosInStringStart = -1; + lastSpacePos = -1; + } else { + currentWidth += glyphWidth; + lastSpacePosInStringStart = start; + lastSpacePosInStringEnd = end; + lastSpacePos = i; + } + } else { + if (currentWidth + glyphWidth > width) { + if (lastSpacePosInStringStart !== -1) { + chunks.push(line.substring(startChunk, lastSpacePosInStringEnd)); + startChunk = lastSpacePosInStringEnd; + i = lastSpacePos + 1; + lastSpacePosInStringStart = -1; + currentWidth = 0; + } else { + chunks.push(line.substring(startChunk, start)); + startChunk = start; + currentWidth = glyphWidth; + } + } else { + currentWidth += glyphWidth; + } + } + } + if (startChunk < line.length) { + chunks.push(line.substring(startChunk, line.length)); + } + return chunks; + } + getFieldObject() { + return { + id: this.data.id, + value: this.data.fieldValue, + defaultValue: this.data.defaultFieldValue || "", + multiline: this.data.multiLine, + password: this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD), + charLimit: this.data.maxLen, + comb: this.data.comb, + editable: !this.data.readOnly, + hidden: this.data.hidden, + name: this.data.fieldName, + rect: this.data.rect, + actions: this.data.actions, + page: this.data.pageIndex, + strokeColor: this.data.borderColor, + fillColor: this.data.backgroundColor, + rotation: this.rotation, + type: "text" + }; + } +} +class ButtonWidgetAnnotation extends WidgetAnnotation { + constructor(params) { + super(params); + this.checkedAppearance = null; + this.uncheckedAppearance = null; + this.data.checkBox = !this.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && !this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON); + this.data.radioButton = this.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && !this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON); + this.data.pushButton = this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON); + this.data.isTooltipOnly = false; + if (this.data.checkBox) { + this._processCheckBox(params); + } else if (this.data.radioButton) { + this._processRadioButton(params); + } else if (this.data.pushButton) { + this.data.hasOwnCanvas = true; + this._processPushButton(params); + } else { + (0, _util.warn)("Invalid field flags for button widget annotation"); + } + } + async getOperatorList(evaluator, task, intent, renderForms, annotationStorage) { + if (this.data.pushButton) { + return super.getOperatorList(evaluator, task, intent, false, annotationStorage); + } + let value = null; + let rotation = null; + if (annotationStorage) { + const storageEntry = annotationStorage.get(this.data.id); + value = storageEntry ? storageEntry.value : null; + rotation = storageEntry ? storageEntry.rotation : null; + } + if (value === null && this.appearance) { + return super.getOperatorList(evaluator, task, intent, renderForms, annotationStorage); + } + if (value === null || value === undefined) { + if (this.data.checkBox) { + value = this.data.fieldValue === this.data.exportValue; + } else { + value = this.data.fieldValue === this.data.buttonValue; + } + } + const appearance = value ? this.checkedAppearance : this.uncheckedAppearance; + if (appearance) { + const savedAppearance = this.appearance; + const savedMatrix = appearance.dict.getArray("Matrix") || _util.IDENTITY_MATRIX; + if (rotation) { + appearance.dict.set("Matrix", this.getRotationMatrix(annotationStorage)); + } + this.appearance = appearance; + const operatorList = super.getOperatorList(evaluator, task, intent, renderForms, annotationStorage); + this.appearance = savedAppearance; + appearance.dict.set("Matrix", savedMatrix); + return operatorList; + } + return { + opList: new _operator_list.OperatorList(), + separateForm: false, + separateCanvas: false + }; + } + async save(evaluator, task, annotationStorage) { + if (this.data.checkBox) { + return this._saveCheckbox(evaluator, task, annotationStorage); + } + if (this.data.radioButton) { + return this._saveRadioButton(evaluator, task, annotationStorage); + } + return null; + } + async _saveCheckbox(evaluator, task, annotationStorage) { + if (!annotationStorage) { + return null; + } + const storageEntry = annotationStorage.get(this.data.id); + let rotation = storageEntry?.rotation, + value = storageEntry?.value; + if (rotation === undefined) { + if (value === undefined) { + return null; + } + const defaultValue = this.data.fieldValue === this.data.exportValue; + if (defaultValue === value) { + return null; + } + } + const dict = evaluator.xref.fetchIfRef(this.ref); + if (!(dict instanceof _primitives.Dict)) { + return null; + } + if (rotation === undefined) { + rotation = this.rotation; + } + if (value === undefined) { + value = this.data.fieldValue === this.data.exportValue; + } + const xfa = { + path: this.data.fieldName, + value: value ? this.data.exportValue : "" + }; + const name = _primitives.Name.get(value ? this.data.exportValue : "Off"); + dict.set("V", name); + dict.set("AS", name); + dict.set("M", `D:${(0, _util.getModificationDate)()}`); + const maybeMK = this._getMKDict(rotation); + if (maybeMK) { + dict.set("MK", maybeMK); + } + const encrypt = evaluator.xref.encrypt; + let originalTransform = null; + if (encrypt) { + originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen); + } + const buffer = [`${this.ref.num} ${this.ref.gen} obj\n`]; + await (0, _writer.writeDict)(dict, buffer, originalTransform); + buffer.push("\nendobj\n"); + return [{ + ref: this.ref, + data: buffer.join(""), + xfa + }]; + } + async _saveRadioButton(evaluator, task, annotationStorage) { + if (!annotationStorage) { + return null; + } + const storageEntry = annotationStorage.get(this.data.id); + let rotation = storageEntry?.rotation, + value = storageEntry?.value; + if (rotation === undefined) { + if (value === undefined) { + return null; + } + const defaultValue = this.data.fieldValue === this.data.buttonValue; + if (defaultValue === value) { + return null; + } + } + const dict = evaluator.xref.fetchIfRef(this.ref); + if (!(dict instanceof _primitives.Dict)) { + return null; + } + if (value === undefined) { + value = this.data.fieldValue === this.data.buttonValue; + } + if (rotation === undefined) { + rotation = this.rotation; + } + const xfa = { + path: this.data.fieldName, + value: value ? this.data.buttonValue : "" + }; + const name = _primitives.Name.get(value ? this.data.buttonValue : "Off"); + let parentBuffer = null; + const encrypt = evaluator.xref.encrypt; + if (value) { + if (this.parent instanceof _primitives.Ref) { + const parent = evaluator.xref.fetch(this.parent); + let parentTransform = null; + if (encrypt) { + parentTransform = encrypt.createCipherTransform(this.parent.num, this.parent.gen); + } + parent.set("V", name); + parentBuffer = [`${this.parent.num} ${this.parent.gen} obj\n`]; + await (0, _writer.writeDict)(parent, parentBuffer, parentTransform); + parentBuffer.push("\nendobj\n"); + } else if (this.parent instanceof _primitives.Dict) { + this.parent.set("V", name); + } + } + dict.set("AS", name); + dict.set("M", `D:${(0, _util.getModificationDate)()}`); + const maybeMK = this._getMKDict(rotation); + if (maybeMK) { + dict.set("MK", maybeMK); + } + let originalTransform = null; + if (encrypt) { + originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen); + } + const buffer = [`${this.ref.num} ${this.ref.gen} obj\n`]; + await (0, _writer.writeDict)(dict, buffer, originalTransform); + buffer.push("\nendobj\n"); + const newRefs = [{ + ref: this.ref, + data: buffer.join(""), + xfa + }]; + if (parentBuffer !== null) { + newRefs.push({ + ref: this.parent, + data: parentBuffer.join(""), + xfa: null + }); + } + return newRefs; + } + _getDefaultCheckedAppearance(params, type) { + const width = this.data.rect[2] - this.data.rect[0]; + const height = this.data.rect[3] - this.data.rect[1]; + const bbox = [0, 0, width, height]; + const FONT_RATIO = 0.8; + const fontSize = Math.min(width, height) * FONT_RATIO; + let metrics, char; + if (type === "check") { + metrics = { + width: 0.755 * fontSize, + height: 0.705 * fontSize + }; + char = "\x33"; + } else if (type === "disc") { + metrics = { + width: 0.791 * fontSize, + height: 0.705 * fontSize + }; + char = "\x6C"; + } else { + (0, _util.unreachable)(`_getDefaultCheckedAppearance - unsupported type: ${type}`); + } + const xShift = (0, _core_utils.numberToString)((width - metrics.width) / 2); + const yShift = (0, _core_utils.numberToString)((height - metrics.height) / 2); + const appearance = `q BT /PdfJsZaDb ${fontSize} Tf 0 g ${xShift} ${yShift} Td (${char}) Tj ET Q`; + const appearanceStreamDict = new _primitives.Dict(params.xref); + appearanceStreamDict.set("FormType", 1); + appearanceStreamDict.set("Subtype", _primitives.Name.get("Form")); + appearanceStreamDict.set("Type", _primitives.Name.get("XObject")); + appearanceStreamDict.set("BBox", bbox); + appearanceStreamDict.set("Matrix", [1, 0, 0, 1, 0, 0]); + appearanceStreamDict.set("Length", appearance.length); + const resources = new _primitives.Dict(params.xref); + const font = new _primitives.Dict(params.xref); + font.set("PdfJsZaDb", this.fallbackFontDict); + resources.set("Font", font); + appearanceStreamDict.set("Resources", resources); + this.checkedAppearance = new _stream.StringStream(appearance); + this.checkedAppearance.dict = appearanceStreamDict; + this._streams.push(this.checkedAppearance); + } + _processCheckBox(params) { + const customAppearance = params.dict.get("AP"); + if (!(customAppearance instanceof _primitives.Dict)) { + return; + } + const normalAppearance = customAppearance.get("N"); + if (!(normalAppearance instanceof _primitives.Dict)) { + return; + } + const asValue = this._decodeFormValue(params.dict.get("AS")); + if (typeof asValue === "string") { + this.data.fieldValue = asValue; + } + const yes = this.data.fieldValue !== null && this.data.fieldValue !== "Off" ? this.data.fieldValue : "Yes"; + const exportValues = normalAppearance.getKeys(); + if (exportValues.length === 0) { + exportValues.push("Off", yes); + } else if (exportValues.length === 1) { + if (exportValues[0] === "Off") { + exportValues.push(yes); + } else { + exportValues.unshift("Off"); + } + } else if (exportValues.includes(yes)) { + exportValues.length = 0; + exportValues.push("Off", yes); + } else { + const otherYes = exportValues.find(v => v !== "Off"); + exportValues.length = 0; + exportValues.push("Off", otherYes); + } + if (!exportValues.includes(this.data.fieldValue)) { + this.data.fieldValue = "Off"; + } + this.data.exportValue = exportValues[1]; + const checkedAppearance = normalAppearance.get(this.data.exportValue); + this.checkedAppearance = checkedAppearance instanceof _base_stream.BaseStream ? checkedAppearance : null; + const uncheckedAppearance = normalAppearance.get("Off"); + this.uncheckedAppearance = uncheckedAppearance instanceof _base_stream.BaseStream ? uncheckedAppearance : null; + if (this.checkedAppearance) { + this._streams.push(this.checkedAppearance); + } else { + this._getDefaultCheckedAppearance(params, "check"); + } + if (this.uncheckedAppearance) { + this._streams.push(this.uncheckedAppearance); + } + this._fallbackFontDict = this.fallbackFontDict; + } + _processRadioButton(params) { + this.data.fieldValue = this.data.buttonValue = null; + const fieldParent = params.dict.get("Parent"); + if (fieldParent instanceof _primitives.Dict) { + this.parent = params.dict.getRaw("Parent"); + const fieldParentValue = fieldParent.get("V"); + if (fieldParentValue instanceof _primitives.Name) { + this.data.fieldValue = this._decodeFormValue(fieldParentValue); + } + } + const appearanceStates = params.dict.get("AP"); + if (!(appearanceStates instanceof _primitives.Dict)) { + return; + } + const normalAppearance = appearanceStates.get("N"); + if (!(normalAppearance instanceof _primitives.Dict)) { + return; + } + for (const key of normalAppearance.getKeys()) { + if (key !== "Off") { + this.data.buttonValue = this._decodeFormValue(key); + break; + } + } + const checkedAppearance = normalAppearance.get(this.data.buttonValue); + this.checkedAppearance = checkedAppearance instanceof _base_stream.BaseStream ? checkedAppearance : null; + const uncheckedAppearance = normalAppearance.get("Off"); + this.uncheckedAppearance = uncheckedAppearance instanceof _base_stream.BaseStream ? uncheckedAppearance : null; + if (this.checkedAppearance) { + this._streams.push(this.checkedAppearance); + } else { + this._getDefaultCheckedAppearance(params, "disc"); + } + if (this.uncheckedAppearance) { + this._streams.push(this.uncheckedAppearance); + } + this._fallbackFontDict = this.fallbackFontDict; + } + _processPushButton(params) { + if (!params.dict.has("A") && !params.dict.has("AA") && !this.data.alternativeText) { + (0, _util.warn)("Push buttons without action dictionaries are not supported"); + return; + } + this.data.isTooltipOnly = !params.dict.has("A") && !params.dict.has("AA"); + _catalog.Catalog.parseDestDictionary({ + destDict: params.dict, + resultObj: this.data, + docBaseUrl: params.pdfManager.docBaseUrl, + docAttachments: params.attachments + }); + } + getFieldObject() { + let type = "button"; + let exportValues; + if (this.data.checkBox) { + type = "checkbox"; + exportValues = this.data.exportValue; + } else if (this.data.radioButton) { + type = "radiobutton"; + exportValues = this.data.buttonValue; + } + return { + id: this.data.id, + value: this.data.fieldValue || "Off", + defaultValue: this.data.defaultFieldValue, + exportValues, + editable: !this.data.readOnly, + name: this.data.fieldName, + rect: this.data.rect, + hidden: this.data.hidden, + actions: this.data.actions, + page: this.data.pageIndex, + strokeColor: this.data.borderColor, + fillColor: this.data.backgroundColor, + rotation: this.rotation, + type + }; + } + get fallbackFontDict() { + const dict = new _primitives.Dict(); + dict.set("BaseFont", _primitives.Name.get("ZapfDingbats")); + dict.set("Type", _primitives.Name.get("FallbackType")); + dict.set("Subtype", _primitives.Name.get("FallbackType")); + dict.set("Encoding", _primitives.Name.get("ZapfDingbatsEncoding")); + return (0, _util.shadow)(this, "fallbackFontDict", dict); + } +} +class ChoiceWidgetAnnotation extends WidgetAnnotation { + constructor(params) { + super(params); + const { + dict, + xref + } = params; + this.indices = dict.getArray("I"); + this.hasIndices = Array.isArray(this.indices) && this.indices.length > 0; + this.data.options = []; + const options = (0, _core_utils.getInheritableProperty)({ + dict, + key: "Opt" + }); + if (Array.isArray(options)) { + for (let i = 0, ii = options.length; i < ii; i++) { + const option = xref.fetchIfRef(options[i]); + const isOptionArray = Array.isArray(option); + this.data.options[i] = { + exportValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[0]) : option), + displayValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[1]) : option) + }; + } + } + if (!this.hasIndices) { + if (typeof this.data.fieldValue === "string") { + this.data.fieldValue = [this.data.fieldValue]; + } else if (!this.data.fieldValue) { + this.data.fieldValue = []; + } + } else { + this.data.fieldValue = []; + const ii = this.data.options.length; + for (const i of this.indices) { + if (Number.isInteger(i) && i >= 0 && i < ii) { + this.data.fieldValue.push(this.data.options[i].exportValue); + } + } + } + this.data.combo = this.hasFieldFlag(_util.AnnotationFieldFlag.COMBO); + this.data.multiSelect = this.hasFieldFlag(_util.AnnotationFieldFlag.MULTISELECT); + this._hasText = true; + } + getFieldObject() { + const type = this.data.combo ? "combobox" : "listbox"; + const value = this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null; + return { + id: this.data.id, + value, + defaultValue: this.data.defaultFieldValue, + editable: !this.data.readOnly, + name: this.data.fieldName, + rect: this.data.rect, + numItems: this.data.fieldValue.length, + multipleSelection: this.data.multiSelect, + hidden: this.data.hidden, + actions: this.data.actions, + items: this.data.options, + page: this.data.pageIndex, + strokeColor: this.data.borderColor, + fillColor: this.data.backgroundColor, + rotation: this.rotation, + type + }; + } + amendSavedDict(annotationStorage, dict) { + if (!this.hasIndices) { + return; + } + let values = annotationStorage?.get(this.data.id)?.value; + if (!Array.isArray(values)) { + values = [values]; + } + const indices = []; + const { + options + } = this.data; + for (let i = 0, j = 0, ii = options.length; i < ii; i++) { + if (options[i].exportValue === values[j]) { + indices.push(i); + j += 1; + } + } + dict.set("I", indices); + } + async _getAppearance(evaluator, task, intent, annotationStorage) { + if (this.data.combo) { + return super._getAppearance(evaluator, task, intent, annotationStorage); + } + let exportedValue, rotation; + const storageEntry = annotationStorage?.get(this.data.id); + if (storageEntry) { + rotation = storageEntry.rotation; + exportedValue = storageEntry.value; + } + if (rotation === undefined && exportedValue === undefined && !this._needAppearances) { + return null; + } + if (exportedValue === undefined) { + exportedValue = this.data.fieldValue; + } else if (!Array.isArray(exportedValue)) { + exportedValue = [exportedValue]; + } + const defaultPadding = 1; + const defaultHPadding = 2; + let totalHeight = this.data.rect[3] - this.data.rect[1]; + let totalWidth = this.data.rect[2] - this.data.rect[0]; + if (rotation === 90 || rotation === 270) { + [totalWidth, totalHeight] = [totalHeight, totalWidth]; + } + const lineCount = this.data.options.length; + const valueIndices = []; + for (let i = 0; i < lineCount; i++) { + const { + exportValue + } = this.data.options[i]; + if (exportedValue.includes(exportValue)) { + valueIndices.push(i); + } + } + if (!this._defaultAppearance) { + this.data.defaultAppearanceData = (0, _default_appearance.parseDefaultAppearance)(this._defaultAppearance = "/Helvetica 0 Tf 0 g"); + } + const font = await WidgetAnnotation._getFontData(evaluator, task, this.data.defaultAppearanceData, this._fieldResources.mergedResources); + let defaultAppearance; + let { + fontSize + } = this.data.defaultAppearanceData; + if (!fontSize) { + const lineHeight = (totalHeight - defaultPadding) / lineCount; + let lineWidth = -1; + let value; + for (const { + displayValue + } of this.data.options) { + const width = this._getTextWidth(displayValue, font); + if (width > lineWidth) { + lineWidth = width; + value = displayValue; + } + } + [defaultAppearance, fontSize] = this._computeFontSize(lineHeight, totalWidth - 2 * defaultHPadding, value, font, -1); + } else { + defaultAppearance = this._defaultAppearance; + } + const lineHeight = fontSize * _util.LINE_FACTOR; + const vPadding = (lineHeight - fontSize) / 2; + const numberOfVisibleLines = Math.floor(totalHeight / lineHeight); + let firstIndex = 0; + if (valueIndices.length > 0) { + const minIndex = Math.min(...valueIndices); + const maxIndex = Math.max(...valueIndices); + firstIndex = Math.max(0, maxIndex - numberOfVisibleLines + 1); + if (firstIndex > minIndex) { + firstIndex = minIndex; + } + } + const end = Math.min(firstIndex + numberOfVisibleLines + 1, lineCount); + const buf = ["/Tx BMC q", `1 1 ${totalWidth} ${totalHeight} re W n`]; + if (valueIndices.length) { + buf.push("0.600006 0.756866 0.854904 rg"); + for (const index of valueIndices) { + if (firstIndex <= index && index < end) { + buf.push(`1 ${totalHeight - (index - firstIndex + 1) * lineHeight} ${totalWidth} ${lineHeight} re f`); + } + } + } + buf.push("BT", defaultAppearance, `1 0 0 1 0 ${totalHeight} Tm`); + const prevInfo = { + shift: 0 + }; + for (let i = firstIndex; i < end; i++) { + const { + displayValue + } = this.data.options[i]; + const vpadding = i === firstIndex ? vPadding : 0; + buf.push(this._renderText(displayValue, font, fontSize, totalWidth, 0, prevInfo, defaultHPadding, -lineHeight + vpadding)); + } + buf.push("ET Q EMC"); + return buf.join("\n"); + } +} +class SignatureWidgetAnnotation extends WidgetAnnotation { + constructor(params) { + super(params); + this.data.fieldValue = null; + this.data.hasOwnCanvas = this.data.noRotate; + } + getFieldObject() { + return { + id: this.data.id, + value: null, + page: this.data.pageIndex, + type: "signature" + }; + } +} +class TextAnnotation extends MarkupAnnotation { + constructor(params) { + const DEFAULT_ICON_SIZE = 22; + super(params); + this.data.noRotate = true; + this.data.hasOwnCanvas = this.data.noRotate; + const { + dict + } = params; + this.data.annotationType = _util.AnnotationType.TEXT; + if (this.data.hasAppearance) { + this.data.name = "NoIcon"; + } else { + this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE; + this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE; + this.data.name = dict.has("Name") ? dict.get("Name").name : "Note"; + } + if (dict.has("State")) { + this.data.state = dict.get("State") || null; + this.data.stateModel = dict.get("StateModel") || null; + } else { + this.data.state = null; + this.data.stateModel = null; + } + } +} +class LinkAnnotation extends Annotation { + constructor(params) { + super(params); + this.data.annotationType = _util.AnnotationType.LINK; + const quadPoints = getQuadPoints(params.dict, this.rectangle); + if (quadPoints) { + this.data.quadPoints = quadPoints; + } + this.data.borderColor ||= this.data.color; + _catalog.Catalog.parseDestDictionary({ + destDict: params.dict, + resultObj: this.data, + docBaseUrl: params.pdfManager.docBaseUrl, + docAttachments: params.attachments + }); + } +} +class PopupAnnotation extends Annotation { + constructor(params) { + super(params); + const { + dict + } = params; + this.data.annotationType = _util.AnnotationType.POPUP; + if (this.data.rect[0] === this.data.rect[2] || this.data.rect[1] === this.data.rect[3]) { + this.data.rect = null; + } + let parentItem = dict.get("Parent"); + if (!parentItem) { + (0, _util.warn)("Popup annotation has a missing or invalid parent annotation."); + return; + } + const parentRect = parentItem.getArray("Rect"); + if (Array.isArray(parentRect) && parentRect.length === 4) { + this.data.parentRect = _util.Util.normalizeRect(parentRect); + } else { + this.data.parentRect = null; + } + const rt = parentItem.get("RT"); + if ((0, _primitives.isName)(rt, _util.AnnotationReplyType.GROUP)) { + parentItem = parentItem.get("IRT"); + } + if (!parentItem.has("M")) { + this.data.modificationDate = null; + } else { + this.setModificationDate(parentItem.get("M")); + this.data.modificationDate = this.modificationDate; + } + if (!parentItem.has("C")) { + this.data.color = null; + } else { + this.setColor(parentItem.getArray("C")); + this.data.color = this.color; + } + if (!this.viewable) { + const parentFlags = parentItem.get("F"); + if (this._isViewable(parentFlags)) { + this.setFlags(parentFlags); + } + } + this.setTitle(parentItem.get("T")); + this.data.titleObj = this._title; + this.setContents(parentItem.get("Contents")); + this.data.contentsObj = this._contents; + if (parentItem.has("RC")) { + this.data.richText = _factory.XFAFactory.getRichTextAsHtml(parentItem.get("RC")); + } + this.data.open = !!dict.get("Open"); + } +} +exports.PopupAnnotation = PopupAnnotation; +class FreeTextAnnotation extends MarkupAnnotation { + constructor(params) { + super(params); + this.data.hasOwnCanvas = true; + const { + xref + } = params; + this.data.annotationType = _util.AnnotationType.FREETEXT; + this.setDefaultAppearance(params); + if (this.appearance) { + const { + fontColor, + fontSize + } = (0, _default_appearance.parseAppearanceStream)(this.appearance); + this.data.defaultAppearanceData.fontColor = fontColor; + this.data.defaultAppearanceData.fontSize = fontSize || 10; + } else if (this._isOffscreenCanvasSupported) { + const strokeAlpha = params.dict.get("CA"); + const fakeUnicodeFont = new _default_appearance.FakeUnicodeFont(xref, "sans-serif"); + this.data.defaultAppearanceData.fontSize ||= 10; + const { + fontColor, + fontSize + } = this.data.defaultAppearanceData; + this.appearance = fakeUnicodeFont.createAppearance(this._contents.str, this.rectangle, this.rotation, fontSize, fontColor, strokeAlpha); + this._streams.push(this.appearance, _default_appearance.FakeUnicodeFont.toUnicodeStream); + } else { + (0, _util.warn)("FreeTextAnnotation: OffscreenCanvas is not supported, annotation may not render correctly."); + } + } + get hasTextContent() { + return !!this.appearance; + } + static createNewDict(annotation, xref, { + apRef, + ap + }) { + const { + color, + fontSize, + rect, + rotation, + user, + value + } = annotation; + const freetext = new _primitives.Dict(xref); + freetext.set("Type", _primitives.Name.get("Annot")); + freetext.set("Subtype", _primitives.Name.get("FreeText")); + freetext.set("CreationDate", `D:${(0, _util.getModificationDate)()}`); + freetext.set("Rect", rect); + const da = `/Helv ${fontSize} Tf ${(0, _default_appearance.getPdfColor)(color, true)}`; + freetext.set("DA", da); + freetext.set("Contents", (0, _core_utils.isAscii)(value) ? value : (0, _core_utils.stringToUTF16String)(value, true)); + freetext.set("F", 4); + freetext.set("Border", [0, 0, 0]); + freetext.set("Rotate", rotation); + if (user) { + freetext.set("T", (0, _core_utils.isAscii)(user) ? user : (0, _core_utils.stringToUTF16String)(user, true)); + } + if (apRef || ap) { + const n = new _primitives.Dict(xref); + freetext.set("AP", n); + if (apRef) { + n.set("N", apRef); + } else { + n.set("N", ap); + } + } + return freetext; + } + static async createNewAppearanceStream(annotation, xref, params) { + const { + baseFontRef, + evaluator, + task + } = params; + const { + color, + fontSize, + rect, + rotation, + value + } = annotation; + const resources = new _primitives.Dict(xref); + const font = new _primitives.Dict(xref); + if (baseFontRef) { + font.set("Helv", baseFontRef); + } else { + const baseFont = new _primitives.Dict(xref); + baseFont.set("BaseFont", _primitives.Name.get("Helvetica")); + baseFont.set("Type", _primitives.Name.get("Font")); + baseFont.set("Subtype", _primitives.Name.get("Type1")); + baseFont.set("Encoding", _primitives.Name.get("WinAnsiEncoding")); + font.set("Helv", baseFont); + } + resources.set("Font", font); + const helv = await WidgetAnnotation._getFontData(evaluator, task, { + fontName: "Helvetica", + fontSize + }, resources); + const [x1, y1, x2, y2] = rect; + let w = x2 - x1; + let h = y2 - y1; + if (rotation % 180 !== 0) { + [w, h] = [h, w]; + } + const lines = value.split("\n"); + const scale = fontSize / 1000; + let totalWidth = -Infinity; + const encodedLines = []; + for (let line of lines) { + const encoded = helv.encodeString(line); + if (encoded.length > 1) { + return null; + } + line = encoded.join(""); + encodedLines.push(line); + let lineWidth = 0; + const glyphs = helv.charsToGlyphs(line); + for (const glyph of glyphs) { + lineWidth += glyph.width * scale; + } + totalWidth = Math.max(totalWidth, lineWidth); + } + let hscale = 1; + if (totalWidth > w) { + hscale = w / totalWidth; + } + let vscale = 1; + const lineHeight = _util.LINE_FACTOR * fontSize; + const lineDescent = _util.LINE_DESCENT_FACTOR * fontSize; + const totalHeight = lineHeight * lines.length; + if (totalHeight > h) { + vscale = h / totalHeight; + } + const fscale = Math.min(hscale, vscale); + const newFontSize = fontSize * fscale; + const buffer = ["q", `0 0 ${(0, _core_utils.numberToString)(w)} ${(0, _core_utils.numberToString)(h)} re W n`, `BT`, `1 0 0 1 0 ${(0, _core_utils.numberToString)(h + lineDescent)} Tm 0 Tc ${(0, _default_appearance.getPdfColor)(color, true)}`, `/Helv ${(0, _core_utils.numberToString)(newFontSize)} Tf`]; + const vShift = (0, _core_utils.numberToString)(lineHeight); + for (const line of encodedLines) { + buffer.push(`0 -${vShift} Td (${(0, _core_utils.escapeString)(line)}) Tj`); + } + buffer.push("ET", "Q"); + const appearance = buffer.join("\n"); + const appearanceStreamDict = new _primitives.Dict(xref); + appearanceStreamDict.set("FormType", 1); + appearanceStreamDict.set("Subtype", _primitives.Name.get("Form")); + appearanceStreamDict.set("Type", _primitives.Name.get("XObject")); + appearanceStreamDict.set("BBox", [0, 0, w, h]); + appearanceStreamDict.set("Resources", resources); + if (rotation) { + const matrix = (0, _core_utils.getRotationMatrix)(rotation, w, h); + appearanceStreamDict.set("Matrix", matrix); + } + const ap = new _stream.StringStream(appearance); + ap.dict = appearanceStreamDict; + return ap; + } +} +class LineAnnotation extends MarkupAnnotation { + constructor(params) { + super(params); + const { + dict, + xref + } = params; + this.data.annotationType = _util.AnnotationType.LINE; + this.data.hasOwnCanvas = this.data.noRotate; + const lineCoordinates = dict.getArray("L"); + this.data.lineCoordinates = _util.Util.normalizeRect(lineCoordinates); + this.setLineEndings(dict.getArray("LE")); + this.data.lineEndings = this.lineEndings; + if (!this.appearance) { + const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0]; + const strokeAlpha = dict.get("CA"); + const interiorColor = getRgbColor(dict.getArray("IC"), null); + const fillColor = interiorColor ? getPdfColorArray(interiorColor) : null; + const fillAlpha = fillColor ? strokeAlpha : null; + const borderWidth = this.borderStyle.width || 1, + borderAdjust = 2 * borderWidth; + const bbox = [this.data.lineCoordinates[0] - borderAdjust, this.data.lineCoordinates[1] - borderAdjust, this.data.lineCoordinates[2] + borderAdjust, this.data.lineCoordinates[3] + borderAdjust]; + if (!_util.Util.intersect(this.rectangle, bbox)) { + this.rectangle = bbox; + } + this._setDefaultAppearance({ + xref, + extra: `${borderWidth} w`, + strokeColor, + fillColor, + strokeAlpha, + fillAlpha, + pointsCallback: (buffer, points) => { + buffer.push(`${lineCoordinates[0]} ${lineCoordinates[1]} m`, `${lineCoordinates[2]} ${lineCoordinates[3]} l`, "S"); + return [points[0].x - borderWidth, points[1].x + borderWidth, points[3].y - borderWidth, points[1].y + borderWidth]; + } + }); + } + } +} +class SquareAnnotation extends MarkupAnnotation { + constructor(params) { + super(params); + const { + dict, + xref + } = params; + this.data.annotationType = _util.AnnotationType.SQUARE; + this.data.hasOwnCanvas = this.data.noRotate; + if (!this.appearance) { + const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0]; + const strokeAlpha = dict.get("CA"); + const interiorColor = getRgbColor(dict.getArray("IC"), null); + const fillColor = interiorColor ? getPdfColorArray(interiorColor) : null; + const fillAlpha = fillColor ? strokeAlpha : null; + if (this.borderStyle.width === 0 && !fillColor) { + return; + } + this._setDefaultAppearance({ + xref, + extra: `${this.borderStyle.width} w`, + strokeColor, + fillColor, + strokeAlpha, + fillAlpha, + pointsCallback: (buffer, points) => { + const x = points[2].x + this.borderStyle.width / 2; + const y = points[2].y + this.borderStyle.width / 2; + const width = points[3].x - points[2].x - this.borderStyle.width; + const height = points[1].y - points[3].y - this.borderStyle.width; + buffer.push(`${x} ${y} ${width} ${height} re`); + if (fillColor) { + buffer.push("B"); + } else { + buffer.push("S"); + } + return [points[0].x, points[1].x, points[3].y, points[1].y]; + } + }); + } + } +} +class CircleAnnotation extends MarkupAnnotation { + constructor(params) { + super(params); + const { + dict, + xref + } = params; + this.data.annotationType = _util.AnnotationType.CIRCLE; + if (!this.appearance) { + const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0]; + const strokeAlpha = dict.get("CA"); + const interiorColor = getRgbColor(dict.getArray("IC"), null); + const fillColor = interiorColor ? getPdfColorArray(interiorColor) : null; + const fillAlpha = fillColor ? strokeAlpha : null; + if (this.borderStyle.width === 0 && !fillColor) { + return; + } + const controlPointsDistance = 4 / 3 * Math.tan(Math.PI / (2 * 4)); + this._setDefaultAppearance({ + xref, + extra: `${this.borderStyle.width} w`, + strokeColor, + fillColor, + strokeAlpha, + fillAlpha, + pointsCallback: (buffer, points) => { + const x0 = points[0].x + this.borderStyle.width / 2; + const y0 = points[0].y - this.borderStyle.width / 2; + const x1 = points[3].x - this.borderStyle.width / 2; + const y1 = points[3].y + this.borderStyle.width / 2; + const xMid = x0 + (x1 - x0) / 2; + const yMid = y0 + (y1 - y0) / 2; + const xOffset = (x1 - x0) / 2 * controlPointsDistance; + const yOffset = (y1 - y0) / 2 * controlPointsDistance; + buffer.push(`${xMid} ${y1} m`, `${xMid + xOffset} ${y1} ${x1} ${yMid + yOffset} ${x1} ${yMid} c`, `${x1} ${yMid - yOffset} ${xMid + xOffset} ${y0} ${xMid} ${y0} c`, `${xMid - xOffset} ${y0} ${x0} ${yMid - yOffset} ${x0} ${yMid} c`, `${x0} ${yMid + yOffset} ${xMid - xOffset} ${y1} ${xMid} ${y1} c`, "h"); + if (fillColor) { + buffer.push("B"); + } else { + buffer.push("S"); + } + return [points[0].x, points[1].x, points[3].y, points[1].y]; + } + }); + } + } +} +class PolylineAnnotation extends MarkupAnnotation { + constructor(params) { + super(params); + const { + dict, + xref + } = params; + this.data.annotationType = _util.AnnotationType.POLYLINE; + this.data.hasOwnCanvas = this.data.noRotate; + this.data.vertices = []; + if (!(this instanceof PolygonAnnotation)) { + this.setLineEndings(dict.getArray("LE")); + this.data.lineEndings = this.lineEndings; + } + const rawVertices = dict.getArray("Vertices"); + if (!Array.isArray(rawVertices)) { + return; + } + for (let i = 0, ii = rawVertices.length; i < ii; i += 2) { + this.data.vertices.push({ + x: rawVertices[i], + y: rawVertices[i + 1] + }); + } + if (!this.appearance) { + const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0]; + const strokeAlpha = dict.get("CA"); + const borderWidth = this.borderStyle.width || 1, + borderAdjust = 2 * borderWidth; + const bbox = [Infinity, Infinity, -Infinity, -Infinity]; + for (const vertex of this.data.vertices) { + bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust); + bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust); + bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust); + bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust); + } + if (!_util.Util.intersect(this.rectangle, bbox)) { + this.rectangle = bbox; + } + this._setDefaultAppearance({ + xref, + extra: `${borderWidth} w`, + strokeColor, + strokeAlpha, + pointsCallback: (buffer, points) => { + const vertices = this.data.vertices; + for (let i = 0, ii = vertices.length; i < ii; i++) { + buffer.push(`${vertices[i].x} ${vertices[i].y} ${i === 0 ? "m" : "l"}`); + } + buffer.push("S"); + return [points[0].x, points[1].x, points[3].y, points[1].y]; + } + }); + } + } +} +class PolygonAnnotation extends PolylineAnnotation { + constructor(params) { + super(params); + this.data.annotationType = _util.AnnotationType.POLYGON; + } +} +class CaretAnnotation extends MarkupAnnotation { + constructor(params) { + super(params); + this.data.annotationType = _util.AnnotationType.CARET; + } +} +class InkAnnotation extends MarkupAnnotation { + constructor(params) { + super(params); + this.data.hasOwnCanvas = this.data.noRotate; + const { + dict, + xref + } = params; + this.data.annotationType = _util.AnnotationType.INK; + this.data.inkLists = []; + const rawInkLists = dict.getArray("InkList"); + if (!Array.isArray(rawInkLists)) { + return; + } + for (let i = 0, ii = rawInkLists.length; i < ii; ++i) { + this.data.inkLists.push([]); + for (let j = 0, jj = rawInkLists[i].length; j < jj; j += 2) { + this.data.inkLists[i].push({ + x: xref.fetchIfRef(rawInkLists[i][j]), + y: xref.fetchIfRef(rawInkLists[i][j + 1]) + }); + } + } + if (!this.appearance) { + const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0]; + const strokeAlpha = dict.get("CA"); + const borderWidth = this.borderStyle.width || 1, + borderAdjust = 2 * borderWidth; + const bbox = [Infinity, Infinity, -Infinity, -Infinity]; + for (const inkLists of this.data.inkLists) { + for (const vertex of inkLists) { + bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust); + bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust); + bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust); + bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust); + } + } + if (!_util.Util.intersect(this.rectangle, bbox)) { + this.rectangle = bbox; + } + this._setDefaultAppearance({ + xref, + extra: `${borderWidth} w`, + strokeColor, + strokeAlpha, + pointsCallback: (buffer, points) => { + for (const inkList of this.data.inkLists) { + for (let i = 0, ii = inkList.length; i < ii; i++) { + buffer.push(`${inkList[i].x} ${inkList[i].y} ${i === 0 ? "m" : "l"}`); + } + buffer.push("S"); + } + return [points[0].x, points[1].x, points[3].y, points[1].y]; + } + }); + } + } + static createNewDict(annotation, xref, { + apRef, + ap + }) { + const { + color, + opacity, + paths, + rect, + rotation, + thickness + } = annotation; + const ink = new _primitives.Dict(xref); + ink.set("Type", _primitives.Name.get("Annot")); + ink.set("Subtype", _primitives.Name.get("Ink")); + ink.set("CreationDate", `D:${(0, _util.getModificationDate)()}`); + ink.set("Rect", rect); + ink.set("InkList", paths.map(p => p.points)); + ink.set("F", 4); + ink.set("Rotate", rotation); + const bs = new _primitives.Dict(xref); + ink.set("BS", bs); + bs.set("W", thickness); + ink.set("C", Array.from(color, c => c / 255)); + ink.set("CA", opacity); + const n = new _primitives.Dict(xref); + ink.set("AP", n); + if (apRef) { + n.set("N", apRef); + } else { + n.set("N", ap); + } + return ink; + } + static async createNewAppearanceStream(annotation, xref, params) { + const { + color, + rect, + paths, + thickness, + opacity + } = annotation; + const appearanceBuffer = [`${thickness} w 1 J 1 j`, `${(0, _default_appearance.getPdfColor)(color, false)}`]; + if (opacity !== 1) { + appearanceBuffer.push("/R0 gs"); + } + const buffer = []; + for (const { + bezier + } of paths) { + buffer.length = 0; + buffer.push(`${(0, _core_utils.numberToString)(bezier[0])} ${(0, _core_utils.numberToString)(bezier[1])} m`); + for (let i = 2, ii = bezier.length; i < ii; i += 6) { + const curve = bezier.slice(i, i + 6).map(_core_utils.numberToString).join(" "); + buffer.push(`${curve} c`); + } + buffer.push("S"); + appearanceBuffer.push(buffer.join("\n")); + } + const appearance = appearanceBuffer.join("\n"); + const appearanceStreamDict = new _primitives.Dict(xref); + appearanceStreamDict.set("FormType", 1); + appearanceStreamDict.set("Subtype", _primitives.Name.get("Form")); + appearanceStreamDict.set("Type", _primitives.Name.get("XObject")); + appearanceStreamDict.set("BBox", rect); + appearanceStreamDict.set("Length", appearance.length); + if (opacity !== 1) { + const resources = new _primitives.Dict(xref); + const extGState = new _primitives.Dict(xref); + const r0 = new _primitives.Dict(xref); + r0.set("CA", opacity); + r0.set("Type", _primitives.Name.get("ExtGState")); + extGState.set("R0", r0); + resources.set("ExtGState", extGState); + appearanceStreamDict.set("Resources", resources); + } + const ap = new _stream.StringStream(appearance); + ap.dict = appearanceStreamDict; + return ap; + } +} +class HighlightAnnotation extends MarkupAnnotation { + constructor(params) { + super(params); + const { + dict, + xref + } = params; + this.data.annotationType = _util.AnnotationType.HIGHLIGHT; + const quadPoints = this.data.quadPoints = getQuadPoints(dict, null); + if (quadPoints) { + const resources = this.appearance?.dict.get("Resources"); + if (!this.appearance || !resources?.has("ExtGState")) { + if (this.appearance) { + (0, _util.warn)("HighlightAnnotation - ignoring built-in appearance stream."); + } + const fillColor = this.color ? getPdfColorArray(this.color) : [1, 1, 0]; + const fillAlpha = dict.get("CA"); + this._setDefaultAppearance({ + xref, + fillColor, + blendMode: "Multiply", + fillAlpha, + pointsCallback: (buffer, points) => { + buffer.push(`${points[0].x} ${points[0].y} m`, `${points[1].x} ${points[1].y} l`, `${points[3].x} ${points[3].y} l`, `${points[2].x} ${points[2].y} l`, "f"); + return [points[0].x, points[1].x, points[3].y, points[1].y]; + } + }); + } + } else { + this.data.popupRef = null; + } + } +} +class UnderlineAnnotation extends MarkupAnnotation { + constructor(params) { + super(params); + const { + dict, + xref + } = params; + this.data.annotationType = _util.AnnotationType.UNDERLINE; + const quadPoints = this.data.quadPoints = getQuadPoints(dict, null); + if (quadPoints) { + if (!this.appearance) { + const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0]; + const strokeAlpha = dict.get("CA"); + this._setDefaultAppearance({ + xref, + extra: "[] 0 d 0.571 w", + strokeColor, + strokeAlpha, + pointsCallback: (buffer, points) => { + buffer.push(`${points[2].x} ${points[2].y + 1.3} m`, `${points[3].x} ${points[3].y + 1.3} l`, "S"); + return [points[0].x, points[1].x, points[3].y, points[1].y]; + } + }); + } + } else { + this.data.popupRef = null; + } + } +} +class SquigglyAnnotation extends MarkupAnnotation { + constructor(params) { + super(params); + const { + dict, + xref + } = params; + this.data.annotationType = _util.AnnotationType.SQUIGGLY; + const quadPoints = this.data.quadPoints = getQuadPoints(dict, null); + if (quadPoints) { + if (!this.appearance) { + const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0]; + const strokeAlpha = dict.get("CA"); + this._setDefaultAppearance({ + xref, + extra: "[] 0 d 1 w", + strokeColor, + strokeAlpha, + pointsCallback: (buffer, points) => { + const dy = (points[0].y - points[2].y) / 6; + let shift = dy; + let x = points[2].x; + const y = points[2].y; + const xEnd = points[3].x; + buffer.push(`${x} ${y + shift} m`); + do { + x += 2; + shift = shift === 0 ? dy : 0; + buffer.push(`${x} ${y + shift} l`); + } while (x < xEnd); + buffer.push("S"); + return [points[2].x, xEnd, y - 2 * dy, y + 2 * dy]; + } + }); + } + } else { + this.data.popupRef = null; + } + } +} +class StrikeOutAnnotation extends MarkupAnnotation { + constructor(params) { + super(params); + const { + dict, + xref + } = params; + this.data.annotationType = _util.AnnotationType.STRIKEOUT; + const quadPoints = this.data.quadPoints = getQuadPoints(dict, null); + if (quadPoints) { + if (!this.appearance) { + const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0]; + const strokeAlpha = dict.get("CA"); + this._setDefaultAppearance({ + xref, + extra: "[] 0 d 1 w", + strokeColor, + strokeAlpha, + pointsCallback: (buffer, points) => { + buffer.push(`${(points[0].x + points[2].x) / 2} ` + `${(points[0].y + points[2].y) / 2} m`, `${(points[1].x + points[3].x) / 2} ` + `${(points[1].y + points[3].y) / 2} l`, "S"); + return [points[0].x, points[1].x, points[3].y, points[1].y]; + } + }); + } + } else { + this.data.popupRef = null; + } + } +} +class StampAnnotation extends MarkupAnnotation { + constructor(params) { + super(params); + this.data.annotationType = _util.AnnotationType.STAMP; + this.data.hasOwnCanvas = this.data.noRotate; + } + static async createImage(bitmap, xref) { + const { + width, + height + } = bitmap; + const canvas = new OffscreenCanvas(width, height); + const ctx = canvas.getContext("2d", { + alpha: true + }); + ctx.drawImage(bitmap, 0, 0); + const data = ctx.getImageData(0, 0, width, height).data; + const buf32 = new Uint32Array(data.buffer); + const hasAlpha = buf32.some(_util.FeatureTest.isLittleEndian ? x => x >>> 24 !== 0xff : x => (x & 0xff) !== 0xff); + if (hasAlpha) { + ctx.fillStyle = "white"; + ctx.fillRect(0, 0, width, height); + ctx.drawImage(bitmap, 0, 0); + } + const jpegBufferPromise = canvas.convertToBlob({ + type: "image/jpeg", + quality: 1 + }).then(blob => { + return blob.arrayBuffer(); + }); + const xobjectName = _primitives.Name.get("XObject"); + const imageName = _primitives.Name.get("Image"); + const image = new _primitives.Dict(xref); + image.set("Type", xobjectName); + image.set("Subtype", imageName); + image.set("BitsPerComponent", 8); + image.set("ColorSpace", _primitives.Name.get("DeviceRGB")); + image.set("Filter", _primitives.Name.get("DCTDecode")); + image.set("BBox", [0, 0, width, height]); + image.set("Width", width); + image.set("Height", height); + let smaskStream = null; + if (hasAlpha) { + const alphaBuffer = new Uint8Array(buf32.length); + if (_util.FeatureTest.isLittleEndian) { + for (let i = 0, ii = buf32.length; i < ii; i++) { + alphaBuffer[i] = buf32[i] >>> 24; + } + } else { + for (let i = 0, ii = buf32.length; i < ii; i++) { + alphaBuffer[i] = buf32[i] & 0xff; + } + } + const smask = new _primitives.Dict(xref); + smask.set("Type", xobjectName); + smask.set("Subtype", imageName); + smask.set("BitsPerComponent", 8); + smask.set("ColorSpace", _primitives.Name.get("DeviceGray")); + smask.set("Width", width); + smask.set("Height", height); + smaskStream = new _stream.Stream(alphaBuffer, 0, 0, smask); + } + const imageStream = new _stream.Stream(await jpegBufferPromise, 0, 0, image); + return { + imageStream, + smaskStream, + width, + height + }; + } + static createNewDict(annotation, xref, { + apRef, + ap + }) { + const { + rect, + rotation, + user + } = annotation; + const stamp = new _primitives.Dict(xref); + stamp.set("Type", _primitives.Name.get("Annot")); + stamp.set("Subtype", _primitives.Name.get("Stamp")); + stamp.set("CreationDate", `D:${(0, _util.getModificationDate)()}`); + stamp.set("Rect", rect); + stamp.set("F", 4); + stamp.set("Border", [0, 0, 0]); + stamp.set("Rotate", rotation); + if (user) { + stamp.set("T", (0, _core_utils.isAscii)(user) ? user : (0, _core_utils.stringToUTF16String)(user, true)); + } + if (apRef || ap) { + const n = new _primitives.Dict(xref); + stamp.set("AP", n); + if (apRef) { + n.set("N", apRef); + } else { + n.set("N", ap); + } + } + return stamp; + } + static async createNewAppearanceStream(annotation, xref, params) { + const { + rotation + } = annotation; + const { + imageRef, + width, + height + } = params; + const resources = new _primitives.Dict(xref); + const xobject = new _primitives.Dict(xref); + resources.set("XObject", xobject); + xobject.set("Im0", imageRef); + const appearance = `q ${width} 0 0 ${height} 0 0 cm /Im0 Do Q`; + const appearanceStreamDict = new _primitives.Dict(xref); + appearanceStreamDict.set("FormType", 1); + appearanceStreamDict.set("Subtype", _primitives.Name.get("Form")); + appearanceStreamDict.set("Type", _primitives.Name.get("XObject")); + appearanceStreamDict.set("BBox", [0, 0, width, height]); + appearanceStreamDict.set("Resources", resources); + if (rotation) { + const matrix = (0, _core_utils.getRotationMatrix)(rotation, width, height); + appearanceStreamDict.set("Matrix", matrix); + } + const ap = new _stream.StringStream(appearance); + ap.dict = appearanceStreamDict; + return ap; + } +} +class FileAttachmentAnnotation extends MarkupAnnotation { + constructor(params) { + super(params); + const { + dict, + xref + } = params; + const file = new _file_spec.FileSpec(dict.get("FS"), xref); + this.data.annotationType = _util.AnnotationType.FILEATTACHMENT; + this.data.hasOwnCanvas = this.data.noRotate; + this.data.file = file.serializable; + const name = dict.get("Name"); + this.data.name = name instanceof _primitives.Name ? (0, _util.stringToPDFString)(name.name) : "PushPin"; + } +} + +/***/ }), +/* 11 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.FakeUnicodeFont = void 0; +exports.createDefaultAppearance = createDefaultAppearance; +exports.getPdfColor = getPdfColor; +exports.parseAppearanceStream = parseAppearanceStream; +exports.parseDefaultAppearance = parseDefaultAppearance; +var _primitives = __w_pdfjs_require__(4); +var _core_utils = __w_pdfjs_require__(3); +var _util = __w_pdfjs_require__(2); +var _colorspace = __w_pdfjs_require__(12); +var _evaluator = __w_pdfjs_require__(13); +var _stream = __w_pdfjs_require__(8); +class DefaultAppearanceEvaluator extends _evaluator.EvaluatorPreprocessor { + constructor(str) { + super(new _stream.StringStream(str)); + } + parse() { + const operation = { + fn: 0, + args: [] + }; + const result = { + fontSize: 0, + fontName: "", + fontColor: new Uint8ClampedArray(3) + }; + try { + while (true) { + operation.args.length = 0; + if (!this.read(operation)) { + break; + } + if (this.savedStatesDepth !== 0) { + continue; + } + const { + fn, + args + } = operation; + switch (fn | 0) { + case _util.OPS.setFont: + const [fontName, fontSize] = args; + if (fontName instanceof _primitives.Name) { + result.fontName = fontName.name; + } + if (typeof fontSize === "number" && fontSize > 0) { + result.fontSize = fontSize; + } + break; + case _util.OPS.setFillRGBColor: + _colorspace.ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0); + break; + case _util.OPS.setFillGray: + _colorspace.ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0); + break; + case _util.OPS.setFillColorSpace: + _colorspace.ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0); + break; + } + } + } catch (reason) { + (0, _util.warn)(`parseDefaultAppearance - ignoring errors: "${reason}".`); + } + return result; + } +} +function parseDefaultAppearance(str) { + return new DefaultAppearanceEvaluator(str).parse(); +} +class AppearanceStreamEvaluator extends _evaluator.EvaluatorPreprocessor { + constructor(stream) { + super(stream); + this.stream = stream; + } + parse() { + const operation = { + fn: 0, + args: [] + }; + let result = { + scaleFactor: 1, + fontSize: 0, + fontName: "", + fontColor: new Uint8ClampedArray(3) + }; + let breakLoop = false; + const stack = []; + try { + while (true) { + operation.args.length = 0; + if (breakLoop || !this.read(operation)) { + break; + } + const { + fn, + args + } = operation; + switch (fn | 0) { + case _util.OPS.save: + stack.push({ + scaleFactor: result.scaleFactor, + fontSize: result.fontSize, + fontName: result.fontName, + fontColor: result.fontColor.slice() + }); + break; + case _util.OPS.restore: + result = stack.pop() || result; + break; + case _util.OPS.setTextMatrix: + result.scaleFactor *= Math.hypot(args[0], args[1]); + break; + case _util.OPS.setFont: + const [fontName, fontSize] = args; + if (fontName instanceof _primitives.Name) { + result.fontName = fontName.name; + } + if (typeof fontSize === "number" && fontSize > 0) { + result.fontSize = fontSize * result.scaleFactor; + } + break; + case _util.OPS.setFillRGBColor: + _colorspace.ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0); + break; + case _util.OPS.setFillGray: + _colorspace.ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0); + break; + case _util.OPS.setFillColorSpace: + _colorspace.ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0); + break; + case _util.OPS.showText: + case _util.OPS.showSpacedText: + case _util.OPS.nextLineShowText: + case _util.OPS.nextLineSetSpacingShowText: + breakLoop = true; + break; + } + } + } catch (reason) { + (0, _util.warn)(`parseAppearanceStream - ignoring errors: "${reason}".`); + } + this.stream.reset(); + delete result.scaleFactor; + return result; + } +} +function parseAppearanceStream(stream) { + return new AppearanceStreamEvaluator(stream).parse(); +} +function getPdfColor(color, isFill) { + if (color[0] === color[1] && color[1] === color[2]) { + const gray = color[0] / 255; + return `${(0, _core_utils.numberToString)(gray)} ${isFill ? "g" : "G"}`; + } + return Array.from(color, c => (0, _core_utils.numberToString)(c / 255)).join(" ") + ` ${isFill ? "rg" : "RG"}`; +} +function createDefaultAppearance({ + fontSize, + fontName, + fontColor +}) { + return `/${(0, _core_utils.escapePDFName)(fontName)} ${fontSize} Tf ${getPdfColor(fontColor, true)}`; +} +class FakeUnicodeFont { + constructor(xref, fontFamily) { + this.xref = xref; + this.widths = null; + this.firstChar = Infinity; + this.lastChar = -Infinity; + this.fontFamily = fontFamily; + const canvas = new OffscreenCanvas(1, 1); + this.ctxMeasure = canvas.getContext("2d"); + if (!FakeUnicodeFont._fontNameId) { + FakeUnicodeFont._fontNameId = 1; + } + this.fontName = _primitives.Name.get(`InvalidPDFjsFont_${fontFamily}_${FakeUnicodeFont._fontNameId++}`); + } + get toUnicodeRef() { + if (!FakeUnicodeFont._toUnicodeRef) { + const toUnicode = `/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (Adobe) +/Ordering (UCS) /Supplement 0 >> def +/CMapName /Adobe-Identity-UCS def +/CMapType 2 def +1 begincodespacerange +<0000> +endcodespacerange +1 beginbfrange +<0000> <0000> +endbfrange +endcmap CMapName currentdict /CMap defineresource pop end end`; + const toUnicodeStream = FakeUnicodeFont.toUnicodeStream = new _stream.StringStream(toUnicode); + const toUnicodeDict = new _primitives.Dict(this.xref); + toUnicodeStream.dict = toUnicodeDict; + toUnicodeDict.set("Length", toUnicode.length); + FakeUnicodeFont._toUnicodeRef = this.xref.getNewPersistentRef(toUnicodeStream); + } + return FakeUnicodeFont._toUnicodeRef; + } + get fontDescriptorRef() { + if (!FakeUnicodeFont._fontDescriptorRef) { + const fontDescriptor = new _primitives.Dict(this.xref); + fontDescriptor.set("Type", _primitives.Name.get("FontDescriptor")); + fontDescriptor.set("FontName", this.fontName); + fontDescriptor.set("FontFamily", "MyriadPro Regular"); + fontDescriptor.set("FontBBox", [0, 0, 0, 0]); + fontDescriptor.set("FontStretch", _primitives.Name.get("Normal")); + fontDescriptor.set("FontWeight", 400); + fontDescriptor.set("ItalicAngle", 0); + FakeUnicodeFont._fontDescriptorRef = this.xref.getNewPersistentRef(fontDescriptor); + } + return FakeUnicodeFont._fontDescriptorRef; + } + get descendantFontRef() { + const descendantFont = new _primitives.Dict(this.xref); + descendantFont.set("BaseFont", this.fontName); + descendantFont.set("Type", _primitives.Name.get("Font")); + descendantFont.set("Subtype", _primitives.Name.get("CIDFontType0")); + descendantFont.set("CIDToGIDMap", _primitives.Name.get("Identity")); + descendantFont.set("FirstChar", this.firstChar); + descendantFont.set("LastChar", this.lastChar); + descendantFont.set("FontDescriptor", this.fontDescriptorRef); + descendantFont.set("DW", 1000); + const widths = []; + const chars = [...this.widths.entries()].sort(); + let currentChar = null; + let currentWidths = null; + for (const [char, width] of chars) { + if (!currentChar) { + currentChar = char; + currentWidths = [width]; + continue; + } + if (char === currentChar + currentWidths.length) { + currentWidths.push(width); + } else { + widths.push(currentChar, currentWidths); + currentChar = char; + currentWidths = [width]; + } + } + if (currentChar) { + widths.push(currentChar, currentWidths); + } + descendantFont.set("W", widths); + const cidSystemInfo = new _primitives.Dict(this.xref); + cidSystemInfo.set("Ordering", "Identity"); + cidSystemInfo.set("Registry", "Adobe"); + cidSystemInfo.set("Supplement", 0); + descendantFont.set("CIDSystemInfo", cidSystemInfo); + return this.xref.getNewPersistentRef(descendantFont); + } + get baseFontRef() { + const baseFont = new _primitives.Dict(this.xref); + baseFont.set("BaseFont", this.fontName); + baseFont.set("Type", _primitives.Name.get("Font")); + baseFont.set("Subtype", _primitives.Name.get("Type0")); + baseFont.set("Encoding", _primitives.Name.get("Identity-H")); + baseFont.set("DescendantFonts", [this.descendantFontRef]); + baseFont.set("ToUnicode", this.toUnicodeRef); + return this.xref.getNewPersistentRef(baseFont); + } + get resources() { + const resources = new _primitives.Dict(this.xref); + const font = new _primitives.Dict(this.xref); + font.set(this.fontName.name, this.baseFontRef); + resources.set("Font", font); + return resources; + } + _createContext() { + this.widths = new Map(); + this.ctxMeasure.font = `1000px ${this.fontFamily}`; + return this.ctxMeasure; + } + createFontResources(text) { + const ctx = this._createContext(); + for (const line of text.split(/\r\n?|\n/)) { + for (const char of line.split("")) { + const code = char.charCodeAt(0); + if (this.widths.has(code)) { + continue; + } + const metrics = ctx.measureText(char); + const width = Math.ceil(metrics.width); + this.widths.set(code, width); + this.firstChar = Math.min(code, this.firstChar); + this.lastChar = Math.max(code, this.lastChar); + } + } + return this.resources; + } + createAppearance(text, rect, rotation, fontSize, bgColor, strokeAlpha) { + const ctx = this._createContext(); + const lines = []; + let maxWidth = -Infinity; + for (const line of text.split(/\r\n?|\n/)) { + lines.push(line); + const lineWidth = ctx.measureText(line).width; + maxWidth = Math.max(maxWidth, lineWidth); + for (const char of line.split("")) { + const code = char.charCodeAt(0); + let width = this.widths.get(code); + if (width === undefined) { + const metrics = ctx.measureText(char); + width = Math.ceil(metrics.width); + this.widths.set(code, width); + this.firstChar = Math.min(code, this.firstChar); + this.lastChar = Math.max(code, this.lastChar); + } + } + } + maxWidth *= fontSize / 1000; + const [x1, y1, x2, y2] = rect; + let w = x2 - x1; + let h = y2 - y1; + if (rotation % 180 !== 0) { + [w, h] = [h, w]; + } + let hscale = 1; + if (maxWidth > w) { + hscale = w / maxWidth; + } + let vscale = 1; + const lineHeight = _util.LINE_FACTOR * fontSize; + const lineDescent = _util.LINE_DESCENT_FACTOR * fontSize; + const maxHeight = lineHeight * lines.length; + if (maxHeight > h) { + vscale = h / maxHeight; + } + const fscale = Math.min(hscale, vscale); + const newFontSize = fontSize * fscale; + const buffer = ["q", `0 0 ${(0, _core_utils.numberToString)(w)} ${(0, _core_utils.numberToString)(h)} re W n`, `BT`, `1 0 0 1 0 ${(0, _core_utils.numberToString)(h + lineDescent)} Tm 0 Tc ${getPdfColor(bgColor, true)}`, `/${this.fontName.name} ${(0, _core_utils.numberToString)(newFontSize)} Tf`]; + const { + resources + } = this; + strokeAlpha = typeof strokeAlpha === "number" && strokeAlpha >= 0 && strokeAlpha <= 1 ? strokeAlpha : 1; + if (strokeAlpha !== 1) { + buffer.push("/R0 gs"); + const extGState = new _primitives.Dict(this.xref); + const r0 = new _primitives.Dict(this.xref); + r0.set("ca", strokeAlpha); + r0.set("CA", strokeAlpha); + r0.set("Type", _primitives.Name.get("ExtGState")); + extGState.set("R0", r0); + resources.set("ExtGState", extGState); + } + const vShift = (0, _core_utils.numberToString)(lineHeight); + for (const line of lines) { + buffer.push(`0 -${vShift} Td <${(0, _core_utils.stringToUTF16HexString)(line)}> Tj`); + } + buffer.push("ET", "Q"); + const appearance = buffer.join("\n"); + const appearanceStreamDict = new _primitives.Dict(this.xref); + appearanceStreamDict.set("Subtype", _primitives.Name.get("Form")); + appearanceStreamDict.set("Type", _primitives.Name.get("XObject")); + appearanceStreamDict.set("BBox", [0, 0, w, h]); + appearanceStreamDict.set("Length", appearance.length); + appearanceStreamDict.set("Resources", resources); + if (rotation) { + const matrix = (0, _core_utils.getRotationMatrix)(rotation, w, h); + appearanceStreamDict.set("Matrix", matrix); + } + const ap = new _stream.StringStream(appearance); + ap.dict = appearanceStreamDict; + return ap; + } +} +exports.FakeUnicodeFont = FakeUnicodeFont; + +/***/ }), +/* 12 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ColorSpace = void 0; +var _util = __w_pdfjs_require__(2); +var _primitives = __w_pdfjs_require__(4); +var _base_stream = __w_pdfjs_require__(5); +var _core_utils = __w_pdfjs_require__(3); +function resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) { + const COMPONENTS = 3; + alpha01 = alpha01 !== 1 ? 0 : alpha01; + const xRatio = w1 / w2; + const yRatio = h1 / h2; + let newIndex = 0, + oldIndex; + const xScaled = new Uint16Array(w2); + const w1Scanline = w1 * COMPONENTS; + for (let i = 0; i < w2; i++) { + xScaled[i] = Math.floor(i * xRatio) * COMPONENTS; + } + for (let i = 0; i < h2; i++) { + const py = Math.floor(i * yRatio) * w1Scanline; + for (let j = 0; j < w2; j++) { + oldIndex = py + xScaled[j]; + dest[newIndex++] = src[oldIndex++]; + dest[newIndex++] = src[oldIndex++]; + dest[newIndex++] = src[oldIndex++]; + newIndex += alpha01; + } + } +} +class ColorSpace { + constructor(name, numComps) { + if (this.constructor === ColorSpace) { + (0, _util.unreachable)("Cannot initialize ColorSpace."); + } + this.name = name; + this.numComps = numComps; + } + getRgb(src, srcOffset) { + const rgb = new Uint8ClampedArray(3); + this.getRgbItem(src, srcOffset, rgb, 0); + return rgb; + } + getRgbItem(src, srcOffset, dest, destOffset) { + (0, _util.unreachable)("Should not call ColorSpace.getRgbItem"); + } + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + (0, _util.unreachable)("Should not call ColorSpace.getRgbBuffer"); + } + getOutputLength(inputLength, alpha01) { + (0, _util.unreachable)("Should not call ColorSpace.getOutputLength"); + } + isPassthrough(bits) { + return false; + } + isDefaultDecode(decodeMap, bpc) { + return ColorSpace.isDefaultDecode(decodeMap, this.numComps); + } + fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) { + const count = originalWidth * originalHeight; + let rgbBuf = null; + const numComponentColors = 1 << bpc; + const needsResizing = originalHeight !== height || originalWidth !== width; + if (this.isPassthrough(bpc)) { + rgbBuf = comps; + } else if (this.numComps === 1 && count > numComponentColors && this.name !== "DeviceGray" && this.name !== "DeviceRGB") { + const allColors = bpc <= 8 ? new Uint8Array(numComponentColors) : new Uint16Array(numComponentColors); + for (let i = 0; i < numComponentColors; i++) { + allColors[i] = i; + } + const colorMap = new Uint8ClampedArray(numComponentColors * 3); + this.getRgbBuffer(allColors, 0, numComponentColors, colorMap, 0, bpc, 0); + if (!needsResizing) { + let destPos = 0; + for (let i = 0; i < count; ++i) { + const key = comps[i] * 3; + dest[destPos++] = colorMap[key]; + dest[destPos++] = colorMap[key + 1]; + dest[destPos++] = colorMap[key + 2]; + destPos += alpha01; + } + } else { + rgbBuf = new Uint8Array(count * 3); + let rgbPos = 0; + for (let i = 0; i < count; ++i) { + const key = comps[i] * 3; + rgbBuf[rgbPos++] = colorMap[key]; + rgbBuf[rgbPos++] = colorMap[key + 1]; + rgbBuf[rgbPos++] = colorMap[key + 2]; + } + } + } else { + if (!needsResizing) { + this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, alpha01); + } else { + rgbBuf = new Uint8ClampedArray(count * 3); + this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, 0); + } + } + if (rgbBuf) { + if (needsResizing) { + resizeRgbImage(rgbBuf, dest, originalWidth, originalHeight, width, height, alpha01); + } else { + let destPos = 0, + rgbPos = 0; + for (let i = 0, ii = width * actualHeight; i < ii; i++) { + dest[destPos++] = rgbBuf[rgbPos++]; + dest[destPos++] = rgbBuf[rgbPos++]; + dest[destPos++] = rgbBuf[rgbPos++]; + destPos += alpha01; + } + } + } + } + get usesZeroToOneRange() { + return (0, _util.shadow)(this, "usesZeroToOneRange", true); + } + static _cache(cacheKey, xref, localColorSpaceCache, parsedColorSpace) { + if (!localColorSpaceCache) { + throw new Error('ColorSpace._cache - expected "localColorSpaceCache" argument.'); + } + if (!parsedColorSpace) { + throw new Error('ColorSpace._cache - expected "parsedColorSpace" argument.'); + } + let csName, csRef; + if (cacheKey instanceof _primitives.Ref) { + csRef = cacheKey; + cacheKey = xref.fetch(cacheKey); + } + if (cacheKey instanceof _primitives.Name) { + csName = cacheKey.name; + } + if (csName || csRef) { + localColorSpaceCache.set(csName, csRef, parsedColorSpace); + } + } + static getCached(cacheKey, xref, localColorSpaceCache) { + if (!localColorSpaceCache) { + throw new Error('ColorSpace.getCached - expected "localColorSpaceCache" argument.'); + } + if (cacheKey instanceof _primitives.Ref) { + const localColorSpace = localColorSpaceCache.getByRef(cacheKey); + if (localColorSpace) { + return localColorSpace; + } + try { + cacheKey = xref.fetch(cacheKey); + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + } + } + if (cacheKey instanceof _primitives.Name) { + const localColorSpace = localColorSpaceCache.getByName(cacheKey.name); + if (localColorSpace) { + return localColorSpace; + } + } + return null; + } + static async parseAsync({ + cs, + xref, + resources = null, + pdfFunctionFactory, + localColorSpaceCache + }) { + const parsedColorSpace = this._parse(cs, xref, resources, pdfFunctionFactory); + this._cache(cs, xref, localColorSpaceCache, parsedColorSpace); + return parsedColorSpace; + } + static parse({ + cs, + xref, + resources = null, + pdfFunctionFactory, + localColorSpaceCache + }) { + const cachedColorSpace = this.getCached(cs, xref, localColorSpaceCache); + if (cachedColorSpace) { + return cachedColorSpace; + } + const parsedColorSpace = this._parse(cs, xref, resources, pdfFunctionFactory); + this._cache(cs, xref, localColorSpaceCache, parsedColorSpace); + return parsedColorSpace; + } + static _parse(cs, xref, resources = null, pdfFunctionFactory) { + cs = xref.fetchIfRef(cs); + if (cs instanceof _primitives.Name) { + switch (cs.name) { + case "G": + case "DeviceGray": + return this.singletons.gray; + case "RGB": + case "DeviceRGB": + return this.singletons.rgb; + case "CMYK": + case "DeviceCMYK": + return this.singletons.cmyk; + case "Pattern": + return new PatternCS(null); + default: + if (resources instanceof _primitives.Dict) { + const colorSpaces = resources.get("ColorSpace"); + if (colorSpaces instanceof _primitives.Dict) { + const resourcesCS = colorSpaces.get(cs.name); + if (resourcesCS) { + if (resourcesCS instanceof _primitives.Name) { + return this._parse(resourcesCS, xref, resources, pdfFunctionFactory); + } + cs = resourcesCS; + break; + } + } + } + throw new _util.FormatError(`Unrecognized ColorSpace: ${cs.name}`); + } + } + if (Array.isArray(cs)) { + const mode = xref.fetchIfRef(cs[0]).name; + let params, numComps, baseCS, whitePoint, blackPoint, gamma; + switch (mode) { + case "G": + case "DeviceGray": + return this.singletons.gray; + case "RGB": + case "DeviceRGB": + return this.singletons.rgb; + case "CMYK": + case "DeviceCMYK": + return this.singletons.cmyk; + case "CalGray": + params = xref.fetchIfRef(cs[1]); + whitePoint = params.getArray("WhitePoint"); + blackPoint = params.getArray("BlackPoint"); + gamma = params.get("Gamma"); + return new CalGrayCS(whitePoint, blackPoint, gamma); + case "CalRGB": + params = xref.fetchIfRef(cs[1]); + whitePoint = params.getArray("WhitePoint"); + blackPoint = params.getArray("BlackPoint"); + gamma = params.getArray("Gamma"); + const matrix = params.getArray("Matrix"); + return new CalRGBCS(whitePoint, blackPoint, gamma, matrix); + case "ICCBased": + const stream = xref.fetchIfRef(cs[1]); + const dict = stream.dict; + numComps = dict.get("N"); + const alt = dict.get("Alternate"); + if (alt) { + const altCS = this._parse(alt, xref, resources, pdfFunctionFactory); + if (altCS.numComps === numComps) { + return altCS; + } + (0, _util.warn)("ICCBased color space: Ignoring incorrect /Alternate entry."); + } + if (numComps === 1) { + return this.singletons.gray; + } else if (numComps === 3) { + return this.singletons.rgb; + } else if (numComps === 4) { + return this.singletons.cmyk; + } + break; + case "Pattern": + baseCS = cs[1] || null; + if (baseCS) { + baseCS = this._parse(baseCS, xref, resources, pdfFunctionFactory); + } + return new PatternCS(baseCS); + case "I": + case "Indexed": + baseCS = this._parse(cs[1], xref, resources, pdfFunctionFactory); + const hiVal = xref.fetchIfRef(cs[2]) + 1; + const lookup = xref.fetchIfRef(cs[3]); + return new IndexedCS(baseCS, hiVal, lookup); + case "Separation": + case "DeviceN": + const name = xref.fetchIfRef(cs[1]); + numComps = Array.isArray(name) ? name.length : 1; + baseCS = this._parse(cs[2], xref, resources, pdfFunctionFactory); + const tintFn = pdfFunctionFactory.create(cs[3]); + return new AlternateCS(numComps, baseCS, tintFn); + case "Lab": + params = xref.fetchIfRef(cs[1]); + whitePoint = params.getArray("WhitePoint"); + blackPoint = params.getArray("BlackPoint"); + const range = params.getArray("Range"); + return new LabCS(whitePoint, blackPoint, range); + default: + throw new _util.FormatError(`Unimplemented ColorSpace object: ${mode}`); + } + } + throw new _util.FormatError(`Unrecognized ColorSpace object: ${cs}`); + } + static isDefaultDecode(decode, numComps) { + if (!Array.isArray(decode)) { + return true; + } + if (numComps * 2 !== decode.length) { + (0, _util.warn)("The decode map is not the correct length"); + return true; + } + for (let i = 0, ii = decode.length; i < ii; i += 2) { + if (decode[i] !== 0 || decode[i + 1] !== 1) { + return false; + } + } + return true; + } + static get singletons() { + return (0, _util.shadow)(this, "singletons", { + get gray() { + return (0, _util.shadow)(this, "gray", new DeviceGrayCS()); + }, + get rgb() { + return (0, _util.shadow)(this, "rgb", new DeviceRgbCS()); + }, + get cmyk() { + return (0, _util.shadow)(this, "cmyk", new DeviceCmykCS()); + } + }); + } +} +exports.ColorSpace = ColorSpace; +class AlternateCS extends ColorSpace { + constructor(numComps, base, tintFn) { + super("Alternate", numComps); + this.base = base; + this.tintFn = tintFn; + this.tmpBuf = new Float32Array(base.numComps); + } + getRgbItem(src, srcOffset, dest, destOffset) { + const tmpBuf = this.tmpBuf; + this.tintFn(src, srcOffset, tmpBuf, 0); + this.base.getRgbItem(tmpBuf, 0, dest, destOffset); + } + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + const tintFn = this.tintFn; + const base = this.base; + const scale = 1 / ((1 << bits) - 1); + const baseNumComps = base.numComps; + const usesZeroToOneRange = base.usesZeroToOneRange; + const isPassthrough = (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0; + let pos = isPassthrough ? destOffset : 0; + const baseBuf = isPassthrough ? dest : new Uint8ClampedArray(baseNumComps * count); + const numComps = this.numComps; + const scaled = new Float32Array(numComps); + const tinted = new Float32Array(baseNumComps); + let i, j; + for (i = 0; i < count; i++) { + for (j = 0; j < numComps; j++) { + scaled[j] = src[srcOffset++] * scale; + } + tintFn(scaled, 0, tinted, 0); + if (usesZeroToOneRange) { + for (j = 0; j < baseNumComps; j++) { + baseBuf[pos++] = tinted[j] * 255; + } + } else { + base.getRgbItem(tinted, 0, baseBuf, pos); + pos += baseNumComps; + } + } + if (!isPassthrough) { + base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01); + } + } + getOutputLength(inputLength, alpha01) { + return this.base.getOutputLength(inputLength * this.base.numComps / this.numComps, alpha01); + } +} +class PatternCS extends ColorSpace { + constructor(baseCS) { + super("Pattern", null); + this.base = baseCS; + } + isDefaultDecode(decodeMap, bpc) { + (0, _util.unreachable)("Should not call PatternCS.isDefaultDecode"); + } +} +class IndexedCS extends ColorSpace { + constructor(base, highVal, lookup) { + super("Indexed", 1); + this.base = base; + this.highVal = highVal; + const length = base.numComps * highVal; + this.lookup = new Uint8Array(length); + if (lookup instanceof _base_stream.BaseStream) { + const bytes = lookup.getBytes(length); + this.lookup.set(bytes); + } else if (typeof lookup === "string") { + for (let i = 0; i < length; ++i) { + this.lookup[i] = lookup.charCodeAt(i) & 0xff; + } + } else { + throw new _util.FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`); + } + } + getRgbItem(src, srcOffset, dest, destOffset) { + const numComps = this.base.numComps; + const start = src[srcOffset] * numComps; + this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0); + } + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + const base = this.base; + const numComps = base.numComps; + const outputDelta = base.getOutputLength(numComps, alpha01); + const lookup = this.lookup; + for (let i = 0; i < count; ++i) { + const lookupPos = src[srcOffset++] * numComps; + base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01); + destOffset += outputDelta; + } + } + getOutputLength(inputLength, alpha01) { + return this.base.getOutputLength(inputLength * this.base.numComps, alpha01); + } + isDefaultDecode(decodeMap, bpc) { + if (!Array.isArray(decodeMap)) { + return true; + } + if (decodeMap.length !== 2) { + (0, _util.warn)("Decode map length is not correct"); + return true; + } + if (!Number.isInteger(bpc) || bpc < 1) { + (0, _util.warn)("Bits per component is not correct"); + return true; + } + return decodeMap[0] === 0 && decodeMap[1] === (1 << bpc) - 1; + } +} +class DeviceGrayCS extends ColorSpace { + constructor() { + super("DeviceGray", 1); + } + getRgbItem(src, srcOffset, dest, destOffset) { + const c = src[srcOffset] * 255; + dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c; + } + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + const scale = 255 / ((1 << bits) - 1); + let j = srcOffset, + q = destOffset; + for (let i = 0; i < count; ++i) { + const c = scale * src[j++]; + dest[q++] = c; + dest[q++] = c; + dest[q++] = c; + q += alpha01; + } + } + getOutputLength(inputLength, alpha01) { + return inputLength * (3 + alpha01); + } +} +class DeviceRgbCS extends ColorSpace { + constructor() { + super("DeviceRGB", 3); + } + getRgbItem(src, srcOffset, dest, destOffset) { + dest[destOffset] = src[srcOffset] * 255; + dest[destOffset + 1] = src[srcOffset + 1] * 255; + dest[destOffset + 2] = src[srcOffset + 2] * 255; + } + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + if (bits === 8 && alpha01 === 0) { + dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset); + return; + } + const scale = 255 / ((1 << bits) - 1); + let j = srcOffset, + q = destOffset; + for (let i = 0; i < count; ++i) { + dest[q++] = scale * src[j++]; + dest[q++] = scale * src[j++]; + dest[q++] = scale * src[j++]; + q += alpha01; + } + } + getOutputLength(inputLength, alpha01) { + return inputLength * (3 + alpha01) / 3 | 0; + } + isPassthrough(bits) { + return bits === 8; + } +} +const DeviceCmykCS = function DeviceCmykCSClosure() { + function convertToRgb(src, srcOffset, srcScale, dest, destOffset) { + const c = src[srcOffset] * srcScale; + const m = src[srcOffset + 1] * srcScale; + const y = src[srcOffset + 2] * srcScale; + const k = src[srcOffset + 3] * srcScale; + dest[destOffset] = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k + -285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y + -17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) + k * (-21.86122147463605 * k - 189.48180835922747); + dest[destOffset + 1] = 255 + c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k + -79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) + k * (-20.737325471181034 * k - 187.80453709719578); + dest[destOffset + 2] = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k + -14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k + -193.58209356861505) + k * (-22.33816807309886 * k - 180.12613974708367); + } + class DeviceCmykCS extends ColorSpace { + constructor() { + super("DeviceCMYK", 4); + } + getRgbItem(src, srcOffset, dest, destOffset) { + convertToRgb(src, srcOffset, 1, dest, destOffset); + } + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + const scale = 1 / ((1 << bits) - 1); + for (let i = 0; i < count; i++) { + convertToRgb(src, srcOffset, scale, dest, destOffset); + srcOffset += 4; + destOffset += 3 + alpha01; + } + } + getOutputLength(inputLength, alpha01) { + return inputLength / 4 * (3 + alpha01) | 0; + } + } + return DeviceCmykCS; +}(); +const CalGrayCS = function CalGrayCSClosure() { + function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) { + const A = src[srcOffset] * scale; + const AG = A ** cs.G; + const L = cs.YW * AG; + const val = Math.max(295.8 * L ** 0.3333333333333333 - 40.8, 0); + dest[destOffset] = val; + dest[destOffset + 1] = val; + dest[destOffset + 2] = val; + } + class CalGrayCS extends ColorSpace { + constructor(whitePoint, blackPoint, gamma) { + super("CalGray", 1); + if (!whitePoint) { + throw new _util.FormatError("WhitePoint missing - required for color space CalGray"); + } + blackPoint ||= [0, 0, 0]; + gamma ||= 1; + this.XW = whitePoint[0]; + this.YW = whitePoint[1]; + this.ZW = whitePoint[2]; + this.XB = blackPoint[0]; + this.YB = blackPoint[1]; + this.ZB = blackPoint[2]; + this.G = gamma; + if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) { + throw new _util.FormatError(`Invalid WhitePoint components for ${this.name}` + ", no fallback available"); + } + if (this.XB < 0 || this.YB < 0 || this.ZB < 0) { + (0, _util.info)(`Invalid BlackPoint for ${this.name}, falling back to default.`); + this.XB = this.YB = this.ZB = 0; + } + if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) { + (0, _util.warn)(`${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` + `ZB: ${this.ZB}, only default values are supported.`); + } + if (this.G < 1) { + (0, _util.info)(`Invalid Gamma: ${this.G} for ${this.name}, ` + "falling back to default."); + this.G = 1; + } + } + getRgbItem(src, srcOffset, dest, destOffset) { + convertToRgb(this, src, srcOffset, dest, destOffset, 1); + } + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + const scale = 1 / ((1 << bits) - 1); + for (let i = 0; i < count; ++i) { + convertToRgb(this, src, srcOffset, dest, destOffset, scale); + srcOffset += 1; + destOffset += 3 + alpha01; + } + } + getOutputLength(inputLength, alpha01) { + return inputLength * (3 + alpha01); + } + } + return CalGrayCS; +}(); +const CalRGBCS = function CalRGBCSClosure() { + const BRADFORD_SCALE_MATRIX = new Float32Array([0.8951, 0.2664, -0.1614, -0.7502, 1.7135, 0.0367, 0.0389, -0.0685, 1.0296]); + const BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([0.9869929, -0.1470543, 0.1599627, 0.4323053, 0.5183603, 0.0492912, -0.0085287, 0.0400428, 0.9684867]); + const SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([3.2404542, -1.5371385, -0.4985314, -0.9692660, 1.8760108, 0.0415560, 0.0556434, -0.2040259, 1.0572252]); + const FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]); + const tempNormalizeMatrix = new Float32Array(3); + const tempConvertMatrix1 = new Float32Array(3); + const tempConvertMatrix2 = new Float32Array(3); + const DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0; + function matrixProduct(a, b, result) { + result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; + result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2]; + result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2]; + } + function convertToFlat(sourceWhitePoint, LMS, result) { + result[0] = LMS[0] * 1 / sourceWhitePoint[0]; + result[1] = LMS[1] * 1 / sourceWhitePoint[1]; + result[2] = LMS[2] * 1 / sourceWhitePoint[2]; + } + function convertToD65(sourceWhitePoint, LMS, result) { + const D65X = 0.95047; + const D65Y = 1; + const D65Z = 1.08883; + result[0] = LMS[0] * D65X / sourceWhitePoint[0]; + result[1] = LMS[1] * D65Y / sourceWhitePoint[1]; + result[2] = LMS[2] * D65Z / sourceWhitePoint[2]; + } + function sRGBTransferFunction(color) { + if (color <= 0.0031308) { + return adjustToRange(0, 1, 12.92 * color); + } + if (color >= 0.99554525) { + return 1; + } + return adjustToRange(0, 1, (1 + 0.055) * color ** (1 / 2.4) - 0.055); + } + function adjustToRange(min, max, value) { + return Math.max(min, Math.min(max, value)); + } + function decodeL(L) { + if (L < 0) { + return -decodeL(-L); + } + if (L > 8.0) { + return ((L + 16) / 116) ** 3; + } + return L * DECODE_L_CONSTANT; + } + function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) { + if (sourceBlackPoint[0] === 0 && sourceBlackPoint[1] === 0 && sourceBlackPoint[2] === 0) { + result[0] = XYZ_Flat[0]; + result[1] = XYZ_Flat[1]; + result[2] = XYZ_Flat[2]; + return; + } + const zeroDecodeL = decodeL(0); + const X_DST = zeroDecodeL; + const X_SRC = decodeL(sourceBlackPoint[0]); + const Y_DST = zeroDecodeL; + const Y_SRC = decodeL(sourceBlackPoint[1]); + const Z_DST = zeroDecodeL; + const Z_SRC = decodeL(sourceBlackPoint[2]); + const X_Scale = (1 - X_DST) / (1 - X_SRC); + const X_Offset = 1 - X_Scale; + const Y_Scale = (1 - Y_DST) / (1 - Y_SRC); + const Y_Offset = 1 - Y_Scale; + const Z_Scale = (1 - Z_DST) / (1 - Z_SRC); + const Z_Offset = 1 - Z_Scale; + result[0] = XYZ_Flat[0] * X_Scale + X_Offset; + result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset; + result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset; + } + function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) { + if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) { + result[0] = XYZ_In[0]; + result[1] = XYZ_In[1]; + result[2] = XYZ_In[2]; + return; + } + const LMS = result; + matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS); + const LMS_Flat = tempNormalizeMatrix; + convertToFlat(sourceWhitePoint, LMS, LMS_Flat); + matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result); + } + function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) { + const LMS = result; + matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS); + const LMS_D65 = tempNormalizeMatrix; + convertToD65(sourceWhitePoint, LMS, LMS_D65); + matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result); + } + function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) { + const A = adjustToRange(0, 1, src[srcOffset] * scale); + const B = adjustToRange(0, 1, src[srcOffset + 1] * scale); + const C = adjustToRange(0, 1, src[srcOffset + 2] * scale); + const AGR = A === 1 ? 1 : A ** cs.GR; + const BGG = B === 1 ? 1 : B ** cs.GG; + const CGB = C === 1 ? 1 : C ** cs.GB; + const X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB; + const Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB; + const Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB; + const XYZ = tempConvertMatrix1; + XYZ[0] = X; + XYZ[1] = Y; + XYZ[2] = Z; + const XYZ_Flat = tempConvertMatrix2; + normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat); + const XYZ_Black = tempConvertMatrix1; + compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black); + const XYZ_D65 = tempConvertMatrix2; + normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65); + const SRGB = tempConvertMatrix1; + matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB); + dest[destOffset] = sRGBTransferFunction(SRGB[0]) * 255; + dest[destOffset + 1] = sRGBTransferFunction(SRGB[1]) * 255; + dest[destOffset + 2] = sRGBTransferFunction(SRGB[2]) * 255; + } + class CalRGBCS extends ColorSpace { + constructor(whitePoint, blackPoint, gamma, matrix) { + super("CalRGB", 3); + if (!whitePoint) { + throw new _util.FormatError("WhitePoint missing - required for color space CalRGB"); + } + blackPoint ||= new Float32Array(3); + gamma ||= new Float32Array([1, 1, 1]); + matrix ||= new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]); + const XW = whitePoint[0]; + const YW = whitePoint[1]; + const ZW = whitePoint[2]; + this.whitePoint = whitePoint; + const XB = blackPoint[0]; + const YB = blackPoint[1]; + const ZB = blackPoint[2]; + this.blackPoint = blackPoint; + this.GR = gamma[0]; + this.GG = gamma[1]; + this.GB = gamma[2]; + this.MXA = matrix[0]; + this.MYA = matrix[1]; + this.MZA = matrix[2]; + this.MXB = matrix[3]; + this.MYB = matrix[4]; + this.MZB = matrix[5]; + this.MXC = matrix[6]; + this.MYC = matrix[7]; + this.MZC = matrix[8]; + if (XW < 0 || ZW < 0 || YW !== 1) { + throw new _util.FormatError(`Invalid WhitePoint components for ${this.name}` + ", no fallback available"); + } + if (XB < 0 || YB < 0 || ZB < 0) { + (0, _util.info)(`Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` + "falling back to default."); + this.blackPoint = new Float32Array(3); + } + if (this.GR < 0 || this.GG < 0 || this.GB < 0) { + (0, _util.info)(`Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` + `${this.name}, falling back to default.`); + this.GR = this.GG = this.GB = 1; + } + } + getRgbItem(src, srcOffset, dest, destOffset) { + convertToRgb(this, src, srcOffset, dest, destOffset, 1); + } + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + const scale = 1 / ((1 << bits) - 1); + for (let i = 0; i < count; ++i) { + convertToRgb(this, src, srcOffset, dest, destOffset, scale); + srcOffset += 3; + destOffset += 3 + alpha01; + } + } + getOutputLength(inputLength, alpha01) { + return inputLength * (3 + alpha01) / 3 | 0; + } + } + return CalRGBCS; +}(); +const LabCS = function LabCSClosure() { + function fn_g(x) { + let result; + if (x >= 6 / 29) { + result = x ** 3; + } else { + result = 108 / 841 * (x - 4 / 29); + } + return result; + } + function decode(value, high1, low2, high2) { + return low2 + value * (high2 - low2) / high1; + } + function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) { + let Ls = src[srcOffset]; + let as = src[srcOffset + 1]; + let bs = src[srcOffset + 2]; + if (maxVal !== false) { + Ls = decode(Ls, maxVal, 0, 100); + as = decode(as, maxVal, cs.amin, cs.amax); + bs = decode(bs, maxVal, cs.bmin, cs.bmax); + } + if (as > cs.amax) { + as = cs.amax; + } else if (as < cs.amin) { + as = cs.amin; + } + if (bs > cs.bmax) { + bs = cs.bmax; + } else if (bs < cs.bmin) { + bs = cs.bmin; + } + const M = (Ls + 16) / 116; + const L = M + as / 500; + const N = M - bs / 200; + const X = cs.XW * fn_g(L); + const Y = cs.YW * fn_g(M); + const Z = cs.ZW * fn_g(N); + let r, g, b; + if (cs.ZW < 1) { + r = X * 3.1339 + Y * -1.617 + Z * -0.4906; + g = X * -0.9785 + Y * 1.916 + Z * 0.0333; + b = X * 0.072 + Y * -0.229 + Z * 1.4057; + } else { + r = X * 3.2406 + Y * -1.5372 + Z * -0.4986; + g = X * -0.9689 + Y * 1.8758 + Z * 0.0415; + b = X * 0.0557 + Y * -0.204 + Z * 1.057; + } + dest[destOffset] = Math.sqrt(r) * 255; + dest[destOffset + 1] = Math.sqrt(g) * 255; + dest[destOffset + 2] = Math.sqrt(b) * 255; + } + class LabCS extends ColorSpace { + constructor(whitePoint, blackPoint, range) { + super("Lab", 3); + if (!whitePoint) { + throw new _util.FormatError("WhitePoint missing - required for color space Lab"); + } + blackPoint ||= [0, 0, 0]; + range ||= [-100, 100, -100, 100]; + this.XW = whitePoint[0]; + this.YW = whitePoint[1]; + this.ZW = whitePoint[2]; + this.amin = range[0]; + this.amax = range[1]; + this.bmin = range[2]; + this.bmax = range[3]; + this.XB = blackPoint[0]; + this.YB = blackPoint[1]; + this.ZB = blackPoint[2]; + if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) { + throw new _util.FormatError("Invalid WhitePoint components, no fallback available"); + } + if (this.XB < 0 || this.YB < 0 || this.ZB < 0) { + (0, _util.info)("Invalid BlackPoint, falling back to default"); + this.XB = this.YB = this.ZB = 0; + } + if (this.amin > this.amax || this.bmin > this.bmax) { + (0, _util.info)("Invalid Range, falling back to defaults"); + this.amin = -100; + this.amax = 100; + this.bmin = -100; + this.bmax = 100; + } + } + getRgbItem(src, srcOffset, dest, destOffset) { + convertToRgb(this, src, srcOffset, false, dest, destOffset); + } + getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + const maxVal = (1 << bits) - 1; + for (let i = 0; i < count; i++) { + convertToRgb(this, src, srcOffset, maxVal, dest, destOffset); + srcOffset += 3; + destOffset += 3 + alpha01; + } + } + getOutputLength(inputLength, alpha01) { + return inputLength * (3 + alpha01) / 3 | 0; + } + isDefaultDecode(decodeMap, bpc) { + return true; + } + get usesZeroToOneRange() { + return (0, _util.shadow)(this, "usesZeroToOneRange", false); + } + } + return LabCS; +}(); + +/***/ }), +/* 13 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PartialEvaluator = exports.EvaluatorPreprocessor = void 0; +var _util = __w_pdfjs_require__(2); +var _cmap = __w_pdfjs_require__(14); +var _primitives = __w_pdfjs_require__(4); +var _fonts = __w_pdfjs_require__(34); +var _encodings = __w_pdfjs_require__(37); +var _standard_fonts = __w_pdfjs_require__(41); +var _pattern = __w_pdfjs_require__(50); +var _xfa_fonts = __w_pdfjs_require__(51); +var _to_unicode_map = __w_pdfjs_require__(42); +var _function = __w_pdfjs_require__(57); +var _parser = __w_pdfjs_require__(16); +var _image_utils = __w_pdfjs_require__(59); +var _stream = __w_pdfjs_require__(8); +var _base_stream = __w_pdfjs_require__(5); +var _bidi = __w_pdfjs_require__(60); +var _colorspace = __w_pdfjs_require__(12); +var _decode_stream = __w_pdfjs_require__(18); +var _fonts_utils = __w_pdfjs_require__(38); +var _font_substitutions = __w_pdfjs_require__(61); +var _glyphlist = __w_pdfjs_require__(39); +var _core_utils = __w_pdfjs_require__(3); +var _metrics = __w_pdfjs_require__(45); +var _unicode = __w_pdfjs_require__(40); +var _image_resizer = __w_pdfjs_require__(62); +var _murmurhash = __w_pdfjs_require__(63); +var _operator_list = __w_pdfjs_require__(64); +var _image = __w_pdfjs_require__(65); +const DefaultPartialEvaluatorOptions = Object.freeze({ + maxImageSize: -1, + disableFontFace: false, + ignoreErrors: false, + isEvalSupported: true, + isOffscreenCanvasSupported: false, + canvasMaxAreaInBytes: -1, + fontExtraProperties: false, + useSystemFonts: true, + cMapUrl: null, + standardFontDataUrl: null +}); +const PatternType = { + TILING: 1, + SHADING: 2 +}; +const TEXT_CHUNK_BATCH_SIZE = 10; +const deferred = Promise.resolve(); +function normalizeBlendMode(value, parsingArray = false) { + if (Array.isArray(value)) { + for (const val of value) { + const maybeBM = normalizeBlendMode(val, true); + if (maybeBM) { + return maybeBM; + } + } + (0, _util.warn)(`Unsupported blend mode Array: ${value}`); + return "source-over"; + } + if (!(value instanceof _primitives.Name)) { + if (parsingArray) { + return null; + } + return "source-over"; + } + switch (value.name) { + case "Normal": + case "Compatible": + return "source-over"; + case "Multiply": + return "multiply"; + case "Screen": + return "screen"; + case "Overlay": + return "overlay"; + case "Darken": + return "darken"; + case "Lighten": + return "lighten"; + case "ColorDodge": + return "color-dodge"; + case "ColorBurn": + return "color-burn"; + case "HardLight": + return "hard-light"; + case "SoftLight": + return "soft-light"; + case "Difference": + return "difference"; + case "Exclusion": + return "exclusion"; + case "Hue": + return "hue"; + case "Saturation": + return "saturation"; + case "Color": + return "color"; + case "Luminosity": + return "luminosity"; + } + if (parsingArray) { + return null; + } + (0, _util.warn)(`Unsupported blend mode: ${value.name}`); + return "source-over"; +} +function incrementCachedImageMaskCount(data) { + if (data.fn === _util.OPS.paintImageMaskXObject && data.args[0]?.count > 0) { + data.args[0].count++; + } +} +class TimeSlotManager { + static TIME_SLOT_DURATION_MS = 20; + static CHECK_TIME_EVERY = 100; + constructor() { + this.reset(); + } + check() { + if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) { + return false; + } + this.checked = 0; + return this.endTime <= Date.now(); + } + reset() { + this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS; + this.checked = 0; + } +} +class PartialEvaluator { + constructor({ + xref, + handler, + pageIndex, + idFactory, + fontCache, + builtInCMapCache, + standardFontDataCache, + globalImageCache, + systemFontCache, + options = null + }) { + this.xref = xref; + this.handler = handler; + this.pageIndex = pageIndex; + this.idFactory = idFactory; + this.fontCache = fontCache; + this.builtInCMapCache = builtInCMapCache; + this.standardFontDataCache = standardFontDataCache; + this.globalImageCache = globalImageCache; + this.systemFontCache = systemFontCache; + this.options = options || DefaultPartialEvaluatorOptions; + this.parsingType3Font = false; + this._regionalImageCache = new _image_utils.RegionalImageCache(); + this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this); + _image_resizer.ImageResizer.setMaxArea(this.options.canvasMaxAreaInBytes); + } + get _pdfFunctionFactory() { + const pdfFunctionFactory = new _function.PDFFunctionFactory({ + xref: this.xref, + isEvalSupported: this.options.isEvalSupported + }); + return (0, _util.shadow)(this, "_pdfFunctionFactory", pdfFunctionFactory); + } + clone(newOptions = null) { + const newEvaluator = Object.create(this); + newEvaluator.options = Object.assign(Object.create(null), this.options, newOptions); + return newEvaluator; + } + hasBlendModes(resources, nonBlendModesSet) { + if (!(resources instanceof _primitives.Dict)) { + return false; + } + if (resources.objId && nonBlendModesSet.has(resources.objId)) { + return false; + } + const processed = new _primitives.RefSet(nonBlendModesSet); + if (resources.objId) { + processed.put(resources.objId); + } + const nodes = [resources], + xref = this.xref; + while (nodes.length) { + const node = nodes.shift(); + const graphicStates = node.get("ExtGState"); + if (graphicStates instanceof _primitives.Dict) { + for (let graphicState of graphicStates.getRawValues()) { + if (graphicState instanceof _primitives.Ref) { + if (processed.has(graphicState)) { + continue; + } + try { + graphicState = xref.fetch(graphicState); + } catch (ex) { + processed.put(graphicState); + (0, _util.info)(`hasBlendModes - ignoring ExtGState: "${ex}".`); + continue; + } + } + if (!(graphicState instanceof _primitives.Dict)) { + continue; + } + if (graphicState.objId) { + processed.put(graphicState.objId); + } + const bm = graphicState.get("BM"); + if (bm instanceof _primitives.Name) { + if (bm.name !== "Normal") { + return true; + } + continue; + } + if (bm !== undefined && Array.isArray(bm)) { + for (const element of bm) { + if (element instanceof _primitives.Name && element.name !== "Normal") { + return true; + } + } + } + } + } + const xObjects = node.get("XObject"); + if (!(xObjects instanceof _primitives.Dict)) { + continue; + } + for (let xObject of xObjects.getRawValues()) { + if (xObject instanceof _primitives.Ref) { + if (processed.has(xObject)) { + continue; + } + try { + xObject = xref.fetch(xObject); + } catch (ex) { + processed.put(xObject); + (0, _util.info)(`hasBlendModes - ignoring XObject: "${ex}".`); + continue; + } + } + if (!(xObject instanceof _base_stream.BaseStream)) { + continue; + } + if (xObject.dict.objId) { + processed.put(xObject.dict.objId); + } + const xResources = xObject.dict.get("Resources"); + if (!(xResources instanceof _primitives.Dict)) { + continue; + } + if (xResources.objId && processed.has(xResources.objId)) { + continue; + } + nodes.push(xResources); + if (xResources.objId) { + processed.put(xResources.objId); + } + } + } + for (const ref of processed) { + nonBlendModesSet.put(ref); + } + return false; + } + async fetchBuiltInCMap(name) { + const cachedData = this.builtInCMapCache.get(name); + if (cachedData) { + return cachedData; + } + let data; + if (this.options.cMapUrl !== null) { + const url = `${this.options.cMapUrl}${name}.bcmap`; + const response = await fetch(url); + if (!response.ok) { + throw new Error(`fetchBuiltInCMap: failed to fetch file "${url}" with "${response.statusText}".`); + } + data = { + cMapData: new Uint8Array(await response.arrayBuffer()), + compressionType: _util.CMapCompressionType.BINARY + }; + } else { + data = await this.handler.sendWithPromise("FetchBuiltInCMap", { + name + }); + } + if (data.compressionType !== _util.CMapCompressionType.NONE) { + this.builtInCMapCache.set(name, data); + } + return data; + } + async fetchStandardFontData(name) { + const cachedData = this.standardFontDataCache.get(name); + if (cachedData) { + return new _stream.Stream(cachedData); + } + if (this.options.useSystemFonts && name !== "Symbol" && name !== "ZapfDingbats") { + return null; + } + const standardFontNameToFileName = (0, _standard_fonts.getFontNameToFileMap)(), + filename = standardFontNameToFileName[name]; + let data; + if (this.options.standardFontDataUrl !== null) { + const url = `${this.options.standardFontDataUrl}${filename}`; + const response = await fetch(url); + if (!response.ok) { + (0, _util.warn)(`fetchStandardFontData: failed to fetch file "${url}" with "${response.statusText}".`); + } else { + data = await response.arrayBuffer(); + } + } else { + try { + data = await this.handler.sendWithPromise("FetchStandardFontData", { + filename + }); + } catch (e) { + (0, _util.warn)(`fetchStandardFontData: failed to fetch file "${filename}" with "${e}".`); + } + } + if (!data) { + return null; + } + this.standardFontDataCache.set(name, data); + return new _stream.Stream(data); + } + async buildFormXObject(resources, xobj, smask, operatorList, task, initialState, localColorSpaceCache) { + const dict = xobj.dict; + const matrix = dict.getArray("Matrix"); + let bbox = dict.getArray("BBox"); + if (Array.isArray(bbox) && bbox.length === 4) { + bbox = _util.Util.normalizeRect(bbox); + } else { + bbox = null; + } + let optionalContent, groupOptions; + if (dict.has("OC")) { + optionalContent = await this.parseMarkedContentProps(dict.get("OC"), resources); + } + if (optionalContent !== undefined) { + operatorList.addOp(_util.OPS.beginMarkedContentProps, ["OC", optionalContent]); + } + const group = dict.get("Group"); + if (group) { + groupOptions = { + matrix, + bbox, + smask, + isolated: false, + knockout: false + }; + const groupSubtype = group.get("S"); + let colorSpace = null; + if ((0, _primitives.isName)(groupSubtype, "Transparency")) { + groupOptions.isolated = group.get("I") || false; + groupOptions.knockout = group.get("K") || false; + if (group.has("CS")) { + const cs = group.getRaw("CS"); + const cachedColorSpace = _colorspace.ColorSpace.getCached(cs, this.xref, localColorSpaceCache); + if (cachedColorSpace) { + colorSpace = cachedColorSpace; + } else { + colorSpace = await this.parseColorSpace({ + cs, + resources, + localColorSpaceCache + }); + } + } + } + if (smask?.backdrop) { + colorSpace ||= _colorspace.ColorSpace.singletons.rgb; + smask.backdrop = colorSpace.getRgb(smask.backdrop, 0); + } + operatorList.addOp(_util.OPS.beginGroup, [groupOptions]); + } + const args = group ? [matrix, null] : [matrix, bbox]; + operatorList.addOp(_util.OPS.paintFormXObjectBegin, args); + return this.getOperatorList({ + stream: xobj, + task, + resources: dict.get("Resources") || resources, + operatorList, + initialState + }).then(function () { + operatorList.addOp(_util.OPS.paintFormXObjectEnd, []); + if (group) { + operatorList.addOp(_util.OPS.endGroup, [groupOptions]); + } + if (optionalContent !== undefined) { + operatorList.addOp(_util.OPS.endMarkedContent, []); + } + }); + } + _sendImgData(objId, imgData, cacheGlobally = false) { + const transfers = imgData ? [imgData.bitmap || imgData.data.buffer] : null; + if (this.parsingType3Font || cacheGlobally) { + return this.handler.send("commonobj", [objId, "Image", imgData], transfers); + } + return this.handler.send("obj", [objId, this.pageIndex, "Image", imgData], transfers); + } + async buildPaintImageXObject({ + resources, + image, + isInline = false, + operatorList, + cacheKey, + localImageCache, + localColorSpaceCache + }) { + const dict = image.dict; + const imageRef = dict.objId; + const w = dict.get("W", "Width"); + const h = dict.get("H", "Height"); + if (!(w && typeof w === "number") || !(h && typeof h === "number")) { + (0, _util.warn)("Image dimensions are missing, or not numbers."); + return; + } + const maxImageSize = this.options.maxImageSize; + if (maxImageSize !== -1 && w * h > maxImageSize) { + const msg = "Image exceeded maximum allowed size and was removed."; + if (this.options.ignoreErrors) { + (0, _util.warn)(msg); + return; + } + throw new Error(msg); + } + let optionalContent; + if (dict.has("OC")) { + optionalContent = await this.parseMarkedContentProps(dict.get("OC"), resources); + } + const imageMask = dict.get("IM", "ImageMask") || false; + let imgData, args; + if (imageMask) { + const interpolate = dict.get("I", "Interpolate"); + const bitStrideLength = w + 7 >> 3; + const imgArray = image.getBytes(bitStrideLength * h); + const decode = dict.getArray("D", "Decode"); + if (this.parsingType3Font) { + imgData = _image.PDFImage.createRawMask({ + imgArray, + width: w, + height: h, + imageIsFromDecodeStream: image instanceof _decode_stream.DecodeStream, + inverseDecode: decode?.[0] > 0, + interpolate + }); + imgData.cached = !!cacheKey; + args = [imgData]; + operatorList.addImageOps(_util.OPS.paintImageMaskXObject, args, optionalContent); + if (cacheKey) { + const cacheData = { + fn: _util.OPS.paintImageMaskXObject, + args, + optionalContent + }; + localImageCache.set(cacheKey, imageRef, cacheData); + if (imageRef) { + this._regionalImageCache.set(null, imageRef, cacheData); + } + } + return; + } + imgData = await _image.PDFImage.createMask({ + imgArray, + width: w, + height: h, + imageIsFromDecodeStream: image instanceof _decode_stream.DecodeStream, + inverseDecode: decode?.[0] > 0, + interpolate, + isOffscreenCanvasSupported: this.options.isOffscreenCanvasSupported + }); + if (imgData.isSingleOpaquePixel) { + operatorList.addImageOps(_util.OPS.paintSolidColorImageMask, [], optionalContent); + if (cacheKey) { + const cacheData = { + fn: _util.OPS.paintSolidColorImageMask, + args: [], + optionalContent + }; + localImageCache.set(cacheKey, imageRef, cacheData); + if (imageRef) { + this._regionalImageCache.set(null, imageRef, cacheData); + } + } + return; + } + const objId = `mask_${this.idFactory.createObjId()}`; + operatorList.addDependency(objId); + this._sendImgData(objId, imgData); + args = [{ + data: objId, + width: imgData.width, + height: imgData.height, + interpolate: imgData.interpolate, + count: 1 + }]; + operatorList.addImageOps(_util.OPS.paintImageMaskXObject, args, optionalContent); + if (cacheKey) { + const cacheData = { + fn: _util.OPS.paintImageMaskXObject, + args, + optionalContent + }; + localImageCache.set(cacheKey, imageRef, cacheData); + if (imageRef) { + this._regionalImageCache.set(null, imageRef, cacheData); + } + } + return; + } + const SMALL_IMAGE_DIMENSIONS = 200; + if (isInline && !dict.has("SMask") && !dict.has("Mask") && w + h < SMALL_IMAGE_DIMENSIONS) { + const imageObj = new _image.PDFImage({ + xref: this.xref, + res: resources, + image, + isInline, + pdfFunctionFactory: this._pdfFunctionFactory, + localColorSpaceCache + }); + imgData = await imageObj.createImageData(true, false); + operatorList.isOffscreenCanvasSupported = this.options.isOffscreenCanvasSupported; + operatorList.addImageOps(_util.OPS.paintInlineImageXObject, [imgData], optionalContent); + return; + } + let objId = `img_${this.idFactory.createObjId()}`, + cacheGlobally = false; + if (this.parsingType3Font) { + objId = `${this.idFactory.getDocId()}_type3_${objId}`; + } else if (imageRef) { + cacheGlobally = this.globalImageCache.shouldCache(imageRef, this.pageIndex); + if (cacheGlobally) { + objId = `${this.idFactory.getDocId()}_${objId}`; + } + } + operatorList.addDependency(objId); + args = [objId, w, h]; + _image.PDFImage.buildImage({ + xref: this.xref, + res: resources, + image, + isInline, + pdfFunctionFactory: this._pdfFunctionFactory, + localColorSpaceCache + }).then(async imageObj => { + imgData = await imageObj.createImageData(false, this.options.isOffscreenCanvasSupported); + if (cacheKey && imageRef && cacheGlobally) { + let length = 0; + if (imgData.bitmap) { + length = imgData.width * imgData.height * 4; + } else { + length = imgData.data.length; + } + this.globalImageCache.addByteSize(imageRef, length); + } + return this._sendImgData(objId, imgData, cacheGlobally); + }).catch(reason => { + (0, _util.warn)(`Unable to decode image "${objId}": "${reason}".`); + return this._sendImgData(objId, null, cacheGlobally); + }); + operatorList.addImageOps(_util.OPS.paintImageXObject, args, optionalContent); + if (cacheKey) { + const cacheData = { + fn: _util.OPS.paintImageXObject, + args, + optionalContent + }; + localImageCache.set(cacheKey, imageRef, cacheData); + if (imageRef) { + this._regionalImageCache.set(null, imageRef, cacheData); + if (cacheGlobally) { + (0, _util.assert)(!isInline, "Cannot cache an inline image globally."); + this.globalImageCache.setData(imageRef, { + objId, + fn: _util.OPS.paintImageXObject, + args, + optionalContent, + byteSize: 0 + }); + } + } + } + } + handleSMask(smask, resources, operatorList, task, stateManager, localColorSpaceCache) { + const smaskContent = smask.get("G"); + const smaskOptions = { + subtype: smask.get("S").name, + backdrop: smask.get("BC") + }; + const transferObj = smask.get("TR"); + if ((0, _function.isPDFFunction)(transferObj)) { + const transferFn = this._pdfFunctionFactory.create(transferObj); + const transferMap = new Uint8Array(256); + const tmp = new Float32Array(1); + for (let i = 0; i < 256; i++) { + tmp[0] = i / 255; + transferFn(tmp, 0, tmp, 0); + transferMap[i] = tmp[0] * 255 | 0; + } + smaskOptions.transferMap = transferMap; + } + return this.buildFormXObject(resources, smaskContent, smaskOptions, operatorList, task, stateManager.state.clone(), localColorSpaceCache); + } + handleTransferFunction(tr) { + let transferArray; + if (Array.isArray(tr)) { + transferArray = tr; + } else if ((0, _function.isPDFFunction)(tr)) { + transferArray = [tr]; + } else { + return null; + } + const transferMaps = []; + let numFns = 0, + numEffectfulFns = 0; + for (const entry of transferArray) { + const transferObj = this.xref.fetchIfRef(entry); + numFns++; + if ((0, _primitives.isName)(transferObj, "Identity")) { + transferMaps.push(null); + continue; + } else if (!(0, _function.isPDFFunction)(transferObj)) { + return null; + } + const transferFn = this._pdfFunctionFactory.create(transferObj); + const transferMap = new Uint8Array(256), + tmp = new Float32Array(1); + for (let j = 0; j < 256; j++) { + tmp[0] = j / 255; + transferFn(tmp, 0, tmp, 0); + transferMap[j] = tmp[0] * 255 | 0; + } + transferMaps.push(transferMap); + numEffectfulFns++; + } + if (!(numFns === 1 || numFns === 4)) { + return null; + } + if (numEffectfulFns === 0) { + return null; + } + return transferMaps; + } + handleTilingType(fn, color, resources, pattern, patternDict, operatorList, task, localTilingPatternCache) { + const tilingOpList = new _operator_list.OperatorList(); + const patternResources = _primitives.Dict.merge({ + xref: this.xref, + dictArray: [patternDict.get("Resources"), resources] + }); + return this.getOperatorList({ + stream: pattern, + task, + resources: patternResources, + operatorList: tilingOpList + }).then(function () { + const operatorListIR = tilingOpList.getIR(); + const tilingPatternIR = (0, _pattern.getTilingPatternIR)(operatorListIR, patternDict, color); + operatorList.addDependencies(tilingOpList.dependencies); + operatorList.addOp(fn, tilingPatternIR); + if (patternDict.objId) { + localTilingPatternCache.set(null, patternDict.objId, { + operatorListIR, + dict: patternDict + }); + } + }).catch(reason => { + if (reason instanceof _util.AbortException) { + return; + } + if (this.options.ignoreErrors) { + (0, _util.warn)(`handleTilingType - ignoring pattern: "${reason}".`); + return; + } + throw reason; + }); + } + handleSetFont(resources, fontArgs, fontRef, operatorList, task, state, fallbackFontDict = null, cssFontInfo = null) { + const fontName = fontArgs?.[0] instanceof _primitives.Name ? fontArgs[0].name : null; + return this.loadFont(fontName, fontRef, resources, fallbackFontDict, cssFontInfo).then(translated => { + if (!translated.font.isType3Font) { + return translated; + } + return translated.loadType3Data(this, resources, task).then(function () { + operatorList.addDependencies(translated.type3Dependencies); + return translated; + }).catch(reason => { + return new TranslatedFont({ + loadedName: "g_font_error", + font: new _fonts.ErrorFont(`Type3 font load error: ${reason}`), + dict: translated.font, + evaluatorOptions: this.options + }); + }); + }).then(translated => { + state.font = translated.font; + translated.send(this.handler); + return translated.loadedName; + }); + } + handleText(chars, state) { + const font = state.font; + const glyphs = font.charsToGlyphs(chars); + if (font.data) { + const isAddToPathSet = !!(state.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG); + if (isAddToPathSet || state.fillColorSpace.name === "Pattern" || font.disableFontFace || this.options.disableFontFace) { + PartialEvaluator.buildFontPaths(font, glyphs, this.handler, this.options); + } + } + return glyphs; + } + ensureStateFont(state) { + if (state.font) { + return; + } + const reason = new _util.FormatError("Missing setFont (Tf) operator before text rendering operator."); + if (this.options.ignoreErrors) { + (0, _util.warn)(`ensureStateFont: "${reason}".`); + return; + } + throw reason; + } + async setGState({ + resources, + gState, + operatorList, + cacheKey, + task, + stateManager, + localGStateCache, + localColorSpaceCache + }) { + const gStateRef = gState.objId; + let isSimpleGState = true; + const gStateObj = []; + let promise = Promise.resolve(); + for (const key of gState.getKeys()) { + const value = gState.get(key); + switch (key) { + case "Type": + break; + case "LW": + case "LC": + case "LJ": + case "ML": + case "D": + case "RI": + case "FL": + case "CA": + case "ca": + gStateObj.push([key, value]); + break; + case "Font": + isSimpleGState = false; + promise = promise.then(() => { + return this.handleSetFont(resources, null, value[0], operatorList, task, stateManager.state).then(function (loadedName) { + operatorList.addDependency(loadedName); + gStateObj.push([key, [loadedName, value[1]]]); + }); + }); + break; + case "BM": + gStateObj.push([key, normalizeBlendMode(value)]); + break; + case "SMask": + if ((0, _primitives.isName)(value, "None")) { + gStateObj.push([key, false]); + break; + } + if (value instanceof _primitives.Dict) { + isSimpleGState = false; + promise = promise.then(() => { + return this.handleSMask(value, resources, operatorList, task, stateManager, localColorSpaceCache); + }); + gStateObj.push([key, true]); + } else { + (0, _util.warn)("Unsupported SMask type"); + } + break; + case "TR": + const transferMaps = this.handleTransferFunction(value); + gStateObj.push([key, transferMaps]); + break; + case "OP": + case "op": + case "OPM": + case "BG": + case "BG2": + case "UCR": + case "UCR2": + case "TR2": + case "HT": + case "SM": + case "SA": + case "AIS": + case "TK": + (0, _util.info)("graphic state operator " + key); + break; + default: + (0, _util.info)("Unknown graphic state operator " + key); + break; + } + } + return promise.then(function () { + if (gStateObj.length > 0) { + operatorList.addOp(_util.OPS.setGState, [gStateObj]); + } + if (isSimpleGState) { + localGStateCache.set(cacheKey, gStateRef, gStateObj); + } + }); + } + loadFont(fontName, font, resources, fallbackFontDict = null, cssFontInfo = null) { + const errorFont = async () => { + return new TranslatedFont({ + loadedName: "g_font_error", + font: new _fonts.ErrorFont(`Font "${fontName}" is not available.`), + dict: font, + evaluatorOptions: this.options + }); + }; + let fontRef; + if (font) { + if (font instanceof _primitives.Ref) { + fontRef = font; + } + } else { + const fontRes = resources.get("Font"); + if (fontRes) { + fontRef = fontRes.getRaw(fontName); + } + } + if (fontRef) { + if (this.parsingType3Font && this.type3FontRefs.has(fontRef)) { + return errorFont(); + } + if (this.fontCache.has(fontRef)) { + return this.fontCache.get(fontRef); + } + font = this.xref.fetchIfRef(fontRef); + } + if (!(font instanceof _primitives.Dict)) { + if (!this.options.ignoreErrors && !this.parsingType3Font) { + (0, _util.warn)(`Font "${fontName}" is not available.`); + return errorFont(); + } + (0, _util.warn)(`Font "${fontName}" is not available -- attempting to fallback to a default font.`); + font = fallbackFontDict || PartialEvaluator.fallbackFontDict; + } + if (font.cacheKey && this.fontCache.has(font.cacheKey)) { + return this.fontCache.get(font.cacheKey); + } + const fontCapability = new _util.PromiseCapability(); + let preEvaluatedFont; + try { + preEvaluatedFont = this.preEvaluateFont(font); + preEvaluatedFont.cssFontInfo = cssFontInfo; + } catch (reason) { + (0, _util.warn)(`loadFont - preEvaluateFont failed: "${reason}".`); + return errorFont(); + } + const { + descriptor, + hash + } = preEvaluatedFont; + const fontRefIsRef = fontRef instanceof _primitives.Ref; + let fontID; + if (hash && descriptor instanceof _primitives.Dict) { + const fontAliases = descriptor.fontAliases ||= Object.create(null); + if (fontAliases[hash]) { + const aliasFontRef = fontAliases[hash].aliasRef; + if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) { + this.fontCache.putAlias(fontRef, aliasFontRef); + return this.fontCache.get(fontRef); + } + } else { + fontAliases[hash] = { + fontID: this.idFactory.createFontId() + }; + } + if (fontRefIsRef) { + fontAliases[hash].aliasRef = fontRef; + } + fontID = fontAliases[hash].fontID; + } else { + fontID = this.idFactory.createFontId(); + } + (0, _util.assert)(fontID?.startsWith("f"), 'The "fontID" must be (correctly) defined.'); + if (fontRefIsRef) { + this.fontCache.put(fontRef, fontCapability.promise); + } else { + font.cacheKey = `cacheKey_${fontID}`; + this.fontCache.put(font.cacheKey, fontCapability.promise); + } + font.loadedName = `${this.idFactory.getDocId()}_${fontID}`; + this.translateFont(preEvaluatedFont).then(translatedFont => { + fontCapability.resolve(new TranslatedFont({ + loadedName: font.loadedName, + font: translatedFont, + dict: font, + evaluatorOptions: this.options + })); + }).catch(reason => { + (0, _util.warn)(`loadFont - translateFont failed: "${reason}".`); + fontCapability.resolve(new TranslatedFont({ + loadedName: font.loadedName, + font: new _fonts.ErrorFont(reason instanceof Error ? reason.message : reason), + dict: font, + evaluatorOptions: this.options + })); + }); + return fontCapability.promise; + } + buildPath(operatorList, fn, args, parsingText = false) { + const lastIndex = operatorList.length - 1; + if (!args) { + args = []; + } + if (lastIndex < 0 || operatorList.fnArray[lastIndex] !== _util.OPS.constructPath) { + if (parsingText) { + (0, _util.warn)(`Encountered path operator "${fn}" inside of a text object.`); + operatorList.addOp(_util.OPS.save, null); + } + let minMax; + switch (fn) { + case _util.OPS.rectangle: + const x = args[0] + args[2]; + const y = args[1] + args[3]; + minMax = [Math.min(args[0], x), Math.max(args[0], x), Math.min(args[1], y), Math.max(args[1], y)]; + break; + case _util.OPS.moveTo: + case _util.OPS.lineTo: + minMax = [args[0], args[0], args[1], args[1]]; + break; + default: + minMax = [Infinity, -Infinity, Infinity, -Infinity]; + break; + } + operatorList.addOp(_util.OPS.constructPath, [[fn], args, minMax]); + if (parsingText) { + operatorList.addOp(_util.OPS.restore, null); + } + } else { + const opArgs = operatorList.argsArray[lastIndex]; + opArgs[0].push(fn); + opArgs[1].push(...args); + const minMax = opArgs[2]; + switch (fn) { + case _util.OPS.rectangle: + const x = args[0] + args[2]; + const y = args[1] + args[3]; + minMax[0] = Math.min(minMax[0], args[0], x); + minMax[1] = Math.max(minMax[1], args[0], x); + minMax[2] = Math.min(minMax[2], args[1], y); + minMax[3] = Math.max(minMax[3], args[1], y); + break; + case _util.OPS.moveTo: + case _util.OPS.lineTo: + minMax[0] = Math.min(minMax[0], args[0]); + minMax[1] = Math.max(minMax[1], args[0]); + minMax[2] = Math.min(minMax[2], args[1]); + minMax[3] = Math.max(minMax[3], args[1]); + break; + } + } + } + parseColorSpace({ + cs, + resources, + localColorSpaceCache + }) { + return _colorspace.ColorSpace.parseAsync({ + cs, + xref: this.xref, + resources, + pdfFunctionFactory: this._pdfFunctionFactory, + localColorSpaceCache + }).catch(reason => { + if (reason instanceof _util.AbortException) { + return null; + } + if (this.options.ignoreErrors) { + (0, _util.warn)(`parseColorSpace - ignoring ColorSpace: "${reason}".`); + return null; + } + throw reason; + }); + } + parseShading({ + shading, + resources, + localColorSpaceCache, + localShadingPatternCache + }) { + let id = localShadingPatternCache.get(shading); + if (!id) { + var shadingFill = _pattern.Pattern.parseShading(shading, this.xref, resources, this._pdfFunctionFactory, localColorSpaceCache); + const patternIR = shadingFill.getIR(); + id = `pattern_${this.idFactory.createObjId()}`; + if (this.parsingType3Font) { + id = `${this.idFactory.getDocId()}_type3_${id}`; + } + localShadingPatternCache.set(shading, id); + if (this.parsingType3Font) { + this.handler.send("commonobj", [id, "Pattern", patternIR]); + } else { + this.handler.send("obj", [id, this.pageIndex, "Pattern", patternIR]); + } + } + return id; + } + handleColorN(operatorList, fn, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache) { + const patternName = args.pop(); + if (patternName instanceof _primitives.Name) { + const rawPattern = patterns.getRaw(patternName.name); + const localTilingPattern = rawPattern instanceof _primitives.Ref && localTilingPatternCache.getByRef(rawPattern); + if (localTilingPattern) { + try { + const color = cs.base ? cs.base.getRgb(args, 0) : null; + const tilingPatternIR = (0, _pattern.getTilingPatternIR)(localTilingPattern.operatorListIR, localTilingPattern.dict, color); + operatorList.addOp(fn, tilingPatternIR); + return undefined; + } catch {} + } + const pattern = this.xref.fetchIfRef(rawPattern); + if (pattern) { + const dict = pattern instanceof _base_stream.BaseStream ? pattern.dict : pattern; + const typeNum = dict.get("PatternType"); + if (typeNum === PatternType.TILING) { + const color = cs.base ? cs.base.getRgb(args, 0) : null; + return this.handleTilingType(fn, color, resources, pattern, dict, operatorList, task, localTilingPatternCache); + } else if (typeNum === PatternType.SHADING) { + const shading = dict.get("Shading"); + const matrix = dict.getArray("Matrix"); + const objId = this.parseShading({ + shading, + resources, + localColorSpaceCache, + localShadingPatternCache + }); + operatorList.addOp(fn, ["Shading", objId, matrix]); + return undefined; + } + throw new _util.FormatError(`Unknown PatternType: ${typeNum}`); + } + } + throw new _util.FormatError(`Unknown PatternName: ${patternName}`); + } + _parseVisibilityExpression(array, nestingCounter, currentResult) { + const MAX_NESTING = 10; + if (++nestingCounter > MAX_NESTING) { + (0, _util.warn)("Visibility expression is too deeply nested"); + return; + } + const length = array.length; + const operator = this.xref.fetchIfRef(array[0]); + if (length < 2 || !(operator instanceof _primitives.Name)) { + (0, _util.warn)("Invalid visibility expression"); + return; + } + switch (operator.name) { + case "And": + case "Or": + case "Not": + currentResult.push(operator.name); + break; + default: + (0, _util.warn)(`Invalid operator ${operator.name} in visibility expression`); + return; + } + for (let i = 1; i < length; i++) { + const raw = array[i]; + const object = this.xref.fetchIfRef(raw); + if (Array.isArray(object)) { + const nestedResult = []; + currentResult.push(nestedResult); + this._parseVisibilityExpression(object, nestingCounter, nestedResult); + } else if (raw instanceof _primitives.Ref) { + currentResult.push(raw.toString()); + } + } + } + async parseMarkedContentProps(contentProperties, resources) { + let optionalContent; + if (contentProperties instanceof _primitives.Name) { + const properties = resources.get("Properties"); + optionalContent = properties.get(contentProperties.name); + } else if (contentProperties instanceof _primitives.Dict) { + optionalContent = contentProperties; + } else { + throw new _util.FormatError("Optional content properties malformed."); + } + const optionalContentType = optionalContent.get("Type").name; + if (optionalContentType === "OCG") { + return { + type: optionalContentType, + id: optionalContent.objId + }; + } else if (optionalContentType === "OCMD") { + const expression = optionalContent.get("VE"); + if (Array.isArray(expression)) { + const result = []; + this._parseVisibilityExpression(expression, 0, result); + if (result.length > 0) { + return { + type: "OCMD", + expression: result + }; + } + } + const optionalContentGroups = optionalContent.get("OCGs"); + if (Array.isArray(optionalContentGroups) || optionalContentGroups instanceof _primitives.Dict) { + const groupIds = []; + if (Array.isArray(optionalContentGroups)) { + for (const ocg of optionalContentGroups) { + groupIds.push(ocg.toString()); + } + } else { + groupIds.push(optionalContentGroups.objId); + } + return { + type: optionalContentType, + ids: groupIds, + policy: optionalContent.get("P") instanceof _primitives.Name ? optionalContent.get("P").name : null, + expression: null + }; + } else if (optionalContentGroups instanceof _primitives.Ref) { + return { + type: optionalContentType, + id: optionalContentGroups.toString() + }; + } + } + return null; + } + getOperatorList({ + stream, + task, + resources, + operatorList, + initialState = null, + fallbackFontDict = null + }) { + resources ||= _primitives.Dict.empty; + initialState ||= new EvalState(); + if (!operatorList) { + throw new Error('getOperatorList: missing "operatorList" parameter'); + } + const self = this; + const xref = this.xref; + let parsingText = false; + const localImageCache = new _image_utils.LocalImageCache(); + const localColorSpaceCache = new _image_utils.LocalColorSpaceCache(); + const localGStateCache = new _image_utils.LocalGStateCache(); + const localTilingPatternCache = new _image_utils.LocalTilingPatternCache(); + const localShadingPatternCache = new Map(); + const xobjs = resources.get("XObject") || _primitives.Dict.empty; + const patterns = resources.get("Pattern") || _primitives.Dict.empty; + const stateManager = new StateManager(initialState); + const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager); + const timeSlotManager = new TimeSlotManager(); + function closePendingRestoreOPS(argument) { + for (let i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) { + operatorList.addOp(_util.OPS.restore, []); + } + } + return new Promise(function promiseBody(resolve, reject) { + const next = function (promise) { + Promise.all([promise, operatorList.ready]).then(function () { + try { + promiseBody(resolve, reject); + } catch (ex) { + reject(ex); + } + }, reject); + }; + task.ensureNotTerminated(); + timeSlotManager.reset(); + const operation = {}; + let stop, i, ii, cs, name, isValidName; + while (!(stop = timeSlotManager.check())) { + operation.args = null; + if (!preprocessor.read(operation)) { + break; + } + let args = operation.args; + let fn = operation.fn; + switch (fn | 0) { + case _util.OPS.paintXObject: + isValidName = args[0] instanceof _primitives.Name; + name = args[0].name; + if (isValidName) { + const localImage = localImageCache.getByName(name); + if (localImage) { + operatorList.addImageOps(localImage.fn, localImage.args, localImage.optionalContent); + incrementCachedImageMaskCount(localImage); + args = null; + continue; + } + } + next(new Promise(function (resolveXObject, rejectXObject) { + if (!isValidName) { + throw new _util.FormatError("XObject must be referred to by name."); + } + let xobj = xobjs.getRaw(name); + if (xobj instanceof _primitives.Ref) { + const localImage = localImageCache.getByRef(xobj) || self._regionalImageCache.getByRef(xobj); + if (localImage) { + operatorList.addImageOps(localImage.fn, localImage.args, localImage.optionalContent); + incrementCachedImageMaskCount(localImage); + resolveXObject(); + return; + } + const globalImage = self.globalImageCache.getData(xobj, self.pageIndex); + if (globalImage) { + operatorList.addDependency(globalImage.objId); + operatorList.addImageOps(globalImage.fn, globalImage.args, globalImage.optionalContent); + resolveXObject(); + return; + } + xobj = xref.fetch(xobj); + } + if (!(xobj instanceof _base_stream.BaseStream)) { + throw new _util.FormatError("XObject should be a stream"); + } + const type = xobj.dict.get("Subtype"); + if (!(type instanceof _primitives.Name)) { + throw new _util.FormatError("XObject should have a Name subtype"); + } + if (type.name === "Form") { + stateManager.save(); + self.buildFormXObject(resources, xobj, null, operatorList, task, stateManager.state.clone(), localColorSpaceCache).then(function () { + stateManager.restore(); + resolveXObject(); + }, rejectXObject); + return; + } else if (type.name === "Image") { + self.buildPaintImageXObject({ + resources, + image: xobj, + operatorList, + cacheKey: name, + localImageCache, + localColorSpaceCache + }).then(resolveXObject, rejectXObject); + return; + } else if (type.name === "PS") { + (0, _util.info)("Ignored XObject subtype PS"); + } else { + throw new _util.FormatError(`Unhandled XObject subtype ${type.name}`); + } + resolveXObject(); + }).catch(function (reason) { + if (reason instanceof _util.AbortException) { + return; + } + if (self.options.ignoreErrors) { + (0, _util.warn)(`getOperatorList - ignoring XObject: "${reason}".`); + return; + } + throw reason; + })); + return; + case _util.OPS.setFont: + var fontSize = args[1]; + next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state, fallbackFontDict).then(function (loadedName) { + operatorList.addDependency(loadedName); + operatorList.addOp(_util.OPS.setFont, [loadedName, fontSize]); + })); + return; + case _util.OPS.beginText: + parsingText = true; + break; + case _util.OPS.endText: + parsingText = false; + break; + case _util.OPS.endInlineImage: + var cacheKey = args[0].cacheKey; + if (cacheKey) { + const localImage = localImageCache.getByName(cacheKey); + if (localImage) { + operatorList.addImageOps(localImage.fn, localImage.args, localImage.optionalContent); + incrementCachedImageMaskCount(localImage); + args = null; + continue; + } + } + next(self.buildPaintImageXObject({ + resources, + image: args[0], + isInline: true, + operatorList, + cacheKey, + localImageCache, + localColorSpaceCache + })); + return; + case _util.OPS.showText: + if (!stateManager.state.font) { + self.ensureStateFont(stateManager.state); + continue; + } + args[0] = self.handleText(args[0], stateManager.state); + break; + case _util.OPS.showSpacedText: + if (!stateManager.state.font) { + self.ensureStateFont(stateManager.state); + continue; + } + var combinedGlyphs = []; + var state = stateManager.state; + for (const arrItem of args[0]) { + if (typeof arrItem === "string") { + combinedGlyphs.push(...self.handleText(arrItem, state)); + } else if (typeof arrItem === "number") { + combinedGlyphs.push(arrItem); + } + } + args[0] = combinedGlyphs; + fn = _util.OPS.showText; + break; + case _util.OPS.nextLineShowText: + if (!stateManager.state.font) { + self.ensureStateFont(stateManager.state); + continue; + } + operatorList.addOp(_util.OPS.nextLine); + args[0] = self.handleText(args[0], stateManager.state); + fn = _util.OPS.showText; + break; + case _util.OPS.nextLineSetSpacingShowText: + if (!stateManager.state.font) { + self.ensureStateFont(stateManager.state); + continue; + } + operatorList.addOp(_util.OPS.nextLine); + operatorList.addOp(_util.OPS.setWordSpacing, [args.shift()]); + operatorList.addOp(_util.OPS.setCharSpacing, [args.shift()]); + args[0] = self.handleText(args[0], stateManager.state); + fn = _util.OPS.showText; + break; + case _util.OPS.setTextRenderingMode: + stateManager.state.textRenderingMode = args[0]; + break; + case _util.OPS.setFillColorSpace: + { + const cachedColorSpace = _colorspace.ColorSpace.getCached(args[0], xref, localColorSpaceCache); + if (cachedColorSpace) { + stateManager.state.fillColorSpace = cachedColorSpace; + continue; + } + next(self.parseColorSpace({ + cs: args[0], + resources, + localColorSpaceCache + }).then(function (colorSpace) { + if (colorSpace) { + stateManager.state.fillColorSpace = colorSpace; + } + })); + return; + } + case _util.OPS.setStrokeColorSpace: + { + const cachedColorSpace = _colorspace.ColorSpace.getCached(args[0], xref, localColorSpaceCache); + if (cachedColorSpace) { + stateManager.state.strokeColorSpace = cachedColorSpace; + continue; + } + next(self.parseColorSpace({ + cs: args[0], + resources, + localColorSpaceCache + }).then(function (colorSpace) { + if (colorSpace) { + stateManager.state.strokeColorSpace = colorSpace; + } + })); + return; + } + case _util.OPS.setFillColor: + cs = stateManager.state.fillColorSpace; + args = cs.getRgb(args, 0); + fn = _util.OPS.setFillRGBColor; + break; + case _util.OPS.setStrokeColor: + cs = stateManager.state.strokeColorSpace; + args = cs.getRgb(args, 0); + fn = _util.OPS.setStrokeRGBColor; + break; + case _util.OPS.setFillGray: + stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.gray; + args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0); + fn = _util.OPS.setFillRGBColor; + break; + case _util.OPS.setStrokeGray: + stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.gray; + args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0); + fn = _util.OPS.setStrokeRGBColor; + break; + case _util.OPS.setFillCMYKColor: + stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.cmyk; + args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0); + fn = _util.OPS.setFillRGBColor; + break; + case _util.OPS.setStrokeCMYKColor: + stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.cmyk; + args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0); + fn = _util.OPS.setStrokeRGBColor; + break; + case _util.OPS.setFillRGBColor: + stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.rgb; + args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0); + break; + case _util.OPS.setStrokeRGBColor: + stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.rgb; + args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0); + break; + case _util.OPS.setFillColorN: + cs = stateManager.state.fillColorSpace; + if (cs.name === "Pattern") { + next(self.handleColorN(operatorList, _util.OPS.setFillColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache)); + return; + } + args = cs.getRgb(args, 0); + fn = _util.OPS.setFillRGBColor; + break; + case _util.OPS.setStrokeColorN: + cs = stateManager.state.strokeColorSpace; + if (cs.name === "Pattern") { + next(self.handleColorN(operatorList, _util.OPS.setStrokeColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache)); + return; + } + args = cs.getRgb(args, 0); + fn = _util.OPS.setStrokeRGBColor; + break; + case _util.OPS.shadingFill: + var shadingRes = resources.get("Shading"); + if (!shadingRes) { + throw new _util.FormatError("No shading resource found"); + } + var shading = shadingRes.get(args[0].name); + if (!shading) { + throw new _util.FormatError("No shading object found"); + } + const patternId = self.parseShading({ + shading, + resources, + localColorSpaceCache, + localShadingPatternCache + }); + args = [patternId]; + fn = _util.OPS.shadingFill; + break; + case _util.OPS.setGState: + isValidName = args[0] instanceof _primitives.Name; + name = args[0].name; + if (isValidName) { + const localGStateObj = localGStateCache.getByName(name); + if (localGStateObj) { + if (localGStateObj.length > 0) { + operatorList.addOp(_util.OPS.setGState, [localGStateObj]); + } + args = null; + continue; + } + } + next(new Promise(function (resolveGState, rejectGState) { + if (!isValidName) { + throw new _util.FormatError("GState must be referred to by name."); + } + const extGState = resources.get("ExtGState"); + if (!(extGState instanceof _primitives.Dict)) { + throw new _util.FormatError("ExtGState should be a dictionary."); + } + const gState = extGState.get(name); + if (!(gState instanceof _primitives.Dict)) { + throw new _util.FormatError("GState should be a dictionary."); + } + self.setGState({ + resources, + gState, + operatorList, + cacheKey: name, + task, + stateManager, + localGStateCache, + localColorSpaceCache + }).then(resolveGState, rejectGState); + }).catch(function (reason) { + if (reason instanceof _util.AbortException) { + return; + } + if (self.options.ignoreErrors) { + (0, _util.warn)(`getOperatorList - ignoring ExtGState: "${reason}".`); + return; + } + throw reason; + })); + return; + case _util.OPS.moveTo: + case _util.OPS.lineTo: + case _util.OPS.curveTo: + case _util.OPS.curveTo2: + case _util.OPS.curveTo3: + case _util.OPS.closePath: + case _util.OPS.rectangle: + self.buildPath(operatorList, fn, args, parsingText); + continue; + case _util.OPS.markPoint: + case _util.OPS.markPointProps: + case _util.OPS.beginCompat: + case _util.OPS.endCompat: + continue; + case _util.OPS.beginMarkedContentProps: + if (!(args[0] instanceof _primitives.Name)) { + (0, _util.warn)(`Expected name for beginMarkedContentProps arg0=${args[0]}`); + continue; + } + if (args[0].name === "OC") { + next(self.parseMarkedContentProps(args[1], resources).then(data => { + operatorList.addOp(_util.OPS.beginMarkedContentProps, ["OC", data]); + }).catch(reason => { + if (reason instanceof _util.AbortException) { + return; + } + if (self.options.ignoreErrors) { + (0, _util.warn)(`getOperatorList - ignoring beginMarkedContentProps: "${reason}".`); + return; + } + throw reason; + })); + return; + } + args = [args[0].name, args[1] instanceof _primitives.Dict ? args[1].get("MCID") : null]; + break; + case _util.OPS.beginMarkedContent: + case _util.OPS.endMarkedContent: + default: + if (args !== null) { + for (i = 0, ii = args.length; i < ii; i++) { + if (args[i] instanceof _primitives.Dict) { + break; + } + } + if (i < ii) { + (0, _util.warn)("getOperatorList - ignoring operator: " + fn); + continue; + } + } + } + operatorList.addOp(fn, args); + } + if (stop) { + next(deferred); + return; + } + closePendingRestoreOPS(); + resolve(); + }).catch(reason => { + if (reason instanceof _util.AbortException) { + return; + } + if (this.options.ignoreErrors) { + (0, _util.warn)(`getOperatorList - ignoring errors during "${task.name}" ` + `task: "${reason}".`); + closePendingRestoreOPS(); + return; + } + throw reason; + }); + } + getTextContent({ + stream, + task, + resources, + stateManager = null, + includeMarkedContent = false, + sink, + seenStyles = new Set(), + viewBox, + markedContentData = null, + disableNormalization = false + }) { + resources ||= _primitives.Dict.empty; + stateManager ||= new StateManager(new TextState()); + if (includeMarkedContent) { + markedContentData ||= { + level: 0 + }; + } + const textContent = { + items: [], + styles: Object.create(null) + }; + const textContentItem = { + initialized: false, + str: [], + totalWidth: 0, + totalHeight: 0, + width: 0, + height: 0, + vertical: false, + prevTransform: null, + textAdvanceScale: 0, + spaceInFlowMin: 0, + spaceInFlowMax: 0, + trackingSpaceMin: Infinity, + negativeSpaceMax: -Infinity, + notASpace: -Infinity, + transform: null, + fontName: null, + hasEOL: false + }; + const twoLastChars = [" ", " "]; + let twoLastCharsPos = 0; + function saveLastChar(char) { + const nextPos = (twoLastCharsPos + 1) % 2; + const ret = twoLastChars[twoLastCharsPos] !== " " && twoLastChars[nextPos] === " "; + twoLastChars[twoLastCharsPos] = char; + twoLastCharsPos = nextPos; + return ret; + } + function shouldAddWhitepsace() { + return twoLastChars[twoLastCharsPos] !== " " && twoLastChars[(twoLastCharsPos + 1) % 2] === " "; + } + function resetLastChars() { + twoLastChars[0] = twoLastChars[1] = " "; + twoLastCharsPos = 0; + } + const TRACKING_SPACE_FACTOR = 0.102; + const NOT_A_SPACE_FACTOR = 0.03; + const NEGATIVE_SPACE_FACTOR = -0.2; + const SPACE_IN_FLOW_MIN_FACTOR = 0.102; + const SPACE_IN_FLOW_MAX_FACTOR = 0.6; + const VERTICAL_SHIFT_RATIO = 0.25; + const self = this; + const xref = this.xref; + const showSpacedTextBuffer = []; + let xobjs = null; + const emptyXObjectCache = new _image_utils.LocalImageCache(); + const emptyGStateCache = new _image_utils.LocalGStateCache(); + const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager); + let textState; + function pushWhitespace({ + width = 0, + height = 0, + transform = textContentItem.prevTransform, + fontName = textContentItem.fontName + }) { + textContent.items.push({ + str: " ", + dir: "ltr", + width, + height, + transform, + fontName, + hasEOL: false + }); + } + function getCurrentTextTransform() { + const font = textState.font; + const tsm = [textState.fontSize * textState.textHScale, 0, 0, textState.fontSize, 0, textState.textRise]; + if (font.isType3Font && (textState.fontSize <= 1 || font.isCharBBox) && !(0, _util.isArrayEqual)(textState.fontMatrix, _util.FONT_IDENTITY_MATRIX)) { + const glyphHeight = font.bbox[3] - font.bbox[1]; + if (glyphHeight > 0) { + tsm[3] *= glyphHeight * textState.fontMatrix[3]; + } + } + return _util.Util.transform(textState.ctm, _util.Util.transform(textState.textMatrix, tsm)); + } + function ensureTextContentItem() { + if (textContentItem.initialized) { + return textContentItem; + } + const { + font, + loadedName + } = textState; + if (!seenStyles.has(loadedName)) { + seenStyles.add(loadedName); + textContent.styles[loadedName] = { + fontFamily: font.fallbackName, + ascent: font.ascent, + descent: font.descent, + vertical: font.vertical + }; + } + textContentItem.fontName = loadedName; + const trm = textContentItem.transform = getCurrentTextTransform(); + if (!font.vertical) { + textContentItem.width = textContentItem.totalWidth = 0; + textContentItem.height = textContentItem.totalHeight = Math.hypot(trm[2], trm[3]); + textContentItem.vertical = false; + } else { + textContentItem.width = textContentItem.totalWidth = Math.hypot(trm[0], trm[1]); + textContentItem.height = textContentItem.totalHeight = 0; + textContentItem.vertical = true; + } + const scaleLineX = Math.hypot(textState.textLineMatrix[0], textState.textLineMatrix[1]); + const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]); + textContentItem.textAdvanceScale = scaleCtmX * scaleLineX; + const { + fontSize + } = textState; + textContentItem.trackingSpaceMin = fontSize * TRACKING_SPACE_FACTOR; + textContentItem.notASpace = fontSize * NOT_A_SPACE_FACTOR; + textContentItem.negativeSpaceMax = fontSize * NEGATIVE_SPACE_FACTOR; + textContentItem.spaceInFlowMin = fontSize * SPACE_IN_FLOW_MIN_FACTOR; + textContentItem.spaceInFlowMax = fontSize * SPACE_IN_FLOW_MAX_FACTOR; + textContentItem.hasEOL = false; + textContentItem.initialized = true; + return textContentItem; + } + function updateAdvanceScale() { + if (!textContentItem.initialized) { + return; + } + const scaleLineX = Math.hypot(textState.textLineMatrix[0], textState.textLineMatrix[1]); + const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]); + const scaleFactor = scaleCtmX * scaleLineX; + if (scaleFactor === textContentItem.textAdvanceScale) { + return; + } + if (!textContentItem.vertical) { + textContentItem.totalWidth += textContentItem.width * textContentItem.textAdvanceScale; + textContentItem.width = 0; + } else { + textContentItem.totalHeight += textContentItem.height * textContentItem.textAdvanceScale; + textContentItem.height = 0; + } + textContentItem.textAdvanceScale = scaleFactor; + } + function runBidiTransform(textChunk) { + let text = textChunk.str.join(""); + if (!disableNormalization) { + text = (0, _util.normalizeUnicode)(text); + } + const bidiResult = (0, _bidi.bidi)(text, -1, textChunk.vertical); + return { + str: bidiResult.str, + dir: bidiResult.dir, + width: Math.abs(textChunk.totalWidth), + height: Math.abs(textChunk.totalHeight), + transform: textChunk.transform, + fontName: textChunk.fontName, + hasEOL: textChunk.hasEOL + }; + } + function handleSetFont(fontName, fontRef) { + return self.loadFont(fontName, fontRef, resources).then(function (translated) { + if (!translated.font.isType3Font) { + return translated; + } + return translated.loadType3Data(self, resources, task).catch(function () {}).then(function () { + return translated; + }); + }).then(function (translated) { + textState.loadedName = translated.loadedName; + textState.font = translated.font; + textState.fontMatrix = translated.font.fontMatrix || _util.FONT_IDENTITY_MATRIX; + }); + } + function applyInverseRotation(x, y, matrix) { + const scale = Math.hypot(matrix[0], matrix[1]); + return [(matrix[0] * x + matrix[1] * y) / scale, (matrix[2] * x + matrix[3] * y) / scale]; + } + function compareWithLastPosition(glyphWidth) { + const currentTransform = getCurrentTextTransform(); + let posX = currentTransform[4]; + let posY = currentTransform[5]; + if (textState.font?.vertical) { + if (posX < viewBox[0] || posX > viewBox[2] || posY + glyphWidth < viewBox[1] || posY > viewBox[3]) { + return false; + } + } else if (posX + glyphWidth < viewBox[0] || posX > viewBox[2] || posY < viewBox[1] || posY > viewBox[3]) { + return false; + } + if (!textState.font || !textContentItem.prevTransform) { + return true; + } + let lastPosX = textContentItem.prevTransform[4]; + let lastPosY = textContentItem.prevTransform[5]; + if (lastPosX === posX && lastPosY === posY) { + return true; + } + let rotate = -1; + if (currentTransform[0] && currentTransform[1] === 0 && currentTransform[2] === 0) { + rotate = currentTransform[0] > 0 ? 0 : 180; + } else if (currentTransform[1] && currentTransform[0] === 0 && currentTransform[3] === 0) { + rotate = currentTransform[1] > 0 ? 90 : 270; + } + switch (rotate) { + case 0: + break; + case 90: + [posX, posY] = [posY, posX]; + [lastPosX, lastPosY] = [lastPosY, lastPosX]; + break; + case 180: + [posX, posY, lastPosX, lastPosY] = [-posX, -posY, -lastPosX, -lastPosY]; + break; + case 270: + [posX, posY] = [-posY, -posX]; + [lastPosX, lastPosY] = [-lastPosY, -lastPosX]; + break; + default: + [posX, posY] = applyInverseRotation(posX, posY, currentTransform); + [lastPosX, lastPosY] = applyInverseRotation(lastPosX, lastPosY, textContentItem.prevTransform); + } + if (textState.font.vertical) { + const advanceY = (lastPosY - posY) / textContentItem.textAdvanceScale; + const advanceX = posX - lastPosX; + const textOrientation = Math.sign(textContentItem.height); + if (advanceY < textOrientation * textContentItem.negativeSpaceMax) { + if (Math.abs(advanceX) > 0.5 * textContentItem.width) { + appendEOL(); + return true; + } + resetLastChars(); + flushTextContentItem(); + return true; + } + if (Math.abs(advanceX) > textContentItem.width) { + appendEOL(); + return true; + } + if (advanceY <= textOrientation * textContentItem.notASpace) { + resetLastChars(); + } + if (advanceY <= textOrientation * textContentItem.trackingSpaceMin) { + if (shouldAddWhitepsace()) { + resetLastChars(); + flushTextContentItem(); + pushWhitespace({ + height: Math.abs(advanceY) + }); + } else { + textContentItem.height += advanceY; + } + } else if (!addFakeSpaces(advanceY, textContentItem.prevTransform, textOrientation)) { + if (textContentItem.str.length === 0) { + resetLastChars(); + pushWhitespace({ + height: Math.abs(advanceY) + }); + } else { + textContentItem.height += advanceY; + } + } + if (Math.abs(advanceX) > textContentItem.width * VERTICAL_SHIFT_RATIO) { + flushTextContentItem(); + } + return true; + } + const advanceX = (posX - lastPosX) / textContentItem.textAdvanceScale; + const advanceY = posY - lastPosY; + const textOrientation = Math.sign(textContentItem.width); + if (advanceX < textOrientation * textContentItem.negativeSpaceMax) { + if (Math.abs(advanceY) > 0.5 * textContentItem.height) { + appendEOL(); + return true; + } + resetLastChars(); + flushTextContentItem(); + return true; + } + if (Math.abs(advanceY) > textContentItem.height) { + appendEOL(); + return true; + } + if (advanceX <= textOrientation * textContentItem.notASpace) { + resetLastChars(); + } + if (advanceX <= textOrientation * textContentItem.trackingSpaceMin) { + if (shouldAddWhitepsace()) { + resetLastChars(); + flushTextContentItem(); + pushWhitespace({ + width: Math.abs(advanceX) + }); + } else { + textContentItem.width += advanceX; + } + } else if (!addFakeSpaces(advanceX, textContentItem.prevTransform, textOrientation)) { + if (textContentItem.str.length === 0) { + resetLastChars(); + pushWhitespace({ + width: Math.abs(advanceX) + }); + } else { + textContentItem.width += advanceX; + } + } + if (Math.abs(advanceY) > textContentItem.height * VERTICAL_SHIFT_RATIO) { + flushTextContentItem(); + } + return true; + } + function buildTextContentItem({ + chars, + extraSpacing + }) { + const font = textState.font; + if (!chars) { + const charSpacing = textState.charSpacing + extraSpacing; + if (charSpacing) { + if (!font.vertical) { + textState.translateTextMatrix(charSpacing * textState.textHScale, 0); + } else { + textState.translateTextMatrix(0, -charSpacing); + } + } + return; + } + const glyphs = font.charsToGlyphs(chars); + const scale = textState.fontMatrix[0] * textState.fontSize; + for (let i = 0, ii = glyphs.length; i < ii; i++) { + const glyph = glyphs[i]; + const { + category + } = glyph; + if (category.isInvisibleFormatMark) { + continue; + } + let charSpacing = textState.charSpacing + (i + 1 === ii ? extraSpacing : 0); + let glyphWidth = glyph.width; + if (font.vertical) { + glyphWidth = glyph.vmetric ? glyph.vmetric[0] : -glyphWidth; + } + let scaledDim = glyphWidth * scale; + if (category.isWhitespace) { + if (!font.vertical) { + charSpacing += scaledDim + textState.wordSpacing; + textState.translateTextMatrix(charSpacing * textState.textHScale, 0); + } else { + charSpacing += -scaledDim + textState.wordSpacing; + textState.translateTextMatrix(0, -charSpacing); + } + saveLastChar(" "); + continue; + } + if (!category.isZeroWidthDiacritic && !compareWithLastPosition(scaledDim)) { + if (!font.vertical) { + textState.translateTextMatrix(scaledDim * textState.textHScale, 0); + } else { + textState.translateTextMatrix(0, scaledDim); + } + continue; + } + const textChunk = ensureTextContentItem(); + if (category.isZeroWidthDiacritic) { + scaledDim = 0; + } + if (!font.vertical) { + scaledDim *= textState.textHScale; + textState.translateTextMatrix(scaledDim, 0); + textChunk.width += scaledDim; + } else { + textState.translateTextMatrix(0, scaledDim); + scaledDim = Math.abs(scaledDim); + textChunk.height += scaledDim; + } + if (scaledDim) { + textChunk.prevTransform = getCurrentTextTransform(); + } + const glyphUnicode = glyph.unicode; + if (saveLastChar(glyphUnicode)) { + textChunk.str.push(" "); + } + textChunk.str.push(glyphUnicode); + if (charSpacing) { + if (!font.vertical) { + textState.translateTextMatrix(charSpacing * textState.textHScale, 0); + } else { + textState.translateTextMatrix(0, -charSpacing); + } + } + } + } + function appendEOL() { + resetLastChars(); + if (textContentItem.initialized) { + textContentItem.hasEOL = true; + flushTextContentItem(); + } else { + textContent.items.push({ + str: "", + dir: "ltr", + width: 0, + height: 0, + transform: getCurrentTextTransform(), + fontName: textState.loadedName, + hasEOL: true + }); + } + } + function addFakeSpaces(width, transf, textOrientation) { + if (textOrientation * textContentItem.spaceInFlowMin <= width && width <= textOrientation * textContentItem.spaceInFlowMax) { + if (textContentItem.initialized) { + resetLastChars(); + textContentItem.str.push(" "); + } + return false; + } + const fontName = textContentItem.fontName; + let height = 0; + if (textContentItem.vertical) { + height = width; + width = 0; + } + flushTextContentItem(); + resetLastChars(); + pushWhitespace({ + width: Math.abs(width), + height: Math.abs(height), + transform: transf || getCurrentTextTransform(), + fontName + }); + return true; + } + function flushTextContentItem() { + if (!textContentItem.initialized || !textContentItem.str) { + return; + } + if (!textContentItem.vertical) { + textContentItem.totalWidth += textContentItem.width * textContentItem.textAdvanceScale; + } else { + textContentItem.totalHeight += textContentItem.height * textContentItem.textAdvanceScale; + } + textContent.items.push(runBidiTransform(textContentItem)); + textContentItem.initialized = false; + textContentItem.str.length = 0; + } + function enqueueChunk(batch = false) { + const length = textContent.items.length; + if (length === 0) { + return; + } + if (batch && length < TEXT_CHUNK_BATCH_SIZE) { + return; + } + sink.enqueue(textContent, length); + textContent.items = []; + textContent.styles = Object.create(null); + } + const timeSlotManager = new TimeSlotManager(); + return new Promise(function promiseBody(resolve, reject) { + const next = function (promise) { + enqueueChunk(true); + Promise.all([promise, sink.ready]).then(function () { + try { + promiseBody(resolve, reject); + } catch (ex) { + reject(ex); + } + }, reject); + }; + task.ensureNotTerminated(); + timeSlotManager.reset(); + const operation = {}; + let stop, + args = []; + while (!(stop = timeSlotManager.check())) { + args.length = 0; + operation.args = args; + if (!preprocessor.read(operation)) { + break; + } + const previousState = textState; + textState = stateManager.state; + const fn = operation.fn; + args = operation.args; + switch (fn | 0) { + case _util.OPS.setFont: + var fontNameArg = args[0].name, + fontSizeArg = args[1]; + if (textState.font && fontNameArg === textState.fontName && fontSizeArg === textState.fontSize) { + break; + } + flushTextContentItem(); + textState.fontName = fontNameArg; + textState.fontSize = fontSizeArg; + next(handleSetFont(fontNameArg, null)); + return; + case _util.OPS.setTextRise: + textState.textRise = args[0]; + break; + case _util.OPS.setHScale: + textState.textHScale = args[0] / 100; + break; + case _util.OPS.setLeading: + textState.leading = args[0]; + break; + case _util.OPS.moveText: + textState.translateTextLineMatrix(args[0], args[1]); + textState.textMatrix = textState.textLineMatrix.slice(); + break; + case _util.OPS.setLeadingMoveText: + textState.leading = -args[1]; + textState.translateTextLineMatrix(args[0], args[1]); + textState.textMatrix = textState.textLineMatrix.slice(); + break; + case _util.OPS.nextLine: + textState.carriageReturn(); + break; + case _util.OPS.setTextMatrix: + textState.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); + textState.setTextLineMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); + updateAdvanceScale(); + break; + case _util.OPS.setCharSpacing: + textState.charSpacing = args[0]; + break; + case _util.OPS.setWordSpacing: + textState.wordSpacing = args[0]; + break; + case _util.OPS.beginText: + textState.textMatrix = _util.IDENTITY_MATRIX.slice(); + textState.textLineMatrix = _util.IDENTITY_MATRIX.slice(); + break; + case _util.OPS.showSpacedText: + if (!stateManager.state.font) { + self.ensureStateFont(stateManager.state); + continue; + } + const spaceFactor = (textState.font.vertical ? 1 : -1) * textState.fontSize / 1000; + const elements = args[0]; + for (let i = 0, ii = elements.length; i < ii; i++) { + const item = elements[i]; + if (typeof item === "string") { + showSpacedTextBuffer.push(item); + } else if (typeof item === "number" && item !== 0) { + const str = showSpacedTextBuffer.join(""); + showSpacedTextBuffer.length = 0; + buildTextContentItem({ + chars: str, + extraSpacing: item * spaceFactor + }); + } + } + if (showSpacedTextBuffer.length > 0) { + const str = showSpacedTextBuffer.join(""); + showSpacedTextBuffer.length = 0; + buildTextContentItem({ + chars: str, + extraSpacing: 0 + }); + } + break; + case _util.OPS.showText: + if (!stateManager.state.font) { + self.ensureStateFont(stateManager.state); + continue; + } + buildTextContentItem({ + chars: args[0], + extraSpacing: 0 + }); + break; + case _util.OPS.nextLineShowText: + if (!stateManager.state.font) { + self.ensureStateFont(stateManager.state); + continue; + } + textState.carriageReturn(); + buildTextContentItem({ + chars: args[0], + extraSpacing: 0 + }); + break; + case _util.OPS.nextLineSetSpacingShowText: + if (!stateManager.state.font) { + self.ensureStateFont(stateManager.state); + continue; + } + textState.wordSpacing = args[0]; + textState.charSpacing = args[1]; + textState.carriageReturn(); + buildTextContentItem({ + chars: args[2], + extraSpacing: 0 + }); + break; + case _util.OPS.paintXObject: + flushTextContentItem(); + if (!xobjs) { + xobjs = resources.get("XObject") || _primitives.Dict.empty; + } + var isValidName = args[0] instanceof _primitives.Name; + var name = args[0].name; + if (isValidName && emptyXObjectCache.getByName(name)) { + break; + } + next(new Promise(function (resolveXObject, rejectXObject) { + if (!isValidName) { + throw new _util.FormatError("XObject must be referred to by name."); + } + let xobj = xobjs.getRaw(name); + if (xobj instanceof _primitives.Ref) { + if (emptyXObjectCache.getByRef(xobj)) { + resolveXObject(); + return; + } + const globalImage = self.globalImageCache.getData(xobj, self.pageIndex); + if (globalImage) { + resolveXObject(); + return; + } + xobj = xref.fetch(xobj); + } + if (!(xobj instanceof _base_stream.BaseStream)) { + throw new _util.FormatError("XObject should be a stream"); + } + const type = xobj.dict.get("Subtype"); + if (!(type instanceof _primitives.Name)) { + throw new _util.FormatError("XObject should have a Name subtype"); + } + if (type.name !== "Form") { + emptyXObjectCache.set(name, xobj.dict.objId, true); + resolveXObject(); + return; + } + const currentState = stateManager.state.clone(); + const xObjStateManager = new StateManager(currentState); + const matrix = xobj.dict.getArray("Matrix"); + if (Array.isArray(matrix) && matrix.length === 6) { + xObjStateManager.transform(matrix); + } + enqueueChunk(); + const sinkWrapper = { + enqueueInvoked: false, + enqueue(chunk, size) { + this.enqueueInvoked = true; + sink.enqueue(chunk, size); + }, + get desiredSize() { + return sink.desiredSize; + }, + get ready() { + return sink.ready; + } + }; + self.getTextContent({ + stream: xobj, + task, + resources: xobj.dict.get("Resources") || resources, + stateManager: xObjStateManager, + includeMarkedContent, + sink: sinkWrapper, + seenStyles, + viewBox, + markedContentData, + disableNormalization + }).then(function () { + if (!sinkWrapper.enqueueInvoked) { + emptyXObjectCache.set(name, xobj.dict.objId, true); + } + resolveXObject(); + }, rejectXObject); + }).catch(function (reason) { + if (reason instanceof _util.AbortException) { + return; + } + if (self.options.ignoreErrors) { + (0, _util.warn)(`getTextContent - ignoring XObject: "${reason}".`); + return; + } + throw reason; + })); + return; + case _util.OPS.setGState: + isValidName = args[0] instanceof _primitives.Name; + name = args[0].name; + if (isValidName && emptyGStateCache.getByName(name)) { + break; + } + next(new Promise(function (resolveGState, rejectGState) { + if (!isValidName) { + throw new _util.FormatError("GState must be referred to by name."); + } + const extGState = resources.get("ExtGState"); + if (!(extGState instanceof _primitives.Dict)) { + throw new _util.FormatError("ExtGState should be a dictionary."); + } + const gState = extGState.get(name); + if (!(gState instanceof _primitives.Dict)) { + throw new _util.FormatError("GState should be a dictionary."); + } + const gStateFont = gState.get("Font"); + if (!gStateFont) { + emptyGStateCache.set(name, gState.objId, true); + resolveGState(); + return; + } + flushTextContentItem(); + textState.fontName = null; + textState.fontSize = gStateFont[1]; + handleSetFont(null, gStateFont[0]).then(resolveGState, rejectGState); + }).catch(function (reason) { + if (reason instanceof _util.AbortException) { + return; + } + if (self.options.ignoreErrors) { + (0, _util.warn)(`getTextContent - ignoring ExtGState: "${reason}".`); + return; + } + throw reason; + })); + return; + case _util.OPS.beginMarkedContent: + flushTextContentItem(); + if (includeMarkedContent) { + markedContentData.level++; + textContent.items.push({ + type: "beginMarkedContent", + tag: args[0] instanceof _primitives.Name ? args[0].name : null + }); + } + break; + case _util.OPS.beginMarkedContentProps: + flushTextContentItem(); + if (includeMarkedContent) { + markedContentData.level++; + let mcid = null; + if (args[1] instanceof _primitives.Dict) { + mcid = args[1].get("MCID"); + } + textContent.items.push({ + type: "beginMarkedContentProps", + id: Number.isInteger(mcid) ? `${self.idFactory.getPageObjId()}_mc${mcid}` : null, + tag: args[0] instanceof _primitives.Name ? args[0].name : null + }); + } + break; + case _util.OPS.endMarkedContent: + flushTextContentItem(); + if (includeMarkedContent) { + if (markedContentData.level === 0) { + break; + } + markedContentData.level--; + textContent.items.push({ + type: "endMarkedContent" + }); + } + break; + case _util.OPS.restore: + if (previousState && (previousState.font !== textState.font || previousState.fontSize !== textState.fontSize || previousState.fontName !== textState.fontName)) { + flushTextContentItem(); + } + break; + } + if (textContent.items.length >= sink.desiredSize) { + stop = true; + break; + } + } + if (stop) { + next(deferred); + return; + } + flushTextContentItem(); + enqueueChunk(); + resolve(); + }).catch(reason => { + if (reason instanceof _util.AbortException) { + return; + } + if (this.options.ignoreErrors) { + (0, _util.warn)(`getTextContent - ignoring errors during "${task.name}" ` + `task: "${reason}".`); + flushTextContentItem(); + enqueueChunk(); + return; + } + throw reason; + }); + } + extractDataStructures(dict, baseDict, properties) { + const xref = this.xref; + let cidToGidBytes; + const toUnicodePromise = this.readToUnicode(properties.toUnicode || dict.get("ToUnicode") || baseDict.get("ToUnicode")); + if (properties.composite) { + const cidSystemInfo = dict.get("CIDSystemInfo"); + if (cidSystemInfo instanceof _primitives.Dict) { + properties.cidSystemInfo = { + registry: (0, _util.stringToPDFString)(cidSystemInfo.get("Registry")), + ordering: (0, _util.stringToPDFString)(cidSystemInfo.get("Ordering")), + supplement: cidSystemInfo.get("Supplement") + }; + } + try { + const cidToGidMap = dict.get("CIDToGIDMap"); + if (cidToGidMap instanceof _base_stream.BaseStream) { + cidToGidBytes = cidToGidMap.getBytes(); + } + } catch (ex) { + if (!this.options.ignoreErrors) { + throw ex; + } + (0, _util.warn)(`extractDataStructures - ignoring CIDToGIDMap data: "${ex}".`); + } + } + const differences = []; + let baseEncodingName = null; + let encoding; + if (dict.has("Encoding")) { + encoding = dict.get("Encoding"); + if (encoding instanceof _primitives.Dict) { + baseEncodingName = encoding.get("BaseEncoding"); + baseEncodingName = baseEncodingName instanceof _primitives.Name ? baseEncodingName.name : null; + if (encoding.has("Differences")) { + const diffEncoding = encoding.get("Differences"); + let index = 0; + for (const entry of diffEncoding) { + const data = xref.fetchIfRef(entry); + if (typeof data === "number") { + index = data; + } else if (data instanceof _primitives.Name) { + differences[index++] = data.name; + } else { + throw new _util.FormatError(`Invalid entry in 'Differences' array: ${data}`); + } + } + } + } else if (encoding instanceof _primitives.Name) { + baseEncodingName = encoding.name; + } else { + const msg = "Encoding is not a Name nor a Dict"; + if (!this.options.ignoreErrors) { + throw new _util.FormatError(msg); + } + (0, _util.warn)(msg); + } + if (baseEncodingName !== "MacRomanEncoding" && baseEncodingName !== "MacExpertEncoding" && baseEncodingName !== "WinAnsiEncoding") { + baseEncodingName = null; + } + } + const nonEmbeddedFont = !properties.file || properties.isInternalFont, + isSymbolsFontName = (0, _standard_fonts.getSymbolsFonts)()[properties.name]; + if (baseEncodingName && nonEmbeddedFont && isSymbolsFontName) { + baseEncodingName = null; + } + if (baseEncodingName) { + properties.defaultEncoding = (0, _encodings.getEncoding)(baseEncodingName); + } else { + const isSymbolicFont = !!(properties.flags & _fonts_utils.FontFlags.Symbolic); + const isNonsymbolicFont = !!(properties.flags & _fonts_utils.FontFlags.Nonsymbolic); + encoding = _encodings.StandardEncoding; + if (properties.type === "TrueType" && !isNonsymbolicFont) { + encoding = _encodings.WinAnsiEncoding; + } + if (isSymbolicFont || isSymbolsFontName) { + encoding = _encodings.MacRomanEncoding; + if (nonEmbeddedFont) { + if (/Symbol/i.test(properties.name)) { + encoding = _encodings.SymbolSetEncoding; + } else if (/Dingbats/i.test(properties.name)) { + encoding = _encodings.ZapfDingbatsEncoding; + } else if (/Wingdings/i.test(properties.name)) { + encoding = _encodings.WinAnsiEncoding; + } + } + } + properties.defaultEncoding = encoding; + } + properties.differences = differences; + properties.baseEncodingName = baseEncodingName; + properties.hasEncoding = !!baseEncodingName || differences.length > 0; + properties.dict = dict; + return toUnicodePromise.then(readToUnicode => { + properties.toUnicode = readToUnicode; + return this.buildToUnicode(properties); + }).then(builtToUnicode => { + properties.toUnicode = builtToUnicode; + if (cidToGidBytes) { + properties.cidToGidMap = this.readCidToGidMap(cidToGidBytes, builtToUnicode); + } + return properties; + }); + } + _simpleFontToUnicode(properties, forceGlyphs = false) { + (0, _util.assert)(!properties.composite, "Must be a simple font."); + const toUnicode = []; + const encoding = properties.defaultEncoding.slice(); + const baseEncodingName = properties.baseEncodingName; + const differences = properties.differences; + for (const charcode in differences) { + const glyphName = differences[charcode]; + if (glyphName === ".notdef") { + continue; + } + encoding[charcode] = glyphName; + } + const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); + for (const charcode in encoding) { + let glyphName = encoding[charcode]; + if (glyphName === "") { + continue; + } + let unicode = glyphsUnicodeMap[glyphName]; + if (unicode !== undefined) { + toUnicode[charcode] = String.fromCharCode(unicode); + continue; + } + let code = 0; + switch (glyphName[0]) { + case "G": + if (glyphName.length === 3) { + code = parseInt(glyphName.substring(1), 16); + } + break; + case "g": + if (glyphName.length === 5) { + code = parseInt(glyphName.substring(1), 16); + } + break; + case "C": + case "c": + if (glyphName.length >= 3 && glyphName.length <= 4) { + const codeStr = glyphName.substring(1); + if (forceGlyphs) { + code = parseInt(codeStr, 16); + break; + } + code = +codeStr; + if (Number.isNaN(code) && Number.isInteger(parseInt(codeStr, 16))) { + return this._simpleFontToUnicode(properties, true); + } + } + break; + case "u": + unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap); + if (unicode !== -1) { + code = unicode; + } + break; + default: + switch (glyphName) { + case "f_h": + case "f_t": + case "T_h": + toUnicode[charcode] = glyphName.replaceAll("_", ""); + continue; + } + break; + } + if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) { + if (baseEncodingName && code === +charcode) { + const baseEncoding = (0, _encodings.getEncoding)(baseEncodingName); + if (baseEncoding && (glyphName = baseEncoding[charcode])) { + toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]); + continue; + } + } + toUnicode[charcode] = String.fromCodePoint(code); + } + } + return toUnicode; + } + async buildToUnicode(properties) { + properties.hasIncludedToUnicodeMap = properties.toUnicode?.length > 0; + if (properties.hasIncludedToUnicodeMap) { + if (!properties.composite && properties.hasEncoding) { + properties.fallbackToUnicode = this._simpleFontToUnicode(properties); + } + return properties.toUnicode; + } + if (!properties.composite) { + return new _to_unicode_map.ToUnicodeMap(this._simpleFontToUnicode(properties)); + } + if (properties.composite && (properties.cMap.builtInCMap && !(properties.cMap instanceof _cmap.IdentityCMap) || properties.cidSystemInfo.registry === "Adobe" && (properties.cidSystemInfo.ordering === "GB1" || properties.cidSystemInfo.ordering === "CNS1" || properties.cidSystemInfo.ordering === "Japan1" || properties.cidSystemInfo.ordering === "Korea1"))) { + const { + registry, + ordering + } = properties.cidSystemInfo; + const ucs2CMapName = _primitives.Name.get(`${registry}-${ordering}-UCS2`); + const ucs2CMap = await _cmap.CMapFactory.create({ + encoding: ucs2CMapName, + fetchBuiltInCMap: this._fetchBuiltInCMapBound, + useCMap: null + }); + const toUnicode = [], + buf = []; + properties.cMap.forEach(function (charcode, cid) { + if (cid > 0xffff) { + throw new _util.FormatError("Max size of CID is 65,535"); + } + const ucs2 = ucs2CMap.lookup(cid); + if (ucs2) { + buf.length = 0; + for (let i = 0, ii = ucs2.length; i < ii; i += 2) { + buf.push((ucs2.charCodeAt(i) << 8) + ucs2.charCodeAt(i + 1)); + } + toUnicode[charcode] = String.fromCharCode(...buf); + } + }); + return new _to_unicode_map.ToUnicodeMap(toUnicode); + } + return new _to_unicode_map.IdentityToUnicodeMap(properties.firstChar, properties.lastChar); + } + readToUnicode(cmapObj) { + if (!cmapObj) { + return Promise.resolve(null); + } + if (cmapObj instanceof _primitives.Name) { + return _cmap.CMapFactory.create({ + encoding: cmapObj, + fetchBuiltInCMap: this._fetchBuiltInCMapBound, + useCMap: null + }).then(function (cmap) { + if (cmap instanceof _cmap.IdentityCMap) { + return new _to_unicode_map.IdentityToUnicodeMap(0, 0xffff); + } + return new _to_unicode_map.ToUnicodeMap(cmap.getMap()); + }); + } else if (cmapObj instanceof _base_stream.BaseStream) { + return _cmap.CMapFactory.create({ + encoding: cmapObj, + fetchBuiltInCMap: this._fetchBuiltInCMapBound, + useCMap: null + }).then(function (cmap) { + if (cmap instanceof _cmap.IdentityCMap) { + return new _to_unicode_map.IdentityToUnicodeMap(0, 0xffff); + } + const map = new Array(cmap.length); + cmap.forEach(function (charCode, token) { + if (typeof token === "number") { + map[charCode] = String.fromCodePoint(token); + return; + } + const str = []; + for (let k = 0; k < token.length; k += 2) { + const w1 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1); + if ((w1 & 0xf800) !== 0xd800) { + str.push(w1); + continue; + } + k += 2; + const w2 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1); + str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000); + } + map[charCode] = String.fromCodePoint(...str); + }); + return new _to_unicode_map.ToUnicodeMap(map); + }, reason => { + if (reason instanceof _util.AbortException) { + return null; + } + if (this.options.ignoreErrors) { + (0, _util.warn)(`readToUnicode - ignoring ToUnicode data: "${reason}".`); + return null; + } + throw reason; + }); + } + return Promise.resolve(null); + } + readCidToGidMap(glyphsData, toUnicode) { + const result = []; + for (let j = 0, jj = glyphsData.length; j < jj; j++) { + const glyphID = glyphsData[j++] << 8 | glyphsData[j]; + const code = j >> 1; + if (glyphID === 0 && !toUnicode.has(code)) { + continue; + } + result[code] = glyphID; + } + return result; + } + extractWidths(dict, descriptor, properties) { + const xref = this.xref; + let glyphsWidths = []; + let defaultWidth = 0; + const glyphsVMetrics = []; + let defaultVMetrics; + let i, ii, j, jj, start, code, widths; + if (properties.composite) { + defaultWidth = dict.has("DW") ? dict.get("DW") : 1000; + widths = dict.get("W"); + if (widths) { + for (i = 0, ii = widths.length; i < ii; i++) { + start = xref.fetchIfRef(widths[i++]); + code = xref.fetchIfRef(widths[i]); + if (Array.isArray(code)) { + for (j = 0, jj = code.length; j < jj; j++) { + glyphsWidths[start++] = xref.fetchIfRef(code[j]); + } + } else { + const width = xref.fetchIfRef(widths[++i]); + for (j = start; j <= code; j++) { + glyphsWidths[j] = width; + } + } + } + } + if (properties.vertical) { + let vmetrics = dict.getArray("DW2") || [880, -1000]; + defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]]; + vmetrics = dict.get("W2"); + if (vmetrics) { + for (i = 0, ii = vmetrics.length; i < ii; i++) { + start = xref.fetchIfRef(vmetrics[i++]); + code = xref.fetchIfRef(vmetrics[i]); + if (Array.isArray(code)) { + for (j = 0, jj = code.length; j < jj; j++) { + glyphsVMetrics[start++] = [xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j])]; + } + } else { + const vmetric = [xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i])]; + for (j = start; j <= code; j++) { + glyphsVMetrics[j] = vmetric; + } + } + } + } + } + } else { + const firstChar = properties.firstChar; + widths = dict.get("Widths"); + if (widths) { + j = firstChar; + for (i = 0, ii = widths.length; i < ii; i++) { + glyphsWidths[j++] = xref.fetchIfRef(widths[i]); + } + defaultWidth = parseFloat(descriptor.get("MissingWidth")) || 0; + } else { + const baseFontName = dict.get("BaseFont"); + if (baseFontName instanceof _primitives.Name) { + const metrics = this.getBaseFontMetrics(baseFontName.name); + glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties); + defaultWidth = metrics.defaultWidth; + } + } + } + let isMonospace = true; + let firstWidth = defaultWidth; + for (const glyph in glyphsWidths) { + const glyphWidth = glyphsWidths[glyph]; + if (!glyphWidth) { + continue; + } + if (!firstWidth) { + firstWidth = glyphWidth; + continue; + } + if (firstWidth !== glyphWidth) { + isMonospace = false; + break; + } + } + if (isMonospace) { + properties.flags |= _fonts_utils.FontFlags.FixedPitch; + } else { + properties.flags &= ~_fonts_utils.FontFlags.FixedPitch; + } + properties.defaultWidth = defaultWidth; + properties.widths = glyphsWidths; + properties.defaultVMetrics = defaultVMetrics; + properties.vmetrics = glyphsVMetrics; + } + isSerifFont(baseFontName) { + const fontNameWoStyle = baseFontName.split("-")[0]; + return fontNameWoStyle in (0, _standard_fonts.getSerifFonts)() || /serif/gi.test(fontNameWoStyle); + } + getBaseFontMetrics(name) { + let defaultWidth = 0; + let widths = Object.create(null); + let monospace = false; + const stdFontMap = (0, _standard_fonts.getStdFontMap)(); + let lookupName = stdFontMap[name] || name; + const Metrics = (0, _metrics.getMetrics)(); + if (!(lookupName in Metrics)) { + if (this.isSerifFont(name)) { + lookupName = "Times-Roman"; + } else { + lookupName = "Helvetica"; + } + } + const glyphWidths = Metrics[lookupName]; + if (typeof glyphWidths === "number") { + defaultWidth = glyphWidths; + monospace = true; + } else { + widths = glyphWidths(); + } + return { + defaultWidth, + monospace, + widths + }; + } + buildCharCodeToWidth(widthsByGlyphName, properties) { + const widths = Object.create(null); + const differences = properties.differences; + const encoding = properties.defaultEncoding; + for (let charCode = 0; charCode < 256; charCode++) { + if (charCode in differences && widthsByGlyphName[differences[charCode]]) { + widths[charCode] = widthsByGlyphName[differences[charCode]]; + continue; + } + if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) { + widths[charCode] = widthsByGlyphName[encoding[charCode]]; + continue; + } + } + return widths; + } + preEvaluateFont(dict) { + const baseDict = dict; + let type = dict.get("Subtype"); + if (!(type instanceof _primitives.Name)) { + throw new _util.FormatError("invalid font Subtype"); + } + let composite = false; + let hash, toUnicode; + if (type.name === "Type0") { + const df = dict.get("DescendantFonts"); + if (!df) { + throw new _util.FormatError("Descendant fonts are not specified"); + } + dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df; + if (!(dict instanceof _primitives.Dict)) { + throw new _util.FormatError("Descendant font is not a dictionary."); + } + type = dict.get("Subtype"); + if (!(type instanceof _primitives.Name)) { + throw new _util.FormatError("invalid font Subtype"); + } + composite = true; + } + const firstChar = dict.get("FirstChar") || 0, + lastChar = dict.get("LastChar") || (composite ? 0xffff : 0xff); + const descriptor = dict.get("FontDescriptor"); + if (descriptor) { + hash = new _murmurhash.MurmurHash3_64(); + const encoding = baseDict.getRaw("Encoding"); + if (encoding instanceof _primitives.Name) { + hash.update(encoding.name); + } else if (encoding instanceof _primitives.Ref) { + hash.update(encoding.toString()); + } else if (encoding instanceof _primitives.Dict) { + for (const entry of encoding.getRawValues()) { + if (entry instanceof _primitives.Name) { + hash.update(entry.name); + } else if (entry instanceof _primitives.Ref) { + hash.update(entry.toString()); + } else if (Array.isArray(entry)) { + const diffLength = entry.length, + diffBuf = new Array(diffLength); + for (let j = 0; j < diffLength; j++) { + const diffEntry = entry[j]; + if (diffEntry instanceof _primitives.Name) { + diffBuf[j] = diffEntry.name; + } else if (typeof diffEntry === "number" || diffEntry instanceof _primitives.Ref) { + diffBuf[j] = diffEntry.toString(); + } + } + hash.update(diffBuf.join()); + } + } + } + hash.update(`${firstChar}-${lastChar}`); + toUnicode = dict.get("ToUnicode") || baseDict.get("ToUnicode"); + if (toUnicode instanceof _base_stream.BaseStream) { + const stream = toUnicode.str || toUnicode; + const uint8array = stream.buffer ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) : new Uint8Array(stream.bytes.buffer, stream.start, stream.end - stream.start); + hash.update(uint8array); + } else if (toUnicode instanceof _primitives.Name) { + hash.update(toUnicode.name); + } + const widths = dict.get("Widths") || baseDict.get("Widths"); + if (Array.isArray(widths)) { + const widthsBuf = []; + for (const entry of widths) { + if (typeof entry === "number" || entry instanceof _primitives.Ref) { + widthsBuf.push(entry.toString()); + } + } + hash.update(widthsBuf.join()); + } + if (composite) { + hash.update("compositeFont"); + const compositeWidths = dict.get("W") || baseDict.get("W"); + if (Array.isArray(compositeWidths)) { + const widthsBuf = []; + for (const entry of compositeWidths) { + if (typeof entry === "number" || entry instanceof _primitives.Ref) { + widthsBuf.push(entry.toString()); + } else if (Array.isArray(entry)) { + const subWidthsBuf = []; + for (const element of entry) { + if (typeof element === "number" || element instanceof _primitives.Ref) { + subWidthsBuf.push(element.toString()); + } + } + widthsBuf.push(`[${subWidthsBuf.join()}]`); + } + } + hash.update(widthsBuf.join()); + } + const cidToGidMap = dict.getRaw("CIDToGIDMap") || baseDict.getRaw("CIDToGIDMap"); + if (cidToGidMap instanceof _primitives.Name) { + hash.update(cidToGidMap.name); + } else if (cidToGidMap instanceof _primitives.Ref) { + hash.update(cidToGidMap.toString()); + } else if (cidToGidMap instanceof _base_stream.BaseStream) { + hash.update(cidToGidMap.peekBytes()); + } + } + } + return { + descriptor, + dict, + baseDict, + composite, + type: type.name, + firstChar, + lastChar, + toUnicode, + hash: hash ? hash.hexdigest() : "" + }; + } + async translateFont({ + descriptor, + dict, + baseDict, + composite, + type, + firstChar, + lastChar, + toUnicode, + cssFontInfo + }) { + const isType3Font = type === "Type3"; + let properties; + if (!descriptor) { + if (isType3Font) { + descriptor = new _primitives.Dict(null); + descriptor.set("FontName", _primitives.Name.get(type)); + descriptor.set("FontBBox", dict.getArray("FontBBox") || [0, 0, 0, 0]); + } else { + let baseFontName = dict.get("BaseFont"); + if (!(baseFontName instanceof _primitives.Name)) { + throw new _util.FormatError("Base font is not specified"); + } + baseFontName = baseFontName.name.replaceAll(/[,_]/g, "-"); + const metrics = this.getBaseFontMetrics(baseFontName); + const fontNameWoStyle = baseFontName.split("-")[0]; + const flags = (this.isSerifFont(fontNameWoStyle) ? _fonts_utils.FontFlags.Serif : 0) | (metrics.monospace ? _fonts_utils.FontFlags.FixedPitch : 0) | ((0, _standard_fonts.getSymbolsFonts)()[fontNameWoStyle] ? _fonts_utils.FontFlags.Symbolic : _fonts_utils.FontFlags.Nonsymbolic); + properties = { + type, + name: baseFontName, + loadedName: baseDict.loadedName, + systemFontInfo: null, + widths: metrics.widths, + defaultWidth: metrics.defaultWidth, + isSimulatedFlags: true, + flags, + firstChar, + lastChar, + toUnicode, + xHeight: 0, + capHeight: 0, + italicAngle: 0, + isType3Font + }; + const widths = dict.get("Widths"); + const standardFontName = (0, _standard_fonts.getStandardFontName)(baseFontName); + let file = null; + if (standardFontName) { + file = await this.fetchStandardFontData(standardFontName); + properties.isInternalFont = !!file; + } + if (!properties.isInternalFont && this.options.useSystemFonts) { + properties.systemFontInfo = (0, _font_substitutions.getFontSubstitution)(this.systemFontCache, this.idFactory, this.options.standardFontDataUrl, baseFontName, standardFontName); + } + return this.extractDataStructures(dict, dict, properties).then(newProperties => { + if (widths) { + const glyphWidths = []; + let j = firstChar; + for (const width of widths) { + glyphWidths[j++] = this.xref.fetchIfRef(width); + } + newProperties.widths = glyphWidths; + } else { + newProperties.widths = this.buildCharCodeToWidth(metrics.widths, newProperties); + } + return new _fonts.Font(baseFontName, file, newProperties); + }); + } + } + let fontName = descriptor.get("FontName"); + let baseFont = dict.get("BaseFont"); + if (typeof fontName === "string") { + fontName = _primitives.Name.get(fontName); + } + if (typeof baseFont === "string") { + baseFont = _primitives.Name.get(baseFont); + } + const fontNameStr = fontName?.name; + const baseFontStr = baseFont?.name; + if (!isType3Font && fontNameStr !== baseFontStr) { + (0, _util.info)(`The FontDescriptor's FontName is "${fontNameStr}" but ` + `should be the same as the Font's BaseFont "${baseFontStr}".`); + if (fontNameStr && baseFontStr && (baseFontStr.startsWith(fontNameStr) || !(0, _standard_fonts.isKnownFontName)(fontNameStr) && (0, _standard_fonts.isKnownFontName)(baseFontStr))) { + fontName = null; + } + } + fontName ||= baseFont; + if (!(fontName instanceof _primitives.Name)) { + throw new _util.FormatError("invalid font name"); + } + let fontFile, subtype, length1, length2, length3; + try { + fontFile = descriptor.get("FontFile", "FontFile2", "FontFile3"); + } catch (ex) { + if (!this.options.ignoreErrors) { + throw ex; + } + (0, _util.warn)(`translateFont - fetching "${fontName.name}" font file: "${ex}".`); + fontFile = new _stream.NullStream(); + } + let isInternalFont = false; + let glyphScaleFactors = null; + let systemFontInfo = null; + if (fontFile) { + if (fontFile.dict) { + const subtypeEntry = fontFile.dict.get("Subtype"); + if (subtypeEntry instanceof _primitives.Name) { + subtype = subtypeEntry.name; + } + length1 = fontFile.dict.get("Length1"); + length2 = fontFile.dict.get("Length2"); + length3 = fontFile.dict.get("Length3"); + } + } else if (cssFontInfo) { + const standardFontName = (0, _xfa_fonts.getXfaFontName)(fontName.name); + if (standardFontName) { + cssFontInfo.fontFamily = `${cssFontInfo.fontFamily}-PdfJS-XFA`; + cssFontInfo.metrics = standardFontName.metrics || null; + glyphScaleFactors = standardFontName.factors || null; + fontFile = await this.fetchStandardFontData(standardFontName.name); + isInternalFont = !!fontFile; + baseDict = dict = (0, _xfa_fonts.getXfaFontDict)(fontName.name); + composite = true; + } + } else if (!isType3Font) { + const standardFontName = (0, _standard_fonts.getStandardFontName)(fontName.name); + if (standardFontName) { + fontFile = await this.fetchStandardFontData(standardFontName); + isInternalFont = !!fontFile; + } + if (!isInternalFont && this.options.useSystemFonts) { + systemFontInfo = (0, _font_substitutions.getFontSubstitution)(this.systemFontCache, this.idFactory, this.options.standardFontDataUrl, fontName.name, standardFontName); + } + } + properties = { + type, + name: fontName.name, + subtype, + file: fontFile, + length1, + length2, + length3, + isInternalFont, + loadedName: baseDict.loadedName, + composite, + fixedPitch: false, + fontMatrix: dict.getArray("FontMatrix") || _util.FONT_IDENTITY_MATRIX, + firstChar, + lastChar, + toUnicode, + bbox: descriptor.getArray("FontBBox") || dict.getArray("FontBBox"), + ascent: descriptor.get("Ascent"), + descent: descriptor.get("Descent"), + xHeight: descriptor.get("XHeight") || 0, + capHeight: descriptor.get("CapHeight") || 0, + flags: descriptor.get("Flags"), + italicAngle: descriptor.get("ItalicAngle") || 0, + isType3Font, + cssFontInfo, + scaleFactors: glyphScaleFactors, + systemFontInfo + }; + if (composite) { + const cidEncoding = baseDict.get("Encoding"); + if (cidEncoding instanceof _primitives.Name) { + properties.cidEncoding = cidEncoding.name; + } + const cMap = await _cmap.CMapFactory.create({ + encoding: cidEncoding, + fetchBuiltInCMap: this._fetchBuiltInCMapBound, + useCMap: null + }); + properties.cMap = cMap; + properties.vertical = properties.cMap.vertical; + } + return this.extractDataStructures(dict, baseDict, properties).then(newProperties => { + this.extractWidths(dict, descriptor, newProperties); + return new _fonts.Font(fontName.name, fontFile, newProperties); + }); + } + static buildFontPaths(font, glyphs, handler, evaluatorOptions) { + function buildPath(fontChar) { + const glyphName = `${font.loadedName}_path_${fontChar}`; + try { + if (font.renderer.hasBuiltPath(fontChar)) { + return; + } + handler.send("commonobj", [glyphName, "FontPath", font.renderer.getPathJs(fontChar)]); + } catch (reason) { + if (evaluatorOptions.ignoreErrors) { + (0, _util.warn)(`buildFontPaths - ignoring ${glyphName} glyph: "${reason}".`); + return; + } + throw reason; + } + } + for (const glyph of glyphs) { + buildPath(glyph.fontChar); + const accent = glyph.accent; + if (accent?.fontChar) { + buildPath(accent.fontChar); + } + } + } + static get fallbackFontDict() { + const dict = new _primitives.Dict(); + dict.set("BaseFont", _primitives.Name.get("Helvetica")); + dict.set("Type", _primitives.Name.get("FallbackType")); + dict.set("Subtype", _primitives.Name.get("FallbackType")); + dict.set("Encoding", _primitives.Name.get("WinAnsiEncoding")); + return (0, _util.shadow)(this, "fallbackFontDict", dict); + } +} +exports.PartialEvaluator = PartialEvaluator; +class TranslatedFont { + constructor({ + loadedName, + font, + dict, + evaluatorOptions + }) { + this.loadedName = loadedName; + this.font = font; + this.dict = dict; + this._evaluatorOptions = evaluatorOptions || DefaultPartialEvaluatorOptions; + this.type3Loaded = null; + this.type3Dependencies = font.isType3Font ? new Set() : null; + this.sent = false; + } + send(handler) { + if (this.sent) { + return; + } + this.sent = true; + handler.send("commonobj", [this.loadedName, "Font", this.font.exportData(this._evaluatorOptions.fontExtraProperties)]); + } + fallback(handler) { + if (!this.font.data) { + return; + } + this.font.disableFontFace = true; + PartialEvaluator.buildFontPaths(this.font, this.font.glyphCacheValues, handler, this._evaluatorOptions); + } + loadType3Data(evaluator, resources, task) { + if (this.type3Loaded) { + return this.type3Loaded; + } + if (!this.font.isType3Font) { + throw new Error("Must be a Type3 font."); + } + const type3Evaluator = evaluator.clone({ + ignoreErrors: false + }); + type3Evaluator.parsingType3Font = true; + const type3FontRefs = new _primitives.RefSet(evaluator.type3FontRefs); + if (this.dict.objId && !type3FontRefs.has(this.dict.objId)) { + type3FontRefs.put(this.dict.objId); + } + type3Evaluator.type3FontRefs = type3FontRefs; + const translatedFont = this.font, + type3Dependencies = this.type3Dependencies; + let loadCharProcsPromise = Promise.resolve(); + const charProcs = this.dict.get("CharProcs"); + const fontResources = this.dict.get("Resources") || resources; + const charProcOperatorList = Object.create(null); + const fontBBox = _util.Util.normalizeRect(translatedFont.bbox || [0, 0, 0, 0]), + width = fontBBox[2] - fontBBox[0], + height = fontBBox[3] - fontBBox[1]; + const fontBBoxSize = Math.hypot(width, height); + for (const key of charProcs.getKeys()) { + loadCharProcsPromise = loadCharProcsPromise.then(() => { + const glyphStream = charProcs.get(key); + const operatorList = new _operator_list.OperatorList(); + return type3Evaluator.getOperatorList({ + stream: glyphStream, + task, + resources: fontResources, + operatorList + }).then(() => { + if (operatorList.fnArray[0] === _util.OPS.setCharWidthAndBounds) { + this._removeType3ColorOperators(operatorList, fontBBoxSize); + } + charProcOperatorList[key] = operatorList.getIR(); + for (const dependency of operatorList.dependencies) { + type3Dependencies.add(dependency); + } + }).catch(function (reason) { + (0, _util.warn)(`Type3 font resource "${key}" is not available.`); + const dummyOperatorList = new _operator_list.OperatorList(); + charProcOperatorList[key] = dummyOperatorList.getIR(); + }); + }); + } + this.type3Loaded = loadCharProcsPromise.then(() => { + translatedFont.charProcOperatorList = charProcOperatorList; + if (this._bbox) { + translatedFont.isCharBBox = true; + translatedFont.bbox = this._bbox; + } + }); + return this.type3Loaded; + } + _removeType3ColorOperators(operatorList, fontBBoxSize = NaN) { + const charBBox = _util.Util.normalizeRect(operatorList.argsArray[0].slice(2)), + width = charBBox[2] - charBBox[0], + height = charBBox[3] - charBBox[1]; + const charBBoxSize = Math.hypot(width, height); + if (width === 0 || height === 0) { + operatorList.fnArray.splice(0, 1); + operatorList.argsArray.splice(0, 1); + } else if (fontBBoxSize === 0 || Math.round(charBBoxSize / fontBBoxSize) >= 10) { + if (!this._bbox) { + this._bbox = [Infinity, Infinity, -Infinity, -Infinity]; + } + this._bbox[0] = Math.min(this._bbox[0], charBBox[0]); + this._bbox[1] = Math.min(this._bbox[1], charBBox[1]); + this._bbox[2] = Math.max(this._bbox[2], charBBox[2]); + this._bbox[3] = Math.max(this._bbox[3], charBBox[3]); + } + let i = 0, + ii = operatorList.length; + while (i < ii) { + switch (operatorList.fnArray[i]) { + case _util.OPS.setCharWidthAndBounds: + break; + case _util.OPS.setStrokeColorSpace: + case _util.OPS.setFillColorSpace: + case _util.OPS.setStrokeColor: + case _util.OPS.setStrokeColorN: + case _util.OPS.setFillColor: + case _util.OPS.setFillColorN: + case _util.OPS.setStrokeGray: + case _util.OPS.setFillGray: + case _util.OPS.setStrokeRGBColor: + case _util.OPS.setFillRGBColor: + case _util.OPS.setStrokeCMYKColor: + case _util.OPS.setFillCMYKColor: + case _util.OPS.shadingFill: + case _util.OPS.setRenderingIntent: + operatorList.fnArray.splice(i, 1); + operatorList.argsArray.splice(i, 1); + ii--; + continue; + case _util.OPS.setGState: + const [gStateObj] = operatorList.argsArray[i]; + let j = 0, + jj = gStateObj.length; + while (j < jj) { + const [gStateKey] = gStateObj[j]; + switch (gStateKey) { + case "TR": + case "TR2": + case "HT": + case "BG": + case "BG2": + case "UCR": + case "UCR2": + gStateObj.splice(j, 1); + jj--; + continue; + } + j++; + } + break; + } + i++; + } + } +} +class StateManager { + constructor(initialState = new EvalState()) { + this.state = initialState; + this.stateStack = []; + } + save() { + const old = this.state; + this.stateStack.push(this.state); + this.state = old.clone(); + } + restore() { + const prev = this.stateStack.pop(); + if (prev) { + this.state = prev; + } + } + transform(args) { + this.state.ctm = _util.Util.transform(this.state.ctm, args); + } +} +class TextState { + constructor() { + this.ctm = new Float32Array(_util.IDENTITY_MATRIX); + this.fontName = null; + this.fontSize = 0; + this.loadedName = null; + this.font = null; + this.fontMatrix = _util.FONT_IDENTITY_MATRIX; + this.textMatrix = _util.IDENTITY_MATRIX.slice(); + this.textLineMatrix = _util.IDENTITY_MATRIX.slice(); + this.charSpacing = 0; + this.wordSpacing = 0; + this.leading = 0; + this.textHScale = 1; + this.textRise = 0; + } + setTextMatrix(a, b, c, d, e, f) { + const m = this.textMatrix; + m[0] = a; + m[1] = b; + m[2] = c; + m[3] = d; + m[4] = e; + m[5] = f; + } + setTextLineMatrix(a, b, c, d, e, f) { + const m = this.textLineMatrix; + m[0] = a; + m[1] = b; + m[2] = c; + m[3] = d; + m[4] = e; + m[5] = f; + } + translateTextMatrix(x, y) { + const m = this.textMatrix; + m[4] = m[0] * x + m[2] * y + m[4]; + m[5] = m[1] * x + m[3] * y + m[5]; + } + translateTextLineMatrix(x, y) { + const m = this.textLineMatrix; + m[4] = m[0] * x + m[2] * y + m[4]; + m[5] = m[1] * x + m[3] * y + m[5]; + } + carriageReturn() { + this.translateTextLineMatrix(0, -this.leading); + this.textMatrix = this.textLineMatrix.slice(); + } + clone() { + const clone = Object.create(this); + clone.textMatrix = this.textMatrix.slice(); + clone.textLineMatrix = this.textLineMatrix.slice(); + clone.fontMatrix = this.fontMatrix.slice(); + return clone; + } +} +class EvalState { + constructor() { + this.ctm = new Float32Array(_util.IDENTITY_MATRIX); + this.font = null; + this.textRenderingMode = _util.TextRenderingMode.FILL; + this.fillColorSpace = _colorspace.ColorSpace.singletons.gray; + this.strokeColorSpace = _colorspace.ColorSpace.singletons.gray; + } + clone() { + return Object.create(this); + } +} +class EvaluatorPreprocessor { + static get opMap() { + const getOPMap = (0, _core_utils.getLookupTableFactory)(function (t) { + t.w = { + id: _util.OPS.setLineWidth, + numArgs: 1, + variableArgs: false + }; + t.J = { + id: _util.OPS.setLineCap, + numArgs: 1, + variableArgs: false + }; + t.j = { + id: _util.OPS.setLineJoin, + numArgs: 1, + variableArgs: false + }; + t.M = { + id: _util.OPS.setMiterLimit, + numArgs: 1, + variableArgs: false + }; + t.d = { + id: _util.OPS.setDash, + numArgs: 2, + variableArgs: false + }; + t.ri = { + id: _util.OPS.setRenderingIntent, + numArgs: 1, + variableArgs: false + }; + t.i = { + id: _util.OPS.setFlatness, + numArgs: 1, + variableArgs: false + }; + t.gs = { + id: _util.OPS.setGState, + numArgs: 1, + variableArgs: false + }; + t.q = { + id: _util.OPS.save, + numArgs: 0, + variableArgs: false + }; + t.Q = { + id: _util.OPS.restore, + numArgs: 0, + variableArgs: false + }; + t.cm = { + id: _util.OPS.transform, + numArgs: 6, + variableArgs: false + }; + t.m = { + id: _util.OPS.moveTo, + numArgs: 2, + variableArgs: false + }; + t.l = { + id: _util.OPS.lineTo, + numArgs: 2, + variableArgs: false + }; + t.c = { + id: _util.OPS.curveTo, + numArgs: 6, + variableArgs: false + }; + t.v = { + id: _util.OPS.curveTo2, + numArgs: 4, + variableArgs: false + }; + t.y = { + id: _util.OPS.curveTo3, + numArgs: 4, + variableArgs: false + }; + t.h = { + id: _util.OPS.closePath, + numArgs: 0, + variableArgs: false + }; + t.re = { + id: _util.OPS.rectangle, + numArgs: 4, + variableArgs: false + }; + t.S = { + id: _util.OPS.stroke, + numArgs: 0, + variableArgs: false + }; + t.s = { + id: _util.OPS.closeStroke, + numArgs: 0, + variableArgs: false + }; + t.f = { + id: _util.OPS.fill, + numArgs: 0, + variableArgs: false + }; + t.F = { + id: _util.OPS.fill, + numArgs: 0, + variableArgs: false + }; + t["f*"] = { + id: _util.OPS.eoFill, + numArgs: 0, + variableArgs: false + }; + t.B = { + id: _util.OPS.fillStroke, + numArgs: 0, + variableArgs: false + }; + t["B*"] = { + id: _util.OPS.eoFillStroke, + numArgs: 0, + variableArgs: false + }; + t.b = { + id: _util.OPS.closeFillStroke, + numArgs: 0, + variableArgs: false + }; + t["b*"] = { + id: _util.OPS.closeEOFillStroke, + numArgs: 0, + variableArgs: false + }; + t.n = { + id: _util.OPS.endPath, + numArgs: 0, + variableArgs: false + }; + t.W = { + id: _util.OPS.clip, + numArgs: 0, + variableArgs: false + }; + t["W*"] = { + id: _util.OPS.eoClip, + numArgs: 0, + variableArgs: false + }; + t.BT = { + id: _util.OPS.beginText, + numArgs: 0, + variableArgs: false + }; + t.ET = { + id: _util.OPS.endText, + numArgs: 0, + variableArgs: false + }; + t.Tc = { + id: _util.OPS.setCharSpacing, + numArgs: 1, + variableArgs: false + }; + t.Tw = { + id: _util.OPS.setWordSpacing, + numArgs: 1, + variableArgs: false + }; + t.Tz = { + id: _util.OPS.setHScale, + numArgs: 1, + variableArgs: false + }; + t.TL = { + id: _util.OPS.setLeading, + numArgs: 1, + variableArgs: false + }; + t.Tf = { + id: _util.OPS.setFont, + numArgs: 2, + variableArgs: false + }; + t.Tr = { + id: _util.OPS.setTextRenderingMode, + numArgs: 1, + variableArgs: false + }; + t.Ts = { + id: _util.OPS.setTextRise, + numArgs: 1, + variableArgs: false + }; + t.Td = { + id: _util.OPS.moveText, + numArgs: 2, + variableArgs: false + }; + t.TD = { + id: _util.OPS.setLeadingMoveText, + numArgs: 2, + variableArgs: false + }; + t.Tm = { + id: _util.OPS.setTextMatrix, + numArgs: 6, + variableArgs: false + }; + t["T*"] = { + id: _util.OPS.nextLine, + numArgs: 0, + variableArgs: false + }; + t.Tj = { + id: _util.OPS.showText, + numArgs: 1, + variableArgs: false + }; + t.TJ = { + id: _util.OPS.showSpacedText, + numArgs: 1, + variableArgs: false + }; + t["'"] = { + id: _util.OPS.nextLineShowText, + numArgs: 1, + variableArgs: false + }; + t['"'] = { + id: _util.OPS.nextLineSetSpacingShowText, + numArgs: 3, + variableArgs: false + }; + t.d0 = { + id: _util.OPS.setCharWidth, + numArgs: 2, + variableArgs: false + }; + t.d1 = { + id: _util.OPS.setCharWidthAndBounds, + numArgs: 6, + variableArgs: false + }; + t.CS = { + id: _util.OPS.setStrokeColorSpace, + numArgs: 1, + variableArgs: false + }; + t.cs = { + id: _util.OPS.setFillColorSpace, + numArgs: 1, + variableArgs: false + }; + t.SC = { + id: _util.OPS.setStrokeColor, + numArgs: 4, + variableArgs: true + }; + t.SCN = { + id: _util.OPS.setStrokeColorN, + numArgs: 33, + variableArgs: true + }; + t.sc = { + id: _util.OPS.setFillColor, + numArgs: 4, + variableArgs: true + }; + t.scn = { + id: _util.OPS.setFillColorN, + numArgs: 33, + variableArgs: true + }; + t.G = { + id: _util.OPS.setStrokeGray, + numArgs: 1, + variableArgs: false + }; + t.g = { + id: _util.OPS.setFillGray, + numArgs: 1, + variableArgs: false + }; + t.RG = { + id: _util.OPS.setStrokeRGBColor, + numArgs: 3, + variableArgs: false + }; + t.rg = { + id: _util.OPS.setFillRGBColor, + numArgs: 3, + variableArgs: false + }; + t.K = { + id: _util.OPS.setStrokeCMYKColor, + numArgs: 4, + variableArgs: false + }; + t.k = { + id: _util.OPS.setFillCMYKColor, + numArgs: 4, + variableArgs: false + }; + t.sh = { + id: _util.OPS.shadingFill, + numArgs: 1, + variableArgs: false + }; + t.BI = { + id: _util.OPS.beginInlineImage, + numArgs: 0, + variableArgs: false + }; + t.ID = { + id: _util.OPS.beginImageData, + numArgs: 0, + variableArgs: false + }; + t.EI = { + id: _util.OPS.endInlineImage, + numArgs: 1, + variableArgs: false + }; + t.Do = { + id: _util.OPS.paintXObject, + numArgs: 1, + variableArgs: false + }; + t.MP = { + id: _util.OPS.markPoint, + numArgs: 1, + variableArgs: false + }; + t.DP = { + id: _util.OPS.markPointProps, + numArgs: 2, + variableArgs: false + }; + t.BMC = { + id: _util.OPS.beginMarkedContent, + numArgs: 1, + variableArgs: false + }; + t.BDC = { + id: _util.OPS.beginMarkedContentProps, + numArgs: 2, + variableArgs: false + }; + t.EMC = { + id: _util.OPS.endMarkedContent, + numArgs: 0, + variableArgs: false + }; + t.BX = { + id: _util.OPS.beginCompat, + numArgs: 0, + variableArgs: false + }; + t.EX = { + id: _util.OPS.endCompat, + numArgs: 0, + variableArgs: false + }; + t.BM = null; + t.BD = null; + t.true = null; + t.fa = null; + t.fal = null; + t.fals = null; + t.false = null; + t.nu = null; + t.nul = null; + t.null = null; + }); + return (0, _util.shadow)(this, "opMap", getOPMap()); + } + static MAX_INVALID_PATH_OPS = 10; + constructor(stream, xref, stateManager = new StateManager()) { + this.parser = new _parser.Parser({ + lexer: new _parser.Lexer(stream, EvaluatorPreprocessor.opMap), + xref + }); + this.stateManager = stateManager; + this.nonProcessedArgs = []; + this._isPathOp = false; + this._numInvalidPathOPS = 0; + } + get savedStatesDepth() { + return this.stateManager.stateStack.length; + } + read(operation) { + let args = operation.args; + while (true) { + const obj = this.parser.getObj(); + if (obj instanceof _primitives.Cmd) { + const cmd = obj.cmd; + const opSpec = EvaluatorPreprocessor.opMap[cmd]; + if (!opSpec) { + (0, _util.warn)(`Unknown command "${cmd}".`); + continue; + } + const fn = opSpec.id; + const numArgs = opSpec.numArgs; + let argsLength = args !== null ? args.length : 0; + if (!this._isPathOp) { + this._numInvalidPathOPS = 0; + } + this._isPathOp = fn >= _util.OPS.moveTo && fn <= _util.OPS.endPath; + if (!opSpec.variableArgs) { + if (argsLength !== numArgs) { + const nonProcessedArgs = this.nonProcessedArgs; + while (argsLength > numArgs) { + nonProcessedArgs.push(args.shift()); + argsLength--; + } + while (argsLength < numArgs && nonProcessedArgs.length !== 0) { + if (args === null) { + args = []; + } + args.unshift(nonProcessedArgs.pop()); + argsLength++; + } + } + if (argsLength < numArgs) { + const partialMsg = `command ${cmd}: expected ${numArgs} args, ` + `but received ${argsLength} args.`; + if (this._isPathOp && ++this._numInvalidPathOPS > EvaluatorPreprocessor.MAX_INVALID_PATH_OPS) { + throw new _util.FormatError(`Invalid ${partialMsg}`); + } + (0, _util.warn)(`Skipping ${partialMsg}`); + if (args !== null) { + args.length = 0; + } + continue; + } + } else if (argsLength > numArgs) { + (0, _util.info)(`Command ${cmd}: expected [0, ${numArgs}] args, ` + `but received ${argsLength} args.`); + } + this.preprocessCommand(fn, args); + operation.fn = fn; + operation.args = args; + return true; + } + if (obj === _primitives.EOF) { + return false; + } + if (obj !== null) { + if (args === null) { + args = []; + } + args.push(obj); + if (args.length > 33) { + throw new _util.FormatError("Too many arguments"); + } + } + } + } + preprocessCommand(fn, args) { + switch (fn | 0) { + case _util.OPS.save: + this.stateManager.save(); + break; + case _util.OPS.restore: + this.stateManager.restore(); + break; + case _util.OPS.transform: + this.stateManager.transform(args); + break; + } + } +} +exports.EvaluatorPreprocessor = EvaluatorPreprocessor; + +/***/ }), +/* 14 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.IdentityCMap = exports.CMapFactory = exports.CMap = void 0; +var _util = __w_pdfjs_require__(2); +var _primitives = __w_pdfjs_require__(4); +var _base_stream = __w_pdfjs_require__(5); +var _binary_cmap = __w_pdfjs_require__(15); +var _parser = __w_pdfjs_require__(16); +var _core_utils = __w_pdfjs_require__(3); +var _stream = __w_pdfjs_require__(8); +const BUILT_IN_CMAPS = ["Adobe-GB1-UCS2", "Adobe-CNS1-UCS2", "Adobe-Japan1-UCS2", "Adobe-Korea1-UCS2", "78-EUC-H", "78-EUC-V", "78-H", "78-RKSJ-H", "78-RKSJ-V", "78-V", "78ms-RKSJ-H", "78ms-RKSJ-V", "83pv-RKSJ-H", "90ms-RKSJ-H", "90ms-RKSJ-V", "90msp-RKSJ-H", "90msp-RKSJ-V", "90pv-RKSJ-H", "90pv-RKSJ-V", "Add-H", "Add-RKSJ-H", "Add-RKSJ-V", "Add-V", "Adobe-CNS1-0", "Adobe-CNS1-1", "Adobe-CNS1-2", "Adobe-CNS1-3", "Adobe-CNS1-4", "Adobe-CNS1-5", "Adobe-CNS1-6", "Adobe-GB1-0", "Adobe-GB1-1", "Adobe-GB1-2", "Adobe-GB1-3", "Adobe-GB1-4", "Adobe-GB1-5", "Adobe-Japan1-0", "Adobe-Japan1-1", "Adobe-Japan1-2", "Adobe-Japan1-3", "Adobe-Japan1-4", "Adobe-Japan1-5", "Adobe-Japan1-6", "Adobe-Korea1-0", "Adobe-Korea1-1", "Adobe-Korea1-2", "B5-H", "B5-V", "B5pc-H", "B5pc-V", "CNS-EUC-H", "CNS-EUC-V", "CNS1-H", "CNS1-V", "CNS2-H", "CNS2-V", "ETHK-B5-H", "ETHK-B5-V", "ETen-B5-H", "ETen-B5-V", "ETenms-B5-H", "ETenms-B5-V", "EUC-H", "EUC-V", "Ext-H", "Ext-RKSJ-H", "Ext-RKSJ-V", "Ext-V", "GB-EUC-H", "GB-EUC-V", "GB-H", "GB-V", "GBK-EUC-H", "GBK-EUC-V", "GBK2K-H", "GBK2K-V", "GBKp-EUC-H", "GBKp-EUC-V", "GBT-EUC-H", "GBT-EUC-V", "GBT-H", "GBT-V", "GBTpc-EUC-H", "GBTpc-EUC-V", "GBpc-EUC-H", "GBpc-EUC-V", "H", "HKdla-B5-H", "HKdla-B5-V", "HKdlb-B5-H", "HKdlb-B5-V", "HKgccs-B5-H", "HKgccs-B5-V", "HKm314-B5-H", "HKm314-B5-V", "HKm471-B5-H", "HKm471-B5-V", "HKscs-B5-H", "HKscs-B5-V", "Hankaku", "Hiragana", "KSC-EUC-H", "KSC-EUC-V", "KSC-H", "KSC-Johab-H", "KSC-Johab-V", "KSC-V", "KSCms-UHC-H", "KSCms-UHC-HW-H", "KSCms-UHC-HW-V", "KSCms-UHC-V", "KSCpc-EUC-H", "KSCpc-EUC-V", "Katakana", "NWP-H", "NWP-V", "RKSJ-H", "RKSJ-V", "Roman", "UniCNS-UCS2-H", "UniCNS-UCS2-V", "UniCNS-UTF16-H", "UniCNS-UTF16-V", "UniCNS-UTF32-H", "UniCNS-UTF32-V", "UniCNS-UTF8-H", "UniCNS-UTF8-V", "UniGB-UCS2-H", "UniGB-UCS2-V", "UniGB-UTF16-H", "UniGB-UTF16-V", "UniGB-UTF32-H", "UniGB-UTF32-V", "UniGB-UTF8-H", "UniGB-UTF8-V", "UniJIS-UCS2-H", "UniJIS-UCS2-HW-H", "UniJIS-UCS2-HW-V", "UniJIS-UCS2-V", "UniJIS-UTF16-H", "UniJIS-UTF16-V", "UniJIS-UTF32-H", "UniJIS-UTF32-V", "UniJIS-UTF8-H", "UniJIS-UTF8-V", "UniJIS2004-UTF16-H", "UniJIS2004-UTF16-V", "UniJIS2004-UTF32-H", "UniJIS2004-UTF32-V", "UniJIS2004-UTF8-H", "UniJIS2004-UTF8-V", "UniJISPro-UCS2-HW-V", "UniJISPro-UCS2-V", "UniJISPro-UTF8-V", "UniJISX0213-UTF32-H", "UniJISX0213-UTF32-V", "UniJISX02132004-UTF32-H", "UniJISX02132004-UTF32-V", "UniKS-UCS2-H", "UniKS-UCS2-V", "UniKS-UTF16-H", "UniKS-UTF16-V", "UniKS-UTF32-H", "UniKS-UTF32-V", "UniKS-UTF8-H", "UniKS-UTF8-V", "V", "WP-Symbol"]; +const MAX_MAP_RANGE = 2 ** 24 - 1; +class CMap { + constructor(builtInCMap = false) { + this.codespaceRanges = [[], [], [], []]; + this.numCodespaceRanges = 0; + this._map = []; + this.name = ""; + this.vertical = false; + this.useCMap = null; + this.builtInCMap = builtInCMap; + } + addCodespaceRange(n, low, high) { + this.codespaceRanges[n - 1].push(low, high); + this.numCodespaceRanges++; + } + mapCidRange(low, high, dstLow) { + if (high - low > MAX_MAP_RANGE) { + throw new Error("mapCidRange - ignoring data above MAX_MAP_RANGE."); + } + while (low <= high) { + this._map[low++] = dstLow++; + } + } + mapBfRange(low, high, dstLow) { + if (high - low > MAX_MAP_RANGE) { + throw new Error("mapBfRange - ignoring data above MAX_MAP_RANGE."); + } + const lastByte = dstLow.length - 1; + while (low <= high) { + this._map[low++] = dstLow; + const nextCharCode = dstLow.charCodeAt(lastByte) + 1; + if (nextCharCode > 0xff) { + dstLow = dstLow.substring(0, lastByte - 1) + String.fromCharCode(dstLow.charCodeAt(lastByte - 1) + 1) + "\x00"; + continue; + } + dstLow = dstLow.substring(0, lastByte) + String.fromCharCode(nextCharCode); + } + } + mapBfRangeToArray(low, high, array) { + if (high - low > MAX_MAP_RANGE) { + throw new Error("mapBfRangeToArray - ignoring data above MAX_MAP_RANGE."); + } + const ii = array.length; + let i = 0; + while (low <= high && i < ii) { + this._map[low] = array[i++]; + ++low; + } + } + mapOne(src, dst) { + this._map[src] = dst; + } + lookup(code) { + return this._map[code]; + } + contains(code) { + return this._map[code] !== undefined; + } + forEach(callback) { + const map = this._map; + const length = map.length; + if (length <= 0x10000) { + for (let i = 0; i < length; i++) { + if (map[i] !== undefined) { + callback(i, map[i]); + } + } + } else { + for (const i in map) { + callback(i, map[i]); + } + } + } + charCodeOf(value) { + const map = this._map; + if (map.length <= 0x10000) { + return map.indexOf(value); + } + for (const charCode in map) { + if (map[charCode] === value) { + return charCode | 0; + } + } + return -1; + } + getMap() { + return this._map; + } + readCharCode(str, offset, out) { + let c = 0; + const codespaceRanges = this.codespaceRanges; + for (let n = 0, nn = codespaceRanges.length; n < nn; n++) { + c = (c << 8 | str.charCodeAt(offset + n)) >>> 0; + const codespaceRange = codespaceRanges[n]; + for (let k = 0, kk = codespaceRange.length; k < kk;) { + const low = codespaceRange[k++]; + const high = codespaceRange[k++]; + if (c >= low && c <= high) { + out.charcode = c; + out.length = n + 1; + return; + } + } + } + out.charcode = 0; + out.length = 1; + } + getCharCodeLength(charCode) { + const codespaceRanges = this.codespaceRanges; + for (let n = 0, nn = codespaceRanges.length; n < nn; n++) { + const codespaceRange = codespaceRanges[n]; + for (let k = 0, kk = codespaceRange.length; k < kk;) { + const low = codespaceRange[k++]; + const high = codespaceRange[k++]; + if (charCode >= low && charCode <= high) { + return n + 1; + } + } + } + return 1; + } + get length() { + return this._map.length; + } + get isIdentityCMap() { + if (!(this.name === "Identity-H" || this.name === "Identity-V")) { + return false; + } + if (this._map.length !== 0x10000) { + return false; + } + for (let i = 0; i < 0x10000; i++) { + if (this._map[i] !== i) { + return false; + } + } + return true; + } +} +exports.CMap = CMap; +class IdentityCMap extends CMap { + constructor(vertical, n) { + super(); + this.vertical = vertical; + this.addCodespaceRange(n, 0, 0xffff); + } + mapCidRange(low, high, dstLow) { + (0, _util.unreachable)("should not call mapCidRange"); + } + mapBfRange(low, high, dstLow) { + (0, _util.unreachable)("should not call mapBfRange"); + } + mapBfRangeToArray(low, high, array) { + (0, _util.unreachable)("should not call mapBfRangeToArray"); + } + mapOne(src, dst) { + (0, _util.unreachable)("should not call mapCidOne"); + } + lookup(code) { + return Number.isInteger(code) && code <= 0xffff ? code : undefined; + } + contains(code) { + return Number.isInteger(code) && code <= 0xffff; + } + forEach(callback) { + for (let i = 0; i <= 0xffff; i++) { + callback(i, i); + } + } + charCodeOf(value) { + return Number.isInteger(value) && value <= 0xffff ? value : -1; + } + getMap() { + const map = new Array(0x10000); + for (let i = 0; i <= 0xffff; i++) { + map[i] = i; + } + return map; + } + get length() { + return 0x10000; + } + get isIdentityCMap() { + (0, _util.unreachable)("should not access .isIdentityCMap"); + } +} +exports.IdentityCMap = IdentityCMap; +function strToInt(str) { + let a = 0; + for (let i = 0; i < str.length; i++) { + a = a << 8 | str.charCodeAt(i); + } + return a >>> 0; +} +function expectString(obj) { + if (typeof obj !== "string") { + throw new _util.FormatError("Malformed CMap: expected string."); + } +} +function expectInt(obj) { + if (!Number.isInteger(obj)) { + throw new _util.FormatError("Malformed CMap: expected int."); + } +} +function parseBfChar(cMap, lexer) { + while (true) { + let obj = lexer.getObj(); + if (obj === _primitives.EOF) { + break; + } + if ((0, _primitives.isCmd)(obj, "endbfchar")) { + return; + } + expectString(obj); + const src = strToInt(obj); + obj = lexer.getObj(); + expectString(obj); + const dst = obj; + cMap.mapOne(src, dst); + } +} +function parseBfRange(cMap, lexer) { + while (true) { + let obj = lexer.getObj(); + if (obj === _primitives.EOF) { + break; + } + if ((0, _primitives.isCmd)(obj, "endbfrange")) { + return; + } + expectString(obj); + const low = strToInt(obj); + obj = lexer.getObj(); + expectString(obj); + const high = strToInt(obj); + obj = lexer.getObj(); + if (Number.isInteger(obj) || typeof obj === "string") { + const dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj; + cMap.mapBfRange(low, high, dstLow); + } else if ((0, _primitives.isCmd)(obj, "[")) { + obj = lexer.getObj(); + const array = []; + while (!(0, _primitives.isCmd)(obj, "]") && obj !== _primitives.EOF) { + array.push(obj); + obj = lexer.getObj(); + } + cMap.mapBfRangeToArray(low, high, array); + } else { + break; + } + } + throw new _util.FormatError("Invalid bf range."); +} +function parseCidChar(cMap, lexer) { + while (true) { + let obj = lexer.getObj(); + if (obj === _primitives.EOF) { + break; + } + if ((0, _primitives.isCmd)(obj, "endcidchar")) { + return; + } + expectString(obj); + const src = strToInt(obj); + obj = lexer.getObj(); + expectInt(obj); + const dst = obj; + cMap.mapOne(src, dst); + } +} +function parseCidRange(cMap, lexer) { + while (true) { + let obj = lexer.getObj(); + if (obj === _primitives.EOF) { + break; + } + if ((0, _primitives.isCmd)(obj, "endcidrange")) { + return; + } + expectString(obj); + const low = strToInt(obj); + obj = lexer.getObj(); + expectString(obj); + const high = strToInt(obj); + obj = lexer.getObj(); + expectInt(obj); + const dstLow = obj; + cMap.mapCidRange(low, high, dstLow); + } +} +function parseCodespaceRange(cMap, lexer) { + while (true) { + let obj = lexer.getObj(); + if (obj === _primitives.EOF) { + break; + } + if ((0, _primitives.isCmd)(obj, "endcodespacerange")) { + return; + } + if (typeof obj !== "string") { + break; + } + const low = strToInt(obj); + obj = lexer.getObj(); + if (typeof obj !== "string") { + break; + } + const high = strToInt(obj); + cMap.addCodespaceRange(obj.length, low, high); + } + throw new _util.FormatError("Invalid codespace range."); +} +function parseWMode(cMap, lexer) { + const obj = lexer.getObj(); + if (Number.isInteger(obj)) { + cMap.vertical = !!obj; + } +} +function parseCMapName(cMap, lexer) { + const obj = lexer.getObj(); + if (obj instanceof _primitives.Name) { + cMap.name = obj.name; + } +} +async function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) { + let previous, embeddedUseCMap; + objLoop: while (true) { + try { + const obj = lexer.getObj(); + if (obj === _primitives.EOF) { + break; + } else if (obj instanceof _primitives.Name) { + if (obj.name === "WMode") { + parseWMode(cMap, lexer); + } else if (obj.name === "CMapName") { + parseCMapName(cMap, lexer); + } + previous = obj; + } else if (obj instanceof _primitives.Cmd) { + switch (obj.cmd) { + case "endcmap": + break objLoop; + case "usecmap": + if (previous instanceof _primitives.Name) { + embeddedUseCMap = previous.name; + } + break; + case "begincodespacerange": + parseCodespaceRange(cMap, lexer); + break; + case "beginbfchar": + parseBfChar(cMap, lexer); + break; + case "begincidchar": + parseCidChar(cMap, lexer); + break; + case "beginbfrange": + parseBfRange(cMap, lexer); + break; + case "begincidrange": + parseCidRange(cMap, lexer); + break; + } + } + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + (0, _util.warn)("Invalid cMap data: " + ex); + continue; + } + } + if (!useCMap && embeddedUseCMap) { + useCMap = embeddedUseCMap; + } + if (useCMap) { + return extendCMap(cMap, fetchBuiltInCMap, useCMap); + } + return cMap; +} +async function extendCMap(cMap, fetchBuiltInCMap, useCMap) { + cMap.useCMap = await createBuiltInCMap(useCMap, fetchBuiltInCMap); + if (cMap.numCodespaceRanges === 0) { + const useCodespaceRanges = cMap.useCMap.codespaceRanges; + for (let i = 0; i < useCodespaceRanges.length; i++) { + cMap.codespaceRanges[i] = useCodespaceRanges[i].slice(); + } + cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges; + } + cMap.useCMap.forEach(function (key, value) { + if (!cMap.contains(key)) { + cMap.mapOne(key, cMap.useCMap.lookup(key)); + } + }); + return cMap; +} +async function createBuiltInCMap(name, fetchBuiltInCMap) { + if (name === "Identity-H") { + return new IdentityCMap(false, 2); + } else if (name === "Identity-V") { + return new IdentityCMap(true, 2); + } + if (!BUILT_IN_CMAPS.includes(name)) { + throw new Error("Unknown CMap name: " + name); + } + if (!fetchBuiltInCMap) { + throw new Error("Built-in CMap parameters are not provided."); + } + const { + cMapData, + compressionType + } = await fetchBuiltInCMap(name); + const cMap = new CMap(true); + if (compressionType === _util.CMapCompressionType.BINARY) { + return new _binary_cmap.BinaryCMapReader().process(cMapData, cMap, useCMap => { + return extendCMap(cMap, fetchBuiltInCMap, useCMap); + }); + } + if (compressionType === _util.CMapCompressionType.NONE) { + const lexer = new _parser.Lexer(new _stream.Stream(cMapData)); + return parseCMap(cMap, lexer, fetchBuiltInCMap, null); + } + throw new Error(`Invalid CMap "compressionType" value: ${compressionType}`); +} +class CMapFactory { + static async create({ + encoding, + fetchBuiltInCMap, + useCMap + }) { + if (encoding instanceof _primitives.Name) { + return createBuiltInCMap(encoding.name, fetchBuiltInCMap); + } else if (encoding instanceof _base_stream.BaseStream) { + const parsedCMap = await parseCMap(new CMap(), new _parser.Lexer(encoding), fetchBuiltInCMap, useCMap); + if (parsedCMap.isIdentityCMap) { + return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap); + } + return parsedCMap; + } + throw new Error("Encoding required."); + } +} +exports.CMapFactory = CMapFactory; + +/***/ }), +/* 15 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.BinaryCMapReader = void 0; +var _util = __w_pdfjs_require__(2); +function hexToInt(a, size) { + let n = 0; + for (let i = 0; i <= size; i++) { + n = n << 8 | a[i]; + } + return n >>> 0; +} +function hexToStr(a, size) { + if (size === 1) { + return String.fromCharCode(a[0], a[1]); + } + if (size === 3) { + return String.fromCharCode(a[0], a[1], a[2], a[3]); + } + return String.fromCharCode(...a.subarray(0, size + 1)); +} +function addHex(a, b, size) { + let c = 0; + for (let i = size; i >= 0; i--) { + c += a[i] + b[i]; + a[i] = c & 255; + c >>= 8; + } +} +function incHex(a, size) { + let c = 1; + for (let i = size; i >= 0 && c > 0; i--) { + c += a[i]; + a[i] = c & 255; + c >>= 8; + } +} +const MAX_NUM_SIZE = 16; +const MAX_ENCODED_NUM_SIZE = 19; +class BinaryCMapStream { + constructor(data) { + this.buffer = data; + this.pos = 0; + this.end = data.length; + this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE); + } + readByte() { + if (this.pos >= this.end) { + return -1; + } + return this.buffer[this.pos++]; + } + readNumber() { + let n = 0; + let last; + do { + const b = this.readByte(); + if (b < 0) { + throw new _util.FormatError("unexpected EOF in bcmap"); + } + last = !(b & 0x80); + n = n << 7 | b & 0x7f; + } while (!last); + return n; + } + readSigned() { + const n = this.readNumber(); + return n & 1 ? ~(n >>> 1) : n >>> 1; + } + readHex(num, size) { + num.set(this.buffer.subarray(this.pos, this.pos + size + 1)); + this.pos += size + 1; + } + readHexNumber(num, size) { + let last; + const stack = this.tmpBuf; + let sp = 0; + do { + const b = this.readByte(); + if (b < 0) { + throw new _util.FormatError("unexpected EOF in bcmap"); + } + last = !(b & 0x80); + stack[sp++] = b & 0x7f; + } while (!last); + let i = size, + buffer = 0, + bufferSize = 0; + while (i >= 0) { + while (bufferSize < 8 && stack.length > 0) { + buffer |= stack[--sp] << bufferSize; + bufferSize += 7; + } + num[i] = buffer & 255; + i--; + buffer >>= 8; + bufferSize -= 8; + } + } + readHexSigned(num, size) { + this.readHexNumber(num, size); + const sign = num[size] & 1 ? 255 : 0; + let c = 0; + for (let i = 0; i <= size; i++) { + c = (c & 1) << 8 | num[i]; + num[i] = c >> 1 ^ sign; + } + } + readString() { + const len = this.readNumber(), + buf = new Array(len); + for (let i = 0; i < len; i++) { + buf[i] = this.readNumber(); + } + return String.fromCharCode(...buf); + } +} +class BinaryCMapReader { + async process(data, cMap, extend) { + const stream = new BinaryCMapStream(data); + const header = stream.readByte(); + cMap.vertical = !!(header & 1); + let useCMap = null; + const start = new Uint8Array(MAX_NUM_SIZE); + const end = new Uint8Array(MAX_NUM_SIZE); + const char = new Uint8Array(MAX_NUM_SIZE); + const charCode = new Uint8Array(MAX_NUM_SIZE); + const tmp = new Uint8Array(MAX_NUM_SIZE); + let code; + let b; + while ((b = stream.readByte()) >= 0) { + const type = b >> 5; + if (type === 7) { + switch (b & 0x1f) { + case 0: + stream.readString(); + break; + case 1: + useCMap = stream.readString(); + break; + } + continue; + } + const sequence = !!(b & 0x10); + const dataSize = b & 15; + if (dataSize + 1 > MAX_NUM_SIZE) { + throw new Error("BinaryCMapReader.process: Invalid dataSize."); + } + const ucs2DataSize = 1; + const subitemsCount = stream.readNumber(); + switch (type) { + case 0: + stream.readHex(start, dataSize); + stream.readHexNumber(end, dataSize); + addHex(end, start, dataSize); + cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize)); + for (let i = 1; i < subitemsCount; i++) { + incHex(end, dataSize); + stream.readHexNumber(start, dataSize); + addHex(start, end, dataSize); + stream.readHexNumber(end, dataSize); + addHex(end, start, dataSize); + cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize)); + } + break; + case 1: + stream.readHex(start, dataSize); + stream.readHexNumber(end, dataSize); + addHex(end, start, dataSize); + stream.readNumber(); + for (let i = 1; i < subitemsCount; i++) { + incHex(end, dataSize); + stream.readHexNumber(start, dataSize); + addHex(start, end, dataSize); + stream.readHexNumber(end, dataSize); + addHex(end, start, dataSize); + stream.readNumber(); + } + break; + case 2: + stream.readHex(char, dataSize); + code = stream.readNumber(); + cMap.mapOne(hexToInt(char, dataSize), code); + for (let i = 1; i < subitemsCount; i++) { + incHex(char, dataSize); + if (!sequence) { + stream.readHexNumber(tmp, dataSize); + addHex(char, tmp, dataSize); + } + code = stream.readSigned() + (code + 1); + cMap.mapOne(hexToInt(char, dataSize), code); + } + break; + case 3: + stream.readHex(start, dataSize); + stream.readHexNumber(end, dataSize); + addHex(end, start, dataSize); + code = stream.readNumber(); + cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code); + for (let i = 1; i < subitemsCount; i++) { + incHex(end, dataSize); + if (!sequence) { + stream.readHexNumber(start, dataSize); + addHex(start, end, dataSize); + } else { + start.set(end); + } + stream.readHexNumber(end, dataSize); + addHex(end, start, dataSize); + code = stream.readNumber(); + cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code); + } + break; + case 4: + stream.readHex(char, ucs2DataSize); + stream.readHex(charCode, dataSize); + cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize)); + for (let i = 1; i < subitemsCount; i++) { + incHex(char, ucs2DataSize); + if (!sequence) { + stream.readHexNumber(tmp, ucs2DataSize); + addHex(char, tmp, ucs2DataSize); + } + incHex(charCode, dataSize); + stream.readHexSigned(tmp, dataSize); + addHex(charCode, tmp, dataSize); + cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize)); + } + break; + case 5: + stream.readHex(start, ucs2DataSize); + stream.readHexNumber(end, ucs2DataSize); + addHex(end, start, ucs2DataSize); + stream.readHex(charCode, dataSize); + cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize)); + for (let i = 1; i < subitemsCount; i++) { + incHex(end, ucs2DataSize); + if (!sequence) { + stream.readHexNumber(start, ucs2DataSize); + addHex(start, end, ucs2DataSize); + } else { + start.set(end); + } + stream.readHexNumber(end, ucs2DataSize); + addHex(end, start, ucs2DataSize); + stream.readHex(charCode, dataSize); + cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize)); + } + break; + default: + throw new Error(`BinaryCMapReader.process - unknown type: ${type}`); + } + } + if (useCMap) { + return extend(useCMap); + } + return cMap; + } +} +exports.BinaryCMapReader = BinaryCMapReader; + +/***/ }), +/* 16 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Parser = exports.Linearization = exports.Lexer = void 0; +var _util = __w_pdfjs_require__(2); +var _primitives = __w_pdfjs_require__(4); +var _core_utils = __w_pdfjs_require__(3); +var _stream = __w_pdfjs_require__(8); +var _ascii_85_stream = __w_pdfjs_require__(17); +var _ascii_hex_stream = __w_pdfjs_require__(19); +var _ccitt_stream = __w_pdfjs_require__(20); +var _flate_stream = __w_pdfjs_require__(22); +var _jbig2_stream = __w_pdfjs_require__(23); +var _jpeg_stream = __w_pdfjs_require__(26); +var _jpx_stream = __w_pdfjs_require__(29); +var _lzw_stream = __w_pdfjs_require__(31); +var _predictor_stream = __w_pdfjs_require__(32); +var _run_length_stream = __w_pdfjs_require__(33); +const MAX_LENGTH_TO_CACHE = 1000; +function getInlineImageCacheKey(bytes) { + const strBuf = [], + ii = bytes.length; + let i = 0; + while (i < ii - 1) { + strBuf.push(bytes[i++] << 8 | bytes[i++]); + } + if (i < ii) { + strBuf.push(bytes[i]); + } + return ii + "_" + String.fromCharCode.apply(null, strBuf); +} +class Parser { + constructor({ + lexer, + xref, + allowStreams = false, + recoveryMode = false + }) { + this.lexer = lexer; + this.xref = xref; + this.allowStreams = allowStreams; + this.recoveryMode = recoveryMode; + this.imageCache = Object.create(null); + this._imageId = 0; + this.refill(); + } + refill() { + this.buf1 = this.lexer.getObj(); + this.buf2 = this.lexer.getObj(); + } + shift() { + if (this.buf2 instanceof _primitives.Cmd && this.buf2.cmd === "ID") { + this.buf1 = this.buf2; + this.buf2 = null; + } else { + this.buf1 = this.buf2; + this.buf2 = this.lexer.getObj(); + } + } + tryShift() { + try { + this.shift(); + return true; + } catch (e) { + if (e instanceof _core_utils.MissingDataException) { + throw e; + } + return false; + } + } + getObj(cipherTransform = null) { + const buf1 = this.buf1; + this.shift(); + if (buf1 instanceof _primitives.Cmd) { + switch (buf1.cmd) { + case "BI": + return this.makeInlineImage(cipherTransform); + case "[": + const array = []; + while (!(0, _primitives.isCmd)(this.buf1, "]") && this.buf1 !== _primitives.EOF) { + array.push(this.getObj(cipherTransform)); + } + if (this.buf1 === _primitives.EOF) { + if (this.recoveryMode) { + return array; + } + throw new _core_utils.ParserEOFException("End of file inside array."); + } + this.shift(); + return array; + case "<<": + const dict = new _primitives.Dict(this.xref); + while (!(0, _primitives.isCmd)(this.buf1, ">>") && this.buf1 !== _primitives.EOF) { + if (!(this.buf1 instanceof _primitives.Name)) { + (0, _util.info)("Malformed dictionary: key must be a name object"); + this.shift(); + continue; + } + const key = this.buf1.name; + this.shift(); + if (this.buf1 === _primitives.EOF) { + break; + } + dict.set(key, this.getObj(cipherTransform)); + } + if (this.buf1 === _primitives.EOF) { + if (this.recoveryMode) { + return dict; + } + throw new _core_utils.ParserEOFException("End of file inside dictionary."); + } + if ((0, _primitives.isCmd)(this.buf2, "stream")) { + return this.allowStreams ? this.makeStream(dict, cipherTransform) : dict; + } + this.shift(); + return dict; + default: + return buf1; + } + } + if (Number.isInteger(buf1)) { + if (Number.isInteger(this.buf1) && (0, _primitives.isCmd)(this.buf2, "R")) { + const ref = _primitives.Ref.get(buf1, this.buf1); + this.shift(); + this.shift(); + return ref; + } + return buf1; + } + if (typeof buf1 === "string") { + if (cipherTransform) { + return cipherTransform.decryptString(buf1); + } + return buf1; + } + return buf1; + } + findDefaultInlineStreamEnd(stream) { + const E = 0x45, + I = 0x49, + SPACE = 0x20, + LF = 0xa, + CR = 0xd, + NUL = 0x0; + const { + knownCommands + } = this.lexer, + startPos = stream.pos, + n = 15; + let state = 0, + ch, + maybeEIPos; + while ((ch = stream.getByte()) !== -1) { + if (state === 0) { + state = ch === E ? 1 : 0; + } else if (state === 1) { + state = ch === I ? 2 : 0; + } else { + if (ch === SPACE || ch === LF || ch === CR) { + maybeEIPos = stream.pos; + const followingBytes = stream.peekBytes(n); + const ii = followingBytes.length; + if (ii === 0) { + break; + } + for (let i = 0; i < ii; i++) { + ch = followingBytes[i]; + if (ch === NUL && followingBytes[i + 1] !== NUL) { + continue; + } + if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7f)) { + state = 0; + break; + } + } + if (state !== 2) { + continue; + } + if (!knownCommands) { + (0, _util.warn)("findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined."); + continue; + } + const tmpLexer = new Lexer(new _stream.Stream(followingBytes.slice()), knownCommands); + tmpLexer._hexStringWarn = () => {}; + let numArgs = 0; + while (true) { + const nextObj = tmpLexer.getObj(); + if (nextObj === _primitives.EOF) { + state = 0; + break; + } + if (nextObj instanceof _primitives.Cmd) { + const knownCommand = knownCommands[nextObj.cmd]; + if (!knownCommand) { + state = 0; + break; + } else if (knownCommand.variableArgs ? numArgs <= knownCommand.numArgs : numArgs === knownCommand.numArgs) { + break; + } + numArgs = 0; + continue; + } + numArgs++; + } + if (state === 2) { + break; + } + } else { + state = 0; + } + } + } + if (ch === -1) { + (0, _util.warn)("findDefaultInlineStreamEnd: " + "Reached the end of the stream without finding a valid EI marker"); + if (maybeEIPos) { + (0, _util.warn)('... trying to recover by using the last "EI" occurrence.'); + stream.skip(-(stream.pos - maybeEIPos)); + } + } + let endOffset = 4; + stream.skip(-endOffset); + ch = stream.peekByte(); + stream.skip(endOffset); + if (!(0, _core_utils.isWhiteSpace)(ch)) { + endOffset--; + } + return stream.pos - endOffset - startPos; + } + findDCTDecodeInlineStreamEnd(stream) { + const startPos = stream.pos; + let foundEOI = false, + b, + markerLength; + while ((b = stream.getByte()) !== -1) { + if (b !== 0xff) { + continue; + } + switch (stream.getByte()) { + case 0x00: + break; + case 0xff: + stream.skip(-1); + break; + case 0xd9: + foundEOI = true; + break; + case 0xc0: + case 0xc1: + case 0xc2: + case 0xc3: + case 0xc5: + case 0xc6: + case 0xc7: + case 0xc9: + case 0xca: + case 0xcb: + case 0xcd: + case 0xce: + case 0xcf: + case 0xc4: + case 0xcc: + case 0xda: + case 0xdb: + case 0xdc: + case 0xdd: + case 0xde: + case 0xdf: + case 0xe0: + case 0xe1: + case 0xe2: + case 0xe3: + case 0xe4: + case 0xe5: + case 0xe6: + case 0xe7: + case 0xe8: + case 0xe9: + case 0xea: + case 0xeb: + case 0xec: + case 0xed: + case 0xee: + case 0xef: + case 0xfe: + markerLength = stream.getUint16(); + if (markerLength > 2) { + stream.skip(markerLength - 2); + } else { + stream.skip(-2); + } + break; + } + if (foundEOI) { + break; + } + } + const length = stream.pos - startPos; + if (b === -1) { + (0, _util.warn)("Inline DCTDecode image stream: " + "EOI marker not found, searching for /EI/ instead."); + stream.skip(-length); + return this.findDefaultInlineStreamEnd(stream); + } + this.inlineStreamSkipEI(stream); + return length; + } + findASCII85DecodeInlineStreamEnd(stream) { + const TILDE = 0x7e, + GT = 0x3e; + const startPos = stream.pos; + let ch; + while ((ch = stream.getByte()) !== -1) { + if (ch === TILDE) { + const tildePos = stream.pos; + ch = stream.peekByte(); + while ((0, _core_utils.isWhiteSpace)(ch)) { + stream.skip(); + ch = stream.peekByte(); + } + if (ch === GT) { + stream.skip(); + break; + } + if (stream.pos > tildePos) { + const maybeEI = stream.peekBytes(2); + if (maybeEI[0] === 0x45 && maybeEI[1] === 0x49) { + break; + } + } + } + } + const length = stream.pos - startPos; + if (ch === -1) { + (0, _util.warn)("Inline ASCII85Decode image stream: " + "EOD marker not found, searching for /EI/ instead."); + stream.skip(-length); + return this.findDefaultInlineStreamEnd(stream); + } + this.inlineStreamSkipEI(stream); + return length; + } + findASCIIHexDecodeInlineStreamEnd(stream) { + const GT = 0x3e; + const startPos = stream.pos; + let ch; + while ((ch = stream.getByte()) !== -1) { + if (ch === GT) { + break; + } + } + const length = stream.pos - startPos; + if (ch === -1) { + (0, _util.warn)("Inline ASCIIHexDecode image stream: " + "EOD marker not found, searching for /EI/ instead."); + stream.skip(-length); + return this.findDefaultInlineStreamEnd(stream); + } + this.inlineStreamSkipEI(stream); + return length; + } + inlineStreamSkipEI(stream) { + const E = 0x45, + I = 0x49; + let state = 0, + ch; + while ((ch = stream.getByte()) !== -1) { + if (state === 0) { + state = ch === E ? 1 : 0; + } else if (state === 1) { + state = ch === I ? 2 : 0; + } else if (state === 2) { + break; + } + } + } + makeInlineImage(cipherTransform) { + const lexer = this.lexer; + const stream = lexer.stream; + const dictMap = Object.create(null); + let dictLength; + while (!(0, _primitives.isCmd)(this.buf1, "ID") && this.buf1 !== _primitives.EOF) { + if (!(this.buf1 instanceof _primitives.Name)) { + throw new _util.FormatError("Dictionary key must be a name object"); + } + const key = this.buf1.name; + this.shift(); + if (this.buf1 === _primitives.EOF) { + break; + } + dictMap[key] = this.getObj(cipherTransform); + } + if (lexer.beginInlineImagePos !== -1) { + dictLength = stream.pos - lexer.beginInlineImagePos; + } + const filter = this.xref.fetchIfRef(dictMap.F || dictMap.Filter); + let filterName; + if (filter instanceof _primitives.Name) { + filterName = filter.name; + } else if (Array.isArray(filter)) { + const filterZero = this.xref.fetchIfRef(filter[0]); + if (filterZero instanceof _primitives.Name) { + filterName = filterZero.name; + } + } + const startPos = stream.pos; + let length; + switch (filterName) { + case "DCT": + case "DCTDecode": + length = this.findDCTDecodeInlineStreamEnd(stream); + break; + case "A85": + case "ASCII85Decode": + length = this.findASCII85DecodeInlineStreamEnd(stream); + break; + case "AHx": + case "ASCIIHexDecode": + length = this.findASCIIHexDecodeInlineStreamEnd(stream); + break; + default: + length = this.findDefaultInlineStreamEnd(stream); + } + let cacheKey; + if (length < MAX_LENGTH_TO_CACHE && dictLength > 0) { + const initialStreamPos = stream.pos; + stream.pos = lexer.beginInlineImagePos; + cacheKey = getInlineImageCacheKey(stream.getBytes(dictLength + length)); + stream.pos = initialStreamPos; + const cacheEntry = this.imageCache[cacheKey]; + if (cacheEntry !== undefined) { + this.buf2 = _primitives.Cmd.get("EI"); + this.shift(); + cacheEntry.reset(); + return cacheEntry; + } + } + const dict = new _primitives.Dict(this.xref); + for (const key in dictMap) { + dict.set(key, dictMap[key]); + } + let imageStream = stream.makeSubStream(startPos, length, dict); + if (cipherTransform) { + imageStream = cipherTransform.createStream(imageStream, length); + } + imageStream = this.filter(imageStream, dict, length); + imageStream.dict = dict; + if (cacheKey !== undefined) { + imageStream.cacheKey = `inline_img_${++this._imageId}`; + this.imageCache[cacheKey] = imageStream; + } + this.buf2 = _primitives.Cmd.get("EI"); + this.shift(); + return imageStream; + } + _findStreamLength(startPos, signature) { + const { + stream + } = this.lexer; + stream.pos = startPos; + const SCAN_BLOCK_LENGTH = 2048; + const signatureLength = signature.length; + while (stream.pos < stream.end) { + const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH); + const scanLength = scanBytes.length - signatureLength; + if (scanLength <= 0) { + break; + } + let pos = 0; + while (pos < scanLength) { + let j = 0; + while (j < signatureLength && scanBytes[pos + j] === signature[j]) { + j++; + } + if (j >= signatureLength) { + stream.pos += pos; + return stream.pos - startPos; + } + pos++; + } + stream.pos += scanLength; + } + return -1; + } + makeStream(dict, cipherTransform) { + const lexer = this.lexer; + let stream = lexer.stream; + lexer.skipToNextLine(); + const startPos = stream.pos - 1; + let length = dict.get("Length"); + if (!Number.isInteger(length)) { + (0, _util.info)(`Bad length "${length && length.toString()}" in stream.`); + length = 0; + } + stream.pos = startPos + length; + lexer.nextChar(); + if (this.tryShift() && (0, _primitives.isCmd)(this.buf2, "endstream")) { + this.shift(); + } else { + const ENDSTREAM_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d]); + let actualLength = this._findStreamLength(startPos, ENDSTREAM_SIGNATURE); + if (actualLength < 0) { + const MAX_TRUNCATION = 1; + for (let i = 1; i <= MAX_TRUNCATION; i++) { + const end = ENDSTREAM_SIGNATURE.length - i; + const TRUNCATED_SIGNATURE = ENDSTREAM_SIGNATURE.slice(0, end); + const maybeLength = this._findStreamLength(startPos, TRUNCATED_SIGNATURE); + if (maybeLength >= 0) { + const lastByte = stream.peekBytes(end + 1)[end]; + if (!(0, _core_utils.isWhiteSpace)(lastByte)) { + break; + } + (0, _util.info)(`Found "${(0, _util.bytesToString)(TRUNCATED_SIGNATURE)}" when ` + "searching for endstream command."); + actualLength = maybeLength; + break; + } + } + if (actualLength < 0) { + throw new _util.FormatError("Missing endstream command."); + } + } + length = actualLength; + lexer.nextChar(); + this.shift(); + this.shift(); + } + this.shift(); + stream = stream.makeSubStream(startPos, length, dict); + if (cipherTransform) { + stream = cipherTransform.createStream(stream, length); + } + stream = this.filter(stream, dict, length); + stream.dict = dict; + return stream; + } + filter(stream, dict, length) { + let filter = dict.get("F", "Filter"); + let params = dict.get("DP", "DecodeParms"); + if (filter instanceof _primitives.Name) { + if (Array.isArray(params)) { + (0, _util.warn)("/DecodeParms should not be an Array, when /Filter is a Name."); + } + return this.makeFilter(stream, filter.name, length, params); + } + let maybeLength = length; + if (Array.isArray(filter)) { + const filterArray = filter; + const paramsArray = params; + for (let i = 0, ii = filterArray.length; i < ii; ++i) { + filter = this.xref.fetchIfRef(filterArray[i]); + if (!(filter instanceof _primitives.Name)) { + throw new _util.FormatError(`Bad filter name "${filter}"`); + } + params = null; + if (Array.isArray(paramsArray) && i in paramsArray) { + params = this.xref.fetchIfRef(paramsArray[i]); + } + stream = this.makeFilter(stream, filter.name, maybeLength, params); + maybeLength = null; + } + } + return stream; + } + makeFilter(stream, name, maybeLength, params) { + if (maybeLength === 0) { + (0, _util.warn)(`Empty "${name}" stream.`); + return new _stream.NullStream(); + } + try { + switch (name) { + case "Fl": + case "FlateDecode": + if (params) { + return new _predictor_stream.PredictorStream(new _flate_stream.FlateStream(stream, maybeLength), maybeLength, params); + } + return new _flate_stream.FlateStream(stream, maybeLength); + case "LZW": + case "LZWDecode": + let earlyChange = 1; + if (params) { + if (params.has("EarlyChange")) { + earlyChange = params.get("EarlyChange"); + } + return new _predictor_stream.PredictorStream(new _lzw_stream.LZWStream(stream, maybeLength, earlyChange), maybeLength, params); + } + return new _lzw_stream.LZWStream(stream, maybeLength, earlyChange); + case "DCT": + case "DCTDecode": + return new _jpeg_stream.JpegStream(stream, maybeLength, params); + case "JPX": + case "JPXDecode": + return new _jpx_stream.JpxStream(stream, maybeLength, params); + case "A85": + case "ASCII85Decode": + return new _ascii_85_stream.Ascii85Stream(stream, maybeLength); + case "AHx": + case "ASCIIHexDecode": + return new _ascii_hex_stream.AsciiHexStream(stream, maybeLength); + case "CCF": + case "CCITTFaxDecode": + return new _ccitt_stream.CCITTFaxStream(stream, maybeLength, params); + case "RL": + case "RunLengthDecode": + return new _run_length_stream.RunLengthStream(stream, maybeLength); + case "JBIG2Decode": + return new _jbig2_stream.Jbig2Stream(stream, maybeLength, params); + } + (0, _util.warn)(`Filter "${name}" is not supported.`); + return stream; + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + (0, _util.warn)(`Invalid stream: "${ex}"`); + return new _stream.NullStream(); + } + } +} +exports.Parser = Parser; +const specialChars = [1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; +function toHexDigit(ch) { + if (ch >= 0x30 && ch <= 0x39) { + return ch & 0x0f; + } + if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) { + return (ch & 0x0f) + 9; + } + return -1; +} +class Lexer { + constructor(stream, knownCommands = null) { + this.stream = stream; + this.nextChar(); + this.strBuf = []; + this.knownCommands = knownCommands; + this._hexStringNumWarn = 0; + this.beginInlineImagePos = -1; + } + nextChar() { + return this.currentChar = this.stream.getByte(); + } + peekChar() { + return this.stream.peekByte(); + } + getNumber() { + let ch = this.currentChar; + let eNotation = false; + let divideBy = 0; + let sign = 1; + if (ch === 0x2d) { + sign = -1; + ch = this.nextChar(); + if (ch === 0x2d) { + ch = this.nextChar(); + } + } else if (ch === 0x2b) { + ch = this.nextChar(); + } + if (ch === 0x0a || ch === 0x0d) { + do { + ch = this.nextChar(); + } while (ch === 0x0a || ch === 0x0d); + } + if (ch === 0x2e) { + divideBy = 10; + ch = this.nextChar(); + } + if (ch < 0x30 || ch > 0x39) { + const msg = `Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`; + if ((0, _core_utils.isWhiteSpace)(ch) || ch === -1) { + (0, _util.info)(`Lexer.getNumber - "${msg}".`); + return 0; + } + throw new _util.FormatError(msg); + } + let baseValue = ch - 0x30; + let powerValue = 0; + let powerValueSign = 1; + while ((ch = this.nextChar()) >= 0) { + if (ch >= 0x30 && ch <= 0x39) { + const currentDigit = ch - 0x30; + if (eNotation) { + powerValue = powerValue * 10 + currentDigit; + } else { + if (divideBy !== 0) { + divideBy *= 10; + } + baseValue = baseValue * 10 + currentDigit; + } + } else if (ch === 0x2e) { + if (divideBy === 0) { + divideBy = 1; + } else { + break; + } + } else if (ch === 0x2d) { + (0, _util.warn)("Badly formatted number: minus sign in the middle"); + } else if (ch === 0x45 || ch === 0x65) { + ch = this.peekChar(); + if (ch === 0x2b || ch === 0x2d) { + powerValueSign = ch === 0x2d ? -1 : 1; + this.nextChar(); + } else if (ch < 0x30 || ch > 0x39) { + break; + } + eNotation = true; + } else { + break; + } + } + if (divideBy !== 0) { + baseValue /= divideBy; + } + if (eNotation) { + baseValue *= 10 ** (powerValueSign * powerValue); + } + return sign * baseValue; + } + getString() { + let numParen = 1; + let done = false; + const strBuf = this.strBuf; + strBuf.length = 0; + let ch = this.nextChar(); + while (true) { + let charBuffered = false; + switch (ch | 0) { + case -1: + (0, _util.warn)("Unterminated string"); + done = true; + break; + case 0x28: + ++numParen; + strBuf.push("("); + break; + case 0x29: + if (--numParen === 0) { + this.nextChar(); + done = true; + } else { + strBuf.push(")"); + } + break; + case 0x5c: + ch = this.nextChar(); + switch (ch) { + case -1: + (0, _util.warn)("Unterminated string"); + done = true; + break; + case 0x6e: + strBuf.push("\n"); + break; + case 0x72: + strBuf.push("\r"); + break; + case 0x74: + strBuf.push("\t"); + break; + case 0x62: + strBuf.push("\b"); + break; + case 0x66: + strBuf.push("\f"); + break; + case 0x5c: + case 0x28: + case 0x29: + strBuf.push(String.fromCharCode(ch)); + break; + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + let x = ch & 0x0f; + ch = this.nextChar(); + charBuffered = true; + if (ch >= 0x30 && ch <= 0x37) { + x = (x << 3) + (ch & 0x0f); + ch = this.nextChar(); + if (ch >= 0x30 && ch <= 0x37) { + charBuffered = false; + x = (x << 3) + (ch & 0x0f); + } + } + strBuf.push(String.fromCharCode(x)); + break; + case 0x0d: + if (this.peekChar() === 0x0a) { + this.nextChar(); + } + break; + case 0x0a: + break; + default: + strBuf.push(String.fromCharCode(ch)); + break; + } + break; + default: + strBuf.push(String.fromCharCode(ch)); + break; + } + if (done) { + break; + } + if (!charBuffered) { + ch = this.nextChar(); + } + } + return strBuf.join(""); + } + getName() { + let ch, previousCh; + const strBuf = this.strBuf; + strBuf.length = 0; + while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) { + if (ch === 0x23) { + ch = this.nextChar(); + if (specialChars[ch]) { + (0, _util.warn)("Lexer_getName: " + "NUMBER SIGN (#) should be followed by a hexadecimal number."); + strBuf.push("#"); + break; + } + const x = toHexDigit(ch); + if (x !== -1) { + previousCh = ch; + ch = this.nextChar(); + const x2 = toHexDigit(ch); + if (x2 === -1) { + (0, _util.warn)(`Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` + "in hexadecimal number."); + strBuf.push("#", String.fromCharCode(previousCh)); + if (specialChars[ch]) { + break; + } + strBuf.push(String.fromCharCode(ch)); + continue; + } + strBuf.push(String.fromCharCode(x << 4 | x2)); + } else { + strBuf.push("#", String.fromCharCode(ch)); + } + } else { + strBuf.push(String.fromCharCode(ch)); + } + } + if (strBuf.length > 127) { + (0, _util.warn)(`Name token is longer than allowed by the spec: ${strBuf.length}`); + } + return _primitives.Name.get(strBuf.join("")); + } + _hexStringWarn(ch) { + const MAX_HEX_STRING_NUM_WARN = 5; + if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) { + (0, _util.warn)("getHexString - ignoring additional invalid characters."); + return; + } + if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) { + return; + } + (0, _util.warn)(`getHexString - ignoring invalid character: ${ch}`); + } + getHexString() { + const strBuf = this.strBuf; + strBuf.length = 0; + let ch = this.currentChar; + let isFirstHex = true; + let firstDigit, secondDigit; + this._hexStringNumWarn = 0; + while (true) { + if (ch < 0) { + (0, _util.warn)("Unterminated hex string"); + break; + } else if (ch === 0x3e) { + this.nextChar(); + break; + } else if (specialChars[ch] === 1) { + ch = this.nextChar(); + continue; + } else { + if (isFirstHex) { + firstDigit = toHexDigit(ch); + if (firstDigit === -1) { + this._hexStringWarn(ch); + ch = this.nextChar(); + continue; + } + } else { + secondDigit = toHexDigit(ch); + if (secondDigit === -1) { + this._hexStringWarn(ch); + ch = this.nextChar(); + continue; + } + strBuf.push(String.fromCharCode(firstDigit << 4 | secondDigit)); + } + isFirstHex = !isFirstHex; + ch = this.nextChar(); + } + } + return strBuf.join(""); + } + getObj() { + let comment = false; + let ch = this.currentChar; + while (true) { + if (ch < 0) { + return _primitives.EOF; + } + if (comment) { + if (ch === 0x0a || ch === 0x0d) { + comment = false; + } + } else if (ch === 0x25) { + comment = true; + } else if (specialChars[ch] !== 1) { + break; + } + ch = this.nextChar(); + } + switch (ch | 0) { + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x2b: + case 0x2d: + case 0x2e: + return this.getNumber(); + case 0x28: + return this.getString(); + case 0x2f: + return this.getName(); + case 0x5b: + this.nextChar(); + return _primitives.Cmd.get("["); + case 0x5d: + this.nextChar(); + return _primitives.Cmd.get("]"); + case 0x3c: + ch = this.nextChar(); + if (ch === 0x3c) { + this.nextChar(); + return _primitives.Cmd.get("<<"); + } + return this.getHexString(); + case 0x3e: + ch = this.nextChar(); + if (ch === 0x3e) { + this.nextChar(); + return _primitives.Cmd.get(">>"); + } + return _primitives.Cmd.get(">"); + case 0x7b: + this.nextChar(); + return _primitives.Cmd.get("{"); + case 0x7d: + this.nextChar(); + return _primitives.Cmd.get("}"); + case 0x29: + this.nextChar(); + throw new _util.FormatError(`Illegal character: ${ch}`); + } + let str = String.fromCharCode(ch); + if (ch < 0x20 || ch > 0x7f) { + const nextCh = this.peekChar(); + if (nextCh >= 0x20 && nextCh <= 0x7f) { + this.nextChar(); + return _primitives.Cmd.get(str); + } + } + const knownCommands = this.knownCommands; + let knownCommandFound = knownCommands?.[str] !== undefined; + while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) { + const possibleCommand = str + String.fromCharCode(ch); + if (knownCommandFound && knownCommands[possibleCommand] === undefined) { + break; + } + if (str.length === 128) { + throw new _util.FormatError(`Command token too long: ${str.length}`); + } + str = possibleCommand; + knownCommandFound = knownCommands?.[str] !== undefined; + } + if (str === "true") { + return true; + } + if (str === "false") { + return false; + } + if (str === "null") { + return null; + } + if (str === "BI") { + this.beginInlineImagePos = this.stream.pos; + } + return _primitives.Cmd.get(str); + } + skipToNextLine() { + let ch = this.currentChar; + while (ch >= 0) { + if (ch === 0x0d) { + ch = this.nextChar(); + if (ch === 0x0a) { + this.nextChar(); + } + break; + } else if (ch === 0x0a) { + this.nextChar(); + break; + } + ch = this.nextChar(); + } + } +} +exports.Lexer = Lexer; +class Linearization { + static create(stream) { + function getInt(linDict, name, allowZeroValue = false) { + const obj = linDict.get(name); + if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) { + return obj; + } + throw new Error(`The "${name}" parameter in the linearization ` + "dictionary is invalid."); + } + function getHints(linDict) { + const hints = linDict.get("H"); + let hintsLength; + if (Array.isArray(hints) && ((hintsLength = hints.length) === 2 || hintsLength === 4)) { + for (let index = 0; index < hintsLength; index++) { + const hint = hints[index]; + if (!(Number.isInteger(hint) && hint > 0)) { + throw new Error(`Hint (${index}) in the linearization dictionary is invalid.`); + } + } + return hints; + } + throw new Error("Hint array in the linearization dictionary is invalid."); + } + const parser = new Parser({ + lexer: new Lexer(stream), + xref: null + }); + const obj1 = parser.getObj(); + const obj2 = parser.getObj(); + const obj3 = parser.getObj(); + const linDict = parser.getObj(); + let obj, length; + if (!(Number.isInteger(obj1) && Number.isInteger(obj2) && (0, _primitives.isCmd)(obj3, "obj") && linDict instanceof _primitives.Dict && typeof (obj = linDict.get("Linearized")) === "number" && obj > 0)) { + return null; + } else if ((length = getInt(linDict, "L")) !== stream.length) { + throw new Error('The "L" parameter in the linearization dictionary ' + "does not equal the stream length."); + } + return { + length, + hints: getHints(linDict), + objectNumberFirst: getInt(linDict, "O"), + endFirst: getInt(linDict, "E"), + numPages: getInt(linDict, "N"), + mainXRefEntriesOffset: getInt(linDict, "T"), + pageFirst: linDict.has("P") ? getInt(linDict, "P", true) : 0 + }; + } +} +exports.Linearization = Linearization; + +/***/ }), +/* 17 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Ascii85Stream = void 0; +var _decode_stream = __w_pdfjs_require__(18); +var _core_utils = __w_pdfjs_require__(3); +class Ascii85Stream extends _decode_stream.DecodeStream { + constructor(str, maybeLength) { + if (maybeLength) { + maybeLength *= 0.8; + } + super(maybeLength); + this.str = str; + this.dict = str.dict; + this.input = new Uint8Array(5); + } + readBlock() { + const TILDA_CHAR = 0x7e; + const Z_LOWER_CHAR = 0x7a; + const EOF = -1; + const str = this.str; + let c = str.getByte(); + while ((0, _core_utils.isWhiteSpace)(c)) { + c = str.getByte(); + } + if (c === EOF || c === TILDA_CHAR) { + this.eof = true; + return; + } + const bufferLength = this.bufferLength; + let buffer, i; + if (c === Z_LOWER_CHAR) { + buffer = this.ensureBuffer(bufferLength + 4); + for (i = 0; i < 4; ++i) { + buffer[bufferLength + i] = 0; + } + this.bufferLength += 4; + } else { + const input = this.input; + input[0] = c; + for (i = 1; i < 5; ++i) { + c = str.getByte(); + while ((0, _core_utils.isWhiteSpace)(c)) { + c = str.getByte(); + } + input[i] = c; + if (c === EOF || c === TILDA_CHAR) { + break; + } + } + buffer = this.ensureBuffer(bufferLength + i - 1); + this.bufferLength += i - 1; + if (i < 5) { + for (; i < 5; ++i) { + input[i] = 0x21 + 84; + } + this.eof = true; + } + let t = 0; + for (i = 0; i < 5; ++i) { + t = t * 85 + (input[i] - 0x21); + } + for (i = 3; i >= 0; --i) { + buffer[bufferLength + i] = t & 0xff; + t >>= 8; + } + } + } +} +exports.Ascii85Stream = Ascii85Stream; + +/***/ }), +/* 18 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.StreamsSequenceStream = exports.DecodeStream = void 0; +var _base_stream = __w_pdfjs_require__(5); +var _stream = __w_pdfjs_require__(8); +const emptyBuffer = new Uint8Array(0); +class DecodeStream extends _base_stream.BaseStream { + constructor(maybeMinBufferLength) { + super(); + this._rawMinBufferLength = maybeMinBufferLength || 0; + this.pos = 0; + this.bufferLength = 0; + this.eof = false; + this.buffer = emptyBuffer; + this.minBufferLength = 512; + if (maybeMinBufferLength) { + while (this.minBufferLength < maybeMinBufferLength) { + this.minBufferLength *= 2; + } + } + } + get isEmpty() { + while (!this.eof && this.bufferLength === 0) { + this.readBlock(); + } + return this.bufferLength === 0; + } + ensureBuffer(requested) { + const buffer = this.buffer; + if (requested <= buffer.byteLength) { + return buffer; + } + let size = this.minBufferLength; + while (size < requested) { + size *= 2; + } + const buffer2 = new Uint8Array(size); + buffer2.set(buffer); + return this.buffer = buffer2; + } + getByte() { + const pos = this.pos; + while (this.bufferLength <= pos) { + if (this.eof) { + return -1; + } + this.readBlock(); + } + return this.buffer[this.pos++]; + } + getBytes(length) { + const pos = this.pos; + let end; + if (length) { + this.ensureBuffer(pos + length); + end = pos + length; + while (!this.eof && this.bufferLength < end) { + this.readBlock(); + } + const bufEnd = this.bufferLength; + if (end > bufEnd) { + end = bufEnd; + } + } else { + while (!this.eof) { + this.readBlock(); + } + end = this.bufferLength; + } + this.pos = end; + return this.buffer.subarray(pos, end); + } + reset() { + this.pos = 0; + } + makeSubStream(start, length, dict = null) { + if (length === undefined) { + while (!this.eof) { + this.readBlock(); + } + } else { + const end = start + length; + while (this.bufferLength <= end && !this.eof) { + this.readBlock(); + } + } + return new _stream.Stream(this.buffer, start, length, dict); + } + getBaseStreams() { + return this.str ? this.str.getBaseStreams() : null; + } +} +exports.DecodeStream = DecodeStream; +class StreamsSequenceStream extends DecodeStream { + constructor(streams, onError = null) { + let maybeLength = 0; + for (const stream of streams) { + maybeLength += stream instanceof DecodeStream ? stream._rawMinBufferLength : stream.length; + } + super(maybeLength); + this.streams = streams; + this._onError = onError; + } + readBlock() { + const streams = this.streams; + if (streams.length === 0) { + this.eof = true; + return; + } + const stream = streams.shift(); + let chunk; + try { + chunk = stream.getBytes(); + } catch (reason) { + if (this._onError) { + this._onError(reason, stream.dict?.objId); + return; + } + throw reason; + } + const bufferLength = this.bufferLength; + const newLength = bufferLength + chunk.length; + const buffer = this.ensureBuffer(newLength); + buffer.set(chunk, bufferLength); + this.bufferLength = newLength; + } + getBaseStreams() { + const baseStreamsBuf = []; + for (const stream of this.streams) { + const baseStreams = stream.getBaseStreams(); + if (baseStreams) { + baseStreamsBuf.push(...baseStreams); + } + } + return baseStreamsBuf.length > 0 ? baseStreamsBuf : null; + } +} +exports.StreamsSequenceStream = StreamsSequenceStream; + +/***/ }), +/* 19 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AsciiHexStream = void 0; +var _decode_stream = __w_pdfjs_require__(18); +class AsciiHexStream extends _decode_stream.DecodeStream { + constructor(str, maybeLength) { + if (maybeLength) { + maybeLength *= 0.5; + } + super(maybeLength); + this.str = str; + this.dict = str.dict; + this.firstDigit = -1; + } + readBlock() { + const UPSTREAM_BLOCK_SIZE = 8000; + const bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE); + if (!bytes.length) { + this.eof = true; + return; + } + const maxDecodeLength = bytes.length + 1 >> 1; + const buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength); + let bufferLength = this.bufferLength; + let firstDigit = this.firstDigit; + for (const ch of bytes) { + let digit; + if (ch >= 0x30 && ch <= 0x39) { + digit = ch & 0x0f; + } else if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) { + digit = (ch & 0x0f) + 9; + } else if (ch === 0x3e) { + this.eof = true; + break; + } else { + continue; + } + if (firstDigit < 0) { + firstDigit = digit; + } else { + buffer[bufferLength++] = firstDigit << 4 | digit; + firstDigit = -1; + } + } + if (firstDigit >= 0 && this.eof) { + buffer[bufferLength++] = firstDigit << 4; + firstDigit = -1; + } + this.firstDigit = firstDigit; + this.bufferLength = bufferLength; + } +} +exports.AsciiHexStream = AsciiHexStream; + +/***/ }), +/* 20 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.CCITTFaxStream = void 0; +var _ccitt = __w_pdfjs_require__(21); +var _decode_stream = __w_pdfjs_require__(18); +var _primitives = __w_pdfjs_require__(4); +class CCITTFaxStream extends _decode_stream.DecodeStream { + constructor(str, maybeLength, params) { + super(maybeLength); + this.str = str; + this.dict = str.dict; + if (!(params instanceof _primitives.Dict)) { + params = _primitives.Dict.empty; + } + const source = { + next() { + return str.getByte(); + } + }; + this.ccittFaxDecoder = new _ccitt.CCITTFaxDecoder(source, { + K: params.get("K"), + EndOfLine: params.get("EndOfLine"), + EncodedByteAlign: params.get("EncodedByteAlign"), + Columns: params.get("Columns"), + Rows: params.get("Rows"), + EndOfBlock: params.get("EndOfBlock"), + BlackIs1: params.get("BlackIs1") + }); + } + readBlock() { + while (!this.eof) { + const c = this.ccittFaxDecoder.readNextChar(); + if (c === -1) { + this.eof = true; + return; + } + this.ensureBuffer(this.bufferLength + 1); + this.buffer[this.bufferLength++] = c; + } + } +} +exports.CCITTFaxStream = CCITTFaxStream; + +/***/ }), +/* 21 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.CCITTFaxDecoder = void 0; +var _util = __w_pdfjs_require__(2); +const ccittEOL = -2; +const ccittEOF = -1; +const twoDimPass = 0; +const twoDimHoriz = 1; +const twoDimVert0 = 2; +const twoDimVertR1 = 3; +const twoDimVertL1 = 4; +const twoDimVertR2 = 5; +const twoDimVertL2 = 6; +const twoDimVertR3 = 7; +const twoDimVertL3 = 8; +const twoDimTable = [[-1, -1], [-1, -1], [7, twoDimVertL3], [7, twoDimVertR3], [6, twoDimVertL2], [6, twoDimVertL2], [6, twoDimVertR2], [6, twoDimVertR2], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0]]; +const whiteTable1 = [[-1, -1], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [12, 1984], [12, 2048], [12, 2112], [12, 2176], [12, 2240], [12, 2304], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [12, 2368], [12, 2432], [12, 2496], [12, 2560]]; +const whiteTable2 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [8, 29], [8, 29], [8, 30], [8, 30], [8, 45], [8, 45], [8, 46], [8, 46], [7, 22], [7, 22], [7, 22], [7, 22], [7, 23], [7, 23], [7, 23], [7, 23], [8, 47], [8, 47], [8, 48], [8, 48], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [7, 20], [7, 20], [7, 20], [7, 20], [8, 33], [8, 33], [8, 34], [8, 34], [8, 35], [8, 35], [8, 36], [8, 36], [8, 37], [8, 37], [8, 38], [8, 38], [7, 19], [7, 19], [7, 19], [7, 19], [8, 31], [8, 31], [8, 32], [8, 32], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [8, 53], [8, 53], [8, 54], [8, 54], [7, 26], [7, 26], [7, 26], [7, 26], [8, 39], [8, 39], [8, 40], [8, 40], [8, 41], [8, 41], [8, 42], [8, 42], [8, 43], [8, 43], [8, 44], [8, 44], [7, 21], [7, 21], [7, 21], [7, 21], [7, 28], [7, 28], [7, 28], [7, 28], [8, 61], [8, 61], [8, 62], [8, 62], [8, 63], [8, 63], [8, 0], [8, 0], [8, 320], [8, 320], [8, 384], [8, 384], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [7, 27], [7, 27], [7, 27], [7, 27], [8, 59], [8, 59], [8, 60], [8, 60], [9, 1472], [9, 1536], [9, 1600], [9, 1728], [7, 18], [7, 18], [7, 18], [7, 18], [7, 24], [7, 24], [7, 24], [7, 24], [8, 49], [8, 49], [8, 50], [8, 50], [8, 51], [8, 51], [8, 52], [8, 52], [7, 25], [7, 25], [7, 25], [7, 25], [8, 55], [8, 55], [8, 56], [8, 56], [8, 57], [8, 57], [8, 58], [8, 58], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [8, 448], [8, 448], [8, 512], [8, 512], [9, 704], [9, 768], [8, 640], [8, 640], [8, 576], [8, 576], [9, 832], [9, 896], [9, 960], [9, 1024], [9, 1088], [9, 1152], [9, 1216], [9, 1280], [9, 1344], [9, 1408], [7, 256], [7, 256], [7, 256], [7, 256], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7]]; +const blackTable1 = [[-1, -1], [-1, -1], [12, ccittEOL], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [11, 1792], [11, 1792], [12, 1984], [12, 1984], [12, 2048], [12, 2048], [12, 2112], [12, 2112], [12, 2176], [12, 2176], [12, 2240], [12, 2240], [12, 2304], [12, 2304], [11, 1856], [11, 1856], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [11, 1920], [11, 1920], [12, 2368], [12, 2368], [12, 2432], [12, 2432], [12, 2496], [12, 2496], [12, 2560], [12, 2560], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [12, 52], [12, 52], [13, 640], [13, 704], [13, 768], [13, 832], [12, 55], [12, 55], [12, 56], [12, 56], [13, 1280], [13, 1344], [13, 1408], [13, 1472], [12, 59], [12, 59], [12, 60], [12, 60], [13, 1536], [13, 1600], [11, 24], [11, 24], [11, 24], [11, 24], [11, 25], [11, 25], [11, 25], [11, 25], [13, 1664], [13, 1728], [12, 320], [12, 320], [12, 384], [12, 384], [12, 448], [12, 448], [13, 512], [13, 576], [12, 53], [12, 53], [12, 54], [12, 54], [13, 896], [13, 960], [13, 1024], [13, 1088], [13, 1152], [13, 1216], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64]]; +const blackTable2 = [[8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [11, 23], [11, 23], [12, 50], [12, 51], [12, 44], [12, 45], [12, 46], [12, 47], [12, 57], [12, 58], [12, 61], [12, 256], [10, 16], [10, 16], [10, 16], [10, 16], [10, 17], [10, 17], [10, 17], [10, 17], [12, 48], [12, 49], [12, 62], [12, 63], [12, 30], [12, 31], [12, 32], [12, 33], [12, 40], [12, 41], [11, 22], [11, 22], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [12, 128], [12, 192], [12, 26], [12, 27], [12, 28], [12, 29], [11, 19], [11, 19], [11, 20], [11, 20], [12, 34], [12, 35], [12, 36], [12, 37], [12, 38], [12, 39], [11, 21], [11, 21], [12, 42], [12, 43], [10, 0], [10, 0], [10, 0], [10, 0], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12]]; +const blackTable3 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [6, 9], [6, 8], [5, 7], [5, 7], [4, 6], [4, 6], [4, 6], [4, 6], [4, 5], [4, 5], [4, 5], [4, 5], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2]]; +class CCITTFaxDecoder { + constructor(source, options = {}) { + if (!source || typeof source.next !== "function") { + throw new Error('CCITTFaxDecoder - invalid "source" parameter.'); + } + this.source = source; + this.eof = false; + this.encoding = options.K || 0; + this.eoline = options.EndOfLine || false; + this.byteAlign = options.EncodedByteAlign || false; + this.columns = options.Columns || 1728; + this.rows = options.Rows || 0; + this.eoblock = options.EndOfBlock ?? true; + this.black = options.BlackIs1 || false; + this.codingLine = new Uint32Array(this.columns + 1); + this.refLine = new Uint32Array(this.columns + 2); + this.codingLine[0] = this.columns; + this.codingPos = 0; + this.row = 0; + this.nextLine2D = this.encoding < 0; + this.inputBits = 0; + this.inputBuf = 0; + this.outputBits = 0; + this.rowsDone = false; + let code1; + while ((code1 = this._lookBits(12)) === 0) { + this._eatBits(1); + } + if (code1 === 1) { + this._eatBits(12); + } + if (this.encoding > 0) { + this.nextLine2D = !this._lookBits(1); + this._eatBits(1); + } + } + readNextChar() { + if (this.eof) { + return -1; + } + const refLine = this.refLine; + const codingLine = this.codingLine; + const columns = this.columns; + let refPos, blackPixels, bits, i; + if (this.outputBits === 0) { + if (this.rowsDone) { + this.eof = true; + } + if (this.eof) { + return -1; + } + this.err = false; + let code1, code2, code3; + if (this.nextLine2D) { + for (i = 0; codingLine[i] < columns; ++i) { + refLine[i] = codingLine[i]; + } + refLine[i++] = columns; + refLine[i] = columns; + codingLine[0] = 0; + this.codingPos = 0; + refPos = 0; + blackPixels = 0; + while (codingLine[this.codingPos] < columns) { + code1 = this._getTwoDimCode(); + switch (code1) { + case twoDimPass: + this._addPixels(refLine[refPos + 1], blackPixels); + if (refLine[refPos + 1] < columns) { + refPos += 2; + } + break; + case twoDimHoriz: + code1 = code2 = 0; + if (blackPixels) { + do { + code1 += code3 = this._getBlackCode(); + } while (code3 >= 64); + do { + code2 += code3 = this._getWhiteCode(); + } while (code3 >= 64); + } else { + do { + code1 += code3 = this._getWhiteCode(); + } while (code3 >= 64); + do { + code2 += code3 = this._getBlackCode(); + } while (code3 >= 64); + } + this._addPixels(codingLine[this.codingPos] + code1, blackPixels); + if (codingLine[this.codingPos] < columns) { + this._addPixels(codingLine[this.codingPos] + code2, blackPixels ^ 1); + } + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + break; + case twoDimVertR3: + this._addPixels(refLine[refPos] + 3, blackPixels); + blackPixels ^= 1; + if (codingLine[this.codingPos] < columns) { + ++refPos; + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + } + break; + case twoDimVertR2: + this._addPixels(refLine[refPos] + 2, blackPixels); + blackPixels ^= 1; + if (codingLine[this.codingPos] < columns) { + ++refPos; + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + } + break; + case twoDimVertR1: + this._addPixels(refLine[refPos] + 1, blackPixels); + blackPixels ^= 1; + if (codingLine[this.codingPos] < columns) { + ++refPos; + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + } + break; + case twoDimVert0: + this._addPixels(refLine[refPos], blackPixels); + blackPixels ^= 1; + if (codingLine[this.codingPos] < columns) { + ++refPos; + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + } + break; + case twoDimVertL3: + this._addPixelsNeg(refLine[refPos] - 3, blackPixels); + blackPixels ^= 1; + if (codingLine[this.codingPos] < columns) { + if (refPos > 0) { + --refPos; + } else { + ++refPos; + } + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + } + break; + case twoDimVertL2: + this._addPixelsNeg(refLine[refPos] - 2, blackPixels); + blackPixels ^= 1; + if (codingLine[this.codingPos] < columns) { + if (refPos > 0) { + --refPos; + } else { + ++refPos; + } + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + } + break; + case twoDimVertL1: + this._addPixelsNeg(refLine[refPos] - 1, blackPixels); + blackPixels ^= 1; + if (codingLine[this.codingPos] < columns) { + if (refPos > 0) { + --refPos; + } else { + ++refPos; + } + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + } + break; + case ccittEOF: + this._addPixels(columns, 0); + this.eof = true; + break; + default: + (0, _util.info)("bad 2d code"); + this._addPixels(columns, 0); + this.err = true; + } + } + } else { + codingLine[0] = 0; + this.codingPos = 0; + blackPixels = 0; + while (codingLine[this.codingPos] < columns) { + code1 = 0; + if (blackPixels) { + do { + code1 += code3 = this._getBlackCode(); + } while (code3 >= 64); + } else { + do { + code1 += code3 = this._getWhiteCode(); + } while (code3 >= 64); + } + this._addPixels(codingLine[this.codingPos] + code1, blackPixels); + blackPixels ^= 1; + } + } + let gotEOL = false; + if (this.byteAlign) { + this.inputBits &= ~7; + } + if (!this.eoblock && this.row === this.rows - 1) { + this.rowsDone = true; + } else { + code1 = this._lookBits(12); + if (this.eoline) { + while (code1 !== ccittEOF && code1 !== 1) { + this._eatBits(1); + code1 = this._lookBits(12); + } + } else { + while (code1 === 0) { + this._eatBits(1); + code1 = this._lookBits(12); + } + } + if (code1 === 1) { + this._eatBits(12); + gotEOL = true; + } else if (code1 === ccittEOF) { + this.eof = true; + } + } + if (!this.eof && this.encoding > 0 && !this.rowsDone) { + this.nextLine2D = !this._lookBits(1); + this._eatBits(1); + } + if (this.eoblock && gotEOL && this.byteAlign) { + code1 = this._lookBits(12); + if (code1 === 1) { + this._eatBits(12); + if (this.encoding > 0) { + this._lookBits(1); + this._eatBits(1); + } + if (this.encoding >= 0) { + for (i = 0; i < 4; ++i) { + code1 = this._lookBits(12); + if (code1 !== 1) { + (0, _util.info)("bad rtc code: " + code1); + } + this._eatBits(12); + if (this.encoding > 0) { + this._lookBits(1); + this._eatBits(1); + } + } + } + this.eof = true; + } + } else if (this.err && this.eoline) { + while (true) { + code1 = this._lookBits(13); + if (code1 === ccittEOF) { + this.eof = true; + return -1; + } + if (code1 >> 1 === 1) { + break; + } + this._eatBits(1); + } + this._eatBits(12); + if (this.encoding > 0) { + this._eatBits(1); + this.nextLine2D = !(code1 & 1); + } + } + if (codingLine[0] > 0) { + this.outputBits = codingLine[this.codingPos = 0]; + } else { + this.outputBits = codingLine[this.codingPos = 1]; + } + this.row++; + } + let c; + if (this.outputBits >= 8) { + c = this.codingPos & 1 ? 0 : 0xff; + this.outputBits -= 8; + if (this.outputBits === 0 && codingLine[this.codingPos] < columns) { + this.codingPos++; + this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1]; + } + } else { + bits = 8; + c = 0; + do { + if (typeof this.outputBits !== "number") { + throw new _util.FormatError('Invalid /CCITTFaxDecode data, "outputBits" must be a number.'); + } + if (this.outputBits > bits) { + c <<= bits; + if (!(this.codingPos & 1)) { + c |= 0xff >> 8 - bits; + } + this.outputBits -= bits; + bits = 0; + } else { + c <<= this.outputBits; + if (!(this.codingPos & 1)) { + c |= 0xff >> 8 - this.outputBits; + } + bits -= this.outputBits; + this.outputBits = 0; + if (codingLine[this.codingPos] < columns) { + this.codingPos++; + this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1]; + } else if (bits > 0) { + c <<= bits; + bits = 0; + } + } + } while (bits); + } + if (this.black) { + c ^= 0xff; + } + return c; + } + _addPixels(a1, blackPixels) { + const codingLine = this.codingLine; + let codingPos = this.codingPos; + if (a1 > codingLine[codingPos]) { + if (a1 > this.columns) { + (0, _util.info)("row is wrong length"); + this.err = true; + a1 = this.columns; + } + if (codingPos & 1 ^ blackPixels) { + ++codingPos; + } + codingLine[codingPos] = a1; + } + this.codingPos = codingPos; + } + _addPixelsNeg(a1, blackPixels) { + const codingLine = this.codingLine; + let codingPos = this.codingPos; + if (a1 > codingLine[codingPos]) { + if (a1 > this.columns) { + (0, _util.info)("row is wrong length"); + this.err = true; + a1 = this.columns; + } + if (codingPos & 1 ^ blackPixels) { + ++codingPos; + } + codingLine[codingPos] = a1; + } else if (a1 < codingLine[codingPos]) { + if (a1 < 0) { + (0, _util.info)("invalid code"); + this.err = true; + a1 = 0; + } + while (codingPos > 0 && a1 < codingLine[codingPos - 1]) { + --codingPos; + } + codingLine[codingPos] = a1; + } + this.codingPos = codingPos; + } + _findTableCode(start, end, table, limit) { + const limitValue = limit || 0; + for (let i = start; i <= end; ++i) { + let code = this._lookBits(i); + if (code === ccittEOF) { + return [true, 1, false]; + } + if (i < end) { + code <<= end - i; + } + if (!limitValue || code >= limitValue) { + const p = table[code - limitValue]; + if (p[0] === i) { + this._eatBits(i); + return [true, p[1], true]; + } + } + } + return [false, 0, false]; + } + _getTwoDimCode() { + let code = 0; + let p; + if (this.eoblock) { + code = this._lookBits(7); + p = twoDimTable[code]; + if (p?.[0] > 0) { + this._eatBits(p[0]); + return p[1]; + } + } else { + const result = this._findTableCode(1, 7, twoDimTable); + if (result[0] && result[2]) { + return result[1]; + } + } + (0, _util.info)("Bad two dim code"); + return ccittEOF; + } + _getWhiteCode() { + let code = 0; + let p; + if (this.eoblock) { + code = this._lookBits(12); + if (code === ccittEOF) { + return 1; + } + if (code >> 5 === 0) { + p = whiteTable1[code]; + } else { + p = whiteTable2[code >> 3]; + } + if (p[0] > 0) { + this._eatBits(p[0]); + return p[1]; + } + } else { + let result = this._findTableCode(1, 9, whiteTable2); + if (result[0]) { + return result[1]; + } + result = this._findTableCode(11, 12, whiteTable1); + if (result[0]) { + return result[1]; + } + } + (0, _util.info)("bad white code"); + this._eatBits(1); + return 1; + } + _getBlackCode() { + let code, p; + if (this.eoblock) { + code = this._lookBits(13); + if (code === ccittEOF) { + return 1; + } + if (code >> 7 === 0) { + p = blackTable1[code]; + } else if (code >> 9 === 0 && code >> 7 !== 0) { + p = blackTable2[(code >> 1) - 64]; + } else { + p = blackTable3[code >> 7]; + } + if (p[0] > 0) { + this._eatBits(p[0]); + return p[1]; + } + } else { + let result = this._findTableCode(2, 6, blackTable3); + if (result[0]) { + return result[1]; + } + result = this._findTableCode(7, 12, blackTable2, 64); + if (result[0]) { + return result[1]; + } + result = this._findTableCode(10, 13, blackTable1); + if (result[0]) { + return result[1]; + } + } + (0, _util.info)("bad black code"); + this._eatBits(1); + return 1; + } + _lookBits(n) { + let c; + while (this.inputBits < n) { + if ((c = this.source.next()) === -1) { + if (this.inputBits === 0) { + return ccittEOF; + } + return this.inputBuf << n - this.inputBits & 0xffff >> 16 - n; + } + this.inputBuf = this.inputBuf << 8 | c; + this.inputBits += 8; + } + return this.inputBuf >> this.inputBits - n & 0xffff >> 16 - n; + } + _eatBits(n) { + if ((this.inputBits -= n) < 0) { + this.inputBits = 0; + } + } +} +exports.CCITTFaxDecoder = CCITTFaxDecoder; + +/***/ }), +/* 22 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.FlateStream = void 0; +var _decode_stream = __w_pdfjs_require__(18); +var _util = __w_pdfjs_require__(2); +const codeLenCodeMap = new Int32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); +const lengthDecode = new Int32Array([0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a, 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f, 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073, 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102]); +const distDecode = new Int32Array([0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d, 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1, 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01, 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001]); +const fixedLitCodeTab = [new Int32Array([0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0, 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0, 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0, 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8, 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8, 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8, 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4, 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4, 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4, 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc, 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec, 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc, 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2, 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2, 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2, 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca, 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea, 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da, 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6, 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6, 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6, 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce, 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee, 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de, 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe, 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1, 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1, 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1, 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9, 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9, 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9, 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5, 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5, 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5, 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd, 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed, 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd, 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3, 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3, 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3, 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb, 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb, 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db, 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7, 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7, 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7, 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf, 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef, 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df, 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff]), 9]; +const fixedDistCodeTab = [new Int32Array([0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c, 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000, 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d, 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000]), 5]; +class FlateStream extends _decode_stream.DecodeStream { + constructor(str, maybeLength) { + super(maybeLength); + this.str = str; + this.dict = str.dict; + const cmf = str.getByte(); + const flg = str.getByte(); + if (cmf === -1 || flg === -1) { + throw new _util.FormatError(`Invalid header in flate stream: ${cmf}, ${flg}`); + } + if ((cmf & 0x0f) !== 0x08) { + throw new _util.FormatError(`Unknown compression method in flate stream: ${cmf}, ${flg}`); + } + if (((cmf << 8) + flg) % 31 !== 0) { + throw new _util.FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`); + } + if (flg & 0x20) { + throw new _util.FormatError(`FDICT bit set in flate stream: ${cmf}, ${flg}`); + } + this.codeSize = 0; + this.codeBuf = 0; + } + getBits(bits) { + const str = this.str; + let codeSize = this.codeSize; + let codeBuf = this.codeBuf; + let b; + while (codeSize < bits) { + if ((b = str.getByte()) === -1) { + throw new _util.FormatError("Bad encoding in flate stream"); + } + codeBuf |= b << codeSize; + codeSize += 8; + } + b = codeBuf & (1 << bits) - 1; + this.codeBuf = codeBuf >> bits; + this.codeSize = codeSize -= bits; + return b; + } + getCode(table) { + const str = this.str; + const codes = table[0]; + const maxLen = table[1]; + let codeSize = this.codeSize; + let codeBuf = this.codeBuf; + let b; + while (codeSize < maxLen) { + if ((b = str.getByte()) === -1) { + break; + } + codeBuf |= b << codeSize; + codeSize += 8; + } + const code = codes[codeBuf & (1 << maxLen) - 1]; + const codeLen = code >> 16; + const codeVal = code & 0xffff; + if (codeLen < 1 || codeSize < codeLen) { + throw new _util.FormatError("Bad encoding in flate stream"); + } + this.codeBuf = codeBuf >> codeLen; + this.codeSize = codeSize - codeLen; + return codeVal; + } + generateHuffmanTable(lengths) { + const n = lengths.length; + let maxLen = 0; + let i; + for (i = 0; i < n; ++i) { + if (lengths[i] > maxLen) { + maxLen = lengths[i]; + } + } + const size = 1 << maxLen; + const codes = new Int32Array(size); + for (let len = 1, code = 0, skip = 2; len <= maxLen; ++len, code <<= 1, skip <<= 1) { + for (let val = 0; val < n; ++val) { + if (lengths[val] === len) { + let code2 = 0; + let t = code; + for (i = 0; i < len; ++i) { + code2 = code2 << 1 | t & 1; + t >>= 1; + } + for (i = code2; i < size; i += skip) { + codes[i] = len << 16 | val; + } + ++code; + } + } + } + return [codes, maxLen]; + } + readBlock() { + let buffer, len; + const str = this.str; + let hdr = this.getBits(3); + if (hdr & 1) { + this.eof = true; + } + hdr >>= 1; + if (hdr === 0) { + let b; + if ((b = str.getByte()) === -1) { + throw new _util.FormatError("Bad block header in flate stream"); + } + let blockLen = b; + if ((b = str.getByte()) === -1) { + throw new _util.FormatError("Bad block header in flate stream"); + } + blockLen |= b << 8; + if ((b = str.getByte()) === -1) { + throw new _util.FormatError("Bad block header in flate stream"); + } + let check = b; + if ((b = str.getByte()) === -1) { + throw new _util.FormatError("Bad block header in flate stream"); + } + check |= b << 8; + if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) { + throw new _util.FormatError("Bad uncompressed block length in flate stream"); + } + this.codeBuf = 0; + this.codeSize = 0; + const bufferLength = this.bufferLength, + end = bufferLength + blockLen; + buffer = this.ensureBuffer(end); + this.bufferLength = end; + if (blockLen === 0) { + if (str.peekByte() === -1) { + this.eof = true; + } + } else { + const block = str.getBytes(blockLen); + buffer.set(block, bufferLength); + if (block.length < blockLen) { + this.eof = true; + } + } + return; + } + let litCodeTable; + let distCodeTable; + if (hdr === 1) { + litCodeTable = fixedLitCodeTab; + distCodeTable = fixedDistCodeTab; + } else if (hdr === 2) { + const numLitCodes = this.getBits(5) + 257; + const numDistCodes = this.getBits(5) + 1; + const numCodeLenCodes = this.getBits(4) + 4; + const codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length); + let i; + for (i = 0; i < numCodeLenCodes; ++i) { + codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3); + } + const codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths); + len = 0; + i = 0; + const codes = numLitCodes + numDistCodes; + const codeLengths = new Uint8Array(codes); + let bitsLength, bitsOffset, what; + while (i < codes) { + const code = this.getCode(codeLenCodeTab); + if (code === 16) { + bitsLength = 2; + bitsOffset = 3; + what = len; + } else if (code === 17) { + bitsLength = 3; + bitsOffset = 3; + what = len = 0; + } else if (code === 18) { + bitsLength = 7; + bitsOffset = 11; + what = len = 0; + } else { + codeLengths[i++] = len = code; + continue; + } + let repeatLength = this.getBits(bitsLength) + bitsOffset; + while (repeatLength-- > 0) { + codeLengths[i++] = what; + } + } + litCodeTable = this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes)); + distCodeTable = this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes)); + } else { + throw new _util.FormatError("Unknown block type in flate stream"); + } + buffer = this.buffer; + let limit = buffer ? buffer.length : 0; + let pos = this.bufferLength; + while (true) { + let code1 = this.getCode(litCodeTable); + if (code1 < 256) { + if (pos + 1 >= limit) { + buffer = this.ensureBuffer(pos + 1); + limit = buffer.length; + } + buffer[pos++] = code1; + continue; + } + if (code1 === 256) { + this.bufferLength = pos; + return; + } + code1 -= 257; + code1 = lengthDecode[code1]; + let code2 = code1 >> 16; + if (code2 > 0) { + code2 = this.getBits(code2); + } + len = (code1 & 0xffff) + code2; + code1 = this.getCode(distCodeTable); + code1 = distDecode[code1]; + code2 = code1 >> 16; + if (code2 > 0) { + code2 = this.getBits(code2); + } + const dist = (code1 & 0xffff) + code2; + if (pos + len >= limit) { + buffer = this.ensureBuffer(pos + len); + limit = buffer.length; + } + for (let k = 0; k < len; ++k, ++pos) { + buffer[pos] = buffer[pos - dist]; + } + } + } +} +exports.FlateStream = FlateStream; + +/***/ }), +/* 23 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Jbig2Stream = void 0; +var _base_stream = __w_pdfjs_require__(5); +var _decode_stream = __w_pdfjs_require__(18); +var _primitives = __w_pdfjs_require__(4); +var _jbig = __w_pdfjs_require__(24); +var _util = __w_pdfjs_require__(2); +class Jbig2Stream extends _decode_stream.DecodeStream { + constructor(stream, maybeLength, params) { + super(maybeLength); + this.stream = stream; + this.dict = stream.dict; + this.maybeLength = maybeLength; + this.params = params; + } + get bytes() { + return (0, _util.shadow)(this, "bytes", this.stream.getBytes(this.maybeLength)); + } + ensureBuffer(requested) {} + readBlock() { + if (this.eof) { + return; + } + const jbig2Image = new _jbig.Jbig2Image(); + const chunks = []; + if (this.params instanceof _primitives.Dict) { + const globalsStream = this.params.get("JBIG2Globals"); + if (globalsStream instanceof _base_stream.BaseStream) { + const globals = globalsStream.getBytes(); + chunks.push({ + data: globals, + start: 0, + end: globals.length + }); + } + } + chunks.push({ + data: this.bytes, + start: 0, + end: this.bytes.length + }); + const data = jbig2Image.parseChunks(chunks); + const dataLength = data.length; + for (let i = 0; i < dataLength; i++) { + data[i] ^= 0xff; + } + this.buffer = data; + this.bufferLength = dataLength; + this.eof = true; + } +} +exports.Jbig2Stream = Jbig2Stream; + +/***/ }), +/* 24 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Jbig2Image = void 0; +var _util = __w_pdfjs_require__(2); +var _core_utils = __w_pdfjs_require__(3); +var _arithmetic_decoder = __w_pdfjs_require__(25); +var _ccitt = __w_pdfjs_require__(21); +class Jbig2Error extends _util.BaseException { + constructor(msg) { + super(`JBIG2 error: ${msg}`, "Jbig2Error"); + } +} +class ContextCache { + getContexts(id) { + if (id in this) { + return this[id]; + } + return this[id] = new Int8Array(1 << 16); + } +} +class DecodingContext { + constructor(data, start, end) { + this.data = data; + this.start = start; + this.end = end; + } + get decoder() { + const decoder = new _arithmetic_decoder.ArithmeticDecoder(this.data, this.start, this.end); + return (0, _util.shadow)(this, "decoder", decoder); + } + get contextCache() { + const cache = new ContextCache(); + return (0, _util.shadow)(this, "contextCache", cache); + } +} +const MAX_INT_32 = 2 ** 31 - 1; +const MIN_INT_32 = -(2 ** 31); +function decodeInteger(contextCache, procedure, decoder) { + const contexts = contextCache.getContexts(procedure); + let prev = 1; + function readBits(length) { + let v = 0; + for (let i = 0; i < length; i++) { + const bit = decoder.readBit(contexts, prev); + prev = prev < 256 ? prev << 1 | bit : (prev << 1 | bit) & 511 | 256; + v = v << 1 | bit; + } + return v >>> 0; + } + const sign = readBits(1); + const value = readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(32) + 4436 : readBits(12) + 340 : readBits(8) + 84 : readBits(6) + 20 : readBits(4) + 4 : readBits(2); + let signedValue; + if (sign === 0) { + signedValue = value; + } else if (value > 0) { + signedValue = -value; + } + if (signedValue >= MIN_INT_32 && signedValue <= MAX_INT_32) { + return signedValue; + } + return null; +} +function decodeIAID(contextCache, decoder, codeLength) { + const contexts = contextCache.getContexts("IAID"); + let prev = 1; + for (let i = 0; i < codeLength; i++) { + const bit = decoder.readBit(contexts, prev); + prev = prev << 1 | bit; + } + if (codeLength < 31) { + return prev & (1 << codeLength) - 1; + } + return prev & 0x7fffffff; +} +const SegmentTypes = ["SymbolDictionary", null, null, null, "IntermediateTextRegion", null, "ImmediateTextRegion", "ImmediateLosslessTextRegion", null, null, null, null, null, null, null, null, "PatternDictionary", null, null, null, "IntermediateHalftoneRegion", null, "ImmediateHalftoneRegion", "ImmediateLosslessHalftoneRegion", null, null, null, null, null, null, null, null, null, null, null, null, "IntermediateGenericRegion", null, "ImmediateGenericRegion", "ImmediateLosslessGenericRegion", "IntermediateGenericRefinementRegion", null, "ImmediateGenericRefinementRegion", "ImmediateLosslessGenericRefinementRegion", null, null, null, null, "PageInformation", "EndOfPage", "EndOfStripe", "EndOfFile", "Profiles", "Tables", null, null, null, null, null, null, null, null, "Extension"]; +const CodingTemplates = [[{ + x: -1, + y: -2 +}, { + x: 0, + y: -2 +}, { + x: 1, + y: -2 +}, { + x: -2, + y: -1 +}, { + x: -1, + y: -1 +}, { + x: 0, + y: -1 +}, { + x: 1, + y: -1 +}, { + x: 2, + y: -1 +}, { + x: -4, + y: 0 +}, { + x: -3, + y: 0 +}, { + x: -2, + y: 0 +}, { + x: -1, + y: 0 +}], [{ + x: -1, + y: -2 +}, { + x: 0, + y: -2 +}, { + x: 1, + y: -2 +}, { + x: 2, + y: -2 +}, { + x: -2, + y: -1 +}, { + x: -1, + y: -1 +}, { + x: 0, + y: -1 +}, { + x: 1, + y: -1 +}, { + x: 2, + y: -1 +}, { + x: -3, + y: 0 +}, { + x: -2, + y: 0 +}, { + x: -1, + y: 0 +}], [{ + x: -1, + y: -2 +}, { + x: 0, + y: -2 +}, { + x: 1, + y: -2 +}, { + x: -2, + y: -1 +}, { + x: -1, + y: -1 +}, { + x: 0, + y: -1 +}, { + x: 1, + y: -1 +}, { + x: -2, + y: 0 +}, { + x: -1, + y: 0 +}], [{ + x: -3, + y: -1 +}, { + x: -2, + y: -1 +}, { + x: -1, + y: -1 +}, { + x: 0, + y: -1 +}, { + x: 1, + y: -1 +}, { + x: -4, + y: 0 +}, { + x: -3, + y: 0 +}, { + x: -2, + y: 0 +}, { + x: -1, + y: 0 +}]]; +const RefinementTemplates = [{ + coding: [{ + x: 0, + y: -1 + }, { + x: 1, + y: -1 + }, { + x: -1, + y: 0 + }], + reference: [{ + x: 0, + y: -1 + }, { + x: 1, + y: -1 + }, { + x: -1, + y: 0 + }, { + x: 0, + y: 0 + }, { + x: 1, + y: 0 + }, { + x: -1, + y: 1 + }, { + x: 0, + y: 1 + }, { + x: 1, + y: 1 + }] +}, { + coding: [{ + x: -1, + y: -1 + }, { + x: 0, + y: -1 + }, { + x: 1, + y: -1 + }, { + x: -1, + y: 0 + }], + reference: [{ + x: 0, + y: -1 + }, { + x: -1, + y: 0 + }, { + x: 0, + y: 0 + }, { + x: 1, + y: 0 + }, { + x: 0, + y: 1 + }, { + x: 1, + y: 1 + }] +}]; +const ReusedContexts = [0x9b25, 0x0795, 0x00e5, 0x0195]; +const RefinementReusedContexts = [0x0020, 0x0008]; +function decodeBitmapTemplate0(width, height, decodingContext) { + const decoder = decodingContext.decoder; + const contexts = decodingContext.contextCache.getContexts("GB"); + const bitmap = []; + let contextLabel, i, j, pixel, row, row1, row2; + const OLD_PIXEL_MASK = 0x7bf7; + for (i = 0; i < height; i++) { + row = bitmap[i] = new Uint8Array(width); + row1 = i < 1 ? row : bitmap[i - 1]; + row2 = i < 2 ? row : bitmap[i - 2]; + contextLabel = row2[0] << 13 | row2[1] << 12 | row2[2] << 11 | row1[0] << 7 | row1[1] << 6 | row1[2] << 5 | row1[3] << 4; + for (j = 0; j < width; j++) { + row[j] = pixel = decoder.readBit(contexts, contextLabel); + contextLabel = (contextLabel & OLD_PIXEL_MASK) << 1 | (j + 3 < width ? row2[j + 3] << 11 : 0) | (j + 4 < width ? row1[j + 4] << 4 : 0) | pixel; + } + } + return bitmap; +} +function decodeBitmap(mmr, width, height, templateIndex, prediction, skip, at, decodingContext) { + if (mmr) { + const input = new Reader(decodingContext.data, decodingContext.start, decodingContext.end); + return decodeMMRBitmap(input, width, height, false); + } + if (templateIndex === 0 && !skip && !prediction && at.length === 4 && at[0].x === 3 && at[0].y === -1 && at[1].x === -3 && at[1].y === -1 && at[2].x === 2 && at[2].y === -2 && at[3].x === -2 && at[3].y === -2) { + return decodeBitmapTemplate0(width, height, decodingContext); + } + const useskip = !!skip; + const template = CodingTemplates[templateIndex].concat(at); + template.sort(function (a, b) { + return a.y - b.y || a.x - b.x; + }); + const templateLength = template.length; + const templateX = new Int8Array(templateLength); + const templateY = new Int8Array(templateLength); + const changingTemplateEntries = []; + let reuseMask = 0, + minX = 0, + maxX = 0, + minY = 0; + let c, k; + for (k = 0; k < templateLength; k++) { + templateX[k] = template[k].x; + templateY[k] = template[k].y; + minX = Math.min(minX, template[k].x); + maxX = Math.max(maxX, template[k].x); + minY = Math.min(minY, template[k].y); + if (k < templateLength - 1 && template[k].y === template[k + 1].y && template[k].x === template[k + 1].x - 1) { + reuseMask |= 1 << templateLength - 1 - k; + } else { + changingTemplateEntries.push(k); + } + } + const changingEntriesLength = changingTemplateEntries.length; + const changingTemplateX = new Int8Array(changingEntriesLength); + const changingTemplateY = new Int8Array(changingEntriesLength); + const changingTemplateBit = new Uint16Array(changingEntriesLength); + for (c = 0; c < changingEntriesLength; c++) { + k = changingTemplateEntries[c]; + changingTemplateX[c] = template[k].x; + changingTemplateY[c] = template[k].y; + changingTemplateBit[c] = 1 << templateLength - 1 - k; + } + const sbb_left = -minX; + const sbb_top = -minY; + const sbb_right = width - maxX; + const pseudoPixelContext = ReusedContexts[templateIndex]; + let row = new Uint8Array(width); + const bitmap = []; + const decoder = decodingContext.decoder; + const contexts = decodingContext.contextCache.getContexts("GB"); + let ltp = 0, + j, + i0, + j0, + contextLabel = 0, + bit, + shift; + for (let i = 0; i < height; i++) { + if (prediction) { + const sltp = decoder.readBit(contexts, pseudoPixelContext); + ltp ^= sltp; + if (ltp) { + bitmap.push(row); + continue; + } + } + row = new Uint8Array(row); + bitmap.push(row); + for (j = 0; j < width; j++) { + if (useskip && skip[i][j]) { + row[j] = 0; + continue; + } + if (j >= sbb_left && j < sbb_right && i >= sbb_top) { + contextLabel = contextLabel << 1 & reuseMask; + for (k = 0; k < changingEntriesLength; k++) { + i0 = i + changingTemplateY[k]; + j0 = j + changingTemplateX[k]; + bit = bitmap[i0][j0]; + if (bit) { + bit = changingTemplateBit[k]; + contextLabel |= bit; + } + } + } else { + contextLabel = 0; + shift = templateLength - 1; + for (k = 0; k < templateLength; k++, shift--) { + j0 = j + templateX[k]; + if (j0 >= 0 && j0 < width) { + i0 = i + templateY[k]; + if (i0 >= 0) { + bit = bitmap[i0][j0]; + if (bit) { + contextLabel |= bit << shift; + } + } + } + } + } + const pixel = decoder.readBit(contexts, contextLabel); + row[j] = pixel; + } + } + return bitmap; +} +function decodeRefinement(width, height, templateIndex, referenceBitmap, offsetX, offsetY, prediction, at, decodingContext) { + let codingTemplate = RefinementTemplates[templateIndex].coding; + if (templateIndex === 0) { + codingTemplate = codingTemplate.concat([at[0]]); + } + const codingTemplateLength = codingTemplate.length; + const codingTemplateX = new Int32Array(codingTemplateLength); + const codingTemplateY = new Int32Array(codingTemplateLength); + let k; + for (k = 0; k < codingTemplateLength; k++) { + codingTemplateX[k] = codingTemplate[k].x; + codingTemplateY[k] = codingTemplate[k].y; + } + let referenceTemplate = RefinementTemplates[templateIndex].reference; + if (templateIndex === 0) { + referenceTemplate = referenceTemplate.concat([at[1]]); + } + const referenceTemplateLength = referenceTemplate.length; + const referenceTemplateX = new Int32Array(referenceTemplateLength); + const referenceTemplateY = new Int32Array(referenceTemplateLength); + for (k = 0; k < referenceTemplateLength; k++) { + referenceTemplateX[k] = referenceTemplate[k].x; + referenceTemplateY[k] = referenceTemplate[k].y; + } + const referenceWidth = referenceBitmap[0].length; + const referenceHeight = referenceBitmap.length; + const pseudoPixelContext = RefinementReusedContexts[templateIndex]; + const bitmap = []; + const decoder = decodingContext.decoder; + const contexts = decodingContext.contextCache.getContexts("GR"); + let ltp = 0; + for (let i = 0; i < height; i++) { + if (prediction) { + const sltp = decoder.readBit(contexts, pseudoPixelContext); + ltp ^= sltp; + if (ltp) { + throw new Jbig2Error("prediction is not supported"); + } + } + const row = new Uint8Array(width); + bitmap.push(row); + for (let j = 0; j < width; j++) { + let i0, j0; + let contextLabel = 0; + for (k = 0; k < codingTemplateLength; k++) { + i0 = i + codingTemplateY[k]; + j0 = j + codingTemplateX[k]; + if (i0 < 0 || j0 < 0 || j0 >= width) { + contextLabel <<= 1; + } else { + contextLabel = contextLabel << 1 | bitmap[i0][j0]; + } + } + for (k = 0; k < referenceTemplateLength; k++) { + i0 = i + referenceTemplateY[k] - offsetY; + j0 = j + referenceTemplateX[k] - offsetX; + if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || j0 >= referenceWidth) { + contextLabel <<= 1; + } else { + contextLabel = contextLabel << 1 | referenceBitmap[i0][j0]; + } + } + const pixel = decoder.readBit(contexts, contextLabel); + row[j] = pixel; + } + } + return bitmap; +} +function decodeSymbolDictionary(huffman, refinement, symbols, numberOfNewSymbols, numberOfExportedSymbols, huffmanTables, templateIndex, at, refinementTemplateIndex, refinementAt, decodingContext, huffmanInput) { + if (huffman && refinement) { + throw new Jbig2Error("symbol refinement with Huffman is not supported"); + } + const newSymbols = []; + let currentHeight = 0; + let symbolCodeLength = (0, _core_utils.log2)(symbols.length + numberOfNewSymbols); + const decoder = decodingContext.decoder; + const contextCache = decodingContext.contextCache; + let tableB1, symbolWidths; + if (huffman) { + tableB1 = getStandardTable(1); + symbolWidths = []; + symbolCodeLength = Math.max(symbolCodeLength, 1); + } + while (newSymbols.length < numberOfNewSymbols) { + const deltaHeight = huffman ? huffmanTables.tableDeltaHeight.decode(huffmanInput) : decodeInteger(contextCache, "IADH", decoder); + currentHeight += deltaHeight; + let currentWidth = 0, + totalWidth = 0; + const firstSymbol = huffman ? symbolWidths.length : 0; + while (true) { + const deltaWidth = huffman ? huffmanTables.tableDeltaWidth.decode(huffmanInput) : decodeInteger(contextCache, "IADW", decoder); + if (deltaWidth === null) { + break; + } + currentWidth += deltaWidth; + totalWidth += currentWidth; + let bitmap; + if (refinement) { + const numberOfInstances = decodeInteger(contextCache, "IAAI", decoder); + if (numberOfInstances > 1) { + bitmap = decodeTextRegion(huffman, refinement, currentWidth, currentHeight, 0, numberOfInstances, 1, symbols.concat(newSymbols), symbolCodeLength, 0, 0, 1, 0, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, 0, huffmanInput); + } else { + const symbolId = decodeIAID(contextCache, decoder, symbolCodeLength); + const rdx = decodeInteger(contextCache, "IARDX", decoder); + const rdy = decodeInteger(contextCache, "IARDY", decoder); + const symbol = symbolId < symbols.length ? symbols[symbolId] : newSymbols[symbolId - symbols.length]; + bitmap = decodeRefinement(currentWidth, currentHeight, refinementTemplateIndex, symbol, rdx, rdy, false, refinementAt, decodingContext); + } + newSymbols.push(bitmap); + } else if (huffman) { + symbolWidths.push(currentWidth); + } else { + bitmap = decodeBitmap(false, currentWidth, currentHeight, templateIndex, false, null, at, decodingContext); + newSymbols.push(bitmap); + } + } + if (huffman && !refinement) { + const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput); + huffmanInput.byteAlign(); + let collectiveBitmap; + if (bitmapSize === 0) { + collectiveBitmap = readUncompressedBitmap(huffmanInput, totalWidth, currentHeight); + } else { + const originalEnd = huffmanInput.end; + const bitmapEnd = huffmanInput.position + bitmapSize; + huffmanInput.end = bitmapEnd; + collectiveBitmap = decodeMMRBitmap(huffmanInput, totalWidth, currentHeight, false); + huffmanInput.end = originalEnd; + huffmanInput.position = bitmapEnd; + } + const numberOfSymbolsDecoded = symbolWidths.length; + if (firstSymbol === numberOfSymbolsDecoded - 1) { + newSymbols.push(collectiveBitmap); + } else { + let i, + y, + xMin = 0, + xMax, + bitmapWidth, + symbolBitmap; + for (i = firstSymbol; i < numberOfSymbolsDecoded; i++) { + bitmapWidth = symbolWidths[i]; + xMax = xMin + bitmapWidth; + symbolBitmap = []; + for (y = 0; y < currentHeight; y++) { + symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax)); + } + newSymbols.push(symbolBitmap); + xMin = xMax; + } + } + } + } + const exportedSymbols = [], + flags = []; + let currentFlag = false, + i, + ii; + const totalSymbolsLength = symbols.length + numberOfNewSymbols; + while (flags.length < totalSymbolsLength) { + let runLength = huffman ? tableB1.decode(huffmanInput) : decodeInteger(contextCache, "IAEX", decoder); + while (runLength--) { + flags.push(currentFlag); + } + currentFlag = !currentFlag; + } + for (i = 0, ii = symbols.length; i < ii; i++) { + if (flags[i]) { + exportedSymbols.push(symbols[i]); + } + } + for (let j = 0; j < numberOfNewSymbols; i++, j++) { + if (flags[i]) { + exportedSymbols.push(newSymbols[j]); + } + } + return exportedSymbols; +} +function decodeTextRegion(huffman, refinement, width, height, defaultPixelValue, numberOfSymbolInstances, stripSize, inputSymbols, symbolCodeLength, transposed, dsOffset, referenceCorner, combinationOperator, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, logStripSize, huffmanInput) { + if (huffman && refinement) { + throw new Jbig2Error("refinement with Huffman is not supported"); + } + const bitmap = []; + let i, row; + for (i = 0; i < height; i++) { + row = new Uint8Array(width); + if (defaultPixelValue) { + for (let j = 0; j < width; j++) { + row[j] = defaultPixelValue; + } + } + bitmap.push(row); + } + const decoder = decodingContext.decoder; + const contextCache = decodingContext.contextCache; + let stripT = huffman ? -huffmanTables.tableDeltaT.decode(huffmanInput) : -decodeInteger(contextCache, "IADT", decoder); + let firstS = 0; + i = 0; + while (i < numberOfSymbolInstances) { + const deltaT = huffman ? huffmanTables.tableDeltaT.decode(huffmanInput) : decodeInteger(contextCache, "IADT", decoder); + stripT += deltaT; + const deltaFirstS = huffman ? huffmanTables.tableFirstS.decode(huffmanInput) : decodeInteger(contextCache, "IAFS", decoder); + firstS += deltaFirstS; + let currentS = firstS; + do { + let currentT = 0; + if (stripSize > 1) { + currentT = huffman ? huffmanInput.readBits(logStripSize) : decodeInteger(contextCache, "IAIT", decoder); + } + const t = stripSize * stripT + currentT; + const symbolId = huffman ? huffmanTables.symbolIDTable.decode(huffmanInput) : decodeIAID(contextCache, decoder, symbolCodeLength); + const applyRefinement = refinement && (huffman ? huffmanInput.readBit() : decodeInteger(contextCache, "IARI", decoder)); + let symbolBitmap = inputSymbols[symbolId]; + let symbolWidth = symbolBitmap[0].length; + let symbolHeight = symbolBitmap.length; + if (applyRefinement) { + const rdw = decodeInteger(contextCache, "IARDW", decoder); + const rdh = decodeInteger(contextCache, "IARDH", decoder); + const rdx = decodeInteger(contextCache, "IARDX", decoder); + const rdy = decodeInteger(contextCache, "IARDY", decoder); + symbolWidth += rdw; + symbolHeight += rdh; + symbolBitmap = decodeRefinement(symbolWidth, symbolHeight, refinementTemplateIndex, symbolBitmap, (rdw >> 1) + rdx, (rdh >> 1) + rdy, false, refinementAt, decodingContext); + } + const offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1); + const offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0); + let s2, t2, symbolRow; + if (transposed) { + for (s2 = 0; s2 < symbolHeight; s2++) { + row = bitmap[offsetS + s2]; + if (!row) { + continue; + } + symbolRow = symbolBitmap[s2]; + const maxWidth = Math.min(width - offsetT, symbolWidth); + switch (combinationOperator) { + case 0: + for (t2 = 0; t2 < maxWidth; t2++) { + row[offsetT + t2] |= symbolRow[t2]; + } + break; + case 2: + for (t2 = 0; t2 < maxWidth; t2++) { + row[offsetT + t2] ^= symbolRow[t2]; + } + break; + default: + throw new Jbig2Error(`operator ${combinationOperator} is not supported`); + } + } + currentS += symbolHeight - 1; + } else { + for (t2 = 0; t2 < symbolHeight; t2++) { + row = bitmap[offsetT + t2]; + if (!row) { + continue; + } + symbolRow = symbolBitmap[t2]; + switch (combinationOperator) { + case 0: + for (s2 = 0; s2 < symbolWidth; s2++) { + row[offsetS + s2] |= symbolRow[s2]; + } + break; + case 2: + for (s2 = 0; s2 < symbolWidth; s2++) { + row[offsetS + s2] ^= symbolRow[s2]; + } + break; + default: + throw new Jbig2Error(`operator ${combinationOperator} is not supported`); + } + } + currentS += symbolWidth - 1; + } + i++; + const deltaS = huffman ? huffmanTables.tableDeltaS.decode(huffmanInput) : decodeInteger(contextCache, "IADS", decoder); + if (deltaS === null) { + break; + } + currentS += deltaS + dsOffset; + } while (true); + } + return bitmap; +} +function decodePatternDictionary(mmr, patternWidth, patternHeight, maxPatternIndex, template, decodingContext) { + const at = []; + if (!mmr) { + at.push({ + x: -patternWidth, + y: 0 + }); + if (template === 0) { + at.push({ + x: -3, + y: -1 + }, { + x: 2, + y: -2 + }, { + x: -2, + y: -2 + }); + } + } + const collectiveWidth = (maxPatternIndex + 1) * patternWidth; + const collectiveBitmap = decodeBitmap(mmr, collectiveWidth, patternHeight, template, false, null, at, decodingContext); + const patterns = []; + for (let i = 0; i <= maxPatternIndex; i++) { + const patternBitmap = []; + const xMin = patternWidth * i; + const xMax = xMin + patternWidth; + for (let y = 0; y < patternHeight; y++) { + patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax)); + } + patterns.push(patternBitmap); + } + return patterns; +} +function decodeHalftoneRegion(mmr, patterns, template, regionWidth, regionHeight, defaultPixelValue, enableSkip, combinationOperator, gridWidth, gridHeight, gridOffsetX, gridOffsetY, gridVectorX, gridVectorY, decodingContext) { + const skip = null; + if (enableSkip) { + throw new Jbig2Error("skip is not supported"); + } + if (combinationOperator !== 0) { + throw new Jbig2Error(`operator "${combinationOperator}" is not supported in halftone region`); + } + const regionBitmap = []; + let i, j, row; + for (i = 0; i < regionHeight; i++) { + row = new Uint8Array(regionWidth); + if (defaultPixelValue) { + for (j = 0; j < regionWidth; j++) { + row[j] = defaultPixelValue; + } + } + regionBitmap.push(row); + } + const numberOfPatterns = patterns.length; + const pattern0 = patterns[0]; + const patternWidth = pattern0[0].length, + patternHeight = pattern0.length; + const bitsPerValue = (0, _core_utils.log2)(numberOfPatterns); + const at = []; + if (!mmr) { + at.push({ + x: template <= 1 ? 3 : 2, + y: -1 + }); + if (template === 0) { + at.push({ + x: -3, + y: -1 + }, { + x: 2, + y: -2 + }, { + x: -2, + y: -2 + }); + } + } + const grayScaleBitPlanes = []; + let mmrInput, bitmap; + if (mmr) { + mmrInput = new Reader(decodingContext.data, decodingContext.start, decodingContext.end); + } + for (i = bitsPerValue - 1; i >= 0; i--) { + if (mmr) { + bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true); + } else { + bitmap = decodeBitmap(false, gridWidth, gridHeight, template, false, skip, at, decodingContext); + } + grayScaleBitPlanes[i] = bitmap; + } + let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow; + for (mg = 0; mg < gridHeight; mg++) { + for (ng = 0; ng < gridWidth; ng++) { + bit = 0; + patternIndex = 0; + for (j = bitsPerValue - 1; j >= 0; j--) { + bit ^= grayScaleBitPlanes[j][mg][ng]; + patternIndex |= bit << j; + } + patternBitmap = patterns[patternIndex]; + x = gridOffsetX + mg * gridVectorY + ng * gridVectorX >> 8; + y = gridOffsetY + mg * gridVectorX - ng * gridVectorY >> 8; + if (x >= 0 && x + patternWidth <= regionWidth && y >= 0 && y + patternHeight <= regionHeight) { + for (i = 0; i < patternHeight; i++) { + regionRow = regionBitmap[y + i]; + patternRow = patternBitmap[i]; + for (j = 0; j < patternWidth; j++) { + regionRow[x + j] |= patternRow[j]; + } + } + } else { + let regionX, regionY; + for (i = 0; i < patternHeight; i++) { + regionY = y + i; + if (regionY < 0 || regionY >= regionHeight) { + continue; + } + regionRow = regionBitmap[regionY]; + patternRow = patternBitmap[i]; + for (j = 0; j < patternWidth; j++) { + regionX = x + j; + if (regionX >= 0 && regionX < regionWidth) { + regionRow[regionX] |= patternRow[j]; + } + } + } + } + } + } + return regionBitmap; +} +function readSegmentHeader(data, start) { + const segmentHeader = {}; + segmentHeader.number = (0, _core_utils.readUint32)(data, start); + const flags = data[start + 4]; + const segmentType = flags & 0x3f; + if (!SegmentTypes[segmentType]) { + throw new Jbig2Error("invalid segment type: " + segmentType); + } + segmentHeader.type = segmentType; + segmentHeader.typeName = SegmentTypes[segmentType]; + segmentHeader.deferredNonRetain = !!(flags & 0x80); + const pageAssociationFieldSize = !!(flags & 0x40); + const referredFlags = data[start + 5]; + let referredToCount = referredFlags >> 5 & 7; + const retainBits = [referredFlags & 31]; + let position = start + 6; + if (referredFlags === 7) { + referredToCount = (0, _core_utils.readUint32)(data, position - 1) & 0x1fffffff; + position += 3; + let bytes = referredToCount + 7 >> 3; + retainBits[0] = data[position++]; + while (--bytes > 0) { + retainBits.push(data[position++]); + } + } else if (referredFlags === 5 || referredFlags === 6) { + throw new Jbig2Error("invalid referred-to flags"); + } + segmentHeader.retainBits = retainBits; + let referredToSegmentNumberSize = 4; + if (segmentHeader.number <= 256) { + referredToSegmentNumberSize = 1; + } else if (segmentHeader.number <= 65536) { + referredToSegmentNumberSize = 2; + } + const referredTo = []; + let i, ii; + for (i = 0; i < referredToCount; i++) { + let number; + if (referredToSegmentNumberSize === 1) { + number = data[position]; + } else if (referredToSegmentNumberSize === 2) { + number = (0, _core_utils.readUint16)(data, position); + } else { + number = (0, _core_utils.readUint32)(data, position); + } + referredTo.push(number); + position += referredToSegmentNumberSize; + } + segmentHeader.referredTo = referredTo; + if (!pageAssociationFieldSize) { + segmentHeader.pageAssociation = data[position++]; + } else { + segmentHeader.pageAssociation = (0, _core_utils.readUint32)(data, position); + position += 4; + } + segmentHeader.length = (0, _core_utils.readUint32)(data, position); + position += 4; + if (segmentHeader.length === 0xffffffff) { + if (segmentType === 38) { + const genericRegionInfo = readRegionSegmentInformation(data, position); + const genericRegionSegmentFlags = data[position + RegionSegmentInformationFieldLength]; + const genericRegionMmr = !!(genericRegionSegmentFlags & 1); + const searchPatternLength = 6; + const searchPattern = new Uint8Array(searchPatternLength); + if (!genericRegionMmr) { + searchPattern[0] = 0xff; + searchPattern[1] = 0xac; + } + searchPattern[2] = genericRegionInfo.height >>> 24 & 0xff; + searchPattern[3] = genericRegionInfo.height >> 16 & 0xff; + searchPattern[4] = genericRegionInfo.height >> 8 & 0xff; + searchPattern[5] = genericRegionInfo.height & 0xff; + for (i = position, ii = data.length; i < ii; i++) { + let j = 0; + while (j < searchPatternLength && searchPattern[j] === data[i + j]) { + j++; + } + if (j === searchPatternLength) { + segmentHeader.length = i + searchPatternLength; + break; + } + } + if (segmentHeader.length === 0xffffffff) { + throw new Jbig2Error("segment end was not found"); + } + } else { + throw new Jbig2Error("invalid unknown segment length"); + } + } + segmentHeader.headerEnd = position; + return segmentHeader; +} +function readSegments(header, data, start, end) { + const segments = []; + let position = start; + while (position < end) { + const segmentHeader = readSegmentHeader(data, position); + position = segmentHeader.headerEnd; + const segment = { + header: segmentHeader, + data + }; + if (!header.randomAccess) { + segment.start = position; + position += segmentHeader.length; + segment.end = position; + } + segments.push(segment); + if (segmentHeader.type === 51) { + break; + } + } + if (header.randomAccess) { + for (let i = 0, ii = segments.length; i < ii; i++) { + segments[i].start = position; + position += segments[i].header.length; + segments[i].end = position; + } + } + return segments; +} +function readRegionSegmentInformation(data, start) { + return { + width: (0, _core_utils.readUint32)(data, start), + height: (0, _core_utils.readUint32)(data, start + 4), + x: (0, _core_utils.readUint32)(data, start + 8), + y: (0, _core_utils.readUint32)(data, start + 12), + combinationOperator: data[start + 16] & 7 + }; +} +const RegionSegmentInformationFieldLength = 17; +function processSegment(segment, visitor) { + const header = segment.header; + const data = segment.data, + end = segment.end; + let position = segment.start; + let args, at, i, atLength; + switch (header.type) { + case 0: + const dictionary = {}; + const dictionaryFlags = (0, _core_utils.readUint16)(data, position); + dictionary.huffman = !!(dictionaryFlags & 1); + dictionary.refinement = !!(dictionaryFlags & 2); + dictionary.huffmanDHSelector = dictionaryFlags >> 2 & 3; + dictionary.huffmanDWSelector = dictionaryFlags >> 4 & 3; + dictionary.bitmapSizeSelector = dictionaryFlags >> 6 & 1; + dictionary.aggregationInstancesSelector = dictionaryFlags >> 7 & 1; + dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256); + dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512); + dictionary.template = dictionaryFlags >> 10 & 3; + dictionary.refinementTemplate = dictionaryFlags >> 12 & 1; + position += 2; + if (!dictionary.huffman) { + atLength = dictionary.template === 0 ? 4 : 1; + at = []; + for (i = 0; i < atLength; i++) { + at.push({ + x: (0, _core_utils.readInt8)(data, position), + y: (0, _core_utils.readInt8)(data, position + 1) + }); + position += 2; + } + dictionary.at = at; + } + if (dictionary.refinement && !dictionary.refinementTemplate) { + at = []; + for (i = 0; i < 2; i++) { + at.push({ + x: (0, _core_utils.readInt8)(data, position), + y: (0, _core_utils.readInt8)(data, position + 1) + }); + position += 2; + } + dictionary.refinementAt = at; + } + dictionary.numberOfExportedSymbols = (0, _core_utils.readUint32)(data, position); + position += 4; + dictionary.numberOfNewSymbols = (0, _core_utils.readUint32)(data, position); + position += 4; + args = [dictionary, header.number, header.referredTo, data, position, end]; + break; + case 6: + case 7: + const textRegion = {}; + textRegion.info = readRegionSegmentInformation(data, position); + position += RegionSegmentInformationFieldLength; + const textRegionSegmentFlags = (0, _core_utils.readUint16)(data, position); + position += 2; + textRegion.huffman = !!(textRegionSegmentFlags & 1); + textRegion.refinement = !!(textRegionSegmentFlags & 2); + textRegion.logStripSize = textRegionSegmentFlags >> 2 & 3; + textRegion.stripSize = 1 << textRegion.logStripSize; + textRegion.referenceCorner = textRegionSegmentFlags >> 4 & 3; + textRegion.transposed = !!(textRegionSegmentFlags & 64); + textRegion.combinationOperator = textRegionSegmentFlags >> 7 & 3; + textRegion.defaultPixelValue = textRegionSegmentFlags >> 9 & 1; + textRegion.dsOffset = textRegionSegmentFlags << 17 >> 27; + textRegion.refinementTemplate = textRegionSegmentFlags >> 15 & 1; + if (textRegion.huffman) { + const textRegionHuffmanFlags = (0, _core_utils.readUint16)(data, position); + position += 2; + textRegion.huffmanFS = textRegionHuffmanFlags & 3; + textRegion.huffmanDS = textRegionHuffmanFlags >> 2 & 3; + textRegion.huffmanDT = textRegionHuffmanFlags >> 4 & 3; + textRegion.huffmanRefinementDW = textRegionHuffmanFlags >> 6 & 3; + textRegion.huffmanRefinementDH = textRegionHuffmanFlags >> 8 & 3; + textRegion.huffmanRefinementDX = textRegionHuffmanFlags >> 10 & 3; + textRegion.huffmanRefinementDY = textRegionHuffmanFlags >> 12 & 3; + textRegion.huffmanRefinementSizeSelector = !!(textRegionHuffmanFlags & 0x4000); + } + if (textRegion.refinement && !textRegion.refinementTemplate) { + at = []; + for (i = 0; i < 2; i++) { + at.push({ + x: (0, _core_utils.readInt8)(data, position), + y: (0, _core_utils.readInt8)(data, position + 1) + }); + position += 2; + } + textRegion.refinementAt = at; + } + textRegion.numberOfSymbolInstances = (0, _core_utils.readUint32)(data, position); + position += 4; + args = [textRegion, header.referredTo, data, position, end]; + break; + case 16: + const patternDictionary = {}; + const patternDictionaryFlags = data[position++]; + patternDictionary.mmr = !!(patternDictionaryFlags & 1); + patternDictionary.template = patternDictionaryFlags >> 1 & 3; + patternDictionary.patternWidth = data[position++]; + patternDictionary.patternHeight = data[position++]; + patternDictionary.maxPatternIndex = (0, _core_utils.readUint32)(data, position); + position += 4; + args = [patternDictionary, header.number, data, position, end]; + break; + case 22: + case 23: + const halftoneRegion = {}; + halftoneRegion.info = readRegionSegmentInformation(data, position); + position += RegionSegmentInformationFieldLength; + const halftoneRegionFlags = data[position++]; + halftoneRegion.mmr = !!(halftoneRegionFlags & 1); + halftoneRegion.template = halftoneRegionFlags >> 1 & 3; + halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8); + halftoneRegion.combinationOperator = halftoneRegionFlags >> 4 & 7; + halftoneRegion.defaultPixelValue = halftoneRegionFlags >> 7 & 1; + halftoneRegion.gridWidth = (0, _core_utils.readUint32)(data, position); + position += 4; + halftoneRegion.gridHeight = (0, _core_utils.readUint32)(data, position); + position += 4; + halftoneRegion.gridOffsetX = (0, _core_utils.readUint32)(data, position) & 0xffffffff; + position += 4; + halftoneRegion.gridOffsetY = (0, _core_utils.readUint32)(data, position) & 0xffffffff; + position += 4; + halftoneRegion.gridVectorX = (0, _core_utils.readUint16)(data, position); + position += 2; + halftoneRegion.gridVectorY = (0, _core_utils.readUint16)(data, position); + position += 2; + args = [halftoneRegion, header.referredTo, data, position, end]; + break; + case 38: + case 39: + const genericRegion = {}; + genericRegion.info = readRegionSegmentInformation(data, position); + position += RegionSegmentInformationFieldLength; + const genericRegionSegmentFlags = data[position++]; + genericRegion.mmr = !!(genericRegionSegmentFlags & 1); + genericRegion.template = genericRegionSegmentFlags >> 1 & 3; + genericRegion.prediction = !!(genericRegionSegmentFlags & 8); + if (!genericRegion.mmr) { + atLength = genericRegion.template === 0 ? 4 : 1; + at = []; + for (i = 0; i < atLength; i++) { + at.push({ + x: (0, _core_utils.readInt8)(data, position), + y: (0, _core_utils.readInt8)(data, position + 1) + }); + position += 2; + } + genericRegion.at = at; + } + args = [genericRegion, data, position, end]; + break; + case 48: + const pageInfo = { + width: (0, _core_utils.readUint32)(data, position), + height: (0, _core_utils.readUint32)(data, position + 4), + resolutionX: (0, _core_utils.readUint32)(data, position + 8), + resolutionY: (0, _core_utils.readUint32)(data, position + 12) + }; + if (pageInfo.height === 0xffffffff) { + delete pageInfo.height; + } + const pageSegmentFlags = data[position + 16]; + (0, _core_utils.readUint16)(data, position + 17); + pageInfo.lossless = !!(pageSegmentFlags & 1); + pageInfo.refinement = !!(pageSegmentFlags & 2); + pageInfo.defaultPixelValue = pageSegmentFlags >> 2 & 1; + pageInfo.combinationOperator = pageSegmentFlags >> 3 & 3; + pageInfo.requiresBuffer = !!(pageSegmentFlags & 32); + pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64); + args = [pageInfo]; + break; + case 49: + break; + case 50: + break; + case 51: + break; + case 53: + args = [header.number, data, position, end]; + break; + case 62: + break; + default: + throw new Jbig2Error(`segment type ${header.typeName}(${header.type}) is not implemented`); + } + const callbackName = "on" + header.typeName; + if (callbackName in visitor) { + visitor[callbackName].apply(visitor, args); + } +} +function processSegments(segments, visitor) { + for (let i = 0, ii = segments.length; i < ii; i++) { + processSegment(segments[i], visitor); + } +} +function parseJbig2Chunks(chunks) { + const visitor = new SimpleSegmentVisitor(); + for (let i = 0, ii = chunks.length; i < ii; i++) { + const chunk = chunks[i]; + const segments = readSegments({}, chunk.data, chunk.start, chunk.end); + processSegments(segments, visitor); + } + return visitor.buffer; +} +function parseJbig2(data) { + throw new Error("Not implemented: parseJbig2"); +} +class SimpleSegmentVisitor { + onPageInformation(info) { + this.currentPageInfo = info; + const rowSize = info.width + 7 >> 3; + const buffer = new Uint8ClampedArray(rowSize * info.height); + if (info.defaultPixelValue) { + buffer.fill(0xff); + } + this.buffer = buffer; + } + drawBitmap(regionInfo, bitmap) { + const pageInfo = this.currentPageInfo; + const width = regionInfo.width, + height = regionInfo.height; + const rowSize = pageInfo.width + 7 >> 3; + const combinationOperator = pageInfo.combinationOperatorOverride ? regionInfo.combinationOperator : pageInfo.combinationOperator; + const buffer = this.buffer; + const mask0 = 128 >> (regionInfo.x & 7); + let offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3); + let i, j, mask, offset; + switch (combinationOperator) { + case 0: + for (i = 0; i < height; i++) { + mask = mask0; + offset = offset0; + for (j = 0; j < width; j++) { + if (bitmap[i][j]) { + buffer[offset] |= mask; + } + mask >>= 1; + if (!mask) { + mask = 128; + offset++; + } + } + offset0 += rowSize; + } + break; + case 2: + for (i = 0; i < height; i++) { + mask = mask0; + offset = offset0; + for (j = 0; j < width; j++) { + if (bitmap[i][j]) { + buffer[offset] ^= mask; + } + mask >>= 1; + if (!mask) { + mask = 128; + offset++; + } + } + offset0 += rowSize; + } + break; + default: + throw new Jbig2Error(`operator ${combinationOperator} is not supported`); + } + } + onImmediateGenericRegion(region, data, start, end) { + const regionInfo = region.info; + const decodingContext = new DecodingContext(data, start, end); + const bitmap = decodeBitmap(region.mmr, regionInfo.width, regionInfo.height, region.template, region.prediction, null, region.at, decodingContext); + this.drawBitmap(regionInfo, bitmap); + } + onImmediateLosslessGenericRegion() { + this.onImmediateGenericRegion(...arguments); + } + onSymbolDictionary(dictionary, currentSegment, referredSegments, data, start, end) { + let huffmanTables, huffmanInput; + if (dictionary.huffman) { + huffmanTables = getSymbolDictionaryHuffmanTables(dictionary, referredSegments, this.customTables); + huffmanInput = new Reader(data, start, end); + } + let symbols = this.symbols; + if (!symbols) { + this.symbols = symbols = {}; + } + const inputSymbols = []; + for (const referredSegment of referredSegments) { + const referredSymbols = symbols[referredSegment]; + if (referredSymbols) { + inputSymbols.push(...referredSymbols); + } + } + const decodingContext = new DecodingContext(data, start, end); + symbols[currentSegment] = decodeSymbolDictionary(dictionary.huffman, dictionary.refinement, inputSymbols, dictionary.numberOfNewSymbols, dictionary.numberOfExportedSymbols, huffmanTables, dictionary.template, dictionary.at, dictionary.refinementTemplate, dictionary.refinementAt, decodingContext, huffmanInput); + } + onImmediateTextRegion(region, referredSegments, data, start, end) { + const regionInfo = region.info; + let huffmanTables, huffmanInput; + const symbols = this.symbols; + const inputSymbols = []; + for (const referredSegment of referredSegments) { + const referredSymbols = symbols[referredSegment]; + if (referredSymbols) { + inputSymbols.push(...referredSymbols); + } + } + const symbolCodeLength = (0, _core_utils.log2)(inputSymbols.length); + if (region.huffman) { + huffmanInput = new Reader(data, start, end); + huffmanTables = getTextRegionHuffmanTables(region, referredSegments, this.customTables, inputSymbols.length, huffmanInput); + } + const decodingContext = new DecodingContext(data, start, end); + const bitmap = decodeTextRegion(region.huffman, region.refinement, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.numberOfSymbolInstances, region.stripSize, inputSymbols, symbolCodeLength, region.transposed, region.dsOffset, region.referenceCorner, region.combinationOperator, huffmanTables, region.refinementTemplate, region.refinementAt, decodingContext, region.logStripSize, huffmanInput); + this.drawBitmap(regionInfo, bitmap); + } + onImmediateLosslessTextRegion() { + this.onImmediateTextRegion(...arguments); + } + onPatternDictionary(dictionary, currentSegment, data, start, end) { + let patterns = this.patterns; + if (!patterns) { + this.patterns = patterns = {}; + } + const decodingContext = new DecodingContext(data, start, end); + patterns[currentSegment] = decodePatternDictionary(dictionary.mmr, dictionary.patternWidth, dictionary.patternHeight, dictionary.maxPatternIndex, dictionary.template, decodingContext); + } + onImmediateHalftoneRegion(region, referredSegments, data, start, end) { + const patterns = this.patterns[referredSegments[0]]; + const regionInfo = region.info; + const decodingContext = new DecodingContext(data, start, end); + const bitmap = decodeHalftoneRegion(region.mmr, patterns, region.template, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.enableSkip, region.combinationOperator, region.gridWidth, region.gridHeight, region.gridOffsetX, region.gridOffsetY, region.gridVectorX, region.gridVectorY, decodingContext); + this.drawBitmap(regionInfo, bitmap); + } + onImmediateLosslessHalftoneRegion() { + this.onImmediateHalftoneRegion(...arguments); + } + onTables(currentSegment, data, start, end) { + let customTables = this.customTables; + if (!customTables) { + this.customTables = customTables = {}; + } + customTables[currentSegment] = decodeTablesSegment(data, start, end); + } +} +class HuffmanLine { + constructor(lineData) { + if (lineData.length === 2) { + this.isOOB = true; + this.rangeLow = 0; + this.prefixLength = lineData[0]; + this.rangeLength = 0; + this.prefixCode = lineData[1]; + this.isLowerRange = false; + } else { + this.isOOB = false; + this.rangeLow = lineData[0]; + this.prefixLength = lineData[1]; + this.rangeLength = lineData[2]; + this.prefixCode = lineData[3]; + this.isLowerRange = lineData[4] === "lower"; + } + } +} +class HuffmanTreeNode { + constructor(line) { + this.children = []; + if (line) { + this.isLeaf = true; + this.rangeLength = line.rangeLength; + this.rangeLow = line.rangeLow; + this.isLowerRange = line.isLowerRange; + this.isOOB = line.isOOB; + } else { + this.isLeaf = false; + } + } + buildTree(line, shift) { + const bit = line.prefixCode >> shift & 1; + if (shift <= 0) { + this.children[bit] = new HuffmanTreeNode(line); + } else { + let node = this.children[bit]; + if (!node) { + this.children[bit] = node = new HuffmanTreeNode(null); + } + node.buildTree(line, shift - 1); + } + } + decodeNode(reader) { + if (this.isLeaf) { + if (this.isOOB) { + return null; + } + const htOffset = reader.readBits(this.rangeLength); + return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset); + } + const node = this.children[reader.readBit()]; + if (!node) { + throw new Jbig2Error("invalid Huffman data"); + } + return node.decodeNode(reader); + } +} +class HuffmanTable { + constructor(lines, prefixCodesDone) { + if (!prefixCodesDone) { + this.assignPrefixCodes(lines); + } + this.rootNode = new HuffmanTreeNode(null); + for (let i = 0, ii = lines.length; i < ii; i++) { + const line = lines[i]; + if (line.prefixLength > 0) { + this.rootNode.buildTree(line, line.prefixLength - 1); + } + } + } + decode(reader) { + return this.rootNode.decodeNode(reader); + } + assignPrefixCodes(lines) { + const linesLength = lines.length; + let prefixLengthMax = 0; + for (let i = 0; i < linesLength; i++) { + prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength); + } + const histogram = new Uint32Array(prefixLengthMax + 1); + for (let i = 0; i < linesLength; i++) { + histogram[lines[i].prefixLength]++; + } + let currentLength = 1, + firstCode = 0, + currentCode, + currentTemp, + line; + histogram[0] = 0; + while (currentLength <= prefixLengthMax) { + firstCode = firstCode + histogram[currentLength - 1] << 1; + currentCode = firstCode; + currentTemp = 0; + while (currentTemp < linesLength) { + line = lines[currentTemp]; + if (line.prefixLength === currentLength) { + line.prefixCode = currentCode; + currentCode++; + } + currentTemp++; + } + currentLength++; + } + } +} +function decodeTablesSegment(data, start, end) { + const flags = data[start]; + const lowestValue = (0, _core_utils.readUint32)(data, start + 1) & 0xffffffff; + const highestValue = (0, _core_utils.readUint32)(data, start + 5) & 0xffffffff; + const reader = new Reader(data, start + 9, end); + const prefixSizeBits = (flags >> 1 & 7) + 1; + const rangeSizeBits = (flags >> 4 & 7) + 1; + const lines = []; + let prefixLength, + rangeLength, + currentRangeLow = lowestValue; + do { + prefixLength = reader.readBits(prefixSizeBits); + rangeLength = reader.readBits(rangeSizeBits); + lines.push(new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0])); + currentRangeLow += 1 << rangeLength; + } while (currentRangeLow < highestValue); + prefixLength = reader.readBits(prefixSizeBits); + lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, "lower"])); + prefixLength = reader.readBits(prefixSizeBits); + lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0])); + if (flags & 1) { + prefixLength = reader.readBits(prefixSizeBits); + lines.push(new HuffmanLine([prefixLength, 0])); + } + return new HuffmanTable(lines, false); +} +const standardTablesCache = {}; +function getStandardTable(number) { + let table = standardTablesCache[number]; + if (table) { + return table; + } + let lines; + switch (number) { + case 1: + lines = [[0, 1, 4, 0x0], [16, 2, 8, 0x2], [272, 3, 16, 0x6], [65808, 3, 32, 0x7]]; + break; + case 2: + lines = [[0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xe], [11, 5, 6, 0x1e], [75, 6, 32, 0x3e], [6, 0x3f]]; + break; + case 3: + lines = [[-256, 8, 8, 0xfe], [0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xe], [11, 5, 6, 0x1e], [-257, 8, 32, 0xff, "lower"], [75, 7, 32, 0x7e], [6, 0x3e]]; + break; + case 4: + lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xe], [12, 5, 6, 0x1e], [76, 5, 32, 0x1f]]; + break; + case 5: + lines = [[-255, 7, 8, 0x7e], [1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xe], [12, 5, 6, 0x1e], [-256, 7, 32, 0x7f, "lower"], [76, 6, 32, 0x3e]]; + break; + case 6: + lines = [[-2048, 5, 10, 0x1c], [-1024, 4, 9, 0x8], [-512, 4, 8, 0x9], [-256, 4, 7, 0xa], [-128, 5, 6, 0x1d], [-64, 5, 5, 0x1e], [-32, 4, 5, 0xb], [0, 2, 7, 0x0], [128, 3, 7, 0x2], [256, 3, 8, 0x3], [512, 4, 9, 0xc], [1024, 4, 10, 0xd], [-2049, 6, 32, 0x3e, "lower"], [2048, 6, 32, 0x3f]]; + break; + case 7: + lines = [[-1024, 4, 9, 0x8], [-512, 3, 8, 0x0], [-256, 4, 7, 0x9], [-128, 5, 6, 0x1a], [-64, 5, 5, 0x1b], [-32, 4, 5, 0xa], [0, 4, 5, 0xb], [32, 5, 5, 0x1c], [64, 5, 6, 0x1d], [128, 4, 7, 0xc], [256, 3, 8, 0x1], [512, 3, 9, 0x2], [1024, 3, 10, 0x3], [-1025, 5, 32, 0x1e, "lower"], [2048, 5, 32, 0x1f]]; + break; + case 8: + lines = [[-15, 8, 3, 0xfc], [-7, 9, 1, 0x1fc], [-5, 8, 1, 0xfd], [-3, 9, 0, 0x1fd], [-2, 7, 0, 0x7c], [-1, 4, 0, 0xa], [0, 2, 1, 0x0], [2, 5, 0, 0x1a], [3, 6, 0, 0x3a], [4, 3, 4, 0x4], [20, 6, 1, 0x3b], [22, 4, 4, 0xb], [38, 4, 5, 0xc], [70, 5, 6, 0x1b], [134, 5, 7, 0x1c], [262, 6, 7, 0x3c], [390, 7, 8, 0x7d], [646, 6, 10, 0x3d], [-16, 9, 32, 0x1fe, "lower"], [1670, 9, 32, 0x1ff], [2, 0x1]]; + break; + case 9: + lines = [[-31, 8, 4, 0xfc], [-15, 9, 2, 0x1fc], [-11, 8, 2, 0xfd], [-7, 9, 1, 0x1fd], [-5, 7, 1, 0x7c], [-3, 4, 1, 0xa], [-1, 3, 1, 0x2], [1, 3, 1, 0x3], [3, 5, 1, 0x1a], [5, 6, 1, 0x3a], [7, 3, 5, 0x4], [39, 6, 2, 0x3b], [43, 4, 5, 0xb], [75, 4, 6, 0xc], [139, 5, 7, 0x1b], [267, 5, 8, 0x1c], [523, 6, 8, 0x3c], [779, 7, 9, 0x7d], [1291, 6, 11, 0x3d], [-32, 9, 32, 0x1fe, "lower"], [3339, 9, 32, 0x1ff], [2, 0x0]]; + break; + case 10: + lines = [[-21, 7, 4, 0x7a], [-5, 8, 0, 0xfc], [-4, 7, 0, 0x7b], [-3, 5, 0, 0x18], [-2, 2, 2, 0x0], [2, 5, 0, 0x19], [3, 6, 0, 0x36], [4, 7, 0, 0x7c], [5, 8, 0, 0xfd], [6, 2, 6, 0x1], [70, 5, 5, 0x1a], [102, 6, 5, 0x37], [134, 6, 6, 0x38], [198, 6, 7, 0x39], [326, 6, 8, 0x3a], [582, 6, 9, 0x3b], [1094, 6, 10, 0x3c], [2118, 7, 11, 0x7d], [-22, 8, 32, 0xfe, "lower"], [4166, 8, 32, 0xff], [2, 0x2]]; + break; + case 11: + lines = [[1, 1, 0, 0x0], [2, 2, 1, 0x2], [4, 4, 0, 0xc], [5, 4, 1, 0xd], [7, 5, 1, 0x1c], [9, 5, 2, 0x1d], [13, 6, 2, 0x3c], [17, 7, 2, 0x7a], [21, 7, 3, 0x7b], [29, 7, 4, 0x7c], [45, 7, 5, 0x7d], [77, 7, 6, 0x7e], [141, 7, 32, 0x7f]]; + break; + case 12: + lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 1, 0x6], [5, 5, 0, 0x1c], [6, 5, 1, 0x1d], [8, 6, 1, 0x3c], [10, 7, 0, 0x7a], [11, 7, 1, 0x7b], [13, 7, 2, 0x7c], [17, 7, 3, 0x7d], [25, 7, 4, 0x7e], [41, 8, 5, 0xfe], [73, 8, 32, 0xff]]; + break; + case 13: + lines = [[1, 1, 0, 0x0], [2, 3, 0, 0x4], [3, 4, 0, 0xc], [4, 5, 0, 0x1c], [5, 4, 1, 0xd], [7, 3, 3, 0x5], [15, 6, 1, 0x3a], [17, 6, 2, 0x3b], [21, 6, 3, 0x3c], [29, 6, 4, 0x3d], [45, 6, 5, 0x3e], [77, 7, 6, 0x7e], [141, 7, 32, 0x7f]]; + break; + case 14: + lines = [[-2, 3, 0, 0x4], [-1, 3, 0, 0x5], [0, 1, 0, 0x0], [1, 3, 0, 0x6], [2, 3, 0, 0x7]]; + break; + case 15: + lines = [[-24, 7, 4, 0x7c], [-8, 6, 2, 0x3c], [-4, 5, 1, 0x1c], [-2, 4, 0, 0xc], [-1, 3, 0, 0x4], [0, 1, 0, 0x0], [1, 3, 0, 0x5], [2, 4, 0, 0xd], [3, 5, 1, 0x1d], [5, 6, 2, 0x3d], [9, 7, 4, 0x7d], [-25, 7, 32, 0x7e, "lower"], [25, 7, 32, 0x7f]]; + break; + default: + throw new Jbig2Error(`standard table B.${number} does not exist`); + } + for (let i = 0, ii = lines.length; i < ii; i++) { + lines[i] = new HuffmanLine(lines[i]); + } + table = new HuffmanTable(lines, true); + standardTablesCache[number] = table; + return table; +} +class Reader { + constructor(data, start, end) { + this.data = data; + this.start = start; + this.end = end; + this.position = start; + this.shift = -1; + this.currentByte = 0; + } + readBit() { + if (this.shift < 0) { + if (this.position >= this.end) { + throw new Jbig2Error("end of data while reading bit"); + } + this.currentByte = this.data[this.position++]; + this.shift = 7; + } + const bit = this.currentByte >> this.shift & 1; + this.shift--; + return bit; + } + readBits(numBits) { + let result = 0, + i; + for (i = numBits - 1; i >= 0; i--) { + result |= this.readBit() << i; + } + return result; + } + byteAlign() { + this.shift = -1; + } + next() { + if (this.position >= this.end) { + return -1; + } + return this.data[this.position++]; + } +} +function getCustomHuffmanTable(index, referredTo, customTables) { + let currentIndex = 0; + for (let i = 0, ii = referredTo.length; i < ii; i++) { + const table = customTables[referredTo[i]]; + if (table) { + if (index === currentIndex) { + return table; + } + currentIndex++; + } + } + throw new Jbig2Error("can't find custom Huffman table"); +} +function getTextRegionHuffmanTables(textRegion, referredTo, customTables, numberOfSymbols, reader) { + const codes = []; + for (let i = 0; i <= 34; i++) { + const codeLength = reader.readBits(4); + codes.push(new HuffmanLine([i, codeLength, 0, 0])); + } + const runCodesTable = new HuffmanTable(codes, false); + codes.length = 0; + for (let i = 0; i < numberOfSymbols;) { + const codeLength = runCodesTable.decode(reader); + if (codeLength >= 32) { + let repeatedLength, numberOfRepeats, j; + switch (codeLength) { + case 32: + if (i === 0) { + throw new Jbig2Error("no previous value in symbol ID table"); + } + numberOfRepeats = reader.readBits(2) + 3; + repeatedLength = codes[i - 1].prefixLength; + break; + case 33: + numberOfRepeats = reader.readBits(3) + 3; + repeatedLength = 0; + break; + case 34: + numberOfRepeats = reader.readBits(7) + 11; + repeatedLength = 0; + break; + default: + throw new Jbig2Error("invalid code length in symbol ID table"); + } + for (j = 0; j < numberOfRepeats; j++) { + codes.push(new HuffmanLine([i, repeatedLength, 0, 0])); + i++; + } + } else { + codes.push(new HuffmanLine([i, codeLength, 0, 0])); + i++; + } + } + reader.byteAlign(); + const symbolIDTable = new HuffmanTable(codes, false); + let customIndex = 0, + tableFirstS, + tableDeltaS, + tableDeltaT; + switch (textRegion.huffmanFS) { + case 0: + case 1: + tableFirstS = getStandardTable(textRegion.huffmanFS + 6); + break; + case 3: + tableFirstS = getCustomHuffmanTable(customIndex, referredTo, customTables); + customIndex++; + break; + default: + throw new Jbig2Error("invalid Huffman FS selector"); + } + switch (textRegion.huffmanDS) { + case 0: + case 1: + case 2: + tableDeltaS = getStandardTable(textRegion.huffmanDS + 8); + break; + case 3: + tableDeltaS = getCustomHuffmanTable(customIndex, referredTo, customTables); + customIndex++; + break; + default: + throw new Jbig2Error("invalid Huffman DS selector"); + } + switch (textRegion.huffmanDT) { + case 0: + case 1: + case 2: + tableDeltaT = getStandardTable(textRegion.huffmanDT + 11); + break; + case 3: + tableDeltaT = getCustomHuffmanTable(customIndex, referredTo, customTables); + customIndex++; + break; + default: + throw new Jbig2Error("invalid Huffman DT selector"); + } + if (textRegion.refinement) { + throw new Jbig2Error("refinement with Huffman is not supported"); + } + return { + symbolIDTable, + tableFirstS, + tableDeltaS, + tableDeltaT + }; +} +function getSymbolDictionaryHuffmanTables(dictionary, referredTo, customTables) { + let customIndex = 0, + tableDeltaHeight, + tableDeltaWidth; + switch (dictionary.huffmanDHSelector) { + case 0: + case 1: + tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4); + break; + case 3: + tableDeltaHeight = getCustomHuffmanTable(customIndex, referredTo, customTables); + customIndex++; + break; + default: + throw new Jbig2Error("invalid Huffman DH selector"); + } + switch (dictionary.huffmanDWSelector) { + case 0: + case 1: + tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2); + break; + case 3: + tableDeltaWidth = getCustomHuffmanTable(customIndex, referredTo, customTables); + customIndex++; + break; + default: + throw new Jbig2Error("invalid Huffman DW selector"); + } + let tableBitmapSize, tableAggregateInstances; + if (dictionary.bitmapSizeSelector) { + tableBitmapSize = getCustomHuffmanTable(customIndex, referredTo, customTables); + customIndex++; + } else { + tableBitmapSize = getStandardTable(1); + } + if (dictionary.aggregationInstancesSelector) { + tableAggregateInstances = getCustomHuffmanTable(customIndex, referredTo, customTables); + } else { + tableAggregateInstances = getStandardTable(1); + } + return { + tableDeltaHeight, + tableDeltaWidth, + tableBitmapSize, + tableAggregateInstances + }; +} +function readUncompressedBitmap(reader, width, height) { + const bitmap = []; + for (let y = 0; y < height; y++) { + const row = new Uint8Array(width); + bitmap.push(row); + for (let x = 0; x < width; x++) { + row[x] = reader.readBit(); + } + reader.byteAlign(); + } + return bitmap; +} +function decodeMMRBitmap(input, width, height, endOfBlock) { + const params = { + K: -1, + Columns: width, + Rows: height, + BlackIs1: true, + EndOfBlock: endOfBlock + }; + const decoder = new _ccitt.CCITTFaxDecoder(input, params); + const bitmap = []; + let currentByte, + eof = false; + for (let y = 0; y < height; y++) { + const row = new Uint8Array(width); + bitmap.push(row); + let shift = -1; + for (let x = 0; x < width; x++) { + if (shift < 0) { + currentByte = decoder.readNextChar(); + if (currentByte === -1) { + currentByte = 0; + eof = true; + } + shift = 7; + } + row[x] = currentByte >> shift & 1; + shift--; + } + } + if (endOfBlock && !eof) { + const lookForEOFLimit = 5; + for (let i = 0; i < lookForEOFLimit; i++) { + if (decoder.readNextChar() === -1) { + break; + } + } + } + return bitmap; +} +class Jbig2Image { + parseChunks(chunks) { + return parseJbig2Chunks(chunks); + } + parse(data) { + throw new Error("Not implemented: Jbig2Image.parse"); + } +} +exports.Jbig2Image = Jbig2Image; + +/***/ }), +/* 25 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ArithmeticDecoder = void 0; +const QeTable = [{ + qe: 0x5601, + nmps: 1, + nlps: 1, + switchFlag: 1 +}, { + qe: 0x3401, + nmps: 2, + nlps: 6, + switchFlag: 0 +}, { + qe: 0x1801, + nmps: 3, + nlps: 9, + switchFlag: 0 +}, { + qe: 0x0ac1, + nmps: 4, + nlps: 12, + switchFlag: 0 +}, { + qe: 0x0521, + nmps: 5, + nlps: 29, + switchFlag: 0 +}, { + qe: 0x0221, + nmps: 38, + nlps: 33, + switchFlag: 0 +}, { + qe: 0x5601, + nmps: 7, + nlps: 6, + switchFlag: 1 +}, { + qe: 0x5401, + nmps: 8, + nlps: 14, + switchFlag: 0 +}, { + qe: 0x4801, + nmps: 9, + nlps: 14, + switchFlag: 0 +}, { + qe: 0x3801, + nmps: 10, + nlps: 14, + switchFlag: 0 +}, { + qe: 0x3001, + nmps: 11, + nlps: 17, + switchFlag: 0 +}, { + qe: 0x2401, + nmps: 12, + nlps: 18, + switchFlag: 0 +}, { + qe: 0x1c01, + nmps: 13, + nlps: 20, + switchFlag: 0 +}, { + qe: 0x1601, + nmps: 29, + nlps: 21, + switchFlag: 0 +}, { + qe: 0x5601, + nmps: 15, + nlps: 14, + switchFlag: 1 +}, { + qe: 0x5401, + nmps: 16, + nlps: 14, + switchFlag: 0 +}, { + qe: 0x5101, + nmps: 17, + nlps: 15, + switchFlag: 0 +}, { + qe: 0x4801, + nmps: 18, + nlps: 16, + switchFlag: 0 +}, { + qe: 0x3801, + nmps: 19, + nlps: 17, + switchFlag: 0 +}, { + qe: 0x3401, + nmps: 20, + nlps: 18, + switchFlag: 0 +}, { + qe: 0x3001, + nmps: 21, + nlps: 19, + switchFlag: 0 +}, { + qe: 0x2801, + nmps: 22, + nlps: 19, + switchFlag: 0 +}, { + qe: 0x2401, + nmps: 23, + nlps: 20, + switchFlag: 0 +}, { + qe: 0x2201, + nmps: 24, + nlps: 21, + switchFlag: 0 +}, { + qe: 0x1c01, + nmps: 25, + nlps: 22, + switchFlag: 0 +}, { + qe: 0x1801, + nmps: 26, + nlps: 23, + switchFlag: 0 +}, { + qe: 0x1601, + nmps: 27, + nlps: 24, + switchFlag: 0 +}, { + qe: 0x1401, + nmps: 28, + nlps: 25, + switchFlag: 0 +}, { + qe: 0x1201, + nmps: 29, + nlps: 26, + switchFlag: 0 +}, { + qe: 0x1101, + nmps: 30, + nlps: 27, + switchFlag: 0 +}, { + qe: 0x0ac1, + nmps: 31, + nlps: 28, + switchFlag: 0 +}, { + qe: 0x09c1, + nmps: 32, + nlps: 29, + switchFlag: 0 +}, { + qe: 0x08a1, + nmps: 33, + nlps: 30, + switchFlag: 0 +}, { + qe: 0x0521, + nmps: 34, + nlps: 31, + switchFlag: 0 +}, { + qe: 0x0441, + nmps: 35, + nlps: 32, + switchFlag: 0 +}, { + qe: 0x02a1, + nmps: 36, + nlps: 33, + switchFlag: 0 +}, { + qe: 0x0221, + nmps: 37, + nlps: 34, + switchFlag: 0 +}, { + qe: 0x0141, + nmps: 38, + nlps: 35, + switchFlag: 0 +}, { + qe: 0x0111, + nmps: 39, + nlps: 36, + switchFlag: 0 +}, { + qe: 0x0085, + nmps: 40, + nlps: 37, + switchFlag: 0 +}, { + qe: 0x0049, + nmps: 41, + nlps: 38, + switchFlag: 0 +}, { + qe: 0x0025, + nmps: 42, + nlps: 39, + switchFlag: 0 +}, { + qe: 0x0015, + nmps: 43, + nlps: 40, + switchFlag: 0 +}, { + qe: 0x0009, + nmps: 44, + nlps: 41, + switchFlag: 0 +}, { + qe: 0x0005, + nmps: 45, + nlps: 42, + switchFlag: 0 +}, { + qe: 0x0001, + nmps: 45, + nlps: 43, + switchFlag: 0 +}, { + qe: 0x5601, + nmps: 46, + nlps: 46, + switchFlag: 0 +}]; +class ArithmeticDecoder { + constructor(data, start, end) { + this.data = data; + this.bp = start; + this.dataEnd = end; + this.chigh = data[start]; + this.clow = 0; + this.byteIn(); + this.chigh = this.chigh << 7 & 0xffff | this.clow >> 9 & 0x7f; + this.clow = this.clow << 7 & 0xffff; + this.ct -= 7; + this.a = 0x8000; + } + byteIn() { + const data = this.data; + let bp = this.bp; + if (data[bp] === 0xff) { + if (data[bp + 1] > 0x8f) { + this.clow += 0xff00; + this.ct = 8; + } else { + bp++; + this.clow += data[bp] << 9; + this.ct = 7; + this.bp = bp; + } + } else { + bp++; + this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xff00; + this.ct = 8; + this.bp = bp; + } + if (this.clow > 0xffff) { + this.chigh += this.clow >> 16; + this.clow &= 0xffff; + } + } + readBit(contexts, pos) { + let cx_index = contexts[pos] >> 1, + cx_mps = contexts[pos] & 1; + const qeTableIcx = QeTable[cx_index]; + const qeIcx = qeTableIcx.qe; + let d; + let a = this.a - qeIcx; + if (this.chigh < qeIcx) { + if (a < qeIcx) { + a = qeIcx; + d = cx_mps; + cx_index = qeTableIcx.nmps; + } else { + a = qeIcx; + d = 1 ^ cx_mps; + if (qeTableIcx.switchFlag === 1) { + cx_mps = d; + } + cx_index = qeTableIcx.nlps; + } + } else { + this.chigh -= qeIcx; + if ((a & 0x8000) !== 0) { + this.a = a; + return cx_mps; + } + if (a < qeIcx) { + d = 1 ^ cx_mps; + if (qeTableIcx.switchFlag === 1) { + cx_mps = d; + } + cx_index = qeTableIcx.nlps; + } else { + d = cx_mps; + cx_index = qeTableIcx.nmps; + } + } + do { + if (this.ct === 0) { + this.byteIn(); + } + a <<= 1; + this.chigh = this.chigh << 1 & 0xffff | this.clow >> 15 & 1; + this.clow = this.clow << 1 & 0xffff; + this.ct--; + } while ((a & 0x8000) === 0); + this.a = a; + contexts[pos] = cx_index << 1 | cx_mps; + return d; + } +} +exports.ArithmeticDecoder = ArithmeticDecoder; + +/***/ }), +/* 26 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.JpegStream = void 0; +var _decode_stream = __w_pdfjs_require__(18); +var _primitives = __w_pdfjs_require__(4); +var _jpg = __w_pdfjs_require__(27); +var _util = __w_pdfjs_require__(2); +class JpegStream extends _decode_stream.DecodeStream { + constructor(stream, maybeLength, params) { + let ch; + while ((ch = stream.getByte()) !== -1) { + if (ch === 0xff) { + stream.skip(-1); + break; + } + } + super(maybeLength); + this.stream = stream; + this.dict = stream.dict; + this.maybeLength = maybeLength; + this.params = params; + } + get bytes() { + return (0, _util.shadow)(this, "bytes", this.stream.getBytes(this.maybeLength)); + } + ensureBuffer(requested) {} + readBlock() { + if (this.eof) { + return; + } + const jpegOptions = { + decodeTransform: undefined, + colorTransform: undefined + }; + const decodeArr = this.dict.getArray("D", "Decode"); + if ((this.forceRGBA || this.forceRGB) && Array.isArray(decodeArr)) { + const bitsPerComponent = this.dict.get("BPC", "BitsPerComponent") || 8; + const decodeArrLength = decodeArr.length; + const transform = new Int32Array(decodeArrLength); + let transformNeeded = false; + const maxValue = (1 << bitsPerComponent) - 1; + for (let i = 0; i < decodeArrLength; i += 2) { + transform[i] = (decodeArr[i + 1] - decodeArr[i]) * 256 | 0; + transform[i + 1] = decodeArr[i] * maxValue | 0; + if (transform[i] !== 256 || transform[i + 1] !== 0) { + transformNeeded = true; + } + } + if (transformNeeded) { + jpegOptions.decodeTransform = transform; + } + } + if (this.params instanceof _primitives.Dict) { + const colorTransform = this.params.get("ColorTransform"); + if (Number.isInteger(colorTransform)) { + jpegOptions.colorTransform = colorTransform; + } + } + const jpegImage = new _jpg.JpegImage(jpegOptions); + jpegImage.parse(this.bytes); + const data = jpegImage.getData({ + width: this.drawWidth, + height: this.drawHeight, + forceRGBA: this.forceRGBA, + forceRGB: this.forceRGB, + isSourcePDF: true + }); + this.buffer = data; + this.bufferLength = data.length; + this.eof = true; + } +} +exports.JpegStream = JpegStream; + +/***/ }), +/* 27 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.JpegImage = void 0; +var _util = __w_pdfjs_require__(2); +var _image_utils = __w_pdfjs_require__(28); +var _core_utils = __w_pdfjs_require__(3); +class JpegError extends _util.BaseException { + constructor(msg) { + super(`JPEG error: ${msg}`, "JpegError"); + } +} +class DNLMarkerError extends _util.BaseException { + constructor(message, scanLines) { + super(message, "DNLMarkerError"); + this.scanLines = scanLines; + } +} +class EOIMarkerError extends _util.BaseException { + constructor(msg) { + super(msg, "EOIMarkerError"); + } +} +const dctZigZag = new Uint8Array([0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]); +const dctCos1 = 4017; +const dctSin1 = 799; +const dctCos3 = 3406; +const dctSin3 = 2276; +const dctCos6 = 1567; +const dctSin6 = 3784; +const dctSqrt2 = 5793; +const dctSqrt1d2 = 2896; +function buildHuffmanTable(codeLengths, values) { + let k = 0, + i, + j, + length = 16; + while (length > 0 && !codeLengths[length - 1]) { + length--; + } + const code = [{ + children: [], + index: 0 + }]; + let p = code[0], + q; + for (i = 0; i < length; i++) { + for (j = 0; j < codeLengths[i]; j++) { + p = code.pop(); + p.children[p.index] = values[k]; + while (p.index > 0) { + p = code.pop(); + } + p.index++; + code.push(p); + while (code.length <= i) { + code.push(q = { + children: [], + index: 0 + }); + p.children[p.index] = q.children; + p = q; + } + k++; + } + if (i + 1 < length) { + code.push(q = { + children: [], + index: 0 + }); + p.children[p.index] = q.children; + p = q; + } + } + return code[0].children; +} +function getBlockBufferOffset(component, row, col) { + return 64 * ((component.blocksPerLine + 1) * row + col); +} +function decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive, parseDNLMarker = false) { + const mcusPerLine = frame.mcusPerLine; + const progressive = frame.progressive; + const startOffset = offset; + let bitsData = 0, + bitsCount = 0; + function readBit() { + if (bitsCount > 0) { + bitsCount--; + return bitsData >> bitsCount & 1; + } + bitsData = data[offset++]; + if (bitsData === 0xff) { + const nextByte = data[offset++]; + if (nextByte) { + if (nextByte === 0xdc && parseDNLMarker) { + offset += 2; + const scanLines = (0, _core_utils.readUint16)(data, offset); + offset += 2; + if (scanLines > 0 && scanLines !== frame.scanLines) { + throw new DNLMarkerError("Found DNL marker (0xFFDC) while parsing scan data", scanLines); + } + } else if (nextByte === 0xd9) { + if (parseDNLMarker) { + const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0); + if (maybeScanLines > 0 && Math.round(frame.scanLines / maybeScanLines) >= 5) { + throw new DNLMarkerError("Found EOI marker (0xFFD9) while parsing scan data, " + "possibly caused by incorrect `scanLines` parameter", maybeScanLines); + } + } + throw new EOIMarkerError("Found EOI marker (0xFFD9) while parsing scan data"); + } + throw new JpegError(`unexpected marker ${(bitsData << 8 | nextByte).toString(16)}`); + } + } + bitsCount = 7; + return bitsData >>> 7; + } + function decodeHuffman(tree) { + let node = tree; + while (true) { + node = node[readBit()]; + switch (typeof node) { + case "number": + return node; + case "object": + continue; + } + throw new JpegError("invalid huffman sequence"); + } + } + function receive(length) { + let n = 0; + while (length > 0) { + n = n << 1 | readBit(); + length--; + } + return n; + } + function receiveAndExtend(length) { + if (length === 1) { + return readBit() === 1 ? 1 : -1; + } + const n = receive(length); + if (n >= 1 << length - 1) { + return n; + } + return n + (-1 << length) + 1; + } + function decodeBaseline(component, blockOffset) { + const t = decodeHuffman(component.huffmanTableDC); + const diff = t === 0 ? 0 : receiveAndExtend(t); + component.blockData[blockOffset] = component.pred += diff; + let k = 1; + while (k < 64) { + const rs = decodeHuffman(component.huffmanTableAC); + const s = rs & 15, + r = rs >> 4; + if (s === 0) { + if (r < 15) { + break; + } + k += 16; + continue; + } + k += r; + const z = dctZigZag[k]; + component.blockData[blockOffset + z] = receiveAndExtend(s); + k++; + } + } + function decodeDCFirst(component, blockOffset) { + const t = decodeHuffman(component.huffmanTableDC); + const diff = t === 0 ? 0 : receiveAndExtend(t) << successive; + component.blockData[blockOffset] = component.pred += diff; + } + function decodeDCSuccessive(component, blockOffset) { + component.blockData[blockOffset] |= readBit() << successive; + } + let eobrun = 0; + function decodeACFirst(component, blockOffset) { + if (eobrun > 0) { + eobrun--; + return; + } + let k = spectralStart; + const e = spectralEnd; + while (k <= e) { + const rs = decodeHuffman(component.huffmanTableAC); + const s = rs & 15, + r = rs >> 4; + if (s === 0) { + if (r < 15) { + eobrun = receive(r) + (1 << r) - 1; + break; + } + k += 16; + continue; + } + k += r; + const z = dctZigZag[k]; + component.blockData[blockOffset + z] = receiveAndExtend(s) * (1 << successive); + k++; + } + } + let successiveACState = 0, + successiveACNextValue; + function decodeACSuccessive(component, blockOffset) { + let k = spectralStart; + const e = spectralEnd; + let r = 0; + let s; + let rs; + while (k <= e) { + const offsetZ = blockOffset + dctZigZag[k]; + const sign = component.blockData[offsetZ] < 0 ? -1 : 1; + switch (successiveACState) { + case 0: + rs = decodeHuffman(component.huffmanTableAC); + s = rs & 15; + r = rs >> 4; + if (s === 0) { + if (r < 15) { + eobrun = receive(r) + (1 << r); + successiveACState = 4; + } else { + r = 16; + successiveACState = 1; + } + } else { + if (s !== 1) { + throw new JpegError("invalid ACn encoding"); + } + successiveACNextValue = receiveAndExtend(s); + successiveACState = r ? 2 : 3; + } + continue; + case 1: + case 2: + if (component.blockData[offsetZ]) { + component.blockData[offsetZ] += sign * (readBit() << successive); + } else { + r--; + if (r === 0) { + successiveACState = successiveACState === 2 ? 3 : 0; + } + } + break; + case 3: + if (component.blockData[offsetZ]) { + component.blockData[offsetZ] += sign * (readBit() << successive); + } else { + component.blockData[offsetZ] = successiveACNextValue << successive; + successiveACState = 0; + } + break; + case 4: + if (component.blockData[offsetZ]) { + component.blockData[offsetZ] += sign * (readBit() << successive); + } + break; + } + k++; + } + if (successiveACState === 4) { + eobrun--; + if (eobrun === 0) { + successiveACState = 0; + } + } + } + let blockRow = 0; + function decodeMcu(component, decode, mcu, row, col) { + const mcuRow = mcu / mcusPerLine | 0; + const mcuCol = mcu % mcusPerLine; + blockRow = mcuRow * component.v + row; + const blockCol = mcuCol * component.h + col; + const blockOffset = getBlockBufferOffset(component, blockRow, blockCol); + decode(component, blockOffset); + } + function decodeBlock(component, decode, mcu) { + blockRow = mcu / component.blocksPerLine | 0; + const blockCol = mcu % component.blocksPerLine; + const blockOffset = getBlockBufferOffset(component, blockRow, blockCol); + decode(component, blockOffset); + } + const componentsLength = components.length; + let component, i, j, k, n; + let decodeFn; + if (progressive) { + if (spectralStart === 0) { + decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive; + } else { + decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive; + } + } else { + decodeFn = decodeBaseline; + } + let mcu = 0, + fileMarker; + let mcuExpected; + if (componentsLength === 1) { + mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn; + } else { + mcuExpected = mcusPerLine * frame.mcusPerColumn; + } + let h, v; + while (mcu <= mcuExpected) { + const mcuToRead = resetInterval ? Math.min(mcuExpected - mcu, resetInterval) : mcuExpected; + if (mcuToRead > 0) { + for (i = 0; i < componentsLength; i++) { + components[i].pred = 0; + } + eobrun = 0; + if (componentsLength === 1) { + component = components[0]; + for (n = 0; n < mcuToRead; n++) { + decodeBlock(component, decodeFn, mcu); + mcu++; + } + } else { + for (n = 0; n < mcuToRead; n++) { + for (i = 0; i < componentsLength; i++) { + component = components[i]; + h = component.h; + v = component.v; + for (j = 0; j < v; j++) { + for (k = 0; k < h; k++) { + decodeMcu(component, decodeFn, mcu, j, k); + } + } + } + mcu++; + } + } + } + bitsCount = 0; + fileMarker = findNextFileMarker(data, offset); + if (!fileMarker) { + break; + } + if (fileMarker.invalid) { + const partialMsg = mcuToRead > 0 ? "unexpected" : "excessive"; + (0, _util.warn)(`decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`); + offset = fileMarker.offset; + } + if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) { + offset += 2; + } else { + break; + } + } + return offset - startOffset; +} +function quantizeAndInverse(component, blockBufferOffset, p) { + const qt = component.quantizationTable, + blockData = component.blockData; + let v0, v1, v2, v3, v4, v5, v6, v7; + let p0, p1, p2, p3, p4, p5, p6, p7; + let t; + if (!qt) { + throw new JpegError("missing required Quantization Table."); + } + for (let row = 0; row < 64; row += 8) { + p0 = blockData[blockBufferOffset + row]; + p1 = blockData[blockBufferOffset + row + 1]; + p2 = blockData[blockBufferOffset + row + 2]; + p3 = blockData[blockBufferOffset + row + 3]; + p4 = blockData[blockBufferOffset + row + 4]; + p5 = blockData[blockBufferOffset + row + 5]; + p6 = blockData[blockBufferOffset + row + 6]; + p7 = blockData[blockBufferOffset + row + 7]; + p0 *= qt[row]; + if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) { + t = dctSqrt2 * p0 + 512 >> 10; + p[row] = t; + p[row + 1] = t; + p[row + 2] = t; + p[row + 3] = t; + p[row + 4] = t; + p[row + 5] = t; + p[row + 6] = t; + p[row + 7] = t; + continue; + } + p1 *= qt[row + 1]; + p2 *= qt[row + 2]; + p3 *= qt[row + 3]; + p4 *= qt[row + 4]; + p5 *= qt[row + 5]; + p6 *= qt[row + 6]; + p7 *= qt[row + 7]; + v0 = dctSqrt2 * p0 + 128 >> 8; + v1 = dctSqrt2 * p4 + 128 >> 8; + v2 = p2; + v3 = p6; + v4 = dctSqrt1d2 * (p1 - p7) + 128 >> 8; + v7 = dctSqrt1d2 * (p1 + p7) + 128 >> 8; + v5 = p3 << 4; + v6 = p5 << 4; + v0 = v0 + v1 + 1 >> 1; + v1 = v0 - v1; + t = v2 * dctSin6 + v3 * dctCos6 + 128 >> 8; + v2 = v2 * dctCos6 - v3 * dctSin6 + 128 >> 8; + v3 = t; + v4 = v4 + v6 + 1 >> 1; + v6 = v4 - v6; + v7 = v7 + v5 + 1 >> 1; + v5 = v7 - v5; + v0 = v0 + v3 + 1 >> 1; + v3 = v0 - v3; + v1 = v1 + v2 + 1 >> 1; + v2 = v1 - v2; + t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12; + v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12; + v7 = t; + t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12; + v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12; + v6 = t; + p[row] = v0 + v7; + p[row + 7] = v0 - v7; + p[row + 1] = v1 + v6; + p[row + 6] = v1 - v6; + p[row + 2] = v2 + v5; + p[row + 5] = v2 - v5; + p[row + 3] = v3 + v4; + p[row + 4] = v3 - v4; + } + for (let col = 0; col < 8; ++col) { + p0 = p[col]; + p1 = p[col + 8]; + p2 = p[col + 16]; + p3 = p[col + 24]; + p4 = p[col + 32]; + p5 = p[col + 40]; + p6 = p[col + 48]; + p7 = p[col + 56]; + if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) { + t = dctSqrt2 * p0 + 8192 >> 14; + if (t < -2040) { + t = 0; + } else if (t >= 2024) { + t = 255; + } else { + t = t + 2056 >> 4; + } + blockData[blockBufferOffset + col] = t; + blockData[blockBufferOffset + col + 8] = t; + blockData[blockBufferOffset + col + 16] = t; + blockData[blockBufferOffset + col + 24] = t; + blockData[blockBufferOffset + col + 32] = t; + blockData[blockBufferOffset + col + 40] = t; + blockData[blockBufferOffset + col + 48] = t; + blockData[blockBufferOffset + col + 56] = t; + continue; + } + v0 = dctSqrt2 * p0 + 2048 >> 12; + v1 = dctSqrt2 * p4 + 2048 >> 12; + v2 = p2; + v3 = p6; + v4 = dctSqrt1d2 * (p1 - p7) + 2048 >> 12; + v7 = dctSqrt1d2 * (p1 + p7) + 2048 >> 12; + v5 = p3; + v6 = p5; + v0 = (v0 + v1 + 1 >> 1) + 4112; + v1 = v0 - v1; + t = v2 * dctSin6 + v3 * dctCos6 + 2048 >> 12; + v2 = v2 * dctCos6 - v3 * dctSin6 + 2048 >> 12; + v3 = t; + v4 = v4 + v6 + 1 >> 1; + v6 = v4 - v6; + v7 = v7 + v5 + 1 >> 1; + v5 = v7 - v5; + v0 = v0 + v3 + 1 >> 1; + v3 = v0 - v3; + v1 = v1 + v2 + 1 >> 1; + v2 = v1 - v2; + t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12; + v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12; + v7 = t; + t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12; + v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12; + v6 = t; + p0 = v0 + v7; + p7 = v0 - v7; + p1 = v1 + v6; + p6 = v1 - v6; + p2 = v2 + v5; + p5 = v2 - v5; + p3 = v3 + v4; + p4 = v3 - v4; + if (p0 < 16) { + p0 = 0; + } else if (p0 >= 4080) { + p0 = 255; + } else { + p0 >>= 4; + } + if (p1 < 16) { + p1 = 0; + } else if (p1 >= 4080) { + p1 = 255; + } else { + p1 >>= 4; + } + if (p2 < 16) { + p2 = 0; + } else if (p2 >= 4080) { + p2 = 255; + } else { + p2 >>= 4; + } + if (p3 < 16) { + p3 = 0; + } else if (p3 >= 4080) { + p3 = 255; + } else { + p3 >>= 4; + } + if (p4 < 16) { + p4 = 0; + } else if (p4 >= 4080) { + p4 = 255; + } else { + p4 >>= 4; + } + if (p5 < 16) { + p5 = 0; + } else if (p5 >= 4080) { + p5 = 255; + } else { + p5 >>= 4; + } + if (p6 < 16) { + p6 = 0; + } else if (p6 >= 4080) { + p6 = 255; + } else { + p6 >>= 4; + } + if (p7 < 16) { + p7 = 0; + } else if (p7 >= 4080) { + p7 = 255; + } else { + p7 >>= 4; + } + blockData[blockBufferOffset + col] = p0; + blockData[blockBufferOffset + col + 8] = p1; + blockData[blockBufferOffset + col + 16] = p2; + blockData[blockBufferOffset + col + 24] = p3; + blockData[blockBufferOffset + col + 32] = p4; + blockData[blockBufferOffset + col + 40] = p5; + blockData[blockBufferOffset + col + 48] = p6; + blockData[blockBufferOffset + col + 56] = p7; + } +} +function buildComponentData(frame, component) { + const blocksPerLine = component.blocksPerLine; + const blocksPerColumn = component.blocksPerColumn; + const computationBuffer = new Int16Array(64); + for (let blockRow = 0; blockRow < blocksPerColumn; blockRow++) { + for (let blockCol = 0; blockCol < blocksPerLine; blockCol++) { + const offset = getBlockBufferOffset(component, blockRow, blockCol); + quantizeAndInverse(component, offset, computationBuffer); + } + } + return component.blockData; +} +function findNextFileMarker(data, currentPos, startPos = currentPos) { + const maxPos = data.length - 1; + let newPos = startPos < currentPos ? startPos : currentPos; + if (currentPos >= maxPos) { + return null; + } + const currentMarker = (0, _core_utils.readUint16)(data, currentPos); + if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) { + return { + invalid: null, + marker: currentMarker, + offset: currentPos + }; + } + let newMarker = (0, _core_utils.readUint16)(data, newPos); + while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) { + if (++newPos >= maxPos) { + return null; + } + newMarker = (0, _core_utils.readUint16)(data, newPos); + } + return { + invalid: currentMarker.toString(16), + marker: newMarker, + offset: newPos + }; +} +class JpegImage { + constructor({ + decodeTransform = null, + colorTransform = -1 + } = {}) { + this._decodeTransform = decodeTransform; + this._colorTransform = colorTransform; + } + parse(data, { + dnlScanLines = null + } = {}) { + function readDataBlock() { + const length = (0, _core_utils.readUint16)(data, offset); + offset += 2; + let endOffset = offset + length - 2; + const fileMarker = findNextFileMarker(data, endOffset, offset); + if (fileMarker?.invalid) { + (0, _util.warn)("readDataBlock - incorrect length, current marker is: " + fileMarker.invalid); + endOffset = fileMarker.offset; + } + const array = data.subarray(offset, endOffset); + offset += array.length; + return array; + } + function prepareComponents(frame) { + const mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH); + const mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV); + for (const component of frame.components) { + const blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / frame.maxH); + const blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / frame.maxV); + const blocksPerLineForMcu = mcusPerLine * component.h; + const blocksPerColumnForMcu = mcusPerColumn * component.v; + const blocksBufferSize = 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1); + component.blockData = new Int16Array(blocksBufferSize); + component.blocksPerLine = blocksPerLine; + component.blocksPerColumn = blocksPerColumn; + } + frame.mcusPerLine = mcusPerLine; + frame.mcusPerColumn = mcusPerColumn; + } + let offset = 0; + let jfif = null; + let adobe = null; + let frame, resetInterval; + let numSOSMarkers = 0; + const quantizationTables = []; + const huffmanTablesAC = [], + huffmanTablesDC = []; + let fileMarker = (0, _core_utils.readUint16)(data, offset); + offset += 2; + if (fileMarker !== 0xffd8) { + throw new JpegError("SOI not found"); + } + fileMarker = (0, _core_utils.readUint16)(data, offset); + offset += 2; + markerLoop: while (fileMarker !== 0xffd9) { + let i, j, l; + switch (fileMarker) { + case 0xffe0: + case 0xffe1: + case 0xffe2: + case 0xffe3: + case 0xffe4: + case 0xffe5: + case 0xffe6: + case 0xffe7: + case 0xffe8: + case 0xffe9: + case 0xffea: + case 0xffeb: + case 0xffec: + case 0xffed: + case 0xffee: + case 0xffef: + case 0xfffe: + const appData = readDataBlock(); + if (fileMarker === 0xffe0) { + if (appData[0] === 0x4a && appData[1] === 0x46 && appData[2] === 0x49 && appData[3] === 0x46 && appData[4] === 0) { + jfif = { + version: { + major: appData[5], + minor: appData[6] + }, + densityUnits: appData[7], + xDensity: appData[8] << 8 | appData[9], + yDensity: appData[10] << 8 | appData[11], + thumbWidth: appData[12], + thumbHeight: appData[13], + thumbData: appData.subarray(14, 14 + 3 * appData[12] * appData[13]) + }; + } + } + if (fileMarker === 0xffee) { + if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6f && appData[3] === 0x62 && appData[4] === 0x65) { + adobe = { + version: appData[5] << 8 | appData[6], + flags0: appData[7] << 8 | appData[8], + flags1: appData[9] << 8 | appData[10], + transformCode: appData[11] + }; + } + } + break; + case 0xffdb: + const quantizationTablesLength = (0, _core_utils.readUint16)(data, offset); + offset += 2; + const quantizationTablesEnd = quantizationTablesLength + offset - 2; + let z; + while (offset < quantizationTablesEnd) { + const quantizationTableSpec = data[offset++]; + const tableData = new Uint16Array(64); + if (quantizationTableSpec >> 4 === 0) { + for (j = 0; j < 64; j++) { + z = dctZigZag[j]; + tableData[z] = data[offset++]; + } + } else if (quantizationTableSpec >> 4 === 1) { + for (j = 0; j < 64; j++) { + z = dctZigZag[j]; + tableData[z] = (0, _core_utils.readUint16)(data, offset); + offset += 2; + } + } else { + throw new JpegError("DQT - invalid table spec"); + } + quantizationTables[quantizationTableSpec & 15] = tableData; + } + break; + case 0xffc0: + case 0xffc1: + case 0xffc2: + if (frame) { + throw new JpegError("Only single frame JPEGs supported"); + } + offset += 2; + frame = {}; + frame.extended = fileMarker === 0xffc1; + frame.progressive = fileMarker === 0xffc2; + frame.precision = data[offset++]; + const sofScanLines = (0, _core_utils.readUint16)(data, offset); + offset += 2; + frame.scanLines = dnlScanLines || sofScanLines; + frame.samplesPerLine = (0, _core_utils.readUint16)(data, offset); + offset += 2; + frame.components = []; + frame.componentIds = {}; + const componentsCount = data[offset++]; + let maxH = 0, + maxV = 0; + for (i = 0; i < componentsCount; i++) { + const componentId = data[offset]; + const h = data[offset + 1] >> 4; + const v = data[offset + 1] & 15; + if (maxH < h) { + maxH = h; + } + if (maxV < v) { + maxV = v; + } + const qId = data[offset + 2]; + l = frame.components.push({ + h, + v, + quantizationId: qId, + quantizationTable: null + }); + frame.componentIds[componentId] = l - 1; + offset += 3; + } + frame.maxH = maxH; + frame.maxV = maxV; + prepareComponents(frame); + break; + case 0xffc4: + const huffmanLength = (0, _core_utils.readUint16)(data, offset); + offset += 2; + for (i = 2; i < huffmanLength;) { + const huffmanTableSpec = data[offset++]; + const codeLengths = new Uint8Array(16); + let codeLengthSum = 0; + for (j = 0; j < 16; j++, offset++) { + codeLengthSum += codeLengths[j] = data[offset]; + } + const huffmanValues = new Uint8Array(codeLengthSum); + for (j = 0; j < codeLengthSum; j++, offset++) { + huffmanValues[j] = data[offset]; + } + i += 17 + codeLengthSum; + (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = buildHuffmanTable(codeLengths, huffmanValues); + } + break; + case 0xffdd: + offset += 2; + resetInterval = (0, _core_utils.readUint16)(data, offset); + offset += 2; + break; + case 0xffda: + const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines; + offset += 2; + const selectorsCount = data[offset++], + components = []; + for (i = 0; i < selectorsCount; i++) { + const index = data[offset++]; + const componentIndex = frame.componentIds[index]; + const component = frame.components[componentIndex]; + component.index = index; + const tableSpec = data[offset++]; + component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4]; + component.huffmanTableAC = huffmanTablesAC[tableSpec & 15]; + components.push(component); + } + const spectralStart = data[offset++], + spectralEnd = data[offset++], + successiveApproximation = data[offset++]; + try { + const processed = decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successiveApproximation >> 4, successiveApproximation & 15, parseDNLMarker); + offset += processed; + } catch (ex) { + if (ex instanceof DNLMarkerError) { + (0, _util.warn)(`${ex.message} -- attempting to re-parse the JPEG image.`); + return this.parse(data, { + dnlScanLines: ex.scanLines + }); + } else if (ex instanceof EOIMarkerError) { + (0, _util.warn)(`${ex.message} -- ignoring the rest of the image data.`); + break markerLoop; + } + throw ex; + } + break; + case 0xffdc: + offset += 4; + break; + case 0xffff: + if (data[offset] !== 0xff) { + offset--; + } + break; + default: + const nextFileMarker = findNextFileMarker(data, offset - 2, offset - 3); + if (nextFileMarker?.invalid) { + (0, _util.warn)("JpegImage.parse - unexpected data, current marker is: " + nextFileMarker.invalid); + offset = nextFileMarker.offset; + break; + } + if (!nextFileMarker || offset >= data.length - 1) { + (0, _util.warn)("JpegImage.parse - reached the end of the image data " + "without finding an EOI marker (0xFFD9)."); + break markerLoop; + } + throw new JpegError("JpegImage.parse - unknown marker: " + fileMarker.toString(16)); + } + fileMarker = (0, _core_utils.readUint16)(data, offset); + offset += 2; + } + this.width = frame.samplesPerLine; + this.height = frame.scanLines; + this.jfif = jfif; + this.adobe = adobe; + this.components = []; + for (const component of frame.components) { + const quantizationTable = quantizationTables[component.quantizationId]; + if (quantizationTable) { + component.quantizationTable = quantizationTable; + } + this.components.push({ + index: component.index, + output: buildComponentData(frame, component), + scaleX: component.h / frame.maxH, + scaleY: component.v / frame.maxV, + blocksPerLine: component.blocksPerLine, + blocksPerColumn: component.blocksPerColumn + }); + } + this.numComponents = this.components.length; + return undefined; + } + _getLinearizedBlockData(width, height, isSourcePDF = false) { + const scaleX = this.width / width, + scaleY = this.height / height; + let component, componentScaleX, componentScaleY, blocksPerScanline; + let x, y, i, j, k; + let index; + let offset = 0; + let output; + const numComponents = this.components.length; + const dataLength = width * height * numComponents; + const data = new Uint8ClampedArray(dataLength); + const xScaleBlockOffset = new Uint32Array(width); + const mask3LSB = 0xfffffff8; + let lastComponentScaleX; + for (i = 0; i < numComponents; i++) { + component = this.components[i]; + componentScaleX = component.scaleX * scaleX; + componentScaleY = component.scaleY * scaleY; + offset = i; + output = component.output; + blocksPerScanline = component.blocksPerLine + 1 << 3; + if (componentScaleX !== lastComponentScaleX) { + for (x = 0; x < width; x++) { + j = 0 | x * componentScaleX; + xScaleBlockOffset[x] = (j & mask3LSB) << 3 | j & 7; + } + lastComponentScaleX = componentScaleX; + } + for (y = 0; y < height; y++) { + j = 0 | y * componentScaleY; + index = blocksPerScanline * (j & mask3LSB) | (j & 7) << 3; + for (x = 0; x < width; x++) { + data[offset] = output[index + xScaleBlockOffset[x]]; + offset += numComponents; + } + } + } + let transform = this._decodeTransform; + if (!isSourcePDF && numComponents === 4 && !transform) { + transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]); + } + if (transform) { + for (i = 0; i < dataLength;) { + for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) { + data[i] = (data[i] * transform[k] >> 8) + transform[k + 1]; + } + } + } + return data; + } + get _isColorConversionNeeded() { + if (this.adobe) { + return !!this.adobe.transformCode; + } + if (this.numComponents === 3) { + if (this._colorTransform === 0) { + return false; + } else if (this.components[0].index === 0x52 && this.components[1].index === 0x47 && this.components[2].index === 0x42) { + return false; + } + return true; + } + if (this._colorTransform === 1) { + return true; + } + return false; + } + _convertYccToRgb(data) { + let Y, Cb, Cr; + for (let i = 0, length = data.length; i < length; i += 3) { + Y = data[i]; + Cb = data[i + 1]; + Cr = data[i + 2]; + data[i] = Y - 179.456 + 1.402 * Cr; + data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr; + data[i + 2] = Y - 226.816 + 1.772 * Cb; + } + return data; + } + _convertYccToRgba(data, out) { + for (let i = 0, j = 0, length = data.length; i < length; i += 3, j += 4) { + const Y = data[i]; + const Cb = data[i + 1]; + const Cr = data[i + 2]; + out[j] = Y - 179.456 + 1.402 * Cr; + out[j + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr; + out[j + 2] = Y - 226.816 + 1.772 * Cb; + out[j + 3] = 255; + } + return out; + } + _convertYcckToRgb(data) { + let Y, Cb, Cr, k; + let offset = 0; + for (let i = 0, length = data.length; i < length; i += 4) { + Y = data[i]; + Cb = data[i + 1]; + Cr = data[i + 2]; + k = data[i + 3]; + data[offset++] = -122.67195406894 + Cb * (-6.60635669420364e-5 * Cb + 0.000437130475926232 * Cr - 5.4080610064599e-5 * Y + 0.00048449797120281 * k - 0.154362151871126) + Cr * (-0.000957964378445773 * Cr + 0.000817076911346625 * Y - 0.00477271405408747 * k + 1.53380253221734) + Y * (0.000961250184130688 * Y - 0.00266257332283933 * k + 0.48357088451265) + k * (-0.000336197177618394 * k + 0.484791561490776); + data[offset++] = 107.268039397724 + Cb * (2.19927104525741e-5 * Cb - 0.000640992018297945 * Cr + 0.000659397001245577 * Y + 0.000426105652938837 * k - 0.176491792462875) + Cr * (-0.000778269941513683 * Cr + 0.00130872261408275 * Y + 0.000770482631801132 * k - 0.151051492775562) + Y * (0.00126935368114843 * Y - 0.00265090189010898 * k + 0.25802910206845) + k * (-0.000318913117588328 * k - 0.213742400323665); + data[offset++] = -20.810012546947 + Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr + 0.0020741088115012 * Y - 0.00288260236853442 * k + 0.814272968359295) + Cr * (-1.53496057440975e-5 * Cr - 0.000132689043961446 * Y + 0.000560833691242812 * k - 0.195152027534049) + Y * (0.00174418132927582 * Y - 0.00255243321439347 * k + 0.116935020465145) + k * (-0.000343531996510555 * k + 0.24165260232407); + } + return data.subarray(0, offset); + } + _convertYcckToRgba(data) { + for (let i = 0, length = data.length; i < length; i += 4) { + const Y = data[i]; + const Cb = data[i + 1]; + const Cr = data[i + 2]; + const k = data[i + 3]; + data[i] = -122.67195406894 + Cb * (-6.60635669420364e-5 * Cb + 0.000437130475926232 * Cr - 5.4080610064599e-5 * Y + 0.00048449797120281 * k - 0.154362151871126) + Cr * (-0.000957964378445773 * Cr + 0.000817076911346625 * Y - 0.00477271405408747 * k + 1.53380253221734) + Y * (0.000961250184130688 * Y - 0.00266257332283933 * k + 0.48357088451265) + k * (-0.000336197177618394 * k + 0.484791561490776); + data[i + 1] = 107.268039397724 + Cb * (2.19927104525741e-5 * Cb - 0.000640992018297945 * Cr + 0.000659397001245577 * Y + 0.000426105652938837 * k - 0.176491792462875) + Cr * (-0.000778269941513683 * Cr + 0.00130872261408275 * Y + 0.000770482631801132 * k - 0.151051492775562) + Y * (0.00126935368114843 * Y - 0.00265090189010898 * k + 0.25802910206845) + k * (-0.000318913117588328 * k - 0.213742400323665); + data[i + 2] = -20.810012546947 + Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr + 0.0020741088115012 * Y - 0.00288260236853442 * k + 0.814272968359295) + Cr * (-1.53496057440975e-5 * Cr - 0.000132689043961446 * Y + 0.000560833691242812 * k - 0.195152027534049) + Y * (0.00174418132927582 * Y - 0.00255243321439347 * k + 0.116935020465145) + k * (-0.000343531996510555 * k + 0.24165260232407); + data[i + 3] = 255; + } + return data; + } + _convertYcckToCmyk(data) { + let Y, Cb, Cr; + for (let i = 0, length = data.length; i < length; i += 4) { + Y = data[i]; + Cb = data[i + 1]; + Cr = data[i + 2]; + data[i] = 434.456 - Y - 1.402 * Cr; + data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr; + data[i + 2] = 481.816 - Y - 1.772 * Cb; + } + return data; + } + _convertCmykToRgb(data) { + let c, m, y, k; + let offset = 0; + for (let i = 0, length = data.length; i < length; i += 4) { + c = data[i]; + m = data[i + 1]; + y = data[i + 2]; + k = data[i + 3]; + data[offset++] = 255 + c * (-0.00006747147073602441 * c + 0.0008379262121013727 * m + 0.0002894718188643294 * y + 0.003264231057537806 * k - 1.1185611867203937) + m * (0.000026374107616089405 * m - 0.00008626949158638572 * y - 0.0002748769067499491 * k - 0.02155688794978967) + y * (-0.00003878099212869363 * y - 0.0003267808279485286 * k + 0.0686742238595345) - k * (0.0003361971776183937 * k + 0.7430659151342254); + data[offset++] = 255 + c * (0.00013596372813588848 * c + 0.000924537132573585 * m + 0.00010567359618683593 * y + 0.0004791864687436512 * k - 0.3109689587515875) + m * (-0.00023545346108370344 * m + 0.0002702845253534714 * y + 0.0020200308977307156 * k - 0.7488052167015494) + y * (0.00006834815998235662 * y + 0.00015168452363460973 * k - 0.09751927774728933) - k * (0.0003189131175883281 * k + 0.7364883807733168); + data[offset++] = 255 + c * (0.000013598650411385307 * c + 0.00012423956175490851 * m + 0.0004751985097583589 * y - 0.0000036729317476630422 * k - 0.05562186980264034) + m * (0.00016141380598724676 * m + 0.0009692239130725186 * y + 0.0007782692450036253 * k - 0.44015232367526463) + y * (5.068882914068769e-7 * y + 0.0017778369011375071 * k - 0.7591454649749609) - k * (0.0003435319965105553 * k + 0.7063770186160144); + } + return data.subarray(0, offset); + } + _convertCmykToRgba(data) { + for (let i = 0, length = data.length; i < length; i += 4) { + const c = data[i]; + const m = data[i + 1]; + const y = data[i + 2]; + const k = data[i + 3]; + data[i] = 255 + c * (-0.00006747147073602441 * c + 0.0008379262121013727 * m + 0.0002894718188643294 * y + 0.003264231057537806 * k - 1.1185611867203937) + m * (0.000026374107616089405 * m - 0.00008626949158638572 * y - 0.0002748769067499491 * k - 0.02155688794978967) + y * (-0.00003878099212869363 * y - 0.0003267808279485286 * k + 0.0686742238595345) - k * (0.0003361971776183937 * k + 0.7430659151342254); + data[i + 1] = 255 + c * (0.00013596372813588848 * c + 0.000924537132573585 * m + 0.00010567359618683593 * y + 0.0004791864687436512 * k - 0.3109689587515875) + m * (-0.00023545346108370344 * m + 0.0002702845253534714 * y + 0.0020200308977307156 * k - 0.7488052167015494) + y * (0.00006834815998235662 * y + 0.00015168452363460973 * k - 0.09751927774728933) - k * (0.0003189131175883281 * k + 0.7364883807733168); + data[i + 2] = 255 + c * (0.000013598650411385307 * c + 0.00012423956175490851 * m + 0.0004751985097583589 * y - 0.0000036729317476630422 * k - 0.05562186980264034) + m * (0.00016141380598724676 * m + 0.0009692239130725186 * y + 0.0007782692450036253 * k - 0.44015232367526463) + y * (5.068882914068769e-7 * y + 0.0017778369011375071 * k - 0.7591454649749609) - k * (0.0003435319965105553 * k + 0.7063770186160144); + data[i + 3] = 255; + } + return data; + } + getData({ + width, + height, + forceRGBA = false, + forceRGB = false, + isSourcePDF = false + }) { + if (this.numComponents > 4) { + throw new JpegError("Unsupported color mode"); + } + const data = this._getLinearizedBlockData(width, height, isSourcePDF); + if (this.numComponents === 1 && (forceRGBA || forceRGB)) { + const len = data.length * (forceRGBA ? 4 : 3); + const rgbaData = new Uint8ClampedArray(len); + let offset = 0; + if (forceRGBA) { + (0, _image_utils.grayToRGBA)(data, new Uint32Array(rgbaData.buffer)); + } else { + for (const grayColor of data) { + rgbaData[offset++] = grayColor; + rgbaData[offset++] = grayColor; + rgbaData[offset++] = grayColor; + } + } + return rgbaData; + } else if (this.numComponents === 3 && this._isColorConversionNeeded) { + if (forceRGBA) { + const rgbaData = new Uint8ClampedArray(data.length / 3 * 4); + return this._convertYccToRgba(data, rgbaData); + } + return this._convertYccToRgb(data); + } else if (this.numComponents === 4) { + if (this._isColorConversionNeeded) { + if (forceRGBA) { + return this._convertYcckToRgba(data); + } + if (forceRGB) { + return this._convertYcckToRgb(data); + } + return this._convertYcckToCmyk(data); + } else if (forceRGBA) { + return this._convertCmykToRgba(data); + } else if (forceRGB) { + return this._convertCmykToRgb(data); + } + } + return data; + } +} +exports.JpegImage = JpegImage; + +/***/ }), +/* 28 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.convertBlackAndWhiteToRGBA = convertBlackAndWhiteToRGBA; +exports.convertToRGBA = convertToRGBA; +exports.grayToRGBA = grayToRGBA; +var _util = __w_pdfjs_require__(2); +function convertToRGBA(params) { + switch (params.kind) { + case _util.ImageKind.GRAYSCALE_1BPP: + return convertBlackAndWhiteToRGBA(params); + case _util.ImageKind.RGB_24BPP: + return convertRGBToRGBA(params); + } + return null; +} +function convertBlackAndWhiteToRGBA({ + src, + srcPos = 0, + dest, + width, + height, + nonBlackColor = 0xffffffff, + inverseDecode = false +}) { + const black = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff; + const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor]; + const widthInSource = width >> 3; + const widthRemainder = width & 7; + const srcLength = src.length; + dest = new Uint32Array(dest.buffer); + let destPos = 0; + 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 + }; +} +function convertRGBToRGBA({ + src, + srcPos = 0, + dest, + destPos = 0, + width, + height +}) { + let i = 0; + const len32 = src.length >> 2; + const src32 = new Uint32Array(src.buffer, srcPos, len32); + if (_util.FeatureTest.isLittleEndian) { + for (; i < len32 - 2; i += 3, destPos += 4) { + const s1 = src32[i]; + const s2 = src32[i + 1]; + const s3 = src32[i + 2]; + dest[destPos] = s1 | 0xff000000; + dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000; + dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000; + dest[destPos + 3] = s3 >>> 8 | 0xff000000; + } + for (let j = i * 4, jj = src.length; j < jj; j += 3) { + dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000; + } + } else { + for (; i < len32 - 2; i += 3, destPos += 4) { + const s1 = src32[i]; + const s2 = src32[i + 1]; + const s3 = src32[i + 2]; + dest[destPos] = s1 | 0xff; + dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff; + dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff; + dest[destPos + 3] = s3 << 8 | 0xff; + } + for (let j = i * 4, jj = src.length; j < jj; j += 3) { + dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff; + } + } + return { + srcPos, + destPos + }; +} +function grayToRGBA(src, dest) { + if (_util.FeatureTest.isLittleEndian) { + for (let i = 0, ii = src.length; i < ii; i++) { + dest[i] = src[i] * 0x10101 | 0xff000000; + } + } else { + for (let i = 0, ii = src.length; i < ii; i++) { + dest[i] = src[i] * 0x1010100 | 0x000000ff; + } + } +} + +/***/ }), +/* 29 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.JpxStream = void 0; +var _decode_stream = __w_pdfjs_require__(18); +var _jpx = __w_pdfjs_require__(30); +var _util = __w_pdfjs_require__(2); +class JpxStream extends _decode_stream.DecodeStream { + constructor(stream, maybeLength, params) { + super(maybeLength); + this.stream = stream; + this.dict = stream.dict; + this.maybeLength = maybeLength; + this.params = params; + } + get bytes() { + return (0, _util.shadow)(this, "bytes", this.stream.getBytes(this.maybeLength)); + } + ensureBuffer(requested) {} + readBlock() { + if (this.eof) { + return; + } + const jpxImage = new _jpx.JpxImage(); + jpxImage.parse(this.bytes); + const width = jpxImage.width; + const height = jpxImage.height; + const componentsCount = jpxImage.componentsCount; + const tileCount = jpxImage.tiles.length; + if (tileCount === 1) { + this.buffer = jpxImage.tiles[0].items; + } else { + const data = new Uint8ClampedArray(width * height * componentsCount); + for (let k = 0; k < tileCount; k++) { + const tileComponents = jpxImage.tiles[k]; + const tileWidth = tileComponents.width; + const tileHeight = tileComponents.height; + const tileLeft = tileComponents.left; + const tileTop = tileComponents.top; + const src = tileComponents.items; + let srcPosition = 0; + let dataPosition = (width * tileTop + tileLeft) * componentsCount; + const imgRowSize = width * componentsCount; + const tileRowSize = tileWidth * componentsCount; + for (let j = 0; j < tileHeight; j++) { + const rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize); + data.set(rowBytes, dataPosition); + srcPosition += tileRowSize; + dataPosition += imgRowSize; + } + } + this.buffer = data; + } + this.bufferLength = this.buffer.length; + this.eof = true; + } +} +exports.JpxStream = JpxStream; + +/***/ }), +/* 30 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.JpxImage = void 0; +var _util = __w_pdfjs_require__(2); +var _core_utils = __w_pdfjs_require__(3); +var _arithmetic_decoder = __w_pdfjs_require__(25); +class JpxError extends _util.BaseException { + constructor(msg) { + super(`JPX error: ${msg}`, "JpxError"); + } +} +const SubbandsGainLog2 = { + LL: 0, + LH: 1, + HL: 1, + HH: 2 +}; +class JpxImage { + constructor() { + this.failOnCorruptedImage = false; + } + parse(data) { + const head = (0, _core_utils.readUint16)(data, 0); + if (head === 0xff4f) { + this.parseCodestream(data, 0, data.length); + return; + } + const length = data.length; + let position = 0; + while (position < length) { + let headerSize = 8; + let lbox = (0, _core_utils.readUint32)(data, position); + const tbox = (0, _core_utils.readUint32)(data, position + 4); + position += headerSize; + if (lbox === 1) { + lbox = (0, _core_utils.readUint32)(data, position) * 4294967296 + (0, _core_utils.readUint32)(data, position + 4); + position += 8; + headerSize += 8; + } + if (lbox === 0) { + lbox = length - position + headerSize; + } + if (lbox < headerSize) { + throw new JpxError("Invalid box field size"); + } + const dataLength = lbox - headerSize; + let jumpDataLength = true; + switch (tbox) { + case 0x6a703268: + jumpDataLength = false; + break; + case 0x636f6c72: + const method = data[position]; + if (method === 1) { + const colorspace = (0, _core_utils.readUint32)(data, position + 3); + switch (colorspace) { + case 16: + case 17: + case 18: + break; + default: + (0, _util.warn)("Unknown colorspace " + colorspace); + break; + } + } else if (method === 2) { + (0, _util.info)("ICC profile not supported"); + } + break; + case 0x6a703263: + this.parseCodestream(data, position, position + dataLength); + break; + case 0x6a502020: + if ((0, _core_utils.readUint32)(data, position) !== 0x0d0a870a) { + (0, _util.warn)("Invalid JP2 signature"); + } + break; + case 0x6a501a1a: + case 0x66747970: + case 0x72726571: + case 0x72657320: + case 0x69686472: + break; + default: + const headerType = String.fromCharCode(tbox >> 24 & 0xff, tbox >> 16 & 0xff, tbox >> 8 & 0xff, tbox & 0xff); + (0, _util.warn)(`Unsupported header type ${tbox} (${headerType}).`); + break; + } + if (jumpDataLength) { + position += dataLength; + } + } + } + parseImageProperties(stream) { + let newByte = stream.getByte(); + while (newByte >= 0) { + const oldByte = newByte; + newByte = stream.getByte(); + const code = oldByte << 8 | newByte; + if (code === 0xff51) { + stream.skip(4); + const Xsiz = stream.getInt32() >>> 0; + const Ysiz = stream.getInt32() >>> 0; + const XOsiz = stream.getInt32() >>> 0; + const YOsiz = stream.getInt32() >>> 0; + stream.skip(16); + const Csiz = stream.getUint16(); + this.width = Xsiz - XOsiz; + this.height = Ysiz - YOsiz; + this.componentsCount = Csiz; + this.bitsPerComponent = 8; + return; + } + } + throw new JpxError("No size marker found in JPX stream"); + } + parseCodestream(data, start, end) { + const context = {}; + let doNotRecover = false; + try { + let position = start; + while (position + 1 < end) { + const code = (0, _core_utils.readUint16)(data, position); + position += 2; + let length = 0, + j, + sqcd, + spqcds, + spqcdSize, + scalarExpounded, + tile; + switch (code) { + case 0xff4f: + context.mainHeader = true; + break; + case 0xffd9: + break; + case 0xff51: + length = (0, _core_utils.readUint16)(data, position); + const siz = {}; + siz.Xsiz = (0, _core_utils.readUint32)(data, position + 4); + siz.Ysiz = (0, _core_utils.readUint32)(data, position + 8); + siz.XOsiz = (0, _core_utils.readUint32)(data, position + 12); + siz.YOsiz = (0, _core_utils.readUint32)(data, position + 16); + siz.XTsiz = (0, _core_utils.readUint32)(data, position + 20); + siz.YTsiz = (0, _core_utils.readUint32)(data, position + 24); + siz.XTOsiz = (0, _core_utils.readUint32)(data, position + 28); + siz.YTOsiz = (0, _core_utils.readUint32)(data, position + 32); + const componentsCount = (0, _core_utils.readUint16)(data, position + 36); + siz.Csiz = componentsCount; + const components = []; + j = position + 38; + for (let i = 0; i < componentsCount; i++) { + const component = { + precision: (data[j] & 0x7f) + 1, + isSigned: !!(data[j] & 0x80), + XRsiz: data[j + 1], + YRsiz: data[j + 2] + }; + j += 3; + calculateComponentDimensions(component, siz); + components.push(component); + } + context.SIZ = siz; + context.components = components; + calculateTileGrids(context, components); + context.QCC = []; + context.COC = []; + break; + case 0xff5c: + length = (0, _core_utils.readUint16)(data, position); + const qcd = {}; + j = position + 2; + sqcd = data[j++]; + switch (sqcd & 0x1f) { + case 0: + spqcdSize = 8; + scalarExpounded = true; + break; + case 1: + spqcdSize = 16; + scalarExpounded = false; + break; + case 2: + spqcdSize = 16; + scalarExpounded = true; + break; + default: + throw new Error("Invalid SQcd value " + sqcd); + } + qcd.noQuantization = spqcdSize === 8; + qcd.scalarExpounded = scalarExpounded; + qcd.guardBits = sqcd >> 5; + spqcds = []; + while (j < length + position) { + const spqcd = {}; + if (spqcdSize === 8) { + spqcd.epsilon = data[j++] >> 3; + spqcd.mu = 0; + } else { + spqcd.epsilon = data[j] >> 3; + spqcd.mu = (data[j] & 0x7) << 8 | data[j + 1]; + j += 2; + } + spqcds.push(spqcd); + } + qcd.SPqcds = spqcds; + if (context.mainHeader) { + context.QCD = qcd; + } else { + context.currentTile.QCD = qcd; + context.currentTile.QCC = []; + } + break; + case 0xff5d: + length = (0, _core_utils.readUint16)(data, position); + const qcc = {}; + j = position + 2; + let cqcc; + if (context.SIZ.Csiz < 257) { + cqcc = data[j++]; + } else { + cqcc = (0, _core_utils.readUint16)(data, j); + j += 2; + } + sqcd = data[j++]; + switch (sqcd & 0x1f) { + case 0: + spqcdSize = 8; + scalarExpounded = true; + break; + case 1: + spqcdSize = 16; + scalarExpounded = false; + break; + case 2: + spqcdSize = 16; + scalarExpounded = true; + break; + default: + throw new Error("Invalid SQcd value " + sqcd); + } + qcc.noQuantization = spqcdSize === 8; + qcc.scalarExpounded = scalarExpounded; + qcc.guardBits = sqcd >> 5; + spqcds = []; + while (j < length + position) { + const spqcd = {}; + if (spqcdSize === 8) { + spqcd.epsilon = data[j++] >> 3; + spqcd.mu = 0; + } else { + spqcd.epsilon = data[j] >> 3; + spqcd.mu = (data[j] & 0x7) << 8 | data[j + 1]; + j += 2; + } + spqcds.push(spqcd); + } + qcc.SPqcds = spqcds; + if (context.mainHeader) { + context.QCC[cqcc] = qcc; + } else { + context.currentTile.QCC[cqcc] = qcc; + } + break; + case 0xff52: + length = (0, _core_utils.readUint16)(data, position); + const cod = {}; + j = position + 2; + const scod = data[j++]; + cod.entropyCoderWithCustomPrecincts = !!(scod & 1); + cod.sopMarkerUsed = !!(scod & 2); + cod.ephMarkerUsed = !!(scod & 4); + cod.progressionOrder = data[j++]; + cod.layersCount = (0, _core_utils.readUint16)(data, j); + j += 2; + cod.multipleComponentTransform = data[j++]; + cod.decompositionLevelsCount = data[j++]; + cod.xcb = (data[j++] & 0xf) + 2; + cod.ycb = (data[j++] & 0xf) + 2; + const blockStyle = data[j++]; + cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1); + cod.resetContextProbabilities = !!(blockStyle & 2); + cod.terminationOnEachCodingPass = !!(blockStyle & 4); + cod.verticallyStripe = !!(blockStyle & 8); + cod.predictableTermination = !!(blockStyle & 16); + cod.segmentationSymbolUsed = !!(blockStyle & 32); + cod.reversibleTransformation = data[j++]; + if (cod.entropyCoderWithCustomPrecincts) { + const precinctsSizes = []; + while (j < length + position) { + const precinctsSize = data[j++]; + precinctsSizes.push({ + PPx: precinctsSize & 0xf, + PPy: precinctsSize >> 4 + }); + } + cod.precinctsSizes = precinctsSizes; + } + const unsupported = []; + if (cod.selectiveArithmeticCodingBypass) { + unsupported.push("selectiveArithmeticCodingBypass"); + } + if (cod.terminationOnEachCodingPass) { + unsupported.push("terminationOnEachCodingPass"); + } + if (cod.verticallyStripe) { + unsupported.push("verticallyStripe"); + } + if (cod.predictableTermination) { + unsupported.push("predictableTermination"); + } + if (unsupported.length > 0) { + doNotRecover = true; + (0, _util.warn)(`JPX: Unsupported COD options (${unsupported.join(", ")}).`); + } + if (context.mainHeader) { + context.COD = cod; + } else { + context.currentTile.COD = cod; + context.currentTile.COC = []; + } + break; + case 0xff90: + length = (0, _core_utils.readUint16)(data, position); + tile = {}; + tile.index = (0, _core_utils.readUint16)(data, position + 2); + tile.length = (0, _core_utils.readUint32)(data, position + 4); + tile.dataEnd = tile.length + position - 2; + tile.partIndex = data[position + 8]; + tile.partsCount = data[position + 9]; + context.mainHeader = false; + if (tile.partIndex === 0) { + tile.COD = context.COD; + tile.COC = context.COC.slice(0); + tile.QCD = context.QCD; + tile.QCC = context.QCC.slice(0); + } + context.currentTile = tile; + break; + case 0xff93: + tile = context.currentTile; + if (tile.partIndex === 0) { + initializeTile(context, tile.index); + buildPackets(context); + } + length = tile.dataEnd - position; + parseTilePackets(context, data, position, length); + break; + case 0xff53: + (0, _util.warn)("JPX: Codestream code 0xFF53 (COC) is not implemented."); + case 0xff55: + case 0xff57: + case 0xff58: + case 0xff64: + length = (0, _core_utils.readUint16)(data, position); + break; + default: + throw new Error("Unknown codestream code: " + code.toString(16)); + } + position += length; + } + } catch (e) { + if (doNotRecover || this.failOnCorruptedImage) { + throw new JpxError(e.message); + } else { + (0, _util.warn)(`JPX: Trying to recover from: "${e.message}".`); + } + } + this.tiles = transformComponents(context); + this.width = context.SIZ.Xsiz - context.SIZ.XOsiz; + this.height = context.SIZ.Ysiz - context.SIZ.YOsiz; + this.componentsCount = context.SIZ.Csiz; + } +} +exports.JpxImage = JpxImage; +function calculateComponentDimensions(component, siz) { + component.x0 = Math.ceil(siz.XOsiz / component.XRsiz); + component.x1 = Math.ceil(siz.Xsiz / component.XRsiz); + component.y0 = Math.ceil(siz.YOsiz / component.YRsiz); + component.y1 = Math.ceil(siz.Ysiz / component.YRsiz); + component.width = component.x1 - component.x0; + component.height = component.y1 - component.y0; +} +function calculateTileGrids(context, components) { + const siz = context.SIZ; + const tiles = []; + let tile; + const numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz); + const numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz); + for (let q = 0; q < numYtiles; q++) { + for (let p = 0; p < numXtiles; p++) { + tile = {}; + tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz); + tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz); + tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz); + tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz); + tile.width = tile.tx1 - tile.tx0; + tile.height = tile.ty1 - tile.ty0; + tile.components = []; + tiles.push(tile); + } + } + context.tiles = tiles; + const componentsCount = siz.Csiz; + for (let i = 0, ii = componentsCount; i < ii; i++) { + const component = components[i]; + for (let j = 0, jj = tiles.length; j < jj; j++) { + const tileComponent = {}; + tile = tiles[j]; + tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz); + tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz); + tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz); + tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz); + tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0; + tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0; + tile.components[i] = tileComponent; + } + } +} +function getBlocksDimensions(context, component, r) { + const codOrCoc = component.codingStyleParameters; + const result = {}; + if (!codOrCoc.entropyCoderWithCustomPrecincts) { + result.PPx = 15; + result.PPy = 15; + } else { + result.PPx = codOrCoc.precinctsSizes[r].PPx; + result.PPy = codOrCoc.precinctsSizes[r].PPy; + } + result.xcb_ = r > 0 ? Math.min(codOrCoc.xcb, result.PPx - 1) : Math.min(codOrCoc.xcb, result.PPx); + result.ycb_ = r > 0 ? Math.min(codOrCoc.ycb, result.PPy - 1) : Math.min(codOrCoc.ycb, result.PPy); + return result; +} +function buildPrecincts(context, resolution, dimensions) { + const precinctWidth = 1 << dimensions.PPx; + const precinctHeight = 1 << dimensions.PPy; + const isZeroRes = resolution.resLevel === 0; + const precinctWidthInSubband = 1 << dimensions.PPx + (isZeroRes ? 0 : -1); + const precinctHeightInSubband = 1 << dimensions.PPy + (isZeroRes ? 0 : -1); + const numprecinctswide = resolution.trx1 > resolution.trx0 ? Math.ceil(resolution.trx1 / precinctWidth) - Math.floor(resolution.trx0 / precinctWidth) : 0; + const numprecinctshigh = resolution.try1 > resolution.try0 ? Math.ceil(resolution.try1 / precinctHeight) - Math.floor(resolution.try0 / precinctHeight) : 0; + const numprecincts = numprecinctswide * numprecinctshigh; + resolution.precinctParameters = { + precinctWidth, + precinctHeight, + numprecinctswide, + numprecinctshigh, + numprecincts, + precinctWidthInSubband, + precinctHeightInSubband + }; +} +function buildCodeblocks(context, subband, dimensions) { + const xcb_ = dimensions.xcb_; + const ycb_ = dimensions.ycb_; + const codeblockWidth = 1 << xcb_; + const codeblockHeight = 1 << ycb_; + const cbx0 = subband.tbx0 >> xcb_; + const cby0 = subband.tby0 >> ycb_; + const cbx1 = subband.tbx1 + codeblockWidth - 1 >> xcb_; + const cby1 = subband.tby1 + codeblockHeight - 1 >> ycb_; + const precinctParameters = subband.resolution.precinctParameters; + const codeblocks = []; + const precincts = []; + let i, j, codeblock, precinctNumber; + for (j = cby0; j < cby1; j++) { + for (i = cbx0; i < cbx1; i++) { + codeblock = { + cbx: i, + cby: j, + tbx0: codeblockWidth * i, + tby0: codeblockHeight * j, + tbx1: codeblockWidth * (i + 1), + tby1: codeblockHeight * (j + 1) + }; + codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0); + codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0); + codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1); + codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1); + const pi = Math.floor((codeblock.tbx0_ - subband.tbx0) / precinctParameters.precinctWidthInSubband); + const pj = Math.floor((codeblock.tby0_ - subband.tby0) / precinctParameters.precinctHeightInSubband); + precinctNumber = pi + pj * precinctParameters.numprecinctswide; + codeblock.precinctNumber = precinctNumber; + codeblock.subbandType = subband.type; + codeblock.Lblock = 3; + if (codeblock.tbx1_ <= codeblock.tbx0_ || codeblock.tby1_ <= codeblock.tby0_) { + continue; + } + codeblocks.push(codeblock); + let precinct = precincts[precinctNumber]; + if (precinct !== undefined) { + if (i < precinct.cbxMin) { + precinct.cbxMin = i; + } else if (i > precinct.cbxMax) { + precinct.cbxMax = i; + } + if (j < precinct.cbyMin) { + precinct.cbxMin = j; + } else if (j > precinct.cbyMax) { + precinct.cbyMax = j; + } + } else { + precincts[precinctNumber] = precinct = { + cbxMin: i, + cbyMin: j, + cbxMax: i, + cbyMax: j + }; + } + codeblock.precinct = precinct; + } + } + subband.codeblockParameters = { + codeblockWidth: xcb_, + codeblockHeight: ycb_, + numcodeblockwide: cbx1 - cbx0 + 1, + numcodeblockhigh: cby1 - cby0 + 1 + }; + subband.codeblocks = codeblocks; + subband.precincts = precincts; +} +function createPacket(resolution, precinctNumber, layerNumber) { + const precinctCodeblocks = []; + const subbands = resolution.subbands; + for (let i = 0, ii = subbands.length; i < ii; i++) { + const subband = subbands[i]; + const codeblocks = subband.codeblocks; + for (let j = 0, jj = codeblocks.length; j < jj; j++) { + const codeblock = codeblocks[j]; + if (codeblock.precinctNumber !== precinctNumber) { + continue; + } + precinctCodeblocks.push(codeblock); + } + } + return { + layerNumber, + codeblocks: precinctCodeblocks + }; +} +function LayerResolutionComponentPositionIterator(context) { + const siz = context.SIZ; + const tileIndex = context.currentTile.index; + const tile = context.tiles[tileIndex]; + const layersCount = tile.codingStyleDefaultParameters.layersCount; + const componentsCount = siz.Csiz; + let maxDecompositionLevelsCount = 0; + for (let q = 0; q < componentsCount; q++) { + maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, tile.components[q].codingStyleParameters.decompositionLevelsCount); + } + let l = 0, + r = 0, + i = 0, + k = 0; + this.nextPacket = function JpxImage_nextPacket() { + for (; l < layersCount; l++) { + for (; r <= maxDecompositionLevelsCount; r++) { + for (; i < componentsCount; i++) { + const component = tile.components[i]; + if (r > component.codingStyleParameters.decompositionLevelsCount) { + continue; + } + const resolution = component.resolutions[r]; + const numprecincts = resolution.precinctParameters.numprecincts; + for (; k < numprecincts;) { + const packet = createPacket(resolution, k, l); + k++; + return packet; + } + k = 0; + } + i = 0; + } + r = 0; + } + throw new JpxError("Out of packets"); + }; +} +function ResolutionLayerComponentPositionIterator(context) { + const siz = context.SIZ; + const tileIndex = context.currentTile.index; + const tile = context.tiles[tileIndex]; + const layersCount = tile.codingStyleDefaultParameters.layersCount; + const componentsCount = siz.Csiz; + let maxDecompositionLevelsCount = 0; + for (let q = 0; q < componentsCount; q++) { + maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, tile.components[q].codingStyleParameters.decompositionLevelsCount); + } + let r = 0, + l = 0, + i = 0, + k = 0; + this.nextPacket = function JpxImage_nextPacket() { + for (; r <= maxDecompositionLevelsCount; r++) { + for (; l < layersCount; l++) { + for (; i < componentsCount; i++) { + const component = tile.components[i]; + if (r > component.codingStyleParameters.decompositionLevelsCount) { + continue; + } + const resolution = component.resolutions[r]; + const numprecincts = resolution.precinctParameters.numprecincts; + for (; k < numprecincts;) { + const packet = createPacket(resolution, k, l); + k++; + return packet; + } + k = 0; + } + i = 0; + } + l = 0; + } + throw new JpxError("Out of packets"); + }; +} +function ResolutionPositionComponentLayerIterator(context) { + const siz = context.SIZ; + const tileIndex = context.currentTile.index; + const tile = context.tiles[tileIndex]; + const layersCount = tile.codingStyleDefaultParameters.layersCount; + const componentsCount = siz.Csiz; + let l, r, c, p; + let maxDecompositionLevelsCount = 0; + for (c = 0; c < componentsCount; c++) { + const component = tile.components[c]; + maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, component.codingStyleParameters.decompositionLevelsCount); + } + const maxNumPrecinctsInLevel = new Int32Array(maxDecompositionLevelsCount + 1); + for (r = 0; r <= maxDecompositionLevelsCount; ++r) { + let maxNumPrecincts = 0; + for (c = 0; c < componentsCount; ++c) { + const resolutions = tile.components[c].resolutions; + if (r < resolutions.length) { + maxNumPrecincts = Math.max(maxNumPrecincts, resolutions[r].precinctParameters.numprecincts); + } + } + maxNumPrecinctsInLevel[r] = maxNumPrecincts; + } + l = 0; + r = 0; + c = 0; + p = 0; + this.nextPacket = function JpxImage_nextPacket() { + for (; r <= maxDecompositionLevelsCount; r++) { + for (; p < maxNumPrecinctsInLevel[r]; p++) { + for (; c < componentsCount; c++) { + const component = tile.components[c]; + if (r > component.codingStyleParameters.decompositionLevelsCount) { + continue; + } + const resolution = component.resolutions[r]; + const numprecincts = resolution.precinctParameters.numprecincts; + if (p >= numprecincts) { + continue; + } + for (; l < layersCount;) { + const packet = createPacket(resolution, p, l); + l++; + return packet; + } + l = 0; + } + c = 0; + } + p = 0; + } + throw new JpxError("Out of packets"); + }; +} +function PositionComponentResolutionLayerIterator(context) { + const siz = context.SIZ; + const tileIndex = context.currentTile.index; + const tile = context.tiles[tileIndex]; + const layersCount = tile.codingStyleDefaultParameters.layersCount; + const componentsCount = siz.Csiz; + const precinctsSizes = getPrecinctSizesInImageScale(tile); + const precinctsIterationSizes = precinctsSizes; + let l = 0, + r = 0, + c = 0, + px = 0, + py = 0; + this.nextPacket = function JpxImage_nextPacket() { + for (; py < precinctsIterationSizes.maxNumHigh; py++) { + for (; px < precinctsIterationSizes.maxNumWide; px++) { + for (; c < componentsCount; c++) { + const component = tile.components[c]; + const decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount; + for (; r <= decompositionLevelsCount; r++) { + const resolution = component.resolutions[r]; + const sizeInImageScale = precinctsSizes.components[c].resolutions[r]; + const k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution); + if (k === null) { + continue; + } + for (; l < layersCount;) { + const packet = createPacket(resolution, k, l); + l++; + return packet; + } + l = 0; + } + r = 0; + } + c = 0; + } + px = 0; + } + throw new JpxError("Out of packets"); + }; +} +function ComponentPositionResolutionLayerIterator(context) { + const siz = context.SIZ; + const tileIndex = context.currentTile.index; + const tile = context.tiles[tileIndex]; + const layersCount = tile.codingStyleDefaultParameters.layersCount; + const componentsCount = siz.Csiz; + const precinctsSizes = getPrecinctSizesInImageScale(tile); + let l = 0, + r = 0, + c = 0, + px = 0, + py = 0; + this.nextPacket = function JpxImage_nextPacket() { + for (; c < componentsCount; ++c) { + const component = tile.components[c]; + const precinctsIterationSizes = precinctsSizes.components[c]; + const decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount; + for (; py < precinctsIterationSizes.maxNumHigh; py++) { + for (; px < precinctsIterationSizes.maxNumWide; px++) { + for (; r <= decompositionLevelsCount; r++) { + const resolution = component.resolutions[r]; + const sizeInImageScale = precinctsIterationSizes.resolutions[r]; + const k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution); + if (k === null) { + continue; + } + for (; l < layersCount;) { + const packet = createPacket(resolution, k, l); + l++; + return packet; + } + l = 0; + } + r = 0; + } + px = 0; + } + py = 0; + } + throw new JpxError("Out of packets"); + }; +} +function getPrecinctIndexIfExist(pxIndex, pyIndex, sizeInImageScale, precinctIterationSizes, resolution) { + const posX = pxIndex * precinctIterationSizes.minWidth; + const posY = pyIndex * precinctIterationSizes.minHeight; + if (posX % sizeInImageScale.width !== 0 || posY % sizeInImageScale.height !== 0) { + return null; + } + const startPrecinctRowIndex = posY / sizeInImageScale.width * resolution.precinctParameters.numprecinctswide; + return posX / sizeInImageScale.height + startPrecinctRowIndex; +} +function getPrecinctSizesInImageScale(tile) { + const componentsCount = tile.components.length; + let minWidth = Number.MAX_VALUE; + let minHeight = Number.MAX_VALUE; + let maxNumWide = 0; + let maxNumHigh = 0; + const sizePerComponent = new Array(componentsCount); + for (let c = 0; c < componentsCount; c++) { + const component = tile.components[c]; + const decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount; + const sizePerResolution = new Array(decompositionLevelsCount + 1); + let minWidthCurrentComponent = Number.MAX_VALUE; + let minHeightCurrentComponent = Number.MAX_VALUE; + let maxNumWideCurrentComponent = 0; + let maxNumHighCurrentComponent = 0; + let scale = 1; + for (let r = decompositionLevelsCount; r >= 0; --r) { + const resolution = component.resolutions[r]; + const widthCurrentResolution = scale * resolution.precinctParameters.precinctWidth; + const heightCurrentResolution = scale * resolution.precinctParameters.precinctHeight; + minWidthCurrentComponent = Math.min(minWidthCurrentComponent, widthCurrentResolution); + minHeightCurrentComponent = Math.min(minHeightCurrentComponent, heightCurrentResolution); + maxNumWideCurrentComponent = Math.max(maxNumWideCurrentComponent, resolution.precinctParameters.numprecinctswide); + maxNumHighCurrentComponent = Math.max(maxNumHighCurrentComponent, resolution.precinctParameters.numprecinctshigh); + sizePerResolution[r] = { + width: widthCurrentResolution, + height: heightCurrentResolution + }; + scale <<= 1; + } + minWidth = Math.min(minWidth, minWidthCurrentComponent); + minHeight = Math.min(minHeight, minHeightCurrentComponent); + maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent); + maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent); + sizePerComponent[c] = { + resolutions: sizePerResolution, + minWidth: minWidthCurrentComponent, + minHeight: minHeightCurrentComponent, + maxNumWide: maxNumWideCurrentComponent, + maxNumHigh: maxNumHighCurrentComponent + }; + } + return { + components: sizePerComponent, + minWidth, + minHeight, + maxNumWide, + maxNumHigh + }; +} +function buildPackets(context) { + const siz = context.SIZ; + const tileIndex = context.currentTile.index; + const tile = context.tiles[tileIndex]; + const componentsCount = siz.Csiz; + for (let c = 0; c < componentsCount; c++) { + const component = tile.components[c]; + const decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount; + const resolutions = []; + const subbands = []; + for (let r = 0; r <= decompositionLevelsCount; r++) { + const blocksDimensions = getBlocksDimensions(context, component, r); + const resolution = {}; + const scale = 1 << decompositionLevelsCount - r; + resolution.trx0 = Math.ceil(component.tcx0 / scale); + resolution.try0 = Math.ceil(component.tcy0 / scale); + resolution.trx1 = Math.ceil(component.tcx1 / scale); + resolution.try1 = Math.ceil(component.tcy1 / scale); + resolution.resLevel = r; + buildPrecincts(context, resolution, blocksDimensions); + resolutions.push(resolution); + let subband; + if (r === 0) { + subband = {}; + subband.type = "LL"; + subband.tbx0 = Math.ceil(component.tcx0 / scale); + subband.tby0 = Math.ceil(component.tcy0 / scale); + subband.tbx1 = Math.ceil(component.tcx1 / scale); + subband.tby1 = Math.ceil(component.tcy1 / scale); + subband.resolution = resolution; + buildCodeblocks(context, subband, blocksDimensions); + subbands.push(subband); + resolution.subbands = [subband]; + } else { + const bscale = 1 << decompositionLevelsCount - r + 1; + const resolutionSubbands = []; + subband = {}; + subband.type = "HL"; + subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5); + subband.tby0 = Math.ceil(component.tcy0 / bscale); + subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5); + subband.tby1 = Math.ceil(component.tcy1 / bscale); + subband.resolution = resolution; + buildCodeblocks(context, subband, blocksDimensions); + subbands.push(subband); + resolutionSubbands.push(subband); + subband = {}; + subband.type = "LH"; + subband.tbx0 = Math.ceil(component.tcx0 / bscale); + subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5); + subband.tbx1 = Math.ceil(component.tcx1 / bscale); + subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5); + subband.resolution = resolution; + buildCodeblocks(context, subband, blocksDimensions); + subbands.push(subband); + resolutionSubbands.push(subband); + subband = {}; + subband.type = "HH"; + subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5); + subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5); + subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5); + subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5); + subband.resolution = resolution; + buildCodeblocks(context, subband, blocksDimensions); + subbands.push(subband); + resolutionSubbands.push(subband); + resolution.subbands = resolutionSubbands; + } + } + component.resolutions = resolutions; + component.subbands = subbands; + } + const progressionOrder = tile.codingStyleDefaultParameters.progressionOrder; + switch (progressionOrder) { + case 0: + tile.packetsIterator = new LayerResolutionComponentPositionIterator(context); + break; + case 1: + tile.packetsIterator = new ResolutionLayerComponentPositionIterator(context); + break; + case 2: + tile.packetsIterator = new ResolutionPositionComponentLayerIterator(context); + break; + case 3: + tile.packetsIterator = new PositionComponentResolutionLayerIterator(context); + break; + case 4: + tile.packetsIterator = new ComponentPositionResolutionLayerIterator(context); + break; + default: + throw new JpxError(`Unsupported progression order ${progressionOrder}`); + } +} +function parseTilePackets(context, data, offset, dataLength) { + let position = 0; + let buffer, + bufferSize = 0, + skipNextBit = false; + function readBits(count) { + while (bufferSize < count) { + const b = data[offset + position]; + position++; + if (skipNextBit) { + buffer = buffer << 7 | b; + bufferSize += 7; + skipNextBit = false; + } else { + buffer = buffer << 8 | b; + bufferSize += 8; + } + if (b === 0xff) { + skipNextBit = true; + } + } + bufferSize -= count; + return buffer >>> bufferSize & (1 << count) - 1; + } + function skipMarkerIfEqual(value) { + if (data[offset + position - 1] === 0xff && data[offset + position] === value) { + skipBytes(1); + return true; + } else if (data[offset + position] === 0xff && data[offset + position + 1] === value) { + skipBytes(2); + return true; + } + return false; + } + function skipBytes(count) { + position += count; + } + function alignToByte() { + bufferSize = 0; + if (skipNextBit) { + position++; + skipNextBit = false; + } + } + function readCodingpasses() { + if (readBits(1) === 0) { + return 1; + } + if (readBits(1) === 0) { + return 2; + } + let value = readBits(2); + if (value < 3) { + return value + 3; + } + value = readBits(5); + if (value < 31) { + return value + 6; + } + value = readBits(7); + return value + 37; + } + const tileIndex = context.currentTile.index; + const tile = context.tiles[tileIndex]; + const sopMarkerUsed = context.COD.sopMarkerUsed; + const ephMarkerUsed = context.COD.ephMarkerUsed; + const packetsIterator = tile.packetsIterator; + while (position < dataLength) { + alignToByte(); + if (sopMarkerUsed && skipMarkerIfEqual(0x91)) { + skipBytes(4); + } + const packet = packetsIterator.nextPacket(); + if (!readBits(1)) { + continue; + } + const layerNumber = packet.layerNumber, + queue = []; + let codeblock; + for (let i = 0, ii = packet.codeblocks.length; i < ii; i++) { + codeblock = packet.codeblocks[i]; + let precinct = codeblock.precinct; + const codeblockColumn = codeblock.cbx - precinct.cbxMin; + const codeblockRow = codeblock.cby - precinct.cbyMin; + let codeblockIncluded = false; + let firstTimeInclusion = false; + let valueReady, zeroBitPlanesTree; + if (codeblock.included !== undefined) { + codeblockIncluded = !!readBits(1); + } else { + precinct = codeblock.precinct; + let inclusionTree; + if (precinct.inclusionTree !== undefined) { + inclusionTree = precinct.inclusionTree; + } else { + const width = precinct.cbxMax - precinct.cbxMin + 1; + const height = precinct.cbyMax - precinct.cbyMin + 1; + inclusionTree = new InclusionTree(width, height, layerNumber); + zeroBitPlanesTree = new TagTree(width, height); + precinct.inclusionTree = inclusionTree; + precinct.zeroBitPlanesTree = zeroBitPlanesTree; + for (let l = 0; l < layerNumber; l++) { + if (readBits(1) !== 0) { + throw new JpxError("Invalid tag tree"); + } + } + } + if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) { + while (true) { + if (readBits(1)) { + valueReady = !inclusionTree.nextLevel(); + if (valueReady) { + codeblock.included = true; + codeblockIncluded = firstTimeInclusion = true; + break; + } + } else { + inclusionTree.incrementValue(layerNumber); + break; + } + } + } + } + if (!codeblockIncluded) { + continue; + } + if (firstTimeInclusion) { + zeroBitPlanesTree = precinct.zeroBitPlanesTree; + zeroBitPlanesTree.reset(codeblockColumn, codeblockRow); + while (true) { + if (readBits(1)) { + valueReady = !zeroBitPlanesTree.nextLevel(); + if (valueReady) { + break; + } + } else { + zeroBitPlanesTree.incrementValue(); + } + } + codeblock.zeroBitPlanes = zeroBitPlanesTree.value; + } + const codingpasses = readCodingpasses(); + while (readBits(1)) { + codeblock.Lblock++; + } + const codingpassesLog2 = (0, _core_utils.log2)(codingpasses); + const bits = (codingpasses < 1 << codingpassesLog2 ? codingpassesLog2 - 1 : codingpassesLog2) + codeblock.Lblock; + const codedDataLength = readBits(bits); + queue.push({ + codeblock, + codingpasses, + dataLength: codedDataLength + }); + } + alignToByte(); + if (ephMarkerUsed) { + skipMarkerIfEqual(0x92); + } + while (queue.length > 0) { + const packetItem = queue.shift(); + codeblock = packetItem.codeblock; + if (codeblock.data === undefined) { + codeblock.data = []; + } + codeblock.data.push({ + data, + start: offset + position, + end: offset + position + packetItem.dataLength, + codingpasses: packetItem.codingpasses + }); + position += packetItem.dataLength; + } + } + return position; +} +function copyCoefficients(coefficients, levelWidth, levelHeight, subband, delta, mb, reversible, segmentationSymbolUsed, resetContextProbabilities) { + const x0 = subband.tbx0; + const y0 = subband.tby0; + const width = subband.tbx1 - subband.tbx0; + const codeblocks = subband.codeblocks; + const right = subband.type.charAt(0) === "H" ? 1 : 0; + const bottom = subband.type.charAt(1) === "H" ? levelWidth : 0; + for (let i = 0, ii = codeblocks.length; i < ii; ++i) { + const codeblock = codeblocks[i]; + const blockWidth = codeblock.tbx1_ - codeblock.tbx0_; + const blockHeight = codeblock.tby1_ - codeblock.tby0_; + if (blockWidth === 0 || blockHeight === 0) { + continue; + } + if (codeblock.data === undefined) { + continue; + } + const bitModel = new BitModel(blockWidth, blockHeight, codeblock.subbandType, codeblock.zeroBitPlanes, mb); + let currentCodingpassType = 2; + const data = codeblock.data; + let totalLength = 0, + codingpasses = 0; + let j, jj, dataItem; + for (j = 0, jj = data.length; j < jj; j++) { + dataItem = data[j]; + totalLength += dataItem.end - dataItem.start; + codingpasses += dataItem.codingpasses; + } + const encodedData = new Uint8Array(totalLength); + let position = 0; + for (j = 0, jj = data.length; j < jj; j++) { + dataItem = data[j]; + const chunk = dataItem.data.subarray(dataItem.start, dataItem.end); + encodedData.set(chunk, position); + position += chunk.length; + } + const decoder = new _arithmetic_decoder.ArithmeticDecoder(encodedData, 0, totalLength); + bitModel.setDecoder(decoder); + for (j = 0; j < codingpasses; j++) { + switch (currentCodingpassType) { + case 0: + bitModel.runSignificancePropagationPass(); + break; + case 1: + bitModel.runMagnitudeRefinementPass(); + break; + case 2: + bitModel.runCleanupPass(); + if (segmentationSymbolUsed) { + bitModel.checkSegmentationSymbol(); + } + break; + } + if (resetContextProbabilities) { + bitModel.reset(); + } + currentCodingpassType = (currentCodingpassType + 1) % 3; + } + let offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width; + const sign = bitModel.coefficentsSign; + const magnitude = bitModel.coefficentsMagnitude; + const bitsDecoded = bitModel.bitsDecoded; + const magnitudeCorrection = reversible ? 0 : 0.5; + let k, n, nb; + position = 0; + const interleave = subband.type !== "LL"; + for (j = 0; j < blockHeight; j++) { + const row = offset / width | 0; + const levelOffset = 2 * row * (levelWidth - width) + right + bottom; + for (k = 0; k < blockWidth; k++) { + n = magnitude[position]; + if (n !== 0) { + n = (n + magnitudeCorrection) * delta; + if (sign[position] !== 0) { + n = -n; + } + nb = bitsDecoded[position]; + const pos = interleave ? levelOffset + (offset << 1) : offset; + if (reversible && nb >= mb) { + coefficients[pos] = n; + } else { + coefficients[pos] = n * (1 << mb - nb); + } + } + offset++; + position++; + } + offset += width - blockWidth; + } + } +} +function transformTile(context, tile, c) { + const component = tile.components[c]; + const codingStyleParameters = component.codingStyleParameters; + const quantizationParameters = component.quantizationParameters; + const decompositionLevelsCount = codingStyleParameters.decompositionLevelsCount; + const spqcds = quantizationParameters.SPqcds; + const scalarExpounded = quantizationParameters.scalarExpounded; + const guardBits = quantizationParameters.guardBits; + const segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed; + const resetContextProbabilities = codingStyleParameters.resetContextProbabilities; + const precision = context.components[c].precision; + const reversible = codingStyleParameters.reversibleTransformation; + const transform = reversible ? new ReversibleTransform() : new IrreversibleTransform(); + const subbandCoefficients = []; + let b = 0; + for (let i = 0; i <= decompositionLevelsCount; i++) { + const resolution = component.resolutions[i]; + const width = resolution.trx1 - resolution.trx0; + const height = resolution.try1 - resolution.try0; + const coefficients = new Float32Array(width * height); + for (let j = 0, jj = resolution.subbands.length; j < jj; j++) { + let mu, epsilon; + if (!scalarExpounded) { + mu = spqcds[0].mu; + epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0); + } else { + mu = spqcds[b].mu; + epsilon = spqcds[b].epsilon; + b++; + } + const subband = resolution.subbands[j]; + const gainLog2 = SubbandsGainLog2[subband.type]; + const delta = reversible ? 1 : 2 ** (precision + gainLog2 - epsilon) * (1 + mu / 2048); + const mb = guardBits + epsilon - 1; + copyCoefficients(coefficients, width, height, subband, delta, mb, reversible, segmentationSymbolUsed, resetContextProbabilities); + } + subbandCoefficients.push({ + width, + height, + items: coefficients + }); + } + const result = transform.calculate(subbandCoefficients, component.tcx0, component.tcy0); + return { + left: component.tcx0, + top: component.tcy0, + width: result.width, + height: result.height, + items: result.items + }; +} +function transformComponents(context) { + const siz = context.SIZ; + const components = context.components; + const componentsCount = siz.Csiz; + const resultImages = []; + for (let i = 0, ii = context.tiles.length; i < ii; i++) { + const tile = context.tiles[i]; + const transformedTiles = []; + for (let c = 0; c < componentsCount; c++) { + transformedTiles[c] = transformTile(context, tile, c); + } + const tile0 = transformedTiles[0]; + const out = new Uint8ClampedArray(tile0.items.length * componentsCount); + const result = { + left: tile0.left, + top: tile0.top, + width: tile0.width, + height: tile0.height, + items: out + }; + let shift, offset; + let pos = 0, + j, + jj, + y0, + y1, + y2; + if (tile.codingStyleDefaultParameters.multipleComponentTransform) { + const fourComponents = componentsCount === 4; + const y0items = transformedTiles[0].items; + const y1items = transformedTiles[1].items; + const y2items = transformedTiles[2].items; + const y3items = fourComponents ? transformedTiles[3].items : null; + shift = components[0].precision - 8; + offset = (128 << shift) + 0.5; + const component0 = tile.components[0]; + const alpha01 = componentsCount - 3; + jj = y0items.length; + if (!component0.codingStyleParameters.reversibleTransformation) { + for (j = 0; j < jj; j++, pos += alpha01) { + y0 = y0items[j] + offset; + y1 = y1items[j]; + y2 = y2items[j]; + out[pos++] = y0 + 1.402 * y2 >> shift; + out[pos++] = y0 - 0.34413 * y1 - 0.71414 * y2 >> shift; + out[pos++] = y0 + 1.772 * y1 >> shift; + } + } else { + for (j = 0; j < jj; j++, pos += alpha01) { + y0 = y0items[j] + offset; + y1 = y1items[j]; + y2 = y2items[j]; + const g = y0 - (y2 + y1 >> 2); + out[pos++] = g + y2 >> shift; + out[pos++] = g >> shift; + out[pos++] = g + y1 >> shift; + } + } + if (fourComponents) { + for (j = 0, pos = 3; j < jj; j++, pos += 4) { + out[pos] = y3items[j] + offset >> shift; + } + } + } else { + for (let c = 0; c < componentsCount; c++) { + const items = transformedTiles[c].items; + shift = components[c].precision - 8; + offset = (128 << shift) + 0.5; + for (pos = c, j = 0, jj = items.length; j < jj; j++) { + out[pos] = items[j] + offset >> shift; + pos += componentsCount; + } + } + } + resultImages.push(result); + } + return resultImages; +} +function initializeTile(context, tileIndex) { + const siz = context.SIZ; + const componentsCount = siz.Csiz; + const tile = context.tiles[tileIndex]; + for (let c = 0; c < componentsCount; c++) { + const component = tile.components[c]; + const qcdOrQcc = context.currentTile.QCC[c] !== undefined ? context.currentTile.QCC[c] : context.currentTile.QCD; + component.quantizationParameters = qcdOrQcc; + const codOrCoc = context.currentTile.COC[c] !== undefined ? context.currentTile.COC[c] : context.currentTile.COD; + component.codingStyleParameters = codOrCoc; + } + tile.codingStyleDefaultParameters = context.currentTile.COD; +} +class TagTree { + constructor(width, height) { + const levelsLength = (0, _core_utils.log2)(Math.max(width, height)) + 1; + this.levels = []; + for (let i = 0; i < levelsLength; i++) { + const level = { + width, + height, + items: [] + }; + this.levels.push(level); + width = Math.ceil(width / 2); + height = Math.ceil(height / 2); + } + } + reset(i, j) { + let currentLevel = 0, + value = 0, + level; + while (currentLevel < this.levels.length) { + level = this.levels[currentLevel]; + const index = i + j * level.width; + if (level.items[index] !== undefined) { + value = level.items[index]; + break; + } + level.index = index; + i >>= 1; + j >>= 1; + currentLevel++; + } + currentLevel--; + level = this.levels[currentLevel]; + level.items[level.index] = value; + this.currentLevel = currentLevel; + delete this.value; + } + incrementValue() { + const level = this.levels[this.currentLevel]; + level.items[level.index]++; + } + nextLevel() { + let currentLevel = this.currentLevel; + let level = this.levels[currentLevel]; + const value = level.items[level.index]; + currentLevel--; + if (currentLevel < 0) { + this.value = value; + return false; + } + this.currentLevel = currentLevel; + level = this.levels[currentLevel]; + level.items[level.index] = value; + return true; + } +} +class InclusionTree { + constructor(width, height, defaultValue) { + const levelsLength = (0, _core_utils.log2)(Math.max(width, height)) + 1; + this.levels = []; + for (let i = 0; i < levelsLength; i++) { + const items = new Uint8Array(width * height); + for (let j = 0, jj = items.length; j < jj; j++) { + items[j] = defaultValue; + } + const level = { + width, + height, + items + }; + this.levels.push(level); + width = Math.ceil(width / 2); + height = Math.ceil(height / 2); + } + } + reset(i, j, stopValue) { + let currentLevel = 0; + while (currentLevel < this.levels.length) { + const level = this.levels[currentLevel]; + const index = i + j * level.width; + level.index = index; + const value = level.items[index]; + if (value === 0xff) { + break; + } + if (value > stopValue) { + this.currentLevel = currentLevel; + this.propagateValues(); + return false; + } + i >>= 1; + j >>= 1; + currentLevel++; + } + this.currentLevel = currentLevel - 1; + return true; + } + incrementValue(stopValue) { + const level = this.levels[this.currentLevel]; + level.items[level.index] = stopValue + 1; + this.propagateValues(); + } + propagateValues() { + let levelIndex = this.currentLevel; + let level = this.levels[levelIndex]; + const currentValue = level.items[level.index]; + while (--levelIndex >= 0) { + level = this.levels[levelIndex]; + level.items[level.index] = currentValue; + } + } + nextLevel() { + let currentLevel = this.currentLevel; + let level = this.levels[currentLevel]; + const value = level.items[level.index]; + level.items[level.index] = 0xff; + currentLevel--; + if (currentLevel < 0) { + return false; + } + this.currentLevel = currentLevel; + level = this.levels[currentLevel]; + level.items[level.index] = value; + return true; + } +} +class BitModel { + static UNIFORM_CONTEXT = 17; + static RUNLENGTH_CONTEXT = 18; + static LLAndLHContextsLabel = new Uint8Array([0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8]); + static HLContextLabel = new Uint8Array([0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8]); + static HHContextLabel = new Uint8Array([0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5, 5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8]); + constructor(width, height, subband, zeroBitPlanes, mb) { + this.width = width; + this.height = height; + let contextLabelTable; + if (subband === "HH") { + contextLabelTable = BitModel.HHContextLabel; + } else if (subband === "HL") { + contextLabelTable = BitModel.HLContextLabel; + } else { + contextLabelTable = BitModel.LLAndLHContextsLabel; + } + this.contextLabelTable = contextLabelTable; + const coefficientCount = width * height; + this.neighborsSignificance = new Uint8Array(coefficientCount); + this.coefficentsSign = new Uint8Array(coefficientCount); + let coefficentsMagnitude; + if (mb > 14) { + coefficentsMagnitude = new Uint32Array(coefficientCount); + } else if (mb > 6) { + coefficentsMagnitude = new Uint16Array(coefficientCount); + } else { + coefficentsMagnitude = new Uint8Array(coefficientCount); + } + this.coefficentsMagnitude = coefficentsMagnitude; + this.processingFlags = new Uint8Array(coefficientCount); + const bitsDecoded = new Uint8Array(coefficientCount); + if (zeroBitPlanes !== 0) { + for (let i = 0; i < coefficientCount; i++) { + bitsDecoded[i] = zeroBitPlanes; + } + } + this.bitsDecoded = bitsDecoded; + this.reset(); + } + setDecoder(decoder) { + this.decoder = decoder; + } + reset() { + this.contexts = new Int8Array(19); + this.contexts[0] = 4 << 1 | 0; + this.contexts[BitModel.UNIFORM_CONTEXT] = 46 << 1 | 0; + this.contexts[BitModel.RUNLENGTH_CONTEXT] = 3 << 1 | 0; + } + setNeighborsSignificance(row, column, index) { + const neighborsSignificance = this.neighborsSignificance; + const width = this.width, + height = this.height; + const left = column > 0; + const right = column + 1 < width; + let i; + if (row > 0) { + i = index - width; + if (left) { + neighborsSignificance[i - 1] += 0x10; + } + if (right) { + neighborsSignificance[i + 1] += 0x10; + } + neighborsSignificance[i] += 0x04; + } + if (row + 1 < height) { + i = index + width; + if (left) { + neighborsSignificance[i - 1] += 0x10; + } + if (right) { + neighborsSignificance[i + 1] += 0x10; + } + neighborsSignificance[i] += 0x04; + } + if (left) { + neighborsSignificance[index - 1] += 0x01; + } + if (right) { + neighborsSignificance[index + 1] += 0x01; + } + neighborsSignificance[index] |= 0x80; + } + runSignificancePropagationPass() { + const decoder = this.decoder; + const width = this.width, + height = this.height; + const coefficentsMagnitude = this.coefficentsMagnitude; + const coefficentsSign = this.coefficentsSign; + const neighborsSignificance = this.neighborsSignificance; + const processingFlags = this.processingFlags; + const contexts = this.contexts; + const labels = this.contextLabelTable; + const bitsDecoded = this.bitsDecoded; + const processedInverseMask = ~1; + const processedMask = 1; + const firstMagnitudeBitMask = 2; + for (let i0 = 0; i0 < height; i0 += 4) { + for (let j = 0; j < width; j++) { + let index = i0 * width + j; + for (let i1 = 0; i1 < 4; i1++, index += width) { + const i = i0 + i1; + if (i >= height) { + break; + } + processingFlags[index] &= processedInverseMask; + if (coefficentsMagnitude[index] || !neighborsSignificance[index]) { + continue; + } + const contextLabel = labels[neighborsSignificance[index]]; + const decision = decoder.readBit(contexts, contextLabel); + if (decision) { + const sign = this.decodeSignBit(i, j, index); + coefficentsSign[index] = sign; + coefficentsMagnitude[index] = 1; + this.setNeighborsSignificance(i, j, index); + processingFlags[index] |= firstMagnitudeBitMask; + } + bitsDecoded[index]++; + processingFlags[index] |= processedMask; + } + } + } + } + decodeSignBit(row, column, index) { + const width = this.width, + height = this.height; + const coefficentsMagnitude = this.coefficentsMagnitude; + const coefficentsSign = this.coefficentsSign; + let contribution, sign0, sign1, significance1; + let contextLabel, decoded; + significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0; + if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) { + sign1 = coefficentsSign[index + 1]; + if (significance1) { + sign0 = coefficentsSign[index - 1]; + contribution = 1 - sign1 - sign0; + } else { + contribution = 1 - sign1 - sign1; + } + } else if (significance1) { + sign0 = coefficentsSign[index - 1]; + contribution = 1 - sign0 - sign0; + } else { + contribution = 0; + } + const horizontalContribution = 3 * contribution; + significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0; + if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) { + sign1 = coefficentsSign[index + width]; + if (significance1) { + sign0 = coefficentsSign[index - width]; + contribution = 1 - sign1 - sign0 + horizontalContribution; + } else { + contribution = 1 - sign1 - sign1 + horizontalContribution; + } + } else if (significance1) { + sign0 = coefficentsSign[index - width]; + contribution = 1 - sign0 - sign0 + horizontalContribution; + } else { + contribution = horizontalContribution; + } + if (contribution >= 0) { + contextLabel = 9 + contribution; + decoded = this.decoder.readBit(this.contexts, contextLabel); + } else { + contextLabel = 9 - contribution; + decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1; + } + return decoded; + } + runMagnitudeRefinementPass() { + const decoder = this.decoder; + const width = this.width, + height = this.height; + const coefficentsMagnitude = this.coefficentsMagnitude; + const neighborsSignificance = this.neighborsSignificance; + const contexts = this.contexts; + const bitsDecoded = this.bitsDecoded; + const processingFlags = this.processingFlags; + const processedMask = 1; + const firstMagnitudeBitMask = 2; + const length = width * height; + const width4 = width * 4; + for (let index0 = 0, indexNext; index0 < length; index0 = indexNext) { + indexNext = Math.min(length, index0 + width4); + for (let j = 0; j < width; j++) { + for (let index = index0 + j; index < indexNext; index += width) { + if (!coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) { + continue; + } + let contextLabel = 16; + if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) { + processingFlags[index] ^= firstMagnitudeBitMask; + const significance = neighborsSignificance[index] & 127; + contextLabel = significance === 0 ? 15 : 14; + } + const bit = decoder.readBit(contexts, contextLabel); + coefficentsMagnitude[index] = coefficentsMagnitude[index] << 1 | bit; + bitsDecoded[index]++; + processingFlags[index] |= processedMask; + } + } + } + } + runCleanupPass() { + const decoder = this.decoder; + const width = this.width, + height = this.height; + const neighborsSignificance = this.neighborsSignificance; + const coefficentsMagnitude = this.coefficentsMagnitude; + const coefficentsSign = this.coefficentsSign; + const contexts = this.contexts; + const labels = this.contextLabelTable; + const bitsDecoded = this.bitsDecoded; + const processingFlags = this.processingFlags; + const processedMask = 1; + const firstMagnitudeBitMask = 2; + const oneRowDown = width; + const twoRowsDown = width * 2; + const threeRowsDown = width * 3; + let iNext; + for (let i0 = 0; i0 < height; i0 = iNext) { + iNext = Math.min(i0 + 4, height); + const indexBase = i0 * width; + const checkAllEmpty = i0 + 3 < height; + for (let j = 0; j < width; j++) { + const index0 = indexBase + j; + const allEmpty = checkAllEmpty && processingFlags[index0] === 0 && processingFlags[index0 + oneRowDown] === 0 && processingFlags[index0 + twoRowsDown] === 0 && processingFlags[index0 + threeRowsDown] === 0 && neighborsSignificance[index0] === 0 && neighborsSignificance[index0 + oneRowDown] === 0 && neighborsSignificance[index0 + twoRowsDown] === 0 && neighborsSignificance[index0 + threeRowsDown] === 0; + let i1 = 0, + index = index0; + let i = i0, + sign; + if (allEmpty) { + const hasSignificantCoefficent = decoder.readBit(contexts, BitModel.RUNLENGTH_CONTEXT); + if (!hasSignificantCoefficent) { + bitsDecoded[index0]++; + bitsDecoded[index0 + oneRowDown]++; + bitsDecoded[index0 + twoRowsDown]++; + bitsDecoded[index0 + threeRowsDown]++; + continue; + } + i1 = decoder.readBit(contexts, BitModel.UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, BitModel.UNIFORM_CONTEXT); + if (i1 !== 0) { + i = i0 + i1; + index += i1 * width; + } + sign = this.decodeSignBit(i, j, index); + coefficentsSign[index] = sign; + coefficentsMagnitude[index] = 1; + this.setNeighborsSignificance(i, j, index); + processingFlags[index] |= firstMagnitudeBitMask; + index = index0; + for (let i2 = i0; i2 <= i; i2++, index += width) { + bitsDecoded[index]++; + } + i1++; + } + for (i = i0 + i1; i < iNext; i++, index += width) { + if (coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) { + continue; + } + const contextLabel = labels[neighborsSignificance[index]]; + const decision = decoder.readBit(contexts, contextLabel); + if (decision === 1) { + sign = this.decodeSignBit(i, j, index); + coefficentsSign[index] = sign; + coefficentsMagnitude[index] = 1; + this.setNeighborsSignificance(i, j, index); + processingFlags[index] |= firstMagnitudeBitMask; + } + bitsDecoded[index]++; + } + } + } + } + checkSegmentationSymbol() { + const decoder = this.decoder; + const contexts = this.contexts; + const symbol = decoder.readBit(contexts, BitModel.UNIFORM_CONTEXT) << 3 | decoder.readBit(contexts, BitModel.UNIFORM_CONTEXT) << 2 | decoder.readBit(contexts, BitModel.UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, BitModel.UNIFORM_CONTEXT); + if (symbol !== 0xa) { + throw new JpxError("Invalid segmentation symbol"); + } + } +} +class Transform { + constructor() { + if (this.constructor === Transform) { + (0, _util.unreachable)("Cannot initialize Transform."); + } + } + calculate(subbands, u0, v0) { + let ll = subbands[0]; + for (let i = 1, ii = subbands.length; i < ii; i++) { + ll = this.iterate(ll, subbands[i], u0, v0); + } + return ll; + } + extend(buffer, offset, size) { + let i1 = offset - 1, + j1 = offset + 1; + let i2 = offset + size - 2, + j2 = offset + size; + buffer[i1--] = buffer[j1++]; + buffer[j2++] = buffer[i2--]; + buffer[i1--] = buffer[j1++]; + buffer[j2++] = buffer[i2--]; + buffer[i1--] = buffer[j1++]; + buffer[j2++] = buffer[i2--]; + buffer[i1] = buffer[j1]; + buffer[j2] = buffer[i2]; + } + filter(x, offset, length) { + (0, _util.unreachable)("Abstract method `filter` called"); + } + iterate(ll, hl_lh_hh, u0, v0) { + const llWidth = ll.width, + llHeight = ll.height; + let llItems = ll.items; + const width = hl_lh_hh.width; + const height = hl_lh_hh.height; + const items = hl_lh_hh.items; + let i, j, k, l, u, v; + for (k = 0, i = 0; i < llHeight; i++) { + l = i * 2 * width; + for (j = 0; j < llWidth; j++, k++, l += 2) { + items[l] = llItems[k]; + } + } + llItems = ll.items = null; + const bufferPadding = 4; + const rowBuffer = new Float32Array(width + 2 * bufferPadding); + if (width === 1) { + if ((u0 & 1) !== 0) { + for (v = 0, k = 0; v < height; v++, k += width) { + items[k] *= 0.5; + } + } + } else { + for (v = 0, k = 0; v < height; v++, k += width) { + rowBuffer.set(items.subarray(k, k + width), bufferPadding); + this.extend(rowBuffer, bufferPadding, width); + this.filter(rowBuffer, bufferPadding, width); + items.set(rowBuffer.subarray(bufferPadding, bufferPadding + width), k); + } + } + let numBuffers = 16; + const colBuffers = []; + for (i = 0; i < numBuffers; i++) { + colBuffers.push(new Float32Array(height + 2 * bufferPadding)); + } + let b, + currentBuffer = 0; + ll = bufferPadding + height; + if (height === 1) { + if ((v0 & 1) !== 0) { + for (u = 0; u < width; u++) { + items[u] *= 0.5; + } + } + } else { + for (u = 0; u < width; u++) { + if (currentBuffer === 0) { + numBuffers = Math.min(width - u, numBuffers); + for (k = u, l = bufferPadding; l < ll; k += width, l++) { + for (b = 0; b < numBuffers; b++) { + colBuffers[b][l] = items[k + b]; + } + } + currentBuffer = numBuffers; + } + currentBuffer--; + const buffer = colBuffers[currentBuffer]; + this.extend(buffer, bufferPadding, height); + this.filter(buffer, bufferPadding, height); + if (currentBuffer === 0) { + k = u - numBuffers + 1; + for (l = bufferPadding; l < ll; k += width, l++) { + for (b = 0; b < numBuffers; b++) { + items[k + b] = colBuffers[b][l]; + } + } + } + } + } + return { + width, + height, + items + }; + } +} +class IrreversibleTransform extends Transform { + filter(x, offset, length) { + const len = length >> 1; + offset |= 0; + let j, n, current, next; + const alpha = -1.586134342059924; + const beta = -0.052980118572961; + const gamma = 0.882911075530934; + const delta = 0.443506852043971; + const K = 1.230174104914001; + const K_ = 1 / K; + j = offset - 3; + for (n = len + 4; n--; j += 2) { + x[j] *= K_; + } + j = offset - 2; + current = delta * x[j - 1]; + for (n = len + 3; n--; j += 2) { + next = delta * x[j + 1]; + x[j] = K * x[j] - current - next; + if (n--) { + j += 2; + current = delta * x[j + 1]; + x[j] = K * x[j] - current - next; + } else { + break; + } + } + j = offset - 1; + current = gamma * x[j - 1]; + for (n = len + 2; n--; j += 2) { + next = gamma * x[j + 1]; + x[j] -= current + next; + if (n--) { + j += 2; + current = gamma * x[j + 1]; + x[j] -= current + next; + } else { + break; + } + } + j = offset; + current = beta * x[j - 1]; + for (n = len + 1; n--; j += 2) { + next = beta * x[j + 1]; + x[j] -= current + next; + if (n--) { + j += 2; + current = beta * x[j + 1]; + x[j] -= current + next; + } else { + break; + } + } + if (len !== 0) { + j = offset + 1; + current = alpha * x[j - 1]; + for (n = len; n--; j += 2) { + next = alpha * x[j + 1]; + x[j] -= current + next; + if (n--) { + j += 2; + current = alpha * x[j + 1]; + x[j] -= current + next; + } else { + break; + } + } + } + } +} +class ReversibleTransform extends Transform { + filter(x, offset, length) { + const len = length >> 1; + offset |= 0; + let j, n; + for (j = offset, n = len + 1; n--; j += 2) { + x[j] -= x[j - 1] + x[j + 1] + 2 >> 2; + } + for (j = offset + 1, n = len; n--; j += 2) { + x[j] += x[j - 1] + x[j + 1] >> 1; + } + } +} + +/***/ }), +/* 31 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.LZWStream = void 0; +var _decode_stream = __w_pdfjs_require__(18); +class LZWStream extends _decode_stream.DecodeStream { + constructor(str, maybeLength, earlyChange) { + super(maybeLength); + this.str = str; + this.dict = str.dict; + this.cachedData = 0; + this.bitsCached = 0; + const maxLzwDictionarySize = 4096; + const lzwState = { + earlyChange, + codeLength: 9, + nextCode: 258, + dictionaryValues: new Uint8Array(maxLzwDictionarySize), + dictionaryLengths: new Uint16Array(maxLzwDictionarySize), + dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize), + currentSequence: new Uint8Array(maxLzwDictionarySize), + currentSequenceLength: 0 + }; + for (let i = 0; i < 256; ++i) { + lzwState.dictionaryValues[i] = i; + lzwState.dictionaryLengths[i] = 1; + } + this.lzwState = lzwState; + } + readBits(n) { + let bitsCached = this.bitsCached; + let cachedData = this.cachedData; + while (bitsCached < n) { + const c = this.str.getByte(); + if (c === -1) { + this.eof = true; + return null; + } + cachedData = cachedData << 8 | c; + bitsCached += 8; + } + this.bitsCached = bitsCached -= n; + this.cachedData = cachedData; + this.lastCode = null; + return cachedData >>> bitsCached & (1 << n) - 1; + } + readBlock() { + const blockSize = 512, + decodedSizeDelta = blockSize; + let estimatedDecodedSize = blockSize * 2; + let i, j, q; + const lzwState = this.lzwState; + if (!lzwState) { + return; + } + const earlyChange = lzwState.earlyChange; + let nextCode = lzwState.nextCode; + const dictionaryValues = lzwState.dictionaryValues; + const dictionaryLengths = lzwState.dictionaryLengths; + const dictionaryPrevCodes = lzwState.dictionaryPrevCodes; + let codeLength = lzwState.codeLength; + let prevCode = lzwState.prevCode; + const currentSequence = lzwState.currentSequence; + let currentSequenceLength = lzwState.currentSequenceLength; + let decodedLength = 0; + let currentBufferLength = this.bufferLength; + let buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize); + for (i = 0; i < blockSize; i++) { + const code = this.readBits(codeLength); + const hasPrev = currentSequenceLength > 0; + if (code < 256) { + currentSequence[0] = code; + currentSequenceLength = 1; + } else if (code >= 258) { + if (code < nextCode) { + currentSequenceLength = dictionaryLengths[code]; + for (j = currentSequenceLength - 1, q = code; j >= 0; j--) { + currentSequence[j] = dictionaryValues[q]; + q = dictionaryPrevCodes[q]; + } + } else { + currentSequence[currentSequenceLength++] = currentSequence[0]; + } + } else if (code === 256) { + codeLength = 9; + nextCode = 258; + currentSequenceLength = 0; + continue; + } else { + this.eof = true; + delete this.lzwState; + break; + } + if (hasPrev) { + dictionaryPrevCodes[nextCode] = prevCode; + dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1; + dictionaryValues[nextCode] = currentSequence[0]; + nextCode++; + codeLength = nextCode + earlyChange & nextCode + earlyChange - 1 ? codeLength : Math.min(Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1, 12) | 0; + } + prevCode = code; + decodedLength += currentSequenceLength; + if (estimatedDecodedSize < decodedLength) { + do { + estimatedDecodedSize += decodedSizeDelta; + } while (estimatedDecodedSize < decodedLength); + buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize); + } + for (j = 0; j < currentSequenceLength; j++) { + buffer[currentBufferLength++] = currentSequence[j]; + } + } + lzwState.nextCode = nextCode; + lzwState.codeLength = codeLength; + lzwState.prevCode = prevCode; + lzwState.currentSequenceLength = currentSequenceLength; + this.bufferLength = currentBufferLength; + } +} +exports.LZWStream = LZWStream; + +/***/ }), +/* 32 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PredictorStream = void 0; +var _decode_stream = __w_pdfjs_require__(18); +var _primitives = __w_pdfjs_require__(4); +var _util = __w_pdfjs_require__(2); +class PredictorStream extends _decode_stream.DecodeStream { + constructor(str, maybeLength, params) { + super(maybeLength); + if (!(params instanceof _primitives.Dict)) { + return str; + } + const predictor = this.predictor = params.get("Predictor") || 1; + if (predictor <= 1) { + return str; + } + if (predictor !== 2 && (predictor < 10 || predictor > 15)) { + throw new _util.FormatError(`Unsupported predictor: ${predictor}`); + } + if (predictor === 2) { + this.readBlock = this.readBlockTiff; + } else { + this.readBlock = this.readBlockPng; + } + this.str = str; + this.dict = str.dict; + const colors = this.colors = params.get("Colors") || 1; + const bits = this.bits = params.get("BPC", "BitsPerComponent") || 8; + const columns = this.columns = params.get("Columns") || 1; + this.pixBytes = colors * bits + 7 >> 3; + this.rowBytes = columns * colors * bits + 7 >> 3; + return this; + } + readBlockTiff() { + const rowBytes = this.rowBytes; + const bufferLength = this.bufferLength; + const buffer = this.ensureBuffer(bufferLength + rowBytes); + const bits = this.bits; + const colors = this.colors; + const rawBytes = this.str.getBytes(rowBytes); + this.eof = !rawBytes.length; + if (this.eof) { + return; + } + let inbuf = 0, + outbuf = 0; + let inbits = 0, + outbits = 0; + let pos = bufferLength; + let i; + if (bits === 1 && colors === 1) { + for (i = 0; i < rowBytes; ++i) { + let c = rawBytes[i] ^ inbuf; + c ^= c >> 1; + c ^= c >> 2; + c ^= c >> 4; + inbuf = (c & 1) << 7; + buffer[pos++] = c; + } + } else if (bits === 8) { + for (i = 0; i < colors; ++i) { + buffer[pos++] = rawBytes[i]; + } + for (; i < rowBytes; ++i) { + buffer[pos] = buffer[pos - colors] + rawBytes[i]; + pos++; + } + } else if (bits === 16) { + const bytesPerPixel = colors * 2; + for (i = 0; i < bytesPerPixel; ++i) { + buffer[pos++] = rawBytes[i]; + } + for (; i < rowBytes; i += 2) { + const sum = ((rawBytes[i] & 0xff) << 8) + (rawBytes[i + 1] & 0xff) + ((buffer[pos - bytesPerPixel] & 0xff) << 8) + (buffer[pos - bytesPerPixel + 1] & 0xff); + buffer[pos++] = sum >> 8 & 0xff; + buffer[pos++] = sum & 0xff; + } + } else { + const compArray = new Uint8Array(colors + 1); + const bitMask = (1 << bits) - 1; + let j = 0, + k = bufferLength; + const columns = this.columns; + for (i = 0; i < columns; ++i) { + for (let kk = 0; kk < colors; ++kk) { + if (inbits < bits) { + inbuf = inbuf << 8 | rawBytes[j++] & 0xff; + inbits += 8; + } + compArray[kk] = compArray[kk] + (inbuf >> inbits - bits) & bitMask; + inbits -= bits; + outbuf = outbuf << bits | compArray[kk]; + outbits += bits; + if (outbits >= 8) { + buffer[k++] = outbuf >> outbits - 8 & 0xff; + outbits -= 8; + } + } + } + if (outbits > 0) { + buffer[k++] = (outbuf << 8 - outbits) + (inbuf & (1 << 8 - outbits) - 1); + } + } + this.bufferLength += rowBytes; + } + readBlockPng() { + const rowBytes = this.rowBytes; + const pixBytes = this.pixBytes; + const predictor = this.str.getByte(); + const rawBytes = this.str.getBytes(rowBytes); + this.eof = !rawBytes.length; + if (this.eof) { + return; + } + const bufferLength = this.bufferLength; + const buffer = this.ensureBuffer(bufferLength + rowBytes); + let prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength); + if (prevRow.length === 0) { + prevRow = new Uint8Array(rowBytes); + } + let i, + j = bufferLength, + up, + c; + switch (predictor) { + case 0: + for (i = 0; i < rowBytes; ++i) { + buffer[j++] = rawBytes[i]; + } + break; + case 1: + for (i = 0; i < pixBytes; ++i) { + buffer[j++] = rawBytes[i]; + } + for (; i < rowBytes; ++i) { + buffer[j] = buffer[j - pixBytes] + rawBytes[i] & 0xff; + j++; + } + break; + case 2: + for (i = 0; i < rowBytes; ++i) { + buffer[j++] = prevRow[i] + rawBytes[i] & 0xff; + } + break; + case 3: + for (i = 0; i < pixBytes; ++i) { + buffer[j++] = (prevRow[i] >> 1) + rawBytes[i]; + } + for (; i < rowBytes; ++i) { + buffer[j] = (prevRow[i] + buffer[j - pixBytes] >> 1) + rawBytes[i] & 0xff; + j++; + } + break; + case 4: + for (i = 0; i < pixBytes; ++i) { + up = prevRow[i]; + c = rawBytes[i]; + buffer[j++] = up + c; + } + for (; i < rowBytes; ++i) { + up = prevRow[i]; + const upLeft = prevRow[i - pixBytes]; + const left = buffer[j - pixBytes]; + const p = left + up - upLeft; + let pa = p - left; + if (pa < 0) { + pa = -pa; + } + let pb = p - up; + if (pb < 0) { + pb = -pb; + } + let pc = p - upLeft; + if (pc < 0) { + pc = -pc; + } + c = rawBytes[i]; + if (pa <= pb && pa <= pc) { + buffer[j++] = left + c; + } else if (pb <= pc) { + buffer[j++] = up + c; + } else { + buffer[j++] = upLeft + c; + } + } + break; + default: + throw new _util.FormatError(`Unsupported predictor: ${predictor}`); + } + this.bufferLength += rowBytes; + } +} +exports.PredictorStream = PredictorStream; + +/***/ }), +/* 33 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.RunLengthStream = void 0; +var _decode_stream = __w_pdfjs_require__(18); +class RunLengthStream extends _decode_stream.DecodeStream { + constructor(str, maybeLength) { + super(maybeLength); + this.str = str; + this.dict = str.dict; + } + readBlock() { + const repeatHeader = this.str.getBytes(2); + if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) { + this.eof = true; + return; + } + let buffer; + let bufferLength = this.bufferLength; + let n = repeatHeader[0]; + if (n < 128) { + buffer = this.ensureBuffer(bufferLength + n + 1); + buffer[bufferLength++] = repeatHeader[1]; + if (n > 0) { + const source = this.str.getBytes(n); + buffer.set(source, bufferLength); + bufferLength += n; + } + } else { + n = 257 - n; + const b = repeatHeader[1]; + buffer = this.ensureBuffer(bufferLength + n + 1); + for (let i = 0; i < n; i++) { + buffer[bufferLength++] = b; + } + } + this.bufferLength = bufferLength; + } +} +exports.RunLengthStream = RunLengthStream; + +/***/ }), +/* 34 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Font = exports.ErrorFont = void 0; +var _util = __w_pdfjs_require__(2); +var _cff_parser = __w_pdfjs_require__(35); +var _fonts_utils = __w_pdfjs_require__(38); +var _unicode = __w_pdfjs_require__(40); +var _glyphlist = __w_pdfjs_require__(39); +var _encodings = __w_pdfjs_require__(37); +var _standard_fonts = __w_pdfjs_require__(41); +var _to_unicode_map = __w_pdfjs_require__(42); +var _cff_font = __w_pdfjs_require__(43); +var _font_renderer = __w_pdfjs_require__(44); +var _metrics = __w_pdfjs_require__(45); +var _glyf = __w_pdfjs_require__(46); +var _cmap = __w_pdfjs_require__(14); +var _opentype_file_builder = __w_pdfjs_require__(47); +var _core_utils = __w_pdfjs_require__(3); +var _stream = __w_pdfjs_require__(8); +var _type1_font = __w_pdfjs_require__(48); +const PRIVATE_USE_AREAS = [[0xe000, 0xf8ff], [0x100000, 0x10fffd]]; +const PDF_GLYPH_SPACE_UNITS = 1000; +const EXPORT_DATA_PROPERTIES = ["ascent", "bbox", "black", "bold", "charProcOperatorList", "composite", "cssFontInfo", "data", "defaultVMetrics", "defaultWidth", "descent", "fallbackName", "fontMatrix", "isInvalidPDFjsFont", "isType3Font", "italic", "loadedName", "mimetype", "missingFile", "name", "remeasure", "subtype", "systemFontInfo", "type", "vertical"]; +const EXPORT_DATA_EXTRA_PROPERTIES = ["cMap", "defaultEncoding", "differences", "isMonospace", "isSerifFont", "isSymbolicFont", "seacMap", "toFontChar", "toUnicode", "vmetrics", "widths"]; +function adjustWidths(properties) { + if (!properties.fontMatrix) { + return; + } + if (properties.fontMatrix[0] === _util.FONT_IDENTITY_MATRIX[0]) { + return; + } + const scale = 0.001 / properties.fontMatrix[0]; + const glyphsWidths = properties.widths; + for (const glyph in glyphsWidths) { + glyphsWidths[glyph] *= scale; + } + properties.defaultWidth *= scale; +} +function adjustTrueTypeToUnicode(properties, isSymbolicFont, nameRecords) { + if (properties.isInternalFont) { + return; + } + if (properties.hasIncludedToUnicodeMap) { + return; + } + if (properties.hasEncoding) { + return; + } + if (properties.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap) { + return; + } + if (!isSymbolicFont) { + return; + } + if (nameRecords.length === 0) { + return; + } + if (properties.defaultEncoding === _encodings.WinAnsiEncoding) { + return; + } + for (const r of nameRecords) { + if (!isWinNameRecord(r)) { + return; + } + } + const encoding = _encodings.WinAnsiEncoding; + const toUnicode = [], + glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); + for (const charCode in encoding) { + const glyphName = encoding[charCode]; + if (glyphName === "") { + continue; + } + const unicode = glyphsUnicodeMap[glyphName]; + if (unicode === undefined) { + continue; + } + toUnicode[charCode] = String.fromCharCode(unicode); + } + if (toUnicode.length > 0) { + properties.toUnicode.amend(toUnicode); + } +} +function adjustType1ToUnicode(properties, builtInEncoding) { + if (properties.isInternalFont) { + return; + } + if (properties.hasIncludedToUnicodeMap) { + return; + } + if (builtInEncoding === properties.defaultEncoding) { + return; + } + if (properties.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap) { + return; + } + const toUnicode = [], + glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); + for (const charCode in builtInEncoding) { + if (properties.hasEncoding) { + if (properties.baseEncodingName || properties.differences[charCode] !== undefined) { + continue; + } + } + const glyphName = builtInEncoding[charCode]; + const unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap); + if (unicode !== -1) { + toUnicode[charCode] = String.fromCharCode(unicode); + } + } + if (toUnicode.length > 0) { + properties.toUnicode.amend(toUnicode); + } +} +function amendFallbackToUnicode(properties) { + if (!properties.fallbackToUnicode) { + return; + } + if (properties.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap) { + return; + } + const toUnicode = []; + for (const charCode in properties.fallbackToUnicode) { + if (properties.toUnicode.has(charCode)) { + continue; + } + toUnicode[charCode] = properties.fallbackToUnicode[charCode]; + } + if (toUnicode.length > 0) { + properties.toUnicode.amend(toUnicode); + } +} +class Glyph { + constructor(originalCharCode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) { + this.originalCharCode = originalCharCode; + this.fontChar = fontChar; + this.unicode = unicode; + this.accent = accent; + this.width = width; + this.vmetric = vmetric; + this.operatorListId = operatorListId; + this.isSpace = isSpace; + this.isInFont = isInFont; + } + get category() { + return (0, _util.shadow)(this, "category", (0, _unicode.getCharUnicodeCategory)(this.unicode), true); + } +} +function int16(b0, b1) { + return (b0 << 8) + b1; +} +function writeSignedInt16(bytes, index, value) { + bytes[index + 1] = value; + bytes[index] = value >>> 8; +} +function signedInt16(b0, b1) { + const value = (b0 << 8) + b1; + return value & 1 << 15 ? value - 0x10000 : value; +} +function int32(b0, b1, b2, b3) { + return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; +} +function string16(value) { + return String.fromCharCode(value >> 8 & 0xff, value & 0xff); +} +function safeString16(value) { + if (value > 0x7fff) { + value = 0x7fff; + } else if (value < -0x8000) { + value = -0x8000; + } + return String.fromCharCode(value >> 8 & 0xff, value & 0xff); +} +function isTrueTypeFile(file) { + const header = file.peekBytes(4); + return (0, _core_utils.readUint32)(header, 0) === 0x00010000 || (0, _util.bytesToString)(header) === "true"; +} +function isTrueTypeCollectionFile(file) { + const header = file.peekBytes(4); + return (0, _util.bytesToString)(header) === "ttcf"; +} +function isOpenTypeFile(file) { + const header = file.peekBytes(4); + return (0, _util.bytesToString)(header) === "OTTO"; +} +function isType1File(file) { + const header = file.peekBytes(2); + if (header[0] === 0x25 && header[1] === 0x21) { + return true; + } + if (header[0] === 0x80 && header[1] === 0x01) { + return true; + } + return false; +} +function isCFFFile(file) { + const header = file.peekBytes(4); + if (header[0] >= 1 && header[3] >= 1 && header[3] <= 4) { + return true; + } + return false; +} +function getFontFileType(file, { + type, + subtype, + composite +}) { + let fileType, fileSubtype; + if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) { + if (composite) { + fileType = "CIDFontType2"; + } else { + fileType = "TrueType"; + } + } else if (isOpenTypeFile(file)) { + if (composite) { + fileType = "CIDFontType2"; + } else { + fileType = "OpenType"; + } + } else if (isType1File(file)) { + if (composite) { + fileType = "CIDFontType0"; + } else { + fileType = type === "MMType1" ? "MMType1" : "Type1"; + } + } else if (isCFFFile(file)) { + if (composite) { + fileType = "CIDFontType0"; + fileSubtype = "CIDFontType0C"; + } else { + fileType = type === "MMType1" ? "MMType1" : "Type1"; + fileSubtype = "Type1C"; + } + } else { + (0, _util.warn)("getFontFileType: Unable to detect correct font file Type/Subtype."); + fileType = type; + fileSubtype = subtype; + } + return [fileType, fileSubtype]; +} +function applyStandardFontGlyphMap(map, glyphMap) { + for (const charCode in glyphMap) { + map[+charCode] = glyphMap[charCode]; + } +} +function buildToFontChar(encoding, glyphsUnicodeMap, differences) { + const toFontChar = []; + let unicode; + for (let i = 0, ii = encoding.length; i < ii; i++) { + unicode = (0, _unicode.getUnicodeForGlyph)(encoding[i], glyphsUnicodeMap); + if (unicode !== -1) { + toFontChar[i] = unicode; + } + } + for (const charCode in differences) { + unicode = (0, _unicode.getUnicodeForGlyph)(differences[charCode], glyphsUnicodeMap); + if (unicode !== -1) { + toFontChar[+charCode] = unicode; + } + } + return toFontChar; +} +function isMacNameRecord(r) { + return r.platform === 1 && r.encoding === 0 && r.language === 0; +} +function isWinNameRecord(r) { + return r.platform === 3 && r.encoding === 1 && r.language === 0x409; +} +function convertCidString(charCode, cid, shouldThrow = false) { + switch (cid.length) { + case 1: + return cid.charCodeAt(0); + case 2: + return cid.charCodeAt(0) << 8 | cid.charCodeAt(1); + } + const msg = `Unsupported CID string (charCode ${charCode}): "${cid}".`; + if (shouldThrow) { + throw new _util.FormatError(msg); + } + (0, _util.warn)(msg); + return cid; +} +function adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId, toUnicode) { + const newMap = Object.create(null); + const toUnicodeExtraMap = new Map(); + const toFontChar = []; + const usedGlyphIds = new Set(); + let privateUseAreaIndex = 0; + const privateUseOffetStart = PRIVATE_USE_AREAS[privateUseAreaIndex][0]; + let nextAvailableFontCharCode = privateUseOffetStart; + let privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1]; + const isInPrivateArea = code => PRIVATE_USE_AREAS[0][0] <= code && code <= PRIVATE_USE_AREAS[0][1] || PRIVATE_USE_AREAS[1][0] <= code && code <= PRIVATE_USE_AREAS[1][1]; + for (let originalCharCode in charCodeToGlyphId) { + originalCharCode |= 0; + let glyphId = charCodeToGlyphId[originalCharCode]; + if (!hasGlyph(glyphId)) { + continue; + } + if (nextAvailableFontCharCode > privateUseOffetEnd) { + privateUseAreaIndex++; + if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) { + (0, _util.warn)("Ran out of space in font private use area."); + break; + } + nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0]; + privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1]; + } + const fontCharCode = nextAvailableFontCharCode++; + if (glyphId === 0) { + glyphId = newGlyphZeroId; + } + let unicode = toUnicode.get(originalCharCode); + if (typeof unicode === "string") { + unicode = unicode.codePointAt(0); + } + if (unicode && !isInPrivateArea(unicode) && !usedGlyphIds.has(glyphId)) { + toUnicodeExtraMap.set(unicode, glyphId); + usedGlyphIds.add(glyphId); + } + newMap[fontCharCode] = glyphId; + toFontChar[originalCharCode] = fontCharCode; + } + return { + toFontChar, + charCodeToGlyphId: newMap, + toUnicodeExtraMap, + nextAvailableFontCharCode + }; +} +function getRanges(glyphs, toUnicodeExtraMap, numGlyphs) { + const codes = []; + for (const charCode in glyphs) { + if (glyphs[charCode] >= numGlyphs) { + continue; + } + codes.push({ + fontCharCode: charCode | 0, + glyphId: glyphs[charCode] + }); + } + if (toUnicodeExtraMap) { + for (const [unicode, glyphId] of toUnicodeExtraMap) { + if (glyphId >= numGlyphs) { + continue; + } + codes.push({ + fontCharCode: unicode, + glyphId + }); + } + } + if (codes.length === 0) { + codes.push({ + fontCharCode: 0, + glyphId: 0 + }); + } + codes.sort(function fontGetRangesSort(a, b) { + return a.fontCharCode - b.fontCharCode; + }); + const ranges = []; + const length = codes.length; + for (let n = 0; n < length;) { + const start = codes[n].fontCharCode; + const codeIndices = [codes[n].glyphId]; + ++n; + let end = start; + while (n < length && end + 1 === codes[n].fontCharCode) { + codeIndices.push(codes[n].glyphId); + ++end; + ++n; + if (end === 0xffff) { + break; + } + } + ranges.push([start, end, codeIndices]); + } + return ranges; +} +function createCmapTable(glyphs, toUnicodeExtraMap, numGlyphs) { + const ranges = getRanges(glyphs, toUnicodeExtraMap, numGlyphs); + const numTables = ranges.at(-1)[1] > 0xffff ? 2 : 1; + let cmap = "\x00\x00" + string16(numTables) + "\x00\x03" + "\x00\x01" + (0, _util.string32)(4 + numTables * 8); + let i, ii, j, jj; + for (i = ranges.length - 1; i >= 0; --i) { + if (ranges[i][0] <= 0xffff) { + break; + } + } + const bmpLength = i + 1; + if (ranges[i][0] < 0xffff && ranges[i][1] === 0xffff) { + ranges[i][1] = 0xfffe; + } + const trailingRangesCount = ranges[i][1] < 0xffff ? 1 : 0; + const segCount = bmpLength + trailingRangesCount; + const searchParams = _opentype_file_builder.OpenTypeFileBuilder.getSearchParams(segCount, 2); + let startCount = ""; + let endCount = ""; + let idDeltas = ""; + let idRangeOffsets = ""; + let glyphsIds = ""; + let bias = 0; + let range, start, end, codes; + for (i = 0, ii = bmpLength; i < ii; i++) { + range = ranges[i]; + start = range[0]; + end = range[1]; + startCount += string16(start); + endCount += string16(end); + codes = range[2]; + let contiguous = true; + for (j = 1, jj = codes.length; j < jj; ++j) { + if (codes[j] !== codes[j - 1] + 1) { + contiguous = false; + break; + } + } + if (!contiguous) { + const offset = (segCount - i) * 2 + bias * 2; + bias += end - start + 1; + idDeltas += string16(0); + idRangeOffsets += string16(offset); + for (j = 0, jj = codes.length; j < jj; ++j) { + glyphsIds += string16(codes[j]); + } + } else { + const startCode = codes[0]; + idDeltas += string16(startCode - start & 0xffff); + idRangeOffsets += string16(0); + } + } + if (trailingRangesCount > 0) { + endCount += "\xFF\xFF"; + startCount += "\xFF\xFF"; + idDeltas += "\x00\x01"; + idRangeOffsets += "\x00\x00"; + } + const format314 = "\x00\x00" + string16(2 * segCount) + string16(searchParams.range) + string16(searchParams.entry) + string16(searchParams.rangeShift) + endCount + "\x00\x00" + startCount + idDeltas + idRangeOffsets + glyphsIds; + let format31012 = ""; + let header31012 = ""; + if (numTables > 1) { + cmap += "\x00\x03" + "\x00\x0A" + (0, _util.string32)(4 + numTables * 8 + 4 + format314.length); + format31012 = ""; + for (i = 0, ii = ranges.length; i < ii; i++) { + range = ranges[i]; + start = range[0]; + codes = range[2]; + let code = codes[0]; + for (j = 1, jj = codes.length; j < jj; ++j) { + if (codes[j] !== codes[j - 1] + 1) { + end = range[0] + j - 1; + format31012 += (0, _util.string32)(start) + (0, _util.string32)(end) + (0, _util.string32)(code); + start = end + 1; + code = codes[j]; + } + } + format31012 += (0, _util.string32)(start) + (0, _util.string32)(range[1]) + (0, _util.string32)(code); + } + header31012 = "\x00\x0C" + "\x00\x00" + (0, _util.string32)(format31012.length + 16) + "\x00\x00\x00\x00" + (0, _util.string32)(format31012.length / 12); + } + return cmap + "\x00\x04" + string16(format314.length + 4) + format314 + header31012 + format31012; +} +function validateOS2Table(os2, file) { + file.pos = (file.start || 0) + os2.offset; + const version = file.getUint16(); + file.skip(60); + const selection = file.getUint16(); + if (version < 4 && selection & 0x0300) { + return false; + } + const firstChar = file.getUint16(); + const lastChar = file.getUint16(); + if (firstChar > lastChar) { + return false; + } + file.skip(6); + const usWinAscent = file.getUint16(); + if (usWinAscent === 0) { + return false; + } + os2.data[8] = os2.data[9] = 0; + return true; +} +function createOS2Table(properties, charstrings, override) { + override ||= { + unitsPerEm: 0, + yMax: 0, + yMin: 0, + ascent: 0, + descent: 0 + }; + let ulUnicodeRange1 = 0; + let ulUnicodeRange2 = 0; + let ulUnicodeRange3 = 0; + let ulUnicodeRange4 = 0; + let firstCharIndex = null; + let lastCharIndex = 0; + let position = -1; + if (charstrings) { + for (let code in charstrings) { + code |= 0; + if (firstCharIndex > code || !firstCharIndex) { + firstCharIndex = code; + } + if (lastCharIndex < code) { + lastCharIndex = code; + } + position = (0, _unicode.getUnicodeRangeFor)(code, position); + if (position < 32) { + ulUnicodeRange1 |= 1 << position; + } else if (position < 64) { + ulUnicodeRange2 |= 1 << position - 32; + } else if (position < 96) { + ulUnicodeRange3 |= 1 << position - 64; + } else if (position < 123) { + ulUnicodeRange4 |= 1 << position - 96; + } else { + throw new _util.FormatError("Unicode ranges Bits > 123 are reserved for internal usage"); + } + } + if (lastCharIndex > 0xffff) { + lastCharIndex = 0xffff; + } + } else { + firstCharIndex = 0; + lastCharIndex = 255; + } + const bbox = properties.bbox || [0, 0, 0, 0]; + const unitsPerEm = override.unitsPerEm || 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0]; + const scale = properties.ascentScaled ? 1.0 : unitsPerEm / PDF_GLYPH_SPACE_UNITS; + const typoAscent = override.ascent || Math.round(scale * (properties.ascent || bbox[3])); + let typoDescent = override.descent || Math.round(scale * (properties.descent || bbox[1])); + if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) { + typoDescent = -typoDescent; + } + const winAscent = override.yMax || typoAscent; + const winDescent = -override.yMin || -typoDescent; + return "\x00\x03" + "\x02\x24" + "\x01\xF4" + "\x00\x05" + "\x00\x00" + "\x02\x8A" + "\x02\xBB" + "\x00\x00" + "\x00\x8C" + "\x02\x8A" + "\x02\xBB" + "\x00\x00" + "\x01\xDF" + "\x00\x31" + "\x01\x02" + "\x00\x00" + "\x00\x00\x06" + String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) + "\x00\x00\x00\x00\x00\x00" + (0, _util.string32)(ulUnicodeRange1) + (0, _util.string32)(ulUnicodeRange2) + (0, _util.string32)(ulUnicodeRange3) + (0, _util.string32)(ulUnicodeRange4) + "\x2A\x32\x31\x2A" + string16(properties.italicAngle ? 1 : 0) + string16(firstCharIndex || properties.firstChar) + string16(lastCharIndex || properties.lastChar) + string16(typoAscent) + string16(typoDescent) + "\x00\x64" + string16(winAscent) + string16(winDescent) + "\x00\x00\x00\x00" + "\x00\x00\x00\x00" + string16(properties.xHeight) + string16(properties.capHeight) + string16(0) + string16(firstCharIndex || properties.firstChar) + "\x00\x03"; +} +function createPostTable(properties) { + const angle = Math.floor(properties.italicAngle * 2 ** 16); + return "\x00\x03\x00\x00" + (0, _util.string32)(angle) + "\x00\x00" + "\x00\x00" + (0, _util.string32)(properties.fixedPitch ? 1 : 0) + "\x00\x00\x00\x00" + "\x00\x00\x00\x00" + "\x00\x00\x00\x00" + "\x00\x00\x00\x00"; +} +function createPostscriptName(name) { + return name.replaceAll(/[^\x21-\x7E]|[[\](){}<>/%]/g, "").slice(0, 63); +} +function createNameTable(name, proto) { + if (!proto) { + proto = [[], []]; + } + const strings = [proto[0][0] || "Original licence", proto[0][1] || name, proto[0][2] || "Unknown", proto[0][3] || "uniqueID", proto[0][4] || name, proto[0][5] || "Version 0.11", proto[0][6] || createPostscriptName(name), proto[0][7] || "Unknown", proto[0][8] || "Unknown", proto[0][9] || "Unknown"]; + const stringsUnicode = []; + let i, ii, j, jj, str; + for (i = 0, ii = strings.length; i < ii; i++) { + str = proto[1][i] || strings[i]; + const strBufUnicode = []; + for (j = 0, jj = str.length; j < jj; j++) { + strBufUnicode.push(string16(str.charCodeAt(j))); + } + stringsUnicode.push(strBufUnicode.join("")); + } + const names = [strings, stringsUnicode]; + const platforms = ["\x00\x01", "\x00\x03"]; + const encodings = ["\x00\x00", "\x00\x01"]; + const languages = ["\x00\x00", "\x04\x09"]; + const namesRecordCount = strings.length * platforms.length; + let nameTable = "\x00\x00" + string16(namesRecordCount) + string16(namesRecordCount * 12 + 6); + let strOffset = 0; + for (i = 0, ii = platforms.length; i < ii; i++) { + const strs = names[i]; + for (j = 0, jj = strs.length; j < jj; j++) { + str = strs[j]; + const nameRecord = platforms[i] + encodings[i] + languages[i] + string16(j) + string16(str.length) + string16(strOffset); + nameTable += nameRecord; + strOffset += str.length; + } + } + nameTable += strings.join("") + stringsUnicode.join(""); + return nameTable; +} +class Font { + constructor(name, file, properties) { + this.name = name; + this.psName = null; + this.mimetype = null; + this.disableFontFace = false; + this.loadedName = properties.loadedName; + this.isType3Font = properties.isType3Font; + this.missingFile = false; + this.cssFontInfo = properties.cssFontInfo; + this._charsCache = Object.create(null); + this._glyphCache = Object.create(null); + let isSerifFont = !!(properties.flags & _fonts_utils.FontFlags.Serif); + if (!isSerifFont && !properties.isSimulatedFlags) { + const baseName = name.replaceAll(/[,_]/g, "-").split("-")[0], + serifFonts = (0, _standard_fonts.getSerifFonts)(); + for (const namePart of baseName.split("+")) { + if (serifFonts[namePart]) { + isSerifFont = true; + break; + } + } + } + this.isSerifFont = isSerifFont; + this.isSymbolicFont = !!(properties.flags & _fonts_utils.FontFlags.Symbolic); + this.isMonospace = !!(properties.flags & _fonts_utils.FontFlags.FixedPitch); + let { + type, + subtype + } = properties; + this.type = type; + this.subtype = subtype; + this.systemFontInfo = properties.systemFontInfo; + const matches = name.match(/^InvalidPDFjsFont_(.*)_\d+$/); + this.isInvalidPDFjsFont = !!matches; + if (this.isInvalidPDFjsFont) { + this.fallbackName = matches[1]; + } else if (this.isMonospace) { + this.fallbackName = "monospace"; + } else if (this.isSerifFont) { + this.fallbackName = "serif"; + } else { + this.fallbackName = "sans-serif"; + } + if (this.systemFontInfo?.guessFallback) { + this.systemFontInfo.guessFallback = false; + this.systemFontInfo.css += `,${this.fallbackName}`; + } + this.differences = properties.differences; + this.widths = properties.widths; + this.defaultWidth = properties.defaultWidth; + this.composite = properties.composite; + this.cMap = properties.cMap; + this.capHeight = properties.capHeight / PDF_GLYPH_SPACE_UNITS; + this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS; + this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS; + this.lineHeight = this.ascent - this.descent; + this.fontMatrix = properties.fontMatrix; + this.bbox = properties.bbox; + this.defaultEncoding = properties.defaultEncoding; + this.toUnicode = properties.toUnicode; + this.toFontChar = []; + if (properties.type === "Type3") { + for (let charCode = 0; charCode < 256; charCode++) { + this.toFontChar[charCode] = this.differences[charCode] || properties.defaultEncoding[charCode]; + } + return; + } + this.cidEncoding = properties.cidEncoding || ""; + this.vertical = !!properties.vertical; + if (this.vertical) { + this.vmetrics = properties.vmetrics; + this.defaultVMetrics = properties.defaultVMetrics; + } + if (!file || file.isEmpty) { + if (file) { + (0, _util.warn)('Font file is empty in "' + name + '" (' + this.loadedName + ")"); + } + this.fallbackToSystemFont(properties); + return; + } + [type, subtype] = getFontFileType(file, properties); + if (type !== this.type || subtype !== this.subtype) { + (0, _util.info)("Inconsistent font file Type/SubType, expected: " + `${this.type}/${this.subtype} but found: ${type}/${subtype}.`); + } + let data; + try { + switch (type) { + case "MMType1": + (0, _util.info)("MMType1 font (" + name + "), falling back to Type1."); + case "Type1": + case "CIDFontType0": + this.mimetype = "font/opentype"; + const cff = subtype === "Type1C" || subtype === "CIDFontType0C" ? new _cff_font.CFFFont(file, properties) : new _type1_font.Type1Font(name, file, properties); + adjustWidths(properties); + data = this.convert(name, cff, properties); + break; + case "OpenType": + case "TrueType": + case "CIDFontType2": + this.mimetype = "font/opentype"; + data = this.checkAndRepair(name, file, properties); + if (this.isOpenType) { + adjustWidths(properties); + type = "OpenType"; + } + break; + default: + throw new _util.FormatError(`Font ${type} is not supported`); + } + } catch (e) { + (0, _util.warn)(e); + this.fallbackToSystemFont(properties); + return; + } + amendFallbackToUnicode(properties); + this.data = data; + this.type = type; + this.subtype = subtype; + this.fontMatrix = properties.fontMatrix; + this.widths = properties.widths; + this.defaultWidth = properties.defaultWidth; + this.toUnicode = properties.toUnicode; + this.seacMap = properties.seacMap; + } + get renderer() { + const renderer = _font_renderer.FontRendererFactory.create(this, _fonts_utils.SEAC_ANALYSIS_ENABLED); + return (0, _util.shadow)(this, "renderer", renderer); + } + exportData(extraProperties = false) { + const exportDataProperties = extraProperties ? [...EXPORT_DATA_PROPERTIES, ...EXPORT_DATA_EXTRA_PROPERTIES] : EXPORT_DATA_PROPERTIES; + const data = Object.create(null); + let property, value; + for (property of exportDataProperties) { + value = this[property]; + if (value !== undefined) { + data[property] = value; + } + } + return data; + } + fallbackToSystemFont(properties) { + this.missingFile = true; + const { + name, + type + } = this; + let fontName = (0, _fonts_utils.normalizeFontName)(name); + const stdFontMap = (0, _standard_fonts.getStdFontMap)(), + nonStdFontMap = (0, _standard_fonts.getNonStdFontMap)(); + const isStandardFont = !!stdFontMap[fontName]; + const isMappedToStandardFont = !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]); + fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName; + const fontBasicMetricsMap = (0, _metrics.getFontBasicMetrics)(); + const metrics = fontBasicMetricsMap[fontName]; + if (metrics) { + if (isNaN(this.ascent)) { + this.ascent = metrics.ascent / PDF_GLYPH_SPACE_UNITS; + } + if (isNaN(this.descent)) { + this.descent = metrics.descent / PDF_GLYPH_SPACE_UNITS; + } + if (isNaN(this.capHeight)) { + this.capHeight = metrics.capHeight / PDF_GLYPH_SPACE_UNITS; + } + } + this.bold = /bold/gi.test(fontName); + this.italic = /oblique|italic/gi.test(fontName); + this.black = /Black/g.test(name); + const isNarrow = /Narrow/g.test(name); + this.remeasure = (!isStandardFont || isNarrow) && Object.keys(this.widths).length > 0; + if ((isStandardFont || isMappedToStandardFont) && type === "CIDFontType2" && this.cidEncoding.startsWith("Identity-")) { + const cidToGidMap = properties.cidToGidMap; + const map = []; + applyStandardFontGlyphMap(map, (0, _standard_fonts.getGlyphMapForStandardFonts)()); + if (/Arial-?Black/i.test(name)) { + applyStandardFontGlyphMap(map, (0, _standard_fonts.getSupplementalGlyphMapForArialBlack)()); + } else if (/Calibri/i.test(name)) { + applyStandardFontGlyphMap(map, (0, _standard_fonts.getSupplementalGlyphMapForCalibri)()); + } + if (cidToGidMap) { + for (const charCode in map) { + const cid = map[charCode]; + if (cidToGidMap[cid] !== undefined) { + map[+charCode] = cidToGidMap[cid]; + } + } + if (cidToGidMap.length !== this.toUnicode.length && properties.hasIncludedToUnicodeMap && this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap) { + this.toUnicode.forEach(function (charCode, unicodeCharCode) { + const cid = map[charCode]; + if (cidToGidMap[cid] === undefined) { + map[+charCode] = unicodeCharCode; + } + }); + } + } + if (!(this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap)) { + this.toUnicode.forEach(function (charCode, unicodeCharCode) { + map[+charCode] = unicodeCharCode; + }); + } + this.toFontChar = map; + this.toUnicode = new _to_unicode_map.ToUnicodeMap(map); + } else if (/Symbol/i.test(fontName)) { + this.toFontChar = buildToFontChar(_encodings.SymbolSetEncoding, (0, _glyphlist.getGlyphsUnicode)(), this.differences); + } else if (/Dingbats/i.test(fontName)) { + this.toFontChar = buildToFontChar(_encodings.ZapfDingbatsEncoding, (0, _glyphlist.getDingbatsGlyphsUnicode)(), this.differences); + } else if (isStandardFont) { + const map = buildToFontChar(this.defaultEncoding, (0, _glyphlist.getGlyphsUnicode)(), this.differences); + if (type === "CIDFontType2" && !this.cidEncoding.startsWith("Identity-") && !(this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap)) { + this.toUnicode.forEach(function (charCode, unicodeCharCode) { + map[+charCode] = unicodeCharCode; + }); + } + this.toFontChar = map; + } else { + const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); + const map = []; + this.toUnicode.forEach((charCode, unicodeCharCode) => { + if (!this.composite) { + const glyphName = this.differences[charCode] || this.defaultEncoding[charCode]; + const unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap); + if (unicode !== -1) { + unicodeCharCode = unicode; + } + } + map[+charCode] = unicodeCharCode; + }); + if (this.composite && this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap) { + if (/Tahoma|Verdana/i.test(name)) { + applyStandardFontGlyphMap(map, (0, _standard_fonts.getGlyphMapForStandardFonts)()); + } + } + this.toFontChar = map; + } + amendFallbackToUnicode(properties); + this.loadedName = fontName.split("-")[0]; + } + checkAndRepair(name, font, properties) { + const VALID_TABLES = ["OS/2", "cmap", "head", "hhea", "hmtx", "maxp", "name", "post", "loca", "glyf", "fpgm", "prep", "cvt ", "CFF "]; + function readTables(file, numTables) { + const tables = Object.create(null); + tables["OS/2"] = null; + tables.cmap = null; + tables.head = null; + tables.hhea = null; + tables.hmtx = null; + tables.maxp = null; + tables.name = null; + tables.post = null; + for (let i = 0; i < numTables; i++) { + const table = readTableEntry(file); + if (!VALID_TABLES.includes(table.tag)) { + continue; + } + if (table.length === 0) { + continue; + } + tables[table.tag] = table; + } + return tables; + } + function readTableEntry(file) { + const tag = file.getString(4); + const checksum = file.getInt32() >>> 0; + const offset = file.getInt32() >>> 0; + const length = file.getInt32() >>> 0; + const previousPosition = file.pos; + file.pos = file.start || 0; + file.skip(offset); + const data = file.getBytes(length); + file.pos = previousPosition; + if (tag === "head") { + data[8] = data[9] = data[10] = data[11] = 0; + data[17] |= 0x20; + } + return { + tag, + checksum, + length, + offset, + data + }; + } + function readOpenTypeHeader(ttf) { + return { + version: ttf.getString(4), + numTables: ttf.getUint16(), + searchRange: ttf.getUint16(), + entrySelector: ttf.getUint16(), + rangeShift: ttf.getUint16() + }; + } + function readTrueTypeCollectionHeader(ttc) { + const ttcTag = ttc.getString(4); + (0, _util.assert)(ttcTag === "ttcf", "Must be a TrueType Collection font."); + const majorVersion = ttc.getUint16(); + const minorVersion = ttc.getUint16(); + const numFonts = ttc.getInt32() >>> 0; + const offsetTable = []; + for (let i = 0; i < numFonts; i++) { + offsetTable.push(ttc.getInt32() >>> 0); + } + const header = { + ttcTag, + majorVersion, + minorVersion, + numFonts, + offsetTable + }; + switch (majorVersion) { + case 1: + return header; + case 2: + header.dsigTag = ttc.getInt32() >>> 0; + header.dsigLength = ttc.getInt32() >>> 0; + header.dsigOffset = ttc.getInt32() >>> 0; + return header; + } + throw new _util.FormatError(`Invalid TrueType Collection majorVersion: ${majorVersion}.`); + } + function readTrueTypeCollectionData(ttc, fontName) { + const { + numFonts, + offsetTable + } = readTrueTypeCollectionHeader(ttc); + const fontNameParts = fontName.split("+"); + let fallbackData; + for (let i = 0; i < numFonts; i++) { + ttc.pos = (ttc.start || 0) + offsetTable[i]; + const potentialHeader = readOpenTypeHeader(ttc); + const potentialTables = readTables(ttc, potentialHeader.numTables); + if (!potentialTables.name) { + throw new _util.FormatError('TrueType Collection font must contain a "name" table.'); + } + const [nameTable] = readNameTable(potentialTables.name); + for (let j = 0, jj = nameTable.length; j < jj; j++) { + for (let k = 0, kk = nameTable[j].length; k < kk; k++) { + const nameEntry = nameTable[j][k]?.replaceAll(/\s/g, ""); + if (!nameEntry) { + continue; + } + if (nameEntry === fontName) { + return { + header: potentialHeader, + tables: potentialTables + }; + } + if (fontNameParts.length < 2) { + continue; + } + for (const part of fontNameParts) { + if (nameEntry === part) { + fallbackData = { + name: part, + header: potentialHeader, + tables: potentialTables + }; + } + } + } + } + } + if (fallbackData) { + (0, _util.warn)(`TrueType Collection does not contain "${fontName}" font, ` + `falling back to "${fallbackData.name}" font instead.`); + return { + header: fallbackData.header, + tables: fallbackData.tables + }; + } + throw new _util.FormatError(`TrueType Collection does not contain "${fontName}" font.`); + } + function readCmapTable(cmap, file, isSymbolicFont, hasEncoding) { + if (!cmap) { + (0, _util.warn)("No cmap table available."); + return { + platformId: -1, + encodingId: -1, + mappings: [], + hasShortCmap: false + }; + } + let segment; + let start = (file.start || 0) + cmap.offset; + file.pos = start; + file.skip(2); + const numTables = file.getUint16(); + let potentialTable; + let canBreak = false; + for (let i = 0; i < numTables; i++) { + const platformId = file.getUint16(); + const encodingId = file.getUint16(); + const offset = file.getInt32() >>> 0; + let useTable = false; + if (potentialTable?.platformId === platformId && potentialTable?.encodingId === encodingId) { + continue; + } + if (platformId === 0 && (encodingId === 0 || encodingId === 1 || encodingId === 3)) { + useTable = true; + } else if (platformId === 1 && encodingId === 0) { + useTable = true; + } else if (platformId === 3 && encodingId === 1 && (hasEncoding || !potentialTable)) { + useTable = true; + if (!isSymbolicFont) { + canBreak = true; + } + } else if (isSymbolicFont && platformId === 3 && encodingId === 0) { + useTable = true; + let correctlySorted = true; + if (i < numTables - 1) { + const nextBytes = file.peekBytes(2), + nextPlatformId = int16(nextBytes[0], nextBytes[1]); + if (nextPlatformId < platformId) { + correctlySorted = false; + } + } + if (correctlySorted) { + canBreak = true; + } + } + if (useTable) { + potentialTable = { + platformId, + encodingId, + offset + }; + } + if (canBreak) { + break; + } + } + if (potentialTable) { + file.pos = start + potentialTable.offset; + } + if (!potentialTable || file.peekByte() === -1) { + (0, _util.warn)("Could not find a preferred cmap table."); + return { + platformId: -1, + encodingId: -1, + mappings: [], + hasShortCmap: false + }; + } + const format = file.getUint16(); + let hasShortCmap = false; + const mappings = []; + let j, glyphId; + if (format === 0) { + file.skip(2 + 2); + for (j = 0; j < 256; j++) { + const index = file.getByte(); + if (!index) { + continue; + } + mappings.push({ + charCode: j, + glyphId: index + }); + } + hasShortCmap = true; + } else if (format === 2) { + file.skip(2 + 2); + const subHeaderKeys = []; + let maxSubHeaderKey = 0; + for (let i = 0; i < 256; i++) { + const subHeaderKey = file.getUint16() >> 3; + subHeaderKeys.push(subHeaderKey); + maxSubHeaderKey = Math.max(subHeaderKey, maxSubHeaderKey); + } + const subHeaders = []; + for (let i = 0; i <= maxSubHeaderKey; i++) { + subHeaders.push({ + firstCode: file.getUint16(), + entryCount: file.getUint16(), + idDelta: signedInt16(file.getByte(), file.getByte()), + idRangePos: file.pos + file.getUint16() + }); + } + for (let i = 0; i < 256; i++) { + if (subHeaderKeys[i] === 0) { + file.pos = subHeaders[0].idRangePos + 2 * i; + glyphId = file.getUint16(); + mappings.push({ + charCode: i, + glyphId + }); + } else { + const s = subHeaders[subHeaderKeys[i]]; + for (j = 0; j < s.entryCount; j++) { + const charCode = (i << 8) + j + s.firstCode; + file.pos = s.idRangePos + 2 * j; + glyphId = file.getUint16(); + if (glyphId !== 0) { + glyphId = (glyphId + s.idDelta) % 65536; + } + mappings.push({ + charCode, + glyphId + }); + } + } + } + } else if (format === 4) { + file.skip(2 + 2); + const segCount = file.getUint16() >> 1; + file.skip(6); + const segments = []; + let segIndex; + for (segIndex = 0; segIndex < segCount; segIndex++) { + segments.push({ + end: file.getUint16() + }); + } + file.skip(2); + for (segIndex = 0; segIndex < segCount; segIndex++) { + segments[segIndex].start = file.getUint16(); + } + for (segIndex = 0; segIndex < segCount; segIndex++) { + segments[segIndex].delta = file.getUint16(); + } + let offsetsCount = 0, + offsetIndex; + for (segIndex = 0; segIndex < segCount; segIndex++) { + segment = segments[segIndex]; + const rangeOffset = file.getUint16(); + if (!rangeOffset) { + segment.offsetIndex = -1; + continue; + } + offsetIndex = (rangeOffset >> 1) - (segCount - segIndex); + segment.offsetIndex = offsetIndex; + offsetsCount = Math.max(offsetsCount, offsetIndex + segment.end - segment.start + 1); + } + const offsets = []; + for (j = 0; j < offsetsCount; j++) { + offsets.push(file.getUint16()); + } + for (segIndex = 0; segIndex < segCount; segIndex++) { + segment = segments[segIndex]; + start = segment.start; + const end = segment.end; + const delta = segment.delta; + offsetIndex = segment.offsetIndex; + for (j = start; j <= end; j++) { + if (j === 0xffff) { + continue; + } + glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start]; + glyphId = glyphId + delta & 0xffff; + mappings.push({ + charCode: j, + glyphId + }); + } + } + } else if (format === 6) { + file.skip(2 + 2); + const firstCode = file.getUint16(); + const entryCount = file.getUint16(); + for (j = 0; j < entryCount; j++) { + glyphId = file.getUint16(); + const charCode = firstCode + j; + mappings.push({ + charCode, + glyphId + }); + } + } else if (format === 12) { + file.skip(2 + 4 + 4); + const nGroups = file.getInt32() >>> 0; + for (j = 0; j < nGroups; j++) { + const startCharCode = file.getInt32() >>> 0; + const endCharCode = file.getInt32() >>> 0; + let glyphCode = file.getInt32() >>> 0; + for (let charCode = startCharCode; charCode <= endCharCode; charCode++) { + mappings.push({ + charCode, + glyphId: glyphCode++ + }); + } + } + } else { + (0, _util.warn)("cmap table has unsupported format: " + format); + return { + platformId: -1, + encodingId: -1, + mappings: [], + hasShortCmap: false + }; + } + mappings.sort(function (a, b) { + return a.charCode - b.charCode; + }); + for (let i = 1; i < mappings.length; i++) { + if (mappings[i - 1].charCode === mappings[i].charCode) { + mappings.splice(i, 1); + i--; + } + } + return { + platformId: potentialTable.platformId, + encodingId: potentialTable.encodingId, + mappings, + hasShortCmap + }; + } + function sanitizeMetrics(file, header, metrics, headTable, numGlyphs, dupFirstEntry) { + if (!header) { + if (metrics) { + metrics.data = null; + } + return; + } + file.pos = (file.start || 0) + header.offset; + file.pos += 4; + file.pos += 2; + file.pos += 2; + file.pos += 2; + file.pos += 2; + file.pos += 2; + file.pos += 2; + file.pos += 2; + file.pos += 2; + file.pos += 2; + const caretOffset = file.getUint16(); + file.pos += 8; + file.pos += 2; + let numOfMetrics = file.getUint16(); + if (caretOffset !== 0) { + const macStyle = int16(headTable.data[44], headTable.data[45]); + if (!(macStyle & 2)) { + header.data[22] = 0; + header.data[23] = 0; + } + } + if (numOfMetrics > numGlyphs) { + (0, _util.info)(`The numOfMetrics (${numOfMetrics}) should not be ` + `greater than the numGlyphs (${numGlyphs}).`); + numOfMetrics = numGlyphs; + header.data[34] = (numOfMetrics & 0xff00) >> 8; + header.data[35] = numOfMetrics & 0x00ff; + } + const numOfSidebearings = numGlyphs - numOfMetrics; + const numMissing = numOfSidebearings - (metrics.length - numOfMetrics * 4 >> 1); + if (numMissing > 0) { + const entries = new Uint8Array(metrics.length + numMissing * 2); + entries.set(metrics.data); + if (dupFirstEntry) { + entries[metrics.length] = metrics.data[2]; + entries[metrics.length + 1] = metrics.data[3]; + } + metrics.data = entries; + } + } + function sanitizeGlyph(source, sourceStart, sourceEnd, dest, destStart, hintsValid) { + const glyphProfile = { + length: 0, + sizeOfInstructions: 0 + }; + if (sourceStart < 0 || sourceStart >= source.length || sourceEnd > source.length || sourceEnd - sourceStart <= 12) { + return glyphProfile; + } + const glyf = source.subarray(sourceStart, sourceEnd); + const xMin = signedInt16(glyf[2], glyf[3]); + const yMin = signedInt16(glyf[4], glyf[5]); + const xMax = signedInt16(glyf[6], glyf[7]); + const yMax = signedInt16(glyf[8], glyf[9]); + if (xMin > xMax) { + writeSignedInt16(glyf, 2, xMax); + writeSignedInt16(glyf, 6, xMin); + } + if (yMin > yMax) { + writeSignedInt16(glyf, 4, yMax); + writeSignedInt16(glyf, 8, yMin); + } + const contoursCount = signedInt16(glyf[0], glyf[1]); + if (contoursCount < 0) { + if (contoursCount < -1) { + return glyphProfile; + } + dest.set(glyf, destStart); + glyphProfile.length = glyf.length; + return glyphProfile; + } + let i, + j = 10, + flagsCount = 0; + for (i = 0; i < contoursCount; i++) { + const endPoint = glyf[j] << 8 | glyf[j + 1]; + flagsCount = endPoint + 1; + j += 2; + } + const instructionsStart = j; + const instructionsLength = glyf[j] << 8 | glyf[j + 1]; + glyphProfile.sizeOfInstructions = instructionsLength; + j += 2 + instructionsLength; + const instructionsEnd = j; + let coordinatesLength = 0; + for (i = 0; i < flagsCount; i++) { + const flag = glyf[j++]; + if (flag & 0xc0) { + glyf[j - 1] = flag & 0x3f; + } + let xLength = 2; + if (flag & 2) { + xLength = 1; + } else if (flag & 16) { + xLength = 0; + } + let yLength = 2; + if (flag & 4) { + yLength = 1; + } else if (flag & 32) { + yLength = 0; + } + const xyLength = xLength + yLength; + coordinatesLength += xyLength; + if (flag & 8) { + const repeat = glyf[j++]; + if (repeat === 0) { + glyf[j - 1] ^= 8; + } + i += repeat; + coordinatesLength += repeat * xyLength; + } + } + if (coordinatesLength === 0) { + return glyphProfile; + } + let glyphDataLength = j + coordinatesLength; + if (glyphDataLength > glyf.length) { + return glyphProfile; + } + if (!hintsValid && instructionsLength > 0) { + dest.set(glyf.subarray(0, instructionsStart), destStart); + dest.set([0, 0], destStart + instructionsStart); + dest.set(glyf.subarray(instructionsEnd, glyphDataLength), destStart + instructionsStart + 2); + glyphDataLength -= instructionsLength; + if (glyf.length - glyphDataLength > 3) { + glyphDataLength = glyphDataLength + 3 & ~3; + } + glyphProfile.length = glyphDataLength; + return glyphProfile; + } + if (glyf.length - glyphDataLength > 3) { + glyphDataLength = glyphDataLength + 3 & ~3; + dest.set(glyf.subarray(0, glyphDataLength), destStart); + glyphProfile.length = glyphDataLength; + return glyphProfile; + } + dest.set(glyf, destStart); + glyphProfile.length = glyf.length; + return glyphProfile; + } + function sanitizeHead(head, numGlyphs, locaLength) { + const data = head.data; + const version = int32(data[0], data[1], data[2], data[3]); + if (version >> 16 !== 1) { + (0, _util.info)("Attempting to fix invalid version in head table: " + version); + data[0] = 0; + data[1] = 1; + data[2] = 0; + data[3] = 0; + } + const indexToLocFormat = int16(data[50], data[51]); + if (indexToLocFormat < 0 || indexToLocFormat > 1) { + (0, _util.info)("Attempting to fix invalid indexToLocFormat in head table: " + indexToLocFormat); + const numGlyphsPlusOne = numGlyphs + 1; + if (locaLength === numGlyphsPlusOne << 1) { + data[50] = 0; + data[51] = 0; + } else if (locaLength === numGlyphsPlusOne << 2) { + data[50] = 0; + data[51] = 1; + } else { + throw new _util.FormatError("Could not fix indexToLocFormat: " + indexToLocFormat); + } + } + } + function sanitizeGlyphLocations(loca, glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions) { + let itemSize, itemDecode, itemEncode; + if (isGlyphLocationsLong) { + itemSize = 4; + itemDecode = function fontItemDecodeLong(data, offset) { + return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]; + }; + itemEncode = function fontItemEncodeLong(data, offset, value) { + data[offset] = value >>> 24 & 0xff; + data[offset + 1] = value >> 16 & 0xff; + data[offset + 2] = value >> 8 & 0xff; + data[offset + 3] = value & 0xff; + }; + } else { + itemSize = 2; + itemDecode = function fontItemDecode(data, offset) { + return data[offset] << 9 | data[offset + 1] << 1; + }; + itemEncode = function fontItemEncode(data, offset, value) { + data[offset] = value >> 9 & 0xff; + data[offset + 1] = value >> 1 & 0xff; + }; + } + const numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs; + const locaDataSize = itemSize * (1 + numGlyphsOut); + const locaData = new Uint8Array(locaDataSize); + locaData.set(loca.data.subarray(0, locaDataSize)); + loca.data = locaData; + const oldGlyfData = glyf.data; + const oldGlyfDataLength = oldGlyfData.length; + const newGlyfData = new Uint8Array(oldGlyfDataLength); + let i, j; + const locaEntries = []; + for (i = 0, j = 0; i < numGlyphs + 1; i++, j += itemSize) { + let offset = itemDecode(locaData, j); + if (offset > oldGlyfDataLength) { + offset = oldGlyfDataLength; + } + locaEntries.push({ + index: i, + offset, + endOffset: 0 + }); + } + locaEntries.sort((a, b) => { + return a.offset - b.offset; + }); + for (i = 0; i < numGlyphs; i++) { + locaEntries[i].endOffset = locaEntries[i + 1].offset; + } + locaEntries.sort((a, b) => { + return a.index - b.index; + }); + for (i = 0; i < numGlyphs; i++) { + const { + offset, + endOffset + } = locaEntries[i]; + if (offset !== 0 || endOffset !== 0) { + break; + } + const nextOffset = locaEntries[i + 1].offset; + if (nextOffset === 0) { + continue; + } + locaEntries[i].endOffset = nextOffset; + break; + } + const missingGlyphs = Object.create(null); + let writeOffset = 0; + itemEncode(locaData, 0, writeOffset); + for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) { + const glyphProfile = sanitizeGlyph(oldGlyfData, locaEntries[i].offset, locaEntries[i].endOffset, newGlyfData, writeOffset, hintsValid); + const newLength = glyphProfile.length; + if (newLength === 0) { + missingGlyphs[i] = true; + } + if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) { + maxSizeOfInstructions = glyphProfile.sizeOfInstructions; + } + writeOffset += newLength; + itemEncode(locaData, j, writeOffset); + } + if (writeOffset === 0) { + const simpleGlyph = new Uint8Array([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]); + for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) { + itemEncode(locaData, j, simpleGlyph.length); + } + glyf.data = simpleGlyph; + } else if (dupFirstEntry) { + const firstEntryLength = itemDecode(locaData, itemSize); + if (newGlyfData.length > firstEntryLength + writeOffset) { + glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset); + } else { + glyf.data = new Uint8Array(firstEntryLength + writeOffset); + glyf.data.set(newGlyfData.subarray(0, writeOffset)); + } + glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset); + itemEncode(loca.data, locaData.length - itemSize, writeOffset + firstEntryLength); + } else { + glyf.data = newGlyfData.subarray(0, writeOffset); + } + return { + missingGlyphs, + maxSizeOfInstructions + }; + } + function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) { + const start = (font.start || 0) + post.offset; + font.pos = start; + const length = post.length, + end = start + length; + const version = font.getInt32(); + font.skip(28); + let glyphNames; + let valid = true; + let i; + switch (version) { + case 0x00010000: + glyphNames = _fonts_utils.MacStandardGlyphOrdering; + break; + case 0x00020000: + const numGlyphs = font.getUint16(); + if (numGlyphs !== maxpNumGlyphs) { + valid = false; + break; + } + const glyphNameIndexes = []; + for (i = 0; i < numGlyphs; ++i) { + const index = font.getUint16(); + if (index >= 32768) { + valid = false; + break; + } + glyphNameIndexes.push(index); + } + if (!valid) { + break; + } + const customNames = [], + strBuf = []; + while (font.pos < end) { + const stringLength = font.getByte(); + strBuf.length = stringLength; + for (i = 0; i < stringLength; ++i) { + strBuf[i] = String.fromCharCode(font.getByte()); + } + customNames.push(strBuf.join("")); + } + glyphNames = []; + for (i = 0; i < numGlyphs; ++i) { + const j = glyphNameIndexes[i]; + if (j < 258) { + glyphNames.push(_fonts_utils.MacStandardGlyphOrdering[j]); + continue; + } + glyphNames.push(customNames[j - 258]); + } + break; + case 0x00030000: + break; + default: + (0, _util.warn)("Unknown/unsupported post table version " + version); + valid = false; + if (propertiesObj.defaultEncoding) { + glyphNames = propertiesObj.defaultEncoding; + } + break; + } + propertiesObj.glyphNames = glyphNames; + return valid; + } + function readNameTable(nameTable) { + const start = (font.start || 0) + nameTable.offset; + font.pos = start; + const names = [[], []], + records = []; + const length = nameTable.length, + end = start + length; + const format = font.getUint16(); + const FORMAT_0_HEADER_LENGTH = 6; + if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) { + return [names, records]; + } + const numRecords = font.getUint16(); + const stringsStart = font.getUint16(); + const NAME_RECORD_LENGTH = 12; + let i, ii; + for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) { + const r = { + platform: font.getUint16(), + encoding: font.getUint16(), + language: font.getUint16(), + name: font.getUint16(), + length: font.getUint16(), + offset: font.getUint16() + }; + if (isMacNameRecord(r) || isWinNameRecord(r)) { + records.push(r); + } + } + for (i = 0, ii = records.length; i < ii; i++) { + const record = records[i]; + if (record.length <= 0) { + continue; + } + const pos = start + stringsStart + record.offset; + if (pos + record.length > end) { + continue; + } + font.pos = pos; + const nameIndex = record.name; + if (record.encoding) { + let str = ""; + for (let j = 0, jj = record.length; j < jj; j += 2) { + str += String.fromCharCode(font.getUint16()); + } + names[1][nameIndex] = str; + } else { + names[0][nameIndex] = font.getString(record.length); + } + } + return [names, records]; + } + const TTOpsStackDeltas = [0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1, 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2, 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1, -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2]; + function sanitizeTTProgram(table, ttContext) { + let data = table.data; + let i = 0, + j, + n, + b, + funcId, + pc, + lastEndf = 0, + lastDeff = 0; + const stack = []; + const callstack = []; + const functionsCalled = []; + let tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions; + let inFDEF = false, + ifLevel = 0, + inELSE = 0; + for (let ii = data.length; i < ii;) { + const op = data[i++]; + if (op === 0x40) { + n = data[i++]; + if (inFDEF || inELSE) { + i += n; + } else { + for (j = 0; j < n; j++) { + stack.push(data[i++]); + } + } + } else if (op === 0x41) { + n = data[i++]; + if (inFDEF || inELSE) { + i += n * 2; + } else { + for (j = 0; j < n; j++) { + b = data[i++]; + stack.push(b << 8 | data[i++]); + } + } + } else if ((op & 0xf8) === 0xb0) { + n = op - 0xb0 + 1; + if (inFDEF || inELSE) { + i += n; + } else { + for (j = 0; j < n; j++) { + stack.push(data[i++]); + } + } + } else if ((op & 0xf8) === 0xb8) { + n = op - 0xb8 + 1; + if (inFDEF || inELSE) { + i += n * 2; + } else { + for (j = 0; j < n; j++) { + b = data[i++]; + stack.push(b << 8 | data[i++]); + } + } + } else if (op === 0x2b && !tooComplexToFollowFunctions) { + if (!inFDEF && !inELSE) { + funcId = stack.at(-1); + if (isNaN(funcId)) { + (0, _util.info)("TT: CALL empty stack (or invalid entry)."); + } else { + ttContext.functionsUsed[funcId] = true; + if (funcId in ttContext.functionsStackDeltas) { + const newStackLength = stack.length + ttContext.functionsStackDeltas[funcId]; + if (newStackLength < 0) { + (0, _util.warn)("TT: CALL invalid functions stack delta."); + ttContext.hintsValid = false; + return; + } + stack.length = newStackLength; + } else if (funcId in ttContext.functionsDefined && !functionsCalled.includes(funcId)) { + callstack.push({ + data, + i, + stackTop: stack.length - 1 + }); + functionsCalled.push(funcId); + pc = ttContext.functionsDefined[funcId]; + if (!pc) { + (0, _util.warn)("TT: CALL non-existent function"); + ttContext.hintsValid = false; + return; + } + data = pc.data; + i = pc.i; + } + } + } + } else if (op === 0x2c && !tooComplexToFollowFunctions) { + if (inFDEF || inELSE) { + (0, _util.warn)("TT: nested FDEFs not allowed"); + tooComplexToFollowFunctions = true; + } + inFDEF = true; + lastDeff = i; + funcId = stack.pop(); + ttContext.functionsDefined[funcId] = { + data, + i + }; + } else if (op === 0x2d) { + if (inFDEF) { + inFDEF = false; + lastEndf = i; + } else { + pc = callstack.pop(); + if (!pc) { + (0, _util.warn)("TT: ENDF bad stack"); + ttContext.hintsValid = false; + return; + } + funcId = functionsCalled.pop(); + data = pc.data; + i = pc.i; + ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop; + } + } else if (op === 0x89) { + if (inFDEF || inELSE) { + (0, _util.warn)("TT: nested IDEFs not allowed"); + tooComplexToFollowFunctions = true; + } + inFDEF = true; + lastDeff = i; + } else if (op === 0x58) { + ++ifLevel; + } else if (op === 0x1b) { + inELSE = ifLevel; + } else if (op === 0x59) { + if (inELSE === ifLevel) { + inELSE = 0; + } + --ifLevel; + } else if (op === 0x1c) { + if (!inFDEF && !inELSE) { + const offset = stack.at(-1); + if (offset > 0) { + i += offset - 1; + } + } + } + if (!inFDEF && !inELSE) { + let stackDelta = 0; + if (op <= 0x8e) { + stackDelta = TTOpsStackDeltas[op]; + } else if (op >= 0xc0 && op <= 0xdf) { + stackDelta = -1; + } else if (op >= 0xe0) { + stackDelta = -2; + } + if (op >= 0x71 && op <= 0x75) { + n = stack.pop(); + if (!isNaN(n)) { + stackDelta = -n * 2; + } + } + while (stackDelta < 0 && stack.length > 0) { + stack.pop(); + stackDelta++; + } + while (stackDelta > 0) { + stack.push(NaN); + stackDelta--; + } + } + } + ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions; + const content = [data]; + if (i > data.length) { + content.push(new Uint8Array(i - data.length)); + } + if (lastDeff > lastEndf) { + (0, _util.warn)("TT: complementing a missing function tail"); + content.push(new Uint8Array([0x22, 0x2d])); + } + foldTTTable(table, content); + } + function checkInvalidFunctions(ttContext, maxFunctionDefs) { + if (ttContext.tooComplexToFollowFunctions) { + return; + } + if (ttContext.functionsDefined.length > maxFunctionDefs) { + (0, _util.warn)("TT: more functions defined than expected"); + ttContext.hintsValid = false; + return; + } + for (let j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) { + if (j > maxFunctionDefs) { + (0, _util.warn)("TT: invalid function id: " + j); + ttContext.hintsValid = false; + return; + } + if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) { + (0, _util.warn)("TT: undefined function: " + j); + ttContext.hintsValid = false; + return; + } + } + } + function foldTTTable(table, content) { + if (content.length > 1) { + let newLength = 0; + let j, jj; + for (j = 0, jj = content.length; j < jj; j++) { + newLength += content[j].length; + } + newLength = newLength + 3 & ~3; + const result = new Uint8Array(newLength); + let pos = 0; + for (j = 0, jj = content.length; j < jj; j++) { + result.set(content[j], pos); + pos += content[j].length; + } + table.data = result; + table.length = newLength; + } + } + function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) { + const ttContext = { + functionsDefined: [], + functionsUsed: [], + functionsStackDeltas: [], + tooComplexToFollowFunctions: false, + hintsValid: true + }; + if (fpgm) { + sanitizeTTProgram(fpgm, ttContext); + } + if (prep) { + sanitizeTTProgram(prep, ttContext); + } + if (fpgm) { + checkInvalidFunctions(ttContext, maxFunctionDefs); + } + if (cvt && cvt.length & 1) { + const cvtData = new Uint8Array(cvt.length + 1); + cvtData.set(cvt.data); + cvt.data = cvtData; + } + return ttContext.hintsValid; + } + font = new _stream.Stream(new Uint8Array(font.getBytes())); + let header, tables; + if (isTrueTypeCollectionFile(font)) { + const ttcData = readTrueTypeCollectionData(font, this.name); + header = ttcData.header; + tables = ttcData.tables; + } else { + header = readOpenTypeHeader(font); + tables = readTables(font, header.numTables); + } + let cff, cffFile; + const isTrueType = !tables["CFF "]; + if (!isTrueType) { + const isComposite = properties.composite && (properties.cidToGidMap?.length > 0 || !(properties.cMap instanceof _cmap.IdentityCMap)); + if (header.version === "OTTO" && !isComposite || !tables.head || !tables.hhea || !tables.maxp || !tables.post) { + cffFile = new _stream.Stream(tables["CFF "].data); + cff = new _cff_font.CFFFont(cffFile, properties); + adjustWidths(properties); + return this.convert(name, cff, properties); + } + delete tables.glyf; + delete tables.loca; + delete tables.fpgm; + delete tables.prep; + delete tables["cvt "]; + this.isOpenType = true; + } else { + if (!tables.loca) { + throw new _util.FormatError('Required "loca" table is not found'); + } + if (!tables.glyf) { + (0, _util.warn)('Required "glyf" table is not found -- trying to recover.'); + tables.glyf = { + tag: "glyf", + data: new Uint8Array(0) + }; + } + this.isOpenType = false; + } + if (!tables.maxp) { + throw new _util.FormatError('Required "maxp" table is not found'); + } + font.pos = (font.start || 0) + tables.maxp.offset; + const version = font.getInt32(); + const numGlyphs = font.getUint16(); + if (properties.scaleFactors?.length === numGlyphs && isTrueType) { + const { + scaleFactors + } = properties; + const isGlyphLocationsLong = int16(tables.head.data[50], tables.head.data[51]); + const glyphs = new _glyf.GlyfTable({ + glyfTable: tables.glyf.data, + isGlyphLocationsLong, + locaTable: tables.loca.data, + numGlyphs + }); + glyphs.scale(scaleFactors); + const { + glyf, + loca, + isLocationLong + } = glyphs.write(); + tables.glyf.data = glyf; + tables.loca.data = loca; + if (isLocationLong !== !!isGlyphLocationsLong) { + tables.head.data[50] = 0; + tables.head.data[51] = isLocationLong ? 1 : 0; + } + const metrics = tables.hmtx.data; + for (let i = 0; i < numGlyphs; i++) { + const j = 4 * i; + const advanceWidth = Math.round(scaleFactors[i] * int16(metrics[j], metrics[j + 1])); + metrics[j] = advanceWidth >> 8 & 0xff; + metrics[j + 1] = advanceWidth & 0xff; + const lsb = Math.round(scaleFactors[i] * signedInt16(metrics[j + 2], metrics[j + 3])); + writeSignedInt16(metrics, j + 2, lsb); + } + } + let numGlyphsOut = numGlyphs + 1; + let dupFirstEntry = true; + if (numGlyphsOut > 0xffff) { + dupFirstEntry = false; + numGlyphsOut = numGlyphs; + (0, _util.warn)("Not enough space in glyfs to duplicate first glyph."); + } + let maxFunctionDefs = 0; + let maxSizeOfInstructions = 0; + if (version >= 0x00010000 && tables.maxp.length >= 22) { + font.pos += 8; + const maxZones = font.getUint16(); + if (maxZones > 2) { + tables.maxp.data[14] = 0; + tables.maxp.data[15] = 2; + } + font.pos += 4; + maxFunctionDefs = font.getUint16(); + font.pos += 4; + maxSizeOfInstructions = font.getUint16(); + } + tables.maxp.data[4] = numGlyphsOut >> 8; + tables.maxp.data[5] = numGlyphsOut & 255; + const hintsValid = sanitizeTTPrograms(tables.fpgm, tables.prep, tables["cvt "], maxFunctionDefs); + if (!hintsValid) { + delete tables.fpgm; + delete tables.prep; + delete tables["cvt "]; + } + sanitizeMetrics(font, tables.hhea, tables.hmtx, tables.head, numGlyphsOut, dupFirstEntry); + if (!tables.head) { + throw new _util.FormatError('Required "head" table is not found'); + } + sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0); + let missingGlyphs = Object.create(null); + if (isTrueType) { + const isGlyphLocationsLong = int16(tables.head.data[50], tables.head.data[51]); + const glyphsInfo = sanitizeGlyphLocations(tables.loca, tables.glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions); + missingGlyphs = glyphsInfo.missingGlyphs; + if (version >= 0x00010000 && tables.maxp.length >= 22) { + tables.maxp.data[26] = glyphsInfo.maxSizeOfInstructions >> 8; + tables.maxp.data[27] = glyphsInfo.maxSizeOfInstructions & 255; + } + } + if (!tables.hhea) { + throw new _util.FormatError('Required "hhea" table is not found'); + } + if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) { + tables.hhea.data[10] = 0xff; + tables.hhea.data[11] = 0xff; + } + const metricsOverride = { + unitsPerEm: int16(tables.head.data[18], tables.head.data[19]), + yMax: signedInt16(tables.head.data[42], tables.head.data[43]), + yMin: signedInt16(tables.head.data[38], tables.head.data[39]), + ascent: signedInt16(tables.hhea.data[4], tables.hhea.data[5]), + descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7]), + lineGap: signedInt16(tables.hhea.data[8], tables.hhea.data[9]) + }; + this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm; + this.descent = metricsOverride.descent / metricsOverride.unitsPerEm; + this.lineGap = metricsOverride.lineGap / metricsOverride.unitsPerEm; + if (this.cssFontInfo?.lineHeight) { + this.lineHeight = this.cssFontInfo.metrics.lineHeight; + this.lineGap = this.cssFontInfo.metrics.lineGap; + } else { + this.lineHeight = this.ascent - this.descent + this.lineGap; + } + if (tables.post) { + readPostScriptTable(tables.post, properties, numGlyphs); + } + tables.post = { + tag: "post", + data: createPostTable(properties) + }; + const charCodeToGlyphId = []; + function hasGlyph(glyphId) { + return !missingGlyphs[glyphId]; + } + if (properties.composite) { + const cidToGidMap = properties.cidToGidMap || []; + const isCidToGidMapEmpty = cidToGidMap.length === 0; + properties.cMap.forEach(function (charCode, cid) { + if (typeof cid === "string") { + cid = convertCidString(charCode, cid, true); + } + if (cid > 0xffff) { + throw new _util.FormatError("Max size of CID is 65,535"); + } + let glyphId = -1; + if (isCidToGidMapEmpty) { + glyphId = cid; + } else if (cidToGidMap[cid] !== undefined) { + glyphId = cidToGidMap[cid]; + } + if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) { + charCodeToGlyphId[charCode] = glyphId; + } + }); + } else { + const cmapTable = readCmapTable(tables.cmap, font, this.isSymbolicFont, properties.hasEncoding); + const cmapPlatformId = cmapTable.platformId; + const cmapEncodingId = cmapTable.encodingId; + const cmapMappings = cmapTable.mappings; + let baseEncoding = [], + forcePostTable = false; + if (properties.hasEncoding && (properties.baseEncodingName === "MacRomanEncoding" || properties.baseEncodingName === "WinAnsiEncoding")) { + baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName); + } + if (properties.hasEncoding && !this.isSymbolicFont && (cmapPlatformId === 3 && cmapEncodingId === 1 || cmapPlatformId === 1 && cmapEncodingId === 0)) { + const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); + for (let charCode = 0; charCode < 256; charCode++) { + let glyphName; + if (this.differences[charCode] !== undefined) { + glyphName = this.differences[charCode]; + } else if (baseEncoding.length && baseEncoding[charCode] !== "") { + glyphName = baseEncoding[charCode]; + } else { + glyphName = _encodings.StandardEncoding[charCode]; + } + if (!glyphName) { + continue; + } + const standardGlyphName = (0, _fonts_utils.recoverGlyphName)(glyphName, glyphsUnicodeMap); + let unicodeOrCharCode; + if (cmapPlatformId === 3 && cmapEncodingId === 1) { + unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName]; + } else if (cmapPlatformId === 1 && cmapEncodingId === 0) { + unicodeOrCharCode = _encodings.MacRomanEncoding.indexOf(standardGlyphName); + } + if (unicodeOrCharCode === undefined) { + if (!properties.glyphNames && properties.hasIncludedToUnicodeMap && !(this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap)) { + const unicode = this.toUnicode.get(charCode); + if (unicode) { + unicodeOrCharCode = unicode.codePointAt(0); + } + } + if (unicodeOrCharCode === undefined) { + continue; + } + } + for (const mapping of cmapMappings) { + if (mapping.charCode !== unicodeOrCharCode) { + continue; + } + charCodeToGlyphId[charCode] = mapping.glyphId; + break; + } + } + } else if (cmapPlatformId === 0) { + for (const mapping of cmapMappings) { + charCodeToGlyphId[mapping.charCode] = mapping.glyphId; + } + forcePostTable = true; + } else { + for (const mapping of cmapMappings) { + let charCode = mapping.charCode; + if (cmapPlatformId === 3 && charCode >= 0xf000 && charCode <= 0xf0ff) { + charCode &= 0xff; + } + charCodeToGlyphId[charCode] = mapping.glyphId; + } + } + if (properties.glyphNames && (baseEncoding.length || this.differences.length)) { + for (let i = 0; i < 256; ++i) { + if (!forcePostTable && charCodeToGlyphId[i] !== undefined) { + continue; + } + const glyphName = this.differences[i] || baseEncoding[i]; + if (!glyphName) { + continue; + } + const glyphId = properties.glyphNames.indexOf(glyphName); + if (glyphId > 0 && hasGlyph(glyphId)) { + charCodeToGlyphId[i] = glyphId; + } + } + } + } + if (charCodeToGlyphId.length === 0) { + charCodeToGlyphId[0] = 0; + } + let glyphZeroId = numGlyphsOut - 1; + if (!dupFirstEntry) { + glyphZeroId = 0; + } + if (!properties.cssFontInfo) { + const newMapping = adjustMapping(charCodeToGlyphId, hasGlyph, glyphZeroId, this.toUnicode); + this.toFontChar = newMapping.toFontChar; + tables.cmap = { + tag: "cmap", + data: createCmapTable(newMapping.charCodeToGlyphId, newMapping.toUnicodeExtraMap, numGlyphsOut) + }; + if (!tables["OS/2"] || !validateOS2Table(tables["OS/2"], font)) { + tables["OS/2"] = { + tag: "OS/2", + data: createOS2Table(properties, newMapping.charCodeToGlyphId, metricsOverride) + }; + } + } + if (!isTrueType) { + try { + cffFile = new _stream.Stream(tables["CFF "].data); + const parser = new _cff_parser.CFFParser(cffFile, properties, _fonts_utils.SEAC_ANALYSIS_ENABLED); + cff = parser.parse(); + cff.duplicateFirstGlyph(); + const compiler = new _cff_parser.CFFCompiler(cff); + tables["CFF "].data = compiler.compile(); + } catch { + (0, _util.warn)("Failed to compile font " + properties.loadedName); + } + } + if (!tables.name) { + tables.name = { + tag: "name", + data: createNameTable(this.name) + }; + } else { + const [namePrototype, nameRecords] = readNameTable(tables.name); + tables.name.data = createNameTable(name, namePrototype); + this.psName = namePrototype[0][6] || null; + if (!properties.composite) { + adjustTrueTypeToUnicode(properties, this.isSymbolicFont, nameRecords); + } + } + const builder = new _opentype_file_builder.OpenTypeFileBuilder(header.version); + for (const tableTag in tables) { + builder.addTable(tableTag, tables[tableTag].data); + } + return builder.toArray(); + } + convert(fontName, font, properties) { + properties.fixedPitch = false; + if (properties.builtInEncoding) { + adjustType1ToUnicode(properties, properties.builtInEncoding); + } + let glyphZeroId = 1; + if (font instanceof _cff_font.CFFFont) { + glyphZeroId = font.numGlyphs - 1; + } + const mapping = font.getGlyphMapping(properties); + let newMapping = null; + let newCharCodeToGlyphId = mapping; + let toUnicodeExtraMap = null; + if (!properties.cssFontInfo) { + newMapping = adjustMapping(mapping, font.hasGlyphId.bind(font), glyphZeroId, this.toUnicode); + this.toFontChar = newMapping.toFontChar; + newCharCodeToGlyphId = newMapping.charCodeToGlyphId; + toUnicodeExtraMap = newMapping.toUnicodeExtraMap; + } + const numGlyphs = font.numGlyphs; + function getCharCodes(charCodeToGlyphId, glyphId) { + let charCodes = null; + for (const charCode in charCodeToGlyphId) { + if (glyphId === charCodeToGlyphId[charCode]) { + (charCodes ||= []).push(charCode | 0); + } + } + return charCodes; + } + function createCharCode(charCodeToGlyphId, glyphId) { + for (const charCode in charCodeToGlyphId) { + if (glyphId === charCodeToGlyphId[charCode]) { + return charCode | 0; + } + } + newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] = glyphId; + return newMapping.nextAvailableFontCharCode++; + } + const seacs = font.seacs; + if (newMapping && _fonts_utils.SEAC_ANALYSIS_ENABLED && seacs?.length) { + const matrix = properties.fontMatrix || _util.FONT_IDENTITY_MATRIX; + const charset = font.getCharset(); + const seacMap = Object.create(null); + for (let glyphId in seacs) { + glyphId |= 0; + const seac = seacs[glyphId]; + const baseGlyphName = _encodings.StandardEncoding[seac[2]]; + const accentGlyphName = _encodings.StandardEncoding[seac[3]]; + const baseGlyphId = charset.indexOf(baseGlyphName); + const accentGlyphId = charset.indexOf(accentGlyphName); + if (baseGlyphId < 0 || accentGlyphId < 0) { + continue; + } + const accentOffset = { + x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4], + y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5] + }; + const charCodes = getCharCodes(mapping, glyphId); + if (!charCodes) { + continue; + } + for (const charCode of charCodes) { + const charCodeToGlyphId = newMapping.charCodeToGlyphId; + const baseFontCharCode = createCharCode(charCodeToGlyphId, baseGlyphId); + const accentFontCharCode = createCharCode(charCodeToGlyphId, accentGlyphId); + seacMap[charCode] = { + baseFontCharCode, + accentFontCharCode, + accentOffset + }; + } + } + properties.seacMap = seacMap; + } + const unitsPerEm = 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0]; + const builder = new _opentype_file_builder.OpenTypeFileBuilder("\x4F\x54\x54\x4F"); + builder.addTable("CFF ", font.data); + builder.addTable("OS/2", createOS2Table(properties, newCharCodeToGlyphId)); + builder.addTable("cmap", createCmapTable(newCharCodeToGlyphId, toUnicodeExtraMap, numGlyphs)); + builder.addTable("head", "\x00\x01\x00\x00" + "\x00\x00\x10\x00" + "\x00\x00\x00\x00" + "\x5F\x0F\x3C\xF5" + "\x00\x00" + safeString16(unitsPerEm) + "\x00\x00\x00\x00\x9e\x0b\x7e\x27" + "\x00\x00\x00\x00\x9e\x0b\x7e\x27" + "\x00\x00" + safeString16(properties.descent) + "\x0F\xFF" + safeString16(properties.ascent) + string16(properties.italicAngle ? 2 : 0) + "\x00\x11" + "\x00\x00" + "\x00\x00" + "\x00\x00"); + builder.addTable("hhea", "\x00\x01\x00\x00" + safeString16(properties.ascent) + safeString16(properties.descent) + "\x00\x00" + "\xFF\xFF" + "\x00\x00" + "\x00\x00" + "\x00\x00" + safeString16(properties.capHeight) + safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + "\x00\x00" + "\x00\x00" + "\x00\x00" + "\x00\x00" + "\x00\x00" + "\x00\x00" + string16(numGlyphs)); + builder.addTable("hmtx", function fontFieldsHmtx() { + const charstrings = font.charstrings; + const cffWidths = font.cff ? font.cff.widths : null; + let hmtx = "\x00\x00\x00\x00"; + for (let i = 1, ii = numGlyphs; i < ii; i++) { + let width = 0; + if (charstrings) { + const charstring = charstrings[i - 1]; + width = "width" in charstring ? charstring.width : 0; + } else if (cffWidths) { + width = Math.ceil(cffWidths[i] || 0); + } + hmtx += string16(width) + string16(0); + } + return hmtx; + }()); + builder.addTable("maxp", "\x00\x00\x50\x00" + string16(numGlyphs)); + builder.addTable("name", createNameTable(fontName)); + builder.addTable("post", createPostTable(properties)); + return builder.toArray(); + } + get spaceWidth() { + const possibleSpaceReplacements = ["space", "minus", "one", "i", "I"]; + let width; + for (const glyphName of possibleSpaceReplacements) { + if (glyphName in this.widths) { + width = this.widths[glyphName]; + break; + } + const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); + const glyphUnicode = glyphsUnicodeMap[glyphName]; + let charcode = 0; + if (this.composite && this.cMap.contains(glyphUnicode)) { + charcode = this.cMap.lookup(glyphUnicode); + if (typeof charcode === "string") { + charcode = convertCidString(glyphUnicode, charcode); + } + } + if (!charcode && this.toUnicode) { + charcode = this.toUnicode.charCodeOf(glyphUnicode); + } + if (charcode <= 0) { + charcode = glyphUnicode; + } + width = this.widths[charcode]; + if (width) { + break; + } + } + return (0, _util.shadow)(this, "spaceWidth", width || this.defaultWidth); + } + _charToGlyph(charcode, isSpace = false) { + let glyph = this._glyphCache[charcode]; + if (glyph?.isSpace === isSpace) { + return glyph; + } + let fontCharCode, width, operatorListId; + let widthCode = charcode; + if (this.cMap?.contains(charcode)) { + widthCode = this.cMap.lookup(charcode); + if (typeof widthCode === "string") { + widthCode = convertCidString(charcode, widthCode); + } + } + width = this.widths[widthCode]; + if (typeof width !== "number") { + width = this.defaultWidth; + } + const vmetric = this.vmetrics?.[widthCode]; + let unicode = this.toUnicode.get(charcode) || charcode; + if (typeof unicode === "number") { + unicode = String.fromCharCode(unicode); + } + let isInFont = this.toFontChar[charcode] !== undefined; + fontCharCode = this.toFontChar[charcode] || charcode; + if (this.missingFile) { + const glyphName = this.differences[charcode] || this.defaultEncoding[charcode]; + if ((glyphName === ".notdef" || glyphName === "") && this.type === "Type1") { + fontCharCode = 0x20; + } + fontCharCode = (0, _unicode.mapSpecialUnicodeValues)(fontCharCode); + } + if (this.isType3Font) { + operatorListId = fontCharCode; + } + let accent = null; + if (this.seacMap?.[charcode]) { + isInFont = true; + const seac = this.seacMap[charcode]; + fontCharCode = seac.baseFontCharCode; + accent = { + fontChar: String.fromCodePoint(seac.accentFontCharCode), + offset: seac.accentOffset + }; + } + let fontChar = ""; + if (typeof fontCharCode === "number") { + if (fontCharCode <= 0x10ffff) { + fontChar = String.fromCodePoint(fontCharCode); + } else { + (0, _util.warn)(`charToGlyph - invalid fontCharCode: ${fontCharCode}`); + } + } + glyph = new Glyph(charcode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont); + return this._glyphCache[charcode] = glyph; + } + charsToGlyphs(chars) { + let glyphs = this._charsCache[chars]; + if (glyphs) { + return glyphs; + } + glyphs = []; + if (this.cMap) { + const c = Object.create(null), + ii = chars.length; + let i = 0; + while (i < ii) { + this.cMap.readCharCode(chars, i, c); + const { + charcode, + length + } = c; + i += length; + const glyph = this._charToGlyph(charcode, length === 1 && chars.charCodeAt(i - 1) === 0x20); + glyphs.push(glyph); + } + } else { + for (let i = 0, ii = chars.length; i < ii; ++i) { + const charcode = chars.charCodeAt(i); + const glyph = this._charToGlyph(charcode, charcode === 0x20); + glyphs.push(glyph); + } + } + return this._charsCache[chars] = glyphs; + } + getCharPositions(chars) { + const positions = []; + if (this.cMap) { + const c = Object.create(null); + let i = 0; + while (i < chars.length) { + this.cMap.readCharCode(chars, i, c); + const length = c.length; + positions.push([i, i + length]); + i += length; + } + } else { + for (let i = 0, ii = chars.length; i < ii; ++i) { + positions.push([i, i + 1]); + } + } + return positions; + } + get glyphCacheValues() { + return Object.values(this._glyphCache); + } + encodeString(str) { + const buffers = []; + const currentBuf = []; + const hasCurrentBufErrors = () => buffers.length % 2 === 1; + const getCharCode = this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap ? unicode => this.toUnicode.charCodeOf(unicode) : unicode => this.toUnicode.charCodeOf(String.fromCodePoint(unicode)); + for (let i = 0, ii = str.length; i < ii; i++) { + const unicode = str.codePointAt(i); + if (unicode > 0xd7ff && (unicode < 0xe000 || unicode > 0xfffd)) { + i++; + } + if (this.toUnicode) { + const charCode = getCharCode(unicode); + if (charCode !== -1) { + if (hasCurrentBufErrors()) { + buffers.push(currentBuf.join("")); + currentBuf.length = 0; + } + const charCodeLength = this.cMap ? this.cMap.getCharCodeLength(charCode) : 1; + for (let j = charCodeLength - 1; j >= 0; j--) { + currentBuf.push(String.fromCharCode(charCode >> 8 * j & 0xff)); + } + continue; + } + } + if (!hasCurrentBufErrors()) { + buffers.push(currentBuf.join("")); + currentBuf.length = 0; + } + currentBuf.push(String.fromCodePoint(unicode)); + } + buffers.push(currentBuf.join("")); + return buffers; + } +} +exports.Font = Font; +class ErrorFont { + constructor(error) { + this.error = error; + this.loadedName = "g_font_error"; + this.missingFile = true; + } + charsToGlyphs() { + return []; + } + encodeString(chars) { + return [chars]; + } + exportData(extraProperties = false) { + return { + error: this.error + }; + } +} +exports.ErrorFont = ErrorFont; + +/***/ }), +/* 35 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.CFFTopDict = exports.CFFStrings = exports.CFFStandardStrings = exports.CFFPrivateDict = exports.CFFParser = exports.CFFIndex = exports.CFFHeader = exports.CFFFDSelect = exports.CFFCompiler = exports.CFFCharset = exports.CFF = void 0; +var _util = __w_pdfjs_require__(2); +var _charsets = __w_pdfjs_require__(36); +var _encodings = __w_pdfjs_require__(37); +const MAX_SUBR_NESTING = 10; +const CFFStandardStrings = [".notdef", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", "currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", "endash", "dagger", "daggerdbl", "periodcentered", "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", "perthousand", "questiondown", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", "dieresis", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "emdash", "AE", "ordfeminine", "Lslash", "Oslash", "OE", "ordmasculine", "ae", "dotlessi", "lslash", "oslash", "oe", "germandbls", "onesuperior", "logicalnot", "mu", "trademark", "Eth", "onehalf", "plusminus", "Thorn", "onequarter", "divide", "brokenbar", "degree", "thorn", "threequarters", "twosuperior", "registered", "minus", "eth", "multiply", "threesuperior", "copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave", "Aring", "Atilde", "Ccedilla", "Eacute", "Ecircumflex", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Ntilde", "Oacute", "Ocircumflex", "Odieresis", "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex", "Udieresis", "Ugrave", "Yacute", "Ydieresis", "Zcaron", "aacute", "acircumflex", "adieresis", "agrave", "aring", "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis", "egrave", "iacute", "icircumflex", "idieresis", "igrave", "ntilde", "oacute", "ocircumflex", "odieresis", "ograve", "otilde", "scaron", "uacute", "ucircumflex", "udieresis", "ugrave", "yacute", "ydieresis", "zcaron", "exclamsmall", "Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "commasuperior", "threequartersemdash", "periodsuperior", "questionsmall", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior", "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", "ffi", "ffl", "parenleftinferior", "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "exclamdownsmall", "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash", "hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "zerosuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall", "001.000", "001.001", "001.002", "001.003", "Black", "Bold", "Book", "Light", "Medium", "Regular", "Roman", "Semibold"]; +exports.CFFStandardStrings = CFFStandardStrings; +const NUM_STANDARD_CFF_STRINGS = 391; +const CharstringValidationData = [null, { + id: "hstem", + min: 2, + stackClearing: true, + stem: true +}, null, { + id: "vstem", + min: 2, + stackClearing: true, + stem: true +}, { + id: "vmoveto", + min: 1, + stackClearing: true +}, { + id: "rlineto", + min: 2, + resetStack: true +}, { + id: "hlineto", + min: 1, + resetStack: true +}, { + id: "vlineto", + min: 1, + resetStack: true +}, { + id: "rrcurveto", + min: 6, + resetStack: true +}, null, { + id: "callsubr", + min: 1, + undefStack: true +}, { + id: "return", + min: 0, + undefStack: true +}, null, null, { + id: "endchar", + min: 0, + stackClearing: true +}, null, null, null, { + id: "hstemhm", + min: 2, + stackClearing: true, + stem: true +}, { + id: "hintmask", + min: 0, + stackClearing: true +}, { + id: "cntrmask", + min: 0, + stackClearing: true +}, { + id: "rmoveto", + min: 2, + stackClearing: true +}, { + id: "hmoveto", + min: 1, + stackClearing: true +}, { + id: "vstemhm", + min: 2, + stackClearing: true, + stem: true +}, { + id: "rcurveline", + min: 8, + resetStack: true +}, { + id: "rlinecurve", + min: 8, + resetStack: true +}, { + id: "vvcurveto", + min: 4, + resetStack: true +}, { + id: "hhcurveto", + min: 4, + resetStack: true +}, null, { + id: "callgsubr", + min: 1, + undefStack: true +}, { + id: "vhcurveto", + min: 4, + resetStack: true +}, { + id: "hvcurveto", + min: 4, + resetStack: true +}]; +const CharstringValidationData12 = [null, null, null, { + id: "and", + min: 2, + stackDelta: -1 +}, { + id: "or", + min: 2, + stackDelta: -1 +}, { + id: "not", + min: 1, + stackDelta: 0 +}, null, null, null, { + id: "abs", + min: 1, + stackDelta: 0 +}, { + id: "add", + min: 2, + stackDelta: -1, + stackFn(stack, index) { + stack[index - 2] = stack[index - 2] + stack[index - 1]; + } +}, { + id: "sub", + min: 2, + stackDelta: -1, + stackFn(stack, index) { + stack[index - 2] = stack[index - 2] - stack[index - 1]; + } +}, { + id: "div", + min: 2, + stackDelta: -1, + stackFn(stack, index) { + stack[index - 2] = stack[index - 2] / stack[index - 1]; + } +}, null, { + id: "neg", + min: 1, + stackDelta: 0, + stackFn(stack, index) { + stack[index - 1] = -stack[index - 1]; + } +}, { + id: "eq", + min: 2, + stackDelta: -1 +}, null, null, { + id: "drop", + min: 1, + stackDelta: -1 +}, null, { + id: "put", + min: 2, + stackDelta: -2 +}, { + id: "get", + min: 1, + stackDelta: 0 +}, { + id: "ifelse", + min: 4, + stackDelta: -3 +}, { + id: "random", + min: 0, + stackDelta: 1 +}, { + id: "mul", + min: 2, + stackDelta: -1, + stackFn(stack, index) { + stack[index - 2] = stack[index - 2] * stack[index - 1]; + } +}, null, { + id: "sqrt", + min: 1, + stackDelta: 0 +}, { + id: "dup", + min: 1, + stackDelta: 1 +}, { + id: "exch", + min: 2, + stackDelta: 0 +}, { + id: "index", + min: 2, + stackDelta: 0 +}, { + id: "roll", + min: 3, + stackDelta: -2 +}, null, null, null, { + id: "hflex", + min: 7, + resetStack: true +}, { + id: "flex", + min: 13, + resetStack: true +}, { + id: "hflex1", + min: 9, + resetStack: true +}, { + id: "flex1", + min: 11, + resetStack: true +}]; +class CFFParser { + constructor(file, properties, seacAnalysisEnabled) { + this.bytes = file.getBytes(); + this.properties = properties; + this.seacAnalysisEnabled = !!seacAnalysisEnabled; + } + parse() { + const properties = this.properties; + const cff = new CFF(); + this.cff = cff; + const header = this.parseHeader(); + const nameIndex = this.parseIndex(header.endPos); + const topDictIndex = this.parseIndex(nameIndex.endPos); + const stringIndex = this.parseIndex(topDictIndex.endPos); + const globalSubrIndex = this.parseIndex(stringIndex.endPos); + const topDictParsed = this.parseDict(topDictIndex.obj.get(0)); + const topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings); + cff.header = header.obj; + cff.names = this.parseNameIndex(nameIndex.obj); + cff.strings = this.parseStringIndex(stringIndex.obj); + cff.topDict = topDict; + cff.globalSubrIndex = globalSubrIndex.obj; + this.parsePrivateDict(cff.topDict); + cff.isCIDFont = topDict.hasName("ROS"); + const charStringOffset = topDict.getByName("CharStrings"); + const charStringIndex = this.parseIndex(charStringOffset).obj; + const fontMatrix = topDict.getByName("FontMatrix"); + if (fontMatrix) { + properties.fontMatrix = fontMatrix; + } + const fontBBox = topDict.getByName("FontBBox"); + if (fontBBox) { + properties.ascent = Math.max(fontBBox[3], fontBBox[1]); + properties.descent = Math.min(fontBBox[1], fontBBox[3]); + properties.ascentScaled = true; + } + let charset, encoding; + if (cff.isCIDFont) { + const fdArrayIndex = this.parseIndex(topDict.getByName("FDArray")).obj; + for (let i = 0, ii = fdArrayIndex.count; i < ii; ++i) { + const dictRaw = fdArrayIndex.get(i); + const fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw), cff.strings); + this.parsePrivateDict(fontDict); + cff.fdArray.push(fontDict); + } + encoding = null; + charset = this.parseCharsets(topDict.getByName("charset"), charStringIndex.count, cff.strings, true); + cff.fdSelect = this.parseFDSelect(topDict.getByName("FDSelect"), charStringIndex.count); + } else { + charset = this.parseCharsets(topDict.getByName("charset"), charStringIndex.count, cff.strings, false); + encoding = this.parseEncoding(topDict.getByName("Encoding"), properties, cff.strings, charset.charset); + } + cff.charset = charset; + cff.encoding = encoding; + const charStringsAndSeacs = this.parseCharStrings({ + charStrings: charStringIndex, + localSubrIndex: topDict.privateDict.subrsIndex, + globalSubrIndex: globalSubrIndex.obj, + fdSelect: cff.fdSelect, + fdArray: cff.fdArray, + privateDict: topDict.privateDict + }); + cff.charStrings = charStringsAndSeacs.charStrings; + cff.seacs = charStringsAndSeacs.seacs; + cff.widths = charStringsAndSeacs.widths; + return cff; + } + parseHeader() { + let bytes = this.bytes; + const bytesLength = bytes.length; + let offset = 0; + while (offset < bytesLength && bytes[offset] !== 1) { + ++offset; + } + if (offset >= bytesLength) { + throw new _util.FormatError("Invalid CFF header"); + } + if (offset !== 0) { + (0, _util.info)("cff data is shifted"); + bytes = bytes.subarray(offset); + this.bytes = bytes; + } + const major = bytes[0]; + const minor = bytes[1]; + const hdrSize = bytes[2]; + const offSize = bytes[3]; + const header = new CFFHeader(major, minor, hdrSize, offSize); + return { + obj: header, + endPos: hdrSize + }; + } + parseDict(dict) { + let pos = 0; + function parseOperand() { + let value = dict[pos++]; + if (value === 30) { + return parseFloatOperand(); + } else if (value === 28) { + value = dict[pos++]; + value = (value << 24 | dict[pos++] << 16) >> 16; + return value; + } else if (value === 29) { + value = dict[pos++]; + value = value << 8 | dict[pos++]; + value = value << 8 | dict[pos++]; + value = value << 8 | dict[pos++]; + return value; + } else if (value >= 32 && value <= 246) { + return value - 139; + } else if (value >= 247 && value <= 250) { + return (value - 247) * 256 + dict[pos++] + 108; + } else if (value >= 251 && value <= 254) { + return -((value - 251) * 256) - dict[pos++] - 108; + } + (0, _util.warn)('CFFParser_parseDict: "' + value + '" is a reserved command.'); + return NaN; + } + function parseFloatOperand() { + let str = ""; + const eof = 15; + const lookup = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", "E", "E-", null, "-"]; + const length = dict.length; + while (pos < length) { + const b = dict[pos++]; + const b1 = b >> 4; + const b2 = b & 15; + if (b1 === eof) { + break; + } + str += lookup[b1]; + if (b2 === eof) { + break; + } + str += lookup[b2]; + } + return parseFloat(str); + } + let operands = []; + const entries = []; + pos = 0; + const end = dict.length; + while (pos < end) { + let b = dict[pos]; + if (b <= 21) { + if (b === 12) { + b = b << 8 | dict[++pos]; + } + entries.push([b, operands]); + operands = []; + ++pos; + } else { + operands.push(parseOperand()); + } + } + return entries; + } + parseIndex(pos) { + const cffIndex = new CFFIndex(); + const bytes = this.bytes; + const count = bytes[pos++] << 8 | bytes[pos++]; + const offsets = []; + let end = pos; + let i, ii; + if (count !== 0) { + const offsetSize = bytes[pos++]; + const startPos = pos + (count + 1) * offsetSize - 1; + for (i = 0, ii = count + 1; i < ii; ++i) { + let offset = 0; + for (let j = 0; j < offsetSize; ++j) { + offset <<= 8; + offset += bytes[pos++]; + } + offsets.push(startPos + offset); + } + end = offsets[count]; + } + for (i = 0, ii = offsets.length - 1; i < ii; ++i) { + const offsetStart = offsets[i]; + const offsetEnd = offsets[i + 1]; + cffIndex.add(bytes.subarray(offsetStart, offsetEnd)); + } + return { + obj: cffIndex, + endPos: end + }; + } + parseNameIndex(index) { + const names = []; + for (let i = 0, ii = index.count; i < ii; ++i) { + const name = index.get(i); + names.push((0, _util.bytesToString)(name)); + } + return names; + } + parseStringIndex(index) { + const strings = new CFFStrings(); + for (let i = 0, ii = index.count; i < ii; ++i) { + const data = index.get(i); + strings.add((0, _util.bytesToString)(data)); + } + return strings; + } + createDict(Type, dict, strings) { + const cffDict = new Type(strings); + for (const [key, value] of dict) { + cffDict.setByKey(key, value); + } + return cffDict; + } + parseCharString(state, data, localSubrIndex, globalSubrIndex) { + if (!data || state.callDepth > MAX_SUBR_NESTING) { + return false; + } + let stackSize = state.stackSize; + const stack = state.stack; + let length = data.length; + for (let j = 0; j < length;) { + const value = data[j++]; + let validationCommand = null; + if (value === 12) { + const q = data[j++]; + if (q === 0) { + data[j - 2] = 139; + data[j - 1] = 22; + stackSize = 0; + } else { + validationCommand = CharstringValidationData12[q]; + } + } else if (value === 28) { + stack[stackSize] = (data[j] << 24 | data[j + 1] << 16) >> 16; + j += 2; + stackSize++; + } else if (value === 14) { + if (stackSize >= 4) { + stackSize -= 4; + if (this.seacAnalysisEnabled) { + state.seac = stack.slice(stackSize, stackSize + 4); + return false; + } + } + validationCommand = CharstringValidationData[value]; + } else if (value >= 32 && value <= 246) { + stack[stackSize] = value - 139; + stackSize++; + } else if (value >= 247 && value <= 254) { + stack[stackSize] = value < 251 ? (value - 247 << 8) + data[j] + 108 : -(value - 251 << 8) - data[j] - 108; + j++; + stackSize++; + } else if (value === 255) { + stack[stackSize] = (data[j] << 24 | data[j + 1] << 16 | data[j + 2] << 8 | data[j + 3]) / 65536; + j += 4; + stackSize++; + } else if (value === 19 || value === 20) { + state.hints += stackSize >> 1; + if (state.hints === 0) { + data.copyWithin(j - 1, j, -1); + j -= 1; + length -= 1; + continue; + } + j += state.hints + 7 >> 3; + stackSize %= 2; + validationCommand = CharstringValidationData[value]; + } else if (value === 10 || value === 29) { + let subrsIndex; + if (value === 10) { + subrsIndex = localSubrIndex; + } else { + subrsIndex = globalSubrIndex; + } + if (!subrsIndex) { + validationCommand = CharstringValidationData[value]; + (0, _util.warn)("Missing subrsIndex for " + validationCommand.id); + return false; + } + let bias = 32768; + if (subrsIndex.count < 1240) { + bias = 107; + } else if (subrsIndex.count < 33900) { + bias = 1131; + } + const subrNumber = stack[--stackSize] + bias; + if (subrNumber < 0 || subrNumber >= subrsIndex.count || isNaN(subrNumber)) { + validationCommand = CharstringValidationData[value]; + (0, _util.warn)("Out of bounds subrIndex for " + validationCommand.id); + return false; + } + state.stackSize = stackSize; + state.callDepth++; + const valid = this.parseCharString(state, subrsIndex.get(subrNumber), localSubrIndex, globalSubrIndex); + if (!valid) { + return false; + } + state.callDepth--; + stackSize = state.stackSize; + continue; + } else if (value === 11) { + state.stackSize = stackSize; + return true; + } else if (value === 0 && j === data.length) { + data[j - 1] = 14; + validationCommand = CharstringValidationData[14]; + } else if (value === 9) { + data.copyWithin(j - 1, j, -1); + j -= 1; + length -= 1; + continue; + } else { + validationCommand = CharstringValidationData[value]; + } + if (validationCommand) { + if (validationCommand.stem) { + state.hints += stackSize >> 1; + if (value === 3 || value === 23) { + state.hasVStems = true; + } else if (state.hasVStems && (value === 1 || value === 18)) { + (0, _util.warn)("CFF stem hints are in wrong order"); + data[j - 1] = value === 1 ? 3 : 23; + } + } + if ("min" in validationCommand) { + if (!state.undefStack && stackSize < validationCommand.min) { + (0, _util.warn)("Not enough parameters for " + validationCommand.id + "; actual: " + stackSize + ", expected: " + validationCommand.min); + if (stackSize === 0) { + data[j - 1] = 14; + return true; + } + return false; + } + } + if (state.firstStackClearing && validationCommand.stackClearing) { + state.firstStackClearing = false; + stackSize -= validationCommand.min; + if (stackSize >= 2 && validationCommand.stem) { + stackSize %= 2; + } else if (stackSize > 1) { + (0, _util.warn)("Found too many parameters for stack-clearing command"); + } + if (stackSize > 0) { + state.width = stack[stackSize - 1]; + } + } + if ("stackDelta" in validationCommand) { + if ("stackFn" in validationCommand) { + validationCommand.stackFn(stack, stackSize); + } + stackSize += validationCommand.stackDelta; + } else if (validationCommand.stackClearing) { + stackSize = 0; + } else if (validationCommand.resetStack) { + stackSize = 0; + state.undefStack = false; + } else if (validationCommand.undefStack) { + stackSize = 0; + state.undefStack = true; + state.firstStackClearing = false; + } + } + } + if (length < data.length) { + data.fill(14, length); + } + state.stackSize = stackSize; + return true; + } + parseCharStrings({ + charStrings, + localSubrIndex, + globalSubrIndex, + fdSelect, + fdArray, + privateDict + }) { + const seacs = []; + const widths = []; + const count = charStrings.count; + for (let i = 0; i < count; i++) { + const charstring = charStrings.get(i); + const state = { + callDepth: 0, + stackSize: 0, + stack: [], + undefStack: true, + hints: 0, + firstStackClearing: true, + seac: null, + width: null, + hasVStems: false + }; + let valid = true; + let localSubrToUse = null; + let privateDictToUse = privateDict; + if (fdSelect && fdArray.length) { + const fdIndex = fdSelect.getFDIndex(i); + if (fdIndex === -1) { + (0, _util.warn)("Glyph index is not in fd select."); + valid = false; + } + if (fdIndex >= fdArray.length) { + (0, _util.warn)("Invalid fd index for glyph index."); + valid = false; + } + if (valid) { + privateDictToUse = fdArray[fdIndex].privateDict; + localSubrToUse = privateDictToUse.subrsIndex; + } + } else if (localSubrIndex) { + localSubrToUse = localSubrIndex; + } + if (valid) { + valid = this.parseCharString(state, charstring, localSubrToUse, globalSubrIndex); + } + if (state.width !== null) { + const nominalWidth = privateDictToUse.getByName("nominalWidthX"); + widths[i] = nominalWidth + state.width; + } else { + const defaultWidth = privateDictToUse.getByName("defaultWidthX"); + widths[i] = defaultWidth; + } + if (state.seac !== null) { + seacs[i] = state.seac; + } + if (!valid) { + charStrings.set(i, new Uint8Array([14])); + } + } + return { + charStrings, + seacs, + widths + }; + } + emptyPrivateDictionary(parentDict) { + const privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings); + parentDict.setByKey(18, [0, 0]); + parentDict.privateDict = privateDict; + } + parsePrivateDict(parentDict) { + if (!parentDict.hasName("Private")) { + this.emptyPrivateDictionary(parentDict); + return; + } + const privateOffset = parentDict.getByName("Private"); + if (!Array.isArray(privateOffset) || privateOffset.length !== 2) { + parentDict.removeByName("Private"); + return; + } + const size = privateOffset[0]; + const offset = privateOffset[1]; + if (size === 0 || offset >= this.bytes.length) { + this.emptyPrivateDictionary(parentDict); + return; + } + const privateDictEnd = offset + size; + const dictData = this.bytes.subarray(offset, privateDictEnd); + const dict = this.parseDict(dictData); + const privateDict = this.createDict(CFFPrivateDict, dict, parentDict.strings); + parentDict.privateDict = privateDict; + if (privateDict.getByName("ExpansionFactor") === 0) { + privateDict.setByName("ExpansionFactor", 0.06); + } + if (!privateDict.getByName("Subrs")) { + return; + } + const subrsOffset = privateDict.getByName("Subrs"); + const relativeOffset = offset + subrsOffset; + if (subrsOffset === 0 || relativeOffset >= this.bytes.length) { + this.emptyPrivateDictionary(parentDict); + return; + } + const subrsIndex = this.parseIndex(relativeOffset); + privateDict.subrsIndex = subrsIndex.obj; + } + parseCharsets(pos, length, strings, cid) { + if (pos === 0) { + return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE, _charsets.ISOAdobeCharset); + } else if (pos === 1) { + return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT, _charsets.ExpertCharset); + } else if (pos === 2) { + return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET, _charsets.ExpertSubsetCharset); + } + const bytes = this.bytes; + const start = pos; + const format = bytes[pos++]; + const charset = [cid ? 0 : ".notdef"]; + let id, count, i; + length -= 1; + switch (format) { + case 0: + for (i = 0; i < length; i++) { + id = bytes[pos++] << 8 | bytes[pos++]; + charset.push(cid ? id : strings.get(id)); + } + break; + case 1: + while (charset.length <= length) { + id = bytes[pos++] << 8 | bytes[pos++]; + count = bytes[pos++]; + for (i = 0; i <= count; i++) { + charset.push(cid ? id++ : strings.get(id++)); + } + } + break; + case 2: + while (charset.length <= length) { + id = bytes[pos++] << 8 | bytes[pos++]; + count = bytes[pos++] << 8 | bytes[pos++]; + for (i = 0; i <= count; i++) { + charset.push(cid ? id++ : strings.get(id++)); + } + } + break; + default: + throw new _util.FormatError("Unknown charset format"); + } + const end = pos; + const raw = bytes.subarray(start, end); + return new CFFCharset(false, format, charset, raw); + } + parseEncoding(pos, properties, strings, charset) { + const encoding = Object.create(null); + const bytes = this.bytes; + let predefined = false; + let format, i, ii; + let raw = null; + function readSupplement() { + const supplementsCount = bytes[pos++]; + for (i = 0; i < supplementsCount; i++) { + const code = bytes[pos++]; + const sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff); + encoding[code] = charset.indexOf(strings.get(sid)); + } + } + if (pos === 0 || pos === 1) { + predefined = true; + format = pos; + const baseEncoding = pos ? _encodings.ExpertEncoding : _encodings.StandardEncoding; + for (i = 0, ii = charset.length; i < ii; i++) { + const index = baseEncoding.indexOf(charset[i]); + if (index !== -1) { + encoding[index] = i; + } + } + } else { + const dataStart = pos; + format = bytes[pos++]; + switch (format & 0x7f) { + case 0: + const glyphsCount = bytes[pos++]; + for (i = 1; i <= glyphsCount; i++) { + encoding[bytes[pos++]] = i; + } + break; + case 1: + const rangesCount = bytes[pos++]; + let gid = 1; + for (i = 0; i < rangesCount; i++) { + const start = bytes[pos++]; + const left = bytes[pos++]; + for (let j = start; j <= start + left; j++) { + encoding[j] = gid++; + } + } + break; + default: + throw new _util.FormatError(`Unknown encoding format: ${format} in CFF`); + } + const dataEnd = pos; + if (format & 0x80) { + bytes[dataStart] &= 0x7f; + readSupplement(); + } + raw = bytes.subarray(dataStart, dataEnd); + } + format &= 0x7f; + return new CFFEncoding(predefined, format, encoding, raw); + } + parseFDSelect(pos, length) { + const bytes = this.bytes; + const format = bytes[pos++]; + const fdSelect = []; + let i; + switch (format) { + case 0: + for (i = 0; i < length; ++i) { + const id = bytes[pos++]; + fdSelect.push(id); + } + break; + case 3: + const rangesCount = bytes[pos++] << 8 | bytes[pos++]; + for (i = 0; i < rangesCount; ++i) { + let first = bytes[pos++] << 8 | bytes[pos++]; + if (i === 0 && first !== 0) { + (0, _util.warn)("parseFDSelect: The first range must have a first GID of 0" + " -- trying to recover."); + first = 0; + } + const fdIndex = bytes[pos++]; + const next = bytes[pos] << 8 | bytes[pos + 1]; + for (let j = first; j < next; ++j) { + fdSelect.push(fdIndex); + } + } + pos += 2; + break; + default: + throw new _util.FormatError(`parseFDSelect: Unknown format "${format}".`); + } + if (fdSelect.length !== length) { + throw new _util.FormatError("parseFDSelect: Invalid font data."); + } + return new CFFFDSelect(format, fdSelect); + } +} +exports.CFFParser = CFFParser; +class CFF { + constructor() { + this.header = null; + this.names = []; + this.topDict = null; + this.strings = new CFFStrings(); + this.globalSubrIndex = null; + this.encoding = null; + this.charset = null; + this.charStrings = null; + this.fdArray = []; + this.fdSelect = null; + this.isCIDFont = false; + } + duplicateFirstGlyph() { + if (this.charStrings.count >= 65535) { + (0, _util.warn)("Not enough space in charstrings to duplicate first glyph."); + return; + } + const glyphZero = this.charStrings.get(0); + this.charStrings.add(glyphZero); + if (this.isCIDFont) { + this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]); + } + } + hasGlyphId(id) { + if (id < 0 || id >= this.charStrings.count) { + return false; + } + const glyph = this.charStrings.get(id); + return glyph.length > 0; + } +} +exports.CFF = CFF; +class CFFHeader { + constructor(major, minor, hdrSize, offSize) { + this.major = major; + this.minor = minor; + this.hdrSize = hdrSize; + this.offSize = offSize; + } +} +exports.CFFHeader = CFFHeader; +class CFFStrings { + constructor() { + this.strings = []; + } + get(index) { + if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) { + return CFFStandardStrings[index]; + } + if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) { + return this.strings[index - NUM_STANDARD_CFF_STRINGS]; + } + return CFFStandardStrings[0]; + } + getSID(str) { + let index = CFFStandardStrings.indexOf(str); + if (index !== -1) { + return index; + } + index = this.strings.indexOf(str); + if (index !== -1) { + return index + NUM_STANDARD_CFF_STRINGS; + } + return -1; + } + add(value) { + this.strings.push(value); + } + get count() { + return this.strings.length; + } +} +exports.CFFStrings = CFFStrings; +class CFFIndex { + constructor() { + this.objects = []; + this.length = 0; + } + add(data) { + this.length += data.length; + this.objects.push(data); + } + set(index, data) { + this.length += data.length - this.objects[index].length; + this.objects[index] = data; + } + get(index) { + return this.objects[index]; + } + get count() { + return this.objects.length; + } +} +exports.CFFIndex = CFFIndex; +class CFFDict { + constructor(tables, strings) { + this.keyToNameMap = tables.keyToNameMap; + this.nameToKeyMap = tables.nameToKeyMap; + this.defaults = tables.defaults; + this.types = tables.types; + this.opcodes = tables.opcodes; + this.order = tables.order; + this.strings = strings; + this.values = Object.create(null); + } + setByKey(key, value) { + if (!(key in this.keyToNameMap)) { + return false; + } + if (value.length === 0) { + return true; + } + for (const val of value) { + if (isNaN(val)) { + (0, _util.warn)(`Invalid CFFDict value: "${value}" for key "${key}".`); + return true; + } + } + const type = this.types[key]; + if (type === "num" || type === "sid" || type === "offset") { + value = value[0]; + } + this.values[key] = value; + return true; + } + setByName(name, value) { + if (!(name in this.nameToKeyMap)) { + throw new _util.FormatError(`Invalid dictionary name "${name}"`); + } + this.values[this.nameToKeyMap[name]] = value; + } + hasName(name) { + return this.nameToKeyMap[name] in this.values; + } + getByName(name) { + if (!(name in this.nameToKeyMap)) { + throw new _util.FormatError(`Invalid dictionary name ${name}"`); + } + const key = this.nameToKeyMap[name]; + if (!(key in this.values)) { + return this.defaults[key]; + } + return this.values[key]; + } + removeByName(name) { + delete this.values[this.nameToKeyMap[name]]; + } + static createTables(layout) { + const tables = { + keyToNameMap: {}, + nameToKeyMap: {}, + defaults: {}, + types: {}, + opcodes: {}, + order: [] + }; + for (const entry of layout) { + const key = Array.isArray(entry[0]) ? (entry[0][0] << 8) + entry[0][1] : entry[0]; + tables.keyToNameMap[key] = entry[1]; + tables.nameToKeyMap[entry[1]] = key; + tables.types[key] = entry[2]; + tables.defaults[key] = entry[3]; + tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]]; + tables.order.push(key); + } + return tables; + } +} +const CFFTopDictLayout = [[[12, 30], "ROS", ["sid", "sid", "num"], null], [[12, 20], "SyntheticBase", "num", null], [0, "version", "sid", null], [1, "Notice", "sid", null], [[12, 0], "Copyright", "sid", null], [2, "FullName", "sid", null], [3, "FamilyName", "sid", null], [4, "Weight", "sid", null], [[12, 1], "isFixedPitch", "num", 0], [[12, 2], "ItalicAngle", "num", 0], [[12, 3], "UnderlinePosition", "num", -100], [[12, 4], "UnderlineThickness", "num", 50], [[12, 5], "PaintType", "num", 0], [[12, 6], "CharstringType", "num", 2], [[12, 7], "FontMatrix", ["num", "num", "num", "num", "num", "num"], [0.001, 0, 0, 0.001, 0, 0]], [13, "UniqueID", "num", null], [5, "FontBBox", ["num", "num", "num", "num"], [0, 0, 0, 0]], [[12, 8], "StrokeWidth", "num", 0], [14, "XUID", "array", null], [15, "charset", "offset", 0], [16, "Encoding", "offset", 0], [17, "CharStrings", "offset", 0], [18, "Private", ["offset", "offset"], null], [[12, 21], "PostScript", "sid", null], [[12, 22], "BaseFontName", "sid", null], [[12, 23], "BaseFontBlend", "delta", null], [[12, 31], "CIDFontVersion", "num", 0], [[12, 32], "CIDFontRevision", "num", 0], [[12, 33], "CIDFontType", "num", 0], [[12, 34], "CIDCount", "num", 8720], [[12, 35], "UIDBase", "num", null], [[12, 37], "FDSelect", "offset", null], [[12, 36], "FDArray", "offset", null], [[12, 38], "FontName", "sid", null]]; +class CFFTopDict extends CFFDict { + static get tables() { + return (0, _util.shadow)(this, "tables", this.createTables(CFFTopDictLayout)); + } + constructor(strings) { + super(CFFTopDict.tables, strings); + this.privateDict = null; + } +} +exports.CFFTopDict = CFFTopDict; +const CFFPrivateDictLayout = [[6, "BlueValues", "delta", null], [7, "OtherBlues", "delta", null], [8, "FamilyBlues", "delta", null], [9, "FamilyOtherBlues", "delta", null], [[12, 9], "BlueScale", "num", 0.039625], [[12, 10], "BlueShift", "num", 7], [[12, 11], "BlueFuzz", "num", 1], [10, "StdHW", "num", null], [11, "StdVW", "num", null], [[12, 12], "StemSnapH", "delta", null], [[12, 13], "StemSnapV", "delta", null], [[12, 14], "ForceBold", "num", 0], [[12, 17], "LanguageGroup", "num", 0], [[12, 18], "ExpansionFactor", "num", 0.06], [[12, 19], "initialRandomSeed", "num", 0], [20, "defaultWidthX", "num", 0], [21, "nominalWidthX", "num", 0], [19, "Subrs", "offset", null]]; +class CFFPrivateDict extends CFFDict { + static get tables() { + return (0, _util.shadow)(this, "tables", this.createTables(CFFPrivateDictLayout)); + } + constructor(strings) { + super(CFFPrivateDict.tables, strings); + this.subrsIndex = null; + } +} +exports.CFFPrivateDict = CFFPrivateDict; +const CFFCharsetPredefinedTypes = { + ISO_ADOBE: 0, + EXPERT: 1, + EXPERT_SUBSET: 2 +}; +class CFFCharset { + constructor(predefined, format, charset, raw) { + this.predefined = predefined; + this.format = format; + this.charset = charset; + this.raw = raw; + } +} +exports.CFFCharset = CFFCharset; +class CFFEncoding { + constructor(predefined, format, encoding, raw) { + this.predefined = predefined; + this.format = format; + this.encoding = encoding; + this.raw = raw; + } +} +class CFFFDSelect { + constructor(format, fdSelect) { + this.format = format; + this.fdSelect = fdSelect; + } + getFDIndex(glyphIndex) { + if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) { + return -1; + } + return this.fdSelect[glyphIndex]; + } +} +exports.CFFFDSelect = CFFFDSelect; +class CFFOffsetTracker { + constructor() { + this.offsets = Object.create(null); + } + isTracking(key) { + return key in this.offsets; + } + track(key, location) { + if (key in this.offsets) { + throw new _util.FormatError(`Already tracking location of ${key}`); + } + this.offsets[key] = location; + } + offset(value) { + for (const key in this.offsets) { + this.offsets[key] += value; + } + } + setEntryLocation(key, values, output) { + if (!(key in this.offsets)) { + throw new _util.FormatError(`Not tracking location of ${key}`); + } + const data = output.data; + const dataOffset = this.offsets[key]; + const size = 5; + for (let i = 0, ii = values.length; i < ii; ++i) { + const offset0 = i * size + dataOffset; + const offset1 = offset0 + 1; + const offset2 = offset0 + 2; + const offset3 = offset0 + 3; + const offset4 = offset0 + 4; + if (data[offset0] !== 0x1d || data[offset1] !== 0 || data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0) { + throw new _util.FormatError("writing to an offset that is not empty"); + } + const value = values[i]; + data[offset0] = 0x1d; + data[offset1] = value >> 24 & 0xff; + data[offset2] = value >> 16 & 0xff; + data[offset3] = value >> 8 & 0xff; + data[offset4] = value & 0xff; + } + } +} +class CFFCompiler { + constructor(cff) { + this.cff = cff; + } + compile() { + const cff = this.cff; + const output = { + data: [], + length: 0, + add(data) { + try { + this.data.push(...data); + } catch { + this.data = this.data.concat(data); + } + this.length = this.data.length; + } + }; + const header = this.compileHeader(cff.header); + output.add(header); + const nameIndex = this.compileNameIndex(cff.names); + output.add(nameIndex); + if (cff.isCIDFont) { + if (cff.topDict.hasName("FontMatrix")) { + const base = cff.topDict.getByName("FontMatrix"); + cff.topDict.removeByName("FontMatrix"); + for (const subDict of cff.fdArray) { + let matrix = base.slice(0); + if (subDict.hasName("FontMatrix")) { + matrix = _util.Util.transform(matrix, subDict.getByName("FontMatrix")); + } + subDict.setByName("FontMatrix", matrix); + } + } + } + const xuid = cff.topDict.getByName("XUID"); + if (xuid?.length > 16) { + cff.topDict.removeByName("XUID"); + } + cff.topDict.setByName("charset", 0); + let compiled = this.compileTopDicts([cff.topDict], output.length, cff.isCIDFont); + output.add(compiled.output); + const topDictTracker = compiled.trackers[0]; + const stringIndex = this.compileStringIndex(cff.strings.strings); + output.add(stringIndex); + const globalSubrIndex = this.compileIndex(cff.globalSubrIndex); + output.add(globalSubrIndex); + if (cff.encoding && cff.topDict.hasName("Encoding")) { + if (cff.encoding.predefined) { + topDictTracker.setEntryLocation("Encoding", [cff.encoding.format], output); + } else { + const encoding = this.compileEncoding(cff.encoding); + topDictTracker.setEntryLocation("Encoding", [output.length], output); + output.add(encoding); + } + } + const charset = this.compileCharset(cff.charset, cff.charStrings.count, cff.strings, cff.isCIDFont); + topDictTracker.setEntryLocation("charset", [output.length], output); + output.add(charset); + const charStrings = this.compileCharStrings(cff.charStrings); + topDictTracker.setEntryLocation("CharStrings", [output.length], output); + output.add(charStrings); + if (cff.isCIDFont) { + topDictTracker.setEntryLocation("FDSelect", [output.length], output); + const fdSelect = this.compileFDSelect(cff.fdSelect); + output.add(fdSelect); + compiled = this.compileTopDicts(cff.fdArray, output.length, true); + topDictTracker.setEntryLocation("FDArray", [output.length], output); + output.add(compiled.output); + const fontDictTrackers = compiled.trackers; + this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output); + } + this.compilePrivateDicts([cff.topDict], [topDictTracker], output); + output.add([0]); + return output.data; + } + encodeNumber(value) { + if (Number.isInteger(value)) { + return this.encodeInteger(value); + } + return this.encodeFloat(value); + } + static get EncodeFloatRegExp() { + return (0, _util.shadow)(this, "EncodeFloatRegExp", /\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/); + } + encodeFloat(num) { + let value = num.toString(); + const m = CFFCompiler.EncodeFloatRegExp.exec(value); + if (m) { + const epsilon = parseFloat("1e" + ((m[2] ? +m[2] : 0) + m[1].length)); + value = (Math.round(num * epsilon) / epsilon).toString(); + } + let nibbles = ""; + let i, ii; + for (i = 0, ii = value.length; i < ii; ++i) { + const a = value[i]; + if (a === "e") { + nibbles += value[++i] === "-" ? "c" : "b"; + } else if (a === ".") { + nibbles += "a"; + } else if (a === "-") { + nibbles += "e"; + } else { + nibbles += a; + } + } + nibbles += nibbles.length & 1 ? "f" : "ff"; + const out = [30]; + for (i = 0, ii = nibbles.length; i < ii; i += 2) { + out.push(parseInt(nibbles.substring(i, i + 2), 16)); + } + return out; + } + encodeInteger(value) { + let code; + if (value >= -107 && value <= 107) { + code = [value + 139]; + } else if (value >= 108 && value <= 1131) { + value -= 108; + code = [(value >> 8) + 247, value & 0xff]; + } else if (value >= -1131 && value <= -108) { + value = -value - 108; + code = [(value >> 8) + 251, value & 0xff]; + } else if (value >= -32768 && value <= 32767) { + code = [0x1c, value >> 8 & 0xff, value & 0xff]; + } else { + code = [0x1d, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff]; + } + return code; + } + compileHeader(header) { + return [header.major, header.minor, 4, header.offSize]; + } + compileNameIndex(names) { + const nameIndex = new CFFIndex(); + for (const name of names) { + const length = Math.min(name.length, 127); + let sanitizedName = new Array(length); + for (let j = 0; j < length; j++) { + let char = name[j]; + if (char < "!" || char > "~" || char === "[" || char === "]" || char === "(" || char === ")" || char === "{" || char === "}" || char === "<" || char === ">" || char === "/" || char === "%") { + char = "_"; + } + sanitizedName[j] = char; + } + sanitizedName = sanitizedName.join(""); + if (sanitizedName === "") { + sanitizedName = "Bad_Font_Name"; + } + nameIndex.add((0, _util.stringToBytes)(sanitizedName)); + } + return this.compileIndex(nameIndex); + } + compileTopDicts(dicts, length, removeCidKeys) { + const fontDictTrackers = []; + let fdArrayIndex = new CFFIndex(); + for (const fontDict of dicts) { + if (removeCidKeys) { + fontDict.removeByName("CIDFontVersion"); + fontDict.removeByName("CIDFontRevision"); + fontDict.removeByName("CIDFontType"); + fontDict.removeByName("CIDCount"); + fontDict.removeByName("UIDBase"); + } + const fontDictTracker = new CFFOffsetTracker(); + const fontDictData = this.compileDict(fontDict, fontDictTracker); + fontDictTrackers.push(fontDictTracker); + fdArrayIndex.add(fontDictData); + fontDictTracker.offset(length); + } + fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers); + return { + trackers: fontDictTrackers, + output: fdArrayIndex + }; + } + compilePrivateDicts(dicts, trackers, output) { + for (let i = 0, ii = dicts.length; i < ii; ++i) { + const fontDict = dicts[i]; + const privateDict = fontDict.privateDict; + if (!privateDict || !fontDict.hasName("Private")) { + throw new _util.FormatError("There must be a private dictionary."); + } + const privateDictTracker = new CFFOffsetTracker(); + const privateDictData = this.compileDict(privateDict, privateDictTracker); + let outputLength = output.length; + privateDictTracker.offset(outputLength); + if (!privateDictData.length) { + outputLength = 0; + } + trackers[i].setEntryLocation("Private", [privateDictData.length, outputLength], output); + output.add(privateDictData); + if (privateDict.subrsIndex && privateDict.hasName("Subrs")) { + const subrs = this.compileIndex(privateDict.subrsIndex); + privateDictTracker.setEntryLocation("Subrs", [privateDictData.length], output); + output.add(subrs); + } + } + } + compileDict(dict, offsetTracker) { + const out = []; + for (const key of dict.order) { + if (!(key in dict.values)) { + continue; + } + let values = dict.values[key]; + let types = dict.types[key]; + if (!Array.isArray(types)) { + types = [types]; + } + if (!Array.isArray(values)) { + values = [values]; + } + if (values.length === 0) { + continue; + } + for (let j = 0, jj = types.length; j < jj; ++j) { + const type = types[j]; + const value = values[j]; + switch (type) { + case "num": + case "sid": + out.push(...this.encodeNumber(value)); + break; + case "offset": + const name = dict.keyToNameMap[key]; + if (!offsetTracker.isTracking(name)) { + offsetTracker.track(name, out.length); + } + out.push(0x1d, 0, 0, 0, 0); + break; + case "array": + case "delta": + out.push(...this.encodeNumber(value)); + for (let k = 1, kk = values.length; k < kk; ++k) { + out.push(...this.encodeNumber(values[k])); + } + break; + default: + throw new _util.FormatError(`Unknown data type of ${type}`); + } + } + out.push(...dict.opcodes[key]); + } + return out; + } + compileStringIndex(strings) { + const stringIndex = new CFFIndex(); + for (const string of strings) { + stringIndex.add((0, _util.stringToBytes)(string)); + } + return this.compileIndex(stringIndex); + } + compileCharStrings(charStrings) { + const charStringsIndex = new CFFIndex(); + for (let i = 0; i < charStrings.count; i++) { + const glyph = charStrings.get(i); + if (glyph.length === 0) { + charStringsIndex.add(new Uint8Array([0x8b, 0x0e])); + continue; + } + charStringsIndex.add(glyph); + } + return this.compileIndex(charStringsIndex); + } + compileCharset(charset, numGlyphs, strings, isCIDFont) { + let out; + const numGlyphsLessNotDef = numGlyphs - 1; + if (isCIDFont) { + out = new Uint8Array([2, 0, 0, numGlyphsLessNotDef >> 8 & 0xff, numGlyphsLessNotDef & 0xff]); + } else { + const length = 1 + numGlyphsLessNotDef * 2; + out = new Uint8Array(length); + out[0] = 0; + let charsetIndex = 0; + const numCharsets = charset.charset.length; + let warned = false; + for (let i = 1; i < out.length; i += 2) { + let sid = 0; + if (charsetIndex < numCharsets) { + const name = charset.charset[charsetIndex++]; + sid = strings.getSID(name); + if (sid === -1) { + sid = 0; + if (!warned) { + warned = true; + (0, _util.warn)(`Couldn't find ${name} in CFF strings`); + } + } + } + out[i] = sid >> 8 & 0xff; + out[i + 1] = sid & 0xff; + } + } + return this.compileTypedArray(out); + } + compileEncoding(encoding) { + return this.compileTypedArray(encoding.raw); + } + compileFDSelect(fdSelect) { + const format = fdSelect.format; + let out, i; + switch (format) { + case 0: + out = new Uint8Array(1 + fdSelect.fdSelect.length); + out[0] = format; + for (i = 0; i < fdSelect.fdSelect.length; i++) { + out[i + 1] = fdSelect.fdSelect[i]; + } + break; + case 3: + const start = 0; + let lastFD = fdSelect.fdSelect[0]; + const ranges = [format, 0, 0, start >> 8 & 0xff, start & 0xff, lastFD]; + for (i = 1; i < fdSelect.fdSelect.length; i++) { + const currentFD = fdSelect.fdSelect[i]; + if (currentFD !== lastFD) { + ranges.push(i >> 8 & 0xff, i & 0xff, currentFD); + lastFD = currentFD; + } + } + const numRanges = (ranges.length - 3) / 3; + ranges[1] = numRanges >> 8 & 0xff; + ranges[2] = numRanges & 0xff; + ranges.push(i >> 8 & 0xff, i & 0xff); + out = new Uint8Array(ranges); + break; + } + return this.compileTypedArray(out); + } + compileTypedArray(data) { + return Array.from(data); + } + compileIndex(index, trackers = []) { + const objects = index.objects; + const count = objects.length; + if (count === 0) { + return [0, 0]; + } + const data = [count >> 8 & 0xff, count & 0xff]; + let lastOffset = 1, + i; + for (i = 0; i < count; ++i) { + lastOffset += objects[i].length; + } + let offsetSize; + if (lastOffset < 0x100) { + offsetSize = 1; + } else if (lastOffset < 0x10000) { + offsetSize = 2; + } else if (lastOffset < 0x1000000) { + offsetSize = 3; + } else { + offsetSize = 4; + } + data.push(offsetSize); + let relativeOffset = 1; + for (i = 0; i < count + 1; i++) { + if (offsetSize === 1) { + data.push(relativeOffset & 0xff); + } else if (offsetSize === 2) { + data.push(relativeOffset >> 8 & 0xff, relativeOffset & 0xff); + } else if (offsetSize === 3) { + data.push(relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, relativeOffset & 0xff); + } else { + data.push(relativeOffset >>> 24 & 0xff, relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, relativeOffset & 0xff); + } + if (objects[i]) { + relativeOffset += objects[i].length; + } + } + for (i = 0; i < count; i++) { + if (trackers[i]) { + trackers[i].offset(data.length); + } + data.push(...objects[i]); + } + return data; + } +} +exports.CFFCompiler = CFFCompiler; + +/***/ }), +/* 36 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ISOAdobeCharset = exports.ExpertSubsetCharset = exports.ExpertCharset = void 0; +const ISOAdobeCharset = [".notdef", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", "currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", "endash", "dagger", "daggerdbl", "periodcentered", "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", "perthousand", "questiondown", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", "dieresis", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "emdash", "AE", "ordfeminine", "Lslash", "Oslash", "OE", "ordmasculine", "ae", "dotlessi", "lslash", "oslash", "oe", "germandbls", "onesuperior", "logicalnot", "mu", "trademark", "Eth", "onehalf", "plusminus", "Thorn", "onequarter", "divide", "brokenbar", "degree", "thorn", "threequarters", "twosuperior", "registered", "minus", "eth", "multiply", "threesuperior", "copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave", "Aring", "Atilde", "Ccedilla", "Eacute", "Ecircumflex", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Ntilde", "Oacute", "Ocircumflex", "Odieresis", "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex", "Udieresis", "Ugrave", "Yacute", "Ydieresis", "Zcaron", "aacute", "acircumflex", "adieresis", "agrave", "aring", "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis", "egrave", "iacute", "icircumflex", "idieresis", "igrave", "ntilde", "oacute", "ocircumflex", "odieresis", "ograve", "otilde", "scaron", "uacute", "ucircumflex", "udieresis", "ugrave", "yacute", "ydieresis", "zcaron"]; +exports.ISOAdobeCharset = ISOAdobeCharset; +const ExpertCharset = [".notdef", "space", "exclamsmall", "Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "commasuperior", "threequartersemdash", "periodsuperior", "questionsmall", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior", "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", "fi", "fl", "ffi", "ffl", "parenleftinferior", "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "exclamdownsmall", "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash", "hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall", "onequarter", "onehalf", "threequarters", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "zerosuperior", "onesuperior", "twosuperior", "threesuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall"]; +exports.ExpertCharset = ExpertCharset; +const ExpertSubsetCharset = [".notdef", "space", "dollaroldstyle", "dollarsuperior", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "commasuperior", "threequartersemdash", "periodsuperior", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior", "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", "fi", "fl", "ffi", "ffl", "parenleftinferior", "parenrightinferior", "hyphensuperior", "colonmonetary", "onefitted", "rupiah", "centoldstyle", "figuredash", "hypheninferior", "onequarter", "onehalf", "threequarters", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "zerosuperior", "onesuperior", "twosuperior", "threesuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior"]; +exports.ExpertSubsetCharset = ExpertSubsetCharset; + +/***/ }), +/* 37 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ZapfDingbatsEncoding = exports.WinAnsiEncoding = exports.SymbolSetEncoding = exports.StandardEncoding = exports.MacRomanEncoding = exports.ExpertEncoding = void 0; +exports.getEncoding = getEncoding; +const ExpertEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclamsmall", "Hungarumlautsmall", "", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "commasuperior", "threequartersemdash", "periodsuperior", "questionsmall", "", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "", "", "", "isuperior", "", "", "lsuperior", "msuperior", "nsuperior", "osuperior", "", "", "rsuperior", "ssuperior", "tsuperior", "", "ff", "fi", "fl", "ffi", "ffl", "parenleftinferior", "", "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "exclamdownsmall", "centoldstyle", "Lslashsmall", "", "", "Scaronsmall", "Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", "", "Dotaccentsmall", "", "", "Macronsmall", "", "", "figuredash", "hypheninferior", "", "", "Ogoneksmall", "Ringsmall", "Cedillasmall", "", "", "", "onequarter", "onehalf", "threequarters", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "", "", "zerosuperior", "onesuperior", "twosuperior", "threesuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall"]; +exports.ExpertEncoding = ExpertEncoding; +const MacExpertEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclamsmall", "Hungarumlautsmall", "centoldstyle", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "", "threequartersemdash", "", "questionsmall", "", "", "", "", "Ethsmall", "", "", "onequarter", "onehalf", "threequarters", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "", "", "", "", "", "", "ff", "fi", "fl", "ffi", "ffl", "parenleftinferior", "", "parenrightinferior", "Circumflexsmall", "hypheninferior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "", "", "asuperior", "centsuperior", "", "", "", "", "Aacutesmall", "Agravesmall", "Acircumflexsmall", "Adieresissmall", "Atildesmall", "Aringsmall", "Ccedillasmall", "Eacutesmall", "Egravesmall", "Ecircumflexsmall", "Edieresissmall", "Iacutesmall", "Igravesmall", "Icircumflexsmall", "Idieresissmall", "Ntildesmall", "Oacutesmall", "Ogravesmall", "Ocircumflexsmall", "Odieresissmall", "Otildesmall", "Uacutesmall", "Ugravesmall", "Ucircumflexsmall", "Udieresissmall", "", "eightsuperior", "fourinferior", "threeinferior", "sixinferior", "eightinferior", "seveninferior", "Scaronsmall", "", "centinferior", "twoinferior", "", "Dieresissmall", "", "Caronsmall", "osuperior", "fiveinferior", "", "commainferior", "periodinferior", "Yacutesmall", "", "dollarinferior", "", "", "Thornsmall", "", "nineinferior", "zeroinferior", "Zcaronsmall", "AEsmall", "Oslashsmall", "questiondownsmall", "oneinferior", "Lslashsmall", "", "", "", "", "", "", "Cedillasmall", "", "", "", "", "", "OEsmall", "figuredash", "hyphensuperior", "", "", "", "", "exclamdownsmall", "", "Ydieresissmall", "", "onesuperior", "twosuperior", "threesuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "ninesuperior", "zerosuperior", "", "esuperior", "rsuperior", "tsuperior", "", "", "isuperior", "ssuperior", "dsuperior", "", "", "", "", "", "lsuperior", "Ogoneksmall", "Brevesmall", "Macronsmall", "bsuperior", "nsuperior", "msuperior", "commasuperior", "periodsuperior", "Dotaccentsmall", "Ringsmall", "", "", "", ""]; +const MacRomanEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quotesingle", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "grave", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "", "Adieresis", "Aring", "Ccedilla", "Eacute", "Ntilde", "Odieresis", "Udieresis", "aacute", "agrave", "acircumflex", "adieresis", "atilde", "aring", "ccedilla", "eacute", "egrave", "ecircumflex", "edieresis", "iacute", "igrave", "icircumflex", "idieresis", "ntilde", "oacute", "ograve", "ocircumflex", "odieresis", "otilde", "uacute", "ugrave", "ucircumflex", "udieresis", "dagger", "degree", "cent", "sterling", "section", "bullet", "paragraph", "germandbls", "registered", "copyright", "trademark", "acute", "dieresis", "notequal", "AE", "Oslash", "infinity", "plusminus", "lessequal", "greaterequal", "yen", "mu", "partialdiff", "summation", "product", "pi", "integral", "ordfeminine", "ordmasculine", "Omega", "ae", "oslash", "questiondown", "exclamdown", "logicalnot", "radical", "florin", "approxequal", "Delta", "guillemotleft", "guillemotright", "ellipsis", "space", "Agrave", "Atilde", "Otilde", "OE", "oe", "endash", "emdash", "quotedblleft", "quotedblright", "quoteleft", "quoteright", "divide", "lozenge", "ydieresis", "Ydieresis", "fraction", "currency", "guilsinglleft", "guilsinglright", "fi", "fl", "daggerdbl", "periodcentered", "quotesinglbase", "quotedblbase", "perthousand", "Acircumflex", "Ecircumflex", "Aacute", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Oacute", "Ocircumflex", "apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave", "dotlessi", "circumflex", "tilde", "macron", "breve", "dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek", "caron"]; +exports.MacRomanEncoding = MacRomanEncoding; +const StandardEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", "currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", "", "endash", "dagger", "daggerdbl", "periodcentered", "", "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", "perthousand", "", "questiondown", "", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", "dieresis", "", "ring", "cedilla", "", "hungarumlaut", "ogonek", "caron", "emdash", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "AE", "", "ordfeminine", "", "", "", "", "Lslash", "Oslash", "OE", "ordmasculine", "", "", "", "", "", "ae", "", "", "", "dotlessi", "", "", "lslash", "oslash", "oe", "germandbls", "", "", "", ""]; +exports.StandardEncoding = StandardEncoding; +const WinAnsiEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quotesingle", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "grave", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "bullet", "Euro", "bullet", "quotesinglbase", "florin", "quotedblbase", "ellipsis", "dagger", "daggerdbl", "circumflex", "perthousand", "Scaron", "guilsinglleft", "OE", "bullet", "Zcaron", "bullet", "bullet", "quoteleft", "quoteright", "quotedblleft", "quotedblright", "bullet", "endash", "emdash", "tilde", "trademark", "scaron", "guilsinglright", "oe", "bullet", "zcaron", "Ydieresis", "space", "exclamdown", "cent", "sterling", "currency", "yen", "brokenbar", "section", "dieresis", "copyright", "ordfeminine", "guillemotleft", "logicalnot", "hyphen", "registered", "macron", "degree", "plusminus", "twosuperior", "threesuperior", "acute", "mu", "paragraph", "periodcentered", "cedilla", "onesuperior", "ordmasculine", "guillemotright", "onequarter", "onehalf", "threequarters", "questiondown", "Agrave", "Aacute", "Acircumflex", "Atilde", "Adieresis", "Aring", "AE", "Ccedilla", "Egrave", "Eacute", "Ecircumflex", "Edieresis", "Igrave", "Iacute", "Icircumflex", "Idieresis", "Eth", "Ntilde", "Ograve", "Oacute", "Ocircumflex", "Otilde", "Odieresis", "multiply", "Oslash", "Ugrave", "Uacute", "Ucircumflex", "Udieresis", "Yacute", "Thorn", "germandbls", "agrave", "aacute", "acircumflex", "atilde", "adieresis", "aring", "ae", "ccedilla", "egrave", "eacute", "ecircumflex", "edieresis", "igrave", "iacute", "icircumflex", "idieresis", "eth", "ntilde", "ograve", "oacute", "ocircumflex", "otilde", "odieresis", "divide", "oslash", "ugrave", "uacute", "ucircumflex", "udieresis", "yacute", "thorn", "ydieresis"]; +exports.WinAnsiEncoding = WinAnsiEncoding; +const SymbolSetEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "universal", "numbersign", "existential", "percent", "ampersand", "suchthat", "parenleft", "parenright", "asteriskmath", "plus", "comma", "minus", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "congruent", "Alpha", "Beta", "Chi", "Delta", "Epsilon", "Phi", "Gamma", "Eta", "Iota", "theta1", "Kappa", "Lambda", "Mu", "Nu", "Omicron", "Pi", "Theta", "Rho", "Sigma", "Tau", "Upsilon", "sigma1", "Omega", "Xi", "Psi", "Zeta", "bracketleft", "therefore", "bracketright", "perpendicular", "underscore", "radicalex", "alpha", "beta", "chi", "delta", "epsilon", "phi", "gamma", "eta", "iota", "phi1", "kappa", "lambda", "mu", "nu", "omicron", "pi", "theta", "rho", "sigma", "tau", "upsilon", "omega1", "omega", "xi", "psi", "zeta", "braceleft", "bar", "braceright", "similar", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "Euro", "Upsilon1", "minute", "lessequal", "fraction", "infinity", "florin", "club", "diamond", "heart", "spade", "arrowboth", "arrowleft", "arrowup", "arrowright", "arrowdown", "degree", "plusminus", "second", "greaterequal", "multiply", "proportional", "partialdiff", "bullet", "divide", "notequal", "equivalence", "approxequal", "ellipsis", "arrowvertex", "arrowhorizex", "carriagereturn", "aleph", "Ifraktur", "Rfraktur", "weierstrass", "circlemultiply", "circleplus", "emptyset", "intersection", "union", "propersuperset", "reflexsuperset", "notsubset", "propersubset", "reflexsubset", "element", "notelement", "angle", "gradient", "registerserif", "copyrightserif", "trademarkserif", "product", "radical", "dotmath", "logicalnot", "logicaland", "logicalor", "arrowdblboth", "arrowdblleft", "arrowdblup", "arrowdblright", "arrowdbldown", "lozenge", "angleleft", "registersans", "copyrightsans", "trademarksans", "summation", "parenlefttp", "parenleftex", "parenleftbt", "bracketlefttp", "bracketleftex", "bracketleftbt", "bracelefttp", "braceleftmid", "braceleftbt", "braceex", "", "angleright", "integral", "integraltp", "integralex", "integralbt", "parenrighttp", "parenrightex", "parenrightbt", "bracketrighttp", "bracketrightex", "bracketrightbt", "bracerighttp", "bracerightmid", "bracerightbt", ""]; +exports.SymbolSetEncoding = SymbolSetEncoding; +const ZapfDingbatsEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "a1", "a2", "a202", "a3", "a4", "a5", "a119", "a118", "a117", "a11", "a12", "a13", "a14", "a15", "a16", "a105", "a17", "a18", "a19", "a20", "a21", "a22", "a23", "a24", "a25", "a26", "a27", "a28", "a6", "a7", "a8", "a9", "a10", "a29", "a30", "a31", "a32", "a33", "a34", "a35", "a36", "a37", "a38", "a39", "a40", "a41", "a42", "a43", "a44", "a45", "a46", "a47", "a48", "a49", "a50", "a51", "a52", "a53", "a54", "a55", "a56", "a57", "a58", "a59", "a60", "a61", "a62", "a63", "a64", "a65", "a66", "a67", "a68", "a69", "a70", "a71", "a72", "a73", "a74", "a203", "a75", "a204", "a76", "a77", "a78", "a79", "a81", "a82", "a83", "a84", "a97", "a98", "a99", "a100", "", "a89", "a90", "a93", "a94", "a91", "a92", "a205", "a85", "a206", "a86", "a87", "a88", "a95", "a96", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "a101", "a102", "a103", "a104", "a106", "a107", "a108", "a112", "a111", "a110", "a109", "a120", "a121", "a122", "a123", "a124", "a125", "a126", "a127", "a128", "a129", "a130", "a131", "a132", "a133", "a134", "a135", "a136", "a137", "a138", "a139", "a140", "a141", "a142", "a143", "a144", "a145", "a146", "a147", "a148", "a149", "a150", "a151", "a152", "a153", "a154", "a155", "a156", "a157", "a158", "a159", "a160", "a161", "a163", "a164", "a196", "a165", "a192", "a166", "a167", "a168", "a169", "a170", "a171", "a172", "a173", "a162", "a174", "a175", "a176", "a177", "a178", "a179", "a193", "a180", "a199", "a181", "a200", "a182", "", "a201", "a183", "a184", "a197", "a185", "a194", "a198", "a186", "a195", "a187", "a188", "a189", "a190", "a191", ""]; +exports.ZapfDingbatsEncoding = ZapfDingbatsEncoding; +function getEncoding(encodingName) { + switch (encodingName) { + case "WinAnsiEncoding": + return WinAnsiEncoding; + case "StandardEncoding": + return StandardEncoding; + case "MacRomanEncoding": + return MacRomanEncoding; + case "SymbolSetEncoding": + return SymbolSetEncoding; + case "ZapfDingbatsEncoding": + return ZapfDingbatsEncoding; + case "ExpertEncoding": + return ExpertEncoding; + case "MacExpertEncoding": + return MacExpertEncoding; + default: + return null; + } +} + +/***/ }), +/* 38 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SEAC_ANALYSIS_ENABLED = exports.MacStandardGlyphOrdering = exports.FontFlags = void 0; +exports.normalizeFontName = normalizeFontName; +exports.recoverGlyphName = recoverGlyphName; +exports.type1FontGlyphMapping = type1FontGlyphMapping; +var _encodings = __w_pdfjs_require__(37); +var _glyphlist = __w_pdfjs_require__(39); +var _unicode = __w_pdfjs_require__(40); +var _util = __w_pdfjs_require__(2); +const SEAC_ANALYSIS_ENABLED = true; +exports.SEAC_ANALYSIS_ENABLED = SEAC_ANALYSIS_ENABLED; +const FontFlags = { + FixedPitch: 1, + Serif: 2, + Symbolic: 4, + Script: 8, + Nonsymbolic: 32, + Italic: 64, + AllCap: 65536, + SmallCap: 131072, + ForceBold: 262144 +}; +exports.FontFlags = FontFlags; +const MacStandardGlyphOrdering = [".notdef", ".null", "nonmarkingreturn", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quotesingle", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "grave", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "Adieresis", "Aring", "Ccedilla", "Eacute", "Ntilde", "Odieresis", "Udieresis", "aacute", "agrave", "acircumflex", "adieresis", "atilde", "aring", "ccedilla", "eacute", "egrave", "ecircumflex", "edieresis", "iacute", "igrave", "icircumflex", "idieresis", "ntilde", "oacute", "ograve", "ocircumflex", "odieresis", "otilde", "uacute", "ugrave", "ucircumflex", "udieresis", "dagger", "degree", "cent", "sterling", "section", "bullet", "paragraph", "germandbls", "registered", "copyright", "trademark", "acute", "dieresis", "notequal", "AE", "Oslash", "infinity", "plusminus", "lessequal", "greaterequal", "yen", "mu", "partialdiff", "summation", "product", "pi", "integral", "ordfeminine", "ordmasculine", "Omega", "ae", "oslash", "questiondown", "exclamdown", "logicalnot", "radical", "florin", "approxequal", "Delta", "guillemotleft", "guillemotright", "ellipsis", "nonbreakingspace", "Agrave", "Atilde", "Otilde", "OE", "oe", "endash", "emdash", "quotedblleft", "quotedblright", "quoteleft", "quoteright", "divide", "lozenge", "ydieresis", "Ydieresis", "fraction", "currency", "guilsinglleft", "guilsinglright", "fi", "fl", "daggerdbl", "periodcentered", "quotesinglbase", "quotedblbase", "perthousand", "Acircumflex", "Ecircumflex", "Aacute", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Oacute", "Ocircumflex", "apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave", "dotlessi", "circumflex", "tilde", "macron", "breve", "dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "Lslash", "lslash", "Scaron", "scaron", "Zcaron", "zcaron", "brokenbar", "Eth", "eth", "Yacute", "yacute", "Thorn", "thorn", "minus", "multiply", "onesuperior", "twosuperior", "threesuperior", "onehalf", "onequarter", "threequarters", "franc", "Gbreve", "gbreve", "Idotaccent", "Scedilla", "scedilla", "Cacute", "cacute", "Ccaron", "ccaron", "dcroat"]; +exports.MacStandardGlyphOrdering = MacStandardGlyphOrdering; +function recoverGlyphName(name, glyphsUnicodeMap) { + if (glyphsUnicodeMap[name] !== undefined) { + return name; + } + const unicode = (0, _unicode.getUnicodeForGlyph)(name, glyphsUnicodeMap); + if (unicode !== -1) { + for (const key in glyphsUnicodeMap) { + if (glyphsUnicodeMap[key] === unicode) { + return key; + } + } + } + (0, _util.info)("Unable to recover a standard glyph name for: " + name); + return name; +} +function type1FontGlyphMapping(properties, builtInEncoding, glyphNames) { + const charCodeToGlyphId = Object.create(null); + let glyphId, charCode, baseEncoding; + const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic); + if (properties.isInternalFont) { + baseEncoding = builtInEncoding; + for (charCode = 0; charCode < baseEncoding.length; charCode++) { + glyphId = glyphNames.indexOf(baseEncoding[charCode]); + if (glyphId >= 0) { + charCodeToGlyphId[charCode] = glyphId; + } else { + charCodeToGlyphId[charCode] = 0; + } + } + } else if (properties.baseEncodingName) { + baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName); + for (charCode = 0; charCode < baseEncoding.length; charCode++) { + glyphId = glyphNames.indexOf(baseEncoding[charCode]); + if (glyphId >= 0) { + charCodeToGlyphId[charCode] = glyphId; + } else { + charCodeToGlyphId[charCode] = 0; + } + } + } else if (isSymbolicFont) { + for (charCode in builtInEncoding) { + charCodeToGlyphId[charCode] = builtInEncoding[charCode]; + } + } else { + baseEncoding = _encodings.StandardEncoding; + for (charCode = 0; charCode < baseEncoding.length; charCode++) { + glyphId = glyphNames.indexOf(baseEncoding[charCode]); + if (glyphId >= 0) { + charCodeToGlyphId[charCode] = glyphId; + } else { + charCodeToGlyphId[charCode] = 0; + } + } + } + const differences = properties.differences; + let glyphsUnicodeMap; + if (differences) { + for (charCode in differences) { + const glyphName = differences[charCode]; + glyphId = glyphNames.indexOf(glyphName); + if (glyphId === -1) { + if (!glyphsUnicodeMap) { + glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); + } + const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap); + if (standardGlyphName !== glyphName) { + glyphId = glyphNames.indexOf(standardGlyphName); + } + } + if (glyphId >= 0) { + charCodeToGlyphId[charCode] = glyphId; + } else { + charCodeToGlyphId[charCode] = 0; + } + } + } + return charCodeToGlyphId; +} +function normalizeFontName(name) { + return name.replaceAll(/[,_]/g, "-").replaceAll(/\s/g, ""); +} + +/***/ }), +/* 39 */ +/***/ ((__unused_webpack_module, __webpack_exports__, __w_pdfjs_require__) => { + +__w_pdfjs_require__.r(__webpack_exports__); +/* harmony export */ __w_pdfjs_require__.d(__webpack_exports__, { +/* harmony export */ getDingbatsGlyphsUnicode: () => (/* binding */ getDingbatsGlyphsUnicode), +/* harmony export */ getGlyphsUnicode: () => (/* binding */ getGlyphsUnicode) +/* harmony export */ }); +/* harmony import */ var _core_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __w_pdfjs_require__(3); + +const getGlyphsUnicode = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getLookupTableFactory)(function (t) { + t.A = 0x0041; + t.AE = 0x00c6; + t.AEacute = 0x01fc; + t.AEmacron = 0x01e2; + t.AEsmall = 0xf7e6; + t.Aacute = 0x00c1; + t.Aacutesmall = 0xf7e1; + t.Abreve = 0x0102; + t.Abreveacute = 0x1eae; + t.Abrevecyrillic = 0x04d0; + t.Abrevedotbelow = 0x1eb6; + t.Abrevegrave = 0x1eb0; + t.Abrevehookabove = 0x1eb2; + t.Abrevetilde = 0x1eb4; + t.Acaron = 0x01cd; + t.Acircle = 0x24b6; + t.Acircumflex = 0x00c2; + t.Acircumflexacute = 0x1ea4; + t.Acircumflexdotbelow = 0x1eac; + t.Acircumflexgrave = 0x1ea6; + t.Acircumflexhookabove = 0x1ea8; + t.Acircumflexsmall = 0xf7e2; + t.Acircumflextilde = 0x1eaa; + t.Acute = 0xf6c9; + t.Acutesmall = 0xf7b4; + t.Acyrillic = 0x0410; + t.Adblgrave = 0x0200; + t.Adieresis = 0x00c4; + t.Adieresiscyrillic = 0x04d2; + t.Adieresismacron = 0x01de; + t.Adieresissmall = 0xf7e4; + t.Adotbelow = 0x1ea0; + t.Adotmacron = 0x01e0; + t.Agrave = 0x00c0; + t.Agravesmall = 0xf7e0; + t.Ahookabove = 0x1ea2; + t.Aiecyrillic = 0x04d4; + t.Ainvertedbreve = 0x0202; + t.Alpha = 0x0391; + t.Alphatonos = 0x0386; + t.Amacron = 0x0100; + t.Amonospace = 0xff21; + t.Aogonek = 0x0104; + t.Aring = 0x00c5; + t.Aringacute = 0x01fa; + t.Aringbelow = 0x1e00; + t.Aringsmall = 0xf7e5; + t.Asmall = 0xf761; + t.Atilde = 0x00c3; + t.Atildesmall = 0xf7e3; + t.Aybarmenian = 0x0531; + t.B = 0x0042; + t.Bcircle = 0x24b7; + t.Bdotaccent = 0x1e02; + t.Bdotbelow = 0x1e04; + t.Becyrillic = 0x0411; + t.Benarmenian = 0x0532; + t.Beta = 0x0392; + t.Bhook = 0x0181; + t.Blinebelow = 0x1e06; + t.Bmonospace = 0xff22; + t.Brevesmall = 0xf6f4; + t.Bsmall = 0xf762; + t.Btopbar = 0x0182; + t.C = 0x0043; + t.Caarmenian = 0x053e; + t.Cacute = 0x0106; + t.Caron = 0xf6ca; + t.Caronsmall = 0xf6f5; + t.Ccaron = 0x010c; + t.Ccedilla = 0x00c7; + t.Ccedillaacute = 0x1e08; + t.Ccedillasmall = 0xf7e7; + t.Ccircle = 0x24b8; + t.Ccircumflex = 0x0108; + t.Cdot = 0x010a; + t.Cdotaccent = 0x010a; + t.Cedillasmall = 0xf7b8; + t.Chaarmenian = 0x0549; + t.Cheabkhasiancyrillic = 0x04bc; + t.Checyrillic = 0x0427; + t.Chedescenderabkhasiancyrillic = 0x04be; + t.Chedescendercyrillic = 0x04b6; + t.Chedieresiscyrillic = 0x04f4; + t.Cheharmenian = 0x0543; + t.Chekhakassiancyrillic = 0x04cb; + t.Cheverticalstrokecyrillic = 0x04b8; + t.Chi = 0x03a7; + t.Chook = 0x0187; + t.Circumflexsmall = 0xf6f6; + t.Cmonospace = 0xff23; + t.Coarmenian = 0x0551; + t.Csmall = 0xf763; + t.D = 0x0044; + t.DZ = 0x01f1; + t.DZcaron = 0x01c4; + t.Daarmenian = 0x0534; + t.Dafrican = 0x0189; + t.Dcaron = 0x010e; + t.Dcedilla = 0x1e10; + t.Dcircle = 0x24b9; + t.Dcircumflexbelow = 0x1e12; + t.Dcroat = 0x0110; + t.Ddotaccent = 0x1e0a; + t.Ddotbelow = 0x1e0c; + t.Decyrillic = 0x0414; + t.Deicoptic = 0x03ee; + t.Delta = 0x2206; + t.Deltagreek = 0x0394; + t.Dhook = 0x018a; + t.Dieresis = 0xf6cb; + t.DieresisAcute = 0xf6cc; + t.DieresisGrave = 0xf6cd; + t.Dieresissmall = 0xf7a8; + t.Digammagreek = 0x03dc; + t.Djecyrillic = 0x0402; + t.Dlinebelow = 0x1e0e; + t.Dmonospace = 0xff24; + t.Dotaccentsmall = 0xf6f7; + t.Dslash = 0x0110; + t.Dsmall = 0xf764; + t.Dtopbar = 0x018b; + t.Dz = 0x01f2; + t.Dzcaron = 0x01c5; + t.Dzeabkhasiancyrillic = 0x04e0; + t.Dzecyrillic = 0x0405; + t.Dzhecyrillic = 0x040f; + t.E = 0x0045; + t.Eacute = 0x00c9; + t.Eacutesmall = 0xf7e9; + t.Ebreve = 0x0114; + t.Ecaron = 0x011a; + t.Ecedillabreve = 0x1e1c; + t.Echarmenian = 0x0535; + t.Ecircle = 0x24ba; + t.Ecircumflex = 0x00ca; + t.Ecircumflexacute = 0x1ebe; + t.Ecircumflexbelow = 0x1e18; + t.Ecircumflexdotbelow = 0x1ec6; + t.Ecircumflexgrave = 0x1ec0; + t.Ecircumflexhookabove = 0x1ec2; + t.Ecircumflexsmall = 0xf7ea; + t.Ecircumflextilde = 0x1ec4; + t.Ecyrillic = 0x0404; + t.Edblgrave = 0x0204; + t.Edieresis = 0x00cb; + t.Edieresissmall = 0xf7eb; + t.Edot = 0x0116; + t.Edotaccent = 0x0116; + t.Edotbelow = 0x1eb8; + t.Efcyrillic = 0x0424; + t.Egrave = 0x00c8; + t.Egravesmall = 0xf7e8; + t.Eharmenian = 0x0537; + t.Ehookabove = 0x1eba; + t.Eightroman = 0x2167; + t.Einvertedbreve = 0x0206; + t.Eiotifiedcyrillic = 0x0464; + t.Elcyrillic = 0x041b; + t.Elevenroman = 0x216a; + t.Emacron = 0x0112; + t.Emacronacute = 0x1e16; + t.Emacrongrave = 0x1e14; + t.Emcyrillic = 0x041c; + t.Emonospace = 0xff25; + t.Encyrillic = 0x041d; + t.Endescendercyrillic = 0x04a2; + t.Eng = 0x014a; + t.Enghecyrillic = 0x04a4; + t.Enhookcyrillic = 0x04c7; + t.Eogonek = 0x0118; + t.Eopen = 0x0190; + t.Epsilon = 0x0395; + t.Epsilontonos = 0x0388; + t.Ercyrillic = 0x0420; + t.Ereversed = 0x018e; + t.Ereversedcyrillic = 0x042d; + t.Escyrillic = 0x0421; + t.Esdescendercyrillic = 0x04aa; + t.Esh = 0x01a9; + t.Esmall = 0xf765; + t.Eta = 0x0397; + t.Etarmenian = 0x0538; + t.Etatonos = 0x0389; + t.Eth = 0x00d0; + t.Ethsmall = 0xf7f0; + t.Etilde = 0x1ebc; + t.Etildebelow = 0x1e1a; + t.Euro = 0x20ac; + t.Ezh = 0x01b7; + t.Ezhcaron = 0x01ee; + t.Ezhreversed = 0x01b8; + t.F = 0x0046; + t.Fcircle = 0x24bb; + t.Fdotaccent = 0x1e1e; + t.Feharmenian = 0x0556; + t.Feicoptic = 0x03e4; + t.Fhook = 0x0191; + t.Fitacyrillic = 0x0472; + t.Fiveroman = 0x2164; + t.Fmonospace = 0xff26; + t.Fourroman = 0x2163; + t.Fsmall = 0xf766; + t.G = 0x0047; + t.GBsquare = 0x3387; + t.Gacute = 0x01f4; + t.Gamma = 0x0393; + t.Gammaafrican = 0x0194; + t.Gangiacoptic = 0x03ea; + t.Gbreve = 0x011e; + t.Gcaron = 0x01e6; + t.Gcedilla = 0x0122; + t.Gcircle = 0x24bc; + t.Gcircumflex = 0x011c; + t.Gcommaaccent = 0x0122; + t.Gdot = 0x0120; + t.Gdotaccent = 0x0120; + t.Gecyrillic = 0x0413; + t.Ghadarmenian = 0x0542; + t.Ghemiddlehookcyrillic = 0x0494; + t.Ghestrokecyrillic = 0x0492; + t.Gheupturncyrillic = 0x0490; + t.Ghook = 0x0193; + t.Gimarmenian = 0x0533; + t.Gjecyrillic = 0x0403; + t.Gmacron = 0x1e20; + t.Gmonospace = 0xff27; + t.Grave = 0xf6ce; + t.Gravesmall = 0xf760; + t.Gsmall = 0xf767; + t.Gsmallhook = 0x029b; + t.Gstroke = 0x01e4; + t.H = 0x0048; + t.H18533 = 0x25cf; + t.H18543 = 0x25aa; + t.H18551 = 0x25ab; + t.H22073 = 0x25a1; + t.HPsquare = 0x33cb; + t.Haabkhasiancyrillic = 0x04a8; + t.Hadescendercyrillic = 0x04b2; + t.Hardsigncyrillic = 0x042a; + t.Hbar = 0x0126; + t.Hbrevebelow = 0x1e2a; + t.Hcedilla = 0x1e28; + t.Hcircle = 0x24bd; + t.Hcircumflex = 0x0124; + t.Hdieresis = 0x1e26; + t.Hdotaccent = 0x1e22; + t.Hdotbelow = 0x1e24; + t.Hmonospace = 0xff28; + t.Hoarmenian = 0x0540; + t.Horicoptic = 0x03e8; + t.Hsmall = 0xf768; + t.Hungarumlaut = 0xf6cf; + t.Hungarumlautsmall = 0xf6f8; + t.Hzsquare = 0x3390; + t.I = 0x0049; + t.IAcyrillic = 0x042f; + t.IJ = 0x0132; + t.IUcyrillic = 0x042e; + t.Iacute = 0x00cd; + t.Iacutesmall = 0xf7ed; + t.Ibreve = 0x012c; + t.Icaron = 0x01cf; + t.Icircle = 0x24be; + t.Icircumflex = 0x00ce; + t.Icircumflexsmall = 0xf7ee; + t.Icyrillic = 0x0406; + t.Idblgrave = 0x0208; + t.Idieresis = 0x00cf; + t.Idieresisacute = 0x1e2e; + t.Idieresiscyrillic = 0x04e4; + t.Idieresissmall = 0xf7ef; + t.Idot = 0x0130; + t.Idotaccent = 0x0130; + t.Idotbelow = 0x1eca; + t.Iebrevecyrillic = 0x04d6; + t.Iecyrillic = 0x0415; + t.Ifraktur = 0x2111; + t.Igrave = 0x00cc; + t.Igravesmall = 0xf7ec; + t.Ihookabove = 0x1ec8; + t.Iicyrillic = 0x0418; + t.Iinvertedbreve = 0x020a; + t.Iishortcyrillic = 0x0419; + t.Imacron = 0x012a; + t.Imacroncyrillic = 0x04e2; + t.Imonospace = 0xff29; + t.Iniarmenian = 0x053b; + t.Iocyrillic = 0x0401; + t.Iogonek = 0x012e; + t.Iota = 0x0399; + t.Iotaafrican = 0x0196; + t.Iotadieresis = 0x03aa; + t.Iotatonos = 0x038a; + t.Ismall = 0xf769; + t.Istroke = 0x0197; + t.Itilde = 0x0128; + t.Itildebelow = 0x1e2c; + t.Izhitsacyrillic = 0x0474; + t.Izhitsadblgravecyrillic = 0x0476; + t.J = 0x004a; + t.Jaarmenian = 0x0541; + t.Jcircle = 0x24bf; + t.Jcircumflex = 0x0134; + t.Jecyrillic = 0x0408; + t.Jheharmenian = 0x054b; + t.Jmonospace = 0xff2a; + t.Jsmall = 0xf76a; + t.K = 0x004b; + t.KBsquare = 0x3385; + t.KKsquare = 0x33cd; + t.Kabashkircyrillic = 0x04a0; + t.Kacute = 0x1e30; + t.Kacyrillic = 0x041a; + t.Kadescendercyrillic = 0x049a; + t.Kahookcyrillic = 0x04c3; + t.Kappa = 0x039a; + t.Kastrokecyrillic = 0x049e; + t.Kaverticalstrokecyrillic = 0x049c; + t.Kcaron = 0x01e8; + t.Kcedilla = 0x0136; + t.Kcircle = 0x24c0; + t.Kcommaaccent = 0x0136; + t.Kdotbelow = 0x1e32; + t.Keharmenian = 0x0554; + t.Kenarmenian = 0x053f; + t.Khacyrillic = 0x0425; + t.Kheicoptic = 0x03e6; + t.Khook = 0x0198; + t.Kjecyrillic = 0x040c; + t.Klinebelow = 0x1e34; + t.Kmonospace = 0xff2b; + t.Koppacyrillic = 0x0480; + t.Koppagreek = 0x03de; + t.Ksicyrillic = 0x046e; + t.Ksmall = 0xf76b; + t.L = 0x004c; + t.LJ = 0x01c7; + t.LL = 0xf6bf; + t.Lacute = 0x0139; + t.Lambda = 0x039b; + t.Lcaron = 0x013d; + t.Lcedilla = 0x013b; + t.Lcircle = 0x24c1; + t.Lcircumflexbelow = 0x1e3c; + t.Lcommaaccent = 0x013b; + t.Ldot = 0x013f; + t.Ldotaccent = 0x013f; + t.Ldotbelow = 0x1e36; + t.Ldotbelowmacron = 0x1e38; + t.Liwnarmenian = 0x053c; + t.Lj = 0x01c8; + t.Ljecyrillic = 0x0409; + t.Llinebelow = 0x1e3a; + t.Lmonospace = 0xff2c; + t.Lslash = 0x0141; + t.Lslashsmall = 0xf6f9; + t.Lsmall = 0xf76c; + t.M = 0x004d; + t.MBsquare = 0x3386; + t.Macron = 0xf6d0; + t.Macronsmall = 0xf7af; + t.Macute = 0x1e3e; + t.Mcircle = 0x24c2; + t.Mdotaccent = 0x1e40; + t.Mdotbelow = 0x1e42; + t.Menarmenian = 0x0544; + t.Mmonospace = 0xff2d; + t.Msmall = 0xf76d; + t.Mturned = 0x019c; + t.Mu = 0x039c; + t.N = 0x004e; + t.NJ = 0x01ca; + t.Nacute = 0x0143; + t.Ncaron = 0x0147; + t.Ncedilla = 0x0145; + t.Ncircle = 0x24c3; + t.Ncircumflexbelow = 0x1e4a; + t.Ncommaaccent = 0x0145; + t.Ndotaccent = 0x1e44; + t.Ndotbelow = 0x1e46; + t.Nhookleft = 0x019d; + t.Nineroman = 0x2168; + t.Nj = 0x01cb; + t.Njecyrillic = 0x040a; + t.Nlinebelow = 0x1e48; + t.Nmonospace = 0xff2e; + t.Nowarmenian = 0x0546; + t.Nsmall = 0xf76e; + t.Ntilde = 0x00d1; + t.Ntildesmall = 0xf7f1; + t.Nu = 0x039d; + t.O = 0x004f; + t.OE = 0x0152; + t.OEsmall = 0xf6fa; + t.Oacute = 0x00d3; + t.Oacutesmall = 0xf7f3; + t.Obarredcyrillic = 0x04e8; + t.Obarreddieresiscyrillic = 0x04ea; + t.Obreve = 0x014e; + t.Ocaron = 0x01d1; + t.Ocenteredtilde = 0x019f; + t.Ocircle = 0x24c4; + t.Ocircumflex = 0x00d4; + t.Ocircumflexacute = 0x1ed0; + t.Ocircumflexdotbelow = 0x1ed8; + t.Ocircumflexgrave = 0x1ed2; + t.Ocircumflexhookabove = 0x1ed4; + t.Ocircumflexsmall = 0xf7f4; + t.Ocircumflextilde = 0x1ed6; + t.Ocyrillic = 0x041e; + t.Odblacute = 0x0150; + t.Odblgrave = 0x020c; + t.Odieresis = 0x00d6; + t.Odieresiscyrillic = 0x04e6; + t.Odieresissmall = 0xf7f6; + t.Odotbelow = 0x1ecc; + t.Ogoneksmall = 0xf6fb; + t.Ograve = 0x00d2; + t.Ogravesmall = 0xf7f2; + t.Oharmenian = 0x0555; + t.Ohm = 0x2126; + t.Ohookabove = 0x1ece; + t.Ohorn = 0x01a0; + t.Ohornacute = 0x1eda; + t.Ohorndotbelow = 0x1ee2; + t.Ohorngrave = 0x1edc; + t.Ohornhookabove = 0x1ede; + t.Ohorntilde = 0x1ee0; + t.Ohungarumlaut = 0x0150; + t.Oi = 0x01a2; + t.Oinvertedbreve = 0x020e; + t.Omacron = 0x014c; + t.Omacronacute = 0x1e52; + t.Omacrongrave = 0x1e50; + t.Omega = 0x2126; + t.Omegacyrillic = 0x0460; + t.Omegagreek = 0x03a9; + t.Omegaroundcyrillic = 0x047a; + t.Omegatitlocyrillic = 0x047c; + t.Omegatonos = 0x038f; + t.Omicron = 0x039f; + t.Omicrontonos = 0x038c; + t.Omonospace = 0xff2f; + t.Oneroman = 0x2160; + t.Oogonek = 0x01ea; + t.Oogonekmacron = 0x01ec; + t.Oopen = 0x0186; + t.Oslash = 0x00d8; + t.Oslashacute = 0x01fe; + t.Oslashsmall = 0xf7f8; + t.Osmall = 0xf76f; + t.Ostrokeacute = 0x01fe; + t.Otcyrillic = 0x047e; + t.Otilde = 0x00d5; + t.Otildeacute = 0x1e4c; + t.Otildedieresis = 0x1e4e; + t.Otildesmall = 0xf7f5; + t.P = 0x0050; + t.Pacute = 0x1e54; + t.Pcircle = 0x24c5; + t.Pdotaccent = 0x1e56; + t.Pecyrillic = 0x041f; + t.Peharmenian = 0x054a; + t.Pemiddlehookcyrillic = 0x04a6; + t.Phi = 0x03a6; + t.Phook = 0x01a4; + t.Pi = 0x03a0; + t.Piwrarmenian = 0x0553; + t.Pmonospace = 0xff30; + t.Psi = 0x03a8; + t.Psicyrillic = 0x0470; + t.Psmall = 0xf770; + t.Q = 0x0051; + t.Qcircle = 0x24c6; + t.Qmonospace = 0xff31; + t.Qsmall = 0xf771; + t.R = 0x0052; + t.Raarmenian = 0x054c; + t.Racute = 0x0154; + t.Rcaron = 0x0158; + t.Rcedilla = 0x0156; + t.Rcircle = 0x24c7; + t.Rcommaaccent = 0x0156; + t.Rdblgrave = 0x0210; + t.Rdotaccent = 0x1e58; + t.Rdotbelow = 0x1e5a; + t.Rdotbelowmacron = 0x1e5c; + t.Reharmenian = 0x0550; + t.Rfraktur = 0x211c; + t.Rho = 0x03a1; + t.Ringsmall = 0xf6fc; + t.Rinvertedbreve = 0x0212; + t.Rlinebelow = 0x1e5e; + t.Rmonospace = 0xff32; + t.Rsmall = 0xf772; + t.Rsmallinverted = 0x0281; + t.Rsmallinvertedsuperior = 0x02b6; + t.S = 0x0053; + t.SF010000 = 0x250c; + t.SF020000 = 0x2514; + t.SF030000 = 0x2510; + t.SF040000 = 0x2518; + t.SF050000 = 0x253c; + t.SF060000 = 0x252c; + t.SF070000 = 0x2534; + t.SF080000 = 0x251c; + t.SF090000 = 0x2524; + t.SF100000 = 0x2500; + t.SF110000 = 0x2502; + t.SF190000 = 0x2561; + t.SF200000 = 0x2562; + t.SF210000 = 0x2556; + t.SF220000 = 0x2555; + t.SF230000 = 0x2563; + t.SF240000 = 0x2551; + t.SF250000 = 0x2557; + t.SF260000 = 0x255d; + t.SF270000 = 0x255c; + t.SF280000 = 0x255b; + t.SF360000 = 0x255e; + t.SF370000 = 0x255f; + t.SF380000 = 0x255a; + t.SF390000 = 0x2554; + t.SF400000 = 0x2569; + t.SF410000 = 0x2566; + t.SF420000 = 0x2560; + t.SF430000 = 0x2550; + t.SF440000 = 0x256c; + t.SF450000 = 0x2567; + t.SF460000 = 0x2568; + t.SF470000 = 0x2564; + t.SF480000 = 0x2565; + t.SF490000 = 0x2559; + t.SF500000 = 0x2558; + t.SF510000 = 0x2552; + t.SF520000 = 0x2553; + t.SF530000 = 0x256b; + t.SF540000 = 0x256a; + t.Sacute = 0x015a; + t.Sacutedotaccent = 0x1e64; + t.Sampigreek = 0x03e0; + t.Scaron = 0x0160; + t.Scarondotaccent = 0x1e66; + t.Scaronsmall = 0xf6fd; + t.Scedilla = 0x015e; + t.Schwa = 0x018f; + t.Schwacyrillic = 0x04d8; + t.Schwadieresiscyrillic = 0x04da; + t.Scircle = 0x24c8; + t.Scircumflex = 0x015c; + t.Scommaaccent = 0x0218; + t.Sdotaccent = 0x1e60; + t.Sdotbelow = 0x1e62; + t.Sdotbelowdotaccent = 0x1e68; + t.Seharmenian = 0x054d; + t.Sevenroman = 0x2166; + t.Shaarmenian = 0x0547; + t.Shacyrillic = 0x0428; + t.Shchacyrillic = 0x0429; + t.Sheicoptic = 0x03e2; + t.Shhacyrillic = 0x04ba; + t.Shimacoptic = 0x03ec; + t.Sigma = 0x03a3; + t.Sixroman = 0x2165; + t.Smonospace = 0xff33; + t.Softsigncyrillic = 0x042c; + t.Ssmall = 0xf773; + t.Stigmagreek = 0x03da; + t.T = 0x0054; + t.Tau = 0x03a4; + t.Tbar = 0x0166; + t.Tcaron = 0x0164; + t.Tcedilla = 0x0162; + t.Tcircle = 0x24c9; + t.Tcircumflexbelow = 0x1e70; + t.Tcommaaccent = 0x0162; + t.Tdotaccent = 0x1e6a; + t.Tdotbelow = 0x1e6c; + t.Tecyrillic = 0x0422; + t.Tedescendercyrillic = 0x04ac; + t.Tenroman = 0x2169; + t.Tetsecyrillic = 0x04b4; + t.Theta = 0x0398; + t.Thook = 0x01ac; + t.Thorn = 0x00de; + t.Thornsmall = 0xf7fe; + t.Threeroman = 0x2162; + t.Tildesmall = 0xf6fe; + t.Tiwnarmenian = 0x054f; + t.Tlinebelow = 0x1e6e; + t.Tmonospace = 0xff34; + t.Toarmenian = 0x0539; + t.Tonefive = 0x01bc; + t.Tonesix = 0x0184; + t.Tonetwo = 0x01a7; + t.Tretroflexhook = 0x01ae; + t.Tsecyrillic = 0x0426; + t.Tshecyrillic = 0x040b; + t.Tsmall = 0xf774; + t.Twelveroman = 0x216b; + t.Tworoman = 0x2161; + t.U = 0x0055; + t.Uacute = 0x00da; + t.Uacutesmall = 0xf7fa; + t.Ubreve = 0x016c; + t.Ucaron = 0x01d3; + t.Ucircle = 0x24ca; + t.Ucircumflex = 0x00db; + t.Ucircumflexbelow = 0x1e76; + t.Ucircumflexsmall = 0xf7fb; + t.Ucyrillic = 0x0423; + t.Udblacute = 0x0170; + t.Udblgrave = 0x0214; + t.Udieresis = 0x00dc; + t.Udieresisacute = 0x01d7; + t.Udieresisbelow = 0x1e72; + t.Udieresiscaron = 0x01d9; + t.Udieresiscyrillic = 0x04f0; + t.Udieresisgrave = 0x01db; + t.Udieresismacron = 0x01d5; + t.Udieresissmall = 0xf7fc; + t.Udotbelow = 0x1ee4; + t.Ugrave = 0x00d9; + t.Ugravesmall = 0xf7f9; + t.Uhookabove = 0x1ee6; + t.Uhorn = 0x01af; + t.Uhornacute = 0x1ee8; + t.Uhorndotbelow = 0x1ef0; + t.Uhorngrave = 0x1eea; + t.Uhornhookabove = 0x1eec; + t.Uhorntilde = 0x1eee; + t.Uhungarumlaut = 0x0170; + t.Uhungarumlautcyrillic = 0x04f2; + t.Uinvertedbreve = 0x0216; + t.Ukcyrillic = 0x0478; + t.Umacron = 0x016a; + t.Umacroncyrillic = 0x04ee; + t.Umacrondieresis = 0x1e7a; + t.Umonospace = 0xff35; + t.Uogonek = 0x0172; + t.Upsilon = 0x03a5; + t.Upsilon1 = 0x03d2; + t.Upsilonacutehooksymbolgreek = 0x03d3; + t.Upsilonafrican = 0x01b1; + t.Upsilondieresis = 0x03ab; + t.Upsilondieresishooksymbolgreek = 0x03d4; + t.Upsilonhooksymbol = 0x03d2; + t.Upsilontonos = 0x038e; + t.Uring = 0x016e; + t.Ushortcyrillic = 0x040e; + t.Usmall = 0xf775; + t.Ustraightcyrillic = 0x04ae; + t.Ustraightstrokecyrillic = 0x04b0; + t.Utilde = 0x0168; + t.Utildeacute = 0x1e78; + t.Utildebelow = 0x1e74; + t.V = 0x0056; + t.Vcircle = 0x24cb; + t.Vdotbelow = 0x1e7e; + t.Vecyrillic = 0x0412; + t.Vewarmenian = 0x054e; + t.Vhook = 0x01b2; + t.Vmonospace = 0xff36; + t.Voarmenian = 0x0548; + t.Vsmall = 0xf776; + t.Vtilde = 0x1e7c; + t.W = 0x0057; + t.Wacute = 0x1e82; + t.Wcircle = 0x24cc; + t.Wcircumflex = 0x0174; + t.Wdieresis = 0x1e84; + t.Wdotaccent = 0x1e86; + t.Wdotbelow = 0x1e88; + t.Wgrave = 0x1e80; + t.Wmonospace = 0xff37; + t.Wsmall = 0xf777; + t.X = 0x0058; + t.Xcircle = 0x24cd; + t.Xdieresis = 0x1e8c; + t.Xdotaccent = 0x1e8a; + t.Xeharmenian = 0x053d; + t.Xi = 0x039e; + t.Xmonospace = 0xff38; + t.Xsmall = 0xf778; + t.Y = 0x0059; + t.Yacute = 0x00dd; + t.Yacutesmall = 0xf7fd; + t.Yatcyrillic = 0x0462; + t.Ycircle = 0x24ce; + t.Ycircumflex = 0x0176; + t.Ydieresis = 0x0178; + t.Ydieresissmall = 0xf7ff; + t.Ydotaccent = 0x1e8e; + t.Ydotbelow = 0x1ef4; + t.Yericyrillic = 0x042b; + t.Yerudieresiscyrillic = 0x04f8; + t.Ygrave = 0x1ef2; + t.Yhook = 0x01b3; + t.Yhookabove = 0x1ef6; + t.Yiarmenian = 0x0545; + t.Yicyrillic = 0x0407; + t.Yiwnarmenian = 0x0552; + t.Ymonospace = 0xff39; + t.Ysmall = 0xf779; + t.Ytilde = 0x1ef8; + t.Yusbigcyrillic = 0x046a; + t.Yusbigiotifiedcyrillic = 0x046c; + t.Yuslittlecyrillic = 0x0466; + t.Yuslittleiotifiedcyrillic = 0x0468; + t.Z = 0x005a; + t.Zaarmenian = 0x0536; + t.Zacute = 0x0179; + t.Zcaron = 0x017d; + t.Zcaronsmall = 0xf6ff; + t.Zcircle = 0x24cf; + t.Zcircumflex = 0x1e90; + t.Zdot = 0x017b; + t.Zdotaccent = 0x017b; + t.Zdotbelow = 0x1e92; + t.Zecyrillic = 0x0417; + t.Zedescendercyrillic = 0x0498; + t.Zedieresiscyrillic = 0x04de; + t.Zeta = 0x0396; + t.Zhearmenian = 0x053a; + t.Zhebrevecyrillic = 0x04c1; + t.Zhecyrillic = 0x0416; + t.Zhedescendercyrillic = 0x0496; + t.Zhedieresiscyrillic = 0x04dc; + t.Zlinebelow = 0x1e94; + t.Zmonospace = 0xff3a; + t.Zsmall = 0xf77a; + t.Zstroke = 0x01b5; + t.a = 0x0061; + t.aabengali = 0x0986; + t.aacute = 0x00e1; + t.aadeva = 0x0906; + t.aagujarati = 0x0a86; + t.aagurmukhi = 0x0a06; + t.aamatragurmukhi = 0x0a3e; + t.aarusquare = 0x3303; + t.aavowelsignbengali = 0x09be; + t.aavowelsigndeva = 0x093e; + t.aavowelsigngujarati = 0x0abe; + t.abbreviationmarkarmenian = 0x055f; + t.abbreviationsigndeva = 0x0970; + t.abengali = 0x0985; + t.abopomofo = 0x311a; + t.abreve = 0x0103; + t.abreveacute = 0x1eaf; + t.abrevecyrillic = 0x04d1; + t.abrevedotbelow = 0x1eb7; + t.abrevegrave = 0x1eb1; + t.abrevehookabove = 0x1eb3; + t.abrevetilde = 0x1eb5; + t.acaron = 0x01ce; + t.acircle = 0x24d0; + t.acircumflex = 0x00e2; + t.acircumflexacute = 0x1ea5; + t.acircumflexdotbelow = 0x1ead; + t.acircumflexgrave = 0x1ea7; + t.acircumflexhookabove = 0x1ea9; + t.acircumflextilde = 0x1eab; + t.acute = 0x00b4; + t.acutebelowcmb = 0x0317; + t.acutecmb = 0x0301; + t.acutecomb = 0x0301; + t.acutedeva = 0x0954; + t.acutelowmod = 0x02cf; + t.acutetonecmb = 0x0341; + t.acyrillic = 0x0430; + t.adblgrave = 0x0201; + t.addakgurmukhi = 0x0a71; + t.adeva = 0x0905; + t.adieresis = 0x00e4; + t.adieresiscyrillic = 0x04d3; + t.adieresismacron = 0x01df; + t.adotbelow = 0x1ea1; + t.adotmacron = 0x01e1; + t.ae = 0x00e6; + t.aeacute = 0x01fd; + t.aekorean = 0x3150; + t.aemacron = 0x01e3; + t.afii00208 = 0x2015; + t.afii08941 = 0x20a4; + t.afii10017 = 0x0410; + t.afii10018 = 0x0411; + t.afii10019 = 0x0412; + t.afii10020 = 0x0413; + t.afii10021 = 0x0414; + t.afii10022 = 0x0415; + t.afii10023 = 0x0401; + t.afii10024 = 0x0416; + t.afii10025 = 0x0417; + t.afii10026 = 0x0418; + t.afii10027 = 0x0419; + t.afii10028 = 0x041a; + t.afii10029 = 0x041b; + t.afii10030 = 0x041c; + t.afii10031 = 0x041d; + t.afii10032 = 0x041e; + t.afii10033 = 0x041f; + t.afii10034 = 0x0420; + t.afii10035 = 0x0421; + t.afii10036 = 0x0422; + t.afii10037 = 0x0423; + t.afii10038 = 0x0424; + t.afii10039 = 0x0425; + t.afii10040 = 0x0426; + t.afii10041 = 0x0427; + t.afii10042 = 0x0428; + t.afii10043 = 0x0429; + t.afii10044 = 0x042a; + t.afii10045 = 0x042b; + t.afii10046 = 0x042c; + t.afii10047 = 0x042d; + t.afii10048 = 0x042e; + t.afii10049 = 0x042f; + t.afii10050 = 0x0490; + t.afii10051 = 0x0402; + t.afii10052 = 0x0403; + t.afii10053 = 0x0404; + t.afii10054 = 0x0405; + t.afii10055 = 0x0406; + t.afii10056 = 0x0407; + t.afii10057 = 0x0408; + t.afii10058 = 0x0409; + t.afii10059 = 0x040a; + t.afii10060 = 0x040b; + t.afii10061 = 0x040c; + t.afii10062 = 0x040e; + t.afii10063 = 0xf6c4; + t.afii10064 = 0xf6c5; + t.afii10065 = 0x0430; + t.afii10066 = 0x0431; + t.afii10067 = 0x0432; + t.afii10068 = 0x0433; + t.afii10069 = 0x0434; + t.afii10070 = 0x0435; + t.afii10071 = 0x0451; + t.afii10072 = 0x0436; + t.afii10073 = 0x0437; + t.afii10074 = 0x0438; + t.afii10075 = 0x0439; + t.afii10076 = 0x043a; + t.afii10077 = 0x043b; + t.afii10078 = 0x043c; + t.afii10079 = 0x043d; + t.afii10080 = 0x043e; + t.afii10081 = 0x043f; + t.afii10082 = 0x0440; + t.afii10083 = 0x0441; + t.afii10084 = 0x0442; + t.afii10085 = 0x0443; + t.afii10086 = 0x0444; + t.afii10087 = 0x0445; + t.afii10088 = 0x0446; + t.afii10089 = 0x0447; + t.afii10090 = 0x0448; + t.afii10091 = 0x0449; + t.afii10092 = 0x044a; + t.afii10093 = 0x044b; + t.afii10094 = 0x044c; + t.afii10095 = 0x044d; + t.afii10096 = 0x044e; + t.afii10097 = 0x044f; + t.afii10098 = 0x0491; + t.afii10099 = 0x0452; + t.afii10100 = 0x0453; + t.afii10101 = 0x0454; + t.afii10102 = 0x0455; + t.afii10103 = 0x0456; + t.afii10104 = 0x0457; + t.afii10105 = 0x0458; + t.afii10106 = 0x0459; + t.afii10107 = 0x045a; + t.afii10108 = 0x045b; + t.afii10109 = 0x045c; + t.afii10110 = 0x045e; + t.afii10145 = 0x040f; + t.afii10146 = 0x0462; + t.afii10147 = 0x0472; + t.afii10148 = 0x0474; + t.afii10192 = 0xf6c6; + t.afii10193 = 0x045f; + t.afii10194 = 0x0463; + t.afii10195 = 0x0473; + t.afii10196 = 0x0475; + t.afii10831 = 0xf6c7; + t.afii10832 = 0xf6c8; + t.afii10846 = 0x04d9; + t.afii299 = 0x200e; + t.afii300 = 0x200f; + t.afii301 = 0x200d; + t.afii57381 = 0x066a; + t.afii57388 = 0x060c; + t.afii57392 = 0x0660; + t.afii57393 = 0x0661; + t.afii57394 = 0x0662; + t.afii57395 = 0x0663; + t.afii57396 = 0x0664; + t.afii57397 = 0x0665; + t.afii57398 = 0x0666; + t.afii57399 = 0x0667; + t.afii57400 = 0x0668; + t.afii57401 = 0x0669; + t.afii57403 = 0x061b; + t.afii57407 = 0x061f; + t.afii57409 = 0x0621; + t.afii57410 = 0x0622; + t.afii57411 = 0x0623; + t.afii57412 = 0x0624; + t.afii57413 = 0x0625; + t.afii57414 = 0x0626; + t.afii57415 = 0x0627; + t.afii57416 = 0x0628; + t.afii57417 = 0x0629; + t.afii57418 = 0x062a; + t.afii57419 = 0x062b; + t.afii57420 = 0x062c; + t.afii57421 = 0x062d; + t.afii57422 = 0x062e; + t.afii57423 = 0x062f; + t.afii57424 = 0x0630; + t.afii57425 = 0x0631; + t.afii57426 = 0x0632; + t.afii57427 = 0x0633; + t.afii57428 = 0x0634; + t.afii57429 = 0x0635; + t.afii57430 = 0x0636; + t.afii57431 = 0x0637; + t.afii57432 = 0x0638; + t.afii57433 = 0x0639; + t.afii57434 = 0x063a; + t.afii57440 = 0x0640; + t.afii57441 = 0x0641; + t.afii57442 = 0x0642; + t.afii57443 = 0x0643; + t.afii57444 = 0x0644; + t.afii57445 = 0x0645; + t.afii57446 = 0x0646; + t.afii57448 = 0x0648; + t.afii57449 = 0x0649; + t.afii57450 = 0x064a; + t.afii57451 = 0x064b; + t.afii57452 = 0x064c; + t.afii57453 = 0x064d; + t.afii57454 = 0x064e; + t.afii57455 = 0x064f; + t.afii57456 = 0x0650; + t.afii57457 = 0x0651; + t.afii57458 = 0x0652; + t.afii57470 = 0x0647; + t.afii57505 = 0x06a4; + t.afii57506 = 0x067e; + t.afii57507 = 0x0686; + t.afii57508 = 0x0698; + t.afii57509 = 0x06af; + t.afii57511 = 0x0679; + t.afii57512 = 0x0688; + t.afii57513 = 0x0691; + t.afii57514 = 0x06ba; + t.afii57519 = 0x06d2; + t.afii57534 = 0x06d5; + t.afii57636 = 0x20aa; + t.afii57645 = 0x05be; + t.afii57658 = 0x05c3; + t.afii57664 = 0x05d0; + t.afii57665 = 0x05d1; + t.afii57666 = 0x05d2; + t.afii57667 = 0x05d3; + t.afii57668 = 0x05d4; + t.afii57669 = 0x05d5; + t.afii57670 = 0x05d6; + t.afii57671 = 0x05d7; + t.afii57672 = 0x05d8; + t.afii57673 = 0x05d9; + t.afii57674 = 0x05da; + t.afii57675 = 0x05db; + t.afii57676 = 0x05dc; + t.afii57677 = 0x05dd; + t.afii57678 = 0x05de; + t.afii57679 = 0x05df; + t.afii57680 = 0x05e0; + t.afii57681 = 0x05e1; + t.afii57682 = 0x05e2; + t.afii57683 = 0x05e3; + t.afii57684 = 0x05e4; + t.afii57685 = 0x05e5; + t.afii57686 = 0x05e6; + t.afii57687 = 0x05e7; + t.afii57688 = 0x05e8; + t.afii57689 = 0x05e9; + t.afii57690 = 0x05ea; + t.afii57694 = 0xfb2a; + t.afii57695 = 0xfb2b; + t.afii57700 = 0xfb4b; + t.afii57705 = 0xfb1f; + t.afii57716 = 0x05f0; + t.afii57717 = 0x05f1; + t.afii57718 = 0x05f2; + t.afii57723 = 0xfb35; + t.afii57793 = 0x05b4; + t.afii57794 = 0x05b5; + t.afii57795 = 0x05b6; + t.afii57796 = 0x05bb; + t.afii57797 = 0x05b8; + t.afii57798 = 0x05b7; + t.afii57799 = 0x05b0; + t.afii57800 = 0x05b2; + t.afii57801 = 0x05b1; + t.afii57802 = 0x05b3; + t.afii57803 = 0x05c2; + t.afii57804 = 0x05c1; + t.afii57806 = 0x05b9; + t.afii57807 = 0x05bc; + t.afii57839 = 0x05bd; + t.afii57841 = 0x05bf; + t.afii57842 = 0x05c0; + t.afii57929 = 0x02bc; + t.afii61248 = 0x2105; + t.afii61289 = 0x2113; + t.afii61352 = 0x2116; + t.afii61573 = 0x202c; + t.afii61574 = 0x202d; + t.afii61575 = 0x202e; + t.afii61664 = 0x200c; + t.afii63167 = 0x066d; + t.afii64937 = 0x02bd; + t.agrave = 0x00e0; + t.agujarati = 0x0a85; + t.agurmukhi = 0x0a05; + t.ahiragana = 0x3042; + t.ahookabove = 0x1ea3; + t.aibengali = 0x0990; + t.aibopomofo = 0x311e; + t.aideva = 0x0910; + t.aiecyrillic = 0x04d5; + t.aigujarati = 0x0a90; + t.aigurmukhi = 0x0a10; + t.aimatragurmukhi = 0x0a48; + t.ainarabic = 0x0639; + t.ainfinalarabic = 0xfeca; + t.aininitialarabic = 0xfecb; + t.ainmedialarabic = 0xfecc; + t.ainvertedbreve = 0x0203; + t.aivowelsignbengali = 0x09c8; + t.aivowelsigndeva = 0x0948; + t.aivowelsigngujarati = 0x0ac8; + t.akatakana = 0x30a2; + t.akatakanahalfwidth = 0xff71; + t.akorean = 0x314f; + t.alef = 0x05d0; + t.alefarabic = 0x0627; + t.alefdageshhebrew = 0xfb30; + t.aleffinalarabic = 0xfe8e; + t.alefhamzaabovearabic = 0x0623; + t.alefhamzaabovefinalarabic = 0xfe84; + t.alefhamzabelowarabic = 0x0625; + t.alefhamzabelowfinalarabic = 0xfe88; + t.alefhebrew = 0x05d0; + t.aleflamedhebrew = 0xfb4f; + t.alefmaddaabovearabic = 0x0622; + t.alefmaddaabovefinalarabic = 0xfe82; + t.alefmaksuraarabic = 0x0649; + t.alefmaksurafinalarabic = 0xfef0; + t.alefmaksurainitialarabic = 0xfef3; + t.alefmaksuramedialarabic = 0xfef4; + t.alefpatahhebrew = 0xfb2e; + t.alefqamatshebrew = 0xfb2f; + t.aleph = 0x2135; + t.allequal = 0x224c; + t.alpha = 0x03b1; + t.alphatonos = 0x03ac; + t.amacron = 0x0101; + t.amonospace = 0xff41; + t.ampersand = 0x0026; + t.ampersandmonospace = 0xff06; + t.ampersandsmall = 0xf726; + t.amsquare = 0x33c2; + t.anbopomofo = 0x3122; + t.angbopomofo = 0x3124; + t.angbracketleft = 0x3008; + t.angbracketright = 0x3009; + t.angkhankhuthai = 0x0e5a; + t.angle = 0x2220; + t.anglebracketleft = 0x3008; + t.anglebracketleftvertical = 0xfe3f; + t.anglebracketright = 0x3009; + t.anglebracketrightvertical = 0xfe40; + t.angleleft = 0x2329; + t.angleright = 0x232a; + t.angstrom = 0x212b; + t.anoteleia = 0x0387; + t.anudattadeva = 0x0952; + t.anusvarabengali = 0x0982; + t.anusvaradeva = 0x0902; + t.anusvaragujarati = 0x0a82; + t.aogonek = 0x0105; + t.apaatosquare = 0x3300; + t.aparen = 0x249c; + t.apostrophearmenian = 0x055a; + t.apostrophemod = 0x02bc; + t.apple = 0xf8ff; + t.approaches = 0x2250; + t.approxequal = 0x2248; + t.approxequalorimage = 0x2252; + t.approximatelyequal = 0x2245; + t.araeaekorean = 0x318e; + t.araeakorean = 0x318d; + t.arc = 0x2312; + t.arighthalfring = 0x1e9a; + t.aring = 0x00e5; + t.aringacute = 0x01fb; + t.aringbelow = 0x1e01; + t.arrowboth = 0x2194; + t.arrowdashdown = 0x21e3; + t.arrowdashleft = 0x21e0; + t.arrowdashright = 0x21e2; + t.arrowdashup = 0x21e1; + t.arrowdblboth = 0x21d4; + t.arrowdbldown = 0x21d3; + t.arrowdblleft = 0x21d0; + t.arrowdblright = 0x21d2; + t.arrowdblup = 0x21d1; + t.arrowdown = 0x2193; + t.arrowdownleft = 0x2199; + t.arrowdownright = 0x2198; + t.arrowdownwhite = 0x21e9; + t.arrowheaddownmod = 0x02c5; + t.arrowheadleftmod = 0x02c2; + t.arrowheadrightmod = 0x02c3; + t.arrowheadupmod = 0x02c4; + t.arrowhorizex = 0xf8e7; + t.arrowleft = 0x2190; + t.arrowleftdbl = 0x21d0; + t.arrowleftdblstroke = 0x21cd; + t.arrowleftoverright = 0x21c6; + t.arrowleftwhite = 0x21e6; + t.arrowright = 0x2192; + t.arrowrightdblstroke = 0x21cf; + t.arrowrightheavy = 0x279e; + t.arrowrightoverleft = 0x21c4; + t.arrowrightwhite = 0x21e8; + t.arrowtableft = 0x21e4; + t.arrowtabright = 0x21e5; + t.arrowup = 0x2191; + t.arrowupdn = 0x2195; + t.arrowupdnbse = 0x21a8; + t.arrowupdownbase = 0x21a8; + t.arrowupleft = 0x2196; + t.arrowupleftofdown = 0x21c5; + t.arrowupright = 0x2197; + t.arrowupwhite = 0x21e7; + t.arrowvertex = 0xf8e6; + t.asciicircum = 0x005e; + t.asciicircummonospace = 0xff3e; + t.asciitilde = 0x007e; + t.asciitildemonospace = 0xff5e; + t.ascript = 0x0251; + t.ascriptturned = 0x0252; + t.asmallhiragana = 0x3041; + t.asmallkatakana = 0x30a1; + t.asmallkatakanahalfwidth = 0xff67; + t.asterisk = 0x002a; + t.asteriskaltonearabic = 0x066d; + t.asteriskarabic = 0x066d; + t.asteriskmath = 0x2217; + t.asteriskmonospace = 0xff0a; + t.asterisksmall = 0xfe61; + t.asterism = 0x2042; + t.asuperior = 0xf6e9; + t.asymptoticallyequal = 0x2243; + t.at = 0x0040; + t.atilde = 0x00e3; + t.atmonospace = 0xff20; + t.atsmall = 0xfe6b; + t.aturned = 0x0250; + t.aubengali = 0x0994; + t.aubopomofo = 0x3120; + t.audeva = 0x0914; + t.augujarati = 0x0a94; + t.augurmukhi = 0x0a14; + t.aulengthmarkbengali = 0x09d7; + t.aumatragurmukhi = 0x0a4c; + t.auvowelsignbengali = 0x09cc; + t.auvowelsigndeva = 0x094c; + t.auvowelsigngujarati = 0x0acc; + t.avagrahadeva = 0x093d; + t.aybarmenian = 0x0561; + t.ayin = 0x05e2; + t.ayinaltonehebrew = 0xfb20; + t.ayinhebrew = 0x05e2; + t.b = 0x0062; + t.babengali = 0x09ac; + t.backslash = 0x005c; + t.backslashmonospace = 0xff3c; + t.badeva = 0x092c; + t.bagujarati = 0x0aac; + t.bagurmukhi = 0x0a2c; + t.bahiragana = 0x3070; + t.bahtthai = 0x0e3f; + t.bakatakana = 0x30d0; + t.bar = 0x007c; + t.barmonospace = 0xff5c; + t.bbopomofo = 0x3105; + t.bcircle = 0x24d1; + t.bdotaccent = 0x1e03; + t.bdotbelow = 0x1e05; + t.beamedsixteenthnotes = 0x266c; + t.because = 0x2235; + t.becyrillic = 0x0431; + t.beharabic = 0x0628; + t.behfinalarabic = 0xfe90; + t.behinitialarabic = 0xfe91; + t.behiragana = 0x3079; + t.behmedialarabic = 0xfe92; + t.behmeeminitialarabic = 0xfc9f; + t.behmeemisolatedarabic = 0xfc08; + t.behnoonfinalarabic = 0xfc6d; + t.bekatakana = 0x30d9; + t.benarmenian = 0x0562; + t.bet = 0x05d1; + t.beta = 0x03b2; + t.betasymbolgreek = 0x03d0; + t.betdagesh = 0xfb31; + t.betdageshhebrew = 0xfb31; + t.bethebrew = 0x05d1; + t.betrafehebrew = 0xfb4c; + t.bhabengali = 0x09ad; + t.bhadeva = 0x092d; + t.bhagujarati = 0x0aad; + t.bhagurmukhi = 0x0a2d; + t.bhook = 0x0253; + t.bihiragana = 0x3073; + t.bikatakana = 0x30d3; + t.bilabialclick = 0x0298; + t.bindigurmukhi = 0x0a02; + t.birusquare = 0x3331; + t.blackcircle = 0x25cf; + t.blackdiamond = 0x25c6; + t.blackdownpointingtriangle = 0x25bc; + t.blackleftpointingpointer = 0x25c4; + t.blackleftpointingtriangle = 0x25c0; + t.blacklenticularbracketleft = 0x3010; + t.blacklenticularbracketleftvertical = 0xfe3b; + t.blacklenticularbracketright = 0x3011; + t.blacklenticularbracketrightvertical = 0xfe3c; + t.blacklowerlefttriangle = 0x25e3; + t.blacklowerrighttriangle = 0x25e2; + t.blackrectangle = 0x25ac; + t.blackrightpointingpointer = 0x25ba; + t.blackrightpointingtriangle = 0x25b6; + t.blacksmallsquare = 0x25aa; + t.blacksmilingface = 0x263b; + t.blacksquare = 0x25a0; + t.blackstar = 0x2605; + t.blackupperlefttriangle = 0x25e4; + t.blackupperrighttriangle = 0x25e5; + t.blackuppointingsmalltriangle = 0x25b4; + t.blackuppointingtriangle = 0x25b2; + t.blank = 0x2423; + t.blinebelow = 0x1e07; + t.block = 0x2588; + t.bmonospace = 0xff42; + t.bobaimaithai = 0x0e1a; + t.bohiragana = 0x307c; + t.bokatakana = 0x30dc; + t.bparen = 0x249d; + t.bqsquare = 0x33c3; + t.braceex = 0xf8f4; + t.braceleft = 0x007b; + t.braceleftbt = 0xf8f3; + t.braceleftmid = 0xf8f2; + t.braceleftmonospace = 0xff5b; + t.braceleftsmall = 0xfe5b; + t.bracelefttp = 0xf8f1; + t.braceleftvertical = 0xfe37; + t.braceright = 0x007d; + t.bracerightbt = 0xf8fe; + t.bracerightmid = 0xf8fd; + t.bracerightmonospace = 0xff5d; + t.bracerightsmall = 0xfe5c; + t.bracerighttp = 0xf8fc; + t.bracerightvertical = 0xfe38; + t.bracketleft = 0x005b; + t.bracketleftbt = 0xf8f0; + t.bracketleftex = 0xf8ef; + t.bracketleftmonospace = 0xff3b; + t.bracketlefttp = 0xf8ee; + t.bracketright = 0x005d; + t.bracketrightbt = 0xf8fb; + t.bracketrightex = 0xf8fa; + t.bracketrightmonospace = 0xff3d; + t.bracketrighttp = 0xf8f9; + t.breve = 0x02d8; + t.brevebelowcmb = 0x032e; + t.brevecmb = 0x0306; + t.breveinvertedbelowcmb = 0x032f; + t.breveinvertedcmb = 0x0311; + t.breveinverteddoublecmb = 0x0361; + t.bridgebelowcmb = 0x032a; + t.bridgeinvertedbelowcmb = 0x033a; + t.brokenbar = 0x00a6; + t.bstroke = 0x0180; + t.bsuperior = 0xf6ea; + t.btopbar = 0x0183; + t.buhiragana = 0x3076; + t.bukatakana = 0x30d6; + t.bullet = 0x2022; + t.bulletinverse = 0x25d8; + t.bulletoperator = 0x2219; + t.bullseye = 0x25ce; + t.c = 0x0063; + t.caarmenian = 0x056e; + t.cabengali = 0x099a; + t.cacute = 0x0107; + t.cadeva = 0x091a; + t.cagujarati = 0x0a9a; + t.cagurmukhi = 0x0a1a; + t.calsquare = 0x3388; + t.candrabindubengali = 0x0981; + t.candrabinducmb = 0x0310; + t.candrabindudeva = 0x0901; + t.candrabindugujarati = 0x0a81; + t.capslock = 0x21ea; + t.careof = 0x2105; + t.caron = 0x02c7; + t.caronbelowcmb = 0x032c; + t.caroncmb = 0x030c; + t.carriagereturn = 0x21b5; + t.cbopomofo = 0x3118; + t.ccaron = 0x010d; + t.ccedilla = 0x00e7; + t.ccedillaacute = 0x1e09; + t.ccircle = 0x24d2; + t.ccircumflex = 0x0109; + t.ccurl = 0x0255; + t.cdot = 0x010b; + t.cdotaccent = 0x010b; + t.cdsquare = 0x33c5; + t.cedilla = 0x00b8; + t.cedillacmb = 0x0327; + t.cent = 0x00a2; + t.centigrade = 0x2103; + t.centinferior = 0xf6df; + t.centmonospace = 0xffe0; + t.centoldstyle = 0xf7a2; + t.centsuperior = 0xf6e0; + t.chaarmenian = 0x0579; + t.chabengali = 0x099b; + t.chadeva = 0x091b; + t.chagujarati = 0x0a9b; + t.chagurmukhi = 0x0a1b; + t.chbopomofo = 0x3114; + t.cheabkhasiancyrillic = 0x04bd; + t.checkmark = 0x2713; + t.checyrillic = 0x0447; + t.chedescenderabkhasiancyrillic = 0x04bf; + t.chedescendercyrillic = 0x04b7; + t.chedieresiscyrillic = 0x04f5; + t.cheharmenian = 0x0573; + t.chekhakassiancyrillic = 0x04cc; + t.cheverticalstrokecyrillic = 0x04b9; + t.chi = 0x03c7; + t.chieuchacirclekorean = 0x3277; + t.chieuchaparenkorean = 0x3217; + t.chieuchcirclekorean = 0x3269; + t.chieuchkorean = 0x314a; + t.chieuchparenkorean = 0x3209; + t.chochangthai = 0x0e0a; + t.chochanthai = 0x0e08; + t.chochingthai = 0x0e09; + t.chochoethai = 0x0e0c; + t.chook = 0x0188; + t.cieucacirclekorean = 0x3276; + t.cieucaparenkorean = 0x3216; + t.cieuccirclekorean = 0x3268; + t.cieuckorean = 0x3148; + t.cieucparenkorean = 0x3208; + t.cieucuparenkorean = 0x321c; + t.circle = 0x25cb; + t.circlecopyrt = 0x00a9; + t.circlemultiply = 0x2297; + t.circleot = 0x2299; + t.circleplus = 0x2295; + t.circlepostalmark = 0x3036; + t.circlewithlefthalfblack = 0x25d0; + t.circlewithrighthalfblack = 0x25d1; + t.circumflex = 0x02c6; + t.circumflexbelowcmb = 0x032d; + t.circumflexcmb = 0x0302; + t.clear = 0x2327; + t.clickalveolar = 0x01c2; + t.clickdental = 0x01c0; + t.clicklateral = 0x01c1; + t.clickretroflex = 0x01c3; + t.club = 0x2663; + t.clubsuitblack = 0x2663; + t.clubsuitwhite = 0x2667; + t.cmcubedsquare = 0x33a4; + t.cmonospace = 0xff43; + t.cmsquaredsquare = 0x33a0; + t.coarmenian = 0x0581; + t.colon = 0x003a; + t.colonmonetary = 0x20a1; + t.colonmonospace = 0xff1a; + t.colonsign = 0x20a1; + t.colonsmall = 0xfe55; + t.colontriangularhalfmod = 0x02d1; + t.colontriangularmod = 0x02d0; + t.comma = 0x002c; + t.commaabovecmb = 0x0313; + t.commaaboverightcmb = 0x0315; + t.commaaccent = 0xf6c3; + t.commaarabic = 0x060c; + t.commaarmenian = 0x055d; + t.commainferior = 0xf6e1; + t.commamonospace = 0xff0c; + t.commareversedabovecmb = 0x0314; + t.commareversedmod = 0x02bd; + t.commasmall = 0xfe50; + t.commasuperior = 0xf6e2; + t.commaturnedabovecmb = 0x0312; + t.commaturnedmod = 0x02bb; + t.compass = 0x263c; + t.congruent = 0x2245; + t.contourintegral = 0x222e; + t.control = 0x2303; + t.controlACK = 0x0006; + t.controlBEL = 0x0007; + t.controlBS = 0x0008; + t.controlCAN = 0x0018; + t.controlCR = 0x000d; + t.controlDC1 = 0x0011; + t.controlDC2 = 0x0012; + t.controlDC3 = 0x0013; + t.controlDC4 = 0x0014; + t.controlDEL = 0x007f; + t.controlDLE = 0x0010; + t.controlEM = 0x0019; + t.controlENQ = 0x0005; + t.controlEOT = 0x0004; + t.controlESC = 0x001b; + t.controlETB = 0x0017; + t.controlETX = 0x0003; + t.controlFF = 0x000c; + t.controlFS = 0x001c; + t.controlGS = 0x001d; + t.controlHT = 0x0009; + t.controlLF = 0x000a; + t.controlNAK = 0x0015; + t.controlNULL = 0x0000; + t.controlRS = 0x001e; + t.controlSI = 0x000f; + t.controlSO = 0x000e; + t.controlSOT = 0x0002; + t.controlSTX = 0x0001; + t.controlSUB = 0x001a; + t.controlSYN = 0x0016; + t.controlUS = 0x001f; + t.controlVT = 0x000b; + t.copyright = 0x00a9; + t.copyrightsans = 0xf8e9; + t.copyrightserif = 0xf6d9; + t.cornerbracketleft = 0x300c; + t.cornerbracketlefthalfwidth = 0xff62; + t.cornerbracketleftvertical = 0xfe41; + t.cornerbracketright = 0x300d; + t.cornerbracketrighthalfwidth = 0xff63; + t.cornerbracketrightvertical = 0xfe42; + t.corporationsquare = 0x337f; + t.cosquare = 0x33c7; + t.coverkgsquare = 0x33c6; + t.cparen = 0x249e; + t.cruzeiro = 0x20a2; + t.cstretched = 0x0297; + t.curlyand = 0x22cf; + t.curlyor = 0x22ce; + t.currency = 0x00a4; + t.cyrBreve = 0xf6d1; + t.cyrFlex = 0xf6d2; + t.cyrbreve = 0xf6d4; + t.cyrflex = 0xf6d5; + t.d = 0x0064; + t.daarmenian = 0x0564; + t.dabengali = 0x09a6; + t.dadarabic = 0x0636; + t.dadeva = 0x0926; + t.dadfinalarabic = 0xfebe; + t.dadinitialarabic = 0xfebf; + t.dadmedialarabic = 0xfec0; + t.dagesh = 0x05bc; + t.dageshhebrew = 0x05bc; + t.dagger = 0x2020; + t.daggerdbl = 0x2021; + t.dagujarati = 0x0aa6; + t.dagurmukhi = 0x0a26; + t.dahiragana = 0x3060; + t.dakatakana = 0x30c0; + t.dalarabic = 0x062f; + t.dalet = 0x05d3; + t.daletdagesh = 0xfb33; + t.daletdageshhebrew = 0xfb33; + t.dalethebrew = 0x05d3; + t.dalfinalarabic = 0xfeaa; + t.dammaarabic = 0x064f; + t.dammalowarabic = 0x064f; + t.dammatanaltonearabic = 0x064c; + t.dammatanarabic = 0x064c; + t.danda = 0x0964; + t.dargahebrew = 0x05a7; + t.dargalefthebrew = 0x05a7; + t.dasiapneumatacyrilliccmb = 0x0485; + t.dblGrave = 0xf6d3; + t.dblanglebracketleft = 0x300a; + t.dblanglebracketleftvertical = 0xfe3d; + t.dblanglebracketright = 0x300b; + t.dblanglebracketrightvertical = 0xfe3e; + t.dblarchinvertedbelowcmb = 0x032b; + t.dblarrowleft = 0x21d4; + t.dblarrowright = 0x21d2; + t.dbldanda = 0x0965; + t.dblgrave = 0xf6d6; + t.dblgravecmb = 0x030f; + t.dblintegral = 0x222c; + t.dbllowline = 0x2017; + t.dbllowlinecmb = 0x0333; + t.dbloverlinecmb = 0x033f; + t.dblprimemod = 0x02ba; + t.dblverticalbar = 0x2016; + t.dblverticallineabovecmb = 0x030e; + t.dbopomofo = 0x3109; + t.dbsquare = 0x33c8; + t.dcaron = 0x010f; + t.dcedilla = 0x1e11; + t.dcircle = 0x24d3; + t.dcircumflexbelow = 0x1e13; + t.dcroat = 0x0111; + t.ddabengali = 0x09a1; + t.ddadeva = 0x0921; + t.ddagujarati = 0x0aa1; + t.ddagurmukhi = 0x0a21; + t.ddalarabic = 0x0688; + t.ddalfinalarabic = 0xfb89; + t.dddhadeva = 0x095c; + t.ddhabengali = 0x09a2; + t.ddhadeva = 0x0922; + t.ddhagujarati = 0x0aa2; + t.ddhagurmukhi = 0x0a22; + t.ddotaccent = 0x1e0b; + t.ddotbelow = 0x1e0d; + t.decimalseparatorarabic = 0x066b; + t.decimalseparatorpersian = 0x066b; + t.decyrillic = 0x0434; + t.degree = 0x00b0; + t.dehihebrew = 0x05ad; + t.dehiragana = 0x3067; + t.deicoptic = 0x03ef; + t.dekatakana = 0x30c7; + t.deleteleft = 0x232b; + t.deleteright = 0x2326; + t.delta = 0x03b4; + t.deltaturned = 0x018d; + t.denominatorminusonenumeratorbengali = 0x09f8; + t.dezh = 0x02a4; + t.dhabengali = 0x09a7; + t.dhadeva = 0x0927; + t.dhagujarati = 0x0aa7; + t.dhagurmukhi = 0x0a27; + t.dhook = 0x0257; + t.dialytikatonos = 0x0385; + t.dialytikatonoscmb = 0x0344; + t.diamond = 0x2666; + t.diamondsuitwhite = 0x2662; + t.dieresis = 0x00a8; + t.dieresisacute = 0xf6d7; + t.dieresisbelowcmb = 0x0324; + t.dieresiscmb = 0x0308; + t.dieresisgrave = 0xf6d8; + t.dieresistonos = 0x0385; + t.dihiragana = 0x3062; + t.dikatakana = 0x30c2; + t.dittomark = 0x3003; + t.divide = 0x00f7; + t.divides = 0x2223; + t.divisionslash = 0x2215; + t.djecyrillic = 0x0452; + t.dkshade = 0x2593; + t.dlinebelow = 0x1e0f; + t.dlsquare = 0x3397; + t.dmacron = 0x0111; + t.dmonospace = 0xff44; + t.dnblock = 0x2584; + t.dochadathai = 0x0e0e; + t.dodekthai = 0x0e14; + t.dohiragana = 0x3069; + t.dokatakana = 0x30c9; + t.dollar = 0x0024; + t.dollarinferior = 0xf6e3; + t.dollarmonospace = 0xff04; + t.dollaroldstyle = 0xf724; + t.dollarsmall = 0xfe69; + t.dollarsuperior = 0xf6e4; + t.dong = 0x20ab; + t.dorusquare = 0x3326; + t.dotaccent = 0x02d9; + t.dotaccentcmb = 0x0307; + t.dotbelowcmb = 0x0323; + t.dotbelowcomb = 0x0323; + t.dotkatakana = 0x30fb; + t.dotlessi = 0x0131; + t.dotlessj = 0xf6be; + t.dotlessjstrokehook = 0x0284; + t.dotmath = 0x22c5; + t.dottedcircle = 0x25cc; + t.doubleyodpatah = 0xfb1f; + t.doubleyodpatahhebrew = 0xfb1f; + t.downtackbelowcmb = 0x031e; + t.downtackmod = 0x02d5; + t.dparen = 0x249f; + t.dsuperior = 0xf6eb; + t.dtail = 0x0256; + t.dtopbar = 0x018c; + t.duhiragana = 0x3065; + t.dukatakana = 0x30c5; + t.dz = 0x01f3; + t.dzaltone = 0x02a3; + t.dzcaron = 0x01c6; + t.dzcurl = 0x02a5; + t.dzeabkhasiancyrillic = 0x04e1; + t.dzecyrillic = 0x0455; + t.dzhecyrillic = 0x045f; + t.e = 0x0065; + t.eacute = 0x00e9; + t.earth = 0x2641; + t.ebengali = 0x098f; + t.ebopomofo = 0x311c; + t.ebreve = 0x0115; + t.ecandradeva = 0x090d; + t.ecandragujarati = 0x0a8d; + t.ecandravowelsigndeva = 0x0945; + t.ecandravowelsigngujarati = 0x0ac5; + t.ecaron = 0x011b; + t.ecedillabreve = 0x1e1d; + t.echarmenian = 0x0565; + t.echyiwnarmenian = 0x0587; + t.ecircle = 0x24d4; + t.ecircumflex = 0x00ea; + t.ecircumflexacute = 0x1ebf; + t.ecircumflexbelow = 0x1e19; + t.ecircumflexdotbelow = 0x1ec7; + t.ecircumflexgrave = 0x1ec1; + t.ecircumflexhookabove = 0x1ec3; + t.ecircumflextilde = 0x1ec5; + t.ecyrillic = 0x0454; + t.edblgrave = 0x0205; + t.edeva = 0x090f; + t.edieresis = 0x00eb; + t.edot = 0x0117; + t.edotaccent = 0x0117; + t.edotbelow = 0x1eb9; + t.eegurmukhi = 0x0a0f; + t.eematragurmukhi = 0x0a47; + t.efcyrillic = 0x0444; + t.egrave = 0x00e8; + t.egujarati = 0x0a8f; + t.eharmenian = 0x0567; + t.ehbopomofo = 0x311d; + t.ehiragana = 0x3048; + t.ehookabove = 0x1ebb; + t.eibopomofo = 0x311f; + t.eight = 0x0038; + t.eightarabic = 0x0668; + t.eightbengali = 0x09ee; + t.eightcircle = 0x2467; + t.eightcircleinversesansserif = 0x2791; + t.eightdeva = 0x096e; + t.eighteencircle = 0x2471; + t.eighteenparen = 0x2485; + t.eighteenperiod = 0x2499; + t.eightgujarati = 0x0aee; + t.eightgurmukhi = 0x0a6e; + t.eighthackarabic = 0x0668; + t.eighthangzhou = 0x3028; + t.eighthnotebeamed = 0x266b; + t.eightideographicparen = 0x3227; + t.eightinferior = 0x2088; + t.eightmonospace = 0xff18; + t.eightoldstyle = 0xf738; + t.eightparen = 0x247b; + t.eightperiod = 0x248f; + t.eightpersian = 0x06f8; + t.eightroman = 0x2177; + t.eightsuperior = 0x2078; + t.eightthai = 0x0e58; + t.einvertedbreve = 0x0207; + t.eiotifiedcyrillic = 0x0465; + t.ekatakana = 0x30a8; + t.ekatakanahalfwidth = 0xff74; + t.ekonkargurmukhi = 0x0a74; + t.ekorean = 0x3154; + t.elcyrillic = 0x043b; + t.element = 0x2208; + t.elevencircle = 0x246a; + t.elevenparen = 0x247e; + t.elevenperiod = 0x2492; + t.elevenroman = 0x217a; + t.ellipsis = 0x2026; + t.ellipsisvertical = 0x22ee; + t.emacron = 0x0113; + t.emacronacute = 0x1e17; + t.emacrongrave = 0x1e15; + t.emcyrillic = 0x043c; + t.emdash = 0x2014; + t.emdashvertical = 0xfe31; + t.emonospace = 0xff45; + t.emphasismarkarmenian = 0x055b; + t.emptyset = 0x2205; + t.enbopomofo = 0x3123; + t.encyrillic = 0x043d; + t.endash = 0x2013; + t.endashvertical = 0xfe32; + t.endescendercyrillic = 0x04a3; + t.eng = 0x014b; + t.engbopomofo = 0x3125; + t.enghecyrillic = 0x04a5; + t.enhookcyrillic = 0x04c8; + t.enspace = 0x2002; + t.eogonek = 0x0119; + t.eokorean = 0x3153; + t.eopen = 0x025b; + t.eopenclosed = 0x029a; + t.eopenreversed = 0x025c; + t.eopenreversedclosed = 0x025e; + t.eopenreversedhook = 0x025d; + t.eparen = 0x24a0; + t.epsilon = 0x03b5; + t.epsilontonos = 0x03ad; + t.equal = 0x003d; + t.equalmonospace = 0xff1d; + t.equalsmall = 0xfe66; + t.equalsuperior = 0x207c; + t.equivalence = 0x2261; + t.erbopomofo = 0x3126; + t.ercyrillic = 0x0440; + t.ereversed = 0x0258; + t.ereversedcyrillic = 0x044d; + t.escyrillic = 0x0441; + t.esdescendercyrillic = 0x04ab; + t.esh = 0x0283; + t.eshcurl = 0x0286; + t.eshortdeva = 0x090e; + t.eshortvowelsigndeva = 0x0946; + t.eshreversedloop = 0x01aa; + t.eshsquatreversed = 0x0285; + t.esmallhiragana = 0x3047; + t.esmallkatakana = 0x30a7; + t.esmallkatakanahalfwidth = 0xff6a; + t.estimated = 0x212e; + t.esuperior = 0xf6ec; + t.eta = 0x03b7; + t.etarmenian = 0x0568; + t.etatonos = 0x03ae; + t.eth = 0x00f0; + t.etilde = 0x1ebd; + t.etildebelow = 0x1e1b; + t.etnahtafoukhhebrew = 0x0591; + t.etnahtafoukhlefthebrew = 0x0591; + t.etnahtahebrew = 0x0591; + t.etnahtalefthebrew = 0x0591; + t.eturned = 0x01dd; + t.eukorean = 0x3161; + t.euro = 0x20ac; + t.evowelsignbengali = 0x09c7; + t.evowelsigndeva = 0x0947; + t.evowelsigngujarati = 0x0ac7; + t.exclam = 0x0021; + t.exclamarmenian = 0x055c; + t.exclamdbl = 0x203c; + t.exclamdown = 0x00a1; + t.exclamdownsmall = 0xf7a1; + t.exclammonospace = 0xff01; + t.exclamsmall = 0xf721; + t.existential = 0x2203; + t.ezh = 0x0292; + t.ezhcaron = 0x01ef; + t.ezhcurl = 0x0293; + t.ezhreversed = 0x01b9; + t.ezhtail = 0x01ba; + t.f = 0x0066; + t.fadeva = 0x095e; + t.fagurmukhi = 0x0a5e; + t.fahrenheit = 0x2109; + t.fathaarabic = 0x064e; + t.fathalowarabic = 0x064e; + t.fathatanarabic = 0x064b; + t.fbopomofo = 0x3108; + t.fcircle = 0x24d5; + t.fdotaccent = 0x1e1f; + t.feharabic = 0x0641; + t.feharmenian = 0x0586; + t.fehfinalarabic = 0xfed2; + t.fehinitialarabic = 0xfed3; + t.fehmedialarabic = 0xfed4; + t.feicoptic = 0x03e5; + t.female = 0x2640; + t.ff = 0xfb00; + t.f_f = 0xfb00; + t.ffi = 0xfb03; + t.f_f_i = 0xfb03; + t.ffl = 0xfb04; + t.f_f_l = 0xfb04; + t.fi = 0xfb01; + t.f_i = 0xfb01; + t.fifteencircle = 0x246e; + t.fifteenparen = 0x2482; + t.fifteenperiod = 0x2496; + t.figuredash = 0x2012; + t.filledbox = 0x25a0; + t.filledrect = 0x25ac; + t.finalkaf = 0x05da; + t.finalkafdagesh = 0xfb3a; + t.finalkafdageshhebrew = 0xfb3a; + t.finalkafhebrew = 0x05da; + t.finalmem = 0x05dd; + t.finalmemhebrew = 0x05dd; + t.finalnun = 0x05df; + t.finalnunhebrew = 0x05df; + t.finalpe = 0x05e3; + t.finalpehebrew = 0x05e3; + t.finaltsadi = 0x05e5; + t.finaltsadihebrew = 0x05e5; + t.firsttonechinese = 0x02c9; + t.fisheye = 0x25c9; + t.fitacyrillic = 0x0473; + t.five = 0x0035; + t.fivearabic = 0x0665; + t.fivebengali = 0x09eb; + t.fivecircle = 0x2464; + t.fivecircleinversesansserif = 0x278e; + t.fivedeva = 0x096b; + t.fiveeighths = 0x215d; + t.fivegujarati = 0x0aeb; + t.fivegurmukhi = 0x0a6b; + t.fivehackarabic = 0x0665; + t.fivehangzhou = 0x3025; + t.fiveideographicparen = 0x3224; + t.fiveinferior = 0x2085; + t.fivemonospace = 0xff15; + t.fiveoldstyle = 0xf735; + t.fiveparen = 0x2478; + t.fiveperiod = 0x248c; + t.fivepersian = 0x06f5; + t.fiveroman = 0x2174; + t.fivesuperior = 0x2075; + t.fivethai = 0x0e55; + t.fl = 0xfb02; + t.f_l = 0xfb02; + t.florin = 0x0192; + t.fmonospace = 0xff46; + t.fmsquare = 0x3399; + t.fofanthai = 0x0e1f; + t.fofathai = 0x0e1d; + t.fongmanthai = 0x0e4f; + t.forall = 0x2200; + t.four = 0x0034; + t.fourarabic = 0x0664; + t.fourbengali = 0x09ea; + t.fourcircle = 0x2463; + t.fourcircleinversesansserif = 0x278d; + t.fourdeva = 0x096a; + t.fourgujarati = 0x0aea; + t.fourgurmukhi = 0x0a6a; + t.fourhackarabic = 0x0664; + t.fourhangzhou = 0x3024; + t.fourideographicparen = 0x3223; + t.fourinferior = 0x2084; + t.fourmonospace = 0xff14; + t.fournumeratorbengali = 0x09f7; + t.fouroldstyle = 0xf734; + t.fourparen = 0x2477; + t.fourperiod = 0x248b; + t.fourpersian = 0x06f4; + t.fourroman = 0x2173; + t.foursuperior = 0x2074; + t.fourteencircle = 0x246d; + t.fourteenparen = 0x2481; + t.fourteenperiod = 0x2495; + t.fourthai = 0x0e54; + t.fourthtonechinese = 0x02cb; + t.fparen = 0x24a1; + t.fraction = 0x2044; + t.franc = 0x20a3; + t.g = 0x0067; + t.gabengali = 0x0997; + t.gacute = 0x01f5; + t.gadeva = 0x0917; + t.gafarabic = 0x06af; + t.gaffinalarabic = 0xfb93; + t.gafinitialarabic = 0xfb94; + t.gafmedialarabic = 0xfb95; + t.gagujarati = 0x0a97; + t.gagurmukhi = 0x0a17; + t.gahiragana = 0x304c; + t.gakatakana = 0x30ac; + t.gamma = 0x03b3; + t.gammalatinsmall = 0x0263; + t.gammasuperior = 0x02e0; + t.gangiacoptic = 0x03eb; + t.gbopomofo = 0x310d; + t.gbreve = 0x011f; + t.gcaron = 0x01e7; + t.gcedilla = 0x0123; + t.gcircle = 0x24d6; + t.gcircumflex = 0x011d; + t.gcommaaccent = 0x0123; + t.gdot = 0x0121; + t.gdotaccent = 0x0121; + t.gecyrillic = 0x0433; + t.gehiragana = 0x3052; + t.gekatakana = 0x30b2; + t.geometricallyequal = 0x2251; + t.gereshaccenthebrew = 0x059c; + t.gereshhebrew = 0x05f3; + t.gereshmuqdamhebrew = 0x059d; + t.germandbls = 0x00df; + t.gershayimaccenthebrew = 0x059e; + t.gershayimhebrew = 0x05f4; + t.getamark = 0x3013; + t.ghabengali = 0x0998; + t.ghadarmenian = 0x0572; + t.ghadeva = 0x0918; + t.ghagujarati = 0x0a98; + t.ghagurmukhi = 0x0a18; + t.ghainarabic = 0x063a; + t.ghainfinalarabic = 0xfece; + t.ghaininitialarabic = 0xfecf; + t.ghainmedialarabic = 0xfed0; + t.ghemiddlehookcyrillic = 0x0495; + t.ghestrokecyrillic = 0x0493; + t.gheupturncyrillic = 0x0491; + t.ghhadeva = 0x095a; + t.ghhagurmukhi = 0x0a5a; + t.ghook = 0x0260; + t.ghzsquare = 0x3393; + t.gihiragana = 0x304e; + t.gikatakana = 0x30ae; + t.gimarmenian = 0x0563; + t.gimel = 0x05d2; + t.gimeldagesh = 0xfb32; + t.gimeldageshhebrew = 0xfb32; + t.gimelhebrew = 0x05d2; + t.gjecyrillic = 0x0453; + t.glottalinvertedstroke = 0x01be; + t.glottalstop = 0x0294; + t.glottalstopinverted = 0x0296; + t.glottalstopmod = 0x02c0; + t.glottalstopreversed = 0x0295; + t.glottalstopreversedmod = 0x02c1; + t.glottalstopreversedsuperior = 0x02e4; + t.glottalstopstroke = 0x02a1; + t.glottalstopstrokereversed = 0x02a2; + t.gmacron = 0x1e21; + t.gmonospace = 0xff47; + t.gohiragana = 0x3054; + t.gokatakana = 0x30b4; + t.gparen = 0x24a2; + t.gpasquare = 0x33ac; + t.gradient = 0x2207; + t.grave = 0x0060; + t.gravebelowcmb = 0x0316; + t.gravecmb = 0x0300; + t.gravecomb = 0x0300; + t.gravedeva = 0x0953; + t.gravelowmod = 0x02ce; + t.gravemonospace = 0xff40; + t.gravetonecmb = 0x0340; + t.greater = 0x003e; + t.greaterequal = 0x2265; + t.greaterequalorless = 0x22db; + t.greatermonospace = 0xff1e; + t.greaterorequivalent = 0x2273; + t.greaterorless = 0x2277; + t.greateroverequal = 0x2267; + t.greatersmall = 0xfe65; + t.gscript = 0x0261; + t.gstroke = 0x01e5; + t.guhiragana = 0x3050; + t.guillemotleft = 0x00ab; + t.guillemotright = 0x00bb; + t.guilsinglleft = 0x2039; + t.guilsinglright = 0x203a; + t.gukatakana = 0x30b0; + t.guramusquare = 0x3318; + t.gysquare = 0x33c9; + t.h = 0x0068; + t.haabkhasiancyrillic = 0x04a9; + t.haaltonearabic = 0x06c1; + t.habengali = 0x09b9; + t.hadescendercyrillic = 0x04b3; + t.hadeva = 0x0939; + t.hagujarati = 0x0ab9; + t.hagurmukhi = 0x0a39; + t.haharabic = 0x062d; + t.hahfinalarabic = 0xfea2; + t.hahinitialarabic = 0xfea3; + t.hahiragana = 0x306f; + t.hahmedialarabic = 0xfea4; + t.haitusquare = 0x332a; + t.hakatakana = 0x30cf; + t.hakatakanahalfwidth = 0xff8a; + t.halantgurmukhi = 0x0a4d; + t.hamzaarabic = 0x0621; + t.hamzalowarabic = 0x0621; + t.hangulfiller = 0x3164; + t.hardsigncyrillic = 0x044a; + t.harpoonleftbarbup = 0x21bc; + t.harpoonrightbarbup = 0x21c0; + t.hasquare = 0x33ca; + t.hatafpatah = 0x05b2; + t.hatafpatah16 = 0x05b2; + t.hatafpatah23 = 0x05b2; + t.hatafpatah2f = 0x05b2; + t.hatafpatahhebrew = 0x05b2; + t.hatafpatahnarrowhebrew = 0x05b2; + t.hatafpatahquarterhebrew = 0x05b2; + t.hatafpatahwidehebrew = 0x05b2; + t.hatafqamats = 0x05b3; + t.hatafqamats1b = 0x05b3; + t.hatafqamats28 = 0x05b3; + t.hatafqamats34 = 0x05b3; + t.hatafqamatshebrew = 0x05b3; + t.hatafqamatsnarrowhebrew = 0x05b3; + t.hatafqamatsquarterhebrew = 0x05b3; + t.hatafqamatswidehebrew = 0x05b3; + t.hatafsegol = 0x05b1; + t.hatafsegol17 = 0x05b1; + t.hatafsegol24 = 0x05b1; + t.hatafsegol30 = 0x05b1; + t.hatafsegolhebrew = 0x05b1; + t.hatafsegolnarrowhebrew = 0x05b1; + t.hatafsegolquarterhebrew = 0x05b1; + t.hatafsegolwidehebrew = 0x05b1; + t.hbar = 0x0127; + t.hbopomofo = 0x310f; + t.hbrevebelow = 0x1e2b; + t.hcedilla = 0x1e29; + t.hcircle = 0x24d7; + t.hcircumflex = 0x0125; + t.hdieresis = 0x1e27; + t.hdotaccent = 0x1e23; + t.hdotbelow = 0x1e25; + t.he = 0x05d4; + t.heart = 0x2665; + t.heartsuitblack = 0x2665; + t.heartsuitwhite = 0x2661; + t.hedagesh = 0xfb34; + t.hedageshhebrew = 0xfb34; + t.hehaltonearabic = 0x06c1; + t.heharabic = 0x0647; + t.hehebrew = 0x05d4; + t.hehfinalaltonearabic = 0xfba7; + t.hehfinalalttwoarabic = 0xfeea; + t.hehfinalarabic = 0xfeea; + t.hehhamzaabovefinalarabic = 0xfba5; + t.hehhamzaaboveisolatedarabic = 0xfba4; + t.hehinitialaltonearabic = 0xfba8; + t.hehinitialarabic = 0xfeeb; + t.hehiragana = 0x3078; + t.hehmedialaltonearabic = 0xfba9; + t.hehmedialarabic = 0xfeec; + t.heiseierasquare = 0x337b; + t.hekatakana = 0x30d8; + t.hekatakanahalfwidth = 0xff8d; + t.hekutaarusquare = 0x3336; + t.henghook = 0x0267; + t.herutusquare = 0x3339; + t.het = 0x05d7; + t.hethebrew = 0x05d7; + t.hhook = 0x0266; + t.hhooksuperior = 0x02b1; + t.hieuhacirclekorean = 0x327b; + t.hieuhaparenkorean = 0x321b; + t.hieuhcirclekorean = 0x326d; + t.hieuhkorean = 0x314e; + t.hieuhparenkorean = 0x320d; + t.hihiragana = 0x3072; + t.hikatakana = 0x30d2; + t.hikatakanahalfwidth = 0xff8b; + t.hiriq = 0x05b4; + t.hiriq14 = 0x05b4; + t.hiriq21 = 0x05b4; + t.hiriq2d = 0x05b4; + t.hiriqhebrew = 0x05b4; + t.hiriqnarrowhebrew = 0x05b4; + t.hiriqquarterhebrew = 0x05b4; + t.hiriqwidehebrew = 0x05b4; + t.hlinebelow = 0x1e96; + t.hmonospace = 0xff48; + t.hoarmenian = 0x0570; + t.hohipthai = 0x0e2b; + t.hohiragana = 0x307b; + t.hokatakana = 0x30db; + t.hokatakanahalfwidth = 0xff8e; + t.holam = 0x05b9; + t.holam19 = 0x05b9; + t.holam26 = 0x05b9; + t.holam32 = 0x05b9; + t.holamhebrew = 0x05b9; + t.holamnarrowhebrew = 0x05b9; + t.holamquarterhebrew = 0x05b9; + t.holamwidehebrew = 0x05b9; + t.honokhukthai = 0x0e2e; + t.hookabovecomb = 0x0309; + t.hookcmb = 0x0309; + t.hookpalatalizedbelowcmb = 0x0321; + t.hookretroflexbelowcmb = 0x0322; + t.hoonsquare = 0x3342; + t.horicoptic = 0x03e9; + t.horizontalbar = 0x2015; + t.horncmb = 0x031b; + t.hotsprings = 0x2668; + t.house = 0x2302; + t.hparen = 0x24a3; + t.hsuperior = 0x02b0; + t.hturned = 0x0265; + t.huhiragana = 0x3075; + t.huiitosquare = 0x3333; + t.hukatakana = 0x30d5; + t.hukatakanahalfwidth = 0xff8c; + t.hungarumlaut = 0x02dd; + t.hungarumlautcmb = 0x030b; + t.hv = 0x0195; + t.hyphen = 0x002d; + t.hypheninferior = 0xf6e5; + t.hyphenmonospace = 0xff0d; + t.hyphensmall = 0xfe63; + t.hyphensuperior = 0xf6e6; + t.hyphentwo = 0x2010; + t.i = 0x0069; + t.iacute = 0x00ed; + t.iacyrillic = 0x044f; + t.ibengali = 0x0987; + t.ibopomofo = 0x3127; + t.ibreve = 0x012d; + t.icaron = 0x01d0; + t.icircle = 0x24d8; + t.icircumflex = 0x00ee; + t.icyrillic = 0x0456; + t.idblgrave = 0x0209; + t.ideographearthcircle = 0x328f; + t.ideographfirecircle = 0x328b; + t.ideographicallianceparen = 0x323f; + t.ideographiccallparen = 0x323a; + t.ideographiccentrecircle = 0x32a5; + t.ideographicclose = 0x3006; + t.ideographiccomma = 0x3001; + t.ideographiccommaleft = 0xff64; + t.ideographiccongratulationparen = 0x3237; + t.ideographiccorrectcircle = 0x32a3; + t.ideographicearthparen = 0x322f; + t.ideographicenterpriseparen = 0x323d; + t.ideographicexcellentcircle = 0x329d; + t.ideographicfestivalparen = 0x3240; + t.ideographicfinancialcircle = 0x3296; + t.ideographicfinancialparen = 0x3236; + t.ideographicfireparen = 0x322b; + t.ideographichaveparen = 0x3232; + t.ideographichighcircle = 0x32a4; + t.ideographiciterationmark = 0x3005; + t.ideographiclaborcircle = 0x3298; + t.ideographiclaborparen = 0x3238; + t.ideographicleftcircle = 0x32a7; + t.ideographiclowcircle = 0x32a6; + t.ideographicmedicinecircle = 0x32a9; + t.ideographicmetalparen = 0x322e; + t.ideographicmoonparen = 0x322a; + t.ideographicnameparen = 0x3234; + t.ideographicperiod = 0x3002; + t.ideographicprintcircle = 0x329e; + t.ideographicreachparen = 0x3243; + t.ideographicrepresentparen = 0x3239; + t.ideographicresourceparen = 0x323e; + t.ideographicrightcircle = 0x32a8; + t.ideographicsecretcircle = 0x3299; + t.ideographicselfparen = 0x3242; + t.ideographicsocietyparen = 0x3233; + t.ideographicspace = 0x3000; + t.ideographicspecialparen = 0x3235; + t.ideographicstockparen = 0x3231; + t.ideographicstudyparen = 0x323b; + t.ideographicsunparen = 0x3230; + t.ideographicsuperviseparen = 0x323c; + t.ideographicwaterparen = 0x322c; + t.ideographicwoodparen = 0x322d; + t.ideographiczero = 0x3007; + t.ideographmetalcircle = 0x328e; + t.ideographmooncircle = 0x328a; + t.ideographnamecircle = 0x3294; + t.ideographsuncircle = 0x3290; + t.ideographwatercircle = 0x328c; + t.ideographwoodcircle = 0x328d; + t.ideva = 0x0907; + t.idieresis = 0x00ef; + t.idieresisacute = 0x1e2f; + t.idieresiscyrillic = 0x04e5; + t.idotbelow = 0x1ecb; + t.iebrevecyrillic = 0x04d7; + t.iecyrillic = 0x0435; + t.ieungacirclekorean = 0x3275; + t.ieungaparenkorean = 0x3215; + t.ieungcirclekorean = 0x3267; + t.ieungkorean = 0x3147; + t.ieungparenkorean = 0x3207; + t.igrave = 0x00ec; + t.igujarati = 0x0a87; + t.igurmukhi = 0x0a07; + t.ihiragana = 0x3044; + t.ihookabove = 0x1ec9; + t.iibengali = 0x0988; + t.iicyrillic = 0x0438; + t.iideva = 0x0908; + t.iigujarati = 0x0a88; + t.iigurmukhi = 0x0a08; + t.iimatragurmukhi = 0x0a40; + t.iinvertedbreve = 0x020b; + t.iishortcyrillic = 0x0439; + t.iivowelsignbengali = 0x09c0; + t.iivowelsigndeva = 0x0940; + t.iivowelsigngujarati = 0x0ac0; + t.ij = 0x0133; + t.ikatakana = 0x30a4; + t.ikatakanahalfwidth = 0xff72; + t.ikorean = 0x3163; + t.ilde = 0x02dc; + t.iluyhebrew = 0x05ac; + t.imacron = 0x012b; + t.imacroncyrillic = 0x04e3; + t.imageorapproximatelyequal = 0x2253; + t.imatragurmukhi = 0x0a3f; + t.imonospace = 0xff49; + t.increment = 0x2206; + t.infinity = 0x221e; + t.iniarmenian = 0x056b; + t.integral = 0x222b; + t.integralbottom = 0x2321; + t.integralbt = 0x2321; + t.integralex = 0xf8f5; + t.integraltop = 0x2320; + t.integraltp = 0x2320; + t.intersection = 0x2229; + t.intisquare = 0x3305; + t.invbullet = 0x25d8; + t.invcircle = 0x25d9; + t.invsmileface = 0x263b; + t.iocyrillic = 0x0451; + t.iogonek = 0x012f; + t.iota = 0x03b9; + t.iotadieresis = 0x03ca; + t.iotadieresistonos = 0x0390; + t.iotalatin = 0x0269; + t.iotatonos = 0x03af; + t.iparen = 0x24a4; + t.irigurmukhi = 0x0a72; + t.ismallhiragana = 0x3043; + t.ismallkatakana = 0x30a3; + t.ismallkatakanahalfwidth = 0xff68; + t.issharbengali = 0x09fa; + t.istroke = 0x0268; + t.isuperior = 0xf6ed; + t.iterationhiragana = 0x309d; + t.iterationkatakana = 0x30fd; + t.itilde = 0x0129; + t.itildebelow = 0x1e2d; + t.iubopomofo = 0x3129; + t.iucyrillic = 0x044e; + t.ivowelsignbengali = 0x09bf; + t.ivowelsigndeva = 0x093f; + t.ivowelsigngujarati = 0x0abf; + t.izhitsacyrillic = 0x0475; + t.izhitsadblgravecyrillic = 0x0477; + t.j = 0x006a; + t.jaarmenian = 0x0571; + t.jabengali = 0x099c; + t.jadeva = 0x091c; + t.jagujarati = 0x0a9c; + t.jagurmukhi = 0x0a1c; + t.jbopomofo = 0x3110; + t.jcaron = 0x01f0; + t.jcircle = 0x24d9; + t.jcircumflex = 0x0135; + t.jcrossedtail = 0x029d; + t.jdotlessstroke = 0x025f; + t.jecyrillic = 0x0458; + t.jeemarabic = 0x062c; + t.jeemfinalarabic = 0xfe9e; + t.jeeminitialarabic = 0xfe9f; + t.jeemmedialarabic = 0xfea0; + t.jeharabic = 0x0698; + t.jehfinalarabic = 0xfb8b; + t.jhabengali = 0x099d; + t.jhadeva = 0x091d; + t.jhagujarati = 0x0a9d; + t.jhagurmukhi = 0x0a1d; + t.jheharmenian = 0x057b; + t.jis = 0x3004; + t.jmonospace = 0xff4a; + t.jparen = 0x24a5; + t.jsuperior = 0x02b2; + t.k = 0x006b; + t.kabashkircyrillic = 0x04a1; + t.kabengali = 0x0995; + t.kacute = 0x1e31; + t.kacyrillic = 0x043a; + t.kadescendercyrillic = 0x049b; + t.kadeva = 0x0915; + t.kaf = 0x05db; + t.kafarabic = 0x0643; + t.kafdagesh = 0xfb3b; + t.kafdageshhebrew = 0xfb3b; + t.kaffinalarabic = 0xfeda; + t.kafhebrew = 0x05db; + t.kafinitialarabic = 0xfedb; + t.kafmedialarabic = 0xfedc; + t.kafrafehebrew = 0xfb4d; + t.kagujarati = 0x0a95; + t.kagurmukhi = 0x0a15; + t.kahiragana = 0x304b; + t.kahookcyrillic = 0x04c4; + t.kakatakana = 0x30ab; + t.kakatakanahalfwidth = 0xff76; + t.kappa = 0x03ba; + t.kappasymbolgreek = 0x03f0; + t.kapyeounmieumkorean = 0x3171; + t.kapyeounphieuphkorean = 0x3184; + t.kapyeounpieupkorean = 0x3178; + t.kapyeounssangpieupkorean = 0x3179; + t.karoriisquare = 0x330d; + t.kashidaautoarabic = 0x0640; + t.kashidaautonosidebearingarabic = 0x0640; + t.kasmallkatakana = 0x30f5; + t.kasquare = 0x3384; + t.kasraarabic = 0x0650; + t.kasratanarabic = 0x064d; + t.kastrokecyrillic = 0x049f; + t.katahiraprolongmarkhalfwidth = 0xff70; + t.kaverticalstrokecyrillic = 0x049d; + t.kbopomofo = 0x310e; + t.kcalsquare = 0x3389; + t.kcaron = 0x01e9; + t.kcedilla = 0x0137; + t.kcircle = 0x24da; + t.kcommaaccent = 0x0137; + t.kdotbelow = 0x1e33; + t.keharmenian = 0x0584; + t.kehiragana = 0x3051; + t.kekatakana = 0x30b1; + t.kekatakanahalfwidth = 0xff79; + t.kenarmenian = 0x056f; + t.kesmallkatakana = 0x30f6; + t.kgreenlandic = 0x0138; + t.khabengali = 0x0996; + t.khacyrillic = 0x0445; + t.khadeva = 0x0916; + t.khagujarati = 0x0a96; + t.khagurmukhi = 0x0a16; + t.khaharabic = 0x062e; + t.khahfinalarabic = 0xfea6; + t.khahinitialarabic = 0xfea7; + t.khahmedialarabic = 0xfea8; + t.kheicoptic = 0x03e7; + t.khhadeva = 0x0959; + t.khhagurmukhi = 0x0a59; + t.khieukhacirclekorean = 0x3278; + t.khieukhaparenkorean = 0x3218; + t.khieukhcirclekorean = 0x326a; + t.khieukhkorean = 0x314b; + t.khieukhparenkorean = 0x320a; + t.khokhaithai = 0x0e02; + t.khokhonthai = 0x0e05; + t.khokhuatthai = 0x0e03; + t.khokhwaithai = 0x0e04; + t.khomutthai = 0x0e5b; + t.khook = 0x0199; + t.khorakhangthai = 0x0e06; + t.khzsquare = 0x3391; + t.kihiragana = 0x304d; + t.kikatakana = 0x30ad; + t.kikatakanahalfwidth = 0xff77; + t.kiroguramusquare = 0x3315; + t.kiromeetorusquare = 0x3316; + t.kirosquare = 0x3314; + t.kiyeokacirclekorean = 0x326e; + t.kiyeokaparenkorean = 0x320e; + t.kiyeokcirclekorean = 0x3260; + t.kiyeokkorean = 0x3131; + t.kiyeokparenkorean = 0x3200; + t.kiyeoksioskorean = 0x3133; + t.kjecyrillic = 0x045c; + t.klinebelow = 0x1e35; + t.klsquare = 0x3398; + t.kmcubedsquare = 0x33a6; + t.kmonospace = 0xff4b; + t.kmsquaredsquare = 0x33a2; + t.kohiragana = 0x3053; + t.kohmsquare = 0x33c0; + t.kokaithai = 0x0e01; + t.kokatakana = 0x30b3; + t.kokatakanahalfwidth = 0xff7a; + t.kooposquare = 0x331e; + t.koppacyrillic = 0x0481; + t.koreanstandardsymbol = 0x327f; + t.koroniscmb = 0x0343; + t.kparen = 0x24a6; + t.kpasquare = 0x33aa; + t.ksicyrillic = 0x046f; + t.ktsquare = 0x33cf; + t.kturned = 0x029e; + t.kuhiragana = 0x304f; + t.kukatakana = 0x30af; + t.kukatakanahalfwidth = 0xff78; + t.kvsquare = 0x33b8; + t.kwsquare = 0x33be; + t.l = 0x006c; + t.labengali = 0x09b2; + t.lacute = 0x013a; + t.ladeva = 0x0932; + t.lagujarati = 0x0ab2; + t.lagurmukhi = 0x0a32; + t.lakkhangyaothai = 0x0e45; + t.lamaleffinalarabic = 0xfefc; + t.lamalefhamzaabovefinalarabic = 0xfef8; + t.lamalefhamzaaboveisolatedarabic = 0xfef7; + t.lamalefhamzabelowfinalarabic = 0xfefa; + t.lamalefhamzabelowisolatedarabic = 0xfef9; + t.lamalefisolatedarabic = 0xfefb; + t.lamalefmaddaabovefinalarabic = 0xfef6; + t.lamalefmaddaaboveisolatedarabic = 0xfef5; + t.lamarabic = 0x0644; + t.lambda = 0x03bb; + t.lambdastroke = 0x019b; + t.lamed = 0x05dc; + t.lameddagesh = 0xfb3c; + t.lameddageshhebrew = 0xfb3c; + t.lamedhebrew = 0x05dc; + t.lamfinalarabic = 0xfede; + t.lamhahinitialarabic = 0xfcca; + t.laminitialarabic = 0xfedf; + t.lamjeeminitialarabic = 0xfcc9; + t.lamkhahinitialarabic = 0xfccb; + t.lamlamhehisolatedarabic = 0xfdf2; + t.lammedialarabic = 0xfee0; + t.lammeemhahinitialarabic = 0xfd88; + t.lammeeminitialarabic = 0xfccc; + t.largecircle = 0x25ef; + t.lbar = 0x019a; + t.lbelt = 0x026c; + t.lbopomofo = 0x310c; + t.lcaron = 0x013e; + t.lcedilla = 0x013c; + t.lcircle = 0x24db; + t.lcircumflexbelow = 0x1e3d; + t.lcommaaccent = 0x013c; + t.ldot = 0x0140; + t.ldotaccent = 0x0140; + t.ldotbelow = 0x1e37; + t.ldotbelowmacron = 0x1e39; + t.leftangleabovecmb = 0x031a; + t.lefttackbelowcmb = 0x0318; + t.less = 0x003c; + t.lessequal = 0x2264; + t.lessequalorgreater = 0x22da; + t.lessmonospace = 0xff1c; + t.lessorequivalent = 0x2272; + t.lessorgreater = 0x2276; + t.lessoverequal = 0x2266; + t.lesssmall = 0xfe64; + t.lezh = 0x026e; + t.lfblock = 0x258c; + t.lhookretroflex = 0x026d; + t.lira = 0x20a4; + t.liwnarmenian = 0x056c; + t.lj = 0x01c9; + t.ljecyrillic = 0x0459; + t.ll = 0xf6c0; + t.lladeva = 0x0933; + t.llagujarati = 0x0ab3; + t.llinebelow = 0x1e3b; + t.llladeva = 0x0934; + t.llvocalicbengali = 0x09e1; + t.llvocalicdeva = 0x0961; + t.llvocalicvowelsignbengali = 0x09e3; + t.llvocalicvowelsigndeva = 0x0963; + t.lmiddletilde = 0x026b; + t.lmonospace = 0xff4c; + t.lmsquare = 0x33d0; + t.lochulathai = 0x0e2c; + t.logicaland = 0x2227; + t.logicalnot = 0x00ac; + t.logicalnotreversed = 0x2310; + t.logicalor = 0x2228; + t.lolingthai = 0x0e25; + t.longs = 0x017f; + t.lowlinecenterline = 0xfe4e; + t.lowlinecmb = 0x0332; + t.lowlinedashed = 0xfe4d; + t.lozenge = 0x25ca; + t.lparen = 0x24a7; + t.lslash = 0x0142; + t.lsquare = 0x2113; + t.lsuperior = 0xf6ee; + t.ltshade = 0x2591; + t.luthai = 0x0e26; + t.lvocalicbengali = 0x098c; + t.lvocalicdeva = 0x090c; + t.lvocalicvowelsignbengali = 0x09e2; + t.lvocalicvowelsigndeva = 0x0962; + t.lxsquare = 0x33d3; + t.m = 0x006d; + t.mabengali = 0x09ae; + t.macron = 0x00af; + t.macronbelowcmb = 0x0331; + t.macroncmb = 0x0304; + t.macronlowmod = 0x02cd; + t.macronmonospace = 0xffe3; + t.macute = 0x1e3f; + t.madeva = 0x092e; + t.magujarati = 0x0aae; + t.magurmukhi = 0x0a2e; + t.mahapakhhebrew = 0x05a4; + t.mahapakhlefthebrew = 0x05a4; + t.mahiragana = 0x307e; + t.maichattawalowleftthai = 0xf895; + t.maichattawalowrightthai = 0xf894; + t.maichattawathai = 0x0e4b; + t.maichattawaupperleftthai = 0xf893; + t.maieklowleftthai = 0xf88c; + t.maieklowrightthai = 0xf88b; + t.maiekthai = 0x0e48; + t.maiekupperleftthai = 0xf88a; + t.maihanakatleftthai = 0xf884; + t.maihanakatthai = 0x0e31; + t.maitaikhuleftthai = 0xf889; + t.maitaikhuthai = 0x0e47; + t.maitholowleftthai = 0xf88f; + t.maitholowrightthai = 0xf88e; + t.maithothai = 0x0e49; + t.maithoupperleftthai = 0xf88d; + t.maitrilowleftthai = 0xf892; + t.maitrilowrightthai = 0xf891; + t.maitrithai = 0x0e4a; + t.maitriupperleftthai = 0xf890; + t.maiyamokthai = 0x0e46; + t.makatakana = 0x30de; + t.makatakanahalfwidth = 0xff8f; + t.male = 0x2642; + t.mansyonsquare = 0x3347; + t.maqafhebrew = 0x05be; + t.mars = 0x2642; + t.masoracirclehebrew = 0x05af; + t.masquare = 0x3383; + t.mbopomofo = 0x3107; + t.mbsquare = 0x33d4; + t.mcircle = 0x24dc; + t.mcubedsquare = 0x33a5; + t.mdotaccent = 0x1e41; + t.mdotbelow = 0x1e43; + t.meemarabic = 0x0645; + t.meemfinalarabic = 0xfee2; + t.meeminitialarabic = 0xfee3; + t.meemmedialarabic = 0xfee4; + t.meemmeeminitialarabic = 0xfcd1; + t.meemmeemisolatedarabic = 0xfc48; + t.meetorusquare = 0x334d; + t.mehiragana = 0x3081; + t.meizierasquare = 0x337e; + t.mekatakana = 0x30e1; + t.mekatakanahalfwidth = 0xff92; + t.mem = 0x05de; + t.memdagesh = 0xfb3e; + t.memdageshhebrew = 0xfb3e; + t.memhebrew = 0x05de; + t.menarmenian = 0x0574; + t.merkhahebrew = 0x05a5; + t.merkhakefulahebrew = 0x05a6; + t.merkhakefulalefthebrew = 0x05a6; + t.merkhalefthebrew = 0x05a5; + t.mhook = 0x0271; + t.mhzsquare = 0x3392; + t.middledotkatakanahalfwidth = 0xff65; + t.middot = 0x00b7; + t.mieumacirclekorean = 0x3272; + t.mieumaparenkorean = 0x3212; + t.mieumcirclekorean = 0x3264; + t.mieumkorean = 0x3141; + t.mieumpansioskorean = 0x3170; + t.mieumparenkorean = 0x3204; + t.mieumpieupkorean = 0x316e; + t.mieumsioskorean = 0x316f; + t.mihiragana = 0x307f; + t.mikatakana = 0x30df; + t.mikatakanahalfwidth = 0xff90; + t.minus = 0x2212; + t.minusbelowcmb = 0x0320; + t.minuscircle = 0x2296; + t.minusmod = 0x02d7; + t.minusplus = 0x2213; + t.minute = 0x2032; + t.miribaarusquare = 0x334a; + t.mirisquare = 0x3349; + t.mlonglegturned = 0x0270; + t.mlsquare = 0x3396; + t.mmcubedsquare = 0x33a3; + t.mmonospace = 0xff4d; + t.mmsquaredsquare = 0x339f; + t.mohiragana = 0x3082; + t.mohmsquare = 0x33c1; + t.mokatakana = 0x30e2; + t.mokatakanahalfwidth = 0xff93; + t.molsquare = 0x33d6; + t.momathai = 0x0e21; + t.moverssquare = 0x33a7; + t.moverssquaredsquare = 0x33a8; + t.mparen = 0x24a8; + t.mpasquare = 0x33ab; + t.mssquare = 0x33b3; + t.msuperior = 0xf6ef; + t.mturned = 0x026f; + t.mu = 0x00b5; + t.mu1 = 0x00b5; + t.muasquare = 0x3382; + t.muchgreater = 0x226b; + t.muchless = 0x226a; + t.mufsquare = 0x338c; + t.mugreek = 0x03bc; + t.mugsquare = 0x338d; + t.muhiragana = 0x3080; + t.mukatakana = 0x30e0; + t.mukatakanahalfwidth = 0xff91; + t.mulsquare = 0x3395; + t.multiply = 0x00d7; + t.mumsquare = 0x339b; + t.munahhebrew = 0x05a3; + t.munahlefthebrew = 0x05a3; + t.musicalnote = 0x266a; + t.musicalnotedbl = 0x266b; + t.musicflatsign = 0x266d; + t.musicsharpsign = 0x266f; + t.mussquare = 0x33b2; + t.muvsquare = 0x33b6; + t.muwsquare = 0x33bc; + t.mvmegasquare = 0x33b9; + t.mvsquare = 0x33b7; + t.mwmegasquare = 0x33bf; + t.mwsquare = 0x33bd; + t.n = 0x006e; + t.nabengali = 0x09a8; + t.nabla = 0x2207; + t.nacute = 0x0144; + t.nadeva = 0x0928; + t.nagujarati = 0x0aa8; + t.nagurmukhi = 0x0a28; + t.nahiragana = 0x306a; + t.nakatakana = 0x30ca; + t.nakatakanahalfwidth = 0xff85; + t.napostrophe = 0x0149; + t.nasquare = 0x3381; + t.nbopomofo = 0x310b; + t.nbspace = 0x00a0; + t.ncaron = 0x0148; + t.ncedilla = 0x0146; + t.ncircle = 0x24dd; + t.ncircumflexbelow = 0x1e4b; + t.ncommaaccent = 0x0146; + t.ndotaccent = 0x1e45; + t.ndotbelow = 0x1e47; + t.nehiragana = 0x306d; + t.nekatakana = 0x30cd; + t.nekatakanahalfwidth = 0xff88; + t.newsheqelsign = 0x20aa; + t.nfsquare = 0x338b; + t.ngabengali = 0x0999; + t.ngadeva = 0x0919; + t.ngagujarati = 0x0a99; + t.ngagurmukhi = 0x0a19; + t.ngonguthai = 0x0e07; + t.nhiragana = 0x3093; + t.nhookleft = 0x0272; + t.nhookretroflex = 0x0273; + t.nieunacirclekorean = 0x326f; + t.nieunaparenkorean = 0x320f; + t.nieuncieuckorean = 0x3135; + t.nieuncirclekorean = 0x3261; + t.nieunhieuhkorean = 0x3136; + t.nieunkorean = 0x3134; + t.nieunpansioskorean = 0x3168; + t.nieunparenkorean = 0x3201; + t.nieunsioskorean = 0x3167; + t.nieuntikeutkorean = 0x3166; + t.nihiragana = 0x306b; + t.nikatakana = 0x30cb; + t.nikatakanahalfwidth = 0xff86; + t.nikhahitleftthai = 0xf899; + t.nikhahitthai = 0x0e4d; + t.nine = 0x0039; + t.ninearabic = 0x0669; + t.ninebengali = 0x09ef; + t.ninecircle = 0x2468; + t.ninecircleinversesansserif = 0x2792; + t.ninedeva = 0x096f; + t.ninegujarati = 0x0aef; + t.ninegurmukhi = 0x0a6f; + t.ninehackarabic = 0x0669; + t.ninehangzhou = 0x3029; + t.nineideographicparen = 0x3228; + t.nineinferior = 0x2089; + t.ninemonospace = 0xff19; + t.nineoldstyle = 0xf739; + t.nineparen = 0x247c; + t.nineperiod = 0x2490; + t.ninepersian = 0x06f9; + t.nineroman = 0x2178; + t.ninesuperior = 0x2079; + t.nineteencircle = 0x2472; + t.nineteenparen = 0x2486; + t.nineteenperiod = 0x249a; + t.ninethai = 0x0e59; + t.nj = 0x01cc; + t.njecyrillic = 0x045a; + t.nkatakana = 0x30f3; + t.nkatakanahalfwidth = 0xff9d; + t.nlegrightlong = 0x019e; + t.nlinebelow = 0x1e49; + t.nmonospace = 0xff4e; + t.nmsquare = 0x339a; + t.nnabengali = 0x09a3; + t.nnadeva = 0x0923; + t.nnagujarati = 0x0aa3; + t.nnagurmukhi = 0x0a23; + t.nnnadeva = 0x0929; + t.nohiragana = 0x306e; + t.nokatakana = 0x30ce; + t.nokatakanahalfwidth = 0xff89; + t.nonbreakingspace = 0x00a0; + t.nonenthai = 0x0e13; + t.nonuthai = 0x0e19; + t.noonarabic = 0x0646; + t.noonfinalarabic = 0xfee6; + t.noonghunnaarabic = 0x06ba; + t.noonghunnafinalarabic = 0xfb9f; + t.nooninitialarabic = 0xfee7; + t.noonjeeminitialarabic = 0xfcd2; + t.noonjeemisolatedarabic = 0xfc4b; + t.noonmedialarabic = 0xfee8; + t.noonmeeminitialarabic = 0xfcd5; + t.noonmeemisolatedarabic = 0xfc4e; + t.noonnoonfinalarabic = 0xfc8d; + t.notcontains = 0x220c; + t.notelement = 0x2209; + t.notelementof = 0x2209; + t.notequal = 0x2260; + t.notgreater = 0x226f; + t.notgreaternorequal = 0x2271; + t.notgreaternorless = 0x2279; + t.notidentical = 0x2262; + t.notless = 0x226e; + t.notlessnorequal = 0x2270; + t.notparallel = 0x2226; + t.notprecedes = 0x2280; + t.notsubset = 0x2284; + t.notsucceeds = 0x2281; + t.notsuperset = 0x2285; + t.nowarmenian = 0x0576; + t.nparen = 0x24a9; + t.nssquare = 0x33b1; + t.nsuperior = 0x207f; + t.ntilde = 0x00f1; + t.nu = 0x03bd; + t.nuhiragana = 0x306c; + t.nukatakana = 0x30cc; + t.nukatakanahalfwidth = 0xff87; + t.nuktabengali = 0x09bc; + t.nuktadeva = 0x093c; + t.nuktagujarati = 0x0abc; + t.nuktagurmukhi = 0x0a3c; + t.numbersign = 0x0023; + t.numbersignmonospace = 0xff03; + t.numbersignsmall = 0xfe5f; + t.numeralsigngreek = 0x0374; + t.numeralsignlowergreek = 0x0375; + t.numero = 0x2116; + t.nun = 0x05e0; + t.nundagesh = 0xfb40; + t.nundageshhebrew = 0xfb40; + t.nunhebrew = 0x05e0; + t.nvsquare = 0x33b5; + t.nwsquare = 0x33bb; + t.nyabengali = 0x099e; + t.nyadeva = 0x091e; + t.nyagujarati = 0x0a9e; + t.nyagurmukhi = 0x0a1e; + t.o = 0x006f; + t.oacute = 0x00f3; + t.oangthai = 0x0e2d; + t.obarred = 0x0275; + t.obarredcyrillic = 0x04e9; + t.obarreddieresiscyrillic = 0x04eb; + t.obengali = 0x0993; + t.obopomofo = 0x311b; + t.obreve = 0x014f; + t.ocandradeva = 0x0911; + t.ocandragujarati = 0x0a91; + t.ocandravowelsigndeva = 0x0949; + t.ocandravowelsigngujarati = 0x0ac9; + t.ocaron = 0x01d2; + t.ocircle = 0x24de; + t.ocircumflex = 0x00f4; + t.ocircumflexacute = 0x1ed1; + t.ocircumflexdotbelow = 0x1ed9; + t.ocircumflexgrave = 0x1ed3; + t.ocircumflexhookabove = 0x1ed5; + t.ocircumflextilde = 0x1ed7; + t.ocyrillic = 0x043e; + t.odblacute = 0x0151; + t.odblgrave = 0x020d; + t.odeva = 0x0913; + t.odieresis = 0x00f6; + t.odieresiscyrillic = 0x04e7; + t.odotbelow = 0x1ecd; + t.oe = 0x0153; + t.oekorean = 0x315a; + t.ogonek = 0x02db; + t.ogonekcmb = 0x0328; + t.ograve = 0x00f2; + t.ogujarati = 0x0a93; + t.oharmenian = 0x0585; + t.ohiragana = 0x304a; + t.ohookabove = 0x1ecf; + t.ohorn = 0x01a1; + t.ohornacute = 0x1edb; + t.ohorndotbelow = 0x1ee3; + t.ohorngrave = 0x1edd; + t.ohornhookabove = 0x1edf; + t.ohorntilde = 0x1ee1; + t.ohungarumlaut = 0x0151; + t.oi = 0x01a3; + t.oinvertedbreve = 0x020f; + t.okatakana = 0x30aa; + t.okatakanahalfwidth = 0xff75; + t.okorean = 0x3157; + t.olehebrew = 0x05ab; + t.omacron = 0x014d; + t.omacronacute = 0x1e53; + t.omacrongrave = 0x1e51; + t.omdeva = 0x0950; + t.omega = 0x03c9; + t.omega1 = 0x03d6; + t.omegacyrillic = 0x0461; + t.omegalatinclosed = 0x0277; + t.omegaroundcyrillic = 0x047b; + t.omegatitlocyrillic = 0x047d; + t.omegatonos = 0x03ce; + t.omgujarati = 0x0ad0; + t.omicron = 0x03bf; + t.omicrontonos = 0x03cc; + t.omonospace = 0xff4f; + t.one = 0x0031; + t.onearabic = 0x0661; + t.onebengali = 0x09e7; + t.onecircle = 0x2460; + t.onecircleinversesansserif = 0x278a; + t.onedeva = 0x0967; + t.onedotenleader = 0x2024; + t.oneeighth = 0x215b; + t.onefitted = 0xf6dc; + t.onegujarati = 0x0ae7; + t.onegurmukhi = 0x0a67; + t.onehackarabic = 0x0661; + t.onehalf = 0x00bd; + t.onehangzhou = 0x3021; + t.oneideographicparen = 0x3220; + t.oneinferior = 0x2081; + t.onemonospace = 0xff11; + t.onenumeratorbengali = 0x09f4; + t.oneoldstyle = 0xf731; + t.oneparen = 0x2474; + t.oneperiod = 0x2488; + t.onepersian = 0x06f1; + t.onequarter = 0x00bc; + t.oneroman = 0x2170; + t.onesuperior = 0x00b9; + t.onethai = 0x0e51; + t.onethird = 0x2153; + t.oogonek = 0x01eb; + t.oogonekmacron = 0x01ed; + t.oogurmukhi = 0x0a13; + t.oomatragurmukhi = 0x0a4b; + t.oopen = 0x0254; + t.oparen = 0x24aa; + t.openbullet = 0x25e6; + t.option = 0x2325; + t.ordfeminine = 0x00aa; + t.ordmasculine = 0x00ba; + t.orthogonal = 0x221f; + t.oshortdeva = 0x0912; + t.oshortvowelsigndeva = 0x094a; + t.oslash = 0x00f8; + t.oslashacute = 0x01ff; + t.osmallhiragana = 0x3049; + t.osmallkatakana = 0x30a9; + t.osmallkatakanahalfwidth = 0xff6b; + t.ostrokeacute = 0x01ff; + t.osuperior = 0xf6f0; + t.otcyrillic = 0x047f; + t.otilde = 0x00f5; + t.otildeacute = 0x1e4d; + t.otildedieresis = 0x1e4f; + t.oubopomofo = 0x3121; + t.overline = 0x203e; + t.overlinecenterline = 0xfe4a; + t.overlinecmb = 0x0305; + t.overlinedashed = 0xfe49; + t.overlinedblwavy = 0xfe4c; + t.overlinewavy = 0xfe4b; + t.overscore = 0x00af; + t.ovowelsignbengali = 0x09cb; + t.ovowelsigndeva = 0x094b; + t.ovowelsigngujarati = 0x0acb; + t.p = 0x0070; + t.paampssquare = 0x3380; + t.paasentosquare = 0x332b; + t.pabengali = 0x09aa; + t.pacute = 0x1e55; + t.padeva = 0x092a; + t.pagedown = 0x21df; + t.pageup = 0x21de; + t.pagujarati = 0x0aaa; + t.pagurmukhi = 0x0a2a; + t.pahiragana = 0x3071; + t.paiyannoithai = 0x0e2f; + t.pakatakana = 0x30d1; + t.palatalizationcyrilliccmb = 0x0484; + t.palochkacyrillic = 0x04c0; + t.pansioskorean = 0x317f; + t.paragraph = 0x00b6; + t.parallel = 0x2225; + t.parenleft = 0x0028; + t.parenleftaltonearabic = 0xfd3e; + t.parenleftbt = 0xf8ed; + t.parenleftex = 0xf8ec; + t.parenleftinferior = 0x208d; + t.parenleftmonospace = 0xff08; + t.parenleftsmall = 0xfe59; + t.parenleftsuperior = 0x207d; + t.parenlefttp = 0xf8eb; + t.parenleftvertical = 0xfe35; + t.parenright = 0x0029; + t.parenrightaltonearabic = 0xfd3f; + t.parenrightbt = 0xf8f8; + t.parenrightex = 0xf8f7; + t.parenrightinferior = 0x208e; + t.parenrightmonospace = 0xff09; + t.parenrightsmall = 0xfe5a; + t.parenrightsuperior = 0x207e; + t.parenrighttp = 0xf8f6; + t.parenrightvertical = 0xfe36; + t.partialdiff = 0x2202; + t.paseqhebrew = 0x05c0; + t.pashtahebrew = 0x0599; + t.pasquare = 0x33a9; + t.patah = 0x05b7; + t.patah11 = 0x05b7; + t.patah1d = 0x05b7; + t.patah2a = 0x05b7; + t.patahhebrew = 0x05b7; + t.patahnarrowhebrew = 0x05b7; + t.patahquarterhebrew = 0x05b7; + t.patahwidehebrew = 0x05b7; + t.pazerhebrew = 0x05a1; + t.pbopomofo = 0x3106; + t.pcircle = 0x24df; + t.pdotaccent = 0x1e57; + t.pe = 0x05e4; + t.pecyrillic = 0x043f; + t.pedagesh = 0xfb44; + t.pedageshhebrew = 0xfb44; + t.peezisquare = 0x333b; + t.pefinaldageshhebrew = 0xfb43; + t.peharabic = 0x067e; + t.peharmenian = 0x057a; + t.pehebrew = 0x05e4; + t.pehfinalarabic = 0xfb57; + t.pehinitialarabic = 0xfb58; + t.pehiragana = 0x307a; + t.pehmedialarabic = 0xfb59; + t.pekatakana = 0x30da; + t.pemiddlehookcyrillic = 0x04a7; + t.perafehebrew = 0xfb4e; + t.percent = 0x0025; + t.percentarabic = 0x066a; + t.percentmonospace = 0xff05; + t.percentsmall = 0xfe6a; + t.period = 0x002e; + t.periodarmenian = 0x0589; + t.periodcentered = 0x00b7; + t.periodhalfwidth = 0xff61; + t.periodinferior = 0xf6e7; + t.periodmonospace = 0xff0e; + t.periodsmall = 0xfe52; + t.periodsuperior = 0xf6e8; + t.perispomenigreekcmb = 0x0342; + t.perpendicular = 0x22a5; + t.perthousand = 0x2030; + t.peseta = 0x20a7; + t.pfsquare = 0x338a; + t.phabengali = 0x09ab; + t.phadeva = 0x092b; + t.phagujarati = 0x0aab; + t.phagurmukhi = 0x0a2b; + t.phi = 0x03c6; + t.phi1 = 0x03d5; + t.phieuphacirclekorean = 0x327a; + t.phieuphaparenkorean = 0x321a; + t.phieuphcirclekorean = 0x326c; + t.phieuphkorean = 0x314d; + t.phieuphparenkorean = 0x320c; + t.philatin = 0x0278; + t.phinthuthai = 0x0e3a; + t.phisymbolgreek = 0x03d5; + t.phook = 0x01a5; + t.phophanthai = 0x0e1e; + t.phophungthai = 0x0e1c; + t.phosamphaothai = 0x0e20; + t.pi = 0x03c0; + t.pieupacirclekorean = 0x3273; + t.pieupaparenkorean = 0x3213; + t.pieupcieuckorean = 0x3176; + t.pieupcirclekorean = 0x3265; + t.pieupkiyeokkorean = 0x3172; + t.pieupkorean = 0x3142; + t.pieupparenkorean = 0x3205; + t.pieupsioskiyeokkorean = 0x3174; + t.pieupsioskorean = 0x3144; + t.pieupsiostikeutkorean = 0x3175; + t.pieupthieuthkorean = 0x3177; + t.pieuptikeutkorean = 0x3173; + t.pihiragana = 0x3074; + t.pikatakana = 0x30d4; + t.pisymbolgreek = 0x03d6; + t.piwrarmenian = 0x0583; + t.plus = 0x002b; + t.plusbelowcmb = 0x031f; + t.pluscircle = 0x2295; + t.plusminus = 0x00b1; + t.plusmod = 0x02d6; + t.plusmonospace = 0xff0b; + t.plussmall = 0xfe62; + t.plussuperior = 0x207a; + t.pmonospace = 0xff50; + t.pmsquare = 0x33d8; + t.pohiragana = 0x307d; + t.pointingindexdownwhite = 0x261f; + t.pointingindexleftwhite = 0x261c; + t.pointingindexrightwhite = 0x261e; + t.pointingindexupwhite = 0x261d; + t.pokatakana = 0x30dd; + t.poplathai = 0x0e1b; + t.postalmark = 0x3012; + t.postalmarkface = 0x3020; + t.pparen = 0x24ab; + t.precedes = 0x227a; + t.prescription = 0x211e; + t.primemod = 0x02b9; + t.primereversed = 0x2035; + t.product = 0x220f; + t.projective = 0x2305; + t.prolongedkana = 0x30fc; + t.propellor = 0x2318; + t.propersubset = 0x2282; + t.propersuperset = 0x2283; + t.proportion = 0x2237; + t.proportional = 0x221d; + t.psi = 0x03c8; + t.psicyrillic = 0x0471; + t.psilipneumatacyrilliccmb = 0x0486; + t.pssquare = 0x33b0; + t.puhiragana = 0x3077; + t.pukatakana = 0x30d7; + t.pvsquare = 0x33b4; + t.pwsquare = 0x33ba; + t.q = 0x0071; + t.qadeva = 0x0958; + t.qadmahebrew = 0x05a8; + t.qafarabic = 0x0642; + t.qaffinalarabic = 0xfed6; + t.qafinitialarabic = 0xfed7; + t.qafmedialarabic = 0xfed8; + t.qamats = 0x05b8; + t.qamats10 = 0x05b8; + t.qamats1a = 0x05b8; + t.qamats1c = 0x05b8; + t.qamats27 = 0x05b8; + t.qamats29 = 0x05b8; + t.qamats33 = 0x05b8; + t.qamatsde = 0x05b8; + t.qamatshebrew = 0x05b8; + t.qamatsnarrowhebrew = 0x05b8; + t.qamatsqatanhebrew = 0x05b8; + t.qamatsqatannarrowhebrew = 0x05b8; + t.qamatsqatanquarterhebrew = 0x05b8; + t.qamatsqatanwidehebrew = 0x05b8; + t.qamatsquarterhebrew = 0x05b8; + t.qamatswidehebrew = 0x05b8; + t.qarneyparahebrew = 0x059f; + t.qbopomofo = 0x3111; + t.qcircle = 0x24e0; + t.qhook = 0x02a0; + t.qmonospace = 0xff51; + t.qof = 0x05e7; + t.qofdagesh = 0xfb47; + t.qofdageshhebrew = 0xfb47; + t.qofhebrew = 0x05e7; + t.qparen = 0x24ac; + t.quarternote = 0x2669; + t.qubuts = 0x05bb; + t.qubuts18 = 0x05bb; + t.qubuts25 = 0x05bb; + t.qubuts31 = 0x05bb; + t.qubutshebrew = 0x05bb; + t.qubutsnarrowhebrew = 0x05bb; + t.qubutsquarterhebrew = 0x05bb; + t.qubutswidehebrew = 0x05bb; + t.question = 0x003f; + t.questionarabic = 0x061f; + t.questionarmenian = 0x055e; + t.questiondown = 0x00bf; + t.questiondownsmall = 0xf7bf; + t.questiongreek = 0x037e; + t.questionmonospace = 0xff1f; + t.questionsmall = 0xf73f; + t.quotedbl = 0x0022; + t.quotedblbase = 0x201e; + t.quotedblleft = 0x201c; + t.quotedblmonospace = 0xff02; + t.quotedblprime = 0x301e; + t.quotedblprimereversed = 0x301d; + t.quotedblright = 0x201d; + t.quoteleft = 0x2018; + t.quoteleftreversed = 0x201b; + t.quotereversed = 0x201b; + t.quoteright = 0x2019; + t.quoterightn = 0x0149; + t.quotesinglbase = 0x201a; + t.quotesingle = 0x0027; + t.quotesinglemonospace = 0xff07; + t.r = 0x0072; + t.raarmenian = 0x057c; + t.rabengali = 0x09b0; + t.racute = 0x0155; + t.radeva = 0x0930; + t.radical = 0x221a; + t.radicalex = 0xf8e5; + t.radoverssquare = 0x33ae; + t.radoverssquaredsquare = 0x33af; + t.radsquare = 0x33ad; + t.rafe = 0x05bf; + t.rafehebrew = 0x05bf; + t.ragujarati = 0x0ab0; + t.ragurmukhi = 0x0a30; + t.rahiragana = 0x3089; + t.rakatakana = 0x30e9; + t.rakatakanahalfwidth = 0xff97; + t.ralowerdiagonalbengali = 0x09f1; + t.ramiddlediagonalbengali = 0x09f0; + t.ramshorn = 0x0264; + t.ratio = 0x2236; + t.rbopomofo = 0x3116; + t.rcaron = 0x0159; + t.rcedilla = 0x0157; + t.rcircle = 0x24e1; + t.rcommaaccent = 0x0157; + t.rdblgrave = 0x0211; + t.rdotaccent = 0x1e59; + t.rdotbelow = 0x1e5b; + t.rdotbelowmacron = 0x1e5d; + t.referencemark = 0x203b; + t.reflexsubset = 0x2286; + t.reflexsuperset = 0x2287; + t.registered = 0x00ae; + t.registersans = 0xf8e8; + t.registerserif = 0xf6da; + t.reharabic = 0x0631; + t.reharmenian = 0x0580; + t.rehfinalarabic = 0xfeae; + t.rehiragana = 0x308c; + t.rekatakana = 0x30ec; + t.rekatakanahalfwidth = 0xff9a; + t.resh = 0x05e8; + t.reshdageshhebrew = 0xfb48; + t.reshhebrew = 0x05e8; + t.reversedtilde = 0x223d; + t.reviahebrew = 0x0597; + t.reviamugrashhebrew = 0x0597; + t.revlogicalnot = 0x2310; + t.rfishhook = 0x027e; + t.rfishhookreversed = 0x027f; + t.rhabengali = 0x09dd; + t.rhadeva = 0x095d; + t.rho = 0x03c1; + t.rhook = 0x027d; + t.rhookturned = 0x027b; + t.rhookturnedsuperior = 0x02b5; + t.rhosymbolgreek = 0x03f1; + t.rhotichookmod = 0x02de; + t.rieulacirclekorean = 0x3271; + t.rieulaparenkorean = 0x3211; + t.rieulcirclekorean = 0x3263; + t.rieulhieuhkorean = 0x3140; + t.rieulkiyeokkorean = 0x313a; + t.rieulkiyeoksioskorean = 0x3169; + t.rieulkorean = 0x3139; + t.rieulmieumkorean = 0x313b; + t.rieulpansioskorean = 0x316c; + t.rieulparenkorean = 0x3203; + t.rieulphieuphkorean = 0x313f; + t.rieulpieupkorean = 0x313c; + t.rieulpieupsioskorean = 0x316b; + t.rieulsioskorean = 0x313d; + t.rieulthieuthkorean = 0x313e; + t.rieultikeutkorean = 0x316a; + t.rieulyeorinhieuhkorean = 0x316d; + t.rightangle = 0x221f; + t.righttackbelowcmb = 0x0319; + t.righttriangle = 0x22bf; + t.rihiragana = 0x308a; + t.rikatakana = 0x30ea; + t.rikatakanahalfwidth = 0xff98; + t.ring = 0x02da; + t.ringbelowcmb = 0x0325; + t.ringcmb = 0x030a; + t.ringhalfleft = 0x02bf; + t.ringhalfleftarmenian = 0x0559; + t.ringhalfleftbelowcmb = 0x031c; + t.ringhalfleftcentered = 0x02d3; + t.ringhalfright = 0x02be; + t.ringhalfrightbelowcmb = 0x0339; + t.ringhalfrightcentered = 0x02d2; + t.rinvertedbreve = 0x0213; + t.rittorusquare = 0x3351; + t.rlinebelow = 0x1e5f; + t.rlongleg = 0x027c; + t.rlonglegturned = 0x027a; + t.rmonospace = 0xff52; + t.rohiragana = 0x308d; + t.rokatakana = 0x30ed; + t.rokatakanahalfwidth = 0xff9b; + t.roruathai = 0x0e23; + t.rparen = 0x24ad; + t.rrabengali = 0x09dc; + t.rradeva = 0x0931; + t.rragurmukhi = 0x0a5c; + t.rreharabic = 0x0691; + t.rrehfinalarabic = 0xfb8d; + t.rrvocalicbengali = 0x09e0; + t.rrvocalicdeva = 0x0960; + t.rrvocalicgujarati = 0x0ae0; + t.rrvocalicvowelsignbengali = 0x09c4; + t.rrvocalicvowelsigndeva = 0x0944; + t.rrvocalicvowelsigngujarati = 0x0ac4; + t.rsuperior = 0xf6f1; + t.rtblock = 0x2590; + t.rturned = 0x0279; + t.rturnedsuperior = 0x02b4; + t.ruhiragana = 0x308b; + t.rukatakana = 0x30eb; + t.rukatakanahalfwidth = 0xff99; + t.rupeemarkbengali = 0x09f2; + t.rupeesignbengali = 0x09f3; + t.rupiah = 0xf6dd; + t.ruthai = 0x0e24; + t.rvocalicbengali = 0x098b; + t.rvocalicdeva = 0x090b; + t.rvocalicgujarati = 0x0a8b; + t.rvocalicvowelsignbengali = 0x09c3; + t.rvocalicvowelsigndeva = 0x0943; + t.rvocalicvowelsigngujarati = 0x0ac3; + t.s = 0x0073; + t.sabengali = 0x09b8; + t.sacute = 0x015b; + t.sacutedotaccent = 0x1e65; + t.sadarabic = 0x0635; + t.sadeva = 0x0938; + t.sadfinalarabic = 0xfeba; + t.sadinitialarabic = 0xfebb; + t.sadmedialarabic = 0xfebc; + t.sagujarati = 0x0ab8; + t.sagurmukhi = 0x0a38; + t.sahiragana = 0x3055; + t.sakatakana = 0x30b5; + t.sakatakanahalfwidth = 0xff7b; + t.sallallahoualayhewasallamarabic = 0xfdfa; + t.samekh = 0x05e1; + t.samekhdagesh = 0xfb41; + t.samekhdageshhebrew = 0xfb41; + t.samekhhebrew = 0x05e1; + t.saraaathai = 0x0e32; + t.saraaethai = 0x0e41; + t.saraaimaimalaithai = 0x0e44; + t.saraaimaimuanthai = 0x0e43; + t.saraamthai = 0x0e33; + t.saraathai = 0x0e30; + t.saraethai = 0x0e40; + t.saraiileftthai = 0xf886; + t.saraiithai = 0x0e35; + t.saraileftthai = 0xf885; + t.saraithai = 0x0e34; + t.saraothai = 0x0e42; + t.saraueeleftthai = 0xf888; + t.saraueethai = 0x0e37; + t.saraueleftthai = 0xf887; + t.sarauethai = 0x0e36; + t.sarauthai = 0x0e38; + t.sarauuthai = 0x0e39; + t.sbopomofo = 0x3119; + t.scaron = 0x0161; + t.scarondotaccent = 0x1e67; + t.scedilla = 0x015f; + t.schwa = 0x0259; + t.schwacyrillic = 0x04d9; + t.schwadieresiscyrillic = 0x04db; + t.schwahook = 0x025a; + t.scircle = 0x24e2; + t.scircumflex = 0x015d; + t.scommaaccent = 0x0219; + t.sdotaccent = 0x1e61; + t.sdotbelow = 0x1e63; + t.sdotbelowdotaccent = 0x1e69; + t.seagullbelowcmb = 0x033c; + t.second = 0x2033; + t.secondtonechinese = 0x02ca; + t.section = 0x00a7; + t.seenarabic = 0x0633; + t.seenfinalarabic = 0xfeb2; + t.seeninitialarabic = 0xfeb3; + t.seenmedialarabic = 0xfeb4; + t.segol = 0x05b6; + t.segol13 = 0x05b6; + t.segol1f = 0x05b6; + t.segol2c = 0x05b6; + t.segolhebrew = 0x05b6; + t.segolnarrowhebrew = 0x05b6; + t.segolquarterhebrew = 0x05b6; + t.segoltahebrew = 0x0592; + t.segolwidehebrew = 0x05b6; + t.seharmenian = 0x057d; + t.sehiragana = 0x305b; + t.sekatakana = 0x30bb; + t.sekatakanahalfwidth = 0xff7e; + t.semicolon = 0x003b; + t.semicolonarabic = 0x061b; + t.semicolonmonospace = 0xff1b; + t.semicolonsmall = 0xfe54; + t.semivoicedmarkkana = 0x309c; + t.semivoicedmarkkanahalfwidth = 0xff9f; + t.sentisquare = 0x3322; + t.sentosquare = 0x3323; + t.seven = 0x0037; + t.sevenarabic = 0x0667; + t.sevenbengali = 0x09ed; + t.sevencircle = 0x2466; + t.sevencircleinversesansserif = 0x2790; + t.sevendeva = 0x096d; + t.seveneighths = 0x215e; + t.sevengujarati = 0x0aed; + t.sevengurmukhi = 0x0a6d; + t.sevenhackarabic = 0x0667; + t.sevenhangzhou = 0x3027; + t.sevenideographicparen = 0x3226; + t.seveninferior = 0x2087; + t.sevenmonospace = 0xff17; + t.sevenoldstyle = 0xf737; + t.sevenparen = 0x247a; + t.sevenperiod = 0x248e; + t.sevenpersian = 0x06f7; + t.sevenroman = 0x2176; + t.sevensuperior = 0x2077; + t.seventeencircle = 0x2470; + t.seventeenparen = 0x2484; + t.seventeenperiod = 0x2498; + t.seventhai = 0x0e57; + t.sfthyphen = 0x00ad; + t.shaarmenian = 0x0577; + t.shabengali = 0x09b6; + t.shacyrillic = 0x0448; + t.shaddaarabic = 0x0651; + t.shaddadammaarabic = 0xfc61; + t.shaddadammatanarabic = 0xfc5e; + t.shaddafathaarabic = 0xfc60; + t.shaddakasraarabic = 0xfc62; + t.shaddakasratanarabic = 0xfc5f; + t.shade = 0x2592; + t.shadedark = 0x2593; + t.shadelight = 0x2591; + t.shademedium = 0x2592; + t.shadeva = 0x0936; + t.shagujarati = 0x0ab6; + t.shagurmukhi = 0x0a36; + t.shalshelethebrew = 0x0593; + t.shbopomofo = 0x3115; + t.shchacyrillic = 0x0449; + t.sheenarabic = 0x0634; + t.sheenfinalarabic = 0xfeb6; + t.sheeninitialarabic = 0xfeb7; + t.sheenmedialarabic = 0xfeb8; + t.sheicoptic = 0x03e3; + t.sheqel = 0x20aa; + t.sheqelhebrew = 0x20aa; + t.sheva = 0x05b0; + t.sheva115 = 0x05b0; + t.sheva15 = 0x05b0; + t.sheva22 = 0x05b0; + t.sheva2e = 0x05b0; + t.shevahebrew = 0x05b0; + t.shevanarrowhebrew = 0x05b0; + t.shevaquarterhebrew = 0x05b0; + t.shevawidehebrew = 0x05b0; + t.shhacyrillic = 0x04bb; + t.shimacoptic = 0x03ed; + t.shin = 0x05e9; + t.shindagesh = 0xfb49; + t.shindageshhebrew = 0xfb49; + t.shindageshshindot = 0xfb2c; + t.shindageshshindothebrew = 0xfb2c; + t.shindageshsindot = 0xfb2d; + t.shindageshsindothebrew = 0xfb2d; + t.shindothebrew = 0x05c1; + t.shinhebrew = 0x05e9; + t.shinshindot = 0xfb2a; + t.shinshindothebrew = 0xfb2a; + t.shinsindot = 0xfb2b; + t.shinsindothebrew = 0xfb2b; + t.shook = 0x0282; + t.sigma = 0x03c3; + t.sigma1 = 0x03c2; + t.sigmafinal = 0x03c2; + t.sigmalunatesymbolgreek = 0x03f2; + t.sihiragana = 0x3057; + t.sikatakana = 0x30b7; + t.sikatakanahalfwidth = 0xff7c; + t.siluqhebrew = 0x05bd; + t.siluqlefthebrew = 0x05bd; + t.similar = 0x223c; + t.sindothebrew = 0x05c2; + t.siosacirclekorean = 0x3274; + t.siosaparenkorean = 0x3214; + t.sioscieuckorean = 0x317e; + t.sioscirclekorean = 0x3266; + t.sioskiyeokkorean = 0x317a; + t.sioskorean = 0x3145; + t.siosnieunkorean = 0x317b; + t.siosparenkorean = 0x3206; + t.siospieupkorean = 0x317d; + t.siostikeutkorean = 0x317c; + t.six = 0x0036; + t.sixarabic = 0x0666; + t.sixbengali = 0x09ec; + t.sixcircle = 0x2465; + t.sixcircleinversesansserif = 0x278f; + t.sixdeva = 0x096c; + t.sixgujarati = 0x0aec; + t.sixgurmukhi = 0x0a6c; + t.sixhackarabic = 0x0666; + t.sixhangzhou = 0x3026; + t.sixideographicparen = 0x3225; + t.sixinferior = 0x2086; + t.sixmonospace = 0xff16; + t.sixoldstyle = 0xf736; + t.sixparen = 0x2479; + t.sixperiod = 0x248d; + t.sixpersian = 0x06f6; + t.sixroman = 0x2175; + t.sixsuperior = 0x2076; + t.sixteencircle = 0x246f; + t.sixteencurrencydenominatorbengali = 0x09f9; + t.sixteenparen = 0x2483; + t.sixteenperiod = 0x2497; + t.sixthai = 0x0e56; + t.slash = 0x002f; + t.slashmonospace = 0xff0f; + t.slong = 0x017f; + t.slongdotaccent = 0x1e9b; + t.smileface = 0x263a; + t.smonospace = 0xff53; + t.sofpasuqhebrew = 0x05c3; + t.softhyphen = 0x00ad; + t.softsigncyrillic = 0x044c; + t.sohiragana = 0x305d; + t.sokatakana = 0x30bd; + t.sokatakanahalfwidth = 0xff7f; + t.soliduslongoverlaycmb = 0x0338; + t.solidusshortoverlaycmb = 0x0337; + t.sorusithai = 0x0e29; + t.sosalathai = 0x0e28; + t.sosothai = 0x0e0b; + t.sosuathai = 0x0e2a; + t.space = 0x0020; + t.spacehackarabic = 0x0020; + t.spade = 0x2660; + t.spadesuitblack = 0x2660; + t.spadesuitwhite = 0x2664; + t.sparen = 0x24ae; + t.squarebelowcmb = 0x033b; + t.squarecc = 0x33c4; + t.squarecm = 0x339d; + t.squarediagonalcrosshatchfill = 0x25a9; + t.squarehorizontalfill = 0x25a4; + t.squarekg = 0x338f; + t.squarekm = 0x339e; + t.squarekmcapital = 0x33ce; + t.squareln = 0x33d1; + t.squarelog = 0x33d2; + t.squaremg = 0x338e; + t.squaremil = 0x33d5; + t.squaremm = 0x339c; + t.squaremsquared = 0x33a1; + t.squareorthogonalcrosshatchfill = 0x25a6; + t.squareupperlefttolowerrightfill = 0x25a7; + t.squareupperrighttolowerleftfill = 0x25a8; + t.squareverticalfill = 0x25a5; + t.squarewhitewithsmallblack = 0x25a3; + t.srsquare = 0x33db; + t.ssabengali = 0x09b7; + t.ssadeva = 0x0937; + t.ssagujarati = 0x0ab7; + t.ssangcieuckorean = 0x3149; + t.ssanghieuhkorean = 0x3185; + t.ssangieungkorean = 0x3180; + t.ssangkiyeokkorean = 0x3132; + t.ssangnieunkorean = 0x3165; + t.ssangpieupkorean = 0x3143; + t.ssangsioskorean = 0x3146; + t.ssangtikeutkorean = 0x3138; + t.ssuperior = 0xf6f2; + t.sterling = 0x00a3; + t.sterlingmonospace = 0xffe1; + t.strokelongoverlaycmb = 0x0336; + t.strokeshortoverlaycmb = 0x0335; + t.subset = 0x2282; + t.subsetnotequal = 0x228a; + t.subsetorequal = 0x2286; + t.succeeds = 0x227b; + t.suchthat = 0x220b; + t.suhiragana = 0x3059; + t.sukatakana = 0x30b9; + t.sukatakanahalfwidth = 0xff7d; + t.sukunarabic = 0x0652; + t.summation = 0x2211; + t.sun = 0x263c; + t.superset = 0x2283; + t.supersetnotequal = 0x228b; + t.supersetorequal = 0x2287; + t.svsquare = 0x33dc; + t.syouwaerasquare = 0x337c; + t.t = 0x0074; + t.tabengali = 0x09a4; + t.tackdown = 0x22a4; + t.tackleft = 0x22a3; + t.tadeva = 0x0924; + t.tagujarati = 0x0aa4; + t.tagurmukhi = 0x0a24; + t.taharabic = 0x0637; + t.tahfinalarabic = 0xfec2; + t.tahinitialarabic = 0xfec3; + t.tahiragana = 0x305f; + t.tahmedialarabic = 0xfec4; + t.taisyouerasquare = 0x337d; + t.takatakana = 0x30bf; + t.takatakanahalfwidth = 0xff80; + t.tatweelarabic = 0x0640; + t.tau = 0x03c4; + t.tav = 0x05ea; + t.tavdages = 0xfb4a; + t.tavdagesh = 0xfb4a; + t.tavdageshhebrew = 0xfb4a; + t.tavhebrew = 0x05ea; + t.tbar = 0x0167; + t.tbopomofo = 0x310a; + t.tcaron = 0x0165; + t.tccurl = 0x02a8; + t.tcedilla = 0x0163; + t.tcheharabic = 0x0686; + t.tchehfinalarabic = 0xfb7b; + t.tchehinitialarabic = 0xfb7c; + t.tchehmedialarabic = 0xfb7d; + t.tcircle = 0x24e3; + t.tcircumflexbelow = 0x1e71; + t.tcommaaccent = 0x0163; + t.tdieresis = 0x1e97; + t.tdotaccent = 0x1e6b; + t.tdotbelow = 0x1e6d; + t.tecyrillic = 0x0442; + t.tedescendercyrillic = 0x04ad; + t.teharabic = 0x062a; + t.tehfinalarabic = 0xfe96; + t.tehhahinitialarabic = 0xfca2; + t.tehhahisolatedarabic = 0xfc0c; + t.tehinitialarabic = 0xfe97; + t.tehiragana = 0x3066; + t.tehjeeminitialarabic = 0xfca1; + t.tehjeemisolatedarabic = 0xfc0b; + t.tehmarbutaarabic = 0x0629; + t.tehmarbutafinalarabic = 0xfe94; + t.tehmedialarabic = 0xfe98; + t.tehmeeminitialarabic = 0xfca4; + t.tehmeemisolatedarabic = 0xfc0e; + t.tehnoonfinalarabic = 0xfc73; + t.tekatakana = 0x30c6; + t.tekatakanahalfwidth = 0xff83; + t.telephone = 0x2121; + t.telephoneblack = 0x260e; + t.telishagedolahebrew = 0x05a0; + t.telishaqetanahebrew = 0x05a9; + t.tencircle = 0x2469; + t.tenideographicparen = 0x3229; + t.tenparen = 0x247d; + t.tenperiod = 0x2491; + t.tenroman = 0x2179; + t.tesh = 0x02a7; + t.tet = 0x05d8; + t.tetdagesh = 0xfb38; + t.tetdageshhebrew = 0xfb38; + t.tethebrew = 0x05d8; + t.tetsecyrillic = 0x04b5; + t.tevirhebrew = 0x059b; + t.tevirlefthebrew = 0x059b; + t.thabengali = 0x09a5; + t.thadeva = 0x0925; + t.thagujarati = 0x0aa5; + t.thagurmukhi = 0x0a25; + t.thalarabic = 0x0630; + t.thalfinalarabic = 0xfeac; + t.thanthakhatlowleftthai = 0xf898; + t.thanthakhatlowrightthai = 0xf897; + t.thanthakhatthai = 0x0e4c; + t.thanthakhatupperleftthai = 0xf896; + t.theharabic = 0x062b; + t.thehfinalarabic = 0xfe9a; + t.thehinitialarabic = 0xfe9b; + t.thehmedialarabic = 0xfe9c; + t.thereexists = 0x2203; + t.therefore = 0x2234; + t.theta = 0x03b8; + t.theta1 = 0x03d1; + t.thetasymbolgreek = 0x03d1; + t.thieuthacirclekorean = 0x3279; + t.thieuthaparenkorean = 0x3219; + t.thieuthcirclekorean = 0x326b; + t.thieuthkorean = 0x314c; + t.thieuthparenkorean = 0x320b; + t.thirteencircle = 0x246c; + t.thirteenparen = 0x2480; + t.thirteenperiod = 0x2494; + t.thonangmonthothai = 0x0e11; + t.thook = 0x01ad; + t.thophuthaothai = 0x0e12; + t.thorn = 0x00fe; + t.thothahanthai = 0x0e17; + t.thothanthai = 0x0e10; + t.thothongthai = 0x0e18; + t.thothungthai = 0x0e16; + t.thousandcyrillic = 0x0482; + t.thousandsseparatorarabic = 0x066c; + t.thousandsseparatorpersian = 0x066c; + t.three = 0x0033; + t.threearabic = 0x0663; + t.threebengali = 0x09e9; + t.threecircle = 0x2462; + t.threecircleinversesansserif = 0x278c; + t.threedeva = 0x0969; + t.threeeighths = 0x215c; + t.threegujarati = 0x0ae9; + t.threegurmukhi = 0x0a69; + t.threehackarabic = 0x0663; + t.threehangzhou = 0x3023; + t.threeideographicparen = 0x3222; + t.threeinferior = 0x2083; + t.threemonospace = 0xff13; + t.threenumeratorbengali = 0x09f6; + t.threeoldstyle = 0xf733; + t.threeparen = 0x2476; + t.threeperiod = 0x248a; + t.threepersian = 0x06f3; + t.threequarters = 0x00be; + t.threequartersemdash = 0xf6de; + t.threeroman = 0x2172; + t.threesuperior = 0x00b3; + t.threethai = 0x0e53; + t.thzsquare = 0x3394; + t.tihiragana = 0x3061; + t.tikatakana = 0x30c1; + t.tikatakanahalfwidth = 0xff81; + t.tikeutacirclekorean = 0x3270; + t.tikeutaparenkorean = 0x3210; + t.tikeutcirclekorean = 0x3262; + t.tikeutkorean = 0x3137; + t.tikeutparenkorean = 0x3202; + t.tilde = 0x02dc; + t.tildebelowcmb = 0x0330; + t.tildecmb = 0x0303; + t.tildecomb = 0x0303; + t.tildedoublecmb = 0x0360; + t.tildeoperator = 0x223c; + t.tildeoverlaycmb = 0x0334; + t.tildeverticalcmb = 0x033e; + t.timescircle = 0x2297; + t.tipehahebrew = 0x0596; + t.tipehalefthebrew = 0x0596; + t.tippigurmukhi = 0x0a70; + t.titlocyrilliccmb = 0x0483; + t.tiwnarmenian = 0x057f; + t.tlinebelow = 0x1e6f; + t.tmonospace = 0xff54; + t.toarmenian = 0x0569; + t.tohiragana = 0x3068; + t.tokatakana = 0x30c8; + t.tokatakanahalfwidth = 0xff84; + t.tonebarextrahighmod = 0x02e5; + t.tonebarextralowmod = 0x02e9; + t.tonebarhighmod = 0x02e6; + t.tonebarlowmod = 0x02e8; + t.tonebarmidmod = 0x02e7; + t.tonefive = 0x01bd; + t.tonesix = 0x0185; + t.tonetwo = 0x01a8; + t.tonos = 0x0384; + t.tonsquare = 0x3327; + t.topatakthai = 0x0e0f; + t.tortoiseshellbracketleft = 0x3014; + t.tortoiseshellbracketleftsmall = 0xfe5d; + t.tortoiseshellbracketleftvertical = 0xfe39; + t.tortoiseshellbracketright = 0x3015; + t.tortoiseshellbracketrightsmall = 0xfe5e; + t.tortoiseshellbracketrightvertical = 0xfe3a; + t.totaothai = 0x0e15; + t.tpalatalhook = 0x01ab; + t.tparen = 0x24af; + t.trademark = 0x2122; + t.trademarksans = 0xf8ea; + t.trademarkserif = 0xf6db; + t.tretroflexhook = 0x0288; + t.triagdn = 0x25bc; + t.triaglf = 0x25c4; + t.triagrt = 0x25ba; + t.triagup = 0x25b2; + t.ts = 0x02a6; + t.tsadi = 0x05e6; + t.tsadidagesh = 0xfb46; + t.tsadidageshhebrew = 0xfb46; + t.tsadihebrew = 0x05e6; + t.tsecyrillic = 0x0446; + t.tsere = 0x05b5; + t.tsere12 = 0x05b5; + t.tsere1e = 0x05b5; + t.tsere2b = 0x05b5; + t.tserehebrew = 0x05b5; + t.tserenarrowhebrew = 0x05b5; + t.tserequarterhebrew = 0x05b5; + t.tserewidehebrew = 0x05b5; + t.tshecyrillic = 0x045b; + t.tsuperior = 0xf6f3; + t.ttabengali = 0x099f; + t.ttadeva = 0x091f; + t.ttagujarati = 0x0a9f; + t.ttagurmukhi = 0x0a1f; + t.tteharabic = 0x0679; + t.ttehfinalarabic = 0xfb67; + t.ttehinitialarabic = 0xfb68; + t.ttehmedialarabic = 0xfb69; + t.tthabengali = 0x09a0; + t.tthadeva = 0x0920; + t.tthagujarati = 0x0aa0; + t.tthagurmukhi = 0x0a20; + t.tturned = 0x0287; + t.tuhiragana = 0x3064; + t.tukatakana = 0x30c4; + t.tukatakanahalfwidth = 0xff82; + t.tusmallhiragana = 0x3063; + t.tusmallkatakana = 0x30c3; + t.tusmallkatakanahalfwidth = 0xff6f; + t.twelvecircle = 0x246b; + t.twelveparen = 0x247f; + t.twelveperiod = 0x2493; + t.twelveroman = 0x217b; + t.twentycircle = 0x2473; + t.twentyhangzhou = 0x5344; + t.twentyparen = 0x2487; + t.twentyperiod = 0x249b; + t.two = 0x0032; + t.twoarabic = 0x0662; + t.twobengali = 0x09e8; + t.twocircle = 0x2461; + t.twocircleinversesansserif = 0x278b; + t.twodeva = 0x0968; + t.twodotenleader = 0x2025; + t.twodotleader = 0x2025; + t.twodotleadervertical = 0xfe30; + t.twogujarati = 0x0ae8; + t.twogurmukhi = 0x0a68; + t.twohackarabic = 0x0662; + t.twohangzhou = 0x3022; + t.twoideographicparen = 0x3221; + t.twoinferior = 0x2082; + t.twomonospace = 0xff12; + t.twonumeratorbengali = 0x09f5; + t.twooldstyle = 0xf732; + t.twoparen = 0x2475; + t.twoperiod = 0x2489; + t.twopersian = 0x06f2; + t.tworoman = 0x2171; + t.twostroke = 0x01bb; + t.twosuperior = 0x00b2; + t.twothai = 0x0e52; + t.twothirds = 0x2154; + t.u = 0x0075; + t.uacute = 0x00fa; + t.ubar = 0x0289; + t.ubengali = 0x0989; + t.ubopomofo = 0x3128; + t.ubreve = 0x016d; + t.ucaron = 0x01d4; + t.ucircle = 0x24e4; + t.ucircumflex = 0x00fb; + t.ucircumflexbelow = 0x1e77; + t.ucyrillic = 0x0443; + t.udattadeva = 0x0951; + t.udblacute = 0x0171; + t.udblgrave = 0x0215; + t.udeva = 0x0909; + t.udieresis = 0x00fc; + t.udieresisacute = 0x01d8; + t.udieresisbelow = 0x1e73; + t.udieresiscaron = 0x01da; + t.udieresiscyrillic = 0x04f1; + t.udieresisgrave = 0x01dc; + t.udieresismacron = 0x01d6; + t.udotbelow = 0x1ee5; + t.ugrave = 0x00f9; + t.ugujarati = 0x0a89; + t.ugurmukhi = 0x0a09; + t.uhiragana = 0x3046; + t.uhookabove = 0x1ee7; + t.uhorn = 0x01b0; + t.uhornacute = 0x1ee9; + t.uhorndotbelow = 0x1ef1; + t.uhorngrave = 0x1eeb; + t.uhornhookabove = 0x1eed; + t.uhorntilde = 0x1eef; + t.uhungarumlaut = 0x0171; + t.uhungarumlautcyrillic = 0x04f3; + t.uinvertedbreve = 0x0217; + t.ukatakana = 0x30a6; + t.ukatakanahalfwidth = 0xff73; + t.ukcyrillic = 0x0479; + t.ukorean = 0x315c; + t.umacron = 0x016b; + t.umacroncyrillic = 0x04ef; + t.umacrondieresis = 0x1e7b; + t.umatragurmukhi = 0x0a41; + t.umonospace = 0xff55; + t.underscore = 0x005f; + t.underscoredbl = 0x2017; + t.underscoremonospace = 0xff3f; + t.underscorevertical = 0xfe33; + t.underscorewavy = 0xfe4f; + t.union = 0x222a; + t.universal = 0x2200; + t.uogonek = 0x0173; + t.uparen = 0x24b0; + t.upblock = 0x2580; + t.upperdothebrew = 0x05c4; + t.upsilon = 0x03c5; + t.upsilondieresis = 0x03cb; + t.upsilondieresistonos = 0x03b0; + t.upsilonlatin = 0x028a; + t.upsilontonos = 0x03cd; + t.uptackbelowcmb = 0x031d; + t.uptackmod = 0x02d4; + t.uragurmukhi = 0x0a73; + t.uring = 0x016f; + t.ushortcyrillic = 0x045e; + t.usmallhiragana = 0x3045; + t.usmallkatakana = 0x30a5; + t.usmallkatakanahalfwidth = 0xff69; + t.ustraightcyrillic = 0x04af; + t.ustraightstrokecyrillic = 0x04b1; + t.utilde = 0x0169; + t.utildeacute = 0x1e79; + t.utildebelow = 0x1e75; + t.uubengali = 0x098a; + t.uudeva = 0x090a; + t.uugujarati = 0x0a8a; + t.uugurmukhi = 0x0a0a; + t.uumatragurmukhi = 0x0a42; + t.uuvowelsignbengali = 0x09c2; + t.uuvowelsigndeva = 0x0942; + t.uuvowelsigngujarati = 0x0ac2; + t.uvowelsignbengali = 0x09c1; + t.uvowelsigndeva = 0x0941; + t.uvowelsigngujarati = 0x0ac1; + t.v = 0x0076; + t.vadeva = 0x0935; + t.vagujarati = 0x0ab5; + t.vagurmukhi = 0x0a35; + t.vakatakana = 0x30f7; + t.vav = 0x05d5; + t.vavdagesh = 0xfb35; + t.vavdagesh65 = 0xfb35; + t.vavdageshhebrew = 0xfb35; + t.vavhebrew = 0x05d5; + t.vavholam = 0xfb4b; + t.vavholamhebrew = 0xfb4b; + t.vavvavhebrew = 0x05f0; + t.vavyodhebrew = 0x05f1; + t.vcircle = 0x24e5; + t.vdotbelow = 0x1e7f; + t.vecyrillic = 0x0432; + t.veharabic = 0x06a4; + t.vehfinalarabic = 0xfb6b; + t.vehinitialarabic = 0xfb6c; + t.vehmedialarabic = 0xfb6d; + t.vekatakana = 0x30f9; + t.venus = 0x2640; + t.verticalbar = 0x007c; + t.verticallineabovecmb = 0x030d; + t.verticallinebelowcmb = 0x0329; + t.verticallinelowmod = 0x02cc; + t.verticallinemod = 0x02c8; + t.vewarmenian = 0x057e; + t.vhook = 0x028b; + t.vikatakana = 0x30f8; + t.viramabengali = 0x09cd; + t.viramadeva = 0x094d; + t.viramagujarati = 0x0acd; + t.visargabengali = 0x0983; + t.visargadeva = 0x0903; + t.visargagujarati = 0x0a83; + t.vmonospace = 0xff56; + t.voarmenian = 0x0578; + t.voicediterationhiragana = 0x309e; + t.voicediterationkatakana = 0x30fe; + t.voicedmarkkana = 0x309b; + t.voicedmarkkanahalfwidth = 0xff9e; + t.vokatakana = 0x30fa; + t.vparen = 0x24b1; + t.vtilde = 0x1e7d; + t.vturned = 0x028c; + t.vuhiragana = 0x3094; + t.vukatakana = 0x30f4; + t.w = 0x0077; + t.wacute = 0x1e83; + t.waekorean = 0x3159; + t.wahiragana = 0x308f; + t.wakatakana = 0x30ef; + t.wakatakanahalfwidth = 0xff9c; + t.wakorean = 0x3158; + t.wasmallhiragana = 0x308e; + t.wasmallkatakana = 0x30ee; + t.wattosquare = 0x3357; + t.wavedash = 0x301c; + t.wavyunderscorevertical = 0xfe34; + t.wawarabic = 0x0648; + t.wawfinalarabic = 0xfeee; + t.wawhamzaabovearabic = 0x0624; + t.wawhamzaabovefinalarabic = 0xfe86; + t.wbsquare = 0x33dd; + t.wcircle = 0x24e6; + t.wcircumflex = 0x0175; + t.wdieresis = 0x1e85; + t.wdotaccent = 0x1e87; + t.wdotbelow = 0x1e89; + t.wehiragana = 0x3091; + t.weierstrass = 0x2118; + t.wekatakana = 0x30f1; + t.wekorean = 0x315e; + t.weokorean = 0x315d; + t.wgrave = 0x1e81; + t.whitebullet = 0x25e6; + t.whitecircle = 0x25cb; + t.whitecircleinverse = 0x25d9; + t.whitecornerbracketleft = 0x300e; + t.whitecornerbracketleftvertical = 0xfe43; + t.whitecornerbracketright = 0x300f; + t.whitecornerbracketrightvertical = 0xfe44; + t.whitediamond = 0x25c7; + t.whitediamondcontainingblacksmalldiamond = 0x25c8; + t.whitedownpointingsmalltriangle = 0x25bf; + t.whitedownpointingtriangle = 0x25bd; + t.whiteleftpointingsmalltriangle = 0x25c3; + t.whiteleftpointingtriangle = 0x25c1; + t.whitelenticularbracketleft = 0x3016; + t.whitelenticularbracketright = 0x3017; + t.whiterightpointingsmalltriangle = 0x25b9; + t.whiterightpointingtriangle = 0x25b7; + t.whitesmallsquare = 0x25ab; + t.whitesmilingface = 0x263a; + t.whitesquare = 0x25a1; + t.whitestar = 0x2606; + t.whitetelephone = 0x260f; + t.whitetortoiseshellbracketleft = 0x3018; + t.whitetortoiseshellbracketright = 0x3019; + t.whiteuppointingsmalltriangle = 0x25b5; + t.whiteuppointingtriangle = 0x25b3; + t.wihiragana = 0x3090; + t.wikatakana = 0x30f0; + t.wikorean = 0x315f; + t.wmonospace = 0xff57; + t.wohiragana = 0x3092; + t.wokatakana = 0x30f2; + t.wokatakanahalfwidth = 0xff66; + t.won = 0x20a9; + t.wonmonospace = 0xffe6; + t.wowaenthai = 0x0e27; + t.wparen = 0x24b2; + t.wring = 0x1e98; + t.wsuperior = 0x02b7; + t.wturned = 0x028d; + t.wynn = 0x01bf; + t.x = 0x0078; + t.xabovecmb = 0x033d; + t.xbopomofo = 0x3112; + t.xcircle = 0x24e7; + t.xdieresis = 0x1e8d; + t.xdotaccent = 0x1e8b; + t.xeharmenian = 0x056d; + t.xi = 0x03be; + t.xmonospace = 0xff58; + t.xparen = 0x24b3; + t.xsuperior = 0x02e3; + t.y = 0x0079; + t.yaadosquare = 0x334e; + t.yabengali = 0x09af; + t.yacute = 0x00fd; + t.yadeva = 0x092f; + t.yaekorean = 0x3152; + t.yagujarati = 0x0aaf; + t.yagurmukhi = 0x0a2f; + t.yahiragana = 0x3084; + t.yakatakana = 0x30e4; + t.yakatakanahalfwidth = 0xff94; + t.yakorean = 0x3151; + t.yamakkanthai = 0x0e4e; + t.yasmallhiragana = 0x3083; + t.yasmallkatakana = 0x30e3; + t.yasmallkatakanahalfwidth = 0xff6c; + t.yatcyrillic = 0x0463; + t.ycircle = 0x24e8; + t.ycircumflex = 0x0177; + t.ydieresis = 0x00ff; + t.ydotaccent = 0x1e8f; + t.ydotbelow = 0x1ef5; + t.yeharabic = 0x064a; + t.yehbarreearabic = 0x06d2; + t.yehbarreefinalarabic = 0xfbaf; + t.yehfinalarabic = 0xfef2; + t.yehhamzaabovearabic = 0x0626; + t.yehhamzaabovefinalarabic = 0xfe8a; + t.yehhamzaaboveinitialarabic = 0xfe8b; + t.yehhamzaabovemedialarabic = 0xfe8c; + t.yehinitialarabic = 0xfef3; + t.yehmedialarabic = 0xfef4; + t.yehmeeminitialarabic = 0xfcdd; + t.yehmeemisolatedarabic = 0xfc58; + t.yehnoonfinalarabic = 0xfc94; + t.yehthreedotsbelowarabic = 0x06d1; + t.yekorean = 0x3156; + t.yen = 0x00a5; + t.yenmonospace = 0xffe5; + t.yeokorean = 0x3155; + t.yeorinhieuhkorean = 0x3186; + t.yerahbenyomohebrew = 0x05aa; + t.yerahbenyomolefthebrew = 0x05aa; + t.yericyrillic = 0x044b; + t.yerudieresiscyrillic = 0x04f9; + t.yesieungkorean = 0x3181; + t.yesieungpansioskorean = 0x3183; + t.yesieungsioskorean = 0x3182; + t.yetivhebrew = 0x059a; + t.ygrave = 0x1ef3; + t.yhook = 0x01b4; + t.yhookabove = 0x1ef7; + t.yiarmenian = 0x0575; + t.yicyrillic = 0x0457; + t.yikorean = 0x3162; + t.yinyang = 0x262f; + t.yiwnarmenian = 0x0582; + t.ymonospace = 0xff59; + t.yod = 0x05d9; + t.yoddagesh = 0xfb39; + t.yoddageshhebrew = 0xfb39; + t.yodhebrew = 0x05d9; + t.yodyodhebrew = 0x05f2; + t.yodyodpatahhebrew = 0xfb1f; + t.yohiragana = 0x3088; + t.yoikorean = 0x3189; + t.yokatakana = 0x30e8; + t.yokatakanahalfwidth = 0xff96; + t.yokorean = 0x315b; + t.yosmallhiragana = 0x3087; + t.yosmallkatakana = 0x30e7; + t.yosmallkatakanahalfwidth = 0xff6e; + t.yotgreek = 0x03f3; + t.yoyaekorean = 0x3188; + t.yoyakorean = 0x3187; + t.yoyakthai = 0x0e22; + t.yoyingthai = 0x0e0d; + t.yparen = 0x24b4; + t.ypogegrammeni = 0x037a; + t.ypogegrammenigreekcmb = 0x0345; + t.yr = 0x01a6; + t.yring = 0x1e99; + t.ysuperior = 0x02b8; + t.ytilde = 0x1ef9; + t.yturned = 0x028e; + t.yuhiragana = 0x3086; + t.yuikorean = 0x318c; + t.yukatakana = 0x30e6; + t.yukatakanahalfwidth = 0xff95; + t.yukorean = 0x3160; + t.yusbigcyrillic = 0x046b; + t.yusbigiotifiedcyrillic = 0x046d; + t.yuslittlecyrillic = 0x0467; + t.yuslittleiotifiedcyrillic = 0x0469; + t.yusmallhiragana = 0x3085; + t.yusmallkatakana = 0x30e5; + t.yusmallkatakanahalfwidth = 0xff6d; + t.yuyekorean = 0x318b; + t.yuyeokorean = 0x318a; + t.yyabengali = 0x09df; + t.yyadeva = 0x095f; + t.z = 0x007a; + t.zaarmenian = 0x0566; + t.zacute = 0x017a; + t.zadeva = 0x095b; + t.zagurmukhi = 0x0a5b; + t.zaharabic = 0x0638; + t.zahfinalarabic = 0xfec6; + t.zahinitialarabic = 0xfec7; + t.zahiragana = 0x3056; + t.zahmedialarabic = 0xfec8; + t.zainarabic = 0x0632; + t.zainfinalarabic = 0xfeb0; + t.zakatakana = 0x30b6; + t.zaqefgadolhebrew = 0x0595; + t.zaqefqatanhebrew = 0x0594; + t.zarqahebrew = 0x0598; + t.zayin = 0x05d6; + t.zayindagesh = 0xfb36; + t.zayindageshhebrew = 0xfb36; + t.zayinhebrew = 0x05d6; + t.zbopomofo = 0x3117; + t.zcaron = 0x017e; + t.zcircle = 0x24e9; + t.zcircumflex = 0x1e91; + t.zcurl = 0x0291; + t.zdot = 0x017c; + t.zdotaccent = 0x017c; + t.zdotbelow = 0x1e93; + t.zecyrillic = 0x0437; + t.zedescendercyrillic = 0x0499; + t.zedieresiscyrillic = 0x04df; + t.zehiragana = 0x305c; + t.zekatakana = 0x30bc; + t.zero = 0x0030; + t.zeroarabic = 0x0660; + t.zerobengali = 0x09e6; + t.zerodeva = 0x0966; + t.zerogujarati = 0x0ae6; + t.zerogurmukhi = 0x0a66; + t.zerohackarabic = 0x0660; + t.zeroinferior = 0x2080; + t.zeromonospace = 0xff10; + t.zerooldstyle = 0xf730; + t.zeropersian = 0x06f0; + t.zerosuperior = 0x2070; + t.zerothai = 0x0e50; + t.zerowidthjoiner = 0xfeff; + t.zerowidthnonjoiner = 0x200c; + t.zerowidthspace = 0x200b; + t.zeta = 0x03b6; + t.zhbopomofo = 0x3113; + t.zhearmenian = 0x056a; + t.zhebrevecyrillic = 0x04c2; + t.zhecyrillic = 0x0436; + t.zhedescendercyrillic = 0x0497; + t.zhedieresiscyrillic = 0x04dd; + t.zihiragana = 0x3058; + t.zikatakana = 0x30b8; + t.zinorhebrew = 0x05ae; + t.zlinebelow = 0x1e95; + t.zmonospace = 0xff5a; + t.zohiragana = 0x305e; + t.zokatakana = 0x30be; + t.zparen = 0x24b5; + t.zretroflexhook = 0x0290; + t.zstroke = 0x01b6; + t.zuhiragana = 0x305a; + t.zukatakana = 0x30ba; + t[".notdef"] = 0x0000; + t.angbracketleftbig = 0x2329; + t.angbracketleftBig = 0x2329; + t.angbracketleftbigg = 0x2329; + t.angbracketleftBigg = 0x2329; + t.angbracketrightBig = 0x232a; + t.angbracketrightbig = 0x232a; + t.angbracketrightBigg = 0x232a; + t.angbracketrightbigg = 0x232a; + t.arrowhookleft = 0x21aa; + t.arrowhookright = 0x21a9; + t.arrowlefttophalf = 0x21bc; + t.arrowleftbothalf = 0x21bd; + t.arrownortheast = 0x2197; + t.arrownorthwest = 0x2196; + t.arrowrighttophalf = 0x21c0; + t.arrowrightbothalf = 0x21c1; + t.arrowsoutheast = 0x2198; + t.arrowsouthwest = 0x2199; + t.backslashbig = 0x2216; + t.backslashBig = 0x2216; + t.backslashBigg = 0x2216; + t.backslashbigg = 0x2216; + t.bardbl = 0x2016; + t.bracehtipdownleft = 0xfe37; + t.bracehtipdownright = 0xfe37; + t.bracehtipupleft = 0xfe38; + t.bracehtipupright = 0xfe38; + t.braceleftBig = 0x007b; + t.braceleftbig = 0x007b; + t.braceleftbigg = 0x007b; + t.braceleftBigg = 0x007b; + t.bracerightBig = 0x007d; + t.bracerightbig = 0x007d; + t.bracerightbigg = 0x007d; + t.bracerightBigg = 0x007d; + t.bracketleftbig = 0x005b; + t.bracketleftBig = 0x005b; + t.bracketleftbigg = 0x005b; + t.bracketleftBigg = 0x005b; + t.bracketrightBig = 0x005d; + t.bracketrightbig = 0x005d; + t.bracketrightbigg = 0x005d; + t.bracketrightBigg = 0x005d; + t.ceilingleftbig = 0x2308; + t.ceilingleftBig = 0x2308; + t.ceilingleftBigg = 0x2308; + t.ceilingleftbigg = 0x2308; + t.ceilingrightbig = 0x2309; + t.ceilingrightBig = 0x2309; + t.ceilingrightbigg = 0x2309; + t.ceilingrightBigg = 0x2309; + t.circledotdisplay = 0x2299; + t.circledottext = 0x2299; + t.circlemultiplydisplay = 0x2297; + t.circlemultiplytext = 0x2297; + t.circleplusdisplay = 0x2295; + t.circleplustext = 0x2295; + t.contintegraldisplay = 0x222e; + t.contintegraltext = 0x222e; + t.coproductdisplay = 0x2210; + t.coproducttext = 0x2210; + t.floorleftBig = 0x230a; + t.floorleftbig = 0x230a; + t.floorleftbigg = 0x230a; + t.floorleftBigg = 0x230a; + t.floorrightbig = 0x230b; + t.floorrightBig = 0x230b; + t.floorrightBigg = 0x230b; + t.floorrightbigg = 0x230b; + t.hatwide = 0x0302; + t.hatwider = 0x0302; + t.hatwidest = 0x0302; + t.intercal = 0x1d40; + t.integraldisplay = 0x222b; + t.integraltext = 0x222b; + t.intersectiondisplay = 0x22c2; + t.intersectiontext = 0x22c2; + t.logicalanddisplay = 0x2227; + t.logicalandtext = 0x2227; + t.logicalordisplay = 0x2228; + t.logicalortext = 0x2228; + t.parenleftBig = 0x0028; + t.parenleftbig = 0x0028; + t.parenleftBigg = 0x0028; + t.parenleftbigg = 0x0028; + t.parenrightBig = 0x0029; + t.parenrightbig = 0x0029; + t.parenrightBigg = 0x0029; + t.parenrightbigg = 0x0029; + t.prime = 0x2032; + t.productdisplay = 0x220f; + t.producttext = 0x220f; + t.radicalbig = 0x221a; + t.radicalBig = 0x221a; + t.radicalBigg = 0x221a; + t.radicalbigg = 0x221a; + t.radicalbt = 0x221a; + t.radicaltp = 0x221a; + t.radicalvertex = 0x221a; + t.slashbig = 0x002f; + t.slashBig = 0x002f; + t.slashBigg = 0x002f; + t.slashbigg = 0x002f; + t.summationdisplay = 0x2211; + t.summationtext = 0x2211; + t.tildewide = 0x02dc; + t.tildewider = 0x02dc; + t.tildewidest = 0x02dc; + t.uniondisplay = 0x22c3; + t.unionmultidisplay = 0x228e; + t.unionmultitext = 0x228e; + t.unionsqdisplay = 0x2294; + t.unionsqtext = 0x2294; + t.uniontext = 0x22c3; + t.vextenddouble = 0x2225; + t.vextendsingle = 0x2223; +}); +const getDingbatsGlyphsUnicode = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getLookupTableFactory)(function (t) { + t.space = 0x0020; + t.a1 = 0x2701; + t.a2 = 0x2702; + t.a202 = 0x2703; + t.a3 = 0x2704; + t.a4 = 0x260e; + t.a5 = 0x2706; + t.a119 = 0x2707; + t.a118 = 0x2708; + t.a117 = 0x2709; + t.a11 = 0x261b; + t.a12 = 0x261e; + t.a13 = 0x270c; + t.a14 = 0x270d; + t.a15 = 0x270e; + t.a16 = 0x270f; + t.a105 = 0x2710; + t.a17 = 0x2711; + t.a18 = 0x2712; + t.a19 = 0x2713; + t.a20 = 0x2714; + t.a21 = 0x2715; + t.a22 = 0x2716; + t.a23 = 0x2717; + t.a24 = 0x2718; + t.a25 = 0x2719; + t.a26 = 0x271a; + t.a27 = 0x271b; + t.a28 = 0x271c; + t.a6 = 0x271d; + t.a7 = 0x271e; + t.a8 = 0x271f; + t.a9 = 0x2720; + t.a10 = 0x2721; + t.a29 = 0x2722; + t.a30 = 0x2723; + t.a31 = 0x2724; + t.a32 = 0x2725; + t.a33 = 0x2726; + t.a34 = 0x2727; + t.a35 = 0x2605; + t.a36 = 0x2729; + t.a37 = 0x272a; + t.a38 = 0x272b; + t.a39 = 0x272c; + t.a40 = 0x272d; + t.a41 = 0x272e; + t.a42 = 0x272f; + t.a43 = 0x2730; + t.a44 = 0x2731; + t.a45 = 0x2732; + t.a46 = 0x2733; + t.a47 = 0x2734; + t.a48 = 0x2735; + t.a49 = 0x2736; + t.a50 = 0x2737; + t.a51 = 0x2738; + t.a52 = 0x2739; + t.a53 = 0x273a; + t.a54 = 0x273b; + t.a55 = 0x273c; + t.a56 = 0x273d; + t.a57 = 0x273e; + t.a58 = 0x273f; + t.a59 = 0x2740; + t.a60 = 0x2741; + t.a61 = 0x2742; + t.a62 = 0x2743; + t.a63 = 0x2744; + t.a64 = 0x2745; + t.a65 = 0x2746; + t.a66 = 0x2747; + t.a67 = 0x2748; + t.a68 = 0x2749; + t.a69 = 0x274a; + t.a70 = 0x274b; + t.a71 = 0x25cf; + t.a72 = 0x274d; + t.a73 = 0x25a0; + t.a74 = 0x274f; + t.a203 = 0x2750; + t.a75 = 0x2751; + t.a204 = 0x2752; + t.a76 = 0x25b2; + t.a77 = 0x25bc; + t.a78 = 0x25c6; + t.a79 = 0x2756; + t.a81 = 0x25d7; + t.a82 = 0x2758; + t.a83 = 0x2759; + t.a84 = 0x275a; + t.a97 = 0x275b; + t.a98 = 0x275c; + t.a99 = 0x275d; + t.a100 = 0x275e; + t.a101 = 0x2761; + t.a102 = 0x2762; + t.a103 = 0x2763; + t.a104 = 0x2764; + t.a106 = 0x2765; + t.a107 = 0x2766; + t.a108 = 0x2767; + t.a112 = 0x2663; + t.a111 = 0x2666; + t.a110 = 0x2665; + t.a109 = 0x2660; + t.a120 = 0x2460; + t.a121 = 0x2461; + t.a122 = 0x2462; + t.a123 = 0x2463; + t.a124 = 0x2464; + t.a125 = 0x2465; + t.a126 = 0x2466; + t.a127 = 0x2467; + t.a128 = 0x2468; + t.a129 = 0x2469; + t.a130 = 0x2776; + t.a131 = 0x2777; + t.a132 = 0x2778; + t.a133 = 0x2779; + t.a134 = 0x277a; + t.a135 = 0x277b; + t.a136 = 0x277c; + t.a137 = 0x277d; + t.a138 = 0x277e; + t.a139 = 0x277f; + t.a140 = 0x2780; + t.a141 = 0x2781; + t.a142 = 0x2782; + t.a143 = 0x2783; + t.a144 = 0x2784; + t.a145 = 0x2785; + t.a146 = 0x2786; + t.a147 = 0x2787; + t.a148 = 0x2788; + t.a149 = 0x2789; + t.a150 = 0x278a; + t.a151 = 0x278b; + t.a152 = 0x278c; + t.a153 = 0x278d; + t.a154 = 0x278e; + t.a155 = 0x278f; + t.a156 = 0x2790; + t.a157 = 0x2791; + t.a158 = 0x2792; + t.a159 = 0x2793; + t.a160 = 0x2794; + t.a161 = 0x2192; + t.a163 = 0x2194; + t.a164 = 0x2195; + t.a196 = 0x2798; + t.a165 = 0x2799; + t.a192 = 0x279a; + t.a166 = 0x279b; + t.a167 = 0x279c; + t.a168 = 0x279d; + t.a169 = 0x279e; + t.a170 = 0x279f; + t.a171 = 0x27a0; + t.a172 = 0x27a1; + t.a173 = 0x27a2; + t.a162 = 0x27a3; + t.a174 = 0x27a4; + t.a175 = 0x27a5; + t.a176 = 0x27a6; + t.a177 = 0x27a7; + t.a178 = 0x27a8; + t.a179 = 0x27a9; + t.a193 = 0x27aa; + t.a180 = 0x27ab; + t.a199 = 0x27ac; + t.a181 = 0x27ad; + t.a200 = 0x27ae; + t.a182 = 0x27af; + t.a201 = 0x27b1; + t.a183 = 0x27b2; + t.a184 = 0x27b3; + t.a197 = 0x27b4; + t.a185 = 0x27b5; + t.a194 = 0x27b6; + t.a198 = 0x27b7; + t.a186 = 0x27b8; + t.a195 = 0x27b9; + t.a187 = 0x27ba; + t.a188 = 0x27bb; + t.a189 = 0x27bc; + t.a190 = 0x27bd; + t.a191 = 0x27be; + t.a89 = 0x2768; + t.a90 = 0x2769; + t.a93 = 0x276a; + t.a94 = 0x276b; + t.a91 = 0x276c; + t.a92 = 0x276d; + t.a205 = 0x276e; + t.a85 = 0x276f; + t.a206 = 0x2770; + t.a86 = 0x2771; + t.a87 = 0x2772; + t.a88 = 0x2773; + t.a95 = 0x2774; + t.a96 = 0x2775; + t[".notdef"] = 0x0000; +}); + + +/***/ }), +/* 40 */ +/***/ ((__unused_webpack_module, __webpack_exports__, __w_pdfjs_require__) => { + +__w_pdfjs_require__.r(__webpack_exports__); +/* harmony export */ __w_pdfjs_require__.d(__webpack_exports__, { +/* harmony export */ clearUnicodeCaches: () => (/* binding */ clearUnicodeCaches), +/* harmony export */ getCharUnicodeCategory: () => (/* binding */ getCharUnicodeCategory), +/* harmony export */ getUnicodeForGlyph: () => (/* binding */ getUnicodeForGlyph), +/* harmony export */ getUnicodeRangeFor: () => (/* binding */ getUnicodeRangeFor), +/* harmony export */ mapSpecialUnicodeValues: () => (/* binding */ mapSpecialUnicodeValues) +/* harmony export */ }); +/* harmony import */ var _core_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __w_pdfjs_require__(3); + +const getSpecialPUASymbols = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getLookupTableFactory)(function (t) { + t[63721] = 0x00a9; + t[63193] = 0x00a9; + t[63720] = 0x00ae; + t[63194] = 0x00ae; + t[63722] = 0x2122; + t[63195] = 0x2122; + t[63729] = 0x23a7; + t[63730] = 0x23a8; + t[63731] = 0x23a9; + t[63740] = 0x23ab; + t[63741] = 0x23ac; + t[63742] = 0x23ad; + t[63726] = 0x23a1; + t[63727] = 0x23a2; + t[63728] = 0x23a3; + t[63737] = 0x23a4; + t[63738] = 0x23a5; + t[63739] = 0x23a6; + t[63723] = 0x239b; + t[63724] = 0x239c; + t[63725] = 0x239d; + t[63734] = 0x239e; + t[63735] = 0x239f; + t[63736] = 0x23a0; +}); +function mapSpecialUnicodeValues(code) { + if (code >= 0xfff0 && code <= 0xffff) { + return 0; + } else if (code >= 0xf600 && code <= 0xf8ff) { + return getSpecialPUASymbols()[code] || code; + } else if (code === 0x00ad) { + return 0x002d; + } + return code; +} +function getUnicodeForGlyph(name, glyphsUnicodeMap) { + let unicode = glyphsUnicodeMap[name]; + if (unicode !== undefined) { + return unicode; + } + if (!name) { + return -1; + } + if (name[0] === "u") { + const nameLen = name.length; + let hexStr; + if (nameLen === 7 && name[1] === "n" && name[2] === "i") { + hexStr = name.substring(3); + } else if (nameLen >= 5 && nameLen <= 7) { + hexStr = name.substring(1); + } else { + return -1; + } + if (hexStr === hexStr.toUpperCase()) { + unicode = parseInt(hexStr, 16); + if (unicode >= 0) { + return unicode; + } + } + } + return -1; +} +const UnicodeRanges = [ + [ + 0x0000, + 0x007f + ], + [ + 0x0080, + 0x00ff + ], + [ + 0x0100, + 0x017f + ], + [ + 0x0180, + 0x024f + ], + [ + 0x0250, + 0x02af, + 0x1d00, + 0x1d7f, + 0x1d80, + 0x1dbf + ], + [ + 0x02b0, + 0x02ff, + 0xa700, + 0xa71f + ], + [ + 0x0300, + 0x036f, + 0x1dc0, + 0x1dff + ], + [ + 0x0370, + 0x03ff + ], + [ + 0x2c80, + 0x2cff + ], + [ + 0x0400, + 0x04ff, + 0x0500, + 0x052f, + 0x2de0, + 0x2dff, + 0xa640, + 0xa69f + ], + [ + 0x0530, + 0x058f + ], + [ + 0x0590, + 0x05ff + ], + [ + 0xa500, + 0xa63f + ], + [ + 0x0600, + 0x06ff, + 0x0750, + 0x077f + ], + [ + 0x07c0, + 0x07ff + ], + [ + 0x0900, + 0x097f + ], + [ + 0x0980, + 0x09ff + ], + [ + 0x0a00, + 0x0a7f + ], + [ + 0x0a80, + 0x0aff + ], + [ + 0x0b00, + 0x0b7f + ], + [ + 0x0b80, + 0x0bff + ], + [ + 0x0c00, + 0x0c7f + ], + [ + 0x0c80, + 0x0cff + ], + [ + 0x0d00, + 0x0d7f + ], + [ + 0x0e00, + 0x0e7f + ], + [ + 0x0e80, + 0x0eff + ], + [ + 0x10a0, + 0x10ff, + 0x2d00, + 0x2d2f + ], + [ + 0x1b00, + 0x1b7f + ], + [ + 0x1100, + 0x11ff + ], + [ + 0x1e00, + 0x1eff, + 0x2c60, + 0x2c7f, + 0xa720, + 0xa7ff + ], + [ + 0x1f00, + 0x1fff + ], + [ + 0x2000, + 0x206f, + 0x2e00, + 0x2e7f + ], + [ + 0x2070, + 0x209f + ], + [ + 0x20a0, + 0x20cf + ], + [ + 0x20d0, + 0x20ff + ], + [ + 0x2100, + 0x214f + ], + [ + 0x2150, + 0x218f + ], + [ + 0x2190, + 0x21ff, + 0x27f0, + 0x27ff, + 0x2900, + 0x297f, + 0x2b00, + 0x2bff + ], + [ + 0x2200, + 0x22ff, + 0x2a00, + 0x2aff, + 0x27c0, + 0x27ef, + 0x2980, + 0x29ff + ], + [ + 0x2300, + 0x23ff + ], + [ + 0x2400, + 0x243f + ], + [ + 0x2440, + 0x245f + ], + [ + 0x2460, + 0x24ff + ], + [ + 0x2500, + 0x257f + ], + [ + 0x2580, + 0x259f + ], + [ + 0x25a0, + 0x25ff + ], + [ + 0x2600, + 0x26ff + ], + [ + 0x2700, + 0x27bf + ], + [ + 0x3000, + 0x303f + ], + [ + 0x3040, + 0x309f + ], + [ + 0x30a0, + 0x30ff, + 0x31f0, + 0x31ff + ], + [ + 0x3100, + 0x312f, + 0x31a0, + 0x31bf + ], + [ + 0x3130, + 0x318f + ], + [ + 0xa840, + 0xa87f + ], + [ + 0x3200, + 0x32ff + ], + [ + 0x3300, + 0x33ff + ], + [ + 0xac00, + 0xd7af + ], + [ + 0xd800, + 0xdfff + ], + [ + 0x10900, + 0x1091f + ], + [ + 0x4e00, + 0x9fff, + 0x2e80, + 0x2eff, + 0x2f00, + 0x2fdf, + 0x2ff0, + 0x2fff, + 0x3400, + 0x4dbf, + 0x20000, + 0x2a6df, + 0x3190, + 0x319f + ], + [ + 0xe000, + 0xf8ff + ], + [ + 0x31c0, + 0x31ef, + 0xf900, + 0xfaff, + 0x2f800, + 0x2fa1f + ], + [ + 0xfb00, + 0xfb4f + ], + [ + 0xfb50, + 0xfdff + ], + [ + 0xfe20, + 0xfe2f + ], + [ + 0xfe10, + 0xfe1f + ], + [ + 0xfe50, + 0xfe6f + ], + [ + 0xfe70, + 0xfeff + ], + [ + 0xff00, + 0xffef + ], + [ + 0xfff0, + 0xffff + ], + [ + 0x0f00, + 0x0fff + ], + [ + 0x0700, + 0x074f + ], + [ + 0x0780, + 0x07bf + ], + [ + 0x0d80, + 0x0dff + ], + [ + 0x1000, + 0x109f + ], + [ + 0x1200, + 0x137f, + 0x1380, + 0x139f, + 0x2d80, + 0x2ddf + ], + [ + 0x13a0, + 0x13ff + ], + [ + 0x1400, + 0x167f + ], + [ + 0x1680, + 0x169f + ], + [ + 0x16a0, + 0x16ff + ], + [ + 0x1780, + 0x17ff + ], + [ + 0x1800, + 0x18af + ], + [ + 0x2800, + 0x28ff + ], + [ + 0xa000, + 0xa48f + ], + [ + 0x1700, + 0x171f, + 0x1720, + 0x173f, + 0x1740, + 0x175f, + 0x1760, + 0x177f + ], + [ + 0x10300, + 0x1032f + ], + [ + 0x10330, + 0x1034f + ], + [ + 0x10400, + 0x1044f + ], + [ + 0x1d000, + 0x1d0ff, + 0x1d100, + 0x1d1ff, + 0x1d200, + 0x1d24f + ], + [ + 0x1d400, + 0x1d7ff + ], + [ + 0xff000, + 0xffffd + ], + [ + 0xfe00, + 0xfe0f, + 0xe0100, + 0xe01ef + ], + [ + 0xe0000, + 0xe007f + ], + [ + 0x1900, + 0x194f + ], + [ + 0x1950, + 0x197f + ], + [ + 0x1980, + 0x19df + ], + [ + 0x1a00, + 0x1a1f + ], + [ + 0x2c00, + 0x2c5f + ], + [ + 0x2d30, + 0x2d7f + ], + [ + 0x4dc0, + 0x4dff + ], + [ + 0xa800, + 0xa82f + ], + [ + 0x10000, + 0x1007f, + 0x10080, + 0x100ff, + 0x10100, + 0x1013f + ], + [ + 0x10140, + 0x1018f + ], + [ + 0x10380, + 0x1039f + ], + [ + 0x103a0, + 0x103df + ], + [ + 0x10450, + 0x1047f + ], + [ + 0x10480, + 0x104af + ], + [ + 0x10800, + 0x1083f + ], + [ + 0x10a00, + 0x10a5f + ], + [ + 0x1d300, + 0x1d35f + ], + [ + 0x12000, + 0x123ff, + 0x12400, + 0x1247f + ], + [ + 0x1d360, + 0x1d37f + ], + [ + 0x1b80, + 0x1bbf + ], + [ + 0x1c00, + 0x1c4f + ], + [ + 0x1c50, + 0x1c7f + ], + [ + 0xa880, + 0xa8df + ], + [ + 0xa900, + 0xa92f + ], + [ + 0xa930, + 0xa95f + ], + [ + 0xaa00, + 0xaa5f + ], + [ + 0x10190, + 0x101cf + ], + [ + 0x101d0, + 0x101ff + ], + [ + 0x102a0, + 0x102df, + 0x10280, + 0x1029f, + 0x10920, + 0x1093f + ], + [ + 0x1f030, + 0x1f09f, + 0x1f000, + 0x1f02f + ] +]; +function getUnicodeRangeFor(value, lastPosition = -1) { + if (lastPosition !== -1) { + const range = UnicodeRanges[lastPosition]; + for (let i = 0, ii = range.length; i < ii; i += 2) { + if (value >= range[i] && value <= range[i + 1]) { + return lastPosition; + } + } + } + for (let i = 0, ii = UnicodeRanges.length; i < ii; i++) { + const range = UnicodeRanges[i]; + for (let j = 0, jj = range.length; j < jj; j += 2) { + if (value >= range[j] && value <= range[j + 1]) { + return i; + } + } + } + return -1; +} +const SpecialCharRegExp = new RegExp("^(\\s)|(\\p{Mn})|(\\p{Cf})$", "u"); +const CategoryCache = new Map(); +function getCharUnicodeCategory(char) { + const cachedCategory = CategoryCache.get(char); + if (cachedCategory) { + return cachedCategory; + } + const groups = char.match(SpecialCharRegExp); + const category = { + isWhitespace: !!groups?.[1], + isZeroWidthDiacritic: !!groups?.[2], + isInvisibleFormatMark: !!groups?.[3] + }; + CategoryCache.set(char, category); + return category; +} +function clearUnicodeCaches() { + CategoryCache.clear(); +} + + +/***/ }), +/* 41 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getSerifFonts = exports.getNonStdFontMap = exports.getGlyphMapForStandardFonts = exports.getFontNameToFileMap = void 0; +exports.getStandardFontName = getStandardFontName; +exports.getSymbolsFonts = exports.getSupplementalGlyphMapForCalibri = exports.getSupplementalGlyphMapForArialBlack = exports.getStdFontMap = void 0; +exports.isKnownFontName = isKnownFontName; +var _core_utils = __w_pdfjs_require__(3); +var _fonts_utils = __w_pdfjs_require__(38); +const getStdFontMap = (0, _core_utils.getLookupTableFactory)(function (t) { + t["Times-Roman"] = "Times-Roman"; + t.Helvetica = "Helvetica"; + t.Courier = "Courier"; + t.Symbol = "Symbol"; + t["Times-Bold"] = "Times-Bold"; + t["Helvetica-Bold"] = "Helvetica-Bold"; + t["Courier-Bold"] = "Courier-Bold"; + t.ZapfDingbats = "ZapfDingbats"; + t["Times-Italic"] = "Times-Italic"; + t["Helvetica-Oblique"] = "Helvetica-Oblique"; + t["Courier-Oblique"] = "Courier-Oblique"; + t["Times-BoldItalic"] = "Times-BoldItalic"; + t["Helvetica-BoldOblique"] = "Helvetica-BoldOblique"; + t["Courier-BoldOblique"] = "Courier-BoldOblique"; + t.ArialNarrow = "Helvetica"; + t["ArialNarrow-Bold"] = "Helvetica-Bold"; + t["ArialNarrow-BoldItalic"] = "Helvetica-BoldOblique"; + t["ArialNarrow-Italic"] = "Helvetica-Oblique"; + t.ArialBlack = "Helvetica"; + t["ArialBlack-Bold"] = "Helvetica-Bold"; + t["ArialBlack-BoldItalic"] = "Helvetica-BoldOblique"; + t["ArialBlack-Italic"] = "Helvetica-Oblique"; + t["Arial-Black"] = "Helvetica"; + t["Arial-Black-Bold"] = "Helvetica-Bold"; + t["Arial-Black-BoldItalic"] = "Helvetica-BoldOblique"; + t["Arial-Black-Italic"] = "Helvetica-Oblique"; + t.Arial = "Helvetica"; + t["Arial-Bold"] = "Helvetica-Bold"; + t["Arial-BoldItalic"] = "Helvetica-BoldOblique"; + t["Arial-Italic"] = "Helvetica-Oblique"; + t.ArialMT = "Helvetica"; + t["Arial-BoldItalicMT"] = "Helvetica-BoldOblique"; + t["Arial-BoldMT"] = "Helvetica-Bold"; + t["Arial-ItalicMT"] = "Helvetica-Oblique"; + t["Arial-BoldItalicMT-BoldItalic"] = "Helvetica-BoldOblique"; + t["Arial-BoldMT-Bold"] = "Helvetica-Bold"; + t["Arial-ItalicMT-Italic"] = "Helvetica-Oblique"; + t.ArialUnicodeMS = "Helvetica"; + t["ArialUnicodeMS-Bold"] = "Helvetica-Bold"; + t["ArialUnicodeMS-BoldItalic"] = "Helvetica-BoldOblique"; + t["ArialUnicodeMS-Italic"] = "Helvetica-Oblique"; + t["Courier-BoldItalic"] = "Courier-BoldOblique"; + t["Courier-Italic"] = "Courier-Oblique"; + t.CourierNew = "Courier"; + t["CourierNew-Bold"] = "Courier-Bold"; + t["CourierNew-BoldItalic"] = "Courier-BoldOblique"; + t["CourierNew-Italic"] = "Courier-Oblique"; + t["CourierNewPS-BoldItalicMT"] = "Courier-BoldOblique"; + t["CourierNewPS-BoldMT"] = "Courier-Bold"; + t["CourierNewPS-ItalicMT"] = "Courier-Oblique"; + t.CourierNewPSMT = "Courier"; + t["Helvetica-BoldItalic"] = "Helvetica-BoldOblique"; + t["Helvetica-Italic"] = "Helvetica-Oblique"; + t["Symbol-Bold"] = "Symbol"; + t["Symbol-BoldItalic"] = "Symbol"; + t["Symbol-Italic"] = "Symbol"; + t.TimesNewRoman = "Times-Roman"; + t["TimesNewRoman-Bold"] = "Times-Bold"; + t["TimesNewRoman-BoldItalic"] = "Times-BoldItalic"; + t["TimesNewRoman-Italic"] = "Times-Italic"; + t.TimesNewRomanPS = "Times-Roman"; + t["TimesNewRomanPS-Bold"] = "Times-Bold"; + t["TimesNewRomanPS-BoldItalic"] = "Times-BoldItalic"; + t["TimesNewRomanPS-BoldItalicMT"] = "Times-BoldItalic"; + t["TimesNewRomanPS-BoldMT"] = "Times-Bold"; + t["TimesNewRomanPS-Italic"] = "Times-Italic"; + t["TimesNewRomanPS-ItalicMT"] = "Times-Italic"; + t.TimesNewRomanPSMT = "Times-Roman"; + t["TimesNewRomanPSMT-Bold"] = "Times-Bold"; + t["TimesNewRomanPSMT-BoldItalic"] = "Times-BoldItalic"; + t["TimesNewRomanPSMT-Italic"] = "Times-Italic"; +}); +exports.getStdFontMap = getStdFontMap; +const getFontNameToFileMap = (0, _core_utils.getLookupTableFactory)(function (t) { + t.Courier = "FoxitFixed.pfb"; + t["Courier-Bold"] = "FoxitFixedBold.pfb"; + t["Courier-BoldOblique"] = "FoxitFixedBoldItalic.pfb"; + t["Courier-Oblique"] = "FoxitFixedItalic.pfb"; + t.Helvetica = "LiberationSans-Regular.ttf"; + t["Helvetica-Bold"] = "LiberationSans-Bold.ttf"; + t["Helvetica-BoldOblique"] = "LiberationSans-BoldItalic.ttf"; + t["Helvetica-Oblique"] = "LiberationSans-Italic.ttf"; + t["Times-Roman"] = "FoxitSerif.pfb"; + t["Times-Bold"] = "FoxitSerifBold.pfb"; + t["Times-BoldItalic"] = "FoxitSerifBoldItalic.pfb"; + t["Times-Italic"] = "FoxitSerifItalic.pfb"; + t.Symbol = "FoxitSymbol.pfb"; + t.ZapfDingbats = "FoxitDingbats.pfb"; + t["LiberationSans-Regular"] = "LiberationSans-Regular.ttf"; + t["LiberationSans-Bold"] = "LiberationSans-Bold.ttf"; + t["LiberationSans-Italic"] = "LiberationSans-Italic.ttf"; + t["LiberationSans-BoldItalic"] = "LiberationSans-BoldItalic.ttf"; +}); +exports.getFontNameToFileMap = getFontNameToFileMap; +const getNonStdFontMap = (0, _core_utils.getLookupTableFactory)(function (t) { + t.Calibri = "Helvetica"; + t["Calibri-Bold"] = "Helvetica-Bold"; + t["Calibri-BoldItalic"] = "Helvetica-BoldOblique"; + t["Calibri-Italic"] = "Helvetica-Oblique"; + t.CenturyGothic = "Helvetica"; + t["CenturyGothic-Bold"] = "Helvetica-Bold"; + t["CenturyGothic-BoldItalic"] = "Helvetica-BoldOblique"; + t["CenturyGothic-Italic"] = "Helvetica-Oblique"; + t.ComicSansMS = "Comic Sans MS"; + t["ComicSansMS-Bold"] = "Comic Sans MS-Bold"; + t["ComicSansMS-BoldItalic"] = "Comic Sans MS-BoldItalic"; + t["ComicSansMS-Italic"] = "Comic Sans MS-Italic"; + t.Impact = "Helvetica"; + t["ItcSymbol-Bold"] = "Helvetica-Bold"; + t["ItcSymbol-BoldItalic"] = "Helvetica-BoldOblique"; + t["ItcSymbol-Book"] = "Helvetica"; + t["ItcSymbol-BookItalic"] = "Helvetica-Oblique"; + t["ItcSymbol-Medium"] = "Helvetica"; + t["ItcSymbol-MediumItalic"] = "Helvetica-Oblique"; + t.LucidaConsole = "Courier"; + t["LucidaConsole-Bold"] = "Courier-Bold"; + t["LucidaConsole-BoldItalic"] = "Courier-BoldOblique"; + t["LucidaConsole-Italic"] = "Courier-Oblique"; + t["LucidaSans-Demi"] = "Helvetica-Bold"; + t["MS-Gothic"] = "MS Gothic"; + t["MS-Gothic-Bold"] = "MS Gothic-Bold"; + t["MS-Gothic-BoldItalic"] = "MS Gothic-BoldItalic"; + t["MS-Gothic-Italic"] = "MS Gothic-Italic"; + t["MS-Mincho"] = "MS Mincho"; + t["MS-Mincho-Bold"] = "MS Mincho-Bold"; + t["MS-Mincho-BoldItalic"] = "MS Mincho-BoldItalic"; + t["MS-Mincho-Italic"] = "MS Mincho-Italic"; + t["MS-PGothic"] = "MS PGothic"; + t["MS-PGothic-Bold"] = "MS PGothic-Bold"; + t["MS-PGothic-BoldItalic"] = "MS PGothic-BoldItalic"; + t["MS-PGothic-Italic"] = "MS PGothic-Italic"; + t["MS-PMincho"] = "MS PMincho"; + t["MS-PMincho-Bold"] = "MS PMincho-Bold"; + t["MS-PMincho-BoldItalic"] = "MS PMincho-BoldItalic"; + t["MS-PMincho-Italic"] = "MS PMincho-Italic"; + t.NuptialScript = "Times-Italic"; + t.SegoeUISymbol = "Helvetica"; +}); +exports.getNonStdFontMap = getNonStdFontMap; +const getSerifFonts = (0, _core_utils.getLookupTableFactory)(function (t) { + t["Adobe Jenson"] = true; + t["Adobe Text"] = true; + t.Albertus = true; + t.Aldus = true; + t.Alexandria = true; + t.Algerian = true; + t["American Typewriter"] = true; + t.Antiqua = true; + t.Apex = true; + t.Arno = true; + t.Aster = true; + t.Aurora = true; + t.Baskerville = true; + t.Bell = true; + t.Bembo = true; + t["Bembo Schoolbook"] = true; + t.Benguiat = true; + t["Berkeley Old Style"] = true; + t["Bernhard Modern"] = true; + t["Berthold City"] = true; + t.Bodoni = true; + t["Bauer Bodoni"] = true; + t["Book Antiqua"] = true; + t.Bookman = true; + t["Bordeaux Roman"] = true; + t["Californian FB"] = true; + t.Calisto = true; + t.Calvert = true; + t.Capitals = true; + t.Cambria = true; + t.Cartier = true; + t.Caslon = true; + t.Catull = true; + t.Centaur = true; + t["Century Old Style"] = true; + t["Century Schoolbook"] = true; + t.Chaparral = true; + t["Charis SIL"] = true; + t.Cheltenham = true; + t["Cholla Slab"] = true; + t.Clarendon = true; + t.Clearface = true; + t.Cochin = true; + t.Colonna = true; + t["Computer Modern"] = true; + t["Concrete Roman"] = true; + t.Constantia = true; + t["Cooper Black"] = true; + t.Corona = true; + t.Ecotype = true; + t.Egyptienne = true; + t.Elephant = true; + t.Excelsior = true; + t.Fairfield = true; + t["FF Scala"] = true; + t.Folkard = true; + t.Footlight = true; + t.FreeSerif = true; + t["Friz Quadrata"] = true; + t.Garamond = true; + t.Gentium = true; + t.Georgia = true; + t.Gloucester = true; + t["Goudy Old Style"] = true; + t["Goudy Schoolbook"] = true; + t["Goudy Pro Font"] = true; + t.Granjon = true; + t["Guardian Egyptian"] = true; + t.Heather = true; + t.Hercules = true; + t["High Tower Text"] = true; + t.Hiroshige = true; + t["Hoefler Text"] = true; + t["Humana Serif"] = true; + t.Imprint = true; + t["Ionic No. 5"] = true; + t.Janson = true; + t.Joanna = true; + t.Korinna = true; + t.Lexicon = true; + t.LiberationSerif = true; + t["Liberation Serif"] = true; + t["Linux Libertine"] = true; + t.Literaturnaya = true; + t.Lucida = true; + t["Lucida Bright"] = true; + t.Melior = true; + t.Memphis = true; + t.Miller = true; + t.Minion = true; + t.Modern = true; + t["Mona Lisa"] = true; + t["Mrs Eaves"] = true; + t["MS Serif"] = true; + t["Museo Slab"] = true; + t["New York"] = true; + t["Nimbus Roman"] = true; + t["NPS Rawlinson Roadway"] = true; + t.NuptialScript = true; + t.Palatino = true; + t.Perpetua = true; + t.Plantin = true; + t["Plantin Schoolbook"] = true; + t.Playbill = true; + t["Poor Richard"] = true; + t["Rawlinson Roadway"] = true; + t.Renault = true; + t.Requiem = true; + t.Rockwell = true; + t.Roman = true; + t["Rotis Serif"] = true; + t.Sabon = true; + t.Scala = true; + t.Seagull = true; + t.Sistina = true; + t.Souvenir = true; + t.STIX = true; + t["Stone Informal"] = true; + t["Stone Serif"] = true; + t.Sylfaen = true; + t.Times = true; + t.Trajan = true; + t["Trinité"] = true; + t["Trump Mediaeval"] = true; + t.Utopia = true; + t["Vale Type"] = true; + t["Bitstream Vera"] = true; + t["Vera Serif"] = true; + t.Versailles = true; + t.Wanted = true; + t.Weiss = true; + t["Wide Latin"] = true; + t.Windsor = true; + t.XITS = true; +}); +exports.getSerifFonts = getSerifFonts; +const getSymbolsFonts = (0, _core_utils.getLookupTableFactory)(function (t) { + t.Dingbats = true; + t.Symbol = true; + t.ZapfDingbats = true; + t.Wingdings = true; + t["Wingdings-Bold"] = true; + t["Wingdings-Regular"] = true; +}); +exports.getSymbolsFonts = getSymbolsFonts; +const getGlyphMapForStandardFonts = (0, _core_utils.getLookupTableFactory)(function (t) { + t[2] = 10; + t[3] = 32; + t[4] = 33; + t[5] = 34; + t[6] = 35; + t[7] = 36; + t[8] = 37; + t[9] = 38; + t[10] = 39; + t[11] = 40; + t[12] = 41; + t[13] = 42; + t[14] = 43; + t[15] = 44; + t[16] = 45; + t[17] = 46; + t[18] = 47; + t[19] = 48; + t[20] = 49; + t[21] = 50; + t[22] = 51; + t[23] = 52; + t[24] = 53; + t[25] = 54; + t[26] = 55; + t[27] = 56; + t[28] = 57; + t[29] = 58; + t[30] = 894; + t[31] = 60; + t[32] = 61; + t[33] = 62; + t[34] = 63; + t[35] = 64; + t[36] = 65; + t[37] = 66; + t[38] = 67; + t[39] = 68; + t[40] = 69; + t[41] = 70; + t[42] = 71; + t[43] = 72; + t[44] = 73; + t[45] = 74; + t[46] = 75; + t[47] = 76; + t[48] = 77; + t[49] = 78; + t[50] = 79; + t[51] = 80; + t[52] = 81; + t[53] = 82; + t[54] = 83; + t[55] = 84; + t[56] = 85; + t[57] = 86; + t[58] = 87; + t[59] = 88; + t[60] = 89; + t[61] = 90; + t[62] = 91; + t[63] = 92; + t[64] = 93; + t[65] = 94; + t[66] = 95; + t[67] = 96; + t[68] = 97; + t[69] = 98; + t[70] = 99; + t[71] = 100; + t[72] = 101; + t[73] = 102; + t[74] = 103; + t[75] = 104; + t[76] = 105; + t[77] = 106; + t[78] = 107; + t[79] = 108; + t[80] = 109; + t[81] = 110; + t[82] = 111; + t[83] = 112; + t[84] = 113; + t[85] = 114; + t[86] = 115; + t[87] = 116; + t[88] = 117; + t[89] = 118; + t[90] = 119; + t[91] = 120; + t[92] = 121; + t[93] = 122; + t[94] = 123; + t[95] = 124; + t[96] = 125; + t[97] = 126; + t[98] = 196; + t[99] = 197; + t[100] = 199; + t[101] = 201; + t[102] = 209; + t[103] = 214; + t[104] = 220; + t[105] = 225; + t[106] = 224; + t[107] = 226; + t[108] = 228; + t[109] = 227; + t[110] = 229; + t[111] = 231; + t[112] = 233; + t[113] = 232; + t[114] = 234; + t[115] = 235; + t[116] = 237; + t[117] = 236; + t[118] = 238; + t[119] = 239; + t[120] = 241; + t[121] = 243; + t[122] = 242; + t[123] = 244; + t[124] = 246; + t[125] = 245; + t[126] = 250; + t[127] = 249; + t[128] = 251; + t[129] = 252; + t[130] = 8224; + t[131] = 176; + t[132] = 162; + t[133] = 163; + t[134] = 167; + t[135] = 8226; + t[136] = 182; + t[137] = 223; + t[138] = 174; + t[139] = 169; + t[140] = 8482; + t[141] = 180; + t[142] = 168; + t[143] = 8800; + t[144] = 198; + t[145] = 216; + t[146] = 8734; + t[147] = 177; + t[148] = 8804; + t[149] = 8805; + t[150] = 165; + t[151] = 181; + t[152] = 8706; + t[153] = 8721; + t[154] = 8719; + t[156] = 8747; + t[157] = 170; + t[158] = 186; + t[159] = 8486; + t[160] = 230; + t[161] = 248; + t[162] = 191; + t[163] = 161; + t[164] = 172; + t[165] = 8730; + t[166] = 402; + t[167] = 8776; + t[168] = 8710; + t[169] = 171; + t[170] = 187; + t[171] = 8230; + t[179] = 8220; + t[180] = 8221; + t[181] = 8216; + t[182] = 8217; + t[200] = 193; + t[203] = 205; + t[207] = 211; + t[210] = 218; + t[223] = 711; + t[224] = 321; + t[225] = 322; + t[226] = 352; + t[227] = 353; + t[228] = 381; + t[229] = 382; + t[233] = 221; + t[234] = 253; + t[252] = 263; + t[253] = 268; + t[254] = 269; + t[258] = 258; + t[260] = 260; + t[261] = 261; + t[265] = 280; + t[266] = 281; + t[267] = 282; + t[268] = 283; + t[269] = 313; + t[275] = 323; + t[276] = 324; + t[278] = 328; + t[283] = 344; + t[284] = 345; + t[285] = 346; + t[286] = 347; + t[292] = 367; + t[295] = 377; + t[296] = 378; + t[298] = 380; + t[305] = 963; + t[306] = 964; + t[307] = 966; + t[308] = 8215; + t[309] = 8252; + t[310] = 8319; + t[311] = 8359; + t[312] = 8592; + t[313] = 8593; + t[337] = 9552; + t[493] = 1039; + t[494] = 1040; + t[672] = 1488; + t[673] = 1489; + t[674] = 1490; + t[675] = 1491; + t[676] = 1492; + t[677] = 1493; + t[678] = 1494; + t[679] = 1495; + t[680] = 1496; + t[681] = 1497; + t[682] = 1498; + t[683] = 1499; + t[684] = 1500; + t[685] = 1501; + t[686] = 1502; + t[687] = 1503; + t[688] = 1504; + t[689] = 1505; + t[690] = 1506; + t[691] = 1507; + t[692] = 1508; + t[693] = 1509; + t[694] = 1510; + t[695] = 1511; + t[696] = 1512; + t[697] = 1513; + t[698] = 1514; + t[705] = 1524; + t[706] = 8362; + t[710] = 64288; + t[711] = 64298; + t[759] = 1617; + t[761] = 1776; + t[763] = 1778; + t[775] = 1652; + t[777] = 1764; + t[778] = 1780; + t[779] = 1781; + t[780] = 1782; + t[782] = 771; + t[783] = 64726; + t[786] = 8363; + t[788] = 8532; + t[790] = 768; + t[791] = 769; + t[792] = 768; + t[795] = 803; + t[797] = 64336; + t[798] = 64337; + t[799] = 64342; + t[800] = 64343; + t[801] = 64344; + t[802] = 64345; + t[803] = 64362; + t[804] = 64363; + t[805] = 64364; + t[2424] = 7821; + t[2425] = 7822; + t[2426] = 7823; + t[2427] = 7824; + t[2428] = 7825; + t[2429] = 7826; + t[2430] = 7827; + t[2433] = 7682; + t[2678] = 8045; + t[2679] = 8046; + t[2830] = 1552; + t[2838] = 686; + t[2840] = 751; + t[2842] = 753; + t[2843] = 754; + t[2844] = 755; + t[2846] = 757; + t[2856] = 767; + t[2857] = 848; + t[2858] = 849; + t[2862] = 853; + t[2863] = 854; + t[2864] = 855; + t[2865] = 861; + t[2866] = 862; + t[2906] = 7460; + t[2908] = 7462; + t[2909] = 7463; + t[2910] = 7464; + t[2912] = 7466; + t[2913] = 7467; + t[2914] = 7468; + t[2916] = 7470; + t[2917] = 7471; + t[2918] = 7472; + t[2920] = 7474; + t[2921] = 7475; + t[2922] = 7476; + t[2924] = 7478; + t[2925] = 7479; + t[2926] = 7480; + t[2928] = 7482; + t[2929] = 7483; + t[2930] = 7484; + t[2932] = 7486; + t[2933] = 7487; + t[2934] = 7488; + t[2936] = 7490; + t[2937] = 7491; + t[2938] = 7492; + t[2940] = 7494; + t[2941] = 7495; + t[2942] = 7496; + t[2944] = 7498; + t[2946] = 7500; + t[2948] = 7502; + t[2950] = 7504; + t[2951] = 7505; + t[2952] = 7506; + t[2954] = 7508; + t[2955] = 7509; + t[2956] = 7510; + t[2958] = 7512; + t[2959] = 7513; + t[2960] = 7514; + t[2962] = 7516; + t[2963] = 7517; + t[2964] = 7518; + t[2966] = 7520; + t[2967] = 7521; + t[2968] = 7522; + t[2970] = 7524; + t[2971] = 7525; + t[2972] = 7526; + t[2974] = 7528; + t[2975] = 7529; + t[2976] = 7530; + t[2978] = 1537; + t[2979] = 1538; + t[2980] = 1539; + t[2982] = 1549; + t[2983] = 1551; + t[2984] = 1552; + t[2986] = 1554; + t[2987] = 1555; + t[2988] = 1556; + t[2990] = 1623; + t[2991] = 1624; + t[2995] = 1775; + t[2999] = 1791; + t[3002] = 64290; + t[3003] = 64291; + t[3004] = 64292; + t[3006] = 64294; + t[3007] = 64295; + t[3008] = 64296; + t[3011] = 1900; + t[3014] = 8223; + t[3015] = 8244; + t[3017] = 7532; + t[3018] = 7533; + t[3019] = 7534; + t[3075] = 7590; + t[3076] = 7591; + t[3079] = 7594; + t[3080] = 7595; + t[3083] = 7598; + t[3084] = 7599; + t[3087] = 7602; + t[3088] = 7603; + t[3091] = 7606; + t[3092] = 7607; + t[3095] = 7610; + t[3096] = 7611; + t[3099] = 7614; + t[3100] = 7615; + t[3103] = 7618; + t[3104] = 7619; + t[3107] = 8337; + t[3108] = 8338; + t[3116] = 1884; + t[3119] = 1885; + t[3120] = 1885; + t[3123] = 1886; + t[3124] = 1886; + t[3127] = 1887; + t[3128] = 1887; + t[3131] = 1888; + t[3132] = 1888; + t[3135] = 1889; + t[3136] = 1889; + t[3139] = 1890; + t[3140] = 1890; + t[3143] = 1891; + t[3144] = 1891; + t[3147] = 1892; + t[3148] = 1892; + t[3153] = 580; + t[3154] = 581; + t[3157] = 584; + t[3158] = 585; + t[3161] = 588; + t[3162] = 589; + t[3165] = 891; + t[3166] = 892; + t[3169] = 1274; + t[3170] = 1275; + t[3173] = 1278; + t[3174] = 1279; + t[3181] = 7622; + t[3182] = 7623; + t[3282] = 11799; + t[3316] = 578; + t[3379] = 42785; + t[3393] = 1159; + t[3416] = 8377; +}); +exports.getGlyphMapForStandardFonts = getGlyphMapForStandardFonts; +const getSupplementalGlyphMapForArialBlack = (0, _core_utils.getLookupTableFactory)(function (t) { + t[227] = 322; + t[264] = 261; + t[291] = 346; +}); +exports.getSupplementalGlyphMapForArialBlack = getSupplementalGlyphMapForArialBlack; +const getSupplementalGlyphMapForCalibri = (0, _core_utils.getLookupTableFactory)(function (t) { + t[1] = 32; + t[4] = 65; + t[5] = 192; + t[6] = 193; + t[9] = 196; + t[17] = 66; + t[18] = 67; + t[21] = 268; + t[24] = 68; + t[28] = 69; + t[29] = 200; + t[30] = 201; + t[32] = 282; + t[38] = 70; + t[39] = 71; + t[44] = 72; + t[47] = 73; + t[48] = 204; + t[49] = 205; + t[58] = 74; + t[60] = 75; + t[62] = 76; + t[68] = 77; + t[69] = 78; + t[75] = 79; + t[76] = 210; + t[80] = 214; + t[87] = 80; + t[89] = 81; + t[90] = 82; + t[92] = 344; + t[94] = 83; + t[97] = 352; + t[100] = 84; + t[104] = 85; + t[109] = 220; + t[115] = 86; + t[116] = 87; + t[121] = 88; + t[122] = 89; + t[124] = 221; + t[127] = 90; + t[129] = 381; + t[258] = 97; + t[259] = 224; + t[260] = 225; + t[263] = 228; + t[268] = 261; + t[271] = 98; + t[272] = 99; + t[273] = 263; + t[275] = 269; + t[282] = 100; + t[286] = 101; + t[287] = 232; + t[288] = 233; + t[290] = 283; + t[295] = 281; + t[296] = 102; + t[336] = 103; + t[346] = 104; + t[349] = 105; + t[350] = 236; + t[351] = 237; + t[361] = 106; + t[364] = 107; + t[367] = 108; + t[371] = 322; + t[373] = 109; + t[374] = 110; + t[381] = 111; + t[382] = 242; + t[383] = 243; + t[386] = 246; + t[393] = 112; + t[395] = 113; + t[396] = 114; + t[398] = 345; + t[400] = 115; + t[401] = 347; + t[403] = 353; + t[410] = 116; + t[437] = 117; + t[442] = 252; + t[448] = 118; + t[449] = 119; + t[454] = 120; + t[455] = 121; + t[457] = 253; + t[460] = 122; + t[462] = 382; + t[463] = 380; + t[853] = 44; + t[855] = 58; + t[856] = 46; + t[876] = 47; + t[878] = 45; + t[882] = 45; + t[894] = 40; + t[895] = 41; + t[896] = 91; + t[897] = 93; + t[923] = 64; + t[1004] = 48; + t[1005] = 49; + t[1006] = 50; + t[1007] = 51; + t[1008] = 52; + t[1009] = 53; + t[1010] = 54; + t[1011] = 55; + t[1012] = 56; + t[1013] = 57; + t[1081] = 37; + t[1085] = 43; + t[1086] = 45; +}); +exports.getSupplementalGlyphMapForCalibri = getSupplementalGlyphMapForCalibri; +function getStandardFontName(name) { + const fontName = (0, _fonts_utils.normalizeFontName)(name); + const stdFontMap = getStdFontMap(); + return stdFontMap[fontName]; +} +function isKnownFontName(name) { + const fontName = (0, _fonts_utils.normalizeFontName)(name); + return !!(getStdFontMap()[fontName] || getNonStdFontMap()[fontName] || getSerifFonts()[fontName] || getSymbolsFonts()[fontName]); +} + +/***/ }), +/* 42 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ToUnicodeMap = exports.IdentityToUnicodeMap = void 0; +var _util = __w_pdfjs_require__(2); +class ToUnicodeMap { + constructor(cmap = []) { + this._map = cmap; + } + get length() { + return this._map.length; + } + forEach(callback) { + for (const charCode in this._map) { + callback(charCode, this._map[charCode].charCodeAt(0)); + } + } + has(i) { + return this._map[i] !== undefined; + } + get(i) { + return this._map[i]; + } + charCodeOf(value) { + const map = this._map; + if (map.length <= 0x10000) { + return map.indexOf(value); + } + for (const charCode in map) { + if (map[charCode] === value) { + return charCode | 0; + } + } + return -1; + } + amend(map) { + for (const charCode in map) { + this._map[charCode] = map[charCode]; + } + } +} +exports.ToUnicodeMap = ToUnicodeMap; +class IdentityToUnicodeMap { + constructor(firstChar, lastChar) { + this.firstChar = firstChar; + this.lastChar = lastChar; + } + get length() { + return this.lastChar + 1 - this.firstChar; + } + forEach(callback) { + for (let i = this.firstChar, ii = this.lastChar; i <= ii; i++) { + callback(i, i); + } + } + has(i) { + return this.firstChar <= i && i <= this.lastChar; + } + get(i) { + if (this.firstChar <= i && i <= this.lastChar) { + return String.fromCharCode(i); + } + return undefined; + } + charCodeOf(v) { + return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar ? v : -1; + } + amend(map) { + (0, _util.unreachable)("Should not call amend()"); + } +} +exports.IdentityToUnicodeMap = IdentityToUnicodeMap; + +/***/ }), +/* 43 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.CFFFont = void 0; +var _cff_parser = __w_pdfjs_require__(35); +var _fonts_utils = __w_pdfjs_require__(38); +var _util = __w_pdfjs_require__(2); +class CFFFont { + constructor(file, properties) { + this.properties = properties; + const parser = new _cff_parser.CFFParser(file, properties, _fonts_utils.SEAC_ANALYSIS_ENABLED); + this.cff = parser.parse(); + this.cff.duplicateFirstGlyph(); + const compiler = new _cff_parser.CFFCompiler(this.cff); + this.seacs = this.cff.seacs; + try { + this.data = compiler.compile(); + } catch { + (0, _util.warn)("Failed to compile font " + properties.loadedName); + this.data = file; + } + this._createBuiltInEncoding(); + } + get numGlyphs() { + return this.cff.charStrings.count; + } + getCharset() { + return this.cff.charset.charset; + } + getGlyphMapping() { + const cff = this.cff; + const properties = this.properties; + const { + cidToGidMap, + cMap + } = properties; + const charsets = cff.charset.charset; + let charCodeToGlyphId; + let glyphId; + if (properties.composite) { + let invCidToGidMap; + if (cidToGidMap?.length > 0) { + invCidToGidMap = Object.create(null); + for (let i = 0, ii = cidToGidMap.length; i < ii; i++) { + const gid = cidToGidMap[i]; + if (gid !== undefined) { + invCidToGidMap[gid] = i; + } + } + } + charCodeToGlyphId = Object.create(null); + let charCode; + if (cff.isCIDFont) { + for (glyphId = 0; glyphId < charsets.length; glyphId++) { + const cid = charsets[glyphId]; + charCode = cMap.charCodeOf(cid); + if (invCidToGidMap?.[charCode] !== undefined) { + charCode = invCidToGidMap[charCode]; + } + charCodeToGlyphId[charCode] = glyphId; + } + } else { + for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) { + charCode = cMap.charCodeOf(glyphId); + charCodeToGlyphId[charCode] = glyphId; + } + } + return charCodeToGlyphId; + } + let encoding = cff.encoding ? cff.encoding.encoding : null; + if (properties.isInternalFont) { + encoding = properties.defaultEncoding; + } + charCodeToGlyphId = (0, _fonts_utils.type1FontGlyphMapping)(properties, encoding, charsets); + return charCodeToGlyphId; + } + hasGlyphId(id) { + return this.cff.hasGlyphId(id); + } + _createBuiltInEncoding() { + const { + charset, + encoding + } = this.cff; + if (!charset || !encoding) { + return; + } + const charsets = charset.charset, + encodings = encoding.encoding; + const map = []; + for (const charCode in encodings) { + const glyphId = encodings[charCode]; + if (glyphId >= 0) { + const glyphName = charsets[glyphId]; + if (glyphName) { + map[charCode] = glyphName; + } + } + } + if (map.length > 0) { + this.properties.builtInEncoding = map; + } + } +} +exports.CFFFont = CFFFont; + +/***/ }), +/* 44 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.FontRendererFactory = void 0; +var _util = __w_pdfjs_require__(2); +var _cff_parser = __w_pdfjs_require__(35); +var _glyphlist = __w_pdfjs_require__(39); +var _encodings = __w_pdfjs_require__(37); +var _stream = __w_pdfjs_require__(8); +function getUint32(data, offset) { + return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0; +} +function getUint16(data, offset) { + return data[offset] << 8 | data[offset + 1]; +} +function getInt16(data, offset) { + return (data[offset] << 24 | data[offset + 1] << 16) >> 16; +} +function getInt8(data, offset) { + return data[offset] << 24 >> 24; +} +function getFloat214(data, offset) { + return getInt16(data, offset) / 16384; +} +function getSubroutineBias(subrs) { + const numSubrs = subrs.length; + let bias = 32768; + if (numSubrs < 1240) { + bias = 107; + } else if (numSubrs < 33900) { + bias = 1131; + } + return bias; +} +function parseCmap(data, start, end) { + const offset = getUint16(data, start + 2) === 1 ? getUint32(data, start + 8) : getUint32(data, start + 16); + const format = getUint16(data, start + offset); + let ranges, p, i; + if (format === 4) { + getUint16(data, start + offset + 2); + const segCount = getUint16(data, start + offset + 6) >> 1; + p = start + offset + 14; + ranges = []; + for (i = 0; i < segCount; i++, p += 2) { + ranges[i] = { + end: getUint16(data, p) + }; + } + p += 2; + for (i = 0; i < segCount; i++, p += 2) { + ranges[i].start = getUint16(data, p); + } + for (i = 0; i < segCount; i++, p += 2) { + ranges[i].idDelta = getUint16(data, p); + } + for (i = 0; i < segCount; i++, p += 2) { + let idOffset = getUint16(data, p); + if (idOffset === 0) { + continue; + } + ranges[i].ids = []; + for (let j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) { + ranges[i].ids[j] = getUint16(data, p + idOffset); + idOffset += 2; + } + } + return ranges; + } else if (format === 12) { + const groups = getUint32(data, start + offset + 12); + p = start + offset + 16; + ranges = []; + for (i = 0; i < groups; i++) { + start = getUint32(data, p); + ranges.push({ + start, + end: getUint32(data, p + 4), + idDelta: getUint32(data, p + 8) - start + }); + p += 12; + } + return ranges; + } + throw new _util.FormatError(`unsupported cmap: ${format}`); +} +function parseCff(data, start, end, seacAnalysisEnabled) { + const properties = {}; + const parser = new _cff_parser.CFFParser(new _stream.Stream(data, start, end - start), properties, seacAnalysisEnabled); + const cff = parser.parse(); + return { + glyphs: cff.charStrings.objects, + subrs: cff.topDict.privateDict?.subrsIndex?.objects, + gsubrs: cff.globalSubrIndex?.objects, + isCFFCIDFont: cff.isCIDFont, + fdSelect: cff.fdSelect, + fdArray: cff.fdArray + }; +} +function parseGlyfTable(glyf, loca, isGlyphLocationsLong) { + let itemSize, itemDecode; + if (isGlyphLocationsLong) { + itemSize = 4; + itemDecode = getUint32; + } else { + itemSize = 2; + itemDecode = (data, offset) => 2 * getUint16(data, offset); + } + const glyphs = []; + let startOffset = itemDecode(loca, 0); + for (let j = itemSize; j < loca.length; j += itemSize) { + const endOffset = itemDecode(loca, j); + glyphs.push(glyf.subarray(startOffset, endOffset)); + startOffset = endOffset; + } + return glyphs; +} +function lookupCmap(ranges, unicode) { + const code = unicode.codePointAt(0); + let gid = 0, + l = 0, + r = ranges.length - 1; + while (l < r) { + const c = l + r + 1 >> 1; + if (code < ranges[c].start) { + r = c - 1; + } else { + l = c; + } + } + if (ranges[l].start <= code && code <= ranges[l].end) { + gid = ranges[l].idDelta + (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code) & 0xffff; + } + return { + charCode: code, + glyphId: gid + }; +} +function compileGlyf(code, cmds, font) { + function moveTo(x, y) { + cmds.push({ + cmd: "moveTo", + args: [x, y] + }); + } + function lineTo(x, y) { + cmds.push({ + cmd: "lineTo", + args: [x, y] + }); + } + function quadraticCurveTo(xa, ya, x, y) { + cmds.push({ + cmd: "quadraticCurveTo", + args: [xa, ya, x, y] + }); + } + let i = 0; + const numberOfContours = getInt16(code, i); + let flags; + let x = 0, + y = 0; + i += 10; + if (numberOfContours < 0) { + do { + flags = getUint16(code, i); + const glyphIndex = getUint16(code, i + 2); + i += 4; + let arg1, arg2; + if (flags & 0x01) { + if (flags & 0x02) { + arg1 = getInt16(code, i); + arg2 = getInt16(code, i + 2); + } else { + arg1 = getUint16(code, i); + arg2 = getUint16(code, i + 2); + } + i += 4; + } else { + if (flags & 0x02) { + arg1 = getInt8(code, i++); + arg2 = getInt8(code, i++); + } else { + arg1 = code[i++]; + arg2 = code[i++]; + } + } + if (flags & 0x02) { + x = arg1; + y = arg2; + } else { + x = 0; + y = 0; + } + let scaleX = 1, + scaleY = 1, + scale01 = 0, + scale10 = 0; + if (flags & 0x08) { + scaleX = scaleY = getFloat214(code, i); + i += 2; + } else if (flags & 0x40) { + scaleX = getFloat214(code, i); + scaleY = getFloat214(code, i + 2); + i += 4; + } else if (flags & 0x80) { + scaleX = getFloat214(code, i); + scale01 = getFloat214(code, i + 2); + scale10 = getFloat214(code, i + 4); + scaleY = getFloat214(code, i + 6); + i += 8; + } + const subglyph = font.glyphs[glyphIndex]; + if (subglyph) { + cmds.push({ + cmd: "save" + }, { + cmd: "transform", + args: [scaleX, scale01, scale10, scaleY, x, y] + }); + if (!(flags & 0x02)) {} + compileGlyf(subglyph, cmds, font); + cmds.push({ + cmd: "restore" + }); + } + } while (flags & 0x20); + } else { + const endPtsOfContours = []; + let j, jj; + for (j = 0; j < numberOfContours; j++) { + endPtsOfContours.push(getUint16(code, i)); + i += 2; + } + const instructionLength = getUint16(code, i); + i += 2 + instructionLength; + const numberOfPoints = endPtsOfContours.at(-1) + 1; + const points = []; + while (points.length < numberOfPoints) { + flags = code[i++]; + let repeat = 1; + if (flags & 0x08) { + repeat += code[i++]; + } + while (repeat-- > 0) { + points.push({ + flags + }); + } + } + for (j = 0; j < numberOfPoints; j++) { + switch (points[j].flags & 0x12) { + case 0x00: + x += getInt16(code, i); + i += 2; + break; + case 0x02: + x -= code[i++]; + break; + case 0x12: + x += code[i++]; + break; + } + points[j].x = x; + } + for (j = 0; j < numberOfPoints; j++) { + switch (points[j].flags & 0x24) { + case 0x00: + y += getInt16(code, i); + i += 2; + break; + case 0x04: + y -= code[i++]; + break; + case 0x24: + y += code[i++]; + break; + } + points[j].y = y; + } + let startPoint = 0; + for (i = 0; i < numberOfContours; i++) { + const endPoint = endPtsOfContours[i]; + const contour = points.slice(startPoint, endPoint + 1); + if (contour[0].flags & 1) { + contour.push(contour[0]); + } else if (contour.at(-1).flags & 1) { + contour.unshift(contour.at(-1)); + } else { + const p = { + flags: 1, + x: (contour[0].x + contour.at(-1).x) / 2, + y: (contour[0].y + contour.at(-1).y) / 2 + }; + contour.unshift(p); + contour.push(p); + } + moveTo(contour[0].x, contour[0].y); + for (j = 1, jj = contour.length; j < jj; j++) { + if (contour[j].flags & 1) { + lineTo(contour[j].x, contour[j].y); + } else if (contour[j + 1].flags & 1) { + quadraticCurveTo(contour[j].x, contour[j].y, contour[j + 1].x, contour[j + 1].y); + j++; + } else { + quadraticCurveTo(contour[j].x, contour[j].y, (contour[j].x + contour[j + 1].x) / 2, (contour[j].y + contour[j + 1].y) / 2); + } + } + startPoint = endPoint + 1; + } + } +} +function compileCharString(charStringCode, cmds, font, glyphId) { + function moveTo(x, y) { + cmds.push({ + cmd: "moveTo", + args: [x, y] + }); + } + function lineTo(x, y) { + cmds.push({ + cmd: "lineTo", + args: [x, y] + }); + } + function bezierCurveTo(x1, y1, x2, y2, x, y) { + cmds.push({ + cmd: "bezierCurveTo", + args: [x1, y1, x2, y2, x, y] + }); + } + const stack = []; + let x = 0, + y = 0; + let stems = 0; + function parse(code) { + let i = 0; + while (i < code.length) { + let stackClean = false; + let v = code[i++]; + let xa, xb, ya, yb, y1, y2, y3, n, subrCode; + switch (v) { + case 1: + stems += stack.length >> 1; + stackClean = true; + break; + case 3: + stems += stack.length >> 1; + stackClean = true; + break; + case 4: + y += stack.pop(); + moveTo(x, y); + stackClean = true; + break; + case 5: + while (stack.length > 0) { + x += stack.shift(); + y += stack.shift(); + lineTo(x, y); + } + break; + case 6: + while (stack.length > 0) { + x += stack.shift(); + lineTo(x, y); + if (stack.length === 0) { + break; + } + y += stack.shift(); + lineTo(x, y); + } + break; + case 7: + while (stack.length > 0) { + y += stack.shift(); + lineTo(x, y); + if (stack.length === 0) { + break; + } + x += stack.shift(); + lineTo(x, y); + } + break; + case 8: + while (stack.length > 0) { + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + } + break; + case 10: + n = stack.pop(); + subrCode = null; + if (font.isCFFCIDFont) { + const fdIndex = font.fdSelect.getFDIndex(glyphId); + if (fdIndex >= 0 && fdIndex < font.fdArray.length) { + const fontDict = font.fdArray[fdIndex]; + let subrs; + if (fontDict.privateDict?.subrsIndex) { + subrs = fontDict.privateDict.subrsIndex.objects; + } + if (subrs) { + n += getSubroutineBias(subrs); + subrCode = subrs[n]; + } + } else { + (0, _util.warn)("Invalid fd index for glyph index."); + } + } else { + subrCode = font.subrs[n + font.subrsBias]; + } + if (subrCode) { + parse(subrCode); + } + break; + case 11: + return; + case 12: + v = code[i++]; + switch (v) { + case 34: + xa = x + stack.shift(); + xb = xa + stack.shift(); + y1 = y + stack.shift(); + x = xb + stack.shift(); + bezierCurveTo(xa, y, xb, y1, x, y1); + xa = x + stack.shift(); + xb = xa + stack.shift(); + x = xb + stack.shift(); + bezierCurveTo(xa, y1, xb, y, x, y); + break; + case 35: + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + stack.pop(); + break; + case 36: + xa = x + stack.shift(); + y1 = y + stack.shift(); + xb = xa + stack.shift(); + y2 = y1 + stack.shift(); + x = xb + stack.shift(); + bezierCurveTo(xa, y1, xb, y2, x, y2); + xa = x + stack.shift(); + xb = xa + stack.shift(); + y3 = y2 + stack.shift(); + x = xb + stack.shift(); + bezierCurveTo(xa, y2, xb, y3, x, y); + break; + case 37: + const x0 = x, + y0 = y; + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb; + y = yb; + if (Math.abs(x - x0) > Math.abs(y - y0)) { + x += stack.shift(); + } else { + y += stack.shift(); + } + bezierCurveTo(xa, ya, xb, yb, x, y); + break; + default: + throw new _util.FormatError(`unknown operator: 12 ${v}`); + } + break; + case 14: + if (stack.length >= 4) { + const achar = stack.pop(); + const bchar = stack.pop(); + y = stack.pop(); + x = stack.pop(); + cmds.push({ + cmd: "save" + }, { + cmd: "translate", + args: [x, y] + }); + let cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[_encodings.StandardEncoding[achar]])); + compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId); + cmds.push({ + cmd: "restore" + }); + cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[_encodings.StandardEncoding[bchar]])); + compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId); + } + return; + case 18: + stems += stack.length >> 1; + stackClean = true; + break; + case 19: + stems += stack.length >> 1; + i += stems + 7 >> 3; + stackClean = true; + break; + case 20: + stems += stack.length >> 1; + i += stems + 7 >> 3; + stackClean = true; + break; + case 21: + y += stack.pop(); + x += stack.pop(); + moveTo(x, y); + stackClean = true; + break; + case 22: + x += stack.pop(); + moveTo(x, y); + stackClean = true; + break; + case 23: + stems += stack.length >> 1; + stackClean = true; + break; + case 24: + while (stack.length > 2) { + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + } + x += stack.shift(); + y += stack.shift(); + lineTo(x, y); + break; + case 25: + while (stack.length > 6) { + x += stack.shift(); + y += stack.shift(); + lineTo(x, y); + } + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + break; + case 26: + if (stack.length % 2) { + x += stack.shift(); + } + while (stack.length > 0) { + xa = x; + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb; + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + } + break; + case 27: + if (stack.length % 2) { + y += stack.shift(); + } + while (stack.length > 0) { + xa = x + stack.shift(); + ya = y; + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb; + bezierCurveTo(xa, ya, xb, yb, x, y); + } + break; + case 28: + stack.push((code[i] << 24 | code[i + 1] << 16) >> 16); + i += 2; + break; + case 29: + n = stack.pop() + font.gsubrsBias; + subrCode = font.gsubrs[n]; + if (subrCode) { + parse(subrCode); + } + break; + case 30: + while (stack.length > 0) { + xa = x; + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + (stack.length === 1 ? stack.shift() : 0); + bezierCurveTo(xa, ya, xb, yb, x, y); + if (stack.length === 0) { + break; + } + xa = x + stack.shift(); + ya = y; + xb = xa + stack.shift(); + yb = ya + stack.shift(); + y = yb + stack.shift(); + x = xb + (stack.length === 1 ? stack.shift() : 0); + bezierCurveTo(xa, ya, xb, yb, x, y); + } + break; + case 31: + while (stack.length > 0) { + xa = x + stack.shift(); + ya = y; + xb = xa + stack.shift(); + yb = ya + stack.shift(); + y = yb + stack.shift(); + x = xb + (stack.length === 1 ? stack.shift() : 0); + bezierCurveTo(xa, ya, xb, yb, x, y); + if (stack.length === 0) { + break; + } + xa = x; + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + (stack.length === 1 ? stack.shift() : 0); + bezierCurveTo(xa, ya, xb, yb, x, y); + } + break; + default: + if (v < 32) { + throw new _util.FormatError(`unknown operator: ${v}`); + } + if (v < 247) { + stack.push(v - 139); + } else if (v < 251) { + stack.push((v - 247) * 256 + code[i++] + 108); + } else if (v < 255) { + stack.push(-(v - 251) * 256 - code[i++] - 108); + } else { + stack.push((code[i] << 24 | code[i + 1] << 16 | code[i + 2] << 8 | code[i + 3]) / 65536); + i += 4; + } + break; + } + if (stackClean) { + stack.length = 0; + } + } + } + parse(charStringCode); +} +const NOOP = []; +class CompiledFont { + constructor(fontMatrix) { + if (this.constructor === CompiledFont) { + (0, _util.unreachable)("Cannot initialize CompiledFont."); + } + this.fontMatrix = fontMatrix; + this.compiledGlyphs = Object.create(null); + this.compiledCharCodeToGlyphId = Object.create(null); + } + getPathJs(unicode) { + const { + charCode, + glyphId + } = lookupCmap(this.cmap, unicode); + let fn = this.compiledGlyphs[glyphId]; + if (!fn) { + try { + fn = this.compileGlyph(this.glyphs[glyphId], glyphId); + this.compiledGlyphs[glyphId] = fn; + } catch (ex) { + this.compiledGlyphs[glyphId] = NOOP; + if (this.compiledCharCodeToGlyphId[charCode] === undefined) { + this.compiledCharCodeToGlyphId[charCode] = glyphId; + } + throw ex; + } + } + if (this.compiledCharCodeToGlyphId[charCode] === undefined) { + this.compiledCharCodeToGlyphId[charCode] = glyphId; + } + return fn; + } + compileGlyph(code, glyphId) { + if (!code || code.length === 0 || code[0] === 14) { + return NOOP; + } + let fontMatrix = this.fontMatrix; + if (this.isCFFCIDFont) { + const fdIndex = this.fdSelect.getFDIndex(glyphId); + if (fdIndex >= 0 && fdIndex < this.fdArray.length) { + const fontDict = this.fdArray[fdIndex]; + fontMatrix = fontDict.getByName("FontMatrix") || _util.FONT_IDENTITY_MATRIX; + } else { + (0, _util.warn)("Invalid fd index for glyph index."); + } + } + const cmds = [{ + cmd: "save" + }, { + cmd: "transform", + args: fontMatrix.slice() + }, { + cmd: "scale", + args: ["size", "-size"] + }]; + this.compileGlyphImpl(code, cmds, glyphId); + cmds.push({ + cmd: "restore" + }); + return cmds; + } + compileGlyphImpl() { + (0, _util.unreachable)("Children classes should implement this."); + } + hasBuiltPath(unicode) { + const { + charCode, + glyphId + } = lookupCmap(this.cmap, unicode); + return this.compiledGlyphs[glyphId] !== undefined && this.compiledCharCodeToGlyphId[charCode] !== undefined; + } +} +class TrueTypeCompiled extends CompiledFont { + constructor(glyphs, cmap, fontMatrix) { + super(fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]); + this.glyphs = glyphs; + this.cmap = cmap; + } + compileGlyphImpl(code, cmds) { + compileGlyf(code, cmds, this); + } +} +class Type2Compiled extends CompiledFont { + constructor(cffInfo, cmap, fontMatrix, glyphNameMap) { + super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]); + this.glyphs = cffInfo.glyphs; + this.gsubrs = cffInfo.gsubrs || []; + this.subrs = cffInfo.subrs || []; + this.cmap = cmap; + this.glyphNameMap = glyphNameMap || (0, _glyphlist.getGlyphsUnicode)(); + this.gsubrsBias = getSubroutineBias(this.gsubrs); + this.subrsBias = getSubroutineBias(this.subrs); + this.isCFFCIDFont = cffInfo.isCFFCIDFont; + this.fdSelect = cffInfo.fdSelect; + this.fdArray = cffInfo.fdArray; + } + compileGlyphImpl(code, cmds, glyphId) { + compileCharString(code, cmds, this, glyphId); + } +} +class FontRendererFactory { + static create(font, seacAnalysisEnabled) { + const data = new Uint8Array(font.data); + let cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm; + const numTables = getUint16(data, 4); + for (let i = 0, p = 12; i < numTables; i++, p += 16) { + const tag = (0, _util.bytesToString)(data.subarray(p, p + 4)); + const offset = getUint32(data, p + 8); + const length = getUint32(data, p + 12); + switch (tag) { + case "cmap": + cmap = parseCmap(data, offset, offset + length); + break; + case "glyf": + glyf = data.subarray(offset, offset + length); + break; + case "loca": + loca = data.subarray(offset, offset + length); + break; + case "head": + unitsPerEm = getUint16(data, offset + 18); + indexToLocFormat = getUint16(data, offset + 50); + break; + case "CFF ": + cff = parseCff(data, offset, offset + length, seacAnalysisEnabled); + break; + } + } + if (glyf) { + const fontMatrix = !unitsPerEm ? font.fontMatrix : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0]; + return new TrueTypeCompiled(parseGlyfTable(glyf, loca, indexToLocFormat), cmap, fontMatrix); + } + return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap); + } +} +exports.FontRendererFactory = FontRendererFactory; + +/***/ }), +/* 45 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getMetrics = exports.getFontBasicMetrics = void 0; +var _core_utils = __w_pdfjs_require__(3); +const getMetrics = (0, _core_utils.getLookupTableFactory)(function (t) { + t.Courier = 600; + t["Courier-Bold"] = 600; + t["Courier-BoldOblique"] = 600; + t["Courier-Oblique"] = 600; + t.Helvetica = (0, _core_utils.getLookupTableFactory)(function (t) { + t.space = 278; + t.exclam = 278; + t.quotedbl = 355; + t.numbersign = 556; + t.dollar = 556; + t.percent = 889; + t.ampersand = 667; + t.quoteright = 222; + t.parenleft = 333; + t.parenright = 333; + t.asterisk = 389; + t.plus = 584; + t.comma = 278; + t.hyphen = 333; + t.period = 278; + t.slash = 278; + t.zero = 556; + t.one = 556; + t.two = 556; + t.three = 556; + t.four = 556; + t.five = 556; + t.six = 556; + t.seven = 556; + t.eight = 556; + t.nine = 556; + t.colon = 278; + t.semicolon = 278; + t.less = 584; + t.equal = 584; + t.greater = 584; + t.question = 556; + t.at = 1015; + t.A = 667; + t.B = 667; + t.C = 722; + t.D = 722; + t.E = 667; + t.F = 611; + t.G = 778; + t.H = 722; + t.I = 278; + t.J = 500; + t.K = 667; + t.L = 556; + t.M = 833; + t.N = 722; + t.O = 778; + t.P = 667; + t.Q = 778; + t.R = 722; + t.S = 667; + t.T = 611; + t.U = 722; + t.V = 667; + t.W = 944; + t.X = 667; + t.Y = 667; + t.Z = 611; + t.bracketleft = 278; + t.backslash = 278; + t.bracketright = 278; + t.asciicircum = 469; + t.underscore = 556; + t.quoteleft = 222; + t.a = 556; + t.b = 556; + t.c = 500; + t.d = 556; + t.e = 556; + t.f = 278; + t.g = 556; + t.h = 556; + t.i = 222; + t.j = 222; + t.k = 500; + t.l = 222; + t.m = 833; + t.n = 556; + t.o = 556; + t.p = 556; + t.q = 556; + t.r = 333; + t.s = 500; + t.t = 278; + t.u = 556; + t.v = 500; + t.w = 722; + t.x = 500; + t.y = 500; + t.z = 500; + t.braceleft = 334; + t.bar = 260; + t.braceright = 334; + t.asciitilde = 584; + t.exclamdown = 333; + t.cent = 556; + t.sterling = 556; + t.fraction = 167; + t.yen = 556; + t.florin = 556; + t.section = 556; + t.currency = 556; + t.quotesingle = 191; + t.quotedblleft = 333; + t.guillemotleft = 556; + t.guilsinglleft = 333; + t.guilsinglright = 333; + t.fi = 500; + t.fl = 500; + t.endash = 556; + t.dagger = 556; + t.daggerdbl = 556; + t.periodcentered = 278; + t.paragraph = 537; + t.bullet = 350; + t.quotesinglbase = 222; + t.quotedblbase = 333; + t.quotedblright = 333; + t.guillemotright = 556; + t.ellipsis = 1000; + t.perthousand = 1000; + t.questiondown = 611; + t.grave = 333; + t.acute = 333; + t.circumflex = 333; + t.tilde = 333; + t.macron = 333; + t.breve = 333; + t.dotaccent = 333; + t.dieresis = 333; + t.ring = 333; + t.cedilla = 333; + t.hungarumlaut = 333; + t.ogonek = 333; + t.caron = 333; + t.emdash = 1000; + t.AE = 1000; + t.ordfeminine = 370; + t.Lslash = 556; + t.Oslash = 778; + t.OE = 1000; + t.ordmasculine = 365; + t.ae = 889; + t.dotlessi = 278; + t.lslash = 222; + t.oslash = 611; + t.oe = 944; + t.germandbls = 611; + t.Idieresis = 278; + t.eacute = 556; + t.abreve = 556; + t.uhungarumlaut = 556; + t.ecaron = 556; + t.Ydieresis = 667; + t.divide = 584; + t.Yacute = 667; + t.Acircumflex = 667; + t.aacute = 556; + t.Ucircumflex = 722; + t.yacute = 500; + t.scommaaccent = 500; + t.ecircumflex = 556; + t.Uring = 722; + t.Udieresis = 722; + t.aogonek = 556; + t.Uacute = 722; + t.uogonek = 556; + t.Edieresis = 667; + t.Dcroat = 722; + t.commaaccent = 250; + t.copyright = 737; + t.Emacron = 667; + t.ccaron = 500; + t.aring = 556; + t.Ncommaaccent = 722; + t.lacute = 222; + t.agrave = 556; + t.Tcommaaccent = 611; + t.Cacute = 722; + t.atilde = 556; + t.Edotaccent = 667; + t.scaron = 500; + t.scedilla = 500; + t.iacute = 278; + t.lozenge = 471; + t.Rcaron = 722; + t.Gcommaaccent = 778; + t.ucircumflex = 556; + t.acircumflex = 556; + t.Amacron = 667; + t.rcaron = 333; + t.ccedilla = 500; + t.Zdotaccent = 611; + t.Thorn = 667; + t.Omacron = 778; + t.Racute = 722; + t.Sacute = 667; + t.dcaron = 643; + t.Umacron = 722; + t.uring = 556; + t.threesuperior = 333; + t.Ograve = 778; + t.Agrave = 667; + t.Abreve = 667; + t.multiply = 584; + t.uacute = 556; + t.Tcaron = 611; + t.partialdiff = 476; + t.ydieresis = 500; + t.Nacute = 722; + t.icircumflex = 278; + t.Ecircumflex = 667; + t.adieresis = 556; + t.edieresis = 556; + t.cacute = 500; + t.nacute = 556; + t.umacron = 556; + t.Ncaron = 722; + t.Iacute = 278; + t.plusminus = 584; + t.brokenbar = 260; + t.registered = 737; + t.Gbreve = 778; + t.Idotaccent = 278; + t.summation = 600; + t.Egrave = 667; + t.racute = 333; + t.omacron = 556; + t.Zacute = 611; + t.Zcaron = 611; + t.greaterequal = 549; + t.Eth = 722; + t.Ccedilla = 722; + t.lcommaaccent = 222; + t.tcaron = 317; + t.eogonek = 556; + t.Uogonek = 722; + t.Aacute = 667; + t.Adieresis = 667; + t.egrave = 556; + t.zacute = 500; + t.iogonek = 222; + t.Oacute = 778; + t.oacute = 556; + t.amacron = 556; + t.sacute = 500; + t.idieresis = 278; + t.Ocircumflex = 778; + t.Ugrave = 722; + t.Delta = 612; + t.thorn = 556; + t.twosuperior = 333; + t.Odieresis = 778; + t.mu = 556; + t.igrave = 278; + t.ohungarumlaut = 556; + t.Eogonek = 667; + t.dcroat = 556; + t.threequarters = 834; + t.Scedilla = 667; + t.lcaron = 299; + t.Kcommaaccent = 667; + t.Lacute = 556; + t.trademark = 1000; + t.edotaccent = 556; + t.Igrave = 278; + t.Imacron = 278; + t.Lcaron = 556; + t.onehalf = 834; + t.lessequal = 549; + t.ocircumflex = 556; + t.ntilde = 556; + t.Uhungarumlaut = 722; + t.Eacute = 667; + t.emacron = 556; + t.gbreve = 556; + t.onequarter = 834; + t.Scaron = 667; + t.Scommaaccent = 667; + t.Ohungarumlaut = 778; + t.degree = 400; + t.ograve = 556; + t.Ccaron = 722; + t.ugrave = 556; + t.radical = 453; + t.Dcaron = 722; + t.rcommaaccent = 333; + t.Ntilde = 722; + t.otilde = 556; + t.Rcommaaccent = 722; + t.Lcommaaccent = 556; + t.Atilde = 667; + t.Aogonek = 667; + t.Aring = 667; + t.Otilde = 778; + t.zdotaccent = 500; + t.Ecaron = 667; + t.Iogonek = 278; + t.kcommaaccent = 500; + t.minus = 584; + t.Icircumflex = 278; + t.ncaron = 556; + t.tcommaaccent = 278; + t.logicalnot = 584; + t.odieresis = 556; + t.udieresis = 556; + t.notequal = 549; + t.gcommaaccent = 556; + t.eth = 556; + t.zcaron = 500; + t.ncommaaccent = 556; + t.onesuperior = 333; + t.imacron = 278; + t.Euro = 556; + }); + t["Helvetica-Bold"] = (0, _core_utils.getLookupTableFactory)(function (t) { + t.space = 278; + t.exclam = 333; + t.quotedbl = 474; + t.numbersign = 556; + t.dollar = 556; + t.percent = 889; + t.ampersand = 722; + t.quoteright = 278; + t.parenleft = 333; + t.parenright = 333; + t.asterisk = 389; + t.plus = 584; + t.comma = 278; + t.hyphen = 333; + t.period = 278; + t.slash = 278; + t.zero = 556; + t.one = 556; + t.two = 556; + t.three = 556; + t.four = 556; + t.five = 556; + t.six = 556; + t.seven = 556; + t.eight = 556; + t.nine = 556; + t.colon = 333; + t.semicolon = 333; + t.less = 584; + t.equal = 584; + t.greater = 584; + t.question = 611; + t.at = 975; + t.A = 722; + t.B = 722; + t.C = 722; + t.D = 722; + t.E = 667; + t.F = 611; + t.G = 778; + t.H = 722; + t.I = 278; + t.J = 556; + t.K = 722; + t.L = 611; + t.M = 833; + t.N = 722; + t.O = 778; + t.P = 667; + t.Q = 778; + t.R = 722; + t.S = 667; + t.T = 611; + t.U = 722; + t.V = 667; + t.W = 944; + t.X = 667; + t.Y = 667; + t.Z = 611; + t.bracketleft = 333; + t.backslash = 278; + t.bracketright = 333; + t.asciicircum = 584; + t.underscore = 556; + t.quoteleft = 278; + t.a = 556; + t.b = 611; + t.c = 556; + t.d = 611; + t.e = 556; + t.f = 333; + t.g = 611; + t.h = 611; + t.i = 278; + t.j = 278; + t.k = 556; + t.l = 278; + t.m = 889; + t.n = 611; + t.o = 611; + t.p = 611; + t.q = 611; + t.r = 389; + t.s = 556; + t.t = 333; + t.u = 611; + t.v = 556; + t.w = 778; + t.x = 556; + t.y = 556; + t.z = 500; + t.braceleft = 389; + t.bar = 280; + t.braceright = 389; + t.asciitilde = 584; + t.exclamdown = 333; + t.cent = 556; + t.sterling = 556; + t.fraction = 167; + t.yen = 556; + t.florin = 556; + t.section = 556; + t.currency = 556; + t.quotesingle = 238; + t.quotedblleft = 500; + t.guillemotleft = 556; + t.guilsinglleft = 333; + t.guilsinglright = 333; + t.fi = 611; + t.fl = 611; + t.endash = 556; + t.dagger = 556; + t.daggerdbl = 556; + t.periodcentered = 278; + t.paragraph = 556; + t.bullet = 350; + t.quotesinglbase = 278; + t.quotedblbase = 500; + t.quotedblright = 500; + t.guillemotright = 556; + t.ellipsis = 1000; + t.perthousand = 1000; + t.questiondown = 611; + t.grave = 333; + t.acute = 333; + t.circumflex = 333; + t.tilde = 333; + t.macron = 333; + t.breve = 333; + t.dotaccent = 333; + t.dieresis = 333; + t.ring = 333; + t.cedilla = 333; + t.hungarumlaut = 333; + t.ogonek = 333; + t.caron = 333; + t.emdash = 1000; + t.AE = 1000; + t.ordfeminine = 370; + t.Lslash = 611; + t.Oslash = 778; + t.OE = 1000; + t.ordmasculine = 365; + t.ae = 889; + t.dotlessi = 278; + t.lslash = 278; + t.oslash = 611; + t.oe = 944; + t.germandbls = 611; + t.Idieresis = 278; + t.eacute = 556; + t.abreve = 556; + t.uhungarumlaut = 611; + t.ecaron = 556; + t.Ydieresis = 667; + t.divide = 584; + t.Yacute = 667; + t.Acircumflex = 722; + t.aacute = 556; + t.Ucircumflex = 722; + t.yacute = 556; + t.scommaaccent = 556; + t.ecircumflex = 556; + t.Uring = 722; + t.Udieresis = 722; + t.aogonek = 556; + t.Uacute = 722; + t.uogonek = 611; + t.Edieresis = 667; + t.Dcroat = 722; + t.commaaccent = 250; + t.copyright = 737; + t.Emacron = 667; + t.ccaron = 556; + t.aring = 556; + t.Ncommaaccent = 722; + t.lacute = 278; + t.agrave = 556; + t.Tcommaaccent = 611; + t.Cacute = 722; + t.atilde = 556; + t.Edotaccent = 667; + t.scaron = 556; + t.scedilla = 556; + t.iacute = 278; + t.lozenge = 494; + t.Rcaron = 722; + t.Gcommaaccent = 778; + t.ucircumflex = 611; + t.acircumflex = 556; + t.Amacron = 722; + t.rcaron = 389; + t.ccedilla = 556; + t.Zdotaccent = 611; + t.Thorn = 667; + t.Omacron = 778; + t.Racute = 722; + t.Sacute = 667; + t.dcaron = 743; + t.Umacron = 722; + t.uring = 611; + t.threesuperior = 333; + t.Ograve = 778; + t.Agrave = 722; + t.Abreve = 722; + t.multiply = 584; + t.uacute = 611; + t.Tcaron = 611; + t.partialdiff = 494; + t.ydieresis = 556; + t.Nacute = 722; + t.icircumflex = 278; + t.Ecircumflex = 667; + t.adieresis = 556; + t.edieresis = 556; + t.cacute = 556; + t.nacute = 611; + t.umacron = 611; + t.Ncaron = 722; + t.Iacute = 278; + t.plusminus = 584; + t.brokenbar = 280; + t.registered = 737; + t.Gbreve = 778; + t.Idotaccent = 278; + t.summation = 600; + t.Egrave = 667; + t.racute = 389; + t.omacron = 611; + t.Zacute = 611; + t.Zcaron = 611; + t.greaterequal = 549; + t.Eth = 722; + t.Ccedilla = 722; + t.lcommaaccent = 278; + t.tcaron = 389; + t.eogonek = 556; + t.Uogonek = 722; + t.Aacute = 722; + t.Adieresis = 722; + t.egrave = 556; + t.zacute = 500; + t.iogonek = 278; + t.Oacute = 778; + t.oacute = 611; + t.amacron = 556; + t.sacute = 556; + t.idieresis = 278; + t.Ocircumflex = 778; + t.Ugrave = 722; + t.Delta = 612; + t.thorn = 611; + t.twosuperior = 333; + t.Odieresis = 778; + t.mu = 611; + t.igrave = 278; + t.ohungarumlaut = 611; + t.Eogonek = 667; + t.dcroat = 611; + t.threequarters = 834; + t.Scedilla = 667; + t.lcaron = 400; + t.Kcommaaccent = 722; + t.Lacute = 611; + t.trademark = 1000; + t.edotaccent = 556; + t.Igrave = 278; + t.Imacron = 278; + t.Lcaron = 611; + t.onehalf = 834; + t.lessequal = 549; + t.ocircumflex = 611; + t.ntilde = 611; + t.Uhungarumlaut = 722; + t.Eacute = 667; + t.emacron = 556; + t.gbreve = 611; + t.onequarter = 834; + t.Scaron = 667; + t.Scommaaccent = 667; + t.Ohungarumlaut = 778; + t.degree = 400; + t.ograve = 611; + t.Ccaron = 722; + t.ugrave = 611; + t.radical = 549; + t.Dcaron = 722; + t.rcommaaccent = 389; + t.Ntilde = 722; + t.otilde = 611; + t.Rcommaaccent = 722; + t.Lcommaaccent = 611; + t.Atilde = 722; + t.Aogonek = 722; + t.Aring = 722; + t.Otilde = 778; + t.zdotaccent = 500; + t.Ecaron = 667; + t.Iogonek = 278; + t.kcommaaccent = 556; + t.minus = 584; + t.Icircumflex = 278; + t.ncaron = 611; + t.tcommaaccent = 333; + t.logicalnot = 584; + t.odieresis = 611; + t.udieresis = 611; + t.notequal = 549; + t.gcommaaccent = 611; + t.eth = 611; + t.zcaron = 500; + t.ncommaaccent = 611; + t.onesuperior = 333; + t.imacron = 278; + t.Euro = 556; + }); + t["Helvetica-BoldOblique"] = (0, _core_utils.getLookupTableFactory)(function (t) { + t.space = 278; + t.exclam = 333; + t.quotedbl = 474; + t.numbersign = 556; + t.dollar = 556; + t.percent = 889; + t.ampersand = 722; + t.quoteright = 278; + t.parenleft = 333; + t.parenright = 333; + t.asterisk = 389; + t.plus = 584; + t.comma = 278; + t.hyphen = 333; + t.period = 278; + t.slash = 278; + t.zero = 556; + t.one = 556; + t.two = 556; + t.three = 556; + t.four = 556; + t.five = 556; + t.six = 556; + t.seven = 556; + t.eight = 556; + t.nine = 556; + t.colon = 333; + t.semicolon = 333; + t.less = 584; + t.equal = 584; + t.greater = 584; + t.question = 611; + t.at = 975; + t.A = 722; + t.B = 722; + t.C = 722; + t.D = 722; + t.E = 667; + t.F = 611; + t.G = 778; + t.H = 722; + t.I = 278; + t.J = 556; + t.K = 722; + t.L = 611; + t.M = 833; + t.N = 722; + t.O = 778; + t.P = 667; + t.Q = 778; + t.R = 722; + t.S = 667; + t.T = 611; + t.U = 722; + t.V = 667; + t.W = 944; + t.X = 667; + t.Y = 667; + t.Z = 611; + t.bracketleft = 333; + t.backslash = 278; + t.bracketright = 333; + t.asciicircum = 584; + t.underscore = 556; + t.quoteleft = 278; + t.a = 556; + t.b = 611; + t.c = 556; + t.d = 611; + t.e = 556; + t.f = 333; + t.g = 611; + t.h = 611; + t.i = 278; + t.j = 278; + t.k = 556; + t.l = 278; + t.m = 889; + t.n = 611; + t.o = 611; + t.p = 611; + t.q = 611; + t.r = 389; + t.s = 556; + t.t = 333; + t.u = 611; + t.v = 556; + t.w = 778; + t.x = 556; + t.y = 556; + t.z = 500; + t.braceleft = 389; + t.bar = 280; + t.braceright = 389; + t.asciitilde = 584; + t.exclamdown = 333; + t.cent = 556; + t.sterling = 556; + t.fraction = 167; + t.yen = 556; + t.florin = 556; + t.section = 556; + t.currency = 556; + t.quotesingle = 238; + t.quotedblleft = 500; + t.guillemotleft = 556; + t.guilsinglleft = 333; + t.guilsinglright = 333; + t.fi = 611; + t.fl = 611; + t.endash = 556; + t.dagger = 556; + t.daggerdbl = 556; + t.periodcentered = 278; + t.paragraph = 556; + t.bullet = 350; + t.quotesinglbase = 278; + t.quotedblbase = 500; + t.quotedblright = 500; + t.guillemotright = 556; + t.ellipsis = 1000; + t.perthousand = 1000; + t.questiondown = 611; + t.grave = 333; + t.acute = 333; + t.circumflex = 333; + t.tilde = 333; + t.macron = 333; + t.breve = 333; + t.dotaccent = 333; + t.dieresis = 333; + t.ring = 333; + t.cedilla = 333; + t.hungarumlaut = 333; + t.ogonek = 333; + t.caron = 333; + t.emdash = 1000; + t.AE = 1000; + t.ordfeminine = 370; + t.Lslash = 611; + t.Oslash = 778; + t.OE = 1000; + t.ordmasculine = 365; + t.ae = 889; + t.dotlessi = 278; + t.lslash = 278; + t.oslash = 611; + t.oe = 944; + t.germandbls = 611; + t.Idieresis = 278; + t.eacute = 556; + t.abreve = 556; + t.uhungarumlaut = 611; + t.ecaron = 556; + t.Ydieresis = 667; + t.divide = 584; + t.Yacute = 667; + t.Acircumflex = 722; + t.aacute = 556; + t.Ucircumflex = 722; + t.yacute = 556; + t.scommaaccent = 556; + t.ecircumflex = 556; + t.Uring = 722; + t.Udieresis = 722; + t.aogonek = 556; + t.Uacute = 722; + t.uogonek = 611; + t.Edieresis = 667; + t.Dcroat = 722; + t.commaaccent = 250; + t.copyright = 737; + t.Emacron = 667; + t.ccaron = 556; + t.aring = 556; + t.Ncommaaccent = 722; + t.lacute = 278; + t.agrave = 556; + t.Tcommaaccent = 611; + t.Cacute = 722; + t.atilde = 556; + t.Edotaccent = 667; + t.scaron = 556; + t.scedilla = 556; + t.iacute = 278; + t.lozenge = 494; + t.Rcaron = 722; + t.Gcommaaccent = 778; + t.ucircumflex = 611; + t.acircumflex = 556; + t.Amacron = 722; + t.rcaron = 389; + t.ccedilla = 556; + t.Zdotaccent = 611; + t.Thorn = 667; + t.Omacron = 778; + t.Racute = 722; + t.Sacute = 667; + t.dcaron = 743; + t.Umacron = 722; + t.uring = 611; + t.threesuperior = 333; + t.Ograve = 778; + t.Agrave = 722; + t.Abreve = 722; + t.multiply = 584; + t.uacute = 611; + t.Tcaron = 611; + t.partialdiff = 494; + t.ydieresis = 556; + t.Nacute = 722; + t.icircumflex = 278; + t.Ecircumflex = 667; + t.adieresis = 556; + t.edieresis = 556; + t.cacute = 556; + t.nacute = 611; + t.umacron = 611; + t.Ncaron = 722; + t.Iacute = 278; + t.plusminus = 584; + t.brokenbar = 280; + t.registered = 737; + t.Gbreve = 778; + t.Idotaccent = 278; + t.summation = 600; + t.Egrave = 667; + t.racute = 389; + t.omacron = 611; + t.Zacute = 611; + t.Zcaron = 611; + t.greaterequal = 549; + t.Eth = 722; + t.Ccedilla = 722; + t.lcommaaccent = 278; + t.tcaron = 389; + t.eogonek = 556; + t.Uogonek = 722; + t.Aacute = 722; + t.Adieresis = 722; + t.egrave = 556; + t.zacute = 500; + t.iogonek = 278; + t.Oacute = 778; + t.oacute = 611; + t.amacron = 556; + t.sacute = 556; + t.idieresis = 278; + t.Ocircumflex = 778; + t.Ugrave = 722; + t.Delta = 612; + t.thorn = 611; + t.twosuperior = 333; + t.Odieresis = 778; + t.mu = 611; + t.igrave = 278; + t.ohungarumlaut = 611; + t.Eogonek = 667; + t.dcroat = 611; + t.threequarters = 834; + t.Scedilla = 667; + t.lcaron = 400; + t.Kcommaaccent = 722; + t.Lacute = 611; + t.trademark = 1000; + t.edotaccent = 556; + t.Igrave = 278; + t.Imacron = 278; + t.Lcaron = 611; + t.onehalf = 834; + t.lessequal = 549; + t.ocircumflex = 611; + t.ntilde = 611; + t.Uhungarumlaut = 722; + t.Eacute = 667; + t.emacron = 556; + t.gbreve = 611; + t.onequarter = 834; + t.Scaron = 667; + t.Scommaaccent = 667; + t.Ohungarumlaut = 778; + t.degree = 400; + t.ograve = 611; + t.Ccaron = 722; + t.ugrave = 611; + t.radical = 549; + t.Dcaron = 722; + t.rcommaaccent = 389; + t.Ntilde = 722; + t.otilde = 611; + t.Rcommaaccent = 722; + t.Lcommaaccent = 611; + t.Atilde = 722; + t.Aogonek = 722; + t.Aring = 722; + t.Otilde = 778; + t.zdotaccent = 500; + t.Ecaron = 667; + t.Iogonek = 278; + t.kcommaaccent = 556; + t.minus = 584; + t.Icircumflex = 278; + t.ncaron = 611; + t.tcommaaccent = 333; + t.logicalnot = 584; + t.odieresis = 611; + t.udieresis = 611; + t.notequal = 549; + t.gcommaaccent = 611; + t.eth = 611; + t.zcaron = 500; + t.ncommaaccent = 611; + t.onesuperior = 333; + t.imacron = 278; + t.Euro = 556; + }); + t["Helvetica-Oblique"] = (0, _core_utils.getLookupTableFactory)(function (t) { + t.space = 278; + t.exclam = 278; + t.quotedbl = 355; + t.numbersign = 556; + t.dollar = 556; + t.percent = 889; + t.ampersand = 667; + t.quoteright = 222; + t.parenleft = 333; + t.parenright = 333; + t.asterisk = 389; + t.plus = 584; + t.comma = 278; + t.hyphen = 333; + t.period = 278; + t.slash = 278; + t.zero = 556; + t.one = 556; + t.two = 556; + t.three = 556; + t.four = 556; + t.five = 556; + t.six = 556; + t.seven = 556; + t.eight = 556; + t.nine = 556; + t.colon = 278; + t.semicolon = 278; + t.less = 584; + t.equal = 584; + t.greater = 584; + t.question = 556; + t.at = 1015; + t.A = 667; + t.B = 667; + t.C = 722; + t.D = 722; + t.E = 667; + t.F = 611; + t.G = 778; + t.H = 722; + t.I = 278; + t.J = 500; + t.K = 667; + t.L = 556; + t.M = 833; + t.N = 722; + t.O = 778; + t.P = 667; + t.Q = 778; + t.R = 722; + t.S = 667; + t.T = 611; + t.U = 722; + t.V = 667; + t.W = 944; + t.X = 667; + t.Y = 667; + t.Z = 611; + t.bracketleft = 278; + t.backslash = 278; + t.bracketright = 278; + t.asciicircum = 469; + t.underscore = 556; + t.quoteleft = 222; + t.a = 556; + t.b = 556; + t.c = 500; + t.d = 556; + t.e = 556; + t.f = 278; + t.g = 556; + t.h = 556; + t.i = 222; + t.j = 222; + t.k = 500; + t.l = 222; + t.m = 833; + t.n = 556; + t.o = 556; + t.p = 556; + t.q = 556; + t.r = 333; + t.s = 500; + t.t = 278; + t.u = 556; + t.v = 500; + t.w = 722; + t.x = 500; + t.y = 500; + t.z = 500; + t.braceleft = 334; + t.bar = 260; + t.braceright = 334; + t.asciitilde = 584; + t.exclamdown = 333; + t.cent = 556; + t.sterling = 556; + t.fraction = 167; + t.yen = 556; + t.florin = 556; + t.section = 556; + t.currency = 556; + t.quotesingle = 191; + t.quotedblleft = 333; + t.guillemotleft = 556; + t.guilsinglleft = 333; + t.guilsinglright = 333; + t.fi = 500; + t.fl = 500; + t.endash = 556; + t.dagger = 556; + t.daggerdbl = 556; + t.periodcentered = 278; + t.paragraph = 537; + t.bullet = 350; + t.quotesinglbase = 222; + t.quotedblbase = 333; + t.quotedblright = 333; + t.guillemotright = 556; + t.ellipsis = 1000; + t.perthousand = 1000; + t.questiondown = 611; + t.grave = 333; + t.acute = 333; + t.circumflex = 333; + t.tilde = 333; + t.macron = 333; + t.breve = 333; + t.dotaccent = 333; + t.dieresis = 333; + t.ring = 333; + t.cedilla = 333; + t.hungarumlaut = 333; + t.ogonek = 333; + t.caron = 333; + t.emdash = 1000; + t.AE = 1000; + t.ordfeminine = 370; + t.Lslash = 556; + t.Oslash = 778; + t.OE = 1000; + t.ordmasculine = 365; + t.ae = 889; + t.dotlessi = 278; + t.lslash = 222; + t.oslash = 611; + t.oe = 944; + t.germandbls = 611; + t.Idieresis = 278; + t.eacute = 556; + t.abreve = 556; + t.uhungarumlaut = 556; + t.ecaron = 556; + t.Ydieresis = 667; + t.divide = 584; + t.Yacute = 667; + t.Acircumflex = 667; + t.aacute = 556; + t.Ucircumflex = 722; + t.yacute = 500; + t.scommaaccent = 500; + t.ecircumflex = 556; + t.Uring = 722; + t.Udieresis = 722; + t.aogonek = 556; + t.Uacute = 722; + t.uogonek = 556; + t.Edieresis = 667; + t.Dcroat = 722; + t.commaaccent = 250; + t.copyright = 737; + t.Emacron = 667; + t.ccaron = 500; + t.aring = 556; + t.Ncommaaccent = 722; + t.lacute = 222; + t.agrave = 556; + t.Tcommaaccent = 611; + t.Cacute = 722; + t.atilde = 556; + t.Edotaccent = 667; + t.scaron = 500; + t.scedilla = 500; + t.iacute = 278; + t.lozenge = 471; + t.Rcaron = 722; + t.Gcommaaccent = 778; + t.ucircumflex = 556; + t.acircumflex = 556; + t.Amacron = 667; + t.rcaron = 333; + t.ccedilla = 500; + t.Zdotaccent = 611; + t.Thorn = 667; + t.Omacron = 778; + t.Racute = 722; + t.Sacute = 667; + t.dcaron = 643; + t.Umacron = 722; + t.uring = 556; + t.threesuperior = 333; + t.Ograve = 778; + t.Agrave = 667; + t.Abreve = 667; + t.multiply = 584; + t.uacute = 556; + t.Tcaron = 611; + t.partialdiff = 476; + t.ydieresis = 500; + t.Nacute = 722; + t.icircumflex = 278; + t.Ecircumflex = 667; + t.adieresis = 556; + t.edieresis = 556; + t.cacute = 500; + t.nacute = 556; + t.umacron = 556; + t.Ncaron = 722; + t.Iacute = 278; + t.plusminus = 584; + t.brokenbar = 260; + t.registered = 737; + t.Gbreve = 778; + t.Idotaccent = 278; + t.summation = 600; + t.Egrave = 667; + t.racute = 333; + t.omacron = 556; + t.Zacute = 611; + t.Zcaron = 611; + t.greaterequal = 549; + t.Eth = 722; + t.Ccedilla = 722; + t.lcommaaccent = 222; + t.tcaron = 317; + t.eogonek = 556; + t.Uogonek = 722; + t.Aacute = 667; + t.Adieresis = 667; + t.egrave = 556; + t.zacute = 500; + t.iogonek = 222; + t.Oacute = 778; + t.oacute = 556; + t.amacron = 556; + t.sacute = 500; + t.idieresis = 278; + t.Ocircumflex = 778; + t.Ugrave = 722; + t.Delta = 612; + t.thorn = 556; + t.twosuperior = 333; + t.Odieresis = 778; + t.mu = 556; + t.igrave = 278; + t.ohungarumlaut = 556; + t.Eogonek = 667; + t.dcroat = 556; + t.threequarters = 834; + t.Scedilla = 667; + t.lcaron = 299; + t.Kcommaaccent = 667; + t.Lacute = 556; + t.trademark = 1000; + t.edotaccent = 556; + t.Igrave = 278; + t.Imacron = 278; + t.Lcaron = 556; + t.onehalf = 834; + t.lessequal = 549; + t.ocircumflex = 556; + t.ntilde = 556; + t.Uhungarumlaut = 722; + t.Eacute = 667; + t.emacron = 556; + t.gbreve = 556; + t.onequarter = 834; + t.Scaron = 667; + t.Scommaaccent = 667; + t.Ohungarumlaut = 778; + t.degree = 400; + t.ograve = 556; + t.Ccaron = 722; + t.ugrave = 556; + t.radical = 453; + t.Dcaron = 722; + t.rcommaaccent = 333; + t.Ntilde = 722; + t.otilde = 556; + t.Rcommaaccent = 722; + t.Lcommaaccent = 556; + t.Atilde = 667; + t.Aogonek = 667; + t.Aring = 667; + t.Otilde = 778; + t.zdotaccent = 500; + t.Ecaron = 667; + t.Iogonek = 278; + t.kcommaaccent = 500; + t.minus = 584; + t.Icircumflex = 278; + t.ncaron = 556; + t.tcommaaccent = 278; + t.logicalnot = 584; + t.odieresis = 556; + t.udieresis = 556; + t.notequal = 549; + t.gcommaaccent = 556; + t.eth = 556; + t.zcaron = 500; + t.ncommaaccent = 556; + t.onesuperior = 333; + t.imacron = 278; + t.Euro = 556; + }); + t.Symbol = (0, _core_utils.getLookupTableFactory)(function (t) { + t.space = 250; + t.exclam = 333; + t.universal = 713; + t.numbersign = 500; + t.existential = 549; + t.percent = 833; + t.ampersand = 778; + t.suchthat = 439; + t.parenleft = 333; + t.parenright = 333; + t.asteriskmath = 500; + t.plus = 549; + t.comma = 250; + t.minus = 549; + t.period = 250; + t.slash = 278; + t.zero = 500; + t.one = 500; + t.two = 500; + t.three = 500; + t.four = 500; + t.five = 500; + t.six = 500; + t.seven = 500; + t.eight = 500; + t.nine = 500; + t.colon = 278; + t.semicolon = 278; + t.less = 549; + t.equal = 549; + t.greater = 549; + t.question = 444; + t.congruent = 549; + t.Alpha = 722; + t.Beta = 667; + t.Chi = 722; + t.Delta = 612; + t.Epsilon = 611; + t.Phi = 763; + t.Gamma = 603; + t.Eta = 722; + t.Iota = 333; + t.theta1 = 631; + t.Kappa = 722; + t.Lambda = 686; + t.Mu = 889; + t.Nu = 722; + t.Omicron = 722; + t.Pi = 768; + t.Theta = 741; + t.Rho = 556; + t.Sigma = 592; + t.Tau = 611; + t.Upsilon = 690; + t.sigma1 = 439; + t.Omega = 768; + t.Xi = 645; + t.Psi = 795; + t.Zeta = 611; + t.bracketleft = 333; + t.therefore = 863; + t.bracketright = 333; + t.perpendicular = 658; + t.underscore = 500; + t.radicalex = 500; + t.alpha = 631; + t.beta = 549; + t.chi = 549; + t.delta = 494; + t.epsilon = 439; + t.phi = 521; + t.gamma = 411; + t.eta = 603; + t.iota = 329; + t.phi1 = 603; + t.kappa = 549; + t.lambda = 549; + t.mu = 576; + t.nu = 521; + t.omicron = 549; + t.pi = 549; + t.theta = 521; + t.rho = 549; + t.sigma = 603; + t.tau = 439; + t.upsilon = 576; + t.omega1 = 713; + t.omega = 686; + t.xi = 493; + t.psi = 686; + t.zeta = 494; + t.braceleft = 480; + t.bar = 200; + t.braceright = 480; + t.similar = 549; + t.Euro = 750; + t.Upsilon1 = 620; + t.minute = 247; + t.lessequal = 549; + t.fraction = 167; + t.infinity = 713; + t.florin = 500; + t.club = 753; + t.diamond = 753; + t.heart = 753; + t.spade = 753; + t.arrowboth = 1042; + t.arrowleft = 987; + t.arrowup = 603; + t.arrowright = 987; + t.arrowdown = 603; + t.degree = 400; + t.plusminus = 549; + t.second = 411; + t.greaterequal = 549; + t.multiply = 549; + t.proportional = 713; + t.partialdiff = 494; + t.bullet = 460; + t.divide = 549; + t.notequal = 549; + t.equivalence = 549; + t.approxequal = 549; + t.ellipsis = 1000; + t.arrowvertex = 603; + t.arrowhorizex = 1000; + t.carriagereturn = 658; + t.aleph = 823; + t.Ifraktur = 686; + t.Rfraktur = 795; + t.weierstrass = 987; + t.circlemultiply = 768; + t.circleplus = 768; + t.emptyset = 823; + t.intersection = 768; + t.union = 768; + t.propersuperset = 713; + t.reflexsuperset = 713; + t.notsubset = 713; + t.propersubset = 713; + t.reflexsubset = 713; + t.element = 713; + t.notelement = 713; + t.angle = 768; + t.gradient = 713; + t.registerserif = 790; + t.copyrightserif = 790; + t.trademarkserif = 890; + t.product = 823; + t.radical = 549; + t.dotmath = 250; + t.logicalnot = 713; + t.logicaland = 603; + t.logicalor = 603; + t.arrowdblboth = 1042; + t.arrowdblleft = 987; + t.arrowdblup = 603; + t.arrowdblright = 987; + t.arrowdbldown = 603; + t.lozenge = 494; + t.angleleft = 329; + t.registersans = 790; + t.copyrightsans = 790; + t.trademarksans = 786; + t.summation = 713; + t.parenlefttp = 384; + t.parenleftex = 384; + t.parenleftbt = 384; + t.bracketlefttp = 384; + t.bracketleftex = 384; + t.bracketleftbt = 384; + t.bracelefttp = 494; + t.braceleftmid = 494; + t.braceleftbt = 494; + t.braceex = 494; + t.angleright = 329; + t.integral = 274; + t.integraltp = 686; + t.integralex = 686; + t.integralbt = 686; + t.parenrighttp = 384; + t.parenrightex = 384; + t.parenrightbt = 384; + t.bracketrighttp = 384; + t.bracketrightex = 384; + t.bracketrightbt = 384; + t.bracerighttp = 494; + t.bracerightmid = 494; + t.bracerightbt = 494; + t.apple = 790; + }); + t["Times-Roman"] = (0, _core_utils.getLookupTableFactory)(function (t) { + t.space = 250; + t.exclam = 333; + t.quotedbl = 408; + t.numbersign = 500; + t.dollar = 500; + t.percent = 833; + t.ampersand = 778; + t.quoteright = 333; + t.parenleft = 333; + t.parenright = 333; + t.asterisk = 500; + t.plus = 564; + t.comma = 250; + t.hyphen = 333; + t.period = 250; + t.slash = 278; + t.zero = 500; + t.one = 500; + t.two = 500; + t.three = 500; + t.four = 500; + t.five = 500; + t.six = 500; + t.seven = 500; + t.eight = 500; + t.nine = 500; + t.colon = 278; + t.semicolon = 278; + t.less = 564; + t.equal = 564; + t.greater = 564; + t.question = 444; + t.at = 921; + t.A = 722; + t.B = 667; + t.C = 667; + t.D = 722; + t.E = 611; + t.F = 556; + t.G = 722; + t.H = 722; + t.I = 333; + t.J = 389; + t.K = 722; + t.L = 611; + t.M = 889; + t.N = 722; + t.O = 722; + t.P = 556; + t.Q = 722; + t.R = 667; + t.S = 556; + t.T = 611; + t.U = 722; + t.V = 722; + t.W = 944; + t.X = 722; + t.Y = 722; + t.Z = 611; + t.bracketleft = 333; + t.backslash = 278; + t.bracketright = 333; + t.asciicircum = 469; + t.underscore = 500; + t.quoteleft = 333; + t.a = 444; + t.b = 500; + t.c = 444; + t.d = 500; + t.e = 444; + t.f = 333; + t.g = 500; + t.h = 500; + t.i = 278; + t.j = 278; + t.k = 500; + t.l = 278; + t.m = 778; + t.n = 500; + t.o = 500; + t.p = 500; + t.q = 500; + t.r = 333; + t.s = 389; + t.t = 278; + t.u = 500; + t.v = 500; + t.w = 722; + t.x = 500; + t.y = 500; + t.z = 444; + t.braceleft = 480; + t.bar = 200; + t.braceright = 480; + t.asciitilde = 541; + t.exclamdown = 333; + t.cent = 500; + t.sterling = 500; + t.fraction = 167; + t.yen = 500; + t.florin = 500; + t.section = 500; + t.currency = 500; + t.quotesingle = 180; + t.quotedblleft = 444; + t.guillemotleft = 500; + t.guilsinglleft = 333; + t.guilsinglright = 333; + t.fi = 556; + t.fl = 556; + t.endash = 500; + t.dagger = 500; + t.daggerdbl = 500; + t.periodcentered = 250; + t.paragraph = 453; + t.bullet = 350; + t.quotesinglbase = 333; + t.quotedblbase = 444; + t.quotedblright = 444; + t.guillemotright = 500; + t.ellipsis = 1000; + t.perthousand = 1000; + t.questiondown = 444; + t.grave = 333; + t.acute = 333; + t.circumflex = 333; + t.tilde = 333; + t.macron = 333; + t.breve = 333; + t.dotaccent = 333; + t.dieresis = 333; + t.ring = 333; + t.cedilla = 333; + t.hungarumlaut = 333; + t.ogonek = 333; + t.caron = 333; + t.emdash = 1000; + t.AE = 889; + t.ordfeminine = 276; + t.Lslash = 611; + t.Oslash = 722; + t.OE = 889; + t.ordmasculine = 310; + t.ae = 667; + t.dotlessi = 278; + t.lslash = 278; + t.oslash = 500; + t.oe = 722; + t.germandbls = 500; + t.Idieresis = 333; + t.eacute = 444; + t.abreve = 444; + t.uhungarumlaut = 500; + t.ecaron = 444; + t.Ydieresis = 722; + t.divide = 564; + t.Yacute = 722; + t.Acircumflex = 722; + t.aacute = 444; + t.Ucircumflex = 722; + t.yacute = 500; + t.scommaaccent = 389; + t.ecircumflex = 444; + t.Uring = 722; + t.Udieresis = 722; + t.aogonek = 444; + t.Uacute = 722; + t.uogonek = 500; + t.Edieresis = 611; + t.Dcroat = 722; + t.commaaccent = 250; + t.copyright = 760; + t.Emacron = 611; + t.ccaron = 444; + t.aring = 444; + t.Ncommaaccent = 722; + t.lacute = 278; + t.agrave = 444; + t.Tcommaaccent = 611; + t.Cacute = 667; + t.atilde = 444; + t.Edotaccent = 611; + t.scaron = 389; + t.scedilla = 389; + t.iacute = 278; + t.lozenge = 471; + t.Rcaron = 667; + t.Gcommaaccent = 722; + t.ucircumflex = 500; + t.acircumflex = 444; + t.Amacron = 722; + t.rcaron = 333; + t.ccedilla = 444; + t.Zdotaccent = 611; + t.Thorn = 556; + t.Omacron = 722; + t.Racute = 667; + t.Sacute = 556; + t.dcaron = 588; + t.Umacron = 722; + t.uring = 500; + t.threesuperior = 300; + t.Ograve = 722; + t.Agrave = 722; + t.Abreve = 722; + t.multiply = 564; + t.uacute = 500; + t.Tcaron = 611; + t.partialdiff = 476; + t.ydieresis = 500; + t.Nacute = 722; + t.icircumflex = 278; + t.Ecircumflex = 611; + t.adieresis = 444; + t.edieresis = 444; + t.cacute = 444; + t.nacute = 500; + t.umacron = 500; + t.Ncaron = 722; + t.Iacute = 333; + t.plusminus = 564; + t.brokenbar = 200; + t.registered = 760; + t.Gbreve = 722; + t.Idotaccent = 333; + t.summation = 600; + t.Egrave = 611; + t.racute = 333; + t.omacron = 500; + t.Zacute = 611; + t.Zcaron = 611; + t.greaterequal = 549; + t.Eth = 722; + t.Ccedilla = 667; + t.lcommaaccent = 278; + t.tcaron = 326; + t.eogonek = 444; + t.Uogonek = 722; + t.Aacute = 722; + t.Adieresis = 722; + t.egrave = 444; + t.zacute = 444; + t.iogonek = 278; + t.Oacute = 722; + t.oacute = 500; + t.amacron = 444; + t.sacute = 389; + t.idieresis = 278; + t.Ocircumflex = 722; + t.Ugrave = 722; + t.Delta = 612; + t.thorn = 500; + t.twosuperior = 300; + t.Odieresis = 722; + t.mu = 500; + t.igrave = 278; + t.ohungarumlaut = 500; + t.Eogonek = 611; + t.dcroat = 500; + t.threequarters = 750; + t.Scedilla = 556; + t.lcaron = 344; + t.Kcommaaccent = 722; + t.Lacute = 611; + t.trademark = 980; + t.edotaccent = 444; + t.Igrave = 333; + t.Imacron = 333; + t.Lcaron = 611; + t.onehalf = 750; + t.lessequal = 549; + t.ocircumflex = 500; + t.ntilde = 500; + t.Uhungarumlaut = 722; + t.Eacute = 611; + t.emacron = 444; + t.gbreve = 500; + t.onequarter = 750; + t.Scaron = 556; + t.Scommaaccent = 556; + t.Ohungarumlaut = 722; + t.degree = 400; + t.ograve = 500; + t.Ccaron = 667; + t.ugrave = 500; + t.radical = 453; + t.Dcaron = 722; + t.rcommaaccent = 333; + t.Ntilde = 722; + t.otilde = 500; + t.Rcommaaccent = 667; + t.Lcommaaccent = 611; + t.Atilde = 722; + t.Aogonek = 722; + t.Aring = 722; + t.Otilde = 722; + t.zdotaccent = 444; + t.Ecaron = 611; + t.Iogonek = 333; + t.kcommaaccent = 500; + t.minus = 564; + t.Icircumflex = 333; + t.ncaron = 500; + t.tcommaaccent = 278; + t.logicalnot = 564; + t.odieresis = 500; + t.udieresis = 500; + t.notequal = 549; + t.gcommaaccent = 500; + t.eth = 500; + t.zcaron = 444; + t.ncommaaccent = 500; + t.onesuperior = 300; + t.imacron = 278; + t.Euro = 500; + }); + t["Times-Bold"] = (0, _core_utils.getLookupTableFactory)(function (t) { + t.space = 250; + t.exclam = 333; + t.quotedbl = 555; + t.numbersign = 500; + t.dollar = 500; + t.percent = 1000; + t.ampersand = 833; + t.quoteright = 333; + t.parenleft = 333; + t.parenright = 333; + t.asterisk = 500; + t.plus = 570; + t.comma = 250; + t.hyphen = 333; + t.period = 250; + t.slash = 278; + t.zero = 500; + t.one = 500; + t.two = 500; + t.three = 500; + t.four = 500; + t.five = 500; + t.six = 500; + t.seven = 500; + t.eight = 500; + t.nine = 500; + t.colon = 333; + t.semicolon = 333; + t.less = 570; + t.equal = 570; + t.greater = 570; + t.question = 500; + t.at = 930; + t.A = 722; + t.B = 667; + t.C = 722; + t.D = 722; + t.E = 667; + t.F = 611; + t.G = 778; + t.H = 778; + t.I = 389; + t.J = 500; + t.K = 778; + t.L = 667; + t.M = 944; + t.N = 722; + t.O = 778; + t.P = 611; + t.Q = 778; + t.R = 722; + t.S = 556; + t.T = 667; + t.U = 722; + t.V = 722; + t.W = 1000; + t.X = 722; + t.Y = 722; + t.Z = 667; + t.bracketleft = 333; + t.backslash = 278; + t.bracketright = 333; + t.asciicircum = 581; + t.underscore = 500; + t.quoteleft = 333; + t.a = 500; + t.b = 556; + t.c = 444; + t.d = 556; + t.e = 444; + t.f = 333; + t.g = 500; + t.h = 556; + t.i = 278; + t.j = 333; + t.k = 556; + t.l = 278; + t.m = 833; + t.n = 556; + t.o = 500; + t.p = 556; + t.q = 556; + t.r = 444; + t.s = 389; + t.t = 333; + t.u = 556; + t.v = 500; + t.w = 722; + t.x = 500; + t.y = 500; + t.z = 444; + t.braceleft = 394; + t.bar = 220; + t.braceright = 394; + t.asciitilde = 520; + t.exclamdown = 333; + t.cent = 500; + t.sterling = 500; + t.fraction = 167; + t.yen = 500; + t.florin = 500; + t.section = 500; + t.currency = 500; + t.quotesingle = 278; + t.quotedblleft = 500; + t.guillemotleft = 500; + t.guilsinglleft = 333; + t.guilsinglright = 333; + t.fi = 556; + t.fl = 556; + t.endash = 500; + t.dagger = 500; + t.daggerdbl = 500; + t.periodcentered = 250; + t.paragraph = 540; + t.bullet = 350; + t.quotesinglbase = 333; + t.quotedblbase = 500; + t.quotedblright = 500; + t.guillemotright = 500; + t.ellipsis = 1000; + t.perthousand = 1000; + t.questiondown = 500; + t.grave = 333; + t.acute = 333; + t.circumflex = 333; + t.tilde = 333; + t.macron = 333; + t.breve = 333; + t.dotaccent = 333; + t.dieresis = 333; + t.ring = 333; + t.cedilla = 333; + t.hungarumlaut = 333; + t.ogonek = 333; + t.caron = 333; + t.emdash = 1000; + t.AE = 1000; + t.ordfeminine = 300; + t.Lslash = 667; + t.Oslash = 778; + t.OE = 1000; + t.ordmasculine = 330; + t.ae = 722; + t.dotlessi = 278; + t.lslash = 278; + t.oslash = 500; + t.oe = 722; + t.germandbls = 556; + t.Idieresis = 389; + t.eacute = 444; + t.abreve = 500; + t.uhungarumlaut = 556; + t.ecaron = 444; + t.Ydieresis = 722; + t.divide = 570; + t.Yacute = 722; + t.Acircumflex = 722; + t.aacute = 500; + t.Ucircumflex = 722; + t.yacute = 500; + t.scommaaccent = 389; + t.ecircumflex = 444; + t.Uring = 722; + t.Udieresis = 722; + t.aogonek = 500; + t.Uacute = 722; + t.uogonek = 556; + t.Edieresis = 667; + t.Dcroat = 722; + t.commaaccent = 250; + t.copyright = 747; + t.Emacron = 667; + t.ccaron = 444; + t.aring = 500; + t.Ncommaaccent = 722; + t.lacute = 278; + t.agrave = 500; + t.Tcommaaccent = 667; + t.Cacute = 722; + t.atilde = 500; + t.Edotaccent = 667; + t.scaron = 389; + t.scedilla = 389; + t.iacute = 278; + t.lozenge = 494; + t.Rcaron = 722; + t.Gcommaaccent = 778; + t.ucircumflex = 556; + t.acircumflex = 500; + t.Amacron = 722; + t.rcaron = 444; + t.ccedilla = 444; + t.Zdotaccent = 667; + t.Thorn = 611; + t.Omacron = 778; + t.Racute = 722; + t.Sacute = 556; + t.dcaron = 672; + t.Umacron = 722; + t.uring = 556; + t.threesuperior = 300; + t.Ograve = 778; + t.Agrave = 722; + t.Abreve = 722; + t.multiply = 570; + t.uacute = 556; + t.Tcaron = 667; + t.partialdiff = 494; + t.ydieresis = 500; + t.Nacute = 722; + t.icircumflex = 278; + t.Ecircumflex = 667; + t.adieresis = 500; + t.edieresis = 444; + t.cacute = 444; + t.nacute = 556; + t.umacron = 556; + t.Ncaron = 722; + t.Iacute = 389; + t.plusminus = 570; + t.brokenbar = 220; + t.registered = 747; + t.Gbreve = 778; + t.Idotaccent = 389; + t.summation = 600; + t.Egrave = 667; + t.racute = 444; + t.omacron = 500; + t.Zacute = 667; + t.Zcaron = 667; + t.greaterequal = 549; + t.Eth = 722; + t.Ccedilla = 722; + t.lcommaaccent = 278; + t.tcaron = 416; + t.eogonek = 444; + t.Uogonek = 722; + t.Aacute = 722; + t.Adieresis = 722; + t.egrave = 444; + t.zacute = 444; + t.iogonek = 278; + t.Oacute = 778; + t.oacute = 500; + t.amacron = 500; + t.sacute = 389; + t.idieresis = 278; + t.Ocircumflex = 778; + t.Ugrave = 722; + t.Delta = 612; + t.thorn = 556; + t.twosuperior = 300; + t.Odieresis = 778; + t.mu = 556; + t.igrave = 278; + t.ohungarumlaut = 500; + t.Eogonek = 667; + t.dcroat = 556; + t.threequarters = 750; + t.Scedilla = 556; + t.lcaron = 394; + t.Kcommaaccent = 778; + t.Lacute = 667; + t.trademark = 1000; + t.edotaccent = 444; + t.Igrave = 389; + t.Imacron = 389; + t.Lcaron = 667; + t.onehalf = 750; + t.lessequal = 549; + t.ocircumflex = 500; + t.ntilde = 556; + t.Uhungarumlaut = 722; + t.Eacute = 667; + t.emacron = 444; + t.gbreve = 500; + t.onequarter = 750; + t.Scaron = 556; + t.Scommaaccent = 556; + t.Ohungarumlaut = 778; + t.degree = 400; + t.ograve = 500; + t.Ccaron = 722; + t.ugrave = 556; + t.radical = 549; + t.Dcaron = 722; + t.rcommaaccent = 444; + t.Ntilde = 722; + t.otilde = 500; + t.Rcommaaccent = 722; + t.Lcommaaccent = 667; + t.Atilde = 722; + t.Aogonek = 722; + t.Aring = 722; + t.Otilde = 778; + t.zdotaccent = 444; + t.Ecaron = 667; + t.Iogonek = 389; + t.kcommaaccent = 556; + t.minus = 570; + t.Icircumflex = 389; + t.ncaron = 556; + t.tcommaaccent = 333; + t.logicalnot = 570; + t.odieresis = 500; + t.udieresis = 556; + t.notequal = 549; + t.gcommaaccent = 500; + t.eth = 500; + t.zcaron = 444; + t.ncommaaccent = 556; + t.onesuperior = 300; + t.imacron = 278; + t.Euro = 500; + }); + t["Times-BoldItalic"] = (0, _core_utils.getLookupTableFactory)(function (t) { + t.space = 250; + t.exclam = 389; + t.quotedbl = 555; + t.numbersign = 500; + t.dollar = 500; + t.percent = 833; + t.ampersand = 778; + t.quoteright = 333; + t.parenleft = 333; + t.parenright = 333; + t.asterisk = 500; + t.plus = 570; + t.comma = 250; + t.hyphen = 333; + t.period = 250; + t.slash = 278; + t.zero = 500; + t.one = 500; + t.two = 500; + t.three = 500; + t.four = 500; + t.five = 500; + t.six = 500; + t.seven = 500; + t.eight = 500; + t.nine = 500; + t.colon = 333; + t.semicolon = 333; + t.less = 570; + t.equal = 570; + t.greater = 570; + t.question = 500; + t.at = 832; + t.A = 667; + t.B = 667; + t.C = 667; + t.D = 722; + t.E = 667; + t.F = 667; + t.G = 722; + t.H = 778; + t.I = 389; + t.J = 500; + t.K = 667; + t.L = 611; + t.M = 889; + t.N = 722; + t.O = 722; + t.P = 611; + t.Q = 722; + t.R = 667; + t.S = 556; + t.T = 611; + t.U = 722; + t.V = 667; + t.W = 889; + t.X = 667; + t.Y = 611; + t.Z = 611; + t.bracketleft = 333; + t.backslash = 278; + t.bracketright = 333; + t.asciicircum = 570; + t.underscore = 500; + t.quoteleft = 333; + t.a = 500; + t.b = 500; + t.c = 444; + t.d = 500; + t.e = 444; + t.f = 333; + t.g = 500; + t.h = 556; + t.i = 278; + t.j = 278; + t.k = 500; + t.l = 278; + t.m = 778; + t.n = 556; + t.o = 500; + t.p = 500; + t.q = 500; + t.r = 389; + t.s = 389; + t.t = 278; + t.u = 556; + t.v = 444; + t.w = 667; + t.x = 500; + t.y = 444; + t.z = 389; + t.braceleft = 348; + t.bar = 220; + t.braceright = 348; + t.asciitilde = 570; + t.exclamdown = 389; + t.cent = 500; + t.sterling = 500; + t.fraction = 167; + t.yen = 500; + t.florin = 500; + t.section = 500; + t.currency = 500; + t.quotesingle = 278; + t.quotedblleft = 500; + t.guillemotleft = 500; + t.guilsinglleft = 333; + t.guilsinglright = 333; + t.fi = 556; + t.fl = 556; + t.endash = 500; + t.dagger = 500; + t.daggerdbl = 500; + t.periodcentered = 250; + t.paragraph = 500; + t.bullet = 350; + t.quotesinglbase = 333; + t.quotedblbase = 500; + t.quotedblright = 500; + t.guillemotright = 500; + t.ellipsis = 1000; + t.perthousand = 1000; + t.questiondown = 500; + t.grave = 333; + t.acute = 333; + t.circumflex = 333; + t.tilde = 333; + t.macron = 333; + t.breve = 333; + t.dotaccent = 333; + t.dieresis = 333; + t.ring = 333; + t.cedilla = 333; + t.hungarumlaut = 333; + t.ogonek = 333; + t.caron = 333; + t.emdash = 1000; + t.AE = 944; + t.ordfeminine = 266; + t.Lslash = 611; + t.Oslash = 722; + t.OE = 944; + t.ordmasculine = 300; + t.ae = 722; + t.dotlessi = 278; + t.lslash = 278; + t.oslash = 500; + t.oe = 722; + t.germandbls = 500; + t.Idieresis = 389; + t.eacute = 444; + t.abreve = 500; + t.uhungarumlaut = 556; + t.ecaron = 444; + t.Ydieresis = 611; + t.divide = 570; + t.Yacute = 611; + t.Acircumflex = 667; + t.aacute = 500; + t.Ucircumflex = 722; + t.yacute = 444; + t.scommaaccent = 389; + t.ecircumflex = 444; + t.Uring = 722; + t.Udieresis = 722; + t.aogonek = 500; + t.Uacute = 722; + t.uogonek = 556; + t.Edieresis = 667; + t.Dcroat = 722; + t.commaaccent = 250; + t.copyright = 747; + t.Emacron = 667; + t.ccaron = 444; + t.aring = 500; + t.Ncommaaccent = 722; + t.lacute = 278; + t.agrave = 500; + t.Tcommaaccent = 611; + t.Cacute = 667; + t.atilde = 500; + t.Edotaccent = 667; + t.scaron = 389; + t.scedilla = 389; + t.iacute = 278; + t.lozenge = 494; + t.Rcaron = 667; + t.Gcommaaccent = 722; + t.ucircumflex = 556; + t.acircumflex = 500; + t.Amacron = 667; + t.rcaron = 389; + t.ccedilla = 444; + t.Zdotaccent = 611; + t.Thorn = 611; + t.Omacron = 722; + t.Racute = 667; + t.Sacute = 556; + t.dcaron = 608; + t.Umacron = 722; + t.uring = 556; + t.threesuperior = 300; + t.Ograve = 722; + t.Agrave = 667; + t.Abreve = 667; + t.multiply = 570; + t.uacute = 556; + t.Tcaron = 611; + t.partialdiff = 494; + t.ydieresis = 444; + t.Nacute = 722; + t.icircumflex = 278; + t.Ecircumflex = 667; + t.adieresis = 500; + t.edieresis = 444; + t.cacute = 444; + t.nacute = 556; + t.umacron = 556; + t.Ncaron = 722; + t.Iacute = 389; + t.plusminus = 570; + t.brokenbar = 220; + t.registered = 747; + t.Gbreve = 722; + t.Idotaccent = 389; + t.summation = 600; + t.Egrave = 667; + t.racute = 389; + t.omacron = 500; + t.Zacute = 611; + t.Zcaron = 611; + t.greaterequal = 549; + t.Eth = 722; + t.Ccedilla = 667; + t.lcommaaccent = 278; + t.tcaron = 366; + t.eogonek = 444; + t.Uogonek = 722; + t.Aacute = 667; + t.Adieresis = 667; + t.egrave = 444; + t.zacute = 389; + t.iogonek = 278; + t.Oacute = 722; + t.oacute = 500; + t.amacron = 500; + t.sacute = 389; + t.idieresis = 278; + t.Ocircumflex = 722; + t.Ugrave = 722; + t.Delta = 612; + t.thorn = 500; + t.twosuperior = 300; + t.Odieresis = 722; + t.mu = 576; + t.igrave = 278; + t.ohungarumlaut = 500; + t.Eogonek = 667; + t.dcroat = 500; + t.threequarters = 750; + t.Scedilla = 556; + t.lcaron = 382; + t.Kcommaaccent = 667; + t.Lacute = 611; + t.trademark = 1000; + t.edotaccent = 444; + t.Igrave = 389; + t.Imacron = 389; + t.Lcaron = 611; + t.onehalf = 750; + t.lessequal = 549; + t.ocircumflex = 500; + t.ntilde = 556; + t.Uhungarumlaut = 722; + t.Eacute = 667; + t.emacron = 444; + t.gbreve = 500; + t.onequarter = 750; + t.Scaron = 556; + t.Scommaaccent = 556; + t.Ohungarumlaut = 722; + t.degree = 400; + t.ograve = 500; + t.Ccaron = 667; + t.ugrave = 556; + t.radical = 549; + t.Dcaron = 722; + t.rcommaaccent = 389; + t.Ntilde = 722; + t.otilde = 500; + t.Rcommaaccent = 667; + t.Lcommaaccent = 611; + t.Atilde = 667; + t.Aogonek = 667; + t.Aring = 667; + t.Otilde = 722; + t.zdotaccent = 389; + t.Ecaron = 667; + t.Iogonek = 389; + t.kcommaaccent = 500; + t.minus = 606; + t.Icircumflex = 389; + t.ncaron = 556; + t.tcommaaccent = 278; + t.logicalnot = 606; + t.odieresis = 500; + t.udieresis = 556; + t.notequal = 549; + t.gcommaaccent = 500; + t.eth = 500; + t.zcaron = 389; + t.ncommaaccent = 556; + t.onesuperior = 300; + t.imacron = 278; + t.Euro = 500; + }); + t["Times-Italic"] = (0, _core_utils.getLookupTableFactory)(function (t) { + t.space = 250; + t.exclam = 333; + t.quotedbl = 420; + t.numbersign = 500; + t.dollar = 500; + t.percent = 833; + t.ampersand = 778; + t.quoteright = 333; + t.parenleft = 333; + t.parenright = 333; + t.asterisk = 500; + t.plus = 675; + t.comma = 250; + t.hyphen = 333; + t.period = 250; + t.slash = 278; + t.zero = 500; + t.one = 500; + t.two = 500; + t.three = 500; + t.four = 500; + t.five = 500; + t.six = 500; + t.seven = 500; + t.eight = 500; + t.nine = 500; + t.colon = 333; + t.semicolon = 333; + t.less = 675; + t.equal = 675; + t.greater = 675; + t.question = 500; + t.at = 920; + t.A = 611; + t.B = 611; + t.C = 667; + t.D = 722; + t.E = 611; + t.F = 611; + t.G = 722; + t.H = 722; + t.I = 333; + t.J = 444; + t.K = 667; + t.L = 556; + t.M = 833; + t.N = 667; + t.O = 722; + t.P = 611; + t.Q = 722; + t.R = 611; + t.S = 500; + t.T = 556; + t.U = 722; + t.V = 611; + t.W = 833; + t.X = 611; + t.Y = 556; + t.Z = 556; + t.bracketleft = 389; + t.backslash = 278; + t.bracketright = 389; + t.asciicircum = 422; + t.underscore = 500; + t.quoteleft = 333; + t.a = 500; + t.b = 500; + t.c = 444; + t.d = 500; + t.e = 444; + t.f = 278; + t.g = 500; + t.h = 500; + t.i = 278; + t.j = 278; + t.k = 444; + t.l = 278; + t.m = 722; + t.n = 500; + t.o = 500; + t.p = 500; + t.q = 500; + t.r = 389; + t.s = 389; + t.t = 278; + t.u = 500; + t.v = 444; + t.w = 667; + t.x = 444; + t.y = 444; + t.z = 389; + t.braceleft = 400; + t.bar = 275; + t.braceright = 400; + t.asciitilde = 541; + t.exclamdown = 389; + t.cent = 500; + t.sterling = 500; + t.fraction = 167; + t.yen = 500; + t.florin = 500; + t.section = 500; + t.currency = 500; + t.quotesingle = 214; + t.quotedblleft = 556; + t.guillemotleft = 500; + t.guilsinglleft = 333; + t.guilsinglright = 333; + t.fi = 500; + t.fl = 500; + t.endash = 500; + t.dagger = 500; + t.daggerdbl = 500; + t.periodcentered = 250; + t.paragraph = 523; + t.bullet = 350; + t.quotesinglbase = 333; + t.quotedblbase = 556; + t.quotedblright = 556; + t.guillemotright = 500; + t.ellipsis = 889; + t.perthousand = 1000; + t.questiondown = 500; + t.grave = 333; + t.acute = 333; + t.circumflex = 333; + t.tilde = 333; + t.macron = 333; + t.breve = 333; + t.dotaccent = 333; + t.dieresis = 333; + t.ring = 333; + t.cedilla = 333; + t.hungarumlaut = 333; + t.ogonek = 333; + t.caron = 333; + t.emdash = 889; + t.AE = 889; + t.ordfeminine = 276; + t.Lslash = 556; + t.Oslash = 722; + t.OE = 944; + t.ordmasculine = 310; + t.ae = 667; + t.dotlessi = 278; + t.lslash = 278; + t.oslash = 500; + t.oe = 667; + t.germandbls = 500; + t.Idieresis = 333; + t.eacute = 444; + t.abreve = 500; + t.uhungarumlaut = 500; + t.ecaron = 444; + t.Ydieresis = 556; + t.divide = 675; + t.Yacute = 556; + t.Acircumflex = 611; + t.aacute = 500; + t.Ucircumflex = 722; + t.yacute = 444; + t.scommaaccent = 389; + t.ecircumflex = 444; + t.Uring = 722; + t.Udieresis = 722; + t.aogonek = 500; + t.Uacute = 722; + t.uogonek = 500; + t.Edieresis = 611; + t.Dcroat = 722; + t.commaaccent = 250; + t.copyright = 760; + t.Emacron = 611; + t.ccaron = 444; + t.aring = 500; + t.Ncommaaccent = 667; + t.lacute = 278; + t.agrave = 500; + t.Tcommaaccent = 556; + t.Cacute = 667; + t.atilde = 500; + t.Edotaccent = 611; + t.scaron = 389; + t.scedilla = 389; + t.iacute = 278; + t.lozenge = 471; + t.Rcaron = 611; + t.Gcommaaccent = 722; + t.ucircumflex = 500; + t.acircumflex = 500; + t.Amacron = 611; + t.rcaron = 389; + t.ccedilla = 444; + t.Zdotaccent = 556; + t.Thorn = 611; + t.Omacron = 722; + t.Racute = 611; + t.Sacute = 500; + t.dcaron = 544; + t.Umacron = 722; + t.uring = 500; + t.threesuperior = 300; + t.Ograve = 722; + t.Agrave = 611; + t.Abreve = 611; + t.multiply = 675; + t.uacute = 500; + t.Tcaron = 556; + t.partialdiff = 476; + t.ydieresis = 444; + t.Nacute = 667; + t.icircumflex = 278; + t.Ecircumflex = 611; + t.adieresis = 500; + t.edieresis = 444; + t.cacute = 444; + t.nacute = 500; + t.umacron = 500; + t.Ncaron = 667; + t.Iacute = 333; + t.plusminus = 675; + t.brokenbar = 275; + t.registered = 760; + t.Gbreve = 722; + t.Idotaccent = 333; + t.summation = 600; + t.Egrave = 611; + t.racute = 389; + t.omacron = 500; + t.Zacute = 556; + t.Zcaron = 556; + t.greaterequal = 549; + t.Eth = 722; + t.Ccedilla = 667; + t.lcommaaccent = 278; + t.tcaron = 300; + t.eogonek = 444; + t.Uogonek = 722; + t.Aacute = 611; + t.Adieresis = 611; + t.egrave = 444; + t.zacute = 389; + t.iogonek = 278; + t.Oacute = 722; + t.oacute = 500; + t.amacron = 500; + t.sacute = 389; + t.idieresis = 278; + t.Ocircumflex = 722; + t.Ugrave = 722; + t.Delta = 612; + t.thorn = 500; + t.twosuperior = 300; + t.Odieresis = 722; + t.mu = 500; + t.igrave = 278; + t.ohungarumlaut = 500; + t.Eogonek = 611; + t.dcroat = 500; + t.threequarters = 750; + t.Scedilla = 500; + t.lcaron = 300; + t.Kcommaaccent = 667; + t.Lacute = 556; + t.trademark = 980; + t.edotaccent = 444; + t.Igrave = 333; + t.Imacron = 333; + t.Lcaron = 611; + t.onehalf = 750; + t.lessequal = 549; + t.ocircumflex = 500; + t.ntilde = 500; + t.Uhungarumlaut = 722; + t.Eacute = 611; + t.emacron = 444; + t.gbreve = 500; + t.onequarter = 750; + t.Scaron = 500; + t.Scommaaccent = 500; + t.Ohungarumlaut = 722; + t.degree = 400; + t.ograve = 500; + t.Ccaron = 667; + t.ugrave = 500; + t.radical = 453; + t.Dcaron = 722; + t.rcommaaccent = 389; + t.Ntilde = 667; + t.otilde = 500; + t.Rcommaaccent = 611; + t.Lcommaaccent = 556; + t.Atilde = 611; + t.Aogonek = 611; + t.Aring = 611; + t.Otilde = 722; + t.zdotaccent = 389; + t.Ecaron = 611; + t.Iogonek = 333; + t.kcommaaccent = 444; + t.minus = 675; + t.Icircumflex = 333; + t.ncaron = 500; + t.tcommaaccent = 278; + t.logicalnot = 675; + t.odieresis = 500; + t.udieresis = 500; + t.notequal = 549; + t.gcommaaccent = 500; + t.eth = 500; + t.zcaron = 389; + t.ncommaaccent = 500; + t.onesuperior = 300; + t.imacron = 278; + t.Euro = 500; + }); + t.ZapfDingbats = (0, _core_utils.getLookupTableFactory)(function (t) { + t.space = 278; + t.a1 = 974; + t.a2 = 961; + t.a202 = 974; + t.a3 = 980; + t.a4 = 719; + t.a5 = 789; + t.a119 = 790; + t.a118 = 791; + t.a117 = 690; + t.a11 = 960; + t.a12 = 939; + t.a13 = 549; + t.a14 = 855; + t.a15 = 911; + t.a16 = 933; + t.a105 = 911; + t.a17 = 945; + t.a18 = 974; + t.a19 = 755; + t.a20 = 846; + t.a21 = 762; + t.a22 = 761; + t.a23 = 571; + t.a24 = 677; + t.a25 = 763; + t.a26 = 760; + t.a27 = 759; + t.a28 = 754; + t.a6 = 494; + t.a7 = 552; + t.a8 = 537; + t.a9 = 577; + t.a10 = 692; + t.a29 = 786; + t.a30 = 788; + t.a31 = 788; + t.a32 = 790; + t.a33 = 793; + t.a34 = 794; + t.a35 = 816; + t.a36 = 823; + t.a37 = 789; + t.a38 = 841; + t.a39 = 823; + t.a40 = 833; + t.a41 = 816; + t.a42 = 831; + t.a43 = 923; + t.a44 = 744; + t.a45 = 723; + t.a46 = 749; + t.a47 = 790; + t.a48 = 792; + t.a49 = 695; + t.a50 = 776; + t.a51 = 768; + t.a52 = 792; + t.a53 = 759; + t.a54 = 707; + t.a55 = 708; + t.a56 = 682; + t.a57 = 701; + t.a58 = 826; + t.a59 = 815; + t.a60 = 789; + t.a61 = 789; + t.a62 = 707; + t.a63 = 687; + t.a64 = 696; + t.a65 = 689; + t.a66 = 786; + t.a67 = 787; + t.a68 = 713; + t.a69 = 791; + t.a70 = 785; + t.a71 = 791; + t.a72 = 873; + t.a73 = 761; + t.a74 = 762; + t.a203 = 762; + t.a75 = 759; + t.a204 = 759; + t.a76 = 892; + t.a77 = 892; + t.a78 = 788; + t.a79 = 784; + t.a81 = 438; + t.a82 = 138; + t.a83 = 277; + t.a84 = 415; + t.a97 = 392; + t.a98 = 392; + t.a99 = 668; + t.a100 = 668; + t.a89 = 390; + t.a90 = 390; + t.a93 = 317; + t.a94 = 317; + t.a91 = 276; + t.a92 = 276; + t.a205 = 509; + t.a85 = 509; + t.a206 = 410; + t.a86 = 410; + t.a87 = 234; + t.a88 = 234; + t.a95 = 334; + t.a96 = 334; + t.a101 = 732; + t.a102 = 544; + t.a103 = 544; + t.a104 = 910; + t.a106 = 667; + t.a107 = 760; + t.a108 = 760; + t.a112 = 776; + t.a111 = 595; + t.a110 = 694; + t.a109 = 626; + t.a120 = 788; + t.a121 = 788; + t.a122 = 788; + t.a123 = 788; + t.a124 = 788; + t.a125 = 788; + t.a126 = 788; + t.a127 = 788; + t.a128 = 788; + t.a129 = 788; + t.a130 = 788; + t.a131 = 788; + t.a132 = 788; + t.a133 = 788; + t.a134 = 788; + t.a135 = 788; + t.a136 = 788; + t.a137 = 788; + t.a138 = 788; + t.a139 = 788; + t.a140 = 788; + t.a141 = 788; + t.a142 = 788; + t.a143 = 788; + t.a144 = 788; + t.a145 = 788; + t.a146 = 788; + t.a147 = 788; + t.a148 = 788; + t.a149 = 788; + t.a150 = 788; + t.a151 = 788; + t.a152 = 788; + t.a153 = 788; + t.a154 = 788; + t.a155 = 788; + t.a156 = 788; + t.a157 = 788; + t.a158 = 788; + t.a159 = 788; + t.a160 = 894; + t.a161 = 838; + t.a163 = 1016; + t.a164 = 458; + t.a196 = 748; + t.a165 = 924; + t.a192 = 748; + t.a166 = 918; + t.a167 = 927; + t.a168 = 928; + t.a169 = 928; + t.a170 = 834; + t.a171 = 873; + t.a172 = 828; + t.a173 = 924; + t.a162 = 924; + t.a174 = 917; + t.a175 = 930; + t.a176 = 931; + t.a177 = 463; + t.a178 = 883; + t.a179 = 836; + t.a193 = 836; + t.a180 = 867; + t.a199 = 867; + t.a181 = 696; + t.a200 = 696; + t.a182 = 874; + t.a201 = 874; + t.a183 = 760; + t.a184 = 946; + t.a197 = 771; + t.a185 = 865; + t.a194 = 771; + t.a198 = 888; + t.a186 = 967; + t.a195 = 888; + t.a187 = 831; + t.a188 = 873; + t.a189 = 927; + t.a190 = 970; + t.a191 = 918; + }); +}); +exports.getMetrics = getMetrics; +const getFontBasicMetrics = (0, _core_utils.getLookupTableFactory)(function (t) { + t.Courier = { + ascent: 629, + descent: -157, + capHeight: 562, + xHeight: -426 + }; + t["Courier-Bold"] = { + ascent: 629, + descent: -157, + capHeight: 562, + xHeight: 439 + }; + t["Courier-Oblique"] = { + ascent: 629, + descent: -157, + capHeight: 562, + xHeight: 426 + }; + t["Courier-BoldOblique"] = { + ascent: 629, + descent: -157, + capHeight: 562, + xHeight: 426 + }; + t.Helvetica = { + ascent: 718, + descent: -207, + capHeight: 718, + xHeight: 523 + }; + t["Helvetica-Bold"] = { + ascent: 718, + descent: -207, + capHeight: 718, + xHeight: 532 + }; + t["Helvetica-Oblique"] = { + ascent: 718, + descent: -207, + capHeight: 718, + xHeight: 523 + }; + t["Helvetica-BoldOblique"] = { + ascent: 718, + descent: -207, + capHeight: 718, + xHeight: 532 + }; + t["Times-Roman"] = { + ascent: 683, + descent: -217, + capHeight: 662, + xHeight: 450 + }; + t["Times-Bold"] = { + ascent: 683, + descent: -217, + capHeight: 676, + xHeight: 461 + }; + t["Times-Italic"] = { + ascent: 683, + descent: -217, + capHeight: 653, + xHeight: 441 + }; + t["Times-BoldItalic"] = { + ascent: 683, + descent: -217, + capHeight: 669, + xHeight: 462 + }; + t.Symbol = { + ascent: Math.NaN, + descent: Math.NaN, + capHeight: Math.NaN, + xHeight: Math.NaN + }; + t.ZapfDingbats = { + ascent: Math.NaN, + descent: Math.NaN, + capHeight: Math.NaN, + xHeight: Math.NaN + }; +}); +exports.getFontBasicMetrics = getFontBasicMetrics; + +/***/ }), +/* 46 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GlyfTable = void 0; +const ON_CURVE_POINT = 1 << 0; +const X_SHORT_VECTOR = 1 << 1; +const Y_SHORT_VECTOR = 1 << 2; +const REPEAT_FLAG = 1 << 3; +const X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR = 1 << 4; +const Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR = 1 << 5; +const OVERLAP_SIMPLE = 1 << 6; +const ARG_1_AND_2_ARE_WORDS = 1 << 0; +const ARGS_ARE_XY_VALUES = 1 << 1; +const WE_HAVE_A_SCALE = 1 << 3; +const MORE_COMPONENTS = 1 << 5; +const WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6; +const WE_HAVE_A_TWO_BY_TWO = 1 << 7; +const WE_HAVE_INSTRUCTIONS = 1 << 8; +class GlyfTable { + constructor({ + glyfTable, + isGlyphLocationsLong, + locaTable, + numGlyphs + }) { + this.glyphs = []; + const loca = new DataView(locaTable.buffer, locaTable.byteOffset, locaTable.byteLength); + const glyf = new DataView(glyfTable.buffer, glyfTable.byteOffset, glyfTable.byteLength); + const offsetSize = isGlyphLocationsLong ? 4 : 2; + let prev = isGlyphLocationsLong ? loca.getUint32(0) : 2 * loca.getUint16(0); + let pos = 0; + for (let i = 0; i < numGlyphs; i++) { + pos += offsetSize; + const next = isGlyphLocationsLong ? loca.getUint32(pos) : 2 * loca.getUint16(pos); + if (next === prev) { + this.glyphs.push(new Glyph({})); + continue; + } + const glyph = Glyph.parse(prev, glyf); + this.glyphs.push(glyph); + prev = next; + } + } + getSize() { + return this.glyphs.reduce((a, g) => { + const size = g.getSize(); + return a + (size + 3 & ~3); + }, 0); + } + write() { + const totalSize = this.getSize(); + const glyfTable = new DataView(new ArrayBuffer(totalSize)); + const isLocationLong = totalSize > 0x1fffe; + const offsetSize = isLocationLong ? 4 : 2; + const locaTable = new DataView(new ArrayBuffer((this.glyphs.length + 1) * offsetSize)); + if (isLocationLong) { + locaTable.setUint32(0, 0); + } else { + locaTable.setUint16(0, 0); + } + let pos = 0; + let locaIndex = 0; + for (const glyph of this.glyphs) { + pos += glyph.write(pos, glyfTable); + pos = pos + 3 & ~3; + locaIndex += offsetSize; + if (isLocationLong) { + locaTable.setUint32(locaIndex, pos); + } else { + locaTable.setUint16(locaIndex, pos >> 1); + } + } + return { + isLocationLong, + loca: new Uint8Array(locaTable.buffer), + glyf: new Uint8Array(glyfTable.buffer) + }; + } + scale(factors) { + for (let i = 0, ii = this.glyphs.length; i < ii; i++) { + this.glyphs[i].scale(factors[i]); + } + } +} +exports.GlyfTable = GlyfTable; +class Glyph { + constructor({ + header = null, + simple = null, + composites = null + }) { + this.header = header; + this.simple = simple; + this.composites = composites; + } + static parse(pos, glyf) { + const [read, header] = GlyphHeader.parse(pos, glyf); + pos += read; + if (header.numberOfContours < 0) { + const composites = []; + while (true) { + const [n, composite] = CompositeGlyph.parse(pos, glyf); + pos += n; + composites.push(composite); + if (!(composite.flags & MORE_COMPONENTS)) { + break; + } + } + return new Glyph({ + header, + composites + }); + } + const simple = SimpleGlyph.parse(pos, glyf, header.numberOfContours); + return new Glyph({ + header, + simple + }); + } + getSize() { + if (!this.header) { + return 0; + } + const size = this.simple ? this.simple.getSize() : this.composites.reduce((a, c) => a + c.getSize(), 0); + return this.header.getSize() + size; + } + write(pos, buf) { + if (!this.header) { + return 0; + } + const spos = pos; + pos += this.header.write(pos, buf); + if (this.simple) { + pos += this.simple.write(pos, buf); + } else { + for (const composite of this.composites) { + pos += composite.write(pos, buf); + } + } + return pos - spos; + } + scale(factor) { + if (!this.header) { + return; + } + const xMiddle = (this.header.xMin + this.header.xMax) / 2; + this.header.scale(xMiddle, factor); + if (this.simple) { + this.simple.scale(xMiddle, factor); + } else { + for (const composite of this.composites) { + composite.scale(xMiddle, factor); + } + } + } +} +class GlyphHeader { + constructor({ + numberOfContours, + xMin, + yMin, + xMax, + yMax + }) { + this.numberOfContours = numberOfContours; + this.xMin = xMin; + this.yMin = yMin; + this.xMax = xMax; + this.yMax = yMax; + } + static parse(pos, glyf) { + return [10, new GlyphHeader({ + numberOfContours: glyf.getInt16(pos), + xMin: glyf.getInt16(pos + 2), + yMin: glyf.getInt16(pos + 4), + xMax: glyf.getInt16(pos + 6), + yMax: glyf.getInt16(pos + 8) + })]; + } + getSize() { + return 10; + } + write(pos, buf) { + buf.setInt16(pos, this.numberOfContours); + buf.setInt16(pos + 2, this.xMin); + buf.setInt16(pos + 4, this.yMin); + buf.setInt16(pos + 6, this.xMax); + buf.setInt16(pos + 8, this.yMax); + return 10; + } + scale(x, factor) { + this.xMin = Math.round(x + (this.xMin - x) * factor); + this.xMax = Math.round(x + (this.xMax - x) * factor); + } +} +class Contour { + constructor({ + flags, + xCoordinates, + yCoordinates + }) { + this.xCoordinates = xCoordinates; + this.yCoordinates = yCoordinates; + this.flags = flags; + } +} +class SimpleGlyph { + constructor({ + contours, + instructions + }) { + this.contours = contours; + this.instructions = instructions; + } + static parse(pos, glyf, numberOfContours) { + const endPtsOfContours = []; + for (let i = 0; i < numberOfContours; i++) { + const endPt = glyf.getUint16(pos); + pos += 2; + endPtsOfContours.push(endPt); + } + const numberOfPt = endPtsOfContours[numberOfContours - 1] + 1; + const instructionLength = glyf.getUint16(pos); + pos += 2; + const instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength); + pos += instructionLength; + const flags = []; + for (let i = 0; i < numberOfPt; pos++, i++) { + let flag = glyf.getUint8(pos); + flags.push(flag); + if (flag & REPEAT_FLAG) { + const count = glyf.getUint8(++pos); + flag ^= REPEAT_FLAG; + for (let m = 0; m < count; m++) { + flags.push(flag); + } + i += count; + } + } + const allXCoordinates = []; + let xCoordinates = []; + let yCoordinates = []; + let pointFlags = []; + const contours = []; + let endPtsOfContoursIndex = 0; + let lastCoordinate = 0; + for (let i = 0; i < numberOfPt; i++) { + const flag = flags[i]; + if (flag & X_SHORT_VECTOR) { + const x = glyf.getUint8(pos++); + lastCoordinate += flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR ? x : -x; + xCoordinates.push(lastCoordinate); + } else if (flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR) { + xCoordinates.push(lastCoordinate); + } else { + lastCoordinate += glyf.getInt16(pos); + pos += 2; + xCoordinates.push(lastCoordinate); + } + if (endPtsOfContours[endPtsOfContoursIndex] === i) { + endPtsOfContoursIndex++; + allXCoordinates.push(xCoordinates); + xCoordinates = []; + } + } + lastCoordinate = 0; + endPtsOfContoursIndex = 0; + for (let i = 0; i < numberOfPt; i++) { + const flag = flags[i]; + if (flag & Y_SHORT_VECTOR) { + const y = glyf.getUint8(pos++); + lastCoordinate += flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR ? y : -y; + yCoordinates.push(lastCoordinate); + } else if (flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR) { + yCoordinates.push(lastCoordinate); + } else { + lastCoordinate += glyf.getInt16(pos); + pos += 2; + yCoordinates.push(lastCoordinate); + } + pointFlags.push(flag & ON_CURVE_POINT | flag & OVERLAP_SIMPLE); + if (endPtsOfContours[endPtsOfContoursIndex] === i) { + xCoordinates = allXCoordinates[endPtsOfContoursIndex]; + endPtsOfContoursIndex++; + contours.push(new Contour({ + flags: pointFlags, + xCoordinates, + yCoordinates + })); + yCoordinates = []; + pointFlags = []; + } + } + return new SimpleGlyph({ + contours, + instructions + }); + } + getSize() { + let size = this.contours.length * 2 + 2 + this.instructions.length; + let lastX = 0; + let lastY = 0; + for (const contour of this.contours) { + size += contour.flags.length; + for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) { + const x = contour.xCoordinates[i]; + const y = contour.yCoordinates[i]; + let abs = Math.abs(x - lastX); + if (abs > 255) { + size += 2; + } else if (abs > 0) { + size += 1; + } + lastX = x; + abs = Math.abs(y - lastY); + if (abs > 255) { + size += 2; + } else if (abs > 0) { + size += 1; + } + lastY = y; + } + } + return size; + } + write(pos, buf) { + const spos = pos; + const xCoordinates = []; + const yCoordinates = []; + const flags = []; + let lastX = 0; + let lastY = 0; + for (const contour of this.contours) { + for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) { + let flag = contour.flags[i]; + const x = contour.xCoordinates[i]; + let delta = x - lastX; + if (delta === 0) { + flag |= X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR; + xCoordinates.push(0); + } else { + const abs = Math.abs(delta); + if (abs <= 255) { + flag |= delta >= 0 ? X_SHORT_VECTOR | X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR : X_SHORT_VECTOR; + xCoordinates.push(abs); + } else { + xCoordinates.push(delta); + } + } + lastX = x; + const y = contour.yCoordinates[i]; + delta = y - lastY; + if (delta === 0) { + flag |= Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR; + yCoordinates.push(0); + } else { + const abs = Math.abs(delta); + if (abs <= 255) { + flag |= delta >= 0 ? Y_SHORT_VECTOR | Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR : Y_SHORT_VECTOR; + yCoordinates.push(abs); + } else { + yCoordinates.push(delta); + } + } + lastY = y; + flags.push(flag); + } + buf.setUint16(pos, xCoordinates.length - 1); + pos += 2; + } + buf.setUint16(pos, this.instructions.length); + pos += 2; + if (this.instructions.length) { + new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(this.instructions, pos); + pos += this.instructions.length; + } + for (const flag of flags) { + buf.setUint8(pos++, flag); + } + for (let i = 0, ii = xCoordinates.length; i < ii; i++) { + const x = xCoordinates[i]; + const flag = flags[i]; + if (flag & X_SHORT_VECTOR) { + buf.setUint8(pos++, x); + } else if (!(flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR)) { + buf.setInt16(pos, x); + pos += 2; + } + } + for (let i = 0, ii = yCoordinates.length; i < ii; i++) { + const y = yCoordinates[i]; + const flag = flags[i]; + if (flag & Y_SHORT_VECTOR) { + buf.setUint8(pos++, y); + } else if (!(flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR)) { + buf.setInt16(pos, y); + pos += 2; + } + } + return pos - spos; + } + scale(x, factor) { + for (const contour of this.contours) { + if (contour.xCoordinates.length === 0) { + continue; + } + for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) { + contour.xCoordinates[i] = Math.round(x + (contour.xCoordinates[i] - x) * factor); + } + } + } +} +class CompositeGlyph { + constructor({ + flags, + glyphIndex, + argument1, + argument2, + transf, + instructions + }) { + this.flags = flags; + this.glyphIndex = glyphIndex; + this.argument1 = argument1; + this.argument2 = argument2; + this.transf = transf; + this.instructions = instructions; + } + static parse(pos, glyf) { + const spos = pos; + const transf = []; + let flags = glyf.getUint16(pos); + const glyphIndex = glyf.getUint16(pos + 2); + pos += 4; + let argument1, argument2; + if (flags & ARG_1_AND_2_ARE_WORDS) { + if (flags & ARGS_ARE_XY_VALUES) { + argument1 = glyf.getInt16(pos); + argument2 = glyf.getInt16(pos + 2); + } else { + argument1 = glyf.getUint16(pos); + argument2 = glyf.getUint16(pos + 2); + } + pos += 4; + flags ^= ARG_1_AND_2_ARE_WORDS; + } else { + if (flags & ARGS_ARE_XY_VALUES) { + argument1 = glyf.getInt8(pos); + argument2 = glyf.getInt8(pos + 1); + } else { + argument1 = glyf.getUint8(pos); + argument2 = glyf.getUint8(pos + 1); + } + pos += 2; + } + if (flags & WE_HAVE_A_SCALE) { + transf.push(glyf.getUint16(pos)); + pos += 2; + } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) { + transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2)); + pos += 4; + } else if (flags & WE_HAVE_A_TWO_BY_TWO) { + transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2), glyf.getUint16(pos + 4), glyf.getUint16(pos + 6)); + pos += 8; + } + let instructions = null; + if (flags & WE_HAVE_INSTRUCTIONS) { + const instructionLength = glyf.getUint16(pos); + pos += 2; + instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength); + pos += instructionLength; + } + return [pos - spos, new CompositeGlyph({ + flags, + glyphIndex, + argument1, + argument2, + transf, + instructions + })]; + } + getSize() { + let size = 2 + 2 + this.transf.length * 2; + if (this.flags & WE_HAVE_INSTRUCTIONS) { + size += 2 + this.instructions.length; + } + size += 2; + if (this.flags & 2) { + if (!(this.argument1 >= -128 && this.argument1 <= 127 && this.argument2 >= -128 && this.argument2 <= 127)) { + size += 2; + } + } else { + if (!(this.argument1 >= 0 && this.argument1 <= 255 && this.argument2 >= 0 && this.argument2 <= 255)) { + size += 2; + } + } + return size; + } + write(pos, buf) { + const spos = pos; + if (this.flags & ARGS_ARE_XY_VALUES) { + if (!(this.argument1 >= -128 && this.argument1 <= 127 && this.argument2 >= -128 && this.argument2 <= 127)) { + this.flags |= ARG_1_AND_2_ARE_WORDS; + } + } else { + if (!(this.argument1 >= 0 && this.argument1 <= 255 && this.argument2 >= 0 && this.argument2 <= 255)) { + this.flags |= ARG_1_AND_2_ARE_WORDS; + } + } + buf.setUint16(pos, this.flags); + buf.setUint16(pos + 2, this.glyphIndex); + pos += 4; + if (this.flags & ARG_1_AND_2_ARE_WORDS) { + if (this.flags & ARGS_ARE_XY_VALUES) { + buf.setInt16(pos, this.argument1); + buf.setInt16(pos + 2, this.argument2); + } else { + buf.setUint16(pos, this.argument1); + buf.setUint16(pos + 2, this.argument2); + } + pos += 4; + } else { + buf.setUint8(pos, this.argument1); + buf.setUint8(pos + 1, this.argument2); + pos += 2; + } + if (this.flags & WE_HAVE_INSTRUCTIONS) { + buf.setUint16(pos, this.instructions.length); + pos += 2; + if (this.instructions.length) { + new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(this.instructions, pos); + pos += this.instructions.length; + } + } + return pos - spos; + } + scale(x, factor) {} +} + +/***/ }), +/* 47 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.OpenTypeFileBuilder = void 0; +var _core_utils = __w_pdfjs_require__(3); +var _util = __w_pdfjs_require__(2); +function writeInt16(dest, offset, num) { + dest[offset] = num >> 8 & 0xff; + dest[offset + 1] = num & 0xff; +} +function writeInt32(dest, offset, num) { + dest[offset] = num >> 24 & 0xff; + dest[offset + 1] = num >> 16 & 0xff; + dest[offset + 2] = num >> 8 & 0xff; + dest[offset + 3] = num & 0xff; +} +function writeData(dest, offset, data) { + if (data instanceof Uint8Array) { + dest.set(data, offset); + } else if (typeof data === "string") { + for (let i = 0, ii = data.length; i < ii; i++) { + dest[offset++] = data.charCodeAt(i) & 0xff; + } + } else { + for (const num of data) { + dest[offset++] = num & 0xff; + } + } +} +const OTF_HEADER_SIZE = 12; +const OTF_TABLE_ENTRY_SIZE = 16; +class OpenTypeFileBuilder { + constructor(sfnt) { + this.sfnt = sfnt; + this.tables = Object.create(null); + } + static getSearchParams(entriesCount, entrySize) { + let maxPower2 = 1, + log2 = 0; + while ((maxPower2 ^ entriesCount) > maxPower2) { + maxPower2 <<= 1; + log2++; + } + const searchRange = maxPower2 * entrySize; + return { + range: searchRange, + entry: log2, + rangeShift: entrySize * entriesCount - searchRange + }; + } + toArray() { + let sfnt = this.sfnt; + const tables = this.tables; + const tablesNames = Object.keys(tables); + tablesNames.sort(); + const numTables = tablesNames.length; + let i, j, jj, table, tableName; + let offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE; + const tableOffsets = [offset]; + for (i = 0; i < numTables; i++) { + table = tables[tablesNames[i]]; + const paddedLength = (table.length + 3 & ~3) >>> 0; + offset += paddedLength; + tableOffsets.push(offset); + } + const file = new Uint8Array(offset); + for (i = 0; i < numTables; i++) { + table = tables[tablesNames[i]]; + writeData(file, tableOffsets[i], table); + } + if (sfnt === "true") { + sfnt = (0, _util.string32)(0x00010000); + } + file[0] = sfnt.charCodeAt(0) & 0xff; + file[1] = sfnt.charCodeAt(1) & 0xff; + file[2] = sfnt.charCodeAt(2) & 0xff; + file[3] = sfnt.charCodeAt(3) & 0xff; + writeInt16(file, 4, numTables); + const searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16); + writeInt16(file, 6, searchParams.range); + writeInt16(file, 8, searchParams.entry); + writeInt16(file, 10, searchParams.rangeShift); + offset = OTF_HEADER_SIZE; + for (i = 0; i < numTables; i++) { + tableName = tablesNames[i]; + file[offset] = tableName.charCodeAt(0) & 0xff; + file[offset + 1] = tableName.charCodeAt(1) & 0xff; + file[offset + 2] = tableName.charCodeAt(2) & 0xff; + file[offset + 3] = tableName.charCodeAt(3) & 0xff; + let checksum = 0; + for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) { + const quad = (0, _core_utils.readUint32)(file, j); + checksum = checksum + quad >>> 0; + } + writeInt32(file, offset + 4, checksum); + writeInt32(file, offset + 8, tableOffsets[i]); + writeInt32(file, offset + 12, tables[tableName].length); + offset += OTF_TABLE_ENTRY_SIZE; + } + return file; + } + addTable(tag, data) { + if (tag in this.tables) { + throw new Error("Table " + tag + " already exists"); + } + this.tables[tag] = data; + } +} +exports.OpenTypeFileBuilder = OpenTypeFileBuilder; + +/***/ }), +/* 48 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Type1Font = void 0; +var _cff_parser = __w_pdfjs_require__(35); +var _util = __w_pdfjs_require__(2); +var _fonts_utils = __w_pdfjs_require__(38); +var _core_utils = __w_pdfjs_require__(3); +var _stream = __w_pdfjs_require__(8); +var _type1_parser = __w_pdfjs_require__(49); +function findBlock(streamBytes, signature, startIndex) { + const streamBytesLength = streamBytes.length; + const signatureLength = signature.length; + const scanLength = streamBytesLength - signatureLength; + let i = startIndex, + found = false; + while (i < scanLength) { + let j = 0; + while (j < signatureLength && streamBytes[i + j] === signature[j]) { + j++; + } + if (j >= signatureLength) { + i += j; + while (i < streamBytesLength && (0, _core_utils.isWhiteSpace)(streamBytes[i])) { + i++; + } + found = true; + break; + } + i++; + } + return { + found, + length: i + }; +} +function getHeaderBlock(stream, suggestedLength) { + const EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63]; + const streamStartPos = stream.pos; + let headerBytes, headerBytesLength, block; + try { + headerBytes = stream.getBytes(suggestedLength); + headerBytesLength = headerBytes.length; + } catch {} + if (headerBytesLength === suggestedLength) { + block = findBlock(headerBytes, EEXEC_SIGNATURE, suggestedLength - 2 * EEXEC_SIGNATURE.length); + if (block.found && block.length === suggestedLength) { + return { + stream: new _stream.Stream(headerBytes), + length: suggestedLength + }; + } + } + (0, _util.warn)('Invalid "Length1" property in Type1 font -- trying to recover.'); + stream.pos = streamStartPos; + const SCAN_BLOCK_LENGTH = 2048; + let actualLength; + while (true) { + const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH); + block = findBlock(scanBytes, EEXEC_SIGNATURE, 0); + if (block.length === 0) { + break; + } + stream.pos += block.length; + if (block.found) { + actualLength = stream.pos - streamStartPos; + break; + } + } + stream.pos = streamStartPos; + if (actualLength) { + return { + stream: new _stream.Stream(stream.getBytes(actualLength)), + length: actualLength + }; + } + (0, _util.warn)('Unable to recover "Length1" property in Type1 font -- using as is.'); + return { + stream: new _stream.Stream(stream.getBytes(suggestedLength)), + length: suggestedLength + }; +} +function getEexecBlock(stream, suggestedLength) { + const eexecBytes = stream.getBytes(); + if (eexecBytes.length === 0) { + throw new _util.FormatError("getEexecBlock - no font program found."); + } + return { + stream: new _stream.Stream(eexecBytes), + length: eexecBytes.length + }; +} +class Type1Font { + constructor(name, file, properties) { + const PFB_HEADER_SIZE = 6; + let headerBlockLength = properties.length1; + let eexecBlockLength = properties.length2; + let pfbHeader = file.peekBytes(PFB_HEADER_SIZE); + const pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01; + if (pfbHeaderPresent) { + file.skip(PFB_HEADER_SIZE); + headerBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2]; + } + const headerBlock = getHeaderBlock(file, headerBlockLength); + const headerBlockParser = new _type1_parser.Type1Parser(headerBlock.stream, false, _fonts_utils.SEAC_ANALYSIS_ENABLED); + headerBlockParser.extractFontHeader(properties); + if (pfbHeaderPresent) { + pfbHeader = file.getBytes(PFB_HEADER_SIZE); + eexecBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2]; + } + const eexecBlock = getEexecBlock(file, eexecBlockLength); + const eexecBlockParser = new _type1_parser.Type1Parser(eexecBlock.stream, true, _fonts_utils.SEAC_ANALYSIS_ENABLED); + const data = eexecBlockParser.extractFontProgram(properties); + for (const key in data.properties) { + properties[key] = data.properties[key]; + } + const charstrings = data.charstrings; + const type2Charstrings = this.getType2Charstrings(charstrings); + const subrs = this.getType2Subrs(data.subrs); + this.charstrings = charstrings; + this.data = this.wrap(name, type2Charstrings, this.charstrings, subrs, properties); + this.seacs = this.getSeacs(data.charstrings); + } + get numGlyphs() { + return this.charstrings.length + 1; + } + getCharset() { + const charset = [".notdef"]; + for (const { + glyphName + } of this.charstrings) { + charset.push(glyphName); + } + return charset; + } + getGlyphMapping(properties) { + const charstrings = this.charstrings; + if (properties.composite) { + const charCodeToGlyphId = Object.create(null); + for (let glyphId = 0, charstringsLen = charstrings.length; glyphId < charstringsLen; glyphId++) { + const charCode = properties.cMap.charCodeOf(glyphId); + charCodeToGlyphId[charCode] = glyphId + 1; + } + return charCodeToGlyphId; + } + const glyphNames = [".notdef"]; + let builtInEncoding, glyphId; + for (glyphId = 0; glyphId < charstrings.length; glyphId++) { + glyphNames.push(charstrings[glyphId].glyphName); + } + const encoding = properties.builtInEncoding; + if (encoding) { + builtInEncoding = Object.create(null); + for (const charCode in encoding) { + glyphId = glyphNames.indexOf(encoding[charCode]); + if (glyphId >= 0) { + builtInEncoding[charCode] = glyphId; + } + } + } + return (0, _fonts_utils.type1FontGlyphMapping)(properties, builtInEncoding, glyphNames); + } + hasGlyphId(id) { + if (id < 0 || id >= this.numGlyphs) { + return false; + } + if (id === 0) { + return true; + } + const glyph = this.charstrings[id - 1]; + return glyph.charstring.length > 0; + } + getSeacs(charstrings) { + const seacMap = []; + for (let i = 0, ii = charstrings.length; i < ii; i++) { + const charstring = charstrings[i]; + if (charstring.seac) { + seacMap[i + 1] = charstring.seac; + } + } + return seacMap; + } + getType2Charstrings(type1Charstrings) { + const type2Charstrings = []; + for (const type1Charstring of type1Charstrings) { + type2Charstrings.push(type1Charstring.charstring); + } + return type2Charstrings; + } + getType2Subrs(type1Subrs) { + let bias = 0; + const count = type1Subrs.length; + if (count < 1133) { + bias = 107; + } else if (count < 33769) { + bias = 1131; + } else { + bias = 32768; + } + const type2Subrs = []; + let i; + for (i = 0; i < bias; i++) { + type2Subrs.push([0x0b]); + } + for (i = 0; i < count; i++) { + type2Subrs.push(type1Subrs[i]); + } + return type2Subrs; + } + wrap(name, glyphs, charstrings, subrs, properties) { + const cff = new _cff_parser.CFF(); + cff.header = new _cff_parser.CFFHeader(1, 0, 4, 4); + cff.names = [name]; + const topDict = new _cff_parser.CFFTopDict(); + topDict.setByName("version", 391); + topDict.setByName("Notice", 392); + topDict.setByName("FullName", 393); + topDict.setByName("FamilyName", 394); + topDict.setByName("Weight", 395); + topDict.setByName("Encoding", null); + topDict.setByName("FontMatrix", properties.fontMatrix); + topDict.setByName("FontBBox", properties.bbox); + topDict.setByName("charset", null); + topDict.setByName("CharStrings", null); + topDict.setByName("Private", null); + cff.topDict = topDict; + const strings = new _cff_parser.CFFStrings(); + strings.add("Version 0.11"); + strings.add("See original notice"); + strings.add(name); + strings.add(name); + strings.add("Medium"); + cff.strings = strings; + cff.globalSubrIndex = new _cff_parser.CFFIndex(); + const count = glyphs.length; + const charsetArray = [".notdef"]; + let i, ii; + for (i = 0; i < count; i++) { + const glyphName = charstrings[i].glyphName; + const index = _cff_parser.CFFStandardStrings.indexOf(glyphName); + if (index === -1) { + strings.add(glyphName); + } + charsetArray.push(glyphName); + } + cff.charset = new _cff_parser.CFFCharset(false, 0, charsetArray); + const charStringsIndex = new _cff_parser.CFFIndex(); + charStringsIndex.add([0x8b, 0x0e]); + for (i = 0; i < count; i++) { + charStringsIndex.add(glyphs[i]); + } + cff.charStrings = charStringsIndex; + const privateDict = new _cff_parser.CFFPrivateDict(); + privateDict.setByName("Subrs", null); + const fields = ["BlueValues", "OtherBlues", "FamilyBlues", "FamilyOtherBlues", "StemSnapH", "StemSnapV", "BlueShift", "BlueFuzz", "BlueScale", "LanguageGroup", "ExpansionFactor", "ForceBold", "StdHW", "StdVW"]; + for (i = 0, ii = fields.length; i < ii; i++) { + const field = fields[i]; + if (!(field in properties.privateData)) { + continue; + } + const value = properties.privateData[field]; + if (Array.isArray(value)) { + for (let j = value.length - 1; j > 0; j--) { + value[j] -= value[j - 1]; + } + } + privateDict.setByName(field, value); + } + cff.topDict.privateDict = privateDict; + const subrIndex = new _cff_parser.CFFIndex(); + for (i = 0, ii = subrs.length; i < ii; i++) { + subrIndex.add(subrs[i]); + } + privateDict.subrsIndex = subrIndex; + const compiler = new _cff_parser.CFFCompiler(cff); + return compiler.compile(); + } +} +exports.Type1Font = Type1Font; + +/***/ }), +/* 49 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Type1Parser = void 0; +var _encodings = __w_pdfjs_require__(37); +var _core_utils = __w_pdfjs_require__(3); +var _stream = __w_pdfjs_require__(8); +var _util = __w_pdfjs_require__(2); +const HINTING_ENABLED = false; +const COMMAND_MAP = { + hstem: [1], + vstem: [3], + vmoveto: [4], + rlineto: [5], + hlineto: [6], + vlineto: [7], + rrcurveto: [8], + callsubr: [10], + flex: [12, 35], + drop: [12, 18], + endchar: [14], + rmoveto: [21], + hmoveto: [22], + vhcurveto: [30], + hvcurveto: [31] +}; +class Type1CharString { + constructor() { + this.width = 0; + this.lsb = 0; + this.flexing = false; + this.output = []; + this.stack = []; + } + convert(encoded, subrs, seacAnalysisEnabled) { + const count = encoded.length; + let error = false; + let wx, sbx, subrNumber; + for (let i = 0; i < count; i++) { + let value = encoded[i]; + if (value < 32) { + if (value === 12) { + value = (value << 8) + encoded[++i]; + } + switch (value) { + case 1: + if (!HINTING_ENABLED) { + this.stack = []; + break; + } + error = this.executeCommand(2, COMMAND_MAP.hstem); + break; + case 3: + if (!HINTING_ENABLED) { + this.stack = []; + break; + } + error = this.executeCommand(2, COMMAND_MAP.vstem); + break; + case 4: + if (this.flexing) { + if (this.stack.length < 1) { + error = true; + break; + } + const dy = this.stack.pop(); + this.stack.push(0, dy); + break; + } + error = this.executeCommand(1, COMMAND_MAP.vmoveto); + break; + case 5: + error = this.executeCommand(2, COMMAND_MAP.rlineto); + break; + case 6: + error = this.executeCommand(1, COMMAND_MAP.hlineto); + break; + case 7: + error = this.executeCommand(1, COMMAND_MAP.vlineto); + break; + case 8: + error = this.executeCommand(6, COMMAND_MAP.rrcurveto); + break; + case 9: + this.stack = []; + break; + case 10: + if (this.stack.length < 1) { + error = true; + break; + } + subrNumber = this.stack.pop(); + if (!subrs[subrNumber]) { + error = true; + break; + } + error = this.convert(subrs[subrNumber], subrs, seacAnalysisEnabled); + break; + case 11: + return error; + case 13: + if (this.stack.length < 2) { + error = true; + break; + } + wx = this.stack.pop(); + sbx = this.stack.pop(); + this.lsb = sbx; + this.width = wx; + this.stack.push(wx, sbx); + error = this.executeCommand(2, COMMAND_MAP.hmoveto); + break; + case 14: + this.output.push(COMMAND_MAP.endchar[0]); + break; + case 21: + if (this.flexing) { + break; + } + error = this.executeCommand(2, COMMAND_MAP.rmoveto); + break; + case 22: + if (this.flexing) { + this.stack.push(0); + break; + } + error = this.executeCommand(1, COMMAND_MAP.hmoveto); + break; + case 30: + error = this.executeCommand(4, COMMAND_MAP.vhcurveto); + break; + case 31: + error = this.executeCommand(4, COMMAND_MAP.hvcurveto); + break; + case (12 << 8) + 0: + this.stack = []; + break; + case (12 << 8) + 1: + if (!HINTING_ENABLED) { + this.stack = []; + break; + } + error = this.executeCommand(2, COMMAND_MAP.vstem); + break; + case (12 << 8) + 2: + if (!HINTING_ENABLED) { + this.stack = []; + break; + } + error = this.executeCommand(2, COMMAND_MAP.hstem); + break; + case (12 << 8) + 6: + if (seacAnalysisEnabled) { + const asb = this.stack.at(-5); + this.seac = this.stack.splice(-4, 4); + this.seac[0] += this.lsb - asb; + error = this.executeCommand(0, COMMAND_MAP.endchar); + } else { + error = this.executeCommand(4, COMMAND_MAP.endchar); + } + break; + case (12 << 8) + 7: + if (this.stack.length < 4) { + error = true; + break; + } + this.stack.pop(); + wx = this.stack.pop(); + const sby = this.stack.pop(); + sbx = this.stack.pop(); + this.lsb = sbx; + this.width = wx; + this.stack.push(wx, sbx, sby); + error = this.executeCommand(3, COMMAND_MAP.rmoveto); + break; + case (12 << 8) + 12: + if (this.stack.length < 2) { + error = true; + break; + } + const num2 = this.stack.pop(); + const num1 = this.stack.pop(); + this.stack.push(num1 / num2); + break; + case (12 << 8) + 16: + if (this.stack.length < 2) { + error = true; + break; + } + subrNumber = this.stack.pop(); + const numArgs = this.stack.pop(); + if (subrNumber === 0 && numArgs === 3) { + const flexArgs = this.stack.splice(-17, 17); + this.stack.push(flexArgs[2] + flexArgs[0], flexArgs[3] + flexArgs[1], flexArgs[4], flexArgs[5], flexArgs[6], flexArgs[7], flexArgs[8], flexArgs[9], flexArgs[10], flexArgs[11], flexArgs[12], flexArgs[13], flexArgs[14]); + error = this.executeCommand(13, COMMAND_MAP.flex, true); + this.flexing = false; + this.stack.push(flexArgs[15], flexArgs[16]); + } else if (subrNumber === 1 && numArgs === 0) { + this.flexing = true; + } + break; + case (12 << 8) + 17: + break; + case (12 << 8) + 33: + this.stack = []; + break; + default: + (0, _util.warn)('Unknown type 1 charstring command of "' + value + '"'); + break; + } + if (error) { + break; + } + continue; + } else if (value <= 246) { + value -= 139; + } else if (value <= 250) { + value = (value - 247) * 256 + encoded[++i] + 108; + } else if (value <= 254) { + value = -((value - 251) * 256) - encoded[++i] - 108; + } else { + value = (encoded[++i] & 0xff) << 24 | (encoded[++i] & 0xff) << 16 | (encoded[++i] & 0xff) << 8 | (encoded[++i] & 0xff) << 0; + } + this.stack.push(value); + } + return error; + } + executeCommand(howManyArgs, command, keepStack) { + const stackLength = this.stack.length; + if (howManyArgs > stackLength) { + return true; + } + const start = stackLength - howManyArgs; + for (let i = start; i < stackLength; i++) { + let value = this.stack[i]; + if (Number.isInteger(value)) { + this.output.push(28, value >> 8 & 0xff, value & 0xff); + } else { + value = 65536 * value | 0; + this.output.push(255, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff); + } + } + this.output.push(...command); + if (keepStack) { + this.stack.splice(start, howManyArgs); + } else { + this.stack.length = 0; + } + return false; + } +} +const EEXEC_ENCRYPT_KEY = 55665; +const CHAR_STRS_ENCRYPT_KEY = 4330; +function isHexDigit(code) { + return code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102; +} +function decrypt(data, key, discardNumber) { + if (discardNumber >= data.length) { + return new Uint8Array(0); + } + const c1 = 52845, + c2 = 22719; + let r = key | 0, + i, + j; + for (i = 0; i < discardNumber; i++) { + r = (data[i] + r) * c1 + c2 & (1 << 16) - 1; + } + const count = data.length - discardNumber; + const decrypted = new Uint8Array(count); + for (i = discardNumber, j = 0; j < count; i++, j++) { + const value = data[i]; + decrypted[j] = value ^ r >> 8; + r = (value + r) * c1 + c2 & (1 << 16) - 1; + } + return decrypted; +} +function decryptAscii(data, key, discardNumber) { + const c1 = 52845, + c2 = 22719; + let r = key | 0; + const count = data.length, + maybeLength = count >>> 1; + const decrypted = new Uint8Array(maybeLength); + let i, j; + for (i = 0, j = 0; i < count; i++) { + const digit1 = data[i]; + if (!isHexDigit(digit1)) { + continue; + } + i++; + let digit2; + while (i < count && !isHexDigit(digit2 = data[i])) { + i++; + } + if (i < count) { + const value = parseInt(String.fromCharCode(digit1, digit2), 16); + decrypted[j++] = value ^ r >> 8; + r = (value + r) * c1 + c2 & (1 << 16) - 1; + } + } + return decrypted.slice(discardNumber, j); +} +function isSpecial(c) { + return c === 0x2f || c === 0x5b || c === 0x5d || c === 0x7b || c === 0x7d || c === 0x28 || c === 0x29; +} +class Type1Parser { + constructor(stream, encrypted, seacAnalysisEnabled) { + if (encrypted) { + const data = stream.getBytes(); + const isBinary = !((isHexDigit(data[0]) || (0, _core_utils.isWhiteSpace)(data[0])) && isHexDigit(data[1]) && isHexDigit(data[2]) && isHexDigit(data[3]) && isHexDigit(data[4]) && isHexDigit(data[5]) && isHexDigit(data[6]) && isHexDigit(data[7])); + stream = new _stream.Stream(isBinary ? decrypt(data, EEXEC_ENCRYPT_KEY, 4) : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4)); + } + this.seacAnalysisEnabled = !!seacAnalysisEnabled; + this.stream = stream; + this.nextChar(); + } + readNumberArray() { + this.getToken(); + const array = []; + while (true) { + const token = this.getToken(); + if (token === null || token === "]" || token === "}") { + break; + } + array.push(parseFloat(token || 0)); + } + return array; + } + readNumber() { + const token = this.getToken(); + return parseFloat(token || 0); + } + readInt() { + const token = this.getToken(); + return parseInt(token || 0, 10) | 0; + } + readBoolean() { + const token = this.getToken(); + return token === "true" ? 1 : 0; + } + nextChar() { + return this.currentChar = this.stream.getByte(); + } + prevChar() { + this.stream.skip(-2); + return this.currentChar = this.stream.getByte(); + } + getToken() { + let comment = false; + let ch = this.currentChar; + while (true) { + if (ch === -1) { + return null; + } + if (comment) { + if (ch === 0x0a || ch === 0x0d) { + comment = false; + } + } else if (ch === 0x25) { + comment = true; + } else if (!(0, _core_utils.isWhiteSpace)(ch)) { + break; + } + ch = this.nextChar(); + } + if (isSpecial(ch)) { + this.nextChar(); + return String.fromCharCode(ch); + } + let token = ""; + do { + token += String.fromCharCode(ch); + ch = this.nextChar(); + } while (ch >= 0 && !(0, _core_utils.isWhiteSpace)(ch) && !isSpecial(ch)); + return token; + } + readCharStrings(bytes, lenIV) { + if (lenIV === -1) { + return bytes; + } + return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV); + } + extractFontProgram(properties) { + const stream = this.stream; + const subrs = [], + charstrings = []; + const privateData = Object.create(null); + privateData.lenIV = 4; + const program = { + subrs: [], + charstrings: [], + properties: { + privateData + } + }; + let token, length, data, lenIV; + while ((token = this.getToken()) !== null) { + if (token !== "/") { + continue; + } + token = this.getToken(); + switch (token) { + case "CharStrings": + this.getToken(); + this.getToken(); + this.getToken(); + this.getToken(); + while (true) { + token = this.getToken(); + if (token === null || token === "end") { + break; + } + if (token !== "/") { + continue; + } + const glyph = this.getToken(); + length = this.readInt(); + this.getToken(); + data = length > 0 ? stream.getBytes(length) : new Uint8Array(0); + lenIV = program.properties.privateData.lenIV; + const encoded = this.readCharStrings(data, lenIV); + this.nextChar(); + token = this.getToken(); + if (token === "noaccess") { + this.getToken(); + } else if (token === "/") { + this.prevChar(); + } + charstrings.push({ + glyph, + encoded + }); + } + break; + case "Subrs": + this.readInt(); + this.getToken(); + while (this.getToken() === "dup") { + const index = this.readInt(); + length = this.readInt(); + this.getToken(); + data = length > 0 ? stream.getBytes(length) : new Uint8Array(0); + lenIV = program.properties.privateData.lenIV; + const encoded = this.readCharStrings(data, lenIV); + this.nextChar(); + token = this.getToken(); + if (token === "noaccess") { + this.getToken(); + } + subrs[index] = encoded; + } + break; + case "BlueValues": + case "OtherBlues": + case "FamilyBlues": + case "FamilyOtherBlues": + const blueArray = this.readNumberArray(); + if (blueArray.length > 0 && blueArray.length % 2 === 0 && HINTING_ENABLED) { + program.properties.privateData[token] = blueArray; + } + break; + case "StemSnapH": + case "StemSnapV": + program.properties.privateData[token] = this.readNumberArray(); + break; + case "StdHW": + case "StdVW": + program.properties.privateData[token] = this.readNumberArray()[0]; + break; + case "BlueShift": + case "lenIV": + case "BlueFuzz": + case "BlueScale": + case "LanguageGroup": + program.properties.privateData[token] = this.readNumber(); + break; + case "ExpansionFactor": + program.properties.privateData[token] = this.readNumber() || 0.06; + break; + case "ForceBold": + program.properties.privateData[token] = this.readBoolean(); + break; + } + } + for (const { + encoded, + glyph + } of charstrings) { + const charString = new Type1CharString(); + const error = charString.convert(encoded, subrs, this.seacAnalysisEnabled); + let output = charString.output; + if (error) { + output = [14]; + } + const charStringObject = { + glyphName: glyph, + charstring: output, + width: charString.width, + lsb: charString.lsb, + seac: charString.seac + }; + if (glyph === ".notdef") { + program.charstrings.unshift(charStringObject); + } else { + program.charstrings.push(charStringObject); + } + if (properties.builtInEncoding) { + const index = properties.builtInEncoding.indexOf(glyph); + if (index > -1 && properties.widths[index] === undefined && index >= properties.firstChar && index <= properties.lastChar) { + properties.widths[index] = charString.width; + } + } + } + return program; + } + extractFontHeader(properties) { + let token; + while ((token = this.getToken()) !== null) { + if (token !== "/") { + continue; + } + token = this.getToken(); + switch (token) { + case "FontMatrix": + const matrix = this.readNumberArray(); + properties.fontMatrix = matrix; + break; + case "Encoding": + const encodingArg = this.getToken(); + let encoding; + if (!/^\d+$/.test(encodingArg)) { + encoding = (0, _encodings.getEncoding)(encodingArg); + } else { + encoding = []; + const size = parseInt(encodingArg, 10) | 0; + this.getToken(); + for (let j = 0; j < size; j++) { + token = this.getToken(); + while (token !== "dup" && token !== "def") { + token = this.getToken(); + if (token === null) { + return; + } + } + if (token === "def") { + break; + } + const index = this.readInt(); + this.getToken(); + const glyph = this.getToken(); + encoding[index] = glyph; + this.getToken(); + } + } + properties.builtInEncoding = encoding; + break; + case "FontBBox": + const fontBBox = this.readNumberArray(); + properties.ascent = Math.max(fontBBox[3], fontBBox[1]); + properties.descent = Math.min(fontBBox[1], fontBBox[3]); + properties.ascentScaled = true; + break; + } + } + } +} +exports.Type1Parser = Type1Parser; + +/***/ }), +/* 50 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Pattern = void 0; +exports.getTilingPatternIR = getTilingPatternIR; +var _util = __w_pdfjs_require__(2); +var _base_stream = __w_pdfjs_require__(5); +var _colorspace = __w_pdfjs_require__(12); +var _core_utils = __w_pdfjs_require__(3); +const ShadingType = { + FUNCTION_BASED: 1, + AXIAL: 2, + RADIAL: 3, + FREE_FORM_MESH: 4, + LATTICE_FORM_MESH: 5, + COONS_PATCH_MESH: 6, + TENSOR_PATCH_MESH: 7 +}; +class Pattern { + constructor() { + (0, _util.unreachable)("Cannot initialize Pattern."); + } + static parseShading(shading, xref, res, pdfFunctionFactory, localColorSpaceCache) { + const dict = shading instanceof _base_stream.BaseStream ? shading.dict : shading; + const type = dict.get("ShadingType"); + try { + switch (type) { + case ShadingType.AXIAL: + case ShadingType.RADIAL: + return new RadialAxialShading(dict, xref, res, pdfFunctionFactory, localColorSpaceCache); + case ShadingType.FREE_FORM_MESH: + case ShadingType.LATTICE_FORM_MESH: + case ShadingType.COONS_PATCH_MESH: + case ShadingType.TENSOR_PATCH_MESH: + return new MeshShading(shading, xref, res, pdfFunctionFactory, localColorSpaceCache); + default: + throw new _util.FormatError("Unsupported ShadingType: " + type); + } + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + (0, _util.warn)(ex); + return new DummyShading(); + } + } +} +exports.Pattern = Pattern; +class BaseShading { + static SMALL_NUMBER = 1e-6; + constructor() { + if (this.constructor === BaseShading) { + (0, _util.unreachable)("Cannot initialize BaseShading."); + } + } + getIR() { + (0, _util.unreachable)("Abstract method `getIR` called."); + } +} +class RadialAxialShading extends BaseShading { + constructor(dict, xref, resources, pdfFunctionFactory, localColorSpaceCache) { + super(); + this.coordsArr = dict.getArray("Coords"); + this.shadingType = dict.get("ShadingType"); + const cs = _colorspace.ColorSpace.parse({ + cs: dict.getRaw("CS") || dict.getRaw("ColorSpace"), + xref, + resources, + pdfFunctionFactory, + localColorSpaceCache + }); + const bbox = dict.getArray("BBox"); + if (Array.isArray(bbox) && bbox.length === 4) { + this.bbox = _util.Util.normalizeRect(bbox); + } else { + this.bbox = null; + } + let t0 = 0.0, + t1 = 1.0; + if (dict.has("Domain")) { + const domainArr = dict.getArray("Domain"); + t0 = domainArr[0]; + t1 = domainArr[1]; + } + let extendStart = false, + extendEnd = false; + if (dict.has("Extend")) { + const extendArr = dict.getArray("Extend"); + extendStart = extendArr[0]; + extendEnd = extendArr[1]; + } + if (this.shadingType === ShadingType.RADIAL && (!extendStart || !extendEnd)) { + const [x1, y1, r1, x2, y2, r2] = this.coordsArr; + const distance = Math.hypot(x1 - x2, y1 - y2); + if (r1 <= r2 + distance && r2 <= r1 + distance) { + (0, _util.warn)("Unsupported radial gradient."); + } + } + this.extendStart = extendStart; + this.extendEnd = extendEnd; + const fnObj = dict.getRaw("Function"); + const fn = pdfFunctionFactory.createFromArray(fnObj); + const NUMBER_OF_SAMPLES = 840; + const step = (t1 - t0) / NUMBER_OF_SAMPLES; + const colorStops = this.colorStops = []; + if (t0 >= t1 || step <= 0) { + (0, _util.info)("Bad shading domain."); + return; + } + const color = new Float32Array(cs.numComps), + ratio = new Float32Array(1); + let rgbColor; + let iBase = 0; + ratio[0] = t0; + fn(ratio, 0, color, 0); + let rgbBase = cs.getRgb(color, 0); + const cssColorBase = _util.Util.makeHexColor(rgbBase[0], rgbBase[1], rgbBase[2]); + colorStops.push([0, cssColorBase]); + let iPrev = 1; + ratio[0] = t0 + step; + fn(ratio, 0, color, 0); + let rgbPrev = cs.getRgb(color, 0); + let maxSlopeR = rgbPrev[0] - rgbBase[0] + 1; + let maxSlopeG = rgbPrev[1] - rgbBase[1] + 1; + let maxSlopeB = rgbPrev[2] - rgbBase[2] + 1; + let minSlopeR = rgbPrev[0] - rgbBase[0] - 1; + let minSlopeG = rgbPrev[1] - rgbBase[1] - 1; + let minSlopeB = rgbPrev[2] - rgbBase[2] - 1; + for (let i = 2; i < NUMBER_OF_SAMPLES; i++) { + ratio[0] = t0 + i * step; + fn(ratio, 0, color, 0); + rgbColor = cs.getRgb(color, 0); + const run = i - iBase; + maxSlopeR = Math.min(maxSlopeR, (rgbColor[0] - rgbBase[0] + 1) / run); + maxSlopeG = Math.min(maxSlopeG, (rgbColor[1] - rgbBase[1] + 1) / run); + maxSlopeB = Math.min(maxSlopeB, (rgbColor[2] - rgbBase[2] + 1) / run); + minSlopeR = Math.max(minSlopeR, (rgbColor[0] - rgbBase[0] - 1) / run); + minSlopeG = Math.max(minSlopeG, (rgbColor[1] - rgbBase[1] - 1) / run); + minSlopeB = Math.max(minSlopeB, (rgbColor[2] - rgbBase[2] - 1) / run); + const slopesExist = minSlopeR <= maxSlopeR && minSlopeG <= maxSlopeG && minSlopeB <= maxSlopeB; + if (!slopesExist) { + const cssColor = _util.Util.makeHexColor(rgbPrev[0], rgbPrev[1], rgbPrev[2]); + colorStops.push([iPrev / NUMBER_OF_SAMPLES, cssColor]); + maxSlopeR = rgbColor[0] - rgbPrev[0] + 1; + maxSlopeG = rgbColor[1] - rgbPrev[1] + 1; + maxSlopeB = rgbColor[2] - rgbPrev[2] + 1; + minSlopeR = rgbColor[0] - rgbPrev[0] - 1; + minSlopeG = rgbColor[1] - rgbPrev[1] - 1; + minSlopeB = rgbColor[2] - rgbPrev[2] - 1; + iBase = iPrev; + rgbBase = rgbPrev; + } + iPrev = i; + rgbPrev = rgbColor; + } + const cssColor = _util.Util.makeHexColor(rgbPrev[0], rgbPrev[1], rgbPrev[2]); + colorStops.push([1, cssColor]); + let background = "transparent"; + if (dict.has("Background")) { + rgbColor = cs.getRgb(dict.get("Background"), 0); + background = _util.Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]); + } + if (!extendStart) { + colorStops.unshift([0, background]); + colorStops[1][0] += BaseShading.SMALL_NUMBER; + } + if (!extendEnd) { + colorStops.at(-1)[0] -= BaseShading.SMALL_NUMBER; + colorStops.push([1, background]); + } + this.colorStops = colorStops; + } + getIR() { + const coordsArr = this.coordsArr; + const shadingType = this.shadingType; + let type, p0, p1, r0, r1; + if (shadingType === ShadingType.AXIAL) { + p0 = [coordsArr[0], coordsArr[1]]; + p1 = [coordsArr[2], coordsArr[3]]; + r0 = null; + r1 = null; + type = "axial"; + } else if (shadingType === ShadingType.RADIAL) { + p0 = [coordsArr[0], coordsArr[1]]; + p1 = [coordsArr[3], coordsArr[4]]; + r0 = coordsArr[2]; + r1 = coordsArr[5]; + type = "radial"; + } else { + (0, _util.unreachable)(`getPattern type unknown: ${shadingType}`); + } + return ["RadialAxial", type, this.bbox, this.colorStops, p0, p1, r0, r1]; + } +} +class MeshStreamReader { + constructor(stream, context) { + this.stream = stream; + this.context = context; + this.buffer = 0; + this.bufferLength = 0; + const numComps = context.numComps; + this.tmpCompsBuf = new Float32Array(numComps); + const csNumComps = context.colorSpace.numComps; + this.tmpCsCompsBuf = context.colorFn ? new Float32Array(csNumComps) : this.tmpCompsBuf; + } + get hasData() { + if (this.stream.end) { + return this.stream.pos < this.stream.end; + } + if (this.bufferLength > 0) { + return true; + } + const nextByte = this.stream.getByte(); + if (nextByte < 0) { + return false; + } + this.buffer = nextByte; + this.bufferLength = 8; + return true; + } + readBits(n) { + let buffer = this.buffer; + let bufferLength = this.bufferLength; + if (n === 32) { + if (bufferLength === 0) { + return (this.stream.getByte() << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte()) >>> 0; + } + buffer = buffer << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte(); + const nextByte = this.stream.getByte(); + this.buffer = nextByte & (1 << bufferLength) - 1; + return (buffer << 8 - bufferLength | (nextByte & 0xff) >> bufferLength) >>> 0; + } + if (n === 8 && bufferLength === 0) { + return this.stream.getByte(); + } + while (bufferLength < n) { + buffer = buffer << 8 | this.stream.getByte(); + bufferLength += 8; + } + bufferLength -= n; + this.bufferLength = bufferLength; + this.buffer = buffer & (1 << bufferLength) - 1; + return buffer >> bufferLength; + } + align() { + this.buffer = 0; + this.bufferLength = 0; + } + readFlag() { + return this.readBits(this.context.bitsPerFlag); + } + readCoordinate() { + const bitsPerCoordinate = this.context.bitsPerCoordinate; + const xi = this.readBits(bitsPerCoordinate); + const yi = this.readBits(bitsPerCoordinate); + const decode = this.context.decode; + const scale = bitsPerCoordinate < 32 ? 1 / ((1 << bitsPerCoordinate) - 1) : 2.3283064365386963e-10; + return [xi * scale * (decode[1] - decode[0]) + decode[0], yi * scale * (decode[3] - decode[2]) + decode[2]]; + } + readComponents() { + const numComps = this.context.numComps; + const bitsPerComponent = this.context.bitsPerComponent; + const scale = bitsPerComponent < 32 ? 1 / ((1 << bitsPerComponent) - 1) : 2.3283064365386963e-10; + const decode = this.context.decode; + const components = this.tmpCompsBuf; + for (let i = 0, j = 4; i < numComps; i++, j += 2) { + const ci = this.readBits(bitsPerComponent); + components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j]; + } + const color = this.tmpCsCompsBuf; + if (this.context.colorFn) { + this.context.colorFn(components, 0, color, 0); + } + return this.context.colorSpace.getRgb(color, 0); + } +} +const getB = function getBClosure() { + function buildB(count) { + const lut = []; + for (let i = 0; i <= count; i++) { + const t = i / count, + t_ = 1 - t; + lut.push(new Float32Array([t_ * t_ * t_, 3 * t * t_ * t_, 3 * t * t * t_, t * t * t])); + } + return lut; + } + const cache = Object.create(null); + return function (count) { + return cache[count] ||= buildB(count); + }; +}(); +class MeshShading extends BaseShading { + static MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3; + static MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20; + static TRIANGLE_DENSITY = 20; + constructor(stream, xref, resources, pdfFunctionFactory, localColorSpaceCache) { + super(); + if (!(stream instanceof _base_stream.BaseStream)) { + throw new _util.FormatError("Mesh data is not a stream"); + } + const dict = stream.dict; + this.shadingType = dict.get("ShadingType"); + const bbox = dict.getArray("BBox"); + if (Array.isArray(bbox) && bbox.length === 4) { + this.bbox = _util.Util.normalizeRect(bbox); + } else { + this.bbox = null; + } + const cs = _colorspace.ColorSpace.parse({ + cs: dict.getRaw("CS") || dict.getRaw("ColorSpace"), + xref, + resources, + pdfFunctionFactory, + localColorSpaceCache + }); + this.background = dict.has("Background") ? cs.getRgb(dict.get("Background"), 0) : null; + const fnObj = dict.getRaw("Function"); + const fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null; + this.coords = []; + this.colors = []; + this.figures = []; + const decodeContext = { + bitsPerCoordinate: dict.get("BitsPerCoordinate"), + bitsPerComponent: dict.get("BitsPerComponent"), + bitsPerFlag: dict.get("BitsPerFlag"), + decode: dict.getArray("Decode"), + colorFn: fn, + colorSpace: cs, + numComps: fn ? 1 : cs.numComps + }; + const reader = new MeshStreamReader(stream, decodeContext); + let patchMesh = false; + switch (this.shadingType) { + case ShadingType.FREE_FORM_MESH: + this._decodeType4Shading(reader); + break; + case ShadingType.LATTICE_FORM_MESH: + const verticesPerRow = dict.get("VerticesPerRow") | 0; + if (verticesPerRow < 2) { + throw new _util.FormatError("Invalid VerticesPerRow"); + } + this._decodeType5Shading(reader, verticesPerRow); + break; + case ShadingType.COONS_PATCH_MESH: + this._decodeType6Shading(reader); + patchMesh = true; + break; + case ShadingType.TENSOR_PATCH_MESH: + this._decodeType7Shading(reader); + patchMesh = true; + break; + default: + (0, _util.unreachable)("Unsupported mesh type."); + break; + } + if (patchMesh) { + this._updateBounds(); + for (let i = 0, ii = this.figures.length; i < ii; i++) { + this._buildFigureFromPatch(i); + } + } + this._updateBounds(); + this._packData(); + } + _decodeType4Shading(reader) { + const coords = this.coords; + const colors = this.colors; + const operators = []; + const ps = []; + let verticesLeft = 0; + while (reader.hasData) { + const f = reader.readFlag(); + const coord = reader.readCoordinate(); + const color = reader.readComponents(); + if (verticesLeft === 0) { + if (!(0 <= f && f <= 2)) { + throw new _util.FormatError("Unknown type4 flag"); + } + switch (f) { + case 0: + verticesLeft = 3; + break; + case 1: + ps.push(ps.at(-2), ps.at(-1)); + verticesLeft = 1; + break; + case 2: + ps.push(ps.at(-3), ps.at(-1)); + verticesLeft = 1; + break; + } + operators.push(f); + } + ps.push(coords.length); + coords.push(coord); + colors.push(color); + verticesLeft--; + reader.align(); + } + this.figures.push({ + type: "triangles", + coords: new Int32Array(ps), + colors: new Int32Array(ps) + }); + } + _decodeType5Shading(reader, verticesPerRow) { + const coords = this.coords; + const colors = this.colors; + const ps = []; + while (reader.hasData) { + const coord = reader.readCoordinate(); + const color = reader.readComponents(); + ps.push(coords.length); + coords.push(coord); + colors.push(color); + } + this.figures.push({ + type: "lattice", + coords: new Int32Array(ps), + colors: new Int32Array(ps), + verticesPerRow + }); + } + _decodeType6Shading(reader) { + const coords = this.coords; + const colors = this.colors; + const ps = new Int32Array(16); + const cs = new Int32Array(4); + while (reader.hasData) { + const f = reader.readFlag(); + if (!(0 <= f && f <= 3)) { + throw new _util.FormatError("Unknown type6 flag"); + } + const pi = coords.length; + for (let i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) { + coords.push(reader.readCoordinate()); + } + const ci = colors.length; + for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) { + colors.push(reader.readComponents()); + } + let tmp1, tmp2, tmp3, tmp4; + switch (f) { + case 0: + ps[12] = pi + 3; + ps[13] = pi + 4; + ps[14] = pi + 5; + ps[15] = pi + 6; + ps[8] = pi + 2; + ps[11] = pi + 7; + ps[4] = pi + 1; + ps[7] = pi + 8; + ps[0] = pi; + ps[1] = pi + 11; + ps[2] = pi + 10; + ps[3] = pi + 9; + cs[2] = ci + 1; + cs[3] = ci + 2; + cs[0] = ci; + cs[1] = ci + 3; + break; + case 1: + tmp1 = ps[12]; + tmp2 = ps[13]; + tmp3 = ps[14]; + tmp4 = ps[15]; + ps[12] = tmp4; + ps[13] = pi + 0; + ps[14] = pi + 1; + ps[15] = pi + 2; + ps[8] = tmp3; + ps[11] = pi + 3; + ps[4] = tmp2; + ps[7] = pi + 4; + ps[0] = tmp1; + ps[1] = pi + 7; + ps[2] = pi + 6; + ps[3] = pi + 5; + tmp1 = cs[2]; + tmp2 = cs[3]; + cs[2] = tmp2; + cs[3] = ci; + cs[0] = tmp1; + cs[1] = ci + 1; + break; + case 2: + tmp1 = ps[15]; + tmp2 = ps[11]; + ps[12] = ps[3]; + ps[13] = pi + 0; + ps[14] = pi + 1; + ps[15] = pi + 2; + ps[8] = ps[7]; + ps[11] = pi + 3; + ps[4] = tmp2; + ps[7] = pi + 4; + ps[0] = tmp1; + ps[1] = pi + 7; + ps[2] = pi + 6; + ps[3] = pi + 5; + tmp1 = cs[3]; + cs[2] = cs[1]; + cs[3] = ci; + cs[0] = tmp1; + cs[1] = ci + 1; + break; + case 3: + ps[12] = ps[0]; + ps[13] = pi + 0; + ps[14] = pi + 1; + ps[15] = pi + 2; + ps[8] = ps[1]; + ps[11] = pi + 3; + ps[4] = ps[2]; + ps[7] = pi + 4; + ps[0] = ps[3]; + ps[1] = pi + 7; + ps[2] = pi + 6; + ps[3] = pi + 5; + cs[2] = cs[0]; + cs[3] = ci; + cs[0] = cs[1]; + cs[1] = ci + 1; + break; + } + ps[5] = coords.length; + coords.push([(-4 * coords[ps[0]][0] - coords[ps[15]][0] + 6 * (coords[ps[4]][0] + coords[ps[1]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[13]][0] + coords[ps[7]][0])) / 9, (-4 * coords[ps[0]][1] - coords[ps[15]][1] + 6 * (coords[ps[4]][1] + coords[ps[1]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[13]][1] + coords[ps[7]][1])) / 9]); + ps[6] = coords.length; + coords.push([(-4 * coords[ps[3]][0] - coords[ps[12]][0] + 6 * (coords[ps[2]][0] + coords[ps[7]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[4]][0] + coords[ps[14]][0])) / 9, (-4 * coords[ps[3]][1] - coords[ps[12]][1] + 6 * (coords[ps[2]][1] + coords[ps[7]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[4]][1] + coords[ps[14]][1])) / 9]); + ps[9] = coords.length; + coords.push([(-4 * coords[ps[12]][0] - coords[ps[3]][0] + 6 * (coords[ps[8]][0] + coords[ps[13]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[11]][0] + coords[ps[1]][0])) / 9, (-4 * coords[ps[12]][1] - coords[ps[3]][1] + 6 * (coords[ps[8]][1] + coords[ps[13]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[11]][1] + coords[ps[1]][1])) / 9]); + ps[10] = coords.length; + coords.push([(-4 * coords[ps[15]][0] - coords[ps[0]][0] + 6 * (coords[ps[11]][0] + coords[ps[14]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[2]][0] + coords[ps[8]][0])) / 9, (-4 * coords[ps[15]][1] - coords[ps[0]][1] + 6 * (coords[ps[11]][1] + coords[ps[14]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[2]][1] + coords[ps[8]][1])) / 9]); + this.figures.push({ + type: "patch", + coords: new Int32Array(ps), + colors: new Int32Array(cs) + }); + } + } + _decodeType7Shading(reader) { + const coords = this.coords; + const colors = this.colors; + const ps = new Int32Array(16); + const cs = new Int32Array(4); + while (reader.hasData) { + const f = reader.readFlag(); + if (!(0 <= f && f <= 3)) { + throw new _util.FormatError("Unknown type7 flag"); + } + const pi = coords.length; + for (let i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) { + coords.push(reader.readCoordinate()); + } + const ci = colors.length; + for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) { + colors.push(reader.readComponents()); + } + let tmp1, tmp2, tmp3, tmp4; + switch (f) { + case 0: + ps[12] = pi + 3; + ps[13] = pi + 4; + ps[14] = pi + 5; + ps[15] = pi + 6; + ps[8] = pi + 2; + ps[9] = pi + 13; + ps[10] = pi + 14; + ps[11] = pi + 7; + ps[4] = pi + 1; + ps[5] = pi + 12; + ps[6] = pi + 15; + ps[7] = pi + 8; + ps[0] = pi; + ps[1] = pi + 11; + ps[2] = pi + 10; + ps[3] = pi + 9; + cs[2] = ci + 1; + cs[3] = ci + 2; + cs[0] = ci; + cs[1] = ci + 3; + break; + case 1: + tmp1 = ps[12]; + tmp2 = ps[13]; + tmp3 = ps[14]; + tmp4 = ps[15]; + ps[12] = tmp4; + ps[13] = pi + 0; + ps[14] = pi + 1; + ps[15] = pi + 2; + ps[8] = tmp3; + ps[9] = pi + 9; + ps[10] = pi + 10; + ps[11] = pi + 3; + ps[4] = tmp2; + ps[5] = pi + 8; + ps[6] = pi + 11; + ps[7] = pi + 4; + ps[0] = tmp1; + ps[1] = pi + 7; + ps[2] = pi + 6; + ps[3] = pi + 5; + tmp1 = cs[2]; + tmp2 = cs[3]; + cs[2] = tmp2; + cs[3] = ci; + cs[0] = tmp1; + cs[1] = ci + 1; + break; + case 2: + tmp1 = ps[15]; + tmp2 = ps[11]; + ps[12] = ps[3]; + ps[13] = pi + 0; + ps[14] = pi + 1; + ps[15] = pi + 2; + ps[8] = ps[7]; + ps[9] = pi + 9; + ps[10] = pi + 10; + ps[11] = pi + 3; + ps[4] = tmp2; + ps[5] = pi + 8; + ps[6] = pi + 11; + ps[7] = pi + 4; + ps[0] = tmp1; + ps[1] = pi + 7; + ps[2] = pi + 6; + ps[3] = pi + 5; + tmp1 = cs[3]; + cs[2] = cs[1]; + cs[3] = ci; + cs[0] = tmp1; + cs[1] = ci + 1; + break; + case 3: + ps[12] = ps[0]; + ps[13] = pi + 0; + ps[14] = pi + 1; + ps[15] = pi + 2; + ps[8] = ps[1]; + ps[9] = pi + 9; + ps[10] = pi + 10; + ps[11] = pi + 3; + ps[4] = ps[2]; + ps[5] = pi + 8; + ps[6] = pi + 11; + ps[7] = pi + 4; + ps[0] = ps[3]; + ps[1] = pi + 7; + ps[2] = pi + 6; + ps[3] = pi + 5; + cs[2] = cs[0]; + cs[3] = ci; + cs[0] = cs[1]; + cs[1] = ci + 1; + break; + } + this.figures.push({ + type: "patch", + coords: new Int32Array(ps), + colors: new Int32Array(cs) + }); + } + } + _buildFigureFromPatch(index) { + const figure = this.figures[index]; + (0, _util.assert)(figure.type === "patch", "Unexpected patch mesh figure"); + const coords = this.coords, + colors = this.colors; + const pi = figure.coords; + const ci = figure.colors; + const figureMinX = Math.min(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]); + const figureMinY = Math.min(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]); + const figureMaxX = Math.max(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]); + const figureMaxY = Math.max(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]); + let splitXBy = Math.ceil((figureMaxX - figureMinX) * MeshShading.TRIANGLE_DENSITY / (this.bounds[2] - this.bounds[0])); + splitXBy = Math.max(MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy)); + let splitYBy = Math.ceil((figureMaxY - figureMinY) * MeshShading.TRIANGLE_DENSITY / (this.bounds[3] - this.bounds[1])); + splitYBy = Math.max(MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy)); + const verticesPerRow = splitXBy + 1; + const figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow); + const figureColors = new Int32Array((splitYBy + 1) * verticesPerRow); + let k = 0; + const cl = new Uint8Array(3), + cr = new Uint8Array(3); + const c0 = colors[ci[0]], + c1 = colors[ci[1]], + c2 = colors[ci[2]], + c3 = colors[ci[3]]; + const bRow = getB(splitYBy), + bCol = getB(splitXBy); + for (let row = 0; row <= splitYBy; row++) { + cl[0] = (c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy | 0; + cl[1] = (c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy | 0; + cl[2] = (c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy | 0; + cr[0] = (c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy | 0; + cr[1] = (c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy | 0; + cr[2] = (c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy | 0; + for (let col = 0; col <= splitXBy; col++, k++) { + if ((row === 0 || row === splitYBy) && (col === 0 || col === splitXBy)) { + continue; + } + let x = 0, + y = 0; + let q = 0; + for (let i = 0; i <= 3; i++) { + for (let j = 0; j <= 3; j++, q++) { + const m = bRow[row][i] * bCol[col][j]; + x += coords[pi[q]][0] * m; + y += coords[pi[q]][1] * m; + } + } + figureCoords[k] = coords.length; + coords.push([x, y]); + figureColors[k] = colors.length; + const newColor = new Uint8Array(3); + newColor[0] = (cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy | 0; + newColor[1] = (cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy | 0; + newColor[2] = (cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy | 0; + colors.push(newColor); + } + } + figureCoords[0] = pi[0]; + figureColors[0] = ci[0]; + figureCoords[splitXBy] = pi[3]; + figureColors[splitXBy] = ci[1]; + figureCoords[verticesPerRow * splitYBy] = pi[12]; + figureColors[verticesPerRow * splitYBy] = ci[2]; + figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15]; + figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3]; + this.figures[index] = { + type: "lattice", + coords: figureCoords, + colors: figureColors, + verticesPerRow + }; + } + _updateBounds() { + let minX = this.coords[0][0], + minY = this.coords[0][1], + maxX = minX, + maxY = minY; + for (let i = 1, ii = this.coords.length; i < ii; i++) { + const x = this.coords[i][0], + y = this.coords[i][1]; + minX = minX > x ? x : minX; + minY = minY > y ? y : minY; + maxX = maxX < x ? x : maxX; + maxY = maxY < y ? y : maxY; + } + this.bounds = [minX, minY, maxX, maxY]; + } + _packData() { + let i, ii, j, jj; + const coords = this.coords; + const coordsPacked = new Float32Array(coords.length * 2); + for (i = 0, j = 0, ii = coords.length; i < ii; i++) { + const xy = coords[i]; + coordsPacked[j++] = xy[0]; + coordsPacked[j++] = xy[1]; + } + this.coords = coordsPacked; + const colors = this.colors; + const colorsPacked = new Uint8Array(colors.length * 3); + for (i = 0, j = 0, ii = colors.length; i < ii; i++) { + const c = colors[i]; + colorsPacked[j++] = c[0]; + colorsPacked[j++] = c[1]; + colorsPacked[j++] = c[2]; + } + this.colors = colorsPacked; + const figures = this.figures; + for (i = 0, ii = figures.length; i < ii; i++) { + const figure = figures[i], + ps = figure.coords, + cs = figure.colors; + for (j = 0, jj = ps.length; j < jj; j++) { + ps[j] *= 2; + cs[j] *= 3; + } + } + } + getIR() { + return ["Mesh", this.shadingType, this.coords, this.colors, this.figures, this.bounds, this.bbox, this.background]; + } +} +class DummyShading extends BaseShading { + getIR() { + return ["Dummy"]; + } +} +function getTilingPatternIR(operatorList, dict, color) { + const matrix = dict.getArray("Matrix"); + const bbox = _util.Util.normalizeRect(dict.getArray("BBox")); + const xstep = dict.get("XStep"); + const ystep = dict.get("YStep"); + const paintType = dict.get("PaintType"); + const tilingType = dict.get("TilingType"); + if (bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) { + throw new _util.FormatError(`Invalid getTilingPatternIR /BBox array: [${bbox}].`); + } + return ["TilingPattern", color, operatorList, matrix, bbox, xstep, ystep, paintType, tilingType]; +} + +/***/ }), +/* 51 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getXfaFontDict = getXfaFontDict; +exports.getXfaFontName = getXfaFontName; +var _calibri_factors = __w_pdfjs_require__(52); +var _primitives = __w_pdfjs_require__(4); +var _helvetica_factors = __w_pdfjs_require__(53); +var _liberationsans_widths = __w_pdfjs_require__(54); +var _myriadpro_factors = __w_pdfjs_require__(55); +var _segoeui_factors = __w_pdfjs_require__(56); +var _core_utils = __w_pdfjs_require__(3); +var _fonts_utils = __w_pdfjs_require__(38); +const getXFAFontMap = (0, _core_utils.getLookupTableFactory)(function (t) { + t["MyriadPro-Regular"] = t["PdfJS-Fallback-Regular"] = { + name: "LiberationSans-Regular", + factors: _myriadpro_factors.MyriadProRegularFactors, + baseWidths: _liberationsans_widths.LiberationSansRegularWidths, + baseMapping: _liberationsans_widths.LiberationSansRegularMapping, + metrics: _myriadpro_factors.MyriadProRegularMetrics + }; + t["MyriadPro-Bold"] = t["PdfJS-Fallback-Bold"] = { + name: "LiberationSans-Bold", + factors: _myriadpro_factors.MyriadProBoldFactors, + baseWidths: _liberationsans_widths.LiberationSansBoldWidths, + baseMapping: _liberationsans_widths.LiberationSansBoldMapping, + metrics: _myriadpro_factors.MyriadProBoldMetrics + }; + t["MyriadPro-It"] = t["MyriadPro-Italic"] = t["PdfJS-Fallback-Italic"] = { + name: "LiberationSans-Italic", + factors: _myriadpro_factors.MyriadProItalicFactors, + baseWidths: _liberationsans_widths.LiberationSansItalicWidths, + baseMapping: _liberationsans_widths.LiberationSansItalicMapping, + metrics: _myriadpro_factors.MyriadProItalicMetrics + }; + t["MyriadPro-BoldIt"] = t["MyriadPro-BoldItalic"] = t["PdfJS-Fallback-BoldItalic"] = { + name: "LiberationSans-BoldItalic", + factors: _myriadpro_factors.MyriadProBoldItalicFactors, + baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths, + baseMapping: _liberationsans_widths.LiberationSansBoldItalicMapping, + metrics: _myriadpro_factors.MyriadProBoldItalicMetrics + }; + t.ArialMT = t.Arial = t["Arial-Regular"] = { + name: "LiberationSans-Regular", + baseWidths: _liberationsans_widths.LiberationSansRegularWidths, + baseMapping: _liberationsans_widths.LiberationSansRegularMapping + }; + t["Arial-BoldMT"] = t["Arial-Bold"] = { + name: "LiberationSans-Bold", + baseWidths: _liberationsans_widths.LiberationSansBoldWidths, + baseMapping: _liberationsans_widths.LiberationSansBoldMapping + }; + t["Arial-ItalicMT"] = t["Arial-Italic"] = { + name: "LiberationSans-Italic", + baseWidths: _liberationsans_widths.LiberationSansItalicWidths, + baseMapping: _liberationsans_widths.LiberationSansItalicMapping + }; + t["Arial-BoldItalicMT"] = t["Arial-BoldItalic"] = { + name: "LiberationSans-BoldItalic", + baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths, + baseMapping: _liberationsans_widths.LiberationSansBoldItalicMapping + }; + t["Calibri-Regular"] = { + name: "LiberationSans-Regular", + factors: _calibri_factors.CalibriRegularFactors, + baseWidths: _liberationsans_widths.LiberationSansRegularWidths, + baseMapping: _liberationsans_widths.LiberationSansRegularMapping, + metrics: _calibri_factors.CalibriRegularMetrics + }; + t["Calibri-Bold"] = { + name: "LiberationSans-Bold", + factors: _calibri_factors.CalibriBoldFactors, + baseWidths: _liberationsans_widths.LiberationSansBoldWidths, + baseMapping: _liberationsans_widths.LiberationSansBoldMapping, + metrics: _calibri_factors.CalibriBoldMetrics + }; + t["Calibri-Italic"] = { + name: "LiberationSans-Italic", + factors: _calibri_factors.CalibriItalicFactors, + baseWidths: _liberationsans_widths.LiberationSansItalicWidths, + baseMapping: _liberationsans_widths.LiberationSansItalicMapping, + metrics: _calibri_factors.CalibriItalicMetrics + }; + t["Calibri-BoldItalic"] = { + name: "LiberationSans-BoldItalic", + factors: _calibri_factors.CalibriBoldItalicFactors, + baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths, + baseMapping: _liberationsans_widths.LiberationSansBoldItalicMapping, + metrics: _calibri_factors.CalibriBoldItalicMetrics + }; + t["Segoeui-Regular"] = { + name: "LiberationSans-Regular", + factors: _segoeui_factors.SegoeuiRegularFactors, + baseWidths: _liberationsans_widths.LiberationSansRegularWidths, + baseMapping: _liberationsans_widths.LiberationSansRegularMapping, + metrics: _segoeui_factors.SegoeuiRegularMetrics + }; + t["Segoeui-Bold"] = { + name: "LiberationSans-Bold", + factors: _segoeui_factors.SegoeuiBoldFactors, + baseWidths: _liberationsans_widths.LiberationSansBoldWidths, + baseMapping: _liberationsans_widths.LiberationSansBoldMapping, + metrics: _segoeui_factors.SegoeuiBoldMetrics + }; + t["Segoeui-Italic"] = { + name: "LiberationSans-Italic", + factors: _segoeui_factors.SegoeuiItalicFactors, + baseWidths: _liberationsans_widths.LiberationSansItalicWidths, + baseMapping: _liberationsans_widths.LiberationSansItalicMapping, + metrics: _segoeui_factors.SegoeuiItalicMetrics + }; + t["Segoeui-BoldItalic"] = { + name: "LiberationSans-BoldItalic", + factors: _segoeui_factors.SegoeuiBoldItalicFactors, + baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths, + baseMapping: _liberationsans_widths.LiberationSansBoldItalicMapping, + metrics: _segoeui_factors.SegoeuiBoldItalicMetrics + }; + t["Helvetica-Regular"] = t.Helvetica = { + name: "LiberationSans-Regular", + factors: _helvetica_factors.HelveticaRegularFactors, + baseWidths: _liberationsans_widths.LiberationSansRegularWidths, + baseMapping: _liberationsans_widths.LiberationSansRegularMapping, + metrics: _helvetica_factors.HelveticaRegularMetrics + }; + t["Helvetica-Bold"] = { + name: "LiberationSans-Bold", + factors: _helvetica_factors.HelveticaBoldFactors, + baseWidths: _liberationsans_widths.LiberationSansBoldWidths, + baseMapping: _liberationsans_widths.LiberationSansBoldMapping, + metrics: _helvetica_factors.HelveticaBoldMetrics + }; + t["Helvetica-Italic"] = { + name: "LiberationSans-Italic", + factors: _helvetica_factors.HelveticaItalicFactors, + baseWidths: _liberationsans_widths.LiberationSansItalicWidths, + baseMapping: _liberationsans_widths.LiberationSansItalicMapping, + metrics: _helvetica_factors.HelveticaItalicMetrics + }; + t["Helvetica-BoldItalic"] = { + name: "LiberationSans-BoldItalic", + factors: _helvetica_factors.HelveticaBoldItalicFactors, + baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths, + baseMapping: _liberationsans_widths.LiberationSansBoldItalicMapping, + metrics: _helvetica_factors.HelveticaBoldItalicMetrics + }; +}); +function getXfaFontName(name) { + const fontName = (0, _fonts_utils.normalizeFontName)(name); + const fontMap = getXFAFontMap(); + return fontMap[fontName]; +} +function getXfaFontWidths(name) { + const info = getXfaFontName(name); + if (!info) { + return null; + } + const { + baseWidths, + baseMapping, + factors + } = info; + let rescaledBaseWidths; + if (!factors) { + rescaledBaseWidths = baseWidths; + } else { + rescaledBaseWidths = baseWidths.map((w, i) => w * factors[i]); + } + let currentCode = -2; + let currentArray; + const newWidths = []; + for (const [unicode, glyphIndex] of baseMapping.map((charUnicode, index) => [charUnicode, index]).sort(([unicode1], [unicode2]) => unicode1 - unicode2)) { + if (unicode === -1) { + continue; + } + if (unicode === currentCode + 1) { + currentArray.push(rescaledBaseWidths[glyphIndex]); + currentCode += 1; + } else { + currentCode = unicode; + currentArray = [rescaledBaseWidths[glyphIndex]]; + newWidths.push(unicode, currentArray); + } + } + return newWidths; +} +function getXfaFontDict(name) { + const widths = getXfaFontWidths(name); + const dict = new _primitives.Dict(null); + dict.set("BaseFont", _primitives.Name.get(name)); + dict.set("Type", _primitives.Name.get("Font")); + dict.set("Subtype", _primitives.Name.get("CIDFontType2")); + dict.set("Encoding", _primitives.Name.get("Identity-H")); + dict.set("CIDToGIDMap", _primitives.Name.get("Identity")); + dict.set("W", widths); + dict.set("FirstChar", widths[0]); + dict.set("LastChar", widths.at(-2) + widths.at(-1).length - 1); + const descriptor = new _primitives.Dict(null); + dict.set("FontDescriptor", descriptor); + const systemInfo = new _primitives.Dict(null); + systemInfo.set("Ordering", "Identity"); + systemInfo.set("Registry", "Adobe"); + systemInfo.set("Supplement", 0); + dict.set("CIDSystemInfo", systemInfo); + return dict; +} + +/***/ }), +/* 52 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.CalibriRegularMetrics = exports.CalibriRegularFactors = exports.CalibriItalicMetrics = exports.CalibriItalicFactors = exports.CalibriBoldMetrics = exports.CalibriBoldItalicMetrics = exports.CalibriBoldItalicFactors = exports.CalibriBoldFactors = void 0; +const CalibriBoldFactors = [1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566, 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.54657, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859, 0.92138, 0.83908, 0.7762, 0.73293, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356, 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.9121, 0.86943, 0.79795, 0.88198, 0.77958, 0.70864, 0.81055, 0.90399, 0.88653, 0.96017, 0.82577, 0.77892, 0.78257, 0.97507, 1.54657, 0.97507, 0.85284, 0.89552, 0.90176, 0.88762, 0.8785, 0.75241, 0.8785, 0.90518, 0.95015, 0.77618, 0.8785, 0.88401, 0.91916, 0.86304, 0.88401, 0.91488, 0.8785, 0.8801, 0.8785, 0.8785, 0.91343, 0.7173, 1.04106, 0.8785, 0.85075, 0.95794, 0.82616, 0.85162, 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.12401, 0.96839, 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.73293, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506, 0.9121, 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.85284, 0.87508, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.8715, 0.75241, 0.90518, 0.90518, 0.90518, 0.90518, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.8785, 0.8801, 0.8801, 0.8801, 0.8801, 0.8801, 0.90747, 0.89049, 0.8785, 0.8785, 0.8785, 0.8785, 0.85162, 0.8785, 0.85162, 0.83908, 0.88762, 0.83908, 0.88762, 0.83908, 0.88762, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.87289, 0.83016, 0.88506, 0.93125, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.81921, 0.77618, 0.81921, 0.77618, 0.81921, 0.77618, 1, 1, 0.87356, 0.8785, 0.91075, 0.89608, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.76229, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.79468, 0.91926, 0.88175, 0.70823, 0.94903, 0.9121, 0.8785, 1, 1, 0.9121, 0.8785, 0.87802, 0.88656, 0.8785, 0.86943, 0.8801, 0.86943, 0.8801, 0.86943, 0.8801, 0.87402, 0.89291, 0.77958, 0.91343, 1, 1, 0.77958, 0.91343, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864, 0.7173, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.96017, 0.95794, 0.77892, 0.85162, 0.77892, 0.78257, 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.88762, 0.77539, 0.8715, 0.87508, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, 1, 1.15543, 0.70674, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.06303, 0.83908, 0.80352, 0.57184, 0.6965, 0.56289, 0.82001, 0.56029, 0.81235, 1.02988, 0.83908, 0.7762, 0.68156, 0.80367, 0.73133, 0.78257, 0.87356, 0.86943, 0.95958, 0.75727, 0.89019, 1.04924, 0.9121, 0.7648, 0.86943, 0.87356, 0.79795, 0.78275, 0.81055, 0.77892, 0.9762, 0.82577, 0.99819, 0.84896, 0.95958, 0.77892, 0.96108, 1.01407, 0.89049, 1.02988, 0.94211, 0.96108, 0.8936, 0.84021, 0.87842, 0.96399, 0.79109, 0.89049, 1.00813, 1.02988, 0.86077, 0.87445, 0.92099, 0.84723, 0.86513, 0.8801, 0.75638, 0.85714, 0.78216, 0.79586, 0.87965, 0.94211, 0.97747, 0.78287, 0.97926, 0.84971, 1.02988, 0.94211, 0.8801, 0.94211, 0.84971, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90264, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90518, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90548, 1, 1, 1, 1, 1, 1, 0.96017, 0.95794, 0.96017, 0.95794, 0.96017, 0.95794, 0.77892, 0.85162, 1, 1, 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.92794, 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71143, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.93835, 0.83406, 0.91133, 0.84107, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90527, 1.81055, 0.90527, 1.81055, 1.31006, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.CalibriBoldFactors = CalibriBoldFactors; +const CalibriBoldMetrics = { + lineHeight: 1.2207, + lineGap: 0.2207 +}; +exports.CalibriBoldMetrics = CalibriBoldMetrics; +const CalibriBoldItalicFactors = [1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566, 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.56239, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859, 0.92138, 0.83908, 0.7762, 0.71805, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356, 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.90872, 0.85938, 0.79795, 0.87068, 0.77958, 0.69766, 0.81055, 0.90399, 0.88653, 0.96068, 0.82577, 0.77892, 0.78257, 0.97507, 1.529, 0.97507, 0.85284, 0.89552, 0.90176, 0.94908, 0.86411, 0.74012, 0.86411, 0.88323, 0.95015, 0.86411, 0.86331, 0.88401, 0.91916, 0.86304, 0.88401, 0.9039, 0.86331, 0.86331, 0.86411, 0.86411, 0.90464, 0.70852, 1.04106, 0.86331, 0.84372, 0.95794, 0.82616, 0.84548, 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.19129, 0.96839, 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.71805, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506, 0.90872, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938, 0.85284, 0.87068, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.85887, 0.74012, 0.88323, 0.88323, 0.88323, 0.88323, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.90747, 0.89049, 0.86331, 0.86331, 0.86331, 0.86331, 0.84548, 0.86411, 0.84548, 0.83908, 0.94908, 0.83908, 0.94908, 0.83908, 0.94908, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.87289, 0.79538, 0.88506, 0.92726, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.81921, 0.86411, 0.81921, 0.86411, 0.81921, 0.86411, 1, 1, 0.87356, 0.86331, 0.91075, 0.8777, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.76467, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.77312, 0.91926, 0.88175, 0.70823, 0.94903, 0.90872, 0.86331, 1, 1, 0.90872, 0.86331, 0.86906, 0.88116, 0.86331, 0.85938, 0.86331, 0.85938, 0.86331, 0.85938, 0.86331, 0.87402, 0.86549, 0.77958, 0.90464, 1, 1, 0.77958, 0.90464, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.96068, 0.95794, 0.77892, 0.84548, 0.77892, 0.78257, 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.94908, 0.77539, 0.85887, 0.87068, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, 1, 1.15543, 0.70088, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.48387, 0.83908, 0.80352, 0.57118, 0.6965, 0.56347, 0.79179, 0.55853, 0.80346, 1.02988, 0.83908, 0.7762, 0.67174, 0.86036, 0.73133, 0.78257, 0.87356, 0.86441, 0.95958, 0.75727, 0.89019, 1.04924, 0.90872, 0.74889, 0.85938, 0.87891, 0.79795, 0.7957, 0.81055, 0.77892, 0.97447, 0.82577, 0.97466, 0.87179, 0.95958, 0.77892, 0.94252, 0.95612, 0.8753, 1.02988, 0.92733, 0.94252, 0.87411, 0.84021, 0.8728, 0.95612, 0.74081, 0.8753, 1.02189, 1.02988, 0.84814, 0.87445, 0.91822, 0.84723, 0.85668, 0.86331, 0.81344, 0.87581, 0.76422, 0.82046, 0.96057, 0.92733, 0.99375, 0.78022, 0.95452, 0.86015, 1.02988, 0.92733, 0.86331, 0.92733, 0.86015, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90631, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.88323, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85174, 1, 1, 1, 1, 1, 1, 0.96068, 0.95794, 0.96068, 0.95794, 0.96068, 0.95794, 0.77892, 0.84548, 1, 1, 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.89807, 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71094, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.92972, 0.83406, 0.91133, 0.83326, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90616, 1.81055, 0.90527, 1.81055, 1.3107, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.CalibriBoldItalicFactors = CalibriBoldItalicFactors; +const CalibriBoldItalicMetrics = { + lineHeight: 1.2207, + lineGap: 0.2207 +}; +exports.CalibriBoldItalicMetrics = CalibriBoldItalicMetrics; +const CalibriItalicFactors = [1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601, 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39543, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071, 0.8675, 0.81552, 0.72346, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685, 0.6377, 0.77892, 0.75593, 1.02638, 0.89249, 0.84118, 0.77452, 0.85374, 0.75186, 0.67789, 0.79776, 0.88844, 0.85066, 0.94309, 0.77818, 0.7306, 0.76659, 1.10369, 1.38313, 1.10369, 1.06139, 0.89552, 0.8739, 0.9245, 0.9245, 0.83203, 0.9245, 0.85865, 1.09842, 0.9245, 0.9245, 1.03297, 1.07692, 0.90918, 1.03297, 0.94959, 0.9245, 0.92274, 0.9245, 0.9245, 1.02933, 0.77832, 1.20562, 0.9245, 0.8916, 0.98986, 0.86621, 0.89453, 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.16359, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.72346, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685, 0.86477, 0.89249, 0.84118, 0.84118, 0.84118, 0.84118, 0.84118, 0.85284, 0.84557, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.84843, 0.83203, 0.85865, 0.85865, 0.85865, 0.85865, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469, 0.9245, 0.92274, 0.92274, 0.92274, 0.92274, 0.92274, 0.90747, 0.86651, 0.9245, 0.9245, 0.9245, 0.9245, 0.89453, 0.9245, 0.89453, 0.8675, 0.9245, 0.8675, 0.9245, 0.8675, 0.9245, 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.85193, 0.8875, 0.86477, 0.99034, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.81105, 0.9245, 0.81105, 0.9245, 0.81105, 0.9245, 1, 1, 0.86275, 0.9245, 0.90872, 0.93591, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77896, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032, 0.9375, 0.98156, 0.93407, 0.77261, 1.11429, 0.89249, 0.9245, 1, 1, 0.89249, 0.9245, 0.92534, 0.86698, 0.9245, 0.84118, 0.92274, 0.84118, 0.92274, 0.84118, 0.92274, 0.8667, 0.86291, 0.75186, 1.02933, 1, 1, 0.75186, 1.02933, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 1, 1, 0.79776, 0.97655, 0.79776, 1.23023, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.94309, 0.98986, 0.7306, 0.89453, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.9245, 0.76318, 0.84843, 0.84557, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67009, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387, 0.8675, 0.90861, 0.6192, 0.7363, 0.64824, 0.82411, 0.56321, 0.85696, 1.23516, 0.8675, 0.81552, 0.7286, 0.84134, 0.73206, 0.76659, 0.86275, 0.84369, 0.90685, 0.77892, 0.85871, 1.02638, 0.89249, 0.75828, 0.84118, 0.85984, 0.77452, 0.76466, 0.79776, 0.7306, 0.90782, 0.77818, 0.903, 0.87291, 0.90685, 0.7306, 0.99058, 1.03667, 0.94635, 1.23516, 0.9849, 0.99058, 0.92393, 0.8916, 0.942, 1.03667, 0.75026, 0.94635, 1.0297, 1.23516, 0.90918, 0.94048, 0.98217, 0.89746, 0.84153, 0.92274, 0.82507, 0.88832, 0.84438, 0.88178, 1.03525, 0.9849, 1.00225, 0.78086, 0.97248, 0.89404, 1.23516, 0.9849, 0.92274, 0.9849, 0.89404, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89693, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85865, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90933, 1, 1, 1, 1, 1, 1, 0.94309, 0.98986, 0.94309, 0.98986, 0.94309, 0.98986, 0.7306, 0.89453, 1, 1, 0.89552, 0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566, 0.89552, 0.89552, 1.42259, 0.68994, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523, 1.4956, 2.01462, 0.97858, 0.82616, 0.91133, 0.83437, 0.91133, 1, 1, 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90572, 1.81055, 0.90749, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589, 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747, 0.85284, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.CalibriItalicFactors = CalibriItalicFactors; +const CalibriItalicMetrics = { + lineHeight: 1.2207, + lineGap: 0.2207 +}; +exports.CalibriItalicMetrics = CalibriItalicMetrics; +const CalibriRegularFactors = [1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601, 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39016, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071, 0.8675, 0.81552, 0.73834, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685, 0.6377, 0.77892, 0.75593, 1.02638, 0.89385, 0.85122, 0.77452, 0.86503, 0.75186, 0.68887, 0.79776, 0.88844, 0.85066, 0.94258, 0.77818, 0.7306, 0.76659, 1.10369, 1.39016, 1.10369, 1.06139, 0.89552, 0.8739, 0.86128, 0.94469, 0.8457, 0.94469, 0.89464, 1.09842, 0.84636, 0.94469, 1.03297, 1.07692, 0.90918, 1.03297, 0.95897, 0.94469, 0.9482, 0.94469, 0.94469, 1.04692, 0.78223, 1.20562, 0.94469, 0.90332, 0.98986, 0.86621, 0.90527, 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.08707, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.73834, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685, 0.86477, 0.89385, 0.85122, 0.85122, 0.85122, 0.85122, 0.85122, 0.85284, 0.85311, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.8693, 0.8457, 0.89464, 0.89464, 0.89464, 0.89464, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469, 0.94469, 0.9482, 0.9482, 0.9482, 0.9482, 0.9482, 0.90747, 0.86651, 0.94469, 0.94469, 0.94469, 0.94469, 0.90527, 0.94469, 0.90527, 0.8675, 0.86128, 0.8675, 0.86128, 0.8675, 0.86128, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457, 0.85193, 0.92454, 0.86477, 0.9921, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.81105, 0.84636, 0.81105, 0.84636, 0.81105, 0.84636, 1, 1, 0.86275, 0.94469, 0.90872, 0.95786, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77741, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032, 0.90452, 0.98156, 1.11842, 0.77261, 1.11429, 0.89385, 0.94469, 1, 1, 0.89385, 0.94469, 0.95877, 0.86901, 0.94469, 0.85122, 0.9482, 0.85122, 0.9482, 0.85122, 0.9482, 0.8667, 0.90016, 0.75186, 1.04692, 1, 1, 0.75186, 1.04692, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223, 1, 1, 0.79776, 0.92188, 0.79776, 1.23023, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.94258, 0.98986, 0.7306, 0.90527, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.86128, 0.76318, 0.8693, 0.85311, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67742, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387, 0.86686, 0.90861, 0.62267, 0.74359, 0.65649, 0.85498, 0.56963, 0.88254, 1.23516, 0.8675, 0.81552, 0.75443, 0.84503, 0.73206, 0.76659, 0.86275, 0.85122, 0.90685, 0.77892, 0.85746, 1.02638, 0.89385, 0.75657, 0.85122, 0.86275, 0.77452, 0.74171, 0.79776, 0.7306, 0.95165, 0.77818, 0.89772, 0.88831, 0.90685, 0.7306, 0.98142, 1.02191, 0.96576, 1.23516, 0.99018, 0.98142, 0.9236, 0.89258, 0.94035, 1.02191, 0.78848, 0.96576, 0.9561, 1.23516, 0.90918, 0.92578, 0.95424, 0.89746, 0.83969, 0.9482, 0.80113, 0.89442, 0.85208, 0.86155, 0.98022, 0.99018, 1.00452, 0.81209, 0.99247, 0.89181, 1.23516, 0.99018, 0.9482, 0.99018, 0.89181, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.88844, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89464, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96766, 1, 1, 1, 1, 1, 1, 0.94258, 0.98986, 0.94258, 0.98986, 0.94258, 0.98986, 0.7306, 0.90527, 1, 1, 0.89552, 0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566, 0.89552, 0.89552, 1.42259, 0.69043, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523, 1.4956, 2.01462, 0.99331, 0.82616, 0.91133, 0.84286, 0.91133, 1, 1, 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90527, 1.81055, 0.90527, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589, 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1.07185, 0.99413, 0.96334, 1.08065, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.CalibriRegularFactors = CalibriRegularFactors; +const CalibriRegularMetrics = { + lineHeight: 1.2207, + lineGap: 0.2207 +}; +exports.CalibriRegularMetrics = CalibriRegularMetrics; + +/***/ }), +/* 53 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.HelveticaRegularMetrics = exports.HelveticaRegularFactors = exports.HelveticaItalicMetrics = exports.HelveticaItalicFactors = exports.HelveticaBoldMetrics = exports.HelveticaBoldItalicMetrics = exports.HelveticaBoldItalicFactors = exports.HelveticaBoldFactors = void 0; +const HelveticaBoldFactors = [0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977, 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1, 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 1.03374, 0.99977, 1.00026, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.00042, 0.99973, 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.03828, 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977, 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 1.00034, 0.99977, 1, 0.99997, 1.00026, 1.00078, 1.00036, 0.99973, 1.00013, 1.0006, 0.99977, 0.99977, 0.99988, 0.85148, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 1.00069, 1.00022, 0.99977, 1.00001, 0.99984, 1.00026, 1.00001, 1.00024, 1.00001, 0.9999, 1, 1.0006, 1.00001, 1.00041, 0.99962, 1.00026, 1.0006, 0.99995, 1.00041, 0.99942, 0.99973, 0.99927, 1.00082, 0.99902, 1.00026, 1.00087, 1.0006, 1.00069, 0.99973, 0.99867, 0.99973, 0.9993, 1.00026, 1.00049, 1.00056, 1, 0.99988, 0.99935, 0.99995, 0.99954, 1.00055, 0.99945, 1.00032, 1.0006, 0.99995, 1.00026, 0.99995, 1.00032, 1.00001, 1.00008, 0.99971, 1.00019, 0.9994, 1.00001, 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942, 0.99561, 0.99989, 1.00035, 0.99977, 1.00035, 0.99977, 1.00019, 0.99944, 1.00001, 1.00021, 0.99926, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.99989, 1.00057, 1.00001, 0.99936, 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, 0.9994, 0.99976, 1.00035, 0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973, 1.00002, 0.99986, 1.00041, 1.00041, 0.99902, 0.9996, 1.00034, 0.99999, 1.00026, 0.99999, 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 1.00041, 1.00075, 0.9994, 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 0.99973, 0.99973, 1.00026, 1.00119, 0.99955, 0.99973, 1.0006, 0.99911, 1.0006, 1.00026, 0.99972, 1.00026, 0.99902, 1.00041, 0.99973, 0.99999, 1, 1, 1.00038, 1.0005, 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1, 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973, 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 1.00047, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.HelveticaBoldFactors = HelveticaBoldFactors; +const HelveticaBoldMetrics = { + lineHeight: 1.2, + lineGap: 0.2 +}; +exports.HelveticaBoldMetrics = HelveticaBoldMetrics; +const HelveticaBoldItalicFactors = [0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977, 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1, 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 1.0044, 0.99977, 1.00026, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99971, 0.99973, 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.01011, 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977, 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99977, 1, 1, 1.00026, 0.99969, 0.99972, 0.99981, 0.9998, 1.0006, 0.99977, 0.99977, 1.00022, 0.91155, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 0.99966, 1.00022, 1.00032, 1.00001, 0.99944, 1.00026, 1.00001, 0.99968, 1.00001, 1.00047, 1, 1.0006, 1.00001, 0.99981, 1.00101, 1.00026, 1.0006, 0.99948, 0.99981, 1.00064, 0.99973, 0.99942, 1.00101, 1.00061, 1.00026, 1.00069, 1.0006, 1.00014, 0.99973, 1.01322, 0.99973, 1.00065, 1.00026, 1.00012, 0.99923, 1, 1.00064, 1.00076, 0.99948, 1.00055, 1.00063, 1.00007, 0.99943, 1.0006, 0.99948, 1.00026, 0.99948, 0.99943, 1.00001, 1.00001, 1.00029, 1.00038, 1.00035, 1.00001, 1.0006, 1.0006, 0.99973, 0.99978, 1.00001, 1.00057, 0.99989, 0.99967, 0.99964, 0.99967, 0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 1.00001, 0.99973, 1.00066, 0.99967, 0.99967, 1.00041, 0.99998, 0.99999, 0.99977, 1.00022, 0.99967, 1.00001, 0.99977, 1.00026, 0.99964, 1.00031, 1.00001, 0.99999, 0.99999, 1, 1.00023, 1, 1, 0.99999, 1.00035, 1.00001, 0.99999, 0.99973, 0.99977, 0.99999, 1.00058, 0.99973, 0.99973, 0.99955, 0.9995, 1.00026, 1.00026, 1.00032, 0.99989, 1.00034, 0.99999, 1.00026, 1.00026, 1.00026, 0.99973, 0.45998, 0.99973, 1.00026, 0.99973, 1.00001, 0.99999, 0.99982, 0.99994, 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 0.99973, 0.99973, 1.00026, 0.99949, 1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975, 1.00026, 1.00026, 1.00032, 0.98685, 0.99973, 1.00026, 1, 1, 0.99966, 1.00044, 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1, 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973, 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1, 0.99973, 0.99971, 0.99978, 1, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00098, 1, 1, 1, 1.00049, 1, 1, 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.HelveticaBoldItalicFactors = HelveticaBoldItalicFactors; +const HelveticaBoldItalicMetrics = { + lineHeight: 1.35, + lineGap: 0.2 +}; +exports.HelveticaBoldItalicMetrics = HelveticaBoldItalicMetrics; +const HelveticaItalicFactors = [0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001, 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987, 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973, 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.0288, 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006, 1.0006, 0.99946, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924, 0.99973, 0.99924, 0.99973, 1.06311, 0.99973, 1.00024, 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00041, 0.9998, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016, 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.89547, 1.00026, 1.0006, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 1.00001, 1, 1.00054, 0.99977, 1.00084, 1.00007, 0.99973, 1.00013, 0.99924, 1.00001, 1.00001, 0.99945, 0.91221, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 1.00001, 1.00001, 0.99999, 0.99977, 0.99933, 1.00022, 1.00054, 1.00001, 1.00065, 1.00026, 1.00001, 1.0001, 1.00001, 1.00052, 1, 1.0006, 1.00001, 0.99945, 0.99897, 0.99968, 0.99924, 1.00036, 0.99945, 0.99949, 1, 1.0006, 0.99897, 0.99918, 0.99968, 0.99911, 0.99924, 1, 0.99962, 1.01487, 1, 1.0005, 0.99973, 1.00012, 1.00043, 1, 0.99995, 0.99994, 1.00036, 0.99947, 1.00019, 1.00063, 1.00025, 0.99924, 1.00036, 0.99973, 1.00036, 1.00025, 1.00001, 1.00001, 1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006, 1, 1.00008, 0.99957, 0.99972, 0.9994, 0.99954, 0.99975, 1.00051, 1.00001, 1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 1.00001, 1.00038, 0.99954, 0.99954, 0.9994, 1.00066, 0.99999, 0.99977, 1.00022, 1.00054, 1.00001, 0.99977, 1.00026, 0.99975, 1.0001, 1.00001, 0.99993, 0.9995, 0.99955, 1.00016, 0.99978, 0.99974, 1.00019, 1.00022, 0.99955, 1.00053, 0.99973, 1.00089, 1.00005, 0.99967, 1.00048, 0.99973, 1.00002, 1.00034, 0.99973, 0.99973, 0.99964, 1.00006, 1.00066, 0.99947, 0.99973, 0.98894, 0.99973, 1, 0.44898, 1, 0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 0.99985, 1.00022, 1.00023, 1.00061, 1.00006, 0.99966, 0.99973, 0.99973, 0.99973, 1.00019, 1.0008, 1, 0.99924, 0.99924, 0.99924, 0.99983, 1.00044, 0.99973, 0.99964, 0.98332, 1, 0.99973, 1, 1, 0.99962, 0.99895, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 1.00423, 0.99925, 0.99999, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00049, 1, 1.00245, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 1.00003, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.HelveticaItalicFactors = HelveticaItalicFactors; +const HelveticaItalicMetrics = { + lineHeight: 1.35, + lineGap: 0.2 +}; +exports.HelveticaItalicMetrics = HelveticaItalicMetrics; +const HelveticaRegularFactors = [0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001, 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987, 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973, 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.04596, 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006, 1.0006, 1.00019, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924, 0.99973, 0.99924, 0.99973, 1.02572, 0.99973, 1.00005, 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99999, 0.9998, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016, 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.84533, 1.00026, 1.0006, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99928, 1, 0.99977, 1.00013, 1.00055, 0.99947, 0.99945, 0.99941, 0.99924, 1.00001, 1.00001, 1.0004, 0.91621, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 1.00001, 1.00005, 0.99999, 0.99977, 1.00015, 1.00022, 0.99977, 1.00001, 0.99973, 1.00026, 1.00001, 1.00019, 1.00001, 0.99946, 1, 1.0006, 1.00001, 0.99978, 1.00045, 0.99973, 0.99924, 1.00023, 0.99978, 0.99966, 1, 1.00065, 1.00045, 1.00019, 0.99973, 0.99973, 0.99924, 1, 1, 0.96499, 1, 1.00055, 0.99973, 1.00008, 1.00027, 1, 0.9997, 0.99995, 1.00023, 0.99933, 1.00019, 1.00015, 1.00031, 0.99924, 1.00023, 0.99973, 1.00023, 1.00031, 1.00001, 0.99928, 1.00029, 1.00092, 1.00035, 1.00001, 1.0006, 1.0006, 1, 0.99988, 0.99975, 1, 1.00082, 0.99561, 0.9996, 1.00035, 1.00001, 0.99962, 1.00001, 1.00092, 0.99964, 1.00001, 0.99963, 0.99999, 1.00035, 1.00035, 1.00082, 0.99962, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.9996, 0.99967, 1.00001, 1.00034, 1.00074, 1.00054, 1.00053, 1.00063, 0.99971, 0.99962, 1.00035, 0.99975, 0.99977, 0.99973, 1.00043, 0.99953, 1.0007, 0.99915, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073, 1.00114, 0.99915, 1.00073, 0.99955, 0.99973, 1.00092, 0.99973, 1, 0.99998, 1, 1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, 1.00035, 1.00001, 0.9995, 1, 1.00092, 0.99973, 0.99973, 0.99973, 1.0007, 0.9995, 1, 0.99924, 1.0006, 0.99924, 0.99972, 1.00062, 0.99973, 1.00114, 1.00073, 1, 0.99955, 1, 1, 1.00047, 0.99968, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 0.99925, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.HelveticaRegularFactors = HelveticaRegularFactors; +const HelveticaRegularMetrics = { + lineHeight: 1.2, + lineGap: 0.2 +}; +exports.HelveticaRegularMetrics = HelveticaRegularMetrics; + +/***/ }), +/* 54 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.LiberationSansRegularWidths = exports.LiberationSansRegularMapping = exports.LiberationSansItalicWidths = exports.LiberationSansItalicMapping = exports.LiberationSansBoldWidths = exports.LiberationSansBoldMapping = exports.LiberationSansBoldItalicWidths = exports.LiberationSansBoldItalicMapping = void 0; +const LiberationSansBoldWidths = [365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333, 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611, 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 719, 722, 611, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611, 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 785, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 385, 611, 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778, 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556, 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611, 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 465, 722, 333, 853, 906, 474, 825, 927, 838, 278, 722, 722, 601, 719, 667, 611, 722, 778, 278, 722, 667, 833, 722, 644, 778, 722, 667, 600, 611, 667, 821, 667, 809, 802, 278, 667, 615, 451, 611, 278, 582, 615, 610, 556, 606, 475, 460, 611, 541, 278, 558, 556, 612, 556, 445, 611, 766, 619, 520, 684, 446, 582, 715, 576, 753, 845, 278, 582, 611, 582, 845, 667, 669, 885, 567, 711, 667, 278, 276, 556, 1094, 1062, 875, 610, 722, 622, 719, 722, 719, 722, 567, 712, 667, 904, 626, 719, 719, 610, 702, 833, 722, 778, 719, 667, 722, 611, 622, 854, 667, 730, 703, 1005, 1019, 870, 979, 719, 711, 1031, 719, 556, 618, 615, 417, 635, 556, 709, 497, 615, 615, 500, 635, 740, 604, 611, 604, 611, 556, 490, 556, 875, 556, 615, 581, 833, 844, 729, 854, 615, 552, 854, 583, 556, 556, 611, 417, 552, 556, 278, 281, 278, 969, 906, 611, 500, 615, 556, 604, 778, 611, 487, 447, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333, 333, 604, 333, 167, 396, 556, 556, 1094, 556, 885, 489, 1115, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333, 333, 333, 333, 333, 333]; +exports.LiberationSansBoldWidths = LiberationSansBoldWidths; +const LiberationSansBoldMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]; +exports.LiberationSansBoldMapping = LiberationSansBoldMapping; +const LiberationSansBoldItalicWidths = [365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333, 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611, 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 740, 722, 611, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611, 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 782, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 396, 611, 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778, 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556, 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611, 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 722, 333, 854, 906, 473, 844, 930, 847, 278, 722, 722, 610, 671, 667, 611, 722, 778, 278, 722, 667, 833, 722, 657, 778, 718, 667, 590, 611, 667, 822, 667, 829, 781, 278, 667, 620, 479, 611, 278, 591, 620, 621, 556, 610, 479, 492, 611, 558, 278, 566, 556, 603, 556, 450, 611, 712, 605, 532, 664, 409, 591, 704, 578, 773, 834, 278, 591, 611, 591, 834, 667, 667, 886, 614, 719, 667, 278, 278, 556, 1094, 1042, 854, 622, 719, 677, 719, 722, 708, 722, 614, 722, 667, 927, 643, 719, 719, 615, 687, 833, 722, 778, 719, 667, 722, 611, 677, 781, 667, 729, 708, 979, 989, 854, 1000, 708, 719, 1042, 729, 556, 619, 604, 534, 618, 556, 736, 510, 611, 611, 507, 622, 740, 604, 611, 611, 611, 556, 889, 556, 885, 556, 646, 583, 889, 935, 707, 854, 594, 552, 865, 589, 556, 556, 611, 469, 563, 556, 278, 278, 278, 969, 906, 611, 507, 619, 556, 611, 778, 611, 575, 467, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333, 333, 604, 333, 167, 396, 556, 556, 1104, 556, 885, 516, 1146, 1000, 768, 600, 834, 834, 834, 834, 999, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333, 333, 333, 333, 333, 333]; +exports.LiberationSansBoldItalicWidths = LiberationSansBoldItalicWidths; +const LiberationSansBoldItalicMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]; +exports.LiberationSansBoldItalicMapping = LiberationSansBoldItalicMapping; +const LiberationSansItalicWidths = [365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333, 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556, 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556, 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 625, 722, 556, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556, 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278, 278, 733, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 281, 556, 400, 556, 222, 722, 556, 722, 556, 722, 556, 615, 723, 556, 778, 556, 778, 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500, 667, 500, 667, 500, 611, 278, 611, 354, 611, 278, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611, 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 789, 846, 389, 794, 865, 775, 222, 667, 667, 570, 671, 667, 611, 722, 778, 278, 667, 667, 833, 722, 648, 778, 725, 667, 600, 611, 667, 837, 667, 831, 761, 278, 667, 570, 439, 555, 222, 550, 570, 571, 500, 556, 439, 463, 555, 542, 222, 500, 492, 548, 500, 447, 556, 670, 573, 486, 603, 374, 550, 652, 546, 728, 779, 222, 550, 556, 550, 779, 667, 667, 843, 544, 708, 667, 278, 278, 500, 1066, 982, 844, 589, 715, 639, 724, 667, 651, 667, 544, 704, 667, 917, 614, 715, 715, 589, 686, 833, 722, 778, 725, 667, 722, 611, 639, 795, 667, 727, 673, 920, 923, 805, 886, 651, 694, 1022, 682, 556, 562, 522, 493, 553, 556, 688, 465, 556, 556, 472, 564, 686, 550, 556, 556, 556, 500, 833, 500, 835, 500, 572, 518, 830, 851, 621, 736, 526, 492, 752, 534, 556, 556, 556, 378, 496, 500, 222, 222, 222, 910, 828, 556, 472, 565, 500, 556, 778, 556, 492, 339, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552, 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333, 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1083, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 998, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 719, 274, 549, 549, 584, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324, 324, 316, 328, 398, 285]; +exports.LiberationSansItalicWidths = LiberationSansItalicWidths; +const LiberationSansItalicMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]; +exports.LiberationSansItalicMapping = LiberationSansItalicMapping; +const LiberationSansRegularWidths = [365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333, 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556, 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556, 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 615, 722, 556, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556, 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278, 278, 735, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 292, 556, 334, 556, 222, 722, 556, 722, 556, 722, 556, 604, 723, 556, 778, 556, 778, 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500, 667, 500, 667, 500, 611, 278, 611, 375, 611, 278, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611, 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 784, 838, 384, 774, 855, 752, 222, 667, 667, 551, 668, 667, 611, 722, 778, 278, 667, 668, 833, 722, 650, 778, 722, 667, 618, 611, 667, 798, 667, 835, 748, 278, 667, 578, 446, 556, 222, 547, 578, 575, 500, 557, 446, 441, 556, 556, 222, 500, 500, 576, 500, 448, 556, 690, 569, 482, 617, 395, 547, 648, 525, 713, 781, 222, 547, 556, 547, 781, 667, 667, 865, 542, 719, 667, 278, 278, 500, 1057, 1010, 854, 583, 722, 635, 719, 667, 656, 667, 542, 677, 667, 923, 604, 719, 719, 583, 656, 833, 722, 778, 719, 667, 722, 611, 635, 760, 667, 740, 667, 917, 938, 792, 885, 656, 719, 1010, 722, 556, 573, 531, 365, 583, 556, 669, 458, 559, 559, 438, 583, 688, 552, 556, 542, 556, 500, 458, 500, 823, 500, 573, 521, 802, 823, 625, 719, 521, 510, 750, 542, 556, 556, 556, 365, 510, 500, 222, 278, 222, 906, 812, 556, 438, 559, 500, 552, 778, 556, 489, 411, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552, 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333, 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1073, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 719, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324, 324, 316, 328, 398, 285]; +exports.LiberationSansRegularWidths = LiberationSansRegularWidths; +const LiberationSansRegularMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]; +exports.LiberationSansRegularMapping = LiberationSansRegularMapping; + +/***/ }), +/* 55 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MyriadProRegularMetrics = exports.MyriadProRegularFactors = exports.MyriadProItalicMetrics = exports.MyriadProItalicFactors = exports.MyriadProBoldMetrics = exports.MyriadProBoldItalicMetrics = exports.MyriadProBoldItalicFactors = exports.MyriadProBoldFactors = void 0; +const MyriadProBoldFactors = [1.36898, 1, 1, 0.72706, 0.80479, 0.83734, 0.98894, 0.99793, 0.9897, 0.93884, 0.86209, 0.94292, 0.94292, 1.16661, 1.02058, 0.93582, 0.96694, 0.93582, 1.19137, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058, 0.72851, 0.78966, 0.90838, 0.83637, 0.82391, 0.96376, 0.80061, 0.86275, 0.8768, 0.95407, 1.0258, 0.73901, 0.85022, 0.83655, 1.0156, 0.95546, 0.92179, 0.87107, 0.92179, 0.82114, 0.8096, 0.89713, 0.94438, 0.95353, 0.94083, 0.91905, 0.90406, 0.9446, 0.94292, 1.18777, 0.94292, 1.02058, 0.89903, 0.90088, 0.94938, 0.97898, 0.81093, 0.97571, 0.94938, 1.024, 0.9577, 0.95933, 0.98621, 1.0474, 0.97455, 0.98981, 0.9672, 0.95933, 0.9446, 0.97898, 0.97407, 0.97646, 0.78036, 1.10208, 0.95442, 0.95298, 0.97579, 0.9332, 0.94039, 0.938, 0.80687, 1.01149, 0.80687, 1.02058, 0.80479, 0.99793, 0.99793, 0.99793, 0.99793, 1.01149, 1.00872, 0.90088, 0.91882, 1.0213, 0.8361, 1.02058, 0.62295, 0.54324, 0.89022, 1.08595, 1, 1, 0.90088, 1, 0.97455, 0.93582, 0.90088, 1, 1.05686, 0.8361, 0.99642, 0.99642, 0.99642, 0.72851, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.868, 0.82391, 0.80061, 0.80061, 0.80061, 0.80061, 1.0258, 1.0258, 1.0258, 1.0258, 0.97484, 0.95546, 0.92179, 0.92179, 0.92179, 0.92179, 0.92179, 1.02058, 0.92179, 0.94438, 0.94438, 0.94438, 0.94438, 0.90406, 0.86958, 0.98225, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.9031, 0.81093, 0.94938, 0.94938, 0.94938, 0.94938, 0.98621, 0.98621, 0.98621, 0.98621, 0.93969, 0.95933, 0.9446, 0.9446, 0.9446, 0.9446, 0.9446, 1.08595, 0.9446, 0.95442, 0.95442, 0.95442, 0.95442, 0.94039, 0.97898, 0.94039, 0.90838, 0.94938, 0.90838, 0.94938, 0.90838, 0.94938, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.96376, 0.84313, 0.97484, 0.97571, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.8768, 0.9577, 0.8768, 0.9577, 0.8768, 0.9577, 1, 1, 0.95407, 0.95933, 0.97069, 0.95933, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 0.887, 1.01591, 0.73901, 1.0474, 1, 1, 0.97455, 0.83655, 0.98981, 1, 1, 0.83655, 0.73977, 0.83655, 0.73903, 0.84638, 1.033, 0.95546, 0.95933, 1, 1, 0.95546, 0.95933, 0.8271, 0.95417, 0.95933, 0.92179, 0.9446, 0.92179, 0.9446, 0.92179, 0.9446, 0.936, 0.91964, 0.82114, 0.97646, 1, 1, 0.82114, 0.97646, 0.8096, 0.78036, 0.8096, 0.78036, 1, 1, 0.8096, 0.78036, 1, 1, 0.89713, 0.77452, 0.89713, 1.10208, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94083, 0.97579, 0.90406, 0.94039, 0.90406, 0.9446, 0.938, 0.9446, 0.938, 0.9446, 0.938, 1, 0.99793, 0.90838, 0.94938, 0.868, 0.9031, 0.92179, 0.9446, 1, 1, 0.89713, 1.10208, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90989, 0.9358, 0.91945, 0.83181, 0.75261, 0.87992, 0.82976, 0.96034, 0.83689, 0.97268, 1.0078, 0.90838, 0.83637, 0.8019, 0.90157, 0.80061, 0.9446, 0.95407, 0.92436, 1.0258, 0.85022, 0.97153, 1.0156, 0.95546, 0.89192, 0.92179, 0.92361, 0.87107, 0.96318, 0.89713, 0.93704, 0.95638, 0.91905, 0.91709, 0.92796, 1.0258, 0.93704, 0.94836, 1.0373, 0.95933, 1.0078, 0.95871, 0.94836, 0.96174, 0.92601, 0.9498, 0.98607, 0.95776, 0.95933, 1.05453, 1.0078, 0.98275, 0.9314, 0.95617, 0.91701, 1.05993, 0.9446, 0.78367, 0.9553, 1, 0.86832, 1.0128, 0.95871, 0.99394, 0.87548, 0.96361, 0.86774, 1.0078, 0.95871, 0.9446, 0.95871, 0.86774, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.94083, 0.97579, 0.94083, 0.97579, 0.94083, 0.97579, 0.90406, 0.94039, 0.96694, 1, 0.89903, 1, 1, 1, 0.93582, 0.93582, 0.93582, 1, 0.908, 0.908, 0.918, 0.94219, 0.94219, 0.96544, 1, 1.285, 1, 1, 0.81079, 0.81079, 1, 1, 0.74854, 1, 1, 1, 1, 0.99793, 1, 1, 1, 0.65, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.17173, 1, 0.80535, 0.76169, 1.02058, 1.0732, 1.05486, 1, 1, 1.30692, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.16161, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.MyriadProBoldFactors = MyriadProBoldFactors; +const MyriadProBoldMetrics = { + lineHeight: 1.2, + lineGap: 0.2 +}; +exports.MyriadProBoldMetrics = MyriadProBoldMetrics; +const MyriadProBoldItalicFactors = [1.36898, 1, 1, 0.66227, 0.80779, 0.81625, 0.97276, 0.97276, 0.97733, 0.92222, 0.83266, 0.94292, 0.94292, 1.16148, 1.02058, 0.93582, 0.96694, 0.93582, 1.17337, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058, 0.71541, 0.76813, 0.85576, 0.80591, 0.80729, 0.94299, 0.77512, 0.83655, 0.86523, 0.92222, 0.98621, 0.71743, 0.81698, 0.79726, 0.98558, 0.92222, 0.90637, 0.83809, 0.90637, 0.80729, 0.76463, 0.86275, 0.90699, 0.91605, 0.9154, 0.85308, 0.85458, 0.90531, 0.94292, 1.21296, 0.94292, 1.02058, 0.89903, 1.18616, 0.99613, 0.91677, 0.78216, 0.91677, 0.90083, 0.98796, 0.9135, 0.92168, 0.95381, 0.98981, 0.95298, 0.95381, 0.93459, 0.92168, 0.91513, 0.92004, 0.91677, 0.95077, 0.748, 1.04502, 0.91677, 0.92061, 0.94236, 0.89544, 0.89364, 0.9, 0.80687, 0.8578, 0.80687, 1.02058, 0.80779, 0.97276, 0.97276, 0.97276, 0.97276, 0.8578, 0.99973, 1.18616, 0.91339, 1.08074, 0.82891, 1.02058, 0.55509, 0.71526, 0.89022, 1.08595, 1, 1, 1.18616, 1, 0.96736, 0.93582, 1.18616, 1, 1.04864, 0.82711, 0.99043, 0.99043, 0.99043, 0.71541, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.845, 0.80729, 0.77512, 0.77512, 0.77512, 0.77512, 0.98621, 0.98621, 0.98621, 0.98621, 0.95961, 0.92222, 0.90637, 0.90637, 0.90637, 0.90637, 0.90637, 1.02058, 0.90251, 0.90699, 0.90699, 0.90699, 0.90699, 0.85458, 0.83659, 0.94951, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.85811, 0.78216, 0.90083, 0.90083, 0.90083, 0.90083, 0.95381, 0.95381, 0.95381, 0.95381, 0.9135, 0.92168, 0.91513, 0.91513, 0.91513, 0.91513, 0.91513, 1.08595, 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.89364, 0.92332, 0.89364, 0.85576, 0.99613, 0.85576, 0.99613, 0.85576, 0.99613, 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.94299, 0.76783, 0.95961, 0.91677, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.86523, 0.9135, 0.86523, 0.9135, 0.86523, 0.9135, 1, 1, 0.92222, 0.92168, 0.92222, 0.92168, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.86036, 0.97096, 0.71743, 0.98981, 1, 1, 0.95298, 0.79726, 0.95381, 1, 1, 0.79726, 0.6894, 0.79726, 0.74321, 0.81691, 1.0006, 0.92222, 0.92168, 1, 1, 0.92222, 0.92168, 0.79464, 0.92098, 0.92168, 0.90637, 0.91513, 0.90637, 0.91513, 0.90637, 0.91513, 0.909, 0.87514, 0.80729, 0.95077, 1, 1, 0.80729, 0.95077, 0.76463, 0.748, 0.76463, 0.748, 1, 1, 0.76463, 0.748, 1, 1, 0.86275, 0.72651, 0.86275, 1.04502, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.9154, 0.94236, 0.85458, 0.89364, 0.85458, 0.90531, 0.9, 0.90531, 0.9, 0.90531, 0.9, 1, 0.97276, 0.85576, 0.99613, 0.845, 0.85811, 0.90251, 0.91677, 1, 1, 0.86275, 1.04502, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.00899, 1.30628, 0.85576, 0.80178, 0.66862, 0.7927, 0.69323, 0.88127, 0.72459, 0.89711, 0.95381, 0.85576, 0.80591, 0.7805, 0.94729, 0.77512, 0.90531, 0.92222, 0.90637, 0.98621, 0.81698, 0.92655, 0.98558, 0.92222, 0.85359, 0.90637, 0.90976, 0.83809, 0.94523, 0.86275, 0.83509, 0.93157, 0.85308, 0.83392, 0.92346, 0.98621, 0.83509, 0.92886, 0.91324, 0.92168, 0.95381, 0.90646, 0.92886, 0.90557, 0.86847, 0.90276, 0.91324, 0.86842, 0.92168, 0.99531, 0.95381, 0.9224, 0.85408, 0.92699, 0.86847, 1.0051, 0.91513, 0.80487, 0.93481, 1, 0.88159, 1.05214, 0.90646, 0.97355, 0.81539, 0.89398, 0.85923, 0.95381, 0.90646, 0.91513, 0.90646, 0.85923, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9154, 0.94236, 0.9154, 0.94236, 0.9154, 0.94236, 0.85458, 0.89364, 0.96694, 1, 0.89903, 1, 1, 1, 0.91782, 0.91782, 0.91782, 1, 0.896, 0.896, 0.896, 0.9332, 0.9332, 0.95973, 1, 1.26, 1, 1, 0.80479, 0.80178, 1, 1, 0.85633, 1, 1, 1, 1, 0.97276, 1, 1, 1, 0.698, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.14542, 1, 0.79199, 0.78694, 1.02058, 1.03493, 1.05486, 1, 1, 1.23026, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.20006, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.MyriadProBoldItalicFactors = MyriadProBoldItalicFactors; +const MyriadProBoldItalicMetrics = { + lineHeight: 1.2, + lineGap: 0.2 +}; +exports.MyriadProBoldItalicMetrics = MyriadProBoldItalicMetrics; +const MyriadProItalicFactors = [1.36898, 1, 1, 0.65507, 0.84943, 0.85639, 0.88465, 0.88465, 0.86936, 0.88307, 0.86948, 0.85283, 0.85283, 1.06383, 1.02058, 0.75945, 0.9219, 0.75945, 1.17337, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.75945, 0.75945, 1.02058, 1.02058, 1.02058, 0.69046, 0.70926, 0.85158, 0.77812, 0.76852, 0.89591, 0.70466, 0.76125, 0.80094, 0.86822, 0.83864, 0.728, 0.77212, 0.79475, 0.93637, 0.87514, 0.8588, 0.76013, 0.8588, 0.72421, 0.69866, 0.77598, 0.85991, 0.80811, 0.87832, 0.78112, 0.77512, 0.8562, 1.0222, 1.18417, 1.0222, 1.27014, 0.89903, 1.15012, 0.93859, 0.94399, 0.846, 0.94399, 0.81453, 1.0186, 0.94219, 0.96017, 1.03075, 1.02175, 0.912, 1.03075, 0.96998, 0.96017, 0.93859, 0.94399, 0.94399, 0.95493, 0.746, 1.12658, 0.94578, 0.91, 0.979, 0.882, 0.882, 0.83, 0.85034, 0.83537, 0.85034, 1.02058, 0.70869, 0.88465, 0.88465, 0.88465, 0.88465, 0.83537, 0.90083, 1.15012, 0.9161, 0.94565, 0.73541, 1.02058, 0.53609, 0.69353, 0.79519, 1.08595, 1, 1, 1.15012, 1, 0.91974, 0.75945, 1.15012, 1, 0.9446, 0.73361, 0.9005, 0.9005, 0.9005, 0.62864, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.773, 0.76852, 0.70466, 0.70466, 0.70466, 0.70466, 0.83864, 0.83864, 0.83864, 0.83864, 0.90561, 0.87514, 0.8588, 0.8588, 0.8588, 0.8588, 0.8588, 1.02058, 0.85751, 0.85991, 0.85991, 0.85991, 0.85991, 0.77512, 0.76013, 0.88075, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.8075, 0.846, 0.81453, 0.81453, 0.81453, 0.81453, 0.82424, 0.82424, 0.82424, 0.82424, 0.9278, 0.96017, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 1.08595, 0.8562, 0.94578, 0.94578, 0.94578, 0.94578, 0.882, 0.94578, 0.882, 0.85158, 0.93859, 0.85158, 0.93859, 0.85158, 0.93859, 0.76852, 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.89591, 0.8544, 0.90561, 0.94399, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.80094, 0.94219, 0.80094, 0.94219, 0.80094, 0.94219, 1, 1, 0.86822, 0.96017, 0.86822, 0.96017, 0.83864, 0.82424, 0.83864, 0.82424, 0.83864, 0.82424, 0.83864, 1.03075, 0.83864, 0.82424, 0.81402, 1.02738, 0.728, 1.02175, 1, 1, 0.912, 0.79475, 1.03075, 1, 1, 0.79475, 0.83911, 0.79475, 0.66266, 0.80553, 1.06676, 0.87514, 0.96017, 1, 1, 0.87514, 0.96017, 0.86865, 0.87396, 0.96017, 0.8588, 0.93859, 0.8588, 0.93859, 0.8588, 0.93859, 0.867, 0.84759, 0.72421, 0.95493, 1, 1, 0.72421, 0.95493, 0.69866, 0.746, 0.69866, 0.746, 1, 1, 0.69866, 0.746, 1, 1, 0.77598, 0.88417, 0.77598, 1.12658, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.87832, 0.979, 0.77512, 0.882, 0.77512, 0.8562, 0.83, 0.8562, 0.83, 0.8562, 0.83, 1, 0.88465, 0.85158, 0.93859, 0.773, 0.8075, 0.85751, 0.8562, 1, 1, 0.77598, 1.12658, 1.15012, 1.15012, 1.15012, 1.15012, 1.15012, 1.15313, 1.15012, 1.15012, 1.15012, 1.08106, 1.03901, 0.85158, 0.77025, 0.62264, 0.7646, 0.65351, 0.86026, 0.69461, 0.89947, 1.03075, 0.85158, 0.77812, 0.76449, 0.88836, 0.70466, 0.8562, 0.86822, 0.8588, 0.83864, 0.77212, 0.85308, 0.93637, 0.87514, 0.82352, 0.8588, 0.85701, 0.76013, 0.89058, 0.77598, 0.8156, 0.82565, 0.78112, 0.77899, 0.89386, 0.83864, 0.8156, 0.9486, 0.92388, 0.96186, 1.03075, 0.91123, 0.9486, 0.93298, 0.878, 0.93942, 0.92388, 0.84596, 0.96186, 0.95119, 1.03075, 0.922, 0.88787, 0.95829, 0.88, 0.93559, 0.93859, 0.78815, 0.93758, 1, 0.89217, 1.03737, 0.91123, 0.93969, 0.77487, 0.85769, 0.86799, 1.03075, 0.91123, 0.93859, 0.91123, 0.86799, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87832, 0.979, 0.87832, 0.979, 0.87832, 0.979, 0.77512, 0.882, 0.9219, 1, 0.89903, 1, 1, 1, 0.87321, 0.87321, 0.87321, 1, 1.027, 1.027, 1.027, 0.86847, 0.86847, 0.79121, 1, 1.124, 1, 1, 0.73572, 0.73572, 1, 1, 0.85034, 1, 1, 1, 1, 0.88465, 1, 1, 1, 0.669, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04828, 1, 0.74948, 0.75187, 1.02058, 0.98391, 1.02119, 1, 1, 1.06233, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05233, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.MyriadProItalicFactors = MyriadProItalicFactors; +const MyriadProItalicMetrics = { + lineHeight: 1.2, + lineGap: 0.2 +}; +exports.MyriadProItalicMetrics = MyriadProItalicMetrics; +const MyriadProRegularFactors = [1.36898, 1, 1, 0.76305, 0.82784, 0.94935, 0.89364, 0.92241, 0.89073, 0.90706, 0.98472, 0.85283, 0.85283, 1.0664, 1.02058, 0.74505, 0.9219, 0.74505, 1.23456, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.74505, 0.74505, 1.02058, 1.02058, 1.02058, 0.73002, 0.72601, 0.91755, 0.8126, 0.80314, 0.92222, 0.73764, 0.79726, 0.83051, 0.90284, 0.86023, 0.74, 0.8126, 0.84869, 0.96518, 0.91115, 0.8858, 0.79761, 0.8858, 0.74498, 0.73914, 0.81363, 0.89591, 0.83659, 0.89633, 0.85608, 0.8111, 0.90531, 1.0222, 1.22736, 1.0222, 1.27014, 0.89903, 0.90088, 0.86667, 1.0231, 0.896, 1.01411, 0.90083, 1.05099, 1.00512, 0.99793, 1.05326, 1.09377, 0.938, 1.06226, 1.00119, 0.99793, 0.98714, 1.0231, 1.01231, 0.98196, 0.792, 1.19137, 0.99074, 0.962, 1.01915, 0.926, 0.942, 0.856, 0.85034, 0.92006, 0.85034, 1.02058, 0.69067, 0.92241, 0.92241, 0.92241, 0.92241, 0.92006, 0.9332, 0.90088, 0.91882, 0.93484, 0.75339, 1.02058, 0.56866, 0.54324, 0.79519, 1.08595, 1, 1, 0.90088, 1, 0.95325, 0.74505, 0.90088, 1, 0.97198, 0.75339, 0.91009, 0.91009, 0.91009, 0.66466, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.788, 0.80314, 0.73764, 0.73764, 0.73764, 0.73764, 0.86023, 0.86023, 0.86023, 0.86023, 0.92915, 0.91115, 0.8858, 0.8858, 0.8858, 0.8858, 0.8858, 1.02058, 0.8858, 0.89591, 0.89591, 0.89591, 0.89591, 0.8111, 0.79611, 0.89713, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86936, 0.896, 0.90083, 0.90083, 0.90083, 0.90083, 0.84224, 0.84224, 0.84224, 0.84224, 0.97276, 0.99793, 0.98714, 0.98714, 0.98714, 0.98714, 0.98714, 1.08595, 0.89876, 0.99074, 0.99074, 0.99074, 0.99074, 0.942, 1.0231, 0.942, 0.91755, 0.86667, 0.91755, 0.86667, 0.91755, 0.86667, 0.80314, 0.896, 0.80314, 0.896, 0.80314, 0.896, 0.80314, 0.896, 0.92222, 0.93372, 0.92915, 1.01411, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.83051, 1.00512, 0.83051, 1.00512, 0.83051, 1.00512, 1, 1, 0.90284, 0.99793, 0.90976, 0.99793, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023, 1.05326, 0.86023, 0.84224, 0.82873, 1.07469, 0.74, 1.09377, 1, 1, 0.938, 0.84869, 1.06226, 1, 1, 0.84869, 0.83704, 0.84869, 0.81441, 0.85588, 1.08927, 0.91115, 0.99793, 1, 1, 0.91115, 0.99793, 0.91887, 0.90991, 0.99793, 0.8858, 0.98714, 0.8858, 0.98714, 0.8858, 0.98714, 0.894, 0.91434, 0.74498, 0.98196, 1, 1, 0.74498, 0.98196, 0.73914, 0.792, 0.73914, 0.792, 1, 1, 0.73914, 0.792, 1, 1, 0.81363, 0.904, 0.81363, 1.19137, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89633, 1.01915, 0.8111, 0.942, 0.8111, 0.90531, 0.856, 0.90531, 0.856, 0.90531, 0.856, 1, 0.92241, 0.91755, 0.86667, 0.788, 0.86936, 0.8858, 0.89876, 1, 1, 0.81363, 1.19137, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90388, 1.03901, 0.92138, 0.78105, 0.7154, 0.86169, 0.80513, 0.94007, 0.82528, 0.98612, 1.06226, 0.91755, 0.8126, 0.81884, 0.92819, 0.73764, 0.90531, 0.90284, 0.8858, 0.86023, 0.8126, 0.91172, 0.96518, 0.91115, 0.83089, 0.8858, 0.87791, 0.79761, 0.89297, 0.81363, 0.88157, 0.89992, 0.85608, 0.81992, 0.94307, 0.86023, 0.88157, 0.95308, 0.98699, 0.99793, 1.06226, 0.95817, 0.95308, 0.97358, 0.928, 0.98088, 0.98699, 0.92761, 0.99793, 0.96017, 1.06226, 0.986, 0.944, 0.95978, 0.938, 0.96705, 0.98714, 0.80442, 0.98972, 1, 0.89762, 1.04552, 0.95817, 0.99007, 0.87064, 0.91879, 0.88888, 1.06226, 0.95817, 0.98714, 0.95817, 0.88888, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89633, 1.01915, 0.89633, 1.01915, 0.89633, 1.01915, 0.8111, 0.942, 0.9219, 1, 0.89903, 1, 1, 1, 0.93173, 0.93173, 0.93173, 1, 1.06304, 1.06304, 1.06904, 0.89903, 0.89903, 0.80549, 1, 1.156, 1, 1, 0.76575, 0.76575, 1, 1, 0.72458, 1, 1, 1, 1, 0.92241, 1, 1, 1, 0.619, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.07257, 1, 0.74705, 0.71119, 1.02058, 1.024, 1.02119, 1, 1, 1.1536, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05638, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.MyriadProRegularFactors = MyriadProRegularFactors; +const MyriadProRegularMetrics = { + lineHeight: 1.2, + lineGap: 0.2 +}; +exports.MyriadProRegularMetrics = MyriadProRegularMetrics; + +/***/ }), +/* 56 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SegoeuiRegularMetrics = exports.SegoeuiRegularFactors = exports.SegoeuiItalicMetrics = exports.SegoeuiItalicFactors = exports.SegoeuiBoldMetrics = exports.SegoeuiBoldItalicMetrics = exports.SegoeuiBoldItalicFactors = exports.SegoeuiBoldFactors = void 0; +const SegoeuiBoldFactors = [1.76738, 1, 1, 0.99297, 0.9824, 1.04016, 1.06497, 1.03424, 0.97529, 1.17647, 1.23203, 1.1085, 1.1085, 1.16939, 1.2107, 0.9754, 1.21408, 0.9754, 1.59578, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 0.81378, 0.81378, 1.2107, 1.2107, 1.2107, 0.71703, 0.97847, 0.97363, 0.88776, 0.8641, 1.02096, 0.79795, 0.85132, 0.914, 1.06085, 1.1406, 0.8007, 0.89858, 0.83693, 1.14889, 1.09398, 0.97489, 0.92094, 0.97489, 0.90399, 0.84041, 0.95923, 1.00135, 1, 1.06467, 0.98243, 0.90996, 0.99361, 1.1085, 1.56942, 1.1085, 1.2107, 0.74627, 0.94282, 0.96752, 1.01519, 0.86304, 1.01359, 0.97278, 1.15103, 1.01359, 0.98561, 1.02285, 1.02285, 1.00527, 1.02285, 1.0302, 0.99041, 1.0008, 1.01519, 1.01359, 1.02258, 0.79104, 1.16862, 0.99041, 0.97454, 1.02511, 0.99298, 0.96752, 0.95801, 0.94856, 1.16579, 0.94856, 1.2107, 0.9824, 1.03424, 1.03424, 1, 1.03424, 1.16579, 0.8727, 1.3871, 1.18622, 1.10818, 1.04478, 1.2107, 1.18622, 0.75155, 0.94994, 1.28826, 1.21408, 1.21408, 0.91056, 1, 0.91572, 0.9754, 0.64663, 1.18328, 1.24866, 1.04478, 1.14169, 1.15749, 1.17389, 0.71703, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.93506, 0.8641, 0.79795, 0.79795, 0.79795, 0.79795, 1.1406, 1.1406, 1.1406, 1.1406, 1.02096, 1.09398, 0.97426, 0.97426, 0.97426, 0.97426, 0.97426, 1.2107, 0.97489, 1.00135, 1.00135, 1.00135, 1.00135, 0.90996, 0.92094, 1.02798, 0.96752, 0.96752, 0.96752, 0.96752, 0.96752, 0.96752, 0.93136, 0.86304, 0.97278, 0.97278, 0.97278, 0.97278, 1.02285, 1.02285, 1.02285, 1.02285, 0.97122, 0.99041, 1, 1, 1, 1, 1, 1.28826, 1.0008, 0.99041, 0.99041, 0.99041, 0.99041, 0.96752, 1.01519, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.8641, 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 1.02096, 1.03057, 1.02096, 1.03517, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.914, 1.01359, 0.914, 1.01359, 0.914, 1.01359, 1, 1, 1.06085, 0.98561, 1.06085, 1.00879, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 0.97138, 1.08692, 0.8007, 1.02285, 1, 1, 1.00527, 0.83693, 1.02285, 1, 1, 0.83693, 0.9455, 0.83693, 0.90418, 0.83693, 1.13005, 1.09398, 0.99041, 1, 1, 1.09398, 0.99041, 0.96692, 1.09251, 0.99041, 0.97489, 1.0008, 0.97489, 1.0008, 0.97489, 1.0008, 0.93994, 0.97931, 0.90399, 1.02258, 1, 1, 0.90399, 1.02258, 0.84041, 0.79104, 0.84041, 0.79104, 0.84041, 0.79104, 0.84041, 0.79104, 1, 1, 0.95923, 1.07034, 0.95923, 1.16862, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.06467, 1.02511, 0.90996, 0.96752, 0.90996, 0.99361, 0.95801, 0.99361, 0.95801, 0.99361, 0.95801, 1.07733, 1.03424, 0.97363, 0.96752, 0.93506, 0.93136, 0.97489, 1.0008, 1, 1, 0.95923, 1.16862, 1.15103, 1.15103, 1.01173, 1.03959, 0.75953, 0.81378, 0.79912, 1.15103, 1.21994, 0.95161, 0.87815, 1.01149, 0.81525, 0.7676, 0.98167, 1.01134, 1.02546, 0.84097, 1.03089, 1.18102, 0.97363, 0.88776, 0.85134, 0.97826, 0.79795, 0.99361, 1.06085, 0.97489, 1.1406, 0.89858, 1.0388, 1.14889, 1.09398, 0.86039, 0.97489, 1.0595, 0.92094, 0.94793, 0.95923, 0.90996, 0.99346, 0.98243, 1.02112, 0.95493, 1.1406, 0.90996, 1.03574, 1.02597, 1.0008, 1.18102, 1.06628, 1.03574, 1.0192, 1.01932, 1.00886, 0.97531, 1.0106, 1.0008, 1.13189, 1.18102, 1.02277, 0.98683, 1.0016, 0.99561, 1.07237, 1.0008, 0.90434, 0.99921, 0.93803, 0.8965, 1.23085, 1.06628, 1.04983, 0.96268, 1.0499, 0.98439, 1.18102, 1.06628, 1.0008, 1.06628, 0.98439, 0.79795, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.09466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.97278, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.02065, 1, 1, 1, 1, 1, 1, 1.06467, 1.02511, 1.06467, 1.02511, 1.06467, 1.02511, 0.90996, 0.96752, 1, 1.21408, 0.89903, 1, 1, 0.75155, 1.04394, 1.04394, 1.04394, 1.04394, 0.98633, 0.98633, 0.98633, 0.73047, 0.73047, 1.20642, 0.91211, 1.25635, 1.222, 1.02956, 1.03372, 1.03372, 0.96039, 1.24633, 1, 1.12454, 0.93503, 1.03424, 1.19687, 1.03424, 1, 1, 1, 0.771, 1, 1, 1.15749, 1.15749, 1.15749, 1.10948, 0.86279, 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.16897, 1, 0.96085, 0.90137, 1.2107, 1.18416, 1.13973, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21172, 1.29004, 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18874, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.09193, 1.09193, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.SegoeuiBoldFactors = SegoeuiBoldFactors; +const SegoeuiBoldMetrics = { + lineHeight: 1.33008, + lineGap: 0 +}; +exports.SegoeuiBoldMetrics = SegoeuiBoldMetrics; +const SegoeuiBoldItalicFactors = [1.76738, 1, 1, 0.98946, 1.03959, 1.04016, 1.02809, 1.036, 0.97639, 1.10953, 1.23203, 1.11144, 1.11144, 1.16939, 1.21237, 0.9754, 1.21261, 0.9754, 1.59754, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 0.81378, 0.81378, 1.21237, 1.21237, 1.21237, 0.73541, 0.97847, 0.97363, 0.89723, 0.87897, 1.0426, 0.79429, 0.85292, 0.91149, 1.05815, 1.1406, 0.79631, 0.90128, 0.83853, 1.04396, 1.10615, 0.97552, 0.94436, 0.97552, 0.88641, 0.80527, 0.96083, 1.00135, 1, 1.06777, 0.9817, 0.91142, 0.99361, 1.11144, 1.57293, 1.11144, 1.21237, 0.74627, 1.31818, 1.06585, 0.97042, 0.83055, 0.97042, 0.93503, 1.1261, 0.97042, 0.97922, 1.14236, 0.94552, 1.01054, 1.14236, 1.02471, 0.97922, 0.94165, 0.97042, 0.97042, 1.0276, 0.78929, 1.1261, 0.97922, 0.95874, 1.02197, 0.98507, 0.96752, 0.97168, 0.95107, 1.16579, 0.95107, 1.21237, 1.03959, 1.036, 1.036, 1, 1.036, 1.16579, 0.87357, 1.31818, 1.18754, 1.26781, 1.05356, 1.21237, 1.18622, 0.79487, 0.94994, 1.29004, 1.24047, 1.24047, 1.31818, 1, 0.91484, 0.9754, 1.31818, 1.1349, 1.24866, 1.05356, 1.13934, 1.15574, 1.17389, 0.73541, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.94385, 0.87897, 0.79429, 0.79429, 0.79429, 0.79429, 1.1406, 1.1406, 1.1406, 1.1406, 1.0426, 1.10615, 0.97552, 0.97552, 0.97552, 0.97552, 0.97552, 1.21237, 0.97552, 1.00135, 1.00135, 1.00135, 1.00135, 0.91142, 0.94436, 0.98721, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585, 0.96705, 0.83055, 0.93503, 0.93503, 0.93503, 0.93503, 1.14236, 1.14236, 1.14236, 1.14236, 0.93125, 0.97922, 0.94165, 0.94165, 0.94165, 0.94165, 0.94165, 1.29004, 0.94165, 0.97922, 0.97922, 0.97922, 0.97922, 0.96752, 0.97042, 0.96752, 0.97363, 1.06585, 0.97363, 1.06585, 0.97363, 1.06585, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 1.0426, 1.0033, 1.0426, 0.97042, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.91149, 0.97042, 0.91149, 0.97042, 0.91149, 0.97042, 1, 1, 1.05815, 0.97922, 1.05815, 0.97922, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 0.97441, 1.04302, 0.79631, 1.01582, 1, 1, 1.01054, 0.83853, 1.14236, 1, 1, 0.83853, 1.09125, 0.83853, 0.90418, 0.83853, 1.19508, 1.10615, 0.97922, 1, 1, 1.10615, 0.97922, 1.01034, 1.10466, 0.97922, 0.97552, 0.94165, 0.97552, 0.94165, 0.97552, 0.94165, 0.91602, 0.91981, 0.88641, 1.0276, 1, 1, 0.88641, 1.0276, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 1, 1, 0.96083, 1.05403, 0.95923, 1.16862, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.06777, 1.02197, 0.91142, 0.96752, 0.91142, 0.99361, 0.97168, 0.99361, 0.97168, 0.99361, 0.97168, 1.23199, 1.036, 0.97363, 1.06585, 0.94385, 0.96705, 0.97552, 0.94165, 1, 1, 0.96083, 1.1261, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 0.95161, 1.27126, 1.00811, 0.83284, 0.77702, 0.99137, 0.95253, 1.0347, 0.86142, 1.07205, 1.14236, 0.97363, 0.89723, 0.86869, 1.09818, 0.79429, 0.99361, 1.05815, 0.97552, 1.1406, 0.90128, 1.06662, 1.04396, 1.10615, 0.84918, 0.97552, 1.04694, 0.94436, 0.98015, 0.96083, 0.91142, 1.00356, 0.9817, 1.01945, 0.98999, 1.1406, 0.91142, 1.04961, 0.9898, 1.00639, 1.14236, 1.07514, 1.04961, 0.99607, 1.02897, 1.008, 0.9898, 0.95134, 1.00639, 1.11121, 1.14236, 1.00518, 0.97981, 1.02186, 1, 1.08578, 0.94165, 0.99314, 0.98387, 0.93028, 0.93377, 1.35125, 1.07514, 1.10687, 0.93491, 1.04232, 1.00351, 1.14236, 1.07514, 0.94165, 1.07514, 1.00351, 0.79429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.09097, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.93503, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96609, 1, 1, 1, 1, 1, 1, 1.06777, 1.02197, 1.06777, 1.02197, 1.06777, 1.02197, 0.91142, 0.96752, 1, 1.21261, 0.89903, 1, 1, 0.75155, 1.04745, 1.04745, 1.04745, 1.04394, 0.98633, 0.98633, 0.98633, 0.72959, 0.72959, 1.20502, 0.91406, 1.26514, 1.222, 1.02956, 1.03372, 1.03372, 0.96039, 1.24633, 1, 1.09125, 0.93327, 1.03336, 1.16541, 1.036, 1, 1, 1, 0.771, 1, 1, 1.15574, 1.15574, 1.15574, 1.15574, 0.86364, 0.94434, 0.86279, 0.94434, 0.86224, 1, 1, 1.16798, 1, 0.96085, 0.90068, 1.21237, 1.18416, 1.13904, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21339, 1.29004, 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18775, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.13269, 1.13269, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.SegoeuiBoldItalicFactors = SegoeuiBoldItalicFactors; +const SegoeuiBoldItalicMetrics = { + lineHeight: 1.33008, + lineGap: 0 +}; +exports.SegoeuiBoldItalicMetrics = SegoeuiBoldItalicMetrics; +const SegoeuiItalicFactors = [1.76738, 1, 1, 0.98946, 1.14763, 1.05365, 1.06234, 0.96927, 0.92586, 1.15373, 1.18414, 0.91349, 0.91349, 1.07403, 1.17308, 0.78383, 1.20088, 0.78383, 1.42531, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.78383, 0.78383, 1.17308, 1.17308, 1.17308, 0.77349, 0.94565, 0.94729, 0.85944, 0.88506, 0.9858, 0.74817, 0.80016, 0.88449, 0.98039, 0.95782, 0.69238, 0.89898, 0.83231, 0.98183, 1.03989, 0.96924, 0.86237, 0.96924, 0.80595, 0.74524, 0.86091, 0.95402, 0.94143, 0.98448, 0.8858, 0.83089, 0.93285, 1.0949, 1.39016, 1.0949, 1.45994, 0.74627, 1.04839, 0.97454, 0.97454, 0.87207, 0.97454, 0.87533, 1.06151, 0.97454, 1.00176, 1.16484, 1.08132, 0.98047, 1.16484, 1.02989, 1.01054, 0.96225, 0.97454, 0.97454, 1.06598, 0.79004, 1.16344, 1.00351, 0.94629, 0.9973, 0.91016, 0.96777, 0.9043, 0.91082, 0.92481, 0.91082, 1.17308, 0.95748, 0.96927, 0.96927, 1, 0.96927, 0.92481, 0.80597, 1.04839, 1.23393, 1.1781, 0.9245, 1.17308, 1.20808, 0.63218, 0.94261, 1.24822, 1.09971, 1.09971, 1.04839, 1, 0.85273, 0.78032, 1.04839, 1.09971, 1.22326, 0.9245, 1.09836, 1.13525, 1.15222, 0.70424, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.85498, 0.88506, 0.74817, 0.74817, 0.74817, 0.74817, 0.95782, 0.95782, 0.95782, 0.95782, 0.9858, 1.03989, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.17308, 0.96924, 0.95402, 0.95402, 0.95402, 0.95402, 0.83089, 0.86237, 0.88409, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454, 0.92916, 0.87207, 0.87533, 0.87533, 0.87533, 0.87533, 0.93146, 0.93146, 0.93146, 0.93146, 0.93854, 1.01054, 0.96225, 0.96225, 0.96225, 0.96225, 0.96225, 1.24822, 0.8761, 1.00351, 1.00351, 1.00351, 1.00351, 0.96777, 0.97454, 0.96777, 0.94729, 0.97454, 0.94729, 0.97454, 0.94729, 0.97454, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.9858, 0.95391, 0.9858, 0.97454, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.88449, 0.97454, 0.88449, 0.97454, 0.88449, 0.97454, 1, 1, 0.98039, 1.00176, 0.98039, 1.00176, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 1.16484, 0.95782, 0.93146, 0.84421, 1.12761, 0.69238, 1.08132, 1, 1, 0.98047, 0.83231, 1.16484, 1, 1, 0.84723, 1.04861, 0.84723, 0.78755, 0.83231, 1.23736, 1.03989, 1.01054, 1, 1, 1.03989, 1.01054, 0.9857, 1.03849, 1.01054, 0.96924, 0.96225, 0.96924, 0.96225, 0.96924, 0.96225, 0.92383, 0.90171, 0.80595, 1.06598, 1, 1, 0.80595, 1.06598, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004, 1, 1, 0.86091, 1.02759, 0.85771, 1.16344, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.98448, 0.9973, 0.83089, 0.96777, 0.83089, 0.93285, 0.9043, 0.93285, 0.9043, 0.93285, 0.9043, 1.31868, 0.96927, 0.94729, 0.97454, 0.85498, 0.92916, 0.96924, 0.8761, 1, 1, 0.86091, 1.16344, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 0.81965, 0.81965, 0.94729, 0.78032, 0.71022, 0.90883, 0.84171, 0.99877, 0.77596, 1.05734, 1.2, 0.94729, 0.85944, 0.82791, 0.9607, 0.74817, 0.93285, 0.98039, 0.96924, 0.95782, 0.89898, 0.98316, 0.98183, 1.03989, 0.78614, 0.96924, 0.97642, 0.86237, 0.86075, 0.86091, 0.83089, 0.90082, 0.8858, 0.97296, 1.01284, 0.95782, 0.83089, 1.0976, 1.04, 1.03342, 1.2, 1.0675, 1.0976, 0.98205, 1.03809, 1.05097, 1.04, 0.95364, 1.03342, 1.05401, 1.2, 1.02148, 1.0119, 1.04724, 1.0127, 1.02732, 0.96225, 0.8965, 0.97783, 0.93574, 0.94818, 1.30679, 1.0675, 1.11826, 0.99821, 1.0557, 1.0326, 1.2, 1.0675, 0.96225, 1.0675, 1.0326, 0.74817, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03754, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.98705, 1, 1, 1, 1, 1, 1, 0.98448, 0.9973, 0.98448, 0.9973, 0.98448, 0.9973, 0.83089, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 0.94945, 0.94945, 0.94945, 0.94945, 1.12317, 1.12317, 1.12317, 0.67603, 0.67603, 1.15621, 0.73584, 1.21191, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87709, 0.96927, 1.01473, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.09836, 1.09836, 1.09836, 1.01522, 0.86321, 0.94434, 0.8649, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86438, 1.17308, 1.18416, 1.14589, 0.69825, 0.97622, 1.96791, 1.24822, 1.24822, 1.17308, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.17984, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10742, 1.10742, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.SegoeuiItalicFactors = SegoeuiItalicFactors; +const SegoeuiItalicMetrics = { + lineHeight: 1.33008, + lineGap: 0 +}; +exports.SegoeuiItalicMetrics = SegoeuiItalicMetrics; +const SegoeuiRegularFactors = [1.76738, 1, 1, 0.98594, 1.02285, 1.10454, 1.06234, 0.96927, 0.92037, 1.19985, 1.2046, 0.90616, 0.90616, 1.07152, 1.1714, 0.78032, 1.20088, 0.78032, 1.40246, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.78032, 0.78032, 1.1714, 1.1714, 1.1714, 0.80597, 0.94084, 0.96706, 0.85944, 0.85734, 0.97093, 0.75842, 0.79936, 0.88198, 0.9831, 0.95782, 0.71387, 0.86969, 0.84636, 1.07796, 1.03584, 0.96924, 0.83968, 0.96924, 0.82826, 0.79649, 0.85771, 0.95132, 0.93119, 0.98965, 0.88433, 0.8287, 0.93365, 1.08612, 1.3638, 1.08612, 1.45786, 0.74627, 0.80499, 0.91484, 1.05707, 0.92383, 1.05882, 0.9403, 1.12654, 1.05882, 1.01756, 1.09011, 1.09011, 0.99414, 1.09011, 1.034, 1.01756, 1.05356, 1.05707, 1.05882, 1.04399, 0.84863, 1.21968, 1.01756, 0.95801, 1.00068, 0.91797, 0.96777, 0.9043, 0.90351, 0.92105, 0.90351, 1.1714, 0.85337, 0.96927, 0.96927, 0.99912, 0.96927, 0.92105, 0.80597, 1.2434, 1.20808, 1.05937, 0.90957, 1.1714, 1.20808, 0.75155, 0.94261, 1.24644, 1.09971, 1.09971, 0.84751, 1, 0.85273, 0.78032, 0.61584, 1.05425, 1.17914, 0.90957, 1.08665, 1.11593, 1.14169, 0.73381, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.86035, 0.85734, 0.75842, 0.75842, 0.75842, 0.75842, 0.95782, 0.95782, 0.95782, 0.95782, 0.97093, 1.03584, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.1714, 0.96924, 0.95132, 0.95132, 0.95132, 0.95132, 0.8287, 0.83968, 0.89049, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.93575, 0.92383, 0.9403, 0.9403, 0.9403, 0.9403, 0.8717, 0.8717, 0.8717, 0.8717, 1.00527, 1.01756, 1.05356, 1.05356, 1.05356, 1.05356, 1.05356, 1.24644, 0.95923, 1.01756, 1.01756, 1.01756, 1.01756, 0.96777, 1.05707, 0.96777, 0.96706, 0.91484, 0.96706, 0.91484, 0.96706, 0.91484, 0.85734, 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.97093, 1.0969, 0.97093, 1.05882, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.88198, 1.05882, 0.88198, 1.05882, 0.88198, 1.05882, 1, 1, 0.9831, 1.01756, 0.9831, 1.01756, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782, 1.09011, 0.95782, 0.8717, 0.84784, 1.11551, 0.71387, 1.09011, 1, 1, 0.99414, 0.84636, 1.09011, 1, 1, 0.84636, 1.0536, 0.84636, 0.94298, 0.84636, 1.23297, 1.03584, 1.01756, 1, 1, 1.03584, 1.01756, 1.00323, 1.03444, 1.01756, 0.96924, 1.05356, 0.96924, 1.05356, 0.96924, 1.05356, 0.93066, 0.98293, 0.82826, 1.04399, 1, 1, 0.82826, 1.04399, 0.79649, 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 1, 1, 0.85771, 1.17318, 0.85771, 1.21968, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.98965, 1.00068, 0.8287, 0.96777, 0.8287, 0.93365, 0.9043, 0.93365, 0.9043, 0.93365, 0.9043, 1.08571, 0.96927, 0.96706, 0.91484, 0.86035, 0.93575, 0.96924, 0.95923, 1, 1, 0.85771, 1.21968, 1.11437, 1.11437, 0.93109, 0.91202, 0.60411, 0.84164, 0.55572, 1.01173, 0.97361, 0.81818, 0.81818, 0.96635, 0.78032, 0.72727, 0.92366, 0.98601, 1.03405, 0.77968, 1.09799, 1.2, 0.96706, 0.85944, 0.85638, 0.96491, 0.75842, 0.93365, 0.9831, 0.96924, 0.95782, 0.86969, 0.94152, 1.07796, 1.03584, 0.78437, 0.96924, 0.98715, 0.83968, 0.83491, 0.85771, 0.8287, 0.94492, 0.88433, 0.9287, 1.0098, 0.95782, 0.8287, 1.0625, 0.98248, 1.03424, 1.2, 1.01071, 1.0625, 0.95246, 1.03809, 1.04912, 0.98248, 1.00221, 1.03424, 1.05443, 1.2, 1.04785, 0.99609, 1.00169, 1.05176, 0.99346, 1.05356, 0.9087, 1.03004, 0.95542, 0.93117, 1.23362, 1.01071, 1.07831, 1.02512, 1.05205, 1.03502, 1.2, 1.01071, 1.05356, 1.01071, 1.03502, 0.75842, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03719, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9403, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04021, 1, 1, 1, 1, 1, 1, 0.98965, 1.00068, 0.98965, 1.00068, 0.98965, 1.00068, 0.8287, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 1.03077, 1.03077, 1.03077, 1.03077, 1.13196, 1.13196, 1.13196, 0.67428, 0.67428, 1.16039, 0.73291, 1.20996, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87796, 0.96927, 1.01518, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.10539, 1.10539, 1.11358, 1.06967, 0.86279, 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86507, 1.1714, 1.18416, 1.14589, 0.69825, 0.97622, 1.9697, 1.24822, 1.24822, 1.17238, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18083, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10938, 1.10938, 1, 1, 1, 1.05425, 1.09971, 1.09971, 1.09971, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; +exports.SegoeuiRegularFactors = SegoeuiRegularFactors; +const SegoeuiRegularMetrics = { + lineHeight: 1.33008, + lineGap: 0 +}; +exports.SegoeuiRegularMetrics = SegoeuiRegularMetrics; + +/***/ }), +/* 57 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PostScriptEvaluator = exports.PostScriptCompiler = exports.PDFFunctionFactory = void 0; +exports.isPDFFunction = isPDFFunction; +var _primitives = __w_pdfjs_require__(4); +var _util = __w_pdfjs_require__(2); +var _ps_parser = __w_pdfjs_require__(58); +var _base_stream = __w_pdfjs_require__(5); +var _image_utils = __w_pdfjs_require__(59); +class PDFFunctionFactory { + constructor({ + xref, + isEvalSupported = true + }) { + this.xref = xref; + this.isEvalSupported = isEvalSupported !== false; + } + create(fn) { + const cachedFunction = this.getCached(fn); + if (cachedFunction) { + return cachedFunction; + } + const parsedFunction = PDFFunction.parse({ + xref: this.xref, + isEvalSupported: this.isEvalSupported, + fn: fn instanceof _primitives.Ref ? this.xref.fetch(fn) : fn + }); + this._cache(fn, parsedFunction); + return parsedFunction; + } + createFromArray(fnObj) { + const cachedFunction = this.getCached(fnObj); + if (cachedFunction) { + return cachedFunction; + } + const parsedFunction = PDFFunction.parseArray({ + xref: this.xref, + isEvalSupported: this.isEvalSupported, + fnObj: fnObj instanceof _primitives.Ref ? this.xref.fetch(fnObj) : fnObj + }); + this._cache(fnObj, parsedFunction); + return parsedFunction; + } + getCached(cacheKey) { + let fnRef; + if (cacheKey instanceof _primitives.Ref) { + fnRef = cacheKey; + } else if (cacheKey instanceof _primitives.Dict) { + fnRef = cacheKey.objId; + } else if (cacheKey instanceof _base_stream.BaseStream) { + fnRef = cacheKey.dict?.objId; + } + if (fnRef) { + const localFunction = this._localFunctionCache.getByRef(fnRef); + if (localFunction) { + return localFunction; + } + } + return null; + } + _cache(cacheKey, parsedFunction) { + if (!parsedFunction) { + throw new Error('PDFFunctionFactory._cache - expected "parsedFunction" argument.'); + } + let fnRef; + if (cacheKey instanceof _primitives.Ref) { + fnRef = cacheKey; + } else if (cacheKey instanceof _primitives.Dict) { + fnRef = cacheKey.objId; + } else if (cacheKey instanceof _base_stream.BaseStream) { + fnRef = cacheKey.dict?.objId; + } + if (fnRef) { + this._localFunctionCache.set(null, fnRef, parsedFunction); + } + } + get _localFunctionCache() { + return (0, _util.shadow)(this, "_localFunctionCache", new _image_utils.LocalFunctionCache()); + } +} +exports.PDFFunctionFactory = PDFFunctionFactory; +function toNumberArray(arr) { + if (!Array.isArray(arr)) { + return null; + } + const length = arr.length; + for (let i = 0; i < length; i++) { + if (typeof arr[i] !== "number") { + const result = new Array(length); + for (let j = 0; j < length; j++) { + result[j] = +arr[j]; + } + return result; + } + } + return arr; +} +class PDFFunction { + static getSampleArray(size, outputSize, bps, stream) { + let i, ii; + let length = 1; + for (i = 0, ii = size.length; i < ii; i++) { + length *= size[i]; + } + length *= outputSize; + const array = new Array(length); + let codeSize = 0; + let codeBuf = 0; + const sampleMul = 1.0 / (2.0 ** bps - 1); + const strBytes = stream.getBytes((length * bps + 7) / 8); + let strIdx = 0; + for (i = 0; i < length; i++) { + while (codeSize < bps) { + codeBuf <<= 8; + codeBuf |= strBytes[strIdx++]; + codeSize += 8; + } + codeSize -= bps; + array[i] = (codeBuf >> codeSize) * sampleMul; + codeBuf &= (1 << codeSize) - 1; + } + return array; + } + static parse({ + xref, + isEvalSupported, + fn + }) { + const dict = fn.dict || fn; + const typeNum = dict.get("FunctionType"); + switch (typeNum) { + case 0: + return this.constructSampled({ + xref, + isEvalSupported, + fn, + dict + }); + case 1: + break; + case 2: + return this.constructInterpolated({ + xref, + isEvalSupported, + dict + }); + case 3: + return this.constructStiched({ + xref, + isEvalSupported, + dict + }); + case 4: + return this.constructPostScript({ + xref, + isEvalSupported, + fn, + dict + }); + } + throw new _util.FormatError("Unknown type of function"); + } + static parseArray({ + xref, + isEvalSupported, + fnObj + }) { + if (!Array.isArray(fnObj)) { + return this.parse({ + xref, + isEvalSupported, + fn: fnObj + }); + } + const fnArray = []; + for (const fn of fnObj) { + fnArray.push(this.parse({ + xref, + isEvalSupported, + fn: xref.fetchIfRef(fn) + })); + } + return function (src, srcOffset, dest, destOffset) { + for (let i = 0, ii = fnArray.length; i < ii; i++) { + fnArray[i](src, srcOffset, dest, destOffset + i); + } + }; + } + static constructSampled({ + xref, + isEvalSupported, + fn, + dict + }) { + function toMultiArray(arr) { + const inputLength = arr.length; + const out = []; + let index = 0; + for (let i = 0; i < inputLength; i += 2) { + out[index++] = [arr[i], arr[i + 1]]; + } + return out; + } + function interpolate(x, xmin, xmax, ymin, ymax) { + return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin)); + } + let domain = toNumberArray(dict.getArray("Domain")); + let range = toNumberArray(dict.getArray("Range")); + if (!domain || !range) { + throw new _util.FormatError("No domain or range"); + } + const inputSize = domain.length / 2; + const outputSize = range.length / 2; + domain = toMultiArray(domain); + range = toMultiArray(range); + const size = toNumberArray(dict.getArray("Size")); + const bps = dict.get("BitsPerSample"); + const order = dict.get("Order") || 1; + if (order !== 1) { + (0, _util.info)("No support for cubic spline interpolation: " + order); + } + let encode = toNumberArray(dict.getArray("Encode")); + if (!encode) { + encode = []; + for (let i = 0; i < inputSize; ++i) { + encode.push([0, size[i] - 1]); + } + } else { + encode = toMultiArray(encode); + } + let decode = toNumberArray(dict.getArray("Decode")); + if (!decode) { + decode = range; + } else { + decode = toMultiArray(decode); + } + const samples = this.getSampleArray(size, outputSize, bps, fn); + return function constructSampledFn(src, srcOffset, dest, destOffset) { + const cubeVertices = 1 << inputSize; + const cubeN = new Float64Array(cubeVertices); + const cubeVertex = new Uint32Array(cubeVertices); + let i, j; + for (j = 0; j < cubeVertices; j++) { + cubeN[j] = 1; + } + let k = outputSize, + pos = 1; + for (i = 0; i < inputSize; ++i) { + const domain_2i = domain[i][0]; + const domain_2i_1 = domain[i][1]; + const xi = Math.min(Math.max(src[srcOffset + i], domain_2i), domain_2i_1); + let e = interpolate(xi, domain_2i, domain_2i_1, encode[i][0], encode[i][1]); + const size_i = size[i]; + e = Math.min(Math.max(e, 0), size_i - 1); + const e0 = e < size_i - 1 ? Math.floor(e) : e - 1; + const n0 = e0 + 1 - e; + const n1 = e - e0; + const offset0 = e0 * k; + const offset1 = offset0 + k; + for (j = 0; j < cubeVertices; j++) { + if (j & pos) { + cubeN[j] *= n1; + cubeVertex[j] += offset1; + } else { + cubeN[j] *= n0; + cubeVertex[j] += offset0; + } + } + k *= size_i; + pos <<= 1; + } + for (j = 0; j < outputSize; ++j) { + let rj = 0; + for (i = 0; i < cubeVertices; i++) { + rj += samples[cubeVertex[i] + j] * cubeN[i]; + } + rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]); + dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]); + } + }; + } + static constructInterpolated({ + xref, + isEvalSupported, + dict + }) { + const c0 = toNumberArray(dict.getArray("C0")) || [0]; + const c1 = toNumberArray(dict.getArray("C1")) || [1]; + const n = dict.get("N"); + const diff = []; + for (let i = 0, ii = c0.length; i < ii; ++i) { + diff.push(c1[i] - c0[i]); + } + const length = diff.length; + return function constructInterpolatedFn(src, srcOffset, dest, destOffset) { + const x = n === 1 ? src[srcOffset] : src[srcOffset] ** n; + for (let j = 0; j < length; ++j) { + dest[destOffset + j] = c0[j] + x * diff[j]; + } + }; + } + static constructStiched({ + xref, + isEvalSupported, + dict + }) { + const domain = toNumberArray(dict.getArray("Domain")); + if (!domain) { + throw new _util.FormatError("No domain"); + } + const inputSize = domain.length / 2; + if (inputSize !== 1) { + throw new _util.FormatError("Bad domain for stiched function"); + } + const fns = []; + for (const fn of dict.get("Functions")) { + fns.push(this.parse({ + xref, + isEvalSupported, + fn: xref.fetchIfRef(fn) + })); + } + const bounds = toNumberArray(dict.getArray("Bounds")); + const encode = toNumberArray(dict.getArray("Encode")); + const tmpBuf = new Float32Array(1); + return function constructStichedFn(src, srcOffset, dest, destOffset) { + const clip = function constructStichedFromIRClip(v, min, max) { + if (v > max) { + v = max; + } else if (v < min) { + v = min; + } + return v; + }; + const v = clip(src[srcOffset], domain[0], domain[1]); + const length = bounds.length; + let i; + for (i = 0; i < length; ++i) { + if (v < bounds[i]) { + break; + } + } + let dmin = domain[0]; + if (i > 0) { + dmin = bounds[i - 1]; + } + let dmax = domain[1]; + if (i < bounds.length) { + dmax = bounds[i]; + } + const rmin = encode[2 * i]; + const rmax = encode[2 * i + 1]; + tmpBuf[0] = dmin === dmax ? rmin : rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin); + fns[i](tmpBuf, 0, dest, destOffset); + }; + } + static constructPostScript({ + xref, + isEvalSupported, + fn, + dict + }) { + const domain = toNumberArray(dict.getArray("Domain")); + const range = toNumberArray(dict.getArray("Range")); + if (!domain) { + throw new _util.FormatError("No domain."); + } + if (!range) { + throw new _util.FormatError("No range."); + } + const lexer = new _ps_parser.PostScriptLexer(fn); + const parser = new _ps_parser.PostScriptParser(lexer); + const code = parser.parse(); + if (isEvalSupported && _util.FeatureTest.isEvalSupported) { + const compiled = new PostScriptCompiler().compile(code, domain, range); + if (compiled) { + return new Function("src", "srcOffset", "dest", "destOffset", compiled); + } + } + (0, _util.info)("Unable to compile PS function"); + const numOutputs = range.length >> 1; + const numInputs = domain.length >> 1; + const evaluator = new PostScriptEvaluator(code); + const cache = Object.create(null); + const MAX_CACHE_SIZE = 2048 * 4; + let cache_available = MAX_CACHE_SIZE; + const tmpBuf = new Float32Array(numInputs); + return function constructPostScriptFn(src, srcOffset, dest, destOffset) { + let i, value; + let key = ""; + const input = tmpBuf; + for (i = 0; i < numInputs; i++) { + value = src[srcOffset + i]; + input[i] = value; + key += value + "_"; + } + const cachedValue = cache[key]; + if (cachedValue !== undefined) { + dest.set(cachedValue, destOffset); + return; + } + const output = new Float32Array(numOutputs); + const stack = evaluator.execute(input); + const stackIndex = stack.length - numOutputs; + for (i = 0; i < numOutputs; i++) { + value = stack[stackIndex + i]; + let bound = range[i * 2]; + if (value < bound) { + value = bound; + } else { + bound = range[i * 2 + 1]; + if (value > bound) { + value = bound; + } + } + output[i] = value; + } + if (cache_available > 0) { + cache_available--; + cache[key] = output; + } + dest.set(output, destOffset); + }; + } +} +function isPDFFunction(v) { + let fnDict; + if (v instanceof _primitives.Dict) { + fnDict = v; + } else if (v instanceof _base_stream.BaseStream) { + fnDict = v.dict; + } else { + return false; + } + return fnDict.has("FunctionType"); +} +class PostScriptStack { + static MAX_STACK_SIZE = 100; + constructor(initialStack) { + this.stack = initialStack ? Array.from(initialStack) : []; + } + push(value) { + if (this.stack.length >= PostScriptStack.MAX_STACK_SIZE) { + throw new Error("PostScript function stack overflow."); + } + this.stack.push(value); + } + pop() { + if (this.stack.length <= 0) { + throw new Error("PostScript function stack underflow."); + } + return this.stack.pop(); + } + copy(n) { + if (this.stack.length + n >= PostScriptStack.MAX_STACK_SIZE) { + throw new Error("PostScript function stack overflow."); + } + const stack = this.stack; + for (let i = stack.length - n, j = n - 1; j >= 0; j--, i++) { + stack.push(stack[i]); + } + } + index(n) { + this.push(this.stack[this.stack.length - n - 1]); + } + roll(n, p) { + const stack = this.stack; + const l = stack.length - n; + const r = stack.length - 1; + const c = l + (p - Math.floor(p / n) * n); + for (let i = l, j = r; i < j; i++, j--) { + const t = stack[i]; + stack[i] = stack[j]; + stack[j] = t; + } + for (let i = l, j = c - 1; i < j; i++, j--) { + const t = stack[i]; + stack[i] = stack[j]; + stack[j] = t; + } + for (let i = c, j = r; i < j; i++, j--) { + const t = stack[i]; + stack[i] = stack[j]; + stack[j] = t; + } + } +} +class PostScriptEvaluator { + constructor(operators) { + this.operators = operators; + } + execute(initialStack) { + const stack = new PostScriptStack(initialStack); + let counter = 0; + const operators = this.operators; + const length = operators.length; + let operator, a, b; + while (counter < length) { + operator = operators[counter++]; + if (typeof operator === "number") { + stack.push(operator); + continue; + } + switch (operator) { + case "jz": + b = stack.pop(); + a = stack.pop(); + if (!a) { + counter = b; + } + break; + case "j": + a = stack.pop(); + counter = a; + break; + case "abs": + a = stack.pop(); + stack.push(Math.abs(a)); + break; + case "add": + b = stack.pop(); + a = stack.pop(); + stack.push(a + b); + break; + case "and": + b = stack.pop(); + a = stack.pop(); + if (typeof a === "boolean" && typeof b === "boolean") { + stack.push(a && b); + } else { + stack.push(a & b); + } + break; + case "atan": + b = stack.pop(); + a = stack.pop(); + a = Math.atan2(a, b) / Math.PI * 180; + if (a < 0) { + a += 360; + } + stack.push(a); + break; + case "bitshift": + b = stack.pop(); + a = stack.pop(); + if (a > 0) { + stack.push(a << b); + } else { + stack.push(a >> b); + } + break; + case "ceiling": + a = stack.pop(); + stack.push(Math.ceil(a)); + break; + case "copy": + a = stack.pop(); + stack.copy(a); + break; + case "cos": + a = stack.pop(); + stack.push(Math.cos(a % 360 / 180 * Math.PI)); + break; + case "cvi": + a = stack.pop() | 0; + stack.push(a); + break; + case "cvr": + break; + case "div": + b = stack.pop(); + a = stack.pop(); + stack.push(a / b); + break; + case "dup": + stack.copy(1); + break; + case "eq": + b = stack.pop(); + a = stack.pop(); + stack.push(a === b); + break; + case "exch": + stack.roll(2, 1); + break; + case "exp": + b = stack.pop(); + a = stack.pop(); + stack.push(a ** b); + break; + case "false": + stack.push(false); + break; + case "floor": + a = stack.pop(); + stack.push(Math.floor(a)); + break; + case "ge": + b = stack.pop(); + a = stack.pop(); + stack.push(a >= b); + break; + case "gt": + b = stack.pop(); + a = stack.pop(); + stack.push(a > b); + break; + case "idiv": + b = stack.pop(); + a = stack.pop(); + stack.push(a / b | 0); + break; + case "index": + a = stack.pop(); + stack.index(a); + break; + case "le": + b = stack.pop(); + a = stack.pop(); + stack.push(a <= b); + break; + case "ln": + a = stack.pop(); + stack.push(Math.log(a)); + break; + case "log": + a = stack.pop(); + stack.push(Math.log(a) / Math.LN10); + break; + case "lt": + b = stack.pop(); + a = stack.pop(); + stack.push(a < b); + break; + case "mod": + b = stack.pop(); + a = stack.pop(); + stack.push(a % b); + break; + case "mul": + b = stack.pop(); + a = stack.pop(); + stack.push(a * b); + break; + case "ne": + b = stack.pop(); + a = stack.pop(); + stack.push(a !== b); + break; + case "neg": + a = stack.pop(); + stack.push(-a); + break; + case "not": + a = stack.pop(); + if (typeof a === "boolean") { + stack.push(!a); + } else { + stack.push(~a); + } + break; + case "or": + b = stack.pop(); + a = stack.pop(); + if (typeof a === "boolean" && typeof b === "boolean") { + stack.push(a || b); + } else { + stack.push(a | b); + } + break; + case "pop": + stack.pop(); + break; + case "roll": + b = stack.pop(); + a = stack.pop(); + stack.roll(a, b); + break; + case "round": + a = stack.pop(); + stack.push(Math.round(a)); + break; + case "sin": + a = stack.pop(); + stack.push(Math.sin(a % 360 / 180 * Math.PI)); + break; + case "sqrt": + a = stack.pop(); + stack.push(Math.sqrt(a)); + break; + case "sub": + b = stack.pop(); + a = stack.pop(); + stack.push(a - b); + break; + case "true": + stack.push(true); + break; + case "truncate": + a = stack.pop(); + a = a < 0 ? Math.ceil(a) : Math.floor(a); + stack.push(a); + break; + case "xor": + b = stack.pop(); + a = stack.pop(); + if (typeof a === "boolean" && typeof b === "boolean") { + stack.push(a !== b); + } else { + stack.push(a ^ b); + } + break; + default: + throw new _util.FormatError(`Unknown operator ${operator}`); + } + } + return stack.stack; + } +} +exports.PostScriptEvaluator = PostScriptEvaluator; +class AstNode { + constructor(type) { + this.type = type; + } + visit(visitor) { + (0, _util.unreachable)("abstract method"); + } +} +class AstArgument extends AstNode { + constructor(index, min, max) { + super("args"); + this.index = index; + this.min = min; + this.max = max; + } + visit(visitor) { + visitor.visitArgument(this); + } +} +class AstLiteral extends AstNode { + constructor(number) { + super("literal"); + this.number = number; + this.min = number; + this.max = number; + } + visit(visitor) { + visitor.visitLiteral(this); + } +} +class AstBinaryOperation extends AstNode { + constructor(op, arg1, arg2, min, max) { + super("binary"); + this.op = op; + this.arg1 = arg1; + this.arg2 = arg2; + this.min = min; + this.max = max; + } + visit(visitor) { + visitor.visitBinaryOperation(this); + } +} +class AstMin extends AstNode { + constructor(arg, max) { + super("max"); + this.arg = arg; + this.min = arg.min; + this.max = max; + } + visit(visitor) { + visitor.visitMin(this); + } +} +class AstVariable extends AstNode { + constructor(index, min, max) { + super("var"); + this.index = index; + this.min = min; + this.max = max; + } + visit(visitor) { + visitor.visitVariable(this); + } +} +class AstVariableDefinition extends AstNode { + constructor(variable, arg) { + super("definition"); + this.variable = variable; + this.arg = arg; + } + visit(visitor) { + visitor.visitVariableDefinition(this); + } +} +class ExpressionBuilderVisitor { + constructor() { + this.parts = []; + } + visitArgument(arg) { + this.parts.push("Math.max(", arg.min, ", Math.min(", arg.max, ", src[srcOffset + ", arg.index, "]))"); + } + visitVariable(variable) { + this.parts.push("v", variable.index); + } + visitLiteral(literal) { + this.parts.push(literal.number); + } + visitBinaryOperation(operation) { + this.parts.push("("); + operation.arg1.visit(this); + this.parts.push(" ", operation.op, " "); + operation.arg2.visit(this); + this.parts.push(")"); + } + visitVariableDefinition(definition) { + this.parts.push("var "); + definition.variable.visit(this); + this.parts.push(" = "); + definition.arg.visit(this); + this.parts.push(";"); + } + visitMin(max) { + this.parts.push("Math.min("); + max.arg.visit(this); + this.parts.push(", ", max.max, ")"); + } + toString() { + return this.parts.join(""); + } +} +function buildAddOperation(num1, num2) { + if (num2.type === "literal" && num2.number === 0) { + return num1; + } + if (num1.type === "literal" && num1.number === 0) { + return num2; + } + if (num2.type === "literal" && num1.type === "literal") { + return new AstLiteral(num1.number + num2.number); + } + return new AstBinaryOperation("+", num1, num2, num1.min + num2.min, num1.max + num2.max); +} +function buildMulOperation(num1, num2) { + if (num2.type === "literal") { + if (num2.number === 0) { + return new AstLiteral(0); + } else if (num2.number === 1) { + return num1; + } else if (num1.type === "literal") { + return new AstLiteral(num1.number * num2.number); + } + } + if (num1.type === "literal") { + if (num1.number === 0) { + return new AstLiteral(0); + } else if (num1.number === 1) { + return num2; + } + } + const min = Math.min(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max); + const max = Math.max(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max); + return new AstBinaryOperation("*", num1, num2, min, max); +} +function buildSubOperation(num1, num2) { + if (num2.type === "literal") { + if (num2.number === 0) { + return num1; + } else if (num1.type === "literal") { + return new AstLiteral(num1.number - num2.number); + } + } + if (num2.type === "binary" && num2.op === "-" && num1.type === "literal" && num1.number === 1 && num2.arg1.type === "literal" && num2.arg1.number === 1) { + return num2.arg2; + } + return new AstBinaryOperation("-", num1, num2, num1.min - num2.max, num1.max - num2.min); +} +function buildMinOperation(num1, max) { + if (num1.min >= max) { + return new AstLiteral(max); + } else if (num1.max <= max) { + return num1; + } + return new AstMin(num1, max); +} +class PostScriptCompiler { + compile(code, domain, range) { + const stack = []; + const instructions = []; + const inputSize = domain.length >> 1, + outputSize = range.length >> 1; + let lastRegister = 0; + let n, j; + let num1, num2, ast1, ast2, tmpVar, item; + for (let i = 0; i < inputSize; i++) { + stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1])); + } + for (let i = 0, ii = code.length; i < ii; i++) { + item = code[i]; + if (typeof item === "number") { + stack.push(new AstLiteral(item)); + continue; + } + switch (item) { + case "add": + if (stack.length < 2) { + return null; + } + num2 = stack.pop(); + num1 = stack.pop(); + stack.push(buildAddOperation(num1, num2)); + break; + case "cvr": + if (stack.length < 1) { + return null; + } + break; + case "mul": + if (stack.length < 2) { + return null; + } + num2 = stack.pop(); + num1 = stack.pop(); + stack.push(buildMulOperation(num1, num2)); + break; + case "sub": + if (stack.length < 2) { + return null; + } + num2 = stack.pop(); + num1 = stack.pop(); + stack.push(buildSubOperation(num1, num2)); + break; + case "exch": + if (stack.length < 2) { + return null; + } + ast1 = stack.pop(); + ast2 = stack.pop(); + stack.push(ast1, ast2); + break; + case "pop": + if (stack.length < 1) { + return null; + } + stack.pop(); + break; + case "index": + if (stack.length < 1) { + return null; + } + num1 = stack.pop(); + if (num1.type !== "literal") { + return null; + } + n = num1.number; + if (n < 0 || !Number.isInteger(n) || stack.length < n) { + return null; + } + ast1 = stack[stack.length - n - 1]; + if (ast1.type === "literal" || ast1.type === "var") { + stack.push(ast1); + break; + } + tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max); + stack[stack.length - n - 1] = tmpVar; + stack.push(tmpVar); + instructions.push(new AstVariableDefinition(tmpVar, ast1)); + break; + case "dup": + if (stack.length < 1) { + return null; + } + if (typeof code[i + 1] === "number" && code[i + 2] === "gt" && code[i + 3] === i + 7 && code[i + 4] === "jz" && code[i + 5] === "pop" && code[i + 6] === code[i + 1]) { + num1 = stack.pop(); + stack.push(buildMinOperation(num1, code[i + 1])); + i += 6; + break; + } + ast1 = stack.at(-1); + if (ast1.type === "literal" || ast1.type === "var") { + stack.push(ast1); + break; + } + tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max); + stack[stack.length - 1] = tmpVar; + stack.push(tmpVar); + instructions.push(new AstVariableDefinition(tmpVar, ast1)); + break; + case "roll": + if (stack.length < 2) { + return null; + } + num2 = stack.pop(); + num1 = stack.pop(); + if (num2.type !== "literal" || num1.type !== "literal") { + return null; + } + j = num2.number; + n = num1.number; + if (n <= 0 || !Number.isInteger(n) || !Number.isInteger(j) || stack.length < n) { + return null; + } + j = (j % n + n) % n; + if (j === 0) { + break; + } + stack.push(...stack.splice(stack.length - n, n - j)); + break; + default: + return null; + } + } + if (stack.length !== outputSize) { + return null; + } + const result = []; + for (const instruction of instructions) { + const statementBuilder = new ExpressionBuilderVisitor(); + instruction.visit(statementBuilder); + result.push(statementBuilder.toString()); + } + for (let i = 0, ii = stack.length; i < ii; i++) { + const expr = stack[i], + statementBuilder = new ExpressionBuilderVisitor(); + expr.visit(statementBuilder); + const min = range[i * 2], + max = range[i * 2 + 1]; + const out = [statementBuilder.toString()]; + if (min > expr.min) { + out.unshift("Math.max(", min, ", "); + out.push(")"); + } + if (max < expr.max) { + out.unshift("Math.min(", max, ", "); + out.push(")"); + } + out.unshift("dest[destOffset + ", i, "] = "); + out.push(";"); + result.push(out.join("")); + } + return result.join("\n"); + } +} +exports.PostScriptCompiler = PostScriptCompiler; + +/***/ }), +/* 58 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PostScriptParser = exports.PostScriptLexer = void 0; +var _util = __w_pdfjs_require__(2); +var _primitives = __w_pdfjs_require__(4); +var _core_utils = __w_pdfjs_require__(3); +class PostScriptParser { + constructor(lexer) { + this.lexer = lexer; + this.operators = []; + this.token = null; + this.prev = null; + } + nextToken() { + this.prev = this.token; + this.token = this.lexer.getToken(); + } + accept(type) { + if (this.token.type === type) { + this.nextToken(); + return true; + } + return false; + } + expect(type) { + if (this.accept(type)) { + return true; + } + throw new _util.FormatError(`Unexpected symbol: found ${this.token.type} expected ${type}.`); + } + parse() { + this.nextToken(); + this.expect(PostScriptTokenTypes.LBRACE); + this.parseBlock(); + this.expect(PostScriptTokenTypes.RBRACE); + return this.operators; + } + parseBlock() { + while (true) { + if (this.accept(PostScriptTokenTypes.NUMBER)) { + this.operators.push(this.prev.value); + } else if (this.accept(PostScriptTokenTypes.OPERATOR)) { + this.operators.push(this.prev.value); + } else if (this.accept(PostScriptTokenTypes.LBRACE)) { + this.parseCondition(); + } else { + return; + } + } + } + parseCondition() { + const conditionLocation = this.operators.length; + this.operators.push(null, null); + this.parseBlock(); + this.expect(PostScriptTokenTypes.RBRACE); + if (this.accept(PostScriptTokenTypes.IF)) { + this.operators[conditionLocation] = this.operators.length; + this.operators[conditionLocation + 1] = "jz"; + } else if (this.accept(PostScriptTokenTypes.LBRACE)) { + const jumpLocation = this.operators.length; + this.operators.push(null, null); + const endOfTrue = this.operators.length; + this.parseBlock(); + this.expect(PostScriptTokenTypes.RBRACE); + this.expect(PostScriptTokenTypes.IFELSE); + this.operators[jumpLocation] = this.operators.length; + this.operators[jumpLocation + 1] = "j"; + this.operators[conditionLocation] = endOfTrue; + this.operators[conditionLocation + 1] = "jz"; + } else { + throw new _util.FormatError("PS Function: error parsing conditional."); + } + } +} +exports.PostScriptParser = PostScriptParser; +const PostScriptTokenTypes = { + LBRACE: 0, + RBRACE: 1, + NUMBER: 2, + OPERATOR: 3, + IF: 4, + IFELSE: 5 +}; +class PostScriptToken { + static get opCache() { + return (0, _util.shadow)(this, "opCache", Object.create(null)); + } + constructor(type, value) { + this.type = type; + this.value = value; + } + static getOperator(op) { + return PostScriptToken.opCache[op] ||= new PostScriptToken(PostScriptTokenTypes.OPERATOR, op); + } + static get LBRACE() { + return (0, _util.shadow)(this, "LBRACE", new PostScriptToken(PostScriptTokenTypes.LBRACE, "{")); + } + static get RBRACE() { + return (0, _util.shadow)(this, "RBRACE", new PostScriptToken(PostScriptTokenTypes.RBRACE, "}")); + } + static get IF() { + return (0, _util.shadow)(this, "IF", new PostScriptToken(PostScriptTokenTypes.IF, "IF")); + } + static get IFELSE() { + return (0, _util.shadow)(this, "IFELSE", new PostScriptToken(PostScriptTokenTypes.IFELSE, "IFELSE")); + } +} +class PostScriptLexer { + constructor(stream) { + this.stream = stream; + this.nextChar(); + this.strBuf = []; + } + nextChar() { + return this.currentChar = this.stream.getByte(); + } + getToken() { + let comment = false; + let ch = this.currentChar; + while (true) { + if (ch < 0) { + return _primitives.EOF; + } + if (comment) { + if (ch === 0x0a || ch === 0x0d) { + comment = false; + } + } else if (ch === 0x25) { + comment = true; + } else if (!(0, _core_utils.isWhiteSpace)(ch)) { + break; + } + ch = this.nextChar(); + } + switch (ch | 0) { + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x2b: + case 0x2d: + case 0x2e: + return new PostScriptToken(PostScriptTokenTypes.NUMBER, this.getNumber()); + case 0x7b: + this.nextChar(); + return PostScriptToken.LBRACE; + case 0x7d: + this.nextChar(); + return PostScriptToken.RBRACE; + } + const strBuf = this.strBuf; + strBuf.length = 0; + strBuf[0] = String.fromCharCode(ch); + while ((ch = this.nextChar()) >= 0 && (ch >= 0x41 && ch <= 0x5a || ch >= 0x61 && ch <= 0x7a)) { + strBuf.push(String.fromCharCode(ch)); + } + const str = strBuf.join(""); + switch (str.toLowerCase()) { + case "if": + return PostScriptToken.IF; + case "ifelse": + return PostScriptToken.IFELSE; + default: + return PostScriptToken.getOperator(str); + } + } + getNumber() { + let ch = this.currentChar; + const strBuf = this.strBuf; + strBuf.length = 0; + strBuf[0] = String.fromCharCode(ch); + while ((ch = this.nextChar()) >= 0) { + if (ch >= 0x30 && ch <= 0x39 || ch === 0x2d || ch === 0x2e) { + strBuf.push(String.fromCharCode(ch)); + } else { + break; + } + } + const value = parseFloat(strBuf.join("")); + if (isNaN(value)) { + throw new _util.FormatError(`Invalid floating point number: ${value}`); + } + return value; + } +} +exports.PostScriptLexer = PostScriptLexer; + +/***/ }), +/* 59 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.RegionalImageCache = exports.LocalTilingPatternCache = exports.LocalImageCache = exports.LocalGStateCache = exports.LocalFunctionCache = exports.LocalColorSpaceCache = exports.GlobalImageCache = void 0; +var _util = __w_pdfjs_require__(2); +var _primitives = __w_pdfjs_require__(4); +class BaseLocalCache { + constructor(options) { + if (this.constructor === BaseLocalCache) { + (0, _util.unreachable)("Cannot initialize BaseLocalCache."); + } + this._onlyRefs = options?.onlyRefs === true; + if (!this._onlyRefs) { + this._nameRefMap = new Map(); + this._imageMap = new Map(); + } + this._imageCache = new _primitives.RefSetCache(); + } + getByName(name) { + if (this._onlyRefs) { + (0, _util.unreachable)("Should not call `getByName` method."); + } + const ref = this._nameRefMap.get(name); + if (ref) { + return this.getByRef(ref); + } + return this._imageMap.get(name) || null; + } + getByRef(ref) { + return this._imageCache.get(ref) || null; + } + set(name, ref, data) { + (0, _util.unreachable)("Abstract method `set` called."); + } +} +class LocalImageCache extends BaseLocalCache { + set(name, ref = null, data) { + if (typeof name !== "string") { + throw new Error('LocalImageCache.set - expected "name" argument.'); + } + if (ref) { + if (this._imageCache.has(ref)) { + return; + } + this._nameRefMap.set(name, ref); + this._imageCache.put(ref, data); + return; + } + if (this._imageMap.has(name)) { + return; + } + this._imageMap.set(name, data); + } +} +exports.LocalImageCache = LocalImageCache; +class LocalColorSpaceCache extends BaseLocalCache { + set(name = null, ref = null, data) { + if (typeof name !== "string" && !ref) { + throw new Error('LocalColorSpaceCache.set - expected "name" and/or "ref" argument.'); + } + if (ref) { + if (this._imageCache.has(ref)) { + return; + } + if (name !== null) { + this._nameRefMap.set(name, ref); + } + this._imageCache.put(ref, data); + return; + } + if (this._imageMap.has(name)) { + return; + } + this._imageMap.set(name, data); + } +} +exports.LocalColorSpaceCache = LocalColorSpaceCache; +class LocalFunctionCache extends BaseLocalCache { + constructor(options) { + super({ + onlyRefs: true + }); + } + set(name = null, ref, data) { + if (!ref) { + throw new Error('LocalFunctionCache.set - expected "ref" argument.'); + } + if (this._imageCache.has(ref)) { + return; + } + this._imageCache.put(ref, data); + } +} +exports.LocalFunctionCache = LocalFunctionCache; +class LocalGStateCache extends BaseLocalCache { + set(name, ref = null, data) { + if (typeof name !== "string") { + throw new Error('LocalGStateCache.set - expected "name" argument.'); + } + if (ref) { + if (this._imageCache.has(ref)) { + return; + } + this._nameRefMap.set(name, ref); + this._imageCache.put(ref, data); + return; + } + if (this._imageMap.has(name)) { + return; + } + this._imageMap.set(name, data); + } +} +exports.LocalGStateCache = LocalGStateCache; +class LocalTilingPatternCache extends BaseLocalCache { + constructor(options) { + super({ + onlyRefs: true + }); + } + set(name = null, ref, data) { + if (!ref) { + throw new Error('LocalTilingPatternCache.set - expected "ref" argument.'); + } + if (this._imageCache.has(ref)) { + return; + } + this._imageCache.put(ref, data); + } +} +exports.LocalTilingPatternCache = LocalTilingPatternCache; +class RegionalImageCache extends BaseLocalCache { + constructor(options) { + super({ + onlyRefs: true + }); + } + set(name = null, ref, data) { + if (!ref) { + throw new Error('RegionalImageCache.set - expected "ref" argument.'); + } + if (this._imageCache.has(ref)) { + return; + } + this._imageCache.put(ref, data); + } +} +exports.RegionalImageCache = RegionalImageCache; +class GlobalImageCache { + static NUM_PAGES_THRESHOLD = 2; + static MIN_IMAGES_TO_CACHE = 10; + static MAX_BYTE_SIZE = 5 * _util.MAX_IMAGE_SIZE_TO_CACHE; + constructor() { + this._refCache = new _primitives.RefSetCache(); + this._imageCache = new _primitives.RefSetCache(); + } + get _byteSize() { + let byteSize = 0; + for (const imageData of this._imageCache) { + byteSize += imageData.byteSize; + } + return byteSize; + } + get _cacheLimitReached() { + if (this._imageCache.size < GlobalImageCache.MIN_IMAGES_TO_CACHE) { + return false; + } + if (this._byteSize < GlobalImageCache.MAX_BYTE_SIZE) { + return false; + } + return true; + } + shouldCache(ref, pageIndex) { + let pageIndexSet = this._refCache.get(ref); + if (!pageIndexSet) { + pageIndexSet = new Set(); + this._refCache.put(ref, pageIndexSet); + } + pageIndexSet.add(pageIndex); + if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) { + return false; + } + if (!this._imageCache.has(ref) && this._cacheLimitReached) { + return false; + } + return true; + } + addByteSize(ref, byteSize) { + const imageData = this._imageCache.get(ref); + if (!imageData) { + return; + } + if (imageData.byteSize) { + return; + } + imageData.byteSize = byteSize; + } + getData(ref, pageIndex) { + const pageIndexSet = this._refCache.get(ref); + if (!pageIndexSet) { + return null; + } + if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) { + return null; + } + const imageData = this._imageCache.get(ref); + if (!imageData) { + return null; + } + pageIndexSet.add(pageIndex); + return imageData; + } + setData(ref, data) { + if (!this._refCache.has(ref)) { + throw new Error('GlobalImageCache.setData - expected "shouldCache" to have been called.'); + } + if (this._imageCache.has(ref)) { + return; + } + if (this._cacheLimitReached) { + (0, _util.warn)("GlobalImageCache.setData - cache limit reached."); + return; + } + this._imageCache.put(ref, data); + } + clear(onlyData = false) { + if (!onlyData) { + this._refCache.clear(); + } + this._imageCache.clear(); + } +} +exports.GlobalImageCache = GlobalImageCache; + +/***/ }), +/* 60 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.bidi = bidi; +var _util = __w_pdfjs_require__(2); +const baseTypes = ["BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "S", "B", "S", "WS", "B", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "B", "B", "B", "S", "WS", "ON", "ON", "ET", "ET", "ET", "ON", "ON", "ON", "ON", "ON", "ES", "CS", "ES", "CS", "CS", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "CS", "ON", "ON", "ON", "ON", "ON", "ON", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "ON", "ON", "ON", "ON", "ON", "ON", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "ON", "ON", "ON", "ON", "BN", "BN", "BN", "BN", "BN", "BN", "B", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "CS", "ON", "ET", "ET", "ET", "ET", "ON", "ON", "ON", "ON", "L", "ON", "ON", "BN", "ON", "ON", "ET", "ET", "EN", "EN", "ON", "L", "ON", "ON", "ON", "EN", "L", "ON", "ON", "ON", "ON", "ON", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "ON", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "ON", "L", "L", "L", "L", "L", "L", "L", "L"]; +const arabicTypes = ["AN", "AN", "AN", "AN", "AN", "AN", "ON", "ON", "AL", "ET", "ET", "AL", "CS", "AL", "ON", "ON", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "ET", "AN", "AN", "AL", "AL", "AL", "NSM", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AN", "ON", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "NSM", "NSM", "ON", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "AL", "AL", "AL", "AL", "AL", "AL"]; +function isOdd(i) { + return (i & 1) !== 0; +} +function isEven(i) { + return (i & 1) === 0; +} +function findUnequal(arr, start, value) { + let j, jj; + for (j = start, jj = arr.length; j < jj; ++j) { + if (arr[j] !== value) { + return j; + } + } + return j; +} +function setValues(arr, start, end, value) { + for (let j = start; j < end; ++j) { + arr[j] = value; + } +} +function reverseValues(arr, start, end) { + for (let i = start, j = end - 1; i < j; ++i, --j) { + const temp = arr[i]; + arr[i] = arr[j]; + arr[j] = temp; + } +} +function createBidiText(str, isLTR, vertical = false) { + let dir = "ltr"; + if (vertical) { + dir = "ttb"; + } else if (!isLTR) { + dir = "rtl"; + } + return { + str, + dir + }; +} +const chars = []; +const types = []; +function bidi(str, startLevel = -1, vertical = false) { + let isLTR = true; + const strLength = str.length; + if (strLength === 0 || vertical) { + return createBidiText(str, isLTR, vertical); + } + chars.length = strLength; + types.length = strLength; + let numBidi = 0; + let i, ii; + for (i = 0; i < strLength; ++i) { + chars[i] = str.charAt(i); + const charCode = str.charCodeAt(i); + let charType = "L"; + if (charCode <= 0x00ff) { + charType = baseTypes[charCode]; + } else if (0x0590 <= charCode && charCode <= 0x05f4) { + charType = "R"; + } else if (0x0600 <= charCode && charCode <= 0x06ff) { + charType = arabicTypes[charCode & 0xff]; + if (!charType) { + (0, _util.warn)("Bidi: invalid Unicode character " + charCode.toString(16)); + } + } else if (0x0700 <= charCode && charCode <= 0x08ac || 0xfb50 <= charCode && charCode <= 0xfdff || 0xfe70 <= charCode && charCode <= 0xfeff) { + charType = "AL"; + } + if (charType === "R" || charType === "AL" || charType === "AN") { + numBidi++; + } + types[i] = charType; + } + if (numBidi === 0) { + isLTR = true; + return createBidiText(str, isLTR); + } + if (startLevel === -1) { + if (numBidi / strLength < 0.3 && strLength > 4) { + isLTR = true; + startLevel = 0; + } else { + isLTR = false; + startLevel = 1; + } + } + const levels = []; + for (i = 0; i < strLength; ++i) { + levels[i] = startLevel; + } + const e = isOdd(startLevel) ? "R" : "L"; + const sor = e; + const eor = sor; + let lastType = sor; + for (i = 0; i < strLength; ++i) { + if (types[i] === "NSM") { + types[i] = lastType; + } else { + lastType = types[i]; + } + } + lastType = sor; + let t; + for (i = 0; i < strLength; ++i) { + t = types[i]; + if (t === "EN") { + types[i] = lastType === "AL" ? "AN" : "EN"; + } else if (t === "R" || t === "L" || t === "AL") { + lastType = t; + } + } + for (i = 0; i < strLength; ++i) { + t = types[i]; + if (t === "AL") { + types[i] = "R"; + } + } + for (i = 1; i < strLength - 1; ++i) { + if (types[i] === "ES" && types[i - 1] === "EN" && types[i + 1] === "EN") { + types[i] = "EN"; + } + if (types[i] === "CS" && (types[i - 1] === "EN" || types[i - 1] === "AN") && types[i + 1] === types[i - 1]) { + types[i] = types[i - 1]; + } + } + for (i = 0; i < strLength; ++i) { + if (types[i] === "EN") { + for (let j = i - 1; j >= 0; --j) { + if (types[j] !== "ET") { + break; + } + types[j] = "EN"; + } + for (let j = i + 1; j < strLength; ++j) { + if (types[j] !== "ET") { + break; + } + types[j] = "EN"; + } + } + } + for (i = 0; i < strLength; ++i) { + t = types[i]; + if (t === "WS" || t === "ES" || t === "ET" || t === "CS") { + types[i] = "ON"; + } + } + lastType = sor; + for (i = 0; i < strLength; ++i) { + t = types[i]; + if (t === "EN") { + types[i] = lastType === "L" ? "L" : "EN"; + } else if (t === "R" || t === "L") { + lastType = t; + } + } + for (i = 0; i < strLength; ++i) { + if (types[i] === "ON") { + const end = findUnequal(types, i + 1, "ON"); + let before = sor; + if (i > 0) { + before = types[i - 1]; + } + let after = eor; + if (end + 1 < strLength) { + after = types[end + 1]; + } + if (before !== "L") { + before = "R"; + } + if (after !== "L") { + after = "R"; + } + if (before === after) { + setValues(types, i, end, before); + } + i = end - 1; + } + } + for (i = 0; i < strLength; ++i) { + if (types[i] === "ON") { + types[i] = e; + } + } + for (i = 0; i < strLength; ++i) { + t = types[i]; + if (isEven(levels[i])) { + if (t === "R") { + levels[i] += 1; + } else if (t === "AN" || t === "EN") { + levels[i] += 2; + } + } else { + if (t === "L" || t === "AN" || t === "EN") { + levels[i] += 1; + } + } + } + let highestLevel = -1; + let lowestOddLevel = 99; + let level; + for (i = 0, ii = levels.length; i < ii; ++i) { + level = levels[i]; + if (highestLevel < level) { + highestLevel = level; + } + if (lowestOddLevel > level && isOdd(level)) { + lowestOddLevel = level; + } + } + for (level = highestLevel; level >= lowestOddLevel; --level) { + let start = -1; + for (i = 0, ii = levels.length; i < ii; ++i) { + if (levels[i] < level) { + if (start >= 0) { + reverseValues(chars, start, i); + start = -1; + } + } else if (start < 0) { + start = i; + } + } + if (start >= 0) { + reverseValues(chars, start, levels.length); + } + } + for (i = 0, ii = chars.length; i < ii; ++i) { + const ch = chars[i]; + if (ch === "<" || ch === ">") { + chars[i] = ""; + } + } + return createBidiText(chars.join(""), isLTR); +} + +/***/ }), +/* 61 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getFontSubstitution = getFontSubstitution; +var _fonts_utils = __w_pdfjs_require__(38); +var _core_utils = __w_pdfjs_require__(3); +const NORMAL = { + style: "normal", + weight: "normal" +}; +const BOLD = { + style: "normal", + weight: "bold" +}; +const ITALIC = { + style: "italic", + weight: "normal" +}; +const BOLDITALIC = { + style: "italic", + weight: "bold" +}; +const substitutionMap = new Map([["Times-Roman", { + local: ["Times New Roman", "Times-Roman", "Times", "Liberation Serif", "Nimbus Roman", "Nimbus Roman L", "Tinos", "Thorndale", "TeX Gyre Termes", "FreeSerif", "DejaVu Serif", "Bitstream Vera Serif", "Ubuntu"], + style: NORMAL, + ultimate: "serif" +}], ["Times-Bold", { + alias: "Times-Roman", + style: BOLD, + ultimate: "serif" +}], ["Times-Italic", { + alias: "Times-Roman", + style: ITALIC, + ultimate: "serif" +}], ["Times-BoldItalic", { + alias: "Times-Roman", + style: BOLDITALIC, + ultimate: "serif" +}], ["Helvetica", { + local: ["Helvetica", "Helvetica Neue", "Arial", "Arial Nova", "Liberation Sans", "Arimo", "Nimbus Sans", "Nimbus Sans L", "A030", "TeX Gyre Heros", "FreeSans", "DejaVu Sans", "Albany", "Bitstream Vera Sans", "Arial Unicode MS", "Microsoft Sans Serif", "Apple Symbols", "Cantarell"], + path: "LiberationSans-Regular.ttf", + style: NORMAL, + ultimate: "sans-serif" +}], ["Helvetica-Bold", { + alias: "Helvetica", + path: "LiberationSans-Bold.ttf", + style: BOLD, + ultimate: "sans-serif" +}], ["Helvetica-Oblique", { + alias: "Helvetica", + path: "LiberationSans-Italic.ttf", + style: ITALIC, + ultimate: "sans-serif" +}], ["Helvetica-BoldOblique", { + alias: "Helvetica", + path: "LiberationSans-BoldItalic.ttf", + style: BOLDITALIC, + ultimate: "sans-serif" +}], ["Courier", { + local: ["Courier", "Courier New", "Liberation Mono", "Nimbus Mono", "Nimbus Mono L", "Cousine", "Cumberland", "TeX Gyre Cursor", "FreeMono"], + style: NORMAL, + ultimate: "monospace" +}], ["Courier-Bold", { + alias: "Courier", + style: BOLD, + ultimate: "monospace" +}], ["Courier-Oblique", { + alias: "Courier", + style: ITALIC, + ultimate: "monospace" +}], ["Courier-BoldOblique", { + alias: "Courier", + style: BOLDITALIC, + ultimate: "monospace" +}], ["ArialBlack", { + local: ["Arial Black"], + style: { + style: "normal", + weight: "900" + }, + fallback: "Helvetica-Bold" +}], ["ArialBlack-Bold", { + alias: "ArialBlack" +}], ["ArialBlack-Italic", { + alias: "ArialBlack", + style: { + style: "italic", + weight: "900" + }, + fallback: "Helvetica-BoldOblique" +}], ["ArialBlack-BoldItalic", { + alias: "ArialBlack-Italic" +}], ["ArialNarrow", { + local: ["Arial Narrow", "Liberation Sans Narrow", "Helvetica Condensed", "Nimbus Sans Narrow", "TeX Gyre Heros Cn"], + style: NORMAL, + fallback: "Helvetica" +}], ["ArialNarrow-Bold", { + alias: "ArialNarrow", + style: BOLD, + fallback: "Helvetica-Bold" +}], ["ArialNarrow-Italic", { + alias: "ArialNarrow", + style: ITALIC, + fallback: "Helvetica-Oblique" +}], ["ArialNarrow-BoldItalic", { + alias: "ArialNarrow", + style: BOLDITALIC, + fallback: "Helvetica-BoldOblique" +}], ["Calibri", { + local: ["Calibri", "Carlito"], + style: NORMAL, + fallback: "Helvetica" +}], ["Calibri-Bold", { + alias: "Calibri", + style: BOLD, + fallback: "Helvetica-Bold" +}], ["Calibri-Italic", { + alias: "Calibri", + style: ITALIC, + fallback: "Helvetica-Oblique" +}], ["Calibri-BoldItalic", { + alias: "Calibri", + style: BOLDITALIC, + fallback: "Helvetica-BoldOblique" +}], ["Wingdings", { + local: ["Wingdings", "URW Dingbats"], + style: NORMAL +}], ["Wingdings-Regular", { + alias: "Wingdings" +}], ["Wingdings-Bold", { + alias: "Wingdings" +}]]); +const fontAliases = new Map([["Arial-Black", "ArialBlack"]]); +function getStyleToAppend(style) { + switch (style) { + case BOLD: + return "Bold"; + case ITALIC: + return "Italic"; + case BOLDITALIC: + return "Bold Italic"; + default: + if (style?.weight === "bold") { + return "Bold"; + } + if (style?.style === "italic") { + return "Italic"; + } + } + return ""; +} +function generateFont({ + alias, + local, + path, + fallback, + style, + ultimate +}, src, localFontPath, useFallback = true, usePath = true, append = "") { + const result = { + style: null, + ultimate: null + }; + if (local) { + const extra = append ? ` ${append}` : ""; + for (const name of local) { + src.push(`local(${name}${extra})`); + } + } + if (alias) { + const substitution = substitutionMap.get(alias); + const aliasAppend = append || getStyleToAppend(style); + Object.assign(result, generateFont(substitution, src, localFontPath, useFallback && !fallback, usePath && !path, aliasAppend)); + } + if (style) { + result.style = style; + } + if (ultimate) { + result.ultimate = ultimate; + } + if (useFallback && fallback) { + const fallbackInfo = substitutionMap.get(fallback); + const { + ultimate: fallbackUltimate + } = generateFont(fallbackInfo, src, localFontPath, useFallback, usePath && !path, append); + result.ultimate ||= fallbackUltimate; + } + if (usePath && path && localFontPath) { + src.push(`url(${localFontPath}${path})`); + } + return result; +} +function getFontSubstitution(systemFontCache, idFactory, localFontPath, baseFontName, standardFontName) { + baseFontName = (0, _fonts_utils.normalizeFontName)(baseFontName); + const key = baseFontName; + let substitutionInfo = systemFontCache.get(key); + if (substitutionInfo) { + return substitutionInfo; + } + let substitution = substitutionMap.get(baseFontName); + if (!substitution) { + for (const [alias, subst] of fontAliases) { + if (baseFontName.startsWith(alias)) { + baseFontName = `${subst}${baseFontName.substring(alias.length)}`; + substitution = substitutionMap.get(baseFontName); + break; + } + } + } + let mustAddBaseFont = false; + if (!substitution) { + substitution = substitutionMap.get(standardFontName); + mustAddBaseFont = true; + } + const loadedName = `${idFactory.getDocId()}_s${idFactory.createFontId()}`; + if (!substitution) { + if (!(0, _core_utils.validateFontName)(baseFontName)) { + systemFontCache.set(key, null); + return null; + } + const bold = /bold/gi.test(baseFontName); + const italic = /oblique|italic/gi.test(baseFontName); + const style = bold && italic && BOLDITALIC || bold && BOLD || italic && ITALIC || NORMAL; + substitutionInfo = { + css: loadedName, + guessFallback: true, + loadedName, + baseFontName, + src: `local(${baseFontName})`, + style + }; + systemFontCache.set(key, substitutionInfo); + return substitutionInfo; + } + const src = []; + if (mustAddBaseFont && (0, _core_utils.validateFontName)(baseFontName)) { + src.push(`local(${baseFontName})`); + } + const { + style, + ultimate + } = generateFont(substitution, src, localFontPath); + const guessFallback = ultimate === null; + const fallback = guessFallback ? "" : `,${ultimate}`; + substitutionInfo = { + css: `${loadedName}${fallback}`, + guessFallback, + loadedName, + baseFontName, + src: src.join(","), + style + }; + systemFontCache.set(key, substitutionInfo); + return substitutionInfo; +} + +/***/ }), +/* 62 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ImageResizer = void 0; +var _util = __w_pdfjs_require__(2); +const MIN_IMAGE_DIM = 2048; +const MAX_IMAGE_DIM = 65537; +const MAX_ERROR = 128; +class ImageResizer { + constructor(imgData, isMask) { + this._imgData = imgData; + this._isMask = isMask; + } + static needsToBeResized(width, height) { + if (width <= this._goodSquareLength && height <= this._goodSquareLength) { + return false; + } + const { + MAX_DIM + } = this; + if (width > MAX_DIM || height > MAX_DIM) { + return true; + } + const area = width * height; + if (this._hasMaxArea) { + return area > this.MAX_AREA; + } + if (area < this._goodSquareLength ** 2) { + return false; + } + if (this._areGoodDims(width, height)) { + this._goodSquareLength = Math.max(this._goodSquareLength, Math.floor(Math.sqrt(width * height))); + return false; + } + this._goodSquareLength = this._guessMax(this._goodSquareLength, MAX_DIM, MAX_ERROR, 0); + const maxArea = this.MAX_AREA = this._goodSquareLength ** 2; + return area > maxArea; + } + static get MAX_DIM() { + return (0, _util.shadow)(this, "MAX_DIM", this._guessMax(MIN_IMAGE_DIM, MAX_IMAGE_DIM, 0, 1)); + } + static get MAX_AREA() { + this._hasMaxArea = true; + return (0, _util.shadow)(this, "MAX_AREA", this._guessMax(ImageResizer._goodSquareLength, this.MAX_DIM, MAX_ERROR, 0) ** 2); + } + static set MAX_AREA(area) { + if (area >= 0) { + this._hasMaxArea = true; + (0, _util.shadow)(this, "MAX_AREA", area); + } + } + static setMaxArea(area) { + if (!this._hasMaxArea) { + this.MAX_AREA = area >> 2; + } + } + static _areGoodDims(width, height) { + try { + const canvas = new OffscreenCanvas(width, height); + const ctx = canvas.getContext("2d"); + ctx.fillRect(0, 0, 1, 1); + const opacity = ctx.getImageData(0, 0, 1, 1).data[3]; + canvas.width = canvas.height = 1; + return opacity !== 0; + } catch { + return false; + } + } + static _guessMax(start, end, tolerance, defaultHeight) { + while (start + tolerance + 1 < end) { + const middle = Math.floor((start + end) / 2); + const height = defaultHeight || middle; + if (this._areGoodDims(middle, height)) { + start = middle; + } else { + end = middle; + } + } + return start; + } + static async createImage(imgData, isMask = false) { + return new ImageResizer(imgData, isMask)._createImage(); + } + async _createImage() { + const data = this._encodeBMP(); + const blob = new Blob([data.buffer], { + type: "image/bmp" + }); + const bitmapPromise = createImageBitmap(blob); + const { + MAX_AREA, + MAX_DIM + } = ImageResizer; + const { + _imgData: imgData + } = this; + const { + width, + height + } = imgData; + const minFactor = Math.max(width / MAX_DIM, height / MAX_DIM, Math.sqrt(width * height / MAX_AREA)); + const firstFactor = Math.max(minFactor, 2); + const factor = Math.round(10 * (minFactor + 1.25)) / 10 / firstFactor; + const N = Math.floor(Math.log2(factor)); + const steps = new Array(N + 2).fill(2); + steps[0] = firstFactor; + steps.splice(-1, 1, factor / (1 << N)); + let newWidth = width; + let newHeight = height; + let bitmap = await bitmapPromise; + for (const step of steps) { + const prevWidth = newWidth; + const prevHeight = newHeight; + newWidth = Math.floor(newWidth / step) - 1; + newHeight = Math.floor(newHeight / step) - 1; + const canvas = new OffscreenCanvas(newWidth, newHeight); + const ctx = canvas.getContext("2d"); + ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight); + bitmap = canvas.transferToImageBitmap(); + } + imgData.data = null; + imgData.bitmap = bitmap; + imgData.width = newWidth; + imgData.height = newHeight; + return imgData; + } + _encodeBMP() { + const { + width, + height, + kind + } = this._imgData; + let data = this._imgData.data; + let bitPerPixel; + let colorTable = new Uint8Array(0); + let maskTable = colorTable; + let compression = 0; + switch (kind) { + case _util.ImageKind.GRAYSCALE_1BPP: + { + bitPerPixel = 1; + colorTable = new Uint8Array(this._isMask ? [255, 255, 255, 255, 0, 0, 0, 0] : [0, 0, 0, 0, 255, 255, 255, 255]); + const rowLen = width + 7 >> 3; + const rowSize = rowLen + 3 & -4; + if (rowLen !== rowSize) { + const newData = new Uint8Array(rowSize * height); + let k = 0; + for (let i = 0, ii = height * rowLen; i < ii; i += rowLen, k += rowSize) { + newData.set(data.subarray(i, i + rowLen), k); + } + data = newData; + } + break; + } + case _util.ImageKind.RGB_24BPP: + { + bitPerPixel = 24; + if (width & 3) { + const rowLen = 3 * width; + const rowSize = rowLen + 3 & -4; + const extraLen = rowSize - rowLen; + const newData = new Uint8Array(rowSize * height); + let k = 0; + for (let i = 0, ii = height * rowLen; i < ii; i += rowLen) { + const row = data.subarray(i, i + rowLen); + for (let j = 0; j < rowLen; j += 3) { + newData[k++] = row[j + 2]; + newData[k++] = row[j + 1]; + newData[k++] = row[j]; + } + k += extraLen; + } + data = newData; + } else { + for (let i = 0, ii = data.length; i < ii; i += 3) { + const tmp = data[i]; + data[i] = data[i + 2]; + data[i + 2] = tmp; + } + } + break; + } + case _util.ImageKind.RGBA_32BPP: + bitPerPixel = 32; + compression = 3; + maskTable = new Uint8Array(4 + 4 + 4 + 4 + 52); + const view = new DataView(maskTable.buffer); + if (_util.FeatureTest.isLittleEndian) { + view.setUint32(0, 0x000000ff, true); + view.setUint32(4, 0x0000ff00, true); + view.setUint32(8, 0x00ff0000, true); + view.setUint32(12, 0xff000000, true); + } else { + view.setUint32(0, 0xff000000, true); + view.setUint32(4, 0x00ff0000, true); + view.setUint32(8, 0x0000ff00, true); + view.setUint32(12, 0x000000ff, true); + } + break; + default: + throw new Error("invalid format"); + } + let i = 0; + const headerLength = 40 + maskTable.length; + const fileLength = 14 + headerLength + colorTable.length + data.length; + const bmpData = new Uint8Array(fileLength); + const view = new DataView(bmpData.buffer); + view.setUint16(i, 0x4d42, true); + i += 2; + view.setUint32(i, fileLength, true); + i += 4; + view.setUint32(i, 0, true); + i += 4; + view.setUint32(i, 14 + headerLength + colorTable.length, true); + i += 4; + view.setUint32(i, headerLength, true); + i += 4; + view.setInt32(i, width, true); + i += 4; + view.setInt32(i, -height, true); + i += 4; + view.setUint16(i, 1, true); + i += 2; + view.setUint16(i, bitPerPixel, true); + i += 2; + view.setUint32(i, compression, true); + i += 4; + view.setUint32(i, 0, true); + i += 4; + view.setInt32(i, 0, true); + i += 4; + view.setInt32(i, 0, true); + i += 4; + view.setUint32(i, colorTable.length / 4, true); + i += 4; + view.setUint32(i, 0, true); + i += 4; + bmpData.set(maskTable, i); + i += maskTable.length; + bmpData.set(colorTable, i); + i += colorTable.length; + bmpData.set(data, i); + return bmpData; + } +} +exports.ImageResizer = ImageResizer; +ImageResizer._goodSquareLength = MIN_IMAGE_DIM; + +/***/ }), +/* 63 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MurmurHash3_64 = void 0; +var _util = __w_pdfjs_require__(2); +const SEED = 0xc3d2e1f0; +const MASK_HIGH = 0xffff0000; +const MASK_LOW = 0xffff; +class MurmurHash3_64 { + constructor(seed) { + this.h1 = seed ? seed & 0xffffffff : SEED; + this.h2 = seed ? seed & 0xffffffff : SEED; + } + 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 { + data[length++] = code >>> 8; + data[length++] = code & 0xff; + } + } + } else if ((0, _util.isArrayBuffer)(input)) { + data = input.slice(); + length = data.byteLength; + } else { + throw new Error("Wrong data format in MurmurHash3_64_update. " + "Input must be a string or array."); + } + 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; + 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 { + 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; + } + } + k1 = 0; + 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; + } + } + this.h1 = h1; + this.h2 = h2; + } + 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; + return (h1 >>> 0).toString(16).padStart(8, "0") + (h2 >>> 0).toString(16).padStart(8, "0"); + } +} +exports.MurmurHash3_64 = MurmurHash3_64; + +/***/ }), +/* 64 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.OperatorList = void 0; +var _util = __w_pdfjs_require__(2); +function addState(parentState, pattern, checkFn, iterateFn, processFn) { + let state = parentState; + for (let i = 0, ii = pattern.length - 1; i < ii; i++) { + const item = pattern[i]; + state = state[item] ||= []; + } + state[pattern.at(-1)] = { + checkFn, + iterateFn, + processFn + }; +} +const InitialState = []; +addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintInlineImageXObject, _util.OPS.restore], null, function iterateInlineImageGroup(context, i) { + const fnArray = context.fnArray; + const iFirstSave = context.iCurr - 3; + const pos = (i - iFirstSave) % 4; + switch (pos) { + case 0: + return fnArray[i] === _util.OPS.save; + case 1: + return fnArray[i] === _util.OPS.transform; + case 2: + return fnArray[i] === _util.OPS.paintInlineImageXObject; + case 3: + return fnArray[i] === _util.OPS.restore; + } + throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`); +}, function foundInlineImageGroup(context, i) { + const MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10; + const MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200; + const MAX_WIDTH = 1000; + const IMAGE_PADDING = 1; + const fnArray = context.fnArray, + argsArray = context.argsArray; + const curr = context.iCurr; + const iFirstSave = curr - 3; + const iFirstTransform = curr - 2; + const iFirstPIIXO = curr - 1; + const count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_INLINE_IMAGES_BLOCK); + if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) { + return i - (i - iFirstSave) % 4; + } + let maxX = 0; + const map = []; + let maxLineHeight = 0; + let currentX = IMAGE_PADDING, + currentY = IMAGE_PADDING; + for (let q = 0; q < count; q++) { + const transform = argsArray[iFirstTransform + (q << 2)]; + const img = argsArray[iFirstPIIXO + (q << 2)][0]; + if (currentX + img.width > MAX_WIDTH) { + maxX = Math.max(maxX, currentX); + currentY += maxLineHeight + 2 * IMAGE_PADDING; + currentX = 0; + maxLineHeight = 0; + } + map.push({ + transform, + x: currentX, + y: currentY, + w: img.width, + h: img.height + }); + currentX += img.width + 2 * IMAGE_PADDING; + maxLineHeight = Math.max(maxLineHeight, img.height); + } + const imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING; + const imgHeight = currentY + maxLineHeight + IMAGE_PADDING; + const imgData = new Uint8Array(imgWidth * imgHeight * 4); + const imgRowSize = imgWidth << 2; + for (let q = 0; q < count; q++) { + const data = argsArray[iFirstPIIXO + (q << 2)][0].data; + const rowSize = map[q].w << 2; + let dataOffset = 0; + let offset = map[q].x + map[q].y * imgWidth << 2; + imgData.set(data.subarray(0, rowSize), offset - imgRowSize); + for (let k = 0, kk = map[q].h; k < kk; k++) { + imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset); + dataOffset += rowSize; + offset += imgRowSize; + } + imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset); + while (offset >= 0) { + data[offset - 4] = data[offset]; + data[offset - 3] = data[offset + 1]; + data[offset - 2] = data[offset + 2]; + data[offset - 1] = data[offset + 3]; + data[offset + rowSize] = data[offset + rowSize - 4]; + data[offset + rowSize + 1] = data[offset + rowSize - 3]; + data[offset + rowSize + 2] = data[offset + rowSize - 2]; + data[offset + rowSize + 3] = data[offset + rowSize - 1]; + offset -= imgRowSize; + } + } + const img = { + width: imgWidth, + height: imgHeight + }; + if (context.isOffscreenCanvasSupported) { + const canvas = new OffscreenCanvas(imgWidth, imgHeight); + const ctx = canvas.getContext("2d"); + ctx.putImageData(new ImageData(new Uint8ClampedArray(imgData.buffer), imgWidth, imgHeight), 0, 0); + img.bitmap = canvas.transferToImageBitmap(); + img.data = null; + } else { + img.kind = _util.ImageKind.RGBA_32BPP; + img.data = imgData; + } + fnArray.splice(iFirstSave, count * 4, _util.OPS.paintInlineImageXObjectGroup); + argsArray.splice(iFirstSave, count * 4, [img, map]); + return iFirstSave + 1; +}); +addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageMaskXObject, _util.OPS.restore], null, function iterateImageMaskGroup(context, i) { + const fnArray = context.fnArray; + const iFirstSave = context.iCurr - 3; + const pos = (i - iFirstSave) % 4; + switch (pos) { + case 0: + return fnArray[i] === _util.OPS.save; + case 1: + return fnArray[i] === _util.OPS.transform; + case 2: + return fnArray[i] === _util.OPS.paintImageMaskXObject; + case 3: + return fnArray[i] === _util.OPS.restore; + } + throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`); +}, function foundImageMaskGroup(context, i) { + const MIN_IMAGES_IN_MASKS_BLOCK = 10; + const MAX_IMAGES_IN_MASKS_BLOCK = 100; + const MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000; + const fnArray = context.fnArray, + argsArray = context.argsArray; + const curr = context.iCurr; + const iFirstSave = curr - 3; + const iFirstTransform = curr - 2; + const iFirstPIMXO = curr - 1; + let count = Math.floor((i - iFirstSave) / 4); + if (count < MIN_IMAGES_IN_MASKS_BLOCK) { + return i - (i - iFirstSave) % 4; + } + let isSameImage = false; + let iTransform, transformArgs; + const firstPIMXOArg0 = argsArray[iFirstPIMXO][0]; + const firstTransformArg0 = argsArray[iFirstTransform][0], + firstTransformArg1 = argsArray[iFirstTransform][1], + firstTransformArg2 = argsArray[iFirstTransform][2], + firstTransformArg3 = argsArray[iFirstTransform][3]; + if (firstTransformArg1 === firstTransformArg2) { + isSameImage = true; + iTransform = iFirstTransform + 4; + let iPIMXO = iFirstPIMXO + 4; + for (let q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) { + transformArgs = argsArray[iTransform]; + if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || transformArgs[1] !== firstTransformArg1 || transformArgs[2] !== firstTransformArg2 || transformArgs[3] !== firstTransformArg3) { + if (q < MIN_IMAGES_IN_MASKS_BLOCK) { + isSameImage = false; + } else { + count = q; + } + break; + } + } + } + if (isSameImage) { + count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK); + const positions = new Float32Array(count * 2); + iTransform = iFirstTransform; + for (let q = 0; q < count; q++, iTransform += 4) { + transformArgs = argsArray[iTransform]; + positions[q << 1] = transformArgs[4]; + positions[(q << 1) + 1] = transformArgs[5]; + } + fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectRepeat); + argsArray.splice(iFirstSave, count * 4, [firstPIMXOArg0, firstTransformArg0, firstTransformArg1, firstTransformArg2, firstTransformArg3, positions]); + } else { + count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK); + const images = []; + for (let q = 0; q < count; q++) { + transformArgs = argsArray[iFirstTransform + (q << 2)]; + const maskParams = argsArray[iFirstPIMXO + (q << 2)][0]; + images.push({ + data: maskParams.data, + width: maskParams.width, + height: maskParams.height, + interpolate: maskParams.interpolate, + count: maskParams.count, + transform: transformArgs + }); + } + fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectGroup); + argsArray.splice(iFirstSave, count * 4, [images]); + } + return iFirstSave + 1; +}); +addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageXObject, _util.OPS.restore], function (context) { + const argsArray = context.argsArray; + const iFirstTransform = context.iCurr - 2; + return argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0; +}, function iterateImageGroup(context, i) { + const fnArray = context.fnArray, + argsArray = context.argsArray; + const iFirstSave = context.iCurr - 3; + const pos = (i - iFirstSave) % 4; + switch (pos) { + case 0: + return fnArray[i] === _util.OPS.save; + case 1: + if (fnArray[i] !== _util.OPS.transform) { + return false; + } + const iFirstTransform = context.iCurr - 2; + const firstTransformArg0 = argsArray[iFirstTransform][0]; + const firstTransformArg3 = argsArray[iFirstTransform][3]; + if (argsArray[i][0] !== firstTransformArg0 || argsArray[i][1] !== 0 || argsArray[i][2] !== 0 || argsArray[i][3] !== firstTransformArg3) { + return false; + } + return true; + case 2: + if (fnArray[i] !== _util.OPS.paintImageXObject) { + return false; + } + const iFirstPIXO = context.iCurr - 1; + const firstPIXOArg0 = argsArray[iFirstPIXO][0]; + if (argsArray[i][0] !== firstPIXOArg0) { + return false; + } + return true; + case 3: + return fnArray[i] === _util.OPS.restore; + } + throw new Error(`iterateImageGroup - invalid pos: ${pos}`); +}, function (context, i) { + const MIN_IMAGES_IN_BLOCK = 3; + const MAX_IMAGES_IN_BLOCK = 1000; + const fnArray = context.fnArray, + argsArray = context.argsArray; + const curr = context.iCurr; + const iFirstSave = curr - 3; + const iFirstTransform = curr - 2; + const iFirstPIXO = curr - 1; + const firstPIXOArg0 = argsArray[iFirstPIXO][0]; + const firstTransformArg0 = argsArray[iFirstTransform][0]; + const firstTransformArg3 = argsArray[iFirstTransform][3]; + const count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_BLOCK); + if (count < MIN_IMAGES_IN_BLOCK) { + return i - (i - iFirstSave) % 4; + } + const positions = new Float32Array(count * 2); + let iTransform = iFirstTransform; + for (let q = 0; q < count; q++, iTransform += 4) { + const transformArgs = argsArray[iTransform]; + positions[q << 1] = transformArgs[4]; + positions[(q << 1) + 1] = transformArgs[5]; + } + const args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3, positions]; + fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageXObjectRepeat); + argsArray.splice(iFirstSave, count * 4, args); + return iFirstSave + 1; +}); +addState(InitialState, [_util.OPS.beginText, _util.OPS.setFont, _util.OPS.setTextMatrix, _util.OPS.showText, _util.OPS.endText], null, function iterateShowTextGroup(context, i) { + const fnArray = context.fnArray, + argsArray = context.argsArray; + const iFirstSave = context.iCurr - 4; + const pos = (i - iFirstSave) % 5; + switch (pos) { + case 0: + return fnArray[i] === _util.OPS.beginText; + case 1: + return fnArray[i] === _util.OPS.setFont; + case 2: + return fnArray[i] === _util.OPS.setTextMatrix; + case 3: + if (fnArray[i] !== _util.OPS.showText) { + return false; + } + const iFirstSetFont = context.iCurr - 3; + const firstSetFontArg0 = argsArray[iFirstSetFont][0]; + const firstSetFontArg1 = argsArray[iFirstSetFont][1]; + if (argsArray[i][0] !== firstSetFontArg0 || argsArray[i][1] !== firstSetFontArg1) { + return false; + } + return true; + case 4: + return fnArray[i] === _util.OPS.endText; + } + throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`); +}, function (context, i) { + const MIN_CHARS_IN_BLOCK = 3; + const MAX_CHARS_IN_BLOCK = 1000; + const fnArray = context.fnArray, + argsArray = context.argsArray; + const curr = context.iCurr; + const iFirstBeginText = curr - 4; + const iFirstSetFont = curr - 3; + const iFirstSetTextMatrix = curr - 2; + const iFirstShowText = curr - 1; + const iFirstEndText = curr; + const firstSetFontArg0 = argsArray[iFirstSetFont][0]; + const firstSetFontArg1 = argsArray[iFirstSetFont][1]; + let count = Math.min(Math.floor((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK); + if (count < MIN_CHARS_IN_BLOCK) { + return i - (i - iFirstBeginText) % 5; + } + let iFirst = iFirstBeginText; + if (iFirstBeginText >= 4 && fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] && fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] && fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] && fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] && argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 && argsArray[iFirstBeginText - 4][1] === firstSetFontArg1) { + count++; + iFirst -= 5; + } + let iEndText = iFirst + 4; + for (let q = 1; q < count; q++) { + fnArray.splice(iEndText, 3); + argsArray.splice(iEndText, 3); + iEndText += 2; + } + return iEndText + 1; +}); +class NullOptimizer { + constructor(queue) { + this.queue = queue; + } + _optimize() {} + push(fn, args) { + this.queue.fnArray.push(fn); + this.queue.argsArray.push(args); + this._optimize(); + } + flush() {} + reset() {} +} +class QueueOptimizer extends NullOptimizer { + constructor(queue) { + super(queue); + this.state = null; + this.context = { + iCurr: 0, + fnArray: queue.fnArray, + argsArray: queue.argsArray, + isOffscreenCanvasSupported: false + }; + this.match = null; + this.lastProcessed = 0; + } + set isOffscreenCanvasSupported(value) { + this.context.isOffscreenCanvasSupported = value; + } + _optimize() { + const fnArray = this.queue.fnArray; + let i = this.lastProcessed, + ii = fnArray.length; + let state = this.state; + let match = this.match; + if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) { + this.lastProcessed = ii; + return; + } + const context = this.context; + while (i < ii) { + if (match) { + const iterate = (0, match.iterateFn)(context, i); + if (iterate) { + i++; + continue; + } + i = (0, match.processFn)(context, i + 1); + ii = fnArray.length; + match = null; + state = null; + if (i >= ii) { + break; + } + } + state = (state || InitialState)[fnArray[i]]; + if (!state || Array.isArray(state)) { + i++; + continue; + } + context.iCurr = i; + i++; + if (state.checkFn && !(0, state.checkFn)(context)) { + state = null; + continue; + } + match = state; + state = null; + } + this.state = state; + this.match = match; + this.lastProcessed = i; + } + flush() { + while (this.match) { + const length = this.queue.fnArray.length; + this.lastProcessed = (0, this.match.processFn)(this.context, length); + this.match = null; + this.state = null; + this._optimize(); + } + } + reset() { + this.state = null; + this.match = null; + this.lastProcessed = 0; + } +} +class OperatorList { + static CHUNK_SIZE = 1000; + static CHUNK_SIZE_ABOUT = this.CHUNK_SIZE - 5; + constructor(intent = 0, streamSink) { + this._streamSink = streamSink; + this.fnArray = []; + this.argsArray = []; + if (streamSink && !(intent & _util.RenderingIntentFlag.OPLIST)) { + this.optimizer = new QueueOptimizer(this); + } else { + this.optimizer = new NullOptimizer(this); + } + this.dependencies = new Set(); + this._totalLength = 0; + this.weight = 0; + this._resolved = streamSink ? null : Promise.resolve(); + } + set isOffscreenCanvasSupported(value) { + this.optimizer.isOffscreenCanvasSupported = value; + } + get length() { + return this.argsArray.length; + } + get ready() { + return this._resolved || this._streamSink.ready; + } + get totalLength() { + return this._totalLength + this.length; + } + addOp(fn, args) { + this.optimizer.push(fn, args); + this.weight++; + if (this._streamSink) { + if (this.weight >= OperatorList.CHUNK_SIZE) { + this.flush(); + } else if (this.weight >= OperatorList.CHUNK_SIZE_ABOUT && (fn === _util.OPS.restore || fn === _util.OPS.endText)) { + this.flush(); + } + } + } + addImageOps(fn, args, optionalContent) { + if (optionalContent !== undefined) { + this.addOp(_util.OPS.beginMarkedContentProps, ["OC", optionalContent]); + } + this.addOp(fn, args); + if (optionalContent !== undefined) { + this.addOp(_util.OPS.endMarkedContent, []); + } + } + addDependency(dependency) { + if (this.dependencies.has(dependency)) { + return; + } + this.dependencies.add(dependency); + this.addOp(_util.OPS.dependency, [dependency]); + } + addDependencies(dependencies) { + for (const dependency of dependencies) { + this.addDependency(dependency); + } + } + addOpList(opList) { + if (!(opList instanceof OperatorList)) { + (0, _util.warn)('addOpList - ignoring invalid "opList" parameter.'); + return; + } + for (const dependency of opList.dependencies) { + this.dependencies.add(dependency); + } + for (let i = 0, ii = opList.length; i < ii; i++) { + this.addOp(opList.fnArray[i], opList.argsArray[i]); + } + } + getIR() { + return { + fnArray: this.fnArray, + argsArray: this.argsArray, + length: this.length + }; + } + get _transfers() { + const transfers = []; + const { + fnArray, + argsArray, + length + } = this; + for (let i = 0; i < length; i++) { + switch (fnArray[i]) { + case _util.OPS.paintInlineImageXObject: + case _util.OPS.paintInlineImageXObjectGroup: + case _util.OPS.paintImageMaskXObject: + const arg = argsArray[i][0]; + if (!arg.cached && arg.data?.buffer instanceof ArrayBuffer) { + transfers.push(arg.data.buffer); + } + break; + } + } + return transfers; + } + flush(lastChunk = false, separateAnnots = null) { + this.optimizer.flush(); + const length = this.length; + this._totalLength += length; + this._streamSink.enqueue({ + fnArray: this.fnArray, + argsArray: this.argsArray, + lastChunk, + separateAnnots, + length + }, 1, this._transfers); + this.dependencies.clear(); + this.fnArray.length = 0; + this.argsArray.length = 0; + this.weight = 0; + this.optimizer.reset(); + } +} +exports.OperatorList = OperatorList; + +/***/ }), +/* 65 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFImage = void 0; +var _util = __w_pdfjs_require__(2); +var _image_utils = __w_pdfjs_require__(28); +var _base_stream = __w_pdfjs_require__(5); +var _colorspace = __w_pdfjs_require__(12); +var _decode_stream = __w_pdfjs_require__(18); +var _image_resizer = __w_pdfjs_require__(62); +var _jpeg_stream = __w_pdfjs_require__(26); +var _jpx = __w_pdfjs_require__(30); +var _primitives = __w_pdfjs_require__(4); +function decodeAndClamp(value, addend, coefficient, max) { + value = addend + value * coefficient; + if (value < 0) { + value = 0; + } else if (value > max) { + value = max; + } + return value; +} +function resizeImageMask(src, bpc, w1, h1, w2, h2) { + const length = w2 * h2; + let dest; + if (bpc <= 8) { + dest = new Uint8Array(length); + } else if (bpc <= 16) { + dest = new Uint16Array(length); + } else { + dest = new Uint32Array(length); + } + const xRatio = w1 / w2; + const yRatio = h1 / h2; + let i, + j, + py, + newIndex = 0, + oldIndex; + const xScaled = new Uint16Array(w2); + const w1Scanline = w1; + for (i = 0; i < w2; i++) { + xScaled[i] = Math.floor(i * xRatio); + } + for (i = 0; i < h2; i++) { + py = Math.floor(i * yRatio) * w1Scanline; + for (j = 0; j < w2; j++) { + oldIndex = py + xScaled[j]; + dest[newIndex++] = src[oldIndex]; + } + } + return dest; +} +class PDFImage { + constructor({ + xref, + res, + image, + isInline = false, + smask = null, + mask = null, + isMask = false, + pdfFunctionFactory, + localColorSpaceCache + }) { + this.image = image; + const dict = image.dict; + const filter = dict.get("F", "Filter"); + let filterName; + if (filter instanceof _primitives.Name) { + filterName = filter.name; + } else if (Array.isArray(filter)) { + const filterZero = xref.fetchIfRef(filter[0]); + if (filterZero instanceof _primitives.Name) { + filterName = filterZero.name; + } + } + switch (filterName) { + case "JPXDecode": + const jpxImage = new _jpx.JpxImage(); + jpxImage.parseImageProperties(image.stream); + image.stream.reset(); + image.width = jpxImage.width; + image.height = jpxImage.height; + image.bitsPerComponent = jpxImage.bitsPerComponent; + image.numComps = jpxImage.componentsCount; + break; + case "JBIG2Decode": + image.bitsPerComponent = 1; + image.numComps = 1; + break; + } + let width = dict.get("W", "Width"); + let height = dict.get("H", "Height"); + if (Number.isInteger(image.width) && image.width > 0 && Number.isInteger(image.height) && image.height > 0 && (image.width !== width || image.height !== height)) { + (0, _util.warn)("PDFImage - using the Width/Height of the image data, " + "rather than the image dictionary."); + width = image.width; + height = image.height; + } + if (width < 1 || height < 1) { + throw new _util.FormatError(`Invalid image width: ${width} or height: ${height}`); + } + this.width = width; + this.height = height; + this.interpolate = dict.get("I", "Interpolate"); + this.imageMask = dict.get("IM", "ImageMask") || false; + this.matte = dict.get("Matte") || false; + let bitsPerComponent = image.bitsPerComponent; + if (!bitsPerComponent) { + bitsPerComponent = dict.get("BPC", "BitsPerComponent"); + if (!bitsPerComponent) { + if (this.imageMask) { + bitsPerComponent = 1; + } else { + throw new _util.FormatError(`Bits per component missing in image: ${this.imageMask}`); + } + } + } + this.bpc = bitsPerComponent; + if (!this.imageMask) { + let colorSpace = dict.getRaw("CS") || dict.getRaw("ColorSpace"); + if (!colorSpace) { + (0, _util.info)("JPX images (which do not require color spaces)"); + switch (image.numComps) { + case 1: + colorSpace = _primitives.Name.get("DeviceGray"); + break; + case 3: + colorSpace = _primitives.Name.get("DeviceRGB"); + break; + case 4: + colorSpace = _primitives.Name.get("DeviceCMYK"); + break; + default: + throw new Error(`JPX images with ${image.numComps} color components not supported.`); + } + } + this.colorSpace = _colorspace.ColorSpace.parse({ + cs: colorSpace, + xref, + resources: isInline ? res : null, + pdfFunctionFactory, + localColorSpaceCache + }); + this.numComps = this.colorSpace.numComps; + } + this.decode = dict.getArray("D", "Decode"); + this.needsDecode = false; + if (this.decode && (this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent) || isMask && !_colorspace.ColorSpace.isDefaultDecode(this.decode, 1))) { + this.needsDecode = true; + const max = (1 << bitsPerComponent) - 1; + this.decodeCoefficients = []; + this.decodeAddends = []; + const isIndexed = this.colorSpace?.name === "Indexed"; + for (let i = 0, j = 0; i < this.decode.length; i += 2, ++j) { + const dmin = this.decode[i]; + const dmax = this.decode[i + 1]; + this.decodeCoefficients[j] = isIndexed ? (dmax - dmin) / max : dmax - dmin; + this.decodeAddends[j] = isIndexed ? dmin : max * dmin; + } + } + if (smask) { + this.smask = new PDFImage({ + xref, + res, + image: smask, + isInline, + pdfFunctionFactory, + localColorSpaceCache + }); + } else if (mask) { + if (mask instanceof _base_stream.BaseStream) { + const maskDict = mask.dict, + imageMask = maskDict.get("IM", "ImageMask"); + if (!imageMask) { + (0, _util.warn)("Ignoring /Mask in image without /ImageMask."); + } else { + this.mask = new PDFImage({ + xref, + res, + image: mask, + isInline, + isMask: true, + pdfFunctionFactory, + localColorSpaceCache + }); + } + } else { + this.mask = mask; + } + } + } + static async buildImage({ + xref, + res, + image, + isInline = false, + pdfFunctionFactory, + localColorSpaceCache + }) { + const imageData = image; + let smaskData = null; + let maskData = null; + const smask = image.dict.get("SMask"); + const mask = image.dict.get("Mask"); + if (smask) { + if (smask instanceof _base_stream.BaseStream) { + smaskData = smask; + } else { + (0, _util.warn)("Unsupported /SMask format."); + } + } else if (mask) { + if (mask instanceof _base_stream.BaseStream || Array.isArray(mask)) { + maskData = mask; + } else { + (0, _util.warn)("Unsupported /Mask format."); + } + } + return new PDFImage({ + xref, + res, + image: imageData, + isInline, + smask: smaskData, + mask: maskData, + pdfFunctionFactory, + localColorSpaceCache + }); + } + static createRawMask({ + imgArray, + width, + height, + imageIsFromDecodeStream, + inverseDecode, + interpolate + }) { + const computedLength = (width + 7 >> 3) * height; + const actualLength = imgArray.byteLength; + const haveFullData = computedLength === actualLength; + let data, i; + if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) { + data = imgArray; + } else if (!inverseDecode) { + data = new Uint8Array(imgArray); + } else { + data = new Uint8Array(computedLength); + data.set(imgArray); + data.fill(0xff, actualLength); + } + if (inverseDecode) { + for (i = 0; i < actualLength; i++) { + data[i] ^= 0xff; + } + } + return { + data, + width, + height, + interpolate + }; + } + static async createMask({ + imgArray, + width, + height, + imageIsFromDecodeStream, + inverseDecode, + interpolate, + isOffscreenCanvasSupported = false + }) { + const isSingleOpaquePixel = width === 1 && height === 1 && inverseDecode === (imgArray.length === 0 || !!(imgArray[0] & 128)); + if (isSingleOpaquePixel) { + return { + isSingleOpaquePixel + }; + } + if (isOffscreenCanvasSupported) { + if (_image_resizer.ImageResizer.needsToBeResized(width, height)) { + const data = new Uint8ClampedArray(width * height * 4); + (0, _image_utils.convertBlackAndWhiteToRGBA)({ + src: imgArray, + dest: data, + width, + height, + nonBlackColor: 0, + inverseDecode + }); + return _image_resizer.ImageResizer.createImage({ + kind: _util.ImageKind.RGBA_32BPP, + data, + width, + height, + interpolate + }); + } + const canvas = new OffscreenCanvas(width, height); + const ctx = canvas.getContext("2d"); + const imgData = ctx.createImageData(width, height); + (0, _image_utils.convertBlackAndWhiteToRGBA)({ + src: imgArray, + dest: imgData.data, + width, + height, + nonBlackColor: 0, + inverseDecode + }); + ctx.putImageData(imgData, 0, 0); + const bitmap = canvas.transferToImageBitmap(); + return { + data: null, + width, + height, + interpolate, + bitmap + }; + } + return this.createRawMask({ + imgArray, + width, + height, + inverseDecode, + imageIsFromDecodeStream, + interpolate + }); + } + get drawWidth() { + return Math.max(this.width, this.smask?.width || 0, this.mask?.width || 0); + } + get drawHeight() { + return Math.max(this.height, this.smask?.height || 0, this.mask?.height || 0); + } + decodeBuffer(buffer) { + const bpc = this.bpc; + const numComps = this.numComps; + const decodeAddends = this.decodeAddends; + const decodeCoefficients = this.decodeCoefficients; + const max = (1 << bpc) - 1; + let i, ii; + if (bpc === 1) { + for (i = 0, ii = buffer.length; i < ii; i++) { + buffer[i] = +!buffer[i]; + } + return; + } + let index = 0; + for (i = 0, ii = this.width * this.height; i < ii; i++) { + for (let j = 0; j < numComps; j++) { + buffer[index] = decodeAndClamp(buffer[index], decodeAddends[j], decodeCoefficients[j], max); + index++; + } + } + } + getComponents(buffer) { + const bpc = this.bpc; + if (bpc === 8) { + return buffer; + } + const width = this.width; + const height = this.height; + const numComps = this.numComps; + const length = width * height * numComps; + let bufferPos = 0; + let output; + if (bpc <= 8) { + output = new Uint8Array(length); + } else if (bpc <= 16) { + output = new Uint16Array(length); + } else { + output = new Uint32Array(length); + } + const rowComps = width * numComps; + const max = (1 << bpc) - 1; + let i = 0, + ii, + buf; + if (bpc === 1) { + let mask, loop1End, loop2End; + for (let j = 0; j < height; j++) { + loop1End = i + (rowComps & ~7); + loop2End = i + rowComps; + while (i < loop1End) { + buf = buffer[bufferPos++]; + output[i] = buf >> 7 & 1; + output[i + 1] = buf >> 6 & 1; + output[i + 2] = buf >> 5 & 1; + output[i + 3] = buf >> 4 & 1; + output[i + 4] = buf >> 3 & 1; + output[i + 5] = buf >> 2 & 1; + output[i + 6] = buf >> 1 & 1; + output[i + 7] = buf & 1; + i += 8; + } + if (i < loop2End) { + buf = buffer[bufferPos++]; + mask = 128; + while (i < loop2End) { + output[i++] = +!!(buf & mask); + mask >>= 1; + } + } + } + } else { + let bits = 0; + buf = 0; + for (i = 0, ii = length; i < ii; ++i) { + if (i % rowComps === 0) { + buf = 0; + bits = 0; + } + while (bits < bpc) { + buf = buf << 8 | buffer[bufferPos++]; + bits += 8; + } + const remainingBits = bits - bpc; + let value = buf >> remainingBits; + if (value < 0) { + value = 0; + } else if (value > max) { + value = max; + } + output[i] = value; + buf &= (1 << remainingBits) - 1; + bits = remainingBits; + } + } + return output; + } + fillOpacity(rgbaBuf, width, height, actualHeight, image) { + const smask = this.smask; + const mask = this.mask; + let alphaBuf, sw, sh, i, ii, j; + if (smask) { + sw = smask.width; + sh = smask.height; + alphaBuf = new Uint8ClampedArray(sw * sh); + smask.fillGrayBuffer(alphaBuf); + if (sw !== width || sh !== height) { + alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height); + } + } else if (mask) { + if (mask instanceof PDFImage) { + sw = mask.width; + sh = mask.height; + alphaBuf = new Uint8ClampedArray(sw * sh); + mask.numComps = 1; + mask.fillGrayBuffer(alphaBuf); + for (i = 0, ii = sw * sh; i < ii; ++i) { + alphaBuf[i] = 255 - alphaBuf[i]; + } + if (sw !== width || sh !== height) { + alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height); + } + } else if (Array.isArray(mask)) { + alphaBuf = new Uint8ClampedArray(width * height); + const numComps = this.numComps; + for (i = 0, ii = width * height; i < ii; ++i) { + let opacity = 0; + const imageOffset = i * numComps; + for (j = 0; j < numComps; ++j) { + const color = image[imageOffset + j]; + const maskOffset = j * 2; + if (color < mask[maskOffset] || color > mask[maskOffset + 1]) { + opacity = 255; + break; + } + } + alphaBuf[i] = opacity; + } + } else { + throw new _util.FormatError("Unknown mask format."); + } + } + if (alphaBuf) { + for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) { + rgbaBuf[j] = alphaBuf[i]; + } + } else { + for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) { + rgbaBuf[j] = 255; + } + } + } + undoPreblend(buffer, width, height) { + const matte = this.smask?.matte; + if (!matte) { + return; + } + const matteRgb = this.colorSpace.getRgb(matte, 0); + const matteR = matteRgb[0]; + const matteG = matteRgb[1]; + const matteB = matteRgb[2]; + const length = width * height * 4; + for (let i = 0; i < length; i += 4) { + const alpha = buffer[i + 3]; + if (alpha === 0) { + buffer[i] = 255; + buffer[i + 1] = 255; + buffer[i + 2] = 255; + continue; + } + const k = 255 / alpha; + buffer[i] = (buffer[i] - matteR) * k + matteR; + buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG; + buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB; + } + } + async createImageData(forceRGBA = false, isOffscreenCanvasSupported = false) { + const drawWidth = this.drawWidth; + const drawHeight = this.drawHeight; + const imgData = { + width: drawWidth, + height: drawHeight, + interpolate: this.interpolate, + kind: 0, + data: null + }; + const numComps = this.numComps; + const originalWidth = this.width; + const originalHeight = this.height; + const bpc = this.bpc; + const rowBytes = originalWidth * numComps * bpc + 7 >> 3; + const mustBeResized = isOffscreenCanvasSupported && _image_resizer.ImageResizer.needsToBeResized(drawWidth, drawHeight); + if (!forceRGBA) { + let kind; + if (this.colorSpace.name === "DeviceGray" && bpc === 1) { + kind = _util.ImageKind.GRAYSCALE_1BPP; + } else if (this.colorSpace.name === "DeviceRGB" && bpc === 8 && !this.needsDecode) { + kind = _util.ImageKind.RGB_24BPP; + } + if (kind && !this.smask && !this.mask && drawWidth === originalWidth && drawHeight === originalHeight) { + const data = this.getImageBytes(originalHeight * rowBytes, {}); + if (isOffscreenCanvasSupported) { + if (mustBeResized) { + return _image_resizer.ImageResizer.createImage({ + data, + kind, + width: drawWidth, + height: drawHeight, + interpolate: this.interpolate + }, this.needsDecode); + } + return this.createBitmap(kind, originalWidth, originalHeight, data); + } + imgData.kind = kind; + imgData.data = data; + if (this.needsDecode) { + (0, _util.assert)(kind === _util.ImageKind.GRAYSCALE_1BPP, "PDFImage.createImageData: The image must be grayscale."); + const buffer = imgData.data; + for (let i = 0, ii = buffer.length; i < ii; i++) { + buffer[i] ^= 0xff; + } + } + return imgData; + } + if (this.image instanceof _jpeg_stream.JpegStream && !this.smask && !this.mask && !this.needsDecode) { + let imageLength = originalHeight * rowBytes; + if (isOffscreenCanvasSupported && !mustBeResized) { + let isHandled = false; + switch (this.colorSpace.name) { + case "DeviceGray": + imageLength *= 4; + isHandled = true; + break; + case "DeviceRGB": + imageLength = imageLength / 3 * 4; + isHandled = true; + break; + case "DeviceCMYK": + isHandled = true; + break; + } + if (isHandled) { + const rgba = this.getImageBytes(imageLength, { + drawWidth, + drawHeight, + forceRGBA: true + }); + return this.createBitmap(_util.ImageKind.RGBA_32BPP, drawWidth, drawHeight, rgba); + } + } else { + switch (this.colorSpace.name) { + case "DeviceGray": + imageLength *= 3; + case "DeviceRGB": + case "DeviceCMYK": + imgData.kind = _util.ImageKind.RGB_24BPP; + imgData.data = this.getImageBytes(imageLength, { + drawWidth, + drawHeight, + forceRGB: true + }); + if (mustBeResized) { + return _image_resizer.ImageResizer.createImage(imgData); + } + return imgData; + } + } + } + } + const imgArray = this.getImageBytes(originalHeight * rowBytes, { + internal: true + }); + const actualHeight = 0 | imgArray.length / rowBytes * drawHeight / originalHeight; + const comps = this.getComponents(imgArray); + let alpha01, maybeUndoPreblend; + let canvas, ctx, canvasImgData, data; + if (isOffscreenCanvasSupported && !mustBeResized) { + canvas = new OffscreenCanvas(drawWidth, drawHeight); + ctx = canvas.getContext("2d"); + canvasImgData = ctx.createImageData(drawWidth, drawHeight); + data = canvasImgData.data; + } + imgData.kind = _util.ImageKind.RGBA_32BPP; + if (!forceRGBA && !this.smask && !this.mask) { + if (!isOffscreenCanvasSupported || mustBeResized) { + imgData.kind = _util.ImageKind.RGB_24BPP; + data = new Uint8ClampedArray(drawWidth * drawHeight * 3); + alpha01 = 0; + } else { + const arr = new Uint32Array(data.buffer); + arr.fill(_util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff); + alpha01 = 1; + } + maybeUndoPreblend = false; + } else { + if (!isOffscreenCanvasSupported || mustBeResized) { + data = new Uint8ClampedArray(drawWidth * drawHeight * 4); + } + alpha01 = 1; + maybeUndoPreblend = true; + this.fillOpacity(data, drawWidth, drawHeight, actualHeight, comps); + } + if (this.needsDecode) { + this.decodeBuffer(comps); + } + this.colorSpace.fillRgb(data, originalWidth, originalHeight, drawWidth, drawHeight, actualHeight, bpc, comps, alpha01); + if (maybeUndoPreblend) { + this.undoPreblend(data, drawWidth, actualHeight); + } + if (isOffscreenCanvasSupported && !mustBeResized) { + ctx.putImageData(canvasImgData, 0, 0); + const bitmap = canvas.transferToImageBitmap(); + return { + data: null, + width: drawWidth, + height: drawHeight, + bitmap, + interpolate: this.interpolate + }; + } + imgData.data = data; + if (mustBeResized) { + return _image_resizer.ImageResizer.createImage(imgData); + } + return imgData; + } + fillGrayBuffer(buffer) { + const numComps = this.numComps; + if (numComps !== 1) { + throw new _util.FormatError(`Reading gray scale from a color image: ${numComps}`); + } + const width = this.width; + const height = this.height; + const bpc = this.bpc; + const rowBytes = width * numComps * bpc + 7 >> 3; + const imgArray = this.getImageBytes(height * rowBytes, { + internal: true + }); + const comps = this.getComponents(imgArray); + let i, length; + if (bpc === 1) { + length = width * height; + if (this.needsDecode) { + for (i = 0; i < length; ++i) { + buffer[i] = comps[i] - 1 & 255; + } + } else { + for (i = 0; i < length; ++i) { + buffer[i] = -comps[i] & 255; + } + } + return; + } + if (this.needsDecode) { + this.decodeBuffer(comps); + } + length = width * height; + const scale = 255 / ((1 << bpc) - 1); + for (i = 0; i < length; ++i) { + buffer[i] = scale * comps[i]; + } + } + createBitmap(kind, width, height, src) { + const canvas = new OffscreenCanvas(width, height); + const ctx = canvas.getContext("2d"); + let imgData; + if (kind === _util.ImageKind.RGBA_32BPP) { + imgData = new ImageData(src, width, height); + } else { + imgData = ctx.createImageData(width, height); + (0, _image_utils.convertToRGBA)({ + kind, + src, + dest: new Uint32Array(imgData.data.buffer), + width, + height, + inverseDecode: this.needsDecode + }); + } + ctx.putImageData(imgData, 0, 0); + const bitmap = canvas.transferToImageBitmap(); + return { + data: null, + width, + height, + bitmap, + interpolate: this.interpolate + }; + } + getImageBytes(length, { + drawWidth, + drawHeight, + forceRGBA = false, + forceRGB = false, + internal = false + }) { + this.image.reset(); + this.image.drawWidth = drawWidth || this.width; + this.image.drawHeight = drawHeight || this.height; + this.image.forceRGBA = !!forceRGBA; + this.image.forceRGB = !!forceRGB; + const imageBytes = this.image.getBytes(length); + if (internal || this.image instanceof _decode_stream.DecodeStream) { + return imageBytes; + } + (0, _util.assert)(imageBytes instanceof Uint8Array, 'PDFImage.getImageBytes: Unsupported "imageBytes" type.'); + return new Uint8Array(imageBytes); + } +} +exports.PDFImage = PDFImage; + +/***/ }), +/* 66 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.incrementalUpdate = incrementalUpdate; +exports.writeDict = writeDict; +exports.writeObject = writeObject; +var _util = __w_pdfjs_require__(2); +var _primitives = __w_pdfjs_require__(4); +var _core_utils = __w_pdfjs_require__(3); +var _xml_parser = __w_pdfjs_require__(67); +var _base_stream = __w_pdfjs_require__(5); +var _crypto = __w_pdfjs_require__(68); +async function writeObject(ref, obj, buffer, transform) { + buffer.push(`${ref.num} ${ref.gen} obj\n`); + if (obj instanceof _primitives.Dict) { + await writeDict(obj, buffer, transform); + } else if (obj instanceof _base_stream.BaseStream) { + await writeStream(obj, buffer, transform); + } + buffer.push("\nendobj\n"); +} +async function writeDict(dict, buffer, transform) { + buffer.push("<<"); + for (const key of dict.getKeys()) { + buffer.push(` /${(0, _core_utils.escapePDFName)(key)} `); + await writeValue(dict.getRaw(key), buffer, transform); + } + buffer.push(">>"); +} +async function writeStream(stream, buffer, transform) { + let string = stream.getString(); + if (transform !== null) { + string = transform.encryptString(string); + } + const { + dict + } = stream; + if (typeof CompressionStream === "undefined") { + dict.set("Length", string.length); + await writeDict(dict, buffer, transform); + buffer.push(" stream\n", string, "\nendstream"); + return; + } + const filter = await dict.getAsync("Filter"); + const params = await dict.getAsync("DecodeParms"); + const filterZero = Array.isArray(filter) ? await dict.xref.fetchIfRefAsync(filter[0]) : filter; + const isFilterZeroFlateDecode = (0, _primitives.isName)(filterZero, "FlateDecode"); + const MIN_LENGTH_FOR_COMPRESSING = 256; + if (string.length >= MIN_LENGTH_FOR_COMPRESSING || isFilterZeroFlateDecode) { + try { + const byteArray = (0, _util.stringToBytes)(string); + const cs = new CompressionStream("deflate"); + const writer = cs.writable.getWriter(); + writer.write(byteArray); + writer.close(); + const buf = await new Response(cs.readable).arrayBuffer(); + string = (0, _util.bytesToString)(new Uint8Array(buf)); + let newFilter, newParams; + if (!filter) { + newFilter = _primitives.Name.get("FlateDecode"); + } else if (!isFilterZeroFlateDecode) { + newFilter = Array.isArray(filter) ? [_primitives.Name.get("FlateDecode"), ...filter] : [_primitives.Name.get("FlateDecode"), filter]; + if (params) { + newParams = Array.isArray(params) ? [null, ...params] : [null, params]; + } + } + if (newFilter) { + dict.set("Filter", newFilter); + } + if (newParams) { + dict.set("DecodeParms", newParams); + } + } catch (ex) { + (0, _util.info)(`writeStream - cannot compress data: "${ex}".`); + } + } + dict.set("Length", string.length); + await writeDict(dict, buffer, transform); + buffer.push(" stream\n", string, "\nendstream"); +} +async function writeArray(array, buffer, transform) { + buffer.push("["); + let first = true; + for (const val of array) { + if (!first) { + buffer.push(" "); + } else { + first = false; + } + await writeValue(val, buffer, transform); + } + buffer.push("]"); +} +async function writeValue(value, buffer, transform) { + if (value instanceof _primitives.Name) { + buffer.push(`/${(0, _core_utils.escapePDFName)(value.name)}`); + } else if (value instanceof _primitives.Ref) { + buffer.push(`${value.num} ${value.gen} R`); + } else if (Array.isArray(value)) { + await writeArray(value, buffer, transform); + } else if (typeof value === "string") { + if (transform !== null) { + value = transform.encryptString(value); + } + buffer.push(`(${(0, _core_utils.escapeString)(value)})`); + } else if (typeof value === "number") { + buffer.push((0, _core_utils.numberToString)(value)); + } else if (typeof value === "boolean") { + buffer.push(value.toString()); + } else if (value instanceof _primitives.Dict) { + await writeDict(value, buffer, transform); + } else if (value instanceof _base_stream.BaseStream) { + await writeStream(value, buffer, transform); + } else if (value === null) { + buffer.push("null"); + } else { + (0, _util.warn)(`Unhandled value in writer: ${typeof value}, please file a bug.`); + } +} +function writeInt(number, size, offset, buffer) { + for (let i = size + offset - 1; i > offset - 1; i--) { + buffer[i] = number & 0xff; + number >>= 8; + } + return offset + size; +} +function writeString(string, offset, buffer) { + for (let i = 0, len = string.length; i < len; i++) { + buffer[offset + i] = string.charCodeAt(i) & 0xff; + } +} +function computeMD5(filesize, xrefInfo) { + const time = Math.floor(Date.now() / 1000); + const filename = xrefInfo.filename || ""; + const md5Buffer = [time.toString(), filename, filesize.toString()]; + let md5BufferLen = md5Buffer.reduce((a, str) => a + str.length, 0); + for (const value of Object.values(xrefInfo.info)) { + md5Buffer.push(value); + md5BufferLen += value.length; + } + const array = new Uint8Array(md5BufferLen); + let offset = 0; + for (const str of md5Buffer) { + writeString(str, offset, array); + offset += str.length; + } + return (0, _util.bytesToString)((0, _crypto.calculateMD5)(array)); +} +function writeXFADataForAcroform(str, newRefs) { + const xml = new _xml_parser.SimpleXMLParser({ + hasAttributes: true + }).parseFromString(str); + for (const { + xfa + } of newRefs) { + if (!xfa) { + continue; + } + const { + path, + value + } = xfa; + if (!path) { + continue; + } + const nodePath = (0, _core_utils.parseXFAPath)(path); + let node = xml.documentElement.searchNode(nodePath, 0); + if (!node && nodePath.length > 1) { + node = xml.documentElement.searchNode([nodePath.at(-1)], 0); + } + if (node) { + if (Array.isArray(value)) { + node.childNodes = value.map(val => new _xml_parser.SimpleDOMNode("value", val)); + } else { + node.childNodes = [new _xml_parser.SimpleDOMNode("#text", value)]; + } + } else { + (0, _util.warn)(`Node not found for path: ${path}`); + } + } + const buffer = []; + xml.documentElement.dump(buffer); + return buffer.join(""); +} +async function updateAcroform({ + xref, + acroForm, + acroFormRef, + hasXfa, + hasXfaDatasetsEntry, + xfaDatasetsRef, + needAppearances, + newRefs +}) { + if (hasXfa && !hasXfaDatasetsEntry && !xfaDatasetsRef) { + (0, _util.warn)("XFA - Cannot save it"); + } + if (!needAppearances && (!hasXfa || !xfaDatasetsRef)) { + return; + } + const dict = new _primitives.Dict(xref); + for (const key of acroForm.getKeys()) { + dict.set(key, acroForm.getRaw(key)); + } + if (hasXfa && !hasXfaDatasetsEntry) { + const newXfa = acroForm.get("XFA").slice(); + newXfa.splice(2, 0, "datasets"); + newXfa.splice(3, 0, xfaDatasetsRef); + dict.set("XFA", newXfa); + } + if (needAppearances) { + dict.set("NeedAppearances", true); + } + const encrypt = xref.encrypt; + let transform = null; + if (encrypt) { + transform = encrypt.createCipherTransform(acroFormRef.num, acroFormRef.gen); + } + const buffer = []; + await writeObject(acroFormRef, dict, buffer, transform); + newRefs.push({ + ref: acroFormRef, + data: buffer.join("") + }); +} +function updateXFA({ + xfaData, + xfaDatasetsRef, + newRefs, + xref +}) { + if (xfaData === null) { + const datasets = xref.fetchIfRef(xfaDatasetsRef); + xfaData = writeXFADataForAcroform(datasets.getString(), newRefs); + } + const encrypt = xref.encrypt; + if (encrypt) { + const transform = encrypt.createCipherTransform(xfaDatasetsRef.num, xfaDatasetsRef.gen); + xfaData = transform.encryptString(xfaData); + } + const data = `${xfaDatasetsRef.num} ${xfaDatasetsRef.gen} obj\n` + `<< /Type /EmbeddedFile /Length ${xfaData.length}>>\nstream\n` + xfaData + "\nendstream\nendobj\n"; + newRefs.push({ + ref: xfaDatasetsRef, + data + }); +} +async function incrementalUpdate({ + originalData, + xrefInfo, + newRefs, + xref = null, + hasXfa = false, + xfaDatasetsRef = null, + hasXfaDatasetsEntry = false, + needAppearances, + acroFormRef = null, + acroForm = null, + xfaData = null +}) { + await updateAcroform({ + xref, + acroForm, + acroFormRef, + hasXfa, + hasXfaDatasetsEntry, + xfaDatasetsRef, + needAppearances, + newRefs + }); + if (hasXfa) { + updateXFA({ + xfaData, + xfaDatasetsRef, + newRefs, + xref + }); + } + const newXref = new _primitives.Dict(null); + const refForXrefTable = xrefInfo.newRef; + let buffer, baseOffset; + const lastByte = originalData.at(-1); + if (lastByte === 0x0a || lastByte === 0x0d) { + buffer = []; + baseOffset = originalData.length; + } else { + buffer = ["\n"]; + baseOffset = originalData.length + 1; + } + newXref.set("Size", refForXrefTable.num + 1); + newXref.set("Prev", xrefInfo.startXRef); + newXref.set("Type", _primitives.Name.get("XRef")); + if (xrefInfo.rootRef !== null) { + newXref.set("Root", xrefInfo.rootRef); + } + if (xrefInfo.infoRef !== null) { + newXref.set("Info", xrefInfo.infoRef); + } + if (xrefInfo.encryptRef !== null) { + newXref.set("Encrypt", xrefInfo.encryptRef); + } + newRefs.push({ + ref: refForXrefTable, + data: "" + }); + newRefs = newRefs.sort((a, b) => { + return a.ref.num - b.ref.num; + }); + const xrefTableData = [[0, 1, 0xffff]]; + const indexes = [0, 1]; + let maxOffset = 0; + for (const { + ref, + data + } of newRefs) { + maxOffset = Math.max(maxOffset, baseOffset); + xrefTableData.push([1, baseOffset, Math.min(ref.gen, 0xffff)]); + baseOffset += data.length; + indexes.push(ref.num, 1); + buffer.push(data); + } + newXref.set("Index", indexes); + if (Array.isArray(xrefInfo.fileIds) && xrefInfo.fileIds.length > 0) { + const md5 = computeMD5(baseOffset, xrefInfo); + newXref.set("ID", [xrefInfo.fileIds[0], md5]); + } + const offsetSize = Math.ceil(Math.log2(maxOffset) / 8); + const sizes = [1, offsetSize, 2]; + const structSize = sizes[0] + sizes[1] + sizes[2]; + const tableLength = structSize * xrefTableData.length; + newXref.set("W", sizes); + newXref.set("Length", tableLength); + buffer.push(`${refForXrefTable.num} ${refForXrefTable.gen} obj\n`); + await writeDict(newXref, buffer, null); + buffer.push(" stream\n"); + const bufferLen = buffer.reduce((a, str) => a + str.length, 0); + const footer = `\nendstream\nendobj\nstartxref\n${baseOffset}\n%%EOF\n`; + const array = new Uint8Array(originalData.length + bufferLen + tableLength + footer.length); + array.set(originalData); + let offset = originalData.length; + for (const str of buffer) { + writeString(str, offset, array); + offset += str.length; + } + for (const [type, objOffset, gen] of xrefTableData) { + offset = writeInt(type, sizes[0], offset, array); + offset = writeInt(objOffset, sizes[1], offset, array); + offset = writeInt(gen, sizes[2], offset, array); + } + writeString(footer, offset, array); + return array; +} + +/***/ }), +/* 67 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XMLParserErrorCode = exports.XMLParserBase = exports.SimpleXMLParser = exports.SimpleDOMNode = void 0; +var _core_utils = __w_pdfjs_require__(3); +const XMLParserErrorCode = { + NoError: 0, + EndOfDocument: -1, + UnterminatedCdat: -2, + UnterminatedXmlDeclaration: -3, + UnterminatedDoctypeDeclaration: -4, + UnterminatedComment: -5, + MalformedElement: -6, + OutOfMemory: -7, + UnterminatedAttributeValue: -8, + UnterminatedElement: -9, + ElementNeverBegun: -10 +}; +exports.XMLParserErrorCode = XMLParserErrorCode; +function isWhitespace(s, index) { + const ch = s[index]; + return ch === " " || ch === "\n" || ch === "\r" || ch === "\t"; +} +function isWhitespaceString(s) { + for (let i = 0, ii = s.length; i < ii; i++) { + if (!isWhitespace(s, i)) { + return false; + } + } + return true; +} +class XMLParserBase { + _resolveEntities(s) { + return s.replaceAll(/&([^;]+);/g, (all, entity) => { + if (entity.substring(0, 2) === "#x") { + return String.fromCodePoint(parseInt(entity.substring(2), 16)); + } else if (entity.substring(0, 1) === "#") { + return String.fromCodePoint(parseInt(entity.substring(1), 10)); + } + switch (entity) { + case "lt": + return "<"; + case "gt": + return ">"; + case "amp": + return "&"; + case "quot": + return '"'; + case "apos": + return "'"; + } + return this.onResolveEntity(entity); + }); + } + _parseContent(s, start) { + const attributes = []; + let pos = start; + function skipWs() { + while (pos < s.length && isWhitespace(s, pos)) { + ++pos; + } + } + while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== ">" && s[pos] !== "/") { + ++pos; + } + const name = s.substring(start, pos); + skipWs(); + while (pos < s.length && s[pos] !== ">" && s[pos] !== "/" && s[pos] !== "?") { + skipWs(); + let attrName = "", + attrValue = ""; + while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== "=") { + attrName += s[pos]; + ++pos; + } + skipWs(); + if (s[pos] !== "=") { + return null; + } + ++pos; + skipWs(); + const attrEndChar = s[pos]; + if (attrEndChar !== '"' && attrEndChar !== "'") { + return null; + } + const attrEndIndex = s.indexOf(attrEndChar, ++pos); + if (attrEndIndex < 0) { + return null; + } + attrValue = s.substring(pos, attrEndIndex); + attributes.push({ + name: attrName, + value: this._resolveEntities(attrValue) + }); + pos = attrEndIndex + 1; + skipWs(); + } + return { + name, + attributes, + parsed: pos - start + }; + } + _parseProcessingInstruction(s, start) { + let pos = start; + function skipWs() { + while (pos < s.length && isWhitespace(s, pos)) { + ++pos; + } + } + while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== ">" && s[pos] !== "?" && s[pos] !== "/") { + ++pos; + } + const name = s.substring(start, pos); + skipWs(); + const attrStart = pos; + while (pos < s.length && (s[pos] !== "?" || s[pos + 1] !== ">")) { + ++pos; + } + const value = s.substring(attrStart, pos); + return { + name, + value, + parsed: pos - start + }; + } + parseXml(s) { + let i = 0; + while (i < s.length) { + const ch = s[i]; + let j = i; + if (ch === "<") { + ++j; + const ch2 = s[j]; + let q; + switch (ch2) { + case "/": + ++j; + q = s.indexOf(">", j); + if (q < 0) { + this.onError(XMLParserErrorCode.UnterminatedElement); + return; + } + this.onEndElement(s.substring(j, q)); + j = q + 1; + break; + case "?": + ++j; + const pi = this._parseProcessingInstruction(s, j); + if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== "?>") { + this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration); + return; + } + this.onPi(pi.name, pi.value); + j += pi.parsed + 2; + break; + case "!": + if (s.substring(j + 1, j + 3) === "--") { + q = s.indexOf("-->", j + 3); + if (q < 0) { + this.onError(XMLParserErrorCode.UnterminatedComment); + return; + } + this.onComment(s.substring(j + 3, q)); + j = q + 3; + } else if (s.substring(j + 1, j + 8) === "[CDATA[") { + q = s.indexOf("]]>", j + 8); + if (q < 0) { + this.onError(XMLParserErrorCode.UnterminatedCdat); + return; + } + this.onCdata(s.substring(j + 8, q)); + j = q + 3; + } else if (s.substring(j + 1, j + 8) === "DOCTYPE") { + const q2 = s.indexOf("[", j + 8); + let complexDoctype = false; + q = s.indexOf(">", j + 8); + if (q < 0) { + this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration); + return; + } + if (q2 > 0 && q > q2) { + q = s.indexOf("]>", j + 8); + if (q < 0) { + this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration); + return; + } + complexDoctype = true; + } + const doctypeContent = s.substring(j + 8, q + (complexDoctype ? 1 : 0)); + this.onDoctype(doctypeContent); + j = q + (complexDoctype ? 2 : 1); + } else { + this.onError(XMLParserErrorCode.MalformedElement); + return; + } + break; + default: + const content = this._parseContent(s, j); + if (content === null) { + this.onError(XMLParserErrorCode.MalformedElement); + return; + } + let isClosed = false; + if (s.substring(j + content.parsed, j + content.parsed + 2) === "/>") { + isClosed = true; + } else if (s.substring(j + content.parsed, j + content.parsed + 1) !== ">") { + this.onError(XMLParserErrorCode.UnterminatedElement); + return; + } + this.onBeginElement(content.name, content.attributes, isClosed); + j += content.parsed + (isClosed ? 2 : 1); + break; + } + } else { + while (j < s.length && s[j] !== "<") { + j++; + } + const text = s.substring(i, j); + this.onText(this._resolveEntities(text)); + } + i = j; + } + } + onResolveEntity(name) { + return `&${name};`; + } + onPi(name, value) {} + onComment(text) {} + onCdata(text) {} + onDoctype(doctypeContent) {} + onText(text) {} + onBeginElement(name, attributes, isEmpty) {} + onEndElement(name) {} + onError(code) {} +} +exports.XMLParserBase = XMLParserBase; +class SimpleDOMNode { + constructor(nodeName, nodeValue) { + this.nodeName = nodeName; + this.nodeValue = nodeValue; + Object.defineProperty(this, "parentNode", { + value: null, + writable: true + }); + } + get firstChild() { + return this.childNodes?.[0]; + } + get nextSibling() { + const childNodes = this.parentNode.childNodes; + if (!childNodes) { + return undefined; + } + const index = childNodes.indexOf(this); + if (index === -1) { + return undefined; + } + return childNodes[index + 1]; + } + get textContent() { + if (!this.childNodes) { + return this.nodeValue || ""; + } + return this.childNodes.map(function (child) { + return child.textContent; + }).join(""); + } + get children() { + return this.childNodes || []; + } + hasChildNodes() { + return this.childNodes?.length > 0; + } + searchNode(paths, pos) { + if (pos >= paths.length) { + return this; + } + const component = paths[pos]; + const stack = []; + let node = this; + while (true) { + if (component.name === node.nodeName) { + if (component.pos === 0) { + const res = node.searchNode(paths, pos + 1); + if (res !== null) { + return res; + } + } else if (stack.length === 0) { + return null; + } else { + const [parent] = stack.pop(); + let siblingPos = 0; + for (const child of parent.childNodes) { + if (component.name === child.nodeName) { + if (siblingPos === component.pos) { + return child.searchNode(paths, pos + 1); + } + siblingPos++; + } + } + return node.searchNode(paths, pos + 1); + } + } + if (node.childNodes?.length > 0) { + stack.push([node, 0]); + node = node.childNodes[0]; + } else if (stack.length === 0) { + return null; + } else { + while (stack.length !== 0) { + const [parent, currentPos] = stack.pop(); + const newPos = currentPos + 1; + if (newPos < parent.childNodes.length) { + stack.push([parent, newPos]); + node = parent.childNodes[newPos]; + break; + } + } + if (stack.length === 0) { + return null; + } + } + } + } + dump(buffer) { + if (this.nodeName === "#text") { + buffer.push((0, _core_utils.encodeToXmlString)(this.nodeValue)); + return; + } + buffer.push(`<${this.nodeName}`); + if (this.attributes) { + for (const attribute of this.attributes) { + buffer.push(` ${attribute.name}="${(0, _core_utils.encodeToXmlString)(attribute.value)}"`); + } + } + if (this.hasChildNodes()) { + buffer.push(">"); + for (const child of this.childNodes) { + child.dump(buffer); + } + buffer.push(``); + } else if (this.nodeValue) { + buffer.push(`>${(0, _core_utils.encodeToXmlString)(this.nodeValue)}`); + } else { + buffer.push("/>"); + } + } +} +exports.SimpleDOMNode = SimpleDOMNode; +class SimpleXMLParser extends XMLParserBase { + constructor({ + hasAttributes = false, + lowerCaseName = false + }) { + super(); + this._currentFragment = null; + this._stack = null; + this._errorCode = XMLParserErrorCode.NoError; + this._hasAttributes = hasAttributes; + this._lowerCaseName = lowerCaseName; + } + parseFromString(data) { + this._currentFragment = []; + this._stack = []; + this._errorCode = XMLParserErrorCode.NoError; + this.parseXml(data); + if (this._errorCode !== XMLParserErrorCode.NoError) { + return undefined; + } + const [documentElement] = this._currentFragment; + if (!documentElement) { + return undefined; + } + return { + documentElement + }; + } + onText(text) { + if (isWhitespaceString(text)) { + return; + } + const node = new SimpleDOMNode("#text", text); + this._currentFragment.push(node); + } + onCdata(text) { + const node = new SimpleDOMNode("#text", text); + this._currentFragment.push(node); + } + onBeginElement(name, attributes, isEmpty) { + if (this._lowerCaseName) { + name = name.toLowerCase(); + } + const node = new SimpleDOMNode(name); + node.childNodes = []; + if (this._hasAttributes) { + node.attributes = attributes; + } + this._currentFragment.push(node); + if (isEmpty) { + return; + } + this._stack.push(this._currentFragment); + this._currentFragment = node.childNodes; + } + onEndElement(name) { + this._currentFragment = this._stack.pop() || []; + const lastElement = this._currentFragment.at(-1); + if (!lastElement) { + return null; + } + for (const childNode of lastElement.childNodes) { + childNode.parentNode = lastElement; + } + return lastElement; + } + onError(code) { + this._errorCode = code; + } +} +exports.SimpleXMLParser = SimpleXMLParser; + +/***/ }), +/* 68 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.calculateSHA256 = exports.calculateMD5 = exports.PDF20 = exports.PDF17 = exports.CipherTransformFactory = exports.ARCFourCipher = exports.AES256Cipher = exports.AES128Cipher = void 0; +exports.calculateSHA384 = calculateSHA384; +exports.calculateSHA512 = void 0; +var _util = __w_pdfjs_require__(2); +var _primitives = __w_pdfjs_require__(4); +var _decrypt_stream = __w_pdfjs_require__(69); +class ARCFourCipher { + constructor(key) { + this.a = 0; + this.b = 0; + const s = new Uint8Array(256); + const keyLength = key.length; + for (let i = 0; i < 256; ++i) { + s[i] = i; + } + for (let i = 0, j = 0; i < 256; ++i) { + const tmp = s[i]; + j = j + tmp + key[i % keyLength] & 0xff; + s[i] = s[j]; + s[j] = tmp; + } + this.s = s; + } + encryptBlock(data) { + let a = this.a, + b = this.b; + const s = this.s; + const n = data.length; + const output = new Uint8Array(n); + for (let i = 0; i < n; ++i) { + a = a + 1 & 0xff; + const tmp = s[a]; + b = b + tmp & 0xff; + const tmp2 = s[b]; + s[a] = tmp2; + s[b] = tmp; + output[i] = data[i] ^ s[tmp + tmp2 & 0xff]; + } + this.a = a; + this.b = b; + return output; + } + decryptBlock(data) { + return this.encryptBlock(data); + } + encrypt(data) { + return this.encryptBlock(data); + } +} +exports.ARCFourCipher = ARCFourCipher; +const calculateMD5 = function calculateMD5Closure() { + const r = new Uint8Array([7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]); + const k = new Int32Array([-680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, 643717713, -373897302, -701558691, 38016083, -660478335, -405537848, 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, -145523070, -1120210379, 718787259, -343485551]); + function hash(data, offset, length) { + let h0 = 1732584193, + h1 = -271733879, + h2 = -1732584194, + h3 = 271733878; + const paddedLength = length + 72 & ~63; + const padded = new Uint8Array(paddedLength); + let i, j; + for (i = 0; i < length; ++i) { + padded[i] = data[offset++]; + } + padded[i++] = 0x80; + const n = paddedLength - 8; + while (i < n) { + padded[i++] = 0; + } + padded[i++] = length << 3 & 0xff; + padded[i++] = length >> 5 & 0xff; + padded[i++] = length >> 13 & 0xff; + padded[i++] = length >> 21 & 0xff; + padded[i++] = length >>> 29 & 0xff; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + const w = new Int32Array(16); + for (i = 0; i < paddedLength;) { + for (j = 0; j < 16; ++j, i += 4) { + w[j] = padded[i] | padded[i + 1] << 8 | padded[i + 2] << 16 | padded[i + 3] << 24; + } + let a = h0, + b = h1, + c = h2, + d = h3, + f, + g; + for (j = 0; j < 64; ++j) { + if (j < 16) { + f = b & c | ~b & d; + g = j; + } else if (j < 32) { + f = d & b | ~d & c; + g = 5 * j + 1 & 15; + } else if (j < 48) { + f = b ^ c ^ d; + g = 3 * j + 5 & 15; + } else { + f = c ^ (b | ~d); + g = 7 * j & 15; + } + const tmp = d, + rotateArg = a + f + k[j] + w[g] | 0, + rotate = r[j]; + d = c; + c = b; + b = b + (rotateArg << rotate | rotateArg >>> 32 - rotate) | 0; + a = tmp; + } + h0 = h0 + a | 0; + h1 = h1 + b | 0; + h2 = h2 + c | 0; + h3 = h3 + d | 0; + } + return new Uint8Array([h0 & 0xFF, h0 >> 8 & 0xFF, h0 >> 16 & 0xFF, h0 >>> 24 & 0xFF, h1 & 0xFF, h1 >> 8 & 0xFF, h1 >> 16 & 0xFF, h1 >>> 24 & 0xFF, h2 & 0xFF, h2 >> 8 & 0xFF, h2 >> 16 & 0xFF, h2 >>> 24 & 0xFF, h3 & 0xFF, h3 >> 8 & 0xFF, h3 >> 16 & 0xFF, h3 >>> 24 & 0xFF]); + } + return hash; +}(); +exports.calculateMD5 = calculateMD5; +class Word64 { + constructor(highInteger, lowInteger) { + this.high = highInteger | 0; + this.low = lowInteger | 0; + } + and(word) { + this.high &= word.high; + this.low &= word.low; + } + xor(word) { + this.high ^= word.high; + this.low ^= word.low; + } + or(word) { + this.high |= word.high; + this.low |= word.low; + } + shiftRight(places) { + if (places >= 32) { + this.low = this.high >>> places - 32 | 0; + this.high = 0; + } else { + this.low = this.low >>> places | this.high << 32 - places; + this.high = this.high >>> places | 0; + } + } + shiftLeft(places) { + if (places >= 32) { + this.high = this.low << places - 32; + this.low = 0; + } else { + this.high = this.high << places | this.low >>> 32 - places; + this.low <<= places; + } + } + rotateRight(places) { + let low, high; + if (places & 32) { + high = this.low; + low = this.high; + } else { + low = this.low; + high = this.high; + } + places &= 31; + this.low = low >>> places | high << 32 - places; + this.high = high >>> places | low << 32 - places; + } + not() { + this.high = ~this.high; + this.low = ~this.low; + } + add(word) { + const lowAdd = (this.low >>> 0) + (word.low >>> 0); + let highAdd = (this.high >>> 0) + (word.high >>> 0); + if (lowAdd > 0xffffffff) { + highAdd += 1; + } + this.low = lowAdd | 0; + this.high = highAdd | 0; + } + copyTo(bytes, offset) { + bytes[offset] = this.high >>> 24 & 0xff; + bytes[offset + 1] = this.high >> 16 & 0xff; + bytes[offset + 2] = this.high >> 8 & 0xff; + bytes[offset + 3] = this.high & 0xff; + bytes[offset + 4] = this.low >>> 24 & 0xff; + bytes[offset + 5] = this.low >> 16 & 0xff; + bytes[offset + 6] = this.low >> 8 & 0xff; + bytes[offset + 7] = this.low & 0xff; + } + assign(word) { + this.high = word.high; + this.low = word.low; + } +} +const calculateSHA256 = function calculateSHA256Closure() { + function rotr(x, n) { + return x >>> n | x << 32 - n; + } + function ch(x, y, z) { + return x & y ^ ~x & z; + } + function maj(x, y, z) { + return x & y ^ x & z ^ y & z; + } + function sigma(x) { + return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22); + } + function sigmaPrime(x) { + return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25); + } + function littleSigma(x) { + return rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3; + } + function littleSigmaPrime(x) { + return rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10; + } + const k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2]; + function hash(data, offset, length) { + let h0 = 0x6a09e667, + h1 = 0xbb67ae85, + h2 = 0x3c6ef372, + h3 = 0xa54ff53a, + h4 = 0x510e527f, + h5 = 0x9b05688c, + h6 = 0x1f83d9ab, + h7 = 0x5be0cd19; + const paddedLength = Math.ceil((length + 9) / 64) * 64; + const padded = new Uint8Array(paddedLength); + let i, j; + for (i = 0; i < length; ++i) { + padded[i] = data[offset++]; + } + padded[i++] = 0x80; + const n = paddedLength - 8; + while (i < n) { + padded[i++] = 0; + } + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = length >>> 29 & 0xff; + padded[i++] = length >> 21 & 0xff; + padded[i++] = length >> 13 & 0xff; + padded[i++] = length >> 5 & 0xff; + padded[i++] = length << 3 & 0xff; + const w = new Uint32Array(64); + for (i = 0; i < paddedLength;) { + for (j = 0; j < 16; ++j) { + w[j] = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3]; + i += 4; + } + for (j = 16; j < 64; ++j) { + w[j] = littleSigmaPrime(w[j - 2]) + w[j - 7] + littleSigma(w[j - 15]) + w[j - 16] | 0; + } + let a = h0, + b = h1, + c = h2, + d = h3, + e = h4, + f = h5, + g = h6, + h = h7, + t1, + t2; + for (j = 0; j < 64; ++j) { + t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j]; + t2 = sigma(a) + maj(a, b, c); + h = g; + g = f; + f = e; + e = d + t1 | 0; + d = c; + c = b; + b = a; + a = t1 + t2 | 0; + } + h0 = h0 + a | 0; + h1 = h1 + b | 0; + h2 = h2 + c | 0; + h3 = h3 + d | 0; + h4 = h4 + e | 0; + h5 = h5 + f | 0; + h6 = h6 + g | 0; + h7 = h7 + h | 0; + } + return new Uint8Array([h0 >> 24 & 0xFF, h0 >> 16 & 0xFF, h0 >> 8 & 0xFF, h0 & 0xFF, h1 >> 24 & 0xFF, h1 >> 16 & 0xFF, h1 >> 8 & 0xFF, h1 & 0xFF, h2 >> 24 & 0xFF, h2 >> 16 & 0xFF, h2 >> 8 & 0xFF, h2 & 0xFF, h3 >> 24 & 0xFF, h3 >> 16 & 0xFF, h3 >> 8 & 0xFF, h3 & 0xFF, h4 >> 24 & 0xFF, h4 >> 16 & 0xFF, h4 >> 8 & 0xFF, h4 & 0xFF, h5 >> 24 & 0xFF, h5 >> 16 & 0xFF, h5 >> 8 & 0xFF, h5 & 0xFF, h6 >> 24 & 0xFF, h6 >> 16 & 0xFF, h6 >> 8 & 0xFF, h6 & 0xFF, h7 >> 24 & 0xFF, h7 >> 16 & 0xFF, h7 >> 8 & 0xFF, h7 & 0xFF]); + } + return hash; +}(); +exports.calculateSHA256 = calculateSHA256; +const calculateSHA512 = function calculateSHA512Closure() { + function ch(result, x, y, z, tmp) { + result.assign(x); + result.and(y); + tmp.assign(x); + tmp.not(); + tmp.and(z); + result.xor(tmp); + } + function maj(result, x, y, z, tmp) { + result.assign(x); + result.and(y); + tmp.assign(x); + tmp.and(z); + result.xor(tmp); + tmp.assign(y); + tmp.and(z); + result.xor(tmp); + } + function sigma(result, x, tmp) { + result.assign(x); + result.rotateRight(28); + tmp.assign(x); + tmp.rotateRight(34); + result.xor(tmp); + tmp.assign(x); + tmp.rotateRight(39); + result.xor(tmp); + } + function sigmaPrime(result, x, tmp) { + result.assign(x); + result.rotateRight(14); + tmp.assign(x); + tmp.rotateRight(18); + result.xor(tmp); + tmp.assign(x); + tmp.rotateRight(41); + result.xor(tmp); + } + function littleSigma(result, x, tmp) { + result.assign(x); + result.rotateRight(1); + tmp.assign(x); + tmp.rotateRight(8); + result.xor(tmp); + tmp.assign(x); + tmp.shiftRight(7); + result.xor(tmp); + } + function littleSigmaPrime(result, x, tmp) { + result.assign(x); + result.rotateRight(19); + tmp.assign(x); + tmp.rotateRight(61); + result.xor(tmp); + tmp.assign(x); + tmp.shiftRight(6); + result.xor(tmp); + } + const k = [new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd), new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc), new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019), new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118), new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe), new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2), new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1), new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694), new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3), new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65), new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483), new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5), new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210), new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4), new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725), new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70), new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926), new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df), new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8), new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b), new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001), new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30), new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910), new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8), new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53), new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8), new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb), new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3), new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60), new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec), new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9), new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b), new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207), new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178), new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6), new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b), new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493), new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c), new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a), new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)]; + function hash(data, offset, length, mode384 = false) { + let h0, h1, h2, h3, h4, h5, h6, h7; + if (!mode384) { + h0 = new Word64(0x6a09e667, 0xf3bcc908); + h1 = new Word64(0xbb67ae85, 0x84caa73b); + h2 = new Word64(0x3c6ef372, 0xfe94f82b); + h3 = new Word64(0xa54ff53a, 0x5f1d36f1); + h4 = new Word64(0x510e527f, 0xade682d1); + h5 = new Word64(0x9b05688c, 0x2b3e6c1f); + h6 = new Word64(0x1f83d9ab, 0xfb41bd6b); + h7 = new Word64(0x5be0cd19, 0x137e2179); + } else { + h0 = new Word64(0xcbbb9d5d, 0xc1059ed8); + h1 = new Word64(0x629a292a, 0x367cd507); + h2 = new Word64(0x9159015a, 0x3070dd17); + h3 = new Word64(0x152fecd8, 0xf70e5939); + h4 = new Word64(0x67332667, 0xffc00b31); + h5 = new Word64(0x8eb44a87, 0x68581511); + h6 = new Word64(0xdb0c2e0d, 0x64f98fa7); + h7 = new Word64(0x47b5481d, 0xbefa4fa4); + } + const paddedLength = Math.ceil((length + 17) / 128) * 128; + const padded = new Uint8Array(paddedLength); + let i, j; + for (i = 0; i < length; ++i) { + padded[i] = data[offset++]; + } + padded[i++] = 0x80; + const n = paddedLength - 16; + while (i < n) { + padded[i++] = 0; + } + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = length >>> 29 & 0xff; + padded[i++] = length >> 21 & 0xff; + padded[i++] = length >> 13 & 0xff; + padded[i++] = length >> 5 & 0xff; + padded[i++] = length << 3 & 0xff; + const w = new Array(80); + for (i = 0; i < 80; i++) { + w[i] = new Word64(0, 0); + } + let a = new Word64(0, 0), + b = new Word64(0, 0), + c = new Word64(0, 0); + let d = new Word64(0, 0), + e = new Word64(0, 0), + f = new Word64(0, 0); + let g = new Word64(0, 0), + h = new Word64(0, 0); + const t1 = new Word64(0, 0), + t2 = new Word64(0, 0); + const tmp1 = new Word64(0, 0), + tmp2 = new Word64(0, 0); + let tmp3; + for (i = 0; i < paddedLength;) { + for (j = 0; j < 16; ++j) { + w[j].high = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3]; + w[j].low = padded[i + 4] << 24 | padded[i + 5] << 16 | padded[i + 6] << 8 | padded[i + 7]; + i += 8; + } + for (j = 16; j < 80; ++j) { + tmp3 = w[j]; + littleSigmaPrime(tmp3, w[j - 2], tmp2); + tmp3.add(w[j - 7]); + littleSigma(tmp1, w[j - 15], tmp2); + tmp3.add(tmp1); + tmp3.add(w[j - 16]); + } + a.assign(h0); + b.assign(h1); + c.assign(h2); + d.assign(h3); + e.assign(h4); + f.assign(h5); + g.assign(h6); + h.assign(h7); + for (j = 0; j < 80; ++j) { + t1.assign(h); + sigmaPrime(tmp1, e, tmp2); + t1.add(tmp1); + ch(tmp1, e, f, g, tmp2); + t1.add(tmp1); + t1.add(k[j]); + t1.add(w[j]); + sigma(t2, a, tmp2); + maj(tmp1, a, b, c, tmp2); + t2.add(tmp1); + tmp3 = h; + h = g; + g = f; + f = e; + d.add(t1); + e = d; + d = c; + c = b; + b = a; + tmp3.assign(t1); + tmp3.add(t2); + a = tmp3; + } + h0.add(a); + h1.add(b); + h2.add(c); + h3.add(d); + h4.add(e); + h5.add(f); + h6.add(g); + h7.add(h); + } + let result; + if (!mode384) { + result = new Uint8Array(64); + h0.copyTo(result, 0); + h1.copyTo(result, 8); + h2.copyTo(result, 16); + h3.copyTo(result, 24); + h4.copyTo(result, 32); + h5.copyTo(result, 40); + h6.copyTo(result, 48); + h7.copyTo(result, 56); + } else { + result = new Uint8Array(48); + h0.copyTo(result, 0); + h1.copyTo(result, 8); + h2.copyTo(result, 16); + h3.copyTo(result, 24); + h4.copyTo(result, 32); + h5.copyTo(result, 40); + } + return result; + } + return hash; +}(); +exports.calculateSHA512 = calculateSHA512; +function calculateSHA384(data, offset, length) { + return calculateSHA512(data, offset, length, true); +} +class NullCipher { + decryptBlock(data) { + return data; + } + encrypt(data) { + return data; + } +} +class AESBaseCipher { + constructor() { + if (this.constructor === AESBaseCipher) { + (0, _util.unreachable)("Cannot initialize AESBaseCipher."); + } + this._s = new Uint8Array([0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16]); + this._inv_s = new Uint8Array([0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d]); + this._mix = new Uint32Array([0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]); + this._mixCol = new Uint8Array(256); + for (let i = 0; i < 256; i++) { + if (i < 128) { + this._mixCol[i] = i << 1; + } else { + this._mixCol[i] = i << 1 ^ 0x1b; + } + } + this.buffer = new Uint8Array(16); + this.bufferPosition = 0; + } + _expandKey(cipherKey) { + (0, _util.unreachable)("Cannot call `_expandKey` on the base class"); + } + _decrypt(input, key) { + let t, u, v; + const state = new Uint8Array(16); + state.set(input); + for (let j = 0, k = this._keySize; j < 16; ++j, ++k) { + state[j] ^= key[k]; + } + for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) { + t = state[13]; + state[13] = state[9]; + state[9] = state[5]; + state[5] = state[1]; + state[1] = t; + t = state[14]; + u = state[10]; + state[14] = state[6]; + state[10] = state[2]; + state[6] = t; + state[2] = u; + t = state[15]; + u = state[11]; + v = state[7]; + state[15] = state[3]; + state[11] = t; + state[7] = u; + state[3] = v; + for (let j = 0; j < 16; ++j) { + state[j] = this._inv_s[state[j]]; + } + for (let j = 0, k = i * 16; j < 16; ++j, ++k) { + state[j] ^= key[k]; + } + for (let j = 0; j < 16; j += 4) { + const s0 = this._mix[state[j]]; + const s1 = this._mix[state[j + 1]]; + const s2 = this._mix[state[j + 2]]; + const s3 = this._mix[state[j + 3]]; + t = s0 ^ s1 >>> 8 ^ s1 << 24 ^ s2 >>> 16 ^ s2 << 16 ^ s3 >>> 24 ^ s3 << 8; + state[j] = t >>> 24 & 0xff; + state[j + 1] = t >> 16 & 0xff; + state[j + 2] = t >> 8 & 0xff; + state[j + 3] = t & 0xff; + } + } + t = state[13]; + state[13] = state[9]; + state[9] = state[5]; + state[5] = state[1]; + state[1] = t; + t = state[14]; + u = state[10]; + state[14] = state[6]; + state[10] = state[2]; + state[6] = t; + state[2] = u; + t = state[15]; + u = state[11]; + v = state[7]; + state[15] = state[3]; + state[11] = t; + state[7] = u; + state[3] = v; + for (let j = 0; j < 16; ++j) { + state[j] = this._inv_s[state[j]]; + state[j] ^= key[j]; + } + return state; + } + _encrypt(input, key) { + const s = this._s; + let t, u, v; + const state = new Uint8Array(16); + state.set(input); + for (let j = 0; j < 16; ++j) { + state[j] ^= key[j]; + } + for (let i = 1; i < this._cyclesOfRepetition; i++) { + for (let j = 0; j < 16; ++j) { + state[j] = s[state[j]]; + } + v = state[1]; + state[1] = state[5]; + state[5] = state[9]; + state[9] = state[13]; + state[13] = v; + v = state[2]; + u = state[6]; + state[2] = state[10]; + state[6] = state[14]; + state[10] = v; + state[14] = u; + v = state[3]; + u = state[7]; + t = state[11]; + state[3] = state[15]; + state[7] = v; + state[11] = u; + state[15] = t; + for (let j = 0; j < 16; j += 4) { + const s0 = state[j + 0]; + const s1 = state[j + 1]; + const s2 = state[j + 2]; + const s3 = state[j + 3]; + t = s0 ^ s1 ^ s2 ^ s3; + state[j + 0] ^= t ^ this._mixCol[s0 ^ s1]; + state[j + 1] ^= t ^ this._mixCol[s1 ^ s2]; + state[j + 2] ^= t ^ this._mixCol[s2 ^ s3]; + state[j + 3] ^= t ^ this._mixCol[s3 ^ s0]; + } + for (let j = 0, k = i * 16; j < 16; ++j, ++k) { + state[j] ^= key[k]; + } + } + for (let j = 0; j < 16; ++j) { + state[j] = s[state[j]]; + } + v = state[1]; + state[1] = state[5]; + state[5] = state[9]; + state[9] = state[13]; + state[13] = v; + v = state[2]; + u = state[6]; + state[2] = state[10]; + state[6] = state[14]; + state[10] = v; + state[14] = u; + v = state[3]; + u = state[7]; + t = state[11]; + state[3] = state[15]; + state[7] = v; + state[11] = u; + state[15] = t; + for (let j = 0, k = this._keySize; j < 16; ++j, ++k) { + state[j] ^= key[k]; + } + return state; + } + _decryptBlock2(data, finalize) { + const sourceLength = data.length; + let buffer = this.buffer, + bufferLength = this.bufferPosition; + const result = []; + let iv = this.iv; + for (let i = 0; i < sourceLength; ++i) { + buffer[bufferLength] = data[i]; + ++bufferLength; + if (bufferLength < 16) { + continue; + } + const plain = this._decrypt(buffer, this._key); + for (let j = 0; j < 16; ++j) { + plain[j] ^= iv[j]; + } + iv = buffer; + result.push(plain); + buffer = new Uint8Array(16); + bufferLength = 0; + } + this.buffer = buffer; + this.bufferLength = bufferLength; + this.iv = iv; + if (result.length === 0) { + return new Uint8Array(0); + } + let outputLength = 16 * result.length; + if (finalize) { + const lastBlock = result.at(-1); + let psLen = lastBlock[15]; + if (psLen <= 16) { + for (let i = 15, ii = 16 - psLen; i >= ii; --i) { + if (lastBlock[i] !== psLen) { + psLen = 0; + break; + } + } + outputLength -= psLen; + result[result.length - 1] = lastBlock.subarray(0, 16 - psLen); + } + } + const output = new Uint8Array(outputLength); + for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) { + output.set(result[i], j); + } + return output; + } + decryptBlock(data, finalize, iv = null) { + const sourceLength = data.length; + const buffer = this.buffer; + let bufferLength = this.bufferPosition; + if (iv) { + this.iv = iv; + } else { + for (let i = 0; bufferLength < 16 && i < sourceLength; ++i, ++bufferLength) { + buffer[bufferLength] = data[i]; + } + if (bufferLength < 16) { + this.bufferLength = bufferLength; + return new Uint8Array(0); + } + this.iv = buffer; + data = data.subarray(16); + } + this.buffer = new Uint8Array(16); + this.bufferLength = 0; + this.decryptBlock = this._decryptBlock2; + return this.decryptBlock(data, finalize); + } + encrypt(data, iv) { + const sourceLength = data.length; + let buffer = this.buffer, + bufferLength = this.bufferPosition; + const result = []; + if (!iv) { + iv = new Uint8Array(16); + } + for (let i = 0; i < sourceLength; ++i) { + buffer[bufferLength] = data[i]; + ++bufferLength; + if (bufferLength < 16) { + continue; + } + for (let j = 0; j < 16; ++j) { + buffer[j] ^= iv[j]; + } + const cipher = this._encrypt(buffer, this._key); + iv = cipher; + result.push(cipher); + buffer = new Uint8Array(16); + bufferLength = 0; + } + this.buffer = buffer; + this.bufferLength = bufferLength; + this.iv = iv; + if (result.length === 0) { + return new Uint8Array(0); + } + const outputLength = 16 * result.length; + const output = new Uint8Array(outputLength); + for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) { + output.set(result[i], j); + } + return output; + } +} +class AES128Cipher extends AESBaseCipher { + constructor(key) { + super(); + this._cyclesOfRepetition = 10; + this._keySize = 160; + this._rcon = new Uint8Array([0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d]); + this._key = this._expandKey(key); + } + _expandKey(cipherKey) { + const b = 176; + const s = this._s; + const rcon = this._rcon; + const result = new Uint8Array(b); + result.set(cipherKey); + for (let j = 16, i = 1; j < b; ++i) { + let t1 = result[j - 3]; + let t2 = result[j - 2]; + let t3 = result[j - 1]; + let t4 = result[j - 4]; + t1 = s[t1]; + t2 = s[t2]; + t3 = s[t3]; + t4 = s[t4]; + t1 ^= rcon[i]; + for (let n = 0; n < 4; ++n) { + result[j] = t1 ^= result[j - 16]; + j++; + result[j] = t2 ^= result[j - 16]; + j++; + result[j] = t3 ^= result[j - 16]; + j++; + result[j] = t4 ^= result[j - 16]; + j++; + } + } + return result; + } +} +exports.AES128Cipher = AES128Cipher; +class AES256Cipher extends AESBaseCipher { + constructor(key) { + super(); + this._cyclesOfRepetition = 14; + this._keySize = 224; + this._key = this._expandKey(key); + } + _expandKey(cipherKey) { + const b = 240; + const s = this._s; + const result = new Uint8Array(b); + result.set(cipherKey); + let r = 1; + let t1, t2, t3, t4; + for (let j = 32, i = 1; j < b; ++i) { + if (j % 32 === 16) { + t1 = s[t1]; + t2 = s[t2]; + t3 = s[t3]; + t4 = s[t4]; + } else if (j % 32 === 0) { + t1 = result[j - 3]; + t2 = result[j - 2]; + t3 = result[j - 1]; + t4 = result[j - 4]; + t1 = s[t1]; + t2 = s[t2]; + t3 = s[t3]; + t4 = s[t4]; + t1 ^= r; + if ((r <<= 1) >= 256) { + r = (r ^ 0x1b) & 0xff; + } + } + for (let n = 0; n < 4; ++n) { + result[j] = t1 ^= result[j - 32]; + j++; + result[j] = t2 ^= result[j - 32]; + j++; + result[j] = t3 ^= result[j - 32]; + j++; + result[j] = t4 ^= result[j - 32]; + j++; + } + } + return result; + } +} +exports.AES256Cipher = AES256Cipher; +class PDF17 { + checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) { + const hashData = new Uint8Array(password.length + 56); + hashData.set(password, 0); + hashData.set(ownerValidationSalt, password.length); + hashData.set(userBytes, password.length + ownerValidationSalt.length); + const result = calculateSHA256(hashData, 0, hashData.length); + return (0, _util.isArrayEqual)(result, ownerPassword); + } + checkUserPassword(password, userValidationSalt, userPassword) { + const hashData = new Uint8Array(password.length + 8); + hashData.set(password, 0); + hashData.set(userValidationSalt, password.length); + const result = calculateSHA256(hashData, 0, hashData.length); + return (0, _util.isArrayEqual)(result, userPassword); + } + getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) { + const hashData = new Uint8Array(password.length + 56); + hashData.set(password, 0); + hashData.set(ownerKeySalt, password.length); + hashData.set(userBytes, password.length + ownerKeySalt.length); + const key = calculateSHA256(hashData, 0, hashData.length); + const cipher = new AES256Cipher(key); + return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16)); + } + getUserKey(password, userKeySalt, userEncryption) { + const hashData = new Uint8Array(password.length + 8); + hashData.set(password, 0); + hashData.set(userKeySalt, password.length); + const key = calculateSHA256(hashData, 0, hashData.length); + const cipher = new AES256Cipher(key); + return cipher.decryptBlock(userEncryption, false, new Uint8Array(16)); + } +} +exports.PDF17 = PDF17; +class PDF20 { + _hash(password, input, userBytes) { + let k = calculateSHA256(input, 0, input.length).subarray(0, 32); + let e = [0]; + let i = 0; + while (i < 64 || e.at(-1) > i - 32) { + const combinedLength = password.length + k.length + userBytes.length, + combinedArray = new Uint8Array(combinedLength); + let writeOffset = 0; + combinedArray.set(password, writeOffset); + writeOffset += password.length; + combinedArray.set(k, writeOffset); + writeOffset += k.length; + combinedArray.set(userBytes, writeOffset); + const k1 = new Uint8Array(combinedLength * 64); + for (let j = 0, pos = 0; j < 64; j++, pos += combinedLength) { + k1.set(combinedArray, pos); + } + const cipher = new AES128Cipher(k.subarray(0, 16)); + e = cipher.encrypt(k1, k.subarray(16, 32)); + const remainder = e.slice(0, 16).reduce((a, b) => a + b, 0) % 3; + if (remainder === 0) { + k = calculateSHA256(e, 0, e.length); + } else if (remainder === 1) { + k = calculateSHA384(e, 0, e.length); + } else if (remainder === 2) { + k = calculateSHA512(e, 0, e.length); + } + i++; + } + return k.subarray(0, 32); + } + checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) { + const hashData = new Uint8Array(password.length + 56); + hashData.set(password, 0); + hashData.set(ownerValidationSalt, password.length); + hashData.set(userBytes, password.length + ownerValidationSalt.length); + const result = this._hash(password, hashData, userBytes); + return (0, _util.isArrayEqual)(result, ownerPassword); + } + checkUserPassword(password, userValidationSalt, userPassword) { + const hashData = new Uint8Array(password.length + 8); + hashData.set(password, 0); + hashData.set(userValidationSalt, password.length); + const result = this._hash(password, hashData, []); + return (0, _util.isArrayEqual)(result, userPassword); + } + getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) { + const hashData = new Uint8Array(password.length + 56); + hashData.set(password, 0); + hashData.set(ownerKeySalt, password.length); + hashData.set(userBytes, password.length + ownerKeySalt.length); + const key = this._hash(password, hashData, userBytes); + const cipher = new AES256Cipher(key); + return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16)); + } + getUserKey(password, userKeySalt, userEncryption) { + const hashData = new Uint8Array(password.length + 8); + hashData.set(password, 0); + hashData.set(userKeySalt, password.length); + const key = this._hash(password, hashData, []); + const cipher = new AES256Cipher(key); + return cipher.decryptBlock(userEncryption, false, new Uint8Array(16)); + } +} +exports.PDF20 = PDF20; +class CipherTransform { + constructor(stringCipherConstructor, streamCipherConstructor) { + this.StringCipherConstructor = stringCipherConstructor; + this.StreamCipherConstructor = streamCipherConstructor; + } + createStream(stream, length) { + const cipher = new this.StreamCipherConstructor(); + return new _decrypt_stream.DecryptStream(stream, length, function cipherTransformDecryptStream(data, finalize) { + return cipher.decryptBlock(data, finalize); + }); + } + decryptString(s) { + const cipher = new this.StringCipherConstructor(); + let data = (0, _util.stringToBytes)(s); + data = cipher.decryptBlock(data, true); + return (0, _util.bytesToString)(data); + } + encryptString(s) { + const cipher = new this.StringCipherConstructor(); + if (cipher instanceof AESBaseCipher) { + const strLen = s.length; + const pad = 16 - strLen % 16; + s += String.fromCharCode(pad).repeat(pad); + const iv = new Uint8Array(16); + if (typeof crypto !== "undefined") { + crypto.getRandomValues(iv); + } else { + for (let i = 0; i < 16; i++) { + iv[i] = Math.floor(256 * Math.random()); + } + } + let data = (0, _util.stringToBytes)(s); + data = cipher.encrypt(data, iv); + const buf = new Uint8Array(16 + data.length); + buf.set(iv); + buf.set(data, 16); + return (0, _util.bytesToString)(buf); + } + let data = (0, _util.stringToBytes)(s); + data = cipher.encrypt(data); + return (0, _util.bytesToString)(data); + } +} +const CipherTransformFactory = function CipherTransformFactoryClosure() { + const defaultPasswordBytes = new Uint8Array([0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56, 0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80, 0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a]); + function createEncryptionKey20(revision, password, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms) { + if (password) { + const passwordLength = Math.min(127, password.length); + password = password.subarray(0, passwordLength); + } else { + password = []; + } + let pdfAlgorithm; + if (revision === 6) { + pdfAlgorithm = new PDF20(); + } else { + pdfAlgorithm = new PDF17(); + } + if (pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)) { + return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption); + } else if (password.length && pdfAlgorithm.checkOwnerPassword(password, ownerValidationSalt, uBytes, ownerPassword)) { + return pdfAlgorithm.getOwnerKey(password, ownerKeySalt, uBytes, ownerEncryption); + } + return null; + } + function prepareKeyData(fileId, password, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata) { + const hashDataSize = 40 + ownerPassword.length + fileId.length; + const hashData = new Uint8Array(hashDataSize); + let i = 0, + j, + n; + if (password) { + n = Math.min(32, password.length); + for (; i < n; ++i) { + hashData[i] = password[i]; + } + } + j = 0; + while (i < 32) { + hashData[i++] = defaultPasswordBytes[j++]; + } + for (j = 0, n = ownerPassword.length; j < n; ++j) { + hashData[i++] = ownerPassword[j]; + } + hashData[i++] = flags & 0xff; + hashData[i++] = flags >> 8 & 0xff; + hashData[i++] = flags >> 16 & 0xff; + hashData[i++] = flags >>> 24 & 0xff; + for (j = 0, n = fileId.length; j < n; ++j) { + hashData[i++] = fileId[j]; + } + if (revision >= 4 && !encryptMetadata) { + hashData[i++] = 0xff; + hashData[i++] = 0xff; + hashData[i++] = 0xff; + hashData[i++] = 0xff; + } + let hash = calculateMD5(hashData, 0, i); + const keyLengthInBytes = keyLength >> 3; + if (revision >= 3) { + for (j = 0; j < 50; ++j) { + hash = calculateMD5(hash, 0, keyLengthInBytes); + } + } + const encryptionKey = hash.subarray(0, keyLengthInBytes); + let cipher, checkData; + if (revision >= 3) { + for (i = 0; i < 32; ++i) { + hashData[i] = defaultPasswordBytes[i]; + } + for (j = 0, n = fileId.length; j < n; ++j) { + hashData[i++] = fileId[j]; + } + cipher = new ARCFourCipher(encryptionKey); + checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i)); + n = encryptionKey.length; + const derivedKey = new Uint8Array(n); + for (j = 1; j <= 19; ++j) { + for (let k = 0; k < n; ++k) { + derivedKey[k] = encryptionKey[k] ^ j; + } + cipher = new ARCFourCipher(derivedKey); + checkData = cipher.encryptBlock(checkData); + } + for (j = 0, n = checkData.length; j < n; ++j) { + if (userPassword[j] !== checkData[j]) { + return null; + } + } + } else { + cipher = new ARCFourCipher(encryptionKey); + checkData = cipher.encryptBlock(defaultPasswordBytes); + for (j = 0, n = checkData.length; j < n; ++j) { + if (userPassword[j] !== checkData[j]) { + return null; + } + } + } + return encryptionKey; + } + function decodeUserPassword(password, ownerPassword, revision, keyLength) { + const hashData = new Uint8Array(32); + let i = 0; + const n = Math.min(32, password.length); + for (; i < n; ++i) { + hashData[i] = password[i]; + } + let j = 0; + while (i < 32) { + hashData[i++] = defaultPasswordBytes[j++]; + } + let hash = calculateMD5(hashData, 0, i); + const keyLengthInBytes = keyLength >> 3; + if (revision >= 3) { + for (j = 0; j < 50; ++j) { + hash = calculateMD5(hash, 0, hash.length); + } + } + let cipher, userPassword; + if (revision >= 3) { + userPassword = ownerPassword; + const derivedKey = new Uint8Array(keyLengthInBytes); + for (j = 19; j >= 0; j--) { + for (let k = 0; k < keyLengthInBytes; ++k) { + derivedKey[k] = hash[k] ^ j; + } + cipher = new ARCFourCipher(derivedKey); + userPassword = cipher.encryptBlock(userPassword); + } + } else { + cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes)); + userPassword = cipher.encryptBlock(ownerPassword); + } + return userPassword; + } + const identityName = _primitives.Name.get("Identity"); + function buildObjectKey(num, gen, encryptionKey, isAes = false) { + const key = new Uint8Array(encryptionKey.length + 9); + const n = encryptionKey.length; + let i; + for (i = 0; i < n; ++i) { + key[i] = encryptionKey[i]; + } + key[i++] = num & 0xff; + key[i++] = num >> 8 & 0xff; + key[i++] = num >> 16 & 0xff; + key[i++] = gen & 0xff; + key[i++] = gen >> 8 & 0xff; + if (isAes) { + key[i++] = 0x73; + key[i++] = 0x41; + key[i++] = 0x6c; + key[i++] = 0x54; + } + const hash = calculateMD5(key, 0, i); + return hash.subarray(0, Math.min(encryptionKey.length + 5, 16)); + } + function buildCipherConstructor(cf, name, num, gen, key) { + if (!(name instanceof _primitives.Name)) { + throw new _util.FormatError("Invalid crypt filter name."); + } + const cryptFilter = cf.get(name.name); + let cfm; + if (cryptFilter !== null && cryptFilter !== undefined) { + cfm = cryptFilter.get("CFM"); + } + if (!cfm || cfm.name === "None") { + return function cipherTransformFactoryBuildCipherConstructorNone() { + return new NullCipher(); + }; + } + if (cfm.name === "V2") { + return function cipherTransformFactoryBuildCipherConstructorV2() { + return new ARCFourCipher(buildObjectKey(num, gen, key, false)); + }; + } + if (cfm.name === "AESV2") { + return function cipherTransformFactoryBuildCipherConstructorAESV2() { + return new AES128Cipher(buildObjectKey(num, gen, key, true)); + }; + } + if (cfm.name === "AESV3") { + return function cipherTransformFactoryBuildCipherConstructorAESV3() { + return new AES256Cipher(key); + }; + } + throw new _util.FormatError("Unknown crypto method"); + } + class CipherTransformFactory { + constructor(dict, fileId, password) { + const filter = dict.get("Filter"); + if (!(0, _primitives.isName)(filter, "Standard")) { + throw new _util.FormatError("unknown encryption method"); + } + this.filterName = filter.name; + this.dict = dict; + const algorithm = dict.get("V"); + if (!Number.isInteger(algorithm) || algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5) { + throw new _util.FormatError("unsupported encryption algorithm"); + } + this.algorithm = algorithm; + let keyLength = dict.get("Length"); + if (!keyLength) { + if (algorithm <= 3) { + keyLength = 40; + } else { + const cfDict = dict.get("CF"); + const streamCryptoName = dict.get("StmF"); + if (cfDict instanceof _primitives.Dict && streamCryptoName instanceof _primitives.Name) { + cfDict.suppressEncryption = true; + const handlerDict = cfDict.get(streamCryptoName.name); + keyLength = handlerDict?.get("Length") || 128; + if (keyLength < 40) { + keyLength <<= 3; + } + } + } + } + if (!Number.isInteger(keyLength) || keyLength < 40 || keyLength % 8 !== 0) { + throw new _util.FormatError("invalid key length"); + } + const ownerBytes = (0, _util.stringToBytes)(dict.get("O")), + userBytes = (0, _util.stringToBytes)(dict.get("U")); + const ownerPassword = ownerBytes.subarray(0, 32); + const userPassword = userBytes.subarray(0, 32); + const flags = dict.get("P"); + const revision = dict.get("R"); + const encryptMetadata = (algorithm === 4 || algorithm === 5) && dict.get("EncryptMetadata") !== false; + this.encryptMetadata = encryptMetadata; + const fileIdBytes = (0, _util.stringToBytes)(fileId); + let passwordBytes; + if (password) { + if (revision === 6) { + try { + password = (0, _util.utf8StringToString)(password); + } catch { + (0, _util.warn)("CipherTransformFactory: Unable to convert UTF8 encoded password."); + } + } + passwordBytes = (0, _util.stringToBytes)(password); + } + let encryptionKey; + if (algorithm !== 5) { + encryptionKey = prepareKeyData(fileIdBytes, passwordBytes, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata); + } else { + const ownerValidationSalt = ownerBytes.subarray(32, 40); + const ownerKeySalt = ownerBytes.subarray(40, 48); + const uBytes = userBytes.subarray(0, 48); + const userValidationSalt = userBytes.subarray(32, 40); + const userKeySalt = userBytes.subarray(40, 48); + const ownerEncryption = (0, _util.stringToBytes)(dict.get("OE")); + const userEncryption = (0, _util.stringToBytes)(dict.get("UE")); + const perms = (0, _util.stringToBytes)(dict.get("Perms")); + encryptionKey = createEncryptionKey20(revision, passwordBytes, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms); + } + if (!encryptionKey && !password) { + throw new _util.PasswordException("No password given", _util.PasswordResponses.NEED_PASSWORD); + } else if (!encryptionKey && password) { + const decodedPassword = decodeUserPassword(passwordBytes, ownerPassword, revision, keyLength); + encryptionKey = prepareKeyData(fileIdBytes, decodedPassword, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata); + } + if (!encryptionKey) { + throw new _util.PasswordException("Incorrect Password", _util.PasswordResponses.INCORRECT_PASSWORD); + } + this.encryptionKey = encryptionKey; + if (algorithm >= 4) { + const cf = dict.get("CF"); + if (cf instanceof _primitives.Dict) { + cf.suppressEncryption = true; + } + this.cf = cf; + this.stmf = dict.get("StmF") || identityName; + this.strf = dict.get("StrF") || identityName; + this.eff = dict.get("EFF") || this.stmf; + } + } + createCipherTransform(num, gen) { + if (this.algorithm === 4 || this.algorithm === 5) { + return new CipherTransform(buildCipherConstructor(this.cf, this.strf, num, gen, this.encryptionKey), buildCipherConstructor(this.cf, this.stmf, num, gen, this.encryptionKey)); + } + const key = buildObjectKey(num, gen, this.encryptionKey, false); + const cipherConstructor = function buildCipherCipherConstructor() { + return new ARCFourCipher(key); + }; + return new CipherTransform(cipherConstructor, cipherConstructor); + } + } + return CipherTransformFactory; +}(); +exports.CipherTransformFactory = CipherTransformFactory; + +/***/ }), +/* 69 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.DecryptStream = void 0; +var _decode_stream = __w_pdfjs_require__(18); +const chunkSize = 512; +class DecryptStream extends _decode_stream.DecodeStream { + constructor(str, maybeLength, decrypt) { + super(maybeLength); + this.str = str; + this.dict = str.dict; + this.decrypt = decrypt; + this.nextChunk = null; + this.initialized = false; + } + readBlock() { + let chunk; + if (this.initialized) { + chunk = this.nextChunk; + } else { + chunk = this.str.getBytes(chunkSize); + this.initialized = true; + } + if (!chunk || chunk.length === 0) { + this.eof = true; + return; + } + this.nextChunk = this.str.getBytes(chunkSize); + const hasMoreData = this.nextChunk?.length > 0; + const decrypt = this.decrypt; + chunk = decrypt(chunk, !hasMoreData); + const bufferLength = this.bufferLength, + newLength = bufferLength + chunk.length, + buffer = this.ensureBuffer(newLength); + buffer.set(chunk, bufferLength); + this.bufferLength = newLength; + } +} +exports.DecryptStream = DecryptStream; + +/***/ }), +/* 70 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Catalog = void 0; +var _core_utils = __w_pdfjs_require__(3); +var _util = __w_pdfjs_require__(2); +var _primitives = __w_pdfjs_require__(4); +var _name_number_tree = __w_pdfjs_require__(71); +var _base_stream = __w_pdfjs_require__(5); +var _cleanup_helper = __w_pdfjs_require__(72); +var _colorspace = __w_pdfjs_require__(12); +var _file_spec = __w_pdfjs_require__(73); +var _image_utils = __w_pdfjs_require__(59); +var _metadata_parser = __w_pdfjs_require__(74); +var _struct_tree = __w_pdfjs_require__(75); +function fetchDestination(dest) { + if (dest instanceof _primitives.Dict) { + dest = dest.get("D"); + } + return Array.isArray(dest) ? dest : null; +} +class Catalog { + constructor(pdfManager, xref) { + this.pdfManager = pdfManager; + this.xref = xref; + this._catDict = xref.getCatalogObj(); + if (!(this._catDict instanceof _primitives.Dict)) { + throw new _util.FormatError("Catalog object is not a dictionary."); + } + this.toplevelPagesDict; + this._actualNumPages = null; + this.fontCache = new _primitives.RefSetCache(); + this.builtInCMapCache = new Map(); + this.standardFontDataCache = new Map(); + this.globalImageCache = new _image_utils.GlobalImageCache(); + this.pageKidsCountCache = new _primitives.RefSetCache(); + this.pageIndexCache = new _primitives.RefSetCache(); + this.nonBlendModesSet = new _primitives.RefSet(); + this.systemFontCache = new Map(); + } + get version() { + const version = this._catDict.get("Version"); + if (version instanceof _primitives.Name) { + if (_core_utils.PDF_VERSION_REGEXP.test(version.name)) { + return (0, _util.shadow)(this, "version", version.name); + } + (0, _util.warn)(`Invalid PDF catalog version: ${version.name}`); + } + return (0, _util.shadow)(this, "version", null); + } + get lang() { + const lang = this._catDict.get("Lang"); + return (0, _util.shadow)(this, "lang", typeof lang === "string" ? (0, _util.stringToPDFString)(lang) : null); + } + get needsRendering() { + const needsRendering = this._catDict.get("NeedsRendering"); + return (0, _util.shadow)(this, "needsRendering", typeof needsRendering === "boolean" ? needsRendering : false); + } + get collection() { + let collection = null; + try { + const obj = this._catDict.get("Collection"); + if (obj instanceof _primitives.Dict && obj.size > 0) { + collection = obj; + } + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + (0, _util.info)("Cannot fetch Collection entry; assuming no collection is present."); + } + return (0, _util.shadow)(this, "collection", collection); + } + get acroForm() { + let acroForm = null; + try { + const obj = this._catDict.get("AcroForm"); + if (obj instanceof _primitives.Dict && obj.size > 0) { + acroForm = obj; + } + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + (0, _util.info)("Cannot fetch AcroForm entry; assuming no forms are present."); + } + return (0, _util.shadow)(this, "acroForm", acroForm); + } + get acroFormRef() { + const value = this._catDict.getRaw("AcroForm"); + return (0, _util.shadow)(this, "acroFormRef", value instanceof _primitives.Ref ? value : null); + } + get metadata() { + const streamRef = this._catDict.getRaw("Metadata"); + if (!(streamRef instanceof _primitives.Ref)) { + return (0, _util.shadow)(this, "metadata", null); + } + let metadata = null; + try { + const stream = this.xref.fetch(streamRef, !this.xref.encrypt?.encryptMetadata); + if (stream instanceof _base_stream.BaseStream && stream.dict instanceof _primitives.Dict) { + const type = stream.dict.get("Type"); + const subtype = stream.dict.get("Subtype"); + if ((0, _primitives.isName)(type, "Metadata") && (0, _primitives.isName)(subtype, "XML")) { + const data = (0, _util.stringToUTF8String)(stream.getString()); + if (data) { + metadata = new _metadata_parser.MetadataParser(data).serializable; + } + } + } + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + (0, _util.info)(`Skipping invalid Metadata: "${ex}".`); + } + return (0, _util.shadow)(this, "metadata", metadata); + } + get markInfo() { + let markInfo = null; + try { + markInfo = this._readMarkInfo(); + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + (0, _util.warn)("Unable to read mark info."); + } + return (0, _util.shadow)(this, "markInfo", markInfo); + } + _readMarkInfo() { + const obj = this._catDict.get("MarkInfo"); + if (!(obj instanceof _primitives.Dict)) { + return null; + } + const markInfo = { + Marked: false, + UserProperties: false, + Suspects: false + }; + for (const key in markInfo) { + const value = obj.get(key); + if (typeof value === "boolean") { + markInfo[key] = value; + } + } + return markInfo; + } + get structTreeRoot() { + let structTree = null; + try { + structTree = this._readStructTreeRoot(); + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + (0, _util.warn)("Unable read to structTreeRoot info."); + } + return (0, _util.shadow)(this, "structTreeRoot", structTree); + } + _readStructTreeRoot() { + const obj = this._catDict.get("StructTreeRoot"); + if (!(obj instanceof _primitives.Dict)) { + return null; + } + const root = new _struct_tree.StructTreeRoot(obj); + root.init(); + return root; + } + get toplevelPagesDict() { + const pagesObj = this._catDict.get("Pages"); + if (!(pagesObj instanceof _primitives.Dict)) { + throw new _util.FormatError("Invalid top-level pages dictionary."); + } + return (0, _util.shadow)(this, "toplevelPagesDict", pagesObj); + } + get documentOutline() { + let obj = null; + try { + obj = this._readDocumentOutline(); + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + (0, _util.warn)("Unable to read document outline."); + } + return (0, _util.shadow)(this, "documentOutline", obj); + } + _readDocumentOutline() { + let obj = this._catDict.get("Outlines"); + if (!(obj instanceof _primitives.Dict)) { + return null; + } + obj = obj.getRaw("First"); + if (!(obj instanceof _primitives.Ref)) { + return null; + } + const root = { + items: [] + }; + const queue = [{ + obj, + parent: root + }]; + const processed = new _primitives.RefSet(); + processed.put(obj); + const xref = this.xref, + blackColor = new Uint8ClampedArray(3); + while (queue.length > 0) { + const i = queue.shift(); + const outlineDict = xref.fetchIfRef(i.obj); + if (outlineDict === null) { + continue; + } + if (!outlineDict.has("Title")) { + throw new _util.FormatError("Invalid outline item encountered."); + } + const data = { + url: null, + dest: null, + action: null + }; + Catalog.parseDestDictionary({ + destDict: outlineDict, + resultObj: data, + docBaseUrl: this.pdfManager.docBaseUrl, + docAttachments: this.attachments + }); + const title = outlineDict.get("Title"); + const flags = outlineDict.get("F") || 0; + const color = outlineDict.getArray("C"); + const count = outlineDict.get("Count"); + let rgbColor = blackColor; + if (Array.isArray(color) && color.length === 3 && (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)) { + rgbColor = _colorspace.ColorSpace.singletons.rgb.getRgb(color, 0); + } + const outlineItem = { + action: data.action, + attachment: data.attachment, + dest: data.dest, + url: data.url, + unsafeUrl: data.unsafeUrl, + newWindow: data.newWindow, + setOCGState: data.setOCGState, + title: (0, _util.stringToPDFString)(title), + color: rgbColor, + count: Number.isInteger(count) ? count : undefined, + bold: !!(flags & 2), + italic: !!(flags & 1), + items: [] + }; + i.parent.items.push(outlineItem); + obj = outlineDict.getRaw("First"); + if (obj instanceof _primitives.Ref && !processed.has(obj)) { + queue.push({ + obj, + parent: outlineItem + }); + processed.put(obj); + } + obj = outlineDict.getRaw("Next"); + if (obj instanceof _primitives.Ref && !processed.has(obj)) { + queue.push({ + obj, + parent: i.parent + }); + processed.put(obj); + } + } + return root.items.length > 0 ? root.items : null; + } + get permissions() { + let permissions = null; + try { + permissions = this._readPermissions(); + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + (0, _util.warn)("Unable to read permissions."); + } + return (0, _util.shadow)(this, "permissions", permissions); + } + _readPermissions() { + const encrypt = this.xref.trailer.get("Encrypt"); + if (!(encrypt instanceof _primitives.Dict)) { + return null; + } + let flags = encrypt.get("P"); + if (typeof flags !== "number") { + return null; + } + flags += 2 ** 32; + const permissions = []; + for (const key in _util.PermissionFlag) { + const value = _util.PermissionFlag[key]; + if (flags & value) { + permissions.push(value); + } + } + return permissions; + } + get optionalContentConfig() { + let config = null; + try { + const properties = this._catDict.get("OCProperties"); + if (!properties) { + return (0, _util.shadow)(this, "optionalContentConfig", null); + } + const defaultConfig = properties.get("D"); + if (!defaultConfig) { + return (0, _util.shadow)(this, "optionalContentConfig", null); + } + const groupsData = properties.get("OCGs"); + if (!Array.isArray(groupsData)) { + return (0, _util.shadow)(this, "optionalContentConfig", null); + } + const groups = []; + const groupRefs = []; + for (const groupRef of groupsData) { + if (!(groupRef instanceof _primitives.Ref)) { + continue; + } + groupRefs.push(groupRef); + const group = this.xref.fetchIfRef(groupRef); + groups.push({ + id: groupRef.toString(), + name: typeof group.get("Name") === "string" ? (0, _util.stringToPDFString)(group.get("Name")) : null, + intent: typeof group.get("Intent") === "string" ? (0, _util.stringToPDFString)(group.get("Intent")) : null + }); + } + config = this._readOptionalContentConfig(defaultConfig, groupRefs); + config.groups = groups; + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + (0, _util.warn)(`Unable to read optional content config: ${ex}`); + } + return (0, _util.shadow)(this, "optionalContentConfig", config); + } + _readOptionalContentConfig(config, contentGroupRefs) { + function parseOnOff(refs) { + const onParsed = []; + if (Array.isArray(refs)) { + for (const value of refs) { + if (!(value instanceof _primitives.Ref)) { + continue; + } + if (contentGroupRefs.includes(value)) { + onParsed.push(value.toString()); + } + } + } + return onParsed; + } + function parseOrder(refs, nestedLevels = 0) { + if (!Array.isArray(refs)) { + return null; + } + const order = []; + for (const value of refs) { + if (value instanceof _primitives.Ref && contentGroupRefs.includes(value)) { + parsedOrderRefs.put(value); + order.push(value.toString()); + continue; + } + const nestedOrder = parseNestedOrder(value, nestedLevels); + if (nestedOrder) { + order.push(nestedOrder); + } + } + if (nestedLevels > 0) { + return order; + } + const hiddenGroups = []; + for (const groupRef of contentGroupRefs) { + if (parsedOrderRefs.has(groupRef)) { + continue; + } + hiddenGroups.push(groupRef.toString()); + } + if (hiddenGroups.length) { + order.push({ + name: null, + order: hiddenGroups + }); + } + return order; + } + function parseNestedOrder(ref, nestedLevels) { + if (++nestedLevels > MAX_NESTED_LEVELS) { + (0, _util.warn)("parseNestedOrder - reached MAX_NESTED_LEVELS."); + return null; + } + const value = xref.fetchIfRef(ref); + if (!Array.isArray(value)) { + return null; + } + const nestedName = xref.fetchIfRef(value[0]); + if (typeof nestedName !== "string") { + return null; + } + const nestedOrder = parseOrder(value.slice(1), nestedLevels); + if (!nestedOrder || !nestedOrder.length) { + return null; + } + return { + name: (0, _util.stringToPDFString)(nestedName), + order: nestedOrder + }; + } + const xref = this.xref, + parsedOrderRefs = new _primitives.RefSet(), + MAX_NESTED_LEVELS = 10; + return { + name: typeof config.get("Name") === "string" ? (0, _util.stringToPDFString)(config.get("Name")) : null, + creator: typeof config.get("Creator") === "string" ? (0, _util.stringToPDFString)(config.get("Creator")) : null, + baseState: config.get("BaseState") instanceof _primitives.Name ? config.get("BaseState").name : null, + on: parseOnOff(config.get("ON")), + off: parseOnOff(config.get("OFF")), + order: parseOrder(config.get("Order")), + groups: null + }; + } + setActualNumPages(num = null) { + this._actualNumPages = num; + } + get hasActualNumPages() { + return this._actualNumPages !== null; + } + get _pagesCount() { + const obj = this.toplevelPagesDict.get("Count"); + if (!Number.isInteger(obj)) { + throw new _util.FormatError("Page count in top-level pages dictionary is not an integer."); + } + return (0, _util.shadow)(this, "_pagesCount", obj); + } + get numPages() { + return this.hasActualNumPages ? this._actualNumPages : this._pagesCount; + } + get destinations() { + const obj = this._readDests(), + dests = Object.create(null); + if (obj instanceof _name_number_tree.NameTree) { + for (const [key, value] of obj.getAll()) { + const dest = fetchDestination(value); + if (dest) { + dests[(0, _util.stringToPDFString)(key)] = dest; + } + } + } else if (obj instanceof _primitives.Dict) { + obj.forEach(function (key, value) { + const dest = fetchDestination(value); + if (dest) { + dests[key] = dest; + } + }); + } + return (0, _util.shadow)(this, "destinations", dests); + } + getDestination(id) { + const obj = this._readDests(); + if (obj instanceof _name_number_tree.NameTree) { + const dest = fetchDestination(obj.get(id)); + if (dest) { + return dest; + } + const allDest = this.destinations[id]; + if (allDest) { + (0, _util.warn)(`Found "${id}" at an incorrect position in the NameTree.`); + return allDest; + } + } else if (obj instanceof _primitives.Dict) { + const dest = fetchDestination(obj.get(id)); + if (dest) { + return dest; + } + } + return null; + } + _readDests() { + const obj = this._catDict.get("Names"); + if (obj?.has("Dests")) { + return new _name_number_tree.NameTree(obj.getRaw("Dests"), this.xref); + } else if (this._catDict.has("Dests")) { + return this._catDict.get("Dests"); + } + return undefined; + } + get pageLabels() { + let obj = null; + try { + obj = this._readPageLabels(); + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + (0, _util.warn)("Unable to read page labels."); + } + return (0, _util.shadow)(this, "pageLabels", obj); + } + _readPageLabels() { + const obj = this._catDict.getRaw("PageLabels"); + if (!obj) { + return null; + } + const pageLabels = new Array(this.numPages); + let style = null, + prefix = ""; + const numberTree = new _name_number_tree.NumberTree(obj, this.xref); + const nums = numberTree.getAll(); + let currentLabel = "", + currentIndex = 1; + for (let i = 0, ii = this.numPages; i < ii; i++) { + const labelDict = nums.get(i); + if (labelDict !== undefined) { + if (!(labelDict instanceof _primitives.Dict)) { + throw new _util.FormatError("PageLabel is not a dictionary."); + } + if (labelDict.has("Type") && !(0, _primitives.isName)(labelDict.get("Type"), "PageLabel")) { + throw new _util.FormatError("Invalid type in PageLabel dictionary."); + } + if (labelDict.has("S")) { + const s = labelDict.get("S"); + if (!(s instanceof _primitives.Name)) { + throw new _util.FormatError("Invalid style in PageLabel dictionary."); + } + style = s.name; + } else { + style = null; + } + if (labelDict.has("P")) { + const p = labelDict.get("P"); + if (typeof p !== "string") { + throw new _util.FormatError("Invalid prefix in PageLabel dictionary."); + } + prefix = (0, _util.stringToPDFString)(p); + } else { + prefix = ""; + } + if (labelDict.has("St")) { + const st = labelDict.get("St"); + if (!(Number.isInteger(st) && st >= 1)) { + throw new _util.FormatError("Invalid start in PageLabel dictionary."); + } + currentIndex = st; + } else { + currentIndex = 1; + } + } + switch (style) { + case "D": + currentLabel = currentIndex; + break; + case "R": + case "r": + currentLabel = (0, _core_utils.toRomanNumerals)(currentIndex, style === "r"); + break; + case "A": + case "a": + const LIMIT = 26; + const A_UPPER_CASE = 0x41, + A_LOWER_CASE = 0x61; + const baseCharCode = style === "a" ? A_LOWER_CASE : A_UPPER_CASE; + const letterIndex = currentIndex - 1; + const character = String.fromCharCode(baseCharCode + letterIndex % LIMIT); + currentLabel = character.repeat(Math.floor(letterIndex / LIMIT) + 1); + break; + default: + if (style) { + throw new _util.FormatError(`Invalid style "${style}" in PageLabel dictionary.`); + } + currentLabel = ""; + } + pageLabels[i] = prefix + currentLabel; + currentIndex++; + } + return pageLabels; + } + get pageLayout() { + const obj = this._catDict.get("PageLayout"); + let pageLayout = ""; + if (obj instanceof _primitives.Name) { + switch (obj.name) { + case "SinglePage": + case "OneColumn": + case "TwoColumnLeft": + case "TwoColumnRight": + case "TwoPageLeft": + case "TwoPageRight": + pageLayout = obj.name; + } + } + return (0, _util.shadow)(this, "pageLayout", pageLayout); + } + get pageMode() { + const obj = this._catDict.get("PageMode"); + let pageMode = "UseNone"; + if (obj instanceof _primitives.Name) { + switch (obj.name) { + case "UseNone": + case "UseOutlines": + case "UseThumbs": + case "FullScreen": + case "UseOC": + case "UseAttachments": + pageMode = obj.name; + } + } + return (0, _util.shadow)(this, "pageMode", pageMode); + } + get viewerPreferences() { + const obj = this._catDict.get("ViewerPreferences"); + if (!(obj instanceof _primitives.Dict)) { + return (0, _util.shadow)(this, "viewerPreferences", null); + } + let prefs = null; + for (const key of obj.getKeys()) { + const value = obj.get(key); + let prefValue; + switch (key) { + case "HideToolbar": + case "HideMenubar": + case "HideWindowUI": + case "FitWindow": + case "CenterWindow": + case "DisplayDocTitle": + case "PickTrayByPDFSize": + if (typeof value === "boolean") { + prefValue = value; + } + break; + case "NonFullScreenPageMode": + if (value instanceof _primitives.Name) { + switch (value.name) { + case "UseNone": + case "UseOutlines": + case "UseThumbs": + case "UseOC": + prefValue = value.name; + break; + default: + prefValue = "UseNone"; + } + } + break; + case "Direction": + if (value instanceof _primitives.Name) { + switch (value.name) { + case "L2R": + case "R2L": + prefValue = value.name; + break; + default: + prefValue = "L2R"; + } + } + break; + case "ViewArea": + case "ViewClip": + case "PrintArea": + case "PrintClip": + if (value instanceof _primitives.Name) { + switch (value.name) { + case "MediaBox": + case "CropBox": + case "BleedBox": + case "TrimBox": + case "ArtBox": + prefValue = value.name; + break; + default: + prefValue = "CropBox"; + } + } + break; + case "PrintScaling": + if (value instanceof _primitives.Name) { + switch (value.name) { + case "None": + case "AppDefault": + prefValue = value.name; + break; + default: + prefValue = "AppDefault"; + } + } + break; + case "Duplex": + if (value instanceof _primitives.Name) { + switch (value.name) { + case "Simplex": + case "DuplexFlipShortEdge": + case "DuplexFlipLongEdge": + prefValue = value.name; + break; + default: + prefValue = "None"; + } + } + break; + case "PrintPageRange": + if (Array.isArray(value) && value.length % 2 === 0) { + const isValid = value.every((page, i, arr) => { + return Number.isInteger(page) && page > 0 && (i === 0 || page >= arr[i - 1]) && page <= this.numPages; + }); + if (isValid) { + prefValue = value; + } + } + break; + case "NumCopies": + if (Number.isInteger(value) && value > 0) { + prefValue = value; + } + break; + default: + (0, _util.warn)(`Ignoring non-standard key in ViewerPreferences: ${key}.`); + continue; + } + if (prefValue === undefined) { + (0, _util.warn)(`Bad value, for key "${key}", in ViewerPreferences: ${value}.`); + continue; + } + if (!prefs) { + prefs = Object.create(null); + } + prefs[key] = prefValue; + } + return (0, _util.shadow)(this, "viewerPreferences", prefs); + } + get openAction() { + const obj = this._catDict.get("OpenAction"); + const openAction = Object.create(null); + if (obj instanceof _primitives.Dict) { + const destDict = new _primitives.Dict(this.xref); + destDict.set("A", obj); + const resultObj = { + url: null, + dest: null, + action: null + }; + Catalog.parseDestDictionary({ + destDict, + resultObj + }); + if (Array.isArray(resultObj.dest)) { + openAction.dest = resultObj.dest; + } else if (resultObj.action) { + openAction.action = resultObj.action; + } + } else if (Array.isArray(obj)) { + openAction.dest = obj; + } + return (0, _util.shadow)(this, "openAction", (0, _util.objectSize)(openAction) > 0 ? openAction : null); + } + get attachments() { + const obj = this._catDict.get("Names"); + let attachments = null; + if (obj instanceof _primitives.Dict && obj.has("EmbeddedFiles")) { + const nameTree = new _name_number_tree.NameTree(obj.getRaw("EmbeddedFiles"), this.xref); + for (const [key, value] of nameTree.getAll()) { + const fs = new _file_spec.FileSpec(value, this.xref); + if (!attachments) { + attachments = Object.create(null); + } + attachments[(0, _util.stringToPDFString)(key)] = fs.serializable; + } + } + return (0, _util.shadow)(this, "attachments", attachments); + } + get xfaImages() { + const obj = this._catDict.get("Names"); + let xfaImages = null; + if (obj instanceof _primitives.Dict && obj.has("XFAImages")) { + const nameTree = new _name_number_tree.NameTree(obj.getRaw("XFAImages"), this.xref); + for (const [key, value] of nameTree.getAll()) { + if (!xfaImages) { + xfaImages = new _primitives.Dict(this.xref); + } + xfaImages.set((0, _util.stringToPDFString)(key), value); + } + } + return (0, _util.shadow)(this, "xfaImages", xfaImages); + } + _collectJavaScript() { + const obj = this._catDict.get("Names"); + let javaScript = null; + function appendIfJavaScriptDict(name, jsDict) { + if (!(jsDict instanceof _primitives.Dict)) { + return; + } + if (!(0, _primitives.isName)(jsDict.get("S"), "JavaScript")) { + return; + } + let js = jsDict.get("JS"); + if (js instanceof _base_stream.BaseStream) { + js = js.getString(); + } else if (typeof js !== "string") { + return; + } + js = (0, _util.stringToPDFString)(js).replaceAll("\x00", ""); + (javaScript ||= new Map()).set(name, js); + } + if (obj instanceof _primitives.Dict && obj.has("JavaScript")) { + const nameTree = new _name_number_tree.NameTree(obj.getRaw("JavaScript"), this.xref); + for (const [key, value] of nameTree.getAll()) { + appendIfJavaScriptDict((0, _util.stringToPDFString)(key), value); + } + } + const openAction = this._catDict.get("OpenAction"); + if (openAction) { + appendIfJavaScriptDict("OpenAction", openAction); + } + return javaScript; + } + get javaScript() { + const javaScript = this._collectJavaScript(); + return (0, _util.shadow)(this, "javaScript", javaScript ? [...javaScript.values()] : null); + } + get jsActions() { + const javaScript = this._collectJavaScript(); + let actions = (0, _core_utils.collectActions)(this.xref, this._catDict, _util.DocumentActionEventType); + if (javaScript) { + if (!actions) { + actions = Object.create(null); + } + for (const [key, val] of javaScript) { + if (key in actions) { + actions[key].push(val); + } else { + actions[key] = [val]; + } + } + } + return (0, _util.shadow)(this, "jsActions", actions); + } + async fontFallback(id, handler) { + const translatedFonts = await Promise.all(this.fontCache); + for (const translatedFont of translatedFonts) { + if (translatedFont.loadedName === id) { + translatedFont.fallback(handler); + return; + } + } + } + async cleanup(manuallyTriggered = false) { + (0, _cleanup_helper.clearGlobalCaches)(); + this.globalImageCache.clear(manuallyTriggered); + this.pageKidsCountCache.clear(); + this.pageIndexCache.clear(); + this.nonBlendModesSet.clear(); + const translatedFonts = await Promise.all(this.fontCache); + for (const { + dict + } of translatedFonts) { + delete dict.cacheKey; + } + this.fontCache.clear(); + this.builtInCMapCache.clear(); + this.standardFontDataCache.clear(); + this.systemFontCache.clear(); + } + async getPageDict(pageIndex) { + const nodesToVisit = [this.toplevelPagesDict]; + const visitedNodes = new _primitives.RefSet(); + const pagesRef = this._catDict.getRaw("Pages"); + if (pagesRef instanceof _primitives.Ref) { + visitedNodes.put(pagesRef); + } + const xref = this.xref, + pageKidsCountCache = this.pageKidsCountCache, + pageIndexCache = this.pageIndexCache; + let currentPageIndex = 0; + while (nodesToVisit.length) { + const currentNode = nodesToVisit.pop(); + if (currentNode instanceof _primitives.Ref) { + const count = pageKidsCountCache.get(currentNode); + if (count >= 0 && currentPageIndex + count <= pageIndex) { + currentPageIndex += count; + continue; + } + if (visitedNodes.has(currentNode)) { + throw new _util.FormatError("Pages tree contains circular reference."); + } + visitedNodes.put(currentNode); + const obj = await xref.fetchAsync(currentNode); + if (obj instanceof _primitives.Dict) { + let type = obj.getRaw("Type"); + if (type instanceof _primitives.Ref) { + type = await xref.fetchAsync(type); + } + if ((0, _primitives.isName)(type, "Page") || !obj.has("Kids")) { + if (!pageKidsCountCache.has(currentNode)) { + pageKidsCountCache.put(currentNode, 1); + } + if (!pageIndexCache.has(currentNode)) { + pageIndexCache.put(currentNode, currentPageIndex); + } + if (currentPageIndex === pageIndex) { + return [obj, currentNode]; + } + currentPageIndex++; + continue; + } + } + nodesToVisit.push(obj); + continue; + } + if (!(currentNode instanceof _primitives.Dict)) { + throw new _util.FormatError("Page dictionary kid reference points to wrong type of object."); + } + const { + objId + } = currentNode; + let count = currentNode.getRaw("Count"); + if (count instanceof _primitives.Ref) { + count = await xref.fetchAsync(count); + } + if (Number.isInteger(count) && count >= 0) { + if (objId && !pageKidsCountCache.has(objId)) { + pageKidsCountCache.put(objId, count); + } + if (currentPageIndex + count <= pageIndex) { + currentPageIndex += count; + continue; + } + } + let kids = currentNode.getRaw("Kids"); + if (kids instanceof _primitives.Ref) { + kids = await xref.fetchAsync(kids); + } + if (!Array.isArray(kids)) { + let type = currentNode.getRaw("Type"); + if (type instanceof _primitives.Ref) { + type = await xref.fetchAsync(type); + } + if ((0, _primitives.isName)(type, "Page") || !currentNode.has("Kids")) { + if (currentPageIndex === pageIndex) { + return [currentNode, null]; + } + currentPageIndex++; + continue; + } + throw new _util.FormatError("Page dictionary kids object is not an array."); + } + for (let last = kids.length - 1; last >= 0; last--) { + nodesToVisit.push(kids[last]); + } + } + throw new Error(`Page index ${pageIndex} not found.`); + } + async getAllPageDicts(recoveryMode = false) { + const { + ignoreErrors + } = this.pdfManager.evaluatorOptions; + const queue = [{ + currentNode: this.toplevelPagesDict, + posInKids: 0 + }]; + const visitedNodes = new _primitives.RefSet(); + const pagesRef = this._catDict.getRaw("Pages"); + if (pagesRef instanceof _primitives.Ref) { + visitedNodes.put(pagesRef); + } + const map = new Map(), + xref = this.xref, + pageIndexCache = this.pageIndexCache; + let pageIndex = 0; + function addPageDict(pageDict, pageRef) { + if (pageRef && !pageIndexCache.has(pageRef)) { + pageIndexCache.put(pageRef, pageIndex); + } + map.set(pageIndex++, [pageDict, pageRef]); + } + function addPageError(error) { + if (error instanceof _core_utils.XRefEntryException && !recoveryMode) { + throw error; + } + if (recoveryMode && ignoreErrors && pageIndex === 0) { + (0, _util.warn)(`getAllPageDicts - Skipping invalid first page: "${error}".`); + error = _primitives.Dict.empty; + } + map.set(pageIndex++, [error, null]); + } + while (queue.length > 0) { + const queueItem = queue.at(-1); + const { + currentNode, + posInKids + } = queueItem; + let kids = currentNode.getRaw("Kids"); + if (kids instanceof _primitives.Ref) { + try { + kids = await xref.fetchAsync(kids); + } catch (ex) { + addPageError(ex); + break; + } + } + if (!Array.isArray(kids)) { + addPageError(new _util.FormatError("Page dictionary kids object is not an array.")); + break; + } + if (posInKids >= kids.length) { + queue.pop(); + continue; + } + const kidObj = kids[posInKids]; + let obj; + if (kidObj instanceof _primitives.Ref) { + if (visitedNodes.has(kidObj)) { + addPageError(new _util.FormatError("Pages tree contains circular reference.")); + break; + } + visitedNodes.put(kidObj); + try { + obj = await xref.fetchAsync(kidObj); + } catch (ex) { + addPageError(ex); + break; + } + } else { + obj = kidObj; + } + if (!(obj instanceof _primitives.Dict)) { + addPageError(new _util.FormatError("Page dictionary kid reference points to wrong type of object.")); + break; + } + let type = obj.getRaw("Type"); + if (type instanceof _primitives.Ref) { + try { + type = await xref.fetchAsync(type); + } catch (ex) { + addPageError(ex); + break; + } + } + if ((0, _primitives.isName)(type, "Page") || !obj.has("Kids")) { + addPageDict(obj, kidObj instanceof _primitives.Ref ? kidObj : null); + } else { + queue.push({ + currentNode: obj, + posInKids: 0 + }); + } + queueItem.posInKids++; + } + return map; + } + getPageIndex(pageRef) { + const cachedPageIndex = this.pageIndexCache.get(pageRef); + if (cachedPageIndex !== undefined) { + return Promise.resolve(cachedPageIndex); + } + const xref = this.xref; + function pagesBeforeRef(kidRef) { + let total = 0, + parentRef; + return xref.fetchAsync(kidRef).then(function (node) { + if ((0, _primitives.isRefsEqual)(kidRef, pageRef) && !(0, _primitives.isDict)(node, "Page") && !(node instanceof _primitives.Dict && !node.has("Type") && node.has("Contents"))) { + throw new _util.FormatError("The reference does not point to a /Page dictionary."); + } + if (!node) { + return null; + } + if (!(node instanceof _primitives.Dict)) { + throw new _util.FormatError("Node must be a dictionary."); + } + parentRef = node.getRaw("Parent"); + return node.getAsync("Parent"); + }).then(function (parent) { + if (!parent) { + return null; + } + if (!(parent instanceof _primitives.Dict)) { + throw new _util.FormatError("Parent must be a dictionary."); + } + return parent.getAsync("Kids"); + }).then(function (kids) { + if (!kids) { + return null; + } + const kidPromises = []; + let found = false; + for (const kid of kids) { + if (!(kid instanceof _primitives.Ref)) { + throw new _util.FormatError("Kid must be a reference."); + } + if ((0, _primitives.isRefsEqual)(kid, kidRef)) { + found = true; + break; + } + kidPromises.push(xref.fetchAsync(kid).then(function (obj) { + if (!(obj instanceof _primitives.Dict)) { + throw new _util.FormatError("Kid node must be a dictionary."); + } + if (obj.has("Count")) { + total += obj.get("Count"); + } else { + total++; + } + })); + } + if (!found) { + throw new _util.FormatError("Kid reference not found in parent's kids."); + } + return Promise.all(kidPromises).then(function () { + return [total, parentRef]; + }); + }); + } + let total = 0; + const next = ref => pagesBeforeRef(ref).then(args => { + if (!args) { + this.pageIndexCache.put(pageRef, total); + return total; + } + const [count, parentRef] = args; + total += count; + return next(parentRef); + }); + return next(pageRef); + } + get baseUrl() { + const uri = this._catDict.get("URI"); + if (uri instanceof _primitives.Dict) { + const base = uri.get("Base"); + if (typeof base === "string") { + const absoluteUrl = (0, _util.createValidAbsoluteUrl)(base, null, { + tryConvertEncoding: true + }); + if (absoluteUrl) { + return (0, _util.shadow)(this, "baseUrl", absoluteUrl.href); + } + } + } + return (0, _util.shadow)(this, "baseUrl", null); + } + static parseDestDictionary(params) { + const destDict = params.destDict; + if (!(destDict instanceof _primitives.Dict)) { + (0, _util.warn)("parseDestDictionary: `destDict` must be a dictionary."); + return; + } + const resultObj = params.resultObj; + if (typeof resultObj !== "object") { + (0, _util.warn)("parseDestDictionary: `resultObj` must be an object."); + return; + } + const docBaseUrl = params.docBaseUrl || null; + const docAttachments = params.docAttachments || null; + let action = destDict.get("A"), + url, + dest; + if (!(action instanceof _primitives.Dict)) { + if (destDict.has("Dest")) { + action = destDict.get("Dest"); + } else { + action = destDict.get("AA"); + if (action instanceof _primitives.Dict) { + if (action.has("D")) { + action = action.get("D"); + } else if (action.has("U")) { + action = action.get("U"); + } + } + } + } + if (action instanceof _primitives.Dict) { + const actionType = action.get("S"); + if (!(actionType instanceof _primitives.Name)) { + (0, _util.warn)("parseDestDictionary: Invalid type in Action dictionary."); + return; + } + const actionName = actionType.name; + switch (actionName) { + case "ResetForm": + const flags = action.get("Flags"); + const include = ((typeof flags === "number" ? flags : 0) & 1) === 0; + const fields = []; + const refs = []; + for (const obj of action.get("Fields") || []) { + if (obj instanceof _primitives.Ref) { + refs.push(obj.toString()); + } else if (typeof obj === "string") { + fields.push((0, _util.stringToPDFString)(obj)); + } + } + resultObj.resetForm = { + fields, + refs, + include + }; + break; + case "URI": + url = action.get("URI"); + if (url instanceof _primitives.Name) { + url = "/" + url.name; + } + break; + case "GoTo": + dest = action.get("D"); + break; + case "Launch": + case "GoToR": + const urlDict = action.get("F"); + if (urlDict instanceof _primitives.Dict) { + url = urlDict.get("F") || null; + } else if (typeof urlDict === "string") { + url = urlDict; + } + let remoteDest = action.get("D"); + if (remoteDest) { + if (remoteDest instanceof _primitives.Name) { + remoteDest = remoteDest.name; + } + if (typeof url === "string") { + const baseUrl = url.split("#")[0]; + if (typeof remoteDest === "string") { + url = baseUrl + "#" + remoteDest; + } else if (Array.isArray(remoteDest)) { + url = baseUrl + "#" + JSON.stringify(remoteDest); + } + } + } + const newWindow = action.get("NewWindow"); + if (typeof newWindow === "boolean") { + resultObj.newWindow = newWindow; + } + break; + case "GoToE": + const target = action.get("T"); + let attachment; + if (docAttachments && target instanceof _primitives.Dict) { + const relationship = target.get("R"); + const name = target.get("N"); + if ((0, _primitives.isName)(relationship, "C") && typeof name === "string") { + attachment = docAttachments[(0, _util.stringToPDFString)(name)]; + } + } + if (attachment) { + resultObj.attachment = attachment; + } else { + (0, _util.warn)(`parseDestDictionary - unimplemented "GoToE" action.`); + } + break; + case "Named": + const namedAction = action.get("N"); + if (namedAction instanceof _primitives.Name) { + resultObj.action = namedAction.name; + } + break; + case "SetOCGState": + const state = action.get("State"); + const preserveRB = action.get("PreserveRB"); + if (!Array.isArray(state) || state.length === 0) { + break; + } + const stateArr = []; + for (const elem of state) { + if (elem instanceof _primitives.Name) { + switch (elem.name) { + case "ON": + case "OFF": + case "Toggle": + stateArr.push(elem.name); + break; + } + } else if (elem instanceof _primitives.Ref) { + stateArr.push(elem.toString()); + } + } + if (stateArr.length !== state.length) { + break; + } + resultObj.setOCGState = { + state: stateArr, + preserveRB: typeof preserveRB === "boolean" ? preserveRB : true + }; + break; + case "JavaScript": + const jsAction = action.get("JS"); + let js; + if (jsAction instanceof _base_stream.BaseStream) { + js = jsAction.getString(); + } else if (typeof jsAction === "string") { + js = jsAction; + } + const jsURL = js && (0, _core_utils.recoverJsURL)((0, _util.stringToPDFString)(js)); + if (jsURL) { + url = jsURL.url; + resultObj.newWindow = jsURL.newWindow; + break; + } + default: + if (actionName === "JavaScript" || actionName === "SubmitForm") { + break; + } + (0, _util.warn)(`parseDestDictionary - unsupported action: "${actionName}".`); + break; + } + } else if (destDict.has("Dest")) { + dest = destDict.get("Dest"); + } + if (typeof url === "string") { + const absoluteUrl = (0, _util.createValidAbsoluteUrl)(url, docBaseUrl, { + addDefaultProtocol: true, + tryConvertEncoding: true + }); + if (absoluteUrl) { + resultObj.url = absoluteUrl.href; + } + resultObj.unsafeUrl = url; + } + if (dest) { + if (dest instanceof _primitives.Name) { + dest = dest.name; + } + if (typeof dest === "string") { + resultObj.dest = (0, _util.stringToPDFString)(dest); + } else if (Array.isArray(dest)) { + resultObj.dest = dest; + } + } + } +} +exports.Catalog = Catalog; + +/***/ }), +/* 71 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.NumberTree = exports.NameTree = void 0; +var _primitives = __w_pdfjs_require__(4); +var _util = __w_pdfjs_require__(2); +class NameOrNumberTree { + constructor(root, xref, type) { + if (this.constructor === NameOrNumberTree) { + (0, _util.unreachable)("Cannot initialize NameOrNumberTree."); + } + this.root = root; + this.xref = xref; + this._type = type; + } + getAll() { + const map = new Map(); + if (!this.root) { + return map; + } + const xref = this.xref; + const processed = new _primitives.RefSet(); + processed.put(this.root); + const queue = [this.root]; + while (queue.length > 0) { + const obj = xref.fetchIfRef(queue.shift()); + if (!(obj instanceof _primitives.Dict)) { + continue; + } + if (obj.has("Kids")) { + const kids = obj.get("Kids"); + if (!Array.isArray(kids)) { + continue; + } + for (const kid of kids) { + if (processed.has(kid)) { + throw new _util.FormatError(`Duplicate entry in "${this._type}" tree.`); + } + queue.push(kid); + processed.put(kid); + } + continue; + } + const entries = obj.get(this._type); + if (!Array.isArray(entries)) { + continue; + } + for (let i = 0, ii = entries.length; i < ii; i += 2) { + map.set(xref.fetchIfRef(entries[i]), xref.fetchIfRef(entries[i + 1])); + } + } + return map; + } + get(key) { + if (!this.root) { + return null; + } + const xref = this.xref; + let kidsOrEntries = xref.fetchIfRef(this.root); + let loopCount = 0; + const MAX_LEVELS = 10; + while (kidsOrEntries.has("Kids")) { + if (++loopCount > MAX_LEVELS) { + (0, _util.warn)(`Search depth limit reached for "${this._type}" tree.`); + return null; + } + const kids = kidsOrEntries.get("Kids"); + if (!Array.isArray(kids)) { + return null; + } + let l = 0, + r = kids.length - 1; + while (l <= r) { + const m = l + r >> 1; + const kid = xref.fetchIfRef(kids[m]); + const limits = kid.get("Limits"); + if (key < xref.fetchIfRef(limits[0])) { + r = m - 1; + } else if (key > xref.fetchIfRef(limits[1])) { + l = m + 1; + } else { + kidsOrEntries = kid; + break; + } + } + if (l > r) { + return null; + } + } + const entries = kidsOrEntries.get(this._type); + if (Array.isArray(entries)) { + let l = 0, + r = entries.length - 2; + while (l <= r) { + const tmp = l + r >> 1, + m = tmp + (tmp & 1); + const currentKey = xref.fetchIfRef(entries[m]); + if (key < currentKey) { + r = m - 2; + } else if (key > currentKey) { + l = m + 2; + } else { + return xref.fetchIfRef(entries[m + 1]); + } + } + } + return null; + } +} +class NameTree extends NameOrNumberTree { + constructor(root, xref) { + super(root, xref, "Names"); + } +} +exports.NameTree = NameTree; +class NumberTree extends NameOrNumberTree { + constructor(root, xref) { + super(root, xref, "Nums"); + } +} +exports.NumberTree = NumberTree; + +/***/ }), +/* 72 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.clearGlobalCaches = clearGlobalCaches; +var _primitives = __w_pdfjs_require__(4); +var _unicode = __w_pdfjs_require__(40); +function clearGlobalCaches() { + (0, _primitives.clearPrimitiveCaches)(); + (0, _unicode.clearUnicodeCaches)(); +} + +/***/ }), +/* 73 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.FileSpec = void 0; +var _util = __w_pdfjs_require__(2); +var _base_stream = __w_pdfjs_require__(5); +var _primitives = __w_pdfjs_require__(4); +function pickPlatformItem(dict) { + if (dict.has("UF")) { + return dict.get("UF"); + } else if (dict.has("F")) { + return dict.get("F"); + } else if (dict.has("Unix")) { + return dict.get("Unix"); + } else if (dict.has("Mac")) { + return dict.get("Mac"); + } else if (dict.has("DOS")) { + return dict.get("DOS"); + } + return null; +} +class FileSpec { + constructor(root, xref) { + if (!(root instanceof _primitives.Dict)) { + return; + } + this.xref = xref; + this.root = root; + if (root.has("FS")) { + this.fs = root.get("FS"); + } + this.description = root.has("Desc") ? (0, _util.stringToPDFString)(root.get("Desc")) : ""; + if (root.has("RF")) { + (0, _util.warn)("Related file specifications are not supported"); + } + this.contentAvailable = true; + if (!root.has("EF")) { + this.contentAvailable = false; + (0, _util.warn)("Non-embedded file specifications are not supported"); + } + } + get filename() { + if (!this._filename && this.root) { + const filename = pickPlatformItem(this.root) || "unnamed"; + this._filename = (0, _util.stringToPDFString)(filename).replaceAll("\\\\", "\\").replaceAll("\\/", "/").replaceAll("\\", "/"); + } + return this._filename; + } + get content() { + if (!this.contentAvailable) { + return null; + } + if (!this.contentRef && this.root) { + this.contentRef = pickPlatformItem(this.root.get("EF")); + } + let content = null; + if (this.contentRef) { + const fileObj = this.xref.fetchIfRef(this.contentRef); + if (fileObj instanceof _base_stream.BaseStream) { + content = fileObj.getBytes(); + } else { + (0, _util.warn)("Embedded file specification points to non-existing/invalid content"); + } + } else { + (0, _util.warn)("Embedded file specification does not have a content"); + } + return content; + } + get serializable() { + return { + filename: this.filename, + content: this.content + }; + } +} +exports.FileSpec = FileSpec; + +/***/ }), +/* 74 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MetadataParser = void 0; +var _xml_parser = __w_pdfjs_require__(67); +class MetadataParser { + constructor(data) { + data = this._repair(data); + const parser = new _xml_parser.SimpleXMLParser({ + lowerCaseName: true + }); + const xmlDocument = parser.parseFromString(data); + this._metadataMap = new Map(); + this._data = data; + if (xmlDocument) { + this._parse(xmlDocument); + } + } + _repair(data) { + return data.replace(/^[^<]+/, "").replaceAll(/>\\376\\377([^<]+)/g, function (all, codes) { + const bytes = codes.replaceAll(/\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) { + return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1); + }).replaceAll(/&(amp|apos|gt|lt|quot);/g, function (str, name) { + switch (name) { + case "amp": + return "&"; + case "apos": + return "'"; + case "gt": + return ">"; + case "lt": + return "<"; + case "quot": + return '"'; + } + throw new Error(`_repair: ${name} isn't defined.`); + }); + const charBuf = [">"]; + for (let i = 0, ii = bytes.length; i < ii; i += 2) { + const code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1); + if (code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38) { + charBuf.push(String.fromCharCode(code)); + } else { + charBuf.push("&#x" + (0x10000 + code).toString(16).substring(1) + ";"); + } + } + return charBuf.join(""); + }); + } + _getSequence(entry) { + const name = entry.nodeName; + if (name !== "rdf:bag" && name !== "rdf:seq" && name !== "rdf:alt") { + return null; + } + return entry.childNodes.filter(node => node.nodeName === "rdf:li"); + } + _parseArray(entry) { + if (!entry.hasChildNodes()) { + return; + } + const [seqNode] = entry.childNodes; + const sequence = this._getSequence(seqNode) || []; + this._metadataMap.set(entry.nodeName, sequence.map(node => node.textContent.trim())); + } + _parse(xmlDocument) { + let rdf = xmlDocument.documentElement; + if (rdf.nodeName !== "rdf:rdf") { + rdf = rdf.firstChild; + while (rdf && rdf.nodeName !== "rdf:rdf") { + rdf = rdf.nextSibling; + } + } + if (!rdf || rdf.nodeName !== "rdf:rdf" || !rdf.hasChildNodes()) { + return; + } + for (const desc of rdf.childNodes) { + if (desc.nodeName !== "rdf:description") { + continue; + } + for (const entry of desc.childNodes) { + const name = entry.nodeName; + switch (name) { + case "#text": + continue; + case "dc:creator": + case "dc:subject": + this._parseArray(entry); + continue; + } + this._metadataMap.set(name, entry.textContent.trim()); + } + } + } + get serializable() { + return { + parsedData: this._metadataMap, + rawData: this._data + }; + } +} +exports.MetadataParser = MetadataParser; + +/***/ }), +/* 75 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.StructTreeRoot = exports.StructTreePage = void 0; +var _primitives = __w_pdfjs_require__(4); +var _util = __w_pdfjs_require__(2); +var _name_number_tree = __w_pdfjs_require__(71); +const MAX_DEPTH = 40; +const StructElementType = { + PAGE_CONTENT: "PAGE_CONTENT", + STREAM_CONTENT: "STREAM_CONTENT", + OBJECT: "OBJECT", + ELEMENT: "ELEMENT" +}; +class StructTreeRoot { + constructor(rootDict) { + this.dict = rootDict; + this.roleMap = new Map(); + } + init() { + this.readRoleMap(); + } + readRoleMap() { + const roleMapDict = this.dict.get("RoleMap"); + if (!(roleMapDict instanceof _primitives.Dict)) { + return; + } + roleMapDict.forEach((key, value) => { + if (!(value instanceof _primitives.Name)) { + return; + } + this.roleMap.set(key, value.name); + }); + } +} +exports.StructTreeRoot = StructTreeRoot; +class StructElementNode { + constructor(tree, dict) { + this.tree = tree; + this.dict = dict; + this.kids = []; + this.parseKids(); + } + get role() { + const nameObj = this.dict.get("S"); + const name = nameObj instanceof _primitives.Name ? nameObj.name : ""; + const { + root + } = this.tree; + if (root.roleMap.has(name)) { + return root.roleMap.get(name); + } + return name; + } + parseKids() { + let pageObjId = null; + const objRef = this.dict.getRaw("Pg"); + if (objRef instanceof _primitives.Ref) { + pageObjId = objRef.toString(); + } + const kids = this.dict.get("K"); + if (Array.isArray(kids)) { + for (const kid of kids) { + const element = this.parseKid(pageObjId, kid); + if (element) { + this.kids.push(element); + } + } + } else { + const element = this.parseKid(pageObjId, kids); + if (element) { + this.kids.push(element); + } + } + } + parseKid(pageObjId, kid) { + if (Number.isInteger(kid)) { + if (this.tree.pageDict.objId !== pageObjId) { + return null; + } + return new StructElement({ + type: StructElementType.PAGE_CONTENT, + mcid: kid, + pageObjId + }); + } + let kidDict = null; + if (kid instanceof _primitives.Ref) { + kidDict = this.dict.xref.fetch(kid); + } else if (kid instanceof _primitives.Dict) { + kidDict = kid; + } + if (!kidDict) { + return null; + } + const pageRef = kidDict.getRaw("Pg"); + if (pageRef instanceof _primitives.Ref) { + pageObjId = pageRef.toString(); + } + const type = kidDict.get("Type") instanceof _primitives.Name ? kidDict.get("Type").name : null; + if (type === "MCR") { + if (this.tree.pageDict.objId !== pageObjId) { + return null; + } + return new StructElement({ + type: StructElementType.STREAM_CONTENT, + refObjId: kidDict.getRaw("Stm") instanceof _primitives.Ref ? kidDict.getRaw("Stm").toString() : null, + pageObjId, + mcid: kidDict.get("MCID") + }); + } + if (type === "OBJR") { + if (this.tree.pageDict.objId !== pageObjId) { + return null; + } + return new StructElement({ + type: StructElementType.OBJECT, + refObjId: kidDict.getRaw("Obj") instanceof _primitives.Ref ? kidDict.getRaw("Obj").toString() : null, + pageObjId + }); + } + return new StructElement({ + type: StructElementType.ELEMENT, + dict: kidDict + }); + } +} +class StructElement { + constructor({ + type, + dict = null, + mcid = null, + pageObjId = null, + refObjId = null + }) { + this.type = type; + this.dict = dict; + this.mcid = mcid; + this.pageObjId = pageObjId; + this.refObjId = refObjId; + this.parentNode = null; + } +} +class StructTreePage { + constructor(structTreeRoot, pageDict) { + this.root = structTreeRoot; + this.rootDict = structTreeRoot ? structTreeRoot.dict : null; + this.pageDict = pageDict; + this.nodes = []; + } + parse() { + if (!this.root || !this.rootDict) { + return; + } + const parentTree = this.rootDict.get("ParentTree"); + if (!parentTree) { + return; + } + const id = this.pageDict.get("StructParents"); + if (!Number.isInteger(id)) { + return; + } + const numberTree = new _name_number_tree.NumberTree(parentTree, this.rootDict.xref); + const parentArray = numberTree.get(id); + if (!Array.isArray(parentArray)) { + return; + } + const map = new Map(); + for (const ref of parentArray) { + if (ref instanceof _primitives.Ref) { + this.addNode(this.rootDict.xref.fetch(ref), map); + } + } + } + addNode(dict, map, level = 0) { + if (level > MAX_DEPTH) { + (0, _util.warn)("StructTree MAX_DEPTH reached."); + return null; + } + if (map.has(dict)) { + return map.get(dict); + } + const element = new StructElementNode(this, dict); + map.set(dict, element); + const parent = dict.get("P"); + if (!parent || (0, _primitives.isName)(parent.get("Type"), "StructTreeRoot")) { + if (!this.addTopLevelNode(dict, element)) { + map.delete(dict); + } + return element; + } + const parentNode = this.addNode(parent, map, level + 1); + if (!parentNode) { + return element; + } + let save = false; + for (const kid of parentNode.kids) { + if (kid.type === StructElementType.ELEMENT && kid.dict === dict) { + kid.parentNode = element; + save = true; + } + } + if (!save) { + map.delete(dict); + } + return element; + } + addTopLevelNode(dict, element) { + const obj = this.rootDict.get("K"); + if (!obj) { + return false; + } + if (obj instanceof _primitives.Dict) { + if (obj.objId !== dict.objId) { + return false; + } + this.nodes[0] = element; + return true; + } + if (!Array.isArray(obj)) { + return true; + } + let save = false; + for (let i = 0; i < obj.length; i++) { + const kidRef = obj[i]; + if (kidRef?.toString() === dict.objId) { + this.nodes[i] = element; + save = true; + } + } + return save; + } + get serializable() { + function nodeToSerializable(node, parent, level = 0) { + if (level > MAX_DEPTH) { + (0, _util.warn)("StructTree too deep to be fully serialized."); + return; + } + const obj = Object.create(null); + obj.role = node.role; + obj.children = []; + parent.children.push(obj); + const alt = node.dict.get("Alt"); + if (typeof alt === "string") { + obj.alt = (0, _util.stringToPDFString)(alt); + } + const lang = node.dict.get("Lang"); + if (typeof lang === "string") { + obj.lang = (0, _util.stringToPDFString)(lang); + } + for (const kid of node.kids) { + const kidElement = kid.type === StructElementType.ELEMENT ? kid.parentNode : null; + if (kidElement) { + nodeToSerializable(kidElement, obj, level + 1); + continue; + } else if (kid.type === StructElementType.PAGE_CONTENT || kid.type === StructElementType.STREAM_CONTENT) { + obj.children.push({ + type: "content", + id: `p${kid.pageObjId}_mc${kid.mcid}` + }); + } else if (kid.type === StructElementType.OBJECT) { + obj.children.push({ + type: "object", + id: kid.refObjId + }); + } + } + } + const root = Object.create(null); + root.children = []; + root.role = "Root"; + for (const child of this.nodes) { + if (!child) { + continue; + } + nodeToSerializable(child, root); + } + return root; + } +} +exports.StructTreePage = StructTreePage; + +/***/ }), +/* 76 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ObjectLoader = void 0; +var _primitives = __w_pdfjs_require__(4); +var _base_stream = __w_pdfjs_require__(5); +var _core_utils = __w_pdfjs_require__(3); +var _util = __w_pdfjs_require__(2); +function mayHaveChildren(value) { + return value instanceof _primitives.Ref || value instanceof _primitives.Dict || value instanceof _base_stream.BaseStream || Array.isArray(value); +} +function addChildren(node, nodesToVisit) { + if (node instanceof _primitives.Dict) { + node = node.getRawValues(); + } else if (node instanceof _base_stream.BaseStream) { + node = node.dict.getRawValues(); + } else if (!Array.isArray(node)) { + return; + } + for (const rawValue of node) { + if (mayHaveChildren(rawValue)) { + nodesToVisit.push(rawValue); + } + } +} +class ObjectLoader { + constructor(dict, keys, xref) { + this.dict = dict; + this.keys = keys; + this.xref = xref; + this.refSet = null; + } + async load() { + if (this.xref.stream.isDataLoaded) { + return undefined; + } + const { + keys, + dict + } = this; + this.refSet = new _primitives.RefSet(); + const nodesToVisit = []; + for (const key of keys) { + const rawValue = dict.getRaw(key); + if (rawValue !== undefined) { + nodesToVisit.push(rawValue); + } + } + return this._walk(nodesToVisit); + } + async _walk(nodesToVisit) { + const nodesToRevisit = []; + const pendingRequests = []; + while (nodesToVisit.length) { + let currentNode = nodesToVisit.pop(); + if (currentNode instanceof _primitives.Ref) { + if (this.refSet.has(currentNode)) { + continue; + } + try { + this.refSet.put(currentNode); + currentNode = this.xref.fetch(currentNode); + } catch (ex) { + if (!(ex instanceof _core_utils.MissingDataException)) { + (0, _util.warn)(`ObjectLoader._walk - requesting all data: "${ex}".`); + this.refSet = null; + const { + manager + } = this.xref.stream; + return manager.requestAllChunks(); + } + nodesToRevisit.push(currentNode); + pendingRequests.push({ + begin: ex.begin, + end: ex.end + }); + } + } + if (currentNode instanceof _base_stream.BaseStream) { + const baseStreams = currentNode.getBaseStreams(); + if (baseStreams) { + let foundMissingData = false; + for (const stream of baseStreams) { + if (stream.isDataLoaded) { + continue; + } + foundMissingData = true; + pendingRequests.push({ + begin: stream.start, + end: stream.end + }); + } + if (foundMissingData) { + nodesToRevisit.push(currentNode); + } + } + } + addChildren(currentNode, nodesToVisit); + } + if (pendingRequests.length) { + await this.xref.stream.manager.requestRanges(pendingRequests); + for (const node of nodesToRevisit) { + if (node instanceof _primitives.Ref) { + this.refSet.remove(node); + } + } + return this._walk(nodesToRevisit); + } + this.refSet = null; + return undefined; + } +} +exports.ObjectLoader = ObjectLoader; + +/***/ }), +/* 77 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XFAFactory = void 0; +var _symbol_utils = __w_pdfjs_require__(78); +var _bind = __w_pdfjs_require__(79); +var _data = __w_pdfjs_require__(89); +var _fonts = __w_pdfjs_require__(85); +var _utils = __w_pdfjs_require__(84); +var _util = __w_pdfjs_require__(2); +var _parser = __w_pdfjs_require__(90); +var _xhtml = __w_pdfjs_require__(100); +class XFAFactory { + constructor(data) { + try { + this.root = new _parser.XFAParser().parse(XFAFactory._createDocument(data)); + const binder = new _bind.Binder(this.root); + this.form = binder.bind(); + this.dataHandler = new _data.DataHandler(this.root, binder.getData()); + this.form[_symbol_utils.$globalData].template = this.form; + } catch (e) { + (0, _util.warn)(`XFA - an error occurred during parsing and binding: ${e}`); + } + } + isValid() { + return this.root && this.form; + } + _createPagesHelper() { + const iterator = this.form[_symbol_utils.$toPages](); + return new Promise((resolve, reject) => { + const nextIteration = () => { + try { + const value = iterator.next(); + if (value.done) { + resolve(value.value); + } else { + setTimeout(nextIteration, 0); + } + } catch (e) { + reject(e); + } + }; + setTimeout(nextIteration, 0); + }); + } + async _createPages() { + try { + this.pages = await this._createPagesHelper(); + this.dims = this.pages.children.map(c => { + const { + width, + height + } = c.attributes.style; + return [0, 0, parseInt(width), parseInt(height)]; + }); + } catch (e) { + (0, _util.warn)(`XFA - an error occurred during layout: ${e}`); + } + } + getBoundingBox(pageIndex) { + return this.dims[pageIndex]; + } + async getNumPages() { + if (!this.pages) { + await this._createPages(); + } + return this.dims.length; + } + setImages(images) { + this.form[_symbol_utils.$globalData].images = images; + } + setFonts(fonts) { + this.form[_symbol_utils.$globalData].fontFinder = new _fonts.FontFinder(fonts); + const missingFonts = []; + for (let typeface of this.form[_symbol_utils.$globalData].usedTypefaces) { + typeface = (0, _utils.stripQuotes)(typeface); + const font = this.form[_symbol_utils.$globalData].fontFinder.find(typeface); + if (!font) { + missingFonts.push(typeface); + } + } + if (missingFonts.length > 0) { + return missingFonts; + } + return null; + } + appendFonts(fonts, reallyMissingFonts) { + this.form[_symbol_utils.$globalData].fontFinder.add(fonts, reallyMissingFonts); + } + async getPages() { + if (!this.pages) { + await this._createPages(); + } + const pages = this.pages; + this.pages = null; + return pages; + } + serializeData(storage) { + return this.dataHandler.serialize(storage); + } + static _createDocument(data) { + if (!data["/xdp:xdp"]) { + return data["xdp:xdp"]; + } + return Object.values(data).join(""); + } + static getRichTextAsHtml(rc) { + if (!rc || typeof rc !== "string") { + return null; + } + try { + let root = new _parser.XFAParser(_xhtml.XhtmlNamespace, true).parse(rc); + if (!["body", "xhtml"].includes(root[_symbol_utils.$nodeName])) { + const newRoot = _xhtml.XhtmlNamespace.body({}); + newRoot[_symbol_utils.$appendChild](root); + root = newRoot; + } + const result = root[_symbol_utils.$toHTML](); + if (!result.success) { + return null; + } + const { + html + } = result; + const { + attributes + } = html; + if (attributes) { + if (attributes.class) { + attributes.class = attributes.class.filter(attr => !attr.startsWith("xfa")); + } + attributes.dir = "auto"; + } + return { + html, + str: root[_symbol_utils.$text]() + }; + } catch (e) { + (0, _util.warn)(`XFA - an error occurred during parsing of rich text: ${e}`); + } + return null; + } +} +exports.XFAFactory = XFAFactory; + +/***/ }), +/* 78 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.$uid = exports.$toStyle = exports.$toString = exports.$toPages = exports.$toHTML = exports.$text = exports.$tabIndex = exports.$setValue = exports.$setSetAttributes = exports.$setId = exports.$searchNode = exports.$root = exports.$resolvePrototypes = exports.$removeChild = exports.$pushPara = exports.$pushGlyphs = exports.$popPara = exports.$onText = exports.$onChildCheck = exports.$onChild = exports.$nsAttributes = exports.$nodeName = exports.$namespaceId = exports.$lastAttribute = exports.$isUsable = exports.$isTransparent = exports.$isThereMoreWidth = exports.$isSplittable = exports.$isNsAgnostic = exports.$isDescendent = exports.$isDataValue = exports.$isCDATAXml = exports.$isBindable = exports.$insertAt = exports.$indexOf = exports.$ids = exports.$hasSettableValue = exports.$globalData = exports.$getTemplateRoot = exports.$getSubformParent = exports.$getRealChildrenByNameIt = exports.$getParent = exports.$getNextPage = exports.$getExtra = exports.$getDataValue = exports.$getContainedChildren = exports.$getChildrenByNameIt = exports.$getChildrenByName = exports.$getChildrenByClass = exports.$getChildren = exports.$getAvailableSpace = exports.$getAttributes = exports.$getAttributeIt = exports.$flushHTML = exports.$finalize = exports.$extra = exports.$dump = exports.$data = exports.$content = exports.$consumed = exports.$clone = exports.$cleanup = exports.$cleanPage = exports.$clean = exports.$childrenToHTML = exports.$appendChild = exports.$addHTML = exports.$acceptWhitespace = void 0; +const $acceptWhitespace = Symbol(); +exports.$acceptWhitespace = $acceptWhitespace; +const $addHTML = Symbol(); +exports.$addHTML = $addHTML; +const $appendChild = Symbol(); +exports.$appendChild = $appendChild; +const $childrenToHTML = Symbol(); +exports.$childrenToHTML = $childrenToHTML; +const $clean = Symbol(); +exports.$clean = $clean; +const $cleanPage = Symbol(); +exports.$cleanPage = $cleanPage; +const $cleanup = Symbol(); +exports.$cleanup = $cleanup; +const $clone = Symbol(); +exports.$clone = $clone; +const $consumed = Symbol(); +exports.$consumed = $consumed; +const $content = Symbol("content"); +exports.$content = $content; +const $data = Symbol("data"); +exports.$data = $data; +const $dump = Symbol(); +exports.$dump = $dump; +const $extra = Symbol("extra"); +exports.$extra = $extra; +const $finalize = Symbol(); +exports.$finalize = $finalize; +const $flushHTML = Symbol(); +exports.$flushHTML = $flushHTML; +const $getAttributeIt = Symbol(); +exports.$getAttributeIt = $getAttributeIt; +const $getAttributes = Symbol(); +exports.$getAttributes = $getAttributes; +const $getAvailableSpace = Symbol(); +exports.$getAvailableSpace = $getAvailableSpace; +const $getChildrenByClass = Symbol(); +exports.$getChildrenByClass = $getChildrenByClass; +const $getChildrenByName = Symbol(); +exports.$getChildrenByName = $getChildrenByName; +const $getChildrenByNameIt = Symbol(); +exports.$getChildrenByNameIt = $getChildrenByNameIt; +const $getDataValue = Symbol(); +exports.$getDataValue = $getDataValue; +const $getExtra = Symbol(); +exports.$getExtra = $getExtra; +const $getRealChildrenByNameIt = Symbol(); +exports.$getRealChildrenByNameIt = $getRealChildrenByNameIt; +const $getChildren = Symbol(); +exports.$getChildren = $getChildren; +const $getContainedChildren = Symbol(); +exports.$getContainedChildren = $getContainedChildren; +const $getNextPage = Symbol(); +exports.$getNextPage = $getNextPage; +const $getSubformParent = Symbol(); +exports.$getSubformParent = $getSubformParent; +const $getParent = Symbol(); +exports.$getParent = $getParent; +const $getTemplateRoot = Symbol(); +exports.$getTemplateRoot = $getTemplateRoot; +const $globalData = Symbol(); +exports.$globalData = $globalData; +const $hasSettableValue = Symbol(); +exports.$hasSettableValue = $hasSettableValue; +const $ids = Symbol(); +exports.$ids = $ids; +const $indexOf = Symbol(); +exports.$indexOf = $indexOf; +const $insertAt = Symbol(); +exports.$insertAt = $insertAt; +const $isCDATAXml = Symbol(); +exports.$isCDATAXml = $isCDATAXml; +const $isBindable = Symbol(); +exports.$isBindable = $isBindable; +const $isDataValue = Symbol(); +exports.$isDataValue = $isDataValue; +const $isDescendent = Symbol(); +exports.$isDescendent = $isDescendent; +const $isNsAgnostic = Symbol(); +exports.$isNsAgnostic = $isNsAgnostic; +const $isSplittable = Symbol(); +exports.$isSplittable = $isSplittable; +const $isThereMoreWidth = Symbol(); +exports.$isThereMoreWidth = $isThereMoreWidth; +const $isTransparent = Symbol(); +exports.$isTransparent = $isTransparent; +const $isUsable = Symbol(); +exports.$isUsable = $isUsable; +const $lastAttribute = Symbol(); +exports.$lastAttribute = $lastAttribute; +const $namespaceId = Symbol("namespaceId"); +exports.$namespaceId = $namespaceId; +const $nodeName = Symbol("nodeName"); +exports.$nodeName = $nodeName; +const $nsAttributes = Symbol(); +exports.$nsAttributes = $nsAttributes; +const $onChild = Symbol(); +exports.$onChild = $onChild; +const $onChildCheck = Symbol(); +exports.$onChildCheck = $onChildCheck; +const $onText = Symbol(); +exports.$onText = $onText; +const $pushGlyphs = Symbol(); +exports.$pushGlyphs = $pushGlyphs; +const $popPara = Symbol(); +exports.$popPara = $popPara; +const $pushPara = Symbol(); +exports.$pushPara = $pushPara; +const $removeChild = Symbol(); +exports.$removeChild = $removeChild; +const $root = Symbol("root"); +exports.$root = $root; +const $resolvePrototypes = Symbol(); +exports.$resolvePrototypes = $resolvePrototypes; +const $searchNode = Symbol(); +exports.$searchNode = $searchNode; +const $setId = Symbol(); +exports.$setId = $setId; +const $setSetAttributes = Symbol(); +exports.$setSetAttributes = $setSetAttributes; +const $setValue = Symbol(); +exports.$setValue = $setValue; +const $tabIndex = Symbol(); +exports.$tabIndex = $tabIndex; +const $text = Symbol(); +exports.$text = $text; +const $toPages = Symbol(); +exports.$toPages = $toPages; +const $toHTML = Symbol(); +exports.$toHTML = $toHTML; +const $toString = Symbol(); +exports.$toString = $toString; +const $toStyle = Symbol(); +exports.$toStyle = $toStyle; +const $uid = Symbol("uid"); +exports.$uid = $uid; + +/***/ }), +/* 79 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Binder = void 0; +var _symbol_utils = __w_pdfjs_require__(78); +var _template = __w_pdfjs_require__(80); +var _som = __w_pdfjs_require__(88); +var _xfa_object = __w_pdfjs_require__(87); +var _namespaces = __w_pdfjs_require__(81); +var _util = __w_pdfjs_require__(2); +const NS_DATASETS = _namespaces.NamespaceIds.datasets.id; +function createText(content) { + const node = new _template.Text({}); + node[_symbol_utils.$content] = content; + return node; +} +class Binder { + constructor(root) { + this.root = root; + this.datasets = root.datasets; + if (root.datasets?.data) { + this.data = root.datasets.data; + } else { + this.data = new _xfa_object.XmlObject(_namespaces.NamespaceIds.datasets.id, "data"); + } + this.emptyMerge = this.data[_symbol_utils.$getChildren]().length === 0; + this.root.form = this.form = root.template[_symbol_utils.$clone](); + } + _isConsumeData() { + return !this.emptyMerge && this._mergeMode; + } + _isMatchTemplate() { + return !this._isConsumeData(); + } + bind() { + this._bindElement(this.form, this.data); + return this.form; + } + getData() { + return this.data; + } + _bindValue(formNode, data, picture) { + formNode[_symbol_utils.$data] = data; + if (formNode[_symbol_utils.$hasSettableValue]()) { + if (data[_symbol_utils.$isDataValue]()) { + const value = data[_symbol_utils.$getDataValue](); + formNode[_symbol_utils.$setValue](createText(value)); + } else if (formNode instanceof _template.Field && formNode.ui?.choiceList?.open === "multiSelect") { + const value = data[_symbol_utils.$getChildren]().map(child => child[_symbol_utils.$content].trim()).join("\n"); + formNode[_symbol_utils.$setValue](createText(value)); + } else if (this._isConsumeData()) { + (0, _util.warn)(`XFA - Nodes haven't the same type.`); + } + } else if (!data[_symbol_utils.$isDataValue]() || this._isMatchTemplate()) { + this._bindElement(formNode, data); + } else { + (0, _util.warn)(`XFA - Nodes haven't the same type.`); + } + } + _findDataByNameToConsume(name, isValue, dataNode, global) { + if (!name) { + return null; + } + let generator, match; + for (let i = 0; i < 3; i++) { + generator = dataNode[_symbol_utils.$getRealChildrenByNameIt](name, false, true); + while (true) { + match = generator.next().value; + if (!match) { + break; + } + if (isValue === match[_symbol_utils.$isDataValue]()) { + return match; + } + } + if (dataNode[_symbol_utils.$namespaceId] === _namespaces.NamespaceIds.datasets.id && dataNode[_symbol_utils.$nodeName] === "data") { + break; + } + dataNode = dataNode[_symbol_utils.$getParent](); + } + if (!global) { + return null; + } + generator = this.data[_symbol_utils.$getRealChildrenByNameIt](name, true, false); + match = generator.next().value; + if (match) { + return match; + } + generator = this.data[_symbol_utils.$getAttributeIt](name, true); + match = generator.next().value; + if (match?.[_symbol_utils.$isDataValue]()) { + return match; + } + return null; + } + _setProperties(formNode, dataNode) { + if (!formNode.hasOwnProperty("setProperty")) { + return; + } + for (const { + ref, + target, + connection + } of formNode.setProperty.children) { + if (connection) { + continue; + } + if (!ref) { + continue; + } + const nodes = (0, _som.searchNode)(this.root, dataNode, ref, false, false); + if (!nodes) { + (0, _util.warn)(`XFA - Invalid reference: ${ref}.`); + continue; + } + const [node] = nodes; + if (!node[_symbol_utils.$isDescendent](this.data)) { + (0, _util.warn)(`XFA - Invalid node: must be a data node.`); + continue; + } + const targetNodes = (0, _som.searchNode)(this.root, formNode, target, false, false); + if (!targetNodes) { + (0, _util.warn)(`XFA - Invalid target: ${target}.`); + continue; + } + const [targetNode] = targetNodes; + if (!targetNode[_symbol_utils.$isDescendent](formNode)) { + (0, _util.warn)(`XFA - Invalid target: must be a property or subproperty.`); + continue; + } + const targetParent = targetNode[_symbol_utils.$getParent](); + if (targetNode instanceof _template.SetProperty || targetParent instanceof _template.SetProperty) { + (0, _util.warn)(`XFA - Invalid target: cannot be a setProperty or one of its properties.`); + continue; + } + if (targetNode instanceof _template.BindItems || targetParent instanceof _template.BindItems) { + (0, _util.warn)(`XFA - Invalid target: cannot be a bindItems or one of its properties.`); + continue; + } + const content = node[_symbol_utils.$text](); + const name = targetNode[_symbol_utils.$nodeName]; + if (targetNode instanceof _xfa_object.XFAAttribute) { + const attrs = Object.create(null); + attrs[name] = content; + const obj = Reflect.construct(Object.getPrototypeOf(targetParent).constructor, [attrs]); + targetParent[name] = obj[name]; + continue; + } + if (!targetNode.hasOwnProperty(_symbol_utils.$content)) { + (0, _util.warn)(`XFA - Invalid node to use in setProperty`); + continue; + } + targetNode[_symbol_utils.$data] = node; + targetNode[_symbol_utils.$content] = content; + targetNode[_symbol_utils.$finalize](); + } + } + _bindItems(formNode, dataNode) { + if (!formNode.hasOwnProperty("items") || !formNode.hasOwnProperty("bindItems") || formNode.bindItems.isEmpty()) { + return; + } + for (const item of formNode.items.children) { + formNode[_symbol_utils.$removeChild](item); + } + formNode.items.clear(); + const labels = new _template.Items({}); + const values = new _template.Items({}); + formNode[_symbol_utils.$appendChild](labels); + formNode.items.push(labels); + formNode[_symbol_utils.$appendChild](values); + formNode.items.push(values); + for (const { + ref, + labelRef, + valueRef, + connection + } of formNode.bindItems.children) { + if (connection) { + continue; + } + if (!ref) { + continue; + } + const nodes = (0, _som.searchNode)(this.root, dataNode, ref, false, false); + if (!nodes) { + (0, _util.warn)(`XFA - Invalid reference: ${ref}.`); + continue; + } + for (const node of nodes) { + if (!node[_symbol_utils.$isDescendent](this.datasets)) { + (0, _util.warn)(`XFA - Invalid ref (${ref}): must be a datasets child.`); + continue; + } + const labelNodes = (0, _som.searchNode)(this.root, node, labelRef, true, false); + if (!labelNodes) { + (0, _util.warn)(`XFA - Invalid label: ${labelRef}.`); + continue; + } + const [labelNode] = labelNodes; + if (!labelNode[_symbol_utils.$isDescendent](this.datasets)) { + (0, _util.warn)(`XFA - Invalid label: must be a datasets child.`); + continue; + } + const valueNodes = (0, _som.searchNode)(this.root, node, valueRef, true, false); + if (!valueNodes) { + (0, _util.warn)(`XFA - Invalid value: ${valueRef}.`); + continue; + } + const [valueNode] = valueNodes; + if (!valueNode[_symbol_utils.$isDescendent](this.datasets)) { + (0, _util.warn)(`XFA - Invalid value: must be a datasets child.`); + continue; + } + const label = createText(labelNode[_symbol_utils.$text]()); + const value = createText(valueNode[_symbol_utils.$text]()); + labels[_symbol_utils.$appendChild](label); + labels.text.push(label); + values[_symbol_utils.$appendChild](value); + values.text.push(value); + } + } + } + _bindOccurrences(formNode, matches, picture) { + let baseClone; + if (matches.length > 1) { + baseClone = formNode[_symbol_utils.$clone](); + baseClone[_symbol_utils.$removeChild](baseClone.occur); + baseClone.occur = null; + } + this._bindValue(formNode, matches[0], picture); + this._setProperties(formNode, matches[0]); + this._bindItems(formNode, matches[0]); + if (matches.length === 1) { + return; + } + const parent = formNode[_symbol_utils.$getParent](); + const name = formNode[_symbol_utils.$nodeName]; + const pos = parent[_symbol_utils.$indexOf](formNode); + for (let i = 1, ii = matches.length; i < ii; i++) { + const match = matches[i]; + const clone = baseClone[_symbol_utils.$clone](); + parent[name].push(clone); + parent[_symbol_utils.$insertAt](pos + i, clone); + this._bindValue(clone, match, picture); + this._setProperties(clone, match); + this._bindItems(clone, match); + } + } + _createOccurrences(formNode) { + if (!this.emptyMerge) { + return; + } + const { + occur + } = formNode; + if (!occur || occur.initial <= 1) { + return; + } + const parent = formNode[_symbol_utils.$getParent](); + const name = formNode[_symbol_utils.$nodeName]; + if (!(parent[name] instanceof _xfa_object.XFAObjectArray)) { + return; + } + let currentNumber; + if (formNode.name) { + currentNumber = parent[name].children.filter(e => e.name === formNode.name).length; + } else { + currentNumber = parent[name].children.length; + } + const pos = parent[_symbol_utils.$indexOf](formNode) + 1; + const ii = occur.initial - currentNumber; + if (ii) { + const nodeClone = formNode[_symbol_utils.$clone](); + nodeClone[_symbol_utils.$removeChild](nodeClone.occur); + nodeClone.occur = null; + parent[name].push(nodeClone); + parent[_symbol_utils.$insertAt](pos, nodeClone); + for (let i = 1; i < ii; i++) { + const clone = nodeClone[_symbol_utils.$clone](); + parent[name].push(clone); + parent[_symbol_utils.$insertAt](pos + i, clone); + } + } + } + _getOccurInfo(formNode) { + const { + name, + occur + } = formNode; + if (!occur || !name) { + return [1, 1]; + } + const max = occur.max === -1 ? Infinity : occur.max; + return [occur.min, max]; + } + _setAndBind(formNode, dataNode) { + this._setProperties(formNode, dataNode); + this._bindItems(formNode, dataNode); + this._bindElement(formNode, dataNode); + } + _bindElement(formNode, dataNode) { + const uselessNodes = []; + this._createOccurrences(formNode); + for (const child of formNode[_symbol_utils.$getChildren]()) { + if (child[_symbol_utils.$data]) { + continue; + } + if (this._mergeMode === undefined && child[_symbol_utils.$nodeName] === "subform") { + this._mergeMode = child.mergeMode === "consumeData"; + const dataChildren = dataNode[_symbol_utils.$getChildren](); + if (dataChildren.length > 0) { + this._bindOccurrences(child, [dataChildren[0]], null); + } else if (this.emptyMerge) { + const nsId = dataNode[_symbol_utils.$namespaceId] === NS_DATASETS ? -1 : dataNode[_symbol_utils.$namespaceId]; + const dataChild = child[_symbol_utils.$data] = new _xfa_object.XmlObject(nsId, child.name || "root"); + dataNode[_symbol_utils.$appendChild](dataChild); + this._bindElement(child, dataChild); + } + continue; + } + if (!child[_symbol_utils.$isBindable]()) { + continue; + } + let global = false; + let picture = null; + let ref = null; + let match = null; + if (child.bind) { + switch (child.bind.match) { + case "none": + this._setAndBind(child, dataNode); + continue; + case "global": + global = true; + break; + case "dataRef": + if (!child.bind.ref) { + (0, _util.warn)(`XFA - ref is empty in node ${child[_symbol_utils.$nodeName]}.`); + this._setAndBind(child, dataNode); + continue; + } + ref = child.bind.ref; + break; + default: + break; + } + if (child.bind.picture) { + picture = child.bind.picture[_symbol_utils.$content]; + } + } + const [min, max] = this._getOccurInfo(child); + if (ref) { + match = (0, _som.searchNode)(this.root, dataNode, ref, true, false); + if (match === null) { + match = (0, _som.createDataNode)(this.data, dataNode, ref); + if (!match) { + continue; + } + if (this._isConsumeData()) { + match[_symbol_utils.$consumed] = true; + } + this._setAndBind(child, match); + continue; + } else { + if (this._isConsumeData()) { + match = match.filter(node => !node[_symbol_utils.$consumed]); + } + if (match.length > max) { + match = match.slice(0, max); + } else if (match.length === 0) { + match = null; + } + if (match && this._isConsumeData()) { + match.forEach(node => { + node[_symbol_utils.$consumed] = true; + }); + } + } + } else { + if (!child.name) { + this._setAndBind(child, dataNode); + continue; + } + if (this._isConsumeData()) { + const matches = []; + while (matches.length < max) { + const found = this._findDataByNameToConsume(child.name, child[_symbol_utils.$hasSettableValue](), dataNode, global); + if (!found) { + break; + } + found[_symbol_utils.$consumed] = true; + matches.push(found); + } + match = matches.length > 0 ? matches : null; + } else { + match = dataNode[_symbol_utils.$getRealChildrenByNameIt](child.name, false, this.emptyMerge).next().value; + if (!match) { + if (min === 0) { + uselessNodes.push(child); + continue; + } + const nsId = dataNode[_symbol_utils.$namespaceId] === NS_DATASETS ? -1 : dataNode[_symbol_utils.$namespaceId]; + match = child[_symbol_utils.$data] = new _xfa_object.XmlObject(nsId, child.name); + if (this.emptyMerge) { + match[_symbol_utils.$consumed] = true; + } + dataNode[_symbol_utils.$appendChild](match); + this._setAndBind(child, match); + continue; + } + if (this.emptyMerge) { + match[_symbol_utils.$consumed] = true; + } + match = [match]; + } + } + if (match) { + this._bindOccurrences(child, match, picture); + } else if (min > 0) { + this._setAndBind(child, dataNode); + } else { + uselessNodes.push(child); + } + } + uselessNodes.forEach(node => node[_symbol_utils.$getParent]()[_symbol_utils.$removeChild](node)); + } +} +exports.Binder = Binder; + +/***/ }), +/* 80 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Value = exports.Text = exports.TemplateNamespace = exports.Template = exports.SetProperty = exports.Items = exports.Field = exports.BindItems = void 0; +var _symbol_utils = __w_pdfjs_require__(78); +var _namespaces = __w_pdfjs_require__(81); +var _layout = __w_pdfjs_require__(82); +var _html_utils = __w_pdfjs_require__(83); +var _xfa_object = __w_pdfjs_require__(87); +var _utils = __w_pdfjs_require__(84); +var _util = __w_pdfjs_require__(2); +var _fonts = __w_pdfjs_require__(85); +var _core_utils = __w_pdfjs_require__(3); +var _som = __w_pdfjs_require__(88); +const TEMPLATE_NS_ID = _namespaces.NamespaceIds.template.id; +const SVG_NS = "http://www.w3.org/2000/svg"; +const MAX_ATTEMPTS_FOR_LRTB_LAYOUT = 2; +const MAX_EMPTY_PAGES = 3; +const DEFAULT_TAB_INDEX = 5000; +const HEADING_PATTERN = /^H(\d+)$/; +const MIMES = new Set(["image/gif", "image/jpeg", "image/jpg", "image/pjpeg", "image/png", "image/apng", "image/x-png", "image/bmp", "image/x-ms-bmp", "image/tiff", "image/tif", "application/octet-stream"]); +const IMAGES_HEADERS = [[[0x42, 0x4d], "image/bmp"], [[0xff, 0xd8, 0xff], "image/jpeg"], [[0x49, 0x49, 0x2a, 0x00], "image/tiff"], [[0x4d, 0x4d, 0x00, 0x2a], "image/tiff"], [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61], "image/gif"], [[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a], "image/png"]]; +function getBorderDims(node) { + if (!node || !node.border) { + return { + w: 0, + h: 0 + }; + } + const borderExtra = node.border[_symbol_utils.$getExtra](); + if (!borderExtra) { + return { + w: 0, + h: 0 + }; + } + return { + w: borderExtra.widths[0] + borderExtra.widths[2] + borderExtra.insets[0] + borderExtra.insets[2], + h: borderExtra.widths[1] + borderExtra.widths[3] + borderExtra.insets[1] + borderExtra.insets[3] + }; +} +function hasMargin(node) { + return node.margin && (node.margin.topInset || node.margin.rightInset || node.margin.bottomInset || node.margin.leftInset); +} +function _setValue(templateNode, value) { + if (!templateNode.value) { + const nodeValue = new Value({}); + templateNode[_symbol_utils.$appendChild](nodeValue); + templateNode.value = nodeValue; + } + templateNode.value[_symbol_utils.$setValue](value); +} +function* getContainedChildren(node) { + for (const child of node[_symbol_utils.$getChildren]()) { + if (child instanceof SubformSet) { + yield* child[_symbol_utils.$getContainedChildren](); + continue; + } + yield child; + } +} +function isRequired(node) { + return node.validate?.nullTest === "error"; +} +function setTabIndex(node) { + while (node) { + if (!node.traversal) { + node[_symbol_utils.$tabIndex] = node[_symbol_utils.$getParent]()[_symbol_utils.$tabIndex]; + return; + } + if (node[_symbol_utils.$tabIndex]) { + return; + } + let next = null; + for (const child of node.traversal[_symbol_utils.$getChildren]()) { + if (child.operation === "next") { + next = child; + break; + } + } + if (!next || !next.ref) { + node[_symbol_utils.$tabIndex] = node[_symbol_utils.$getParent]()[_symbol_utils.$tabIndex]; + return; + } + const root = node[_symbol_utils.$getTemplateRoot](); + node[_symbol_utils.$tabIndex] = ++root[_symbol_utils.$tabIndex]; + const ref = root[_symbol_utils.$searchNode](next.ref, node); + if (!ref) { + return; + } + node = ref[0]; + } +} +function applyAssist(obj, attributes) { + const assist = obj.assist; + if (assist) { + const assistTitle = assist[_symbol_utils.$toHTML](); + if (assistTitle) { + attributes.title = assistTitle; + } + const role = assist.role; + const match = role.match(HEADING_PATTERN); + if (match) { + const ariaRole = "heading"; + const ariaLevel = match[1]; + attributes.role = ariaRole; + attributes["aria-level"] = ariaLevel; + } + } + if (obj.layout === "table") { + attributes.role = "table"; + } else if (obj.layout === "row") { + attributes.role = "row"; + } else { + const parent = obj[_symbol_utils.$getParent](); + if (parent.layout === "row") { + if (parent.assist?.role === "TH") { + attributes.role = "columnheader"; + } else { + attributes.role = "cell"; + } + } + } +} +function ariaLabel(obj) { + if (!obj.assist) { + return null; + } + const assist = obj.assist; + if (assist.speak && assist.speak[_symbol_utils.$content] !== "") { + return assist.speak[_symbol_utils.$content]; + } + if (assist.toolTip) { + return assist.toolTip[_symbol_utils.$content]; + } + return null; +} +function valueToHtml(value) { + return _utils.HTMLResult.success({ + name: "div", + attributes: { + class: ["xfaRich"], + style: Object.create(null) + }, + children: [{ + name: "span", + attributes: { + style: Object.create(null) + }, + value + }] + }); +} +function setFirstUnsplittable(node) { + const root = node[_symbol_utils.$getTemplateRoot](); + if (root[_symbol_utils.$extra].firstUnsplittable === null) { + root[_symbol_utils.$extra].firstUnsplittable = node; + root[_symbol_utils.$extra].noLayoutFailure = true; + } +} +function unsetFirstUnsplittable(node) { + const root = node[_symbol_utils.$getTemplateRoot](); + if (root[_symbol_utils.$extra].firstUnsplittable === node) { + root[_symbol_utils.$extra].noLayoutFailure = false; + } +} +function handleBreak(node) { + if (node[_symbol_utils.$extra]) { + return false; + } + node[_symbol_utils.$extra] = Object.create(null); + if (node.targetType === "auto") { + return false; + } + const root = node[_symbol_utils.$getTemplateRoot](); + let target = null; + if (node.target) { + target = root[_symbol_utils.$searchNode](node.target, node[_symbol_utils.$getParent]()); + if (!target) { + return false; + } + target = target[0]; + } + const { + currentPageArea, + currentContentArea + } = root[_symbol_utils.$extra]; + if (node.targetType === "pageArea") { + if (!(target instanceof PageArea)) { + target = null; + } + if (node.startNew) { + node[_symbol_utils.$extra].target = target || currentPageArea; + return true; + } else if (target && target !== currentPageArea) { + node[_symbol_utils.$extra].target = target; + return true; + } + return false; + } + if (!(target instanceof ContentArea)) { + target = null; + } + const pageArea = target && target[_symbol_utils.$getParent](); + let index; + let nextPageArea = pageArea; + if (node.startNew) { + if (target) { + const contentAreas = pageArea.contentArea.children; + const indexForCurrent = contentAreas.indexOf(currentContentArea); + const indexForTarget = contentAreas.indexOf(target); + if (indexForCurrent !== -1 && indexForCurrent < indexForTarget) { + nextPageArea = null; + } + index = indexForTarget - 1; + } else { + index = currentPageArea.contentArea.children.indexOf(currentContentArea); + } + } else if (target && target !== currentContentArea) { + const contentAreas = pageArea.contentArea.children; + index = contentAreas.indexOf(target) - 1; + nextPageArea = pageArea === currentPageArea ? null : pageArea; + } else { + return false; + } + node[_symbol_utils.$extra].target = nextPageArea; + node[_symbol_utils.$extra].index = index; + return true; +} +function handleOverflow(node, extraNode, space) { + const root = node[_symbol_utils.$getTemplateRoot](); + const saved = root[_symbol_utils.$extra].noLayoutFailure; + const savedMethod = extraNode[_symbol_utils.$getSubformParent]; + extraNode[_symbol_utils.$getSubformParent] = () => node; + root[_symbol_utils.$extra].noLayoutFailure = true; + const res = extraNode[_symbol_utils.$toHTML](space); + node[_symbol_utils.$addHTML](res.html, res.bbox); + root[_symbol_utils.$extra].noLayoutFailure = saved; + extraNode[_symbol_utils.$getSubformParent] = savedMethod; +} +class AppearanceFilter extends _xfa_object.StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "appearanceFilter"); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Arc extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "arc", true); + this.circular = (0, _utils.getInteger)({ + data: attributes.circular, + defaultValue: 0, + validate: x => x === 1 + }); + this.hand = (0, _utils.getStringOption)(attributes.hand, ["even", "left", "right"]); + this.id = attributes.id || ""; + this.startAngle = (0, _utils.getFloat)({ + data: attributes.startAngle, + defaultValue: 0, + validate: x => true + }); + this.sweepAngle = (0, _utils.getFloat)({ + data: attributes.sweepAngle, + defaultValue: 360, + validate: x => true + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.edge = null; + this.fill = null; + } + [_symbol_utils.$toHTML]() { + const edge = this.edge || new Edge({}); + const edgeStyle = edge[_symbol_utils.$toStyle](); + const style = Object.create(null); + if (this.fill?.presence === "visible") { + Object.assign(style, this.fill[_symbol_utils.$toStyle]()); + } else { + style.fill = "transparent"; + } + style.strokeWidth = (0, _html_utils.measureToString)(edge.presence === "visible" ? edge.thickness : 0); + style.stroke = edgeStyle.color; + let arc; + const attributes = { + xmlns: SVG_NS, + style: { + width: "100%", + height: "100%", + overflow: "visible" + } + }; + if (this.sweepAngle === 360) { + arc = { + name: "ellipse", + attributes: { + xmlns: SVG_NS, + cx: "50%", + cy: "50%", + rx: "50%", + ry: "50%", + style + } + }; + } else { + const startAngle = this.startAngle * Math.PI / 180; + const sweepAngle = this.sweepAngle * Math.PI / 180; + const largeArc = this.sweepAngle > 180 ? 1 : 0; + const [x1, y1, x2, y2] = [50 * (1 + Math.cos(startAngle)), 50 * (1 - Math.sin(startAngle)), 50 * (1 + Math.cos(startAngle + sweepAngle)), 50 * (1 - Math.sin(startAngle + sweepAngle))]; + arc = { + name: "path", + attributes: { + xmlns: SVG_NS, + d: `M ${x1} ${y1} A 50 50 0 ${largeArc} 0 ${x2} ${y2}`, + vectorEffect: "non-scaling-stroke", + style + } + }; + Object.assign(attributes, { + viewBox: "0 0 100 100", + preserveAspectRatio: "none" + }); + } + const svg = { + name: "svg", + children: [arc], + attributes + }; + const parent = this[_symbol_utils.$getParent]()[_symbol_utils.$getParent](); + if (hasMargin(parent)) { + return _utils.HTMLResult.success({ + name: "div", + attributes: { + style: { + display: "inline", + width: "100%", + height: "100%" + } + }, + children: [svg] + }); + } + svg.attributes.style.position = "absolute"; + return _utils.HTMLResult.success(svg); + } +} +class Area extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "area", true); + this.colSpan = (0, _utils.getInteger)({ + data: attributes.colSpan, + defaultValue: 1, + validate: n => n >= 1 || n === -1 + }); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.relevant = (0, _utils.getRelevant)(attributes.relevant); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.x = (0, _utils.getMeasurement)(attributes.x, "0pt"); + this.y = (0, _utils.getMeasurement)(attributes.y, "0pt"); + this.desc = null; + this.extras = null; + this.area = new _xfa_object.XFAObjectArray(); + this.draw = new _xfa_object.XFAObjectArray(); + this.exObject = new _xfa_object.XFAObjectArray(); + this.exclGroup = new _xfa_object.XFAObjectArray(); + this.field = new _xfa_object.XFAObjectArray(); + this.subform = new _xfa_object.XFAObjectArray(); + this.subformSet = new _xfa_object.XFAObjectArray(); + } + *[_symbol_utils.$getContainedChildren]() { + yield* getContainedChildren(this); + } + [_symbol_utils.$isTransparent]() { + return true; + } + [_symbol_utils.$isBindable]() { + return true; + } + [_symbol_utils.$addHTML](html, bbox) { + const [x, y, w, h] = bbox; + this[_symbol_utils.$extra].width = Math.max(this[_symbol_utils.$extra].width, x + w); + this[_symbol_utils.$extra].height = Math.max(this[_symbol_utils.$extra].height, y + h); + this[_symbol_utils.$extra].children.push(html); + } + [_symbol_utils.$getAvailableSpace]() { + return this[_symbol_utils.$extra].availableSpace; + } + [_symbol_utils.$toHTML](availableSpace) { + const style = (0, _html_utils.toStyle)(this, "position"); + const attributes = { + style, + id: this[_symbol_utils.$uid], + class: ["xfaArea"] + }; + if ((0, _html_utils.isPrintOnly)(this)) { + attributes.class.push("xfaPrintOnly"); + } + if (this.name) { + attributes.xfaName = this.name; + } + const children = []; + this[_symbol_utils.$extra] = { + children, + width: 0, + height: 0, + availableSpace + }; + const result = this[_symbol_utils.$childrenToHTML]({ + filter: new Set(["area", "draw", "field", "exclGroup", "subform", "subformSet"]), + include: true + }); + if (!result.success) { + if (result.isBreak()) { + return result; + } + delete this[_symbol_utils.$extra]; + return _utils.HTMLResult.FAILURE; + } + style.width = (0, _html_utils.measureToString)(this[_symbol_utils.$extra].width); + style.height = (0, _html_utils.measureToString)(this[_symbol_utils.$extra].height); + const html = { + name: "div", + attributes, + children + }; + const bbox = [this.x, this.y, this[_symbol_utils.$extra].width, this[_symbol_utils.$extra].height]; + delete this[_symbol_utils.$extra]; + return _utils.HTMLResult.success(html, bbox); + } +} +class Assist extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "assist", true); + this.id = attributes.id || ""; + this.role = attributes.role || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.speak = null; + this.toolTip = null; + } + [_symbol_utils.$toHTML]() { + return this.toolTip?.[_symbol_utils.$content] || null; + } +} +class Barcode extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "barcode", true); + this.charEncoding = (0, _utils.getKeyword)({ + data: attributes.charEncoding ? attributes.charEncoding.toLowerCase() : "", + defaultValue: "", + validate: k => ["utf-8", "big-five", "fontspecific", "gbk", "gb-18030", "gb-2312", "ksc-5601", "none", "shift-jis", "ucs-2", "utf-16"].includes(k) || k.match(/iso-8859-\d{2}/) + }); + this.checksum = (0, _utils.getStringOption)(attributes.checksum, ["none", "1mod10", "1mod10_1mod11", "2mod10", "auto"]); + this.dataColumnCount = (0, _utils.getInteger)({ + data: attributes.dataColumnCount, + defaultValue: -1, + validate: x => x >= 0 + }); + this.dataLength = (0, _utils.getInteger)({ + data: attributes.dataLength, + defaultValue: -1, + validate: x => x >= 0 + }); + this.dataPrep = (0, _utils.getStringOption)(attributes.dataPrep, ["none", "flateCompress"]); + this.dataRowCount = (0, _utils.getInteger)({ + data: attributes.dataRowCount, + defaultValue: -1, + validate: x => x >= 0 + }); + this.endChar = attributes.endChar || ""; + this.errorCorrectionLevel = (0, _utils.getInteger)({ + data: attributes.errorCorrectionLevel, + defaultValue: -1, + validate: x => x >= 0 && x <= 8 + }); + this.id = attributes.id || ""; + this.moduleHeight = (0, _utils.getMeasurement)(attributes.moduleHeight, "5mm"); + this.moduleWidth = (0, _utils.getMeasurement)(attributes.moduleWidth, "0.25mm"); + this.printCheckDigit = (0, _utils.getInteger)({ + data: attributes.printCheckDigit, + defaultValue: 0, + validate: x => x === 1 + }); + this.rowColumnRatio = (0, _utils.getRatio)(attributes.rowColumnRatio); + this.startChar = attributes.startChar || ""; + this.textLocation = (0, _utils.getStringOption)(attributes.textLocation, ["below", "above", "aboveEmbedded", "belowEmbedded", "none"]); + this.truncate = (0, _utils.getInteger)({ + data: attributes.truncate, + defaultValue: 0, + validate: x => x === 1 + }); + this.type = (0, _utils.getStringOption)(attributes.type ? attributes.type.toLowerCase() : "", ["aztec", "codabar", "code2of5industrial", "code2of5interleaved", "code2of5matrix", "code2of5standard", "code3of9", "code3of9extended", "code11", "code49", "code93", "code128", "code128a", "code128b", "code128c", "code128sscc", "datamatrix", "ean8", "ean8add2", "ean8add5", "ean13", "ean13add2", "ean13add5", "ean13pwcd", "fim", "logmars", "maxicode", "msi", "pdf417", "pdf417macro", "plessey", "postauscust2", "postauscust3", "postausreplypaid", "postausstandard", "postukrm4scc", "postusdpbc", "postusimb", "postusstandard", "postus5zip", "qrcode", "rfid", "rss14", "rss14expanded", "rss14limited", "rss14stacked", "rss14stackedomni", "rss14truncated", "telepen", "ucc128", "ucc128random", "ucc128sscc", "upca", "upcaadd2", "upcaadd5", "upcapwcd", "upce", "upceadd2", "upceadd5", "upcean2", "upcean5", "upsmaxicode"]); + this.upsMode = (0, _utils.getStringOption)(attributes.upsMode, ["usCarrier", "internationalCarrier", "secureSymbol", "standardSymbol"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.wideNarrowRatio = (0, _utils.getRatio)(attributes.wideNarrowRatio); + this.encrypt = null; + this.extras = null; + } +} +class Bind extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "bind", true); + this.match = (0, _utils.getStringOption)(attributes.match, ["once", "dataRef", "global", "none"]); + this.ref = attributes.ref || ""; + this.picture = null; + } +} +class BindItems extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "bindItems"); + this.connection = attributes.connection || ""; + this.labelRef = attributes.labelRef || ""; + this.ref = attributes.ref || ""; + this.valueRef = attributes.valueRef || ""; + } +} +exports.BindItems = BindItems; +class Bookend extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "bookend"); + this.id = attributes.id || ""; + this.leader = attributes.leader || ""; + this.trailer = attributes.trailer || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class BooleanElement extends _xfa_object.Option01 { + constructor(attributes) { + super(TEMPLATE_NS_ID, "boolean"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [_symbol_utils.$toHTML](availableSpace) { + return valueToHtml(this[_symbol_utils.$content] === 1 ? "1" : "0"); + } +} +class Border extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "border", true); + this.break = (0, _utils.getStringOption)(attributes.break, ["close", "open"]); + this.hand = (0, _utils.getStringOption)(attributes.hand, ["even", "left", "right"]); + this.id = attributes.id || ""; + this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.relevant = (0, _utils.getRelevant)(attributes.relevant); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.corner = new _xfa_object.XFAObjectArray(4); + this.edge = new _xfa_object.XFAObjectArray(4); + this.extras = null; + this.fill = null; + this.margin = null; + } + [_symbol_utils.$getExtra]() { + if (!this[_symbol_utils.$extra]) { + const edges = this.edge.children.slice(); + if (edges.length < 4) { + const defaultEdge = edges.at(-1) || new Edge({}); + for (let i = edges.length; i < 4; i++) { + edges.push(defaultEdge); + } + } + const widths = edges.map(edge => edge.thickness); + const insets = [0, 0, 0, 0]; + if (this.margin) { + insets[0] = this.margin.topInset; + insets[1] = this.margin.rightInset; + insets[2] = this.margin.bottomInset; + insets[3] = this.margin.leftInset; + } + this[_symbol_utils.$extra] = { + widths, + insets, + edges + }; + } + return this[_symbol_utils.$extra]; + } + [_symbol_utils.$toStyle]() { + const { + edges + } = this[_symbol_utils.$getExtra](); + const edgeStyles = edges.map(node => { + const style = node[_symbol_utils.$toStyle](); + style.color ||= "#000000"; + return style; + }); + const style = Object.create(null); + if (this.margin) { + Object.assign(style, this.margin[_symbol_utils.$toStyle]()); + } + if (this.fill?.presence === "visible") { + Object.assign(style, this.fill[_symbol_utils.$toStyle]()); + } + if (this.corner.children.some(node => node.radius !== 0)) { + const cornerStyles = this.corner.children.map(node => node[_symbol_utils.$toStyle]()); + if (cornerStyles.length === 2 || cornerStyles.length === 3) { + const last = cornerStyles.at(-1); + for (let i = cornerStyles.length; i < 4; i++) { + cornerStyles.push(last); + } + } + style.borderRadius = cornerStyles.map(s => s.radius).join(" "); + } + switch (this.presence) { + case "invisible": + case "hidden": + style.borderStyle = ""; + break; + case "inactive": + style.borderStyle = "none"; + break; + default: + style.borderStyle = edgeStyles.map(s => s.style).join(" "); + break; + } + style.borderWidth = edgeStyles.map(s => s.width).join(" "); + style.borderColor = edgeStyles.map(s => s.color).join(" "); + return style; + } +} +class Break extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "break", true); + this.after = (0, _utils.getStringOption)(attributes.after, ["auto", "contentArea", "pageArea", "pageEven", "pageOdd"]); + this.afterTarget = attributes.afterTarget || ""; + this.before = (0, _utils.getStringOption)(attributes.before, ["auto", "contentArea", "pageArea", "pageEven", "pageOdd"]); + this.beforeTarget = attributes.beforeTarget || ""; + this.bookendLeader = attributes.bookendLeader || ""; + this.bookendTrailer = attributes.bookendTrailer || ""; + this.id = attributes.id || ""; + this.overflowLeader = attributes.overflowLeader || ""; + this.overflowTarget = attributes.overflowTarget || ""; + this.overflowTrailer = attributes.overflowTrailer || ""; + this.startNew = (0, _utils.getInteger)({ + data: attributes.startNew, + defaultValue: 0, + validate: x => x === 1 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + } +} +class BreakAfter extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "breakAfter", true); + this.id = attributes.id || ""; + this.leader = attributes.leader || ""; + this.startNew = (0, _utils.getInteger)({ + data: attributes.startNew, + defaultValue: 0, + validate: x => x === 1 + }); + this.target = attributes.target || ""; + this.targetType = (0, _utils.getStringOption)(attributes.targetType, ["auto", "contentArea", "pageArea"]); + this.trailer = attributes.trailer || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.script = null; + } +} +class BreakBefore extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "breakBefore", true); + this.id = attributes.id || ""; + this.leader = attributes.leader || ""; + this.startNew = (0, _utils.getInteger)({ + data: attributes.startNew, + defaultValue: 0, + validate: x => x === 1 + }); + this.target = attributes.target || ""; + this.targetType = (0, _utils.getStringOption)(attributes.targetType, ["auto", "contentArea", "pageArea"]); + this.trailer = attributes.trailer || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.script = null; + } + [_symbol_utils.$toHTML](availableSpace) { + this[_symbol_utils.$extra] = {}; + return _utils.HTMLResult.FAILURE; + } +} +class Button extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "button", true); + this.highlight = (0, _utils.getStringOption)(attributes.highlight, ["inverted", "none", "outline", "push"]); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + } + [_symbol_utils.$toHTML](availableSpace) { + const parent = this[_symbol_utils.$getParent](); + const grandpa = parent[_symbol_utils.$getParent](); + const htmlButton = { + name: "button", + attributes: { + id: this[_symbol_utils.$uid], + class: ["xfaButton"], + style: {} + }, + children: [] + }; + for (const event of grandpa.event.children) { + if (event.activity !== "click" || !event.script) { + continue; + } + const jsURL = (0, _core_utils.recoverJsURL)(event.script[_symbol_utils.$content]); + if (!jsURL) { + continue; + } + const href = (0, _html_utils.fixURL)(jsURL.url); + if (!href) { + continue; + } + htmlButton.children.push({ + name: "a", + attributes: { + id: "link" + this[_symbol_utils.$uid], + href, + newWindow: jsURL.newWindow, + class: ["xfaLink"], + style: {} + }, + children: [] + }); + } + return _utils.HTMLResult.success(htmlButton); + } +} +class Calculate extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "calculate", true); + this.id = attributes.id || ""; + this.override = (0, _utils.getStringOption)(attributes.override, ["disabled", "error", "ignore", "warning"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.message = null; + this.script = null; + } +} +class Caption extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "caption", true); + this.id = attributes.id || ""; + this.placement = (0, _utils.getStringOption)(attributes.placement, ["left", "bottom", "inline", "right", "top"]); + this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.reserve = Math.ceil((0, _utils.getMeasurement)(attributes.reserve)); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.font = null; + this.margin = null; + this.para = null; + this.value = null; + } + [_symbol_utils.$setValue](value) { + _setValue(this, value); + } + [_symbol_utils.$getExtra](availableSpace) { + if (!this[_symbol_utils.$extra]) { + let { + width, + height + } = availableSpace; + switch (this.placement) { + case "left": + case "right": + case "inline": + width = this.reserve <= 0 ? width : this.reserve; + break; + case "top": + case "bottom": + height = this.reserve <= 0 ? height : this.reserve; + break; + } + this[_symbol_utils.$extra] = (0, _html_utils.layoutNode)(this, { + width, + height + }); + } + return this[_symbol_utils.$extra]; + } + [_symbol_utils.$toHTML](availableSpace) { + if (!this.value) { + return _utils.HTMLResult.EMPTY; + } + this[_symbol_utils.$pushPara](); + const value = this.value[_symbol_utils.$toHTML](availableSpace).html; + if (!value) { + this[_symbol_utils.$popPara](); + return _utils.HTMLResult.EMPTY; + } + const savedReserve = this.reserve; + if (this.reserve <= 0) { + const { + w, + h + } = this[_symbol_utils.$getExtra](availableSpace); + switch (this.placement) { + case "left": + case "right": + case "inline": + this.reserve = w; + break; + case "top": + case "bottom": + this.reserve = h; + break; + } + } + const children = []; + if (typeof value === "string") { + children.push({ + name: "#text", + value + }); + } else { + children.push(value); + } + const style = (0, _html_utils.toStyle)(this, "font", "margin", "visibility"); + switch (this.placement) { + case "left": + case "right": + if (this.reserve > 0) { + style.width = (0, _html_utils.measureToString)(this.reserve); + } + break; + case "top": + case "bottom": + if (this.reserve > 0) { + style.height = (0, _html_utils.measureToString)(this.reserve); + } + break; + } + (0, _html_utils.setPara)(this, null, value); + this[_symbol_utils.$popPara](); + this.reserve = savedReserve; + return _utils.HTMLResult.success({ + name: "div", + attributes: { + style, + class: ["xfaCaption"] + }, + children + }); + } +} +class Certificate extends _xfa_object.StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "certificate"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Certificates extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "certificates", true); + this.credentialServerPolicy = (0, _utils.getStringOption)(attributes.credentialServerPolicy, ["optional", "required"]); + this.id = attributes.id || ""; + this.url = attributes.url || ""; + this.urlPolicy = attributes.urlPolicy || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.encryption = null; + this.issuers = null; + this.keyUsage = null; + this.oids = null; + this.signing = null; + this.subjectDNs = null; + } +} +class CheckButton extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "checkButton", true); + this.id = attributes.id || ""; + this.mark = (0, _utils.getStringOption)(attributes.mark, ["default", "check", "circle", "cross", "diamond", "square", "star"]); + this.shape = (0, _utils.getStringOption)(attributes.shape, ["square", "round"]); + this.size = (0, _utils.getMeasurement)(attributes.size, "10pt"); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.border = null; + this.extras = null; + this.margin = null; + } + [_symbol_utils.$toHTML](availableSpace) { + const style = (0, _html_utils.toStyle)("margin"); + const size = (0, _html_utils.measureToString)(this.size); + style.width = style.height = size; + let type; + let className; + let groupId; + const field = this[_symbol_utils.$getParent]()[_symbol_utils.$getParent](); + const items = field.items.children.length && field.items.children[0][_symbol_utils.$toHTML]().html || []; + const exportedValue = { + on: (items[0] !== undefined ? items[0] : "on").toString(), + off: (items[1] !== undefined ? items[1] : "off").toString() + }; + const value = field.value?.[_symbol_utils.$text]() || "off"; + const checked = value === exportedValue.on || undefined; + const container = field[_symbol_utils.$getSubformParent](); + const fieldId = field[_symbol_utils.$uid]; + let dataId; + if (container instanceof ExclGroup) { + groupId = container[_symbol_utils.$uid]; + type = "radio"; + className = "xfaRadio"; + dataId = container[_symbol_utils.$data]?.[_symbol_utils.$uid] || container[_symbol_utils.$uid]; + } else { + type = "checkbox"; + className = "xfaCheckbox"; + dataId = field[_symbol_utils.$data]?.[_symbol_utils.$uid] || field[_symbol_utils.$uid]; + } + const input = { + name: "input", + attributes: { + class: [className], + style, + fieldId, + dataId, + type, + checked, + xfaOn: exportedValue.on, + xfaOff: exportedValue.off, + "aria-label": ariaLabel(field), + "aria-required": false + } + }; + if (groupId) { + input.attributes.name = groupId; + } + if (isRequired(field)) { + input.attributes["aria-required"] = true; + input.attributes.required = true; + } + return _utils.HTMLResult.success({ + name: "label", + attributes: { + class: ["xfaLabel"] + }, + children: [input] + }); + } +} +class ChoiceList extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "choiceList", true); + this.commitOn = (0, _utils.getStringOption)(attributes.commitOn, ["select", "exit"]); + this.id = attributes.id || ""; + this.open = (0, _utils.getStringOption)(attributes.open, ["userControl", "always", "multiSelect", "onEntry"]); + this.textEntry = (0, _utils.getInteger)({ + data: attributes.textEntry, + defaultValue: 0, + validate: x => x === 1 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.border = null; + this.extras = null; + this.margin = null; + } + [_symbol_utils.$toHTML](availableSpace) { + const style = (0, _html_utils.toStyle)(this, "border", "margin"); + const ui = this[_symbol_utils.$getParent](); + const field = ui[_symbol_utils.$getParent](); + const fontSize = field.font?.size || 10; + const optionStyle = { + fontSize: `calc(${fontSize}px * var(--scale-factor))` + }; + const children = []; + if (field.items.children.length > 0) { + const items = field.items; + let displayedIndex = 0; + let saveIndex = 0; + if (items.children.length === 2) { + displayedIndex = items.children[0].save; + saveIndex = 1 - displayedIndex; + } + const displayed = items.children[displayedIndex][_symbol_utils.$toHTML]().html; + const values = items.children[saveIndex][_symbol_utils.$toHTML]().html; + let selected = false; + const value = field.value?.[_symbol_utils.$text]() || ""; + for (let i = 0, ii = displayed.length; i < ii; i++) { + const option = { + name: "option", + attributes: { + value: values[i] || displayed[i], + style: optionStyle + }, + value: displayed[i] + }; + if (values[i] === value) { + option.attributes.selected = selected = true; + } + children.push(option); + } + if (!selected) { + children.splice(0, 0, { + name: "option", + attributes: { + hidden: true, + selected: true + }, + value: " " + }); + } + } + const selectAttributes = { + class: ["xfaSelect"], + fieldId: field[_symbol_utils.$uid], + dataId: field[_symbol_utils.$data]?.[_symbol_utils.$uid] || field[_symbol_utils.$uid], + style, + "aria-label": ariaLabel(field), + "aria-required": false + }; + if (isRequired(field)) { + selectAttributes["aria-required"] = true; + selectAttributes.required = true; + } + if (this.open === "multiSelect") { + selectAttributes.multiple = true; + } + return _utils.HTMLResult.success({ + name: "label", + attributes: { + class: ["xfaLabel"] + }, + children: [{ + name: "select", + children, + attributes: selectAttributes + }] + }); + } +} +class Color extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "color", true); + this.cSpace = (0, _utils.getStringOption)(attributes.cSpace, ["SRGB"]); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.value = attributes.value ? (0, _utils.getColor)(attributes.value) : ""; + this.extras = null; + } + [_symbol_utils.$hasSettableValue]() { + return false; + } + [_symbol_utils.$toStyle]() { + return this.value ? _util.Util.makeHexColor(this.value.r, this.value.g, this.value.b) : null; + } +} +class Comb extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "comb"); + this.id = attributes.id || ""; + this.numberOfCells = (0, _utils.getInteger)({ + data: attributes.numberOfCells, + defaultValue: 0, + validate: x => x >= 0 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Connect extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "connect", true); + this.connection = attributes.connection || ""; + this.id = attributes.id || ""; + this.ref = attributes.ref || ""; + this.usage = (0, _utils.getStringOption)(attributes.usage, ["exportAndImport", "exportOnly", "importOnly"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.picture = null; + } +} +class ContentArea extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "contentArea", true); + this.h = (0, _utils.getMeasurement)(attributes.h); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.relevant = (0, _utils.getRelevant)(attributes.relevant); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.w = (0, _utils.getMeasurement)(attributes.w); + this.x = (0, _utils.getMeasurement)(attributes.x, "0pt"); + this.y = (0, _utils.getMeasurement)(attributes.y, "0pt"); + this.desc = null; + this.extras = null; + } + [_symbol_utils.$toHTML](availableSpace) { + const left = (0, _html_utils.measureToString)(this.x); + const top = (0, _html_utils.measureToString)(this.y); + const style = { + left, + top, + width: (0, _html_utils.measureToString)(this.w), + height: (0, _html_utils.measureToString)(this.h) + }; + const classNames = ["xfaContentarea"]; + if ((0, _html_utils.isPrintOnly)(this)) { + classNames.push("xfaPrintOnly"); + } + return _utils.HTMLResult.success({ + name: "div", + children: [], + attributes: { + style, + class: classNames, + id: this[_symbol_utils.$uid] + } + }); + } +} +class Corner extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "corner", true); + this.id = attributes.id || ""; + this.inverted = (0, _utils.getInteger)({ + data: attributes.inverted, + defaultValue: 0, + validate: x => x === 1 + }); + this.join = (0, _utils.getStringOption)(attributes.join, ["square", "round"]); + this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.radius = (0, _utils.getMeasurement)(attributes.radius); + this.stroke = (0, _utils.getStringOption)(attributes.stroke, ["solid", "dashDot", "dashDotDot", "dashed", "dotted", "embossed", "etched", "lowered", "raised"]); + this.thickness = (0, _utils.getMeasurement)(attributes.thickness, "0.5pt"); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.color = null; + this.extras = null; + } + [_symbol_utils.$toStyle]() { + const style = (0, _html_utils.toStyle)(this, "visibility"); + style.radius = (0, _html_utils.measureToString)(this.join === "square" ? 0 : this.radius); + return style; + } +} +class DateElement extends _xfa_object.ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "date"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [_symbol_utils.$finalize]() { + const date = this[_symbol_utils.$content].trim(); + this[_symbol_utils.$content] = date ? new Date(date) : null; + } + [_symbol_utils.$toHTML](availableSpace) { + return valueToHtml(this[_symbol_utils.$content] ? this[_symbol_utils.$content].toString() : ""); + } +} +class DateTime extends _xfa_object.ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "dateTime"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [_symbol_utils.$finalize]() { + const date = this[_symbol_utils.$content].trim(); + this[_symbol_utils.$content] = date ? new Date(date) : null; + } + [_symbol_utils.$toHTML](availableSpace) { + return valueToHtml(this[_symbol_utils.$content] ? this[_symbol_utils.$content].toString() : ""); + } +} +class DateTimeEdit extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "dateTimeEdit", true); + this.hScrollPolicy = (0, _utils.getStringOption)(attributes.hScrollPolicy, ["auto", "off", "on"]); + this.id = attributes.id || ""; + this.picker = (0, _utils.getStringOption)(attributes.picker, ["host", "none"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.border = null; + this.comb = null; + this.extras = null; + this.margin = null; + } + [_symbol_utils.$toHTML](availableSpace) { + const style = (0, _html_utils.toStyle)(this, "border", "font", "margin"); + const field = this[_symbol_utils.$getParent]()[_symbol_utils.$getParent](); + const html = { + name: "input", + attributes: { + type: "text", + fieldId: field[_symbol_utils.$uid], + dataId: field[_symbol_utils.$data]?.[_symbol_utils.$uid] || field[_symbol_utils.$uid], + class: ["xfaTextfield"], + style, + "aria-label": ariaLabel(field), + "aria-required": false + } + }; + if (isRequired(field)) { + html.attributes["aria-required"] = true; + html.attributes.required = true; + } + return _utils.HTMLResult.success({ + name: "label", + attributes: { + class: ["xfaLabel"] + }, + children: [html] + }); + } +} +class Decimal extends _xfa_object.ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "decimal"); + this.fracDigits = (0, _utils.getInteger)({ + data: attributes.fracDigits, + defaultValue: 2, + validate: x => true + }); + this.id = attributes.id || ""; + this.leadDigits = (0, _utils.getInteger)({ + data: attributes.leadDigits, + defaultValue: -1, + validate: x => true + }); + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [_symbol_utils.$finalize]() { + const number = parseFloat(this[_symbol_utils.$content].trim()); + this[_symbol_utils.$content] = isNaN(number) ? null : number; + } + [_symbol_utils.$toHTML](availableSpace) { + return valueToHtml(this[_symbol_utils.$content] !== null ? this[_symbol_utils.$content].toString() : ""); + } +} +class DefaultUi extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "defaultUi", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + } +} +class Desc extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "desc", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.boolean = new _xfa_object.XFAObjectArray(); + this.date = new _xfa_object.XFAObjectArray(); + this.dateTime = new _xfa_object.XFAObjectArray(); + this.decimal = new _xfa_object.XFAObjectArray(); + this.exData = new _xfa_object.XFAObjectArray(); + this.float = new _xfa_object.XFAObjectArray(); + this.image = new _xfa_object.XFAObjectArray(); + this.integer = new _xfa_object.XFAObjectArray(); + this.text = new _xfa_object.XFAObjectArray(); + this.time = new _xfa_object.XFAObjectArray(); + } +} +class DigestMethod extends _xfa_object.OptionObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "digestMethod", ["", "SHA1", "SHA256", "SHA512", "RIPEMD160"]); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class DigestMethods extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "digestMethods", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.digestMethod = new _xfa_object.XFAObjectArray(); + } +} +class Draw extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "draw", true); + this.anchorType = (0, _utils.getStringOption)(attributes.anchorType, ["topLeft", "bottomCenter", "bottomLeft", "bottomRight", "middleCenter", "middleLeft", "middleRight", "topCenter", "topRight"]); + this.colSpan = (0, _utils.getInteger)({ + data: attributes.colSpan, + defaultValue: 1, + validate: n => n >= 1 || n === -1 + }); + this.h = attributes.h ? (0, _utils.getMeasurement)(attributes.h) : ""; + this.hAlign = (0, _utils.getStringOption)(attributes.hAlign, ["left", "center", "justify", "justifyAll", "radix", "right"]); + this.id = attributes.id || ""; + this.locale = attributes.locale || ""; + this.maxH = (0, _utils.getMeasurement)(attributes.maxH, "0pt"); + this.maxW = (0, _utils.getMeasurement)(attributes.maxW, "0pt"); + this.minH = (0, _utils.getMeasurement)(attributes.minH, "0pt"); + this.minW = (0, _utils.getMeasurement)(attributes.minW, "0pt"); + this.name = attributes.name || ""; + this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.relevant = (0, _utils.getRelevant)(attributes.relevant); + this.rotate = (0, _utils.getInteger)({ + data: attributes.rotate, + defaultValue: 0, + validate: x => x % 90 === 0 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.w = attributes.w ? (0, _utils.getMeasurement)(attributes.w) : ""; + this.x = (0, _utils.getMeasurement)(attributes.x, "0pt"); + this.y = (0, _utils.getMeasurement)(attributes.y, "0pt"); + this.assist = null; + this.border = null; + this.caption = null; + this.desc = null; + this.extras = null; + this.font = null; + this.keep = null; + this.margin = null; + this.para = null; + this.traversal = null; + this.ui = null; + this.value = null; + this.setProperty = new _xfa_object.XFAObjectArray(); + } + [_symbol_utils.$setValue](value) { + _setValue(this, value); + } + [_symbol_utils.$toHTML](availableSpace) { + setTabIndex(this); + if (this.presence === "hidden" || this.presence === "inactive") { + return _utils.HTMLResult.EMPTY; + } + (0, _html_utils.fixDimensions)(this); + this[_symbol_utils.$pushPara](); + const savedW = this.w; + const savedH = this.h; + const { + w, + h, + isBroken + } = (0, _html_utils.layoutNode)(this, availableSpace); + if (w && this.w === "") { + if (isBroken && this[_symbol_utils.$getSubformParent]()[_symbol_utils.$isThereMoreWidth]()) { + this[_symbol_utils.$popPara](); + return _utils.HTMLResult.FAILURE; + } + this.w = w; + } + if (h && this.h === "") { + this.h = h; + } + setFirstUnsplittable(this); + if (!(0, _layout.checkDimensions)(this, availableSpace)) { + this.w = savedW; + this.h = savedH; + this[_symbol_utils.$popPara](); + return _utils.HTMLResult.FAILURE; + } + unsetFirstUnsplittable(this); + const style = (0, _html_utils.toStyle)(this, "font", "hAlign", "dimensions", "position", "presence", "rotate", "anchorType", "border", "margin"); + (0, _html_utils.setMinMaxDimensions)(this, style); + if (style.margin) { + style.padding = style.margin; + delete style.margin; + } + const classNames = ["xfaDraw"]; + if (this.font) { + classNames.push("xfaFont"); + } + if ((0, _html_utils.isPrintOnly)(this)) { + classNames.push("xfaPrintOnly"); + } + const attributes = { + style, + id: this[_symbol_utils.$uid], + class: classNames + }; + if (this.name) { + attributes.xfaName = this.name; + } + const html = { + name: "div", + attributes, + children: [] + }; + applyAssist(this, attributes); + const bbox = (0, _html_utils.computeBbox)(this, html, availableSpace); + const value = this.value ? this.value[_symbol_utils.$toHTML](availableSpace).html : null; + if (value === null) { + this.w = savedW; + this.h = savedH; + this[_symbol_utils.$popPara](); + return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox); + } + html.children.push(value); + (0, _html_utils.setPara)(this, style, value); + this.w = savedW; + this.h = savedH; + this[_symbol_utils.$popPara](); + return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox); + } +} +class Edge extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "edge", true); + this.cap = (0, _utils.getStringOption)(attributes.cap, ["square", "butt", "round"]); + this.id = attributes.id || ""; + this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.stroke = (0, _utils.getStringOption)(attributes.stroke, ["solid", "dashDot", "dashDotDot", "dashed", "dotted", "embossed", "etched", "lowered", "raised"]); + this.thickness = (0, _utils.getMeasurement)(attributes.thickness, "0.5pt"); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.color = null; + this.extras = null; + } + [_symbol_utils.$toStyle]() { + const style = (0, _html_utils.toStyle)(this, "visibility"); + Object.assign(style, { + linecap: this.cap, + width: (0, _html_utils.measureToString)(this.thickness), + color: this.color ? this.color[_symbol_utils.$toStyle]() : "#000000", + style: "" + }); + if (this.presence !== "visible") { + style.style = "none"; + } else { + switch (this.stroke) { + case "solid": + style.style = "solid"; + break; + case "dashDot": + style.style = "dashed"; + break; + case "dashDotDot": + style.style = "dashed"; + break; + case "dashed": + style.style = "dashed"; + break; + case "dotted": + style.style = "dotted"; + break; + case "embossed": + style.style = "ridge"; + break; + case "etched": + style.style = "groove"; + break; + case "lowered": + style.style = "inset"; + break; + case "raised": + style.style = "outset"; + break; + } + } + return style; + } +} +class Encoding extends _xfa_object.OptionObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "encoding", ["adbe.x509.rsa_sha1", "adbe.pkcs7.detached", "adbe.pkcs7.sha1"]); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Encodings extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "encodings", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.encoding = new _xfa_object.XFAObjectArray(); + } +} +class Encrypt extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "encrypt", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.certificate = null; + } +} +class EncryptData extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "encryptData", true); + this.id = attributes.id || ""; + this.operation = (0, _utils.getStringOption)(attributes.operation, ["encrypt", "decrypt"]); + this.target = attributes.target || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.filter = null; + this.manifest = null; + } +} +class Encryption extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "encryption", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.certificate = new _xfa_object.XFAObjectArray(); + } +} +class EncryptionMethod extends _xfa_object.OptionObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "encryptionMethod", ["", "AES256-CBC", "TRIPLEDES-CBC", "AES128-CBC", "AES192-CBC"]); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class EncryptionMethods extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "encryptionMethods", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.encryptionMethod = new _xfa_object.XFAObjectArray(); + } +} +class Event extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "event", true); + this.activity = (0, _utils.getStringOption)(attributes.activity, ["click", "change", "docClose", "docReady", "enter", "exit", "full", "indexChange", "initialize", "mouseDown", "mouseEnter", "mouseExit", "mouseUp", "postExecute", "postOpen", "postPrint", "postSave", "postSign", "postSubmit", "preExecute", "preOpen", "prePrint", "preSave", "preSign", "preSubmit", "ready", "validationState"]); + this.id = attributes.id || ""; + this.listen = (0, _utils.getStringOption)(attributes.listen, ["refOnly", "refAndDescendents"]); + this.name = attributes.name || ""; + this.ref = attributes.ref || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.encryptData = null; + this.execute = null; + this.script = null; + this.signData = null; + this.submit = null; + } +} +class ExData extends _xfa_object.ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "exData"); + this.contentType = attributes.contentType || ""; + this.href = attributes.href || ""; + this.id = attributes.id || ""; + this.maxLength = (0, _utils.getInteger)({ + data: attributes.maxLength, + defaultValue: -1, + validate: x => x >= -1 + }); + this.name = attributes.name || ""; + this.rid = attributes.rid || ""; + this.transferEncoding = (0, _utils.getStringOption)(attributes.transferEncoding, ["none", "base64", "package"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [_symbol_utils.$isCDATAXml]() { + return this.contentType === "text/html"; + } + [_symbol_utils.$onChild](child) { + if (this.contentType === "text/html" && child[_symbol_utils.$namespaceId] === _namespaces.NamespaceIds.xhtml.id) { + this[_symbol_utils.$content] = child; + return true; + } + if (this.contentType === "text/xml") { + this[_symbol_utils.$content] = child; + return true; + } + return false; + } + [_symbol_utils.$toHTML](availableSpace) { + if (this.contentType !== "text/html" || !this[_symbol_utils.$content]) { + return _utils.HTMLResult.EMPTY; + } + return this[_symbol_utils.$content][_symbol_utils.$toHTML](availableSpace); + } +} +class ExObject extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "exObject", true); + this.archive = attributes.archive || ""; + this.classId = attributes.classId || ""; + this.codeBase = attributes.codeBase || ""; + this.codeType = attributes.codeType || ""; + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.boolean = new _xfa_object.XFAObjectArray(); + this.date = new _xfa_object.XFAObjectArray(); + this.dateTime = new _xfa_object.XFAObjectArray(); + this.decimal = new _xfa_object.XFAObjectArray(); + this.exData = new _xfa_object.XFAObjectArray(); + this.exObject = new _xfa_object.XFAObjectArray(); + this.float = new _xfa_object.XFAObjectArray(); + this.image = new _xfa_object.XFAObjectArray(); + this.integer = new _xfa_object.XFAObjectArray(); + this.text = new _xfa_object.XFAObjectArray(); + this.time = new _xfa_object.XFAObjectArray(); + } +} +class ExclGroup extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "exclGroup", true); + this.access = (0, _utils.getStringOption)(attributes.access, ["open", "nonInteractive", "protected", "readOnly"]); + this.accessKey = attributes.accessKey || ""; + this.anchorType = (0, _utils.getStringOption)(attributes.anchorType, ["topLeft", "bottomCenter", "bottomLeft", "bottomRight", "middleCenter", "middleLeft", "middleRight", "topCenter", "topRight"]); + this.colSpan = (0, _utils.getInteger)({ + data: attributes.colSpan, + defaultValue: 1, + validate: n => n >= 1 || n === -1 + }); + this.h = attributes.h ? (0, _utils.getMeasurement)(attributes.h) : ""; + this.hAlign = (0, _utils.getStringOption)(attributes.hAlign, ["left", "center", "justify", "justifyAll", "radix", "right"]); + this.id = attributes.id || ""; + this.layout = (0, _utils.getStringOption)(attributes.layout, ["position", "lr-tb", "rl-row", "rl-tb", "row", "table", "tb"]); + this.maxH = (0, _utils.getMeasurement)(attributes.maxH, "0pt"); + this.maxW = (0, _utils.getMeasurement)(attributes.maxW, "0pt"); + this.minH = (0, _utils.getMeasurement)(attributes.minH, "0pt"); + this.minW = (0, _utils.getMeasurement)(attributes.minW, "0pt"); + this.name = attributes.name || ""; + this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.relevant = (0, _utils.getRelevant)(attributes.relevant); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.w = attributes.w ? (0, _utils.getMeasurement)(attributes.w) : ""; + this.x = (0, _utils.getMeasurement)(attributes.x, "0pt"); + this.y = (0, _utils.getMeasurement)(attributes.y, "0pt"); + this.assist = null; + this.bind = null; + this.border = null; + this.calculate = null; + this.caption = null; + this.desc = null; + this.extras = null; + this.margin = null; + this.para = null; + this.traversal = null; + this.validate = null; + this.connect = new _xfa_object.XFAObjectArray(); + this.event = new _xfa_object.XFAObjectArray(); + this.field = new _xfa_object.XFAObjectArray(); + this.setProperty = new _xfa_object.XFAObjectArray(); + } + [_symbol_utils.$isBindable]() { + return true; + } + [_symbol_utils.$hasSettableValue]() { + return true; + } + [_symbol_utils.$setValue](value) { + for (const field of this.field.children) { + if (!field.value) { + const nodeValue = new Value({}); + field[_symbol_utils.$appendChild](nodeValue); + field.value = nodeValue; + } + field.value[_symbol_utils.$setValue](value); + } + } + [_symbol_utils.$isThereMoreWidth]() { + return this.layout.endsWith("-tb") && this[_symbol_utils.$extra].attempt === 0 && this[_symbol_utils.$extra].numberInLine > 0 || this[_symbol_utils.$getParent]()[_symbol_utils.$isThereMoreWidth](); + } + [_symbol_utils.$isSplittable]() { + const parent = this[_symbol_utils.$getSubformParent](); + if (!parent[_symbol_utils.$isSplittable]()) { + return false; + } + if (this[_symbol_utils.$extra]._isSplittable !== undefined) { + return this[_symbol_utils.$extra]._isSplittable; + } + if (this.layout === "position" || this.layout.includes("row")) { + this[_symbol_utils.$extra]._isSplittable = false; + return false; + } + if (parent.layout?.endsWith("-tb") && parent[_symbol_utils.$extra].numberInLine !== 0) { + return false; + } + this[_symbol_utils.$extra]._isSplittable = true; + return true; + } + [_symbol_utils.$flushHTML]() { + return (0, _layout.flushHTML)(this); + } + [_symbol_utils.$addHTML](html, bbox) { + (0, _layout.addHTML)(this, html, bbox); + } + [_symbol_utils.$getAvailableSpace]() { + return (0, _layout.getAvailableSpace)(this); + } + [_symbol_utils.$toHTML](availableSpace) { + setTabIndex(this); + if (this.presence === "hidden" || this.presence === "inactive" || this.h === 0 || this.w === 0) { + return _utils.HTMLResult.EMPTY; + } + (0, _html_utils.fixDimensions)(this); + const children = []; + const attributes = { + id: this[_symbol_utils.$uid], + class: [] + }; + (0, _html_utils.setAccess)(this, attributes.class); + if (!this[_symbol_utils.$extra]) { + this[_symbol_utils.$extra] = Object.create(null); + } + Object.assign(this[_symbol_utils.$extra], { + children, + attributes, + attempt: 0, + line: null, + numberInLine: 0, + availableSpace: { + width: Math.min(this.w || Infinity, availableSpace.width), + height: Math.min(this.h || Infinity, availableSpace.height) + }, + width: 0, + height: 0, + prevHeight: 0, + currentWidth: 0 + }); + const isSplittable = this[_symbol_utils.$isSplittable](); + if (!isSplittable) { + setFirstUnsplittable(this); + } + if (!(0, _layout.checkDimensions)(this, availableSpace)) { + return _utils.HTMLResult.FAILURE; + } + const filter = new Set(["field"]); + if (this.layout.includes("row")) { + const columnWidths = this[_symbol_utils.$getSubformParent]().columnWidths; + if (Array.isArray(columnWidths) && columnWidths.length > 0) { + this[_symbol_utils.$extra].columnWidths = columnWidths; + this[_symbol_utils.$extra].currentColumn = 0; + } + } + const style = (0, _html_utils.toStyle)(this, "anchorType", "dimensions", "position", "presence", "border", "margin", "hAlign"); + const classNames = ["xfaExclgroup"]; + const cl = (0, _html_utils.layoutClass)(this); + if (cl) { + classNames.push(cl); + } + if ((0, _html_utils.isPrintOnly)(this)) { + classNames.push("xfaPrintOnly"); + } + attributes.style = style; + attributes.class = classNames; + if (this.name) { + attributes.xfaName = this.name; + } + this[_symbol_utils.$pushPara](); + const isLrTb = this.layout === "lr-tb" || this.layout === "rl-tb"; + const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1; + for (; this[_symbol_utils.$extra].attempt < maxRun; this[_symbol_utils.$extra].attempt++) { + if (isLrTb && this[_symbol_utils.$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) { + this[_symbol_utils.$extra].numberInLine = 0; + } + const result = this[_symbol_utils.$childrenToHTML]({ + filter, + include: true + }); + if (result.success) { + break; + } + if (result.isBreak()) { + this[_symbol_utils.$popPara](); + return result; + } + if (isLrTb && this[_symbol_utils.$extra].attempt === 0 && this[_symbol_utils.$extra].numberInLine === 0 && !this[_symbol_utils.$getTemplateRoot]()[_symbol_utils.$extra].noLayoutFailure) { + this[_symbol_utils.$extra].attempt = maxRun; + break; + } + } + this[_symbol_utils.$popPara](); + if (!isSplittable) { + unsetFirstUnsplittable(this); + } + if (this[_symbol_utils.$extra].attempt === maxRun) { + if (!isSplittable) { + delete this[_symbol_utils.$extra]; + } + return _utils.HTMLResult.FAILURE; + } + let marginH = 0; + let marginV = 0; + if (this.margin) { + marginH = this.margin.leftInset + this.margin.rightInset; + marginV = this.margin.topInset + this.margin.bottomInset; + } + const width = Math.max(this[_symbol_utils.$extra].width + marginH, this.w || 0); + const height = Math.max(this[_symbol_utils.$extra].height + marginV, this.h || 0); + const bbox = [this.x, this.y, width, height]; + if (this.w === "") { + style.width = (0, _html_utils.measureToString)(width); + } + if (this.h === "") { + style.height = (0, _html_utils.measureToString)(height); + } + const html = { + name: "div", + attributes, + children + }; + applyAssist(this, attributes); + delete this[_symbol_utils.$extra]; + return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox); + } +} +class Execute extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "execute"); + this.connection = attributes.connection || ""; + this.executeType = (0, _utils.getStringOption)(attributes.executeType, ["import", "remerge"]); + this.id = attributes.id || ""; + this.runAt = (0, _utils.getStringOption)(attributes.runAt, ["client", "both", "server"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Extras extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "extras", true); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.boolean = new _xfa_object.XFAObjectArray(); + this.date = new _xfa_object.XFAObjectArray(); + this.dateTime = new _xfa_object.XFAObjectArray(); + this.decimal = new _xfa_object.XFAObjectArray(); + this.exData = new _xfa_object.XFAObjectArray(); + this.extras = new _xfa_object.XFAObjectArray(); + this.float = new _xfa_object.XFAObjectArray(); + this.image = new _xfa_object.XFAObjectArray(); + this.integer = new _xfa_object.XFAObjectArray(); + this.text = new _xfa_object.XFAObjectArray(); + this.time = new _xfa_object.XFAObjectArray(); + } +} +class Field extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "field", true); + this.access = (0, _utils.getStringOption)(attributes.access, ["open", "nonInteractive", "protected", "readOnly"]); + this.accessKey = attributes.accessKey || ""; + this.anchorType = (0, _utils.getStringOption)(attributes.anchorType, ["topLeft", "bottomCenter", "bottomLeft", "bottomRight", "middleCenter", "middleLeft", "middleRight", "topCenter", "topRight"]); + this.colSpan = (0, _utils.getInteger)({ + data: attributes.colSpan, + defaultValue: 1, + validate: n => n >= 1 || n === -1 + }); + this.h = attributes.h ? (0, _utils.getMeasurement)(attributes.h) : ""; + this.hAlign = (0, _utils.getStringOption)(attributes.hAlign, ["left", "center", "justify", "justifyAll", "radix", "right"]); + this.id = attributes.id || ""; + this.locale = attributes.locale || ""; + this.maxH = (0, _utils.getMeasurement)(attributes.maxH, "0pt"); + this.maxW = (0, _utils.getMeasurement)(attributes.maxW, "0pt"); + this.minH = (0, _utils.getMeasurement)(attributes.minH, "0pt"); + this.minW = (0, _utils.getMeasurement)(attributes.minW, "0pt"); + this.name = attributes.name || ""; + this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.relevant = (0, _utils.getRelevant)(attributes.relevant); + this.rotate = (0, _utils.getInteger)({ + data: attributes.rotate, + defaultValue: 0, + validate: x => x % 90 === 0 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.w = attributes.w ? (0, _utils.getMeasurement)(attributes.w) : ""; + this.x = (0, _utils.getMeasurement)(attributes.x, "0pt"); + this.y = (0, _utils.getMeasurement)(attributes.y, "0pt"); + this.assist = null; + this.bind = null; + this.border = null; + this.calculate = null; + this.caption = null; + this.desc = null; + this.extras = null; + this.font = null; + this.format = null; + this.items = new _xfa_object.XFAObjectArray(2); + this.keep = null; + this.margin = null; + this.para = null; + this.traversal = null; + this.ui = null; + this.validate = null; + this.value = null; + this.bindItems = new _xfa_object.XFAObjectArray(); + this.connect = new _xfa_object.XFAObjectArray(); + this.event = new _xfa_object.XFAObjectArray(); + this.setProperty = new _xfa_object.XFAObjectArray(); + } + [_symbol_utils.$isBindable]() { + return true; + } + [_symbol_utils.$setValue](value) { + _setValue(this, value); + } + [_symbol_utils.$toHTML](availableSpace) { + setTabIndex(this); + if (!this.ui) { + this.ui = new Ui({}); + this.ui[_symbol_utils.$globalData] = this[_symbol_utils.$globalData]; + this[_symbol_utils.$appendChild](this.ui); + let node; + switch (this.items.children.length) { + case 0: + node = new TextEdit({}); + this.ui.textEdit = node; + break; + case 1: + node = new CheckButton({}); + this.ui.checkButton = node; + break; + case 2: + node = new ChoiceList({}); + this.ui.choiceList = node; + break; + } + this.ui[_symbol_utils.$appendChild](node); + } + if (!this.ui || this.presence === "hidden" || this.presence === "inactive" || this.h === 0 || this.w === 0) { + return _utils.HTMLResult.EMPTY; + } + if (this.caption) { + delete this.caption[_symbol_utils.$extra]; + } + this[_symbol_utils.$pushPara](); + const caption = this.caption ? this.caption[_symbol_utils.$toHTML](availableSpace).html : null; + const savedW = this.w; + const savedH = this.h; + let marginH = 0; + let marginV = 0; + if (this.margin) { + marginH = this.margin.leftInset + this.margin.rightInset; + marginV = this.margin.topInset + this.margin.bottomInset; + } + let borderDims = null; + if (this.w === "" || this.h === "") { + let width = null; + let height = null; + let uiW = 0; + let uiH = 0; + if (this.ui.checkButton) { + uiW = uiH = this.ui.checkButton.size; + } else { + const { + w, + h + } = (0, _html_utils.layoutNode)(this, availableSpace); + if (w !== null) { + uiW = w; + uiH = h; + } else { + uiH = (0, _fonts.getMetrics)(this.font, true).lineNoGap; + } + } + borderDims = getBorderDims(this.ui[_symbol_utils.$getExtra]()); + uiW += borderDims.w; + uiH += borderDims.h; + if (this.caption) { + const { + w, + h, + isBroken + } = this.caption[_symbol_utils.$getExtra](availableSpace); + if (isBroken && this[_symbol_utils.$getSubformParent]()[_symbol_utils.$isThereMoreWidth]()) { + this[_symbol_utils.$popPara](); + return _utils.HTMLResult.FAILURE; + } + width = w; + height = h; + switch (this.caption.placement) { + case "left": + case "right": + case "inline": + width += uiW; + break; + case "top": + case "bottom": + height += uiH; + break; + } + } else { + width = uiW; + height = uiH; + } + if (width && this.w === "") { + width += marginH; + this.w = Math.min(this.maxW <= 0 ? Infinity : this.maxW, this.minW + 1 < width ? width : this.minW); + } + if (height && this.h === "") { + height += marginV; + this.h = Math.min(this.maxH <= 0 ? Infinity : this.maxH, this.minH + 1 < height ? height : this.minH); + } + } + this[_symbol_utils.$popPara](); + (0, _html_utils.fixDimensions)(this); + setFirstUnsplittable(this); + if (!(0, _layout.checkDimensions)(this, availableSpace)) { + this.w = savedW; + this.h = savedH; + this[_symbol_utils.$popPara](); + return _utils.HTMLResult.FAILURE; + } + unsetFirstUnsplittable(this); + const style = (0, _html_utils.toStyle)(this, "font", "dimensions", "position", "rotate", "anchorType", "presence", "margin", "hAlign"); + (0, _html_utils.setMinMaxDimensions)(this, style); + const classNames = ["xfaField"]; + if (this.font) { + classNames.push("xfaFont"); + } + if ((0, _html_utils.isPrintOnly)(this)) { + classNames.push("xfaPrintOnly"); + } + const attributes = { + style, + id: this[_symbol_utils.$uid], + class: classNames + }; + if (style.margin) { + style.padding = style.margin; + delete style.margin; + } + (0, _html_utils.setAccess)(this, classNames); + if (this.name) { + attributes.xfaName = this.name; + } + const children = []; + const html = { + name: "div", + attributes, + children + }; + applyAssist(this, attributes); + const borderStyle = this.border ? this.border[_symbol_utils.$toStyle]() : null; + const bbox = (0, _html_utils.computeBbox)(this, html, availableSpace); + const ui = this.ui[_symbol_utils.$toHTML]().html; + if (!ui) { + Object.assign(style, borderStyle); + return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox); + } + if (this[_symbol_utils.$tabIndex]) { + if (ui.children?.[0]) { + ui.children[0].attributes.tabindex = this[_symbol_utils.$tabIndex]; + } else { + ui.attributes.tabindex = this[_symbol_utils.$tabIndex]; + } + } + if (!ui.attributes.style) { + ui.attributes.style = Object.create(null); + } + let aElement = null; + if (this.ui.button) { + if (ui.children.length === 1) { + [aElement] = ui.children.splice(0, 1); + } + Object.assign(ui.attributes.style, borderStyle); + } else { + Object.assign(style, borderStyle); + } + children.push(ui); + if (this.value) { + if (this.ui.imageEdit) { + ui.children.push(this.value[_symbol_utils.$toHTML]().html); + } else if (!this.ui.button) { + let value = ""; + if (this.value.exData) { + value = this.value.exData[_symbol_utils.$text](); + } else if (this.value.text) { + value = this.value.text[_symbol_utils.$getExtra](); + } else { + const htmlValue = this.value[_symbol_utils.$toHTML]().html; + if (htmlValue !== null) { + value = htmlValue.children[0].value; + } + } + if (this.ui.textEdit && this.value.text?.maxChars) { + ui.children[0].attributes.maxLength = this.value.text.maxChars; + } + if (value) { + if (this.ui.numericEdit) { + value = parseFloat(value); + value = isNaN(value) ? "" : value.toString(); + } + if (ui.children[0].name === "textarea") { + ui.children[0].attributes.textContent = value; + } else { + ui.children[0].attributes.value = value; + } + } + } + } + if (!this.ui.imageEdit && ui.children?.[0] && this.h) { + borderDims = borderDims || getBorderDims(this.ui[_symbol_utils.$getExtra]()); + let captionHeight = 0; + if (this.caption && ["top", "bottom"].includes(this.caption.placement)) { + captionHeight = this.caption.reserve; + if (captionHeight <= 0) { + captionHeight = this.caption[_symbol_utils.$getExtra](availableSpace).h; + } + const inputHeight = this.h - captionHeight - marginV - borderDims.h; + ui.children[0].attributes.style.height = (0, _html_utils.measureToString)(inputHeight); + } else { + ui.children[0].attributes.style.height = "100%"; + } + } + if (aElement) { + ui.children.push(aElement); + } + if (!caption) { + if (ui.attributes.class) { + ui.attributes.class.push("xfaLeft"); + } + this.w = savedW; + this.h = savedH; + return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox); + } + if (this.ui.button) { + if (style.padding) { + delete style.padding; + } + if (caption.name === "div") { + caption.name = "span"; + } + ui.children.push(caption); + return _utils.HTMLResult.success(html, bbox); + } else if (this.ui.checkButton) { + caption.attributes.class[0] = "xfaCaptionForCheckButton"; + } + if (!ui.attributes.class) { + ui.attributes.class = []; + } + ui.children.splice(0, 0, caption); + switch (this.caption.placement) { + case "left": + ui.attributes.class.push("xfaLeft"); + break; + case "right": + ui.attributes.class.push("xfaRight"); + break; + case "top": + ui.attributes.class.push("xfaTop"); + break; + case "bottom": + ui.attributes.class.push("xfaBottom"); + break; + case "inline": + ui.attributes.class.push("xfaLeft"); + break; + } + this.w = savedW; + this.h = savedH; + return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox); + } +} +exports.Field = Field; +class Fill extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "fill", true); + this.id = attributes.id || ""; + this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.color = null; + this.extras = null; + this.linear = null; + this.pattern = null; + this.radial = null; + this.solid = null; + this.stipple = null; + } + [_symbol_utils.$toStyle]() { + const parent = this[_symbol_utils.$getParent](); + const grandpa = parent[_symbol_utils.$getParent](); + const ggrandpa = grandpa[_symbol_utils.$getParent](); + const style = Object.create(null); + let propName = "color"; + let altPropName = propName; + if (parent instanceof Border) { + propName = "background-color"; + altPropName = "background"; + if (ggrandpa instanceof Ui) { + style.backgroundColor = "white"; + } + } + if (parent instanceof Rectangle || parent instanceof Arc) { + propName = altPropName = "fill"; + style.fill = "white"; + } + for (const name of Object.getOwnPropertyNames(this)) { + if (name === "extras" || name === "color") { + continue; + } + const obj = this[name]; + if (!(obj instanceof _xfa_object.XFAObject)) { + continue; + } + const color = obj[_symbol_utils.$toStyle](this.color); + if (color) { + style[color.startsWith("#") ? propName : altPropName] = color; + } + return style; + } + if (this.color?.value) { + const color = this.color[_symbol_utils.$toStyle](); + style[color.startsWith("#") ? propName : altPropName] = color; + } + return style; + } +} +class Filter extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "filter", true); + this.addRevocationInfo = (0, _utils.getStringOption)(attributes.addRevocationInfo, ["", "required", "optional", "none"]); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.version = (0, _utils.getInteger)({ + data: this.version, + defaultValue: 5, + validate: x => x >= 1 && x <= 5 + }); + this.appearanceFilter = null; + this.certificates = null; + this.digestMethods = null; + this.encodings = null; + this.encryptionMethods = null; + this.handler = null; + this.lockDocument = null; + this.mdp = null; + this.reasons = null; + this.timeStamp = null; + } +} +class Float extends _xfa_object.ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "float"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [_symbol_utils.$finalize]() { + const number = parseFloat(this[_symbol_utils.$content].trim()); + this[_symbol_utils.$content] = isNaN(number) ? null : number; + } + [_symbol_utils.$toHTML](availableSpace) { + return valueToHtml(this[_symbol_utils.$content] !== null ? this[_symbol_utils.$content].toString() : ""); + } +} +class Font extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "font", true); + this.baselineShift = (0, _utils.getMeasurement)(attributes.baselineShift); + this.fontHorizontalScale = (0, _utils.getFloat)({ + data: attributes.fontHorizontalScale, + defaultValue: 100, + validate: x => x >= 0 + }); + this.fontVerticalScale = (0, _utils.getFloat)({ + data: attributes.fontVerticalScale, + defaultValue: 100, + validate: x => x >= 0 + }); + this.id = attributes.id || ""; + this.kerningMode = (0, _utils.getStringOption)(attributes.kerningMode, ["none", "pair"]); + this.letterSpacing = (0, _utils.getMeasurement)(attributes.letterSpacing, "0"); + this.lineThrough = (0, _utils.getInteger)({ + data: attributes.lineThrough, + defaultValue: 0, + validate: x => x === 1 || x === 2 + }); + this.lineThroughPeriod = (0, _utils.getStringOption)(attributes.lineThroughPeriod, ["all", "word"]); + this.overline = (0, _utils.getInteger)({ + data: attributes.overline, + defaultValue: 0, + validate: x => x === 1 || x === 2 + }); + this.overlinePeriod = (0, _utils.getStringOption)(attributes.overlinePeriod, ["all", "word"]); + this.posture = (0, _utils.getStringOption)(attributes.posture, ["normal", "italic"]); + this.size = (0, _utils.getMeasurement)(attributes.size, "10pt"); + this.typeface = attributes.typeface || "Courier"; + this.underline = (0, _utils.getInteger)({ + data: attributes.underline, + defaultValue: 0, + validate: x => x === 1 || x === 2 + }); + this.underlinePeriod = (0, _utils.getStringOption)(attributes.underlinePeriod, ["all", "word"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.weight = (0, _utils.getStringOption)(attributes.weight, ["normal", "bold"]); + this.extras = null; + this.fill = null; + } + [_symbol_utils.$clean](builder) { + super[_symbol_utils.$clean](builder); + this[_symbol_utils.$globalData].usedTypefaces.add(this.typeface); + } + [_symbol_utils.$toStyle]() { + const style = (0, _html_utils.toStyle)(this, "fill"); + const color = style.color; + if (color) { + if (color === "#000000") { + delete style.color; + } else if (!color.startsWith("#")) { + style.background = color; + style.backgroundClip = "text"; + style.color = "transparent"; + } + } + if (this.baselineShift) { + style.verticalAlign = (0, _html_utils.measureToString)(this.baselineShift); + } + style.fontKerning = this.kerningMode === "none" ? "none" : "normal"; + style.letterSpacing = (0, _html_utils.measureToString)(this.letterSpacing); + if (this.lineThrough !== 0) { + style.textDecoration = "line-through"; + if (this.lineThrough === 2) { + style.textDecorationStyle = "double"; + } + } + if (this.overline !== 0) { + style.textDecoration = "overline"; + if (this.overline === 2) { + style.textDecorationStyle = "double"; + } + } + style.fontStyle = this.posture; + style.fontSize = (0, _html_utils.measureToString)(0.99 * this.size); + (0, _html_utils.setFontFamily)(this, this, this[_symbol_utils.$globalData].fontFinder, style); + if (this.underline !== 0) { + style.textDecoration = "underline"; + if (this.underline === 2) { + style.textDecorationStyle = "double"; + } + } + style.fontWeight = this.weight; + return style; + } +} +class Format extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "format", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.picture = null; + } +} +class Handler extends _xfa_object.StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "handler"); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Hyphenation extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "hyphenation"); + this.excludeAllCaps = (0, _utils.getInteger)({ + data: attributes.excludeAllCaps, + defaultValue: 0, + validate: x => x === 1 + }); + this.excludeInitialCap = (0, _utils.getInteger)({ + data: attributes.excludeInitialCap, + defaultValue: 0, + validate: x => x === 1 + }); + this.hyphenate = (0, _utils.getInteger)({ + data: attributes.hyphenate, + defaultValue: 0, + validate: x => x === 1 + }); + this.id = attributes.id || ""; + this.pushCharacterCount = (0, _utils.getInteger)({ + data: attributes.pushCharacterCount, + defaultValue: 3, + validate: x => x >= 0 + }); + this.remainCharacterCount = (0, _utils.getInteger)({ + data: attributes.remainCharacterCount, + defaultValue: 3, + validate: x => x >= 0 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.wordCharacterCount = (0, _utils.getInteger)({ + data: attributes.wordCharacterCount, + defaultValue: 7, + validate: x => x >= 0 + }); + } +} +class Image extends _xfa_object.StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "image"); + this.aspect = (0, _utils.getStringOption)(attributes.aspect, ["fit", "actual", "height", "none", "width"]); + this.contentType = attributes.contentType || ""; + this.href = attributes.href || ""; + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.transferEncoding = (0, _utils.getStringOption)(attributes.transferEncoding, ["base64", "none", "package"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [_symbol_utils.$toHTML]() { + if (this.contentType && !MIMES.has(this.contentType.toLowerCase())) { + return _utils.HTMLResult.EMPTY; + } + let buffer = this[_symbol_utils.$globalData].images && this[_symbol_utils.$globalData].images.get(this.href); + if (!buffer && (this.href || !this[_symbol_utils.$content])) { + return _utils.HTMLResult.EMPTY; + } + if (!buffer && this.transferEncoding === "base64") { + buffer = (0, _util.stringToBytes)(atob(this[_symbol_utils.$content])); + } + if (!buffer) { + return _utils.HTMLResult.EMPTY; + } + if (!this.contentType) { + for (const [header, type] of IMAGES_HEADERS) { + if (buffer.length > header.length && header.every((x, i) => x === buffer[i])) { + this.contentType = type; + break; + } + } + if (!this.contentType) { + return _utils.HTMLResult.EMPTY; + } + } + const blob = new Blob([buffer], { + type: this.contentType + }); + let style; + switch (this.aspect) { + case "fit": + case "actual": + break; + case "height": + style = { + height: "100%", + objectFit: "fill" + }; + break; + case "none": + style = { + width: "100%", + height: "100%", + objectFit: "fill" + }; + break; + case "width": + style = { + width: "100%", + objectFit: "fill" + }; + break; + } + const parent = this[_symbol_utils.$getParent](); + return _utils.HTMLResult.success({ + name: "img", + attributes: { + class: ["xfaImage"], + style, + src: URL.createObjectURL(blob), + alt: parent ? ariaLabel(parent[_symbol_utils.$getParent]()) : null + } + }); + } +} +class ImageEdit extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "imageEdit", true); + this.data = (0, _utils.getStringOption)(attributes.data, ["link", "embed"]); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.border = null; + this.extras = null; + this.margin = null; + } + [_symbol_utils.$toHTML](availableSpace) { + if (this.data === "embed") { + return _utils.HTMLResult.success({ + name: "div", + children: [], + attributes: {} + }); + } + return _utils.HTMLResult.EMPTY; + } +} +class Integer extends _xfa_object.ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "integer"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [_symbol_utils.$finalize]() { + const number = parseInt(this[_symbol_utils.$content].trim(), 10); + this[_symbol_utils.$content] = isNaN(number) ? null : number; + } + [_symbol_utils.$toHTML](availableSpace) { + return valueToHtml(this[_symbol_utils.$content] !== null ? this[_symbol_utils.$content].toString() : ""); + } +} +class Issuers extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "issuers", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.certificate = new _xfa_object.XFAObjectArray(); + } +} +class Items extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "items", true); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.ref = attributes.ref || ""; + this.save = (0, _utils.getInteger)({ + data: attributes.save, + defaultValue: 0, + validate: x => x === 1 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.boolean = new _xfa_object.XFAObjectArray(); + this.date = new _xfa_object.XFAObjectArray(); + this.dateTime = new _xfa_object.XFAObjectArray(); + this.decimal = new _xfa_object.XFAObjectArray(); + this.exData = new _xfa_object.XFAObjectArray(); + this.float = new _xfa_object.XFAObjectArray(); + this.image = new _xfa_object.XFAObjectArray(); + this.integer = new _xfa_object.XFAObjectArray(); + this.text = new _xfa_object.XFAObjectArray(); + this.time = new _xfa_object.XFAObjectArray(); + } + [_symbol_utils.$toHTML]() { + const output = []; + for (const child of this[_symbol_utils.$getChildren]()) { + output.push(child[_symbol_utils.$text]()); + } + return _utils.HTMLResult.success(output); + } +} +exports.Items = Items; +class Keep extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "keep", true); + this.id = attributes.id || ""; + const options = ["none", "contentArea", "pageArea"]; + this.intact = (0, _utils.getStringOption)(attributes.intact, options); + this.next = (0, _utils.getStringOption)(attributes.next, options); + this.previous = (0, _utils.getStringOption)(attributes.previous, options); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + } +} +class KeyUsage extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "keyUsage"); + const options = ["", "yes", "no"]; + this.crlSign = (0, _utils.getStringOption)(attributes.crlSign, options); + this.dataEncipherment = (0, _utils.getStringOption)(attributes.dataEncipherment, options); + this.decipherOnly = (0, _utils.getStringOption)(attributes.decipherOnly, options); + this.digitalSignature = (0, _utils.getStringOption)(attributes.digitalSignature, options); + this.encipherOnly = (0, _utils.getStringOption)(attributes.encipherOnly, options); + this.id = attributes.id || ""; + this.keyAgreement = (0, _utils.getStringOption)(attributes.keyAgreement, options); + this.keyCertSign = (0, _utils.getStringOption)(attributes.keyCertSign, options); + this.keyEncipherment = (0, _utils.getStringOption)(attributes.keyEncipherment, options); + this.nonRepudiation = (0, _utils.getStringOption)(attributes.nonRepudiation, options); + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Line extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "line", true); + this.hand = (0, _utils.getStringOption)(attributes.hand, ["even", "left", "right"]); + this.id = attributes.id || ""; + this.slope = (0, _utils.getStringOption)(attributes.slope, ["\\", "/"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.edge = null; + } + [_symbol_utils.$toHTML]() { + const parent = this[_symbol_utils.$getParent]()[_symbol_utils.$getParent](); + const edge = this.edge || new Edge({}); + const edgeStyle = edge[_symbol_utils.$toStyle](); + const style = Object.create(null); + const thickness = edge.presence === "visible" ? edge.thickness : 0; + style.strokeWidth = (0, _html_utils.measureToString)(thickness); + style.stroke = edgeStyle.color; + let x1, y1, x2, y2; + let width = "100%"; + let height = "100%"; + if (parent.w <= thickness) { + [x1, y1, x2, y2] = ["50%", 0, "50%", "100%"]; + width = style.strokeWidth; + } else if (parent.h <= thickness) { + [x1, y1, x2, y2] = [0, "50%", "100%", "50%"]; + height = style.strokeWidth; + } else { + if (this.slope === "\\") { + [x1, y1, x2, y2] = [0, 0, "100%", "100%"]; + } else { + [x1, y1, x2, y2] = [0, "100%", "100%", 0]; + } + } + const line = { + name: "line", + attributes: { + xmlns: SVG_NS, + x1, + y1, + x2, + y2, + style + } + }; + const svg = { + name: "svg", + children: [line], + attributes: { + xmlns: SVG_NS, + width, + height, + style: { + overflow: "visible" + } + } + }; + if (hasMargin(parent)) { + return _utils.HTMLResult.success({ + name: "div", + attributes: { + style: { + display: "inline", + width: "100%", + height: "100%" + } + }, + children: [svg] + }); + } + svg.attributes.style.position = "absolute"; + return _utils.HTMLResult.success(svg); + } +} +class Linear extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "linear", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["toRight", "toBottom", "toLeft", "toTop"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.color = null; + this.extras = null; + } + [_symbol_utils.$toStyle](startColor) { + startColor = startColor ? startColor[_symbol_utils.$toStyle]() : "#FFFFFF"; + const transf = this.type.replace(/([RBLT])/, " $1").toLowerCase(); + const endColor = this.color ? this.color[_symbol_utils.$toStyle]() : "#000000"; + return `linear-gradient(${transf}, ${startColor}, ${endColor})`; + } +} +class LockDocument extends _xfa_object.ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "lockDocument"); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [_symbol_utils.$finalize]() { + this[_symbol_utils.$content] = (0, _utils.getStringOption)(this[_symbol_utils.$content], ["auto", "0", "1"]); + } +} +class Manifest extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "manifest", true); + this.action = (0, _utils.getStringOption)(attributes.action, ["include", "all", "exclude"]); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.ref = new _xfa_object.XFAObjectArray(); + } +} +class Margin extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "margin", true); + this.bottomInset = (0, _utils.getMeasurement)(attributes.bottomInset, "0"); + this.id = attributes.id || ""; + this.leftInset = (0, _utils.getMeasurement)(attributes.leftInset, "0"); + this.rightInset = (0, _utils.getMeasurement)(attributes.rightInset, "0"); + this.topInset = (0, _utils.getMeasurement)(attributes.topInset, "0"); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + } + [_symbol_utils.$toStyle]() { + return { + margin: (0, _html_utils.measureToString)(this.topInset) + " " + (0, _html_utils.measureToString)(this.rightInset) + " " + (0, _html_utils.measureToString)(this.bottomInset) + " " + (0, _html_utils.measureToString)(this.leftInset) + }; + } +} +class Mdp extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "mdp"); + this.id = attributes.id || ""; + this.permissions = (0, _utils.getInteger)({ + data: attributes.permissions, + defaultValue: 2, + validate: x => x === 1 || x === 3 + }); + this.signatureType = (0, _utils.getStringOption)(attributes.signatureType, ["filler", "author"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Medium extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "medium"); + this.id = attributes.id || ""; + this.imagingBBox = (0, _utils.getBBox)(attributes.imagingBBox); + this.long = (0, _utils.getMeasurement)(attributes.long); + this.orientation = (0, _utils.getStringOption)(attributes.orientation, ["portrait", "landscape"]); + this.short = (0, _utils.getMeasurement)(attributes.short); + this.stock = attributes.stock || ""; + this.trayIn = (0, _utils.getStringOption)(attributes.trayIn, ["auto", "delegate", "pageFront"]); + this.trayOut = (0, _utils.getStringOption)(attributes.trayOut, ["auto", "delegate"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Message extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "message", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.text = new _xfa_object.XFAObjectArray(); + } +} +class NumericEdit extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "numericEdit", true); + this.hScrollPolicy = (0, _utils.getStringOption)(attributes.hScrollPolicy, ["auto", "off", "on"]); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.border = null; + this.comb = null; + this.extras = null; + this.margin = null; + } + [_symbol_utils.$toHTML](availableSpace) { + const style = (0, _html_utils.toStyle)(this, "border", "font", "margin"); + const field = this[_symbol_utils.$getParent]()[_symbol_utils.$getParent](); + const html = { + name: "input", + attributes: { + type: "text", + fieldId: field[_symbol_utils.$uid], + dataId: field[_symbol_utils.$data]?.[_symbol_utils.$uid] || field[_symbol_utils.$uid], + class: ["xfaTextfield"], + style, + "aria-label": ariaLabel(field), + "aria-required": false + } + }; + if (isRequired(field)) { + html.attributes["aria-required"] = true; + html.attributes.required = true; + } + return _utils.HTMLResult.success({ + name: "label", + attributes: { + class: ["xfaLabel"] + }, + children: [html] + }); + } +} +class Occur extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "occur", true); + this.id = attributes.id || ""; + this.initial = attributes.initial !== "" ? (0, _utils.getInteger)({ + data: attributes.initial, + defaultValue: "", + validate: x => true + }) : ""; + this.max = attributes.max !== "" ? (0, _utils.getInteger)({ + data: attributes.max, + defaultValue: 1, + validate: x => true + }) : ""; + this.min = attributes.min !== "" ? (0, _utils.getInteger)({ + data: attributes.min, + defaultValue: 1, + validate: x => true + }) : ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + } + [_symbol_utils.$clean]() { + const parent = this[_symbol_utils.$getParent](); + const originalMin = this.min; + if (this.min === "") { + this.min = parent instanceof PageArea || parent instanceof PageSet ? 0 : 1; + } + if (this.max === "") { + if (originalMin === "") { + this.max = parent instanceof PageArea || parent instanceof PageSet ? -1 : 1; + } else { + this.max = this.min; + } + } + if (this.max !== -1 && this.max < this.min) { + this.max = this.min; + } + if (this.initial === "") { + this.initial = parent instanceof Template ? 1 : this.min; + } + } +} +class Oid extends _xfa_object.StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "oid"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Oids extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "oids", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.oid = new _xfa_object.XFAObjectArray(); + } +} +class Overflow extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "overflow"); + this.id = attributes.id || ""; + this.leader = attributes.leader || ""; + this.target = attributes.target || ""; + this.trailer = attributes.trailer || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [_symbol_utils.$getExtra]() { + if (!this[_symbol_utils.$extra]) { + const parent = this[_symbol_utils.$getParent](); + const root = this[_symbol_utils.$getTemplateRoot](); + const target = root[_symbol_utils.$searchNode](this.target, parent); + const leader = root[_symbol_utils.$searchNode](this.leader, parent); + const trailer = root[_symbol_utils.$searchNode](this.trailer, parent); + this[_symbol_utils.$extra] = { + target: target?.[0] || null, + leader: leader?.[0] || null, + trailer: trailer?.[0] || null, + addLeader: false, + addTrailer: false + }; + } + return this[_symbol_utils.$extra]; + } +} +class PageArea extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "pageArea", true); + this.blankOrNotBlank = (0, _utils.getStringOption)(attributes.blankOrNotBlank, ["any", "blank", "notBlank"]); + this.id = attributes.id || ""; + this.initialNumber = (0, _utils.getInteger)({ + data: attributes.initialNumber, + defaultValue: 1, + validate: x => true + }); + this.name = attributes.name || ""; + this.numbered = (0, _utils.getInteger)({ + data: attributes.numbered, + defaultValue: 1, + validate: x => true + }); + this.oddOrEven = (0, _utils.getStringOption)(attributes.oddOrEven, ["any", "even", "odd"]); + this.pagePosition = (0, _utils.getStringOption)(attributes.pagePosition, ["any", "first", "last", "only", "rest"]); + this.relevant = (0, _utils.getRelevant)(attributes.relevant); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.desc = null; + this.extras = null; + this.medium = null; + this.occur = null; + this.area = new _xfa_object.XFAObjectArray(); + this.contentArea = new _xfa_object.XFAObjectArray(); + this.draw = new _xfa_object.XFAObjectArray(); + this.exclGroup = new _xfa_object.XFAObjectArray(); + this.field = new _xfa_object.XFAObjectArray(); + this.subform = new _xfa_object.XFAObjectArray(); + } + [_symbol_utils.$isUsable]() { + if (!this[_symbol_utils.$extra]) { + this[_symbol_utils.$extra] = { + numberOfUse: 0 + }; + return true; + } + return !this.occur || this.occur.max === -1 || this[_symbol_utils.$extra].numberOfUse < this.occur.max; + } + [_symbol_utils.$cleanPage]() { + delete this[_symbol_utils.$extra]; + } + [_symbol_utils.$getNextPage]() { + if (!this[_symbol_utils.$extra]) { + this[_symbol_utils.$extra] = { + numberOfUse: 0 + }; + } + const parent = this[_symbol_utils.$getParent](); + if (parent.relation === "orderedOccurrence") { + if (this[_symbol_utils.$isUsable]()) { + this[_symbol_utils.$extra].numberOfUse += 1; + return this; + } + } + return parent[_symbol_utils.$getNextPage](); + } + [_symbol_utils.$getAvailableSpace]() { + return this[_symbol_utils.$extra].space || { + width: 0, + height: 0 + }; + } + [_symbol_utils.$toHTML]() { + if (!this[_symbol_utils.$extra]) { + this[_symbol_utils.$extra] = { + numberOfUse: 1 + }; + } + const children = []; + this[_symbol_utils.$extra].children = children; + const style = Object.create(null); + if (this.medium && this.medium.short && this.medium.long) { + style.width = (0, _html_utils.measureToString)(this.medium.short); + style.height = (0, _html_utils.measureToString)(this.medium.long); + this[_symbol_utils.$extra].space = { + width: this.medium.short, + height: this.medium.long + }; + if (this.medium.orientation === "landscape") { + const x = style.width; + style.width = style.height; + style.height = x; + this[_symbol_utils.$extra].space = { + width: this.medium.long, + height: this.medium.short + }; + } + } else { + (0, _util.warn)("XFA - No medium specified in pageArea: please file a bug."); + } + this[_symbol_utils.$childrenToHTML]({ + filter: new Set(["area", "draw", "field", "subform"]), + include: true + }); + this[_symbol_utils.$childrenToHTML]({ + filter: new Set(["contentArea"]), + include: true + }); + return _utils.HTMLResult.success({ + name: "div", + children, + attributes: { + class: ["xfaPage"], + id: this[_symbol_utils.$uid], + style, + xfaName: this.name + } + }); + } +} +class PageSet extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "pageSet", true); + this.duplexImposition = (0, _utils.getStringOption)(attributes.duplexImposition, ["longEdge", "shortEdge"]); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.relation = (0, _utils.getStringOption)(attributes.relation, ["orderedOccurrence", "duplexPaginated", "simplexPaginated"]); + this.relevant = (0, _utils.getRelevant)(attributes.relevant); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.occur = null; + this.pageArea = new _xfa_object.XFAObjectArray(); + this.pageSet = new _xfa_object.XFAObjectArray(); + } + [_symbol_utils.$cleanPage]() { + for (const page of this.pageArea.children) { + page[_symbol_utils.$cleanPage](); + } + for (const page of this.pageSet.children) { + page[_symbol_utils.$cleanPage](); + } + } + [_symbol_utils.$isUsable]() { + return !this.occur || this.occur.max === -1 || this[_symbol_utils.$extra].numberOfUse < this.occur.max; + } + [_symbol_utils.$getNextPage]() { + if (!this[_symbol_utils.$extra]) { + this[_symbol_utils.$extra] = { + numberOfUse: 1, + pageIndex: -1, + pageSetIndex: -1 + }; + } + if (this.relation === "orderedOccurrence") { + if (this[_symbol_utils.$extra].pageIndex + 1 < this.pageArea.children.length) { + this[_symbol_utils.$extra].pageIndex += 1; + const pageArea = this.pageArea.children[this[_symbol_utils.$extra].pageIndex]; + return pageArea[_symbol_utils.$getNextPage](); + } + if (this[_symbol_utils.$extra].pageSetIndex + 1 < this.pageSet.children.length) { + this[_symbol_utils.$extra].pageSetIndex += 1; + return this.pageSet.children[this[_symbol_utils.$extra].pageSetIndex][_symbol_utils.$getNextPage](); + } + if (this[_symbol_utils.$isUsable]()) { + this[_symbol_utils.$extra].numberOfUse += 1; + this[_symbol_utils.$extra].pageIndex = -1; + this[_symbol_utils.$extra].pageSetIndex = -1; + return this[_symbol_utils.$getNextPage](); + } + const parent = this[_symbol_utils.$getParent](); + if (parent instanceof PageSet) { + return parent[_symbol_utils.$getNextPage](); + } + this[_symbol_utils.$cleanPage](); + return this[_symbol_utils.$getNextPage](); + } + const pageNumber = this[_symbol_utils.$getTemplateRoot]()[_symbol_utils.$extra].pageNumber; + const parity = pageNumber % 2 === 0 ? "even" : "odd"; + const position = pageNumber === 0 ? "first" : "rest"; + let page = this.pageArea.children.find(p => p.oddOrEven === parity && p.pagePosition === position); + if (page) { + return page; + } + page = this.pageArea.children.find(p => p.oddOrEven === "any" && p.pagePosition === position); + if (page) { + return page; + } + page = this.pageArea.children.find(p => p.oddOrEven === "any" && p.pagePosition === "any"); + if (page) { + return page; + } + return this.pageArea.children[0]; + } +} +class Para extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "para", true); + this.hAlign = (0, _utils.getStringOption)(attributes.hAlign, ["left", "center", "justify", "justifyAll", "radix", "right"]); + this.id = attributes.id || ""; + this.lineHeight = attributes.lineHeight ? (0, _utils.getMeasurement)(attributes.lineHeight, "0pt") : ""; + this.marginLeft = attributes.marginLeft ? (0, _utils.getMeasurement)(attributes.marginLeft, "0pt") : ""; + this.marginRight = attributes.marginRight ? (0, _utils.getMeasurement)(attributes.marginRight, "0pt") : ""; + this.orphans = (0, _utils.getInteger)({ + data: attributes.orphans, + defaultValue: 0, + validate: x => x >= 0 + }); + this.preserve = attributes.preserve || ""; + this.radixOffset = attributes.radixOffset ? (0, _utils.getMeasurement)(attributes.radixOffset, "0pt") : ""; + this.spaceAbove = attributes.spaceAbove ? (0, _utils.getMeasurement)(attributes.spaceAbove, "0pt") : ""; + this.spaceBelow = attributes.spaceBelow ? (0, _utils.getMeasurement)(attributes.spaceBelow, "0pt") : ""; + this.tabDefault = attributes.tabDefault ? (0, _utils.getMeasurement)(this.tabDefault) : ""; + this.tabStops = (attributes.tabStops || "").trim().split(/\s+/).map((x, i) => i % 2 === 1 ? (0, _utils.getMeasurement)(x) : x); + this.textIndent = attributes.textIndent ? (0, _utils.getMeasurement)(attributes.textIndent, "0pt") : ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.vAlign = (0, _utils.getStringOption)(attributes.vAlign, ["top", "bottom", "middle"]); + this.widows = (0, _utils.getInteger)({ + data: attributes.widows, + defaultValue: 0, + validate: x => x >= 0 + }); + this.hyphenation = null; + } + [_symbol_utils.$toStyle]() { + const style = (0, _html_utils.toStyle)(this, "hAlign"); + if (this.marginLeft !== "") { + style.paddingLeft = (0, _html_utils.measureToString)(this.marginLeft); + } + if (this.marginRight !== "") { + style.paddingight = (0, _html_utils.measureToString)(this.marginRight); + } + if (this.spaceAbove !== "") { + style.paddingTop = (0, _html_utils.measureToString)(this.spaceAbove); + } + if (this.spaceBelow !== "") { + style.paddingBottom = (0, _html_utils.measureToString)(this.spaceBelow); + } + if (this.textIndent !== "") { + style.textIndent = (0, _html_utils.measureToString)(this.textIndent); + (0, _html_utils.fixTextIndent)(style); + } + if (this.lineHeight > 0) { + style.lineHeight = (0, _html_utils.measureToString)(this.lineHeight); + } + if (this.tabDefault !== "") { + style.tabSize = (0, _html_utils.measureToString)(this.tabDefault); + } + if (this.tabStops.length > 0) {} + if (this.hyphenatation) { + Object.assign(style, this.hyphenatation[_symbol_utils.$toStyle]()); + } + return style; + } +} +class PasswordEdit extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "passwordEdit", true); + this.hScrollPolicy = (0, _utils.getStringOption)(attributes.hScrollPolicy, ["auto", "off", "on"]); + this.id = attributes.id || ""; + this.passwordChar = attributes.passwordChar || "*"; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.border = null; + this.extras = null; + this.margin = null; + } +} +class Pattern extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "pattern", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["crossHatch", "crossDiagonal", "diagonalLeft", "diagonalRight", "horizontal", "vertical"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.color = null; + this.extras = null; + } + [_symbol_utils.$toStyle](startColor) { + startColor = startColor ? startColor[_symbol_utils.$toStyle]() : "#FFFFFF"; + const endColor = this.color ? this.color[_symbol_utils.$toStyle]() : "#000000"; + const width = 5; + const cmd = "repeating-linear-gradient"; + const colors = `${startColor},${startColor} ${width}px,${endColor} ${width}px,${endColor} ${2 * width}px`; + switch (this.type) { + case "crossHatch": + return `${cmd}(to top,${colors}) ${cmd}(to right,${colors})`; + case "crossDiagonal": + return `${cmd}(45deg,${colors}) ${cmd}(-45deg,${colors})`; + case "diagonalLeft": + return `${cmd}(45deg,${colors})`; + case "diagonalRight": + return `${cmd}(-45deg,${colors})`; + case "horizontal": + return `${cmd}(to top,${colors})`; + case "vertical": + return `${cmd}(to right,${colors})`; + } + return ""; + } +} +class Picture extends _xfa_object.StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "picture"); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Proto extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "proto", true); + this.appearanceFilter = new _xfa_object.XFAObjectArray(); + this.arc = new _xfa_object.XFAObjectArray(); + this.area = new _xfa_object.XFAObjectArray(); + this.assist = new _xfa_object.XFAObjectArray(); + this.barcode = new _xfa_object.XFAObjectArray(); + this.bindItems = new _xfa_object.XFAObjectArray(); + this.bookend = new _xfa_object.XFAObjectArray(); + this.boolean = new _xfa_object.XFAObjectArray(); + this.border = new _xfa_object.XFAObjectArray(); + this.break = new _xfa_object.XFAObjectArray(); + this.breakAfter = new _xfa_object.XFAObjectArray(); + this.breakBefore = new _xfa_object.XFAObjectArray(); + this.button = new _xfa_object.XFAObjectArray(); + this.calculate = new _xfa_object.XFAObjectArray(); + this.caption = new _xfa_object.XFAObjectArray(); + this.certificate = new _xfa_object.XFAObjectArray(); + this.certificates = new _xfa_object.XFAObjectArray(); + this.checkButton = new _xfa_object.XFAObjectArray(); + this.choiceList = new _xfa_object.XFAObjectArray(); + this.color = new _xfa_object.XFAObjectArray(); + this.comb = new _xfa_object.XFAObjectArray(); + this.connect = new _xfa_object.XFAObjectArray(); + this.contentArea = new _xfa_object.XFAObjectArray(); + this.corner = new _xfa_object.XFAObjectArray(); + this.date = new _xfa_object.XFAObjectArray(); + this.dateTime = new _xfa_object.XFAObjectArray(); + this.dateTimeEdit = new _xfa_object.XFAObjectArray(); + this.decimal = new _xfa_object.XFAObjectArray(); + this.defaultUi = new _xfa_object.XFAObjectArray(); + this.desc = new _xfa_object.XFAObjectArray(); + this.digestMethod = new _xfa_object.XFAObjectArray(); + this.digestMethods = new _xfa_object.XFAObjectArray(); + this.draw = new _xfa_object.XFAObjectArray(); + this.edge = new _xfa_object.XFAObjectArray(); + this.encoding = new _xfa_object.XFAObjectArray(); + this.encodings = new _xfa_object.XFAObjectArray(); + this.encrypt = new _xfa_object.XFAObjectArray(); + this.encryptData = new _xfa_object.XFAObjectArray(); + this.encryption = new _xfa_object.XFAObjectArray(); + this.encryptionMethod = new _xfa_object.XFAObjectArray(); + this.encryptionMethods = new _xfa_object.XFAObjectArray(); + this.event = new _xfa_object.XFAObjectArray(); + this.exData = new _xfa_object.XFAObjectArray(); + this.exObject = new _xfa_object.XFAObjectArray(); + this.exclGroup = new _xfa_object.XFAObjectArray(); + this.execute = new _xfa_object.XFAObjectArray(); + this.extras = new _xfa_object.XFAObjectArray(); + this.field = new _xfa_object.XFAObjectArray(); + this.fill = new _xfa_object.XFAObjectArray(); + this.filter = new _xfa_object.XFAObjectArray(); + this.float = new _xfa_object.XFAObjectArray(); + this.font = new _xfa_object.XFAObjectArray(); + this.format = new _xfa_object.XFAObjectArray(); + this.handler = new _xfa_object.XFAObjectArray(); + this.hyphenation = new _xfa_object.XFAObjectArray(); + this.image = new _xfa_object.XFAObjectArray(); + this.imageEdit = new _xfa_object.XFAObjectArray(); + this.integer = new _xfa_object.XFAObjectArray(); + this.issuers = new _xfa_object.XFAObjectArray(); + this.items = new _xfa_object.XFAObjectArray(); + this.keep = new _xfa_object.XFAObjectArray(); + this.keyUsage = new _xfa_object.XFAObjectArray(); + this.line = new _xfa_object.XFAObjectArray(); + this.linear = new _xfa_object.XFAObjectArray(); + this.lockDocument = new _xfa_object.XFAObjectArray(); + this.manifest = new _xfa_object.XFAObjectArray(); + this.margin = new _xfa_object.XFAObjectArray(); + this.mdp = new _xfa_object.XFAObjectArray(); + this.medium = new _xfa_object.XFAObjectArray(); + this.message = new _xfa_object.XFAObjectArray(); + this.numericEdit = new _xfa_object.XFAObjectArray(); + this.occur = new _xfa_object.XFAObjectArray(); + this.oid = new _xfa_object.XFAObjectArray(); + this.oids = new _xfa_object.XFAObjectArray(); + this.overflow = new _xfa_object.XFAObjectArray(); + this.pageArea = new _xfa_object.XFAObjectArray(); + this.pageSet = new _xfa_object.XFAObjectArray(); + this.para = new _xfa_object.XFAObjectArray(); + this.passwordEdit = new _xfa_object.XFAObjectArray(); + this.pattern = new _xfa_object.XFAObjectArray(); + this.picture = new _xfa_object.XFAObjectArray(); + this.radial = new _xfa_object.XFAObjectArray(); + this.reason = new _xfa_object.XFAObjectArray(); + this.reasons = new _xfa_object.XFAObjectArray(); + this.rectangle = new _xfa_object.XFAObjectArray(); + this.ref = new _xfa_object.XFAObjectArray(); + this.script = new _xfa_object.XFAObjectArray(); + this.setProperty = new _xfa_object.XFAObjectArray(); + this.signData = new _xfa_object.XFAObjectArray(); + this.signature = new _xfa_object.XFAObjectArray(); + this.signing = new _xfa_object.XFAObjectArray(); + this.solid = new _xfa_object.XFAObjectArray(); + this.speak = new _xfa_object.XFAObjectArray(); + this.stipple = new _xfa_object.XFAObjectArray(); + this.subform = new _xfa_object.XFAObjectArray(); + this.subformSet = new _xfa_object.XFAObjectArray(); + this.subjectDN = new _xfa_object.XFAObjectArray(); + this.subjectDNs = new _xfa_object.XFAObjectArray(); + this.submit = new _xfa_object.XFAObjectArray(); + this.text = new _xfa_object.XFAObjectArray(); + this.textEdit = new _xfa_object.XFAObjectArray(); + this.time = new _xfa_object.XFAObjectArray(); + this.timeStamp = new _xfa_object.XFAObjectArray(); + this.toolTip = new _xfa_object.XFAObjectArray(); + this.traversal = new _xfa_object.XFAObjectArray(); + this.traverse = new _xfa_object.XFAObjectArray(); + this.ui = new _xfa_object.XFAObjectArray(); + this.validate = new _xfa_object.XFAObjectArray(); + this.value = new _xfa_object.XFAObjectArray(); + this.variables = new _xfa_object.XFAObjectArray(); + } +} +class Radial extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "radial", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["toEdge", "toCenter"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.color = null; + this.extras = null; + } + [_symbol_utils.$toStyle](startColor) { + startColor = startColor ? startColor[_symbol_utils.$toStyle]() : "#FFFFFF"; + const endColor = this.color ? this.color[_symbol_utils.$toStyle]() : "#000000"; + const colors = this.type === "toEdge" ? `${startColor},${endColor}` : `${endColor},${startColor}`; + return `radial-gradient(circle at center, ${colors})`; + } +} +class Reason extends _xfa_object.StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "reason"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Reasons extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "reasons", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.reason = new _xfa_object.XFAObjectArray(); + } +} +class Rectangle extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "rectangle", true); + this.hand = (0, _utils.getStringOption)(attributes.hand, ["even", "left", "right"]); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.corner = new _xfa_object.XFAObjectArray(4); + this.edge = new _xfa_object.XFAObjectArray(4); + this.fill = null; + } + [_symbol_utils.$toHTML]() { + const edge = this.edge.children.length ? this.edge.children[0] : new Edge({}); + const edgeStyle = edge[_symbol_utils.$toStyle](); + const style = Object.create(null); + if (this.fill?.presence === "visible") { + Object.assign(style, this.fill[_symbol_utils.$toStyle]()); + } else { + style.fill = "transparent"; + } + style.strokeWidth = (0, _html_utils.measureToString)(edge.presence === "visible" ? edge.thickness : 0); + style.stroke = edgeStyle.color; + const corner = this.corner.children.length ? this.corner.children[0] : new Corner({}); + const cornerStyle = corner[_symbol_utils.$toStyle](); + const rect = { + name: "rect", + attributes: { + xmlns: SVG_NS, + width: "100%", + height: "100%", + x: 0, + y: 0, + rx: cornerStyle.radius, + ry: cornerStyle.radius, + style + } + }; + const svg = { + name: "svg", + children: [rect], + attributes: { + xmlns: SVG_NS, + style: { + overflow: "visible" + }, + width: "100%", + height: "100%" + } + }; + const parent = this[_symbol_utils.$getParent]()[_symbol_utils.$getParent](); + if (hasMargin(parent)) { + return _utils.HTMLResult.success({ + name: "div", + attributes: { + style: { + display: "inline", + width: "100%", + height: "100%" + } + }, + children: [svg] + }); + } + svg.attributes.style.position = "absolute"; + return _utils.HTMLResult.success(svg); + } +} +class RefElement extends _xfa_object.StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "ref"); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Script extends _xfa_object.StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "script"); + this.binding = attributes.binding || ""; + this.contentType = attributes.contentType || ""; + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.runAt = (0, _utils.getStringOption)(attributes.runAt, ["client", "both", "server"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class SetProperty extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "setProperty"); + this.connection = attributes.connection || ""; + this.ref = attributes.ref || ""; + this.target = attributes.target || ""; + } +} +exports.SetProperty = SetProperty; +class SignData extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "signData", true); + this.id = attributes.id || ""; + this.operation = (0, _utils.getStringOption)(attributes.operation, ["sign", "clear", "verify"]); + this.ref = attributes.ref || ""; + this.target = attributes.target || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.filter = null; + this.manifest = null; + } +} +class Signature extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "signature", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["PDF1.3", "PDF1.6"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.border = null; + this.extras = null; + this.filter = null; + this.manifest = null; + this.margin = null; + } +} +class Signing extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "signing", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.certificate = new _xfa_object.XFAObjectArray(); + } +} +class Solid extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "solid", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + } + [_symbol_utils.$toStyle](startColor) { + return startColor ? startColor[_symbol_utils.$toStyle]() : "#FFFFFF"; + } +} +class Speak extends _xfa_object.StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "speak"); + this.disable = (0, _utils.getInteger)({ + data: attributes.disable, + defaultValue: 0, + validate: x => x === 1 + }); + this.id = attributes.id || ""; + this.priority = (0, _utils.getStringOption)(attributes.priority, ["custom", "caption", "name", "toolTip"]); + this.rid = attributes.rid || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Stipple extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "stipple", true); + this.id = attributes.id || ""; + this.rate = (0, _utils.getInteger)({ + data: attributes.rate, + defaultValue: 50, + validate: x => x >= 0 && x <= 100 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.color = null; + this.extras = null; + } + [_symbol_utils.$toStyle](bgColor) { + const alpha = this.rate / 100; + return _util.Util.makeHexColor(Math.round(bgColor.value.r * (1 - alpha) + this.value.r * alpha), Math.round(bgColor.value.g * (1 - alpha) + this.value.g * alpha), Math.round(bgColor.value.b * (1 - alpha) + this.value.b * alpha)); + } +} +class Subform extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "subform", true); + this.access = (0, _utils.getStringOption)(attributes.access, ["open", "nonInteractive", "protected", "readOnly"]); + this.allowMacro = (0, _utils.getInteger)({ + data: attributes.allowMacro, + defaultValue: 0, + validate: x => x === 1 + }); + this.anchorType = (0, _utils.getStringOption)(attributes.anchorType, ["topLeft", "bottomCenter", "bottomLeft", "bottomRight", "middleCenter", "middleLeft", "middleRight", "topCenter", "topRight"]); + this.colSpan = (0, _utils.getInteger)({ + data: attributes.colSpan, + defaultValue: 1, + validate: n => n >= 1 || n === -1 + }); + this.columnWidths = (attributes.columnWidths || "").trim().split(/\s+/).map(x => x === "-1" ? -1 : (0, _utils.getMeasurement)(x)); + this.h = attributes.h ? (0, _utils.getMeasurement)(attributes.h) : ""; + this.hAlign = (0, _utils.getStringOption)(attributes.hAlign, ["left", "center", "justify", "justifyAll", "radix", "right"]); + this.id = attributes.id || ""; + this.layout = (0, _utils.getStringOption)(attributes.layout, ["position", "lr-tb", "rl-row", "rl-tb", "row", "table", "tb"]); + this.locale = attributes.locale || ""; + this.maxH = (0, _utils.getMeasurement)(attributes.maxH, "0pt"); + this.maxW = (0, _utils.getMeasurement)(attributes.maxW, "0pt"); + this.mergeMode = (0, _utils.getStringOption)(attributes.mergeMode, ["consumeData", "matchTemplate"]); + this.minH = (0, _utils.getMeasurement)(attributes.minH, "0pt"); + this.minW = (0, _utils.getMeasurement)(attributes.minW, "0pt"); + this.name = attributes.name || ""; + this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", "invisible"]); + this.relevant = (0, _utils.getRelevant)(attributes.relevant); + this.restoreState = (0, _utils.getStringOption)(attributes.restoreState, ["manual", "auto"]); + this.scope = (0, _utils.getStringOption)(attributes.scope, ["name", "none"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.w = attributes.w ? (0, _utils.getMeasurement)(attributes.w) : ""; + this.x = (0, _utils.getMeasurement)(attributes.x, "0pt"); + this.y = (0, _utils.getMeasurement)(attributes.y, "0pt"); + this.assist = null; + this.bind = null; + this.bookend = null; + this.border = null; + this.break = null; + this.calculate = null; + this.desc = null; + this.extras = null; + this.keep = null; + this.margin = null; + this.occur = null; + this.overflow = null; + this.pageSet = null; + this.para = null; + this.traversal = null; + this.validate = null; + this.variables = null; + this.area = new _xfa_object.XFAObjectArray(); + this.breakAfter = new _xfa_object.XFAObjectArray(); + this.breakBefore = new _xfa_object.XFAObjectArray(); + this.connect = new _xfa_object.XFAObjectArray(); + this.draw = new _xfa_object.XFAObjectArray(); + this.event = new _xfa_object.XFAObjectArray(); + this.exObject = new _xfa_object.XFAObjectArray(); + this.exclGroup = new _xfa_object.XFAObjectArray(); + this.field = new _xfa_object.XFAObjectArray(); + this.proto = new _xfa_object.XFAObjectArray(); + this.setProperty = new _xfa_object.XFAObjectArray(); + this.subform = new _xfa_object.XFAObjectArray(); + this.subformSet = new _xfa_object.XFAObjectArray(); + } + [_symbol_utils.$getSubformParent]() { + const parent = this[_symbol_utils.$getParent](); + if (parent instanceof SubformSet) { + return parent[_symbol_utils.$getSubformParent](); + } + return parent; + } + [_symbol_utils.$isBindable]() { + return true; + } + [_symbol_utils.$isThereMoreWidth]() { + return this.layout.endsWith("-tb") && this[_symbol_utils.$extra].attempt === 0 && this[_symbol_utils.$extra].numberInLine > 0 || this[_symbol_utils.$getParent]()[_symbol_utils.$isThereMoreWidth](); + } + *[_symbol_utils.$getContainedChildren]() { + yield* getContainedChildren(this); + } + [_symbol_utils.$flushHTML]() { + return (0, _layout.flushHTML)(this); + } + [_symbol_utils.$addHTML](html, bbox) { + (0, _layout.addHTML)(this, html, bbox); + } + [_symbol_utils.$getAvailableSpace]() { + return (0, _layout.getAvailableSpace)(this); + } + [_symbol_utils.$isSplittable]() { + const parent = this[_symbol_utils.$getSubformParent](); + if (!parent[_symbol_utils.$isSplittable]()) { + return false; + } + if (this[_symbol_utils.$extra]._isSplittable !== undefined) { + return this[_symbol_utils.$extra]._isSplittable; + } + if (this.layout === "position" || this.layout.includes("row")) { + this[_symbol_utils.$extra]._isSplittable = false; + return false; + } + if (this.keep && this.keep.intact !== "none") { + this[_symbol_utils.$extra]._isSplittable = false; + return false; + } + if (parent.layout?.endsWith("-tb") && parent[_symbol_utils.$extra].numberInLine !== 0) { + return false; + } + this[_symbol_utils.$extra]._isSplittable = true; + return true; + } + [_symbol_utils.$toHTML](availableSpace) { + setTabIndex(this); + if (this.break) { + if (this.break.after !== "auto" || this.break.afterTarget !== "") { + const node = new BreakAfter({ + targetType: this.break.after, + target: this.break.afterTarget, + startNew: this.break.startNew.toString() + }); + node[_symbol_utils.$globalData] = this[_symbol_utils.$globalData]; + this[_symbol_utils.$appendChild](node); + this.breakAfter.push(node); + } + if (this.break.before !== "auto" || this.break.beforeTarget !== "") { + const node = new BreakBefore({ + targetType: this.break.before, + target: this.break.beforeTarget, + startNew: this.break.startNew.toString() + }); + node[_symbol_utils.$globalData] = this[_symbol_utils.$globalData]; + this[_symbol_utils.$appendChild](node); + this.breakBefore.push(node); + } + if (this.break.overflowTarget !== "") { + const node = new Overflow({ + target: this.break.overflowTarget, + leader: this.break.overflowLeader, + trailer: this.break.overflowTrailer + }); + node[_symbol_utils.$globalData] = this[_symbol_utils.$globalData]; + this[_symbol_utils.$appendChild](node); + this.overflow.push(node); + } + this[_symbol_utils.$removeChild](this.break); + this.break = null; + } + if (this.presence === "hidden" || this.presence === "inactive") { + return _utils.HTMLResult.EMPTY; + } + if (this.breakBefore.children.length > 1 || this.breakAfter.children.length > 1) { + (0, _util.warn)("XFA - Several breakBefore or breakAfter in subforms: please file a bug."); + } + if (this.breakBefore.children.length >= 1) { + const breakBefore = this.breakBefore.children[0]; + if (handleBreak(breakBefore)) { + return _utils.HTMLResult.breakNode(breakBefore); + } + } + if (this[_symbol_utils.$extra]?.afterBreakAfter) { + return _utils.HTMLResult.EMPTY; + } + (0, _html_utils.fixDimensions)(this); + const children = []; + const attributes = { + id: this[_symbol_utils.$uid], + class: [] + }; + (0, _html_utils.setAccess)(this, attributes.class); + if (!this[_symbol_utils.$extra]) { + this[_symbol_utils.$extra] = Object.create(null); + } + Object.assign(this[_symbol_utils.$extra], { + children, + line: null, + attributes, + attempt: 0, + numberInLine: 0, + availableSpace: { + width: Math.min(this.w || Infinity, availableSpace.width), + height: Math.min(this.h || Infinity, availableSpace.height) + }, + width: 0, + height: 0, + prevHeight: 0, + currentWidth: 0 + }); + const root = this[_symbol_utils.$getTemplateRoot](); + const savedNoLayoutFailure = root[_symbol_utils.$extra].noLayoutFailure; + const isSplittable = this[_symbol_utils.$isSplittable](); + if (!isSplittable) { + setFirstUnsplittable(this); + } + if (!(0, _layout.checkDimensions)(this, availableSpace)) { + return _utils.HTMLResult.FAILURE; + } + const filter = new Set(["area", "draw", "exclGroup", "field", "subform", "subformSet"]); + if (this.layout.includes("row")) { + const columnWidths = this[_symbol_utils.$getSubformParent]().columnWidths; + if (Array.isArray(columnWidths) && columnWidths.length > 0) { + this[_symbol_utils.$extra].columnWidths = columnWidths; + this[_symbol_utils.$extra].currentColumn = 0; + } + } + const style = (0, _html_utils.toStyle)(this, "anchorType", "dimensions", "position", "presence", "border", "margin", "hAlign"); + const classNames = ["xfaSubform"]; + const cl = (0, _html_utils.layoutClass)(this); + if (cl) { + classNames.push(cl); + } + attributes.style = style; + attributes.class = classNames; + if (this.name) { + attributes.xfaName = this.name; + } + if (this.overflow) { + const overflowExtra = this.overflow[_symbol_utils.$getExtra](); + if (overflowExtra.addLeader) { + overflowExtra.addLeader = false; + handleOverflow(this, overflowExtra.leader, availableSpace); + } + } + this[_symbol_utils.$pushPara](); + const isLrTb = this.layout === "lr-tb" || this.layout === "rl-tb"; + const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1; + for (; this[_symbol_utils.$extra].attempt < maxRun; this[_symbol_utils.$extra].attempt++) { + if (isLrTb && this[_symbol_utils.$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) { + this[_symbol_utils.$extra].numberInLine = 0; + } + const result = this[_symbol_utils.$childrenToHTML]({ + filter, + include: true + }); + if (result.success) { + break; + } + if (result.isBreak()) { + this[_symbol_utils.$popPara](); + return result; + } + if (isLrTb && this[_symbol_utils.$extra].attempt === 0 && this[_symbol_utils.$extra].numberInLine === 0 && !root[_symbol_utils.$extra].noLayoutFailure) { + this[_symbol_utils.$extra].attempt = maxRun; + break; + } + } + this[_symbol_utils.$popPara](); + if (!isSplittable) { + unsetFirstUnsplittable(this); + } + root[_symbol_utils.$extra].noLayoutFailure = savedNoLayoutFailure; + if (this[_symbol_utils.$extra].attempt === maxRun) { + if (this.overflow) { + this[_symbol_utils.$getTemplateRoot]()[_symbol_utils.$extra].overflowNode = this.overflow; + } + if (!isSplittable) { + delete this[_symbol_utils.$extra]; + } + return _utils.HTMLResult.FAILURE; + } + if (this.overflow) { + const overflowExtra = this.overflow[_symbol_utils.$getExtra](); + if (overflowExtra.addTrailer) { + overflowExtra.addTrailer = false; + handleOverflow(this, overflowExtra.trailer, availableSpace); + } + } + let marginH = 0; + let marginV = 0; + if (this.margin) { + marginH = this.margin.leftInset + this.margin.rightInset; + marginV = this.margin.topInset + this.margin.bottomInset; + } + const width = Math.max(this[_symbol_utils.$extra].width + marginH, this.w || 0); + const height = Math.max(this[_symbol_utils.$extra].height + marginV, this.h || 0); + const bbox = [this.x, this.y, width, height]; + if (this.w === "") { + style.width = (0, _html_utils.measureToString)(width); + } + if (this.h === "") { + style.height = (0, _html_utils.measureToString)(height); + } + if ((style.width === "0px" || style.height === "0px") && children.length === 0) { + return _utils.HTMLResult.EMPTY; + } + const html = { + name: "div", + attributes, + children + }; + applyAssist(this, attributes); + const result = _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox); + if (this.breakAfter.children.length >= 1) { + const breakAfter = this.breakAfter.children[0]; + if (handleBreak(breakAfter)) { + this[_symbol_utils.$extra].afterBreakAfter = result; + return _utils.HTMLResult.breakNode(breakAfter); + } + } + delete this[_symbol_utils.$extra]; + return result; + } +} +class SubformSet extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "subformSet", true); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.relation = (0, _utils.getStringOption)(attributes.relation, ["ordered", "choice", "unordered"]); + this.relevant = (0, _utils.getRelevant)(attributes.relevant); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.bookend = null; + this.break = null; + this.desc = null; + this.extras = null; + this.occur = null; + this.overflow = null; + this.breakAfter = new _xfa_object.XFAObjectArray(); + this.breakBefore = new _xfa_object.XFAObjectArray(); + this.subform = new _xfa_object.XFAObjectArray(); + this.subformSet = new _xfa_object.XFAObjectArray(); + } + *[_symbol_utils.$getContainedChildren]() { + yield* getContainedChildren(this); + } + [_symbol_utils.$getSubformParent]() { + let parent = this[_symbol_utils.$getParent](); + while (!(parent instanceof Subform)) { + parent = parent[_symbol_utils.$getParent](); + } + return parent; + } + [_symbol_utils.$isBindable]() { + return true; + } +} +class SubjectDN extends _xfa_object.ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "subjectDN"); + this.delimiter = attributes.delimiter || ","; + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [_symbol_utils.$finalize]() { + this[_symbol_utils.$content] = new Map(this[_symbol_utils.$content].split(this.delimiter).map(kv => { + kv = kv.split("=", 2); + kv[0] = kv[0].trim(); + return kv; + })); + } +} +class SubjectDNs extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "subjectDNs", true); + this.id = attributes.id || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.subjectDN = new _xfa_object.XFAObjectArray(); + } +} +class Submit extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "submit", true); + this.embedPDF = (0, _utils.getInteger)({ + data: attributes.embedPDF, + defaultValue: 0, + validate: x => x === 1 + }); + this.format = (0, _utils.getStringOption)(attributes.format, ["xdp", "formdata", "pdf", "urlencoded", "xfd", "xml"]); + this.id = attributes.id || ""; + this.target = attributes.target || ""; + this.textEncoding = (0, _utils.getKeyword)({ + data: attributes.textEncoding ? attributes.textEncoding.toLowerCase() : "", + defaultValue: "", + validate: k => ["utf-8", "big-five", "fontspecific", "gbk", "gb-18030", "gb-2312", "ksc-5601", "none", "shift-jis", "ucs-2", "utf-16"].includes(k) || k.match(/iso-8859-\d{2}/) + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.xdpContent = attributes.xdpContent || ""; + this.encrypt = null; + this.encryptData = new _xfa_object.XFAObjectArray(); + this.signData = new _xfa_object.XFAObjectArray(); + } +} +class Template extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "template", true); + this.baseProfile = (0, _utils.getStringOption)(attributes.baseProfile, ["full", "interactiveForms"]); + this.extras = null; + this.subform = new _xfa_object.XFAObjectArray(); + } + [_symbol_utils.$finalize]() { + if (this.subform.children.length === 0) { + (0, _util.warn)("XFA - No subforms in template node."); + } + if (this.subform.children.length >= 2) { + (0, _util.warn)("XFA - Several subforms in template node: please file a bug."); + } + this[_symbol_utils.$tabIndex] = DEFAULT_TAB_INDEX; + } + [_symbol_utils.$isSplittable]() { + return true; + } + [_symbol_utils.$searchNode](expr, container) { + if (expr.startsWith("#")) { + return [this[_symbol_utils.$ids].get(expr.slice(1))]; + } + return (0, _som.searchNode)(this, container, expr, true, true); + } + *[_symbol_utils.$toPages]() { + if (!this.subform.children.length) { + return _utils.HTMLResult.success({ + name: "div", + children: [] + }); + } + this[_symbol_utils.$extra] = { + overflowNode: null, + firstUnsplittable: null, + currentContentArea: null, + currentPageArea: null, + noLayoutFailure: false, + pageNumber: 1, + pagePosition: "first", + oddOrEven: "odd", + blankOrNotBlank: "nonBlank", + paraStack: [] + }; + const root = this.subform.children[0]; + root.pageSet[_symbol_utils.$cleanPage](); + const pageAreas = root.pageSet.pageArea.children; + const mainHtml = { + name: "div", + children: [] + }; + let pageArea = null; + let breakBefore = null; + let breakBeforeTarget = null; + if (root.breakBefore.children.length >= 1) { + breakBefore = root.breakBefore.children[0]; + breakBeforeTarget = breakBefore.target; + } else if (root.subform.children.length >= 1 && root.subform.children[0].breakBefore.children.length >= 1) { + breakBefore = root.subform.children[0].breakBefore.children[0]; + breakBeforeTarget = breakBefore.target; + } else if (root.break?.beforeTarget) { + breakBefore = root.break; + breakBeforeTarget = breakBefore.beforeTarget; + } else if (root.subform.children.length >= 1 && root.subform.children[0].break?.beforeTarget) { + breakBefore = root.subform.children[0].break; + breakBeforeTarget = breakBefore.beforeTarget; + } + if (breakBefore) { + const target = this[_symbol_utils.$searchNode](breakBeforeTarget, breakBefore[_symbol_utils.$getParent]()); + if (target instanceof PageArea) { + pageArea = target; + breakBefore[_symbol_utils.$extra] = {}; + } + } + if (!pageArea) { + pageArea = pageAreas[0]; + } + pageArea[_symbol_utils.$extra] = { + numberOfUse: 1 + }; + const pageAreaParent = pageArea[_symbol_utils.$getParent](); + pageAreaParent[_symbol_utils.$extra] = { + numberOfUse: 1, + pageIndex: pageAreaParent.pageArea.children.indexOf(pageArea), + pageSetIndex: 0 + }; + let targetPageArea; + let leader = null; + let trailer = null; + let hasSomething = true; + let hasSomethingCounter = 0; + let startIndex = 0; + while (true) { + if (!hasSomething) { + mainHtml.children.pop(); + if (++hasSomethingCounter === MAX_EMPTY_PAGES) { + (0, _util.warn)("XFA - Something goes wrong: please file a bug."); + return mainHtml; + } + } else { + hasSomethingCounter = 0; + } + targetPageArea = null; + this[_symbol_utils.$extra].currentPageArea = pageArea; + const page = pageArea[_symbol_utils.$toHTML]().html; + mainHtml.children.push(page); + if (leader) { + this[_symbol_utils.$extra].noLayoutFailure = true; + page.children.push(leader[_symbol_utils.$toHTML](pageArea[_symbol_utils.$extra].space).html); + leader = null; + } + if (trailer) { + this[_symbol_utils.$extra].noLayoutFailure = true; + page.children.push(trailer[_symbol_utils.$toHTML](pageArea[_symbol_utils.$extra].space).html); + trailer = null; + } + const contentAreas = pageArea.contentArea.children; + const htmlContentAreas = page.children.filter(node => node.attributes.class.includes("xfaContentarea")); + hasSomething = false; + this[_symbol_utils.$extra].firstUnsplittable = null; + this[_symbol_utils.$extra].noLayoutFailure = false; + const flush = index => { + const html = root[_symbol_utils.$flushHTML](); + if (html) { + hasSomething ||= html.children?.length > 0; + htmlContentAreas[index].children.push(html); + } + }; + for (let i = startIndex, ii = contentAreas.length; i < ii; i++) { + const contentArea = this[_symbol_utils.$extra].currentContentArea = contentAreas[i]; + const space = { + width: contentArea.w, + height: contentArea.h + }; + startIndex = 0; + if (leader) { + htmlContentAreas[i].children.push(leader[_symbol_utils.$toHTML](space).html); + leader = null; + } + if (trailer) { + htmlContentAreas[i].children.push(trailer[_symbol_utils.$toHTML](space).html); + trailer = null; + } + const html = root[_symbol_utils.$toHTML](space); + if (html.success) { + if (html.html) { + hasSomething ||= html.html.children?.length > 0; + htmlContentAreas[i].children.push(html.html); + } else if (!hasSomething && mainHtml.children.length > 1) { + mainHtml.children.pop(); + } + return mainHtml; + } + if (html.isBreak()) { + const node = html.breakNode; + flush(i); + if (node.targetType === "auto") { + continue; + } + if (node.leader) { + leader = this[_symbol_utils.$searchNode](node.leader, node[_symbol_utils.$getParent]()); + leader = leader ? leader[0] : null; + } + if (node.trailer) { + trailer = this[_symbol_utils.$searchNode](node.trailer, node[_symbol_utils.$getParent]()); + trailer = trailer ? trailer[0] : null; + } + if (node.targetType === "pageArea") { + targetPageArea = node[_symbol_utils.$extra].target; + i = Infinity; + } else if (!node[_symbol_utils.$extra].target) { + i = node[_symbol_utils.$extra].index; + } else { + targetPageArea = node[_symbol_utils.$extra].target; + startIndex = node[_symbol_utils.$extra].index + 1; + i = Infinity; + } + continue; + } + if (this[_symbol_utils.$extra].overflowNode) { + const node = this[_symbol_utils.$extra].overflowNode; + this[_symbol_utils.$extra].overflowNode = null; + const overflowExtra = node[_symbol_utils.$getExtra](); + const target = overflowExtra.target; + overflowExtra.addLeader = overflowExtra.leader !== null; + overflowExtra.addTrailer = overflowExtra.trailer !== null; + flush(i); + const currentIndex = i; + i = Infinity; + if (target instanceof PageArea) { + targetPageArea = target; + } else if (target instanceof ContentArea) { + const index = contentAreas.indexOf(target); + if (index !== -1) { + if (index > currentIndex) { + i = index - 1; + } else { + startIndex = index; + } + } else { + targetPageArea = target[_symbol_utils.$getParent](); + startIndex = targetPageArea.contentArea.children.indexOf(target); + } + } + continue; + } + flush(i); + } + this[_symbol_utils.$extra].pageNumber += 1; + if (targetPageArea) { + if (targetPageArea[_symbol_utils.$isUsable]()) { + targetPageArea[_symbol_utils.$extra].numberOfUse += 1; + } else { + targetPageArea = null; + } + } + pageArea = targetPageArea || pageArea[_symbol_utils.$getNextPage](); + yield null; + } + } +} +exports.Template = Template; +class Text extends _xfa_object.ContentObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "text"); + this.id = attributes.id || ""; + this.maxChars = (0, _utils.getInteger)({ + data: attributes.maxChars, + defaultValue: 0, + validate: x => x >= 0 + }); + this.name = attributes.name || ""; + this.rid = attributes.rid || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [_symbol_utils.$acceptWhitespace]() { + return true; + } + [_symbol_utils.$onChild](child) { + if (child[_symbol_utils.$namespaceId] === _namespaces.NamespaceIds.xhtml.id) { + this[_symbol_utils.$content] = child; + return true; + } + (0, _util.warn)(`XFA - Invalid content in Text: ${child[_symbol_utils.$nodeName]}.`); + return false; + } + [_symbol_utils.$onText](str) { + if (this[_symbol_utils.$content] instanceof _xfa_object.XFAObject) { + return; + } + super[_symbol_utils.$onText](str); + } + [_symbol_utils.$finalize]() { + if (typeof this[_symbol_utils.$content] === "string") { + this[_symbol_utils.$content] = this[_symbol_utils.$content].replaceAll("\r\n", "\n"); + } + } + [_symbol_utils.$getExtra]() { + if (typeof this[_symbol_utils.$content] === "string") { + return this[_symbol_utils.$content].split(/[\u2029\u2028\n]/).reduce((acc, line) => { + if (line) { + acc.push(line); + } + return acc; + }, []).join("\n"); + } + return this[_symbol_utils.$content][_symbol_utils.$text](); + } + [_symbol_utils.$toHTML](availableSpace) { + if (typeof this[_symbol_utils.$content] === "string") { + const html = valueToHtml(this[_symbol_utils.$content]).html; + if (this[_symbol_utils.$content].includes("\u2029")) { + html.name = "div"; + html.children = []; + this[_symbol_utils.$content].split("\u2029").map(para => para.split(/[\u2028\n]/).reduce((acc, line) => { + acc.push({ + name: "span", + value: line + }, { + name: "br" + }); + return acc; + }, [])).forEach(lines => { + html.children.push({ + name: "p", + children: lines + }); + }); + } else if (/[\u2028\n]/.test(this[_symbol_utils.$content])) { + html.name = "div"; + html.children = []; + this[_symbol_utils.$content].split(/[\u2028\n]/).forEach(line => { + html.children.push({ + name: "span", + value: line + }, { + name: "br" + }); + }); + } + return _utils.HTMLResult.success(html); + } + return this[_symbol_utils.$content][_symbol_utils.$toHTML](availableSpace); + } +} +exports.Text = Text; +class TextEdit extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "textEdit", true); + this.allowRichText = (0, _utils.getInteger)({ + data: attributes.allowRichText, + defaultValue: 0, + validate: x => x === 1 + }); + this.hScrollPolicy = (0, _utils.getStringOption)(attributes.hScrollPolicy, ["auto", "off", "on"]); + this.id = attributes.id || ""; + this.multiLine = (0, _utils.getInteger)({ + data: attributes.multiLine, + defaultValue: "", + validate: x => x === 0 || x === 1 + }); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.vScrollPolicy = (0, _utils.getStringOption)(attributes.vScrollPolicy, ["auto", "off", "on"]); + this.border = null; + this.comb = null; + this.extras = null; + this.margin = null; + } + [_symbol_utils.$toHTML](availableSpace) { + const style = (0, _html_utils.toStyle)(this, "border", "font", "margin"); + let html; + const field = this[_symbol_utils.$getParent]()[_symbol_utils.$getParent](); + if (this.multiLine === "") { + this.multiLine = field instanceof Draw ? 1 : 0; + } + if (this.multiLine === 1) { + html = { + name: "textarea", + attributes: { + dataId: field[_symbol_utils.$data]?.[_symbol_utils.$uid] || field[_symbol_utils.$uid], + fieldId: field[_symbol_utils.$uid], + class: ["xfaTextfield"], + style, + "aria-label": ariaLabel(field), + "aria-required": false + } + }; + } else { + html = { + name: "input", + attributes: { + type: "text", + dataId: field[_symbol_utils.$data]?.[_symbol_utils.$uid] || field[_symbol_utils.$uid], + fieldId: field[_symbol_utils.$uid], + class: ["xfaTextfield"], + style, + "aria-label": ariaLabel(field), + "aria-required": false + } + }; + } + if (isRequired(field)) { + html.attributes["aria-required"] = true; + html.attributes.required = true; + } + return _utils.HTMLResult.success({ + name: "label", + attributes: { + class: ["xfaLabel"] + }, + children: [html] + }); + } +} +class Time extends _xfa_object.StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "time"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } + [_symbol_utils.$finalize]() { + const date = this[_symbol_utils.$content].trim(); + this[_symbol_utils.$content] = date ? new Date(date) : null; + } + [_symbol_utils.$toHTML](availableSpace) { + return valueToHtml(this[_symbol_utils.$content] ? this[_symbol_utils.$content].toString() : ""); + } +} +class TimeStamp extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "timeStamp"); + this.id = attributes.id || ""; + this.server = attributes.server || ""; + this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class ToolTip extends _xfa_object.StringObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "toolTip"); + this.id = attributes.id || ""; + this.rid = attributes.rid || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Traversal extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "traversal", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.traverse = new _xfa_object.XFAObjectArray(); + } +} +class Traverse extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "traverse", true); + this.id = attributes.id || ""; + this.operation = (0, _utils.getStringOption)(attributes.operation, ["next", "back", "down", "first", "left", "right", "up"]); + this.ref = attributes.ref || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.script = null; + } + get name() { + return this.operation; + } + [_symbol_utils.$isTransparent]() { + return false; + } +} +class Ui extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "ui", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.picture = null; + this.barcode = null; + this.button = null; + this.checkButton = null; + this.choiceList = null; + this.dateTimeEdit = null; + this.defaultUi = null; + this.imageEdit = null; + this.numericEdit = null; + this.passwordEdit = null; + this.signature = null; + this.textEdit = null; + } + [_symbol_utils.$getExtra]() { + if (this[_symbol_utils.$extra] === undefined) { + for (const name of Object.getOwnPropertyNames(this)) { + if (name === "extras" || name === "picture") { + continue; + } + const obj = this[name]; + if (!(obj instanceof _xfa_object.XFAObject)) { + continue; + } + this[_symbol_utils.$extra] = obj; + return obj; + } + this[_symbol_utils.$extra] = null; + } + return this[_symbol_utils.$extra]; + } + [_symbol_utils.$toHTML](availableSpace) { + const obj = this[_symbol_utils.$getExtra](); + if (obj) { + return obj[_symbol_utils.$toHTML](availableSpace); + } + return _utils.HTMLResult.EMPTY; + } +} +class Validate extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "validate", true); + this.formatTest = (0, _utils.getStringOption)(attributes.formatTest, ["warning", "disabled", "error"]); + this.id = attributes.id || ""; + this.nullTest = (0, _utils.getStringOption)(attributes.nullTest, ["disabled", "error", "warning"]); + this.scriptTest = (0, _utils.getStringOption)(attributes.scriptTest, ["error", "disabled", "warning"]); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.extras = null; + this.message = null; + this.picture = null; + this.script = null; + } +} +class Value extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "value", true); + this.id = attributes.id || ""; + this.override = (0, _utils.getInteger)({ + data: attributes.override, + defaultValue: 0, + validate: x => x === 1 + }); + this.relevant = (0, _utils.getRelevant)(attributes.relevant); + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.arc = null; + this.boolean = null; + this.date = null; + this.dateTime = null; + this.decimal = null; + this.exData = null; + this.float = null; + this.image = null; + this.integer = null; + this.line = null; + this.rectangle = null; + this.text = null; + this.time = null; + } + [_symbol_utils.$setValue](value) { + const parent = this[_symbol_utils.$getParent](); + if (parent instanceof Field) { + if (parent.ui?.imageEdit) { + if (!this.image) { + this.image = new Image({}); + this[_symbol_utils.$appendChild](this.image); + } + this.image[_symbol_utils.$content] = value[_symbol_utils.$content]; + return; + } + } + const valueName = value[_symbol_utils.$nodeName]; + if (this[valueName] !== null) { + this[valueName][_symbol_utils.$content] = value[_symbol_utils.$content]; + return; + } + for (const name of Object.getOwnPropertyNames(this)) { + const obj = this[name]; + if (obj instanceof _xfa_object.XFAObject) { + this[name] = null; + this[_symbol_utils.$removeChild](obj); + } + } + this[value[_symbol_utils.$nodeName]] = value; + this[_symbol_utils.$appendChild](value); + } + [_symbol_utils.$text]() { + if (this.exData) { + if (typeof this.exData[_symbol_utils.$content] === "string") { + return this.exData[_symbol_utils.$content].trim(); + } + return this.exData[_symbol_utils.$content][_symbol_utils.$text]().trim(); + } + for (const name of Object.getOwnPropertyNames(this)) { + if (name === "image") { + continue; + } + const obj = this[name]; + if (obj instanceof _xfa_object.XFAObject) { + return (obj[_symbol_utils.$content] || "").toString().trim(); + } + } + return null; + } + [_symbol_utils.$toHTML](availableSpace) { + for (const name of Object.getOwnPropertyNames(this)) { + const obj = this[name]; + if (!(obj instanceof _xfa_object.XFAObject)) { + continue; + } + return obj[_symbol_utils.$toHTML](availableSpace); + } + return _utils.HTMLResult.EMPTY; + } +} +exports.Value = Value; +class Variables extends _xfa_object.XFAObject { + constructor(attributes) { + super(TEMPLATE_NS_ID, "variables", true); + this.id = attributes.id || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + this.boolean = new _xfa_object.XFAObjectArray(); + this.date = new _xfa_object.XFAObjectArray(); + this.dateTime = new _xfa_object.XFAObjectArray(); + this.decimal = new _xfa_object.XFAObjectArray(); + this.exData = new _xfa_object.XFAObjectArray(); + this.float = new _xfa_object.XFAObjectArray(); + this.image = new _xfa_object.XFAObjectArray(); + this.integer = new _xfa_object.XFAObjectArray(); + this.manifest = new _xfa_object.XFAObjectArray(); + this.script = new _xfa_object.XFAObjectArray(); + this.text = new _xfa_object.XFAObjectArray(); + this.time = new _xfa_object.XFAObjectArray(); + } + [_symbol_utils.$isTransparent]() { + return true; + } +} +class TemplateNamespace { + static [_namespaces.$buildXFAObject](name, attributes) { + if (TemplateNamespace.hasOwnProperty(name)) { + const node = TemplateNamespace[name](attributes); + node[_symbol_utils.$setSetAttributes](attributes); + return node; + } + return undefined; + } + static appearanceFilter(attrs) { + return new AppearanceFilter(attrs); + } + static arc(attrs) { + return new Arc(attrs); + } + static area(attrs) { + return new Area(attrs); + } + static assist(attrs) { + return new Assist(attrs); + } + static barcode(attrs) { + return new Barcode(attrs); + } + static bind(attrs) { + return new Bind(attrs); + } + static bindItems(attrs) { + return new BindItems(attrs); + } + static bookend(attrs) { + return new Bookend(attrs); + } + static boolean(attrs) { + return new BooleanElement(attrs); + } + static border(attrs) { + return new Border(attrs); + } + static break(attrs) { + return new Break(attrs); + } + static breakAfter(attrs) { + return new BreakAfter(attrs); + } + static breakBefore(attrs) { + return new BreakBefore(attrs); + } + static button(attrs) { + return new Button(attrs); + } + static calculate(attrs) { + return new Calculate(attrs); + } + static caption(attrs) { + return new Caption(attrs); + } + static certificate(attrs) { + return new Certificate(attrs); + } + static certificates(attrs) { + return new Certificates(attrs); + } + static checkButton(attrs) { + return new CheckButton(attrs); + } + static choiceList(attrs) { + return new ChoiceList(attrs); + } + static color(attrs) { + return new Color(attrs); + } + static comb(attrs) { + return new Comb(attrs); + } + static connect(attrs) { + return new Connect(attrs); + } + static contentArea(attrs) { + return new ContentArea(attrs); + } + static corner(attrs) { + return new Corner(attrs); + } + static date(attrs) { + return new DateElement(attrs); + } + static dateTime(attrs) { + return new DateTime(attrs); + } + static dateTimeEdit(attrs) { + return new DateTimeEdit(attrs); + } + static decimal(attrs) { + return new Decimal(attrs); + } + static defaultUi(attrs) { + return new DefaultUi(attrs); + } + static desc(attrs) { + return new Desc(attrs); + } + static digestMethod(attrs) { + return new DigestMethod(attrs); + } + static digestMethods(attrs) { + return new DigestMethods(attrs); + } + static draw(attrs) { + return new Draw(attrs); + } + static edge(attrs) { + return new Edge(attrs); + } + static encoding(attrs) { + return new Encoding(attrs); + } + static encodings(attrs) { + return new Encodings(attrs); + } + static encrypt(attrs) { + return new Encrypt(attrs); + } + static encryptData(attrs) { + return new EncryptData(attrs); + } + static encryption(attrs) { + return new Encryption(attrs); + } + static encryptionMethod(attrs) { + return new EncryptionMethod(attrs); + } + static encryptionMethods(attrs) { + return new EncryptionMethods(attrs); + } + static event(attrs) { + return new Event(attrs); + } + static exData(attrs) { + return new ExData(attrs); + } + static exObject(attrs) { + return new ExObject(attrs); + } + static exclGroup(attrs) { + return new ExclGroup(attrs); + } + static execute(attrs) { + return new Execute(attrs); + } + static extras(attrs) { + return new Extras(attrs); + } + static field(attrs) { + return new Field(attrs); + } + static fill(attrs) { + return new Fill(attrs); + } + static filter(attrs) { + return new Filter(attrs); + } + static float(attrs) { + return new Float(attrs); + } + static font(attrs) { + return new Font(attrs); + } + static format(attrs) { + return new Format(attrs); + } + static handler(attrs) { + return new Handler(attrs); + } + static hyphenation(attrs) { + return new Hyphenation(attrs); + } + static image(attrs) { + return new Image(attrs); + } + static imageEdit(attrs) { + return new ImageEdit(attrs); + } + static integer(attrs) { + return new Integer(attrs); + } + static issuers(attrs) { + return new Issuers(attrs); + } + static items(attrs) { + return new Items(attrs); + } + static keep(attrs) { + return new Keep(attrs); + } + static keyUsage(attrs) { + return new KeyUsage(attrs); + } + static line(attrs) { + return new Line(attrs); + } + static linear(attrs) { + return new Linear(attrs); + } + static lockDocument(attrs) { + return new LockDocument(attrs); + } + static manifest(attrs) { + return new Manifest(attrs); + } + static margin(attrs) { + return new Margin(attrs); + } + static mdp(attrs) { + return new Mdp(attrs); + } + static medium(attrs) { + return new Medium(attrs); + } + static message(attrs) { + return new Message(attrs); + } + static numericEdit(attrs) { + return new NumericEdit(attrs); + } + static occur(attrs) { + return new Occur(attrs); + } + static oid(attrs) { + return new Oid(attrs); + } + static oids(attrs) { + return new Oids(attrs); + } + static overflow(attrs) { + return new Overflow(attrs); + } + static pageArea(attrs) { + return new PageArea(attrs); + } + static pageSet(attrs) { + return new PageSet(attrs); + } + static para(attrs) { + return new Para(attrs); + } + static passwordEdit(attrs) { + return new PasswordEdit(attrs); + } + static pattern(attrs) { + return new Pattern(attrs); + } + static picture(attrs) { + return new Picture(attrs); + } + static proto(attrs) { + return new Proto(attrs); + } + static radial(attrs) { + return new Radial(attrs); + } + static reason(attrs) { + return new Reason(attrs); + } + static reasons(attrs) { + return new Reasons(attrs); + } + static rectangle(attrs) { + return new Rectangle(attrs); + } + static ref(attrs) { + return new RefElement(attrs); + } + static script(attrs) { + return new Script(attrs); + } + static setProperty(attrs) { + return new SetProperty(attrs); + } + static signData(attrs) { + return new SignData(attrs); + } + static signature(attrs) { + return new Signature(attrs); + } + static signing(attrs) { + return new Signing(attrs); + } + static solid(attrs) { + return new Solid(attrs); + } + static speak(attrs) { + return new Speak(attrs); + } + static stipple(attrs) { + return new Stipple(attrs); + } + static subform(attrs) { + return new Subform(attrs); + } + static subformSet(attrs) { + return new SubformSet(attrs); + } + static subjectDN(attrs) { + return new SubjectDN(attrs); + } + static subjectDNs(attrs) { + return new SubjectDNs(attrs); + } + static submit(attrs) { + return new Submit(attrs); + } + static template(attrs) { + return new Template(attrs); + } + static text(attrs) { + return new Text(attrs); + } + static textEdit(attrs) { + return new TextEdit(attrs); + } + static time(attrs) { + return new Time(attrs); + } + static timeStamp(attrs) { + return new TimeStamp(attrs); + } + static toolTip(attrs) { + return new ToolTip(attrs); + } + static traversal(attrs) { + return new Traversal(attrs); + } + static traverse(attrs) { + return new Traverse(attrs); + } + static ui(attrs) { + return new Ui(attrs); + } + static validate(attrs) { + return new Validate(attrs); + } + static value(attrs) { + return new Value(attrs); + } + static variables(attrs) { + return new Variables(attrs); + } +} +exports.TemplateNamespace = TemplateNamespace; + +/***/ }), +/* 81 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.NamespaceIds = exports.$buildXFAObject = void 0; +const $buildXFAObject = Symbol(); +exports.$buildXFAObject = $buildXFAObject; +const NamespaceIds = { + config: { + id: 0, + check: ns => ns.startsWith("http://www.xfa.org/schema/xci/") + }, + connectionSet: { + id: 1, + check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-connection-set/") + }, + datasets: { + id: 2, + check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-data/") + }, + form: { + id: 3, + check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-form/") + }, + localeSet: { + id: 4, + check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-locale-set/") + }, + pdf: { + id: 5, + check: ns => ns === "http://ns.adobe.com/xdp/pdf/" + }, + signature: { + id: 6, + check: ns => ns === "http://www.w3.org/2000/09/xmldsig#" + }, + sourceSet: { + id: 7, + check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-source-set/") + }, + stylesheet: { + id: 8, + check: ns => ns === "http://www.w3.org/1999/XSL/Transform" + }, + template: { + id: 9, + check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-template/") + }, + xdc: { + id: 10, + check: ns => ns.startsWith("http://www.xfa.org/schema/xdc/") + }, + xdp: { + id: 11, + check: ns => ns === "http://ns.adobe.com/xdp/" + }, + xfdf: { + id: 12, + check: ns => ns === "http://ns.adobe.com/xfdf/" + }, + xhtml: { + id: 13, + check: ns => ns === "http://www.w3.org/1999/xhtml" + }, + xmpmeta: { + id: 14, + check: ns => ns === "http://ns.adobe.com/xmpmeta/" + } +}; +exports.NamespaceIds = NamespaceIds; + +/***/ }), +/* 82 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.addHTML = addHTML; +exports.checkDimensions = checkDimensions; +exports.flushHTML = flushHTML; +exports.getAvailableSpace = getAvailableSpace; +var _symbol_utils = __w_pdfjs_require__(78); +var _html_utils = __w_pdfjs_require__(83); +function createLine(node, children) { + return { + name: "div", + attributes: { + class: [node.layout === "lr-tb" ? "xfaLr" : "xfaRl"] + }, + children + }; +} +function flushHTML(node) { + if (!node[_symbol_utils.$extra]) { + return null; + } + const attributes = node[_symbol_utils.$extra].attributes; + const html = { + name: "div", + attributes, + children: node[_symbol_utils.$extra].children + }; + if (node[_symbol_utils.$extra].failingNode) { + const htmlFromFailing = node[_symbol_utils.$extra].failingNode[_symbol_utils.$flushHTML](); + if (htmlFromFailing) { + if (node.layout.endsWith("-tb")) { + html.children.push(createLine(node, [htmlFromFailing])); + } else { + html.children.push(htmlFromFailing); + } + } + } + if (html.children.length === 0) { + return null; + } + return html; +} +function addHTML(node, html, bbox) { + const extra = node[_symbol_utils.$extra]; + const availableSpace = extra.availableSpace; + const [x, y, w, h] = bbox; + switch (node.layout) { + case "position": + { + extra.width = Math.max(extra.width, x + w); + extra.height = Math.max(extra.height, y + h); + extra.children.push(html); + break; + } + case "lr-tb": + case "rl-tb": + if (!extra.line || extra.attempt === 1) { + extra.line = createLine(node, []); + extra.children.push(extra.line); + extra.numberInLine = 0; + } + extra.numberInLine += 1; + extra.line.children.push(html); + if (extra.attempt === 0) { + extra.currentWidth += w; + extra.height = Math.max(extra.height, extra.prevHeight + h); + } else { + extra.currentWidth = w; + extra.prevHeight = extra.height; + extra.height += h; + extra.attempt = 0; + } + extra.width = Math.max(extra.width, extra.currentWidth); + break; + case "rl-row": + case "row": + { + extra.children.push(html); + extra.width += w; + extra.height = Math.max(extra.height, h); + const height = (0, _html_utils.measureToString)(extra.height); + for (const child of extra.children) { + child.attributes.style.height = height; + } + break; + } + case "table": + { + extra.width = Math.min(availableSpace.width, Math.max(extra.width, w)); + extra.height += h; + extra.children.push(html); + break; + } + case "tb": + { + extra.width = Math.min(availableSpace.width, Math.max(extra.width, w)); + extra.height += h; + extra.children.push(html); + break; + } + } +} +function getAvailableSpace(node) { + const availableSpace = node[_symbol_utils.$extra].availableSpace; + const marginV = node.margin ? node.margin.topInset + node.margin.bottomInset : 0; + const marginH = node.margin ? node.margin.leftInset + node.margin.rightInset : 0; + switch (node.layout) { + case "lr-tb": + case "rl-tb": + if (node[_symbol_utils.$extra].attempt === 0) { + return { + width: availableSpace.width - marginH - node[_symbol_utils.$extra].currentWidth, + height: availableSpace.height - marginV - node[_symbol_utils.$extra].prevHeight + }; + } + return { + width: availableSpace.width - marginH, + height: availableSpace.height - marginV - node[_symbol_utils.$extra].height + }; + case "rl-row": + case "row": + const width = node[_symbol_utils.$extra].columnWidths.slice(node[_symbol_utils.$extra].currentColumn).reduce((a, x) => a + x); + return { + width, + height: availableSpace.height - marginH + }; + case "table": + case "tb": + return { + width: availableSpace.width - marginH, + height: availableSpace.height - marginV - node[_symbol_utils.$extra].height + }; + case "position": + default: + return availableSpace; + } +} +function getTransformedBBox(node) { + let w = node.w === "" ? NaN : node.w; + let h = node.h === "" ? NaN : node.h; + let [centerX, centerY] = [0, 0]; + switch (node.anchorType || "") { + case "bottomCenter": + [centerX, centerY] = [w / 2, h]; + break; + case "bottomLeft": + [centerX, centerY] = [0, h]; + break; + case "bottomRight": + [centerX, centerY] = [w, h]; + break; + case "middleCenter": + [centerX, centerY] = [w / 2, h / 2]; + break; + case "middleLeft": + [centerX, centerY] = [0, h / 2]; + break; + case "middleRight": + [centerX, centerY] = [w, h / 2]; + break; + case "topCenter": + [centerX, centerY] = [w / 2, 0]; + break; + case "topRight": + [centerX, centerY] = [w, 0]; + break; + } + let x, y; + switch (node.rotate || 0) { + case 0: + [x, y] = [-centerX, -centerY]; + break; + case 90: + [x, y] = [-centerY, centerX]; + [w, h] = [h, -w]; + break; + case 180: + [x, y] = [centerX, centerY]; + [w, h] = [-w, -h]; + break; + case 270: + [x, y] = [centerY, -centerX]; + [w, h] = [-h, w]; + break; + } + return [node.x + x + Math.min(0, w), node.y + y + Math.min(0, h), Math.abs(w), Math.abs(h)]; +} +function checkDimensions(node, space) { + if (node[_symbol_utils.$getTemplateRoot]()[_symbol_utils.$extra].firstUnsplittable === null) { + return true; + } + if (node.w === 0 || node.h === 0) { + return true; + } + const ERROR = 2; + const parent = node[_symbol_utils.$getSubformParent](); + const attempt = parent[_symbol_utils.$extra]?.attempt || 0; + const [, y, w, h] = getTransformedBBox(node); + switch (parent.layout) { + case "lr-tb": + case "rl-tb": + if (attempt === 0) { + if (!node[_symbol_utils.$getTemplateRoot]()[_symbol_utils.$extra].noLayoutFailure) { + if (node.h !== "" && Math.round(h - space.height) > ERROR) { + return false; + } + if (node.w !== "") { + if (Math.round(w - space.width) <= ERROR) { + return true; + } + if (parent[_symbol_utils.$extra].numberInLine === 0) { + return space.height > ERROR; + } + return false; + } + return space.width > ERROR; + } + if (node.w !== "") { + return Math.round(w - space.width) <= ERROR; + } + return space.width > ERROR; + } + if (node[_symbol_utils.$getTemplateRoot]()[_symbol_utils.$extra].noLayoutFailure) { + return true; + } + if (node.h !== "" && Math.round(h - space.height) > ERROR) { + return false; + } + if (node.w === "" || Math.round(w - space.width) <= ERROR) { + return space.height > ERROR; + } + if (parent[_symbol_utils.$isThereMoreWidth]()) { + return false; + } + return space.height > ERROR; + case "table": + case "tb": + if (node[_symbol_utils.$getTemplateRoot]()[_symbol_utils.$extra].noLayoutFailure) { + return true; + } + if (node.h !== "" && !node[_symbol_utils.$isSplittable]()) { + return Math.round(h - space.height) <= ERROR; + } + if (node.w === "" || Math.round(w - space.width) <= ERROR) { + return space.height > ERROR; + } + if (parent[_symbol_utils.$isThereMoreWidth]()) { + return false; + } + return space.height > ERROR; + case "position": + if (node[_symbol_utils.$getTemplateRoot]()[_symbol_utils.$extra].noLayoutFailure) { + return true; + } + if (node.h === "" || Math.round(h + y - space.height) <= ERROR) { + return true; + } + const area = node[_symbol_utils.$getTemplateRoot]()[_symbol_utils.$extra].currentContentArea; + return h + y > area.h; + case "rl-row": + case "row": + if (node[_symbol_utils.$getTemplateRoot]()[_symbol_utils.$extra].noLayoutFailure) { + return true; + } + if (node.h !== "") { + return Math.round(h - space.height) <= ERROR; + } + return true; + default: + return true; + } +} + +/***/ }), +/* 83 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.computeBbox = computeBbox; +exports.createWrapper = createWrapper; +exports.fixDimensions = fixDimensions; +exports.fixTextIndent = fixTextIndent; +exports.fixURL = fixURL; +exports.isPrintOnly = isPrintOnly; +exports.layoutClass = layoutClass; +exports.layoutNode = layoutNode; +exports.measureToString = measureToString; +exports.setAccess = setAccess; +exports.setFontFamily = setFontFamily; +exports.setMinMaxDimensions = setMinMaxDimensions; +exports.setPara = setPara; +exports.toStyle = toStyle; +var _symbol_utils = __w_pdfjs_require__(78); +var _util = __w_pdfjs_require__(2); +var _utils = __w_pdfjs_require__(84); +var _fonts = __w_pdfjs_require__(85); +var _text = __w_pdfjs_require__(86); +var _xfa_object = __w_pdfjs_require__(87); +function measureToString(m) { + if (typeof m === "string") { + return "0px"; + } + return Number.isInteger(m) ? `${m}px` : `${m.toFixed(2)}px`; +} +const converters = { + anchorType(node, style) { + const parent = node[_symbol_utils.$getSubformParent](); + if (!parent || parent.layout && parent.layout !== "position") { + return; + } + if (!("transform" in style)) { + style.transform = ""; + } + switch (node.anchorType) { + case "bottomCenter": + style.transform += "translate(-50%, -100%)"; + break; + case "bottomLeft": + style.transform += "translate(0,-100%)"; + break; + case "bottomRight": + style.transform += "translate(-100%,-100%)"; + break; + case "middleCenter": + style.transform += "translate(-50%,-50%)"; + break; + case "middleLeft": + style.transform += "translate(0,-50%)"; + break; + case "middleRight": + style.transform += "translate(-100%,-50%)"; + break; + case "topCenter": + style.transform += "translate(-50%,0)"; + break; + case "topRight": + style.transform += "translate(-100%,0)"; + break; + } + }, + dimensions(node, style) { + const parent = node[_symbol_utils.$getSubformParent](); + let width = node.w; + const height = node.h; + if (parent.layout?.includes("row")) { + const extra = parent[_symbol_utils.$extra]; + const colSpan = node.colSpan; + let w; + if (colSpan === -1) { + w = extra.columnWidths.slice(extra.currentColumn).reduce((a, x) => a + x, 0); + extra.currentColumn = 0; + } else { + w = extra.columnWidths.slice(extra.currentColumn, extra.currentColumn + colSpan).reduce((a, x) => a + x, 0); + extra.currentColumn = (extra.currentColumn + node.colSpan) % extra.columnWidths.length; + } + if (!isNaN(w)) { + width = node.w = w; + } + } + if (width !== "") { + style.width = measureToString(width); + } else { + style.width = "auto"; + } + if (height !== "") { + style.height = measureToString(height); + } else { + style.height = "auto"; + } + }, + position(node, style) { + const parent = node[_symbol_utils.$getSubformParent](); + if (parent?.layout && parent.layout !== "position") { + return; + } + style.position = "absolute"; + style.left = measureToString(node.x); + style.top = measureToString(node.y); + }, + rotate(node, style) { + if (node.rotate) { + if (!("transform" in style)) { + style.transform = ""; + } + style.transform += `rotate(-${node.rotate}deg)`; + style.transformOrigin = "top left"; + } + }, + presence(node, style) { + switch (node.presence) { + case "invisible": + style.visibility = "hidden"; + break; + case "hidden": + case "inactive": + style.display = "none"; + break; + } + }, + hAlign(node, style) { + if (node[_symbol_utils.$nodeName] === "para") { + switch (node.hAlign) { + case "justifyAll": + style.textAlign = "justify-all"; + break; + case "radix": + style.textAlign = "left"; + break; + default: + style.textAlign = node.hAlign; + } + } else { + switch (node.hAlign) { + case "left": + style.alignSelf = "start"; + break; + case "center": + style.alignSelf = "center"; + break; + case "right": + style.alignSelf = "end"; + break; + } + } + }, + margin(node, style) { + if (node.margin) { + style.margin = node.margin[_symbol_utils.$toStyle]().margin; + } + } +}; +function setMinMaxDimensions(node, style) { + const parent = node[_symbol_utils.$getSubformParent](); + if (parent.layout === "position") { + if (node.minW > 0) { + style.minWidth = measureToString(node.minW); + } + if (node.maxW > 0) { + style.maxWidth = measureToString(node.maxW); + } + if (node.minH > 0) { + style.minHeight = measureToString(node.minH); + } + if (node.maxH > 0) { + style.maxHeight = measureToString(node.maxH); + } + } +} +function layoutText(text, xfaFont, margin, lineHeight, fontFinder, width) { + const measure = new _text.TextMeasure(xfaFont, margin, lineHeight, fontFinder); + if (typeof text === "string") { + measure.addString(text); + } else { + text[_symbol_utils.$pushGlyphs](measure); + } + return measure.compute(width); +} +function layoutNode(node, availableSpace) { + let height = null; + let width = null; + let isBroken = false; + if ((!node.w || !node.h) && node.value) { + let marginH = 0; + let marginV = 0; + if (node.margin) { + marginH = node.margin.leftInset + node.margin.rightInset; + marginV = node.margin.topInset + node.margin.bottomInset; + } + let lineHeight = null; + let margin = null; + if (node.para) { + margin = Object.create(null); + lineHeight = node.para.lineHeight === "" ? null : node.para.lineHeight; + margin.top = node.para.spaceAbove === "" ? 0 : node.para.spaceAbove; + margin.bottom = node.para.spaceBelow === "" ? 0 : node.para.spaceBelow; + margin.left = node.para.marginLeft === "" ? 0 : node.para.marginLeft; + margin.right = node.para.marginRight === "" ? 0 : node.para.marginRight; + } + let font = node.font; + if (!font) { + const root = node[_symbol_utils.$getTemplateRoot](); + let parent = node[_symbol_utils.$getParent](); + while (parent && parent !== root) { + if (parent.font) { + font = parent.font; + break; + } + parent = parent[_symbol_utils.$getParent](); + } + } + const maxWidth = (node.w || availableSpace.width) - marginH; + const fontFinder = node[_symbol_utils.$globalData].fontFinder; + if (node.value.exData && node.value.exData[_symbol_utils.$content] && node.value.exData.contentType === "text/html") { + const res = layoutText(node.value.exData[_symbol_utils.$content], font, margin, lineHeight, fontFinder, maxWidth); + width = res.width; + height = res.height; + isBroken = res.isBroken; + } else { + const text = node.value[_symbol_utils.$text](); + if (text) { + const res = layoutText(text, font, margin, lineHeight, fontFinder, maxWidth); + width = res.width; + height = res.height; + isBroken = res.isBroken; + } + } + if (width !== null && !node.w) { + width += marginH; + } + if (height !== null && !node.h) { + height += marginV; + } + } + return { + w: width, + h: height, + isBroken + }; +} +function computeBbox(node, html, availableSpace) { + let bbox; + if (node.w !== "" && node.h !== "") { + bbox = [node.x, node.y, node.w, node.h]; + } else { + if (!availableSpace) { + return null; + } + let width = node.w; + if (width === "") { + if (node.maxW === 0) { + const parent = node[_symbol_utils.$getSubformParent](); + if (parent.layout === "position" && parent.w !== "") { + width = 0; + } else { + width = node.minW; + } + } else { + width = Math.min(node.maxW, availableSpace.width); + } + html.attributes.style.width = measureToString(width); + } + let height = node.h; + if (height === "") { + if (node.maxH === 0) { + const parent = node[_symbol_utils.$getSubformParent](); + if (parent.layout === "position" && parent.h !== "") { + height = 0; + } else { + height = node.minH; + } + } else { + height = Math.min(node.maxH, availableSpace.height); + } + html.attributes.style.height = measureToString(height); + } + bbox = [node.x, node.y, width, height]; + } + return bbox; +} +function fixDimensions(node) { + const parent = node[_symbol_utils.$getSubformParent](); + if (parent.layout?.includes("row")) { + const extra = parent[_symbol_utils.$extra]; + const colSpan = node.colSpan; + let width; + if (colSpan === -1) { + width = extra.columnWidths.slice(extra.currentColumn).reduce((a, w) => a + w, 0); + } else { + width = extra.columnWidths.slice(extra.currentColumn, extra.currentColumn + colSpan).reduce((a, w) => a + w, 0); + } + if (!isNaN(width)) { + node.w = width; + } + } + if (parent.layout && parent.layout !== "position") { + node.x = node.y = 0; + } + if (node.layout === "table") { + if (node.w === "" && Array.isArray(node.columnWidths)) { + node.w = node.columnWidths.reduce((a, x) => a + x, 0); + } + } +} +function layoutClass(node) { + switch (node.layout) { + case "position": + return "xfaPosition"; + case "lr-tb": + return "xfaLrTb"; + case "rl-row": + return "xfaRlRow"; + case "rl-tb": + return "xfaRlTb"; + case "row": + return "xfaRow"; + case "table": + return "xfaTable"; + case "tb": + return "xfaTb"; + default: + return "xfaPosition"; + } +} +function toStyle(node, ...names) { + const style = Object.create(null); + for (const name of names) { + const value = node[name]; + if (value === null) { + continue; + } + if (converters.hasOwnProperty(name)) { + converters[name](node, style); + continue; + } + if (value instanceof _xfa_object.XFAObject) { + const newStyle = value[_symbol_utils.$toStyle](); + if (newStyle) { + Object.assign(style, newStyle); + } else { + (0, _util.warn)(`(DEBUG) - XFA - style for ${name} not implemented yet`); + } + } + } + return style; +} +function createWrapper(node, html) { + const { + attributes + } = html; + const { + style + } = attributes; + const wrapper = { + name: "div", + attributes: { + class: ["xfaWrapper"], + style: Object.create(null) + }, + children: [] + }; + attributes.class.push("xfaWrapped"); + if (node.border) { + const { + widths, + insets + } = node.border[_symbol_utils.$extra]; + let width, height; + let top = insets[0]; + let left = insets[3]; + const insetsH = insets[0] + insets[2]; + const insetsW = insets[1] + insets[3]; + switch (node.border.hand) { + case "even": + top -= widths[0] / 2; + left -= widths[3] / 2; + width = `calc(100% + ${(widths[1] + widths[3]) / 2 - insetsW}px)`; + height = `calc(100% + ${(widths[0] + widths[2]) / 2 - insetsH}px)`; + break; + case "left": + top -= widths[0]; + left -= widths[3]; + width = `calc(100% + ${widths[1] + widths[3] - insetsW}px)`; + height = `calc(100% + ${widths[0] + widths[2] - insetsH}px)`; + break; + case "right": + width = insetsW ? `calc(100% - ${insetsW}px)` : "100%"; + height = insetsH ? `calc(100% - ${insetsH}px)` : "100%"; + break; + } + const classNames = ["xfaBorder"]; + if (isPrintOnly(node.border)) { + classNames.push("xfaPrintOnly"); + } + const border = { + name: "div", + attributes: { + class: classNames, + style: { + top: `${top}px`, + left: `${left}px`, + width, + height + } + }, + children: [] + }; + for (const key of ["border", "borderWidth", "borderColor", "borderRadius", "borderStyle"]) { + if (style[key] !== undefined) { + border.attributes.style[key] = style[key]; + delete style[key]; + } + } + wrapper.children.push(border, html); + } else { + wrapper.children.push(html); + } + for (const key of ["background", "backgroundClip", "top", "left", "width", "height", "minWidth", "minHeight", "maxWidth", "maxHeight", "transform", "transformOrigin", "visibility"]) { + if (style[key] !== undefined) { + wrapper.attributes.style[key] = style[key]; + delete style[key]; + } + } + if (style.position === "absolute") { + wrapper.attributes.style.position = "absolute"; + } else { + wrapper.attributes.style.position = "relative"; + } + delete style.position; + if (style.alignSelf) { + wrapper.attributes.style.alignSelf = style.alignSelf; + delete style.alignSelf; + } + return wrapper; +} +function fixTextIndent(styles) { + const indent = (0, _utils.getMeasurement)(styles.textIndent, "0px"); + if (indent >= 0) { + return; + } + const align = styles.textAlign === "right" ? "right" : "left"; + const name = "padding" + (align === "left" ? "Left" : "Right"); + const padding = (0, _utils.getMeasurement)(styles[name], "0px"); + styles[name] = `${padding - indent}px`; +} +function setAccess(node, classNames) { + switch (node.access) { + case "nonInteractive": + classNames.push("xfaNonInteractive"); + break; + case "readOnly": + classNames.push("xfaReadOnly"); + break; + case "protected": + classNames.push("xfaDisabled"); + break; + } +} +function isPrintOnly(node) { + return node.relevant.length > 0 && !node.relevant[0].excluded && node.relevant[0].viewname === "print"; +} +function getCurrentPara(node) { + const stack = node[_symbol_utils.$getTemplateRoot]()[_symbol_utils.$extra].paraStack; + return stack.length ? stack.at(-1) : null; +} +function setPara(node, nodeStyle, value) { + if (value.attributes.class?.includes("xfaRich")) { + if (nodeStyle) { + if (node.h === "") { + nodeStyle.height = "auto"; + } + if (node.w === "") { + nodeStyle.width = "auto"; + } + } + const para = getCurrentPara(node); + if (para) { + const valueStyle = value.attributes.style; + valueStyle.display = "flex"; + valueStyle.flexDirection = "column"; + switch (para.vAlign) { + case "top": + valueStyle.justifyContent = "start"; + break; + case "bottom": + valueStyle.justifyContent = "end"; + break; + case "middle": + valueStyle.justifyContent = "center"; + break; + } + const paraStyle = para[_symbol_utils.$toStyle](); + for (const [key, val] of Object.entries(paraStyle)) { + if (!(key in valueStyle)) { + valueStyle[key] = val; + } + } + } + } +} +function setFontFamily(xfaFont, node, fontFinder, style) { + if (!fontFinder) { + delete style.fontFamily; + return; + } + const name = (0, _utils.stripQuotes)(xfaFont.typeface); + style.fontFamily = `"${name}"`; + const typeface = fontFinder.find(name); + if (typeface) { + const { + fontFamily + } = typeface.regular.cssFontInfo; + if (fontFamily !== name) { + style.fontFamily = `"${fontFamily}"`; + } + const para = getCurrentPara(node); + if (para && para.lineHeight !== "") { + return; + } + if (style.lineHeight) { + return; + } + const pdfFont = (0, _fonts.selectFont)(xfaFont, typeface); + if (pdfFont) { + style.lineHeight = Math.max(1.2, pdfFont.lineHeight); + } + } +} +function fixURL(str) { + const absoluteUrl = (0, _util.createValidAbsoluteUrl)(str, null, { + addDefaultProtocol: true, + tryConvertEncoding: true + }); + return absoluteUrl ? absoluteUrl.href : null; +} + +/***/ }), +/* 84 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.HTMLResult = void 0; +exports.getBBox = getBBox; +exports.getColor = getColor; +exports.getFloat = getFloat; +exports.getInteger = getInteger; +exports.getKeyword = getKeyword; +exports.getMeasurement = getMeasurement; +exports.getRatio = getRatio; +exports.getRelevant = getRelevant; +exports.getStringOption = getStringOption; +exports.stripQuotes = stripQuotes; +var _util = __w_pdfjs_require__(2); +const dimConverters = { + pt: x => x, + cm: x => x / 2.54 * 72, + mm: x => x / (10 * 2.54) * 72, + in: x => x * 72, + px: x => x +}; +const measurementPattern = /([+-]?\d+\.?\d*)(.*)/; +function stripQuotes(str) { + if (str.startsWith("'") || str.startsWith('"')) { + return str.slice(1, -1); + } + return str; +} +function getInteger({ + data, + defaultValue, + validate +}) { + if (!data) { + return defaultValue; + } + data = data.trim(); + const n = parseInt(data, 10); + if (!isNaN(n) && validate(n)) { + return n; + } + return defaultValue; +} +function getFloat({ + data, + defaultValue, + validate +}) { + if (!data) { + return defaultValue; + } + data = data.trim(); + const n = parseFloat(data); + if (!isNaN(n) && validate(n)) { + return n; + } + return defaultValue; +} +function getKeyword({ + data, + defaultValue, + validate +}) { + if (!data) { + return defaultValue; + } + data = data.trim(); + if (validate(data)) { + return data; + } + return defaultValue; +} +function getStringOption(data, options) { + return getKeyword({ + data, + defaultValue: options[0], + validate: k => options.includes(k) + }); +} +function getMeasurement(str, def = "0") { + def ||= "0"; + if (!str) { + return getMeasurement(def); + } + const match = str.trim().match(measurementPattern); + if (!match) { + return getMeasurement(def); + } + const [, valueStr, unit] = match; + const value = parseFloat(valueStr); + if (isNaN(value)) { + return getMeasurement(def); + } + if (value === 0) { + return 0; + } + const conv = dimConverters[unit]; + if (conv) { + return conv(value); + } + return value; +} +function getRatio(data) { + if (!data) { + return { + num: 1, + den: 1 + }; + } + const ratio = data.trim().split(/\s*:\s*/).map(x => parseFloat(x)).filter(x => !isNaN(x)); + if (ratio.length === 1) { + ratio.push(1); + } + if (ratio.length === 0) { + return { + num: 1, + den: 1 + }; + } + const [num, den] = ratio; + return { + num, + den + }; +} +function getRelevant(data) { + if (!data) { + return []; + } + return data.trim().split(/\s+/).map(e => { + return { + excluded: e[0] === "-", + viewname: e.substring(1) + }; + }); +} +function getColor(data, def = [0, 0, 0]) { + let [r, g, b] = def; + if (!data) { + return { + r, + g, + b + }; + } + const color = data.trim().split(/\s*,\s*/).map(c => Math.min(Math.max(0, parseInt(c.trim(), 10)), 255)).map(c => isNaN(c) ? 0 : c); + if (color.length < 3) { + return { + r, + g, + b + }; + } + [r, g, b] = color; + return { + r, + g, + b + }; +} +function getBBox(data) { + const def = -1; + if (!data) { + return { + x: def, + y: def, + width: def, + height: def + }; + } + const bbox = data.trim().split(/\s*,\s*/).map(m => getMeasurement(m, "-1")); + if (bbox.length < 4 || bbox[2] < 0 || bbox[3] < 0) { + return { + x: def, + y: def, + width: def, + height: def + }; + } + const [x, y, width, height] = bbox; + return { + x, + y, + width, + height + }; +} +class HTMLResult { + static get FAILURE() { + return (0, _util.shadow)(this, "FAILURE", new HTMLResult(false, null, null, null)); + } + static get EMPTY() { + return (0, _util.shadow)(this, "EMPTY", new HTMLResult(true, null, null, null)); + } + constructor(success, html, bbox, breakNode) { + this.success = success; + this.html = html; + this.bbox = bbox; + this.breakNode = breakNode; + } + isBreak() { + return !!this.breakNode; + } + static breakNode(node) { + return new HTMLResult(false, null, null, node); + } + static success(html, bbox = null) { + return new HTMLResult(true, html, bbox, null); + } +} +exports.HTMLResult = HTMLResult; + +/***/ }), +/* 85 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.FontFinder = void 0; +exports.getMetrics = getMetrics; +exports.selectFont = selectFont; +var _symbol_utils = __w_pdfjs_require__(78); +var _utils = __w_pdfjs_require__(84); +var _util = __w_pdfjs_require__(2); +class FontFinder { + constructor(pdfFonts) { + this.fonts = new Map(); + this.cache = new Map(); + this.warned = new Set(); + this.defaultFont = null; + this.add(pdfFonts); + } + add(pdfFonts, reallyMissingFonts = null) { + for (const pdfFont of pdfFonts) { + this.addPdfFont(pdfFont); + } + for (const pdfFont of this.fonts.values()) { + if (!pdfFont.regular) { + pdfFont.regular = pdfFont.italic || pdfFont.bold || pdfFont.bolditalic; + } + } + if (!reallyMissingFonts || reallyMissingFonts.size === 0) { + return; + } + const myriad = this.fonts.get("PdfJS-Fallback-PdfJS-XFA"); + for (const missing of reallyMissingFonts) { + this.fonts.set(missing, myriad); + } + } + addPdfFont(pdfFont) { + const cssFontInfo = pdfFont.cssFontInfo; + const name = cssFontInfo.fontFamily; + let font = this.fonts.get(name); + if (!font) { + font = Object.create(null); + this.fonts.set(name, font); + if (!this.defaultFont) { + this.defaultFont = font; + } + } + let property = ""; + const fontWeight = parseFloat(cssFontInfo.fontWeight); + if (parseFloat(cssFontInfo.italicAngle) !== 0) { + property = fontWeight >= 700 ? "bolditalic" : "italic"; + } else if (fontWeight >= 700) { + property = "bold"; + } + if (!property) { + if (pdfFont.name.includes("Bold") || pdfFont.psName?.includes("Bold")) { + property = "bold"; + } + if (pdfFont.name.includes("Italic") || pdfFont.name.endsWith("It") || pdfFont.psName?.includes("Italic") || pdfFont.psName?.endsWith("It")) { + property += "italic"; + } + } + if (!property) { + property = "regular"; + } + font[property] = pdfFont; + } + getDefault() { + return this.defaultFont; + } + find(fontName, mustWarn = true) { + let font = this.fonts.get(fontName) || this.cache.get(fontName); + if (font) { + return font; + } + const pattern = /,|-|_| |bolditalic|bold|italic|regular|it/gi; + let name = fontName.replaceAll(pattern, ""); + font = this.fonts.get(name); + if (font) { + this.cache.set(fontName, font); + return font; + } + name = name.toLowerCase(); + const maybe = []; + for (const [family, pdfFont] of this.fonts.entries()) { + if (family.replaceAll(pattern, "").toLowerCase().startsWith(name)) { + maybe.push(pdfFont); + } + } + if (maybe.length === 0) { + for (const [, pdfFont] of this.fonts.entries()) { + if (pdfFont.regular.name?.replaceAll(pattern, "").toLowerCase().startsWith(name)) { + maybe.push(pdfFont); + } + } + } + if (maybe.length === 0) { + name = name.replaceAll(/psmt|mt/gi, ""); + for (const [family, pdfFont] of this.fonts.entries()) { + if (family.replaceAll(pattern, "").toLowerCase().startsWith(name)) { + maybe.push(pdfFont); + } + } + } + if (maybe.length === 0) { + for (const pdfFont of this.fonts.values()) { + if (pdfFont.regular.name?.replaceAll(pattern, "").toLowerCase().startsWith(name)) { + maybe.push(pdfFont); + } + } + } + if (maybe.length >= 1) { + if (maybe.length !== 1 && mustWarn) { + (0, _util.warn)(`XFA - Too many choices to guess the correct font: ${fontName}`); + } + this.cache.set(fontName, maybe[0]); + return maybe[0]; + } + if (mustWarn && !this.warned.has(fontName)) { + this.warned.add(fontName); + (0, _util.warn)(`XFA - Cannot find the font: ${fontName}`); + } + return null; + } +} +exports.FontFinder = FontFinder; +function selectFont(xfaFont, typeface) { + if (xfaFont.posture === "italic") { + if (xfaFont.weight === "bold") { + return typeface.bolditalic; + } + return typeface.italic; + } else if (xfaFont.weight === "bold") { + return typeface.bold; + } + return typeface.regular; +} +function getMetrics(xfaFont, real = false) { + let pdfFont = null; + if (xfaFont) { + const name = (0, _utils.stripQuotes)(xfaFont.typeface); + const typeface = xfaFont[_symbol_utils.$globalData].fontFinder.find(name); + pdfFont = selectFont(xfaFont, typeface); + } + if (!pdfFont) { + return { + lineHeight: 12, + lineGap: 2, + lineNoGap: 10 + }; + } + const size = xfaFont.size || 10; + const lineHeight = pdfFont.lineHeight ? Math.max(real ? 0 : 1.2, pdfFont.lineHeight) : 1.2; + const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap; + return { + lineHeight: lineHeight * size, + lineGap: lineGap * size, + lineNoGap: Math.max(1, lineHeight - lineGap) * size + }; +} + +/***/ }), +/* 86 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TextMeasure = void 0; +var _fonts = __w_pdfjs_require__(85); +const WIDTH_FACTOR = 1.02; +class FontInfo { + constructor(xfaFont, margin, lineHeight, fontFinder) { + this.lineHeight = lineHeight; + this.paraMargin = margin || { + top: 0, + bottom: 0, + left: 0, + right: 0 + }; + if (!xfaFont) { + [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder); + return; + } + this.xfaFont = { + typeface: xfaFont.typeface, + posture: xfaFont.posture, + weight: xfaFont.weight, + size: xfaFont.size, + letterSpacing: xfaFont.letterSpacing + }; + const typeface = fontFinder.find(xfaFont.typeface); + if (!typeface) { + [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder); + return; + } + this.pdfFont = (0, _fonts.selectFont)(xfaFont, typeface); + if (!this.pdfFont) { + [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder); + } + } + defaultFont(fontFinder) { + const font = fontFinder.find("Helvetica", false) || fontFinder.find("Myriad Pro", false) || fontFinder.find("Arial", false) || fontFinder.getDefault(); + if (font?.regular) { + const pdfFont = font.regular; + const info = pdfFont.cssFontInfo; + const xfaFont = { + typeface: info.fontFamily, + posture: "normal", + weight: "normal", + size: 10, + letterSpacing: 0 + }; + return [pdfFont, xfaFont]; + } + const xfaFont = { + typeface: "Courier", + posture: "normal", + weight: "normal", + size: 10, + letterSpacing: 0 + }; + return [null, xfaFont]; + } +} +class FontSelector { + constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fontFinder) { + this.fontFinder = fontFinder; + this.stack = [new FontInfo(defaultXfaFont, defaultParaMargin, defaultLineHeight, fontFinder)]; + } + pushData(xfaFont, margin, lineHeight) { + const lastFont = this.stack.at(-1); + for (const name of ["typeface", "posture", "weight", "size", "letterSpacing"]) { + if (!xfaFont[name]) { + xfaFont[name] = lastFont.xfaFont[name]; + } + } + for (const name of ["top", "bottom", "left", "right"]) { + if (isNaN(margin[name])) { + margin[name] = lastFont.paraMargin[name]; + } + } + const fontInfo = new FontInfo(xfaFont, margin, lineHeight || lastFont.lineHeight, this.fontFinder); + if (!fontInfo.pdfFont) { + fontInfo.pdfFont = lastFont.pdfFont; + } + this.stack.push(fontInfo); + } + popFont() { + this.stack.pop(); + } + topFont() { + return this.stack.at(-1); + } +} +class TextMeasure { + constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts) { + this.glyphs = []; + this.fontSelector = new FontSelector(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts); + this.extraHeight = 0; + } + pushData(xfaFont, margin, lineHeight) { + this.fontSelector.pushData(xfaFont, margin, lineHeight); + } + popFont(xfaFont) { + return this.fontSelector.popFont(); + } + addPara() { + const lastFont = this.fontSelector.topFont(); + this.extraHeight += lastFont.paraMargin.top + lastFont.paraMargin.bottom; + } + addString(str) { + if (!str) { + return; + } + const lastFont = this.fontSelector.topFont(); + const fontSize = lastFont.xfaFont.size; + if (lastFont.pdfFont) { + const letterSpacing = lastFont.xfaFont.letterSpacing; + const pdfFont = lastFont.pdfFont; + const fontLineHeight = pdfFont.lineHeight || 1.2; + const lineHeight = lastFont.lineHeight || Math.max(1.2, fontLineHeight) * fontSize; + const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap; + const noGap = fontLineHeight - lineGap; + const firstLineHeight = Math.max(1, noGap) * fontSize; + const scale = fontSize / 1000; + const fallbackWidth = pdfFont.defaultWidth || pdfFont.charsToGlyphs(" ")[0].width; + for (const line of str.split(/[\u2029\n]/)) { + const encodedLine = pdfFont.encodeString(line).join(""); + const glyphs = pdfFont.charsToGlyphs(encodedLine); + for (const glyph of glyphs) { + const width = glyph.width || fallbackWidth; + this.glyphs.push([width * scale + letterSpacing, lineHeight, firstLineHeight, glyph.unicode, false]); + } + this.glyphs.push([0, 0, 0, "\n", true]); + } + this.glyphs.pop(); + return; + } + for (const line of str.split(/[\u2029\n]/)) { + for (const char of line.split("")) { + this.glyphs.push([fontSize, 1.2 * fontSize, fontSize, char, false]); + } + this.glyphs.push([0, 0, 0, "\n", true]); + } + this.glyphs.pop(); + } + compute(maxWidth) { + let lastSpacePos = -1, + lastSpaceWidth = 0, + width = 0, + height = 0, + currentLineWidth = 0, + currentLineHeight = 0; + let isBroken = false; + let isFirstLine = true; + for (let i = 0, ii = this.glyphs.length; i < ii; i++) { + const [glyphWidth, lineHeight, firstLineHeight, char, isEOL] = this.glyphs[i]; + const isSpace = char === " "; + const glyphHeight = isFirstLine ? firstLineHeight : lineHeight; + if (isEOL) { + width = Math.max(width, currentLineWidth); + currentLineWidth = 0; + height += currentLineHeight; + currentLineHeight = glyphHeight; + lastSpacePos = -1; + lastSpaceWidth = 0; + isFirstLine = false; + continue; + } + if (isSpace) { + if (currentLineWidth + glyphWidth > maxWidth) { + width = Math.max(width, currentLineWidth); + currentLineWidth = 0; + height += currentLineHeight; + currentLineHeight = glyphHeight; + lastSpacePos = -1; + lastSpaceWidth = 0; + isBroken = true; + isFirstLine = false; + } else { + currentLineHeight = Math.max(glyphHeight, currentLineHeight); + lastSpaceWidth = currentLineWidth; + currentLineWidth += glyphWidth; + lastSpacePos = i; + } + continue; + } + if (currentLineWidth + glyphWidth > maxWidth) { + height += currentLineHeight; + currentLineHeight = glyphHeight; + if (lastSpacePos !== -1) { + i = lastSpacePos; + width = Math.max(width, lastSpaceWidth); + currentLineWidth = 0; + lastSpacePos = -1; + lastSpaceWidth = 0; + } else { + width = Math.max(width, currentLineWidth); + currentLineWidth = glyphWidth; + } + isBroken = true; + isFirstLine = false; + continue; + } + currentLineWidth += glyphWidth; + currentLineHeight = Math.max(glyphHeight, currentLineHeight); + } + width = Math.max(width, currentLineWidth); + height += currentLineHeight + this.extraHeight; + return { + width: WIDTH_FACTOR * width, + height, + isBroken + }; + } +} +exports.TextMeasure = TextMeasure; + +/***/ }), +/* 87 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XmlObject = exports.XFAObjectArray = exports.XFAObject = exports.XFAAttribute = exports.StringObject = exports.OptionObject = exports.Option10 = exports.Option01 = exports.IntegerObject = exports.ContentObject = void 0; +var _symbol_utils = __w_pdfjs_require__(78); +var _utils = __w_pdfjs_require__(84); +var _util = __w_pdfjs_require__(2); +var _core_utils = __w_pdfjs_require__(3); +var _namespaces = __w_pdfjs_require__(81); +var _som = __w_pdfjs_require__(88); +const _applyPrototype = Symbol(); +const _attributes = Symbol(); +const _attributeNames = Symbol(); +const _children = Symbol("_children"); +const _cloneAttribute = Symbol(); +const _dataValue = Symbol(); +const _defaultValue = Symbol(); +const _filteredChildrenGenerator = Symbol(); +const _getPrototype = Symbol(); +const _getUnsetAttributes = Symbol(); +const _hasChildren = Symbol(); +const _max = Symbol(); +const _options = Symbol(); +const _parent = Symbol("parent"); +const _resolvePrototypesHelper = Symbol(); +const _setAttributes = Symbol(); +const _validator = Symbol(); +let uid = 0; +const NS_DATASETS = _namespaces.NamespaceIds.datasets.id; +class XFAObject { + constructor(nsId, name, hasChildren = false) { + this[_symbol_utils.$namespaceId] = nsId; + this[_symbol_utils.$nodeName] = name; + this[_hasChildren] = hasChildren; + this[_parent] = null; + this[_children] = []; + this[_symbol_utils.$uid] = `${name}${uid++}`; + this[_symbol_utils.$globalData] = null; + } + get isXFAObject() { + return true; + } + get isXFAObjectArray() { + return false; + } + createNodes(path) { + let root = this, + node = null; + for (const { + name, + index + } of path) { + for (let i = 0, ii = isFinite(index) ? index : 0; i <= ii; i++) { + const nsId = root[_symbol_utils.$namespaceId] === NS_DATASETS ? -1 : root[_symbol_utils.$namespaceId]; + node = new XmlObject(nsId, name); + root[_symbol_utils.$appendChild](node); + } + root = node; + } + return node; + } + [_symbol_utils.$onChild](child) { + if (!this[_hasChildren] || !this[_symbol_utils.$onChildCheck](child)) { + return false; + } + const name = child[_symbol_utils.$nodeName]; + const node = this[name]; + if (node instanceof XFAObjectArray) { + if (node.push(child)) { + this[_symbol_utils.$appendChild](child); + return true; + } + } else { + if (node !== null) { + this[_symbol_utils.$removeChild](node); + } + this[name] = child; + this[_symbol_utils.$appendChild](child); + return true; + } + let id = ""; + if (this.id) { + id = ` (id: ${this.id})`; + } else if (this.name) { + id = ` (name: ${this.name} ${this.h.value})`; + } + (0, _util.warn)(`XFA - node "${this[_symbol_utils.$nodeName]}"${id} has already enough "${name}"!`); + return false; + } + [_symbol_utils.$onChildCheck](child) { + return this.hasOwnProperty(child[_symbol_utils.$nodeName]) && child[_symbol_utils.$namespaceId] === this[_symbol_utils.$namespaceId]; + } + [_symbol_utils.$isNsAgnostic]() { + return false; + } + [_symbol_utils.$acceptWhitespace]() { + return false; + } + [_symbol_utils.$isCDATAXml]() { + return false; + } + [_symbol_utils.$isBindable]() { + return false; + } + [_symbol_utils.$popPara]() { + if (this.para) { + this[_symbol_utils.$getTemplateRoot]()[_symbol_utils.$extra].paraStack.pop(); + } + } + [_symbol_utils.$pushPara]() { + this[_symbol_utils.$getTemplateRoot]()[_symbol_utils.$extra].paraStack.push(this.para); + } + [_symbol_utils.$setId](ids) { + if (this.id && this[_symbol_utils.$namespaceId] === _namespaces.NamespaceIds.template.id) { + ids.set(this.id, this); + } + } + [_symbol_utils.$getTemplateRoot]() { + return this[_symbol_utils.$globalData].template; + } + [_symbol_utils.$isSplittable]() { + return false; + } + [_symbol_utils.$isThereMoreWidth]() { + return false; + } + [_symbol_utils.$appendChild](child) { + child[_parent] = this; + this[_children].push(child); + if (!child[_symbol_utils.$globalData] && this[_symbol_utils.$globalData]) { + child[_symbol_utils.$globalData] = this[_symbol_utils.$globalData]; + } + } + [_symbol_utils.$removeChild](child) { + const i = this[_children].indexOf(child); + this[_children].splice(i, 1); + } + [_symbol_utils.$hasSettableValue]() { + return this.hasOwnProperty("value"); + } + [_symbol_utils.$setValue](_) {} + [_symbol_utils.$onText](_) {} + [_symbol_utils.$finalize]() {} + [_symbol_utils.$clean](builder) { + delete this[_hasChildren]; + if (this[_symbol_utils.$cleanup]) { + builder.clean(this[_symbol_utils.$cleanup]); + delete this[_symbol_utils.$cleanup]; + } + } + [_symbol_utils.$indexOf](child) { + return this[_children].indexOf(child); + } + [_symbol_utils.$insertAt](i, child) { + child[_parent] = this; + this[_children].splice(i, 0, child); + if (!child[_symbol_utils.$globalData] && this[_symbol_utils.$globalData]) { + child[_symbol_utils.$globalData] = this[_symbol_utils.$globalData]; + } + } + [_symbol_utils.$isTransparent]() { + return !this.name; + } + [_symbol_utils.$lastAttribute]() { + return ""; + } + [_symbol_utils.$text]() { + if (this[_children].length === 0) { + return this[_symbol_utils.$content]; + } + return this[_children].map(c => c[_symbol_utils.$text]()).join(""); + } + get [_attributeNames]() { + const proto = Object.getPrototypeOf(this); + if (!proto._attributes) { + const attributes = proto._attributes = new Set(); + for (const name of Object.getOwnPropertyNames(this)) { + if (this[name] === null || this[name] instanceof XFAObject || this[name] instanceof XFAObjectArray) { + break; + } + attributes.add(name); + } + } + return (0, _util.shadow)(this, _attributeNames, proto._attributes); + } + [_symbol_utils.$isDescendent](parent) { + let node = this; + while (node) { + if (node === parent) { + return true; + } + node = node[_symbol_utils.$getParent](); + } + return false; + } + [_symbol_utils.$getParent]() { + return this[_parent]; + } + [_symbol_utils.$getSubformParent]() { + return this[_symbol_utils.$getParent](); + } + [_symbol_utils.$getChildren](name = null) { + if (!name) { + return this[_children]; + } + return this[name]; + } + [_symbol_utils.$dump]() { + const dumped = Object.create(null); + if (this[_symbol_utils.$content]) { + dumped.$content = this[_symbol_utils.$content]; + } + for (const name of Object.getOwnPropertyNames(this)) { + const value = this[name]; + if (value === null) { + continue; + } + if (value instanceof XFAObject) { + dumped[name] = value[_symbol_utils.$dump](); + } else if (value instanceof XFAObjectArray) { + if (!value.isEmpty()) { + dumped[name] = value.dump(); + } + } else { + dumped[name] = value; + } + } + return dumped; + } + [_symbol_utils.$toStyle]() { + return null; + } + [_symbol_utils.$toHTML]() { + return _utils.HTMLResult.EMPTY; + } + *[_symbol_utils.$getContainedChildren]() { + for (const node of this[_symbol_utils.$getChildren]()) { + yield node; + } + } + *[_filteredChildrenGenerator](filter, include) { + for (const node of this[_symbol_utils.$getContainedChildren]()) { + if (!filter || include === filter.has(node[_symbol_utils.$nodeName])) { + const availableSpace = this[_symbol_utils.$getAvailableSpace](); + const res = node[_symbol_utils.$toHTML](availableSpace); + if (!res.success) { + this[_symbol_utils.$extra].failingNode = node; + } + yield res; + } + } + } + [_symbol_utils.$flushHTML]() { + return null; + } + [_symbol_utils.$addHTML](html, bbox) { + this[_symbol_utils.$extra].children.push(html); + } + [_symbol_utils.$getAvailableSpace]() {} + [_symbol_utils.$childrenToHTML]({ + filter = null, + include = true + }) { + if (!this[_symbol_utils.$extra].generator) { + this[_symbol_utils.$extra].generator = this[_filteredChildrenGenerator](filter, include); + } else { + const availableSpace = this[_symbol_utils.$getAvailableSpace](); + const res = this[_symbol_utils.$extra].failingNode[_symbol_utils.$toHTML](availableSpace); + if (!res.success) { + return res; + } + if (res.html) { + this[_symbol_utils.$addHTML](res.html, res.bbox); + } + delete this[_symbol_utils.$extra].failingNode; + } + while (true) { + const gen = this[_symbol_utils.$extra].generator.next(); + if (gen.done) { + break; + } + const res = gen.value; + if (!res.success) { + return res; + } + if (res.html) { + this[_symbol_utils.$addHTML](res.html, res.bbox); + } + } + this[_symbol_utils.$extra].generator = null; + return _utils.HTMLResult.EMPTY; + } + [_symbol_utils.$setSetAttributes](attributes) { + this[_setAttributes] = new Set(Object.keys(attributes)); + } + [_getUnsetAttributes](protoAttributes) { + const allAttr = this[_attributeNames]; + const setAttr = this[_setAttributes]; + return [...protoAttributes].filter(x => allAttr.has(x) && !setAttr.has(x)); + } + [_symbol_utils.$resolvePrototypes](ids, ancestors = new Set()) { + for (const child of this[_children]) { + child[_resolvePrototypesHelper](ids, ancestors); + } + } + [_resolvePrototypesHelper](ids, ancestors) { + const proto = this[_getPrototype](ids, ancestors); + if (proto) { + this[_applyPrototype](proto, ids, ancestors); + } else { + this[_symbol_utils.$resolvePrototypes](ids, ancestors); + } + } + [_getPrototype](ids, ancestors) { + const { + use, + usehref + } = this; + if (!use && !usehref) { + return null; + } + let proto = null; + let somExpression = null; + let id = null; + let ref = use; + if (usehref) { + ref = usehref; + if (usehref.startsWith("#som(") && usehref.endsWith(")")) { + somExpression = usehref.slice("#som(".length, -1); + } else if (usehref.startsWith(".#som(") && usehref.endsWith(")")) { + somExpression = usehref.slice(".#som(".length, -1); + } else if (usehref.startsWith("#")) { + id = usehref.slice(1); + } else if (usehref.startsWith(".#")) { + id = usehref.slice(2); + } + } else if (use.startsWith("#")) { + id = use.slice(1); + } else { + somExpression = use; + } + this.use = this.usehref = ""; + if (id) { + proto = ids.get(id); + } else { + proto = (0, _som.searchNode)(ids.get(_symbol_utils.$root), this, somExpression, true, false); + if (proto) { + proto = proto[0]; + } + } + if (!proto) { + (0, _util.warn)(`XFA - Invalid prototype reference: ${ref}.`); + return null; + } + if (proto[_symbol_utils.$nodeName] !== this[_symbol_utils.$nodeName]) { + (0, _util.warn)(`XFA - Incompatible prototype: ${proto[_symbol_utils.$nodeName]} !== ${this[_symbol_utils.$nodeName]}.`); + return null; + } + if (ancestors.has(proto)) { + (0, _util.warn)(`XFA - Cycle detected in prototypes use.`); + return null; + } + ancestors.add(proto); + const protoProto = proto[_getPrototype](ids, ancestors); + if (protoProto) { + proto[_applyPrototype](protoProto, ids, ancestors); + } + proto[_symbol_utils.$resolvePrototypes](ids, ancestors); + ancestors.delete(proto); + return proto; + } + [_applyPrototype](proto, ids, ancestors) { + if (ancestors.has(proto)) { + (0, _util.warn)(`XFA - Cycle detected in prototypes use.`); + return; + } + if (!this[_symbol_utils.$content] && proto[_symbol_utils.$content]) { + this[_symbol_utils.$content] = proto[_symbol_utils.$content]; + } + const newAncestors = new Set(ancestors); + newAncestors.add(proto); + for (const unsetAttrName of this[_getUnsetAttributes](proto[_setAttributes])) { + this[unsetAttrName] = proto[unsetAttrName]; + if (this[_setAttributes]) { + this[_setAttributes].add(unsetAttrName); + } + } + for (const name of Object.getOwnPropertyNames(this)) { + if (this[_attributeNames].has(name)) { + continue; + } + const value = this[name]; + const protoValue = proto[name]; + if (value instanceof XFAObjectArray) { + for (const child of value[_children]) { + child[_resolvePrototypesHelper](ids, ancestors); + } + for (let i = value[_children].length, ii = protoValue[_children].length; i < ii; i++) { + const child = proto[_children][i][_symbol_utils.$clone](); + if (value.push(child)) { + child[_parent] = this; + this[_children].push(child); + child[_resolvePrototypesHelper](ids, ancestors); + } else { + break; + } + } + continue; + } + if (value !== null) { + value[_symbol_utils.$resolvePrototypes](ids, ancestors); + if (protoValue) { + value[_applyPrototype](protoValue, ids, ancestors); + } + continue; + } + if (protoValue !== null) { + const child = protoValue[_symbol_utils.$clone](); + child[_parent] = this; + this[name] = child; + this[_children].push(child); + child[_resolvePrototypesHelper](ids, ancestors); + } + } + } + static [_cloneAttribute](obj) { + if (Array.isArray(obj)) { + return obj.map(x => XFAObject[_cloneAttribute](x)); + } + if (typeof obj === "object" && obj !== null) { + return Object.assign({}, obj); + } + return obj; + } + [_symbol_utils.$clone]() { + const clone = Object.create(Object.getPrototypeOf(this)); + for (const $symbol of Object.getOwnPropertySymbols(this)) { + try { + clone[$symbol] = this[$symbol]; + } catch { + (0, _util.shadow)(clone, $symbol, this[$symbol]); + } + } + clone[_symbol_utils.$uid] = `${clone[_symbol_utils.$nodeName]}${uid++}`; + clone[_children] = []; + for (const name of Object.getOwnPropertyNames(this)) { + if (this[_attributeNames].has(name)) { + clone[name] = XFAObject[_cloneAttribute](this[name]); + continue; + } + const value = this[name]; + if (value instanceof XFAObjectArray) { + clone[name] = new XFAObjectArray(value[_max]); + } else { + clone[name] = null; + } + } + for (const child of this[_children]) { + const name = child[_symbol_utils.$nodeName]; + const clonedChild = child[_symbol_utils.$clone](); + clone[_children].push(clonedChild); + clonedChild[_parent] = clone; + if (clone[name] === null) { + clone[name] = clonedChild; + } else { + clone[name][_children].push(clonedChild); + } + } + return clone; + } + [_symbol_utils.$getChildren](name = null) { + if (!name) { + return this[_children]; + } + return this[_children].filter(c => c[_symbol_utils.$nodeName] === name); + } + [_symbol_utils.$getChildrenByClass](name) { + return this[name]; + } + [_symbol_utils.$getChildrenByName](name, allTransparent, first = true) { + return Array.from(this[_symbol_utils.$getChildrenByNameIt](name, allTransparent, first)); + } + *[_symbol_utils.$getChildrenByNameIt](name, allTransparent, first = true) { + if (name === "parent") { + yield this[_parent]; + return; + } + for (const child of this[_children]) { + if (child[_symbol_utils.$nodeName] === name) { + yield child; + } + if (child.name === name) { + yield child; + } + if (allTransparent || child[_symbol_utils.$isTransparent]()) { + yield* child[_symbol_utils.$getChildrenByNameIt](name, allTransparent, false); + } + } + if (first && this[_attributeNames].has(name)) { + yield new XFAAttribute(this, name, this[name]); + } + } +} +exports.XFAObject = XFAObject; +class XFAObjectArray { + constructor(max = Infinity) { + this[_max] = max; + this[_children] = []; + } + get isXFAObject() { + return false; + } + get isXFAObjectArray() { + return true; + } + push(child) { + const len = this[_children].length; + if (len <= this[_max]) { + this[_children].push(child); + return true; + } + (0, _util.warn)(`XFA - node "${child[_symbol_utils.$nodeName]}" accepts no more than ${this[_max]} children`); + return false; + } + isEmpty() { + return this[_children].length === 0; + } + dump() { + return this[_children].length === 1 ? this[_children][0][_symbol_utils.$dump]() : this[_children].map(x => x[_symbol_utils.$dump]()); + } + [_symbol_utils.$clone]() { + const clone = new XFAObjectArray(this[_max]); + clone[_children] = this[_children].map(c => c[_symbol_utils.$clone]()); + return clone; + } + get children() { + return this[_children]; + } + clear() { + this[_children].length = 0; + } +} +exports.XFAObjectArray = XFAObjectArray; +class XFAAttribute { + constructor(node, name, value) { + this[_parent] = node; + this[_symbol_utils.$nodeName] = name; + this[_symbol_utils.$content] = value; + this[_symbol_utils.$consumed] = false; + this[_symbol_utils.$uid] = `attribute${uid++}`; + } + [_symbol_utils.$getParent]() { + return this[_parent]; + } + [_symbol_utils.$isDataValue]() { + return true; + } + [_symbol_utils.$getDataValue]() { + return this[_symbol_utils.$content].trim(); + } + [_symbol_utils.$setValue](value) { + value = value.value || ""; + this[_symbol_utils.$content] = value.toString(); + } + [_symbol_utils.$text]() { + return this[_symbol_utils.$content]; + } + [_symbol_utils.$isDescendent](parent) { + return this[_parent] === parent || this[_parent][_symbol_utils.$isDescendent](parent); + } +} +exports.XFAAttribute = XFAAttribute; +class XmlObject extends XFAObject { + constructor(nsId, name, attributes = {}) { + super(nsId, name); + this[_symbol_utils.$content] = ""; + this[_dataValue] = null; + if (name !== "#text") { + const map = new Map(); + this[_attributes] = map; + for (const [attrName, value] of Object.entries(attributes)) { + map.set(attrName, new XFAAttribute(this, attrName, value)); + } + if (attributes.hasOwnProperty(_symbol_utils.$nsAttributes)) { + const dataNode = attributes[_symbol_utils.$nsAttributes].xfa.dataNode; + if (dataNode !== undefined) { + if (dataNode === "dataGroup") { + this[_dataValue] = false; + } else if (dataNode === "dataValue") { + this[_dataValue] = true; + } + } + } + } + this[_symbol_utils.$consumed] = false; + } + [_symbol_utils.$toString](buf) { + const tagName = this[_symbol_utils.$nodeName]; + if (tagName === "#text") { + buf.push((0, _core_utils.encodeToXmlString)(this[_symbol_utils.$content])); + return; + } + const utf8TagName = (0, _util.utf8StringToString)(tagName); + const prefix = this[_symbol_utils.$namespaceId] === NS_DATASETS ? "xfa:" : ""; + buf.push(`<${prefix}${utf8TagName}`); + for (const [name, value] of this[_attributes].entries()) { + const utf8Name = (0, _util.utf8StringToString)(name); + buf.push(` ${utf8Name}="${(0, _core_utils.encodeToXmlString)(value[_symbol_utils.$content])}"`); + } + if (this[_dataValue] !== null) { + if (this[_dataValue]) { + buf.push(` xfa:dataNode="dataValue"`); + } else { + buf.push(` xfa:dataNode="dataGroup"`); + } + } + if (!this[_symbol_utils.$content] && this[_children].length === 0) { + buf.push("/>"); + return; + } + buf.push(">"); + if (this[_symbol_utils.$content]) { + if (typeof this[_symbol_utils.$content] === "string") { + buf.push((0, _core_utils.encodeToXmlString)(this[_symbol_utils.$content])); + } else { + this[_symbol_utils.$content][_symbol_utils.$toString](buf); + } + } else { + for (const child of this[_children]) { + child[_symbol_utils.$toString](buf); + } + } + buf.push(``); + } + [_symbol_utils.$onChild](child) { + if (this[_symbol_utils.$content]) { + const node = new XmlObject(this[_symbol_utils.$namespaceId], "#text"); + this[_symbol_utils.$appendChild](node); + node[_symbol_utils.$content] = this[_symbol_utils.$content]; + this[_symbol_utils.$content] = ""; + } + this[_symbol_utils.$appendChild](child); + return true; + } + [_symbol_utils.$onText](str) { + this[_symbol_utils.$content] += str; + } + [_symbol_utils.$finalize]() { + if (this[_symbol_utils.$content] && this[_children].length > 0) { + const node = new XmlObject(this[_symbol_utils.$namespaceId], "#text"); + this[_symbol_utils.$appendChild](node); + node[_symbol_utils.$content] = this[_symbol_utils.$content]; + delete this[_symbol_utils.$content]; + } + } + [_symbol_utils.$toHTML]() { + if (this[_symbol_utils.$nodeName] === "#text") { + return _utils.HTMLResult.success({ + name: "#text", + value: this[_symbol_utils.$content] + }); + } + return _utils.HTMLResult.EMPTY; + } + [_symbol_utils.$getChildren](name = null) { + if (!name) { + return this[_children]; + } + return this[_children].filter(c => c[_symbol_utils.$nodeName] === name); + } + [_symbol_utils.$getAttributes]() { + return this[_attributes]; + } + [_symbol_utils.$getChildrenByClass](name) { + const value = this[_attributes].get(name); + if (value !== undefined) { + return value; + } + return this[_symbol_utils.$getChildren](name); + } + *[_symbol_utils.$getChildrenByNameIt](name, allTransparent) { + const value = this[_attributes].get(name); + if (value) { + yield value; + } + for (const child of this[_children]) { + if (child[_symbol_utils.$nodeName] === name) { + yield child; + } + if (allTransparent) { + yield* child[_symbol_utils.$getChildrenByNameIt](name, allTransparent); + } + } + } + *[_symbol_utils.$getAttributeIt](name, skipConsumed) { + const value = this[_attributes].get(name); + if (value && (!skipConsumed || !value[_symbol_utils.$consumed])) { + yield value; + } + for (const child of this[_children]) { + yield* child[_symbol_utils.$getAttributeIt](name, skipConsumed); + } + } + *[_symbol_utils.$getRealChildrenByNameIt](name, allTransparent, skipConsumed) { + for (const child of this[_children]) { + if (child[_symbol_utils.$nodeName] === name && (!skipConsumed || !child[_symbol_utils.$consumed])) { + yield child; + } + if (allTransparent) { + yield* child[_symbol_utils.$getRealChildrenByNameIt](name, allTransparent, skipConsumed); + } + } + } + [_symbol_utils.$isDataValue]() { + if (this[_dataValue] === null) { + return this[_children].length === 0 || this[_children][0][_symbol_utils.$namespaceId] === _namespaces.NamespaceIds.xhtml.id; + } + return this[_dataValue]; + } + [_symbol_utils.$getDataValue]() { + if (this[_dataValue] === null) { + if (this[_children].length === 0) { + return this[_symbol_utils.$content].trim(); + } + if (this[_children][0][_symbol_utils.$namespaceId] === _namespaces.NamespaceIds.xhtml.id) { + return this[_children][0][_symbol_utils.$text]().trim(); + } + return null; + } + return this[_symbol_utils.$content].trim(); + } + [_symbol_utils.$setValue](value) { + value = value.value || ""; + this[_symbol_utils.$content] = value.toString(); + } + [_symbol_utils.$dump](hasNS = false) { + const dumped = Object.create(null); + if (hasNS) { + dumped.$ns = this[_symbol_utils.$namespaceId]; + } + if (this[_symbol_utils.$content]) { + dumped.$content = this[_symbol_utils.$content]; + } + dumped.$name = this[_symbol_utils.$nodeName]; + dumped.children = []; + for (const child of this[_children]) { + dumped.children.push(child[_symbol_utils.$dump](hasNS)); + } + dumped.attributes = Object.create(null); + for (const [name, value] of this[_attributes]) { + dumped.attributes[name] = value[_symbol_utils.$content]; + } + return dumped; + } +} +exports.XmlObject = XmlObject; +class ContentObject extends XFAObject { + constructor(nsId, name) { + super(nsId, name); + this[_symbol_utils.$content] = ""; + } + [_symbol_utils.$onText](text) { + this[_symbol_utils.$content] += text; + } + [_symbol_utils.$finalize]() {} +} +exports.ContentObject = ContentObject; +class OptionObject extends ContentObject { + constructor(nsId, name, options) { + super(nsId, name); + this[_options] = options; + } + [_symbol_utils.$finalize]() { + this[_symbol_utils.$content] = (0, _utils.getKeyword)({ + data: this[_symbol_utils.$content], + defaultValue: this[_options][0], + validate: k => this[_options].includes(k) + }); + } + [_symbol_utils.$clean](builder) { + super[_symbol_utils.$clean](builder); + delete this[_options]; + } +} +exports.OptionObject = OptionObject; +class StringObject extends ContentObject { + [_symbol_utils.$finalize]() { + this[_symbol_utils.$content] = this[_symbol_utils.$content].trim(); + } +} +exports.StringObject = StringObject; +class IntegerObject extends ContentObject { + constructor(nsId, name, defaultValue, validator) { + super(nsId, name); + this[_defaultValue] = defaultValue; + this[_validator] = validator; + } + [_symbol_utils.$finalize]() { + this[_symbol_utils.$content] = (0, _utils.getInteger)({ + data: this[_symbol_utils.$content], + defaultValue: this[_defaultValue], + validate: this[_validator] + }); + } + [_symbol_utils.$clean](builder) { + super[_symbol_utils.$clean](builder); + delete this[_defaultValue]; + delete this[_validator]; + } +} +exports.IntegerObject = IntegerObject; +class Option01 extends IntegerObject { + constructor(nsId, name) { + super(nsId, name, 0, n => n === 1); + } +} +exports.Option01 = Option01; +class Option10 extends IntegerObject { + constructor(nsId, name) { + super(nsId, name, 1, n => n === 0); + } +} +exports.Option10 = Option10; + +/***/ }), +/* 88 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.createDataNode = createDataNode; +exports.searchNode = searchNode; +var _symbol_utils = __w_pdfjs_require__(78); +var _util = __w_pdfjs_require__(2); +const namePattern = /^[^.[]+/; +const indexPattern = /^[^\]]+/; +const operators = { + dot: 0, + dotDot: 1, + dotHash: 2, + dotBracket: 3, + dotParen: 4 +}; +const shortcuts = new Map([["$data", (root, current) => root.datasets ? root.datasets.data : root], ["$record", (root, current) => (root.datasets ? root.datasets.data : root)[_symbol_utils.$getChildren]()[0]], ["$template", (root, current) => root.template], ["$connectionSet", (root, current) => root.connectionSet], ["$form", (root, current) => root.form], ["$layout", (root, current) => root.layout], ["$host", (root, current) => root.host], ["$dataWindow", (root, current) => root.dataWindow], ["$event", (root, current) => root.event], ["!", (root, current) => root.datasets], ["$xfa", (root, current) => root], ["xfa", (root, current) => root], ["$", (root, current) => current]]); +const somCache = new WeakMap(); +function parseIndex(index) { + index = index.trim(); + if (index === "*") { + return Infinity; + } + return parseInt(index, 10) || 0; +} +function parseExpression(expr, dotDotAllowed, noExpr = true) { + let match = expr.match(namePattern); + if (!match) { + return null; + } + let [name] = match; + const parsed = [{ + name, + cacheName: "." + name, + index: 0, + js: null, + formCalc: null, + operator: operators.dot + }]; + let pos = name.length; + while (pos < expr.length) { + const spos = pos; + const char = expr.charAt(pos++); + if (char === "[") { + match = expr.slice(pos).match(indexPattern); + if (!match) { + (0, _util.warn)("XFA - Invalid index in SOM expression"); + return null; + } + parsed.at(-1).index = parseIndex(match[0]); + pos += match[0].length + 1; + continue; + } + let operator; + switch (expr.charAt(pos)) { + case ".": + if (!dotDotAllowed) { + return null; + } + pos++; + operator = operators.dotDot; + break; + case "#": + pos++; + operator = operators.dotHash; + break; + case "[": + if (noExpr) { + (0, _util.warn)("XFA - SOM expression contains a FormCalc subexpression which is not supported for now."); + return null; + } + operator = operators.dotBracket; + break; + case "(": + if (noExpr) { + (0, _util.warn)("XFA - SOM expression contains a JavaScript subexpression which is not supported for now."); + return null; + } + operator = operators.dotParen; + break; + default: + operator = operators.dot; + break; + } + match = expr.slice(pos).match(namePattern); + if (!match) { + break; + } + [name] = match; + pos += name.length; + parsed.push({ + name, + cacheName: expr.slice(spos, pos), + operator, + index: 0, + js: null, + formCalc: null + }); + } + return parsed; +} +function searchNode(root, container, expr, dotDotAllowed = true, useCache = true) { + const parsed = parseExpression(expr, dotDotAllowed); + if (!parsed) { + return null; + } + const fn = shortcuts.get(parsed[0].name); + let i = 0; + let isQualified; + if (fn) { + isQualified = true; + root = [fn(root, container)]; + i = 1; + } else { + isQualified = container === null; + root = [container || root]; + } + for (let ii = parsed.length; i < ii; i++) { + const { + name, + cacheName, + operator, + index + } = parsed[i]; + const nodes = []; + for (const node of root) { + if (!node.isXFAObject) { + continue; + } + let children, cached; + if (useCache) { + cached = somCache.get(node); + if (!cached) { + cached = new Map(); + somCache.set(node, cached); + } + children = cached.get(cacheName); + } + if (!children) { + switch (operator) { + case operators.dot: + children = node[_symbol_utils.$getChildrenByName](name, false); + break; + case operators.dotDot: + children = node[_symbol_utils.$getChildrenByName](name, true); + break; + case operators.dotHash: + children = node[_symbol_utils.$getChildrenByClass](name); + if (children.isXFAObjectArray) { + children = children.children; + } else { + children = [children]; + } + break; + default: + break; + } + if (useCache) { + cached.set(cacheName, children); + } + } + if (children.length > 0) { + nodes.push(children); + } + } + if (nodes.length === 0 && !isQualified && i === 0) { + const parent = container[_symbol_utils.$getParent](); + container = parent; + if (!container) { + return null; + } + i = -1; + root = [container]; + continue; + } + if (isFinite(index)) { + root = nodes.filter(node => index < node.length).map(node => node[index]); + } else { + root = nodes.flat(); + } + } + if (root.length === 0) { + return null; + } + return root; +} +function createDataNode(root, container, expr) { + const parsed = parseExpression(expr); + if (!parsed) { + return null; + } + if (parsed.some(x => x.operator === operators.dotDot)) { + return null; + } + const fn = shortcuts.get(parsed[0].name); + let i = 0; + if (fn) { + root = fn(root, container); + i = 1; + } else { + root = container || root; + } + for (let ii = parsed.length; i < ii; i++) { + const { + name, + operator, + index + } = parsed[i]; + if (!isFinite(index)) { + parsed[i].index = 0; + return root.createNodes(parsed.slice(i)); + } + let children; + switch (operator) { + case operators.dot: + children = root[_symbol_utils.$getChildrenByName](name, false); + break; + case operators.dotDot: + children = root[_symbol_utils.$getChildrenByName](name, true); + break; + case operators.dotHash: + children = root[_symbol_utils.$getChildrenByClass](name); + if (children.isXFAObjectArray) { + children = children.children; + } else { + children = [children]; + } + break; + default: + break; + } + if (children.length === 0) { + return root.createNodes(parsed.slice(i)); + } + if (index < children.length) { + const child = children[index]; + if (!child.isXFAObject) { + (0, _util.warn)(`XFA - Cannot create a node.`); + return null; + } + root = child; + } else { + parsed[i].index = index - children.length; + return root.createNodes(parsed.slice(i)); + } + } + return null; +} + +/***/ }), +/* 89 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.DataHandler = void 0; +var _symbol_utils = __w_pdfjs_require__(78); +class DataHandler { + constructor(root, data) { + this.data = data; + this.dataset = root.datasets || null; + } + serialize(storage) { + const stack = [[-1, this.data[_symbol_utils.$getChildren]()]]; + while (stack.length > 0) { + const last = stack.at(-1); + const [i, children] = last; + if (i + 1 === children.length) { + stack.pop(); + continue; + } + const child = children[++last[0]]; + const storageEntry = storage.get(child[_symbol_utils.$uid]); + if (storageEntry) { + child[_symbol_utils.$setValue](storageEntry); + } else { + const attributes = child[_symbol_utils.$getAttributes](); + for (const value of attributes.values()) { + const entry = storage.get(value[_symbol_utils.$uid]); + if (entry) { + value[_symbol_utils.$setValue](entry); + break; + } + } + } + const nodes = child[_symbol_utils.$getChildren](); + if (nodes.length > 0) { + stack.push([-1, nodes]); + } + } + const buf = [``]; + if (this.dataset) { + for (const child of this.dataset[_symbol_utils.$getChildren]()) { + if (child[_symbol_utils.$nodeName] !== "data") { + child[_symbol_utils.$toString](buf); + } + } + } + this.data[_symbol_utils.$toString](buf); + buf.push(""); + return buf.join(""); + } +} +exports.DataHandler = DataHandler; + +/***/ }), +/* 90 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XFAParser = void 0; +var _symbol_utils = __w_pdfjs_require__(78); +var _xml_parser = __w_pdfjs_require__(67); +var _builder = __w_pdfjs_require__(91); +var _util = __w_pdfjs_require__(2); +class XFAParser extends _xml_parser.XMLParserBase { + constructor(rootNameSpace = null, richText = false) { + super(); + this._builder = new _builder.Builder(rootNameSpace); + this._stack = []; + this._globalData = { + usedTypefaces: new Set() + }; + this._ids = new Map(); + this._current = this._builder.buildRoot(this._ids); + this._errorCode = _xml_parser.XMLParserErrorCode.NoError; + this._whiteRegex = /^\s+$/; + this._nbsps = /\xa0+/g; + this._richText = richText; + } + parse(data) { + this.parseXml(data); + if (this._errorCode !== _xml_parser.XMLParserErrorCode.NoError) { + return undefined; + } + this._current[_symbol_utils.$finalize](); + return this._current.element; + } + onText(text) { + text = text.replace(this._nbsps, match => match.slice(1) + " "); + if (this._richText || this._current[_symbol_utils.$acceptWhitespace]()) { + this._current[_symbol_utils.$onText](text, this._richText); + return; + } + if (this._whiteRegex.test(text)) { + return; + } + this._current[_symbol_utils.$onText](text.trim()); + } + onCdata(text) { + this._current[_symbol_utils.$onText](text); + } + _mkAttributes(attributes, tagName) { + let namespace = null; + let prefixes = null; + const attributeObj = Object.create({}); + for (const { + name, + value + } of attributes) { + if (name === "xmlns") { + if (!namespace) { + namespace = value; + } else { + (0, _util.warn)(`XFA - multiple namespace definition in <${tagName}>`); + } + } else if (name.startsWith("xmlns:")) { + const prefix = name.substring("xmlns:".length); + if (!prefixes) { + prefixes = []; + } + prefixes.push({ + prefix, + value + }); + } else { + const i = name.indexOf(":"); + if (i === -1) { + attributeObj[name] = value; + } else { + let nsAttrs = attributeObj[_symbol_utils.$nsAttributes]; + if (!nsAttrs) { + nsAttrs = attributeObj[_symbol_utils.$nsAttributes] = Object.create(null); + } + const [ns, attrName] = [name.slice(0, i), name.slice(i + 1)]; + const attrs = nsAttrs[ns] ||= Object.create(null); + attrs[attrName] = value; + } + } + } + return [namespace, prefixes, attributeObj]; + } + _getNameAndPrefix(name, nsAgnostic) { + const i = name.indexOf(":"); + if (i === -1) { + return [name, null]; + } + return [name.substring(i + 1), nsAgnostic ? "" : name.substring(0, i)]; + } + onBeginElement(tagName, attributes, isEmpty) { + const [namespace, prefixes, attributesObj] = this._mkAttributes(attributes, tagName); + const [name, nsPrefix] = this._getNameAndPrefix(tagName, this._builder.isNsAgnostic()); + const node = this._builder.build({ + nsPrefix, + name, + attributes: attributesObj, + namespace, + prefixes + }); + node[_symbol_utils.$globalData] = this._globalData; + if (isEmpty) { + node[_symbol_utils.$finalize](); + if (this._current[_symbol_utils.$onChild](node)) { + node[_symbol_utils.$setId](this._ids); + } + node[_symbol_utils.$clean](this._builder); + return; + } + this._stack.push(this._current); + this._current = node; + } + onEndElement(name) { + const node = this._current; + if (node[_symbol_utils.$isCDATAXml]() && typeof node[_symbol_utils.$content] === "string") { + const parser = new XFAParser(); + parser._globalData = this._globalData; + const root = parser.parse(node[_symbol_utils.$content]); + node[_symbol_utils.$content] = null; + node[_symbol_utils.$onChild](root); + } + node[_symbol_utils.$finalize](); + this._current = this._stack.pop(); + if (this._current[_symbol_utils.$onChild](node)) { + node[_symbol_utils.$setId](this._ids); + } + node[_symbol_utils.$clean](this._builder); + } + onError(code) { + this._errorCode = code; + } +} +exports.XFAParser = XFAParser; + +/***/ }), +/* 91 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Builder = void 0; +var _namespaces = __w_pdfjs_require__(81); +var _symbol_utils = __w_pdfjs_require__(78); +var _setup = __w_pdfjs_require__(92); +var _template = __w_pdfjs_require__(80); +var _unknown = __w_pdfjs_require__(101); +var _util = __w_pdfjs_require__(2); +var _xfa_object = __w_pdfjs_require__(87); +class Root extends _xfa_object.XFAObject { + constructor(ids) { + super(-1, "root", Object.create(null)); + this.element = null; + this[_symbol_utils.$ids] = ids; + } + [_symbol_utils.$onChild](child) { + this.element = child; + return true; + } + [_symbol_utils.$finalize]() { + super[_symbol_utils.$finalize](); + if (this.element.template instanceof _template.Template) { + this[_symbol_utils.$ids].set(_symbol_utils.$root, this.element); + this.element.template[_symbol_utils.$resolvePrototypes](this[_symbol_utils.$ids]); + this.element.template[_symbol_utils.$ids] = this[_symbol_utils.$ids]; + } + } +} +class Empty extends _xfa_object.XFAObject { + constructor() { + super(-1, "", Object.create(null)); + } + [_symbol_utils.$onChild](_) { + return false; + } +} +class Builder { + constructor(rootNameSpace = null) { + this._namespaceStack = []; + this._nsAgnosticLevel = 0; + this._namespacePrefixes = new Map(); + this._namespaces = new Map(); + this._nextNsId = Math.max(...Object.values(_namespaces.NamespaceIds).map(({ + id + }) => id)); + this._currentNamespace = rootNameSpace || new _unknown.UnknownNamespace(++this._nextNsId); + } + buildRoot(ids) { + return new Root(ids); + } + build({ + nsPrefix, + name, + attributes, + namespace, + prefixes + }) { + const hasNamespaceDef = namespace !== null; + if (hasNamespaceDef) { + this._namespaceStack.push(this._currentNamespace); + this._currentNamespace = this._searchNamespace(namespace); + } + if (prefixes) { + this._addNamespacePrefix(prefixes); + } + if (attributes.hasOwnProperty(_symbol_utils.$nsAttributes)) { + const dataTemplate = _setup.NamespaceSetUp.datasets; + const nsAttrs = attributes[_symbol_utils.$nsAttributes]; + let xfaAttrs = null; + for (const [ns, attrs] of Object.entries(nsAttrs)) { + const nsToUse = this._getNamespaceToUse(ns); + if (nsToUse === dataTemplate) { + xfaAttrs = { + xfa: attrs + }; + break; + } + } + if (xfaAttrs) { + attributes[_symbol_utils.$nsAttributes] = xfaAttrs; + } else { + delete attributes[_symbol_utils.$nsAttributes]; + } + } + const namespaceToUse = this._getNamespaceToUse(nsPrefix); + const node = namespaceToUse?.[_namespaces.$buildXFAObject](name, attributes) || new Empty(); + if (node[_symbol_utils.$isNsAgnostic]()) { + this._nsAgnosticLevel++; + } + if (hasNamespaceDef || prefixes || node[_symbol_utils.$isNsAgnostic]()) { + node[_symbol_utils.$cleanup] = { + hasNamespace: hasNamespaceDef, + prefixes, + nsAgnostic: node[_symbol_utils.$isNsAgnostic]() + }; + } + return node; + } + isNsAgnostic() { + return this._nsAgnosticLevel > 0; + } + _searchNamespace(nsName) { + let ns = this._namespaces.get(nsName); + if (ns) { + return ns; + } + for (const [name, { + check + }] of Object.entries(_namespaces.NamespaceIds)) { + if (check(nsName)) { + ns = _setup.NamespaceSetUp[name]; + if (ns) { + this._namespaces.set(nsName, ns); + return ns; + } + break; + } + } + ns = new _unknown.UnknownNamespace(++this._nextNsId); + this._namespaces.set(nsName, ns); + return ns; + } + _addNamespacePrefix(prefixes) { + for (const { + prefix, + value + } of prefixes) { + const namespace = this._searchNamespace(value); + let prefixStack = this._namespacePrefixes.get(prefix); + if (!prefixStack) { + prefixStack = []; + this._namespacePrefixes.set(prefix, prefixStack); + } + prefixStack.push(namespace); + } + } + _getNamespaceToUse(prefix) { + if (!prefix) { + return this._currentNamespace; + } + const prefixStack = this._namespacePrefixes.get(prefix); + if (prefixStack?.length > 0) { + return prefixStack.at(-1); + } + (0, _util.warn)(`Unknown namespace prefix: ${prefix}.`); + return null; + } + clean(data) { + const { + hasNamespace, + prefixes, + nsAgnostic + } = data; + if (hasNamespace) { + this._currentNamespace = this._namespaceStack.pop(); + } + if (prefixes) { + prefixes.forEach(({ + prefix + }) => { + this._namespacePrefixes.get(prefix).pop(); + }); + } + if (nsAgnostic) { + this._nsAgnosticLevel--; + } + } +} +exports.Builder = Builder; + +/***/ }), +/* 92 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.NamespaceSetUp = void 0; +var _config = __w_pdfjs_require__(93); +var _connection_set = __w_pdfjs_require__(94); +var _datasets = __w_pdfjs_require__(95); +var _locale_set = __w_pdfjs_require__(96); +var _signature = __w_pdfjs_require__(97); +var _stylesheet = __w_pdfjs_require__(98); +var _template = __w_pdfjs_require__(80); +var _xdp = __w_pdfjs_require__(99); +var _xhtml = __w_pdfjs_require__(100); +const NamespaceSetUp = { + config: _config.ConfigNamespace, + connection: _connection_set.ConnectionSetNamespace, + datasets: _datasets.DatasetsNamespace, + localeSet: _locale_set.LocaleSetNamespace, + signature: _signature.SignatureNamespace, + stylesheet: _stylesheet.StylesheetNamespace, + template: _template.TemplateNamespace, + xdp: _xdp.XdpNamespace, + xhtml: _xhtml.XhtmlNamespace +}; +exports.NamespaceSetUp = NamespaceSetUp; + +/***/ }), +/* 93 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ConfigNamespace = void 0; +var _namespaces = __w_pdfjs_require__(81); +var _symbol_utils = __w_pdfjs_require__(78); +var _xfa_object = __w_pdfjs_require__(87); +var _utils = __w_pdfjs_require__(84); +var _util = __w_pdfjs_require__(2); +const CONFIG_NS_ID = _namespaces.NamespaceIds.config.id; +class Acrobat extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "acrobat", true); + this.acrobat7 = null; + this.autoSave = null; + this.common = null; + this.validate = null; + this.validateApprovalSignatures = null; + this.submitUrl = new _xfa_object.XFAObjectArray(); + } +} +class Acrobat7 extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "acrobat7", true); + this.dynamicRender = null; + } +} +class ADBE_JSConsole extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "ADBE_JSConsole", ["delegate", "Enable", "Disable"]); + } +} +class ADBE_JSDebugger extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "ADBE_JSDebugger", ["delegate", "Enable", "Disable"]); + } +} +class AddSilentPrint extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "addSilentPrint"); + } +} +class AddViewerPreferences extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "addViewerPreferences"); + } +} +class AdjustData extends _xfa_object.Option10 { + constructor(attributes) { + super(CONFIG_NS_ID, "adjustData"); + } +} +class AdobeExtensionLevel extends _xfa_object.IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "adobeExtensionLevel", 0, n => n >= 1 && n <= 8); + } +} +class Agent extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "agent", true); + this.name = attributes.name ? attributes.name.trim() : ""; + this.common = new _xfa_object.XFAObjectArray(); + } +} +class AlwaysEmbed extends _xfa_object.ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "alwaysEmbed"); + } +} +class Amd extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "amd"); + } +} +class Area extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "area"); + this.level = (0, _utils.getInteger)({ + data: attributes.level, + defaultValue: 0, + validate: n => n >= 1 && n <= 3 + }); + this.name = (0, _utils.getStringOption)(attributes.name, ["", "barcode", "coreinit", "deviceDriver", "font", "general", "layout", "merge", "script", "signature", "sourceSet", "templateCache"]); + } +} +class Attributes extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "attributes", ["preserve", "delegate", "ignore"]); + } +} +class AutoSave extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "autoSave", ["disabled", "enabled"]); + } +} +class Base extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "base"); + } +} +class BatchOutput extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "batchOutput"); + this.format = (0, _utils.getStringOption)(attributes.format, ["none", "concat", "zip", "zipCompress"]); + } +} +class BehaviorOverride extends _xfa_object.ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "behaviorOverride"); + } + [_symbol_utils.$finalize]() { + this[_symbol_utils.$content] = new Map(this[_symbol_utils.$content].trim().split(/\s+/).filter(x => x.includes(":")).map(x => x.split(":", 2))); + } +} +class Cache extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "cache", true); + this.templateCache = null; + } +} +class Change extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "change"); + } +} +class Common extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "common", true); + this.data = null; + this.locale = null; + this.localeSet = null; + this.messaging = null; + this.suppressBanner = null; + this.template = null; + this.validationMessaging = null; + this.versionControl = null; + this.log = new _xfa_object.XFAObjectArray(); + } +} +class Compress extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "compress"); + this.scope = (0, _utils.getStringOption)(attributes.scope, ["imageOnly", "document"]); + } +} +class CompressLogicalStructure extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "compressLogicalStructure"); + } +} +class CompressObjectStream extends _xfa_object.Option10 { + constructor(attributes) { + super(CONFIG_NS_ID, "compressObjectStream"); + } +} +class Compression extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "compression", true); + this.compressLogicalStructure = null; + this.compressObjectStream = null; + this.level = null; + this.type = null; + } +} +class Config extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "config", true); + this.acrobat = null; + this.present = null; + this.trace = null; + this.agent = new _xfa_object.XFAObjectArray(); + } +} +class Conformance extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "conformance", ["A", "B"]); + } +} +class ContentCopy extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "contentCopy"); + } +} +class Copies extends _xfa_object.IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "copies", 1, n => n >= 1); + } +} +class Creator extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "creator"); + } +} +class CurrentPage extends _xfa_object.IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "currentPage", 0, n => n >= 0); + } +} +class Data extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "data", true); + this.adjustData = null; + this.attributes = null; + this.incrementalLoad = null; + this.outputXSL = null; + this.range = null; + this.record = null; + this.startNode = null; + this.uri = null; + this.window = null; + this.xsl = null; + this.excludeNS = new _xfa_object.XFAObjectArray(); + this.transform = new _xfa_object.XFAObjectArray(); + } +} +class Debug extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "debug", true); + this.uri = null; + } +} +class DefaultTypeface extends _xfa_object.ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "defaultTypeface"); + this.writingScript = (0, _utils.getStringOption)(attributes.writingScript, ["*", "Arabic", "Cyrillic", "EastEuropeanRoman", "Greek", "Hebrew", "Japanese", "Korean", "Roman", "SimplifiedChinese", "Thai", "TraditionalChinese", "Vietnamese"]); + } +} +class Destination extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "destination", ["pdf", "pcl", "ps", "webClient", "zpl"]); + } +} +class DocumentAssembly extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "documentAssembly"); + } +} +class Driver extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "driver", true); + this.name = attributes.name ? attributes.name.trim() : ""; + this.fontInfo = null; + this.xdc = null; + } +} +class DuplexOption extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "duplexOption", ["simplex", "duplexFlipLongEdge", "duplexFlipShortEdge"]); + } +} +class DynamicRender extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "dynamicRender", ["forbidden", "required"]); + } +} +class Embed extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "embed"); + } +} +class Encrypt extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "encrypt"); + } +} +class Encryption extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "encryption", true); + this.encrypt = null; + this.encryptionLevel = null; + this.permissions = null; + } +} +class EncryptionLevel extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "encryptionLevel", ["40bit", "128bit"]); + } +} +class Enforce extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "enforce"); + } +} +class Equate extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "equate"); + this.force = (0, _utils.getInteger)({ + data: attributes.force, + defaultValue: 1, + validate: n => n === 0 + }); + this.from = attributes.from || ""; + this.to = attributes.to || ""; + } +} +class EquateRange extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "equateRange"); + this.from = attributes.from || ""; + this.to = attributes.to || ""; + this._unicodeRange = attributes.unicodeRange || ""; + } + get unicodeRange() { + const ranges = []; + const unicodeRegex = /U\+([0-9a-fA-F]+)/; + const unicodeRange = this._unicodeRange; + for (let range of unicodeRange.split(",").map(x => x.trim()).filter(x => !!x)) { + range = range.split("-", 2).map(x => { + const found = x.match(unicodeRegex); + if (!found) { + return 0; + } + return parseInt(found[1], 16); + }); + if (range.length === 1) { + range.push(range[0]); + } + ranges.push(range); + } + return (0, _util.shadow)(this, "unicodeRange", ranges); + } +} +class Exclude extends _xfa_object.ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "exclude"); + } + [_symbol_utils.$finalize]() { + this[_symbol_utils.$content] = this[_symbol_utils.$content].trim().split(/\s+/).filter(x => x && ["calculate", "close", "enter", "exit", "initialize", "ready", "validate"].includes(x)); + } +} +class ExcludeNS extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "excludeNS"); + } +} +class FlipLabel extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "flipLabel", ["usePrinterSetting", "on", "off"]); + } +} +class FontInfo extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "fontInfo", true); + this.embed = null; + this.map = null; + this.subsetBelow = null; + this.alwaysEmbed = new _xfa_object.XFAObjectArray(); + this.defaultTypeface = new _xfa_object.XFAObjectArray(); + this.neverEmbed = new _xfa_object.XFAObjectArray(); + } +} +class FormFieldFilling extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "formFieldFilling"); + } +} +class GroupParent extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "groupParent"); + } +} +class IfEmpty extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "ifEmpty", ["dataValue", "dataGroup", "ignore", "remove"]); + } +} +class IncludeXDPContent extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "includeXDPContent"); + } +} +class IncrementalLoad extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "incrementalLoad", ["none", "forwardOnly"]); + } +} +class IncrementalMerge extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "incrementalMerge"); + } +} +class Interactive extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "interactive"); + } +} +class Jog extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "jog", ["usePrinterSetting", "none", "pageSet"]); + } +} +class LabelPrinter extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "labelPrinter", true); + this.name = (0, _utils.getStringOption)(attributes.name, ["zpl", "dpl", "ipl", "tcpl"]); + this.batchOutput = null; + this.flipLabel = null; + this.fontInfo = null; + this.xdc = null; + } +} +class Layout extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "layout", ["paginate", "panel"]); + } +} +class Level extends _xfa_object.IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "level", 0, n => n > 0); + } +} +class Linearized extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "linearized"); + } +} +class Locale extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "locale"); + } +} +class LocaleSet extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "localeSet"); + } +} +class Log extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "log", true); + this.mode = null; + this.threshold = null; + this.to = null; + this.uri = null; + } +} +class MapElement extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "map", true); + this.equate = new _xfa_object.XFAObjectArray(); + this.equateRange = new _xfa_object.XFAObjectArray(); + } +} +class MediumInfo extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "mediumInfo", true); + this.map = null; + } +} +class Message extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "message", true); + this.msgId = null; + this.severity = null; + } +} +class Messaging extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "messaging", true); + this.message = new _xfa_object.XFAObjectArray(); + } +} +class Mode extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "mode", ["append", "overwrite"]); + } +} +class ModifyAnnots extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "modifyAnnots"); + } +} +class MsgId extends _xfa_object.IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "msgId", 1, n => n >= 1); + } +} +class NameAttr extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "nameAttr"); + } +} +class NeverEmbed extends _xfa_object.ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "neverEmbed"); + } +} +class NumberOfCopies extends _xfa_object.IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "numberOfCopies", null, n => n >= 2 && n <= 5); + } +} +class OpenAction extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "openAction", true); + this.destination = null; + } +} +class Output extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "output", true); + this.to = null; + this.type = null; + this.uri = null; + } +} +class OutputBin extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "outputBin"); + } +} +class OutputXSL extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "outputXSL", true); + this.uri = null; + } +} +class Overprint extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "overprint", ["none", "both", "draw", "field"]); + } +} +class Packets extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "packets"); + } + [_symbol_utils.$finalize]() { + if (this[_symbol_utils.$content] === "*") { + return; + } + this[_symbol_utils.$content] = this[_symbol_utils.$content].trim().split(/\s+/).filter(x => ["config", "datasets", "template", "xfdf", "xslt"].includes(x)); + } +} +class PageOffset extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "pageOffset"); + this.x = (0, _utils.getInteger)({ + data: attributes.x, + defaultValue: "useXDCSetting", + validate: n => true + }); + this.y = (0, _utils.getInteger)({ + data: attributes.y, + defaultValue: "useXDCSetting", + validate: n => true + }); + } +} +class PageRange extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "pageRange"); + } + [_symbol_utils.$finalize]() { + const numbers = this[_symbol_utils.$content].trim().split(/\s+/).map(x => parseInt(x, 10)); + const ranges = []; + for (let i = 0, ii = numbers.length; i < ii; i += 2) { + ranges.push(numbers.slice(i, i + 2)); + } + this[_symbol_utils.$content] = ranges; + } +} +class Pagination extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "pagination", ["simplex", "duplexShortEdge", "duplexLongEdge"]); + } +} +class PaginationOverride extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "paginationOverride", ["none", "forceDuplex", "forceDuplexLongEdge", "forceDuplexShortEdge", "forceSimplex"]); + } +} +class Part extends _xfa_object.IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "part", 1, n => false); + } +} +class Pcl extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "pcl", true); + this.name = attributes.name || ""; + this.batchOutput = null; + this.fontInfo = null; + this.jog = null; + this.mediumInfo = null; + this.outputBin = null; + this.pageOffset = null; + this.staple = null; + this.xdc = null; + } +} +class Pdf extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "pdf", true); + this.name = attributes.name || ""; + this.adobeExtensionLevel = null; + this.batchOutput = null; + this.compression = null; + this.creator = null; + this.encryption = null; + this.fontInfo = null; + this.interactive = null; + this.linearized = null; + this.openAction = null; + this.pdfa = null; + this.producer = null; + this.renderPolicy = null; + this.scriptModel = null; + this.silentPrint = null; + this.submitFormat = null; + this.tagged = null; + this.version = null; + this.viewerPreferences = null; + this.xdc = null; + } +} +class Pdfa extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "pdfa", true); + this.amd = null; + this.conformance = null; + this.includeXDPContent = null; + this.part = null; + } +} +class Permissions extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "permissions", true); + this.accessibleContent = null; + this.change = null; + this.contentCopy = null; + this.documentAssembly = null; + this.formFieldFilling = null; + this.modifyAnnots = null; + this.plaintextMetadata = null; + this.print = null; + this.printHighQuality = null; + } +} +class PickTrayByPDFSize extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "pickTrayByPDFSize"); + } +} +class Picture extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "picture"); + } +} +class PlaintextMetadata extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "plaintextMetadata"); + } +} +class Presence extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "presence", ["preserve", "dissolve", "dissolveStructure", "ignore", "remove"]); + } +} +class Present extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "present", true); + this.behaviorOverride = null; + this.cache = null; + this.common = null; + this.copies = null; + this.destination = null; + this.incrementalMerge = null; + this.layout = null; + this.output = null; + this.overprint = null; + this.pagination = null; + this.paginationOverride = null; + this.script = null; + this.validate = null; + this.xdp = null; + this.driver = new _xfa_object.XFAObjectArray(); + this.labelPrinter = new _xfa_object.XFAObjectArray(); + this.pcl = new _xfa_object.XFAObjectArray(); + this.pdf = new _xfa_object.XFAObjectArray(); + this.ps = new _xfa_object.XFAObjectArray(); + this.submitUrl = new _xfa_object.XFAObjectArray(); + this.webClient = new _xfa_object.XFAObjectArray(); + this.zpl = new _xfa_object.XFAObjectArray(); + } +} +class Print extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "print"); + } +} +class PrintHighQuality extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "printHighQuality"); + } +} +class PrintScaling extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "printScaling", ["appdefault", "noScaling"]); + } +} +class PrinterName extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "printerName"); + } +} +class Producer extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "producer"); + } +} +class Ps extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "ps", true); + this.name = attributes.name || ""; + this.batchOutput = null; + this.fontInfo = null; + this.jog = null; + this.mediumInfo = null; + this.outputBin = null; + this.staple = null; + this.xdc = null; + } +} +class Range extends _xfa_object.ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "range"); + } + [_symbol_utils.$finalize]() { + this[_symbol_utils.$content] = this[_symbol_utils.$content].trim().split(/\s*,\s*/, 2).map(range => range.split("-").map(x => parseInt(x.trim(), 10))).filter(range => range.every(x => !isNaN(x))).map(range => { + if (range.length === 1) { + range.push(range[0]); + } + return range; + }); + } +} +class Record extends _xfa_object.ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "record"); + } + [_symbol_utils.$finalize]() { + this[_symbol_utils.$content] = this[_symbol_utils.$content].trim(); + const n = parseInt(this[_symbol_utils.$content], 10); + if (!isNaN(n) && n >= 0) { + this[_symbol_utils.$content] = n; + } + } +} +class Relevant extends _xfa_object.ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "relevant"); + } + [_symbol_utils.$finalize]() { + this[_symbol_utils.$content] = this[_symbol_utils.$content].trim().split(/\s+/); + } +} +class Rename extends _xfa_object.ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "rename"); + } + [_symbol_utils.$finalize]() { + this[_symbol_utils.$content] = this[_symbol_utils.$content].trim(); + if (this[_symbol_utils.$content].toLowerCase().startsWith("xml") || new RegExp("[\\p{L}_][\\p{L}\\d._\\p{M}-]*", "u").test(this[_symbol_utils.$content])) { + (0, _util.warn)("XFA - Rename: invalid XFA name"); + } + } +} +class RenderPolicy extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "renderPolicy", ["server", "client"]); + } +} +class RunScripts extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "runScripts", ["both", "client", "none", "server"]); + } +} +class Script extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "script", true); + this.currentPage = null; + this.exclude = null; + this.runScripts = null; + } +} +class ScriptModel extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "scriptModel", ["XFA", "none"]); + } +} +class Severity extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "severity", ["ignore", "error", "information", "trace", "warning"]); + } +} +class SilentPrint extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "silentPrint", true); + this.addSilentPrint = null; + this.printerName = null; + } +} +class Staple extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "staple"); + this.mode = (0, _utils.getStringOption)(attributes.mode, ["usePrinterSetting", "on", "off"]); + } +} +class StartNode extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "startNode"); + } +} +class StartPage extends _xfa_object.IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "startPage", 0, n => true); + } +} +class SubmitFormat extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "submitFormat", ["html", "delegate", "fdf", "xml", "pdf"]); + } +} +class SubmitUrl extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "submitUrl"); + } +} +class SubsetBelow extends _xfa_object.IntegerObject { + constructor(attributes) { + super(CONFIG_NS_ID, "subsetBelow", 100, n => n >= 0 && n <= 100); + } +} +class SuppressBanner extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "suppressBanner"); + } +} +class Tagged extends _xfa_object.Option01 { + constructor(attributes) { + super(CONFIG_NS_ID, "tagged"); + } +} +class Template extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "template", true); + this.base = null; + this.relevant = null; + this.startPage = null; + this.uri = null; + this.xsl = null; + } +} +class Threshold extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "threshold", ["trace", "error", "information", "warning"]); + } +} +class To extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "to", ["null", "memory", "stderr", "stdout", "system", "uri"]); + } +} +class TemplateCache extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "templateCache"); + this.maxEntries = (0, _utils.getInteger)({ + data: attributes.maxEntries, + defaultValue: 5, + validate: n => n >= 0 + }); + } +} +class Trace extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "trace", true); + this.area = new _xfa_object.XFAObjectArray(); + } +} +class Transform extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "transform", true); + this.groupParent = null; + this.ifEmpty = null; + this.nameAttr = null; + this.picture = null; + this.presence = null; + this.rename = null; + this.whitespace = null; + } +} +class Type extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "type", ["none", "ascii85", "asciiHex", "ccittfax", "flate", "lzw", "runLength", "native", "xdp", "mergedXDP"]); + } +} +class Uri extends _xfa_object.StringObject { + constructor(attributes) { + super(CONFIG_NS_ID, "uri"); + } +} +class Validate extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "validate", ["preSubmit", "prePrint", "preExecute", "preSave"]); + } +} +class ValidateApprovalSignatures extends _xfa_object.ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "validateApprovalSignatures"); + } + [_symbol_utils.$finalize]() { + this[_symbol_utils.$content] = this[_symbol_utils.$content].trim().split(/\s+/).filter(x => ["docReady", "postSign"].includes(x)); + } +} +class ValidationMessaging extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "validationMessaging", ["allMessagesIndividually", "allMessagesTogether", "firstMessageOnly", "noMessages"]); + } +} +class Version extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "version", ["1.7", "1.6", "1.5", "1.4", "1.3", "1.2"]); + } +} +class VersionControl extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "VersionControl"); + this.outputBelow = (0, _utils.getStringOption)(attributes.outputBelow, ["warn", "error", "update"]); + this.sourceAbove = (0, _utils.getStringOption)(attributes.sourceAbove, ["warn", "error"]); + this.sourceBelow = (0, _utils.getStringOption)(attributes.sourceBelow, ["update", "maintain"]); + } +} +class ViewerPreferences extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "viewerPreferences", true); + this.ADBE_JSConsole = null; + this.ADBE_JSDebugger = null; + this.addViewerPreferences = null; + this.duplexOption = null; + this.enforce = null; + this.numberOfCopies = null; + this.pageRange = null; + this.pickTrayByPDFSize = null; + this.printScaling = null; + } +} +class WebClient extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "webClient", true); + this.name = attributes.name ? attributes.name.trim() : ""; + this.fontInfo = null; + this.xdc = null; + } +} +class Whitespace extends _xfa_object.OptionObject { + constructor(attributes) { + super(CONFIG_NS_ID, "whitespace", ["preserve", "ltrim", "normalize", "rtrim", "trim"]); + } +} +class Window extends _xfa_object.ContentObject { + constructor(attributes) { + super(CONFIG_NS_ID, "window"); + } + [_symbol_utils.$finalize]() { + const pair = this[_symbol_utils.$content].trim().split(/\s*,\s*/, 2).map(x => parseInt(x, 10)); + if (pair.some(x => isNaN(x))) { + this[_symbol_utils.$content] = [0, 0]; + return; + } + if (pair.length === 1) { + pair.push(pair[0]); + } + this[_symbol_utils.$content] = pair; + } +} +class Xdc extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "xdc", true); + this.uri = new _xfa_object.XFAObjectArray(); + this.xsl = new _xfa_object.XFAObjectArray(); + } +} +class Xdp extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "xdp", true); + this.packets = null; + } +} +class Xsl extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "xsl", true); + this.debug = null; + this.uri = null; + } +} +class Zpl extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONFIG_NS_ID, "zpl", true); + this.name = attributes.name ? attributes.name.trim() : ""; + this.batchOutput = null; + this.flipLabel = null; + this.fontInfo = null; + this.xdc = null; + } +} +class ConfigNamespace { + static [_namespaces.$buildXFAObject](name, attributes) { + if (ConfigNamespace.hasOwnProperty(name)) { + return ConfigNamespace[name](attributes); + } + return undefined; + } + static acrobat(attrs) { + return new Acrobat(attrs); + } + static acrobat7(attrs) { + return new Acrobat7(attrs); + } + static ADBE_JSConsole(attrs) { + return new ADBE_JSConsole(attrs); + } + static ADBE_JSDebugger(attrs) { + return new ADBE_JSDebugger(attrs); + } + static addSilentPrint(attrs) { + return new AddSilentPrint(attrs); + } + static addViewerPreferences(attrs) { + return new AddViewerPreferences(attrs); + } + static adjustData(attrs) { + return new AdjustData(attrs); + } + static adobeExtensionLevel(attrs) { + return new AdobeExtensionLevel(attrs); + } + static agent(attrs) { + return new Agent(attrs); + } + static alwaysEmbed(attrs) { + return new AlwaysEmbed(attrs); + } + static amd(attrs) { + return new Amd(attrs); + } + static area(attrs) { + return new Area(attrs); + } + static attributes(attrs) { + return new Attributes(attrs); + } + static autoSave(attrs) { + return new AutoSave(attrs); + } + static base(attrs) { + return new Base(attrs); + } + static batchOutput(attrs) { + return new BatchOutput(attrs); + } + static behaviorOverride(attrs) { + return new BehaviorOverride(attrs); + } + static cache(attrs) { + return new Cache(attrs); + } + static change(attrs) { + return new Change(attrs); + } + static common(attrs) { + return new Common(attrs); + } + static compress(attrs) { + return new Compress(attrs); + } + static compressLogicalStructure(attrs) { + return new CompressLogicalStructure(attrs); + } + static compressObjectStream(attrs) { + return new CompressObjectStream(attrs); + } + static compression(attrs) { + return new Compression(attrs); + } + static config(attrs) { + return new Config(attrs); + } + static conformance(attrs) { + return new Conformance(attrs); + } + static contentCopy(attrs) { + return new ContentCopy(attrs); + } + static copies(attrs) { + return new Copies(attrs); + } + static creator(attrs) { + return new Creator(attrs); + } + static currentPage(attrs) { + return new CurrentPage(attrs); + } + static data(attrs) { + return new Data(attrs); + } + static debug(attrs) { + return new Debug(attrs); + } + static defaultTypeface(attrs) { + return new DefaultTypeface(attrs); + } + static destination(attrs) { + return new Destination(attrs); + } + static documentAssembly(attrs) { + return new DocumentAssembly(attrs); + } + static driver(attrs) { + return new Driver(attrs); + } + static duplexOption(attrs) { + return new DuplexOption(attrs); + } + static dynamicRender(attrs) { + return new DynamicRender(attrs); + } + static embed(attrs) { + return new Embed(attrs); + } + static encrypt(attrs) { + return new Encrypt(attrs); + } + static encryption(attrs) { + return new Encryption(attrs); + } + static encryptionLevel(attrs) { + return new EncryptionLevel(attrs); + } + static enforce(attrs) { + return new Enforce(attrs); + } + static equate(attrs) { + return new Equate(attrs); + } + static equateRange(attrs) { + return new EquateRange(attrs); + } + static exclude(attrs) { + return new Exclude(attrs); + } + static excludeNS(attrs) { + return new ExcludeNS(attrs); + } + static flipLabel(attrs) { + return new FlipLabel(attrs); + } + static fontInfo(attrs) { + return new FontInfo(attrs); + } + static formFieldFilling(attrs) { + return new FormFieldFilling(attrs); + } + static groupParent(attrs) { + return new GroupParent(attrs); + } + static ifEmpty(attrs) { + return new IfEmpty(attrs); + } + static includeXDPContent(attrs) { + return new IncludeXDPContent(attrs); + } + static incrementalLoad(attrs) { + return new IncrementalLoad(attrs); + } + static incrementalMerge(attrs) { + return new IncrementalMerge(attrs); + } + static interactive(attrs) { + return new Interactive(attrs); + } + static jog(attrs) { + return new Jog(attrs); + } + static labelPrinter(attrs) { + return new LabelPrinter(attrs); + } + static layout(attrs) { + return new Layout(attrs); + } + static level(attrs) { + return new Level(attrs); + } + static linearized(attrs) { + return new Linearized(attrs); + } + static locale(attrs) { + return new Locale(attrs); + } + static localeSet(attrs) { + return new LocaleSet(attrs); + } + static log(attrs) { + return new Log(attrs); + } + static map(attrs) { + return new MapElement(attrs); + } + static mediumInfo(attrs) { + return new MediumInfo(attrs); + } + static message(attrs) { + return new Message(attrs); + } + static messaging(attrs) { + return new Messaging(attrs); + } + static mode(attrs) { + return new Mode(attrs); + } + static modifyAnnots(attrs) { + return new ModifyAnnots(attrs); + } + static msgId(attrs) { + return new MsgId(attrs); + } + static nameAttr(attrs) { + return new NameAttr(attrs); + } + static neverEmbed(attrs) { + return new NeverEmbed(attrs); + } + static numberOfCopies(attrs) { + return new NumberOfCopies(attrs); + } + static openAction(attrs) { + return new OpenAction(attrs); + } + static output(attrs) { + return new Output(attrs); + } + static outputBin(attrs) { + return new OutputBin(attrs); + } + static outputXSL(attrs) { + return new OutputXSL(attrs); + } + static overprint(attrs) { + return new Overprint(attrs); + } + static packets(attrs) { + return new Packets(attrs); + } + static pageOffset(attrs) { + return new PageOffset(attrs); + } + static pageRange(attrs) { + return new PageRange(attrs); + } + static pagination(attrs) { + return new Pagination(attrs); + } + static paginationOverride(attrs) { + return new PaginationOverride(attrs); + } + static part(attrs) { + return new Part(attrs); + } + static pcl(attrs) { + return new Pcl(attrs); + } + static pdf(attrs) { + return new Pdf(attrs); + } + static pdfa(attrs) { + return new Pdfa(attrs); + } + static permissions(attrs) { + return new Permissions(attrs); + } + static pickTrayByPDFSize(attrs) { + return new PickTrayByPDFSize(attrs); + } + static picture(attrs) { + return new Picture(attrs); + } + static plaintextMetadata(attrs) { + return new PlaintextMetadata(attrs); + } + static presence(attrs) { + return new Presence(attrs); + } + static present(attrs) { + return new Present(attrs); + } + static print(attrs) { + return new Print(attrs); + } + static printHighQuality(attrs) { + return new PrintHighQuality(attrs); + } + static printScaling(attrs) { + return new PrintScaling(attrs); + } + static printerName(attrs) { + return new PrinterName(attrs); + } + static producer(attrs) { + return new Producer(attrs); + } + static ps(attrs) { + return new Ps(attrs); + } + static range(attrs) { + return new Range(attrs); + } + static record(attrs) { + return new Record(attrs); + } + static relevant(attrs) { + return new Relevant(attrs); + } + static rename(attrs) { + return new Rename(attrs); + } + static renderPolicy(attrs) { + return new RenderPolicy(attrs); + } + static runScripts(attrs) { + return new RunScripts(attrs); + } + static script(attrs) { + return new Script(attrs); + } + static scriptModel(attrs) { + return new ScriptModel(attrs); + } + static severity(attrs) { + return new Severity(attrs); + } + static silentPrint(attrs) { + return new SilentPrint(attrs); + } + static staple(attrs) { + return new Staple(attrs); + } + static startNode(attrs) { + return new StartNode(attrs); + } + static startPage(attrs) { + return new StartPage(attrs); + } + static submitFormat(attrs) { + return new SubmitFormat(attrs); + } + static submitUrl(attrs) { + return new SubmitUrl(attrs); + } + static subsetBelow(attrs) { + return new SubsetBelow(attrs); + } + static suppressBanner(attrs) { + return new SuppressBanner(attrs); + } + static tagged(attrs) { + return new Tagged(attrs); + } + static template(attrs) { + return new Template(attrs); + } + static templateCache(attrs) { + return new TemplateCache(attrs); + } + static threshold(attrs) { + return new Threshold(attrs); + } + static to(attrs) { + return new To(attrs); + } + static trace(attrs) { + return new Trace(attrs); + } + static transform(attrs) { + return new Transform(attrs); + } + static type(attrs) { + return new Type(attrs); + } + static uri(attrs) { + return new Uri(attrs); + } + static validate(attrs) { + return new Validate(attrs); + } + static validateApprovalSignatures(attrs) { + return new ValidateApprovalSignatures(attrs); + } + static validationMessaging(attrs) { + return new ValidationMessaging(attrs); + } + static version(attrs) { + return new Version(attrs); + } + static versionControl(attrs) { + return new VersionControl(attrs); + } + static viewerPreferences(attrs) { + return new ViewerPreferences(attrs); + } + static webClient(attrs) { + return new WebClient(attrs); + } + static whitespace(attrs) { + return new Whitespace(attrs); + } + static window(attrs) { + return new Window(attrs); + } + static xdc(attrs) { + return new Xdc(attrs); + } + static xdp(attrs) { + return new Xdp(attrs); + } + static xsl(attrs) { + return new Xsl(attrs); + } + static zpl(attrs) { + return new Zpl(attrs); + } +} +exports.ConfigNamespace = ConfigNamespace; + +/***/ }), +/* 94 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ConnectionSetNamespace = void 0; +var _namespaces = __w_pdfjs_require__(81); +var _xfa_object = __w_pdfjs_require__(87); +const CONNECTION_SET_NS_ID = _namespaces.NamespaceIds.connectionSet.id; +class ConnectionSet extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "connectionSet", true); + this.wsdlConnection = new _xfa_object.XFAObjectArray(); + this.xmlConnection = new _xfa_object.XFAObjectArray(); + this.xsdConnection = new _xfa_object.XFAObjectArray(); + } +} +class EffectiveInputPolicy extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "effectiveInputPolicy"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class EffectiveOutputPolicy extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "effectiveOutputPolicy"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Operation extends _xfa_object.StringObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "operation"); + this.id = attributes.id || ""; + this.input = attributes.input || ""; + this.name = attributes.name || ""; + this.output = attributes.output || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class RootElement extends _xfa_object.StringObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "rootElement"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class SoapAction extends _xfa_object.StringObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "soapAction"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class SoapAddress extends _xfa_object.StringObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "soapAddress"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class Uri extends _xfa_object.StringObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "uri"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class WsdlAddress extends _xfa_object.StringObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "wsdlAddress"); + this.id = attributes.id || ""; + this.name = attributes.name || ""; + this.use = attributes.use || ""; + this.usehref = attributes.usehref || ""; + } +} +class WsdlConnection extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "wsdlConnection", true); + this.dataDescription = attributes.dataDescription || ""; + this.name = attributes.name || ""; + this.effectiveInputPolicy = null; + this.effectiveOutputPolicy = null; + this.operation = null; + this.soapAction = null; + this.soapAddress = null; + this.wsdlAddress = null; + } +} +class XmlConnection extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "xmlConnection", true); + this.dataDescription = attributes.dataDescription || ""; + this.name = attributes.name || ""; + this.uri = null; + } +} +class XsdConnection extends _xfa_object.XFAObject { + constructor(attributes) { + super(CONNECTION_SET_NS_ID, "xsdConnection", true); + this.dataDescription = attributes.dataDescription || ""; + this.name = attributes.name || ""; + this.rootElement = null; + this.uri = null; + } +} +class ConnectionSetNamespace { + static [_namespaces.$buildXFAObject](name, attributes) { + if (ConnectionSetNamespace.hasOwnProperty(name)) { + return ConnectionSetNamespace[name](attributes); + } + return undefined; + } + static connectionSet(attrs) { + return new ConnectionSet(attrs); + } + static effectiveInputPolicy(attrs) { + return new EffectiveInputPolicy(attrs); + } + static effectiveOutputPolicy(attrs) { + return new EffectiveOutputPolicy(attrs); + } + static operation(attrs) { + return new Operation(attrs); + } + static rootElement(attrs) { + return new RootElement(attrs); + } + static soapAction(attrs) { + return new SoapAction(attrs); + } + static soapAddress(attrs) { + return new SoapAddress(attrs); + } + static uri(attrs) { + return new Uri(attrs); + } + static wsdlAddress(attrs) { + return new WsdlAddress(attrs); + } + static wsdlConnection(attrs) { + return new WsdlConnection(attrs); + } + static xmlConnection(attrs) { + return new XmlConnection(attrs); + } + static xsdConnection(attrs) { + return new XsdConnection(attrs); + } +} +exports.ConnectionSetNamespace = ConnectionSetNamespace; + +/***/ }), +/* 95 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.DatasetsNamespace = void 0; +var _symbol_utils = __w_pdfjs_require__(78); +var _namespaces = __w_pdfjs_require__(81); +var _xfa_object = __w_pdfjs_require__(87); +const DATASETS_NS_ID = _namespaces.NamespaceIds.datasets.id; +class Data extends _xfa_object.XmlObject { + constructor(attributes) { + super(DATASETS_NS_ID, "data", attributes); + } + [_symbol_utils.$isNsAgnostic]() { + return true; + } +} +class Datasets extends _xfa_object.XFAObject { + constructor(attributes) { + super(DATASETS_NS_ID, "datasets", true); + this.data = null; + this.Signature = null; + } + [_symbol_utils.$onChild](child) { + const name = child[_symbol_utils.$nodeName]; + if (name === "data" && child[_symbol_utils.$namespaceId] === DATASETS_NS_ID || name === "Signature" && child[_symbol_utils.$namespaceId] === _namespaces.NamespaceIds.signature.id) { + this[name] = child; + } + this[_symbol_utils.$appendChild](child); + } +} +class DatasetsNamespace { + static [_namespaces.$buildXFAObject](name, attributes) { + if (DatasetsNamespace.hasOwnProperty(name)) { + return DatasetsNamespace[name](attributes); + } + return undefined; + } + static datasets(attributes) { + return new Datasets(attributes); + } + static data(attributes) { + return new Data(attributes); + } +} +exports.DatasetsNamespace = DatasetsNamespace; + +/***/ }), +/* 96 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.LocaleSetNamespace = void 0; +var _namespaces = __w_pdfjs_require__(81); +var _xfa_object = __w_pdfjs_require__(87); +var _utils = __w_pdfjs_require__(84); +const LOCALE_SET_NS_ID = _namespaces.NamespaceIds.localeSet.id; +class CalendarSymbols extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "calendarSymbols", true); + this.name = "gregorian"; + this.dayNames = new _xfa_object.XFAObjectArray(2); + this.eraNames = null; + this.meridiemNames = null; + this.monthNames = new _xfa_object.XFAObjectArray(2); + } +} +class CurrencySymbol extends _xfa_object.StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "currencySymbol"); + this.name = (0, _utils.getStringOption)(attributes.name, ["symbol", "isoname", "decimal"]); + } +} +class CurrencySymbols extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "currencySymbols", true); + this.currencySymbol = new _xfa_object.XFAObjectArray(3); + } +} +class DatePattern extends _xfa_object.StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "datePattern"); + this.name = (0, _utils.getStringOption)(attributes.name, ["full", "long", "med", "short"]); + } +} +class DatePatterns extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "datePatterns", true); + this.datePattern = new _xfa_object.XFAObjectArray(4); + } +} +class DateTimeSymbols extends _xfa_object.ContentObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "dateTimeSymbols"); + } +} +class Day extends _xfa_object.StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "day"); + } +} +class DayNames extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "dayNames", true); + this.abbr = (0, _utils.getInteger)({ + data: attributes.abbr, + defaultValue: 0, + validate: x => x === 1 + }); + this.day = new _xfa_object.XFAObjectArray(7); + } +} +class Era extends _xfa_object.StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "era"); + } +} +class EraNames extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "eraNames", true); + this.era = new _xfa_object.XFAObjectArray(2); + } +} +class Locale extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "locale", true); + this.desc = attributes.desc || ""; + this.name = "isoname"; + this.calendarSymbols = null; + this.currencySymbols = null; + this.datePatterns = null; + this.dateTimeSymbols = null; + this.numberPatterns = null; + this.numberSymbols = null; + this.timePatterns = null; + this.typeFaces = null; + } +} +class LocaleSet extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "localeSet", true); + this.locale = new _xfa_object.XFAObjectArray(); + } +} +class Meridiem extends _xfa_object.StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "meridiem"); + } +} +class MeridiemNames extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "meridiemNames", true); + this.meridiem = new _xfa_object.XFAObjectArray(2); + } +} +class Month extends _xfa_object.StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "month"); + } +} +class MonthNames extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "monthNames", true); + this.abbr = (0, _utils.getInteger)({ + data: attributes.abbr, + defaultValue: 0, + validate: x => x === 1 + }); + this.month = new _xfa_object.XFAObjectArray(12); + } +} +class NumberPattern extends _xfa_object.StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "numberPattern"); + this.name = (0, _utils.getStringOption)(attributes.name, ["full", "long", "med", "short"]); + } +} +class NumberPatterns extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "numberPatterns", true); + this.numberPattern = new _xfa_object.XFAObjectArray(4); + } +} +class NumberSymbol extends _xfa_object.StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "numberSymbol"); + this.name = (0, _utils.getStringOption)(attributes.name, ["decimal", "grouping", "percent", "minus", "zero"]); + } +} +class NumberSymbols extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "numberSymbols", true); + this.numberSymbol = new _xfa_object.XFAObjectArray(5); + } +} +class TimePattern extends _xfa_object.StringObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "timePattern"); + this.name = (0, _utils.getStringOption)(attributes.name, ["full", "long", "med", "short"]); + } +} +class TimePatterns extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "timePatterns", true); + this.timePattern = new _xfa_object.XFAObjectArray(4); + } +} +class TypeFace extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "typeFace", true); + this.name = attributes.name | ""; + } +} +class TypeFaces extends _xfa_object.XFAObject { + constructor(attributes) { + super(LOCALE_SET_NS_ID, "typeFaces", true); + this.typeFace = new _xfa_object.XFAObjectArray(); + } +} +class LocaleSetNamespace { + static [_namespaces.$buildXFAObject](name, attributes) { + if (LocaleSetNamespace.hasOwnProperty(name)) { + return LocaleSetNamespace[name](attributes); + } + return undefined; + } + static calendarSymbols(attrs) { + return new CalendarSymbols(attrs); + } + static currencySymbol(attrs) { + return new CurrencySymbol(attrs); + } + static currencySymbols(attrs) { + return new CurrencySymbols(attrs); + } + static datePattern(attrs) { + return new DatePattern(attrs); + } + static datePatterns(attrs) { + return new DatePatterns(attrs); + } + static dateTimeSymbols(attrs) { + return new DateTimeSymbols(attrs); + } + static day(attrs) { + return new Day(attrs); + } + static dayNames(attrs) { + return new DayNames(attrs); + } + static era(attrs) { + return new Era(attrs); + } + static eraNames(attrs) { + return new EraNames(attrs); + } + static locale(attrs) { + return new Locale(attrs); + } + static localeSet(attrs) { + return new LocaleSet(attrs); + } + static meridiem(attrs) { + return new Meridiem(attrs); + } + static meridiemNames(attrs) { + return new MeridiemNames(attrs); + } + static month(attrs) { + return new Month(attrs); + } + static monthNames(attrs) { + return new MonthNames(attrs); + } + static numberPattern(attrs) { + return new NumberPattern(attrs); + } + static numberPatterns(attrs) { + return new NumberPatterns(attrs); + } + static numberSymbol(attrs) { + return new NumberSymbol(attrs); + } + static numberSymbols(attrs) { + return new NumberSymbols(attrs); + } + static timePattern(attrs) { + return new TimePattern(attrs); + } + static timePatterns(attrs) { + return new TimePatterns(attrs); + } + static typeFace(attrs) { + return new TypeFace(attrs); + } + static typeFaces(attrs) { + return new TypeFaces(attrs); + } +} +exports.LocaleSetNamespace = LocaleSetNamespace; + +/***/ }), +/* 97 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SignatureNamespace = void 0; +var _namespaces = __w_pdfjs_require__(81); +var _xfa_object = __w_pdfjs_require__(87); +const SIGNATURE_NS_ID = _namespaces.NamespaceIds.signature.id; +class Signature extends _xfa_object.XFAObject { + constructor(attributes) { + super(SIGNATURE_NS_ID, "signature", true); + } +} +class SignatureNamespace { + static [_namespaces.$buildXFAObject](name, attributes) { + if (SignatureNamespace.hasOwnProperty(name)) { + return SignatureNamespace[name](attributes); + } + return undefined; + } + static signature(attributes) { + return new Signature(attributes); + } +} +exports.SignatureNamespace = SignatureNamespace; + +/***/ }), +/* 98 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.StylesheetNamespace = void 0; +var _namespaces = __w_pdfjs_require__(81); +var _xfa_object = __w_pdfjs_require__(87); +const STYLESHEET_NS_ID = _namespaces.NamespaceIds.stylesheet.id; +class Stylesheet extends _xfa_object.XFAObject { + constructor(attributes) { + super(STYLESHEET_NS_ID, "stylesheet", true); + } +} +class StylesheetNamespace { + static [_namespaces.$buildXFAObject](name, attributes) { + if (StylesheetNamespace.hasOwnProperty(name)) { + return StylesheetNamespace[name](attributes); + } + return undefined; + } + static stylesheet(attributes) { + return new Stylesheet(attributes); + } +} +exports.StylesheetNamespace = StylesheetNamespace; + +/***/ }), +/* 99 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XdpNamespace = void 0; +var _namespaces = __w_pdfjs_require__(81); +var _symbol_utils = __w_pdfjs_require__(78); +var _xfa_object = __w_pdfjs_require__(87); +const XDP_NS_ID = _namespaces.NamespaceIds.xdp.id; +class Xdp extends _xfa_object.XFAObject { + constructor(attributes) { + super(XDP_NS_ID, "xdp", true); + this.uuid = attributes.uuid || ""; + this.timeStamp = attributes.timeStamp || ""; + this.config = null; + this.connectionSet = null; + this.datasets = null; + this.localeSet = null; + this.stylesheet = new _xfa_object.XFAObjectArray(); + this.template = null; + } + [_symbol_utils.$onChildCheck](child) { + const ns = _namespaces.NamespaceIds[child[_symbol_utils.$nodeName]]; + return ns && child[_symbol_utils.$namespaceId] === ns.id; + } +} +class XdpNamespace { + static [_namespaces.$buildXFAObject](name, attributes) { + if (XdpNamespace.hasOwnProperty(name)) { + return XdpNamespace[name](attributes); + } + return undefined; + } + static xdp(attributes) { + return new Xdp(attributes); + } +} +exports.XdpNamespace = XdpNamespace; + +/***/ }), +/* 100 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XhtmlNamespace = void 0; +var _symbol_utils = __w_pdfjs_require__(78); +var _namespaces = __w_pdfjs_require__(81); +var _html_utils = __w_pdfjs_require__(83); +var _utils = __w_pdfjs_require__(84); +var _xfa_object = __w_pdfjs_require__(87); +const XHTML_NS_ID = _namespaces.NamespaceIds.xhtml.id; +const $richText = Symbol(); +const VALID_STYLES = new Set(["color", "font", "font-family", "font-size", "font-stretch", "font-style", "font-weight", "margin", "margin-bottom", "margin-left", "margin-right", "margin-top", "letter-spacing", "line-height", "orphans", "page-break-after", "page-break-before", "page-break-inside", "tab-interval", "tab-stop", "text-align", "text-decoration", "text-indent", "vertical-align", "widows", "kerning-mode", "xfa-font-horizontal-scale", "xfa-font-vertical-scale", "xfa-spacerun", "xfa-tab-stops"]); +const StyleMapping = new Map([["page-break-after", "breakAfter"], ["page-break-before", "breakBefore"], ["page-break-inside", "breakInside"], ["kerning-mode", value => value === "none" ? "none" : "normal"], ["xfa-font-horizontal-scale", value => `scaleX(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`], ["xfa-font-vertical-scale", value => `scaleY(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`], ["xfa-spacerun", ""], ["xfa-tab-stops", ""], ["font-size", (value, original) => { + value = original.fontSize = (0, _utils.getMeasurement)(value); + return (0, _html_utils.measureToString)(0.99 * value); +}], ["letter-spacing", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["line-height", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["margin", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["margin-bottom", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["margin-left", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["margin-right", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["margin-top", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["text-indent", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["font-family", value => value], ["vertical-align", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))]]); +const spacesRegExp = /\s+/g; +const crlfRegExp = /[\r\n]+/g; +const crlfForRichTextRegExp = /\r\n?/g; +function mapStyle(styleStr, node, richText) { + const style = Object.create(null); + if (!styleStr) { + return style; + } + const original = Object.create(null); + for (const [key, value] of styleStr.split(";").map(s => s.split(":", 2))) { + const mapping = StyleMapping.get(key); + if (mapping === "") { + continue; + } + let newValue = value; + if (mapping) { + if (typeof mapping === "string") { + newValue = mapping; + } else { + newValue = mapping(value, original); + } + } + if (key.endsWith("scale")) { + if (style.transform) { + style.transform = `${style[key]} ${newValue}`; + } else { + style.transform = newValue; + } + } else { + style[key.replaceAll(/-([a-zA-Z])/g, (_, x) => x.toUpperCase())] = newValue; + } + } + if (style.fontFamily) { + (0, _html_utils.setFontFamily)({ + typeface: style.fontFamily, + weight: style.fontWeight || "normal", + posture: style.fontStyle || "normal", + size: original.fontSize || 0 + }, node, node[_symbol_utils.$globalData].fontFinder, style); + } + if (richText && style.verticalAlign && style.verticalAlign !== "0px" && style.fontSize) { + const SUB_SUPER_SCRIPT_FACTOR = 0.583; + const VERTICAL_FACTOR = 0.333; + const fontSize = (0, _utils.getMeasurement)(style.fontSize); + style.fontSize = (0, _html_utils.measureToString)(fontSize * SUB_SUPER_SCRIPT_FACTOR); + style.verticalAlign = (0, _html_utils.measureToString)(Math.sign((0, _utils.getMeasurement)(style.verticalAlign)) * fontSize * VERTICAL_FACTOR); + } + if (richText && style.fontSize) { + style.fontSize = `calc(${style.fontSize} * var(--scale-factor))`; + } + (0, _html_utils.fixTextIndent)(style); + return style; +} +function checkStyle(node) { + if (!node.style) { + return ""; + } + return node.style.trim().split(/\s*;\s*/).filter(s => !!s).map(s => s.split(/\s*:\s*/, 2)).filter(([key, value]) => { + if (key === "font-family") { + node[_symbol_utils.$globalData].usedTypefaces.add(value); + } + return VALID_STYLES.has(key); + }).map(kv => kv.join(":")).join(";"); +} +const NoWhites = new Set(["body", "html"]); +class XhtmlObject extends _xfa_object.XmlObject { + constructor(attributes, name) { + super(XHTML_NS_ID, name); + this[$richText] = false; + this.style = attributes.style || ""; + } + [_symbol_utils.$clean](builder) { + super[_symbol_utils.$clean](builder); + this.style = checkStyle(this); + } + [_symbol_utils.$acceptWhitespace]() { + return !NoWhites.has(this[_symbol_utils.$nodeName]); + } + [_symbol_utils.$onText](str, richText = false) { + if (!richText) { + str = str.replaceAll(crlfRegExp, ""); + if (!this.style.includes("xfa-spacerun:yes")) { + str = str.replaceAll(spacesRegExp, " "); + } + } else { + this[$richText] = true; + } + if (str) { + this[_symbol_utils.$content] += str; + } + } + [_symbol_utils.$pushGlyphs](measure, mustPop = true) { + const xfaFont = Object.create(null); + const margin = { + top: NaN, + bottom: NaN, + left: NaN, + right: NaN + }; + let lineHeight = null; + for (const [key, value] of this.style.split(";").map(s => s.split(":", 2))) { + switch (key) { + case "font-family": + xfaFont.typeface = (0, _utils.stripQuotes)(value); + break; + case "font-size": + xfaFont.size = (0, _utils.getMeasurement)(value); + break; + case "font-weight": + xfaFont.weight = value; + break; + case "font-style": + xfaFont.posture = value; + break; + case "letter-spacing": + xfaFont.letterSpacing = (0, _utils.getMeasurement)(value); + break; + case "margin": + const values = value.split(/ \t/).map(x => (0, _utils.getMeasurement)(x)); + switch (values.length) { + case 1: + margin.top = margin.bottom = margin.left = margin.right = values[0]; + break; + case 2: + margin.top = margin.bottom = values[0]; + margin.left = margin.right = values[1]; + break; + case 3: + margin.top = values[0]; + margin.bottom = values[2]; + margin.left = margin.right = values[1]; + break; + case 4: + margin.top = values[0]; + margin.left = values[1]; + margin.bottom = values[2]; + margin.right = values[3]; + break; + } + break; + case "margin-top": + margin.top = (0, _utils.getMeasurement)(value); + break; + case "margin-bottom": + margin.bottom = (0, _utils.getMeasurement)(value); + break; + case "margin-left": + margin.left = (0, _utils.getMeasurement)(value); + break; + case "margin-right": + margin.right = (0, _utils.getMeasurement)(value); + break; + case "line-height": + lineHeight = (0, _utils.getMeasurement)(value); + break; + } + } + measure.pushData(xfaFont, margin, lineHeight); + if (this[_symbol_utils.$content]) { + measure.addString(this[_symbol_utils.$content]); + } else { + for (const child of this[_symbol_utils.$getChildren]()) { + if (child[_symbol_utils.$nodeName] === "#text") { + measure.addString(child[_symbol_utils.$content]); + continue; + } + child[_symbol_utils.$pushGlyphs](measure); + } + } + if (mustPop) { + measure.popFont(); + } + } + [_symbol_utils.$toHTML](availableSpace) { + const children = []; + this[_symbol_utils.$extra] = { + children + }; + this[_symbol_utils.$childrenToHTML]({}); + if (children.length === 0 && !this[_symbol_utils.$content]) { + return _utils.HTMLResult.EMPTY; + } + let value; + if (this[$richText]) { + value = this[_symbol_utils.$content] ? this[_symbol_utils.$content].replaceAll(crlfForRichTextRegExp, "\n") : undefined; + } else { + value = this[_symbol_utils.$content] || undefined; + } + return _utils.HTMLResult.success({ + name: this[_symbol_utils.$nodeName], + attributes: { + href: this.href, + style: mapStyle(this.style, this, this[$richText]) + }, + children, + value + }); + } +} +class A extends XhtmlObject { + constructor(attributes) { + super(attributes, "a"); + this.href = (0, _html_utils.fixURL)(attributes.href) || ""; + } +} +class B extends XhtmlObject { + constructor(attributes) { + super(attributes, "b"); + } + [_symbol_utils.$pushGlyphs](measure) { + measure.pushFont({ + weight: "bold" + }); + super[_symbol_utils.$pushGlyphs](measure); + measure.popFont(); + } +} +class Body extends XhtmlObject { + constructor(attributes) { + super(attributes, "body"); + } + [_symbol_utils.$toHTML](availableSpace) { + const res = super[_symbol_utils.$toHTML](availableSpace); + const { + html + } = res; + if (!html) { + return _utils.HTMLResult.EMPTY; + } + html.name = "div"; + html.attributes.class = ["xfaRich"]; + return res; + } +} +class Br extends XhtmlObject { + constructor(attributes) { + super(attributes, "br"); + } + [_symbol_utils.$text]() { + return "\n"; + } + [_symbol_utils.$pushGlyphs](measure) { + measure.addString("\n"); + } + [_symbol_utils.$toHTML](availableSpace) { + return _utils.HTMLResult.success({ + name: "br" + }); + } +} +class Html extends XhtmlObject { + constructor(attributes) { + super(attributes, "html"); + } + [_symbol_utils.$toHTML](availableSpace) { + const children = []; + this[_symbol_utils.$extra] = { + children + }; + this[_symbol_utils.$childrenToHTML]({}); + if (children.length === 0) { + return _utils.HTMLResult.success({ + name: "div", + attributes: { + class: ["xfaRich"], + style: {} + }, + value: this[_symbol_utils.$content] || "" + }); + } + if (children.length === 1) { + const child = children[0]; + if (child.attributes?.class.includes("xfaRich")) { + return _utils.HTMLResult.success(child); + } + } + return _utils.HTMLResult.success({ + name: "div", + attributes: { + class: ["xfaRich"], + style: {} + }, + children + }); + } +} +class I extends XhtmlObject { + constructor(attributes) { + super(attributes, "i"); + } + [_symbol_utils.$pushGlyphs](measure) { + measure.pushFont({ + posture: "italic" + }); + super[_symbol_utils.$pushGlyphs](measure); + measure.popFont(); + } +} +class Li extends XhtmlObject { + constructor(attributes) { + super(attributes, "li"); + } +} +class Ol extends XhtmlObject { + constructor(attributes) { + super(attributes, "ol"); + } +} +class P extends XhtmlObject { + constructor(attributes) { + super(attributes, "p"); + } + [_symbol_utils.$pushGlyphs](measure) { + super[_symbol_utils.$pushGlyphs](measure, false); + measure.addString("\n"); + measure.addPara(); + measure.popFont(); + } + [_symbol_utils.$text]() { + const siblings = this[_symbol_utils.$getParent]()[_symbol_utils.$getChildren](); + if (siblings.at(-1) === this) { + return super[_symbol_utils.$text](); + } + return super[_symbol_utils.$text]() + "\n"; + } +} +class Span extends XhtmlObject { + constructor(attributes) { + super(attributes, "span"); + } +} +class Sub extends XhtmlObject { + constructor(attributes) { + super(attributes, "sub"); + } +} +class Sup extends XhtmlObject { + constructor(attributes) { + super(attributes, "sup"); + } +} +class Ul extends XhtmlObject { + constructor(attributes) { + super(attributes, "ul"); + } +} +class XhtmlNamespace { + static [_namespaces.$buildXFAObject](name, attributes) { + if (XhtmlNamespace.hasOwnProperty(name)) { + return XhtmlNamespace[name](attributes); + } + return undefined; + } + static a(attributes) { + return new A(attributes); + } + static b(attributes) { + return new B(attributes); + } + static body(attributes) { + return new Body(attributes); + } + static br(attributes) { + return new Br(attributes); + } + static html(attributes) { + return new Html(attributes); + } + static i(attributes) { + return new I(attributes); + } + static li(attributes) { + return new Li(attributes); + } + static ol(attributes) { + return new Ol(attributes); + } + static p(attributes) { + return new P(attributes); + } + static span(attributes) { + return new Span(attributes); + } + static sub(attributes) { + return new Sub(attributes); + } + static sup(attributes) { + return new Sup(attributes); + } + static ul(attributes) { + return new Ul(attributes); + } +} +exports.XhtmlNamespace = XhtmlNamespace; + +/***/ }), +/* 101 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.UnknownNamespace = void 0; +var _namespaces = __w_pdfjs_require__(81); +var _xfa_object = __w_pdfjs_require__(87); +class UnknownNamespace { + constructor(nsId) { + this.namespaceId = nsId; + } + [_namespaces.$buildXFAObject](name, attributes) { + return new _xfa_object.XmlObject(this.namespaceId, name, attributes); + } +} +exports.UnknownNamespace = UnknownNamespace; + +/***/ }), +/* 102 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.DatasetReader = void 0; +var _util = __w_pdfjs_require__(2); +var _core_utils = __w_pdfjs_require__(3); +var _xml_parser = __w_pdfjs_require__(67); +function decodeString(str) { + try { + return (0, _util.stringToUTF8String)(str); + } catch (ex) { + (0, _util.warn)(`UTF-8 decoding failed: "${ex}".`); + return str; + } +} +class DatasetXMLParser extends _xml_parser.SimpleXMLParser { + constructor(options) { + super(options); + this.node = null; + } + onEndElement(name) { + const node = super.onEndElement(name); + if (node && name === "xfa:datasets") { + this.node = node; + throw new Error("Aborting DatasetXMLParser."); + } + } +} +class DatasetReader { + constructor(data) { + if (data.datasets) { + this.node = new _xml_parser.SimpleXMLParser({ + hasAttributes: true + }).parseFromString(data.datasets).documentElement; + } else { + const parser = new DatasetXMLParser({ + hasAttributes: true + }); + try { + parser.parseFromString(data["xdp:xdp"]); + } catch {} + this.node = parser.node; + } + } + getValue(path) { + if (!this.node || !path) { + return ""; + } + const node = this.node.searchNode((0, _core_utils.parseXFAPath)(path), 0); + if (!node) { + return ""; + } + const first = node.firstChild; + if (first?.nodeName === "value") { + return node.children.map(child => decodeString(child.textContent)); + } + return decodeString(node.textContent); + } +} +exports.DatasetReader = DatasetReader; + +/***/ }), +/* 103 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XRef = void 0; +var _util = __w_pdfjs_require__(2); +var _primitives = __w_pdfjs_require__(4); +var _parser = __w_pdfjs_require__(16); +var _core_utils = __w_pdfjs_require__(3); +var _base_stream = __w_pdfjs_require__(5); +var _crypto = __w_pdfjs_require__(68); +class XRef { + constructor(stream, pdfManager) { + this.stream = stream; + this.pdfManager = pdfManager; + this.entries = []; + this._xrefStms = new Set(); + this._cacheMap = new Map(); + this._pendingRefs = new _primitives.RefSet(); + this._newPersistentRefNum = null; + this._newTemporaryRefNum = null; + } + getNewPersistentRef(obj) { + if (this._newPersistentRefNum === null) { + this._newPersistentRefNum = this.entries.length || 1; + } + const num = this._newPersistentRefNum++; + this._cacheMap.set(num, obj); + return _primitives.Ref.get(num, 0); + } + getNewTemporaryRef() { + if (this._newTemporaryRefNum === null) { + this._newTemporaryRefNum = this.entries.length || 1; + } + return _primitives.Ref.get(this._newTemporaryRefNum++, 0); + } + resetNewTemporaryRef() { + this._newTemporaryRefNum = null; + } + setStartXRef(startXRef) { + this.startXRefQueue = [startXRef]; + } + parse(recoveryMode = false) { + let trailerDict; + if (!recoveryMode) { + trailerDict = this.readXRef(); + } else { + (0, _util.warn)("Indexing all PDF objects"); + trailerDict = this.indexObjects(); + } + trailerDict.assignXref(this); + this.trailer = trailerDict; + let encrypt; + try { + encrypt = trailerDict.get("Encrypt"); + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + (0, _util.warn)(`XRef.parse - Invalid "Encrypt" reference: "${ex}".`); + } + if (encrypt instanceof _primitives.Dict) { + const ids = trailerDict.get("ID"); + const fileId = ids?.length ? ids[0] : ""; + encrypt.suppressEncryption = true; + this.encrypt = new _crypto.CipherTransformFactory(encrypt, fileId, this.pdfManager.password); + } + let root; + try { + root = trailerDict.get("Root"); + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + (0, _util.warn)(`XRef.parse - Invalid "Root" reference: "${ex}".`); + } + if (root instanceof _primitives.Dict) { + try { + const pages = root.get("Pages"); + if (pages instanceof _primitives.Dict) { + this.root = root; + return; + } + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + (0, _util.warn)(`XRef.parse - Invalid "Pages" reference: "${ex}".`); + } + } + if (!recoveryMode) { + throw new _core_utils.XRefParseException(); + } + throw new _util.InvalidPDFException("Invalid Root reference."); + } + processXRefTable(parser) { + if (!("tableState" in this)) { + this.tableState = { + entryNum: 0, + streamPos: parser.lexer.stream.pos, + parserBuf1: parser.buf1, + parserBuf2: parser.buf2 + }; + } + const obj = this.readXRefTable(parser); + if (!(0, _primitives.isCmd)(obj, "trailer")) { + throw new _util.FormatError("Invalid XRef table: could not find trailer dictionary"); + } + let dict = parser.getObj(); + if (!(dict instanceof _primitives.Dict) && dict.dict) { + dict = dict.dict; + } + if (!(dict instanceof _primitives.Dict)) { + throw new _util.FormatError("Invalid XRef table: could not parse trailer dictionary"); + } + delete this.tableState; + return dict; + } + readXRefTable(parser) { + const stream = parser.lexer.stream; + const tableState = this.tableState; + stream.pos = tableState.streamPos; + parser.buf1 = tableState.parserBuf1; + parser.buf2 = tableState.parserBuf2; + let obj; + while (true) { + if (!("firstEntryNum" in tableState) || !("entryCount" in tableState)) { + if ((0, _primitives.isCmd)(obj = parser.getObj(), "trailer")) { + break; + } + tableState.firstEntryNum = obj; + tableState.entryCount = parser.getObj(); + } + let first = tableState.firstEntryNum; + const count = tableState.entryCount; + if (!Number.isInteger(first) || !Number.isInteger(count)) { + throw new _util.FormatError("Invalid XRef table: wrong types in subsection header"); + } + for (let i = tableState.entryNum; i < count; i++) { + tableState.streamPos = stream.pos; + tableState.entryNum = i; + tableState.parserBuf1 = parser.buf1; + tableState.parserBuf2 = parser.buf2; + const entry = {}; + entry.offset = parser.getObj(); + entry.gen = parser.getObj(); + const type = parser.getObj(); + if (type instanceof _primitives.Cmd) { + switch (type.cmd) { + case "f": + entry.free = true; + break; + case "n": + entry.uncompressed = true; + break; + } + } + if (!Number.isInteger(entry.offset) || !Number.isInteger(entry.gen) || !(entry.free || entry.uncompressed)) { + throw new _util.FormatError(`Invalid entry in XRef subsection: ${first}, ${count}`); + } + if (i === 0 && entry.free && first === 1) { + first = 0; + } + if (!this.entries[i + first]) { + this.entries[i + first] = entry; + } + } + tableState.entryNum = 0; + tableState.streamPos = stream.pos; + tableState.parserBuf1 = parser.buf1; + tableState.parserBuf2 = parser.buf2; + delete tableState.firstEntryNum; + delete tableState.entryCount; + } + if (this.entries[0] && !this.entries[0].free) { + throw new _util.FormatError("Invalid XRef table: unexpected first object"); + } + return obj; + } + processXRefStream(stream) { + if (!("streamState" in this)) { + const streamParameters = stream.dict; + const byteWidths = streamParameters.get("W"); + let range = streamParameters.get("Index"); + if (!range) { + range = [0, streamParameters.get("Size")]; + } + this.streamState = { + entryRanges: range, + byteWidths, + entryNum: 0, + streamPos: stream.pos + }; + } + this.readXRefStream(stream); + delete this.streamState; + return stream.dict; + } + readXRefStream(stream) { + const streamState = this.streamState; + stream.pos = streamState.streamPos; + const [typeFieldWidth, offsetFieldWidth, generationFieldWidth] = streamState.byteWidths; + const entryRanges = streamState.entryRanges; + while (entryRanges.length > 0) { + const [first, n] = entryRanges; + if (!Number.isInteger(first) || !Number.isInteger(n)) { + throw new _util.FormatError(`Invalid XRef range fields: ${first}, ${n}`); + } + if (!Number.isInteger(typeFieldWidth) || !Number.isInteger(offsetFieldWidth) || !Number.isInteger(generationFieldWidth)) { + throw new _util.FormatError(`Invalid XRef entry fields length: ${first}, ${n}`); + } + for (let i = streamState.entryNum; i < n; ++i) { + streamState.entryNum = i; + streamState.streamPos = stream.pos; + let type = 0, + offset = 0, + generation = 0; + for (let j = 0; j < typeFieldWidth; ++j) { + const typeByte = stream.getByte(); + if (typeByte === -1) { + throw new _util.FormatError("Invalid XRef byteWidths 'type'."); + } + type = type << 8 | typeByte; + } + if (typeFieldWidth === 0) { + type = 1; + } + for (let j = 0; j < offsetFieldWidth; ++j) { + const offsetByte = stream.getByte(); + if (offsetByte === -1) { + throw new _util.FormatError("Invalid XRef byteWidths 'offset'."); + } + offset = offset << 8 | offsetByte; + } + for (let j = 0; j < generationFieldWidth; ++j) { + const generationByte = stream.getByte(); + if (generationByte === -1) { + throw new _util.FormatError("Invalid XRef byteWidths 'generation'."); + } + generation = generation << 8 | generationByte; + } + const entry = {}; + entry.offset = offset; + entry.gen = generation; + switch (type) { + case 0: + entry.free = true; + break; + case 1: + entry.uncompressed = true; + break; + case 2: + break; + default: + throw new _util.FormatError(`Invalid XRef entry type: ${type}`); + } + if (!this.entries[first + i]) { + this.entries[first + i] = entry; + } + } + streamState.entryNum = 0; + streamState.streamPos = stream.pos; + entryRanges.splice(0, 2); + } + } + indexObjects() { + const TAB = 0x9, + LF = 0xa, + CR = 0xd, + SPACE = 0x20; + const PERCENT = 0x25, + LT = 0x3c; + function readToken(data, offset) { + let token = "", + ch = data[offset]; + while (ch !== LF && ch !== CR && ch !== LT) { + if (++offset >= data.length) { + break; + } + token += String.fromCharCode(ch); + ch = data[offset]; + } + return token; + } + function skipUntil(data, offset, what) { + const length = what.length, + dataLength = data.length; + let skipped = 0; + while (offset < dataLength) { + let i = 0; + while (i < length && data[offset + i] === what[i]) { + ++i; + } + if (i >= length) { + break; + } + offset++; + skipped++; + } + return skipped; + } + const gEndobjRegExp = /\b(endobj|\d+\s+\d+\s+obj|xref|trailer)\b/g; + const gStartxrefRegExp = /\b(startxref|\d+\s+\d+\s+obj)\b/g; + const objRegExp = /^(\d+)\s+(\d+)\s+obj\b/; + const trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]); + const startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114, 101, 102]); + const xrefBytes = new Uint8Array([47, 88, 82, 101, 102]); + this.entries.length = 0; + this._cacheMap.clear(); + const stream = this.stream; + stream.pos = 0; + const buffer = stream.getBytes(), + bufferStr = (0, _util.bytesToString)(buffer), + length = buffer.length; + let position = stream.start; + const trailers = [], + xrefStms = []; + while (position < length) { + let ch = buffer[position]; + if (ch === TAB || ch === LF || ch === CR || ch === SPACE) { + ++position; + continue; + } + if (ch === PERCENT) { + do { + ++position; + if (position >= length) { + break; + } + ch = buffer[position]; + } while (ch !== LF && ch !== CR); + continue; + } + const token = readToken(buffer, position); + let m; + if (token.startsWith("xref") && (token.length === 4 || /\s/.test(token[4]))) { + position += skipUntil(buffer, position, trailerBytes); + trailers.push(position); + position += skipUntil(buffer, position, startxrefBytes); + } else if (m = objRegExp.exec(token)) { + const num = m[1] | 0, + gen = m[2] | 0; + const startPos = position + token.length; + let contentLength, + updateEntries = false; + if (!this.entries[num]) { + updateEntries = true; + } else if (this.entries[num].gen === gen) { + try { + const parser = new _parser.Parser({ + lexer: new _parser.Lexer(stream.makeSubStream(startPos)) + }); + parser.getObj(); + updateEntries = true; + } catch (ex) { + if (ex instanceof _core_utils.ParserEOFException) { + (0, _util.warn)(`indexObjects -- checking object (${token}): "${ex}".`); + } else { + updateEntries = true; + } + } + } + if (updateEntries) { + this.entries[num] = { + offset: position - stream.start, + gen, + uncompressed: true + }; + } + gEndobjRegExp.lastIndex = startPos; + const match = gEndobjRegExp.exec(bufferStr); + if (match) { + const endPos = gEndobjRegExp.lastIndex + 1; + contentLength = endPos - position; + if (match[1] !== "endobj") { + (0, _util.warn)(`indexObjects: Found "${match[1]}" inside of another "obj", ` + 'caused by missing "endobj" -- trying to recover.'); + contentLength -= match[1].length + 1; + } + } else { + contentLength = length - position; + } + const content = buffer.subarray(position, position + contentLength); + const xrefTagOffset = skipUntil(content, 0, xrefBytes); + if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) { + xrefStms.push(position - stream.start); + this._xrefStms.add(position - stream.start); + } + position += contentLength; + } else if (token.startsWith("trailer") && (token.length === 7 || /\s/.test(token[7]))) { + trailers.push(position); + const startPos = position + token.length; + let contentLength; + gStartxrefRegExp.lastIndex = startPos; + const match = gStartxrefRegExp.exec(bufferStr); + if (match) { + const endPos = gStartxrefRegExp.lastIndex + 1; + contentLength = endPos - position; + if (match[1] !== "startxref") { + (0, _util.warn)(`indexObjects: Found "${match[1]}" after "trailer", ` + 'caused by missing "startxref" -- trying to recover.'); + contentLength -= match[1].length + 1; + } + } else { + contentLength = length - position; + } + position += contentLength; + } else { + position += token.length + 1; + } + } + for (const xrefStm of xrefStms) { + this.startXRefQueue.push(xrefStm); + this.readXRef(true); + } + const trailerDicts = []; + let isEncrypted = false; + for (const trailer of trailers) { + stream.pos = trailer; + const parser = new _parser.Parser({ + lexer: new _parser.Lexer(stream), + xref: this, + allowStreams: true, + recoveryMode: true + }); + const obj = parser.getObj(); + if (!(0, _primitives.isCmd)(obj, "trailer")) { + continue; + } + const dict = parser.getObj(); + if (!(dict instanceof _primitives.Dict)) { + continue; + } + trailerDicts.push(dict); + if (dict.has("Encrypt")) { + isEncrypted = true; + } + } + let trailerDict, trailerError; + for (const dict of [...trailerDicts, "genFallback", ...trailerDicts]) { + if (dict === "genFallback") { + if (!trailerError) { + break; + } + this._generationFallback = true; + continue; + } + let validPagesDict = false; + try { + const rootDict = dict.get("Root"); + if (!(rootDict instanceof _primitives.Dict)) { + continue; + } + const pagesDict = rootDict.get("Pages"); + if (!(pagesDict instanceof _primitives.Dict)) { + continue; + } + const pagesCount = pagesDict.get("Count"); + if (Number.isInteger(pagesCount)) { + validPagesDict = true; + } + } catch (ex) { + trailerError = ex; + continue; + } + if (validPagesDict && (!isEncrypted || dict.has("Encrypt")) && dict.has("ID")) { + return dict; + } + trailerDict = dict; + } + if (trailerDict) { + return trailerDict; + } + if (this.topDict) { + return this.topDict; + } + throw new _util.InvalidPDFException("Invalid PDF structure."); + } + readXRef(recoveryMode = false) { + const stream = this.stream; + const startXRefParsedCache = new Set(); + while (this.startXRefQueue.length) { + try { + const startXRef = this.startXRefQueue[0]; + if (startXRefParsedCache.has(startXRef)) { + (0, _util.warn)("readXRef - skipping XRef table since it was already parsed."); + this.startXRefQueue.shift(); + continue; + } + startXRefParsedCache.add(startXRef); + stream.pos = startXRef + stream.start; + const parser = new _parser.Parser({ + lexer: new _parser.Lexer(stream), + xref: this, + allowStreams: true + }); + let obj = parser.getObj(); + let dict; + if ((0, _primitives.isCmd)(obj, "xref")) { + dict = this.processXRefTable(parser); + if (!this.topDict) { + this.topDict = dict; + } + obj = dict.get("XRefStm"); + if (Number.isInteger(obj) && !this._xrefStms.has(obj)) { + this._xrefStms.add(obj); + this.startXRefQueue.push(obj); + } + } else if (Number.isInteger(obj)) { + if (!Number.isInteger(parser.getObj()) || !(0, _primitives.isCmd)(parser.getObj(), "obj") || !((obj = parser.getObj()) instanceof _base_stream.BaseStream)) { + throw new _util.FormatError("Invalid XRef stream"); + } + dict = this.processXRefStream(obj); + if (!this.topDict) { + this.topDict = dict; + } + if (!dict) { + throw new _util.FormatError("Failed to read XRef stream"); + } + } else { + throw new _util.FormatError("Invalid XRef stream header"); + } + obj = dict.get("Prev"); + if (Number.isInteger(obj)) { + this.startXRefQueue.push(obj); + } else if (obj instanceof _primitives.Ref) { + this.startXRefQueue.push(obj.num); + } + } catch (e) { + if (e instanceof _core_utils.MissingDataException) { + throw e; + } + (0, _util.info)("(while reading XRef): " + e); + } + this.startXRefQueue.shift(); + } + if (this.topDict) { + return this.topDict; + } + if (recoveryMode) { + return undefined; + } + throw new _core_utils.XRefParseException(); + } + get lastXRefStreamPos() { + return this._xrefStms.size > 0 ? Math.max(...this._xrefStms) : null; + } + getEntry(i) { + const xrefEntry = this.entries[i]; + if (xrefEntry && !xrefEntry.free && xrefEntry.offset) { + return xrefEntry; + } + return null; + } + fetchIfRef(obj, suppressEncryption = false) { + if (obj instanceof _primitives.Ref) { + return this.fetch(obj, suppressEncryption); + } + return obj; + } + fetch(ref, suppressEncryption = false) { + if (!(ref instanceof _primitives.Ref)) { + throw new Error("ref object is not a reference"); + } + const num = ref.num; + const cacheEntry = this._cacheMap.get(num); + if (cacheEntry !== undefined) { + if (cacheEntry instanceof _primitives.Dict && !cacheEntry.objId) { + cacheEntry.objId = ref.toString(); + } + return cacheEntry; + } + let xrefEntry = this.getEntry(num); + if (xrefEntry === null) { + this._cacheMap.set(num, xrefEntry); + return xrefEntry; + } + if (this._pendingRefs.has(ref)) { + this._pendingRefs.remove(ref); + (0, _util.warn)(`Ignoring circular reference: ${ref}.`); + return _primitives.CIRCULAR_REF; + } + this._pendingRefs.put(ref); + try { + if (xrefEntry.uncompressed) { + xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption); + } else { + xrefEntry = this.fetchCompressed(ref, xrefEntry, suppressEncryption); + } + this._pendingRefs.remove(ref); + } catch (ex) { + this._pendingRefs.remove(ref); + throw ex; + } + if (xrefEntry instanceof _primitives.Dict) { + xrefEntry.objId = ref.toString(); + } else if (xrefEntry instanceof _base_stream.BaseStream) { + xrefEntry.dict.objId = ref.toString(); + } + return xrefEntry; + } + fetchUncompressed(ref, xrefEntry, suppressEncryption = false) { + const gen = ref.gen; + let num = ref.num; + if (xrefEntry.gen !== gen) { + const msg = `Inconsistent generation in XRef: ${ref}`; + if (this._generationFallback && xrefEntry.gen < gen) { + (0, _util.warn)(msg); + return this.fetchUncompressed(_primitives.Ref.get(num, xrefEntry.gen), xrefEntry, suppressEncryption); + } + throw new _core_utils.XRefEntryException(msg); + } + const stream = this.stream.makeSubStream(xrefEntry.offset + this.stream.start); + const parser = new _parser.Parser({ + lexer: new _parser.Lexer(stream), + xref: this, + allowStreams: true + }); + const obj1 = parser.getObj(); + const obj2 = parser.getObj(); + const obj3 = parser.getObj(); + if (obj1 !== num || obj2 !== gen || !(obj3 instanceof _primitives.Cmd)) { + throw new _core_utils.XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`); + } + if (obj3.cmd !== "obj") { + if (obj3.cmd.startsWith("obj")) { + num = parseInt(obj3.cmd.substring(3), 10); + if (!Number.isNaN(num)) { + return num; + } + } + throw new _core_utils.XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`); + } + if (this.encrypt && !suppressEncryption) { + xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen)); + } else { + xrefEntry = parser.getObj(); + } + if (!(xrefEntry instanceof _base_stream.BaseStream)) { + this._cacheMap.set(num, xrefEntry); + } + return xrefEntry; + } + fetchCompressed(ref, xrefEntry, suppressEncryption = false) { + const tableOffset = xrefEntry.offset; + const stream = this.fetch(_primitives.Ref.get(tableOffset, 0)); + if (!(stream instanceof _base_stream.BaseStream)) { + throw new _util.FormatError("bad ObjStm stream"); + } + const first = stream.dict.get("First"); + const n = stream.dict.get("N"); + if (!Number.isInteger(first) || !Number.isInteger(n)) { + throw new _util.FormatError("invalid first and n parameters for ObjStm stream"); + } + let parser = new _parser.Parser({ + lexer: new _parser.Lexer(stream), + xref: this, + allowStreams: true + }); + const nums = new Array(n); + const offsets = new Array(n); + for (let i = 0; i < n; ++i) { + const num = parser.getObj(); + if (!Number.isInteger(num)) { + throw new _util.FormatError(`invalid object number in the ObjStm stream: ${num}`); + } + const offset = parser.getObj(); + if (!Number.isInteger(offset)) { + throw new _util.FormatError(`invalid object offset in the ObjStm stream: ${offset}`); + } + nums[i] = num; + offsets[i] = offset; + } + const start = (stream.start || 0) + first; + const entries = new Array(n); + for (let i = 0; i < n; ++i) { + const length = i < n - 1 ? offsets[i + 1] - offsets[i] : undefined; + if (length < 0) { + throw new _util.FormatError("Invalid offset in the ObjStm stream."); + } + parser = new _parser.Parser({ + lexer: new _parser.Lexer(stream.makeSubStream(start + offsets[i], length, stream.dict)), + xref: this, + allowStreams: true + }); + const obj = parser.getObj(); + entries[i] = obj; + if (obj instanceof _base_stream.BaseStream) { + continue; + } + const num = nums[i], + entry = this.entries[num]; + if (entry && entry.offset === tableOffset && entry.gen === i) { + this._cacheMap.set(num, obj); + } + } + xrefEntry = entries[xrefEntry.gen]; + if (xrefEntry === undefined) { + throw new _core_utils.XRefEntryException(`Bad (compressed) XRef entry: ${ref}`); + } + return xrefEntry; + } + async fetchIfRefAsync(obj, suppressEncryption) { + if (obj instanceof _primitives.Ref) { + return this.fetchAsync(obj, suppressEncryption); + } + return obj; + } + async fetchAsync(ref, suppressEncryption) { + try { + return this.fetch(ref, suppressEncryption); + } catch (ex) { + if (!(ex instanceof _core_utils.MissingDataException)) { + throw ex; + } + await this.pdfManager.requestRange(ex.begin, ex.end); + return this.fetchAsync(ref, suppressEncryption); + } + } + getCatalogObj() { + return this.root; + } +} +exports.XRef = XRef; + +/***/ }), +/* 104 */ +/***/ ((__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; + +/***/ }), +/* 105 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MessageHandler = void 0; +var _util = __w_pdfjs_require__(2); +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 = new _util.PromiseCapability(); + 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 = new _util.PromiseCapability(); + 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 = new _util.PromiseCapability(); + 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 = new _util.PromiseCapability(); + 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 = new _util.PromiseCapability(); + 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: new _util.PromiseCapability(), + 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?.()); + }).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?.(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?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]); + delete this.streamControllers[streamId]; + } + destroy() { + this.comObj.removeEventListener("message", this._onComObjOnMessage); + } +} +exports.MessageHandler = MessageHandler; + +/***/ }), +/* 106 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFWorkerStream = void 0; +var _util = __w_pdfjs_require__(2); +class PDFWorkerStream { + constructor(msgHandler) { + this._msgHandler = msgHandler; + this._contentLength = null; + this._fullRequestReader = null; + this._rangeRequestReaders = []; + } + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFWorkerStream.getFullReader can only be called once."); + this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler); + return this._fullRequestReader; + } + getRangeReader(begin, end) { + const reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler); + 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.PDFWorkerStream = PDFWorkerStream; +class PDFWorkerStreamReader { + constructor(msgHandler) { + this._msgHandler = msgHandler; + this.onProgress = null; + this._contentLength = null; + this._isRangeSupported = false; + this._isStreamingSupported = false; + const readableStream = this._msgHandler.sendWithStream("GetReader"); + this._reader = readableStream.getReader(); + this._headersReady = this._msgHandler.sendWithPromise("ReaderHeadersReady").then(data => { + this._isStreamingSupported = data.isStreamingSupported; + this._isRangeSupported = data.isRangeSupported; + this._contentLength = data.contentLength; + }); + } + get headersReady() { + return this._headersReady; + } + get contentLength() { + return this._contentLength; + } + get isStreamingSupported() { + return this._isStreamingSupported; + } + get isRangeSupported() { + return this._isRangeSupported; + } + async read() { + const { + value, + done + } = await this._reader.read(); + if (done) { + return { + value: undefined, + done: true + }; + } + return { + value: value.buffer, + done: false + }; + } + cancel(reason) { + this._reader.cancel(reason); + } +} +class PDFWorkerStreamRangeReader { + constructor(begin, end, msgHandler) { + this._msgHandler = msgHandler; + this.onProgress = null; + const readableStream = this._msgHandler.sendWithStream("GetRangeReader", { + begin, + end + }); + this._reader = readableStream.getReader(); + } + get isStreamingSupported() { + return false; + } + async read() { + const { + value, + done + } = await this._reader.read(); + if (done) { + return { + value: undefined, + done: true + }; + } + return { + value: value.buffer, + done: false + }; + } + cancel(reason) { + this._reader.cancel(reason); + } +} + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // 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; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __w_pdfjs_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__w_pdfjs_require__.o(definition, key) && !__w_pdfjs_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __w_pdfjs_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __w_pdfjs_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +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, "WorkerMessageHandler", ({ + enumerable: true, + get: function () { + return _worker.WorkerMessageHandler; + } +})); +var _worker = __w_pdfjs_require__(1); +const pdfjsVersion = '3.8.162'; +const pdfjsBuild = '2c74323e3'; +})(); + +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=pdf.worker.js.map \ No newline at end of file diff --git a/media/js/pdf/web/custom.css b/media/js/pdf/web/custom.css new file mode 100644 index 0000000000..e72a916435 --- /dev/null +++ b/media/js/pdf/web/custom.css @@ -0,0 +1,24 @@ +#sidebarToggle::before { + -webkit-mask-image: url('./images/custom/thumbnail.svg'); + mask-image: url('./images/custom/thumbnail.svg'); +} + +#previous::before { + -webkit-mask-image: url('./images/custom/previous-page.svg'); + mask-image: url('./images/custom/previous-page.svg'); +} + +#next::before { + -webkit-mask-image: url('./images/custom/next-page.svg'); + mask-image: url('./images/custom/next-page.svg'); +} + +#firstPage::before { + -webkit-mask-image: url('./images/custom/first-page.svg'); + mask-image: url('./images/custom/first-page.svg'); +} + +#lastPage::before { + -webkit-mask-image: url('./images/custom/last-page.svg'); + mask-image: url('./images/custom/last-page.svg'); +} diff --git a/media/js/pdf/web/images/annotation-paperclip.svg b/media/js/pdf/web/images/annotation-paperclip.svg new file mode 100644 index 0000000000..2bed2250ae --- /dev/null +++ b/media/js/pdf/web/images/annotation-paperclip.svg @@ -0,0 +1,6 @@ + + + + diff --git a/media/js/pdf/web/images/annotation-pushpin.svg b/media/js/pdf/web/images/annotation-pushpin.svg new file mode 100644 index 0000000000..6e0896cf4a --- /dev/null +++ b/media/js/pdf/web/images/annotation-pushpin.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/media/js/pdf/web/images/cursor-editorFreeText.svg b/media/js/pdf/web/images/cursor-editorFreeText.svg new file mode 100644 index 0000000000..de2838ef10 --- /dev/null +++ b/media/js/pdf/web/images/cursor-editorFreeText.svg @@ -0,0 +1,3 @@ + + + diff --git a/media/js/pdf/web/images/cursor-editorInk.svg b/media/js/pdf/web/images/cursor-editorInk.svg new file mode 100644 index 0000000000..1dadb5c015 --- /dev/null +++ b/media/js/pdf/web/images/cursor-editorInk.svg @@ -0,0 +1,4 @@ + + + + diff --git a/media/js/pdf/web/images/custom/first-page.svg b/media/js/pdf/web/images/custom/first-page.svg new file mode 100644 index 0000000000..c020c5a6ce --- /dev/null +++ b/media/js/pdf/web/images/custom/first-page.svg @@ -0,0 +1,17 @@ + + + + +first-page + + + + + + + diff --git a/media/js/pdf/web/images/custom/last-page.svg b/media/js/pdf/web/images/custom/last-page.svg new file mode 100644 index 0000000000..8bd67c1518 --- /dev/null +++ b/media/js/pdf/web/images/custom/last-page.svg @@ -0,0 +1,16 @@ + + + + +last-page + + + + + + diff --git a/media/js/pdf/web/images/custom/next-page.svg b/media/js/pdf/web/images/custom/next-page.svg new file mode 100644 index 0000000000..8393b31b4a --- /dev/null +++ b/media/js/pdf/web/images/custom/next-page.svg @@ -0,0 +1,13 @@ + + + + +next-page + + + + diff --git a/media/js/pdf/web/images/custom/previous-page.svg b/media/js/pdf/web/images/custom/previous-page.svg new file mode 100644 index 0000000000..07b85df130 --- /dev/null +++ b/media/js/pdf/web/images/custom/previous-page.svg @@ -0,0 +1,13 @@ + + + + +previous-page + + + + diff --git a/media/js/pdf/web/images/custom/print.svg b/media/js/pdf/web/images/custom/print.svg new file mode 100644 index 0000000000..578d486ed3 --- /dev/null +++ b/media/js/pdf/web/images/custom/print.svg @@ -0,0 +1,11 @@ + + + + + + diff --git a/media/js/pdf/web/images/custom/thumbnail.svg b/media/js/pdf/web/images/custom/thumbnail.svg new file mode 100644 index 0000000000..ad532aa0cf --- /dev/null +++ b/media/js/pdf/web/images/custom/thumbnail.svg @@ -0,0 +1,15 @@ + + + + +thumbnail + + + + diff --git a/media/js/pdf/web/images/findbarButton-next.svg b/media/js/pdf/web/images/findbarButton-next.svg index a81eb02962..8cb39bec6f 100644 --- a/media/js/pdf/web/images/findbarButton-next.svg +++ b/media/js/pdf/web/images/findbarButton-next.svg @@ -1,4 +1,3 @@ - - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/findbarButton-previous.svg b/media/js/pdf/web/images/findbarButton-previous.svg index 5fd7032259..b610879daf 100644 --- a/media/js/pdf/web/images/findbarButton-previous.svg +++ b/media/js/pdf/web/images/findbarButton-previous.svg @@ -1,4 +1,3 @@ - - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/gv-toolbarButton-download.svg b/media/js/pdf/web/images/gv-toolbarButton-download.svg new file mode 100644 index 0000000000..d56cf3ce70 --- /dev/null +++ b/media/js/pdf/web/images/gv-toolbarButton-download.svg @@ -0,0 +1,3 @@ + + + diff --git a/media/js/pdf/web/images/gv-toolbarButton-openinapp.svg b/media/js/pdf/web/images/gv-toolbarButton-openinapp.svg new file mode 100644 index 0000000000..80ec891aad --- /dev/null +++ b/media/js/pdf/web/images/gv-toolbarButton-openinapp.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/media/js/pdf/web/images/secondaryToolbarButton-documentProperties.svg b/media/js/pdf/web/images/secondaryToolbarButton-documentProperties.svg index 6bd55cda78..dd3917b91d 100644 --- a/media/js/pdf/web/images/secondaryToolbarButton-documentProperties.svg +++ b/media/js/pdf/web/images/secondaryToolbarButton-documentProperties.svg @@ -1,15 +1,3 @@ - - - - - - - - - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/secondaryToolbarButton-firstPage.svg b/media/js/pdf/web/images/secondaryToolbarButton-firstPage.svg index 2fa0fa6da5..f5c917f12a 100644 --- a/media/js/pdf/web/images/secondaryToolbarButton-firstPage.svg +++ b/media/js/pdf/web/images/secondaryToolbarButton-firstPage.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/secondaryToolbarButton-handTool.svg b/media/js/pdf/web/images/secondaryToolbarButton-handTool.svg index 3d038fabb7..b7073b5989 100644 --- a/media/js/pdf/web/images/secondaryToolbarButton-handTool.svg +++ b/media/js/pdf/web/images/secondaryToolbarButton-handTool.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/secondaryToolbarButton-lastPage.svg b/media/js/pdf/web/images/secondaryToolbarButton-lastPage.svg index 53fa9a6d07..c04f65079c 100644 --- a/media/js/pdf/web/images/secondaryToolbarButton-lastPage.svg +++ b/media/js/pdf/web/images/secondaryToolbarButton-lastPage.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/secondaryToolbarButton-rotateCcw.svg b/media/js/pdf/web/images/secondaryToolbarButton-rotateCcw.svg index c71ea8e8d4..da73a1b16b 100644 --- a/media/js/pdf/web/images/secondaryToolbarButton-rotateCcw.svg +++ b/media/js/pdf/web/images/secondaryToolbarButton-rotateCcw.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/secondaryToolbarButton-rotateCw.svg b/media/js/pdf/web/images/secondaryToolbarButton-rotateCw.svg index e1e19e73d2..c41ce7365e 100644 --- a/media/js/pdf/web/images/secondaryToolbarButton-rotateCw.svg +++ b/media/js/pdf/web/images/secondaryToolbarButton-rotateCw.svg @@ -1,4 +1,3 @@ - - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/secondaryToolbarButton-scrollHorizontal.svg b/media/js/pdf/web/images/secondaryToolbarButton-scrollHorizontal.svg index 8693eec397..fb440b9465 100644 --- a/media/js/pdf/web/images/secondaryToolbarButton-scrollHorizontal.svg +++ b/media/js/pdf/web/images/secondaryToolbarButton-scrollHorizontal.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/secondaryToolbarButton-scrollPage.svg b/media/js/pdf/web/images/secondaryToolbarButton-scrollPage.svg new file mode 100644 index 0000000000..64a9f50073 --- /dev/null +++ b/media/js/pdf/web/images/secondaryToolbarButton-scrollPage.svg @@ -0,0 +1,3 @@ + + + diff --git a/media/js/pdf/web/images/secondaryToolbarButton-scrollVertical.svg b/media/js/pdf/web/images/secondaryToolbarButton-scrollVertical.svg index ee1cf22f98..dc7e805200 100644 --- a/media/js/pdf/web/images/secondaryToolbarButton-scrollVertical.svg +++ b/media/js/pdf/web/images/secondaryToolbarButton-scrollVertical.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/secondaryToolbarButton-scrollWrapped.svg b/media/js/pdf/web/images/secondaryToolbarButton-scrollWrapped.svg index 804e7469bf..75fe26bcfc 100644 --- a/media/js/pdf/web/images/secondaryToolbarButton-scrollWrapped.svg +++ b/media/js/pdf/web/images/secondaryToolbarButton-scrollWrapped.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/secondaryToolbarButton-selectTool.svg b/media/js/pdf/web/images/secondaryToolbarButton-selectTool.svg index 43e9789444..94d51410dd 100644 --- a/media/js/pdf/web/images/secondaryToolbarButton-selectTool.svg +++ b/media/js/pdf/web/images/secondaryToolbarButton-selectTool.svg @@ -1,4 +1,3 @@ - - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/secondaryToolbarButton-spreadEven.svg b/media/js/pdf/web/images/secondaryToolbarButton-spreadEven.svg index ddec5e68d5..ce201e33c0 100644 --- a/media/js/pdf/web/images/secondaryToolbarButton-spreadEven.svg +++ b/media/js/pdf/web/images/secondaryToolbarButton-spreadEven.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/secondaryToolbarButton-spreadNone.svg b/media/js/pdf/web/images/secondaryToolbarButton-spreadNone.svg index 63318c56ba..e8d487fa38 100644 --- a/media/js/pdf/web/images/secondaryToolbarButton-spreadNone.svg +++ b/media/js/pdf/web/images/secondaryToolbarButton-spreadNone.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/secondaryToolbarButton-spreadOdd.svg b/media/js/pdf/web/images/secondaryToolbarButton-spreadOdd.svg index 29909e9fac..9211a427bf 100644 --- a/media/js/pdf/web/images/secondaryToolbarButton-spreadOdd.svg +++ b/media/js/pdf/web/images/secondaryToolbarButton-spreadOdd.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/toolbarButton-bookmark.svg b/media/js/pdf/web/images/toolbarButton-bookmark.svg index 79d39b090e..c4c37c9058 100644 --- a/media/js/pdf/web/images/toolbarButton-bookmark.svg +++ b/media/js/pdf/web/images/toolbarButton-bookmark.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/toolbarButton-currentOutlineItem.svg b/media/js/pdf/web/images/toolbarButton-currentOutlineItem.svg index c1c72b2080..01e67623bf 100644 --- a/media/js/pdf/web/images/toolbarButton-currentOutlineItem.svg +++ b/media/js/pdf/web/images/toolbarButton-currentOutlineItem.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/toolbarButton-download.svg b/media/js/pdf/web/images/toolbarButton-download.svg index 2cdb5db3c7..e2e850adf7 100644 --- a/media/js/pdf/web/images/toolbarButton-download.svg +++ b/media/js/pdf/web/images/toolbarButton-download.svg @@ -1,4 +1,4 @@ - - \ No newline at end of file + + + + diff --git a/media/js/pdf/web/images/toolbarButton-editorFreeText.svg b/media/js/pdf/web/images/toolbarButton-editorFreeText.svg new file mode 100644 index 0000000000..e4db3a57c5 --- /dev/null +++ b/media/js/pdf/web/images/toolbarButton-editorFreeText.svg @@ -0,0 +1,3 @@ + + + diff --git a/media/js/pdf/web/images/toolbarButton-editorInk.svg b/media/js/pdf/web/images/toolbarButton-editorInk.svg new file mode 100644 index 0000000000..b579eec7ee --- /dev/null +++ b/media/js/pdf/web/images/toolbarButton-editorInk.svg @@ -0,0 +1,4 @@ + + + + diff --git a/media/js/pdf/web/images/toolbarButton-menuArrow.svg b/media/js/pdf/web/images/toolbarButton-menuArrow.svg index 46e41e18c5..82ffeaabb9 100644 --- a/media/js/pdf/web/images/toolbarButton-menuArrow.svg +++ b/media/js/pdf/web/images/toolbarButton-menuArrow.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/toolbarButton-openFile.svg b/media/js/pdf/web/images/toolbarButton-openFile.svg index cb35980f0e..e773781d60 100644 --- a/media/js/pdf/web/images/toolbarButton-openFile.svg +++ b/media/js/pdf/web/images/toolbarButton-openFile.svg @@ -1,4 +1,3 @@ - - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/toolbarButton-pageDown.svg b/media/js/pdf/web/images/toolbarButton-pageDown.svg index c5d8b0f3fc..1fc12e733d 100644 --- a/media/js/pdf/web/images/toolbarButton-pageDown.svg +++ b/media/js/pdf/web/images/toolbarButton-pageDown.svg @@ -1,7 +1,3 @@ - - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/toolbarButton-pageUp.svg b/media/js/pdf/web/images/toolbarButton-pageUp.svg index aa0160ab99..0936b9a578 100644 --- a/media/js/pdf/web/images/toolbarButton-pageUp.svg +++ b/media/js/pdf/web/images/toolbarButton-pageUp.svg @@ -1,12 +1,3 @@ - - - - - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/toolbarButton-presentationMode.svg b/media/js/pdf/web/images/toolbarButton-presentationMode.svg index 3f1f832e51..901d5672bc 100644 --- a/media/js/pdf/web/images/toolbarButton-presentationMode.svg +++ b/media/js/pdf/web/images/toolbarButton-presentationMode.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/toolbarButton-print.svg b/media/js/pdf/web/images/toolbarButton-print.svg index d521c9ad28..97a390474d 100644 --- a/media/js/pdf/web/images/toolbarButton-print.svg +++ b/media/js/pdf/web/images/toolbarButton-print.svg @@ -1,4 +1,3 @@ - - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/toolbarButton-search.svg b/media/js/pdf/web/images/toolbarButton-search.svg index 28b7774eb6..0cc7ae21ac 100644 --- a/media/js/pdf/web/images/toolbarButton-search.svg +++ b/media/js/pdf/web/images/toolbarButton-search.svg @@ -1,4 +1,3 @@ - - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/toolbarButton-secondaryToolbarToggle.svg b/media/js/pdf/web/images/toolbarButton-secondaryToolbarToggle.svg index dbef238040..cace863728 100644 --- a/media/js/pdf/web/images/toolbarButton-secondaryToolbarToggle.svg +++ b/media/js/pdf/web/images/toolbarButton-secondaryToolbarToggle.svg @@ -1,4 +1,3 @@ - - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/toolbarButton-sidebarToggle.svg b/media/js/pdf/web/images/toolbarButton-sidebarToggle.svg index 691c41cb10..1d8d0e4b23 100644 --- a/media/js/pdf/web/images/toolbarButton-sidebarToggle.svg +++ b/media/js/pdf/web/images/toolbarButton-sidebarToggle.svg @@ -1,4 +1,3 @@ - - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/toolbarButton-viewAttachments.svg b/media/js/pdf/web/images/toolbarButton-viewAttachments.svg index e914ec0833..ab73f6e6e0 100644 --- a/media/js/pdf/web/images/toolbarButton-viewAttachments.svg +++ b/media/js/pdf/web/images/toolbarButton-viewAttachments.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/toolbarButton-viewLayers.svg b/media/js/pdf/web/images/toolbarButton-viewLayers.svg index e8687b7704..1d72668264 100644 --- a/media/js/pdf/web/images/toolbarButton-viewLayers.svg +++ b/media/js/pdf/web/images/toolbarButton-viewLayers.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/toolbarButton-viewOutline.svg b/media/js/pdf/web/images/toolbarButton-viewOutline.svg index 030c28dfe1..7ed1bd97f2 100644 --- a/media/js/pdf/web/images/toolbarButton-viewOutline.svg +++ b/media/js/pdf/web/images/toolbarButton-viewOutline.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/toolbarButton-viewThumbnail.svg b/media/js/pdf/web/images/toolbarButton-viewThumbnail.svg index b997ec49a3..040d123266 100644 --- a/media/js/pdf/web/images/toolbarButton-viewThumbnail.svg +++ b/media/js/pdf/web/images/toolbarButton-viewThumbnail.svg @@ -1,4 +1,3 @@ - - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/toolbarButton-zoomIn.svg b/media/js/pdf/web/images/toolbarButton-zoomIn.svg index 480d2cef00..30ec51a2ff 100644 --- a/media/js/pdf/web/images/toolbarButton-zoomIn.svg +++ b/media/js/pdf/web/images/toolbarButton-zoomIn.svg @@ -1,4 +1,3 @@ - - \ No newline at end of file + + + diff --git a/media/js/pdf/web/images/toolbarButton-zoomOut.svg b/media/js/pdf/web/images/toolbarButton-zoomOut.svg index 527f521068..f273b5995c 100644 --- a/media/js/pdf/web/images/toolbarButton-zoomOut.svg +++ b/media/js/pdf/web/images/toolbarButton-zoomOut.svg @@ -1,4 +1,3 @@ - - \ No newline at end of file + + + diff --git a/media/js/pdf/web/locale/ach/viewer.properties b/media/js/pdf/web/locale/ach/viewer.properties index 947228b76e..2d04fd075e 100644 --- a/media/js/pdf/web/locale/ach/viewer.properties +++ b/media/js/pdf/web/locale/ach/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Neno ma kombedi tools.title=Gintic tools_label=Gintic first_page.title=Cit i pot buk mukwongo -first_page.label=Cit i pot buk mukwongo first_page_label=Cit i pot buk mukwongo last_page.title=Cit i pot buk magiko -last_page.label=Cit i pot buk magiko last_page_label=Cit i pot buk magiko page_rotate_cw.title=Wire i tung lacuc -page_rotate_cw.label=Wire i tung lacuc page_rotate_cw_label=Wire i tung lacuc page_rotate_ccw.title=Wire i tung lacam -page_rotate_ccw.label=Wire i tung lacam page_rotate_ccw_label=Wire i tung lacam cursor_text_select_tool.title=Cak gitic me yero coc @@ -124,7 +120,6 @@ print_progress_close=Juki # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Lok gintic ma inget -toggle_sidebar_notification.title=Lok lanyut me nget (wiyewiye tye i gin acoya/attachments) toggle_sidebar_label=Lok gintic ma inget document_outline.title=Nyut Wiyewiye me Gin acoya (dii-kiryo me yaro/kano jami weng) document_outline_label=Pek pa gin acoya @@ -184,9 +179,6 @@ page_scale_actual=Dite kikome # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Bal - loading_error=Bal otime kun cano PDF. invalid_file_error=Pwail me PDF ma pe atir onyo obale woko. missing_file_error=Pwail me PDF tye ka rem. @@ -205,3 +197,4 @@ password_cancel=Juki printing_not_supported=Ciko: Layeny ma pe teno goyo liweng. printing_not_ready=Ciko: PDF pe ocane weng me agoya. web_fonts_disabled=Kijuko dit pa coc me kakube woko: pe romo tic ki dit pa coc me PDF ma kiketo i kine. + diff --git a/media/js/pdf/web/locale/af/viewer.properties b/media/js/pdf/web/locale/af/viewer.properties index 787c2727ce..7c8e48541a 100644 --- a/media/js/pdf/web/locale/af/viewer.properties +++ b/media/js/pdf/web/locale/af/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Huidige aansig tools.title=Nutsgoed tools_label=Nutsgoed first_page.title=Gaan na eerste bladsy -first_page.label=Gaan na eerste bladsy first_page_label=Gaan na eerste bladsy last_page.title=Gaan na laaste bladsy -last_page.label=Gaan na laaste bladsy last_page_label=Gaan na laaste bladsy page_rotate_cw.title=Roteer kloksgewys -page_rotate_cw.label=Roteer kloksgewys page_rotate_cw_label=Roteer kloksgewys page_rotate_ccw.title=Roteer anti-kloksgewys -page_rotate_ccw.label=Roteer anti-kloksgewys page_rotate_ccw_label=Roteer anti-kloksgewys cursor_text_select_tool.title=Aktiveer gereedskap om teks te merk @@ -101,7 +97,6 @@ print_progress_close=Kanselleer # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Sypaneel aan/af -toggle_sidebar_notification.title=Sypaneel aan/af (dokument bevat skema/aanhegsels) toggle_sidebar_label=Sypaneel aan/af document_outline.title=Wys dokumentskema (dubbelklik om alle items oop/toe te vou) document_outline_label=Dokumentoorsig @@ -161,9 +156,6 @@ page_scale_actual=Werklike grootte # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Fout - loading_error='n Fout het voorgekom met die laai van die PDF. invalid_file_error=Ongeldige of korrupte PDF-lêer. missing_file_error=PDF-lêer is weg. @@ -182,3 +174,4 @@ password_cancel=Kanselleer printing_not_supported=Waarskuwing: Dié blaaier ondersteun nie drukwerk ten volle nie. printing_not_ready=Waarskuwing: Die PDF is nog nie volledig gelaai vir drukwerk nie. web_fonts_disabled=Webfonte is gedeaktiveer: kan nie PDF-fonte wat ingebed is, gebruik nie. + diff --git a/media/js/pdf/web/locale/an/viewer.properties b/media/js/pdf/web/locale/an/viewer.properties index 4086a0a6ee..a33eb650cf 100644 --- a/media/js/pdf/web/locale/an/viewer.properties +++ b/media/js/pdf/web/locale/an/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Vista actual tools.title=Ferramientas tools_label=Ferramientas first_page.title=Ir ta la primer pachina -first_page.label=Ir ta la primer pachina first_page_label=Ir ta la primer pachina last_page.title=Ir ta la zaguer pachina -last_page.label=Ir ta la zaguera pachina last_page_label=Ir ta la zaguer pachina page_rotate_cw.title=Chirar enta la dreita -page_rotate_cw.label=Chirar enta la dreita page_rotate_cw_label=Chira enta la dreita page_rotate_ccw.title=Chirar enta la zurda -page_rotate_ccw.label=Chirar en sentiu antihorario page_rotate_ccw_label=Chirar enta la zurda cursor_text_select_tool.title=Activar la ferramienta de selección de texto @@ -137,7 +133,6 @@ print_progress_close=Cancelar # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Amostrar u amagar a barra lateral -toggle_sidebar_notification.title=Cambiar barra lateral (lo documento contiene esquema/adchuntos) toggle_sidebar_notification2.title=Cambiar barra lateral (lo documento contiene esquema/adchuntos/capas) toggle_sidebar_label=Amostrar a barra lateral document_outline.title=Amostrar esquema d'o documento (fer doble clic pa expandir/compactar totz los items) @@ -151,9 +146,6 @@ thumbs_label=Miniaturas findbar.title=Trobar en o documento findbar_label=Trobar -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Pachina {{page}} - additional_layers=Capas adicionals # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page @@ -226,9 +218,6 @@ page_scale_actual=Grandaria actual # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Error - loading_error=S'ha produciu una error en cargar o PDF. invalid_file_error=O PDF no ye valido u ye estorbau. missing_file_error=No i ha fichero PDF. @@ -251,3 +240,4 @@ password_cancel=Cancelar printing_not_supported=Pare cuenta: Iste navegador no maneya totalment as impresions. printing_not_ready=Aviso: Encara no se ha cargau completament o PDF ta imprentar-lo. web_fonts_disabled=As fuents web son desactivadas: no se puet incrustar fichers PDF. + diff --git a/media/js/pdf/web/locale/ar/viewer.properties b/media/js/pdf/web/locale/ar/viewer.properties index d37c3e12a3..1d389e8162 100644 --- a/media/js/pdf/web/locale/ar/viewer.properties +++ b/media/js/pdf/web/locale/ar/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=المنظور الحالي tools.title=الأدوات tools_label=الأدوات first_page.title=انتقل إلى الصفحة الأولى -first_page.label=انتقل إلى الصفحة الأولى first_page_label=انتقل إلى الصفحة الأولى last_page.title=انتقل إلى الصفحة الأخيرة -last_page.label=انتقل إلى الصفحة الأخيرة last_page_label=انتقل إلى الصفحة الأخيرة page_rotate_cw.title=أدر باتجاه عقارب الساعة -page_rotate_cw.label=أدر باتجاه عقارب الساعة page_rotate_cw_label=أدر باتجاه عقارب الساعة page_rotate_ccw.title=أدر بعكس اتجاه عقارب الساعة -page_rotate_ccw.label=أدر بعكس اتجاه عقارب الساعة page_rotate_ccw_label=أدر بعكس اتجاه عقارب الساعة cursor_text_select_tool.title=فعّل أداة اختيار النص @@ -137,7 +133,6 @@ print_progress_close=ألغِ # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=بدّل ظهور الشريط الجانبي -toggle_sidebar_notification.title=بدّل ظهور الشريط الجانبي (يحتوي المستند على مخطط أو مرفقات) toggle_sidebar_notification2.title=بدّل ظهور الشريط الجانبي (يحتوي المستند على مخطط أو مرفقات أو طبقات) toggle_sidebar_label=بدّل ظهور الشريط الجانبي document_outline.title=اعرض فهرس المستند (نقر مزدوج لتمديد أو تقليص كل العناصر) @@ -151,9 +146,6 @@ thumbs_label=مُصغّرات findbar.title=ابحث في المستند findbar_label=ابحث -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=صفحة {{page}} - additional_layers=الطبقات الإضافية # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=صفحة {{page}} @@ -228,9 +220,6 @@ page_scale_actual=الحجم الفعلي # numerical scale value. page_scale_percent={{scale}}٪ -# Loading indicator messages -loading_error_indicator=عطل - # Loading indicator messages loading=يحمّل… loading_error=حدث عطل أثناء تحميل ملف PDF. @@ -255,3 +244,4 @@ password_cancel=ألغِ printing_not_supported=تحذير: لا يدعم هذا المتصفح الطباعة بشكل كامل. printing_not_ready=تحذير: ملف PDF لم يُحمّل كاملًا للطباعة. web_fonts_disabled=خطوط الوب مُعطّلة: تعذّر استخدام خطوط PDF المُضمّنة. + diff --git a/media/js/pdf/web/locale/ast/viewer.properties b/media/js/pdf/web/locale/ast/viewer.properties index 6e02489da4..1f8bb2e57a 100644 --- a/media/js/pdf/web/locale/ast/viewer.properties +++ b/media/js/pdf/web/locale/ast/viewer.properties @@ -127,9 +127,6 @@ thumbs.title=Amosar les miniatures thumbs_label=Miniatures findbar_label=Atopar -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Páxina {{page}} - additional_layers=Capes adicionales # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Páxina {{page}} @@ -190,9 +187,6 @@ page_scale_actual=Tamañu real # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Fallu - # Loading indicator messages loading=Cargando… loading_error=Asocedió un fallu mentanto se cargaba'l PDF. diff --git a/media/js/pdf/web/locale/az/viewer.properties b/media/js/pdf/web/locale/az/viewer.properties index 667dc9fbdd..3cb27ecb28 100644 --- a/media/js/pdf/web/locale/az/viewer.properties +++ b/media/js/pdf/web/locale/az/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Hazırkı görünüş tools.title=Alətlər tools_label=Alətlər first_page.title=İlk Səhifəyə get -first_page.label=İlk Səhifəyə get first_page_label=İlk Səhifəyə get last_page.title=Son Səhifəyə get -last_page.label=Son Səhifəyə get last_page_label=Son Səhifəyə get page_rotate_cw.title=Saat İstiqamətində Fırlat -page_rotate_cw.label=Saat İstiqamətində Fırlat page_rotate_cw_label=Saat İstiqamətində Fırlat page_rotate_ccw.title=Saat İstiqamətinin Əksinə Fırlat -page_rotate_ccw.label=Saat İstiqamətinin Əksinə Fırlat page_rotate_ccw_label=Saat İstiqamətinin Əksinə Fırlat cursor_text_select_tool.title=Yazı seçmə alətini aktivləşdir @@ -137,7 +133,6 @@ print_progress_close=Ləğv et # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Yan Paneli Aç/Bağla -toggle_sidebar_notification.title=Yan paneli çevir (sənəddə icmal/bağlama var) toggle_sidebar_notification2.title=Yan paneli çevir (sənəddə icmal/bağlamalar/laylar mövcuddur) toggle_sidebar_label=Yan Paneli Aç/Bağla document_outline.title=Sənədin eskizini göstər (bütün bəndləri açmaq/yığmaq üçün iki dəfə klikləyin) @@ -151,9 +146,6 @@ thumbs_label=Kiçik şəkillər findbar.title=Sənəddə Tap findbar_label=Tap -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Səhifə {{page}} - additional_layers=Əlavə laylar # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page @@ -226,9 +218,6 @@ page_scale_actual=Hazırkı Həcm # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Səhv - loading_error=PDF yüklenərkən bir səhv yarandı. invalid_file_error=Səhv və ya zədələnmiş olmuş PDF fayl. missing_file_error=PDF fayl yoxdur. @@ -251,3 +240,4 @@ password_cancel=Ləğv et printing_not_supported=Xəbərdarlıq: Çap bu səyyah tərəfindən tam olaraq dəstəklənmir. printing_not_ready=Xəbərdarlıq: PDF çap üçün tam yüklənməyib. web_fonts_disabled=Web Şriftlər söndürülüb: yerləşdirilmiş PDF şriftlərini istifadə etmək mümkün deyil. + diff --git a/media/js/pdf/web/locale/be/viewer.properties b/media/js/pdf/web/locale/be/viewer.properties index 8728b93b5a..b974b0c1a0 100644 --- a/media/js/pdf/web/locale/be/viewer.properties +++ b/media/js/pdf/web/locale/be/viewer.properties @@ -41,23 +41,27 @@ print.title=Друкаваць print_label=Друкаваць download.title=Сцягнуць download_label=Сцягнуць -bookmark.title=Цяперашняя праява (скапіяваць або адчыніць у новым акне) +bookmark.title=Цяперашні выгляд (скапіяваць або адкрыць у новым акне) bookmark_label=Цяперашняя праява +save.title=Захаваць +save_label=Захаваць +bookmark1.title=Дзейная старонка (паглядзець URL-адрас з дзейнай старонкі) +bookmark1_label=Цяперашняя старонка + +open_in_app.title=Адкрыць у праграме +open_in_app_label=Адкрыць у праграме + # Secondary toolbar and context menu tools.title=Прылады tools_label=Прылады first_page.title=Перайсці на першую старонку -first_page.label=Перайсці на першую старонку first_page_label=Перайсці на першую старонку last_page.title=Перайсці на апошнюю старонку -last_page.label=Перайсці на апошнюю старонку last_page_label=Перайсці на апошнюю старонку page_rotate_cw.title=Павярнуць па сонцу -page_rotate_cw.label=Павярнуць па сонцу page_rotate_cw_label=Павярнуць па сонцу page_rotate_ccw.title=Павярнуць супраць сонца -page_rotate_ccw.label=Павярнуць супраць сонца page_rotate_ccw_label=Павярнуць супраць сонца cursor_text_select_tool.title=Уключыць прыладу выбару тэксту @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Прылада выбару тэксту cursor_hand_tool.title=Уключыць ручную прыладу cursor_hand_tool_label=Ручная прылада +scroll_page.title=Выкарыстоўваць пракрутку старонкi +scroll_page_label=Пракрутка старонкi scroll_vertical.title=Ужываць вертыкальную пракрутку scroll_vertical_label=Вертыкальная пракрутка scroll_horizontal.title=Ужываць гарызантальную пракрутку @@ -137,14 +143,13 @@ print_progress_close=Скасаваць # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Паказаць/схаваць бакавую панэль -toggle_sidebar_notification.title=Паказаць/схаваць бакавую панэль (дакумент мае змест/укладанні) toggle_sidebar_notification2.title=Паказаць/схаваць бакавую панэль (дакумент мае змест/укладанні/пласты) toggle_sidebar_label=Паказаць/схаваць бакавую панэль document_outline.title=Паказаць структуру дакумента (двайная пстрычка, каб разгарнуць /згарнуць усе элементы) document_outline_label=Структура дакумента attachments.title=Паказаць далучэнні attachments_label=Далучэнні -layers.title=Паказаць пласты (двойчы пстрыкніце, каб скінуць усе пласты да прадвызначанага стану) +layers.title=Паказаць пласты (націсніце двойчы, каб скінуць усе пласты да прадвызначанага стану) layers_label=Пласты thumbs.title=Паказ мініяцюр thumbs_label=Мініяцюры @@ -153,9 +158,6 @@ current_outline_item_label=Бягучы элемент структуры findbar.title=Пошук у дакуменце findbar_label=Знайсці -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Старонка {{page}} - additional_layers=Дадатковыя пласты # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Старонка {{page}} @@ -176,6 +178,7 @@ find_next.title=Знайсці наступны выпадак выразу find_next_label=Наступны find_highlight=Падфарбаваць усе find_match_case_label=Адрозніваць вялікія/малыя літары +find_match_diacritics_label=З улікам дыякрытык find_entire_word_label=Словы цалкам find_reached_top=Дасягнуты пачатак дакумента, працяг з канца find_reached_bottom=Дасягнуты канец дакумента, працяг з пачатку @@ -219,7 +222,6 @@ error_stack=Стос: {{stack}} error_file=Файл: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Радок: {{line}} -rendering_error=Здарылася памылка падчас адлюстравання старонкі. # Predefined zoom values page_scale_width=Шырыня старонкі @@ -231,15 +233,16 @@ page_scale_actual=Сапраўдны памер page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Памылка +loading=Чытаецца… # Loading indicator messages -loading=Чытаецца… -loading_error=Здарылася памылка падчас загрузкі PDF. +loading_error=Здарылася памылка ў часе загрузкі PDF. invalid_file_error=Няспраўны або пашкоджаны файл PDF. missing_file_error=Адсутны файл PDF. unexpected_response_error=Нечаканы адказ сервера. +rendering_error=Здарылася памылка падчас адлюстравання старонкі. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Скасаваць printing_not_supported=Папярэджанне: друк не падтрымліваецца цалкам гэтым браўзерам. printing_not_ready=Увага: PDF не сцягнуты цалкам для друкавання. web_fonts_disabled=Шрыфты Сеціва забаронены: немагчыма ўжываць укладзеныя шрыфты PDF. + +# Editor +editor_free_text2.title=Тэкст +editor_free_text2_label=Тэкст +editor_ink2.title=Маляваць +editor_ink2_label=Маляваць + +free_text2_default_content=Пачніце набор тэксту… + +# Editor Parameters +editor_free_text_color=Колер +editor_free_text_size=Памер +editor_ink_color=Колер +editor_ink_thickness=Таўшчыня +editor_ink_opacity=Непразрыстасць + +# Editor aria +editor_free_text2_aria_label=Тэкставы рэдактар +editor_ink2_aria_label=Графічны рэдактар +editor_ink_canvas_aria_label=Выява, створаная карыстальнікам diff --git a/media/js/pdf/web/locale/bg/viewer.properties b/media/js/pdf/web/locale/bg/viewer.properties index 6981eac672..8c273985c7 100644 --- a/media/js/pdf/web/locale/bg/viewer.properties +++ b/media/js/pdf/web/locale/bg/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Текущ изглед tools.title=Инструменти tools_label=Инструменти first_page.title=Към първата страница -first_page.label=Към първата страница first_page_label=Към първата страница last_page.title=Към последната страница -last_page.label=Към последната страница last_page_label=Към последната страница page_rotate_cw.title=Завъртане по час. стрелка -page_rotate_cw.label=Завъртане по часовниковата стрелка page_rotate_cw_label=Завъртане по часовниковата стрелка page_rotate_ccw.title=Завъртане обратно на час. стрелка -page_rotate_ccw.label=Завъртане обратно на часовниковата стрелка page_rotate_ccw_label=Завъртане обратно на часовниковата стрелка cursor_text_select_tool.title=Включване на инструмента за избор на текст @@ -137,7 +133,6 @@ print_progress_close=Отказ # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Превключване на страничната лента -toggle_sidebar_notification.title=Превключване на страничната лента (документи със структура/прикачени файлове) toggle_sidebar_label=Превключване на страничната лента document_outline.title=Показване на структурата на документа (двукратно щракване за свиване/разгъване на всичко) document_outline_label=Структура на документа @@ -219,9 +214,6 @@ page_scale_actual=Действителен размер # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Грешка - loading_error=Получи се грешка при зареждане на PDF-а. invalid_file_error=Невалиден или повреден PDF файл. missing_file_error=Липсващ PDF файл. @@ -240,3 +232,4 @@ password_cancel=Отказ printing_not_supported=Внимание: Този четец няма пълна поддръжка на отпечатване. printing_not_ready=Внимание: Този PDF файл не е напълно зареден за печат. web_fonts_disabled=Уеб-шрифтовете са забранени: разрешаване на използването на вградените PDF шрифтове. + diff --git a/media/js/pdf/web/locale/bn/viewer.properties b/media/js/pdf/web/locale/bn/viewer.properties index ffc5465fcb..366f2e5895 100644 --- a/media/js/pdf/web/locale/bn/viewer.properties +++ b/media/js/pdf/web/locale/bn/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=বর্তমান অবস্থা tools.title=টুল tools_label=টুল first_page.title=প্রথম পাতায় যাও -first_page.label=প্রথম পাতায় যাও first_page_label=প্রথম পাতায় যাও last_page.title=শেষ পাতায় যাও -last_page.label=শেষ পাতায় যাও last_page_label=শেষ পাতায় যাও page_rotate_cw.title=ঘড়ির কাঁটার দিকে ঘোরাও -page_rotate_cw.label=ঘড়ির কাঁটার দিকে ঘোরাও page_rotate_cw_label=ঘড়ির কাঁটার দিকে ঘোরাও page_rotate_ccw.title=ঘড়ির কাঁটার বিপরীতে ঘোরাও -page_rotate_ccw.label=ঘড়ির কাঁটার বিপরীতে ঘোরাও page_rotate_ccw_label=ঘড়ির কাঁটার বিপরীতে ঘোরাও cursor_text_select_tool.title=লেখা নির্বাচক টুল সক্রিয় করুন @@ -135,7 +131,6 @@ print_progress_close=বাতিল # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=সাইডবার টগল করুন -toggle_sidebar_notification.title=সাইডবার টগল (নথিতে আউটলাইন/এটাচমেন্ট রয়েছে) toggle_sidebar_label=সাইডবার টগল করুন document_outline.title=নথির আউটলাইন দেখাও (সব আইটেম প্রসারিত/সঙ্কুচিত করতে ডবল ক্লিক করুন) document_outline_label=নথির রূপরেখা @@ -146,9 +141,7 @@ thumbs_label=থাম্বনেইল সমূহ findbar.title=নথির মধ্যে খুঁজুন findbar_label=খুঁজুন -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=পাতা {{page}} - +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -164,7 +157,7 @@ find_previous.title=বাক্যাংশের পূর্ববর্ত find_previous_label=পূর্ববর্তী find_next.title=বাক্যাংশের পরবর্তী উপস্থিতি অনুসন্ধান find_next_label=পরবর্তী -find_highlight=সব হাইলাইট করা হবে +find_highlight=সব হাইলাইট করুন find_match_case_label=অক্ষরের ছাঁদ মেলানো find_entire_word_label=সম্পূর্ণ শব্দ find_reached_top=পাতার শুরুতে পৌছে গেছে, নীচ থেকে আরম্ভ করা হয়েছে @@ -221,8 +214,6 @@ page_scale_actual=প্রকৃত আকার page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=ত্রুটি - loading_error=পিডিএফ লোড করার সময় ত্রুটি দেখা দিয়েছে। invalid_file_error=অকার্যকর অথবা ক্ষতিগ্রস্ত পিডিএফ ফাইল। missing_file_error=নিখোঁজ PDF ফাইল। @@ -245,3 +236,4 @@ password_cancel=বাতিল printing_not_supported=সতর্কতা: এই ব্রাউজারে মুদ্রণ সম্পূর্ণভাবে সমর্থিত নয়। printing_not_ready=সতর্কীকরণ: পিডিএফটি মুদ্রণের জন্য সম্পূর্ণ লোড হয়নি। web_fonts_disabled=ওয়েব ফন্ট নিষ্ক্রিয়: সংযুক্ত পিডিএফ ফন্ট ব্যবহার করা যাচ্ছে না। + diff --git a/media/js/pdf/web/locale/bo/viewer.properties b/media/js/pdf/web/locale/bo/viewer.properties index 981addc281..d3b3933442 100644 --- a/media/js/pdf/web/locale/bo/viewer.properties +++ b/media/js/pdf/web/locale/bo/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Current View tools.title=Tools tools_label=Tools first_page.title=Go to First Page -first_page.label=Go to First Page first_page_label=Go to First Page last_page.title=Go to Last Page -last_page.label=Go to Last Page last_page_label=Go to Last Page page_rotate_cw.title=Rotate Clockwise -page_rotate_cw.label=Rotate Clockwise page_rotate_cw_label=Rotate Clockwise page_rotate_ccw.title=Rotate Counterclockwise -page_rotate_ccw.label=Rotate Counterclockwise page_rotate_ccw_label=Rotate Counterclockwise cursor_text_select_tool.title=Enable Text Selection Tool @@ -137,7 +133,6 @@ print_progress_close=Cancel # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Toggle Sidebar -toggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments) toggle_sidebar_label=Toggle Sidebar document_outline.title=Show Document Outline (double-click to expand/collapse all items) document_outline_label=Document Outline @@ -219,9 +214,6 @@ page_scale_actual=Actual Size # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Error - loading_error=An error occurred while loading the PDF. invalid_file_error=Invalid or corrupted PDF file. missing_file_error=Missing PDF file. @@ -243,3 +235,4 @@ password_cancel=Cancel printing_not_supported=Warning: Printing is not fully supported by this browser. printing_not_ready=Warning: The PDF is not fully loaded for printing. web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. + diff --git a/media/js/pdf/web/locale/br/viewer.properties b/media/js/pdf/web/locale/br/viewer.properties index 043931a72d..ea3b6963da 100644 --- a/media/js/pdf/web/locale/br/viewer.properties +++ b/media/js/pdf/web/locale/br/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Gwel bremanel tools.title=Ostilhoù tools_label=Ostilhoù first_page.title=Mont d'ar bajenn gentañ -first_page.label=Mont d'ar bajenn gentañ first_page_label=Mont d'ar bajenn gentañ last_page.title=Mont d'ar bajenn diwezhañ -last_page.label=Mont d'ar bajenn diwezhañ last_page_label=Mont d'ar bajenn diwezhañ page_rotate_cw.title=C'hwelañ gant roud ar bizied -page_rotate_cw.label=C'hwelañ gant roud ar bizied page_rotate_cw_label=C'hwelañ gant roud ar bizied page_rotate_ccw.title=C'hwelañ gant roud gin ar bizied -page_rotate_ccw.label=C'hwelañ gant roud gin ar bizied page_rotate_ccw_label=C'hwelañ gant roud gin ar bizied cursor_text_select_tool.title=Gweredekaat an ostilh diuzañ testenn @@ -137,7 +133,6 @@ print_progress_close=Nullañ # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Diskouez/kuzhat ar varrenn gostez -toggle_sidebar_notification.title=Trec'haoliñ ar verrenn-gostez (ur steuñv pe stagadennoù a zo en teul) toggle_sidebar_notification2.title=Trec'haoliñ ar varrenn-gostez (ur steuñv pe stagadennoù a zo en teul) toggle_sidebar_label=Diskouez/kuzhat ar varrenn gostez document_outline.title=Diskouez steuñv an teul (daouglikit evit brasaat/bihanaat an holl elfennoù) @@ -151,9 +146,6 @@ thumbs_label=Melvennoù findbar.title=Klask e-barzh an teuliad findbar_label=Klask -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Pajenn {{page}} - additional_layers=Gwiskadoù ouzhpenn # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Pajenn {{page}} @@ -228,9 +220,6 @@ page_scale_actual=Ment wir # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Fazi - # Loading indicator messages loading=O kargañ… loading_error=Degouezhet ez eus bet ur fazi e-pad kargañ ar PDF. @@ -255,3 +244,4 @@ password_cancel=Nullañ printing_not_supported=Kemenn: N'eo ket skoret penn-da-benn ar moullañ gant ar merdeer-mañ. printing_not_ready=Kemenn: N'hall ket bezañ moullet ar restr PDF rak n'eo ket karget penn-da-benn. web_fonts_disabled=Diweredekaet eo an nodrezhoù web: n'haller ket arverañ an nodrezhoù PDF enframmet. + diff --git a/media/js/pdf/web/locale/brx/viewer.properties b/media/js/pdf/web/locale/brx/viewer.properties index 6af751aa0a..821150518c 100644 --- a/media/js/pdf/web/locale/brx/viewer.properties +++ b/media/js/pdf/web/locale/brx/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=दानि नुथाय tools.title=टुल tools_label=टुल first_page.title=गिबि बिलाइआव थां -first_page.label=गिबि बिलाइआव थां first_page_label=गिबि बिलाइआव थां last_page.title=जोबथा बिलाइआव थां -last_page.label=जोबथा बिलाइआव थां last_page_label=जोबथा बिलाइआव थां page_rotate_cw.title=घरि गिदिंनाय फार्से फिदिं -page_rotate_cw.label=घरि गिदिंनाय फार्से फिदिं page_rotate_cw_label=घरि गिदिंनाय फार्से फिदिं page_rotate_ccw.title=घरि गिदिंनाय उल्था फार्से फिदिं -page_rotate_ccw.label=घरि गिदिंनाय उल्था फार्से फिदिं page_rotate_ccw_label=घरि गिदिंनाय उल्था फार्से फिदिं @@ -184,9 +180,6 @@ page_scale_actual=थार महर # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=गोरोन्थि - loading_error=PDF ल'ड खालामनाय समाव मोनसे गोरोन्थि जाबाय। invalid_file_error=बाहायजायै एबा गाज्रि जानाय PDF फाइल missing_file_error=गोमानाय PDF फाइल @@ -209,3 +202,4 @@ password_cancel=नेवसि printing_not_supported=सांग्रांथि: साफायनाया बे ब्राउजारजों आबुङै हेफाजाब होजाया। printing_not_ready=सांग्रांथि: PDF खौ साफायनायनि थाखाय फुरायै ल'ड खालामाखै। web_fonts_disabled=वेब फन्टखौ लोरबां खालामबाय: अरजाबहोनाय PDF फन्टखौ बाहायनो हायाखै। + diff --git a/media/js/pdf/web/locale/bs/viewer.properties b/media/js/pdf/web/locale/bs/viewer.properties index eb4ee3ce94..b482bb169c 100644 --- a/media/js/pdf/web/locale/bs/viewer.properties +++ b/media/js/pdf/web/locale/bs/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Trenutni prikaz tools.title=Alati tools_label=Alati first_page.title=Idi na prvu stranu -first_page.label=Idi na prvu stranu first_page_label=Idi na prvu stranu last_page.title=Idi na zadnju stranu -last_page.label=Idi na zadnju stranu last_page_label=Idi na zadnju stranu page_rotate_cw.title=Rotiraj u smjeru kazaljke na satu -page_rotate_cw.label=Rotiraj u smjeru kazaljke na satu page_rotate_cw_label=Rotiraj u smjeru kazaljke na satu page_rotate_ccw.title=Rotiraj suprotno smjeru kazaljke na satu -page_rotate_ccw.label=Rotiraj suprotno smjeru kazaljke na satu page_rotate_ccw_label=Rotiraj suprotno smjeru kazaljke na satu cursor_text_select_tool.title=Omogući alat za označavanje teksta @@ -118,7 +114,6 @@ print_progress_close=Otkaži # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Uključi/isključi bočnu traku -toggle_sidebar_notification.title=Uključi/isključi sidebar (dokument sadrži outline/priloge) toggle_sidebar_label=Uključi/isključi bočnu traku document_outline.title=Prikaži outline dokumenta (dvoklik za skupljanje/širenje svih stavki) document_outline_label=Konture dokumenta @@ -178,9 +173,6 @@ page_scale_actual=Stvarna veličina # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Greška - loading_error=Došlo je do greške prilikom učitavanja PDF-a. invalid_file_error=Neispravan ili oštećen PDF fajl. missing_file_error=Nedostaje PDF fajl. @@ -199,3 +191,4 @@ password_cancel=Otkaži printing_not_supported=Upozorenje: Štampanje nije u potpunosti podržano u ovom browseru. printing_not_ready=Upozorenje: PDF nije u potpunosti učitan za štampanje. web_fonts_disabled=Web fontovi su onemogućeni: nemoguće koristiti ubačene PDF fontove. + diff --git a/media/js/pdf/web/locale/ca/viewer.properties b/media/js/pdf/web/locale/ca/viewer.properties index 3b3189ef7c..969b91e2e3 100644 --- a/media/js/pdf/web/locale/ca/viewer.properties +++ b/media/js/pdf/web/locale/ca/viewer.properties @@ -41,23 +41,24 @@ print.title=Imprimeix print_label=Imprimeix download.title=Baixa download_label=Baixa +save.title=Desa +save_label=Desa bookmark.title=Vista actual (copia o obre en una finestra nova) bookmark_label=Vista actual +bookmark1.title=Pàgina actual (mostra l'URL de la pàgina actual) +bookmark1_label=Pàgina actual + # Secondary toolbar and context menu tools.title=Eines tools_label=Eines first_page.title=Vés a la primera pàgina -first_page.label=Vés a la primera pàgina first_page_label=Vés a la primera pàgina last_page.title=Vés a l'última pàgina -last_page.label=Vés a l'última pàgina last_page_label=Vés a l'última pàgina page_rotate_cw.title=Gira cap a la dreta -page_rotate_cw.label=Gira cap a la dreta page_rotate_cw_label=Gira cap a la dreta page_rotate_ccw.title=Gira cap a l'esquerra -page_rotate_ccw.label=Gira cap a l'esquerra page_rotate_ccw_label=Gira cap a l'esquerra cursor_text_select_tool.title=Habilita l'eina de selecció de text @@ -65,6 +66,8 @@ cursor_text_select_tool_label=Eina de selecció de text cursor_hand_tool.title=Habilita l'eina de mà cursor_hand_tool_label=Eina de mà +scroll_page.title=Usa el desplaçament de pàgina +scroll_page_label=Desplaçament de pàgina scroll_vertical.title=Utilitza el desplaçament vertical scroll_vertical_label=Desplaçament vertical scroll_horizontal.title=Utilitza el desplaçament horitzontal @@ -137,7 +140,6 @@ print_progress_close=Cancel·la # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Mostra/amaga la barra lateral -toggle_sidebar_notification.title=Mostra/amaga la barra lateral (el document conté un esquema o adjuncions) toggle_sidebar_notification2.title=Mostra/amaga la barra lateral (el document conté un esquema, adjuncions o capes) toggle_sidebar_label=Mostra/amaga la barra lateral document_outline.title=Mostra l'esquema del document (doble clic per ampliar/reduir tots els elements) @@ -153,9 +155,6 @@ current_outline_item_label=Element d'esquema actual findbar.title=Cerca al document findbar_label=Cerca -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Pàgina {{page}} - additional_layers=Capes addicionals # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Pàgina {{page}} @@ -176,6 +175,7 @@ find_next.title=Cerca la següent coincidència de l'expressió find_next_label=Següent find_highlight=Ressalta-ho tot find_match_case_label=Distingeix entre majúscules i minúscules +find_match_diacritics_label=Respecta els diacrítics find_entire_word_label=Paraules senceres find_reached_top=S'ha arribat al principi del document, es continua pel final find_reached_bottom=S'ha arribat al final del document, es continua pel principi @@ -219,7 +219,6 @@ error_stack=Pila: {{stack}} error_file=Fitxer: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Línia: {{line}} -rendering_error=S'ha produït un error mentre es renderitzava la pàgina. # Predefined zoom values page_scale_width=Amplada de la pàgina @@ -231,15 +230,16 @@ page_scale_actual=Mida real page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Error +loading=S'està carregant… # Loading indicator messages -loading=S'està carregant… loading_error=S'ha produït un error en carregar el PDF. invalid_file_error=El fitxer PDF no és vàlid o està malmès. missing_file_error=Falta el fitxer PDF. unexpected_response_error=Resposta inesperada del servidor. +rendering_error=S'ha produït un error mentre es renderitzava la pàgina. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,5 +257,23 @@ password_cancel=Cancel·la printing_not_supported=Avís: la impressió no és plenament funcional en aquest navegador. printing_not_ready=Atenció: el PDF no s'ha acabat de carregar per imprimir-lo. web_fonts_disabled=Els tipus de lletra web estan desactivats: no es poden utilitzar els tipus de lletra incrustats al PDF. -# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same -# exact string as in the `chrome.properties` file. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Dibuixa +editor_ink2_label=Dibuixa + +free_text2_default_content=Escriviu… + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Mida +editor_ink_color=Color +editor_ink_thickness=Gruix +editor_ink_opacity=Opacitat + +# Editor aria +editor_free_text2_aria_label=Editor de text +editor_ink2_aria_label=Editor de dibuix +editor_ink_canvas_aria_label=Imatge creada per l'usuari diff --git a/media/js/pdf/web/locale/cak/viewer.properties b/media/js/pdf/web/locale/cak/viewer.properties index 764ccf81f7..1073ac6a20 100644 --- a/media/js/pdf/web/locale/cak/viewer.properties +++ b/media/js/pdf/web/locale/cak/viewer.properties @@ -44,20 +44,20 @@ download_label=Tiqasäx bookmark.title=Rutz'etik wakami (tiwachib'ëx o tijaq pa jun k'ak'a' tzuwäch) bookmark_label=Rutzub'al wakami +save.title=Tiyak +save_label=Tiyak +bookmark1_label=Ruxaq k'o wakami + # Secondary toolbar and context menu tools.title=Samajib'äl tools_label=Samajib'äl first_page.title=Tib'e pa nab'ey ruxaq -first_page.label=Tib'e pa nab'ey ruxaq first_page_label=Tib'e pa nab'ey ruxaq last_page.title=Tib'e pa ruk'isib'äl ruxaq -last_page.label=Tib'e pa ruk'isib'äl ruxaq last_page_label=Tib'e pa ruk'isib'äl ruxaq page_rotate_cw.title=Tisutïx pan ajkiq'a' -page_rotate_cw.label=Tisutïx pan ajkiq'a' page_rotate_cw_label=Tisutïx pan ajkiq'a' page_rotate_ccw.title=Tisutïx pan ajxokon -page_rotate_ccw.label=Tisutïx pan ajxokon page_rotate_ccw_label=Tisutïx pan ajxokon cursor_text_select_tool.title=Titzij ri rusamajib'al Rucha'ik Rucholajem Tzij @@ -65,6 +65,8 @@ cursor_text_select_tool_label=Rusamajib'al Rucha'ik Rucholajem Tzij cursor_hand_tool.title=Titzij ri q'ab'aj samajib'äl cursor_hand_tool_label=Q'ab'aj Samajib'äl +scroll_page.title=Tokisäx Ruxaq Q'axanem +scroll_page_label=Ruxaq Q'axanem scroll_vertical.title=Tokisäx Pa'äl Q'axanem scroll_vertical_label=Pa'äl Q'axanem scroll_horizontal.title=Tokisäx Kotz'öl Q'axanem @@ -137,7 +139,6 @@ print_progress_close=Tiq'at # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Tijal ri ajxikin kajtz'ik -toggle_sidebar_notification.title=Tik'ex ri ajxikin yuqkajtz'ik (ri wuj eruk'wan taq ruchi'/taqoj taq yakb'äl) toggle_sidebar_notification2.title=Tik'ex ri ajxikin yuqkajtz'ik (ri wuj eruk'wan taq ruchi'/taqo/kuchuj) toggle_sidebar_label=Tijal ri ajxikin kajtz'ik document_outline.title=Tik'ut pe ruch'akulal wuj (kamul-pitz'oj richin nirik'/nich'utinirisäx ronojel ruch'akulal) @@ -153,9 +154,6 @@ current_outline_item_label=Taq Ch'akulal Kik'wan Chib'äl findbar.title=Tikanöx chupam ri wuj findbar_label=Tikanöx -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Ruxaq {{page}} - additional_layers=Tz'aqat ta Kuchuj # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Ruxaq {{page}} @@ -176,6 +174,7 @@ find_next.title=Tib'e pa ri jun chik pajtzij xilitäj find_next_label=Jun chik find_highlight=Tiya' retal ronojel find_match_case_label=Tuk'äm ri' kik'in taq nimatz'ib' chuqa' taq ch'utitz'ib' +find_match_diacritics_label=Tiya' Kikojol Tz'aqat taq Tz'ib' find_entire_word_label=Tz'aqät taq tzij find_reached_top=Xb'eq'i' ri rutikirib'al wuj, xtikanöx k'a pa ruk'isib'äl find_reached_bottom=Xb'eq'i' ri ruk'isib'äl wuj, xtikanöx pa rutikirib'al @@ -219,7 +218,6 @@ error_stack=Tzub'aj: {{stack}} error_file=Yakb'äl: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=B'ey: {{line}} -rendering_error=Xk'ulwachitäj jun sachoj toq ninuk'wachij ri ruxaq. # Predefined zoom values page_scale_width=Ruwa ruxaq @@ -231,15 +229,16 @@ page_scale_actual=Runimilem Wakami page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Sachoj +loading=Nisamäj… # Loading indicator messages -loading=Nisamäj… loading_error=\u0020Xk'ulwachitäj jun sach'oj toq xnuk'ux ri PDF . invalid_file_error=Man oke ta o yujtajinäq ri PDF yakb'äl. missing_file_error=Man xilitäj ta ri PDF yakb'äl. unexpected_response_error=Man oyob'en ta tz'olin rutzij ruk'u'x samaj. +rendering_error=Xk'ulwachitäj jun sachoj toq ninuk'wachij ri ruxaq. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +256,23 @@ password_cancel=Tiq'at printing_not_supported=Rutzijol k'ayewal: Ri rutz'ajb'axik man koch'el ta ronojel pa re okik'amaya'l re'. printing_not_ready=Rutzijol k'ayewal: Ri PDF man xusamajij ta ronojel richin nitz'ajb'äx. web_fonts_disabled=E chupül ri taq ajk'amaya'l tz'ib': man tikirel ta nokisäx ri taq tz'ib' PDF pa ch'ikenïk + +# Editor +editor_free_text2.title=Rucholajem tz'ib' +editor_free_text2_label=Rucholajem tz'ib' +editor_ink2.title=Tiwachib'ëx +editor_ink2_label=Tiwachib'ëx + +free_text2_default_content=Titikitisäx rutz'ib'axik… + +# Editor Parameters +editor_free_text_color=B'onil +editor_free_text_size=Nimilem +editor_ink_color=B'onil +editor_ink_thickness=Rupimil +editor_ink_opacity=Q'equmal + +# Editor aria +editor_free_text2_aria_label=Nuk'unel tz'ib'atzij +editor_ink2_aria_label=Nuk'unel wachib'äl +editor_ink_canvas_aria_label=Wachib'äl nuk'un ruma okisaxel diff --git a/media/js/pdf/web/locale/ckb/viewer.properties b/media/js/pdf/web/locale/ckb/viewer.properties index 7be9dd5a2f..91403cd615 100644 --- a/media/js/pdf/web/locale/ckb/viewer.properties +++ b/media/js/pdf/web/locale/ckb/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=پیشبینینی ئێستا tools.title=ئامرازەکان tools_label=ئامرازەکان first_page.title=برۆ بۆ یەکەم پەڕە -first_page.label=بڕۆ بۆ یەکەم پەڕە first_page_label=بڕۆ بۆ یەکەم پەڕە last_page.title=بڕۆ بۆ کۆتا پەڕە -last_page.label=بڕۆ بۆ کۆتا پەڕە last_page_label=بڕۆ بۆ کۆتا پەڕە page_rotate_cw.title=ئاڕاستەی میلی کاتژمێر -page_rotate_cw.label=ئاڕاستەی میلی کاتژمێر page_rotate_cw_label=ئاڕاستەی میلی کاتژمێر page_rotate_ccw.title=پێچەوانەی میلی کاتژمێر -page_rotate_ccw.label=پێچەوانەی میلی کاتژمێر page_rotate_ccw_label=پێچەوانەی میلی کاتژمێر cursor_text_select_tool.title=توڵامرازی نیشانکەری دەق چالاک بکە @@ -141,9 +137,6 @@ thumbs_label=وێنۆچکە findbar.title=لە بەڵگەنامە بگەرێ findbar_label=دۆزینەوە -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=پەڕەی {{page}} - additional_layers=چینی زیاتر # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page @@ -216,9 +209,6 @@ page_scale_actual=قەبارەی ڕاستی # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=هەڵە - loading_error=هەڵەیەک ڕوویدا لە کاتی بارکردنی PDF. invalid_file_error=پەڕگەی pdf تێکچووە یان نەگونجاوە. missing_file_error=پەڕگەی pdf بوونی نیە. @@ -241,3 +231,4 @@ password_cancel=پاشگەزبوونەوە printing_not_supported=ئاگاداربە: چاپکردن بە تەواوی پشتگیر ناکرێت لەم وێبگەڕە. printing_not_ready=ئاگاداربە: PDF بە تەواوی بارنەبووە بۆ چاپکردن. web_fonts_disabled=جۆرەپیتی وێب ناچالاکە: نەتوانی جۆرەپیتی تێخراوی ناو pdfـەکە بەکاربێت. + diff --git a/media/js/pdf/web/locale/cs/viewer.properties b/media/js/pdf/web/locale/cs/viewer.properties index 8829097e8d..978c455290 100644 --- a/media/js/pdf/web/locale/cs/viewer.properties +++ b/media/js/pdf/web/locale/cs/viewer.properties @@ -44,20 +44,24 @@ download_label=Stáhnout bookmark.title=Současný pohled (kopírovat nebo otevřít v novém okně) bookmark_label=Současný pohled +save.title=Uložit +save_label=Uložit +bookmark1.title=Aktuální stránka (zobrazit URL od aktuální stránky) +bookmark1_label=Aktuální stránka + +open_in_app.title=Otevřít v aplikaci +open_in_app_label=Otevřít v aplikaci + # Secondary toolbar and context menu tools.title=Nástroje tools_label=Nástroje first_page.title=Přejde na první stránku -first_page.label=Přejít na první stránku first_page_label=Přejít na první stránku last_page.title=Přejde na poslední stránku -last_page.label=Přejít na poslední stránku last_page_label=Přejít na poslední stránku page_rotate_cw.title=Otočí po směru hodin -page_rotate_cw.label=Otočit po směru hodin page_rotate_cw_label=Otočit po směru hodin page_rotate_ccw.title=Otočí proti směru hodin -page_rotate_ccw.label=Otočit proti směru hodin page_rotate_ccw_label=Otočit proti směru hodin cursor_text_select_tool.title=Povolí výběr textu @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Výběr textu cursor_hand_tool.title=Povolí nástroj ručička cursor_hand_tool_label=Nástroj ručička +scroll_page.title=Posouvat po stránkách +scroll_page_label=Posouvání po stránkách scroll_vertical.title=Použít svislé posouvání scroll_vertical_label=Svislé posouvání scroll_horizontal.title=Použít vodorovné posouvání @@ -137,10 +143,9 @@ print_progress_close=Zrušit # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Postranní lišta -toggle_sidebar_notification.title=Přepne postranní lištu (dokument obsahuje osnovu/přílohy) toggle_sidebar_notification2.title=Přepnout postranní lištu (dokument obsahuje osnovu/přílohy/vrstvy) toggle_sidebar_label=Postranní lišta -document_outline.title=Zobrazí osnovu dokumentu (dvojité klepnutí rozbalí/sbalí všechny položky) +document_outline.title=Zobrazí osnovu dokumentu (poklepání přepne zobrazení všech položek) document_outline_label=Osnova dokumentu attachments.title=Zobrazí přílohy attachments_label=Přílohy @@ -153,9 +158,6 @@ current_outline_item_label=Aktuální položka v osnově findbar.title=Najde v dokumentu findbar_label=Najít -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Strana {{page}} - additional_layers=Další vrstvy # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Strana {{page}} @@ -176,6 +178,7 @@ find_next.title=Najde další výskyt hledaného textu find_next_label=Další find_highlight=Zvýraznit find_match_case_label=Rozlišovat velikost +find_match_diacritics_label=Rozlišovat diakritiku find_entire_word_label=Celá slova find_reached_top=Dosažen začátek dokumentu, pokračuje se od konce find_reached_bottom=Dosažen konec dokumentu, pokračuje se od začátku @@ -219,7 +222,6 @@ error_stack=Zásobník: {{stack}} error_file=Soubor: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Řádek: {{line}} -rendering_error=Při vykreslování stránky nastala chyba. # Predefined zoom values page_scale_width=Podle šířky @@ -231,15 +233,16 @@ page_scale_actual=Skutečná velikost page_scale_percent={{scale}} % # Loading indicator messages -loading_error_indicator=Chyba +loading=Načítání… # Loading indicator messages -loading=Načítání… loading_error=Při nahrávání PDF nastala chyba. invalid_file_error=Neplatný nebo chybný soubor PDF. missing_file_error=Chybí soubor PDF. unexpected_response_error=Neočekávaná odpověď serveru. +rendering_error=Při vykreslování stránky nastala chyba. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Zrušit printing_not_supported=Upozornění: Tisk není v tomto prohlížeči plně podporován. printing_not_ready=Upozornění: Dokument PDF není kompletně načten. web_fonts_disabled=Webová písma jsou zakázána, proto není možné použít vložená písma PDF. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Kreslení +editor_ink2_label=Kreslení + +free_text2_default_content=Začněte psát… + +# Editor Parameters +editor_free_text_color=Barva +editor_free_text_size=Velikost +editor_ink_color=Barva +editor_ink_thickness=Tloušťka +editor_ink_opacity=Průhlednost + +# Editor aria +editor_free_text2_aria_label=Textový editor +editor_ink2_aria_label=Editor kreslení +editor_ink_canvas_aria_label=Uživatelem vytvořený obrázek diff --git a/media/js/pdf/web/locale/cy/viewer.properties b/media/js/pdf/web/locale/cy/viewer.properties index e7123fe0b7..b3dc4a9b67 100644 --- a/media/js/pdf/web/locale/cy/viewer.properties +++ b/media/js/pdf/web/locale/cy/viewer.properties @@ -39,25 +39,29 @@ open_file.title=Agor Ffeil open_file_label=Agor print.title=Argraffu print_label=Argraffu -download.title=Llwyth -download_label=Llwytho i Lawr +download.title=Llwytho i lawr +download_label=Llwytho i lawr bookmark.title=Golwg cyfredol (copïo neu agor ffenestr newydd) bookmark_label=Golwg Gyfredol +save.title=Cadw +save_label=Cadw +bookmark1.title=Tudalen Gyfredol (Gweld URL o'r Dudalen Gyfredol) +bookmark1_label=Tudalen Gyfredol + +open_in_app.title=Agor yn yr ap +open_in_app_label=Agor yn yr ap + # Secondary toolbar and context menu tools.title=Offer tools_label=Offer first_page.title=Mynd i'r Dudalen Gyntaf -first_page.label=Mynd i'r Dudalen Gyntaf first_page_label=Mynd i'r Dudalen Gyntaf last_page.title=Mynd i'r Dudalen Olaf -last_page.label=Mynd i'r Dudalen Olaf last_page_label=Mynd i'r Dudalen Olaf page_rotate_cw.title=Cylchdroi Clocwedd -page_rotate_cw.label=Cylchdroi Clocwedd page_rotate_cw_label=Cylchdroi Clocwedd page_rotate_ccw.title=Cylchdroi Gwrthglocwedd -page_rotate_ccw.label=Cylchdroi Gwrthglocwedd page_rotate_ccw_label=Cylchdroi Gwrthglocwedd cursor_text_select_tool.title=Galluogi Dewis Offeryn Testun @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Offeryn Dewis Testun cursor_hand_tool.title=Galluogi Offeryn Llaw cursor_hand_tool_label=Offeryn Llaw +scroll_page.title=Defnyddio Sgrolio Tudalen +scroll_page_label=Sgrolio Tudalen scroll_vertical.title=Defnyddio Sgrolio Fertigol scroll_vertical_label=Sgrolio Fertigol scroll_horizontal.title=Defnyddio Sgrolio Llorweddol @@ -137,7 +143,6 @@ print_progress_close=Diddymu # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Toglo'r Bar Ochr -toggle_sidebar_notification.title=Toglo'r Bar Ochr (mae'r ddogfen yn cynnwys outline/attachments) toggle_sidebar_notification2.title=Toglo'r Bar Ochr (mae'r ddogfen yn cynnwys amlinelliadau/atodiadau/haenau) toggle_sidebar_label=Toglo'r Bar Ochr document_outline.title=Dangos Amlinell Dogfen (clic dwbl i ymestyn/cau pob eitem) @@ -153,9 +158,6 @@ current_outline_item_label=Yr Eitem Amlinellol Gyfredol findbar.title=Canfod yn y Ddogfen findbar_label=Canfod -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Tudalen {{page}} - additional_layers=Haenau Ychwanegol # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Tudalen {{page}} @@ -174,9 +176,10 @@ find_previous.title=Canfod enghraifft flaenorol o'r ymadrodd find_previous_label=Blaenorol find_next.title=Canfod enghraifft nesaf yr ymadrodd find_next_label=Nesaf -find_highlight=Amlygu popeth -find_match_case_label=Cydweddu maint -find_entire_word_label=Geiriau cyfan +find_highlight=Amlygu Popeth +find_match_case_label=Cydweddu Maint +find_match_diacritics_label=Diacritigau Cyfatebol +find_entire_word_label=Geiriau Cyfan find_reached_top=Wedi cyrraedd brig y dudalen, parhau o'r gwaelod find_reached_bottom=Wedi cyrraedd diwedd y dudalen, parhau o'r brig # LOCALIZATION NOTE (find_match_count): The supported plural forms are @@ -219,7 +222,6 @@ error_stack=Stac: {{stack}} error_file=Ffeil: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Llinell: {{line}} -rendering_error=Digwyddodd gwall wrth adeiladu'r dudalen. # Predefined zoom values page_scale_width=Lled Tudalen @@ -231,15 +233,16 @@ page_scale_actual=Maint Gwirioneddol page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Gwall +loading=Yn llwytho… # Loading indicator messages -loading=Yn llwytho… loading_error=Digwyddodd gwall wrth lwytho'r PDF. invalid_file_error=Ffeil PDF annilys neu llwgr. missing_file_error=Ffeil PDF coll. unexpected_response_error=Ymateb annisgwyl gan y gweinydd. +rendering_error=Digwyddodd gwall wrth adeiladu'r dudalen. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Diddymu printing_not_supported=Rhybudd: Nid yw argraffu yn cael ei gynnal yn llawn gan y porwr. printing_not_ready=Rhybudd: Nid yw'r PDF wedi ei lwytho'n llawn ar gyfer argraffu. web_fonts_disabled=Ffontiau gwe wedi eu hanalluogi: methu defnyddio ffontiau PDF mewnblanedig. + +# Editor +editor_free_text2.title=Testun +editor_free_text2_label=Testun +editor_ink2.title=Lluniadu +editor_ink2_label=Lluniadu + +free_text2_default_content=Cychwyn teipio… + +# Editor Parameters +editor_free_text_color=Lliw +editor_free_text_size=Maint +editor_ink_color=Lliw +editor_ink_thickness=Trwch +editor_ink_opacity=Didreiddedd + +# Editor aria +editor_free_text2_aria_label=Golygydd Testun +editor_ink2_aria_label=Golygydd Lluniadu +editor_ink_canvas_aria_label=Delwedd wedi'i chreu gan ddefnyddwyr diff --git a/media/js/pdf/web/locale/da/viewer.properties b/media/js/pdf/web/locale/da/viewer.properties index 149a027b48..31ed08ddde 100644 --- a/media/js/pdf/web/locale/da/viewer.properties +++ b/media/js/pdf/web/locale/da/viewer.properties @@ -44,20 +44,24 @@ download_label=Hent bookmark.title=Aktuel visning (kopier eller åbn i et nyt vindue) bookmark_label=Aktuel visning +save.title=Gem +save_label=Gem +bookmark1.title=Aktuel side (vis URL fra den aktuelle side) +bookmark1_label=Aktuel side + +open_in_app.title=Åbn i app +open_in_app_label=Åbn i app + # Secondary toolbar and context menu tools.title=Funktioner tools_label=Funktioner first_page.title=Gå til første side -first_page.label=Gå til første side first_page_label=Gå til første side last_page.title=Gå til sidste side -last_page.label=Gå til sidste side last_page_label=Gå til sidste side page_rotate_cw.title=Roter med uret -page_rotate_cw.label=Roter med uret page_rotate_cw_label=Roter med uret page_rotate_ccw.title=Roter mod uret -page_rotate_ccw.label=Roter mod uret page_rotate_ccw_label=Roter mod uret cursor_text_select_tool.title=Aktiver markeringsværktøj @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Markeringsværktøj cursor_hand_tool.title=Aktiver håndværktøj cursor_hand_tool_label=Håndværktøj +scroll_page.title=Brug sidescrolling +scroll_page_label=Sidescrolling scroll_vertical.title=Brug vertikal scrolling scroll_vertical_label=Vertikal scrolling scroll_horizontal.title=Brug horisontal scrolling @@ -137,7 +143,6 @@ print_progress_close=Annuller # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Slå sidepanel til eller fra -toggle_sidebar_notification.title=Slå sidepanel til eller fra (dokumentet indeholder disposition/vedhæftede filer) toggle_sidebar_notification2.title=Slå sidepanel til eller fra (dokumentet indeholder disposition/vedhæftede filer/lag) toggle_sidebar_label=Slå sidepanel til eller fra document_outline.title=Vis dokumentets disposition (dobbeltklik for at vise/skjule alle elementer) @@ -153,9 +158,6 @@ current_outline_item_label=Aktuelt dispositions-element findbar.title=Find i dokument findbar_label=Find -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Side {{page}} - additional_layers=Yderligere lag # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Side {{page}} @@ -176,6 +178,7 @@ find_next.title=Find den næste forekomst find_next_label=Næste find_highlight=Fremhæv alle find_match_case_label=Forskel på store og små bogstaver +find_match_diacritics_label=Diakritiske tegn find_entire_word_label=Hele ord find_reached_top=Toppen af siden blev nået, fortsatte fra bunden find_reached_bottom=Bunden af siden blev nået, fortsatte fra toppen @@ -219,7 +222,6 @@ error_stack=Stack: {{stack}} error_file=Fil: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Linje: {{line}} -rendering_error=Der opstod en fejl ved generering af siden. # Predefined zoom values page_scale_width=Sidebredde @@ -231,15 +233,16 @@ page_scale_actual=Faktisk størrelse page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Fejl +loading=Indlæser… # Loading indicator messages -loading=Indlæser… loading_error=Der opstod en fejl ved indlæsning af PDF-filen. invalid_file_error=PDF-filen er ugyldig eller ødelagt. missing_file_error=Manglende PDF-fil. unexpected_response_error=Uventet svar fra serveren. +rendering_error=Der opstod en fejl ved generering af siden. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Fortryd printing_not_supported=Advarsel: Udskrivning er ikke fuldt understøttet af browseren. printing_not_ready=Advarsel: PDF-filen er ikke fuldt indlæst til udskrivning. web_fonts_disabled=Webskrifttyper er deaktiverede. De indlejrede skrifttyper i PDF-filen kan ikke anvendes. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Tegn +editor_ink2_label=Tegn + +free_text2_default_content=Begynd at skrive… + +# Editor Parameters +editor_free_text_color=Farve +editor_free_text_size=Størrelse +editor_ink_color=Farve +editor_ink_thickness=Tykkelse +editor_ink_opacity=Uigennemsigtighed + +# Editor aria +editor_free_text2_aria_label=Teksteditor +editor_ink2_aria_label=Tegnings-editor +editor_ink_canvas_aria_label=Brugeroprettet billede diff --git a/media/js/pdf/web/locale/de/viewer.properties b/media/js/pdf/web/locale/de/viewer.properties index 89645f482f..330da04523 100644 --- a/media/js/pdf/web/locale/de/viewer.properties +++ b/media/js/pdf/web/locale/de/viewer.properties @@ -44,20 +44,24 @@ download_label=Speichern bookmark.title=Aktuelle Ansicht (zum Kopieren oder Öffnen in einem neuen Fenster) bookmark_label=Aktuelle Ansicht +save.title=Speichern +save_label=Speichern +bookmark1.title=Aktuelle Seite (URL von aktueller Seite anzeigen) +bookmark1_label=Aktuelle Seite + +open_in_app.title=Mit App öffnen +open_in_app_label=Mit App öffnen + # Secondary toolbar and context menu tools.title=Werkzeuge tools_label=Werkzeuge first_page.title=Erste Seite anzeigen -first_page.label=Erste Seite anzeigen first_page_label=Erste Seite anzeigen last_page.title=Letzte Seite anzeigen -last_page.label=Letzte Seite anzeigen last_page_label=Letzte Seite anzeigen page_rotate_cw.title=Im Uhrzeigersinn drehen -page_rotate_cw.label=Im Uhrzeigersinn drehen page_rotate_cw_label=Im Uhrzeigersinn drehen page_rotate_ccw.title=Gegen Uhrzeigersinn drehen -page_rotate_ccw.label=Gegen Uhrzeigersinn drehen page_rotate_ccw_label=Gegen Uhrzeigersinn drehen cursor_text_select_tool.title=Textauswahl-Werkzeug aktivieren @@ -65,11 +69,13 @@ cursor_text_select_tool_label=Textauswahl-Werkzeug cursor_hand_tool.title=Hand-Werkzeug aktivieren cursor_hand_tool_label=Hand-Werkzeug +scroll_page.title=Seiten einzeln anordnen +scroll_page_label=Einzelseitenanordnung scroll_vertical.title=Seiten übereinander anordnen scroll_vertical_label=Vertikale Seitenanordnung scroll_horizontal.title=Seiten nebeneinander anordnen scroll_horizontal_label=Horizontale Seitenanordnung -scroll_wrapped.title=Seiten neben- und übereinander anordnen, anhängig vom Platz +scroll_wrapped.title=Seiten neben- und übereinander anordnen, abhängig vom Platz scroll_wrapped_label=Kombinierte Seitenanordnung spread_none.title=Seiten nicht nebeneinander anzeigen @@ -137,7 +143,6 @@ print_progress_close=Abbrechen # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Sidebar umschalten -toggle_sidebar_notification.title=Sidebar umschalten (Dokument enthält Dokumentstruktur/Anhänge) toggle_sidebar_notification2.title=Sidebar umschalten (Dokument enthält Dokumentstruktur/Anhänge/Ebenen) toggle_sidebar_label=Sidebar umschalten document_outline.title=Dokumentstruktur anzeigen (Doppelklicken, um alle Einträge aus- bzw. einzuklappen) @@ -153,9 +158,6 @@ current_outline_item_label=Aktuelles Struktur-Element findbar.title=Dokument durchsuchen findbar_label=Suchen -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Seite {{page}} - additional_layers=Zusätzliche Ebenen # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Seite {{page}} @@ -176,6 +178,7 @@ find_next.title=Nächstes Vorkommen des Suchbegriffs finden find_next_label=Weiter find_highlight=Alle hervorheben find_match_case_label=Groß-/Kleinschreibung beachten +find_match_diacritics_label=Akzente find_entire_word_label=Ganze Wörter find_reached_top=Anfang des Dokuments erreicht, fahre am Ende fort find_reached_bottom=Ende des Dokuments erreicht, fahre am Anfang fort @@ -219,7 +222,6 @@ error_stack=Aufrufliste: {{stack}} error_file=Datei: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Zeile: {{line}} -rendering_error=Beim Darstellen der Seite trat ein Fehler auf. # Predefined zoom values page_scale_width=Seitenbreite @@ -231,15 +233,16 @@ page_scale_actual=Originalgröße page_scale_percent={{scale}} % # Loading indicator messages -loading_error_indicator=Fehler +loading=Wird geladen… # Loading indicator messages -loading=Wird geladen… loading_error=Beim Laden der PDF-Datei trat ein Fehler auf. invalid_file_error=Ungültige oder beschädigte PDF-Datei missing_file_error=Fehlende PDF-Datei unexpected_response_error=Unerwartete Antwort des Servers +rendering_error=Beim Darstellen der Seite trat ein Fehler auf. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Abbrechen printing_not_supported=Warnung: Die Drucken-Funktion wird durch diesen Browser nicht vollständig unterstützt. printing_not_ready=Warnung: Die PDF-Datei ist nicht vollständig geladen, dies ist für das Drucken aber empfohlen. web_fonts_disabled=Web-Schriftarten sind deaktiviert: Eingebettete PDF-Schriftarten konnten nicht geladen werden. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Zeichnen +editor_ink2_label=Zeichnen + +free_text2_default_content=Schreiben beginnen… + +# Editor Parameters +editor_free_text_color=Farbe +editor_free_text_size=Größe +editor_ink_color=Farbe +editor_ink_thickness=Dicke +editor_ink_opacity=Deckkraft + +# Editor aria +editor_free_text2_aria_label=Texteditor +editor_ink2_aria_label=Zeichnungseditor +editor_ink_canvas_aria_label=Vom Benutzer erstelltes Bild diff --git a/media/js/pdf/web/locale/dsb/viewer.properties b/media/js/pdf/web/locale/dsb/viewer.properties index dd131bc6a1..1a8b2479e0 100644 --- a/media/js/pdf/web/locale/dsb/viewer.properties +++ b/media/js/pdf/web/locale/dsb/viewer.properties @@ -44,20 +44,24 @@ download_label=Ześěgnuś bookmark.title=Aktualny naglěd (kopěrowaś abo w nowem woknje wócyniś) bookmark_label=Aktualny naglěd +save.title=Składowaś +save_label=Składowaś +bookmark1.title=Aktualny bok (URL z aktualnego boka pokazaś) +bookmark1_label=Aktualny bok + +open_in_app.title=W nałoženju wócyniś +open_in_app_label=W nałoženju wócyniś + # Secondary toolbar and context menu tools.title=Rědy tools_label=Rědy first_page.title=K prědnemu bokoju -first_page.label=K prědnemu bokoju first_page_label=K prědnemu bokoju last_page.title=K slědnemu bokoju -last_page.label=K slědnemu bokoju last_page_label=K slědnemu bokoju page_rotate_cw.title=Wobwjertnuś ako špěra źo -page_rotate_cw.label=Wobwjertnuś ako špěra źo page_rotate_cw_label=Wobwjertnuś ako špěra źo page_rotate_ccw.title=Wobwjertnuś nawopaki ako špěra źo -page_rotate_ccw.label=Wobwjertnuś nawopaki ako špěra źo page_rotate_ccw_label=Wobwjertnuś nawopaki ako špěra źo cursor_text_select_tool.title=Rěd za wuběranje teksta zmóžniś @@ -65,8 +69,10 @@ cursor_text_select_tool_label=Rěd za wuběranje teksta cursor_hand_tool.title=Rucny rěd zmóžniś cursor_hand_tool_label=Rucny rěd +scroll_page.title=Kulanje boka wužywaś +scroll_page_label=Kulanje boka scroll_vertical.title=Wertikalne suwanje wužywaś -scroll_vertical_label=Wertikalnje suwanje +scroll_vertical_label=Wertikalne suwanje scroll_horizontal.title=Horicontalne suwanje wužywaś scroll_horizontal_label=Horicontalne suwanje scroll_wrapped.title=Pózlažke suwanje wužywaś @@ -137,7 +143,6 @@ print_progress_close=Pśetergnuś # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Bócnicu pokazaś/schowaś -toggle_sidebar_notification.title=Bocnicu pśešaltowaś (dokument wopśimujo pśeglěd/pśipiski) toggle_sidebar_notification2.title=Bocnicu pśešaltowaś (dokument rozrědowanje/pśipiski/warstwy wopśimujo) toggle_sidebar_label=Bócnicu pokazaś/schowaś document_outline.title=Dokumentowe naraźenje pokazaś (dwójne kliknjenje, aby se wšykne zapiski pokazali/schowali) @@ -153,9 +158,6 @@ current_outline_item_label=Aktualny rozrědowański zapisk findbar.title=W dokumenśe pytaś findbar_label=Pytaś -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Bok {{page}} - additional_layers=Dalšne warstwy # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Bok {{page}} @@ -176,6 +178,7 @@ find_next.title=Pśidujuce wustupowanje pytańskego wuraza pytaś find_next_label=Dalej find_highlight=Wšykne wuzwignuś find_match_case_label=Na wjelikopisanje źiwaś +find_match_diacritics_label=Diakritiske znamuška wužywaś find_entire_word_label=Cełe słowa find_reached_top=Zachopjeńk dokumenta dostany, pókšacujo se z kóńcom find_reached_bottom=Kóńc dokumenta dostany, pókšacujo se ze zachopjeńkom @@ -219,7 +222,6 @@ error_stack=Lisćina zawołanjow: {{stack}} error_file=Dataja: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Smužka: {{line}} -rendering_error=Pśi zwobraznjanju boka jo zmólka nastała. # Predefined zoom values page_scale_width=Šyrokosć boka @@ -231,15 +233,16 @@ page_scale_actual=Aktualna wjelikosć page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Zmólka +loading=Zacytujo se… # Loading indicator messages -loading=Zacytujo se… loading_error=Pśi zacytowanju PDF jo zmólka nastała. invalid_file_error=Njepłaśiwa abo wobškóźona PDF-dataja. missing_file_error=Felujuca PDF-dataja. unexpected_response_error=Njewócakane serwerowe wótegrono. +rendering_error=Pśi zwobraznjanju boka jo zmólka nastała. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Pśetergnuś printing_not_supported=Warnowanje: Śišćanje njepódpěra se połnje pśez toś ten wobglědowak. printing_not_ready=Warnowanje: PDF njejo se za śišćanje dopołnje zacytał. web_fonts_disabled=Webpisma su znjemóžnjone: njejo móžno, zasajźone PDF-pisma wužywaś. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Kresliś +editor_ink2_label=Kresliś + +free_text2_default_content=Zachopśo pisaś… + +# Editor Parameters +editor_free_text_color=Barwa +editor_free_text_size=Wjelikosć +editor_ink_color=Barwa +editor_ink_thickness=Tłustosć +editor_ink_opacity=Opacita + +# Editor aria +editor_free_text2_aria_label=Tekstowy editor +editor_ink2_aria_label=Kresleński editor +editor_ink_canvas_aria_label=Wobraz napórany wót wužywarja diff --git a/media/js/pdf/web/locale/el/viewer.properties b/media/js/pdf/web/locale/el/viewer.properties index 3b1b6e201a..67c00c7539 100644 --- a/media/js/pdf/web/locale/el/viewer.properties +++ b/media/js/pdf/web/locale/el/viewer.properties @@ -44,20 +44,24 @@ download_label=Λήψη bookmark.title=Τρέχουσα προβολή (αντιγραφή ή άνοιγμα σε νέο παράθυρο) bookmark_label=Τρέχουσα προβολή +save.title=Αποθήκευση +save_label=Αποθήκευση +bookmark1.title=Τρέχουσα σελίδα (Προβολή URL από τρέχουσα σελίδα) +bookmark1_label=Τρέχουσα σελίδα + +open_in_app.title=Άνοιγμα σε εφαρμογή +open_in_app_label=Άνοιγμα σε εφαρμογή + # Secondary toolbar and context menu tools.title=Εργαλεία tools_label=Εργαλεία first_page.title=Μετάβαση στην πρώτη σελίδα -first_page.label=Μετάβαση στην πρώτη σελίδα first_page_label=Μετάβαση στην πρώτη σελίδα last_page.title=Μετάβαση στην τελευταία σελίδα -last_page.label=Μετάβαση στην τελευταία σελίδα last_page_label=Μετάβαση στην τελευταία σελίδα page_rotate_cw.title=Δεξιόστροφη περιστροφή -page_rotate_cw.label=Δεξιόστροφη περιστροφή page_rotate_cw_label=Δεξιόστροφη περιστροφή page_rotate_ccw.title=Αριστερόστροφη περιστροφή -page_rotate_ccw.label=Αριστερόστροφη περιστροφή page_rotate_ccw_label=Αριστερόστροφη περιστροφή cursor_text_select_tool.title=Ενεργοποίηση εργαλείου επιλογής κειμένου @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Εργαλείο επιλογής κειμένου cursor_hand_tool.title=Ενεργοποίηση εργαλείου χεριού cursor_hand_tool_label=Εργαλείο χεριού +scroll_page.title=Χρήση κύλισης σελίδας +scroll_page_label=Κύλιση σελίδας scroll_vertical.title=Χρήση κάθετης κύλισης scroll_vertical_label=Κάθετη κύλιση scroll_horizontal.title=Χρήση οριζόντιας κύλισης @@ -93,7 +99,7 @@ document_properties_mb={{size_mb}} MB ({{size_b}} bytes) document_properties_title=Τίτλος: document_properties_author=Συγγραφέας: document_properties_subject=Θέμα: -document_properties_keywords=Λέξεις κλειδιά: +document_properties_keywords=Λέξεις-κλειδιά: document_properties_creation_date=Ημερομηνία δημιουργίας: document_properties_modification_date=Ημερομηνία τροποποίησης: # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" @@ -136,26 +142,22 @@ print_progress_close=Ακύρωση # Tooltips and alt text for side panel toolbar buttons # (the _label strings are alt text for the buttons, the .title strings are # tooltips) -toggle_sidebar.title=(Απ)ενεργοποίηση πλευρικής στήλης -toggle_sidebar_notification.title=(Απ)ενεργοποίηση πλευρικής στήλης (το έγγραφο περιέχει περίγραμμα/συνημμένα) -toggle_sidebar_notification2.title=(Απ)ενεργοποίηση πλευρικής στήλης (το έγγραφο περιέχει περίγραμμα/συνημμένα/επίπεδα) -toggle_sidebar_label=(Απ)ενεργοποίηση πλευρικής στήλης +toggle_sidebar.title=(Απ)ενεργοποίηση πλαϊνής γραμμής +toggle_sidebar_notification2.title=(Απ)ενεργοποίηση πλαϊνής γραμμής (το έγγραφο περιέχει περίγραμμα/συνημμένα/επίπεδα) +toggle_sidebar_label=(Απ)ενεργοποίηση πλαϊνής γραμμής document_outline.title=Εμφάνιση διάρθρωσης εγγράφου (διπλό κλικ για ανάπτυξη/σύμπτυξη όλων των στοιχείων) document_outline_label=Διάρθρωση εγγράφου -attachments.title=Προβολή συνημμένων +attachments.title=Εμφάνιση συνημμένων attachments_label=Συνημμένα layers.title=Εμφάνιση επιπέδων (διπλό κλικ για επαναφορά όλων των επιπέδων στην προεπιλεγμένη κατάσταση) layers_label=Επίπεδα -thumbs.title=Προβολή μικρογραφιών +thumbs.title=Εμφάνιση μικρογραφιών thumbs_label=Μικρογραφίες current_outline_item.title=Εύρεση τρέχοντος στοιχείου διάρθρωσης current_outline_item_label=Τρέχον στοιχείο διάρθρωσης findbar.title=Εύρεση στο έγγραφο findbar_label=Εύρεση -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Σελίδα {{page}} - additional_layers=Επιπρόσθετα επίπεδα # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Σελίδα {{page}} @@ -165,7 +167,7 @@ page_landmark=Σελίδα {{page}} thumb_page_title=Σελίδα {{page}} # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page # number. -thumb_page_canvas=Μικρογραφία της σελίδας {{page}} +thumb_page_canvas=Μικρογραφία σελίδας {{page}} # Find panel button title and messages find_input.title=Εύρεση @@ -176,9 +178,10 @@ find_next.title=Εύρεση της επόμενης εμφάνισης της find_next_label=Επόμενο find_highlight=Επισήμανση όλων find_match_case_label=Συμφωνία πεζών/κεφαλαίων +find_match_diacritics_label=Αντιστοίχιση διακριτικών find_entire_word_label=Ολόκληρες λέξεις -find_reached_top=Έλευση στην αρχή του εγγράφου, συνέχεια από το τέλος -find_reached_bottom=Έλευση στο τέλος του εγγράφου, συνέχεια από την αρχή +find_reached_top=Φτάσατε στην αρχή του εγγράφου, συνέχεια από το τέλος +find_reached_bottom=Φτάσατε στο τέλος του εγγράφου, συνέχεια από την αρχή # LOCALIZATION NOTE (find_match_count): The supported plural forms are # [one|two|few|many|other], with [other] as the default value. # "{{current}}" and "{{total}}" will be replaced by a number representing the @@ -219,7 +222,6 @@ error_stack=Στοίβα: {{stack}} error_file=Αρχείο: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Γραμμή: {{line}} -rendering_error=Προέκυψε σφάλμα κατά την ανάλυση της σελίδας. # Predefined zoom values page_scale_width=Πλάτος σελίδας @@ -231,15 +233,16 @@ page_scale_actual=Πραγματικό μέγεθος page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Σφάλμα +loading=Φόρτωση… # Loading indicator messages -loading=Φόρτωση… -loading_error=Προέκυψε ένα σφάλμα κατά τη φόρτωση του PDF. +loading_error=Προέκυψε σφάλμα κατά τη φόρτωση του PDF. invalid_file_error=Μη έγκυρο ή κατεστραμμένο αρχείο PDF. missing_file_error=Λείπει αρχείο PDF. unexpected_response_error=Μη αναμενόμενη απόκριση από το διακομιστή. +rendering_error=Προέκυψε σφάλμα κατά την εμφάνιση της σελίδας. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -248,12 +251,32 @@ annotation_date_string={{date}}, {{time}} # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). # Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Σχόλιο] -password_label=Εισαγωγή κωδικού για το άνοιγμα του PDF αρχείου. -password_invalid=Μη έγκυρος κωδικός. Προσπαθείστε ξανά. +text_annotation_type.alt=[Σχόλιο «{{type}}»] +password_label=Εισαγάγετε τον κωδικό πρόσβασης για να ανοίξετε αυτό το αρχείο PDF. +password_invalid=Μη έγκυρος κωδικός πρόσβασης. Παρακαλώ δοκιμάστε ξανά. password_ok=OK password_cancel=Ακύρωση printing_not_supported=Προειδοποίηση: Η εκτύπωση δεν υποστηρίζεται πλήρως από το πρόγραμμα περιήγησης. printing_not_ready=Προειδοποίηση: Το PDF δεν φορτώθηκε πλήρως για εκτύπωση. -web_fonts_disabled=Οι γραμματοσειρές Web απενεργοποιημένες: αδυναμία χρήσης των ενσωματωμένων γραμματοσειρών PDF. +web_fonts_disabled=Οι γραμματοσειρές ιστού είναι ανενεργές: δεν είναι δυνατή η χρήση των ενσωματωμένων γραμματοσειρών PDF. + +# Editor +editor_free_text2.title=Κείμενο +editor_free_text2_label=Κείμενο +editor_ink2.title=Σχέδιο +editor_ink2_label=Σχέδιο + +free_text2_default_content=Ξεκινήστε να πληκτρολογείτε… + +# Editor Parameters +editor_free_text_color=Χρώμα +editor_free_text_size=Μέγεθος +editor_ink_color=Χρώμα +editor_ink_thickness=Πάχος +editor_ink_opacity=Αδιαφάνεια + +# Editor aria +editor_free_text2_aria_label=Επεξεργασία κειμένου +editor_ink2_aria_label=Επεξεργασία σχεδίων +editor_ink_canvas_aria_label=Εικόνα από τον χρήστη diff --git a/media/js/pdf/web/locale/en-CA/viewer.properties b/media/js/pdf/web/locale/en-CA/viewer.properties index 49e5d90c97..9c913128a9 100644 --- a/media/js/pdf/web/locale/en-CA/viewer.properties +++ b/media/js/pdf/web/locale/en-CA/viewer.properties @@ -41,23 +41,24 @@ print.title=Print print_label=Print download.title=Download download_label=Download +save.title=Save +save_label=Save bookmark.title=Current view (copy or open in new window) bookmark_label=Current View +bookmark1.title=Current Page (View URL from Current Page) +bookmark1_label=Current Page + # Secondary toolbar and context menu tools.title=Tools tools_label=Tools first_page.title=Go to First Page -first_page.label=Go to First Page first_page_label=Go to First Page last_page.title=Go to Last Page -last_page.label=Go to Last Page last_page_label=Go to Last Page page_rotate_cw.title=Rotate Clockwise -page_rotate_cw.label=Rotate Clockwise page_rotate_cw_label=Rotate Clockwise page_rotate_ccw.title=Rotate Counterclockwise -page_rotate_ccw.label=Rotate Counterclockwise page_rotate_ccw_label=Rotate Counterclockwise cursor_text_select_tool.title=Enable Text Selection Tool @@ -65,6 +66,8 @@ cursor_text_select_tool_label=Text Selection Tool cursor_hand_tool.title=Enable Hand Tool cursor_hand_tool_label=Hand Tool +scroll_page.title=Use Page Scrolling +scroll_page_label=Page Scrolling scroll_vertical.title=Use Vertical Scrolling scroll_vertical_label=Vertical Scrolling scroll_horizontal.title=Use Horizontal Scrolling @@ -137,7 +140,6 @@ print_progress_close=Cancel # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Toggle Sidebar -toggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments) toggle_sidebar_notification2.title=Toggle Sidebar (document contains outline/attachments/layers) toggle_sidebar_label=Toggle Sidebar document_outline.title=Show Document Outline (double-click to expand/collapse all items) @@ -153,9 +155,6 @@ current_outline_item_label=Current Outline Item findbar.title=Find in Document findbar_label=Find -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Page {{page}} - additional_layers=Additional Layers # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Page {{page}} @@ -174,9 +173,10 @@ find_previous.title=Find the previous occurrence of the phrase find_previous_label=Previous find_next.title=Find the next occurrence of the phrase find_next_label=Next -find_highlight=Highlight all -find_match_case_label=Match case -find_entire_word_label=Whole words +find_highlight=Highlight All +find_match_case_label=Match Case +find_match_diacritics_label=Match Diacritics +find_entire_word_label=Whole Words find_reached_top=Reached top of document, continued from bottom find_reached_bottom=Reached end of document, continued from top # LOCALIZATION NOTE (find_match_count): The supported plural forms are @@ -219,7 +219,6 @@ error_stack=Stack: {{stack}} error_file=File: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Line: {{line}} -rendering_error=An error occurred while rendering the page. # Predefined zoom values page_scale_width=Page Width @@ -231,15 +230,16 @@ page_scale_actual=Actual Size page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Error +loading=Loading… # Loading indicator messages -loading=Loading… loading_error=An error occurred while loading the PDF. invalid_file_error=Invalid or corrupted PDF file. missing_file_error=Missing PDF file. unexpected_response_error=Unexpected server response. +rendering_error=An error occurred while rendering the page. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +257,23 @@ password_cancel=Cancel printing_not_supported=Warning: Printing is not fully supported by this browser. printing_not_ready=Warning: The PDF is not fully loaded for printing. web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Draw +editor_ink2_label=Draw + +free_text2_default_content=Start typing… + +# Editor Parameters +editor_free_text_color=Colour +editor_free_text_size=Size +editor_ink_color=Colour +editor_ink_thickness=Thickness +editor_ink_opacity=Opacity + +# Editor aria +editor_free_text2_aria_label=Text Editor +editor_ink2_aria_label=Draw Editor +editor_ink_canvas_aria_label=User-created image diff --git a/media/js/pdf/web/locale/en-GB/viewer.properties b/media/js/pdf/web/locale/en-GB/viewer.properties index 1b50cb3791..c420d86e52 100644 --- a/media/js/pdf/web/locale/en-GB/viewer.properties +++ b/media/js/pdf/web/locale/en-GB/viewer.properties @@ -44,20 +44,24 @@ download_label=Download bookmark.title=Current view (copy or open in new window) bookmark_label=Current View +save.title=Save +save_label=Save +bookmark1.title=Current Page (View URL from Current Page) +bookmark1_label=Current Page + +open_in_app.title=Open in app +open_in_app_label=Open in app + # Secondary toolbar and context menu tools.title=Tools tools_label=Tools first_page.title=Go to First Page -first_page.label=Go to First Page first_page_label=Go to First Page last_page.title=Go to Last Page -last_page.label=Go to Last Page last_page_label=Go to Last Page page_rotate_cw.title=Rotate Clockwise -page_rotate_cw.label=Rotate Clockwise page_rotate_cw_label=Rotate Clockwise page_rotate_ccw.title=Rotate Anti-Clockwise -page_rotate_ccw.label=Rotate Anti-Clockwise page_rotate_ccw_label=Rotate Anti-Clockwise cursor_text_select_tool.title=Enable Text Selection Tool @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Text Selection Tool cursor_hand_tool.title=Enable Hand Tool cursor_hand_tool_label=Hand Tool +scroll_page.title=Use Page Scrolling +scroll_page_label=Page Scrolling scroll_vertical.title=Use Vertical Scrolling scroll_vertical_label=Vertical Scrolling scroll_horizontal.title=Use Horizontal Scrolling @@ -137,7 +143,6 @@ print_progress_close=Cancel # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Toggle Sidebar -toggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments) toggle_sidebar_notification2.title=Toggle Sidebar (document contains outline/attachments/layers) toggle_sidebar_label=Toggle Sidebar document_outline.title=Show Document Outline (double-click to expand/collapse all items) @@ -153,9 +158,6 @@ current_outline_item_label=Current Outline Item findbar.title=Find in Document findbar_label=Find -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Page {{page}} - additional_layers=Additional Layers # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Page {{page}} @@ -174,9 +176,10 @@ find_previous.title=Find the previous occurrence of the phrase find_previous_label=Previous find_next.title=Find the next occurrence of the phrase find_next_label=Next -find_highlight=Highlight all -find_match_case_label=Match case -find_entire_word_label=Whole words +find_highlight=Highlight All +find_match_case_label=Match Case +find_match_diacritics_label=Match Diacritics +find_entire_word_label=Whole Words find_reached_top=Reached top of document, continued from bottom find_reached_bottom=Reached end of document, continued from top # LOCALIZATION NOTE (find_match_count): The supported plural forms are @@ -219,7 +222,6 @@ error_stack=Stack: {{stack}} error_file=File: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Line: {{line}} -rendering_error=An error occurred while rendering the page. # Predefined zoom values page_scale_width=Page Width @@ -231,15 +233,16 @@ page_scale_actual=Actual Size page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Error +loading=Loading… # Loading indicator messages -loading=Loading… loading_error=An error occurred while loading the PDF. invalid_file_error=Invalid or corrupted PDF file. missing_file_error=Missing PDF file. unexpected_response_error=Unexpected server response. +rendering_error=An error occurred while rendering the page. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Cancel printing_not_supported=Warning: Printing is not fully supported by this browser. printing_not_ready=Warning: The PDF is not fully loaded for printing. web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Draw +editor_ink2_label=Draw + +free_text2_default_content=Start typing… + +# Editor Parameters +editor_free_text_color=Colour +editor_free_text_size=Size +editor_ink_color=Colour +editor_ink_thickness=Thickness +editor_ink_opacity=Opacity + +# Editor aria +editor_free_text2_aria_label=Text Editor +editor_ink2_aria_label=Draw Editor +editor_ink_canvas_aria_label=User-created image diff --git a/media/js/pdf/web/locale/en-US/viewer.properties b/media/js/pdf/web/locale/en-US/viewer.properties index 5fe094b769..f64be7bf22 100644 --- a/media/js/pdf/web/locale/en-US/viewer.properties +++ b/media/js/pdf/web/locale/en-US/viewer.properties @@ -39,10 +39,14 @@ open_file.title=Open File open_file_label=Open print.title=Print print_label=Print -download.title=Download -download_label=Download -bookmark.title=Current view (copy or open in new window) -bookmark_label=Current View +save.title=Save +save_label=Save +bookmark1.title=Current Page (View URL from Current Page) +bookmark1_label=Current Page +# LOCALIZATION NOTE (open_in_app.title): This string is used in Firefox for Android. +open_in_app.title=Open in app +# LOCALIZATION NOTE (open_in_app_label): This string is used in Firefox for Android. Length of the translation matters since we are in a mobile context, with limited screen estate. +open_in_app_label=Open in app # Secondary toolbar and context menu tools.title=Tools @@ -61,6 +65,8 @@ cursor_text_select_tool_label=Text Selection Tool cursor_hand_tool.title=Enable Hand Tool cursor_hand_tool_label=Hand Tool +scroll_page.title=Use Page Scrolling +scroll_page_label=Page Scrolling scroll_vertical.title=Use Vertical Scrolling scroll_vertical_label=Vertical Scrolling scroll_horizontal.title=Use Horizontal Scrolling @@ -166,9 +172,10 @@ find_previous.title=Find the previous occurrence of the phrase find_previous_label=Previous find_next.title=Find the next occurrence of the phrase find_next_label=Next -find_highlight=Highlight all -find_match_case_label=Match case -find_entire_word_label=Whole words +find_highlight=Highlight All +find_match_case_label=Match Case +find_match_diacritics_label=Match Diacritics +find_entire_word_label=Whole Words find_reached_top=Reached top of document, continued from bottom find_reached_bottom=Reached end of document, continued from top # LOCALIZATION NOTE (find_match_count): The supported plural forms are @@ -194,25 +201,6 @@ find_match_count_limit[many]=More than {{limit}} matches find_match_count_limit[other]=More than {{limit}} matches find_not_found=Phrase not found -# Error panel labels -error_more_info=More Information -error_less_info=Less Information -error_close=Close -# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be -# replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (build: {{build}}) -# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an -# english string describing the error. -error_message=Message: {{message}} -# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack -# trace. -error_stack=Stack: {{stack}} -# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=File: {{file}} -# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Line: {{line}} -rendering_error=An error occurred while rendering the page. - # Predefined zoom values page_scale_width=Page Width page_scale_fit=Page Fit @@ -223,11 +211,11 @@ page_scale_actual=Actual Size page_scale_percent={{scale}}% # Loading indicator messages -loading=Loading… loading_error=An error occurred while loading the PDF. invalid_file_error=Invalid or corrupted PDF file. missing_file_error=Missing PDF file. unexpected_response_error=Unexpected server response. +rendering_error=An error occurred while rendering the page. # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. @@ -246,3 +234,23 @@ password_cancel=Cancel printing_not_supported=Warning: Printing is not fully supported by this browser. printing_not_ready=Warning: The PDF is not fully loaded for printing. web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Draw +editor_ink2_label=Draw + +free_text2_default_content=Start typing… + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Size +editor_ink_color=Color +editor_ink_thickness=Thickness +editor_ink_opacity=Opacity + +# Editor aria +editor_free_text2_aria_label=Text Editor +editor_ink2_aria_label=Draw Editor +editor_ink_canvas_aria_label=User-created image diff --git a/media/js/pdf/web/locale/eo/viewer.properties b/media/js/pdf/web/locale/eo/viewer.properties index 9500e82707..a11abaa4a0 100644 --- a/media/js/pdf/web/locale/eo/viewer.properties +++ b/media/js/pdf/web/locale/eo/viewer.properties @@ -41,23 +41,24 @@ print.title=Presi print_label=Presi download.title=Elŝuti download_label=Elŝuti +save.title=Konservi +save_label=Konservi bookmark.title=Nuna vido (kopii aŭ malfermi en nova fenestro) bookmark_label=Nuna vido +bookmark1.title=Nuna paĝo (Montri adreson de la nuna paĝo) +bookmark1_label=Nuna paĝo + # Secondary toolbar and context menu tools.title=Iloj tools_label=Iloj first_page.title=Iri al la unua paĝo -first_page.label=Iri al la unua paĝo first_page_label=Iri al la unua paĝo last_page.title=Iri al la lasta paĝo -last_page.label=Iri al la lasta paĝo last_page_label=Iri al la lasta paĝo page_rotate_cw.title=Rotaciigi dekstrume -page_rotate_cw.label=Rotaciigi dekstrume page_rotate_cw_label=Rotaciigi dekstrume page_rotate_ccw.title=Rotaciigi maldekstrume -page_rotate_ccw.label=Rotaciigi maldekstrume page_rotate_ccw_label=Rotaciigi maldekstrume cursor_text_select_tool.title=Aktivigi tekstan elektilon @@ -65,6 +66,8 @@ cursor_text_select_tool_label=Teksta elektilo cursor_hand_tool.title=Aktivigi ilon de mano cursor_hand_tool_label=Ilo de mano +scroll_page.title=Uzi ŝovadon de paĝo +scroll_page_label=Ŝovado de paĝo scroll_vertical.title=Uzi vertikalan ŝovadon scroll_vertical_label=Vertikala ŝovado scroll_horizontal.title=Uzi horizontalan ŝovadon @@ -137,7 +140,6 @@ print_progress_close=Nuligi # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Montri/kaŝi flankan strion -toggle_sidebar_notification.title=Montri/kaŝi flankan strion (la dokumento enhavas konturon/aneksaĵojn) toggle_sidebar_notification2.title=Montri/kaŝi flankan strion (la dokumento enhavas konturon/kunsendaĵojn/tavolojn) toggle_sidebar_label=Montri/kaŝi flankan strion document_outline.title=Montri la konturon de dokumento (alklaku duoble por faldi/malfaldi ĉiujn elementojn) @@ -153,9 +155,6 @@ current_outline_item_label=Nuna kontura elemento findbar.title=Serĉi en dokumento findbar_label=Serĉi -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Paĝo {{page}} - additional_layers=Aldonaj tavoloj # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Paĝo {{page}} @@ -176,6 +175,7 @@ find_next.title=Serĉi la venontan aperon de la frazo find_next_label=Antaŭen find_highlight=Elstarigi ĉiujn find_match_case_label=Distingi inter majuskloj kaj minuskloj +find_match_diacritics_label=Respekti supersignojn find_entire_word_label=Tutaj vortoj find_reached_top=Komenco de la dokumento atingita, daŭrigado ekde la fino find_reached_bottom=Fino de la dokumento atingita, daŭrigado ekde la komenco @@ -219,7 +219,6 @@ error_stack=Stako: {{stack}} error_file=Dosiero: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Linio: {{line}} -rendering_error=Okazis eraro dum la montro de la paĝo. # Predefined zoom values page_scale_width=Larĝo de paĝo @@ -231,15 +230,16 @@ page_scale_actual=Reala grando page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Eraro +loading=Ŝargado… # Loading indicator messages -loading=Ŝargado… loading_error=Okazis eraro dum la ŝargado de la PDF dosiero. invalid_file_error=Nevalida aŭ difektita PDF dosiero. missing_file_error=Mankas dosiero PDF. unexpected_response_error=Neatendita respondo de servilo. +rendering_error=Okazis eraro dum la montro de la paĝo. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +257,23 @@ password_cancel=Nuligi printing_not_supported=Averto: tiu ĉi retumilo ne plene subtenas presadon. printing_not_ready=Averto: la PDF dosiero ne estas plene ŝargita por presado. web_fonts_disabled=Neaktivaj teksaĵaj tiparoj: ne elbas uzi enmetitajn tiparojn de PDF. + +# Editor +editor_free_text2.title=Teksto +editor_free_text2_label=Teksto +editor_ink2.title=Desegni +editor_ink2_label=Desegni + +free_text2_default_content=Ektajpi… + +# Editor Parameters +editor_free_text_color=Koloro +editor_free_text_size=Grando +editor_ink_color=Koloro +editor_ink_thickness=Dikeco +editor_ink_opacity=Maldiafaneco + +# Editor aria +editor_free_text2_aria_label=Tekstan redaktilon +editor_ink2_aria_label=Desegnan redaktilon +editor_ink_canvas_aria_label=Bildo kreita de uzanto diff --git a/media/js/pdf/web/locale/es-AR/viewer.properties b/media/js/pdf/web/locale/es-AR/viewer.properties index 5e97d6ebce..b1b5b01c48 100644 --- a/media/js/pdf/web/locale/es-AR/viewer.properties +++ b/media/js/pdf/web/locale/es-AR/viewer.properties @@ -44,20 +44,24 @@ download_label=Descargar bookmark.title=Vista actual (copiar o abrir en nueva ventana) bookmark_label=Vista actual +save.title=Guardar +save_label=Guardar +bookmark1.title=Página actual (Ver URL de la página actual) +bookmark1_label=Página actual + +open_in_app.title=Abrir en la aplicación +open_in_app_label=Abrir en la aplicación + # Secondary toolbar and context menu tools.title=Herramientas tools_label=Herramientas first_page.title=Ir a primera página -first_page.label=Ir a primera página first_page_label=Ir a primera página last_page.title=Ir a última página -last_page.label=Ir a última página last_page_label=Ir a última página page_rotate_cw.title=Rotar horario -page_rotate_cw.label=Rotar horario page_rotate_cw_label=Rotar horario page_rotate_ccw.title=Rotar antihorario -page_rotate_ccw.label=Rotar antihorario page_rotate_ccw_label=Rotar antihorario cursor_text_select_tool.title=Habilitar herramienta de selección de texto @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Herramienta de selección de texto cursor_hand_tool.title=Habilitar herramienta mano cursor_hand_tool_label=Herramienta mano +scroll_page.title=Usar desplazamiento de página +scroll_page_label=Desplazamiento de página scroll_vertical.title=Usar desplazamiento vertical scroll_vertical_label=Desplazamiento vertical scroll_horizontal.title=Usar desplazamiento vertical @@ -137,7 +143,6 @@ print_progress_close=Cancelar # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Alternar barra lateral -toggle_sidebar_notification.title=Intercambiar barra lateral (el documento contiene esquema/adjuntos) toggle_sidebar_notification2.title=Alternar barra lateral (el documento contiene esquemas/adjuntos/capas) toggle_sidebar_label=Alternar barra lateral document_outline.title=Mostrar esquema del documento (doble clic para expandir/colapsar todos los ítems) @@ -153,9 +158,6 @@ current_outline_item_label=Elemento de esquema actual findbar.title=Buscar en documento findbar_label=Buscar -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Página {{page}} - additional_layers=Capas adicionales # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Página {{page}} @@ -176,6 +178,7 @@ find_next.title=Buscar la siguiente aparición de la frase find_next_label=Siguiente find_highlight=Resaltar todo find_match_case_label=Coincidir mayúsculas +find_match_diacritics_label=Coincidir diacríticos find_entire_word_label=Palabras completas find_reached_top=Inicio de documento alcanzado, continuando desde abajo find_reached_bottom=Fin de documento alcanzando, continuando desde arriba @@ -219,7 +222,6 @@ error_stack=Pila: {{stack}} error_file=Archivo: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Línea: {{line}} -rendering_error=Ocurrió un error al dibujar la página. # Predefined zoom values page_scale_width=Ancho de página @@ -231,15 +233,16 @@ page_scale_actual=Tamaño real page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Error +loading=Cargando… # Loading indicator messages -loading=Cargando… loading_error=Ocurrió un error al cargar el PDF. invalid_file_error=Archivo PDF no válido o cocrrupto. missing_file_error=Archivo PDF faltante. unexpected_response_error=Respuesta del servidor inesperada. +rendering_error=Ocurrió un error al dibujar la página. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Cancelar printing_not_supported=Advertencia: La impresión no está totalmente soportada por este navegador. printing_not_ready=Advertencia: El PDF no está completamente cargado para impresión. web_fonts_disabled=Tipografía web deshabilitada: no se pueden usar tipos incrustados en PDF. + +# Editor +editor_free_text2.title=Texto +editor_free_text2_label=Texto +editor_ink2.title=Dibujar +editor_ink2_label=Dibujar + +free_text2_default_content=Empezar a tipear… + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Tamaño +editor_ink_color=Color +editor_ink_thickness=Espesor +editor_ink_opacity=Opacidad + +# Editor aria +editor_free_text2_aria_label=Editor de texto +editor_ink2_aria_label=Editor de dibujos +editor_ink_canvas_aria_label=Imagen creada por el usuario diff --git a/media/js/pdf/web/locale/es-CL/viewer.properties b/media/js/pdf/web/locale/es-CL/viewer.properties index 23669e68d2..c54ef9c724 100644 --- a/media/js/pdf/web/locale/es-CL/viewer.properties +++ b/media/js/pdf/web/locale/es-CL/viewer.properties @@ -44,20 +44,24 @@ download_label=Descargar bookmark.title=Vista actual (copiar o abrir en nueva ventana) bookmark_label=Vista actual +save.title=Guardar +save_label=Guardar +bookmark1.title=Página actual (Ver URL de la página actual) +bookmark1_label=Página actual + +open_in_app.title=Abrir en una aplicación +open_in_app_label=Abrir en una aplicación + # Secondary toolbar and context menu tools.title=Herramientas tools_label=Herramientas first_page.title=Ir a la primera página -first_page.label=Ir a la primera página first_page_label=Ir a la primera página last_page.title=Ir a la última página -last_page.label=Ir a la última página last_page_label=Ir a la última página page_rotate_cw.title=Girar a la derecha -page_rotate_cw.label=Girar a la derecha page_rotate_cw_label=Girar a la derecha page_rotate_ccw.title=Girar a la izquierda -page_rotate_ccw.label=Girar a la izquierda page_rotate_ccw_label=Girar a la izquierda cursor_text_select_tool.title=Activar la herramienta de selección de texto @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Herramienta de selección de texto cursor_hand_tool.title=Activar la herramienta de mano cursor_hand_tool_label=Herramienta de mano +scroll_page.title=Usar desplazamiento de página +scroll_page_label=Desplazamiento de página scroll_vertical.title=Usar desplazamiento vertical scroll_vertical_label=Desplazamiento vertical scroll_horizontal.title=Usar desplazamiento horizontal @@ -137,7 +143,6 @@ print_progress_close=Cancelar # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Barra lateral -toggle_sidebar_notification.title=Cambiar barra lateral (índice de contenidos del documento/adjuntos) toggle_sidebar_notification2.title=Cambiar barra lateral (índice de contenidos del documento/adjuntos/capas) toggle_sidebar_label=Mostrar u ocultar la barra lateral document_outline.title=Mostrar esquema del documento (doble clic para expandir/contraer todos los elementos) @@ -153,9 +158,6 @@ current_outline_item_label=Elemento de esquema actual findbar.title=Buscar en el documento findbar_label=Buscar -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Página {{page}} - additional_layers=Capas adicionales # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Página {{page}} @@ -176,6 +178,7 @@ find_next.title=Buscar la siguiente aparición de la frase find_next_label=Siguiente find_highlight=Destacar todos find_match_case_label=Coincidir mayús./minús. +find_match_diacritics_label=Coincidir diacríticos find_entire_word_label=Palabras completas find_reached_top=Se alcanzó el inicio del documento, continuando desde el final find_reached_bottom=Se alcanzó el final del documento, continuando desde el inicio @@ -185,11 +188,11 @@ find_reached_bottom=Se alcanzó el final del documento, continuando desde el ini # index of the currently active find result, respectively a number representing # the total number of matches in the document. find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} de {{total}} coincidencia -find_match_count[two]={{current}} de {{total}} coincidencias -find_match_count[few]={{current}} de {{total}} coincidencias -find_match_count[many]={{current}} de {{total}} coincidencias -find_match_count[other]={{current}} de {{total}} coincidencias +find_match_count[one]=Coincidencia {{current}} de {{total}} +find_match_count[two]=Coincidencia {{current}} de {{total}} +find_match_count[few]=Coincidencia {{current}} de {{total}} +find_match_count[many]=Coincidencia {{current}} de {{total}} +find_match_count[other]=Coincidencia {{current}} de {{total}} # LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are # [zero|one|two|few|many|other], with [other] as the default value. # "{{limit}}" will be replaced by a numerical value. @@ -219,7 +222,6 @@ error_stack=Pila: {{stack}} error_file=Archivo: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Línea: {{line}} -rendering_error=Ocurrió un error al renderizar la página. # Predefined zoom values page_scale_width=Ancho de página @@ -231,15 +233,16 @@ page_scale_actual=Tamaño actual page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Error +loading=Cargando… # Loading indicator messages -loading=Cargando… loading_error=Ocurrió un error al cargar el PDF. invalid_file_error=Archivo PDF inválido o corrupto. missing_file_error=Falta el archivo PDF. unexpected_response_error=Respuesta del servidor inesperada. +rendering_error=Ocurrió un error al renderizar la página. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Cancelar printing_not_supported=Advertencia: Imprimir no está soportado completamente por este navegador. printing_not_ready=Advertencia: El PDF no está completamente cargado para ser impreso. web_fonts_disabled=Las tipografías web están desactivadas: imposible usar las fuentes PDF embebidas. + +# Editor +editor_free_text2.title=Texto +editor_free_text2_label=Texto +editor_ink2.title=Dibujar +editor_ink2_label=Dibujar + +free_text2_default_content=Empieza a escribir… + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Tamaño +editor_ink_color=Color +editor_ink_thickness=Grosor +editor_ink_opacity=Opacidad + +# Editor aria +editor_free_text2_aria_label=Editor de texto +editor_ink2_aria_label=Editor de dibujos +editor_ink_canvas_aria_label=Imagen creada por el usuario diff --git a/media/js/pdf/web/locale/es-ES/viewer.properties b/media/js/pdf/web/locale/es-ES/viewer.properties index ef8c135ce6..3b32163009 100644 --- a/media/js/pdf/web/locale/es-ES/viewer.properties +++ b/media/js/pdf/web/locale/es-ES/viewer.properties @@ -44,20 +44,24 @@ download_label=Descargar bookmark.title=Vista actual (copiar o abrir en una nueva ventana) bookmark_label=Vista actual +save.title=Guardar +save_label=Guardar +bookmark1.title=Página actual (Ver URL de la página actual) +bookmark1_label=Página actual + +open_in_app.title=Abrir en aplicación +open_in_app_label=Abrir en aplicación + # Secondary toolbar and context menu tools.title=Herramientas tools_label=Herramientas first_page.title=Ir a la primera página -first_page.label=Ir a la primera página first_page_label=Ir a la primera página last_page.title=Ir a la última página -last_page.label=Ir a la última página last_page_label=Ir a la última página page_rotate_cw.title=Rotar en sentido horario -page_rotate_cw.label=Rotar en sentido horario page_rotate_cw_label=Rotar en sentido horario page_rotate_ccw.title=Rotar en sentido antihorario -page_rotate_ccw.label=Rotar en sentido antihorario page_rotate_ccw_label=Rotar en sentido antihorario cursor_text_select_tool.title=Activar herramienta de selección de texto @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Herramienta de selección de texto cursor_hand_tool.title=Activar herramienta de mano cursor_hand_tool_label=Herramienta de mano +scroll_page.title=Usar desplazamiento de página +scroll_page_label=Desplazamiento de página scroll_vertical.title=Usar desplazamiento vertical scroll_vertical_label=Desplazamiento vertical scroll_horizontal.title=Usar desplazamiento horizontal @@ -137,7 +143,6 @@ print_progress_close=Cancelar # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Cambiar barra lateral -toggle_sidebar_notification.title=Alternar panel lateral (el documento contiene un esquema o adjuntos) toggle_sidebar_notification2.title=Alternar barra lateral (el documento contiene esquemas/adjuntos/capas) toggle_sidebar_label=Cambiar barra lateral document_outline.title=Mostrar resumen del documento (doble clic para expandir/contraer todos los elementos) @@ -153,9 +158,6 @@ current_outline_item_label=Elemento de esquema actual findbar.title=Buscar en el documento findbar_label=Buscar -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Página {{page}} - additional_layers=Capas adicionales # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Página {{page}} @@ -176,6 +178,7 @@ find_next.title=Encontrar la siguiente aparición de esta frase find_next_label=Siguiente find_highlight=Resaltar todos find_match_case_label=Coincidencia de mayús./minús. +find_match_diacritics_label=Coincidir diacríticos find_entire_word_label=Palabras completas find_reached_top=Se alcanzó el inicio del documento, se continúa desde el final find_reached_bottom=Se alcanzó el final del documento, se continúa desde el inicio @@ -219,7 +222,6 @@ error_stack=Pila: {{stack}} error_file=Archivo: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Línea: {{line}} -rendering_error=Ocurrió un error al renderizar la página. # Predefined zoom values page_scale_width=Anchura de la página @@ -231,15 +233,16 @@ page_scale_actual=Tamaño real page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Error +loading=Cargando… # Loading indicator messages -loading=Cargando… loading_error=Ocurrió un error al cargar el PDF. invalid_file_error=Fichero PDF no válido o corrupto. missing_file_error=No hay fichero PDF. unexpected_response_error=Respuesta inesperada del servidor. +rendering_error=Ocurrió un error al renderizar la página. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Cancelar printing_not_supported=Advertencia: Imprimir no está totalmente soportado por este navegador. printing_not_ready=Advertencia: Este PDF no se ha cargado completamente para poder imprimirse. web_fonts_disabled=Las tipografías web están desactivadas: es imposible usar las tipografías PDF embebidas. + +# Editor +editor_free_text2.title=Texto +editor_free_text2_label=Texto +editor_ink2.title=Dibujar +editor_ink2_label=Dibujar + +free_text2_default_content=Empezar a escribir… + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Tamaño +editor_ink_color=Color +editor_ink_thickness=Grosor +editor_ink_opacity=Opacidad + +# Editor aria +editor_free_text2_aria_label=Editor de texto +editor_ink2_aria_label=Editor de dibujos +editor_ink_canvas_aria_label=Imagen creada por el usuario diff --git a/media/js/pdf/web/locale/es-MX/viewer.properties b/media/js/pdf/web/locale/es-MX/viewer.properties index 217b2bfb17..4cdea06831 100644 --- a/media/js/pdf/web/locale/es-MX/viewer.properties +++ b/media/js/pdf/web/locale/es-MX/viewer.properties @@ -44,20 +44,24 @@ download_label=Descargar bookmark.title=Vista actual (copiar o abrir en una nueva ventana) bookmark_label=Vista actual +save.title=Guardar +save_label=Guardar +bookmark1.title=Página actual (Ver URL de la página actual) +bookmark1_label=Página actual + +open_in_app.title=Abrir en la aplicación +open_in_app_label=Abrir en la aplicación + # Secondary toolbar and context menu tools.title=Herramientas tools_label=Herramientas first_page.title=Ir a la primera página -first_page.label=Ir a la primera página first_page_label=Ir a la primera página last_page.title=Ir a la última página -last_page.label=Ir a la última página last_page_label=Ir a la última página page_rotate_cw.title=Girar a la derecha -page_rotate_cw.label=Girar a la derecha page_rotate_cw_label=Girar a la derecha page_rotate_ccw.title=Girar a la izquierda -page_rotate_ccw.label=Girar a la izquierda page_rotate_ccw_label=Girar a la izquierda cursor_text_select_tool.title=Activar la herramienta de selección de texto @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Herramienta de selección de texto cursor_hand_tool.title=Activar la herramienta de mano cursor_hand_tool_label=Herramienta de mano +scroll_page.title=Usar desplazamiento de página +scroll_page_label=Desplazamiento de página scroll_vertical.title=Usar desplazamiento vertical scroll_vertical_label=Desplazamiento vertical scroll_horizontal.title=Usar desplazamiento horizontal @@ -137,7 +143,6 @@ print_progress_close=Cancelar # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Cambiar barra lateral -toggle_sidebar_notification.title=Cambiar barra lateral (índice de contenidos del documento/adjuntos) toggle_sidebar_notification2.title=Alternar barra lateral (el documento contiene esquemas/adjuntos/capas) toggle_sidebar_label=Cambiar barra lateral document_outline.title=Mostrar esquema del documento (doble clic para expandir/contraer todos los elementos) @@ -153,9 +158,6 @@ current_outline_item_label=Elemento de esquema actual findbar.title=Buscar en el documento findbar_label=Buscar -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Página {{page}} - additional_layers=Capas adicionales # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Página {{page}} @@ -176,6 +178,7 @@ find_next.title=Ir a la siguiente frase encontrada find_next_label=Siguiente find_highlight=Resaltar todo find_match_case_label=Coincidir con mayúsculas y minúsculas +find_match_diacritics_label=Coincidir diacríticos find_entire_word_label=Palabras completas find_reached_top=Se alcanzó el inicio del documento, se buscará al final find_reached_bottom=Se alcanzó el final del documento, se buscará al inicio @@ -219,7 +222,6 @@ error_stack=Pila: {{stack}} error_file=Archivo: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Línea: {{line}} -rendering_error=Un error ocurrió al renderizar la página. # Predefined zoom values page_scale_width=Ancho de página @@ -231,15 +233,16 @@ page_scale_actual=Tamaño real page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Error +loading=Cargando… # Loading indicator messages -loading=Cargando… loading_error=Un error ocurrió al cargar el PDF. invalid_file_error=Archivo PDF invalido o dañado. missing_file_error=Archivo PDF no encontrado. unexpected_response_error=Respuesta inesperada del servidor. +rendering_error=Un error ocurrió al renderizar la página. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Cancelar printing_not_supported=Advertencia: La impresión no esta completamente soportada por este navegador. printing_not_ready=Advertencia: El PDF no cargo completamente para impresión. web_fonts_disabled=Las fuentes web están desactivadas: es imposible usar las fuentes PDF embebidas. + +# Editor +editor_free_text2.title=Texto +editor_free_text2_label=Texto +editor_ink2.title=Dibujar +editor_ink2_label=Dibujar + +free_text2_default_content=Empieza a escribir… + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Tamaño +editor_ink_color=Color +editor_ink_thickness=Grossor +editor_ink_opacity=Opacidad + +# Editor aria +editor_free_text2_aria_label=Editor de texto +editor_ink2_aria_label=Editor de dibujo +editor_ink_canvas_aria_label=Imagen creada por el usuario diff --git a/media/js/pdf/web/locale/et/viewer.properties b/media/js/pdf/web/locale/et/viewer.properties index cab1ad4ba6..1af8a405d0 100644 --- a/media/js/pdf/web/locale/et/viewer.properties +++ b/media/js/pdf/web/locale/et/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Praegune vaade tools.title=Tööriistad tools_label=Tööriistad first_page.title=Mine esimesele leheküljele -first_page.label=Mine esimesele leheküljele first_page_label=Mine esimesele leheküljele last_page.title=Mine viimasele leheküljele -last_page.label=Mine viimasele leheküljele last_page_label=Mine viimasele leheküljele page_rotate_cw.title=Pööra päripäeva -page_rotate_cw.label=Pööra päripäeva page_rotate_cw_label=Pööra päripäeva page_rotate_ccw.title=Pööra vastupäeva -page_rotate_ccw.label=Pööra vastupäeva page_rotate_ccw_label=Pööra vastupäeva cursor_text_select_tool.title=Luba teksti valimise tööriist @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Teksti valimise tööriist cursor_hand_tool.title=Luba sirvimistööriist cursor_hand_tool_label=Sirvimistööriist +scroll_page.title=Kasutatakse lehe kaupa kerimist +scroll_page_label=Lehe kaupa kerimine scroll_vertical.title=Kasuta vertikaalset kerimist scroll_vertical_label=Vertikaalne kerimine scroll_horizontal.title=Kasuta horisontaalset kerimist @@ -137,17 +135,24 @@ print_progress_close=Loobu # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Näita külgriba -toggle_sidebar_notification.title=Näita külgriba (dokument sisaldab sisukorda/manuseid) +toggle_sidebar_notification2.title=Näita külgriba (dokument sisaldab sisukorda/manuseid/kihte) toggle_sidebar_label=Näita külgriba document_outline.title=Näita sisukorda (kõigi punktide laiendamiseks/ahendamiseks topeltklõpsa) document_outline_label=Näita sisukorda attachments.title=Näita manuseid attachments_label=Manused +layers.title=Näita kihte (kõikide kihtide vaikeolekusse lähtestamiseks topeltklõpsa) +layers_label=Kihid thumbs.title=Näita pisipilte thumbs_label=Pisipildid +current_outline_item.title=Otsi üles praegune kontuuriüksus +current_outline_item_label=Praegune kontuuriüksus findbar.title=Otsi dokumendist findbar_label=Otsi +additional_layers=Täiendavad kihid +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Lehekülg {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -165,6 +170,7 @@ find_next.title=Otsi fraasi järgmine esinemiskoht find_next_label=Järgmine find_highlight=Too kõik esile find_match_case_label=Tõstutundlik +find_match_diacritics_label=Otsitakse diakriitiliselt find_entire_word_label=Täissõnad find_reached_top=Jõuti dokumendi algusesse, jätkati lõpust find_reached_bottom=Jõuti dokumendi lõppu, jätkati algusest @@ -220,8 +226,7 @@ page_scale_actual=Tegelik suurus page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Viga - +loading=Laadimine… loading_error=PDFi laadimisel esines viga. invalid_file_error=Vigane või rikutud PDF-fail. missing_file_error=PDF-fail puudub. @@ -244,3 +249,14 @@ password_cancel=Loobu printing_not_supported=Hoiatus: printimine pole selle brauseri poolt täielikult toetatud. printing_not_ready=Hoiatus: PDF pole printimiseks täielikult laaditud. web_fonts_disabled=Veebifondid on keelatud: PDFiga kaasatud fonte pole võimalik kasutada. + +# Editor +editor_none.title=Keela annotatsioonide muutmine +editor_none_label=Keela muutmine +editor_free_text.title=Lisa vabateksti annotatsioon +editor_free_text_label=Vabateksti annotatsioon +editor_ink.title=Lisa tindiannotatsioon +editor_ink_label=Tindiannotatsioon + +free_text_default_content=Sisesta tekst… + diff --git a/media/js/pdf/web/locale/eu/viewer.properties b/media/js/pdf/web/locale/eu/viewer.properties index 7d73e3edee..82d521079c 100644 --- a/media/js/pdf/web/locale/eu/viewer.properties +++ b/media/js/pdf/web/locale/eu/viewer.properties @@ -44,20 +44,25 @@ download_label=Deskargatu bookmark.title=Uneko ikuspegia (kopiatu edo ireki leiho berrian) bookmark_label=Uneko ikuspegia +save.title=Gorde +save_label=Gorde +bookmark1.title=Uneko orria (ikusi uneko orriaren URLa) +bookmark1_label=Uneko orria +# LOCALIZATION NOTE (open_in_app.title): This string is used in Firefox for Android. +open_in_app.title=Ireki aplikazioan +# LOCALIZATION NOTE (open_in_app_label): This string is used in Firefox for Android. Length of the translation matters since we are in a mobile context, with limited screen estate. +open_in_app_label=Ireki aplikazioan + # Secondary toolbar and context menu tools.title=Tresnak tools_label=Tresnak first_page.title=Joan lehen orrira -first_page.label=Joan lehen orrira first_page_label=Joan lehen orrira last_page.title=Joan azken orrira -last_page.label=Joan azken orrira last_page_label=Joan azken orrira page_rotate_cw.title=Biratu erlojuaren norantzan -page_rotate_cw.label=Biratu erlojuaren norantzan page_rotate_cw_label=Biratu erlojuaren norantzan page_rotate_ccw.title=Biratu erlojuaren aurkako norantzan -page_rotate_ccw.label=Biratu erlojuaren aurkako norantzan page_rotate_ccw_label=Biratu erlojuaren aurkako norantzan cursor_text_select_tool.title=Gaitu testuaren hautapen tresna @@ -65,6 +70,8 @@ cursor_text_select_tool_label=Testuaren hautapen tresna cursor_hand_tool.title=Gaitu eskuaren tresna cursor_hand_tool_label=Eskuaren tresna +scroll_page.title=Erabili orriaren korritzea +scroll_page_label=Orriaren korritzea scroll_vertical.title=Erabili korritze bertikala scroll_vertical_label=Korritze bertikala scroll_horizontal.title=Erabili korritze horizontala @@ -137,7 +144,6 @@ print_progress_close=Utzi # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Txandakatu alboko barra -toggle_sidebar_notification.title=Txandakatu alboko barra (dokumentuak eskema/eranskinak ditu) toggle_sidebar_notification2.title=Txandakatu alboko barra (dokumentuak eskema/eranskinak/geruzak ditu) toggle_sidebar_label=Txandakatu alboko barra document_outline.title=Erakutsi dokumentuaren eskema (klik bikoitza elementu guztiak zabaltzeko/tolesteko) @@ -153,9 +159,6 @@ current_outline_item_label=Uneko eskemaren elementua findbar.title=Bilatu dokumentuan findbar_label=Bilatu -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas={{page}}. orria - additional_layers=Geruza gehigarriak # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark={{page}}. orria @@ -176,6 +179,7 @@ find_next.title=Bilatu esaldiaren hurrengo parekatzea find_next_label=Hurrengoa find_highlight=Nabarmendu guztia find_match_case_label=Bat etorri maiuskulekin/minuskulekin +find_match_diacritics_label=Bereizi diakritikoak find_entire_word_label=Hitz osoak find_reached_top=Dokumentuaren hasierara heldu da, bukaeratik jarraitzen find_reached_bottom=Dokumentuaren bukaerara heldu da, hasieratik jarraitzen @@ -219,7 +223,6 @@ error_stack=Pila: {{stack}} error_file=Fitxategia: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Lerroa: {{line}} -rendering_error=Errorea gertatu da orria errendatzean. # Predefined zoom values page_scale_width=Orriaren zabalera @@ -231,15 +234,16 @@ page_scale_actual=Benetako tamaina page_scale_percent=%{{scale}} # Loading indicator messages -loading_error_indicator=Errorea +loading=Kargatzen… # Loading indicator messages -loading=Kargatzen… loading_error=Errorea gertatu da PDFa kargatzean. invalid_file_error=PDF fitxategi baliogabe edo hondatua. missing_file_error=PDF fitxategia falta da. unexpected_response_error=Espero gabeko zerbitzariaren erantzuna. +rendering_error=Errorea gertatu da orria errendatzean. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +261,23 @@ password_cancel=Utzi printing_not_supported=Abisua: inprimatzeko euskarria ez da erabatekoa nabigatzaile honetan. printing_not_ready=Abisua: PDFa ez dago erabat kargatuta inprimatzeko. web_fonts_disabled=Webeko letra-tipoak desgaituta daude: ezin dira kapsulatutako PDF letra-tipoak erabili. + +# Editor +editor_free_text2.title=Testua +editor_free_text2_label=Testua +editor_ink2.title=Marrazkia +editor_ink2_label=Marrazkia + +free_text2_default_content=Hasi idazten… + +# Editor Parameters +editor_free_text_color=Kolorea +editor_free_text_size=Tamaina +editor_ink_color=Kolorea +editor_ink_thickness=Loditasuna +editor_ink_opacity=Opakutasuna + +# Editor aria +editor_free_text2_aria_label=Testu-editorea +editor_ink2_aria_label=Marrazki-editorea +editor_ink_canvas_aria_label=Erabiltzaileak sortutako irudia diff --git a/media/js/pdf/web/locale/fa/viewer.properties b/media/js/pdf/web/locale/fa/viewer.properties index 00eb8b6e46..ee0b483322 100644 --- a/media/js/pdf/web/locale/fa/viewer.properties +++ b/media/js/pdf/web/locale/fa/viewer.properties @@ -44,20 +44,19 @@ download_label=بارگیری bookmark.title=نمای فعلی (رونوشت و یا نشان دادن در پنجره جدید) bookmark_label=نمای فعلی +save_label=ذخیره + + # Secondary toolbar and context menu tools.title=ابزارها tools_label=ابزارها first_page.title=برو به اولین صفحه -first_page.label=برو یه اولین صفحه first_page_label=برو به اولین صفحه last_page.title=برو به آخرین صفحه -last_page.label=برو به آخرین صفحه last_page_label=برو به آخرین صفحه page_rotate_cw.title=چرخش ساعتگرد -page_rotate_cw.label=چرخش ساعتگرد page_rotate_cw_label=چرخش ساعتگرد page_rotate_ccw.title=چرخش پاد ساعتگرد -page_rotate_ccw.label=چرخش پاد ساعتگرد page_rotate_ccw_label=چرخش پاد ساعتگرد cursor_text_select_tool.title=فعال کردن ابزارِ انتخابِ متن @@ -126,17 +125,19 @@ print_progress_close=لغو # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=باز و بسته کردن نوار کناری -toggle_sidebar_notification.title=تغییر وضعیت نوار کناری (سند حاوی طرح/پیوست است) toggle_sidebar_label=تغییرحالت نوارکناری document_outline.title=نمایش رئوس مطالب مدارک(برای بازشدن/جمع شدن همه موارد دوبار کلیک کنید) document_outline_label=طرح نوشتار attachments.title=نمایش پیوست‌ها attachments_label=پیوست‌ها +layers_label=لایه‌ها thumbs.title=نمایش تصاویر بندانگشتی thumbs_label=تصاویر بندانگشتی findbar.title=جستجو در سند findbar_label=پیدا کردن +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=صفحهٔ {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -189,7 +190,6 @@ error_stack=توده: {{stack}} error_file=پرونده: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=سطر: {{line}} -rendering_error=هنگام بارگیری صفحه خطایی رخ داد. # Predefined zoom values page_scale_width=عرض صفحه @@ -201,13 +201,18 @@ page_scale_actual=اندازه واقعی‌ page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=خطا +# Loading indicator messages loading_error=هنگام بارگیری پرونده PDF خطایی رخ داد. invalid_file_error=پرونده PDF نامعتبر یامعیوب می‌باشد. missing_file_error=پرونده PDF یافت نشد. unexpected_response_error=پاسخ پیش بینی نشده سرور +rendering_error=هنگام بارگیری صفحه خطایی رخ داد. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). @@ -221,3 +226,17 @@ password_cancel=لغو printing_not_supported=هشدار: قابلیت چاپ به‌طور کامل در این مرورگر پشتیبانی نمی‌شود. printing_not_ready=اخطار: پرونده PDF بطور کامل بارگیری نشده و امکان چاپ وجود ندارد. web_fonts_disabled=فونت های تحت وب غیر فعال شده اند: امکان استفاده از نمایش دهنده داخلی PDF وجود ندارد. + +# Editor +editor_free_text2.title=متن +editor_free_text2_label=متن +editor_ink2.title=کشیدن +editor_ink2_label=کشیدن + + +# Editor Parameters +editor_free_text_color=رنگ +editor_free_text_size=اندازه +editor_ink_color=رنگ + +# Editor aria diff --git a/media/js/pdf/web/locale/ff/viewer.properties b/media/js/pdf/web/locale/ff/viewer.properties index eb5ca99bee..9acff5b091 100644 --- a/media/js/pdf/web/locale/ff/viewer.properties +++ b/media/js/pdf/web/locale/ff/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Jiytol Gonangol tools.title=Kuutorɗe tools_label=Kuutorɗe first_page.title=Yah to hello adanngo -first_page.label=Yah to hello adanngo first_page_label=Yah to hello adanngo last_page.title=Yah to hello wattindiingo -last_page.label=Yah to hello wattindiingo last_page_label=Yah to hello wattindiingo page_rotate_cw.title=Yiiltu Faya Ñaamo -page_rotate_cw.label=Yiiltu Faya Ñaamo page_rotate_cw_label=Yiiltu Faya Ñaamo page_rotate_ccw.title=Yiiltu Faya Nano -page_rotate_ccw.label=Yiiltu Faya Nano page_rotate_ccw_label=Yiiltu Faya Nano cursor_text_select_tool.title=Gollin kaɓirgel cuɓirgel binndi @@ -137,7 +133,6 @@ print_progress_close=Haaytu # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Toggilo Palal Sawndo -toggle_sidebar_notification.title=Palal sawndo (dokimaa oo ina waɗi taarngo/cinnde) toggle_sidebar_label=Toggilo Palal Sawndo document_outline.title=Hollu Ƴiyal Fiilannde (dobdobo ngam wertude/taggude teme fof) document_outline_label=Toɓɓe Fiilannde @@ -219,9 +214,6 @@ page_scale_actual=Ɓetol Jaati # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Juumre - loading_error=Juumre waɗii tuma nde loowata PDF oo. invalid_file_error=Fiilde PDF moƴƴaani walla jiibii. missing_file_error=Fiilde PDF ena ŋakki. @@ -240,3 +232,4 @@ password_cancel=Haaytu printing_not_supported=Reentino: Winnditagol tammbitaaka no feewi e ndee wanngorde. printing_not_ready=Reentino: PDF oo loowaaki haa timmi ngam winnditagol. web_fonts_disabled=Ponte geese ko daaƴaaɗe: horiima huutoraade ponte PDF coomtoraaɗe. + diff --git a/media/js/pdf/web/locale/fi/viewer.properties b/media/js/pdf/web/locale/fi/viewer.properties index a6d46e1bd5..448d517f3b 100644 --- a/media/js/pdf/web/locale/fi/viewer.properties +++ b/media/js/pdf/web/locale/fi/viewer.properties @@ -44,20 +44,26 @@ download_label=Lataa bookmark.title=Avoin ikkuna (kopioi tai avaa uuteen ikkunaan) bookmark_label=Avoin ikkuna +save.title=Tallenna +save_label=Tallenna +bookmark1.title=Nykyinen sivu (Näytä URL-osoite nykyiseltä sivulta) +bookmark1_label=Nykyinen sivu + +# LOCALIZATION NOTE (open_in_app.title): This string is used in Firefox for Android. +open_in_app.title=Avaa sovelluksessa +# LOCALIZATION NOTE (open_in_app_label): This string is used in Firefox for Android. Length of the translation matters since we are in a mobile context, with limited screen estate. +open_in_app_label=Avaa sovelluksessa + # Secondary toolbar and context menu tools.title=Tools tools_label=Tools first_page.title=Siirry ensimmäiselle sivulle -first_page.label=Siirry ensimmäiselle sivulle first_page_label=Siirry ensimmäiselle sivulle last_page.title=Siirry viimeiselle sivulle -last_page.label=Siirry viimeiselle sivulle last_page_label=Siirry viimeiselle sivulle page_rotate_cw.title=Kierrä oikealle -page_rotate_cw.label=Kierrä oikealle page_rotate_cw_label=Kierrä oikealle page_rotate_ccw.title=Kierrä vasemmalle -page_rotate_ccw.label=Kierrä vasemmalle page_rotate_ccw_label=Kierrä vasemmalle cursor_text_select_tool.title=Käytä tekstinvalintatyökalua @@ -65,6 +71,8 @@ cursor_text_select_tool_label=Tekstinvalintatyökalu cursor_hand_tool.title=Käytä käsityökalua cursor_hand_tool_label=Käsityökalu +scroll_page.title=Käytä sivun vieritystä +scroll_page_label=Sivun vieritys scroll_vertical.title=Käytä pystysuuntaista vieritystä scroll_vertical_label=Pystysuuntainen vieritys scroll_horizontal.title=Käytä vaakasuuntaista vieritystä @@ -82,7 +90,7 @@ spread_even_label=Parilliselta alkavat aukeamat # Document properties dialog box document_properties.title=Dokumentin ominaisuudet… document_properties_label=Dokumentin ominaisuudet… -document_properties_file_name=Tiedostonimi: +document_properties_file_name=Tiedoston nimi: document_properties_file_size=Tiedoston koko: # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" # will be replaced by the PDF file size in kilobytes, respectively in bytes. @@ -137,7 +145,6 @@ print_progress_close=Peruuta # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Näytä/piilota sivupaneeli -toggle_sidebar_notification.title=Näytä/piilota sivupaneeli (dokumentissa on sisällys tai liitteitä) toggle_sidebar_notification2.title=Näytä/piilota sivupaneeli (dokumentissa on sisällys/liitteitä/tasoja) toggle_sidebar_label=Näytä/piilota sivupaneeli document_outline.title=Näytä dokumentin sisällys (laajenna tai kutista kohdat kaksoisnapsauttamalla) @@ -153,9 +160,6 @@ current_outline_item_label=Nykyinen sisällyksen kohta findbar.title=Etsi dokumentista findbar_label=Etsi -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Sivu {{page}} - additional_layers=Lisätasot # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Sivu {{page}} @@ -176,6 +180,7 @@ find_next.title=Etsi hakusanan seuraava osuma find_next_label=Seuraava find_highlight=Korosta kaikki find_match_case_label=Huomioi kirjainkoko +find_match_diacritics_label=Erota tarkkeet find_entire_word_label=Kokonaiset sanat find_reached_top=Päästiin dokumentin alkuun, jatketaan lopusta find_reached_bottom=Päästiin dokumentin loppuun, jatketaan alusta @@ -219,7 +224,6 @@ error_stack=Pino: {{stack}} error_file=Tiedosto: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Rivi: {{line}} -rendering_error=Tapahtui virhe piirrettäessä sivua. # Predefined zoom values page_scale_width=Sivun leveys @@ -231,15 +235,16 @@ page_scale_actual=Todellinen koko page_scale_percent={{scale}} % # Loading indicator messages -loading_error_indicator=Virhe +loading=Ladataan… # Loading indicator messages -loading=Ladataan… loading_error=Tapahtui virhe ladattaessa PDF-tiedostoa. invalid_file_error=Virheellinen tai vioittunut PDF-tiedosto. missing_file_error=Puuttuva PDF-tiedosto. unexpected_response_error=Odottamaton vastaus palvelimelta. +rendering_error=Tapahtui virhe piirrettäessä sivua. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -248,7 +253,7 @@ annotation_date_string={{date}}, {{time}} # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). # Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} Annotation] +text_annotation_type.alt=[{{type}}-merkintä] password_label=Kirjoita PDF-tiedoston salasana. password_invalid=Virheellinen salasana. Yritä uudestaan. password_ok=OK @@ -257,3 +262,23 @@ password_cancel=Peruuta printing_not_supported=Varoitus: Selain ei tue kaikkia tulostustapoja. printing_not_ready=Varoitus: PDF-tiedosto ei ole vielä latautunut kokonaan, eikä sitä voi vielä tulostaa. web_fonts_disabled=Verkkosivujen omat kirjasinlajit on estetty: ei voida käyttää upotettuja PDF-kirjasinlajeja. + +# Editor +editor_free_text2.title=Teksti +editor_free_text2_label=Teksti +editor_ink2.title=Piirros +editor_ink2_label=Piirros + +free_text2_default_content=Aloita kirjoittaminen… + +# Editor Parameters +editor_free_text_color=Väri +editor_free_text_size=Koko +editor_ink_color=Väri +editor_ink_thickness=Paksuus +editor_ink_opacity=Peittävyys + +# Editor aria +editor_free_text2_aria_label=Tekstimuokkain +editor_ink2_aria_label=Piirrustusmuokkain +editor_ink_canvas_aria_label=Käyttäjän luoma kuva diff --git a/media/js/pdf/web/locale/fr/viewer.properties b/media/js/pdf/web/locale/fr/viewer.properties index addb629eff..bee060dc45 100644 --- a/media/js/pdf/web/locale/fr/viewer.properties +++ b/media/js/pdf/web/locale/fr/viewer.properties @@ -44,20 +44,24 @@ download_label=Télécharger bookmark.title=Affichage courant (copier ou ouvrir dans une nouvelle fenêtre) bookmark_label=Affichage actuel +save.title=Enregistrer +save_label=Enregistrer +bookmark1.title=Page courante (montrer l’adresse de la page courante) +bookmark1_label=Page courante + +open_in_app.title=Ouvrir dans une application +open_in_app_label=Ouvrir dans une application + # Secondary toolbar and context menu tools.title=Outils tools_label=Outils first_page.title=Aller à la première page -first_page.label=Aller à la première page first_page_label=Aller à la première page last_page.title=Aller à la dernière page -last_page.label=Aller à la dernière page last_page_label=Aller à la dernière page page_rotate_cw.title=Rotation horaire -page_rotate_cw.label=Rotation horaire page_rotate_cw_label=Rotation horaire page_rotate_ccw.title=Rotation antihoraire -page_rotate_ccw.label=Rotation antihoraire page_rotate_ccw_label=Rotation antihoraire cursor_text_select_tool.title=Activer l’outil de sélection de texte @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Outil de sélection de texte cursor_hand_tool.title=Activer l’outil main cursor_hand_tool_label=Outil main +scroll_page.title=Utiliser le défilement par page +scroll_page_label=Défilement par page scroll_vertical.title=Utiliser le défilement vertical scroll_vertical_label=Défilement vertical scroll_horizontal.title=Utiliser le défilement horizontal @@ -137,7 +143,6 @@ print_progress_close=Annuler # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Afficher/Masquer le panneau latéral -toggle_sidebar_notification.title=Afficher/Masquer le panneau latéral (le document contient des signets/pièces jointes) toggle_sidebar_notification2.title=Afficher/Masquer le panneau latéral (le document contient des signets/pièces jointes/calques) toggle_sidebar_label=Afficher/Masquer le panneau latéral document_outline.title=Afficher les signets du document (double-cliquer pour développer/réduire tous les éléments) @@ -153,9 +158,6 @@ current_outline_item_label=Élément de plan actuel findbar.title=Rechercher dans le document findbar_label=Rechercher -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Page {{page}} - additional_layers=Calques additionnels # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Page {{page}} @@ -176,6 +178,7 @@ find_next.title=Trouver la prochaine occurrence de l’expression find_next_label=Suivant find_highlight=Tout surligner find_match_case_label=Respecter la casse +find_match_diacritics_label=Respecter les accents et diacritiques find_entire_word_label=Mots entiers find_reached_top=Haut de la page atteint, poursuite depuis la fin find_reached_bottom=Bas de la page atteint, poursuite au début @@ -219,7 +222,6 @@ error_stack=Pile : {{stack}} error_file=Fichier : {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Ligne : {{line}} -rendering_error=Une erreur s’est produite lors de l’affichage de la page. # Predefined zoom values page_scale_width=Pleine largeur @@ -231,15 +233,16 @@ page_scale_actual=Taille réelle page_scale_percent={{scale}} % # Loading indicator messages -loading_error_indicator=Erreur +loading=Chargement… # Loading indicator messages -loading=Chargement… loading_error=Une erreur s’est produite lors du chargement du fichier PDF. invalid_file_error=Fichier PDF invalide ou corrompu. missing_file_error=Fichier PDF manquant. unexpected_response_error=Réponse inattendue du serveur. +rendering_error=Une erreur s’est produite lors de l’affichage de la page. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}} à {{time}} @@ -257,3 +260,23 @@ password_cancel=Annuler printing_not_supported=Attention : l’impression n’est pas totalement prise en charge par ce navigateur. printing_not_ready=Attention : le PDF n’est pas entièrement chargé pour pouvoir l’imprimer. web_fonts_disabled=Les polices web sont désactivées : impossible d’utiliser les polices intégrées au PDF. + +# Editor +editor_free_text2.title=Texte +editor_free_text2_label=Texte +editor_ink2.title=Dessiner +editor_ink2_label=Dessiner + +free_text2_default_content=Commencer à écrire… + +# Editor Parameters +editor_free_text_color=Couleur +editor_free_text_size=Taille +editor_ink_color=Couleur +editor_ink_thickness=Épaisseur +editor_ink_opacity=Opacité + +# Editor aria +editor_free_text2_aria_label=Éditeur de texte +editor_ink2_aria_label=Éditeur de dessin +editor_ink_canvas_aria_label=Image créée par l’utilisateur·trice diff --git a/media/js/pdf/web/locale/fur/viewer.properties b/media/js/pdf/web/locale/fur/viewer.properties new file mode 100644 index 0000000000..8f2f8109ec --- /dev/null +++ b/media/js/pdf/web/locale/fur/viewer.properties @@ -0,0 +1,282 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pagjine precedente +previous_label=Indaûr +next.title=Prossime pagjine +next_label=Indevant + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pagjine +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=di {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} di {{pagesCount}}) + +zoom_out.title=Impiçulìs +zoom_out_label=Impiçulìs +zoom_in.title=Ingrandìs +zoom_in_label=Ingrandìs +zoom.title=Ingrandiment +presentation_mode.title=Passe ae modalitât presentazion +presentation_mode_label=Modalitât presentazion +open_file.title=Vierç un file +open_file_label=Vierç +print.title=Stampe +print_label=Stampe +download.title=Discjame +download_label=Discjame +bookmark.title=Viodude atuâl (copie o vierç intun gnûf barcon) +bookmark_label=Viodude atuâl + +save.title=Salve +save_label=Salve +bookmark1.title=Pagjine corinte (mostre URL de pagjine atuâl) +bookmark1_label=Pagjine corinte + +open_in_app.title=Vierç te aplicazion +open_in_app_label=Vierç te aplicazion + +# Secondary toolbar and context menu +tools.title=Struments +tools_label=Struments +first_page.title=Va ae prime pagjine +first_page_label=Va ae prime pagjine +last_page.title=Va ae ultime pagjine +last_page_label=Va ae ultime pagjine +page_rotate_cw.title=Zire in sens orari +page_rotate_cw_label=Zire in sens orari +page_rotate_ccw.title=Zire in sens antiorari +page_rotate_ccw_label=Zire in sens antiorari + +cursor_text_select_tool.title=Ative il strument di selezion dal test +cursor_text_select_tool_label=Strument di selezion dal test +cursor_hand_tool.title=Ative il strument manute +cursor_hand_tool_label=Strument manute + +scroll_page.title=Dopre il scoriment des pagjinis +scroll_page_label=Scoriment pagjinis +scroll_vertical.title=Dopre scoriment verticâl +scroll_vertical_label=Scoriment verticâl +scroll_horizontal.title=Dopre scoriment orizontâl +scroll_horizontal_label=Scoriment orizontâl +scroll_wrapped.title=Dopre scoriment par blocs +scroll_wrapped_label=Scoriment par blocs + +spread_none.title=No sta meti dongje pagjinis in cubie +spread_none_label=No cubiis di pagjinis +spread_odd.title=Met dongje cubiis di pagjinis scomençant des pagjinis dispar +spread_odd_label=Cubiis di pagjinis, dispar a çampe +spread_even.title=Met dongje cubiis di pagjinis scomençant des pagjinis pâr +spread_even_label=Cubiis di pagjinis, pâr a çampe + +# Document properties dialog box +document_properties.title=Proprietâts dal document… +document_properties_label=Proprietâts dal document… +document_properties_file_name=Non dal file: +document_properties_file_size=Dimension dal file: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Titul: +document_properties_author=Autôr: +document_properties_subject=Ogjet: +document_properties_keywords=Peraulis clâf: +document_properties_creation_date=Date di creazion: +document_properties_modification_date=Date di modifiche: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creatôr +document_properties_producer=Gjeneradôr PDF: +document_properties_version=Version PDF: +document_properties_page_count=Numar di pagjinis: +document_properties_page_size=Dimension de pagjine: +document_properties_page_size_unit_inches=oncis +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=verticâl +document_properties_page_size_orientation_landscape=orizontâl +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Letare +document_properties_page_size_name_legal=Legâl +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Visualizazion web svelte: +document_properties_linearized_yes=Sì +document_properties_linearized_no=No +document_properties_close=Siere + +print_progress_message=Daûr a prontâ il document pe stampe… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Anule + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Ative/Disative sbare laterâl +toggle_sidebar_notification2.title=Ative/Disative sbare laterâl (il document al conten struture/zontis/strâts) +toggle_sidebar_label=Ative/Disative sbare laterâl +document_outline.title=Mostre la struture dal document (dopli clic par slargjâ/strenzi ducj i elements) +document_outline_label=Struture dal document +attachments.title=Mostre lis zontis +attachments_label=Zontis +layers.title=Mostre i strâts (dopli clic par ristabilî ducj i strâts al stât predefinît) +layers_label=Strâts +thumbs.title=Mostre miniaturis +thumbs_label=Miniaturis +current_outline_item.title=Cjate l'element de struture atuâl +current_outline_item_label=Element de struture atuâl +findbar.title=Cjate tal document +findbar_label=Cjate + +additional_layers=Strâts adizionâi +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Pagjine {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pagjine {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniature de pagjine {{page}} + +# Find panel button title and messages +find_input.title=Cjate +find_input.placeholder=Cjate tal document… +find_previous.title=Cjate il câs precedent dal test +find_previous_label=Precedent +find_next.title=Cjate il câs sucessîf dal test +find_next_label=Sucessîf +find_highlight=Evidenzie dut +find_match_case_label=Fâs distinzion tra maiusculis e minusculis +find_match_diacritics_label=Corispondence diacritiche +find_entire_word_label=Peraulis interiis +find_reached_top=Si è rivâts al inizi dal document e si à continuât de fin +find_reached_bottom=Si è rivât ae fin dal document e si à continuât dal inizi +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} di {{total}} corispondence +find_match_count[two]={{current}} di {{total}} corispondencis +find_match_count[few]={{current}} di {{total}} corispondencis +find_match_count[many]={{current}} di {{total}} corispondencis +find_match_count[other]={{current}} di {{total}} corispondencis +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Plui di {{limit}} corispondencis +find_match_count_limit[one]=Plui di {{limit}} corispondence +find_match_count_limit[two]=Plui di {{limit}} corispondencis +find_match_count_limit[few]=Plui di {{limit}} corispondencis +find_match_count_limit[many]=Plui di {{limit}} corispondencis +find_match_count_limit[other]=Plui di {{limit}} corispondencis +find_not_found=Test no cjatât + +# Error panel labels +error_more_info=Altris informazions +error_less_info=Mancul informazions +error_close=Siere +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (compilazion: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Messaç: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=Stack: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=File: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Rie: {{line}} + +# Predefined zoom values +page_scale_width=Largjece de pagjine +page_scale_fit=Pagjine interie +page_scale_auto=Ingrandiment automatic +page_scale_actual=Dimension reâl +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Daûr a cjamâ… + +# Loading indicator messages +loading_error=Al è vignût fûr un erôr intant che si cjariave il PDF. +invalid_file_error=File PDF no valit o ruvinât. +missing_file_error=Al mancje il file PDF. +unexpected_response_error=Rispueste dal servidôr inspietade. + +rendering_error=Al è vignût fûr un erôr tal realizâ la visualizazion de pagjine. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[Anotazion {{type}}] +password_label=Inserìs la password par vierzi chest file PDF. +password_invalid=Password no valide. Par plasê torne prove. +password_ok=Va ben +password_cancel=Anule + +printing_not_supported=Atenzion: la stampe no je supuartade ad implen di chest navigadôr. +printing_not_ready=Atenzion: il PDF nol è stât cjamât dal dut pe stampe. +web_fonts_disabled=I caratars dal Web a son disativâts: Impussibil doprâ i caratars PDF incorporâts. + +# Editor +editor_free_text2.title=Test +editor_free_text2_label=Test +editor_ink2.title=Dissen +editor_ink2_label=Dissen + +free_text2_default_content=Scomence a scrivi… + +# Editor Parameters +editor_free_text_color=Colôr +editor_free_text_size=Dimension +editor_ink_color=Colôr +editor_ink_thickness=Spessôr +editor_ink_opacity=Opacitât + +# Editor aria +editor_free_text2_aria_label=Editôr di test +editor_ink2_aria_label=Editôr dissens +editor_ink_canvas_aria_label=Imagjin creade dal utent diff --git a/media/js/pdf/web/locale/fy-NL/viewer.properties b/media/js/pdf/web/locale/fy-NL/viewer.properties index 5fe493450e..40e326dc63 100644 --- a/media/js/pdf/web/locale/fy-NL/viewer.properties +++ b/media/js/pdf/web/locale/fy-NL/viewer.properties @@ -44,27 +44,33 @@ download_label=Downloade bookmark.title=Aktuele finster (kopiearje of iepenje yn nij finster) bookmark_label=Aktuele finster +save.title=Bewarje +save_label=Bewarje +bookmark1.title=Aktuele side (URL fan aktuele side besjen) +bookmark1_label=Aktuele side + +open_in_app.title=Iepenje yn app +open_in_app_label=Iepenje yn app + # Secondary toolbar and context menu tools.title=Ark tools_label=Ark first_page.title=Gean nei earste side -first_page.label=Nei earste side gean first_page_label=Gean nei earste side last_page.title=Gean nei lêste side -last_page.label=Nei lêste side gean last_page_label=Gean nei lêste side page_rotate_cw.title=Rjochtsom draaie -page_rotate_cw.label=Rjochtsom draaie page_rotate_cw_label=Rjochtsom draaie -page_rotate_ccw.title=Loftsom draaie -page_rotate_ccw.label=Loftsom draaie -page_rotate_ccw_label=Loftsom draaie +page_rotate_ccw.title=Linksom draaie +page_rotate_ccw_label=Linksom draaie cursor_text_select_tool.title=Tekstseleksjehelpmiddel ynskeakelje cursor_text_select_tool_label=Tekstseleksjehelpmiddel cursor_hand_tool.title=Hânhelpmiddel ynskeakelje cursor_hand_tool_label=Hânhelpmiddel +scroll_page.title=Sideskowen brûke +scroll_page_label=Sideskowen scroll_vertical.title=Fertikaal skowe brûke scroll_vertical_label=Fertikaal skowe scroll_horizontal.title=Horizontaal skowe brûke @@ -137,7 +143,6 @@ print_progress_close=Annulearje # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Sidebalke yn-/útskeakelje -toggle_sidebar_notification.title=Sidebalke yn-/útskeakelje (dokumint befettet outline/bylagen) toggle_sidebar_notification2.title=Sidebalke yn-/útskeakelje (dokumint befettet oersjoch/bylagen/lagen) toggle_sidebar_label=Sidebalke yn-/útskeakelje document_outline.title=Dokumintoersjoch toane (dûbelklik om alle items út/yn te klappen) @@ -153,9 +158,6 @@ current_outline_item_label=Aktueel item yn ynhâldsopjefte findbar.title=Sykje yn dokumint findbar_label=Sykje -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Side {{page}} - additional_layers=Oanfoljende lagen # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Side {{page}} @@ -176,6 +178,7 @@ find_next.title=It folgjende foarkommen fan de tekst sykje find_next_label=Folgjende find_highlight=Alles markearje find_match_case_label=Haadlettergefoelich +find_match_diacritics_label=Diakrityske tekens brûke find_entire_word_label=Hiele wurden find_reached_top=Boppekant fan dokumint berikt, trochgien fan ûnder ôf find_reached_bottom=Ein fan dokumint berikt, trochgien fan boppe ôf @@ -219,7 +222,6 @@ error_stack=Stack: {{stack}} error_file=Bestân: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Rigel: {{line}} -rendering_error=Der is in flater bard by it renderjen fan de side. # Predefined zoom values page_scale_width=Sidebreedte @@ -231,15 +233,16 @@ page_scale_actual=Werklike grutte page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Flater +loading=Lade… # Loading indicator messages -loading=Lade… loading_error=Der is in flater bard by it laden fan de PDF. invalid_file_error=Ynfalide of korruptearre PDF-bestân. missing_file_error=PDF-bestân ûntbrekt. unexpected_response_error=Unferwacht serverantwurd. +rendering_error=Der is in flater bard by it renderjen fan de side. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Annulearje printing_not_supported=Warning: Printen is net folslein stipe troch dizze browser. printing_not_ready=Warning: PDF is net folslein laden om ôf te drukken. web_fonts_disabled=Weblettertypen binne útskeakele: gebrûk fan ynsluten PDF-lettertypen is net mooglik. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Tekenje +editor_ink2_label=Tekenje + +free_text2_default_content=Begjin mei typen… + +# Editor Parameters +editor_free_text_color=Kleur +editor_free_text_size=Grutte +editor_ink_color=Kleur +editor_ink_thickness=Tsjokte +editor_ink_opacity=Transparânsje + +# Editor aria +editor_free_text2_aria_label=Tekstbewurker +editor_ink2_aria_label=Tekeningbewurker +editor_ink_canvas_aria_label=Troch brûker makke ôfbylding diff --git a/media/js/pdf/web/locale/ga-IE/viewer.properties b/media/js/pdf/web/locale/ga-IE/viewer.properties index 07ae1f933d..31833e7e17 100644 --- a/media/js/pdf/web/locale/ga-IE/viewer.properties +++ b/media/js/pdf/web/locale/ga-IE/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=An tAmharc Reatha tools.title=Uirlisí tools_label=Uirlisí first_page.title=Go dtí an chéad leathanach -first_page.label=Go dtí an chéad leathanach first_page_label=Go dtí an chéad leathanach last_page.title=Go dtí an leathanach deiridh -last_page.label=Go dtí an leathanach deiridh last_page_label=Go dtí an leathanach deiridh page_rotate_cw.title=Rothlaigh ar deiseal -page_rotate_cw.label=Rothlaigh ar deiseal page_rotate_cw_label=Rothlaigh ar deiseal page_rotate_ccw.title=Rothlaigh ar tuathal -page_rotate_ccw.label=Rothlaigh ar tuathal page_rotate_ccw_label=Rothlaigh ar tuathal cursor_text_select_tool.title=Cumasaigh an Uirlis Roghnaithe Téacs @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Uirlis Roghnaithe Téacs cursor_hand_tool.title=Cumasaigh an Uirlis Láimhe cursor_hand_tool_label=Uirlis Láimhe + + # Document properties dialog box document_properties.title=Airíonna na Cáipéise… document_properties_label=Airíonna na Cáipéise… @@ -89,6 +87,14 @@ document_properties_creator=Cruthaitheoir: document_properties_producer=Cruthaitheoir an PDF: document_properties_version=Leagan PDF: document_properties_page_count=Líon Leathanach: +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. document_properties_close=Dún print_progress_message=Cáipéis á hullmhú le priontáil… @@ -101,7 +107,6 @@ print_progress_close=Cealaigh # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Scoránaigh an Barra Taoibh -toggle_sidebar_notification.title=Scoránaigh an Barra Taoibh (achoimre/iatáin sa cháipéis) toggle_sidebar_label=Scoránaigh an Barra Taoibh document_outline.title=Taispeáin Imlíne na Cáipéise (déchliceáil chun chuile rud a leathnú nó a laghdú) document_outline_label=Creatlach na Cáipéise @@ -112,6 +117,7 @@ thumbs_label=Mionsamhlacha findbar.title=Aimsigh sa Cháipéis findbar_label=Aimsigh +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -129,8 +135,18 @@ find_next.title=Aimsigh an chéad sampla eile den nath sin find_next_label=Ar aghaidh find_highlight=Aibhsigh uile find_match_case_label=Cásíogair +find_entire_word_label=Focail iomlána find_reached_top=Ag barr na cáipéise, ag leanúint ón mbun find_reached_bottom=Ag bun na cáipéise, ag leanúint ón mbarr +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. find_not_found=Frása gan aimsiú # Error panel labels @@ -162,13 +178,14 @@ page_scale_actual=Fíormhéid page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Earráid - loading_error=Tharla earráid agus an cháipéis PDF á lódáil. invalid_file_error=Comhad neamhbhailí nó truaillithe PDF. missing_file_error=Comhad PDF ar iarraidh. unexpected_response_error=Freagra ón bhfreastalaí nach rabhthas ag súil leis. +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). @@ -182,3 +199,4 @@ password_cancel=Cealaigh printing_not_supported=Rabhadh: Ní thacaíonn an brabhsálaí le priontáil go hiomlán. printing_not_ready=Rabhadh: Ní féidir an PDF a phriontáil go dtí go mbeidh an cháipéis iomlán lódáilte. web_fonts_disabled=Tá clófhoirne Gréasáin díchumasaithe: ní féidir clófhoirne leabaithe PDF a úsáid. + diff --git a/media/js/pdf/web/locale/gd/viewer.properties b/media/js/pdf/web/locale/gd/viewer.properties index d1e54caa68..ed53a90f94 100644 --- a/media/js/pdf/web/locale/gd/viewer.properties +++ b/media/js/pdf/web/locale/gd/viewer.properties @@ -44,20 +44,24 @@ download_label=Luchdaich a-nuas bookmark.title=An sealladh làithreach (dèan lethbhreac no fosgail e ann an uinneag ùr) bookmark_label=An sealladh làithreach +save.title=Sàbhail +save_label=Sàbhail +bookmark1.title=An duilleag làithreach (Seall an URL on duilleag làithreach) +bookmark1_label=An duilleag làithreach + +open_in_app.title=Fosgail san aplacaid +open_in_app_label=Fosgail san aplacaid + # Secondary toolbar and context menu tools.title=Innealan tools_label=Innealan first_page.title=Rach gun chiad duilleag -first_page.label=Rach gun chiad duilleag first_page_label=Rach gun chiad duilleag last_page.title=Rach gun duilleag mu dheireadh -last_page.label=Rach gun duilleag mu dheireadh last_page_label=Rach gun duilleag mu dheireadh page_rotate_cw.title=Cuairtich gu deiseil -page_rotate_cw.label=Cuairtich gu deiseil page_rotate_cw_label=Cuairtich gu deiseil page_rotate_ccw.title=Cuairtich gu tuathail -page_rotate_ccw.label=Cuairtich gu tuathail page_rotate_ccw_label=Cuairtich gu tuathail cursor_text_select_tool.title=Cuir an comas inneal taghadh an teacsa @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Inneal taghadh an teacsa cursor_hand_tool.title=Cuir inneal na làimhe an comas cursor_hand_tool_label=Inneal na làimhe +scroll_page.title=Cleachd sgroladh duilleige +scroll_page_label=Sgroladh duilleige scroll_vertical.title=Cleachd sgroladh inghearach scroll_vertical_label=Sgroladh inghearach scroll_horizontal.title=Cleachd sgroladh còmhnard @@ -137,14 +143,13 @@ print_progress_close=Sguir dheth # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Toglaich am bàr-taoibh -toggle_sidebar_notification.title=Toglaich am bàr-taoibh (tha oir-loidhne/ceanglachain aig an sgrìobhainn) toggle_sidebar_notification2.title=Toglaich am bàr-taoibh (tha oir-loidhne/ceanglachain/breathan aig an sgrìobhainn) toggle_sidebar_label=Toglaich am bàr-taoibh document_outline.title=Seall oir-loidhne na sgrìobhainn (dèan briogadh dùbailte airson a h-uile nì a leudachadh/a cho-theannadh) document_outline_label=Oir-loidhne na sgrìobhainne attachments.title=Seall na ceanglachain attachments_label=Ceanglachain -layers.title=Seall na breathan (dèan briogadh dùbailte airson a h-uile breath ath-shuidheachadh dhan staid thùsail) +layers.title=Seall na breathan (dèan briogadh dùbailte airson a h-uile breath ath-shuidheachadh dhan staid bhunaiteach) layers_label=Breathan thumbs.title=Seall na dealbhagan thumbs_label=Dealbhagan @@ -153,9 +158,6 @@ current_outline_item_label=Nì làithreach na h-oir-loidhne findbar.title=Lorg san sgrìobhainn findbar_label=Lorg -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Duilleag {{page}} - additional_layers=Barrachd breathan # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Duilleag {{page}} @@ -176,6 +178,7 @@ find_next.title=Lorg ath-làthair na h-abairt seo find_next_label=Air adhart find_highlight=Soillsich a h-uile find_match_case_label=Aire do litrichean mòra is beaga +find_match_diacritics_label=Aire do stràcan find_entire_word_label=Faclan-slàna find_reached_top=Ràinig sinn barr na duilleige, a' leantainn air adhart o bhonn na duilleige find_reached_bottom=Ràinig sinn bonn na duilleige, a' leantainn air adhart o bharr na duilleige @@ -219,7 +222,6 @@ error_stack=Stac: {{stack}} error_file=Faidhle: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Loidhne: {{line}} -rendering_error=Thachair mearachd rè reandaradh na duilleige. # Predefined zoom values page_scale_width=Leud na duilleige @@ -231,15 +233,16 @@ page_scale_actual=Am fìor-mheud page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Mearachd +loading=’Ga luchdadh… # Loading indicator messages -loading=’Ga luchdadh… loading_error=Thachair mearachd rè luchdadh a' PDF. invalid_file_error=Faidhle PDF a tha mì-dhligheach no coirbte. missing_file_error=Faidhle PDF a tha a dhìth. unexpected_response_error=Freagairt on fhrithealaiche ris nach robh dùil. +rendering_error=Thachair mearachd rè reandaradh na duilleige. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Sguir dheth printing_not_supported=Rabhadh: Chan eil am brabhsair seo a' cur làn-taic ri clò-bhualadh. printing_not_ready=Rabhadh: Cha deach am PDF a luchdadh gu tur airson clò-bhualadh. web_fonts_disabled=Tha cruthan-clò lìn à comas: Chan urrainn dhuinn cruthan-clò PDF leabaichte a chleachdadh. + +# Editor +editor_free_text2.title=Teacsa +editor_free_text2_label=Teacsa +editor_ink2.title=Tarraing +editor_ink2_label=Tarraing + +free_text2_default_content=Tòisich air sgrìobhadh… + +# Editor Parameters +editor_free_text_color=Dath +editor_free_text_size=Meud +editor_ink_color=Dath +editor_ink_thickness=Tighead +editor_ink_opacity=Trìd-dhoilleireachd + +# Editor aria +editor_free_text2_aria_label=An deasaiche teacsa +editor_ink2_aria_label=An deasaiche tharraingean +editor_ink_canvas_aria_label=Dealbh a chruthaich cleachdaiche diff --git a/media/js/pdf/web/locale/gl/viewer.properties b/media/js/pdf/web/locale/gl/viewer.properties index efbabc0dab..17d54613b0 100644 --- a/media/js/pdf/web/locale/gl/viewer.properties +++ b/media/js/pdf/web/locale/gl/viewer.properties @@ -44,33 +44,39 @@ download_label=Descargar bookmark.title=Vista actual (copiar ou abrir nunha nova xanela) bookmark_label=Vista actual +save.title=Gardar +save_label=Gardar +bookmark1.title=Páxina actual (ver o URL da páxina actual) +bookmark1_label=Páxina actual + +open_in_app.title=Abrir cunha aplicación +open_in_app_label=Abrir cunha aplicación + # Secondary toolbar and context menu tools.title=Ferramentas tools_label=Ferramentas first_page.title=Ir á primeira páxina -first_page.label=Ir á primeira páxina first_page_label=Ir á primeira páxina last_page.title=Ir á última páxina -last_page.label=Ir á última páxina last_page_label=Ir á última páxina page_rotate_cw.title=Rotar no sentido das agullas do reloxo -page_rotate_cw.label=Rotar no sentido das agullas do reloxo page_rotate_cw_label=Rotar no sentido das agullas do reloxo page_rotate_ccw.title=Rotar no sentido contrario ás agullas do reloxo -page_rotate_ccw.label=Rotar no sentido contrario ás agullas do reloxo page_rotate_ccw_label=Rotar no sentido contrario ás agullas do reloxo cursor_text_select_tool.title=Activar a ferramenta de selección de texto cursor_text_select_tool_label=Ferramenta de selección de texto -cursor_hand_tool.title=Activar a ferramenta man -cursor_hand_tool_label=Ferramenta man +cursor_hand_tool.title=Activar a ferramenta de man +cursor_hand_tool_label=Ferramenta de man +scroll_page.title=Usar o desprazamento da páxina +scroll_page_label=Desprazamento da páxina scroll_vertical.title=Usar o desprazamento vertical scroll_vertical_label=Desprazamento vertical scroll_horizontal.title=Usar o desprazamento horizontal scroll_horizontal_label=Desprazamento horizontal -scroll_wrapped.title=Usar desprazamento en bloque -scroll_wrapped_label=Desprazamento en bloque +scroll_wrapped.title=Usar o desprazamento en bloque +scroll_wrapped_label=Desprazamento por bloque spread_none.title=Non agrupar páxinas spread_none_label=Ningún agrupamento @@ -104,10 +110,10 @@ document_properties_producer=Xenerador do PDF: document_properties_version=Versión de PDF: document_properties_page_count=Número de páxinas: document_properties_page_size=Tamaño da páxina: -document_properties_page_size_unit_inches=in +document_properties_page_size_unit_inches=pol document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=Vertical -document_properties_page_size_orientation_landscape=Horizontal +document_properties_page_size_orientation_portrait=vertical +document_properties_page_size_orientation_landscape=horizontal document_properties_page_size_name_a3=A3 document_properties_page_size_name_a4=A4 document_properties_page_size_name_letter=Carta @@ -127,7 +133,7 @@ document_properties_linearized_yes=Si document_properties_linearized_no=Non document_properties_close=Pechar -print_progress_message=Preparando documento para imprimir… +print_progress_message=Preparando o documento para imprimir… # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by # a numerical per cent value. print_progress_percent={{progress}}% @@ -137,11 +143,10 @@ print_progress_close=Cancelar # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Amosar/agochar a barra lateral -toggle_sidebar_notification.title=Amosar/agochar a barra lateral (o documento contén un esquema ou anexos) toggle_sidebar_notification2.title=Alternar barra lateral (o documento contén esquema/anexos/capas) toggle_sidebar_label=Amosar/agochar a barra lateral -document_outline.title=Amosar o esquema do documento (prema dúas veces para expandir/contraer todos os elementos) -document_outline_label=Esquema do documento +document_outline.title=Amosar a estrutura do documento (dobre clic para expandir/contraer todos os elementos) +document_outline_label=Estrutura do documento attachments.title=Amosar anexos attachments_label=Anexos layers.title=Mostrar capas (prema dúas veces para restaurar todas as capas o estado predeterminado) @@ -153,9 +158,6 @@ current_outline_item_label=Elemento delimitado actualmente findbar.title=Atopar no documento findbar_label=Atopar -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Páxina {{page}} - additional_layers=Capas adicionais # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Páxina {{page}} @@ -176,6 +178,7 @@ find_next.title=Atopar a seguinte aparición da frase find_next_label=Seguinte find_highlight=Realzar todo find_match_case_label=Diferenciar maiúsculas de minúsculas +find_match_diacritics_label=Distinguir os diacríticos find_entire_word_label=Palabras completas find_reached_top=Chegouse ao inicio do documento, continuar desde o final find_reached_bottom=Chegouse ao final do documento, continuar desde o inicio @@ -219,7 +222,6 @@ error_stack=Pila: {{stack}} error_file=Ficheiro: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Liña: {{line}} -rendering_error=Produciuse un erro ao representar a páxina. # Predefined zoom values page_scale_width=Largura da páxina @@ -231,15 +233,16 @@ page_scale_actual=Tamaño actual page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Erro +loading=A cargar… # Loading indicator messages -loading=A cargar… loading_error=Produciuse un erro ao cargar o PDF. invalid_file_error=Ficheiro PDF danado ou non válido. missing_file_error=Falta o ficheiro PDF. unexpected_response_error=Resposta inesperada do servidor. +rendering_error=Produciuse un erro ao representar a páxina. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Cancelar printing_not_supported=Aviso: A impresión non é compatíbel de todo con este navegador. printing_not_ready=Aviso: O PDF non se cargou completamente para imprimirse. web_fonts_disabled=Desactiváronse as fontes web: foi imposíbel usar as fontes incrustadas no PDF. + +# Editor +editor_free_text2.title=Texto +editor_free_text2_label=Texto +editor_ink2.title=Debuxo +editor_ink2_label=Debuxo + +free_text2_default_content=Comezar a teclear… + +# Editor Parameters +editor_free_text_color=Cor +editor_free_text_size=Tamaño +editor_ink_color=Cor +editor_ink_thickness=Grosor +editor_ink_opacity=Opacidade + +# Editor aria +editor_free_text2_aria_label=Editor de texto +editor_ink2_aria_label=Editor de debuxos +editor_ink_canvas_aria_label=Imaxe creada por unha usuaria diff --git a/media/js/pdf/web/locale/gn/viewer.properties b/media/js/pdf/web/locale/gn/viewer.properties index 3016980281..3db9a73d40 100644 --- a/media/js/pdf/web/locale/gn/viewer.properties +++ b/media/js/pdf/web/locale/gn/viewer.properties @@ -44,20 +44,24 @@ download_label=Mboguejy bookmark.title=Ag̃agua jehecha (mbohasarã térã eike peteĩ ovetã pyahúpe) bookmark_label=Ag̃agua jehecha +save.title=Ñongatu +save_label=Ñongatu +bookmark1.title=Kuatiarogue ag̃agua (Ehecha URL kuatiarogue ag̃agua) +bookmark1_label=Kuatiarogue Ag̃agua + +open_in_app.title=Embojuruja tembipuru’ípe +open_in_app_label=Embojuruja tembipuru’ípe + # Secondary toolbar and context menu tools.title=Tembipuru tools_label=Tembipuru first_page.title=Kuatiarogue ñepyrũme jeho -first_page.label=Kuatiarogue ñepyrũme jeho first_page_label=Kuatiarogue ñepyrũme jeho last_page.title=Kuatiarogue pahápe jeho -last_page.label=Kuatiarogue pahápe jeho last_page_label=Kuatiarogue pahápe jeho page_rotate_cw.title=Aravóicha mbojere -page_rotate_cw.label=Aravóicha mbojere page_rotate_cw_label=Aravóicha mbojere page_rotate_ccw.title=Aravo rapykue gotyo mbojere -page_rotate_ccw.label=Aravo rapykue gotyo mbojere page_rotate_ccw_label=Aravo rapykue gotyo mbojere cursor_text_select_tool.title=Emyandy moñe’ẽrã jeporavo rembipuru @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Moñe’ẽrã jeporavo rembipuru cursor_hand_tool.title=Tembipuru po pegua myandy cursor_hand_tool_label=Tembipuru po pegua +scroll_page.title=Eipuru kuatiarogue jeku’e +scroll_page_label=Kuatiarogue jeku’e scroll_vertical.title=Eipuru jeku’e ykeguáva scroll_vertical_label=Jeku’e ykeguáva scroll_horizontal.title=Eipuru jeku’e yvate gotyo @@ -137,7 +143,6 @@ print_progress_close=Heja # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Tenda yke moambue -toggle_sidebar_notification.title=Embojopyru tenda ykegua (kuatia oguereko kora/marandurenda moirũha) toggle_sidebar_notification2.title=Embojopyru tenda ykegua (kuatia oguereko kuaakaha/moirũha/ñuãha) toggle_sidebar_label=Tenda yke moambue document_outline.title=Ehechauka kuatia rape (eikutu mokõi jey embotuicha/emomichĩ hag̃ua opavavete mba’epuru) @@ -153,9 +158,6 @@ current_outline_item_label=Mba’epuru ag̃aguaitéva findbar.title=Kuatiápe jeheka findbar_label=Juhu -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Kuatiarogue {{page}} - additional_layers=Ñuãha moirũguáva # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Kuatiarogue {{page}} @@ -176,6 +178,7 @@ find_next.title=Eho ñe’ẽ juhupyre upeiguávape find_next_label=Upeigua find_highlight=Embojekuaavepa find_match_case_label=Ejesareko taiguasu/taimichĩre +find_match_diacritics_label=Diacrítico moñondive find_entire_word_label=Ñe’ẽ oĩmbáva find_reached_top=Ojehupyty kuatia ñepyrũ, oku’ejeýta kuatia paha guive find_reached_bottom=Ojehupyty kuatia paha, oku’ejeýta kuatia ñepyrũ guive @@ -219,7 +222,6 @@ error_stack=Mbojo’apy: {{stack}} error_file=Marandurenda: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Tairenda: {{line}} -rendering_error=Oiko jejavy ehechaukasévo kuatiarogue. # Predefined zoom values page_scale_width=Kuatiarogue pekue @@ -231,15 +233,16 @@ page_scale_actual=Tuichakue ag̃agua page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Oĩvaíva +loading=Henyhẽhína… # Loading indicator messages -loading=Henyhẽhína… loading_error=Oiko jejavy PDF oñemyeñyhẽnguévo. invalid_file_error=PDF marandurenda ndoikóiva térã ivaipyréva. missing_file_error=Ndaipóri PDF marandurenda unexpected_response_error=Mohendahavusu mbohovái ñeha’arõ’ỹva. +rendering_error=Oiko jejavy ehechaukasévo kuatiarogue. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Heja printing_not_supported=Kyhyjerã: Ñembokuatia ndojokupytypái ko kundahára ndive. printing_not_ready=Kyhyjerã: Ko PDF nahenyhẽmbái oñembokuatia hag̃uáicha. web_fonts_disabled=Ñanduti taity oñemongéma: ndaikatumo’ãi eipuru PDF jehai’íva taity. + +# Editor +editor_free_text2.title=Moñe’ẽrã +editor_free_text2_label=Moñe’ẽrã +editor_ink2.title=Moha’ãnga +editor_ink2_label=Moha’ãnga + +free_text2_default_content=Ehai ñepyrũ… + +# Editor Parameters +editor_free_text_color=Sa’y +editor_free_text_size=Tuichakue +editor_ink_color=Sa’y +editor_ink_thickness=Anambusu +editor_ink_opacity=Pytũngy + +# Editor aria +editor_free_text2_aria_label=Moñe’ẽrã moheñoiha +editor_ink2_aria_label=Ta’ãnga moheñoiha +editor_ink_canvas_aria_label=Ta’ãnga omoheñóiva puruhára diff --git a/media/js/pdf/web/locale/gu-IN/viewer.properties b/media/js/pdf/web/locale/gu-IN/viewer.properties index d1b7040be8..8e6c44f9cc 100644 --- a/media/js/pdf/web/locale/gu-IN/viewer.properties +++ b/media/js/pdf/web/locale/gu-IN/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=વર્તમાન દૃશ્ય tools.title=સાધનો tools_label=સાધનો first_page.title=પહેલાં પાનામાં જાવ -first_page.label=પહેલાં પાનામાં જાવ first_page_label=પ્રથમ પાનાં પર જાવ last_page.title=છેલ્લા પાનાં પર જાવ -last_page.label=છેલ્લા પાનામાં જાવ last_page_label=છેલ્લા પાનાં પર જાવ page_rotate_cw.title=ઘડિયાળનાં કાંટા તરફ ફેરવો -page_rotate_cw.label=ઘડિયાળનાં કાંટાની જેમ ફેરવો page_rotate_cw_label=ઘડિયાળનાં કાંટા તરફ ફેરવો page_rotate_ccw.title=ઘડિયાળનાં કાંટાની ઉલટી દિશામાં ફેરવો -page_rotate_ccw.label=ઘડિયાળનાં કાંટાની ઉલટી દિશામાં ફેરવો page_rotate_ccw_label=ઘડિયાળનાં કાંટાની વિરુદ્દ ફેરવો cursor_text_select_tool.title=ટેક્સ્ટ પસંદગી ટૂલ સક્ષમ કરો @@ -137,7 +133,6 @@ print_progress_close=રદ કરો # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=ટૉગલ બાજુપટ્ટી -toggle_sidebar_notification.title=સાઇડબારને ટૉગલ કરો(દસ્તાવેજની રૂપરેખા/જોડાણો શામેલ છે) toggle_sidebar_label=ટૉગલ બાજુપટ્ટી document_outline.title=દસ્તાવેજની રૂપરેખા બતાવો(બધી આઇટમ્સને વિસ્તૃત/સંકુચિત કરવા માટે ડબલ-ક્લિક કરો) document_outline_label=દસ્તાવેજ રૂપરેખા @@ -219,9 +214,6 @@ page_scale_actual=ચોક્કસ માપ # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=ભૂલ - loading_error=ભૂલ ઉદ્ભવી જ્યારે PDF ને લાવી રહ્યા હોય. invalid_file_error=અયોગ્ય અથવા ભાંગેલ PDF ફાઇલ. missing_file_error=ગુમ થયેલ PDF ફાઇલ. @@ -240,3 +232,4 @@ password_cancel=રદ કરો printing_not_supported=ચેતવણી: છાપવાનું આ બ્રાઉઝર દ્દારા સંપૂર્ણપણે આધારભૂત નથી. printing_not_ready=Warning: PDF એ છાપવા માટે સંપૂર્ણપણે લાવેલ છે. web_fonts_disabled=વેબ ફોન્ટ નિષ્ક્રિય થયેલ છે: ઍમ્બેડ થયેલ PDF ફોન્ટને વાપરવાનું અસમર્થ. + diff --git a/media/js/pdf/web/locale/he/viewer.properties b/media/js/pdf/web/locale/he/viewer.properties index 0ed86b7cf3..04389e875c 100644 --- a/media/js/pdf/web/locale/he/viewer.properties +++ b/media/js/pdf/web/locale/he/viewer.properties @@ -44,20 +44,23 @@ download_label=הורדה bookmark.title=תצוגה נוכחית (העתקה או פתיחה בחלון חדש) bookmark_label=תצוגה נוכחית +save.title=שמירה +save_label=שמירה +bookmark1_label=עמוד נוכחי + +open_in_app.title=פתיחה ביישום +open_in_app_label=פתיחה ביישום + # Secondary toolbar and context menu tools.title=כלים tools_label=כלים first_page.title=מעבר לעמוד הראשון -first_page.label=מעבר לעמוד הראשון first_page_label=מעבר לעמוד הראשון last_page.title=מעבר לעמוד האחרון -last_page.label=מעבר לעמוד האחרון last_page_label=מעבר לעמוד האחרון page_rotate_cw.title=הטיה עם כיוון השעון -page_rotate_cw.label=הטיה עם כיוון השעון page_rotate_cw_label=הטיה עם כיוון השעון page_rotate_ccw.title=הטיה כנגד כיוון השעון -page_rotate_ccw.label=הטיה כנגד כיוון השעון page_rotate_ccw_label=הטיה כנגד כיוון השעון cursor_text_select_tool.title=הפעלת כלי בחירת טקסט @@ -65,6 +68,8 @@ cursor_text_select_tool_label=כלי בחירת טקסט cursor_hand_tool.title=הפעלת כלי היד cursor_hand_tool_label=כלי יד +scroll_page.title=שימוש בגלילת עמוד +scroll_page_label=גלילת עמוד scroll_vertical.title=שימוש בגלילה אנכית scroll_vertical_label=גלילה אנכית scroll_horizontal.title=שימוש בגלילה אופקית @@ -137,7 +142,6 @@ print_progress_close=ביטול # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=הצגה/הסתרה של סרגל הצד -toggle_sidebar_notification.title=החלפת תצוגת סרגל צד (מסמך שמכיל תוכן עניינים/קבצים מצורפים) toggle_sidebar_notification2.title=החלפת תצוגת סרגל צד (מסמך שמכיל תוכן עניינים/קבצים מצורפים/שכבות) toggle_sidebar_label=הצגה/הסתרה של סרגל הצד document_outline.title=הצגת תוכן העניינים של המסמך (לחיצה כפולה כדי להרחיב או לצמצם את כל הפריטים) @@ -153,9 +157,6 @@ current_outline_item_label=פריט תוכן העניינים הנוכחי findbar.title=חיפוש במסמך findbar_label=חיפוש -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=עמוד {{page}} - additional_layers=שכבות נוספות # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=עמוד {{page}} @@ -176,6 +177,7 @@ find_next.title=מציאת המופע הבא של הביטוי find_next_label=הבא find_highlight=הדגשת הכול find_match_case_label=התאמת אותיות +find_match_diacritics_label=התאמה דיאקריטית find_entire_word_label=מילים שלמות find_reached_top=הגיע לראש הדף, ממשיך מלמטה find_reached_bottom=הגיע לסוף הדף, ממשיך מלמעלה @@ -219,7 +221,6 @@ error_stack=תוכן מחסנית: {{stack}} error_file=קובץ: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=שורה: {{line}} -rendering_error=אירעה שגיאה בעת עיבוד הדף. # Predefined zoom values page_scale_width=רוחב העמוד @@ -231,15 +232,16 @@ page_scale_actual=גודל אמיתי page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=שגיאה +loading=בטעינה… # Loading indicator messages -loading=בטעינה… loading_error=אירעה שגיאה בעת טעינת ה־PDF. invalid_file_error=קובץ PDF פגום או לא תקין. missing_file_error=קובץ PDF חסר. unexpected_response_error=תגובת שרת לא צפויה. +rendering_error=אירעה שגיאה בעת עיבוד הדף. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +259,23 @@ password_cancel=ביטול printing_not_supported=אזהרה: הדפסה אינה נתמכת במלואה בדפדפן זה. printing_not_ready=אזהרה: מסמך ה־PDF לא נטען לחלוטין עד מצב שמאפשר הדפסה. web_fonts_disabled=גופני רשת מנוטרלים: לא ניתן להשתמש בגופני PDF מוטבעים. + +# Editor +editor_free_text2.title=טקסט +editor_free_text2_label=טקסט +editor_ink2.title=ציור +editor_ink2_label=ציור + +free_text2_default_content=להתחיל להקליד… + +# Editor Parameters +editor_free_text_color=צבע +editor_free_text_size=גודל +editor_ink_color=צבע +editor_ink_thickness=עובי +editor_ink_opacity=אטימות + +# Editor aria +editor_free_text2_aria_label=עורך טקסט +editor_ink2_aria_label=עורך ציור +editor_ink_canvas_aria_label=תמונה שנוצרה על־ידי משתמש diff --git a/media/js/pdf/web/locale/hi-IN/viewer.properties b/media/js/pdf/web/locale/hi-IN/viewer.properties index e69c9df69c..e296f0a3a3 100644 --- a/media/js/pdf/web/locale/hi-IN/viewer.properties +++ b/media/js/pdf/web/locale/hi-IN/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=\u0020मौजूदा दृश्य tools.title=औज़ार tools_label=औज़ार first_page.title=प्रथम पृष्ठ पर जाएँ -first_page.label=\u0020प्रथम पृष्ठ पर जाएँ first_page_label=प्रथम पृष्ठ पर जाएँ last_page.title=अंतिम पृष्ठ पर जाएँ -last_page.label=\u0020अंतिम पृष्ठ पर जाएँ last_page_label=\u0020अंतिम पृष्ठ पर जाएँ page_rotate_cw.title=घड़ी की दिशा में घुमाएँ -page_rotate_cw.label=घड़ी की दिशा में घुमाएँ page_rotate_cw_label=घड़ी की दिशा में घुमाएँ page_rotate_ccw.title=घड़ी की दिशा से उल्टा घुमाएँ -page_rotate_ccw.label=घड़ी की दिशा से उल्टा घुमाएँ page_rotate_ccw_label=\u0020घड़ी की दिशा से उल्टा घुमाएँ cursor_text_select_tool.title=पाठ चयन उपकरण सक्षम करें @@ -133,7 +129,6 @@ print_progress_close=रद्द करें # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=\u0020स्लाइडर टॉगल करें -toggle_sidebar_notification.title=साइडबार टॉगल करें (दस्तावेज़ में रूपरेखा शामिल है/attachments) toggle_sidebar_label=स्लाइडर टॉगल करें document_outline.title=दस्तावेज़ की रूपरेखा दिखाइए (सारी वस्तुओं को फलने अथवा समेटने के लिए दो बार क्लिक करें) document_outline_label=दस्तावेज़ आउटलाइन @@ -144,9 +139,6 @@ thumbs_label=लघु छवि findbar.title=\u0020दस्तावेज़ में ढूँढ़ें findbar_label=ढूँढें -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=पृष्ठ {{page}} - # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -218,9 +210,6 @@ page_scale_actual=वास्तविक आकार # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=त्रुटि - loading_error=PDF लोड करते समय एक त्रुटि हुई. invalid_file_error=अमान्य या भ्रष्ट PDF फ़ाइल. missing_file_error=\u0020अनुपस्थित PDF फ़ाइल. @@ -243,3 +232,4 @@ password_cancel=रद्द करें printing_not_supported=चेतावनी: इस ब्राउज़र पर छपाई पूरी तरह से समर्थित नहीं है. printing_not_ready=चेतावनी: PDF छपाई के लिए पूरी तरह से लोड नहीं है. web_fonts_disabled=वेब फॉन्ट्स निष्क्रिय हैं: अंतःस्थापित PDF फॉन्टस के उपयोग में असमर्थ. + diff --git a/media/js/pdf/web/locale/hr/viewer.properties b/media/js/pdf/web/locale/hr/viewer.properties index 53f1edfbf4..251eb61eaf 100644 --- a/media/js/pdf/web/locale/hr/viewer.properties +++ b/media/js/pdf/web/locale/hr/viewer.properties @@ -41,6 +41,8 @@ print.title=Ispiši print_label=Ispiši download.title=Preuzmi download_label=Preuzmi +save.title=Spremi +save_label=Spremi bookmark.title=Trenutačni prikaz (kopiraj ili otvori u novom prozoru) bookmark_label=Trenutačni prikaz @@ -48,16 +50,12 @@ bookmark_label=Trenutačni prikaz tools.title=Alati tools_label=Alati first_page.title=Idi na prvu stranicu -first_page.label=Idi na prvu stranicu first_page_label=Idi na prvu stranicu last_page.title=Idi na posljednju stranicu -last_page.label=Idi na posljednju stranicu last_page_label=Idi na posljednju stranicu page_rotate_cw.title=Rotiraj u smjeru kazaljke na satu -page_rotate_cw.label=Rotiraj u smjeru kazaljke na satu page_rotate_cw_label=Rotiraj u smjeru kazaljke na satu page_rotate_ccw.title=Rotiraj obrnutno od smjera kazaljke na satu -page_rotate_ccw.label=Rotiraj obrnutno od smjera kazaljke na satu page_rotate_ccw_label=Rotiraj obrnutno od smjera kazaljke na satu cursor_text_select_tool.title=Omogući alat za označavanje teksta @@ -80,8 +78,8 @@ spread_even.title=Izradi duplerice koje počinju s parnim stranicama spread_even_label=Parne duplerice # Document properties dialog box -document_properties.title=Svojstva dokumenta... -document_properties_label=Svojstva dokumenta... +document_properties.title=Svojstva dokumenta … +document_properties_label=Svojstva dokumenta … document_properties_file_name=Naziv datoteke: document_properties_file_size=Veličina datoteke: # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" @@ -137,7 +135,6 @@ print_progress_close=Odustani # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Prikaži/sakrij bočnu traku -toggle_sidebar_notification.title=Prikazivanje i sklanjanje bočne trake (dokument sadrži strukturu/privitke) toggle_sidebar_notification2.title=Prikazivanje i sklanjanje bočne trake (dokument sadrži strukturu/privitke/slojeve) toggle_sidebar_label=Prikaži/sakrij bočnu traku document_outline.title=Prikaži strukturu dokumenta (dvostruki klik za rasklapanje/sklapanje svih stavki) @@ -153,9 +150,6 @@ current_outline_item_label=Trenutačni element strukture findbar.title=Pronađi u dokumentu findbar_label=Pronađi -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Stranica br. {{page}} - additional_layers=Dodatni slojevi # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Stranica {{page}} @@ -219,7 +213,6 @@ error_stack=Stog: {{stack}} error_file=Datoteka: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Redak: {{line}} -rendering_error=Došlo je do greške prilikom iscrtavanja stranice. # Predefined zoom values page_scale_width=Prilagodi širini prozora @@ -230,9 +223,6 @@ page_scale_actual=Stvarna veličina # numerical scale value. page_scale_percent={{scale}} % -# Loading indicator messages -loading_error_indicator=Greška - # Loading indicator messages loading=Učitavanje… loading_error=Došlo je do greške pri učitavanju PDF-a. @@ -240,6 +230,8 @@ invalid_file_error=Neispravna ili oštećena PDF datoteka. missing_file_error=Nedostaje PDF datoteka. unexpected_response_error=Neočekivani odgovor poslužitelja. +rendering_error=Došlo je do greške prilikom iscrtavanja stranice. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +249,19 @@ password_cancel=Odustani printing_not_supported=Upozorenje: Ovaj preglednik ne podržava u potpunosti ispisivanje. printing_not_ready=Upozorenje: PDF nije u potpunosti učitan za ispis. web_fonts_disabled=Web fontovi su deaktivirani: nije moguće koristiti ugrađene PDF fontove. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst + +free_text2_default_content=Počni tipkati … + +# Editor Parameters +editor_free_text_color=Boja +editor_free_text_size=Veličina +editor_ink_color=Boja +editor_ink_thickness=Debljina +editor_ink_opacity=Neprozirnost + +# Editor aria +editor_free_text2_aria_label=Uređivač teksta diff --git a/media/js/pdf/web/locale/hsb/viewer.properties b/media/js/pdf/web/locale/hsb/viewer.properties index 3c692f6900..fb4dfd2745 100644 --- a/media/js/pdf/web/locale/hsb/viewer.properties +++ b/media/js/pdf/web/locale/hsb/viewer.properties @@ -44,20 +44,24 @@ download_label=Sćahnyć bookmark.title=Aktualny napohlad (kopěrować abo w nowym woknje wočinić) bookmark_label=Aktualny napohlad +save.title=Składować +save_label=Składować +bookmark1.title=Aktualna strona (URL z aktualneje strony pokazać) +bookmark1_label=Aktualna strona + +open_in_app.title=W nałoženju wočinić +open_in_app_label=W nałoženju wočinić + # Secondary toolbar and context menu tools.title=Nastroje tools_label=Nastroje first_page.title=K prěnjej stronje -first_page.label=K prěnjej stronje first_page_label=K prěnjej stronje last_page.title=K poslednjej stronje -last_page.label=K poslednjej stronje last_page_label=K poslednjej stronje page_rotate_cw.title=K směrej časnika wjerćeć -page_rotate_cw.label=K směrej časnika wjerćeć page_rotate_cw_label=K směrej časnika wjerćeć page_rotate_ccw.title=Přećiwo směrej časnika wjerćeć -page_rotate_ccw.label=Přećiwo směrej časnika wjerćeć page_rotate_ccw_label=Přećiwo směrej časnika wjerćeć cursor_text_select_tool.title=Nastroj za wuběranje teksta zmóžnić @@ -65,8 +69,10 @@ cursor_text_select_tool_label=Nastroj za wuběranje teksta cursor_hand_tool.title=Ručny nastroj zmóžnić cursor_hand_tool_label=Ručny nastroj +scroll_page.title=Kulenje strony wužiwać +scroll_page_label=Kulenje strony scroll_vertical.title=Wertikalne suwanje wužiwać -scroll_vertical_label=Wertikalnje suwanje +scroll_vertical_label=Wertikalne suwanje scroll_horizontal.title=Horicontalne suwanje wužiwać scroll_horizontal_label=Horicontalne suwanje scroll_wrapped.title=Postupne suwanje wužiwać @@ -137,7 +143,6 @@ print_progress_close=Přetorhnyć # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Bóčnicu pokazać/schować -toggle_sidebar_notification.title=Bóčnicu přepinać (dokument wobsahuje wobrys/přiwěški) toggle_sidebar_notification2.title=Bóčnicu přepinać (dokument rozrjad/přiwěški/woršty wobsahuje) toggle_sidebar_label=Bóčnicu pokazać/schować document_outline.title=Dokumentowy naćisk pokazać (dwójne kliknjenje, zo bychu so wšě zapiski pokazali/schowali) @@ -153,9 +158,6 @@ current_outline_item_label=Aktualny rozrjadowy zapisk findbar.title=W dokumenće pytać findbar_label=Pytać -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Strona {{page}} - additional_layers=Dalše woršty # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Strona {{page}} @@ -176,6 +178,7 @@ find_next.title=Přichodne wustupowanje pytanskeho wuraza pytać find_next_label=Dale find_highlight=Wšě wuzběhnyć find_match_case_label=Wulkopisanje wobkedźbować +find_match_diacritics_label=Diakritiske znamješka wužiwać find_entire_word_label=Cyłe słowa find_reached_top=Spočatk dokumenta docpěty, pokročuje so z kóncom find_reached_bottom=Kónc dokument docpěty, pokročuje so ze spočatkom @@ -219,7 +222,6 @@ error_stack=Lisćina zawołanjow: {{stack}} error_file=Dataja: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Linka: {{line}} -rendering_error=Při zwobraznjenju strony je zmylk wustupił. # Predefined zoom values page_scale_width=Šěrokosć strony @@ -231,15 +233,16 @@ page_scale_actual=Aktualna wulkosć page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Zmylk +loading=Začituje so… # Loading indicator messages -loading=Začituje so… loading_error=Při začitowanju PDF je zmylk wustupił. invalid_file_error=Njepłaćiwa abo wobškodźena PDF-dataja. missing_file_error=Falowaca PDF-dataja. unexpected_response_error=Njewočakowana serwerowa wotmołwa. +rendering_error=Při zwobraznjenju strony je zmylk wustupił. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Přetorhnyć printing_not_supported=Warnowanje: Ćišćenje so přez tutón wobhladowak połnje njepodpěruje. printing_not_ready=Warnowanje: PDF njeje so za ćišćenje dospołnje začitał. web_fonts_disabled=Webpisma su znjemóžnjene: njeje móžno, zasadźene PDF-pisma wužiwać. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Rysować +editor_ink2_label=Rysować + +free_text2_default_content=Započńće pisać… + +# Editor Parameters +editor_free_text_color=Barba +editor_free_text_size=Wulkosć +editor_ink_color=Barba +editor_ink_thickness=Tołstosć +editor_ink_opacity=Opacita + +# Editor aria +editor_free_text2_aria_label=Tekstowy editor +editor_ink2_aria_label=Rysowanski editor +editor_ink_canvas_aria_label=Wobraz wutworjeny wot wužiwarja diff --git a/media/js/pdf/web/locale/hu/viewer.properties b/media/js/pdf/web/locale/hu/viewer.properties index 99cd457551..581b4da2ab 100644 --- a/media/js/pdf/web/locale/hu/viewer.properties +++ b/media/js/pdf/web/locale/hu/viewer.properties @@ -44,20 +44,24 @@ download_label=Letöltés bookmark.title=Jelenlegi nézet (másolás vagy megnyitás új ablakban) bookmark_label=Aktuális nézet +save.title=Mentés +save_label=Mentés +bookmark1.title=Jelenlegi oldal (webcím megtekintése a jelenlegi oldalról) +bookmark1_label=Jelenlegi oldal + +open_in_app.title=Megnyitás alkalmazásban +open_in_app_label=Megnyitás alkalmazásban + # Secondary toolbar and context menu tools.title=Eszközök tools_label=Eszközök first_page.title=Ugrás az első oldalra -first_page.label=Ugrás az első oldalra first_page_label=Ugrás az első oldalra last_page.title=Ugrás az utolsó oldalra -last_page.label=Ugrás az utolsó oldalra last_page_label=Ugrás az utolsó oldalra page_rotate_cw.title=Forgatás az óramutató járásával egyezően -page_rotate_cw.label=Forgatás az óramutató járásával egyezően page_rotate_cw_label=Forgatás az óramutató járásával egyezően page_rotate_ccw.title=Forgatás az óramutató járásával ellentétesen -page_rotate_ccw.label=Forgatás az óramutató járásával ellentétesen page_rotate_ccw_label=Forgatás az óramutató járásával ellentétesen cursor_text_select_tool.title=Szövegkijelölő eszköz bekapcsolása @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Szövegkijelölő eszköz cursor_hand_tool.title=Kéz eszköz bekapcsolása cursor_hand_tool_label=Kéz eszköz +scroll_page.title=Oldalgörgetés használata +scroll_page_label=Oldalgörgetés scroll_vertical.title=Függőleges görgetés használata scroll_vertical_label=Függőleges görgetés scroll_horizontal.title=Vízszintes görgetés használata @@ -137,7 +143,6 @@ print_progress_close=Mégse # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Oldalsáv be/ki -toggle_sidebar_notification.title=Oldalsáv be/ki (a dokumentum vázlatot/mellékleteket tartalmaz) toggle_sidebar_notification2.title=Oldalsáv be/ki (a dokumentum vázlatot/mellékleteket/rétegeket tartalmaz) toggle_sidebar_label=Oldalsáv be/ki document_outline.title=Dokumentum megjelenítése online (dupla kattintás minden elem kinyitásához/összecsukásához) @@ -153,9 +158,6 @@ current_outline_item_label=Jelenlegi vázlatelem findbar.title=Keresés a dokumentumban findbar_label=Keresés -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas={{page}}. oldal - additional_layers=További rétegek # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark={{page}}. oldal @@ -176,6 +178,7 @@ find_next.title=A kifejezés következő előfordulásának keresése find_next_label=Tovább find_highlight=Összes kiemelése find_match_case_label=Kis- és nagybetűk megkülönböztetése +find_match_diacritics_label=Diakritikus jelek find_entire_word_label=Teljes szavak find_reached_top=A dokumentum eleje elérve, folytatás a végétől find_reached_bottom=A dokumentum vége elérve, folytatás az elejétől @@ -219,7 +222,6 @@ error_stack=Verem: {{stack}} error_file=Fájl: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Sor: {{line}} -rendering_error=Hiba történt az oldal feldolgozása közben. # Predefined zoom values page_scale_width=Oldalszélesség @@ -231,15 +233,16 @@ page_scale_actual=Valódi méret page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Hiba +loading=Betöltés… # Loading indicator messages -loading=Betöltés… loading_error=Hiba történt a PDF betöltésekor. invalid_file_error=Érvénytelen vagy sérült PDF fájl. missing_file_error=Hiányzó PDF fájl. unexpected_response_error=Váratlan kiszolgálóválasz. +rendering_error=Hiba történt az oldal feldolgozása közben. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Mégse printing_not_supported=Figyelmeztetés: Ez a böngésző nem teljesen támogatja a nyomtatást. printing_not_ready=Figyelmeztetés: A PDF nincs teljesen betöltve a nyomtatáshoz. web_fonts_disabled=Webes betűkészletek letiltva: nem használhatók a beágyazott PDF betűkészletek. + +# Editor +editor_free_text2.title=Szöveg +editor_free_text2_label=Szöveg +editor_ink2.title=Rajzolás +editor_ink2_label=Rajzolás + +free_text2_default_content=Kezdjen el gépelni… + +# Editor Parameters +editor_free_text_color=Szín +editor_free_text_size=Méret +editor_ink_color=Szín +editor_ink_thickness=Vastagság +editor_ink_opacity=Átlátszatlanság + +# Editor aria +editor_free_text2_aria_label=Szövegszerkesztő +editor_ink2_aria_label=Rajzszerkesztő +editor_ink_canvas_aria_label=Felhasználó által készített kép diff --git a/media/js/pdf/web/locale/hy-AM/viewer.properties b/media/js/pdf/web/locale/hy-AM/viewer.properties index 2b3f0356d7..25874f1282 100644 --- a/media/js/pdf/web/locale/hy-AM/viewer.properties +++ b/media/js/pdf/web/locale/hy-AM/viewer.properties @@ -22,7 +22,7 @@ next_label=Հաջորդը page.title=Էջ. # LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number # representing the total number of pages in the document. -of_pages={{pagesCount}}-ից\u0020 +of_pages=-ը՝ {{pagesCount}}-ից # LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" # will be replaced by a number representing the currently visible page, # respectively a number representing the total number of pages in the document. @@ -32,7 +32,7 @@ zoom_out.title=Փոքրացնել zoom_out_label=Փոքրացնել zoom_in.title=Խոշորացնել zoom_in_label=Խոշորացնել -zoom.title=Մասշտաբը\u0020 +zoom.title=Մասշտաբ presentation_mode.title=Անցնել Ներկայացման եղանակին presentation_mode_label=Ներկայացման եղանակ open_file.title=Բացել նիշք @@ -44,20 +44,19 @@ download_label=Բեռնել bookmark.title=Ընթացիկ տեսքով (պատճենել կամ բացել նոր պատուհանում) bookmark_label=Ընթացիկ տեսքը +# LOCALIZATION NOTE (open_in_app.title): This string is used in Firefox for Android. +# LOCALIZATION NOTE (open_in_app_label): This string is used in Firefox for Android. Length of the translation matters since we are in a mobile context, with limited screen estate. + # Secondary toolbar and context menu tools.title=Գործիքներ tools_label=Գործիքներ first_page.title=Անցնել առաջին էջին -first_page.label=Անցնել առաջին էջին first_page_label=Անցնել առաջին էջին last_page.title=Անցնել վերջին էջին -last_page.label=Անցնել վերջին էջին last_page_label=Անցնել վերջին էջին page_rotate_cw.title=Պտտել ըստ ժամացույցի սլաքի -page_rotate_cw.label=Պտտել ըստ ժամացույցի սլաքի page_rotate_cw_label=Պտտել ըստ ժամացույցի սլաքի page_rotate_ccw.title=Պտտել հակառակ ժամացույցի սլաքի -page_rotate_ccw.label=Պտտել հակառակ ժամացույցի սլաքի page_rotate_ccw_label=Պտտել հակառակ ժամացույցի սլաքի cursor_text_select_tool.title=Միացնել գրույթ ընտրելու գործիքը @@ -137,7 +136,6 @@ print_progress_close=Չեղարկել # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Բացել/Փակել Կողային վահանակը -toggle_sidebar_notification.title=Փոխարկել Կողային փեղկը (փաստաթուղթը պարունակում է ուրվագիծ/կցորդներ) toggle_sidebar_label=Բացել/Փակել Կողային վահանակը document_outline.title=Ցուցադրել փաստաթղթի ուրվագիծը (կրկնակի սեղմեք՝ միավորները ընդարձակելու/կոծկելու համար) document_outline_label=Փաստաթղթի բովանդակությունը @@ -148,9 +146,7 @@ thumbs_label=Մանրապատկերը findbar.title=Գտնել փաստաթղթում findbar_label=Որոնում -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Էջ {{page}} - +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -211,7 +207,6 @@ error_stack=Շեղջ. {{stack}} error_file=Ֆայլ. {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Տողը. {{line}} -rendering_error=Սխալ՝ էջը ստեղծելիս: # Predefined zoom values page_scale_width=Էջի լայնքը @@ -223,13 +218,15 @@ page_scale_actual=Իրական չափը page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Սխալ +# Loading indicator messages loading_error=Սխալ՝ PDF ֆայլը բացելիս։ invalid_file_error=Սխալ կամ վնասված PDF ֆայլ: missing_file_error=PDF ֆայլը բացակայում է: unexpected_response_error=Սպասարկիչի անսպասելի պատասխան: +rendering_error=Սխալ՝ էջը ստեղծելիս: + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -247,3 +244,10 @@ password_cancel=Չեղարկել printing_not_supported=Զգուշացում. Տպելը ամբողջությամբ չի աջակցվում դիտարկիչի կողմից։ printing_not_ready=Զգուշացում. PDF-ը ամբողջությամբ չի բեռնավորվել տպելու համար: web_fonts_disabled=Վեբ-տառատեսակները անջատված են. հնարավոր չէ օգտագործել ներկառուցված PDF տառատեսակները: + +# Editor + + +# Editor Parameters + +# Editor aria diff --git a/media/js/pdf/web/locale/hye/viewer.properties b/media/js/pdf/web/locale/hye/viewer.properties index 7bbfe1422a..40194dab08 100644 --- a/media/js/pdf/web/locale/hye/viewer.properties +++ b/media/js/pdf/web/locale/hye/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Ընթացիկ տեսք tools.title=Գործիքներ tools_label=Գործիքներ first_page.title=Գնալ դէպի առաջին էջ -first_page.label=Գնալ դէպի առաջին էջ first_page_label=Գնալ դէպի առաջին էջ last_page.title=Գնալ դէպի վերջին էջ -last_page.label=Գնալ դէպի վերջին էջ last_page_label=Գնալ դէպի վերջին էջ page_rotate_cw.title=Պտտել ժամացոյցի սլաքի ուղղութեամբ -page_rotate_cw.label=Պտտել ժամացոյցի սլաքի ուղղութեամբ page_rotate_cw_label=Պտտել ժամացոյցի սլաքի ուղղութեամբ page_rotate_ccw.title=Պտտել ժամացոյցի սլաքի հակառակ ուղղութեամբ -page_rotate_ccw.label=Պտտել ժամացոյցի սլաքի հակառակ ուղղութեամբ page_rotate_ccw_label=Պտտել ժամացոյցի սլաքի հակառակ ուղղութեամբ cursor_text_select_tool.title=Միացնել գրոյթ ընտրելու գործիքը @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Գրուածք ընտրելու գործիք cursor_hand_tool.title=Միացնել ձեռքի գործիքը cursor_hand_tool_label=Ձեռքի գործիք +scroll_page.title=Աւգտագործել էջի ոլորում +scroll_page_label=Էջի ոլորում scroll_vertical.title=Աւգտագործել ուղղահայեաց ոլորում scroll_vertical_label=Ուղղահայեաց ոլորում scroll_horizontal.title=Աւգտագործել հորիզոնական ոլորում @@ -137,7 +135,6 @@ print_progress_close=Չեղարկել # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Փոխարկել կողային վահանակը -toggle_sidebar_notification.title=Փոխարկել կողային վահանակը (փաստաթուղթը պարունակում է ուրուագիծ/կցորդ) toggle_sidebar_notification2.title=Փոխանջատել կողմնասիւնը (փաստաթուղթը պարունակում է ուրուագիծ/կցորդներ/շերտեր) toggle_sidebar_label=Փոխարկել կողային վահանակը document_outline.title=Ցուցադրել փաստաթղթի ուրուագիծը (կրկնակի սեղմէք՝ միաւորները ընդարձակելու/կոծկելու համար) @@ -153,10 +150,9 @@ current_outline_item_label=Ընթացիկ գծագրման տարր findbar.title=Գտնել փաստաթղթում findbar_label=Որոնում -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Էջ {{page}} - additional_layers=Լրացուցիչ շերտեր +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Էջ {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -174,6 +170,7 @@ find_next.title=Գտիր արտայայտութեան յաջորդ արտայա find_next_label=Հաջորդը find_highlight=Գունանշել բոլորը find_match_case_label=Հաշուի առնել հանգամանքը +find_match_diacritics_label=Հնչիւնատարբերիչ նշանների համապատասխանեցում find_entire_word_label=Ամբողջ բառերը find_reached_top=Հասել եք փաստաթղթի վերեւին,շարունակել ներքեւից find_reached_bottom=Հասել էք փաստաթղթի վերջին, շարունակել վերեւից @@ -182,7 +179,7 @@ find_reached_bottom=Հասել էք փաստաթղթի վերջին, շարու # "{{current}}" and "{{total}}" will be replaced by a number representing the # index of the currently active find result, respectively a number representing # the total number of matches in the document. -find_match_count={[ հոգնակի(ընդհանուր) ]} +find_match_count={[ plural(total) ]} find_match_count[one]={{current}} {{total}}-ի համընկնումից find_match_count[two]={{current}} {{total}}-ի համընկնումներից find_match_count[few]={{current}} {{total}}-ի համընկնումներից @@ -191,7 +188,7 @@ find_match_count[other]={{current}} {{total}}-ի համընկնումներից # LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are # [zero|one|two|few|many|other], with [other] as the default value. # "{{limit}}" will be replaced by a numerical value. -find_match_count_limit={[ հոգնակի (սահմանը) ]} +find_match_count_limit={[ plural(limit) ]} find_match_count_limit[zero]=Աւելին քան {{limit}} համընկնումները find_match_count_limit[one]=Աւելին քան {{limit}} համընկնումը find_match_count_limit[two]=Աւելին քան {{limit}} համընկնումները @@ -229,8 +226,7 @@ page_scale_actual=Իրական չափը page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Սխալ - +loading=Բեռնում… loading_error=PDF նիշքը բացելիս սխալ է տեղի ունեցել։ invalid_file_error=Սխալ կամ վնասուած PDF նիշք։ missing_file_error=PDF նիշքը բացակաիւմ է։ @@ -253,3 +249,4 @@ password_cancel=Չեղարկել printing_not_supported=Զգուշացում. Տպելը ամբողջութեամբ չի աջակցուում զննարկիչի կողմից։ printing_not_ready=Զգուշացում. PDF֊ը ամբողջութեամբ չի բեռնաւորուել տպելու համար։ web_fonts_disabled=Վեբ-տառատեսակները անջատուած են. հնարաւոր չէ աւգտագործել ներկառուցուած PDF տառատեսակները։ + diff --git a/media/js/pdf/web/locale/ia/viewer.properties b/media/js/pdf/web/locale/ia/viewer.properties index 4ae9850e69..3e2da7971a 100644 --- a/media/js/pdf/web/locale/ia/viewer.properties +++ b/media/js/pdf/web/locale/ia/viewer.properties @@ -44,20 +44,24 @@ download_label=Discargar bookmark.title=Vista actual (copiar o aperir in un nove fenestra) bookmark_label=Vista actual +save.title=Salvar +save_label=Salvar +bookmark1.title=Pagina actual (vide le URL del pagina actual) +bookmark1_label=Pagina actual + +open_in_app.title=Aperir in app +open_in_app_label=Aperir in app + # Secondary toolbar and context menu tools.title=Instrumentos tools_label=Instrumentos first_page.title=Ir al prime pagina -first_page.label=Ir al prime pagina first_page_label=Ir al prime pagina last_page.title=Ir al prime pagina -last_page.label=Ir al prime pagina last_page_label=Ir al prime pagina page_rotate_cw.title=Rotar in senso horari -page_rotate_cw.label=Rotar in senso horari page_rotate_cw_label=Rotar in senso horari page_rotate_ccw.title=Rotar in senso antihorari -page_rotate_ccw.label=Rotar in senso antihorari page_rotate_ccw_label=Rotar in senso antihorari cursor_text_select_tool.title=Activar le instrumento de selection de texto @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Instrumento de selection de texto cursor_hand_tool.title=Activar le instrumento mano cursor_hand_tool_label=Instrumento mano +scroll_page.title=Usar rolamento de pagina +scroll_page_label=Rolamento de pagina scroll_vertical.title=Usar rolamento vertical scroll_vertical_label=Rolamento vertical scroll_horizontal.title=Usar rolamento horizontal @@ -137,7 +143,6 @@ print_progress_close=Cancellar # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Monstrar/celar le barra lateral -toggle_sidebar_notification.title=Monstrar/celar le barra lateral (le documento contine structura/attachamentos) toggle_sidebar_notification2.title=Monstrar/celar le barra lateral (le documento contine structura/attachamentos/stratos) toggle_sidebar_label=Monstrar/celar le barra lateral document_outline.title=Monstrar le schema del documento (clic duple pro expander/contraher tote le elementos) @@ -153,9 +158,6 @@ current_outline_item_label=Elemento de structura actual findbar.title=Cercar in le documento findbar_label=Cercar -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Pagina {{page}} - additional_layers=Altere stratos # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Pagina {{page}} @@ -176,6 +178,7 @@ find_next.title=Trovar le successive occurrentia del phrase find_next_label=Sequente find_highlight=Evidentiar toto find_match_case_label=Distinguer majusculas/minusculas +find_match_diacritics_label=Differentiar diacriticos find_entire_word_label=Parolas integre find_reached_top=Initio del documento attingite, continuation ab fin find_reached_bottom=Fin del documento attingite, continuation ab initio @@ -219,27 +222,27 @@ error_stack=Pila: {{stack}} error_file=File: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Linea: {{line}} -rendering_error=Un error occurreva durante que on processava le pagina. # Predefined zoom values page_scale_width=Plen largor del pagina page_scale_fit=Pagina integre page_scale_auto=Zoom automatic -page_scale_actual=Dimension actual +page_scale_actual=Dimension real # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Error +loading=Cargante… # Loading indicator messages -loading=Cargante… loading_error=Un error occurreva durante que on cargava le file PDF. invalid_file_error=File PDF corrumpite o non valide. missing_file_error=File PDF mancante. unexpected_response_error=Responsa del servitor inexpectate. +rendering_error=Un error occurreva durante que on processava le pagina. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Cancellar printing_not_supported=Attention : le impression non es totalmente supportate per ce navigator. printing_not_ready=Attention: le file PDF non es integremente cargate pro lo poter imprimer. web_fonts_disabled=Le typos de litteras web es disactivate: impossibile usar le typos de litteras PDF incorporate. + +# Editor +editor_free_text2.title=Texto +editor_free_text2_label=Texto +editor_ink2.title=Designar +editor_ink2_label=Designar + +free_text2_default_content=Comenciar a scriber… + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Dimension +editor_ink_color=Color +editor_ink_thickness=Spissor +editor_ink_opacity=Opacitate + +# Editor aria +editor_free_text2_aria_label=Editor de texto +editor_ink2_aria_label=Editor de designos +editor_ink_canvas_aria_label=Imagine create per le usator diff --git a/media/js/pdf/web/locale/id/viewer.properties b/media/js/pdf/web/locale/id/viewer.properties index 2bdc8d566a..84f84a8787 100644 --- a/media/js/pdf/web/locale/id/viewer.properties +++ b/media/js/pdf/web/locale/id/viewer.properties @@ -41,23 +41,24 @@ print.title=Cetak print_label=Cetak download.title=Unduh download_label=Unduh +save.title=Simpan +save_label=Simpan bookmark.title=Tampilan Sekarang (salin atau buka di jendela baru) bookmark_label=Tampilan Sekarang +bookmark1.title=Laman Saat Ini (Lihat URL dari Laman Sekarang) +bookmark1_label=Laman Saat Ini + # Secondary toolbar and context menu tools.title=Alat tools_label=Alat first_page.title=Buka Halaman Pertama -first_page.label=Ke Halaman Pertama first_page_label=Buka Halaman Pertama last_page.title=Buka Halaman Terakhir -last_page.label=Ke Halaman Terakhir last_page_label=Buka Halaman Terakhir page_rotate_cw.title=Putar Searah Jarum Jam -page_rotate_cw.label=Putar Searah Jarum Jam page_rotate_cw_label=Putar Searah Jarum Jam page_rotate_ccw.title=Putar Berlawanan Arah Jarum Jam -page_rotate_ccw.label=Putar Berlawanan Arah Jarum Jam page_rotate_ccw_label=Putar Berlawanan Arah Jarum Jam cursor_text_select_tool.title=Aktifkan Alat Seleksi Teks @@ -65,6 +66,8 @@ cursor_text_select_tool_label=Alat Seleksi Teks cursor_hand_tool.title=Aktifkan Alat Tangan cursor_hand_tool_label=Alat Tangan +scroll_page.title=Gunakan Pengguliran Laman +scroll_page_label=Pengguliran Laman scroll_vertical.title=Gunakan Penggeseran Vertikal scroll_vertical_label=Penggeseran Vertikal scroll_horizontal.title=Gunakan Penggeseran Horizontal @@ -137,7 +140,6 @@ print_progress_close=Batalkan # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Aktif/Nonaktifkan Bilah Samping -toggle_sidebar_notification.title=Aktif/Nonaktifkan Bilah Samping (dokumen berisi kerangka/lampiran) toggle_sidebar_notification2.title=Aktif/Nonaktifkan Bilah Samping (dokumen berisi kerangka/lampiran/lapisan) toggle_sidebar_label=Aktif/Nonaktifkan Bilah Samping document_outline.title=Tampilkan Kerangka Dokumen (klik ganda untuk membentangkan/menciutkan semua item) @@ -153,9 +155,6 @@ current_outline_item_label=Butir Ikhtisar Saat Ini findbar.title=Temukan di Dokumen findbar_label=Temukan -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Laman {{page}} - additional_layers=Lapisan Tambahan # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Halaman {{page}} @@ -176,6 +175,7 @@ find_next.title=Temukan lebih lanjut find_next_label=Selanjutnya find_highlight=Sorot semuanya find_match_case_label=Cocokkan BESAR/kecil +find_match_diacritics_label=Pencocokan Diakritik find_entire_word_label=Seluruh teks find_reached_top=Sampai di awal dokumen, dilanjutkan dari bawah find_reached_bottom=Sampai di akhir dokumen, dilanjutkan dari atas @@ -219,7 +219,6 @@ error_stack=Stack: {{stack}} error_file=Berkas: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Baris: {{line}} -rendering_error=Galat terjadi saat merender laman. # Predefined zoom values page_scale_width=Lebar Laman @@ -230,9 +229,6 @@ page_scale_actual=Ukuran Asli # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Galat - # Loading indicator messages loading=Memuat… loading_error=Galat terjadi saat memuat PDF. @@ -240,6 +236,8 @@ invalid_file_error=Berkas PDF tidak valid atau rusak. missing_file_error=Berkas PDF tidak ada. unexpected_response_error=Balasan server yang tidak diharapkan. +rendering_error=Galat terjadi saat merender laman. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +255,23 @@ password_cancel=Batal printing_not_supported=Peringatan: Pencetakan tidak didukung secara lengkap pada peramban ini. printing_not_ready=Peringatan: Berkas PDF masih belum dimuat secara lengkap untuk dapat dicetak. web_fonts_disabled=Font web dinonaktifkan: tidak dapat menggunakan font PDF yang tersemat. + +# Editor +editor_free_text2.title=Teks +editor_free_text2_label=Teks +editor_ink2.title=Gambar +editor_ink2_label=Gambar + +free_text2_default_content=Mulai mengetik… + +# Editor Parameters +editor_free_text_color=Warna +editor_free_text_size=Ukuran +editor_ink_color=Warna +editor_ink_thickness=Ketebalan +editor_ink_opacity=Opasitas + +# Editor aria +editor_free_text2_aria_label=Editor Teks +editor_ink2_aria_label=Editor Gambar +editor_ink_canvas_aria_label=Gambar yang dibuat pengguna diff --git a/media/js/pdf/web/locale/is/viewer.properties b/media/js/pdf/web/locale/is/viewer.properties index 5fb4b01965..e897ed4090 100644 --- a/media/js/pdf/web/locale/is/viewer.properties +++ b/media/js/pdf/web/locale/is/viewer.properties @@ -28,10 +28,10 @@ of_pages=af {{pagesCount}} # respectively a number representing the total number of pages in the document. page_of_pages=({{pageNumber}} af {{pagesCount}}) -zoom_out.title=Minnka -zoom_out_label=Minnka -zoom_in.title=Stækka -zoom_in_label=Stækka +zoom_out.title=Minnka aðdrátt +zoom_out_label=Minnka aðdrátt +zoom_in.title=Auka aðdrátt +zoom_in_label=Auka aðdrátt zoom.title=Aðdráttur presentation_mode.title=Skipta yfir á kynningarham presentation_mode_label=Kynningarhamur @@ -44,20 +44,24 @@ download_label=Hala niður bookmark.title=Núverandi sýn (afritaðu eða opnaðu í nýjum glugga) bookmark_label=Núverandi sýn +save.title=Vista +save_label=Vista +bookmark1.title=Núverandi síða (Skoða vefslóð frá núverandi síðu) +bookmark1_label=Núverandi síða + +open_in_app.title=Opna í smáforriti +open_in_app_label=Opna í smáforriti + # Secondary toolbar and context menu tools.title=Verkfæri tools_label=Verkfæri first_page.title=Fara á fyrstu síðu -first_page.label=Fara á fyrstu síðu first_page_label=Fara á fyrstu síðu last_page.title=Fara á síðustu síðu -last_page.label=Fara á síðustu síðu last_page_label=Fara á síðustu síðu page_rotate_cw.title=Snúa réttsælis -page_rotate_cw.label=Snúa réttsælis page_rotate_cw_label=Snúa réttsælis page_rotate_ccw.title=Snúa rangsælis -page_rotate_ccw.label=Snúa rangsælis page_rotate_ccw_label=Snúa rangsælis cursor_text_select_tool.title=Virkja textavalsáhald @@ -65,10 +69,14 @@ cursor_text_select_tool_label=Textavalsáhald cursor_hand_tool.title=Virkja handarverkfæri cursor_hand_tool_label=Handarverkfæri +scroll_page.title=Nota síðuskrun +scroll_page_label=Síðuskrun scroll_vertical.title=Nota lóðrétt skrun scroll_vertical_label=Lóðrétt skrun scroll_horizontal.title=Nota lárétt skrun scroll_horizontal_label=Lárétt skrun +scroll_wrapped.title=Nota línuskipt síðuskrun +scroll_wrapped_label=Línuskipt síðuskrun spread_none.title=Ekki taka þátt í dreifingu síðna spread_none_label=Engin dreifing @@ -120,6 +128,7 @@ document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) # LOCALIZATION NOTE (document_properties_linearized): The linearization status of # the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Fljótleg vefskoðun: document_properties_linearized_yes=Já document_properties_linearized_no=Nei document_properties_close=Loka @@ -133,18 +142,25 @@ print_progress_close=Hætta við # Tooltips and alt text for side panel toolbar buttons # (the _label strings are alt text for the buttons, the .title strings are # tooltips) -toggle_sidebar.title=Víxla hliðslá -toggle_sidebar_notification.title=Víxla hliðarslá (skjal inniheldur yfirlit/viðhengi) -toggle_sidebar_label=Víxla hliðslá +toggle_sidebar.title=Víxla hliðarspjaldi af/á +toggle_sidebar_notification2.title=Víxla hliðarslá (skjal inniheldur yfirlit/viðhengi/lög) +toggle_sidebar_label=Víxla hliðarspjaldi af/á document_outline.title=Sýna yfirlit skjals (tvísmelltu til að opna/loka öllum hlutum) document_outline_label=Efnisskipan skjals attachments.title=Sýna viðhengi attachments_label=Viðhengi +layers.title=Birta lög (tvísmelltu til að endurstilla öll lög í sjálfgefna stöðu) +layers_label=Lög thumbs.title=Sýna smámyndir thumbs_label=Smámyndir +current_outline_item.title=Finna núverandi atriði efnisskipunar +current_outline_item_label=Núverandi atriði efnisskipunar findbar.title=Leita í skjali findbar_label=Leita +additional_layers=Viðbótarlög +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Síða {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -162,6 +178,7 @@ find_next.title=Leita að næsta tilfelli þessara orða find_next_label=Næsti find_highlight=Lita allt find_match_case_label=Passa við stafstöðu +find_match_diacritics_label=Passa við broddstafi find_entire_word_label=Heil orð find_reached_top=Náði efst í skjal, held áfram neðst find_reached_bottom=Náði enda skjals, held áfram efst @@ -205,7 +222,6 @@ error_stack=Stafli: {{stack}} error_file=Skrá: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Lína: {{line}} -rendering_error=Upp kom villa við að birta síðuna. # Predefined zoom values page_scale_width=Síðubreidd @@ -217,13 +233,20 @@ page_scale_actual=Raunstærð page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Villa +loading=Hleður… +# Loading indicator messages loading_error=Villa kom upp við að hlaða inn PDF. invalid_file_error=Ógild eða skemmd PDF skrá. missing_file_error=Vantar PDF skrá. unexpected_response_error=Óvænt svar frá netþjóni. +rendering_error=Upp kom villa við að birta síðuna. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). @@ -237,3 +260,23 @@ password_cancel=Hætta við printing_not_supported=Aðvörun: Prentun er ekki með fyllilegan stuðning á þessum vafra. printing_not_ready=Aðvörun: Ekki er búið að hlaða inn allri PDF skránni fyrir prentun. web_fonts_disabled=Vef leturgerðir eru óvirkar: get ekki notað innbyggðar PDF leturgerðir. + +# Editor +editor_free_text2.title=Texti +editor_free_text2_label=Texti +editor_ink2.title=Teikna +editor_ink2_label=Teikna + +free_text2_default_content=Byrjaðu að skrifa… + +# Editor Parameters +editor_free_text_color=Litur +editor_free_text_size=Stærð +editor_ink_color=Litur +editor_ink_thickness=Þykkt +editor_ink_opacity=Ógegnsæi + +# Editor aria +editor_free_text2_aria_label=Textaritill +editor_ink2_aria_label=Teikniritill +editor_ink_canvas_aria_label=Mynd gerð af notanda diff --git a/media/js/pdf/web/locale/it/viewer.properties b/media/js/pdf/web/locale/it/viewer.properties index 325f697c96..9cb1c2953a 100644 --- a/media/js/pdf/web/locale/it/viewer.properties +++ b/media/js/pdf/web/locale/it/viewer.properties @@ -41,19 +41,22 @@ download_label = Download bookmark.title = Visualizzazione corrente (copia o apri in una nuova finestra) bookmark_label = Visualizzazione corrente +save.title = Salva +save_label = Salva +bookmark1.title = Pagina corrente (mostra URL della pagina corrente) +bookmark1_label = Pagina corrente +open_in_app.title = Apri in app +open_in_app_label = Apri in app + tools.title = Strumenti tools_label = Strumenti first_page.title = Vai alla prima pagina -first_page.label = Vai alla prima pagina first_page_label = Vai alla prima pagina last_page.title = Vai all’ultima pagina -last_page.label = Vai all’ultima pagina last_page_label = Vai all’ultima pagina page_rotate_cw.title = Ruota in senso orario -page_rotate_cw.label = Ruota in senso orario page_rotate_cw_label = Ruota in senso orario page_rotate_ccw.title = Ruota in senso antiorario -page_rotate_ccw.label = Ruota in senso antiorario page_rotate_ccw_label = Ruota in senso antiorario cursor_text_select_tool.title = Attiva strumento di selezione testo @@ -61,6 +64,8 @@ cursor_text_select_tool_label = Strumento di selezione testo cursor_hand_tool.title = Attiva strumento mano cursor_hand_tool_label = Strumento mano +scroll_page.title = Utilizza scorrimento pagine +scroll_page_label = Scorrimento pagine scroll_vertical.title = Scorri le pagine in verticale scroll_vertical_label = Scorrimento verticale scroll_horizontal.title = Scorri le pagine in orizzontale @@ -113,7 +118,6 @@ print_progress_percent = {{progress}}% print_progress_close = Annulla toggle_sidebar.title = Attiva/disattiva barra laterale -toggle_sidebar_notification.title = Attiva/disattiva barra laterale (il documento contiene struttura/allegati) toggle_sidebar_notification2.title = Attiva/disattiva barra laterale (il documento contiene struttura/allegati/livelli) toggle_sidebar_label = Attiva/disattiva barra laterale document_outline.title = Visualizza la struttura del documento (doppio clic per visualizzare/comprimere tutti gli elementi) @@ -129,8 +133,6 @@ current_outline_item_label = Elemento struttura corrente findbar.title = Trova nel documento findbar_label = Trova -page_canvas = Pagina {{page}} - additional_layers = Livelli aggiuntivi page_landmark = Pagina {{page}} thumb_page_title = Pagina {{page}} @@ -144,6 +146,7 @@ find_next.title = Trova l’occorrenza successiva del testo da cercare find_next_label = Successivo find_highlight = Evidenzia find_match_case_label = Maiuscole/minuscole +find_match_diacritics_label = Segni diacritici find_entire_word_label = Parole intere find_reached_top = Raggiunto l’inizio della pagina, continua dalla fine find_reached_bottom = Raggiunta la fine della pagina, continua dall’inizio @@ -170,7 +173,6 @@ error_message = Messaggio: {{message}} error_stack = Stack: {{stack}} error_file = File: {{file}} error_line = Riga: {{line}} -rendering_error = Si è verificato un errore durante il rendering della pagina. page_scale_width = Larghezza pagina page_scale_fit = Adatta a una pagina @@ -178,14 +180,15 @@ page_scale_auto = Zoom automatico page_scale_actual = Dimensioni effettive page_scale_percent = {{scale}}% -loading_error_indicator = Errore - loading = Caricamento in corso… + loading_error = Si è verificato un errore durante il caricamento del PDF. invalid_file_error = File PDF non valido o danneggiato. missing_file_error = File PDF non disponibile. unexpected_response_error = Risposta imprevista del server +rendering_error = Si è verificato un errore durante il rendering della pagina. + annotation_date_string = {{date}}, {{time}} text_annotation_type.alt = [Annotazione: {{type}}] @@ -197,3 +200,23 @@ password_cancel = Annulla printing_not_supported = Attenzione: la stampa non è completamente supportata da questo browser. printing_not_ready = Attenzione: il PDF non è ancora stato caricato completamente per la stampa. web_fonts_disabled = I web font risultano disattivati: impossibile utilizzare i caratteri incorporati nel PDF. + +# Editor +editor_free_text2.title = Testo +editor_free_text2_label = Testo +editor_ink2.title = Disegno +editor_ink2_label = Disegno + +free_text2_default_content = Inizia a digitare… + +# Editor Parameters +editor_free_text_color = Colore +editor_free_text_size = Dimensione +editor_ink_color = Colore +editor_ink_thickness = Spessore +editor_ink_opacity = Opacità + +# Editor aria +editor_free_text2_aria_label = Editor di testo +editor_ink2_aria_label = Editor disegni +editor_ink_canvas_aria_label = Immagine creata dall’utente diff --git a/media/js/pdf/web/locale/ja/viewer.properties b/media/js/pdf/web/locale/ja/viewer.properties index ac51fa7e78..0d68559d81 100644 --- a/media/js/pdf/web/locale/ja/viewer.properties +++ b/media/js/pdf/web/locale/ja/viewer.properties @@ -44,39 +44,47 @@ download_label=ダウンロード bookmark.title=現在のビューの URL です (コピーまたは新しいウィンドウに開く) bookmark_label=現在のビュー +save.title=保存します +save_label=保存 +bookmark1.title=現在のページの URL です (現在のページを表示する URL) +bookmark1_label=現在のページ + +# LOCALIZATION NOTE (open_in_app.title): This string is used in Firefox for Android. +open_in_app.title=アプリで開く +# LOCALIZATION NOTE (open_in_app_label): This string is used in Firefox for Android. Length of the translation matters since we are in a mobile context, with limited screen estate. +open_in_app_label=アプリで開く + # Secondary toolbar and context menu tools.title=ツール tools_label=ツール first_page.title=最初のページへ移動します -first_page.label=最初のページへ移動 first_page_label=最初のページへ移動 last_page.title=最後のページへ移動します -last_page.label=最後のページへ移動 last_page_label=最後のページへ移動 page_rotate_cw.title=ページを右へ回転します -page_rotate_cw.label=右回転 page_rotate_cw_label=右回転 page_rotate_ccw.title=ページを左へ回転します -page_rotate_ccw.label=左回転 page_rotate_ccw_label=左回転 -cursor_text_select_tool.title=テキスト選択ツールを有効にする +cursor_text_select_tool.title=テキスト選択ツールを有効にします cursor_text_select_tool_label=テキスト選択ツール -cursor_hand_tool.title=手のひらツールを有効にする +cursor_hand_tool.title=手のひらツールを有効にします cursor_hand_tool_label=手のひらツール -scroll_vertical.title=縦スクロールにする +scroll_page.title=ページ単位でスクロールします +scroll_page_label=ページ単位でスクロール +scroll_vertical.title=縦スクロールにします scroll_vertical_label=縦スクロール -scroll_horizontal.title=横スクロールにする +scroll_horizontal.title=横スクロールにします scroll_horizontal_label=横スクロール -scroll_wrapped.title=折り返しスクロールにする +scroll_wrapped.title=折り返しスクロールにします scroll_wrapped_label=折り返しスクロール -spread_none.title=見開きにしない +spread_none.title=見開きにしません spread_none_label=見開きにしない -spread_odd.title=奇数ページ開始で見開きにする +spread_odd.title=奇数ページ開始で見開きにします spread_odd_label=奇数ページ見開き -spread_even.title=偶数ページ開始で見開きにする +spread_even.title=偶数ページ開始で見開きにします spread_even_label=偶数ページ見開き # Document properties dialog box @@ -86,10 +94,10 @@ document_properties_file_name=ファイル名: document_properties_file_size=ファイルサイズ: # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" # will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +document_properties_kb={{size_kb}} KB ({{size_b}} バイト) # LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" # will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_mb={{size_mb}} MB ({{size_b}} バイト) document_properties_title=タイトル: document_properties_author=作成者: document_properties_subject=件名: @@ -137,7 +145,6 @@ print_progress_close=キャンセル # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=サイドバー表示を切り替えます -toggle_sidebar_notification.title=サイドバー表示を切り替えます (文書に含まれるアウトライン / 添付) toggle_sidebar_notification2.title=サイドバー表示を切り替えます (文書に含まれるアウトライン / 添付 / レイヤー) toggle_sidebar_label=サイドバーの切り替え document_outline.title=文書の目次を表示します (ダブルクリックで項目を開閉します) @@ -153,9 +160,6 @@ current_outline_item_label=現在のアウトライン項目 findbar.title=文書内を検索します findbar_label=検索 -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas={{page}} ページ - additional_layers=追加レイヤー # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark={{page}} ページ @@ -176,6 +180,7 @@ find_next.title=現在より後の位置で指定文字列が現れる部分を find_next_label=次へ find_highlight=すべて強調表示 find_match_case_label=大文字/小文字を区別 +find_match_diacritics_label=発音区別符号を区別 find_entire_word_label=単語一致 find_reached_top=文書先頭に到達したので末尾から続けて検索します find_reached_bottom=文書末尾に到達したので先頭から続けて検索します @@ -219,7 +224,6 @@ error_stack=スタック: {{stack}} error_file=ファイル: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=行: {{line}} -rendering_error=ページのレンダリング中にエラーが発生しました。 # Predefined zoom values page_scale_width=幅に合わせる @@ -231,15 +235,16 @@ page_scale_actual=実際のサイズ page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=エラー +loading=読み込み中... # Loading indicator messages -loading=読み込み中... loading_error=PDF の読み込み中にエラーが発生しました。 invalid_file_error=無効または破損した PDF ファイル。 missing_file_error=PDF ファイルが見つかりません。 unexpected_response_error=サーバーから予期せぬ応答がありました。 +rendering_error=ページのレンダリング中にエラーが発生しました。 + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,6 +262,23 @@ password_cancel=キャンセル printing_not_supported=警告: このブラウザーでは印刷が完全にサポートされていません。 printing_not_ready=警告: PDF を印刷するための読み込みが終了していません。 web_fonts_disabled=ウェブフォントが無効になっています: 埋め込まれた PDF のフォントを使用できません。 -# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same -# exact string as in the `chrome.properties` file. -unsupported_feature_signatures=この PDF ドキュメントは、デジタル署名が含まれています。署名の検証はサポートされていません。 + +# Editor +editor_free_text2.title=フリーテキスト注釈 +editor_free_text2_label=フリーテキスト注釈 +editor_ink2.title=インク注釈 +editor_ink2_label=インク注釈 + +free_text2_default_content=テキストを入力してください... + +# Editor Parameters +editor_free_text_color=色 +editor_free_text_size=サイズ +editor_ink_color=色 +editor_ink_thickness=太さ +editor_ink_opacity=不透明度 + +# Editor aria +editor_free_text2_aria_label=フリーテキスト注釈エディター +editor_ink2_aria_label=インク注釈エディター +editor_ink_canvas_aria_label=ユーザー作成画像 diff --git a/media/js/pdf/web/locale/ka/viewer.properties b/media/js/pdf/web/locale/ka/viewer.properties index d6c32e8c2d..67b16874d6 100644 --- a/media/js/pdf/web/locale/ka/viewer.properties +++ b/media/js/pdf/web/locale/ka/viewer.properties @@ -44,20 +44,24 @@ download_label=ჩამოტვირთვა bookmark.title=მიმდინარე ხედი (ასლის აღება ან გახსნა ახალ ფანჯარაში) bookmark_label=მიმდინარე ხედი +save.title=შენახვა +save_label=შენახვა +bookmark1.title=მიმდინარე გვერდი (ბმული ამ გვერდისთვის) +bookmark1_label=მიმდინარე გვერდი + +open_in_app.title=გახსნა პროგრამით +open_in_app_label=გახსნა პროგრამით + # Secondary toolbar and context menu tools.title=ხელსაწყოები tools_label=ხელსაწყოები first_page.title=პირველ გვერდზე გადასვლა -first_page.label=პირველ გვერდზე გადასვლა first_page_label=პირველ გვერდზე გადასვლა last_page.title=ბოლო გვერდზე გადასვლა -last_page.label=ბოლო გვერდზე გადასვლა last_page_label=ბოლო გვერდზე გადასვლა page_rotate_cw.title=საათის ისრის მიმართულებით შებრუნება -page_rotate_cw.label=მარჯვნივ გადაბრუნება page_rotate_cw_label=მარჯვნივ გადაბრუნება page_rotate_ccw.title=საათის ისრის საპირისპიროდ შებრუნება -page_rotate_ccw.label=მარცხნივ გადაბრუნება page_rotate_ccw_label=მარცხნივ გადაბრუნება cursor_text_select_tool.title=მოსანიშნი მაჩვენებლის გამოყენება @@ -65,6 +69,8 @@ cursor_text_select_tool_label=მოსანიშნი მაჩვენე cursor_hand_tool.title=გადასაადგილებელი მაჩვენებლის გამოყენება cursor_hand_tool_label=გადასაადგილებელი +scroll_page.title=გვერდზე გადაადგილების გამოყენება +scroll_page_label=გვერდზე გადაადგილება scroll_vertical.title=გვერდების შვეულად ჩვენება scroll_vertical_label=შვეული გადაადგილება scroll_horizontal.title=გვერდების თარაზულად ჩვენება @@ -99,8 +105,8 @@ document_properties_modification_date=ჩასწორების დრო: # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" # will be replaced by the creation/modification date, and time, of the PDF file. document_properties_date_string={{date}}, {{time}} -document_properties_creator=გამომშვები: -document_properties_producer=PDF-გამომშვები: +document_properties_creator=გამომცემი: +document_properties_producer=PDF-შემდგენელი: document_properties_version=PDF-ვერსია: document_properties_page_count=გვერდები: document_properties_page_size=გვერდის ზომა: @@ -137,7 +143,6 @@ print_progress_close=გაუქმება # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=გვერდითა ზოლის გამოჩენა/დამალვა -toggle_sidebar_notification.title=გვერდითა ზოლის გამოჩენა (შეიცავს სარჩევს/დანართს) toggle_sidebar_notification2.title=გვერდითი ზოლის გამოჩენა (შეიცავს სარჩევს/დანართს/ფენებს) toggle_sidebar_label=გვერდითა ზოლის გამოჩენა/დამალვა document_outline.title=დოკუმენტის სარჩევის ჩვენება (ორმაგი წკაპით თითოეულის ჩამოშლა/აკეცვა) @@ -153,9 +158,6 @@ current_outline_item_label=მიმდინარე გვერდი სა findbar.title=პოვნა დოკუმენტში findbar_label=ძიება -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=გვერდი {{page}} - additional_layers=დამატებითი ფენები # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=გვერდი {{page}} @@ -175,7 +177,8 @@ find_previous_label=წინა find_next.title=ფრაზის შემდეგი კონტექსტის პოვნა find_next_label=შემდეგი find_highlight=ყველას მონიშვნა -find_match_case_label=ემთხვევა მთავრული +find_match_case_label=მთავრულით +find_match_diacritics_label=ნიშნებით find_entire_word_label=მთლიანი სიტყვები find_reached_top=მიღწეულია დოკუმენტის დასაწყისი, გრძელდება ბოლოდან find_reached_bottom=მიღწეულია დოკუმენტის ბოლო, გრძელდება დასაწყისიდან @@ -194,12 +197,12 @@ find_match_count[other]={{current}} / {{total}} თანხვედრიდ # [zero|one|two|few|many|other], with [other] as the default value. # "{{limit}}" will be replaced by a numerical value. find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]={{limit}}-ზე მეტი თანხვედრა -find_match_count_limit[one]={{limit}}-ზე მეტი თანხვედრა -find_match_count_limit[two]={{limit}}-ზე მეტი თანხვედრა -find_match_count_limit[few]={{limit}}-ზე მეტი თანხვედრა -find_match_count_limit[many]={{limit}}-ზე მეტი თანხვედრა -find_match_count_limit[other]={{limit}}-ზე მეტი თანხვედრა +find_match_count_limit[zero]=არანაკლებ {{limit}} თანხვედრა +find_match_count_limit[one]=არანაკლებ {{limit}} თანხვედრა +find_match_count_limit[two]=არანაკლებ {{limit}} თანხვედრა +find_match_count_limit[few]=არანაკლებ {{limit}} თანხვედრა +find_match_count_limit[many]=არანაკლებ {{limit}} თანხვედრა +find_match_count_limit[other]=არანაკლებ {{limit}} თანხვედრა find_not_found=ფრაზა ვერ მოიძებნა # Error panel labels @@ -219,7 +222,6 @@ error_stack=სტეკი: {{stack}} error_file=ფაილი: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=ხაზი: {{line}} -rendering_error=შეცდომა, გვერდის ჩვენებისას. # Predefined zoom values page_scale_width=გვერდის სიგანეზე @@ -231,15 +233,16 @@ page_scale_actual=საწყისი ზომა page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=შეცდომა +loading=ჩატვირთვა… # Loading indicator messages -loading=ჩატვირთვა… loading_error=შეცდომა, PDF-ფაილის ჩატვირთვისას. invalid_file_error=არამართებული ან დაზიანებული PDF-ფაილი. missing_file_error=ნაკლული PDF-ფაილი. unexpected_response_error=სერვერის მოულოდნელი პასუხი. +rendering_error=შეცდომა, გვერდის ჩვენებისას. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=გაუქმება printing_not_supported=გაფრთხილება: ამობეჭდვა ამ ბრაუზერში არაა სრულად მხარდაჭერილი. printing_not_ready=გაფრთხილება: PDF სრულად ჩატვირთული არაა, ამობეჭდვის დასაწყებად. web_fonts_disabled=ვებშრიფტები გამორთულია: ჩაშენებული PDF-შრიფტების გამოყენება ვერ ხერხდება. + +# Editor +editor_free_text2.title=წარწერა +editor_free_text2_label=ტექსტი +editor_ink2.title=დახატვა +editor_ink2_label=დახატვა + +free_text2_default_content=აკრიფეთ… + +# Editor Parameters +editor_free_text_color=ფერი +editor_free_text_size=ზომა +editor_ink_color=ფერი +editor_ink_thickness=სისქე +editor_ink_opacity=გაუმჭვირვალობა + +# Editor aria +editor_free_text2_aria_label=ნაწერის ჩასწორება +editor_ink2_aria_label=ნახატის ჩასწორება +editor_ink_canvas_aria_label=მომხმარებლის შექმნილი სურათი diff --git a/media/js/pdf/web/locale/kab/viewer.properties b/media/js/pdf/web/locale/kab/viewer.properties index a145dae072..655d3896a0 100644 --- a/media/js/pdf/web/locale/kab/viewer.properties +++ b/media/js/pdf/web/locale/kab/viewer.properties @@ -44,20 +44,24 @@ download_label=Azdam bookmark.title=Timeẓri tamirant (nɣel neɣ ldi ɣef usfaylu amaynut) bookmark_label=Askan amiran +save.title=Sekles +save_label=Sekles +bookmark1.title=Asebter amiran (Sken-d tansa URL seg usebter amiran) +bookmark1_label=Asebter amiran + +open_in_app.title=Ldi deg usnas +open_in_app_label=Ldi deg usnas + # Secondary toolbar and context menu tools.title=Ifecka tools_label=Ifecka first_page.title=Ddu ɣer usebter amezwaru -first_page.label=Ddu ɣer usebter amezwaru first_page_label=Ddu ɣer usebter amezwaru last_page.title=Ddu ɣer usebter aneggaru -last_page.label=Ddu ɣer usebter aneggaru last_page_label=Ddu ɣer usebter aneggaru page_rotate_cw.title=Tuzzya tusrigt -page_rotate_cw.label=Tuzzya tusrigt page_rotate_cw_label=Tuzzya tusrigt page_rotate_ccw.title=Tuzzya amgal-usrig -page_rotate_ccw.label=Tuzzya amgal-usrig page_rotate_ccw_label=Tuzzya amgal-usrig cursor_text_select_tool.title=Rmed afecku n tefrant n uḍris @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Afecku n tefrant n uḍris cursor_hand_tool.title=Rmed afecku afus cursor_hand_tool_label=Afecku afus +scroll_page.title=Seqdec adrurem n usebter +scroll_page_label=Adrurem n usebter scroll_vertical.title=Seqdec adrurem ubdid scroll_vertical_label=Adrurem ubdid scroll_horizontal.title=Seqdec adrurem aglawan @@ -137,7 +143,6 @@ print_progress_close=Sefsex # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Sken/Fer agalis adisan -toggle_sidebar_notification.title=Ffer/Sken agalis adisan (isemli yegber aɣawas/imeddayen) toggle_sidebar_notification2.title=Ffer/Sekn agalis adisan (isemli yegber aɣawas/ticeqqufin yeddan/tissiwin) toggle_sidebar_label=Sken/Fer agalis adisan document_outline.title=Sken isemli (Senned snat tikal i wesemɣer/Afneẓ n iferdisen meṛṛa) @@ -153,9 +158,6 @@ current_outline_item_label=Aferdis n uɣawas amiran findbar.title=Nadi deg isemli findbar_label=Nadi -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Asebter {{page}} - additional_layers=Tissiwin-nniḍen # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Asebter {{page}} @@ -176,6 +178,7 @@ find_next.title=Aff-d timseḍriwt n twinest d-iteddun find_next_label=Ddu ɣer zdat find_highlight=Err izirig imaṛṛa find_match_case_label=Qadeṛ amasal n isekkilen +find_match_diacritics_label=Qadeṛ ifeskilen find_entire_word_label=Awalen iččuranen find_reached_top=Yabbeḍ s afella n usebter, tuɣalin s wadda find_reached_bottom=Tebḍeḍ s adda n usebter, tuɣalin s afella @@ -219,7 +222,6 @@ error_stack=Tanebdant: {{stack}} error_file=Afaylu: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Izirig: {{line}} -rendering_error=Teḍra-d tuccḍa deg uskan n usebter. # Predefined zoom values page_scale_width=Tehri n usebter @@ -231,15 +233,16 @@ page_scale_actual=Teɣzi tilawt page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Error +loading=Asali… # Loading indicator messages -loading=Asali… loading_error=Teḍra-d tuccḍa deg alluy n PDF: invalid_file_error=Afaylu PDF arameɣtu neɣ yexṣeṛ. missing_file_error=Ulac afaylu PDF. unexpected_response_error=Aqeddac yerra-d yir tiririt ur nettwaṛǧi ara. +rendering_error=Teḍra-d tuccḍa deg uskan n usebter. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Sefsex printing_not_supported=Ɣuṛ-k: Asiggez ur ittusefrak ara yakan imaṛṛa deg iminig-a. printing_not_ready=Ɣuṛ-k: Afaylu PDF ur d-yuli ara imeṛṛa akken ad ittusiggez. web_fonts_disabled=Tisefsiyin web ttwassensent; D awezɣi useqdec n tsefsiyin yettwarnan ɣer PDF. + +# Editor +editor_free_text2.title=Aḍris +editor_free_text2_label=Aḍris +editor_ink2.title=Suneɣ +editor_ink2_label=Suneɣ + +free_text2_default_content=Bdu tira... + +# Editor Parameters +editor_free_text_color=Initen +editor_free_text_size=Teɣzi +editor_ink_color=Ini +editor_ink_thickness=Tuzert +editor_ink_opacity=Tebrek + +# Editor aria +editor_free_text2_aria_label=Amaẓrag n uḍris +editor_ink2_aria_label=Amaẓrag n usuneɣ +editor_ink_canvas_aria_label=Tugna yettwarnan sɣur useqdac diff --git a/media/js/pdf/web/locale/kk/viewer.properties b/media/js/pdf/web/locale/kk/viewer.properties index de41d9d4f3..94ba0942ef 100644 --- a/media/js/pdf/web/locale/kk/viewer.properties +++ b/media/js/pdf/web/locale/kk/viewer.properties @@ -44,20 +44,24 @@ download_label=Жүктеп алу bookmark.title=Ағымдағы көрініс (көшіру не жаңа терезеде ашу) bookmark_label=Ағымдағы көрініс +save.title=Сақтау +save_label=Сақтау +bookmark1.title=Ағымдағы бет (Ағымдағы беттен URL адресін көру) +bookmark1_label=Ағымдағы бет + +open_in_app.title=Қолданбада ашу +open_in_app_label=Қолданбада ашу + # Secondary toolbar and context menu tools.title=Құралдар tools_label=Құралдар first_page.title=Алғашқы параққа өту -first_page.label=Алғашқы параққа өту first_page_label=Алғашқы параққа өту last_page.title=Соңғы параққа өту -last_page.label=Соңғы параққа өту last_page_label=Соңғы параққа өту page_rotate_cw.title=Сағат тілі бағытымен айналдыру -page_rotate_cw.label=Сағат тілі бағытымен бұру page_rotate_cw_label=Сағат тілі бағытымен бұру page_rotate_ccw.title=Сағат тілі бағытына қарсы бұру -page_rotate_ccw.label=Сағат тілі бағытына қарсы бұру page_rotate_ccw_label=Сағат тілі бағытына қарсы бұру cursor_text_select_tool.title=Мәтінді таңдау құралын іске қосу @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Мәтінді таңдау құралы cursor_hand_tool.title=Қол құралын іске қосу cursor_hand_tool_label=Қол құралы +scroll_page.title=Беттерді айналдыруды пайдалану +scroll_page_label=Беттерді айналдыру scroll_vertical.title=Вертикалды айналдыруды қолдану scroll_vertical_label=Вертикалды айналдыру scroll_horizontal.title=Горизонталды айналдыруды қолдану @@ -137,7 +143,6 @@ print_progress_close=Бас тарту # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Бүйір панелін көрсету/жасыру -toggle_sidebar_notification.title=Бүйір панелін көрсету/жасыру (құжатта құрылымы/салынымдар бар) toggle_sidebar_notification2.title=Бүйір панелін көрсету/жасыру (құжатта құрылымы/салынымдар/қабаттар бар) toggle_sidebar_label=Бүйір панелін көрсету/жасыру document_outline.title=Құжат құрылымын көрсету (барлық нәрселерді жазық қылу/жинау үшін қос шерту керек) @@ -153,9 +158,6 @@ current_outline_item_label=Құрылымның ағымдағы элемент findbar.title=Құжаттан табу findbar_label=Табу -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Бет {{page}} - additional_layers=Қосымша қабаттар # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Бет {{page}} @@ -176,6 +178,7 @@ find_next.title=Осы сөздердің мәтіннен келесі кезд find_next_label=Келесі find_highlight=Барлығын түспен ерекшелеу find_match_case_label=Регистрді ескеру +find_match_diacritics_label=Диакритиканы ескеру find_entire_word_label=Сөздер толығымен find_reached_top=Құжаттың басына жеттік, соңынан бастап жалғастырамыз find_reached_bottom=Құжаттың соңына жеттік, басынан бастап жалғастырамыз @@ -219,7 +222,6 @@ error_stack=Стек: {{stack}} error_file=Файл: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Жол: {{line}} -rendering_error=Парақты өңдеу кезінде қате кетті. # Predefined zoom values page_scale_width=Парақ ені @@ -231,15 +233,16 @@ page_scale_actual=Нақты өлшемі page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Қате +loading=Жүктелуде… # Loading indicator messages -loading=Жүктелуде… loading_error=PDF жүктеу кезінде қате кетті. invalid_file_error=Зақымдалған немесе қате PDF файл. missing_file_error=PDF файлы жоқ. unexpected_response_error=Сервердің күтпеген жауабы. +rendering_error=Парақты өңдеу кезінде қате кетті. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Бас тарту printing_not_supported=Ескерту: Баспаға шығаруды бұл браузер толығымен қолдамайды. printing_not_ready=Ескерту: Баспаға шығару үшін, бұл PDF толығымен жүктеліп алынбады. web_fonts_disabled=Веб қаріптері сөндірілген: құрамына енгізілген PDF қаріптерін қолдану мүмкін емес. + +# Editor +editor_free_text2.title=Мәтін +editor_free_text2_label=Мәтін +editor_ink2.title=Сурет салу +editor_ink2_label=Сурет салу + +free_text2_default_content=Теруді бастау… + +# Editor Parameters +editor_free_text_color=Түс +editor_free_text_size=Өлшемі +editor_ink_color=Түс +editor_ink_thickness=Қалыңдығы +editor_ink_opacity=Мөлдірсіздігі + +# Editor aria +editor_free_text2_aria_label=Мәтін түзеткіші +editor_ink2_aria_label=Сурет түзеткіші +editor_ink_canvas_aria_label=Пайдаланушы жасаған сурет diff --git a/media/js/pdf/web/locale/km/viewer.properties b/media/js/pdf/web/locale/km/viewer.properties index cce6a81ae6..9b5fb738f2 100644 --- a/media/js/pdf/web/locale/km/viewer.properties +++ b/media/js/pdf/web/locale/km/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=ទិដ្ឋភាព​បច្ចុប្បន្ន tools.title=ឧបករណ៍ tools_label=ឧបករណ៍ first_page.title=ទៅកាន់​ទំព័រ​ដំបូង​ -first_page.label=ទៅកាន់​ទំព័រ​ដំបូង​ first_page_label=ទៅកាន់​ទំព័រ​ដំបូង​ last_page.title=ទៅកាន់​ទំព័រ​ចុងក្រោយ​ -last_page.label=ទៅកាន់​ទំព័រ​ចុងក្រោយ​ last_page_label=ទៅកាន់​ទំព័រ​ចុងក្រោយ page_rotate_cw.title=បង្វិល​ស្រប​ទ្រនិច​នាឡិកា -page_rotate_cw.label=បង្វិល​ស្រប​ទ្រនិច​នាឡិកា page_rotate_cw_label=បង្វិល​ស្រប​ទ្រនិច​នាឡិកា page_rotate_ccw.title=បង្វិល​ច្រាស​ទ្រនិច​នាឡិកា​​ -page_rotate_ccw.label=បង្វិល​ច្រាស​ទ្រនិច​នាឡិកា​​ page_rotate_ccw_label=បង្វិល​ច្រាស​ទ្រនិច​នាឡិកា​​ cursor_text_select_tool.title=បើក​ឧបករណ៍​ជ្រើស​អត្ថបទ @@ -122,7 +118,6 @@ print_progress_close=បោះបង់ # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=បិទ/បើក​គ្រាប់​រំកិល -toggle_sidebar_notification.title=បិទ/បើក​របារ​ចំហៀង (ឯកសារ​មាន​មាតិកា​នៅ​ក្រៅ/attachments) toggle_sidebar_label=បិទ/បើក​គ្រាប់​រំកិល document_outline.title=បង្ហាញ​គ្រោង​ឯកសារ (ចុច​ទ្វេ​ដង​ដើម្បី​ពង្រីក/បង្រួម​ធាតុ​ទាំងអស់) document_outline_label=គ្រោង​ឯកសារ @@ -191,9 +186,6 @@ page_scale_actual=ទំហំ​ជាក់ស្ដែង # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=កំហុស - loading_error=មាន​កំហុស​បាន​កើតឡើង​ពេល​កំពុង​ផ្ទុក PDF ។ invalid_file_error=ឯកសារ PDF ខូច ឬ​មិន​ត្រឹមត្រូវ ។ missing_file_error=បាត់​ឯកសារ PDF @@ -215,3 +207,4 @@ password_cancel=បោះបង់ printing_not_supported=ការ​ព្រមាន ៖ កា​រ​បោះពុម្ព​មិន​ត្រូវ​បាន​គាំទ្រ​ពេញលេញ​ដោយ​កម្មវិធី​រុករក​នេះ​ទេ ។ printing_not_ready=ព្រមាន៖ PDF មិន​ត្រូវ​បាន​ផ្ទុក​ទាំងស្រុង​ដើម្បី​បោះពុម្ព​ទេ។ web_fonts_disabled=បាន​បិទ​ពុម្ពអក្សរ​បណ្ដាញ ៖ មិន​អាច​ប្រើ​ពុម្ពអក្សរ PDF ដែល​បាន​បង្កប់​បាន​ទេ ។ + diff --git a/media/js/pdf/web/locale/kn/viewer.properties b/media/js/pdf/web/locale/kn/viewer.properties index 19f23b5b8a..1a62056c98 100644 --- a/media/js/pdf/web/locale/kn/viewer.properties +++ b/media/js/pdf/web/locale/kn/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=ಪ್ರಸಕ್ತ ನೋಟ tools.title=ಉಪಕರಣಗಳು tools_label=ಉಪಕರಣಗಳು first_page.title=ಮೊದಲ ಪುಟಕ್ಕೆ ತೆರಳು -first_page.label=ಮೊದಲ ಪುಟಕ್ಕೆ ತೆರಳು first_page_label=ಮೊದಲ ಪುಟಕ್ಕೆ ತೆರಳು last_page.title=ಕೊನೆಯ ಪುಟಕ್ಕೆ ತೆರಳು -last_page.label=ಕೊನೆಯ ಪುಟಕ್ಕೆ ತೆರಳು last_page_label=ಕೊನೆಯ ಪುಟಕ್ಕೆ ತೆರಳು page_rotate_cw.title=ಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು -page_rotate_cw.label=ಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು page_rotate_cw_label=ಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು page_rotate_ccw.title=ಅಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು -page_rotate_ccw.label=ಅಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು page_rotate_ccw_label=ಅಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು cursor_text_select_tool.title=ಪಠ್ಯ ಆಯ್ಕೆ ಉಪಕರಣವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ @@ -170,9 +166,6 @@ page_scale_actual=ನಿಜವಾದ ಗಾತ್ರ # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=ದೋಷ - loading_error=PDF ಅನ್ನು ಲೋಡ್ ಮಾಡುವಾಗ ಒಂದು ದೋಷ ಎದುರಾಗಿದೆ. invalid_file_error=ಅಮಾನ್ಯವಾದ ಅಥವ ಹಾಳಾದ PDF ಕಡತ. missing_file_error=PDF ಕಡತ ಇಲ್ಲ. @@ -191,3 +184,4 @@ password_cancel=ರದ್ದು ಮಾಡು printing_not_supported=ಎಚ್ಚರಿಕೆ: ಈ ಜಾಲವೀಕ್ಷಕದಲ್ಲಿ ಮುದ್ರಣಕ್ಕೆ ಸಂಪೂರ್ಣ ಬೆಂಬಲವಿಲ್ಲ. printing_not_ready=ಎಚ್ಚರಿಕೆ: PDF ಕಡತವು ಮುದ್ರಿಸಲು ಸಂಪೂರ್ಣವಾಗಿ ಲೋಡ್ ಆಗಿಲ್ಲ. web_fonts_disabled=ಜಾಲ ಅಕ್ಷರಶೈಲಿಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ: ಅಡಕಗೊಳಿಸಿದ PDF ಅಕ್ಷರಶೈಲಿಗಳನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ. + diff --git a/media/js/pdf/web/locale/ko/viewer.properties b/media/js/pdf/web/locale/ko/viewer.properties index 33172673a6..18a7ed2de9 100644 --- a/media/js/pdf/web/locale/ko/viewer.properties +++ b/media/js/pdf/web/locale/ko/viewer.properties @@ -41,23 +41,27 @@ print.title=인쇄 print_label=인쇄 download.title=다운로드 download_label=다운로드 -bookmark.title=현재 보기 (복사 또는 새 창에 열기) +bookmark.title=현재 보기 (복사 또는 새 창에서 열기) bookmark_label=현재 보기 +save.title=저장 +save_label=저장 +bookmark1.title=현재 페이지 (현재 페이지에서 URL 보기) +bookmark1_label=현재 페이지 + +open_in_app.title=앱에서 열기 +open_in_app_label=앱에서 열기 + # Secondary toolbar and context menu tools.title=도구 tools_label=도구 first_page.title=첫 페이지로 이동 -first_page.label=첫 페이지로 이동 first_page_label=첫 페이지로 이동 last_page.title=마지막 페이지로 이동 -last_page.label=마지막 페이지로 이동 last_page_label=마지막 페이지로 이동 page_rotate_cw.title=시계방향으로 회전 -page_rotate_cw.label=시계방향으로 회전 page_rotate_cw_label=시계방향으로 회전 page_rotate_ccw.title=시계 반대방향으로 회전 -page_rotate_ccw.label=시계 반대방향으로 회전 page_rotate_ccw_label=시계 반대방향으로 회전 cursor_text_select_tool.title=텍스트 선택 도구 활성화 @@ -65,6 +69,8 @@ cursor_text_select_tool_label=텍스트 선택 도구 cursor_hand_tool.title=손 도구 활성화 cursor_hand_tool_label=손 도구 +scroll_page.title=페이지 스크롤 사용 +scroll_page_label=페이지 스크롤 scroll_vertical.title=세로 스크롤 사용 scroll_vertical_label=세로 스크롤 scroll_horizontal.title=가로 스크롤 사용 @@ -73,11 +79,11 @@ scroll_wrapped.title=래핑(자동 줄 바꿈) 스크롤 사용 scroll_wrapped_label=래핑 스크롤 spread_none.title=한 페이지 보기 -spread_none_label=펼쳐짐 없음 +spread_none_label=펼침 없음 spread_odd.title=홀수 페이지로 시작하는 두 페이지 보기 -spread_odd_label=홀수 펼쳐짐 +spread_odd_label=홀수 펼침 spread_even.title=짝수 페이지로 시작하는 두 페이지 보기 -spread_even_label=짝수 펼쳐짐 +spread_even_label=짝수 펼침 # Document properties dialog box document_properties.title=문서 속성… @@ -124,7 +130,7 @@ document_properties_page_size_dimension_name_string={{width}} × {{height}} {{un # the document; usually called "Fast Web View" in English locales of Adobe software. document_properties_linearized=빠른 웹 보기: document_properties_linearized_yes=예 -document_properties_linearized_no=아니오 +document_properties_linearized_no=아니요 document_properties_close=닫기 print_progress_message=인쇄 문서 준비 중… @@ -136,10 +142,9 @@ print_progress_close=취소 # Tooltips and alt text for side panel toolbar buttons # (the _label strings are alt text for the buttons, the .title strings are # tooltips) -toggle_sidebar.title=탐색창 표시/숨기기 -toggle_sidebar_notification.title=탐색창 표시/숨기기 (문서에 아웃라인/첨부파일 포함됨) -toggle_sidebar_notification2.title=탐색창 표시/숨기기 (문서에 아웃라인/첨부파일/레이어 포함됨) -toggle_sidebar_label=탐색창 표시/숨기기 +toggle_sidebar.title=사이드바 표시/숨기기 +toggle_sidebar_notification2.title=사이드바 표시/숨기기 (문서에 아웃라인/첨부파일/레이어 포함됨) +toggle_sidebar_label=사이드바 표시/숨기기 document_outline.title=문서 아웃라인 보기 (더블 클릭해서 모든 항목 펼치기/접기) document_outline_label=문서 아웃라인 attachments.title=첨부파일 보기 @@ -153,9 +158,6 @@ current_outline_item_label=현재 아웃라인 항목 findbar.title=검색 findbar_label=검색 -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas={{page}} 페이지 - additional_layers=추가 레이어 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark={{page}} 페이지 @@ -176,6 +178,7 @@ find_next.title=지정 문자열에 일치하는 다음 부분을 검색 find_next_label=다음 find_highlight=모두 강조 표시 find_match_case_label=대/소문자 구분 +find_match_diacritics_label=분음 부호 일치 find_entire_word_label=단어 단위로 find_reached_top=문서 처음까지 검색하고 끝으로 돌아와 검색했습니다. find_reached_bottom=문서 끝까지 검색하고 앞으로 돌아와 검색했습니다. @@ -203,7 +206,7 @@ find_match_count_limit[other]={{limit}} 이상 일치 find_not_found=검색 결과 없음 # Error panel labels -error_more_info=정보 더 보기 +error_more_info=자세한 정보 error_less_info=정보 간단히 보기 error_close=닫기 # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be @@ -219,7 +222,6 @@ error_stack=스택: {{stack}} error_file=파일: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=줄 번호: {{line}} -rendering_error=페이지를 렌더링하는 동안 오류가 발생했습니다. # Predefined zoom values page_scale_width=페이지 너비에 맞추기 @@ -231,14 +233,15 @@ page_scale_actual=실제 크기 page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=오류 +loading=로드 중… # Loading indicator messages -loading=로드 중… loading_error=PDF를 로드하는 동안 오류가 발생했습니다. invalid_file_error=잘못되었거나 손상된 PDF 파일. missing_file_error=PDF 파일 없음. -unexpected_response_error=예상치 못한 서버 응답입니다. +unexpected_response_error=예기치 않은 서버 응답입니다. + +rendering_error=페이지를 렌더링하는 동안 오류가 발생했습니다. # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. @@ -257,3 +260,23 @@ password_cancel=취소 printing_not_supported=경고: 이 브라우저는 인쇄를 완전히 지원하지 않습니다. printing_not_ready=경고: 이 PDF를 인쇄를 할 수 있을 정도로 읽어들이지 못했습니다. web_fonts_disabled=웹 폰트가 비활성화됨: 내장된 PDF 글꼴을 사용할 수 없습니다. + +# Editor +editor_free_text2.title=텍스트 +editor_free_text2_label=텍스트 +editor_ink2.title=그리기 +editor_ink2_label=그리기 + +free_text2_default_content=입력하세요… + +# Editor Parameters +editor_free_text_color=색상 +editor_free_text_size=크기 +editor_ink_color=색상 +editor_ink_thickness=두께 +editor_ink_opacity=불투명도 + +# Editor aria +editor_free_text2_aria_label=텍스트 편집기 +editor_ink2_aria_label=그리기 편집기 +editor_ink_canvas_aria_label=사용자 생성 이미지 diff --git a/media/js/pdf/web/locale/lij/viewer.properties b/media/js/pdf/web/locale/lij/viewer.properties index c1d8757a88..a7854d108d 100644 --- a/media/js/pdf/web/locale/lij/viewer.properties +++ b/media/js/pdf/web/locale/lij/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Vixon corente tools.title=Atressi tools_label=Atressi first_page.title=Vanni a-a primma pagina -first_page.label=Vanni a-a primma pagina first_page_label=Vanni a-a primma pagina last_page.title=Vanni a l'urtima pagina -last_page.label=Vanni a l'urtima pagina last_page_label=Vanni a l'urtima pagina page_rotate_cw.title=Gia into verso oraio -page_rotate_cw.label=Gia in senso do releuio page_rotate_cw_label=Gia into verso oraio page_rotate_ccw.title=Gia into verso antioraio -page_rotate_ccw.label=Gia in senso do releuio a-a reversa page_rotate_ccw_label=Gia into verso antioraio cursor_text_select_tool.title=Abilita strumento de seleçion do testo @@ -137,7 +133,6 @@ print_progress_close=Anulla # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Ativa/dizativa bara de scianco -toggle_sidebar_notification.title=Cangia bara de löo (o documento o contegne di alegæ) toggle_sidebar_label=Ativa/dizativa bara de scianco document_outline.title=Fanni vedde o contorno do documento (scicca doggio pe espande/ridue tutti i elementi) document_outline_label=Contorno do documento @@ -219,9 +214,6 @@ page_scale_actual=Dimenscioin efetive # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Erô - loading_error=S'é verificou 'n'erô itno caregamento do PDF. invalid_file_error=O schedaio PDF o l'é no valido ò aroinou. missing_file_error=O schedaio PDF o no gh'é. @@ -240,3 +232,4 @@ password_cancel=Anulla printing_not_supported=Atençion: a stanpa a no l'é conpletamente soportâ da sto navegatô. printing_not_ready=Atençion: o PDF o no l'é ancon caregou conpletamente pe-a stanpa. web_fonts_disabled=I font do web en dizativæ: inposcibile adeuviâ i carateri do PDF. + diff --git a/media/js/pdf/web/locale/lo/viewer.properties b/media/js/pdf/web/locale/lo/viewer.properties index d21a687fa5..a6adb94023 100644 --- a/media/js/pdf/web/locale/lo/viewer.properties +++ b/media/js/pdf/web/locale/lo/viewer.properties @@ -44,34 +44,72 @@ download_label=ດາວໂຫລດ bookmark.title=ມຸມມອງປະຈຸບັນ (ສຳເນົາ ຫລື ເປີດໃນວິນໂດໃຫມ່) bookmark_label=ມຸມມອງປະຈຸບັນ +save.title=ບັນທຶກ +save_label=ບັນທຶກ +bookmark1.title=ໜ້າປັດຈຸບັນ (ເບິ່ງ URL ຈາກໜ້າປັດຈຸບັນ) +bookmark1_label=ຫນ້າ​ປັດ​ຈຸ​ບັນ + +open_in_app.title=ເປີດໃນ App +open_in_app_label=ເປີດໃນ App + # Secondary toolbar and context menu tools.title=ເຄື່ອງມື tools_label=ເຄື່ອງມື first_page.title=ໄປທີ່ຫນ້າທຳອິດ -first_page.label=ໄປທີ່ຫນ້າທຳອິດ first_page_label=ໄປທີ່ຫນ້າທຳອິດ last_page.title=ໄປທີ່ຫນ້າສຸດທ້າຍ -last_page.label=ໄປທີ່ຫນ້າສຸດທ້າຍ last_page_label=ໄປທີ່ຫນ້າສຸດທ້າຍ page_rotate_cw.title=ຫມູນຕາມເຂັມໂມງ -page_rotate_cw.label=ຫມູນຕາມເຂັມໂມງ page_rotate_cw_label=ຫມູນຕາມເຂັມໂມງ page_rotate_ccw.title=ຫມູນທວນເຂັມໂມງ -page_rotate_ccw.label=ຫມູນທວນເຂັມໂມງ page_rotate_ccw_label=ຫມູນທວນເຂັມໂມງ +cursor_text_select_tool.title=ເປີດໃຊ້ເຄື່ອງມືການເລືອກຂໍ້ຄວາມ +cursor_text_select_tool_label=ເຄື່ອງມືເລືອກຂໍ້ຄວາມ +cursor_hand_tool.title=ເປີດໃຊ້ເຄື່ອງມືມື +cursor_hand_tool_label=ເຄື່ອງມືມື +scroll_page.title=ໃຊ້ການເລື່ອນໜ້າ +scroll_page_label=ເລື່ອນໜ້າ +scroll_vertical.title=ໃຊ້ການເລື່ອນແນວຕັ້ງ +scroll_vertical_label=ເລື່ອນແນວຕັ້ງ +scroll_horizontal.title=ໃຊ້ການເລື່ອນແນວນອນ +scroll_horizontal_label=ເລື່ອນແນວນອນ +scroll_wrapped.title=ໃຊ້ Wrapped Scrolling +scroll_wrapped_label=Wrapped Scrolling +spread_none.title=ບໍ່ຕ້ອງຮ່ວມການແຜ່ກະຈາຍຫນ້າ +spread_none_label=ບໍ່ມີການແຜ່ກະຈາຍ +spread_odd.title=ເຂົ້າຮ່ວມການແຜ່ກະຈາຍຫນ້າເລີ່ມຕົ້ນດ້ວຍຫນ້າເລກຄີກ +spread_odd_label=ການແຜ່ກະຈາຍຄີກ +spread_even.title=ເຂົ້າຮ່ວມການແຜ່ກະຈາຍຂອງຫນ້າເລີ່ມຕົ້ນດ້ວຍຫນ້າເລກຄູ່ +spread_even_label=ການແຜ່ກະຈາຍຄູ່ # Document properties dialog box +document_properties.title=ຄຸນສົມບັດເອກະສານ... +document_properties_label=ຄຸນສົມບັດເອກະສານ... document_properties_file_name=ຊື່ໄຟລ໌: document_properties_file_size=ຂະຫນາດໄຟລ໌: # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" # will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} ໄບຕ໌) # LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" # will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} ໄບຕ໌) +document_properties_title=ຫົວຂໍ້: +document_properties_author=ຜູ້ຂຽນ: +document_properties_subject=ຫົວຂໍ້: +document_properties_keywords=ຄໍາທີ່ຕ້ອງການຄົ້ນຫາ: +document_properties_creation_date=ວັນທີສ້າງ: +document_properties_modification_date=ວັນທີແກ້ໄຂ: # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" # will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=ຜູ້ສ້າງ: +document_properties_producer=ຜູ້ຜະລິດ PDF: +document_properties_version=ເວີຊັ່ນ PDF: +document_properties_page_count=ຈຳນວນໜ້າ: +document_properties_page_size=ຂະໜາດໜ້າ: document_properties_page_size_unit_inches=in document_properties_page_size_unit_millimeters=mm document_properties_page_size_orientation_portrait=ລວງຕັ້ງ @@ -83,42 +121,89 @@ document_properties_page_size_name_legal=ຂໍ້ກົດຫມາຍ # LOCALIZATION NOTE (document_properties_page_size_dimension_string): # "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by # the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) # LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): # "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by # the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) # LOCALIZATION NOTE (document_properties_linearized): The linearization status of # the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=ມຸມມອງເວັບທີ່ໄວ: +document_properties_linearized_yes=ແມ່ນ +document_properties_linearized_no=ບໍ່ document_properties_close=ປິດ +print_progress_message=ກຳລັງກະກຽມເອກະສານສຳລັບການພິມ... # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by # a numerical per cent value. +print_progress_percent={{progress}}% print_progress_close=ຍົກເລີກ # Tooltips and alt text for side panel toolbar buttons # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=ເປີດ/ປິດແຖບຂ້າງ -toggle_sidebar_notification.title=ເປີດ/ປິດແຖບຂ້າງ (ເອກະສານມີເຄົ້າຮ່າງ/ໄຟລ໌ແນບ) +toggle_sidebar_notification2.title=ສະຫຼັບແຖບດ້ານຂ້າງ (ເອກະສານປະກອບມີໂຄງຮ່າງ/ໄຟລ໌ແນບ/ຊັ້ນຂໍ້ມູນ) toggle_sidebar_label=ເປີດ/ປິດແຖບຂ້າງ +document_outline.title=ສະ​ແດງ​ໂຄງ​ຮ່າງ​ເອ​ກະ​ສານ (ກົດ​ສອງ​ຄັ້ງ​ເພື່ອ​ຂະ​ຫຍາຍ / ຫຍໍ້​ລາຍ​ການ​ທັງ​ຫມົດ​) document_outline_label=ເຄົ້າຮ່າງເອກະສານ +attachments.title=ສະແດງໄຟລ໌ແນບ +attachments_label=ໄຟລ໌ແນບ +layers.title=ສະແດງຊັ້ນຂໍ້ມູນ (ຄລິກສອງເທື່ອເພື່ອຣີເຊັດຊັ້ນຂໍ້ມູນທັງໝົດໃຫ້ເປັນສະຖານະເລີ່ມຕົ້ນ) +layers_label=ຊັ້ນ +thumbs.title=ສະແດງຮູບຫຍໍ້ +thumbs_label=ຮູບຕົວຢ່າງ +current_outline_item.title=ຊອກຫາລາຍການໂຄງຮ່າງປະຈຸບັນ +current_outline_item_label=ລາຍການໂຄງຮ່າງປະຈຸບັນ +findbar.title=ຊອກຫາໃນເອກະສານ findbar_label=ຄົ້ນຫາ +additional_layers=ຊັ້ນຂໍ້ມູນເພີ່ມເຕີມ +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=ໜ້າ {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. +thumb_page_title=ໜ້າ {{page}} # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page # number. +thumb_page_canvas=ຮູບຕົວຢ່າງຂອງໜ້າ {{page}} # Find panel button title and messages find_input.title=ຄົ້ນຫາ +find_input.placeholder=ຊອກຫາໃນເອກະສານ... +find_previous.title=ຊອກຫາການປະກົດຕົວທີ່ຜ່ານມາຂອງປະໂຫຍກ +find_previous_label=ກ່ອນຫນ້ານີ້ +find_next.title=ຊອກຫາຕຳແຫນ່ງຖັດໄປຂອງວະລີ +find_next_label=ຕໍ່ໄປ +find_highlight=ໄຮໄລທ໌ທັງຫມົດ +find_match_case_label=ກໍລະນີທີ່ກົງກັນ +find_match_diacritics_label=ເຄື່ອງໝາຍກຳກັບການອອກສຽງກົງກັນ +find_entire_word_label=ກົງກັນທຸກຄຳ +find_reached_top=ມາຮອດເທິງຂອງເອກະສານ, ສືບຕໍ່ຈາກລຸ່ມ +find_reached_bottom=ຮອດຕອນທ້າຍຂອງເອກະສານ, ສືບຕໍ່ຈາກເທິງ # LOCALIZATION NOTE (find_match_count): The supported plural forms are # [one|two|few|many|other], with [other] as the default value. # "{{current}}" and "{{total}}" will be replaced by a number representing the # index of the currently active find result, respectively a number representing # the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} ຂອງ {{total}} ກົງກັນ +find_match_count[two]={{current}} ຂອງ {{total}} ກົງກັນ +find_match_count[few]={{current}} ຂອງ {{total}} ກົງກັນ +find_match_count[many]={{current}} ຂອງ {{total}} ກົງກັນ +find_match_count[other]={{current}} ຂອງ {{total}} ກົງກັນ # LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are # [zero|one|two|few|many|other], with [other] as the default value. # "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=ຫຼາຍກວ່າ {{limit}} ກົງກັນ +find_match_count_limit[one]=ກົງກັນຫຼາຍກວ່າ {{limit}} +find_match_count_limit[two]=ຫຼາຍກວ່າ {{limit}} ກົງກັນ +find_match_count_limit[few]=ຫຼາຍກວ່າ {{limit}} ກົງກັນ +find_match_count_limit[many]=ຫຼາຍກວ່າ {{limit}} ກົງກັນ +find_match_count_limit[other]=ຫຼາຍກວ່າ {{limit}} ກົງກັນ +find_not_found=ບໍ່ພົບວະລີທີ່ຕ້ອງການ # Error panel labels error_more_info=ຂໍ້ມູນເພີ່ມເຕີມ @@ -126,28 +211,72 @@ error_less_info=ຂໍ້ມູນນ້ອຍລົງ error_close=ປິດ # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be # replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (ສ້າງ: {{build}}) # LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an # english string describing the error. +error_message=ຂໍ້ຄວາມ: {{ message}} # LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack # trace. +error_stack=Stack: {{stack}} # LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ໄຟລ໌: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -rendering_error=ມີຂໍ້ຜິດພາດເກີດຂື້ນຂະນະທີ່ກຳລັງເຣັນເດີຫນ້າ. +error_line=ແຖວ: {{line}} # Predefined zoom values +page_scale_width=ຄວາມກວ້າງໜ້າ +page_scale_fit=ໜ້າພໍດີ +page_scale_auto=ຊູມອັດຕະໂນມັດ +page_scale_actual=ຂະໜາດຕົວຈິງ # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. +page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=ຂໍ້ຜິດພາດ +loading=ກຳລັງໂຫລດ… +# Loading indicator messages loading_error=ມີຂໍ້ຜິດພາດເກີດຂື້ນຂະນະທີ່ກຳລັງໂຫລດ PDF. invalid_file_error=ໄຟລ໌ PDF ບໍ່ຖືກຕ້ອງຫລືເສຍຫາຍ. +missing_file_error=ບໍ່ມີໄຟລ໌ PDF. +unexpected_response_error=ການຕອບສະໜອງຂອງເຊີບເວີທີ່ບໍ່ຄາດຄິດ. + +rendering_error=ມີຂໍ້ຜິດພາດເກີດຂື້ນຂະນະທີ່ກຳລັງເຣັນເດີຫນ້າ. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). # Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} ຄຳບັນຍາຍ] +password_label=ໃສ່ລະຫັດຜ່ານເພື່ອເປີດໄຟລ໌ PDF ນີ້. +password_invalid=ລະຫັດຜ່ານບໍ່ຖືກຕ້ອງ. ກະລຸນາລອງອີກຄັ້ງ. password_ok=ຕົກລົງ password_cancel=ຍົກເລີກ +printing_not_supported=ຄຳເຕືອນ: ບຼາວເຊີນີ້ບໍ່ຮອງຮັບການພິມຢ່າງເຕັມທີ່. +printing_not_ready=ຄໍາ​ເຕືອນ​: PDF ບໍ່​ໄດ້​ຖືກ​ໂຫຼດ​ຢ່າງ​ເຕັມ​ທີ່​ສໍາ​ລັບ​ການ​ພິມ​. +web_fonts_disabled=ຟອນເວັບຖືກປິດໃຊ້ງານ: ບໍ່ສາມາດໃຊ້ຟອນ PDF ທີ່ຝັງໄວ້ໄດ້. + +# Editor +editor_free_text2.title=ຂໍ້ຄວາມ +editor_free_text2_label=ຂໍ້ຄວາມ +editor_ink2.title=ແຕ້ມ +editor_ink2_label=ແຕ້ມ + +free_text2_default_content=ເລີ່ມພິມ... + +# Editor Parameters +editor_free_text_color=ສີ +editor_free_text_size=ຂະຫນາດ +editor_ink_color=ສີ +editor_ink_thickness=ຄວາມຫນາ +editor_ink_opacity=ຄວາມໂປ່ງໃສ + +# Editor aria +editor_free_text2_aria_label=ຕົວແກ້ໄຂຂໍ້ຄວາມ +editor_ink2_aria_label=ຕົວແກ້ໄຂຮູບແຕ້ມ +editor_ink_canvas_aria_label=ຮູບພາບທີ່ຜູ້ໃຊ້ສ້າງ diff --git a/media/js/pdf/web/locale/locale.properties b/media/js/pdf/web/locale/locale.properties index 6be6adfb25..3868015721 100644 --- a/media/js/pdf/web/locale/locale.properties +++ b/media/js/pdf/web/locale/locale.properties @@ -106,6 +106,9 @@ [fr] @import url(fr/viewer.properties) +[fur] +@import url(fur/viewer.properties) + [fy-NL] @import url(fy-NL/viewer.properties) @@ -244,6 +247,12 @@ [ru] @import url(ru/viewer.properties) +[sat] +@import url(sat/viewer.properties) + +[sc] +@import url(sc/viewer.properties) + [scn] @import url(scn/viewer.properties) @@ -256,6 +265,9 @@ [sk] @import url(sk/viewer.properties) +[skr] +@import url(skr/viewer.properties) + [sl] @import url(sl/viewer.properties) diff --git a/media/js/pdf/web/locale/lt/viewer.properties b/media/js/pdf/web/locale/lt/viewer.properties index 78158fd3a4..2c4fb8a305 100644 --- a/media/js/pdf/web/locale/lt/viewer.properties +++ b/media/js/pdf/web/locale/lt/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Esamasis rodinys tools.title=Priemonės tools_label=Priemonės first_page.title=Eiti į pirmą puslapį -first_page.label=Eiti į pirmą puslapį first_page_label=Eiti į pirmą puslapį last_page.title=Eiti į paskutinį puslapį -last_page.label=Eiti į paskutinį puslapį last_page_label=Eiti į paskutinį puslapį page_rotate_cw.title=Pasukti pagal laikrodžio rodyklę -page_rotate_cw.label=Pasukti pagal laikrodžio rodyklę page_rotate_cw_label=Pasukti pagal laikrodžio rodyklę page_rotate_ccw.title=Pasukti prieš laikrodžio rodyklę -page_rotate_ccw.label=Pasukti prieš laikrodžio rodyklę page_rotate_ccw_label=Pasukti prieš laikrodžio rodyklę cursor_text_select_tool.title=Įjungti teksto žymėjimo įrankį @@ -65,6 +61,8 @@ cursor_text_select_tool_label=Teksto žymėjimo įrankis cursor_hand_tool.title=Įjungti vilkimo įrankį cursor_hand_tool_label=Vilkimo įrankis +scroll_page.title=Naudoti puslapio slinkimą +scroll_page_label=Puslapio slinkimas scroll_vertical.title=Naudoti vertikalų slinkimą scroll_vertical_label=Vertikalus slinkimas scroll_horizontal.title=Naudoti horizontalų slinkimą @@ -137,7 +135,6 @@ print_progress_close=Atsisakyti # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Rodyti / slėpti šoninį polangį -toggle_sidebar_notification.title=Parankinė (dokumentas turi struktūrą / priedų) toggle_sidebar_notification2.title=Parankinė (dokumentas turi struktūrą / priedų / sluoksnių) toggle_sidebar_label=Šoninis polangis document_outline.title=Rodyti dokumento struktūrą (spustelėkite dukart norėdami išplėsti/suskleisti visus elementus) @@ -153,9 +150,6 @@ current_outline_item_label=Dabartinis struktūros elementas findbar.title=Ieškoti dokumente findbar_label=Rasti -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas={{page}} puslapis - additional_layers=Papildomi sluoksniai # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark={{page}} puslapis @@ -176,6 +170,7 @@ find_next.title=Ieškoti tolesnio frazės egzemplioriaus find_next_label=Tolesnis find_highlight=Viską paryškinti find_match_case_label=Skirti didžiąsias ir mažąsias raides +find_match_diacritics_label=Skirti diakritinius ženklus find_entire_word_label=Ištisi žodžiai find_reached_top=Pasiekus dokumento pradžią, paieška pratęsta nuo pabaigos find_reached_bottom=Pasiekus dokumento pabaigą, paieška pratęsta nuo pradžios @@ -230,9 +225,6 @@ page_scale_actual=Tikras dydis # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Klaida - # Loading indicator messages loading=Įkeliama… loading_error=Įkeliant PDF failą įvyko klaida. @@ -257,3 +249,12 @@ password_cancel=Atsisakyti printing_not_supported=Dėmesio! Spausdinimas šioje naršyklėje nėra pilnai realizuotas. printing_not_ready=Dėmesio! PDF failas dar nėra pilnai įkeltas spausdinimui. web_fonts_disabled=Saityno šriftai išjungti – PDF faile esančių šriftų naudoti negalima. + +# Editor +editor_none.title=Išjungti komentarų redagavimą +editor_none_label=Išjungti redagavimą +editor_free_text.title=Pridėti „FreeText“ komentarą +editor_free_text_label=„FreeText“ komentaras +editor_ink.title=Pridėti laisvo stiliaus komentarą +editor_ink_label=Laisvo stiliaus komentaras + diff --git a/media/js/pdf/web/locale/ltg/viewer.properties b/media/js/pdf/web/locale/ltg/viewer.properties index 277aab56cc..b117a0e677 100644 --- a/media/js/pdf/web/locale/ltg/viewer.properties +++ b/media/js/pdf/web/locale/ltg/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Pošreizejais skots tools.title=Reiki tools_label=Reiki first_page.title=Īt iz pyrmū lopu -first_page.label=Īt iz pyrmū lopu first_page_label=Īt iz pyrmū lopu last_page.title=Īt iz piedejū lopu -last_page.label=Īt iz piedejū lopu last_page_label=Īt iz piedejū lopu page_rotate_cw.title=Pagrīzt pa pulksteni -page_rotate_cw.label=Pagrīzt pa pulksteni page_rotate_cw_label=Pagrīzt pa pulksteni page_rotate_ccw.title=Pagrīzt pret pulksteni -page_rotate_ccw.label=Pagrīzt pret pulksteni page_rotate_ccw_label=Pagrīzt pret pulksteni cursor_text_select_tool.title=Aktivizēt teksta izvieles reiku @@ -137,7 +133,6 @@ print_progress_close=Atceļt # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Puorslēgt suonu jūslu -toggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments) toggle_sidebar_label=Puorslēgt suonu jūslu document_outline.title=Show Document Outline (double-click to expand/collapse all items) document_outline_label=Dokumenta saturs @@ -197,9 +192,6 @@ page_scale_actual=Patīsais izmārs # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Klaida - loading_error=Īluodejūt PDF nūtyka klaida. invalid_file_error=Nadereigs voi būjuots PDF fails. missing_file_error=PDF fails nav atrosts. @@ -218,3 +210,4 @@ password_cancel=Atceļt printing_not_supported=Uzmaneibu: Drukuošona nu itei puorlūka dorbojās tikai daleji. printing_not_ready=Uzmaneibu: PDF nav pilneibā īluodeits drukuošonai. web_fonts_disabled=Šķārsteikla fonti nav aktivizāti: Navar īgult PDF fontus. + diff --git a/media/js/pdf/web/locale/lv/viewer.properties b/media/js/pdf/web/locale/lv/viewer.properties index d6f89984da..851728f252 100644 --- a/media/js/pdf/web/locale/lv/viewer.properties +++ b/media/js/pdf/web/locale/lv/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Pašreizējais skats tools.title=Rīki tools_label=Rīki first_page.title=Iet uz pirmo lapu -first_page.label=Iet uz pirmo lapu first_page_label=Iet uz pirmo lapu last_page.title=Iet uz pēdējo lapu -last_page.label=Iet uz pēdējo lapu last_page_label=Iet uz pēdējo lapu page_rotate_cw.title=Pagriezt pa pulksteni -page_rotate_cw.label=Pagriezt pa pulksteni page_rotate_cw_label=Pagriezt pa pulksteni page_rotate_ccw.title=Pagriezt pret pulksteni -page_rotate_ccw.label=Pagriezt pret pulksteni page_rotate_ccw_label=Pagriezt pret pulksteni cursor_text_select_tool.title=Aktivizēt teksta izvēles rīku @@ -137,7 +133,6 @@ print_progress_close=Atcelt # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Pārslēgt sānu joslu -toggle_sidebar_notification.title=Pārslēgt sānu joslu (dokumenta saturu un pielikumus) toggle_sidebar_label=Pārslēgt sānu joslu document_outline.title=Rādīt dokumenta struktūru (veiciet dubultklikšķi lai izvērstu/sakļautu visus vienumus) document_outline_label=Dokumenta saturs @@ -219,9 +214,6 @@ page_scale_actual=Patiesais izmērs # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Kļūda - loading_error=Ielādējot PDF notika kļūda. invalid_file_error=Nederīgs vai bojāts PDF fails. missing_file_error=PDF fails nav atrasts. @@ -240,3 +232,4 @@ password_cancel=Atcelt printing_not_supported=Uzmanību: Drukāšana no šī pārlūka darbojas tikai daļēji. printing_not_ready=Uzmanību: PDF nav pilnībā ielādēts drukāšanai. web_fonts_disabled=Tīmekļa fonti nav aktivizēti: Nevar iegult PDF fontus. + diff --git a/media/js/pdf/web/locale/mk/viewer.properties b/media/js/pdf/web/locale/mk/viewer.properties index b6bb2f11b2..6d594007b5 100644 --- a/media/js/pdf/web/locale/mk/viewer.properties +++ b/media/js/pdf/web/locale/mk/viewer.properties @@ -43,10 +43,6 @@ bookmark_label=Овој преглед # Secondary toolbar and context menu tools.title=Алатки -first_page.label=Оди до првата страница -last_page.label=Оди до последната страница -page_rotate_cw.label=Ротирај по стрелките на часовникот -page_rotate_ccw.label=Ротирај спротивно од стрелките на часовникот @@ -127,9 +123,6 @@ page_scale_actual=Вистинска големина # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. -# Loading indicator messages -loading_error_indicator=Грешка - loading_error=Настана грешка при вчитувањето на PDF-от. invalid_file_error=Невалидна или корумпирана PDF датотека. missing_file_error=Недостасува PDF документ. @@ -143,3 +136,4 @@ password_cancel=Откажи printing_not_supported=Предупредување: Печатењето не е целосно поддржано во овој прелистувач. printing_not_ready=Предупредување: PDF документот не е целосно вчитан за печатење. web_fonts_disabled=Интернет фонтовите се оневозможени: не може да се користат вградените PDF фонтови. + diff --git a/media/js/pdf/web/locale/mr/viewer.properties b/media/js/pdf/web/locale/mr/viewer.properties index 0b2bd93bc6..40080f9ddb 100644 --- a/media/js/pdf/web/locale/mr/viewer.properties +++ b/media/js/pdf/web/locale/mr/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=सध्याचे अवलोकन tools.title=साधने tools_label=साधने first_page.title=पहिल्या पृष्ठावर जा -first_page.label=पहिल्या पृष्ठावर जा first_page_label=पहिल्या पृष्ठावर जा last_page.title=शेवटच्या पृष्ठावर जा -last_page.label=शेवटच्या पृष्ठावर जा last_page_label=शेवटच्या पृष्ठावर जा page_rotate_cw.title=घड्याळाच्या काट्याच्या दिशेने फिरवा -page_rotate_cw.label=घड्याळाच्या काट्याच्या दिशेने फिरवा page_rotate_cw_label=घड्याळाच्या काट्याच्या दिशेने फिरवा page_rotate_ccw.title=घड्याळाच्या काट्याच्या उलट दिशेने फिरवा -page_rotate_ccw.label=घड्याळाच्या काट्याच्या उलट दिशेने फिरवा page_rotate_ccw_label=घड्याळाच्या काट्याच्या उलट दिशेने फिरवा cursor_text_select_tool.title=मजकूर निवड साधन कार्यान्वयीत करा @@ -129,7 +125,6 @@ print_progress_close=रद्द करा # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=बाजूचीपट्टी टॉगल करा -toggle_sidebar_notification.title=बाजूची पट्टी टॉगल करा (दस्तऐवजामध्ये रुपरेषा/जोडण्या आहेत) toggle_sidebar_label=बाजूचीपट्टी टॉगल करा document_outline.title=दस्तऐवज बाह्यरेखा दर्शवा (विस्तृत करण्यासाठी दोनवेळा क्लिक करा /सर्व घटक दाखवा) document_outline_label=दस्तऐवज रूपरेषा @@ -211,9 +206,6 @@ page_scale_actual=प्रत्यक्ष आकार # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=त्रुटी - loading_error=PDF लोड करतेवेळी त्रुटी आढळली. invalid_file_error=अवैध किंवा दोषीत PDF फाइल. missing_file_error=न आढळणारी PDF फाइल. @@ -236,3 +228,4 @@ password_cancel=रद्द करा printing_not_supported=सावधानता: या ब्राउझरतर्फे छपाइ पूर्णपणे समर्थीत नाही. printing_not_ready=सावधानता: छपाईकरिता PDF पूर्णतया लोड झाले नाही. web_fonts_disabled=वेब टंक असमर्थीत आहेत: एम्बेडेड PDF टंक वापर अशक्य. + diff --git a/media/js/pdf/web/locale/ms/viewer.properties b/media/js/pdf/web/locale/ms/viewer.properties index 6ca482bebf..21542e2d3f 100644 --- a/media/js/pdf/web/locale/ms/viewer.properties +++ b/media/js/pdf/web/locale/ms/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Paparan Semasa tools.title=Alatan tools_label=Alatan first_page.title=Pergi ke Halaman Pertama -first_page.label=Pergi ke Halaman Pertama first_page_label=Pergi ke Halaman Pertama last_page.title=Pergi ke Halaman Terakhir -last_page.label=Pergi ke Halaman Terakhir last_page_label=Pergi ke Halaman Terakhir page_rotate_cw.title=Berputar ikut arah Jam -page_rotate_cw.label=Berputar ikut arah Jam page_rotate_cw_label=Berputar ikut arah Jam page_rotate_ccw.title=Pusing berlawan arah jam -page_rotate_ccw.label=Pusing berlawan arah jam page_rotate_ccw_label=Pusing berlawan arah jam cursor_text_select_tool.title=Dayakan Alatan Pilihan Teks @@ -137,7 +133,6 @@ print_progress_close=Batal # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Togol Bar Sisi -toggle_sidebar_notification.title=Togol Sidebar (dokumen mengandungi rangka/attachments) toggle_sidebar_label=Togol Bar Sisi document_outline.title=Papar Rangka Dokumen (klik-dua-kali untuk kembangkan/kolaps semua item) document_outline_label=Rangka Dokumen @@ -219,9 +214,6 @@ page_scale_actual=Saiz Sebenar # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Ralat - loading_error=Masalah berlaku semasa menuatkan sebuah PDF. invalid_file_error=Tidak sah atau fail PDF rosak. missing_file_error=Fail PDF Hilang. @@ -240,3 +232,4 @@ password_cancel=Batal printing_not_supported=Amaran: Cetakan ini tidak sepenuhnya disokong oleh pelayar ini. printing_not_ready=Amaran: PDF tidak sepenuhnya dimuatkan untuk dicetak. web_fonts_disabled=Fon web dinyahdayakan: tidak dapat menggunakan fon terbenam PDF. + diff --git a/media/js/pdf/web/locale/my/viewer.properties b/media/js/pdf/web/locale/my/viewer.properties index 7fc26092f1..0c97432777 100644 --- a/media/js/pdf/web/locale/my/viewer.properties +++ b/media/js/pdf/web/locale/my/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=လက်ရှိ မြင်ကွင်း tools.title=ကိရိယာများ tools_label=ကိရိယာများ first_page.title=ပထမ စာမျက်နှာသို့ -first_page.label=ပထမ စာမျက်နှာသို့ first_page_label=ပထမ စာမျက်နှာသို့ last_page.title=နောက်ဆုံး စာမျက်နှာသို့ -last_page.label=နောက်ဆုံး စာမျက်နှာသို့ last_page_label=နောက်ဆုံး စာမျက်နှာသို့ page_rotate_cw.title=နာရီလက်တံ အတိုင်း -page_rotate_cw.label=နာရီလက်တံ အတိုင်း page_rotate_cw_label=နာရီလက်တံ အတိုင်း page_rotate_ccw.title=နာရီလက်တံ ပြောင်းပြန် -page_rotate_ccw.label=နာရီလက်တံ ပြောင်းပြန် page_rotate_ccw_label=နာရီလက်တံ ပြောင်းပြန် @@ -107,7 +103,6 @@ print_progress_close=ပယ်​ဖျက်ပါ # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=ဘေးတန်းဖွင့်ပိတ် -toggle_sidebar_notification.title=ဘေးဘားတန်းကို အဖွင့်/အပိတ် လုပ်ရန် (စာတမ်းတွင် outline/attachments ပါဝင်နိုင်သည်) toggle_sidebar_label=ဖွင့်ပိတ် ဆလိုက်ဒါ document_outline.title=စာတမ်းအကျဉ်းချုပ်ကို ပြပါ (စာရင်းအားလုံးကို ချုံ့/ချဲ့ရန် ကလစ်နှစ်ချက်နှိပ်ပါ) document_outline_label=စာတမ်းအကျဉ်းချုပ် @@ -175,9 +170,6 @@ page_scale_actual=အမှန်တကယ်ရှိတဲ့ အရွယ် # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=အမှား - loading_error=PDF ဖိုင် ကိုဆွဲတင်နေချိန်မှာ အမှားတစ်ခုတွေ့ရပါတယ်။ invalid_file_error=မရသော သို့ ပျက်နေသော PDF ဖိုင် missing_file_error=PDF ပျောက်ဆုံး @@ -196,3 +188,4 @@ password_cancel=ပယ်​ဖျက်ပါ printing_not_supported=သတိပေးချက်၊ပရင့်ထုတ်ခြင်းကိုဤဘယောက်ဆာသည် ပြည့်ဝစွာထောက်ပံ့မထားပါ ။ printing_not_ready=သတိပေးချက်: ယခု PDF ဖိုင်သည် ပုံနှိပ်ရန် မပြည့်စုံပါ web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. + diff --git a/media/js/pdf/web/locale/nb-NO/viewer.properties b/media/js/pdf/web/locale/nb-NO/viewer.properties index 3555c04b6c..27394cd2cc 100644 --- a/media/js/pdf/web/locale/nb-NO/viewer.properties +++ b/media/js/pdf/web/locale/nb-NO/viewer.properties @@ -44,20 +44,26 @@ download_label=Last ned bookmark.title=Nåværende visning (kopier eller åpne i et nytt vindu) bookmark_label=Nåværende visning +save.title=Lagre +save_label=Lagre +bookmark1.title=Gjeldende side (se URL fra gjeldende side) +bookmark1_label=Gjeldende side + +# LOCALIZATION NOTE (open_in_app.title): This string is used in Firefox for Android. +open_in_app.title=Åpne i app +# LOCALIZATION NOTE (open_in_app_label): This string is used in Firefox for Android. Length of the translation matters since we are in a mobile context, with limited screen estate. +open_in_app_label=Åpne i app + # Secondary toolbar and context menu tools.title=Verktøy tools_label=Verktøy first_page.title=Gå til første side -first_page.label=Gå til første side first_page_label=Gå til første side last_page.title=Gå til siste side -last_page.label=Gå til siste side last_page_label=Gå til siste side page_rotate_cw.title=Roter med klokken -page_rotate_cw.label=Roter med klokken page_rotate_cw_label=Roter med klokken page_rotate_ccw.title=Roter mot klokken -page_rotate_ccw.label=Roter mot klokken page_rotate_ccw_label=Roter mot klokken cursor_text_select_tool.title=Aktiver tekstmarkeringsverktøy @@ -65,6 +71,8 @@ cursor_text_select_tool_label=Tekstmarkeringsverktøy cursor_hand_tool.title=Aktiver handverktøy cursor_hand_tool_label=Handverktøy +scroll_page.title=Bruk siderulling +scroll_page_label=Siderulling scroll_vertical.title=Bruk vertikal rulling scroll_vertical_label=Vertikal rulling scroll_horizontal.title=Bruk horisontal rulling @@ -137,7 +145,6 @@ print_progress_close=Avbryt # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Slå av/på sidestolpe -toggle_sidebar_notification.title=Vis/gjem sidestolpe (dokumentet inneholder oversikt/vedlegg) toggle_sidebar_notification2.title=Vis/gjem sidestolpe (dokumentet inneholder oversikt/vedlegg/lag) toggle_sidebar_label=Slå av/på sidestolpe document_outline.title=Vis dokumentdisposisjonen (dobbeltklikk for å utvide/skjule alle elementer) @@ -153,9 +160,6 @@ current_outline_item_label=Gjeldende disposisjonselement findbar.title=Finn i dokumentet findbar_label=Finn -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Side {{page}} - additional_layers=Ytterligere lag # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Side {{page}} @@ -176,6 +180,7 @@ find_next.title=Finn neste forekomst av frasen find_next_label=Neste find_highlight=Uthev alle find_match_case_label=Skill store/små bokstaver +find_match_diacritics_label=Samsvar diakritiske tegn find_entire_word_label=Hele ord find_reached_top=Nådde toppen av dokumentet, fortsetter fra bunnen find_reached_bottom=Nådde bunnen av dokumentet, fortsetter fra toppen @@ -219,7 +224,6 @@ error_stack=Stakk: {{stack}} error_file=Fil: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Linje: {{line}} -rendering_error=En feil oppstod ved opptegning av siden. # Predefined zoom values page_scale_width=Sidebredde @@ -231,15 +235,16 @@ page_scale_actual=Virkelig størrelse page_scale_percent={{scale}} % # Loading indicator messages -loading_error_indicator=Feil +loading=Laster… # Loading indicator messages -loading=Laster… loading_error=En feil oppstod ved lasting av PDF. invalid_file_error=Ugyldig eller skadet PDF-fil. missing_file_error=Manglende PDF-fil. unexpected_response_error=Uventet serverrespons. +rendering_error=En feil oppstod ved opptegning av siden. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +262,23 @@ password_cancel=Avbryt printing_not_supported=Advarsel: Utskrift er ikke fullstendig støttet av denne nettleseren. printing_not_ready=Advarsel: PDF er ikke fullstendig innlastet for utskrift. web_fonts_disabled=Web-fonter er avslått: Kan ikke bruke innbundne PDF-fonter. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Tegn +editor_ink2_label=Tegn + +free_text2_default_content=Begynn å skrive… + +# Editor Parameters +editor_free_text_color=Farge +editor_free_text_size=Størrelse +editor_ink_color=Farge +editor_ink_thickness=Tykkelse +editor_ink_opacity=Ugjennomsiktighet + +# Editor aria +editor_free_text2_aria_label=Tekstredigering +editor_ink2_aria_label=Tegneredigering +editor_ink_canvas_aria_label=Brukerskapt bilde diff --git a/media/js/pdf/web/locale/ne-NP/viewer.properties b/media/js/pdf/web/locale/ne-NP/viewer.properties index 4232c56a62..cb7e4244f8 100644 --- a/media/js/pdf/web/locale/ne-NP/viewer.properties +++ b/media/js/pdf/web/locale/ne-NP/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=हालको दृश्य tools.title=औजारहरू tools_label=औजारहरू first_page.title=पहिलो पृष्ठमा जानुहोस् -first_page.label=पहिलो पृष्ठमा जानुहोस् first_page_label=पहिलो पृष्ठमा जानुहोस् last_page.title=पछिल्लो पृष्ठमा जानुहोस् -last_page.label=पछिल्लो पृष्ठमा जानुहोस् last_page_label=पछिल्लो पृष्ठमा जानुहोस् page_rotate_cw.title=घडीको दिशामा घुमाउनुहोस् -page_rotate_cw.label=घडीको दिशामा घुमाउनुहोस् page_rotate_cw_label=घडीको दिशामा घुमाउनुहोस् page_rotate_ccw.title=घडीको विपरित दिशामा घुमाउनुहोस् -page_rotate_ccw.label=घडीको विपरित दिशामा घुमाउनुहोस् page_rotate_ccw_label=घडीको विपरित दिशामा घुमाउनुहोस् cursor_text_select_tool.title=पाठ चयन उपकरण सक्षम गर्नुहोस् @@ -65,6 +61,16 @@ cursor_text_select_tool_label=पाठ चयन उपकरण cursor_hand_tool.title=हाते उपकरण सक्षम गर्नुहोस् cursor_hand_tool_label=हाते उपकरण +scroll_vertical.title=ठाडो स्क्रोलिङ्ग प्रयोग गर्नुहोस् +scroll_vertical_label=ठाडो स्क्र्रोलिङ्ग +scroll_horizontal.title=तेर्सो स्क्रोलिङ्ग प्रयोग गर्नुहोस् +scroll_horizontal_label=तेर्सो स्क्रोलिङ्ग +scroll_wrapped.title=लिपि स्क्रोलिङ्ग प्रयोग गर्नुहोस् +scroll_wrapped_label=लिपि स्क्रोलिङ्ग + +spread_none.title=पृष्ठ स्प्रेडमा सामेल हुनुहुन्न +spread_none_label=स्प्रेड छैन + # Document properties dialog box document_properties.title=कागजात विशेषताहरू... document_properties_label=कागजात विशेषताहरू... @@ -89,6 +95,23 @@ document_properties_creator=सर्जक: document_properties_producer=PDF निर्माता: document_properties_version=PDF संस्करण document_properties_page_count=पृष्ठ गणना: +document_properties_page_size=पृष्ठ आकार: +document_properties_page_size_unit_inches=इन्च +document_properties_page_size_unit_millimeters=मि.मि. +document_properties_page_size_orientation_portrait=पोट्रेट +document_properties_page_size_orientation_landscape=परिदृश्य +document_properties_page_size_name_letter=अक्षर +document_properties_page_size_name_legal=कानूनी +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized_yes=हो +document_properties_linearized_no=होइन document_properties_close=बन्द गर्नुहोस् print_progress_message=मुद्रणका लागि कागजात तयारी गरिदै… @@ -101,7 +124,6 @@ print_progress_close=रद्द गर्नुहोस् # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=टगल साइडबार -toggle_sidebar_notification.title=साइडबार टगल गर्नुहोस् (कागजातमा समावेश भएको कुराहरू रूपरेखा/attachments) toggle_sidebar_label=टगल साइडबार document_outline.title=कागजातको रूपरेखा देखाउनुहोस् (सबै वस्तुहरू विस्तार/पतन गर्न डबल-क्लिक गर्नुहोस्) document_outline_label=दस्तावेजको रूपरेखा @@ -112,6 +134,7 @@ thumbs_label=थम्बनेलहरू findbar.title=कागजातमा फेला पार्नुहोस् findbar_label=फेला पार्नुहोस् +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -129,8 +152,17 @@ find_next.title=यस वाक्यांशको पछिल्लो घ find_next_label=अर्को find_highlight=सबै हाइलाइट गर्ने find_match_case_label=केस जोडा मिलाउनुहोस् +find_entire_word_label=पुरा शब्दहरु find_reached_top=पृष्ठको शिर्षमा पुगीयो, तलबाट जारी गरिएको थियो find_reached_bottom=पृष्ठको अन्त्यमा पुगीयो, शिर्षबाट जारी गरिएको थियो +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. find_not_found=वाक्यांश फेला परेन # Error panel labels @@ -162,13 +194,14 @@ page_scale_actual=वास्तविक आकार page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=त्रुटि - loading_error=यो PDF लोड गर्दा एउटा त्रुटि देखापर्‍यो। invalid_file_error=अवैध वा दुषित PDF फाइल। missing_file_error=हराईरहेको PDF फाइल। unexpected_response_error=अप्रत्याशित सर्भर प्रतिक्रिया। +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). @@ -182,3 +215,4 @@ password_cancel=रद्द गर्नुहोस् printing_not_supported=चेतावनी: यो ब्राउजरमा मुद्रण पूर्णतया समर्थित छैन। printing_not_ready=चेतावनी: PDF मुद्रणका लागि पूर्णतया लोड भएको छैन। web_fonts_disabled=वेब फन्ट असक्षम छन्: एम्बेडेड PDF फन्ट प्रयोग गर्न असमर्थ। + diff --git a/media/js/pdf/web/locale/nl/viewer.properties b/media/js/pdf/web/locale/nl/viewer.properties index fd19d6c81a..be7cd7f751 100644 --- a/media/js/pdf/web/locale/nl/viewer.properties +++ b/media/js/pdf/web/locale/nl/viewer.properties @@ -44,20 +44,24 @@ download_label=Downloaden bookmark.title=Huidige weergave (kopiëren of openen in nieuw venster) bookmark_label=Huidige weergave +save.title=Opslaan +save_label=Opslaan +bookmark1.title=Huidige pagina (URL van huidige pagina bekijken) +bookmark1_label=Huidige pagina + +open_in_app.title=Openen in app +open_in_app_label=Openen in app + # Secondary toolbar and context menu tools.title=Hulpmiddelen tools_label=Hulpmiddelen first_page.title=Naar eerste pagina gaan -first_page.label=Naar eerste pagina gaan first_page_label=Naar eerste pagina gaan last_page.title=Naar laatste pagina gaan -last_page.label=Naar laatste pagina gaan last_page_label=Naar laatste pagina gaan page_rotate_cw.title=Rechtsom draaien -page_rotate_cw.label=Rechtsom draaien page_rotate_cw_label=Rechtsom draaien page_rotate_ccw.title=Linksom draaien -page_rotate_ccw.label=Linksom draaien page_rotate_ccw_label=Linksom draaien cursor_text_select_tool.title=Tekstselectiehulpmiddel inschakelen @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Tekstselectiehulpmiddel cursor_hand_tool.title=Handhulpmiddel inschakelen cursor_hand_tool_label=Handhulpmiddel +scroll_page.title=Paginascrollen gebruiken +scroll_page_label=Paginascrollen scroll_vertical.title=Verticaal scrollen gebruiken scroll_vertical_label=Verticaal scrollen scroll_horizontal.title=Horizontaal scrollen gebruiken @@ -137,7 +143,6 @@ print_progress_close=Annuleren # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Zijbalk in-/uitschakelen -toggle_sidebar_notification.title=Zijbalk in-/uitschakelen (document bevat overzicht/bijlagen) toggle_sidebar_notification2.title=Zijbalk in-/uitschakelen (document bevat overzicht/bijlagen/lagen) toggle_sidebar_label=Zijbalk in-/uitschakelen document_outline.title=Documentoverzicht tonen (dubbelklik om alle items uit/samen te vouwen) @@ -153,9 +158,6 @@ current_outline_item_label=Huidig item in inhoudsopgave findbar.title=Zoeken in document findbar_label=Zoeken -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Pagina {{page}} - additional_layers=Aanvullende lagen # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Pagina {{page}} @@ -176,6 +178,7 @@ find_next.title=De volgende overeenkomst van de tekst zoeken find_next_label=Volgende find_highlight=Alles markeren find_match_case_label=Hoofdlettergevoelig +find_match_diacritics_label=Diakritische tekens gebruiken find_entire_word_label=Hele woorden find_reached_top=Bovenkant van document bereikt, doorgegaan vanaf onderkant find_reached_bottom=Onderkant van document bereikt, doorgegaan vanaf bovenkant @@ -219,7 +222,6 @@ error_stack=Stack: {{stack}} error_file=Bestand: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Regel: {{line}} -rendering_error=Er is een fout opgetreden bij het weergeven van de pagina. # Predefined zoom values page_scale_width=Paginabreedte @@ -231,15 +233,16 @@ page_scale_actual=Werkelijke grootte page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Fout +loading=Laden… # Loading indicator messages -loading=Laden… loading_error=Er is een fout opgetreden bij het laden van de PDF. invalid_file_error=Ongeldig of beschadigd PDF-bestand. missing_file_error=PDF-bestand ontbreekt. unexpected_response_error=Onverwacht serverantwoord. +rendering_error=Er is een fout opgetreden bij het weergeven van de pagina. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Annuleren printing_not_supported=Waarschuwing: afdrukken wordt niet volledig ondersteund door deze browser. printing_not_ready=Waarschuwing: de PDF is niet volledig geladen voor afdrukken. web_fonts_disabled=Weblettertypen zijn uitgeschakeld: gebruik van ingebedde PDF-lettertypen is niet mogelijk. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Tekenen +editor_ink2_label=Tekenen + +free_text2_default_content=Begin met typen… + +# Editor Parameters +editor_free_text_color=Kleur +editor_free_text_size=Grootte +editor_ink_color=Kleur +editor_ink_thickness=Dikte +editor_ink_opacity=Opaciteit + +# Editor aria +editor_free_text2_aria_label=Tekstbewerker +editor_ink2_aria_label=Tekeningbewerker +editor_ink_canvas_aria_label=Door gebruiker gemaakte afbeelding diff --git a/media/js/pdf/web/locale/nn-NO/viewer.properties b/media/js/pdf/web/locale/nn-NO/viewer.properties index 0e228c31c7..3ce6d6cdb7 100644 --- a/media/js/pdf/web/locale/nn-NO/viewer.properties +++ b/media/js/pdf/web/locale/nn-NO/viewer.properties @@ -44,20 +44,24 @@ download_label=Last ned bookmark.title=Gjeldande vising (kopier eller opne i nytt vindauge) bookmark_label=Gjeldande vising +save.title=Lagre +save_label=Lagre +bookmark1.title=Gjeldande side (sjå URL frå gjeldande side) +bookmark1_label=Gjeldande side + +open_in_app.title=Opne i app +open_in_app_label=Opne i app + # Secondary toolbar and context menu tools.title=Verktøy tools_label=Verktøy first_page.title=Gå til første side -first_page.label=Gå til første side first_page_label=Gå til første side last_page.title=Gå til siste side -last_page.label=Gå til siste side last_page_label=Gå til siste side page_rotate_cw.title=Roter med klokka -page_rotate_cw.label=Roter med klokka page_rotate_cw_label=Roter med klokka page_rotate_ccw.title=Roter mot klokka -page_rotate_ccw.label=Roter mot klokka page_rotate_ccw_label=Roter mot klokka cursor_text_select_tool.title=Aktiver tekstmarkeringsverktøy @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Tekstmarkeringsverktøy cursor_hand_tool.title=Aktiver handverktøy cursor_hand_tool_label=Handverktøy +scroll_page.title=Bruk siderulling +scroll_page_label=Siderulling scroll_vertical.title=Bruk vertikal rulling scroll_vertical_label=Vertikal rulling scroll_horizontal.title=Bruk horisontal rulling @@ -137,7 +143,6 @@ print_progress_close=Avbryt # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Slå av/på sidestolpe -toggle_sidebar_notification.title=Vis/gøym sidestolpen (dokumentet inneheld oversikt/vedlegg) toggle_sidebar_notification2.title=Vis/gøym sidestolpe (dokumentet inneheld oversikt/vedlegg/lag) toggle_sidebar_label=Slå av/på sidestolpe document_outline.title=Vis dokumentdisposisjonen (dobbelklikk for å utvide/gøyme alle elementa) @@ -153,9 +158,6 @@ current_outline_item_label=Gjeldande disposisjonselement findbar.title=Finn i dokumentet findbar_label=Finn -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Side {{page}} - additional_layers=Ytterlegare lag # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Side {{page}} @@ -176,6 +178,7 @@ find_next.title=Finn neste førekomst av frasen find_next_label=Neste find_highlight=Uthev alle find_match_case_label=Skil store/små bokstavar +find_match_diacritics_label=Samsvar diakritiske teikn find_entire_word_label=Heile ord find_reached_top=Nådde toppen av dokumentet, fortset frå botnen find_reached_bottom=Nådde botnen av dokumentet, fortset frå toppen @@ -219,7 +222,6 @@ error_stack=Stakk: {{stack}} error_file=Fil: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Linje: {{line}} -rendering_error=Ein feil oppstod under vising av sida. # Predefined zoom values page_scale_width=Sidebreidde @@ -231,15 +233,16 @@ page_scale_actual=Verkeleg storleik page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Feil +loading=Lastar… # Loading indicator messages -loading=Lastar… loading_error=Ein feil oppstod ved lasting av PDF. invalid_file_error=Ugyldig eller korrupt PDF-fil. missing_file_error=Manglande PDF-fil. unexpected_response_error=Uventa tenarrespons. +rendering_error=Ein feil oppstod under vising av sida. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}} {{time}} @@ -250,10 +253,30 @@ annotation_date_string={{date}} {{time}} # Some common types are e.g.: "Check", "Text", "Comment", "Note" text_annotation_type.alt=[{{type}} annotasjon] password_label=Skriv inn passordet for å opne denne PDF-fila. -password_invalid=Ugyldig passord. Prøv igjen. +password_invalid=Ugyldig passord. Prøv på nytt. password_ok=OK password_cancel=Avbryt printing_not_supported=Åtvaring: Utskrift er ikkje fullstendig støtta av denne nettlesaren. printing_not_ready=Åtvaring: PDF ikkje fullstendig innlasta for utskrift. web_fonts_disabled=Web-skrifter er slått av: Kan ikkje bruke innbundne PDF-skrifter. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Teikne +editor_ink2_label=Teikne + +free_text2_default_content=Byrje å skrive… + +# Editor Parameters +editor_free_text_color=Farge +editor_free_text_size=Storleik +editor_ink_color=Farge +editor_ink_thickness=Tjukkleik +editor_ink_opacity=Ugjennomskinleg + +# Editor aria +editor_free_text2_aria_label=Tekstredigering +editor_ink2_aria_label=Teikneredigering +editor_ink_canvas_aria_label=Brukarskapt bilde diff --git a/media/js/pdf/web/locale/oc/viewer.properties b/media/js/pdf/web/locale/oc/viewer.properties index 80348ab8d7..56becd4f17 100644 --- a/media/js/pdf/web/locale/oc/viewer.properties +++ b/media/js/pdf/web/locale/oc/viewer.properties @@ -44,20 +44,24 @@ download_label=Telecargar bookmark.title=Afichatge corrent (copiar o dobrir dins una fenèstra novèla) bookmark_label=Afichatge actual +save.title=Enregistrar +save_label=Enregistrar +bookmark1.title=Pagina actuala (mostrar l’adreça de la pagina actuala) +bookmark1_label=Pagina actuala + +open_in_app.title=Dobrir amb l’aplicacion +open_in_app_label=Dobrir amb l’aplicacion + # Secondary toolbar and context menu tools.title=Aisinas tools_label=Aisinas first_page.title=Anar a la primièra pagina -first_page.label=Anar a la primièra pagina first_page_label=Anar a la primièra pagina last_page.title=Anar a la darrièra pagina -last_page.label=Anar a la darrièra pagina last_page_label=Anar a la darrièra pagina page_rotate_cw.title=Rotacion orària -page_rotate_cw.label=Rotacion orària page_rotate_cw_label=Rotacion orària page_rotate_ccw.title=Rotacion antiorària -page_rotate_ccw.label=Rotacion antiorària page_rotate_ccw_label=Rotacion antiorària cursor_text_select_tool.title=Activar l'aisina de seleccion de tèxte @@ -65,12 +69,14 @@ cursor_text_select_tool_label=Aisina de seleccion de tèxte cursor_hand_tool.title=Activar l’aisina man cursor_hand_tool_label=Aisina man -scroll_vertical.title=Utilizar lo desfilament vertical -scroll_vertical_label=Desfilament vertical -scroll_horizontal.title=Utilizar lo desfilament orizontal -scroll_horizontal_label=Desfilament orizontal -scroll_wrapped.title=Activar lo desfilament continú -scroll_wrapped_label=Desfilament continú +scroll_page.title=Activar lo defilament per pagina +scroll_page_label=Defilament per pagina +scroll_vertical.title=Utilizar lo defilament vertical +scroll_vertical_label=Defilament vertical +scroll_horizontal.title=Utilizar lo defilament orizontal +scroll_horizontal_label=Defilament orizontal +scroll_wrapped.title=Activar lo defilament continú +scroll_wrapped_label=Defilament continú spread_none.title=Agropar pas las paginas doas a doas spread_none_label=Una sola pagina @@ -137,7 +143,6 @@ print_progress_close=Anullar # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Afichar/amagar lo panèl lateral -toggle_sidebar_notification.title=Afichar/amagar lo panèl lateral (lo document conten esquèmas/pèças juntas) toggle_sidebar_notification2.title=Afichar/amagar lo panèl lateral (lo document conten esquèmas/pèças juntas/calques) toggle_sidebar_label=Afichar/amagar lo panèl lateral document_outline.title=Mostrar los esquèmas del document (dobleclicar per espandre/reduire totes los elements) @@ -153,9 +158,6 @@ current_outline_item_label=Element de plan actual findbar.title=Cercar dins lo document findbar_label=Recercar -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Pagina {{page}} - additional_layers=Calques suplementaris # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Pagina {{page}} @@ -176,6 +178,7 @@ find_next.title=Tròba l'ocurréncia venenta de la frasa find_next_label=Seguent find_highlight=Suslinhar tot find_match_case_label=Respectar la cassa +find_match_diacritics_label=Respectar los diacritics find_entire_word_label=Mots entièrs find_reached_top=Naut de la pagina atenh, perseguida del bas find_reached_bottom=Bas de la pagina atench, perseguida al començament @@ -219,7 +222,6 @@ error_stack=Pila : {{stack}} error_file=Fichièr : {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Linha : {{line}} -rendering_error=Una error s'es producha pendent l'afichatge de la pagina. # Predefined zoom values page_scale_width=Largor plena @@ -231,15 +233,16 @@ page_scale_actual=Talha vertadièra page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Error +loading=Cargament… # Loading indicator messages -loading=Cargament… loading_error=Una error s'es producha pendent lo cargament del fichièr PDF. invalid_file_error=Fichièr PDF invalid o corromput. missing_file_error=Fichièr PDF mancant. unexpected_response_error=Responsa de servidor imprevista. +rendering_error=Una error s'es producha pendent l'afichatge de la pagina. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}} a {{time}} @@ -254,6 +257,26 @@ password_invalid=Senhal incorrècte. Tornatz ensajar. password_ok=D'acòrdi password_cancel=Anullar -printing_not_supported=Atencion : l'impression es pas completament gerida per aqueste navegador. +printing_not_supported=Atencion : l'impression es pas complètament gerida per aqueste navegador. printing_not_ready=Atencion : lo PDF es pas entièrament cargat per lo poder imprimir. -web_fonts_disabled=Las poliças web son desactivadas : impossible d'utilizar las poliças integradas al PDF. +web_fonts_disabled=Las polissas web son desactivadas : impossible d'utilizar las polissas integradas al PDF. + +# Editor +editor_free_text2.title=Tèxte +editor_free_text2_label=Tèxte +editor_ink2.title=Dessenhar +editor_ink2_label=Dessenhar + +free_text2_default_content=Començatz d’escriure… + +# Editor Parameters +editor_free_text_color=Color +editor_free_text_size=Talha +editor_ink_color=Color +editor_ink_thickness=Espessor +editor_ink_opacity=Opacitat + +# Editor aria +editor_free_text2_aria_label=Editor de tèxte +editor_ink2_aria_label=Editor de dessenh +editor_ink_canvas_aria_label=Imatge creat per l’utilizaire diff --git a/media/js/pdf/web/locale/pa-IN/viewer.properties b/media/js/pdf/web/locale/pa-IN/viewer.properties index 010db99425..6fdb9216f2 100644 --- a/media/js/pdf/web/locale/pa-IN/viewer.properties +++ b/media/js/pdf/web/locale/pa-IN/viewer.properties @@ -44,20 +44,24 @@ download_label=ਡਾਊਨਲੋਡ bookmark.title=ਮੌਜੂਦਾ ਝਲਕ (ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਕਾਪੀ ਕਰੋ ਜਾਂ ਖੋਲ੍ਹੋ) bookmark_label=ਮੌਜੂਦਾ ਝਲਕ +save.title=ਸੰਭਾਲੋ +save_label=ਸੰਭਾਲੋ +bookmark1.title=ਮੌਜੂਦਾ ਸਫ਼਼ਾ (ਮੌਜੂਦਾ ਸਫ਼ੇ ਤੋਂ URL ਵੇਖੋ) +bookmark1_label=ਮੌਜੂਦਾ ਸਫ਼਼ਾ + +open_in_app.title=ਐਪ ਵਿੱਚ ਖੋਲ੍ਹੋ +open_in_app_label=ਐਪ ਵਿੱਚ ਖੋਲ੍ਹੋ + # Secondary toolbar and context menu tools.title=ਟੂਲ tools_label=ਟੂਲ first_page.title=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ -first_page.label=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ first_page_label=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ last_page.title=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ -last_page.label=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ last_page_label=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ page_rotate_cw.title=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਓ -page_rotate_cw.label=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਉ page_rotate_cw_label=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਓ page_rotate_ccw.title=ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਓ -page_rotate_ccw.label=ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਉ page_rotate_ccw_label=ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਓ cursor_text_select_tool.title=ਲਿਖਤ ਚੋਣ ਟੂਲ ਸਮਰੱਥ ਕਰੋ @@ -65,6 +69,8 @@ cursor_text_select_tool_label=ਲਿਖਤ ਚੋਣ ਟੂਲ cursor_hand_tool.title=ਹੱਥ ਟੂਲ ਸਮਰੱਥ ਕਰੋ cursor_hand_tool_label=ਹੱਥ ਟੂਲ +scroll_page.title=ਸਫ਼ਾ ਖਿਸਕਾਉਣ ਨੂੰ ਵਰਤੋਂ +scroll_page_label=ਸਫ਼ਾ ਖਿਸਕਾਉਣਾ scroll_vertical.title=ਖੜ੍ਹਵੇਂ ਸਕਰਾਉਣ ਨੂੰ ਵਰਤੋਂ scroll_vertical_label=ਖੜ੍ਹਵਾਂ ਸਰਕਾਉਣਾ scroll_horizontal.title=ਲੇਟਵੇਂ ਸਰਕਾਉਣ ਨੂੰ ਵਰਤੋਂ @@ -137,7 +143,6 @@ print_progress_close=ਰੱਦ ਕਰੋ # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=ਬਾਹੀ ਬਦਲੋ -toggle_sidebar_notification.title=ਬਾਹੀ ਨੂੰ ਬਦਲੋ (ਦਸਤਾਵੇਜ਼ ਖਾਕਾ/ਅਟੈਚਮੈਂਟਾਂ ਰੱਖਦਾ ਹੈ) toggle_sidebar_notification2.title=ਬਾਹੀ ਨੂੰ ਬਦਲੋ (ਦਸਤਾਵੇਜ਼ ਖਾਕਾ/ਅਟੈਚਮੈਂਟ/ਪਰਤਾਂ ਰੱਖਦਾ ਹੈ) toggle_sidebar_label=ਬਾਹੀ ਬਦਲੋ document_outline.title=ਦਸਤਾਵੇਜ਼ ਖਾਕਾ ਦਿਖਾਓ (ਸਾਰੀਆਂ ਆਈਟਮਾਂ ਨੂੰ ਫੈਲਾਉਣ/ਸਮੇਟਣ ਲਈ ਦੋ ਵਾਰ ਕਲਿੱਕ ਕਰੋ) @@ -153,9 +158,6 @@ current_outline_item_label=ਮੌਜੂਦਾ ਖਾਕਾ ਚੀਜ਼ findbar.title=ਦਸਤਾਵੇਜ਼ ਵਿੱਚ ਲੱਭੋ findbar_label=ਲੱਭੋ -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=ਸਫ਼ਾ {{page}} - additional_layers=ਵਾਧੂ ਪਰਤਾਂ # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=ਸਫ਼ਾ {{page}} @@ -176,6 +178,7 @@ find_next.title=ਵਾਕ ਦੀ ਅਗਲੀ ਮੌਜੂਦਗੀ ਲੱਭੋ find_next_label=ਅੱਗੇ find_highlight=ਸਭ ਉਭਾਰੋ find_match_case_label=ਅੱਖਰ ਆਕਾਰ ਨੂੰ ਮਿਲਾਉ +find_match_diacritics_label=ਭੇਦਸੂਚਕ ਮੇਲ find_entire_word_label=ਪੂਰੇ ਸ਼ਬਦ find_reached_top=ਦਸਤਾਵੇਜ਼ ਦੇ ਉੱਤੇ ਆ ਗਏ ਹਾਂ, ਥੱਲੇ ਤੋਂ ਜਾਰੀ ਰੱਖਿਆ ਹੈ find_reached_bottom=ਦਸਤਾਵੇਜ਼ ਦੇ ਅੰਤ ਉੱਤੇ ਆ ਗਏ ਹਾਂ, ਉੱਤੇ ਤੋਂ ਜਾਰੀ ਰੱਖਿਆ ਹੈ @@ -219,7 +222,6 @@ error_stack=ਸਟੈਕ: {{stack}} error_file=ਫਾਈਲ: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=ਲਾਈਨ: {{line}} -rendering_error=ਸਫ਼ਾ ਰੈਡਰ ਕਰਨ ਦੇ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ। # Predefined zoom values page_scale_width=ਸਫ਼ੇ ਦੀ ਚੌੜਾਈ @@ -231,15 +233,16 @@ page_scale_actual=ਆਟੋਮੈਟਿਕ ਆਕਾਰ page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=ਗਲਤੀ +loading=…ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ # Loading indicator messages -loading=…ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ loading_error=PDF ਲੋਡ ਕਰਨ ਦੇ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ। invalid_file_error=ਗਲਤ ਜਾਂ ਨਿਕਾਰਾ PDF ਫਾਈਲ ਹੈ। missing_file_error=ਨਾ-ਮੌਜੂਦ PDF ਫਾਈਲ। unexpected_response_error=ਅਣਜਾਣ ਸਰਵਰ ਜਵਾਬ। +rendering_error=ਸਫ਼ਾ ਰੈਡਰ ਕਰਨ ਦੇ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ। + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=ਰੱਦ ਕਰੋ printing_not_supported=ਸਾਵਧਾਨ: ਇਹ ਬਰਾਊਜ਼ਰ ਪਰਿੰਟ ਕਰਨ ਲਈ ਪੂਰੀ ਤਰ੍ਹਾਂ ਸਹਾਇਕ ਨਹੀਂ ਹੈ। printing_not_ready=ਸਾਵਧਾਨ: PDF ਨੂੰ ਪਰਿੰਟ ਕਰਨ ਲਈ ਪੂਰੀ ਤਰ੍ਹਾਂ ਲੋਡ ਨਹੀਂ ਹੈ। web_fonts_disabled=ਵੈਬ ਫੋਂਟ ਬੰਦ ਹਨ: ਇੰਬੈਡ PDF ਫੋਂਟ ਨੂੰ ਵਰਤਣ ਲਈ ਅਸਮਰੱਥ ਹੈ। + +# Editor +editor_free_text2.title=ਲਿਖਤ +editor_free_text2_label=ਲਿਖਤ +editor_ink2.title=ਵਾਹੋ +editor_ink2_label=ਵਾਹੋ + +free_text2_default_content=…ਲਿਖਣਾ ਸ਼ੁਰੂ ਕਰੋ + +# Editor Parameters +editor_free_text_color=ਰੰਗ +editor_free_text_size=ਆਕਾਰ +editor_ink_color=ਰੰਗ +editor_ink_thickness=ਮੋਟਾਈ +editor_ink_opacity=ਧੁੰਦਲਾਪਨ + +# Editor aria +editor_free_text2_aria_label=ਲਿਖਤ ਐਡੀਟਰ +editor_ink2_aria_label=ਵਹਾਉਣ ਐਡੀਟਰ +editor_ink_canvas_aria_label=ਵਰਤੋਂਕਾਰ ਵਲੋਂ ਬਣਾਇਆ ਚਿੱਤਰ diff --git a/media/js/pdf/web/locale/pl/viewer.properties b/media/js/pdf/web/locale/pl/viewer.properties index 83be380af4..7e9b9095fb 100644 --- a/media/js/pdf/web/locale/pl/viewer.properties +++ b/media/js/pdf/web/locale/pl/viewer.properties @@ -44,20 +44,26 @@ download_label=Pobierz bookmark.title=Bieżąca pozycja (skopiuj lub otwórz jako odnośnik w nowym oknie) bookmark_label=Bieżąca pozycja +save.title=Zapisz +save_label=Zapisz +bookmark1.title=Bieżąca strona (adres do otwarcia na bieżącej stronie) +bookmark1_label=Bieżąca strona + +# LOCALIZATION NOTE (open_in_app.title): This string is used in Firefox for Android. +open_in_app.title=Otwórz w aplikacji +# LOCALIZATION NOTE (open_in_app_label): This string is used in Firefox for Android. Length of the translation matters since we are in a mobile context, with limited screen estate. +open_in_app_label=Otwórz w aplikacji + # Secondary toolbar and context menu tools.title=Narzędzia tools_label=Narzędzia first_page.title=Przejdź do pierwszej strony -first_page.label=Przejdź do pierwszej strony first_page_label=Przejdź do pierwszej strony last_page.title=Przejdź do ostatniej strony -last_page.label=Przejdź do ostatniej strony last_page_label=Przejdź do ostatniej strony page_rotate_cw.title=Obróć zgodnie z ruchem wskazówek zegara -page_rotate_cw.label=Obróć zgodnie z ruchem wskazówek zegara page_rotate_cw_label=Obróć zgodnie z ruchem wskazówek zegara page_rotate_ccw.title=Obróć przeciwnie do ruchu wskazówek zegara -page_rotate_ccw.label=Obróć przeciwnie do ruchu wskazówek zegara page_rotate_ccw_label=Obróć przeciwnie do ruchu wskazówek zegara cursor_text_select_tool.title=Włącz narzędzie zaznaczania tekstu @@ -65,6 +71,8 @@ cursor_text_select_tool_label=Narzędzie zaznaczania tekstu cursor_hand_tool.title=Włącz narzędzie rączka cursor_hand_tool_label=Narzędzie rączka +scroll_page.title=Przewijaj strony +scroll_page_label=Przewijanie stron scroll_vertical.title=Przewijaj dokument w pionie scroll_vertical_label=Przewijanie pionowe scroll_horizontal.title=Przewijaj dokument w poziomie @@ -137,7 +145,6 @@ print_progress_close=Anuluj # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Przełącz panel boczny -toggle_sidebar_notification.title=Przełącz panel boczny (dokument zawiera konspekt/załączniki) toggle_sidebar_notification2.title=Przełącz panel boczny (dokument zawiera konspekt/załączniki/warstwy) toggle_sidebar_label=Przełącz panel boczny document_outline.title=Konspekt dokumentu (podwójne kliknięcie rozwija lub zwija wszystkie pozycje) @@ -153,9 +160,6 @@ current_outline_item_label=Bieżący element konspektu findbar.title=Znajdź w dokumencie findbar_label=Znajdź -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas={{page}}. strona - additional_layers=Dodatkowe warstwy # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark={{page}}. strona @@ -176,6 +180,7 @@ find_next.title=Znajdź następne wystąpienie tekstu find_next_label=Następne find_highlight=Wyróżnianie wszystkich find_match_case_label=Rozróżnianie wielkości liter +find_match_diacritics_label=Rozróżnianie liter diakrytyzowanych find_entire_word_label=Całe słowa find_reached_top=Początek dokumentu. Wyszukiwanie od końca. find_reached_bottom=Koniec dokumentu. Wyszukiwanie od początku. @@ -219,7 +224,6 @@ error_stack=Stos: {{stack}} error_file=Plik: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Wiersz: {{line}} -rendering_error=Podczas renderowania strony wystąpił błąd. # Predefined zoom values page_scale_width=Szerokość strony @@ -231,15 +235,16 @@ page_scale_actual=Rozmiar oryginalny page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Błąd +loading=Wczytywanie… # Loading indicator messages -loading=Wczytywanie… loading_error=Podczas wczytywania dokumentu PDF wystąpił błąd. invalid_file_error=Nieprawidłowy lub uszkodzony plik PDF. missing_file_error=Brak pliku PDF. unexpected_response_error=Nieoczekiwana odpowiedź serwera. +rendering_error=Podczas renderowania strony wystąpił błąd. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -248,7 +253,7 @@ annotation_date_string={{date}}, {{time}} # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). # Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[Adnotacja: {{type}}] +text_annotation_type.alt=[Przypis: {{type}}] password_label=Wprowadź hasło, aby otworzyć ten dokument PDF. password_invalid=Nieprawidłowe hasło. Proszę spróbować ponownie. password_ok=OK @@ -257,3 +262,23 @@ password_cancel=Anuluj printing_not_supported=Ostrzeżenie: drukowanie nie jest w pełni obsługiwane przez tę przeglądarkę. printing_not_ready=Ostrzeżenie: dokument PDF nie jest całkowicie wczytany, więc nie można go wydrukować. web_fonts_disabled=Czcionki sieciowe są wyłączone: nie można użyć osadzonych czcionek PDF. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Rysunek +editor_ink2_label=Rysunek + +free_text2_default_content=Zacznij pisać… + +# Editor Parameters +editor_free_text_color=Kolor +editor_free_text_size=Rozmiar +editor_ink_color=Kolor +editor_ink_thickness=Grubość +editor_ink_opacity=Nieprzezroczystość + +# Editor aria +editor_free_text2_aria_label=Edytor tekstu +editor_ink2_aria_label=Edytor rysunku +editor_ink_canvas_aria_label=Obraz utworzony przez użytkownika diff --git a/media/js/pdf/web/locale/pt-BR/viewer.properties b/media/js/pdf/web/locale/pt-BR/viewer.properties index 8a0884da83..21c6d74a37 100644 --- a/media/js/pdf/web/locale/pt-BR/viewer.properties +++ b/media/js/pdf/web/locale/pt-BR/viewer.properties @@ -33,7 +33,7 @@ zoom_out_label=Reduzir zoom_in.title=Ampliar zoom_in_label=Ampliar zoom.title=Zoom -presentation_mode.title=Alternar para o modo de apresentação +presentation_mode.title=Mudar para o modo de apresentação presentation_mode_label=Modo de apresentação open_file.title=Abrir arquivo open_file_label=Abrir @@ -42,22 +42,26 @@ print_label=Imprimir download.title=Baixar download_label=Baixar bookmark.title=Visão atual (copiar ou abrir em nova janela) -bookmark_label=Visualização atual +bookmark_label=Exibição atual + +save.title=Salvar +save_label=Salvar +bookmark1.title=Página atual (ver URL da página atual) +bookmark1_label=Pagina atual + +open_in_app.title=Abrir em um aplicativo +open_in_app_label=Abrir em um aplicativo # Secondary toolbar and context menu tools.title=Ferramentas tools_label=Ferramentas first_page.title=Ir para a primeira página -first_page.label=Ir para a primeira página first_page_label=Ir para a primeira página last_page.title=Ir para a última página -last_page.label=Ir para a última página last_page_label=Ir para a última página page_rotate_cw.title=Girar no sentido horário -page_rotate_cw.label=Girar no sentido horário page_rotate_cw_label=Girar no sentido horário page_rotate_ccw.title=Girar no sentido anti-horário -page_rotate_ccw.label=Girar no sentido anti-horário page_rotate_ccw_label=Girar no sentido anti-horário cursor_text_select_tool.title=Ativar a ferramenta de seleção de texto @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Ferramenta de seleção de texto cursor_hand_tool.title=Ativar ferramenta de deslocamento cursor_hand_tool_label=Ferramenta de deslocamento +scroll_page.title=Usar rolagem de página +scroll_page_label=Rolagem de página scroll_vertical.title=Usar deslocamento vertical scroll_vertical_label=Deslocamento vertical scroll_horizontal.title=Usar deslocamento horizontal @@ -137,14 +143,13 @@ print_progress_close=Cancelar # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Exibir/ocultar painel lateral -toggle_sidebar_notification.title=Exibir/ocultar painel lateral (documento contém estrutura/anexos) toggle_sidebar_notification2.title=Exibir/ocultar painel (documento contém estrutura/anexos/camadas) toggle_sidebar_label=Exibir/ocultar painel -document_outline.title=Mostrar a estrutura do documento (dê um duplo-clique para expandir/recolher todos os itens) +document_outline.title=Mostrar estrutura do documento (duplo-clique expande/recolhe todos os itens) document_outline_label=Estrutura do documento attachments.title=Mostrar anexos attachments_label=Anexos -layers.title=Exibir camadas (duplo-clique para redefinir todas as camadas ao estado predefinido) +layers.title=Mostrar camadas (duplo-clique redefine todas as camadas ao estado predefinido) layers_label=Camadas thumbs.title=Mostrar miniaturas thumbs_label=Miniaturas @@ -153,9 +158,6 @@ current_outline_item_label=Item atual da estrutura findbar.title=Procurar no documento findbar_label=Procurar -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Página {{page}} - additional_layers=Camadas adicionais # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Página {{page}} @@ -176,6 +178,7 @@ find_next.title=Procurar a próxima ocorrência da frase find_next_label=Próxima find_highlight=Destacar tudo find_match_case_label=Diferenciar maiúsculas/minúsculas +find_match_diacritics_label=Considerar acentuação find_entire_word_label=Palavras completas find_reached_top=Início do documento alcançado, continuando do fim find_reached_bottom=Fim do documento alcançado, continuando do início @@ -219,7 +222,6 @@ error_stack=Pilha: {{stack}} error_file=Arquivo: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Linha: {{line}} -rendering_error=Ocorreu um erro ao renderizar a página. # Predefined zoom values page_scale_width=Largura da página @@ -231,15 +233,16 @@ page_scale_actual=Tamanho real page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Erro +loading=Carregando… # Loading indicator messages -loading=Carregando… loading_error=Ocorreu um erro ao carregar o PDF. invalid_file_error=Arquivo PDF corrompido ou inválido. missing_file_error=Arquivo PDF ausente. unexpected_response_error=Resposta inesperada do servidor. +rendering_error=Ocorreu um erro ao renderizar a página. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Cancelar printing_not_supported=Aviso: a impressão não é totalmente suportada neste navegador. printing_not_ready=Aviso: o PDF não está totalmente carregado para impressão. web_fonts_disabled=As fontes web estão desativadas: não foi possível usar fontes incorporadas do PDF. + +# Editor +editor_free_text2.title=Texto +editor_free_text2_label=Texto +editor_ink2.title=Desenho +editor_ink2_label=Desenho + +free_text2_default_content=Comece digitando… + +# Editor Parameters +editor_free_text_color=Cor +editor_free_text_size=Tamanho +editor_ink_color=Cor +editor_ink_thickness=Espessura +editor_ink_opacity=Opacidade + +# Editor aria +editor_free_text2_aria_label=Editor de texto +editor_ink2_aria_label=Editor de desenho +editor_ink_canvas_aria_label=Imagem criada pelo usuário diff --git a/media/js/pdf/web/locale/pt-PT/viewer.properties b/media/js/pdf/web/locale/pt-PT/viewer.properties index 1a5e60df9f..9f7ffafbf5 100644 --- a/media/js/pdf/web/locale/pt-PT/viewer.properties +++ b/media/js/pdf/web/locale/pt-PT/viewer.properties @@ -44,20 +44,26 @@ download_label=Transferir bookmark.title=Vista atual (copiar ou abrir numa nova janela) bookmark_label=Visão atual +save.title=Guardar +save_label=Guardar +bookmark1.title=Página atual (ver URL da página atual) +bookmark1_label=Pagina atual + +# LOCALIZATION NOTE (open_in_app.title): This string is used in Firefox for Android. +open_in_app.title=Abrir na aplicação +# LOCALIZATION NOTE (open_in_app_label): This string is used in Firefox for Android. Length of the translation matters since we are in a mobile context, with limited screen estate. +open_in_app_label=Abrir na aplicação + # Secondary toolbar and context menu tools.title=Ferramentas tools_label=Ferramentas first_page.title=Ir para a primeira página -first_page.label=Ir para a primeira página first_page_label=Ir para a primeira página last_page.title=Ir para a última página -last_page.label=Ir para a última página last_page_label=Ir para a última página page_rotate_cw.title=Rodar à direita -page_rotate_cw.label=Rodar à direita page_rotate_cw_label=Rodar à direita page_rotate_ccw.title=Rodar à esquerda -page_rotate_ccw.label=Rodar à esquerda page_rotate_ccw_label=Rodar à esquerda cursor_text_select_tool.title=Ativar ferramenta de seleção de texto @@ -65,6 +71,8 @@ cursor_text_select_tool_label=Ferramenta de seleção de texto cursor_hand_tool.title=Ativar ferramenta de mão cursor_hand_tool_label=Ferramenta de mão +scroll_page.title=Utilizar deslocamento da página +scroll_page_label=Deslocamento da página scroll_vertical.title=Utilizar deslocação vertical scroll_vertical_label=Deslocação vertical scroll_horizontal.title=Utilizar deslocação horizontal @@ -137,7 +145,6 @@ print_progress_close=Cancelar # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Alternar barra lateral -toggle_sidebar_notification.title=Alternar barra lateral (documento contém contorno/anexos) toggle_sidebar_notification2.title=Alternar barra lateral (o documento contém contornos/anexos/camadas) toggle_sidebar_label=Alternar barra lateral document_outline.title=Mostrar esquema do documento (duplo clique para expandir/colapsar todos os itens) @@ -153,9 +160,6 @@ current_outline_item_label=Item atualmente destacado findbar.title=Localizar em documento findbar_label=Localizar -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Página {{page}} - additional_layers=Camadas adicionais # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Página {{page}} @@ -176,6 +180,7 @@ find_next.title=Localizar ocorrência seguinte da frase find_next_label=Seguinte find_highlight=Destacar tudo find_match_case_label=Correspondência +find_match_diacritics_label=Corresponder diacríticos find_entire_word_label=Palavras completas find_reached_top=Topo do documento atingido, a continuar a partir do fundo find_reached_bottom=Fim do documento atingido, a continuar a partir do topo @@ -219,7 +224,6 @@ error_stack=Stack: {{stack}} error_file=Ficheiro: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Linha: {{line}} -rendering_error=Ocorreu um erro ao processar a página. # Predefined zoom values page_scale_width=Ajustar à largura @@ -231,15 +235,16 @@ page_scale_actual=Tamanho real page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Erro +loading=A carregar… # Loading indicator messages -loading=A carregar… loading_error=Ocorreu um erro ao carregar o PDF. invalid_file_error=Ficheiro PDF inválido ou danificado. missing_file_error=Ficheiro PDF inexistente. unexpected_response_error=Resposta inesperada do servidor. +rendering_error=Ocorreu um erro ao processar a página. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +262,23 @@ password_cancel=Cancelar printing_not_supported=Aviso: a impressão não é totalmente suportada por este navegador. printing_not_ready=Aviso: o PDF ainda não está totalmente carregado. web_fonts_disabled=Os tipos de letra web estão desativados: não é possível utilizar os tipos de letra PDF embutidos. + +# Editor +editor_free_text2.title=Texto +editor_free_text2_label=Texto +editor_ink2.title=Desenhar +editor_ink2_label=Desenhar + +free_text2_default_content=Começar a digitar… + +# Editor Parameters +editor_free_text_color=Cor +editor_free_text_size=Tamanho +editor_ink_color=Cor +editor_ink_thickness=Espessura +editor_ink_opacity=Opacidade + +# Editor aria +editor_free_text2_aria_label=Editor de texto +editor_ink2_aria_label=Editor de desenho +editor_ink_canvas_aria_label=Imagem criada pelo utilizador diff --git a/media/js/pdf/web/locale/rm/viewer.properties b/media/js/pdf/web/locale/rm/viewer.properties index fc4a9e1125..bc4d77b8ff 100644 --- a/media/js/pdf/web/locale/rm/viewer.properties +++ b/media/js/pdf/web/locale/rm/viewer.properties @@ -44,20 +44,24 @@ download_label=Telechargiar bookmark.title=Vista actuala (copiar u avrir en ina nova fanestra) bookmark_label=Vista actuala +save.title=Memorisar +save_label=Memorisar +bookmark1.title=Pagina actuala (mussar l'URL da la pagina actuala) +bookmark1_label=Pagina actuala + +open_in_app.title=Avrir en ina app +open_in_app_label=Avrir en ina app + # Secondary toolbar and context menu tools.title=Utensils tools_label=Utensils first_page.title=Siglir a l'emprima pagina -first_page.label=Siglir a l'emprima pagina first_page_label=Siglir a l'emprima pagina last_page.title=Siglir a la davosa pagina -last_page.label=Siglir a la davosa pagina last_page_label=Siglir a la davosa pagina page_rotate_cw.title=Rotar en direcziun da l'ura -page_rotate_cw.label=Rotar en direcziun da l'ura page_rotate_cw_label=Rotar en direcziun da l'ura page_rotate_ccw.title=Rotar en direcziun cuntraria a l'ura -page_rotate_ccw.label=Rotar en direcziun cuntraria a l'ura page_rotate_ccw_label=Rotar en direcziun cuntraria a l'ura cursor_text_select_tool.title=Activar l'utensil per selecziunar text @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Utensil per selecziunar text cursor_hand_tool.title=Activar l'utensil da maun cursor_hand_tool_label=Utensil da maun +scroll_page.title=Utilisar la defilada per pagina +scroll_page_label=Defilada per pagina scroll_vertical.title=Utilisar il defilar vertical scroll_vertical_label=Defilar vertical scroll_horizontal.title=Utilisar il defilar orizontal @@ -137,7 +143,6 @@ print_progress_close=Interrumper # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Activar/deactivar la trav laterala -toggle_sidebar_notification.title=Activar/deactivar la trav laterala (structura dal document/agiuntas) toggle_sidebar_notification2.title=Activar/deactivar la trav laterala (il document cuntegna structura dal document/agiuntas/nivels) toggle_sidebar_label=Activar/deactivar la trav laterala document_outline.title=Mussar la structura dal document (cliccar duas giadas per extender/cumprimer tut ils elements) @@ -153,9 +158,6 @@ current_outline_item_label=Element da structura actual findbar.title=Tschertgar en il document findbar_label=Tschertgar -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Pagina {{page}} - additional_layers=Nivels supplementars # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Pagina {{page}} @@ -176,6 +178,7 @@ find_next.title=Tschertgar la proxima posiziun da l'expressiun find_next_label=Enavant find_highlight=Relevar tuts find_match_case_label=Resguardar maiusclas/minusclas +find_match_diacritics_label=Resguardar ils segns diacritics find_entire_word_label=Pleds entirs find_reached_top=Il cumenzament dal document è cuntanschì, la tschertga cuntinuescha a la fin dal document find_reached_bottom=La fin dal document è cuntanschì, la tschertga cuntinuescha al cumenzament dal document @@ -219,7 +222,6 @@ error_stack=Stack: {{stack}} error_file=Datoteca: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Lingia: {{line}} -rendering_error=Ina errur è cumparida cun visualisar questa pagina. # Predefined zoom values page_scale_width=Ladezza da la pagina @@ -231,15 +233,16 @@ page_scale_actual=Grondezza actuala page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Errur +loading=Chargiar… # Loading indicator messages -loading=Chargiar… loading_error=Ina errur è cumparida cun chargiar il PDF. invalid_file_error=Datoteca PDF nunvalida u donnegiada. missing_file_error=Datoteca PDF manconta. unexpected_response_error=Resposta nunspetgada dal server. +rendering_error=Ina errur è cumparida cun visualisar questa pagina. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Interrumper printing_not_supported=Attenziun: Il stampar na funcziunescha anc betg dal tut en quest navigatur. printing_not_ready=Attenziun: Il PDF n'è betg chargià cumplettamain per stampar. web_fonts_disabled=Scrittiras dal web èn deactivadas: impussibel dad utilisar las scrittiras integradas en il PDF. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Dissegnar +editor_ink2_label=Dissegnar + +free_text2_default_content=Cumenzar a tippar… + +# Editor Parameters +editor_free_text_color=Colur +editor_free_text_size=Grondezza +editor_ink_color=Colur +editor_ink_thickness=Grossezza +editor_ink_opacity=Opacitad + +# Editor aria +editor_free_text2_aria_label=Editur da text +editor_ink2_aria_label=Editur dissegn +editor_ink_canvas_aria_label=Maletg creà da l'utilisader diff --git a/media/js/pdf/web/locale/ro/viewer.properties b/media/js/pdf/web/locale/ro/viewer.properties index 2e580f0d3b..7560849624 100644 --- a/media/js/pdf/web/locale/ro/viewer.properties +++ b/media/js/pdf/web/locale/ro/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Vizualizare actuală tools.title=Instrumente tools_label=Instrumente first_page.title=Mergi la prima pagină -first_page.label=Mergi la prima pagină first_page_label=Mergi la prima pagină last_page.title=Mergi la ultima pagină -last_page.label=Mergi la ultima pagină last_page_label=Mergi la ultima pagină page_rotate_cw.title=Rotește în sensul acelor de ceas -page_rotate_cw.label=Rotește în sensul acelor de ceas page_rotate_cw_label=Rotește în sensul acelor de ceas page_rotate_ccw.title=Rotește în sens invers al acelor de ceas -page_rotate_ccw.label=Rotește în sens invers al acelor de ceas page_rotate_ccw_label=Rotește în sens invers al acelor de ceas cursor_text_select_tool.title=Activează instrumentul de selecție a textului @@ -137,7 +133,6 @@ print_progress_close=Renunță # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Comută bara laterală -toggle_sidebar_notification.title=Comută bara laterală (documentul conține schițe/atașamente) toggle_sidebar_label=Comută bara laterală document_outline.title=Afișează schița documentului (dublu-clic pentru a extinde/restrânge toate elementele) document_outline_label=Schița documentului @@ -148,9 +143,7 @@ thumbs_label=Miniaturi findbar.title=Caută în document findbar_label=Caută -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Pagina {{page}} - +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -223,8 +216,6 @@ page_scale_actual=Mărime reală page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Eroare - loading_error=A intervenit o eroare la încărcarea PDF-ului. invalid_file_error=Fișier PDF nevalid sau corupt. missing_file_error=Fișier PDF lipsă. @@ -241,9 +232,10 @@ annotation_date_string={{date}}, {{time}} text_annotation_type.alt=[Adnotare {{type}}] password_label=Introdu parola pentru a deschide acest fișier PDF. password_invalid=Parolă nevalidă. Te rugăm să încerci din nou. -password_ok=Ok +password_ok=OK password_cancel=Renunță printing_not_supported=Avertisment: Tipărirea nu este suportată în totalitate de acest browser. printing_not_ready=Avertisment: PDF-ul nu este încărcat complet pentru tipărire. web_fonts_disabled=Fonturile web sunt dezactivate: nu se pot folosi fonturile PDF încorporate. + diff --git a/media/js/pdf/web/locale/ru/viewer.properties b/media/js/pdf/web/locale/ru/viewer.properties index 402e0e5c34..4aa900fdc5 100644 --- a/media/js/pdf/web/locale/ru/viewer.properties +++ b/media/js/pdf/web/locale/ru/viewer.properties @@ -44,20 +44,24 @@ download_label=Загрузить bookmark.title=Ссылка на текущий вид (скопировать или открыть в новом окне) bookmark_label=Текущий вид +save.title=Сохранить +save_label=Сохранить +bookmark1.title=Текущая страница (просмотр URL-адреса с текущей страницы) +bookmark1_label=Текущая страница + +open_in_app.title=Открыть в приложении +open_in_app_label=Открыть в программе + # Secondary toolbar and context menu tools.title=Инструменты tools_label=Инструменты first_page.title=Перейти на первую страницу -first_page.label=Перейти на первую страницу first_page_label=Перейти на первую страницу last_page.title=Перейти на последнюю страницу -last_page.label=Перейти на последнюю страницу last_page_label=Перейти на последнюю страницу page_rotate_cw.title=Повернуть по часовой стрелке -page_rotate_cw.label=Повернуть по часовой стрелке page_rotate_cw_label=Повернуть по часовой стрелке page_rotate_ccw.title=Повернуть против часовой стрелки -page_rotate_ccw.label=Повернуть против часовой стрелки page_rotate_ccw_label=Повернуть против часовой стрелки cursor_text_select_tool.title=Включить Инструмент «Выделение текста» @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Инструмент «Выделение текс cursor_hand_tool.title=Включить Инструмент «Рука» cursor_hand_tool_label=Инструмент «Рука» +scroll_page.title=Использовать прокрутку страниц +scroll_page_label=Прокрутка страниц scroll_vertical.title=Использовать вертикальную прокрутку scroll_vertical_label=Вертикальная прокрутка scroll_horizontal.title=Использовать горизонтальную прокрутку @@ -137,7 +143,6 @@ print_progress_close=Отмена # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Показать/скрыть боковую панель -toggle_sidebar_notification.title=Показать/скрыть боковую панель (документ имеет содержание/вложения) toggle_sidebar_notification2.title=Показать/скрыть боковую панель (документ имеет содержание/вложения/слои) toggle_sidebar_label=Показать/скрыть боковую панель document_outline.title=Показать содержание документа (двойной щелчок, чтобы развернуть/свернуть все элементы) @@ -153,9 +158,6 @@ current_outline_item_label=Текущий элемент структуры findbar.title=Найти в документе findbar_label=Найти -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Страница {{page}} - additional_layers=Дополнительные слои # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Страница {{page}} @@ -176,6 +178,7 @@ find_next.title=Найти следующее вхождение фразы в find_next_label=Далее find_highlight=Подсветить все find_match_case_label=С учётом регистра +find_match_diacritics_label=С учётом диакритических знаков find_entire_word_label=Слова целиком find_reached_top=Достигнут верх документа, продолжено снизу find_reached_bottom=Достигнут конец документа, продолжено сверху @@ -219,7 +222,6 @@ error_stack=Стeк: {{stack}} error_file=Файл: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Строка: {{line}} -rendering_error=При создании страницы произошла ошибка. # Predefined zoom values page_scale_width=По ширине страницы @@ -231,15 +233,16 @@ page_scale_actual=Реальный размер page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Ошибка +loading=Загрузка… # Loading indicator messages -loading=Загрузка… loading_error=При загрузке PDF произошла ошибка. invalid_file_error=Некорректный или повреждённый PDF-файл. missing_file_error=PDF-файл отсутствует. unexpected_response_error=Неожиданный ответ сервера. +rendering_error=При создании страницы произошла ошибка. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Отмена printing_not_supported=Предупреждение: В этом браузере не полностью поддерживается печать. printing_not_ready=Предупреждение: PDF не полностью загружен для печати. web_fonts_disabled=Веб-шрифты отключены: не удалось задействовать встроенные PDF-шрифты. + +# Editor +editor_free_text2.title=Текст +editor_free_text2_label=Текст +editor_ink2.title=Рисовать +editor_ink2_label=Рисовать + +free_text2_default_content=Начните вводить… + +# Editor Parameters +editor_free_text_color=Цвет +editor_free_text_size=Размер +editor_ink_color=Цвет +editor_ink_thickness=Толщина +editor_ink_opacity=Прозрачность + +# Editor aria +editor_free_text2_aria_label=Текстовый редактор +editor_ink2_aria_label=Редактор рисования +editor_ink_canvas_aria_label=Созданное пользователем изображение diff --git a/media/js/pdf/web/locale/sat/viewer.properties b/media/js/pdf/web/locale/sat/viewer.properties new file mode 100644 index 0000000000..29977f4a03 --- /dev/null +++ b/media/js/pdf/web/locale/sat/viewer.properties @@ -0,0 +1,283 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=ᱢᱟᱲᱟᱝ ᱥᱟᱦᱴᱟ +previous_label=ᱢᱟᱲᱟᱝᱟᱜ +next.title=ᱤᱱᱟᱹ ᱛᱟᱭᱚᱢ ᱥᱟᱦᱴᱟ +next_label=ᱤᱱᱟᱹ ᱛᱟᱭᱚᱢ + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=ᱥᱟᱦᱴᱟ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=ᱨᱮᱭᱟᱜ {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} ᱠᱷᱚᱱ {{pagesCount}}) + +zoom_out.title=ᱦᱤᱲᱤᱧ ᱛᱮᱭᱟᱨ +zoom_out_label=ᱦᱤᱲᱤᱧ ᱛᱮᱭᱟᱨ +zoom_in.title=ᱢᱟᱨᱟᱝ ᱛᱮᱭᱟᱨ +zoom_in_label=ᱢᱟᱨᱟᱝ ᱛᱮᱭᱟᱨ +zoom.title=ᱡᱩᱢ +presentation_mode.title=ᱩᱫᱩᱜ ᱥᱚᱫᱚᱨ ᱚᱵᱚᱥᱛᱟ ᱨᱮ ᱚᱛᱟᱭ ᱢᱮ +presentation_mode_label=ᱩᱫᱩᱜ ᱥᱚᱫᱚᱨ ᱚᱵᱚᱥᱛᱟ ᱨᱮ +open_file.title=ᱨᱮᱫ ᱡᱷᱤᱡᱽ ᱢᱮ +open_file_label=ᱡᱷᱤᱡᱽ ᱢᱮ +print.title=ᱪᱷᱟᱯᱟ +print_label=ᱪᱷᱟᱯᱟ +download.title=ᱰᱟᱩᱱᱞᱚᱰ +download_label=ᱰᱟᱩᱱᱞᱚᱰ +bookmark.title=ᱱᱤᱛᱚᱜᱟᱜ ᱧᱮᱞ (ᱱᱚᱶᱟ ᱡᱷᱚᱨᱠᱟ ᱨᱮ ᱱᱚᱠᱚᱞ ᱟᱨ ᱵᱟᱝ ᱡᱷᱤᱡᱽ ᱢᱮ ) +bookmark_label=ᱱᱤᱛᱚᱜᱟᱜ ᱧᱮᱞ + +save.title=ᱥᱟᱺᱪᱟᱣ ᱢᱮ +save_label=ᱥᱟᱺᱪᱟᱣ ᱢᱮ +bookmark1.title=ᱱᱤᱛᱚᱜᱟᱜ ᱥᱟᱦᱴᱟ (ᱱᱤᱛᱚᱜᱟᱜ ᱥᱟᱦᱴᱟ ᱠᱷᱚᱱ URL ᱫᱮᱠᱷᱟᱣ ᱢᱮ) +bookmark1_label=ᱱᱤᱛᱚᱜᱟᱜ ᱥᱟᱦᱴᱟ +# LOCALIZATION NOTE (open_in_app.title): This string is used in Firefox for Android. +open_in_app.title=ᱮᱯ ᱨᱮ ᱡᱷᱤᱡᱽ ᱢᱮ +# LOCALIZATION NOTE (open_in_app_label): This string is used in Firefox for Android. Length of the translation matters since we are in a mobile context, with limited screen estate. +open_in_app_label=ᱮᱯ ᱨᱮ ᱡᱷᱤᱡᱽ ᱢᱮ + +# Secondary toolbar and context menu +tools.title=ᱦᱟᱹᱛᱤᱭᱟᱹᱨ ᱠᱚ +tools_label=ᱦᱟᱹᱛᱤᱭᱟᱹᱨ ᱠᱚ +first_page.title=ᱯᱩᱭᱞᱩ ᱥᱟᱦᱴᱟ ᱥᱮᱫ ᱪᱟᱞᱟᱜ ᱢᱮ +first_page_label=ᱯᱩᱭᱞᱩ ᱥᱟᱦᱴᱟ ᱥᱮᱫ ᱪᱟᱞᱟᱜ ᱢᱮ +last_page.title=ᱢᱩᱪᱟᱹᱫ ᱥᱟᱦᱴᱟ ᱥᱮᱫ ᱪᱟᱞᱟᱜ ᱢᱮ +last_page_label=ᱢᱩᱪᱟᱹᱫ ᱥᱟᱦᱴᱟ ᱥᱮᱫ ᱪᱟᱞᱟᱜ ᱢᱮ +page_rotate_cw.title=ᱜᱷᱚᱰᱤ ᱦᱤᱥᱟᱹᱵ ᱛᱮ ᱟᱹᱪᱩᱨ +page_rotate_cw_label=ᱜᱷᱚᱰᱤ ᱦᱤᱥᱟᱹᱵ ᱛᱮ ᱟᱹᱪᱩᱨ +page_rotate_ccw.title=ᱜᱷᱚᱰᱤ ᱦᱤᱥᱟᱹᱵ ᱛᱮ ᱩᱞᱴᱟᱹ ᱟᱹᱪᱩᱨ +page_rotate_ccw_label=ᱜᱷᱚᱰᱤ ᱦᱤᱥᱟᱹᱵ ᱛᱮ ᱩᱞᱴᱟᱹ ᱟᱹᱪᱩᱨ + +cursor_text_select_tool.title=ᱚᱞ ᱵᱟᱪᱷᱟᱣ ᱦᱟᱹᱛᱤᱭᱟᱨ ᱮᱢ ᱪᱷᱚᱭ ᱢᱮ +cursor_text_select_tool_label=ᱚᱞ ᱵᱟᱪᱷᱟᱣ ᱦᱟᱹᱛᱤᱭᱟᱨ +cursor_hand_tool.title=ᱛᱤ ᱦᱟᱹᱛᱤᱭᱟᱨ ᱮᱢ ᱪᱷᱚᱭ ᱢᱮ +cursor_hand_tool_label=ᱛᱤ ᱦᱟᱹᱛᱤᱭᱟᱨ + +scroll_page.title=ᱥᱟᱦᱴᱟ ᱜᱩᱲᱟᱹᱣ ᱵᱮᱵᱷᱟᱨ ᱢᱮ +scroll_page_label=ᱥᱟᱦᱴᱟ ᱜᱩᱲᱟᱹᱣ +scroll_vertical.title=ᱥᱤᱫᱽ ᱜᱩᱲᱟᱹᱣ ᱵᱮᱵᱷᱟᱨ ᱢᱮ +scroll_vertical_label=ᱥᱤᱫᱽ ᱜᱩᱲᱟᱹᱣ +scroll_horizontal.title=ᱜᱤᱛᱤᱡ ᱛᱮ ᱜᱩᱲᱟᱹᱣ ᱵᱮᱵᱷᱟᱨ ᱢᱮ +scroll_horizontal_label=ᱜᱤᱛᱤᱡ ᱛᱮ ᱜᱩᱲᱟᱹᱣ +scroll_wrapped.title=ᱞᱤᱯᱴᱟᱹᱣ ᱜᱩᱰᱨᱟᱹᱣ ᱵᱮᱵᱷᱟᱨ ᱢᱮ +scroll_wrapped_label=ᱞᱤᱯᱴᱟᱣ ᱜᱩᱰᱨᱟᱹᱣ + +spread_none.title=ᱟᱞᱚᱢ ᱡᱚᱲᱟᱣ ᱟ ᱥᱟᱦᱴᱟ ᱫᱚ ᱯᱟᱥᱱᱟᱣᱜᱼᱟ +spread_none_label=ᱯᱟᱥᱱᱟᱣ ᱵᱟᱹᱱᱩᱜᱼᱟ +spread_odd.title=ᱥᱟᱦᱴᱟ ᱯᱟᱥᱱᱟᱣ ᱡᱚᱲᱟᱣ ᱢᱮ ᱡᱟᱦᱟᱸ ᱫᱚ ᱚᱰᱼᱮᱞ ᱥᱟᱦᱴᱟᱠᱚ ᱥᱟᱞᱟᱜ ᱮᱛᱦᱚᱵᱚᱜ ᱠᱟᱱᱟ +spread_odd_label=ᱚᱰ ᱯᱟᱥᱱᱟᱣ +spread_even.title=ᱥᱟᱦᱴᱟ ᱯᱟᱥᱱᱟᱣ ᱡᱚᱲᱟᱣ ᱢᱮ ᱡᱟᱦᱟᱸ ᱫᱚ ᱤᱣᱮᱱᱼᱮᱞ ᱥᱟᱦᱴᱟᱠᱚ ᱥᱟᱞᱟᱜ ᱮᱛᱦᱚᱵᱚᱜ ᱠᱟᱱᱟ +spread_even_label=ᱯᱟᱥᱱᱟᱣ ᱤᱣᱮᱱ + +# Document properties dialog box +document_properties.title=ᱫᱚᱞᱤᱞ ᱜᱩᱱᱠᱚ … +document_properties_label=ᱫᱚᱞᱤᱞ ᱜᱩᱱᱠᱚ … +document_properties_file_name=ᱨᱮᱫᱽ ᱧᱩᱛᱩᱢ : +document_properties_file_size=ᱨᱮᱫᱽ ᱢᱟᱯ : +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} ᱵᱟᱭᱤᱴ ᱠᱚ) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} ᱵᱟᱭᱤᱴ ᱠᱚ) +document_properties_title=ᱧᱩᱛᱩᱢ : +document_properties_author=ᱚᱱᱚᱞᱤᱭᱟᱹ : +document_properties_subject=ᱵᱤᱥᱚᱭ : +document_properties_keywords=ᱠᱟᱹᱴᱷᱤ ᱥᱟᱵᱟᱫᱽ : +document_properties_creation_date=ᱛᱮᱭᱟᱨ ᱢᱟᱸᱦᱤᱛ : +document_properties_modification_date=ᱵᱚᱫᱚᱞ ᱦᱚᱪᱚ ᱢᱟᱹᱦᱤᱛ : +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=ᱵᱮᱱᱟᱣᱤᱡ : +document_properties_producer=PDF ᱛᱮᱭᱟᱨ ᱚᱰᱚᱠᱤᱡ : +document_properties_version=PDF ᱵᱷᱟᱹᱨᱥᱚᱱ : +document_properties_page_count=ᱥᱟᱦᱴᱟ ᱞᱮᱠᱷᱟ : +document_properties_page_size=ᱥᱟᱦᱴᱟ ᱢᱟᱯ : +document_properties_page_size_unit_inches=ᱤᱧᱪ +document_properties_page_size_unit_millimeters=ᱢᱤᱢᱤ +document_properties_page_size_orientation_portrait=ᱯᱚᱴᱨᱮᱴ +document_properties_page_size_orientation_landscape=ᱞᱮᱱᱰᱥᱠᱮᱯ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=ᱪᱤᱴᱷᱤ +document_properties_page_size_name_legal=ᱠᱟᱹᱱᱩᱱᱤ +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=ᱞᱚᱜᱚᱱ ᱣᱮᱵᱽ ᱧᱮᱞ : +document_properties_linearized_yes=ᱦᱚᱭ +document_properties_linearized_no=ᱵᱟᱝ +document_properties_close=ᱵᱚᱸᱫᱚᱭ ᱢᱮ + +print_progress_message=ᱪᱷᱟᱯᱟ ᱞᱟᱹᱜᱤᱫ ᱫᱚᱞᱤᱞ ᱛᱮᱭᱟᱨᱚᱜ ᱠᱟᱱᱟ … +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=ᱵᱟᱹᱰᱨᱟᱹ + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=ᱫᱷᱟᱨᱮᱵᱟᱨ ᱥᱮᱫ ᱩᱪᱟᱹᱲᱚᱜ ᱢᱮ +toggle_sidebar_notification2.title=ᱫᱷᱟᱨᱮᱵᱟᱨ ᱥᱮᱫ ᱩᱪᱟᱹᱲᱚᱜ ᱢᱮ (ᱫᱚᱞᱤᱞ ᱨᱮ ᱟᱣᱴᱞᱟᱭᱤᱢ ᱢᱮᱱᱟᱜᱼᱟ/ᱞᱟᱪᱷᱟᱠᱚ/ᱯᱚᱨᱚᱛᱠᱚ) +toggle_sidebar_label=ᱫᱷᱟᱨᱮᱵᱟᱨ ᱥᱮᱫ ᱩᱪᱟᱹᱲᱚᱜ ᱢᱮ +document_outline.title=ᱫᱚᱞᱚᱞ ᱟᱣᱴᱞᱟᱭᱤᱱ ᱫᱮᱠᱷᱟᱣ ᱢᱮ (ᱡᱷᱚᱛᱚ ᱡᱤᱱᱤᱥᱠᱚ ᱵᱟᱨ ᱡᱮᱠᱷᱟ ᱚᱛᱟ ᱠᱮᱛᱮ ᱡᱷᱟᱹᱞ/ᱦᱩᱰᱤᱧ ᱪᱷᱚᱭ ᱢᱮ) +document_outline_label=ᱫᱚᱞᱤᱞ ᱛᱮᱭᱟᱨ ᱛᱮᱫ +attachments.title=ᱞᱟᱴᱷᱟ ᱥᱮᱞᱮᱫ ᱠᱚ ᱩᱫᱩᱜᱽ ᱢᱮ +attachments_label=ᱞᱟᱴᱷᱟ ᱥᱮᱞᱮᱫ ᱠᱚ +layers.title=ᱯᱚᱨᱚᱛ ᱫᱮᱠᱷᱟᱣ ᱢᱮ (ᱢᱩᱞ ᱡᱟᱭᱜᱟ ᱛᱮ ᱡᱷᱚᱛᱚ ᱯᱚᱨᱚᱛᱠᱚ ᱨᱤᱥᱮᱴ ᱞᱟᱹᱜᱤᱫ ᱵᱟᱨ ᱡᱮᱠᱷᱟ ᱚᱛᱚᱭ ᱢᱮ) +layers_label=ᱯᱚᱨᱚᱛᱠᱚ +thumbs.title=ᱪᱤᱛᱟᱹᱨ ᱟᱦᱞᱟ ᱠᱚ ᱩᱫᱩᱜᱽ ᱢᱮ +thumbs_label=ᱪᱤᱛᱟᱹᱨ ᱟᱦᱞᱟ ᱠᱚ +current_outline_item.title=ᱱᱤᱛᱚᱜᱟᱜ ᱟᱣᱴᱞᱟᱭᱤᱱ ᱡᱟᱱᱤᱥ ᱯᱟᱱᱛᱮ ᱢᱮ +current_outline_item_label=ᱱᱤᱛᱚᱜᱟᱜ ᱟᱣᱴᱞᱟᱭᱤᱱ ᱡᱟᱱᱤᱥ +findbar.title=ᱫᱚᱞᱤᱞ ᱨᱮ ᱯᱟᱱᱛᱮ +findbar_label=ᱥᱮᱸᱫᱽᱨᱟᱭ ᱢᱮ + +additional_layers=ᱵᱟᱹᱲᱛᱤ ᱯᱚᱨᱚᱛᱠᱚ +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark={{page}} ᱥᱟᱦᱴᱟ +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title={{page}} ᱥᱟᱦᱴᱟ +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas={{page}} ᱥᱟᱦᱴᱟ ᱨᱮᱭᱟᱜ ᱪᱤᱛᱟᱹᱨ ᱟᱦᱞᱟ + +# Find panel button title and messages +find_input.title=ᱥᱮᱸᱫᱽᱨᱟᱭ ᱢᱮ +find_input.placeholder=ᱫᱚᱞᱤᱞ ᱨᱮ ᱯᱟᱱᱛᱮ ᱢᱮ … +find_previous.title=ᱟᱭᱟᱛ ᱦᱤᱸᱥ ᱨᱮᱭᱟᱜ ᱯᱟᱹᱦᱤᱞ ᱥᱮᱫᱟᱜ ᱚᱰᱚᱠ ᱧᱟᱢ ᱢᱮ +find_previous_label=ᱢᱟᱲᱟᱝᱟᱜ +find_next.title=ᱟᱭᱟᱛ ᱦᱤᱸᱥ ᱨᱮᱭᱟᱜ ᱤᱱᱟᱹ ᱛᱟᱭᱚᱢ ᱚᱰᱚᱠ ᱧᱟᱢ ᱢᱮ +find_next_label=ᱤᱱᱟᱹ ᱛᱟᱭᱚᱢ +find_highlight=ᱡᱷᱚᱛᱚ ᱩᱫᱩᱜ ᱨᱟᱠᱟᱵ +find_match_case_label=ᱡᱚᱲ ᱠᱟᱛᱷᱟ +find_match_diacritics_label=ᱵᱤᱥᱮᱥᱚᱠ ᱠᱚ ᱢᱮᱲᱟᱣ ᱢᱮ +find_entire_word_label=ᱡᱷᱚᱛᱚ ᱟᱹᱲᱟᱹᱠᱚ +find_reached_top=ᱫᱚᱞᱤᱞ ᱨᱮᱭᱟᱜ ᱪᱤᱴ ᱨᱮ ᱥᱮᱴᱮᱨ, ᱞᱟᱛᱟᱨ ᱠᱷᱚᱱ ᱞᱮᱛᱟᱲ +find_reached_bottom=ᱫᱚᱞᱤᱞ ᱨᱮᱭᱟᱜ ᱢᱩᱪᱟᱹᱫ ᱨᱮ ᱥᱮᱴᱮᱨ, ᱪᱚᱴ ᱠᱷᱚᱱ ᱞᱮᱛᱟᱲ +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} ᱨᱮᱭᱟᱜ {{total}} ᱡᱚᱲ +find_match_count[two]={{current}} ᱨᱮᱭᱟᱜ {{total}} ᱡᱚᱲᱠᱚ +find_match_count[few]={{current}} ᱨᱮᱭᱟᱜ {{total}} ᱡᱚᱲᱠᱚ +find_match_count[many]={{current}} ᱨᱮᱭᱟᱜ {{total}} ᱡᱚᱲᱠᱚ +find_match_count[other]={{current}} ᱨᱮᱭᱟᱜ {{total}} ᱡᱚᱲᱠᱚ +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]={{limit}} ᱡᱚᱲ ᱠᱚ ᱠᱷᱚᱱ ᱰᱷᱮᱨ +find_match_count_limit[one]={{limit}} ᱡᱚᱲ ᱠᱷᱚᱱ ᱰᱷᱮᱨ +find_match_count_limit[two]={{limit}} ᱡᱚᱲ ᱠᱚ ᱠᱷᱚᱱ ᱰᱷᱮᱨ +find_match_count_limit[few]={{limit}} ᱡᱚᱲ ᱠᱚ ᱠᱷᱚᱱ ᱰᱷᱮᱨ +find_match_count_limit[many]={{limit}} ᱡᱚᱲ ᱠᱚ ᱠᱷᱚᱱ ᱰᱷᱮᱨ +find_match_count_limit[other]={{limit}} ᱡᱚᱲ ᱠᱚ ᱠᱷᱚᱱ ᱰᱷᱮᱨ +find_not_found=ᱛᱚᱯᱚᱞ ᱫᱚᱱᱚᱲ ᱵᱟᱝ ᱧᱟᱢ ᱞᱮᱱᱟ + +# Error panel labels +error_more_info=ᱵᱟᱹᱲᱛᱤ ᱞᱟᱹᱭ ᱥᱚᱫᱚᱨ +error_less_info=ᱠᱚᱢ ᱞᱟᱹᱭ ᱥᱚᱫᱚᱨ +error_close=ᱵᱚᱸᱫᱚᱭ ᱢᱮ +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=ᱠᱷᱚᱵᱚᱨ : {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=ᱵᱟᱝ : {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=ᱨᱮᱫᱽ : {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=ᱜᱟᱨ : {{line}} + +# Predefined zoom values +page_scale_width=ᱥᱟᱦᱴᱟ ᱚᱥᱟᱨ +page_scale_fit=ᱥᱟᱦᱴᱟ ᱠᱷᱟᱯ +page_scale_auto=ᱟᱡᱼᱟᱡ ᱛᱮ ᱦᱩᱰᱤᱧ ᱞᱟᱹᱴᱩ ᱛᱮᱭᱟᱨ +page_scale_actual=ᱴᱷᱤᱠ ᱢᱟᱨᱟᱝ ᱛᱮᱫ +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=ᱞᱟᱫᱮᱜ ᱠᱟᱱᱟ … + +# Loading indicator messages +loading_error=PDF ᱞᱟᱫᱮ ᱡᱚᱦᱚᱜ ᱢᱤᱫ ᱵᱷᱩᱞ ᱦᱩᱭ ᱮᱱᱟ ᱾ +invalid_file_error=ᱵᱟᱝ ᱵᱟᱛᱟᱣ ᱟᱨᱵᱟᱝᱠᱷᱟᱱ ᱰᱤᱜᱟᱹᱣ PDF ᱨᱮᱫᱽ ᱾ +missing_file_error=ᱟᱫᱟᱜ PDF ᱨᱮᱫᱽ ᱾ +unexpected_response_error=ᱵᱟᱝᱵᱩᱡᱷ ᱥᱚᱨᱵᱷᱚᱨ ᱛᱮᱞᱟ ᱾ + +rendering_error=ᱥᱟᱦᱴᱟ ᱮᱢ ᱡᱚᱦᱚᱠ ᱢᱤᱫ ᱵᱷᱩᱞ ᱦᱩᱭ ᱮᱱᱟ ᱾ + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} ᱢᱚᱱᱛᱚ ᱮᱢ] +password_label=ᱱᱚᱶᱟ PDF ᱨᱮᱫᱽ ᱡᱷᱤᱡᱽ ᱞᱟᱹᱜᱤᱫ ᱫᱟᱱᱟᱝ ᱥᱟᱵᱟᱫᱽ ᱟᱫᱮᱨ ᱢᱮ ᱾ +password_invalid=ᱵᱷᱩᱞ ᱫᱟᱱᱟᱝ ᱥᱟᱵᱟᱫᱽ ᱾ ᱫᱟᱭᱟᱠᱟᱛᱮ ᱫᱩᱦᱲᱟᱹ ᱪᱮᱥᱴᱟᱭ ᱢᱮ ᱾ +password_ok=ᱴᱷᱤᱠ +password_cancel=ᱵᱟᱹᱰᱨᱟᱹ + +printing_not_supported=ᱦᱚᱥᱤᱭᱟᱨ : ᱪᱷᱟᱯᱟ ᱱᱚᱣᱟ ᱯᱟᱱᱛᱮᱭᱟᱜ ᱫᱟᱨᱟᱭ ᱛᱮ ᱯᱩᱨᱟᱹᱣ ᱵᱟᱭ ᱜᱚᱲᱚᱣᱟᱠᱟᱱᱟ ᱾ +printing_not_ready=ᱦᱩᱥᱤᱭᱟᱹᱨ : ᱪᱷᱟᱯᱟ ᱞᱟᱹᱜᱤᱫ PDF ᱯᱩᱨᱟᱹ ᱵᱟᱭ ᱞᱟᱫᱮ ᱟᱠᱟᱱᱟ ᱾ +web_fonts_disabled=ᱣᱮᱵᱽ ᱪᱤᱠᱤ ᱵᱟᱝ ᱦᱩᱭ ᱦᱚᱪᱚ ᱠᱟᱱᱟ : ᱵᱷᱤᱛᱤᱨ ᱛᱷᱟᱯᱚᱱ PDF ᱪᱤᱠᱤ ᱵᱮᱵᱷᱟᱨ ᱵᱟᱝ ᱦᱩᱭ ᱠᱮᱭᱟ ᱾ + +# Editor +editor_free_text2.title=ᱚᱞ +editor_free_text2_label=ᱚᱞ +editor_ink2.title=ᱛᱮᱭᱟᱨ +editor_ink2_label=ᱛᱮᱭᱟᱨ + +free_text2_default_content=ᱚᱞ ᱮᱛᱦᱚᱵ ᱢᱮ … + +# Editor Parameters +editor_free_text_color=ᱨᱚᱝ +editor_free_text_size=ᱢᱟᱯ +editor_ink_color=ᱨᱚᱝ +editor_ink_thickness=ᱢᱚᱴᱟ +editor_ink_opacity=ᱟᱨᱯᱟᱨ + +# Editor aria +editor_free_text2_aria_label=ᱚᱞ ᱥᱟᱯᱲᱟᱣᱤᱭᱟᱹ +editor_ink2_aria_label=ᱛᱮᱭᱟᱨ ᱥᱟᱯᱲᱟᱣᱤᱭᱟᱹ +editor_ink_canvas_aria_label=ᱵᱮᱵᱷᱟᱨᱤᱭᱟᱹ ᱛᱮᱭᱟᱨ ᱠᱟᱫ ᱪᱤᱛᱟᱹᱨ diff --git a/media/js/pdf/web/locale/sc/viewer.properties b/media/js/pdf/web/locale/sc/viewer.properties new file mode 100644 index 0000000000..a1897560e9 --- /dev/null +++ b/media/js/pdf/web/locale/sc/viewer.properties @@ -0,0 +1,266 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=Pàgina anteriore +previous_label=S'ischeda chi b'est primu +next.title=Pàgina imbeniente +next_label=Imbeniente + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Pàgina +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages=de {{pagesCount}} +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} de {{pagesCount}}) + +zoom_out.title=Impitica +zoom_out_label=Impitica +zoom_in.title=Ismànnia +zoom_in_label=Ismànnia +zoom.title=Ismànnia +presentation_mode.title=Cola a sa modalidade de presentatzione +presentation_mode_label=Modalidade de presentatzione +open_file.title=Aberi s'archìviu +open_file_label=Abertu +print.title=Imprenta +print_label=Imprenta +download.title=Iscàrriga +download_label=Iscàrriga +bookmark.title=Visualizatzione atuale (còpia o aberi in una ventana noa) +bookmark_label=Visualizatzione atuale + +save.title=Sarva +save_label=Sarva + + +# Secondary toolbar and context menu +tools.title=Istrumentos +tools_label=Istrumentos +first_page.title=Bae a sa prima pàgina +first_page_label=Bae a sa prima pàgina +last_page.title=Bae a s'ùrtima pàgina +last_page_label=Bae a s'ùrtima pàgina +page_rotate_cw.title=Gira in sensu oràriu +page_rotate_cw_label=Gira in sensu oràriu +page_rotate_ccw.title=Gira in sensu anti-oràriu +page_rotate_ccw_label=Gira in sensu anti-oràriu + +cursor_text_select_tool.title=Ativa s'aina de seletzione de testu +cursor_text_select_tool_label=Aina de seletzione de testu +cursor_hand_tool.title=Ativa s'aina de manu +cursor_hand_tool_label=Aina de manu + +scroll_page.title=Imprea s'iscurrimentu de pàgina +scroll_page_label=Iscurrimentu de pàgina +scroll_vertical.title=Imprea s'iscurrimentu verticale +scroll_vertical_label=Iscurrimentu verticale +scroll_horizontal.title=Imprea s'iscurrimentu orizontale +scroll_horizontal_label=Iscurrimentu orizontale +scroll_wrapped.title=Imprea s'iscurrimentu continu +scroll_wrapped_label=Iscurrimentu continu + + +# Document properties dialog box +document_properties.title=Propiedades de su documentu… +document_properties_label=Propiedades de su documentu… +document_properties_file_name=Nòmine de s'archìviu: +document_properties_file_size=Mannària de s'archìviu: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} KB ({{size_b}} bytes) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} MB ({{size_b}} bytes) +document_properties_title=Tìtulu: +document_properties_author=Autoria: +document_properties_subject=Ogetu: +document_properties_keywords=Faeddos crae: +document_properties_creation_date=Data de creatzione: +document_properties_modification_date=Data de modìfica: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=Creatzione: +document_properties_producer=Produtore de PDF: +document_properties_version=Versione de PDF: +document_properties_page_count=Contu de pàginas: +document_properties_page_size=Mannària de sa pàgina: +document_properties_page_size_unit_inches=pòddighes +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=verticale +document_properties_page_size_orientation_landscape=orizontale +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Lìtera +document_properties_page_size_name_legal=Legale +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Visualizatzione web lestra: +document_properties_linearized_yes=Eja +document_properties_linearized_no=Nono +document_properties_close=Serra + +print_progress_message=Aparitzende s'imprenta de su documentu… +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=Cantzella + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=Ativa/disativa sa barra laterale +toggle_sidebar_notification2.title=Ativa/disativa sa barra laterale (su documentu cuntenet un'ischema, alligongiados o livellos) +toggle_sidebar_label=Ativa/disativa sa barra laterale +document_outline_label=Ischema de su documentu +attachments.title=Ammustra alligongiados +attachments_label=Alliongiados +layers.title=Ammustra livellos (clic dòpiu pro ripristinare totu is livellos a s'istadu predefinidu) +layers_label=Livellos +thumbs.title=Ammustra miniaturas +thumbs_label=Miniaturas +current_outline_item.title=Agata s'elementu atuale de s'ischema +current_outline_item_label=Elementu atuale de s'ischema +findbar.title=Agata in su documentu +findbar_label=Agata + +additional_layers=Livellos additzionales +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Pàgina {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=Pàgina {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=Miniatura de sa pàgina {{page}} + +# Find panel button title and messages +find_input.title=Agata +find_input.placeholder=Agata in su documentu… +find_previous.title=Agata s'ocurrèntzia pretzedente de sa fràsia +find_previous_label=S'ischeda chi b'est primu +find_next.title=Agata s'ocurrèntzia imbeniente de sa fràsia +find_next_label=Imbeniente +find_highlight=Evidèntzia totu +find_match_case_label=Distinghe intre majùsculas e minùsculas +find_match_diacritics_label=Respeta is diacrìticos +find_entire_word_label=Faeddos intreos +find_reached_top=S'est lòmpidu a su cumintzu de su documentu, si sighit dae su bàsciu +find_reached_bottom=Acabbu de su documentu, si sighit dae s'artu +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} dae {{total}} currispondèntzia +find_match_count[two]={{current}} dae {{total}} currispondèntzias +find_match_count[few]={{current}} dae {{total}} currispondèntzias +find_match_count[many]={{current}} dae {{total}} currispondèntzias +find_match_count[other]={{current}} dae {{total}} currispondèntzias +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Prus de {{limit}} currispondèntzias +find_match_count_limit[one]=Prus de {{limit}} currispondèntzia +find_match_count_limit[two]=Prus de {{limit}} currispondèntzias +find_match_count_limit[few]=Prus de {{limit}} currispondèntzias +find_match_count_limit[many]=Prus de {{limit}} currispondèntzias +find_match_count_limit[other]=Prus de {{limit}} currispondèntzias +find_not_found=Testu no agatadu + +# Error panel labels +error_more_info=Àteras informatziones +error_less_info=Prus pagu informatziones +error_close=Serra +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=Messàgiu: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Archìviu: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Lìnia: {{line}} + +# Predefined zoom values +page_scale_auto=Ingrandimentu automàticu +page_scale_actual=Mannària reale +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=Carrighende… + +# Loading indicator messages +loading_error=Faddina in sa càrriga de su PDF. +invalid_file_error=Archìviu PDF non vàlidu o corrùmpidu. +missing_file_error=Ammancat s'archìviu PDF. +unexpected_response_error=Risposta imprevista de su serbidore. + +rendering_error=Faddina in sa visualizatzione de sa pàgina. + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +password_label=Inserta sa crae pro abèrrere custu archìviu PDF. +password_invalid=Sa crae no est curreta. Torra a nche proare. +password_ok=Andat bene +password_cancel=Cantzella + +printing_not_supported=Atentzione: s'imprenta no est funtzionende de su totu in custu navigadore. +printing_not_ready=Atentzione: su PDF no est istadu carrigadu de su totu pro s'imprenta. +web_fonts_disabled=Is tipografias web sunt disativadas: is tipografias incrustadas a su PDF non podent èssere impreadas. + +# Editor +editor_free_text2.title=Testu +editor_free_text2_label=Testu +editor_ink2.title=Disinnu +editor_ink2_label=Disinnu + +free_text2_default_content=Cumintza a iscrìere… + +# Editor Parameters +editor_free_text_color=Colore +editor_free_text_size=Mannària +editor_ink_color=Colore +editor_ink_thickness=Grussària + +# Editor aria +editor_free_text2_aria_label=Editore de testu +editor_ink2_aria_label=Editore de disinnos +editor_ink_canvas_aria_label=Immàgine creada dae s’utente diff --git a/media/js/pdf/web/locale/sco/viewer.properties b/media/js/pdf/web/locale/sco/viewer.properties index d101f28fbf..3cc993551c 100644 --- a/media/js/pdf/web/locale/sco/viewer.properties +++ b/media/js/pdf/web/locale/sco/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=View The Noo tools.title=Tools tools_label=Tools first_page.title=Gang tae First Page -first_page.label=Gang tae First Page first_page_label=Gang tae First Page last_page.title=Gang tae Lest Page -last_page.label=Gang tae Lest Page last_page_label=Gang tae Lest Page page_rotate_cw.title=Rotate Clockwise -page_rotate_cw.label=Rotate Clockwise page_rotate_cw_label=Rotate Clockwise page_rotate_ccw.title=Rotate Coonterclockwise -page_rotate_ccw.label=Rotate Coonterclockwise page_rotate_ccw_label=Rotate Coonterclockwise cursor_text_select_tool.title=Enable Text Walin Tool @@ -137,7 +133,6 @@ print_progress_close=Stap # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Toggle Sidebaur -toggle_sidebar_notification.title=Toggle Sidebaur (document conteens ootline/attachments) toggle_sidebar_notification2.title=Toggle Sidebaur (document conteens ootline/attachments/layers) toggle_sidebar_label=Toggle Sidebaur document_outline.title=Kythe Document Ootline (double-click fur tae oot-fauld/in-fauld aw items) @@ -153,9 +148,6 @@ current_outline_item_label=Current Ootline Item findbar.title=Find in Document findbar_label=Find -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Page {{page}} - additional_layers=Mair Layers # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Page {{page}} @@ -230,9 +222,6 @@ page_scale_actual=Actual Size # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Mishanter - # Loading indicator messages loading=Loadin… loading_error=An mishanter tuik place while loadin the PDF. @@ -257,3 +246,4 @@ password_cancel=Stap printing_not_supported=Tak tent: Prentin isnae richt supportit by this stravaiger. printing_not_ready=Tak tent: The PDF isnae richt loadit fur prentin. web_fonts_disabled=Wab fonts are disabled: cannae yaise embeddit PDF fonts. + diff --git a/media/js/pdf/web/locale/si/viewer.properties b/media/js/pdf/web/locale/si/viewer.properties index 9ab24bb518..04dfaf4fe4 100644 --- a/media/js/pdf/web/locale/si/viewer.properties +++ b/media/js/pdf/web/locale/si/viewer.properties @@ -13,10 +13,10 @@ # limitations under the License. # Main toolbar buttons (tooltips and alt text for images) -previous.title=මීට පෙර පිටුව -previous_label=පෙර -next.title=මීළඟ පිටුව -next_label=මීළඟ +previous.title=කලින් පිටුව +previous_label=කලින් +next.title=ඊළඟ පිටුව +next_label=ඊළඟ # LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. page.title=පිටුව @@ -26,69 +26,70 @@ page.title=පිටුව # will be replaced by a number representing the currently visible page, # respectively a number representing the total number of pages in the document. -zoom_out.title=කුඩා කරන්න -zoom_out_label=කුඩා කරන්න -zoom_in.title=විශාල කරන්න -zoom_in_label=විශාල කරන්න -zoom.title=විශාලණය -presentation_mode.title=ඉදිරිපත්කිරීම් ප්‍රකාරය වෙත මාරුවන්න -presentation_mode_label=ඉදිරිපත්කිරීම් ප්‍රකාරය -open_file.title=ගොනුව විවෘත කරන්න -open_file_label=විවෘත කරන්න +zoom_out.title=කුඩාලනය +zoom_out_label=කුඩාලනය +zoom_in.title=විශාලනය +zoom_in_label=විශාලනය +zoom.title=විශාල කරන්න +presentation_mode.title=සමර්පණ ප්‍රකාරය වෙත මාරුවන්න +presentation_mode_label=සමර්පණ ප්‍රකාරය +open_file.title=ගොනුව අරින්න +open_file_label=අරින්න print.title=මුද්‍රණය print_label=මුද්‍රණය download.title=බාගන්න download_label=බාගන්න -bookmark.title=දැනට ඇති දසුන (පිටපත් කරන්න හෝ නව කවුළුවක විවෘත කරන්න) -bookmark_label=දැනට ඇති දසුන +bookmark.title=වත්මන් දැක්ම (පිටපත් කරන්න හෝ නව කවුළුවක අරින්න) +bookmark_label=වත්මන් දැක්ම # Secondary toolbar and context menu tools.title=මෙවලම් tools_label=මෙවලම් first_page.title=මුල් පිටුවට යන්න -first_page.label=මුල් පිටුවට යන්න first_page_label=මුල් පිටුවට යන්න last_page.title=අවසන් පිටුවට යන්න -last_page.label=අවසන් පිටුවට යන්න last_page_label=අවසන් පිටුවට යන්න -page_rotate_cw.title=දක්ශිණාවර්තව භ්‍රමණය -page_rotate_cw.label=දක්ශිණාවර්තව භ්‍රමණය -page_rotate_cw_label=දක්ශිණාවර්තව භ්‍රමණය -page_rotate_ccw.title=වාමාවර්තව භ්‍රමණය -page_rotate_ccw.label=වාමාවර්තව භ්‍රමණය -page_rotate_ccw_label=වාමාවර්තව භ්‍රමණය +cursor_text_select_tool.title=පෙළ තේරීමේ මෙවලම සබල කරන්න +cursor_text_select_tool_label=පෙළ තේරීමේ මෙවලම +cursor_hand_tool.title=අත් මෙවලම සබල කරන්න cursor_hand_tool_label=අත් මෙවලම +scroll_page.title=පිටුව අනුචලනය භාවිතය +scroll_page_label=පිටුව අනුචලනය +scroll_vertical.title=සිරස් අනුචලනය භාවිතය +scroll_vertical_label=සිරස් අනුචලනය +scroll_horizontal.title=තිරස් අනුචලනය භාවිතය +scroll_horizontal_label=තිරස් අනුචලනය # Document properties dialog box -document_properties.title=ලේඛන වත්කම්... -document_properties_label=ලේඛන වත්කම්... -document_properties_file_name=ගොනු නම: -document_properties_file_size=ගොනු ප්‍රමාණය: +document_properties.title=ලේඛනයේ ගුණාංග… +document_properties_label=ලේඛනයේ ගුණාංග… +document_properties_file_name=ගොනුවේ නම: +document_properties_file_size=ගොනුවේ ප්‍රමාණය: # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" # will be replaced by the PDF file size in kilobytes, respectively in bytes. -document_properties_kb={{size_kb}} KB ({{size_b}} බයිට) +document_properties_kb=කි.බ. {{size_kb}} (බයිට {{size_b}}) # LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" # will be replaced by the PDF file size in megabytes, respectively in bytes. -document_properties_mb={{size_mb}} MB ({{size_b}} බයිට) -document_properties_title=සිරස්තලය: -document_properties_author=කතෲ +document_properties_mb=මෙ.බ. {{size_mb}} (බයිට {{size_b}}) +document_properties_title=සිරැසිය: +document_properties_author=කතෘ: document_properties_subject=මාතෘකාව: -document_properties_keywords=යතුරු වදන්: -document_properties_creation_date=නිර්මිත දිනය: -document_properties_modification_date=වෙනස්කල දිනය: +document_properties_keywords=මූල පද: +document_properties_creation_date=සෑදූ දිනය: +document_properties_modification_date=සංශෝධිත දිනය: # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" # will be replaced by the creation/modification date, and time, of the PDF file. document_properties_date_string={{date}}, {{time}} -document_properties_creator=නිර්මාපක: -document_properties_producer=PDF නිශ්පාදක: -document_properties_version=PDF නිකුතුව: +document_properties_creator=නිර්මාතෘ: +document_properties_producer=පීඩීඑෆ් සම්පාදක: +document_properties_version=පීඩීඑෆ් අනුවාදය: document_properties_page_count=පිටු ගණන: -document_properties_page_size=පිටුවේ විශාලත්වය: +document_properties_page_size=පිටුවේ තරම: document_properties_page_size_unit_inches=අඟල් -document_properties_page_size_unit_millimeters=මිමි +document_properties_page_size_unit_millimeters=මි.මී. document_properties_page_size_orientation_portrait=සිරස් document_properties_page_size_orientation_landscape=තිරස් document_properties_page_size_name_a3=A3 @@ -103,12 +104,12 @@ document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} document_properties_page_size_dimension_name_string={{width}}×{{height}}{{unit}}{{name}}{{orientation}} # LOCALIZATION NOTE (document_properties_linearized): The linearization status of # the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=වේගවත් ජාල දසුන: +document_properties_linearized=වේගවත් වියමන දැක්ම: document_properties_linearized_yes=ඔව් document_properties_linearized_no=නැහැ document_properties_close=වසන්න -print_progress_message=ලේඛනය මුද්‍රණය සඳහා සූදානම් කරමින්… +print_progress_message=මුද්‍රණය සඳහා ලේඛනය සූදානම් වෙමින්… # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by # a numerical per cent value. print_progress_percent={{progress}}% @@ -117,35 +118,38 @@ print_progress_close=අවලංගු කරන්න # Tooltips and alt text for side panel toolbar buttons # (the _label strings are alt text for the buttons, the .title strings are # tooltips) -toggle_sidebar.title=පැති තීරුවට මාරුවන්න -toggle_sidebar_label=පැති තීරුවට මාරුවන්න -document_outline_label=ලේඛනයේ පිට මායිම -attachments.title=ඇමිණුම් පෙන්වන්න -attachments_label=ඇමිණුම් +document_outline_label=ලේඛනයේ වටසන +attachments.title=ඇමුණුම් පෙන්වන්න +attachments_label=ඇමුණුම් +layers.title=ස්තර පෙන්වන්න (සියළු ස්තර පෙරනිමි තත්‍වයට යළි සැකසීමට දෙවරක් ඔබන්න) +layers_label=ස්තර thumbs.title=සිඟිති රූ පෙන්වන්න thumbs_label=සිඟිති රූ -findbar.title=ලේඛනය තුළ සොයන්න +findbar.title=ලේඛනයෙහි සොයන්න findbar_label=සොයන්න +additional_layers=අතිරේක ස්තර +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=පිටුව {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. thumb_page_title=පිටුව {{page}} # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page # number. -thumb_page_canvas=පිටුවෙ සිඟිත රූව {{page}} +thumb_page_canvas=පිටුවේ සිඟිත රූව {{page}} # Find panel button title and messages find_input.title=සොයන්න -find_previous.title=මේ වාක්‍ය ඛණ්ඩය මීට පෙර යෙදුණු ස්ථානය සොයන්න -find_previous_label=පෙර: -find_next.title=මේ වාක්‍ය ඛණ්ඩය මීළඟට යෙදෙන ස්ථානය සොයන්න -find_next_label=මීළඟ +find_input.placeholder=ලේඛනයේ සොයන්න… +find_previous.title=මෙම වැකිකඩ කලින් යෙදුණු ස්ථානය සොයන්න +find_previous_label=කලින් +find_next.title=මෙම වැකිකඩ ඊළඟට යෙදෙන ස්ථානය සොයන්න +find_next_label=ඊළඟ find_highlight=සියල්ල උද්දීපනය -find_match_case_label=අකුරු ගළපන්න -find_entire_word_label=සම්පූර්ණ වචන -find_reached_top=පිටුවේ ඉහළ කෙළවරට ලගාවිය, පහළ සිට ඉදිරියට යමින් -find_reached_bottom=පිටුවේ පහළ කෙළවරට ලගාවිය, ඉහළ සිට ඉදිරියට යමින් +find_entire_word_label=සමස්ත වචන +find_reached_top=ලේඛනයේ මුදුනට ළඟා විය, පහළ සිට ඉහළට +find_reached_bottom=ලේඛනයේ අවසානයට ළඟා විය, ඉහළ සිට පහළට # LOCALIZATION NOTE (find_match_count): The supported plural forms are # [one|two|few|many|other], with [other] as the default value. # "{{current}}" and "{{total}}" will be replaced by a number representing the @@ -154,55 +158,80 @@ find_reached_bottom=පිටුවේ පහළ කෙළවරට ලගාව # LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are # [zero|one|two|few|many|other], with [other] as the default value. # "{{limit}}" will be replaced by a numerical value. -find_match_count_limit[zero]=ගැලපුම් {{limit}} ට වඩා -find_not_found=ඔබ සෙව් වචන හමු නොවීය +find_match_count_limit[zero]=ගැළපීම් {{limit}} කට වඩා +find_match_count_limit[two]=ගැළපුම් {{limit}} කට වඩා +find_match_count_limit[few]=ගැළපුම් {{limit}} කට වඩා +find_match_count_limit[many]=ගැළපුම් {{limit}} කට වඩා +find_match_count_limit[other]=ගැළපුම් {{limit}} කට වඩා +find_not_found=වැකිකඩ හමු නොවිණි # Error panel labels -error_more_info=බොහෝ තොරතුරු +error_more_info=තව තොරතුරු error_less_info=අවම තොරතුරු error_close=වසන්න # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be # replaced by the PDF.JS version and build ID. -error_version_info=PDF.js v{{version}} (නිකුතුව: {{build}}) +error_version_info=පීඩීඑෆ්.js v{{version}} (තැනීම: {{build}}) # LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an # english string describing the error. error_message=පණිවිඩය: {{message}} # LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack # trace. -error_stack=Stack: {{stack}} # LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename error_file=ගොනුව: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=පේළිය: {{line}} -rendering_error=පිටුව රෙන්ඩර් විමේදි ගැටලුවක් හට ගැනුණි. # Predefined zoom values page_scale_width=පිටුවේ පළල -page_scale_fit=පිටුවට සුදුසු ලෙස -page_scale_auto=ස්වයංක්‍රීය විශාලණය -page_scale_actual=නියමිත ප්‍රමාණය +page_scale_auto=ස්වයංක්‍රීය විශාලනය +page_scale_actual=සැබෑ ප්‍රමාණය # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=දෝෂය +loading=පූරණය වෙමින්… +loading_error=පීඩීඑෆ් පූරණය කිරීමේදී දෝෂයක් සිදු විය. +invalid_file_error=වලංගු නොවන හෝ හානිවූ පීඩීඑෆ් ගොනුවකි. +missing_file_error=මඟහැරුණු පීඩීඑෆ් ගොනුවකි. +unexpected_response_error=අනපේක්‍ෂිත සේවාදායක ප්‍රතිචාරයකි. -loading_error=PDF පූරණය විමේදි දෝෂයක් හට ගැනුණි. -invalid_file_error=දූශිත හෝ සාවද්‍ය PDF ගොනුව. -missing_file_error=නැතිවූ PDF ගොනුව. -unexpected_response_error=බලාපොරොත්තු නොවූ සේවාදායක ප්‍රතිචාරය. +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). # Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}} විස්තරය] -password_label=මෙම PDF ගොනුව විවෘත කිරීමට මුරපදය ඇතුළත් කරන්න. -password_invalid=වැරදි මුරපදයක්. කරුණාකර නැවත උත්සහ කරන්න. +password_label=මෙම පීඩීඑෆ් ගොනුව විවෘත කිරීමට මුරපදය යොදන්න. +password_invalid=වැරදි මුරපදයකි. නැවත උත්සාහ කරන්න. password_ok=හරි -password_cancel=එපා +password_cancel=අවලංගු -printing_not_supported=අවවාදයයි: මෙම ගවේශකය මුද්‍රණය සඳහා සම්පූර්ණයෙන් සහය නොදක්වයි. -printing_not_ready=අවවාදයයි: මුද්‍රණය සඳහා PDF සම්පූර්ණයෙන් පූර්ණය වී නොමැත. -web_fonts_disabled=ජාල අකුරු අක්‍රීයයි: තිළැලි PDF අකුරු භාවිත කළ නොහැක. +printing_not_supported=අවවාදයයි: මෙම අතිරික්සුව මුද්‍රණය සඳහා හොඳින් සහාය නොදක්වයි. +printing_not_ready=අවවාදයයි: මුද්‍රණයට පීඩීඑෆ් ගොනුව සම්පූර්ණයෙන් පූරණය වී නැත. +web_fonts_disabled=වියමන අකුරු අබලයි: පීඩීඑෆ් වෙත කාවැද්දූ අකුරු භාවිතා කළ නොහැකිය. + +# Editor +editor_none_label=සංස්කරණය අබල කරන්න + +free_text_default_content=පෙළ යොදන්න… + +# Editor +editor_free_text2.title=පෙළ +editor_free_text2_label=පෙළ + + +# Editor Parameters +editor_free_text_color=වර්ණය +editor_free_text_size=තරම +editor_ink_color=වර්ණය +editor_ink_thickness=ඝණකම + +# Editor aria +editor_free_text_aria_label=FreeText සංස්කරකය + +# Editor aria +editor_free_text2_aria_label=වදන් සකසනය diff --git a/media/js/pdf/web/locale/sk/viewer.properties b/media/js/pdf/web/locale/sk/viewer.properties index b58f4c42c5..32caf381d4 100644 --- a/media/js/pdf/web/locale/sk/viewer.properties +++ b/media/js/pdf/web/locale/sk/viewer.properties @@ -44,20 +44,24 @@ download_label=Stiahnuť bookmark.title=Aktuálne zobrazenie (kopírovať alebo otvoriť v novom okne) bookmark_label=Aktuálne zobrazenie +save.title=Uložiť +save_label=Uložiť +bookmark1.title=Aktuálna stránka (zobraziť adresu URL z aktuálnej stránky) +bookmark1_label=Aktuálna stránka + +open_in_app.title=Otvoriť v aplikácii +open_in_app_label=Otvoriť v aplikácii + # Secondary toolbar and context menu tools.title=Nástroje tools_label=Nástroje first_page.title=Prejsť na prvú stranu -first_page.label=Prejsť na prvú stranu first_page_label=Prejsť na prvú stranu last_page.title=Prejsť na poslednú stranu -last_page.label=Prejsť na poslednú stranu last_page_label=Prejsť na poslednú stranu page_rotate_cw.title=Otočiť v smere hodinových ručičiek -page_rotate_cw.label=Otočiť v smere hodinových ručičiek page_rotate_cw_label=Otočiť v smere hodinových ručičiek page_rotate_ccw.title=Otočiť proti smeru hodinových ručičiek -page_rotate_ccw.label=Otočiť proti smeru hodinových ručičiek page_rotate_ccw_label=Otočiť proti smeru hodinových ručičiek cursor_text_select_tool.title=Povoliť výber textu @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Výber textu cursor_hand_tool.title=Povoliť nástroj ruka cursor_hand_tool_label=Nástroj ruka +scroll_page.title=Použiť rolovanie po stránkach +scroll_page_label=Rolovanie po stránkach scroll_vertical.title=Používať zvislé posúvanie scroll_vertical_label=Zvislé posúvanie scroll_horizontal.title=Používať vodorovné posúvanie @@ -130,14 +136,13 @@ document_properties_close=Zavrieť print_progress_message=Príprava dokumentu na tlač… # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by # a numerical per cent value. -print_progress_percent={{progress}}% +print_progress_percent={{progress}} % print_progress_close=Zrušiť # Tooltips and alt text for side panel toolbar buttons # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Prepnúť bočný panel -toggle_sidebar_notification.title=Prepnúť bočný panel (dokument obsahuje osnovu/prílohy) toggle_sidebar_notification2.title=Prepnúť bočný panel (dokument obsahuje osnovu/prílohy/vrstvy) toggle_sidebar_label=Prepnúť bočný panel document_outline.title=Zobraziť osnovu dokumentu (dvojitým kliknutím rozbalíte/zbalíte všetky položky) @@ -153,9 +158,6 @@ current_outline_item_label=Aktuálna položka v osnove findbar.title=Hľadať v dokumente findbar_label=Hľadať -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Strana {{page}} - additional_layers=Ďalšie vrstvy # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Strana {{page}} @@ -176,6 +178,7 @@ find_next.title=Vyhľadať ďalší výskyt reťazca find_next_label=Ďalšie find_highlight=Zvýrazniť všetky find_match_case_label=Rozlišovať veľkosť písmen +find_match_diacritics_label=Rozlišovať diakritiku find_entire_word_label=Celé slová find_reached_top=Bol dosiahnutý začiatok stránky, pokračuje sa od konca find_reached_bottom=Bol dosiahnutý koniec stránky, pokračuje sa od začiatku @@ -219,7 +222,6 @@ error_stack=Zásobník: {{stack}} error_file=Súbor: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Riadok: {{line}} -rendering_error=Pri vykresľovaní stránky sa vyskytla chyba. # Predefined zoom values page_scale_width=Na šírku strany @@ -231,15 +233,16 @@ page_scale_actual=Skutočná veľkosť page_scale_percent={{scale}} % # Loading indicator messages -loading_error_indicator=Chyba +loading=Načítava sa… # Loading indicator messages -loading=Načítava sa… loading_error=Počas načítavania dokumentu PDF sa vyskytla chyba. invalid_file_error=Neplatný alebo poškodený súbor PDF. missing_file_error=Chýbajúci súbor PDF. unexpected_response_error=Neočakávaná odpoveď zo servera. +rendering_error=Pri vykresľovaní stránky sa vyskytla chyba. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Zrušiť printing_not_supported=Upozornenie: tlač nie je v tomto prehliadači plne podporovaná. printing_not_ready=Upozornenie: súbor PDF nie je plne načítaný pre tlač. web_fonts_disabled=Webové písma sú vypnuté: nie je možné použiť písma vložené do súboru PDF. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Kreslenie +editor_ink2_label=Kresliť + +free_text2_default_content=Začnite písať… + +# Editor Parameters +editor_free_text_color=Farba +editor_free_text_size=Veľkosť +editor_ink_color=Farba +editor_ink_thickness=Hrúbka +editor_ink_opacity=Priehľadnosť + +# Editor aria +editor_free_text2_aria_label=Textový editor +editor_ink2_aria_label=Editor kreslenia +editor_ink_canvas_aria_label=Obrázok vytvorený používateľom diff --git a/media/js/pdf/web/locale/skr/viewer.properties b/media/js/pdf/web/locale/skr/viewer.properties new file mode 100644 index 0000000000..23bf8496f0 --- /dev/null +++ b/media/js/pdf/web/locale/skr/viewer.properties @@ -0,0 +1,282 @@ +# Copyright 2012 Mozilla Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Main toolbar buttons (tooltips and alt text for images) +previous.title=پچھلا ورقہ +previous_label=پچھلا +next.title=اڳلا ورقہ +next_label=اڳلا + +# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=ورقہ +# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number +# representing the total number of pages in the document. +of_pages={{pagesCount}} دا +# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" +# will be replaced by a number representing the currently visible page, +# respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} دا {{pagesCount}}) + +zoom_out.title=زوم آؤٹ +zoom_out_label=زوم آؤٹ +zoom_in.title=زوم اِن +zoom_in_label=زوم اِن +zoom.title=زوم +presentation_mode.title=پریزنٹیشن موڈ تے سوئچ کرو +presentation_mode_label=پریزنٹیشن موڈ +open_file.title=فائل کھولو +open_file_label=کھولو +print.title=چھاپو +print_label=چھاپو +download.title=ڈاؤن لوڈ +download_label=ڈاؤن لوڈ +bookmark.title=حالیہ نظارہ (نویں ونڈو وِچ نقل کرو یا کھولو) +bookmark_label=حالیہ نظارہ + +save.title=ہتھیکڑا کرو +save_label=ہتھیکڑا کرو +bookmark1.title=موجودہ ورقہ (موجودہ ورقے کنوں یوآرایل ݙیکھو) +bookmark1_label=موجودہ ورقہ + +open_in_app.title=ایپ وچ کھولو +open_in_app_label=ایپ وچ کھولو + +# Secondary toolbar and context menu +tools.title=اوزار +tools_label=اوزار +first_page.title=پہلے ورقے تے ونڄو +first_page_label=پہلے ورقے تے ونڄو +last_page.title=چھیکڑی ورقے تے ونڄو +last_page_label=چھیکڑی ورقے تے ونڄو +page_rotate_cw.title=گھڑی وانگوں گھماؤ +page_rotate_cw_label=گھڑی وانگوں گھماؤ +page_rotate_ccw.title=گھڑی تے اُپٹھ گھماؤ +page_rotate_ccw_label=گھڑی تے اُپٹھ گھماؤ + +cursor_text_select_tool.title=متن منتخب کݨ والا آلہ فعال بݨاؤ +cursor_text_select_tool_label=متن منتخب کرݨ والا آلہ +cursor_hand_tool.title=ہینڈ ٹول فعال بݨاؤ +cursor_hand_tool_label=ہینڈ ٹول + +scroll_page.title=پیج سکرولنگ استعمال کرو +scroll_page_label=پیج سکرولنگ +scroll_vertical.title=عمودی سکرولنگ استعمال کرو +scroll_vertical_label=عمودی سکرولنگ +scroll_horizontal.title=افقی سکرولنگ استعمال کرو +scroll_horizontal_label=افقی سکرولنگ +scroll_wrapped.title=ویڑھی ہوئی سکرولنگ استعمال کرو +scroll_wrapped_label=وہڑھی ہوئی سکرولنگ + +spread_none.title=پیج سپریڈز وِچ شامل نہ تھیوو۔ +spread_none_label=کوئی پولھ کائنی +spread_odd.title=طاق نمبر والے ورقیاں دے نال شروع تھیوݨ والے پیج سپریڈز وِچ شامل تھیوو۔ +spread_odd_label=تاک پھیلاؤ +spread_even.title=جفت نمر والے ورقیاں نال شروع تھیوݨ والے پیج سپریڈز وِ شامل تھیوو۔ +spread_even_label=جفت پھیلاؤ + +# Document properties dialog box +document_properties.title=دستاویز خواص… +document_properties_label=دستاویز خواص … +document_properties_file_name=فائل دا ناں: +document_properties_file_size=فائل دا سائز: +# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" +# will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} کے بی ({{size_b}} بائٹس) +# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" +# will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} ایم بی ({{size_b}} بائٹس) +document_properties_title=عنوان: +document_properties_author=تخلیق کار: +document_properties_subject=موضوع: +document_properties_keywords=کلیدی الفاظ: +document_properties_creation_date=تخلیق دی تاریخ: +document_properties_modification_date=ترمیم دی تاریخ: +# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" +# will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=تخلیق کار: +document_properties_producer=PDF پیدا کار: +document_properties_version=PDF ورژن: +document_properties_page_count=ورقہ شماری: +document_properties_page_size=ورقہ دی سائز: +document_properties_page_size_unit_inches=وِچ +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=عمودی انداز +document_properties_page_size_orientation_landscape=افقى انداز +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=لیٹر +document_properties_page_size_name_legal=قنونی +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=تکھا ویب نظارہ: +document_properties_linearized_yes=جیا +document_properties_linearized_no=کو +document_properties_close=بند کرو + +print_progress_message=چھاپݨ کیتے دستاویز تیار تھیندے پئے ہن … +# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by +# a numerical per cent value. +print_progress_percent={{progress}}% +print_progress_close=منسوخ کرو + +# Tooltips and alt text for side panel toolbar buttons +# (the _label strings are alt text for the buttons, the .title strings are +# tooltips) +toggle_sidebar.title=سائیڈ بار ٹوگل کرو +toggle_sidebar_notification2.title=سائیڈ بار ٹوگل کرو (دستاویز وِچ آؤٹ لائن/ منسلکات/ پرتاں شامل ہن) +toggle_sidebar_label=سائیڈ بار ٹوگل کرو +document_outline.title=دستاویز دا خاکہ ݙکھاؤ (تمام آئٹمز کوں پھیلاوݨ/سنگوڑݨ کیتے ڈبل کلک کرو) +document_outline_label=دستاویز آؤٹ لائن +attachments.title=نتھیاں ݙکھاؤ +attachments_label=منسلکات +layers.title=پرتاں ݙکھاؤ (تمام پرتاں کوں ڈیفالٹ حالت وِچ دوبارہ ترتیب ݙیوݨ کیتے ڈبل کلک کرو) +layers_label=پرتاں +thumbs.title=تھمبنیل ݙکھاؤ +thumbs_label=تھمبنیلز +current_outline_item.title=موجودہ آؤٹ لائن آئٹم لبھو +current_outline_item_label=موجودہ آؤٹ لائن آئٹم +findbar.title=دستاویز وِچ لبھو +findbar_label=لبھو + +additional_layers=اضافی پرتاں +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=ورقہ {{page}} +# Thumbnails panel item (tooltip and alt text for images) +# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page +# number. +thumb_page_title=ورقہ {{page}} +# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page +# number. +thumb_page_canvas=ورقے دا تھمبنیل {{page}} + +# Find panel button title and messages +find_input.title=لبھو +find_input.placeholder=دستاویز وِچ لبھو … +find_previous.title=فقرے دا پچھلا واقعہ لبھو +find_previous_label=پچھلا +find_next.title=فقرے دا اڳلا واقعہ لبھو +find_next_label=اڳلا +find_highlight=تمام نشابر کرو +find_match_case_label=حروف مشابہ کرو +find_match_diacritics_label=ڈائیکرٹکس مشابہ کرو +find_entire_word_label=تمام الفاظ +find_reached_top=ورقے دے شروع تے پُج ڳیا، تلوں جاری کیتا ڳیا +find_reached_bottom=ورقے دے پاند تے پُڄ ڳیا، اُتوں شروع کیتا ڳیا +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ جمع (کل) ]} +find_match_count[one]={{current}} دا {{total}} موازنہ کرو +find_match_count[two]={{current}} دا {{total}} موازنہ +find_match_count[few]={{current}} دا {{total}} موازنہ +find_match_count[many]={{current}} دا {{total}} موازنہ +find_match_count[other]={{current}} دا {{total}} موازنہ +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ جمع (حد) ]} +find_match_count_limit[zero]={{limit}} کنوں زیادہ مماثلتاں۔ +find_match_count_limit[one]={{limit}} مماثل کنوں ودھ +find_match_count_limit[two]={{limit}} کنوں زیادہ مماثلتاں۔ +find_match_count_limit[few]={{limit}} مماثلاں کنوں ودھ +find_match_count_limit[many]={{limit}} مماثلاں کنوں ودھ +find_match_count_limit[other]={{limit}} مماثلاں کنوں ودھ +find_not_found=فقرہ نئیں ملیا + +# Error panel labels +error_more_info=ودھیک معلومات +error_less_info=گھٹ معلومات +error_close=بند کرو +# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be +# replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (بݨاؤ: {{build}}) +# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an +# english string describing the error. +error_message=سنیہا: {{message}} +# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack +# trace. +error_stack=سٹیک: {{stack}} +# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=فائل: {{file}} +# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=لائن: {{line}} + +# Predefined zoom values +page_scale_width=ورقے دی چوڑائی +page_scale_fit=ورقہ فٹنگ +page_scale_auto=آپوں آپ زوم +page_scale_actual=اصل میچا +# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a +# numerical scale value. +page_scale_percent={{scale}}% + +# Loading indicator messages +loading=لوڈ تھیندا پئے۔۔۔ + +# Loading indicator messages +loading_error=PDF لوڈ کریندے ویلھے نقص آ ڳیا۔ +invalid_file_error=غلط یا خراب شدہ PDF فائل۔ +missing_file_error=PDF فائل غائب ہے۔ +unexpected_response_error=سرور دا غیر متوقع جواب۔ + +rendering_error=ورقہ رینڈر کریندے ویلھے ہک خرابی پیش آڳئی۔ + +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + +# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. +# "{{type}}" will be replaced with an annotation type from a list defined in +# the PDF spec (32000-1:2008 Table 169 – Annotation types). +# Some common types are e.g.: "Check", "Text", "Comment", "Note" +text_annotation_type.alt=[{{type}} تشریح] +password_label=ایہ PDF فائل کھولݨ کیتے پاس ورڈ درج کرو۔ +password_invalid=غلط پاس ورڈ: براہ مہربانی ولدا کوشش کرو۔ +password_ok=ٹھیک ہے +password_cancel=منسوخ کرو + +printing_not_supported=چتاوݨی: چھپائی ایں براؤزر تے پوری طراں معاونت شدہ کائنی۔ +printing_not_ready=چتاوݨی: PDF چھپائی کیتے پوری طراں لوڈ نئیں تھئی۔ +web_fonts_disabled=ویب فونٹس غیر فعال ہن: ایمبیڈڈ PDF فونٹس استعمال کرݨ کنوں قاصر ہن + +# Editor +editor_free_text2.title=متن +editor_free_text2_label=متن +editor_ink2.title=چھکو +editor_ink2_label=چھکو + +free_text2_default_content=ٹائپنگ شروع کرو … + +# Editor Parameters +editor_free_text_color=رنگ +editor_free_text_size=سائز +editor_ink_color=رنگ +editor_ink_thickness=ٹھولھ +editor_ink_opacity=دھندلاپن + +# Editor aria +editor_free_text2_aria_label=ٹیکسٹ ایڈیٹر +editor_ink2_aria_label=ڈرا ایڈیٹر +editor_ink_canvas_aria_label=صارف دی بݨائی ہوئی تصویر diff --git a/media/js/pdf/web/locale/sl/viewer.properties b/media/js/pdf/web/locale/sl/viewer.properties index aacf99554d..f61e69a72a 100644 --- a/media/js/pdf/web/locale/sl/viewer.properties +++ b/media/js/pdf/web/locale/sl/viewer.properties @@ -44,20 +44,24 @@ download_label=Prenesi bookmark.title=Trenutni pogled (kopiraj ali odpri v novem oknu) bookmark_label=Trenutni pogled +save.title=Shrani +save_label=Shrani +bookmark1.title=Trenutna stran (prikaži URL, ki vodi do trenutne strani) +bookmark1_label=Na trenutno stran + +open_in_app.title=Odpri v programu +open_in_app_label=Odpri v programu + # Secondary toolbar and context menu tools.title=Orodja tools_label=Orodja first_page.title=Pojdi na prvo stran -first_page.label=Pojdi na prvo stran first_page_label=Pojdi na prvo stran last_page.title=Pojdi na zadnjo stran -last_page.label=Pojdi na zadnjo stran last_page_label=Pojdi na zadnjo stran page_rotate_cw.title=Zavrti v smeri urnega kazalca -page_rotate_cw.label=Zavrti v smeri urnega kazalca page_rotate_cw_label=Zavrti v smeri urnega kazalca page_rotate_ccw.title=Zavrti v nasprotni smeri urnega kazalca -page_rotate_ccw.label=Zavrti v nasprotni smeri urnega kazalca page_rotate_ccw_label=Zavrti v nasprotni smeri urnega kazalca cursor_text_select_tool.title=Omogoči orodje za izbor besedila @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Orodje za izbor besedila cursor_hand_tool.title=Omogoči roko cursor_hand_tool_label=Roka +scroll_page.title=Uporabi drsenje po strani +scroll_page_label=Drsenje po strani scroll_vertical.title=Uporabi navpično drsenje scroll_vertical_label=Navpično drsenje scroll_horizontal.title=Uporabi vodoravno drsenje @@ -137,7 +143,6 @@ print_progress_close=Prekliči # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Preklopi stransko vrstico -toggle_sidebar_notification.title=Preklopi stransko vrstico (dokument vsebuje oris/priponke) toggle_sidebar_notification2.title=Preklopi stransko vrstico (dokument vsebuje oris/priponke/plasti) toggle_sidebar_label=Preklopi stransko vrstico document_outline.title=Prikaži oris dokumenta (dvokliknite za razširitev/strnitev vseh predmetov) @@ -153,9 +158,6 @@ current_outline_item_label=Trenutni predmet orisa findbar.title=Iskanje po dokumentu findbar_label=Najdi -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Stran {{page}} - additional_layers=Dodatne plasti # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Stran {{page}} @@ -176,6 +178,7 @@ find_next.title=Najdi naslednjo ponovitev iskanega find_next_label=Najdi naprej find_highlight=Označi vse find_match_case_label=Razlikuj velike/male črke +find_match_diacritics_label=Razlikuj diakritične znake find_entire_word_label=Cele besede find_reached_top=Dosežen začetek dokumenta iz smeri konca find_reached_bottom=Doseženo konec dokumenta iz smeri začetka @@ -219,7 +222,6 @@ error_stack=Sklad: {{stack}} error_file=Datoteka: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Vrstica: {{line}} -rendering_error=Med pripravljanjem strani je prišlo do napake! # Predefined zoom values page_scale_width=Širina strani @@ -231,15 +233,16 @@ page_scale_actual=Dejanska velikost page_scale_percent={{scale}} % # Loading indicator messages -loading_error_indicator=Napaka +loading=Nalaganje … # Loading indicator messages -loading=Nalaganje … loading_error=Med nalaganjem datoteke PDF je prišlo do napake. invalid_file_error=Neveljavna ali pokvarjena datoteka PDF. missing_file_error=Ni datoteke PDF. unexpected_response_error=Nepričakovan odgovor strežnika. +rendering_error=Med pripravljanjem strani je prišlo do napake! + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Prekliči printing_not_supported=Opozorilo: ta brskalnik ne podpira vseh možnosti tiskanja. printing_not_ready=Opozorilo: PDF ni v celoti naložen za tiskanje. web_fonts_disabled=Spletne pisave so onemogočene: vgradnih pisav za PDF ni mogoče uporabiti. + +# Editor +editor_free_text2.title=Besedilo +editor_free_text2_label=Besedilo +editor_ink2.title=Riši +editor_ink2_label=Riši + +free_text2_default_content=Začnite tipkati … + +# Editor Parameters +editor_free_text_color=Barva +editor_free_text_size=Velikost +editor_ink_color=Barva +editor_ink_thickness=Debelina +editor_ink_opacity=Neprosojnost + +# Editor aria +editor_free_text2_aria_label=Urejevalnik besedila +editor_ink2_aria_label=Urejevalnik risanja +editor_ink_canvas_aria_label=Uporabnikova slika diff --git a/media/js/pdf/web/locale/son/viewer.properties b/media/js/pdf/web/locale/son/viewer.properties index 4f16cd96ca..d4b0d2437c 100644 --- a/media/js/pdf/web/locale/son/viewer.properties +++ b/media/js/pdf/web/locale/son/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Sohõ gunaroo tools.title=Goyjinawey tools_label=Goyjinawey first_page.title=Koy moo jinaa ga -first_page.label=Koy moo jinaa ga first_page_label=Koy moo jinaa ga last_page.title=Koy moo koraa ga -last_page.label=Koy moo koraa ga last_page_label=Koy moo koraa ga page_rotate_cw.title=Kuubi kanbe guma here -page_rotate_cw.label=Kuubi kanbe guma here page_rotate_cw_label=Kuubi kanbe guma here page_rotate_ccw.title=Kuubi kanbe wowa here -page_rotate_ccw.label=Kuubi kanbe wowa here page_rotate_ccw_label=Kuubi kanbe wowa here @@ -97,7 +93,6 @@ print_progress_close=Naŋ # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Kanjari ceraw zuu -toggle_sidebar_notification.title=Kanjari ceraw-zuu (takaddaa goo nda filla-boŋ/hangandiyaŋ) toggle_sidebar_label=Kanjari ceraw zuu document_outline.title=Takaddaa korfur alhaaloo cebe (naagu cee hinka ka haya-izey kul hayandi/kankamandi) document_outline_label=Takadda filla-boŋ @@ -157,9 +152,6 @@ page_scale_actual=Adadu cimi # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Firka - loading_error=Firka bangay kaŋ PDF goo ma zumandi. invalid_file_error=PDF tuku laala wala laybante. missing_file_error=PDF tuku kumante. @@ -178,3 +170,4 @@ password_cancel=Naŋ printing_not_supported=Yaamar: Karyan ši tee ka timme nda ceecikaa woo. printing_not_ready=Yaamar: PDF ši zunbu ka timme karyan še. web_fonts_disabled=Interneti šigirawey kay: ši hin ka goy nda PDF šigira hurantey. + diff --git a/media/js/pdf/web/locale/sq/viewer.properties b/media/js/pdf/web/locale/sq/viewer.properties index 62fb33ccd5..45bfb39d03 100644 --- a/media/js/pdf/web/locale/sq/viewer.properties +++ b/media/js/pdf/web/locale/sq/viewer.properties @@ -32,7 +32,7 @@ zoom_out.title=Zvogëlojeni zoom_out_label=Zvogëlojeni zoom_in.title=Zmadhojeni zoom_in_label=Zmadhojini -zoom.title=Zoom +zoom.title=Zmadhim/Zvogëlim presentation_mode.title=Kalo te Mënyra Paraqitje presentation_mode_label=Mënyra Paraqitje open_file.title=Hapni Kartelë @@ -41,23 +41,24 @@ print.title=Shtypje print_label=Shtype download.title=Shkarkim download_label=Shkarkoje +save.title=Ruaje +save_label=Ruaje bookmark.title=Pamja e tanishme (kopjojeni ose hapeni në dritare të re) bookmark_label=Pamja e Tanishme +bookmark1.title=Faqja e Tanishme (Shihni URL nga Faqja e Tanishme) +bookmark1_label=Faqja e Tanishme + # Secondary toolbar and context menu tools.title=Mjete tools_label=Mjete first_page.title=Kaloni te Faqja e Parë -first_page.label=Kaloni te Faqja e Parë first_page_label=Kaloni te Faqja e Parë last_page.title=Kaloni te Faqja e Fundit -last_page.label=Kaloni te Faqja e Fundit last_page_label=Kaloni te Faqja e Fundit page_rotate_cw.title=Rrotullojeni Në Kahun Orar -page_rotate_cw.label=Rrotulloje Në Kahun Orar page_rotate_cw_label=Rrotulloje Në Kahun Orar page_rotate_ccw.title=Rrotullojeni Në Kahun Kundërorar -page_rotate_ccw.label=Rrotulloje Në Kahun Kundërorar page_rotate_ccw_label=Rrotulloje Në Kahun Kundërorar cursor_text_select_tool.title=Aktivizo Mjet Përzgjedhjeje Teksti @@ -65,6 +66,8 @@ cursor_text_select_tool_label=Mjet Përzgjedhjeje Teksti cursor_hand_tool.title=Aktivizo Mjetin Dorë cursor_hand_tool_label=Mjeti Dorë +scroll_page.title=Përdor Rrëshqitje Në Faqe +scroll_page_label=Rrëshqitje Në Faqe scroll_vertical.title=Përdor Rrëshqitje Vertikale scroll_vertical_label=Rrëshqitje Vertikale scroll_horizontal.title=Përdor Rrëshqitje Horizontale @@ -116,6 +119,7 @@ document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) # LOCALIZATION NOTE (document_properties_linearized): The linearization status of # the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Parje e Shpjetë në Web: document_properties_linearized_yes=Po document_properties_linearized_no=Jo document_properties_close=Mbylleni @@ -130,7 +134,6 @@ print_progress_close=Anuloje # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Shfaqni/Fshihni Anështyllën -toggle_sidebar_notification.title=Shfaqni Anështyllën (dokumenti përmban përvijim/bashkëngjitje) toggle_sidebar_notification2.title=Hap/Mbyll Anështylë (dokumenti përmban përvijim/nashkëngjitje/shtresa) toggle_sidebar_label=Shfaq/Fshih Anështyllën document_outline.title=Shfaqni Përvijim Dokumenti (dyklikoni që të shfaqen/fshihen krejt elementët) @@ -141,13 +144,14 @@ layers.title=Shfaq Shtresa (dyklikoni që të rikthehen krejt shtresat në gjend layers_label=Shtresa thumbs.title=Shfaqni Miniatura thumbs_label=Miniatura +current_outline_item.title=Gjej Objektin e Tanishëm të Përvijuar +current_outline_item_label=Objekt i Tanishëm i Përvijuar findbar.title=Gjeni në Dokument findbar_label=Gjej -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Faqja {{page}} - additional_layers=Shtresa Shtesë +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Faqja {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -164,8 +168,9 @@ find_previous_label=E mëparshmja find_next.title=Gjeni hasjen pasuese të togfjalëshit find_next_label=Pasuesja find_highlight=Theksoji të tëra -find_match_case_label=Siç është shkruar -find_entire_word_label=Krejt fjalët +find_match_case_label=Siç Është Shkruar +find_match_diacritics_label=Me Përputhje Me Shenjat Diakritike +find_entire_word_label=Fjalë të Plota find_reached_top=U mbërrit në krye të dokumentit, vazhduar prej fundit find_reached_bottom=U mbërrit në fund të dokumentit, vazhduar prej kreut # LOCALIZATION NOTE (find_match_count): The supported plural forms are @@ -192,7 +197,7 @@ find_match_count_limit[other]=Më shumë se {{limit}} përputhje find_not_found=Togfjalësh që s’gjendet # Error panel labels -error_more_info=Më Tepër të Dhëna +error_more_info=Më Tepër Hollësi error_less_info=Më Pak të Dhëna error_close=Mbylleni # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be @@ -208,7 +213,6 @@ error_stack=Stack: {{stack}} error_file=Kartelë: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Rresht: {{line}} -rendering_error=Ndodhi një gabim gjatë riprodhimit të faqes. # Predefined zoom values page_scale_width=Gjerësi Faqeje @@ -220,13 +224,14 @@ page_scale_actual=Madhësia Faktike page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Gabim - +loading=Po ngarkohet… loading_error=Ndodhi një gabim gjatë ngarkimit të PDF-së. invalid_file_error=Kartelë PDF e pavlefshme ose e dëmtuar. missing_file_error=Kartelë PDF që mungon. unexpected_response_error=Përgjigje shërbyesi e papritur. +rendering_error=Ndodhi një gabim gjatë riprodhimit të faqes. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -244,3 +249,23 @@ password_cancel=Anuloje printing_not_supported=Kujdes: Shtypja s’mbulohet plotësisht nga ky shfletues. printing_not_ready=Kujdes: PDF-ja s’është ngarkuar plotësisht që ta shtypni. web_fonts_disabled=Shkronjat Web janë të çaktivizuara: s’arrihet të përdoren shkronja të trupëzuara në PDF. + +# Editor +editor_free_text2.title=Tekst +editor_free_text2_label=Tekst +editor_ink2.title=Vizatoni +editor_ink2_label=Vizatoni + +free_text2_default_content=Filloni të shtypni… + +# Editor Parameters +editor_free_text_color=Ngjyrë +editor_free_text_size=Madhësi +editor_ink_color=Ngjyrë +editor_ink_thickness=Trashësi +editor_ink_opacity=Patejdukshmëri + +# Editor aria +editor_free_text2_aria_label=Përpunues Tekstesh +editor_ink2_aria_label=Përpunues Vizatimesh +editor_ink_canvas_aria_label=Figurë e krijuar nga përdoruesi diff --git a/media/js/pdf/web/locale/sr/viewer.properties b/media/js/pdf/web/locale/sr/viewer.properties index ea18b40316..746d40a416 100644 --- a/media/js/pdf/web/locale/sr/viewer.properties +++ b/media/js/pdf/web/locale/sr/viewer.properties @@ -44,20 +44,26 @@ download_label=Преузми bookmark.title=Тренутни приказ (копирај или отвори у новом прозору) bookmark_label=Тренутни приказ +save.title=Сачувај +save_label=Сачувај +bookmark1.title=Тренутна страница (погледајте URL са тренутне странице) +bookmark1_label=Тренутна страница + +# LOCALIZATION NOTE (open_in_app.title): This string is used in Firefox for Android. +open_in_app.title=Отвори у апликацији +# LOCALIZATION NOTE (open_in_app_label): This string is used in Firefox for Android. Length of the translation matters since we are in a mobile context, with limited screen estate. +open_in_app_label=Отвори у апликацији + # Secondary toolbar and context menu tools.title=Алатке tools_label=Алатке first_page.title=Иди на прву страницу -first_page.label=Иди на прву страницу first_page_label=Иди на прву страницу last_page.title=Иди на последњу страницу -last_page.label=Иди на последњу страницу last_page_label=Иди на последњу страницу page_rotate_cw.title=Ротирај у смеру казаљке на сату -page_rotate_cw.label=Ротирај у смеру казаљке на сату page_rotate_cw_label=Ротирај у смеру казаљке на сату page_rotate_ccw.title=Ротирај у смеру супротном од казаљке на сату -page_rotate_ccw.label=Ротирај у смеру супротном од казаљке на сату page_rotate_ccw_label=Ротирај у смеру супротном од казаљке на сату cursor_text_select_tool.title=Омогући алат за селектовање текста @@ -65,6 +71,8 @@ cursor_text_select_tool_label=Алат за селектовање текста cursor_hand_tool.title=Омогући алат за померање cursor_hand_tool_label=Алат за померање +scroll_page.title=Користи скроловање по омоту +scroll_page_label=Скроловање странице scroll_vertical.title=Користи вертикално скроловање scroll_vertical_label=Вертикално скроловање scroll_horizontal.title=Користи хоризонтално скроловање @@ -137,7 +145,6 @@ print_progress_close=Откажи # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Прикажи додатну палету -toggle_sidebar_notification.title=Прикажи додатну траку (докуменат садржи оквире/прилоге) toggle_sidebar_notification2.title=Прикажи/сакриј бочну траку (документ садржи контуру/прилоге/слојеве) toggle_sidebar_label=Прикажи додатну палету document_outline.title=Прикажи структуру документа (двоструким кликом проширујете/скупљате све ставке) @@ -153,9 +160,6 @@ current_outline_item_label=Тренутна контура findbar.title=Пронађи у документу findbar_label=Пронађи -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Страница {{page}} - additional_layers=Додатни слојеви # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Страница {{page}} @@ -176,6 +180,7 @@ find_next.title=Пронађи следеће појављивање фразе find_next_label=Следећа find_highlight=Истакнути све find_match_case_label=Подударања +find_match_diacritics_label=Дијакритика find_entire_word_label=Целе речи find_reached_top=Достигнут врх документа, наставио са дна find_reached_bottom=Достигнуто дно документа, наставио са врха @@ -219,7 +224,6 @@ error_stack=Стек: {{stack}} error_file=Датотека: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Линија: {{line}} -rendering_error=Дошло је до грешке приликом рендеровања ове странице. # Predefined zoom values page_scale_width=Ширина странице @@ -231,15 +235,16 @@ page_scale_actual=Стварна величина page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Грешка +loading=Учитавање… # Loading indicator messages -loading=Учитавање… loading_error=Дошло је до грешке приликом учитавања PDF-а. invalid_file_error=PDF датотека је неважећа или је оштећена. missing_file_error=Недостаје PDF датотека. unexpected_response_error=Неочекиван одговор од сервера. +rendering_error=Дошло је до грешке приликом рендеровања ове странице. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,5 +262,23 @@ password_cancel=Откажи printing_not_supported=Упозорење: Штампање није у потпуности подржано у овом прегледачу. printing_not_ready=Упозорење: PDF није у потпуности учитан за штампу. web_fonts_disabled=Веб фонтови су онемогућени: не могу користити уграђене PDF фонтове. -# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same -# exact string as in the `chrome.properties` file. + +# Editor +editor_free_text2.title=Текст +editor_free_text2_label=Текст +editor_ink2.title=Цртај +editor_ink2_label=Цртај + +free_text2_default_content=Почни куцање… + +# Editor Parameters +editor_free_text_color=Боја +editor_free_text_size=Величина +editor_ink_color=Боја +editor_ink_thickness=Дебљина +editor_ink_opacity=Опацитет + +# Editor aria +editor_free_text2_aria_label=Уређивач текста +editor_ink2_aria_label=Уређивач цртежа +editor_ink_canvas_aria_label=Кориснички направљена слика diff --git a/media/js/pdf/web/locale/sv-SE/viewer.properties b/media/js/pdf/web/locale/sv-SE/viewer.properties index 60299d14ba..31169d4373 100644 --- a/media/js/pdf/web/locale/sv-SE/viewer.properties +++ b/media/js/pdf/web/locale/sv-SE/viewer.properties @@ -44,20 +44,24 @@ download_label=Hämta bookmark.title=Aktuell vy (kopiera eller öppna i nytt fönster) bookmark_label=Aktuell vy +save.title=Spara +save_label=Spara +bookmark1.title=Aktuell sida (Visa URL från aktuell sida) +bookmark1_label=Aktuell sida + +open_in_app.title=Öppna i app +open_in_app_label=Öppna i app + # Secondary toolbar and context menu tools.title=Verktyg tools_label=Verktyg first_page.title=Gå till första sidan -first_page.label=Gå till första sidan first_page_label=Gå till första sidan last_page.title=Gå till sista sidan -last_page.label=Gå till sista sidan last_page_label=Gå till sista sidan page_rotate_cw.title=Rotera medurs -page_rotate_cw.label=Rotera medurs page_rotate_cw_label=Rotera medurs page_rotate_ccw.title=Rotera moturs -page_rotate_ccw.label=Rotera moturs page_rotate_ccw_label=Rotera moturs cursor_text_select_tool.title=Aktivera textmarkeringsverktyg @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Textmarkeringsverktyg cursor_hand_tool.title=Aktivera handverktyg cursor_hand_tool_label=Handverktyg +scroll_page.title=Använd sidrullning +scroll_page_label=Sidrullning scroll_vertical.title=Använd vertikal rullning scroll_vertical_label=Vertikal rullning scroll_horizontal.title=Använd horisontell rullning @@ -137,7 +143,6 @@ print_progress_close=Avbryt # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Visa/dölj sidofält -toggle_sidebar_notification.title=Visa/dölj sidofält (dokument innehåller översikt/bilagor) toggle_sidebar_notification2.title=Växla sidofält (dokumentet innehåller dokumentstruktur/bilagor/lager) toggle_sidebar_label=Visa/dölj sidofält document_outline.title=Visa dokumentdisposition (dubbelklicka för att expandera/komprimera alla objekt) @@ -153,9 +158,6 @@ current_outline_item_label=Aktuellt dispositionsobjekt findbar.title=Sök i dokument findbar_label=Sök -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Sida {{page}} - additional_layers=Ytterligare lager # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Sida {{page}} @@ -176,6 +178,7 @@ find_next.title=Hitta nästa förekomst av frasen find_next_label=Nästa find_highlight=Markera alla find_match_case_label=Matcha versal/gemen +find_match_diacritics_label=Matcha diakritiska tecken find_entire_word_label=Hela ord find_reached_top=Nådde början av dokumentet, började från slutet find_reached_bottom=Nådde slutet på dokumentet, började från början @@ -219,7 +222,6 @@ error_stack=Stack: {{stack}} error_file=Fil: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Rad: {{line}} -rendering_error=Ett fel uppstod vid visning av sidan. # Predefined zoom values page_scale_width=Sidbredd @@ -231,15 +233,16 @@ page_scale_actual=Verklig storlek page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Fel +loading=Laddar… # Loading indicator messages -loading=Laddar… loading_error=Ett fel uppstod vid laddning av PDF-filen. invalid_file_error=Ogiltig eller korrupt PDF-fil. missing_file_error=Saknad PDF-fil. unexpected_response_error=Oväntat svar från servern. +rendering_error=Ett fel uppstod vid visning av sidan. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}} {{time}} @@ -257,3 +260,23 @@ password_cancel=Avbryt printing_not_supported=Varning: Utskrifter stöds inte helt av den här webbläsaren. printing_not_ready=Varning: PDF:en är inte klar för utskrift. web_fonts_disabled=Webbtypsnitt är inaktiverade: kan inte använda inbäddade PDF-typsnitt. + +# Editor +editor_free_text2.title=Text +editor_free_text2_label=Text +editor_ink2.title=Rita +editor_ink2_label=Rita + +free_text2_default_content=Börja skriva… + +# Editor Parameters +editor_free_text_color=Färg +editor_free_text_size=Storlek +editor_ink_color=Färg +editor_ink_thickness=Tjocklek +editor_ink_opacity=Opacitet + +# Editor aria +editor_free_text2_aria_label=Textredigerare +editor_ink2_aria_label=Ritredigerare +editor_ink_canvas_aria_label=Användarskapad bild diff --git a/media/js/pdf/web/locale/szl/viewer.properties b/media/js/pdf/web/locale/szl/viewer.properties index ed4bbd4e80..88bc57a1bb 100644 --- a/media/js/pdf/web/locale/szl/viewer.properties +++ b/media/js/pdf/web/locale/szl/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Aktualny widok tools.title=Noczynia tools_label=Noczynia first_page.title=Idź ku piyrszyj strōnie -first_page.label=Idź ku piyrszyj strōnie first_page_label=Idź ku piyrszyj strōnie last_page.title=Idź ku ôstatnij strōnie -last_page.label=Idź ku ôstatnij strōnie last_page_label=Idź ku ôstatnij strōnie page_rotate_cw.title=Zwyrtnij w prawo -page_rotate_cw.label=Zwyrtnij w prawo page_rotate_cw_label=Zwyrtnij w prawo page_rotate_ccw.title=Zwyrtnij w lewo -page_rotate_ccw.label=Zwyrtnij w lewo page_rotate_ccw_label=Zwyrtnij w lewo cursor_text_select_tool.title=Załōncz noczynie ôbiyranio tekstu @@ -74,10 +70,10 @@ scroll_wrapped_label=Szichtowe przewijanie spread_none.title=Niy dowej strōn w widoku po dwie spread_none_label=Po jednyj strōnie -spread_odd.title=Dej strōny po dwie: niyparzysto i parzysto -spread_odd_label=Niyparzysto i parzysto -spread_even.title=Dej strōny po dwie: parzysto i niyparzysto -spread_even_label=Parzysto i niyparzysto +spread_odd.title=Pokoż strōny po dwie; niyporziste po lewyj +spread_odd_label=Niyporziste po lewyj +spread_even.title=Pokoż strōny po dwie; porziste po lewyj +spread_even_label=Porziste po lewyj # Document properties dialog box document_properties.title=Włosności dokumyntu… @@ -137,7 +133,6 @@ print_progress_close=Pociep # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Przełōncz posek na rancie -toggle_sidebar_notification.title=Przełōncz posek na rancie (dokumynt mo struktura/przidowki) toggle_sidebar_notification2.title=Przełōncz posek na rancie (dokumynt mo struktura/przidowki/warstwy) toggle_sidebar_label=Przełōncz posek na rancie document_outline.title=Pokoż struktura dokumyntu (tuplowane klikniyncie rozszyrzo/swijo wszyskie elymynta) @@ -151,9 +146,6 @@ thumbs_label=Miniatury findbar.title=Znojdź w dokumyncie findbar_label=Znojdź -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Strōna {{page}} - additional_layers=Nadbytnie warstwy # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. # Thumbnails panel item (tooltip and alt text for images) @@ -197,7 +189,7 @@ find_match_count_limit[two]=Wiyncyj jak {{limit}}, co pasujōm find_match_count_limit[few]=Wiyncyj jak {{limit}}, co pasujōm find_match_count_limit[many]=Wiyncyj jak {{limit}}, co pasujōm find_match_count_limit[other]=Wiyncyj jak {{limit}}, co pasujōm -find_not_found=Fraza niy ma znodniynto +find_not_found=Fraza niy znaleziōno # Error panel labels error_more_info=Wiyncyj informacyji @@ -227,9 +219,6 @@ page_scale_actual=Aktualno srogość # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Feler - # Loading indicator messages loading_error=Przi ladowaniu PDFa pokozoł sie feler. invalid_file_error=Zły abo felerny zbiōr PDF. @@ -253,5 +242,4 @@ password_cancel=Pociep printing_not_supported=Pozōr: Ta przeglōndarka niy cołkiym ôbsuguje durk. printing_not_ready=Pozōr: Tyn PDF niy ma za tela zaladowany do durku. web_fonts_disabled=Necowe fōnty sōm zastawiōne: niy idzie użyć wkludzōnych fōntōw PDF. -# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same -# exact string as in the `chrome.properties` file. + diff --git a/media/js/pdf/web/locale/ta/viewer.properties b/media/js/pdf/web/locale/ta/viewer.properties index cade21bc76..72f75e22fc 100644 --- a/media/js/pdf/web/locale/ta/viewer.properties +++ b/media/js/pdf/web/locale/ta/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=தற்போதைய காட்சி tools.title=கருவிகள் tools_label=கருவிகள் first_page.title=முதல் பக்கத்திற்கு செல்லவும் -first_page.label=முதல் பக்கத்திற்கு செல்லவும் first_page_label=முதல் பக்கத்திற்கு செல்லவும் last_page.title=கடைசி பக்கத்திற்கு செல்லவும் -last_page.label=கடைசி பக்கத்திற்கு செல்லவும் last_page_label=கடைசி பக்கத்திற்கு செல்லவும் page_rotate_cw.title=வலஞ்சுழியாக சுழற்று -page_rotate_cw.label=வலஞ்சுழியாக சுழற்று page_rotate_cw_label=வலஞ்சுழியாக சுழற்று page_rotate_ccw.title=இடஞ்சுழியாக சுழற்று -page_rotate_ccw.label=இடஞ்சுழியாக சுழற்று page_rotate_ccw_label=இடஞ்சுழியாக சுழற்று cursor_text_select_tool.title=உரைத் தெரிவு கருவியைச் செயல்படுத்து @@ -118,7 +114,6 @@ print_progress_close=ரத்து # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=பக்கப் பட்டியை நிலைமாற்று -toggle_sidebar_notification.title=பக்கப்பட்டையை நிலைமாற்று (வெளிக்கோடு/இணைப்புகளை ஆவணம் கொண்டுள்ளது) toggle_sidebar_label=பக்கப் பட்டியை நிலைமாற்று document_outline.title=ஆவண அடக்கத்தைக் காட்டு (இருமுறைச் சொடுக்கி அனைத்து உறுப்பிடிகளையும் விரி/சேர்) document_outline_label=ஆவண வெளிவரை @@ -178,9 +173,6 @@ page_scale_actual=உண்மையான அளவு # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=பிழை - loading_error=PDF ஐ ஏற்றும் போது ஒரு பிழை ஏற்பட்டது. invalid_file_error=செல்லுபடியாகாத அல்லது சிதைந்த PDF கோப்பு. missing_file_error=PDF கோப்பு காணவில்லை. @@ -199,3 +191,4 @@ password_cancel=ரத்து printing_not_supported=எச்சரிக்கை: இந்த உலாவி அச்சிடுதலை முழுமையாக ஆதரிக்கவில்லை. printing_not_ready=எச்சரிக்கை: PDF அச்சிட முழுவதுமாக ஏற்றப்படவில்லை. web_fonts_disabled=வலை எழுத்துருக்கள் முடக்கப்பட்டுள்ளன: உட்பொதிக்கப்பட்ட PDF எழுத்துருக்களைப் பயன்படுத்த முடியவில்லை. + diff --git a/media/js/pdf/web/locale/te/viewer.properties b/media/js/pdf/web/locale/te/viewer.properties index 5175093246..3c820958c7 100644 --- a/media/js/pdf/web/locale/te/viewer.properties +++ b/media/js/pdf/web/locale/te/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=ప్రస్తుత దర్శనం tools.title=పనిముట్లు tools_label=పనిముట్లు first_page.title=మొదటి పేజీకి వెళ్ళు -first_page.label=మొదటి పేజీకి వెళ్ళు first_page_label=మొదటి పేజీకి వెళ్ళు last_page.title=చివరి పేజీకి వెళ్ళు -last_page.label=చివరి పేజీకి వెళ్ళు last_page_label=చివరి పేజీకి వెళ్ళు page_rotate_cw.title=సవ్యదిశలో తిప్పు -page_rotate_cw.label=సవ్యదిశలో తిప్పు page_rotate_cw_label=సవ్యదిశలో తిప్పు page_rotate_ccw.title=అపసవ్యదిశలో తిప్పు -page_rotate_ccw.label=అపసవ్యదిశలో తిప్పు page_rotate_ccw_label=అపసవ్యదిశలో తిప్పు cursor_text_select_tool.title=టెక్స్ట్ ఎంపిక సాధనాన్ని ప్రారంభించండి @@ -136,10 +132,8 @@ thumbs_label=థంబ్‌నైల్స్ findbar.title=పత్రములో కనుగొనుము findbar_label=కనుగొను -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=పేజి {{page}} - additional_layers=అదనపు పొరలు +# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -201,8 +195,6 @@ page_scale_actual=యథార్ధ పరిమాణం page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=దోషం - loading_error=PDF లోడవుచున్నప్పుడు ఒక దోషం ఎదురైంది. invalid_file_error=చెల్లని లేదా పాడైన PDF ఫైలు. missing_file_error=దొరకని PDF ఫైలు. @@ -225,3 +217,21 @@ password_cancel=రద్దుచేయి printing_not_supported=హెచ్చరిక: ఈ విహారిణి చేత ముద్రణ పూర్తిగా తోడ్పాటు లేదు. printing_not_ready=హెచ్చరిక: ముద్రణ కొరకు ఈ PDF పూర్తిగా లోడవలేదు. web_fonts_disabled=వెబ్ ఫాంట్లు అచేతనించబడెను: ఎంబెడెడ్ PDF ఫాంట్లు ఉపయోగించలేక పోయింది. + +# Editor + + +# Editor + + +# Editor Parameters +editor_free_text_color=రంగు +editor_free_text_size=పరిమాణం +editor_ink_color=రంగు +editor_ink_thickness=మందం +editor_ink_opacity=అకిరణ్యత + +# Editor aria + +# Editor aria + diff --git a/media/js/pdf/web/locale/tg/viewer.properties b/media/js/pdf/web/locale/tg/viewer.properties index 95967e32f2..fbdbe57b9d 100644 --- a/media/js/pdf/web/locale/tg/viewer.properties +++ b/media/js/pdf/web/locale/tg/viewer.properties @@ -14,19 +14,27 @@ # Main toolbar buttons (tooltips and alt text for images) previous.title=Саҳифаи қаблӣ +previous_label=Қаблӣ +next.title=Саҳифаи навбатӣ +next_label=Навбатӣ # LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input. +page.title=Саҳифа # LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number # representing the total number of pages in the document. +of_pages=аз {{pagesCount}} # LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" # will be replaced by a number representing the currently visible page, # respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} аз {{pagesCount}}) zoom_out.title=Хурд кардан zoom_out_label=Хурд кардан zoom_in.title=Калон кардан zoom_in_label=Калон кардан zoom.title=Танзими андоза +presentation_mode.title=Гузариш ба реҷаи тақдим +presentation_mode_label=Реҷаи тақдим open_file.title=Кушодани файл open_file_label=Кушодан print.title=Чоп кардан @@ -36,13 +44,50 @@ download_label=Боргирӣ кардан bookmark.title=Намуди ҷорӣ (нусха бардоштан ё кушодан дар равзанаи нав) bookmark_label=Намуди ҷорӣ +save.title=Нигоҳ доштан +save_label=Нигоҳ доштан +bookmark1.title=Саҳифаи ҷорӣ (Дидани нишонии URL аз саҳифаи ҷорӣ) +bookmark1_label=Саҳифаи ҷорӣ + +open_in_app.title=Кушодан дар барнома +open_in_app_label=Кушодан дар барнома + # Secondary toolbar and context menu tools.title=Абзорҳо +tools_label=Абзорҳо +first_page.title=Ба саҳифаи аввал гузаред +first_page_label=Ба саҳифаи аввал гузаред +last_page.title=Ба саҳифаи охирин гузаред +last_page_label=Ба саҳифаи охирин гузаред +page_rotate_cw.title=Ба самти ҳаракати ақрабаки соат давр задан +page_rotate_cw_label=Ба самти ҳаракати ақрабаки соат давр задан +page_rotate_ccw.title=Ба муқобили самти ҳаракати ақрабаки соат давр задан +page_rotate_ccw_label=Ба муқобили самти ҳаракати ақрабаки соат давр задан +cursor_text_select_tool.title=Фаъол кардани «Абзори интихоби матн» +cursor_text_select_tool_label=Абзори интихоби матн +cursor_hand_tool.title=Фаъол кардани «Абзори даст» +cursor_hand_tool_label=Абзори даст +scroll_page.title=Истифодаи варақзанӣ +scroll_page_label=Варақзанӣ +scroll_vertical.title=Истифодаи варақзании амудӣ +scroll_vertical_label=Варақзании амудӣ +scroll_horizontal.title=Истифодаи варақзании уфуқӣ +scroll_horizontal_label=Варақзании уфуқӣ +scroll_wrapped.title=Истифодаи варақзании миқёсбандӣ +scroll_wrapped_label=Варақзании миқёсбандӣ +spread_none.title=Густариши саҳифаҳо истифода бурда нашавад +spread_none_label=Бе густурдани саҳифаҳо +spread_odd.title=Густариши саҳифаҳо аз саҳифаҳо бо рақамҳои тоқ оғоз карда мешавад +spread_odd_label=Саҳифаҳои тоқ аз тарафи чап +spread_even.title=Густариши саҳифаҳо аз саҳифаҳо бо рақамҳои ҷуфт оғоз карда мешавад +spread_even_label=Саҳифаҳои ҷуфт аз тарафи чап # Document properties dialog box +document_properties.title=Хусусиятҳои ҳуҷҷат… +document_properties_label=Хусусиятҳои ҳуҷҷат… document_properties_file_name=Номи файл: document_properties_file_size=Андозаи файл: # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" @@ -51,9 +96,24 @@ document_properties_kb={{size_kb}} КБ ({{size_b}} байт) # LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" # will be replaced by the PDF file size in megabytes, respectively in bytes. document_properties_mb={{size_mb}} МБ ({{size_b}} байт) +document_properties_title=Сарлавҳа: +document_properties_author=Муаллиф: +document_properties_subject=Мавзуъ: +document_properties_keywords=Калимаҳои калидӣ: +document_properties_creation_date=Санаи эҷод: +document_properties_modification_date=Санаи тағйирот: # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" # will be replaced by the creation/modification date, and time, of the PDF file. document_properties_date_string={{date}}, {{time}} +document_properties_creator=Эҷодкунанда: +document_properties_producer=Таҳиякунандаи «PDF»: +document_properties_version=Версияи «PDF»: +document_properties_page_count=Шумораи саҳифаҳо: +document_properties_page_size=Андозаи саҳифа: +document_properties_page_size_unit_inches=дюйм +document_properties_page_size_unit_millimeters=мм +document_properties_page_size_orientation_portrait=амудӣ +document_properties_page_size_orientation_landscape=уфуқӣ document_properties_page_size_name_a3=A3 document_properties_page_size_name_a4=A4 document_properties_page_size_name_letter=Мактуб @@ -61,12 +121,17 @@ document_properties_page_size_name_legal=Ҳуқуқӣ # LOCALIZATION NOTE (document_properties_page_size_dimension_string): # "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by # the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) # LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): # "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by # the size, respectively their unit of measurement, name, and orientation, of the (current) page. document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) # LOCALIZATION NOTE (document_properties_linearized): The linearization status of # the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Намоиши тез дар Интернет: +document_properties_linearized_yes=Ҳа +document_properties_linearized_no=Не +document_properties_close=Пӯшидан print_progress_message=Омодасозии ҳуҷҷат барои чоп… # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by @@ -78,65 +143,140 @@ print_progress_close=Бекор кардан # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Фаъол кардани навори ҷонибӣ +toggle_sidebar_notification2.title=Фаъол кардани навори ҷонибӣ (ҳуҷҷат дорои сохтор/замимаҳо/қабатҳо мебошад) +toggle_sidebar_label=Фаъол кардани навори ҷонибӣ +document_outline.title=Намоиш додани сохтори ҳуҷҷат (барои баркушодан/пеҷондани ҳамаи унсурҳо дубора зер кунед) +document_outline_label=Сохтори ҳуҷҷат +attachments.title=Намоиш додани замимаҳо +attachments_label=Замимаҳо +layers.title=Намоиш додани қабатҳо (барои барқарор кардани ҳамаи қабатҳо ба вазъияти пешфарз дубора зер кунед) +layers_label=Қабатҳо +thumbs.title=Намоиш додани тасвирчаҳо +thumbs_label=Тасвирчаҳо +current_outline_item.title=Ёфтани унсури сохтори ҷорӣ +current_outline_item_label=Унсури сохтори ҷорӣ +findbar.title=Ёфтан дар ҳуҷҷат +findbar_label=Ёфтан -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. +additional_layers=Қабатҳои иловагӣ # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. +page_landmark=Саҳифаи {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. +thumb_page_title=Саҳифаи {{page}} # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page # number. +thumb_page_canvas=Тасвирчаи саҳифаи {{page}} # Find panel button title and messages +find_input.title=Ёфтан +find_input.placeholder=Ёфтан дар ҳуҷҷат… +find_previous.title=Ҷустуҷӯи мавриди қаблии ибораи пешниҳодшуда +find_previous_label=Қаблӣ +find_next.title=Ҷустуҷӯи мавриди навбатии ибораи пешниҳодшуда +find_next_label=Навбатӣ +find_highlight=Ҳамаашро бо ранг ҷудо кардан +find_match_case_label=Бо дарназардошти ҳарфҳои хурду калон +find_match_diacritics_label=Бо дарназардошти аломатҳои диакритикӣ +find_entire_word_label=Калимаҳои пурра +find_reached_top=Ба болои ҳуҷҷат расид, аз поён идома ёфт +find_reached_bottom=Ба поёни ҳуҷҷат расид, аз боло идома ёфт # LOCALIZATION NOTE (find_match_count): The supported plural forms are # [one|two|few|many|other], with [other] as the default value. # "{{current}}" and "{{total}}" will be replaced by a number representing the # index of the currently active find result, respectively a number representing # the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} аз {{total}} мувофиқат +find_match_count[two]={{current}} аз {{total}} мувофиқат +find_match_count[few]={{current}} аз {{total}} мувофиқат +find_match_count[many]={{current}} аз {{total}} мувофиқат +find_match_count[other]={{current}} аз {{total}} мувофиқат # LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are # [zero|one|two|few|many|other], with [other] as the default value. # "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} find_match_count_limit[zero]=Зиёда аз {{limit}} мувофиқат find_match_count_limit[one]=Зиёда аз {{limit}} мувофиқат find_match_count_limit[two]=Зиёда аз {{limit}} мувофиқат find_match_count_limit[few]=Зиёда аз {{limit}} мувофиқат find_match_count_limit[many]=Зиёда аз {{limit}} мувофиқат find_match_count_limit[other]=Зиёда аз {{limit}} мувофиқат +find_not_found=Ибора ёфт нашуд # Error panel labels error_more_info=Маълумоти бештар +error_less_info=Маълумоти камтар +error_close=Пӯшидан # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be # replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (сохт: {{build}}) # LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an # english string describing the error. +error_message=Паём: {{message}} # LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack # trace. +error_stack=Даста: {{stack}} # LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename error_file=Файл: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Сатр: {{line}} # Predefined zoom values page_scale_width=Аз рӯи паҳнои саҳифа +page_scale_fit=Аз рӯи андозаи саҳифа page_scale_auto=Андозаи худкор +page_scale_actual=Андозаи воқеӣ # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. +page_scale_percent={{scale}}% # Loading indicator messages +loading=Бор шуда истодааст… # Loading indicator messages -invalid_file_error=Файли PDF нодуруст ё вайроншуда мебошад. -missing_file_error=Файли PDF ғоиб аст. +loading_error=Ҳангоми боркунии «PDF» хато ба миён омад. +invalid_file_error=Файли «PDF» нодуруст ё вайроншуда мебошад. +missing_file_error=Файли «PDF» ғоиб аст. +unexpected_response_error=Ҷавоби ногаҳон аз сервер. + +rendering_error=Ҳангоми шаклсозии саҳифа хато ба миён омад. # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). # Some common types are e.g.: "Check", "Text", "Comment", "Note" -password_label=Барои кушодани ин файли PDF ниҳонвожаро ворид кунед. +text_annotation_type.alt=[Ҳошиянависӣ - {{type}}] +password_label=Барои кушодани ин файли «PDF» ниҳонвожаро ворид кунед. +password_invalid=Ниҳонвожаи нодуруст. Лутфан, аз нав кӯшиш кунед. +password_ok=ХУБ password_cancel=Бекор кардан -# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same -# exact string as in the `chrome.properties` file. +printing_not_supported=Диққат: Чопкунӣ аз тарафи ин браузер ба таври пурра дастгирӣ намешавад. +printing_not_ready=Диққат: Файли «PDF» барои чопкунӣ пурра бор карда нашуд. +web_fonts_disabled=Шрифтҳои интернетӣ ғайрифаъоланд: истифодаи шрифтҳои дарунсохти «PDF» ғайриимкон аст. +# Editor +editor_free_text2.title=Матн +editor_free_text2_label=Матн +editor_ink2.title=Расмкашӣ +editor_ink2_label=Расмкашӣ + +free_text2_default_content=Нависед… + +# Editor Parameters +editor_free_text_color=Ранг +editor_free_text_size=Андоза +editor_ink_color=Ранг +editor_ink_thickness=Ғафсӣ +editor_ink_opacity=Шаффофӣ + +# Editor aria +editor_free_text2_aria_label=Муҳаррири матн +editor_ink2_aria_label=Муҳаррири расмкашӣ +editor_ink_canvas_aria_label=Тасвири эҷодкардаи корбар diff --git a/media/js/pdf/web/locale/th/viewer.properties b/media/js/pdf/web/locale/th/viewer.properties index 4ce6147d0d..9859c9025a 100644 --- a/media/js/pdf/web/locale/th/viewer.properties +++ b/media/js/pdf/web/locale/th/viewer.properties @@ -44,20 +44,26 @@ download_label=ดาวน์โหลด bookmark.title=มุมมองปัจจุบัน (คัดลอกหรือเปิดในหน้าต่างใหม่) bookmark_label=มุมมองปัจจุบัน +save.title=บันทึก +save_label=บันทึก +bookmark1.title=หน้าปัจจุบัน (ดู URL จากหน้าปัจจุบัน) +bookmark1_label=หน้าปัจจุบัน + +# LOCALIZATION NOTE (open_in_app.title): This string is used in Firefox for Android. +open_in_app.title=เปิดในแอป +# LOCALIZATION NOTE (open_in_app_label): This string is used in Firefox for Android. Length of the translation matters since we are in a mobile context, with limited screen estate. +open_in_app_label=เปิดในแอป + # Secondary toolbar and context menu tools.title=เครื่องมือ tools_label=เครื่องมือ first_page.title=ไปยังหน้าแรก -first_page.label=ไปยังหน้าแรก first_page_label=ไปยังหน้าแรก last_page.title=ไปยังหน้าสุดท้าย -last_page.label=ไปยังหน้าสุดท้าย last_page_label=ไปยังหน้าสุดท้าย page_rotate_cw.title=หมุนตามเข็มนาฬิกา -page_rotate_cw.label=หมุนตามเข็มนาฬิกา page_rotate_cw_label=หมุนตามเข็มนาฬิกา page_rotate_ccw.title=หมุนทวนเข็มนาฬิกา -page_rotate_ccw.label=หมุนทวนเข็มนาฬิกา page_rotate_ccw_label=หมุนทวนเข็มนาฬิกา cursor_text_select_tool.title=เปิดใช้งานเครื่องมือการเลือกข้อความ @@ -65,6 +71,8 @@ cursor_text_select_tool_label=เครื่องมือการเลื cursor_hand_tool.title=เปิดใช้งานเครื่องมือมือ cursor_hand_tool_label=เครื่องมือมือ +scroll_page.title=ใช้การเลื่อนหน้า +scroll_page_label=การเลื่อนหน้า scroll_vertical.title=ใช้การเลื่อนแนวตั้ง scroll_vertical_label=การเลื่อนแนวตั้ง scroll_horizontal.title=ใช้การเลื่อนแนวนอน @@ -137,7 +145,6 @@ print_progress_close=ยกเลิก # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=เปิด/ปิดแถบข้าง -toggle_sidebar_notification.title=เปิด/ปิดแถบข้าง (เอกสารมีเค้าร่าง/ไฟล์แนบ) toggle_sidebar_notification2.title=เปิด/ปิดแถบข้าง (เอกสารมีเค้าร่าง/ไฟล์แนบ/เลเยอร์) toggle_sidebar_label=เปิด/ปิดแถบข้าง document_outline.title=แสดงเค้าร่างเอกสาร (คลิกสองครั้งเพื่อขยาย/ยุบรายการทั้งหมด) @@ -153,9 +160,6 @@ current_outline_item_label=รายการเค้าร่างปัจ findbar.title=ค้นหาในเอกสาร findbar_label=ค้นหา -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=หน้า {{page}} - additional_layers=เลเยอร์เพิ่มเติม # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=หน้า {{page}} @@ -176,6 +180,7 @@ find_next.title=หาตำแหน่งถัดไปของวลี find_next_label=ถัดไป find_highlight=เน้นสีทั้งหมด find_match_case_label=ตัวพิมพ์ใหญ่เล็กตรงกัน +find_match_diacritics_label=เครื่องหมายกำกับการออกเสียงตรงกัน find_entire_word_label=ทั้งคำ find_reached_top=ค้นหาถึงจุดเริ่มต้นของหน้า เริ่มค้นต่อจากด้านล่าง find_reached_bottom=ค้นหาถึงจุดสิ้นสุดหน้า เริ่มค้นต่อจากด้านบน @@ -219,7 +224,6 @@ error_stack=สแตก: {{stack}} error_file=ไฟล์: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=บรรทัด: {{line}} -rendering_error=เกิดข้อผิดพลาดขณะเรนเดอร์หน้า # Predefined zoom values page_scale_width=ความกว้างหน้า @@ -231,15 +235,16 @@ page_scale_actual=ขนาดจริง page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=ข้อผิดพลาด +loading=กำลังโหลด… # Loading indicator messages -loading=กำลังโหลด… loading_error=เกิดข้อผิดพลาดขณะโหลด PDF invalid_file_error=ไฟล์ PDF ไม่ถูกต้องหรือเสียหาย missing_file_error=ไฟล์ PDF หายไป unexpected_response_error=การตอบสนองของเซิร์ฟเวอร์ที่ไม่คาดคิด +rendering_error=เกิดข้อผิดพลาดขณะเรนเดอร์หน้า + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +262,23 @@ password_cancel=ยกเลิก printing_not_supported=คำเตือน: เบราว์เซอร์นี้ไม่ได้สนับสนุนการพิมพ์อย่างเต็มที่ printing_not_ready=คำเตือน: PDF ไม่ได้รับการโหลดอย่างเต็มที่สำหรับการพิมพ์ web_fonts_disabled=แบบอักษรเว็บถูกปิดใช้งาน: ไม่สามารถใช้แบบอักษร PDF ฝังตัว + +# Editor +editor_free_text2.title=ข้อความ +editor_free_text2_label=ข้อความ +editor_ink2.title=รูปวาด +editor_ink2_label=รูปวาด + +free_text2_default_content=เริ่มพิมพ์… + +# Editor Parameters +editor_free_text_color=สี +editor_free_text_size=ขนาด +editor_ink_color=สี +editor_ink_thickness=ความหนา +editor_ink_opacity=ความทึบ + +# Editor aria +editor_free_text2_aria_label=ตัวแก้ไขข้อความ +editor_ink2_aria_label=ตัวแก้ไขรูปวาด +editor_ink_canvas_aria_label=ภาพที่ผู้ใช้สร้างขึ้น diff --git a/media/js/pdf/web/locale/tl/viewer.properties b/media/js/pdf/web/locale/tl/viewer.properties index 6a9fd03b16..2d44451f7f 100644 --- a/media/js/pdf/web/locale/tl/viewer.properties +++ b/media/js/pdf/web/locale/tl/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Kasalukuyang tingin tools.title=Mga Kagamitan tools_label=Mga Kagamitan first_page.title=Pumunta sa Unang Pahina -first_page.label=Pumunta sa Unang Pahina first_page_label=Pumunta sa Unang Pahina last_page.title=Pumunta sa Huling Pahina -last_page.label=Pumunta sa Huling Pahina last_page_label=Pumunta sa Huling Pahina page_rotate_cw.title=Paikutin Pakanan -page_rotate_cw.label=Paikutin Pakanan page_rotate_cw_label=Paikutin Pakanan page_rotate_ccw.title=Paikutin Pakaliwa -page_rotate_ccw.label=Paikutin Pakaliwa page_rotate_ccw_label=Paikutin Pakaliwa cursor_text_select_tool.title=I-enable ang Text Selection Tool @@ -137,7 +133,6 @@ print_progress_close=Kanselahin # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Ipakita/Itago ang Sidebar -toggle_sidebar_notification.title=Ipakita/Itago ang Sidebar (nagtataglay ang dokumento ng balangkas/mga attachment) toggle_sidebar_notification2.title=Ipakita/Itago ang Sidebar (nagtataglay ang dokumento ng balangkas/mga attachment/mga layer) toggle_sidebar_label=Ipakita/Itago ang Sidebar document_outline.title=Ipakita ang Document Outline (mag-double-click para i-expand/collapse ang laman) @@ -151,9 +146,6 @@ thumbs_label=Mga thumbnail findbar.title=Hanapin sa Dokumento findbar_label=Hanapin -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Pahina {{page}} - additional_layers=Mga Karagdagang Layer # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page @@ -226,9 +218,6 @@ page_scale_actual=Totoong sukat # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Error - loading_error=Nagkaproblema habang niloload ang PDF. invalid_file_error=Di-wasto o sira ang PDF file. missing_file_error=Nawawalang PDF file. @@ -251,3 +240,4 @@ password_cancel=Kanselahin printing_not_supported=Babala: Hindi pa ganap na suportado ang pag-print sa browser na ito. printing_not_ready=Babala: Hindi ganap na nabuksan ang PDF para sa pag-print. web_fonts_disabled=Naka-disable ang mga Web font: hindi kayang gamitin ang mga naka-embed na PDF font. + diff --git a/media/js/pdf/web/locale/tr/viewer.properties b/media/js/pdf/web/locale/tr/viewer.properties index 7e14fbba20..1b7bdca816 100644 --- a/media/js/pdf/web/locale/tr/viewer.properties +++ b/media/js/pdf/web/locale/tr/viewer.properties @@ -34,7 +34,7 @@ zoom_in.title=Yaklaştır zoom_in_label=Yaklaştır zoom.title=Yakınlaştırma presentation_mode.title=Sunum moduna geç -presentation_mode_label=Sunum Modu +presentation_mode_label=Sunum modu open_file.title=Dosya aç open_file_label=Aç print.title=Yazdır @@ -44,20 +44,24 @@ download_label=İndir bookmark.title=Geçerli görünüm (kopyala veya yeni pencerede aç) bookmark_label=Geçerli görünüm +save.title=Kaydet +save_label=Kaydet +bookmark1.title=Geçerli sayfa (geçerli sayfanın adresini görüntüle) +bookmark1_label=Geçerli sayfa + +open_in_app.title=Uygulamada aç +open_in_app_label=Uygulamada aç + # Secondary toolbar and context menu tools.title=Araçlar tools_label=Araçlar first_page.title=İlk sayfaya git -first_page.label=İlk sayfaya git first_page_label=İlk sayfaya git last_page.title=Son sayfaya git -last_page.label=Son sayfaya git last_page_label=Son sayfaya git page_rotate_cw.title=Saat yönünde döndür -page_rotate_cw.label=Saat yönünde döndür page_rotate_cw_label=Saat yönünde döndür page_rotate_ccw.title=Saat yönünün tersine döndür -page_rotate_ccw.label=Saat yönünün tersine döndür page_rotate_ccw_label=Saat yönünün tersine döndür cursor_text_select_tool.title=Metin seçme aracını etkinleştir @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Metin seçme aracı cursor_hand_tool.title=El aracını etkinleştir cursor_hand_tool_label=El aracı +scroll_page.title=Sayfa kaydırmayı kullan +scroll_page_label=Sayfa kaydırma scroll_vertical.title=Dikey kaydırma kullan scroll_vertical_label=Dikey kaydırma scroll_horizontal.title=Yatay kaydırma kullan @@ -137,7 +143,6 @@ print_progress_close=İptal # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Kenar çubuğunu aç/kapat -toggle_sidebar_notification.title=Kenar çubuğunu aç/kapat (Belge ana hat/ekler içeriyor) toggle_sidebar_notification2.title=Kenar çubuğunu aç/kapat (Belge ana hat/ekler/katmanlar içeriyor) toggle_sidebar_label=Kenar çubuğunu aç/kapat document_outline.title=Belge ana hatlarını göster (Tüm öğeleri genişletmek/daraltmak için çift tıklayın) @@ -153,9 +158,6 @@ current_outline_item_label=Mevcut ana hat öğesi findbar.title=Belgede bul findbar_label=Bul -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Sayfa {{page}} - additional_layers=Ek katmanlar # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Sayfa {{page}} @@ -176,6 +178,7 @@ find_next.title=Sonraki eşleşmeyi bul find_next_label=Sonraki find_highlight=Tümünü vurgula find_match_case_label=Büyük-küçük harfe duyarlı +find_match_diacritics_label=Fonetik işaretleri bul find_entire_word_label=Tam sözcükler find_reached_top=Belgenin başına ulaşıldı, sonundan devam edildi find_reached_bottom=Belgenin sonuna ulaşıldı, başından devam edildi @@ -219,7 +222,6 @@ error_stack=Yığın: {{stack}} error_file=Dosya: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Satır: {{line}} -rendering_error=Sayfa yorumlanırken bir hata oluştu. # Predefined zoom values page_scale_width=Sayfa genişliği @@ -231,15 +233,16 @@ page_scale_actual=Gerçek boyut page_scale_percent=%{{scale}} # Loading indicator messages -loading_error_indicator=Hata +loading=Yükleniyor… # Loading indicator messages -loading=Yükleniyor… loading_error=PDF yüklenirken bir hata oluştu. invalid_file_error=Geçersiz veya bozulmuş PDF dosyası. missing_file_error=PDF dosyası eksik. unexpected_response_error=Beklenmeyen sunucu yanıtı. +rendering_error=Sayfa yorumlanırken bir hata oluştu. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=İptal printing_not_supported=Uyarı: Yazdırma bu tarayıcı tarafından tam olarak desteklenmemektedir. printing_not_ready=Uyarı: PDF tamamen yüklenmedi ve yazdırmaya hazır değil. web_fonts_disabled=Web fontları devre dışı: Gömülü PDF fontları kullanılamıyor. + +# Editor +editor_free_text2.title=Metin +editor_free_text2_label=Metin +editor_ink2.title=Çiz +editor_ink2_label=Çiz + +free_text2_default_content=Yazmaya başlayın… + +# Editor Parameters +editor_free_text_color=Renk +editor_free_text_size=Boyut +editor_ink_color=Renk +editor_ink_thickness=Kalınlık +editor_ink_opacity=Saydamlık + +# Editor aria +editor_free_text2_aria_label=Metin düzenleyicisi +editor_ink2_aria_label=Çizim düzenleyicisi +editor_ink_canvas_aria_label=Kullanıcı tarafından oluşturulan resim diff --git a/media/js/pdf/web/locale/trs/viewer.properties b/media/js/pdf/web/locale/trs/viewer.properties index 65252f7fea..8bd1fe1dba 100644 --- a/media/js/pdf/web/locale/trs/viewer.properties +++ b/media/js/pdf/web/locale/trs/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Daj hua ma tools.title=Rasun tools_label=Nej rasùun first_page.title=gun' riña pajina asiniin -first_page.label=Gun' riña pajina asiniin first_page_label=Gun' riña pajina asiniin last_page.title=Gun' riña pajina rukù ni'in -last_page.label=Gun' riña pajina rukù ni'inj last_page_label=Gun' riña pajina rukù ni'inj page_rotate_cw.title=Tanikaj ne' huat -page_rotate_cw.label=Tanikaj ne' huat page_rotate_cw_label=Tanikaj ne' huat page_rotate_ccw.title=Tanikaj ne' chînt' -page_rotate_ccw.label=Tanikaj ne' chint page_rotate_ccw_label=Tanikaj ne' chint cursor_text_select_tool.title=Dugi'iaj sun' sa ganahui texto @@ -198,9 +194,6 @@ page_scale_actual=Dàj yàchi akuan' nín # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Nitaj si hua hue'ej - # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. diff --git a/media/js/pdf/web/locale/uk/viewer.properties b/media/js/pdf/web/locale/uk/viewer.properties index 87d407c993..ca18de5c19 100644 --- a/media/js/pdf/web/locale/uk/viewer.properties +++ b/media/js/pdf/web/locale/uk/viewer.properties @@ -44,20 +44,24 @@ download_label=Завантажити bookmark.title=Поточний вигляд (копіювати чи відкрити в новому вікні) bookmark_label=Поточний вигляд +save.title=Зберегти +save_label=Зберегти +bookmark1.title=Поточна сторінка (перегляд URL-адреси з поточної сторінки) +bookmark1_label=Поточна сторінка + +open_in_app.title=Відкрити у програмі +open_in_app_label=Відкрити у програмі + # Secondary toolbar and context menu tools.title=Інструменти tools_label=Інструменти first_page.title=На першу сторінку -first_page.label=На першу сторінку first_page_label=На першу сторінку last_page.title=На останню сторінку -last_page.label=На останню сторінку last_page_label=На останню сторінку page_rotate_cw.title=Повернути за годинниковою стрілкою -page_rotate_cw.label=Повернути за годинниковою стрілкою page_rotate_cw_label=Повернути за годинниковою стрілкою page_rotate_ccw.title=Повернути проти годинникової стрілки -page_rotate_ccw.label=Повернути проти годинникової стрілки page_rotate_ccw_label=Повернути проти годинникової стрілки cursor_text_select_tool.title=Увімкнути інструмент вибору тексту @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Інструмент вибору тексту cursor_hand_tool.title=Увімкнути інструмент "Рука" cursor_hand_tool_label=Інструмент "Рука" +scroll_page.title=Використовувати прокручування сторінки +scroll_page_label=Прокручування сторінки scroll_vertical.title=Використовувати вертикальне прокручування scroll_vertical_label=Вертикальне прокручування scroll_horizontal.title=Використовувати горизонтальне прокручування @@ -137,7 +143,6 @@ print_progress_close=Скасувати # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Бічна панель -toggle_sidebar_notification.title=Перемкнути бічну панель (документ має вміст/вкладення) toggle_sidebar_notification2.title=Перемкнути бічну панель (документ містить ескіз/вкладення/шари) toggle_sidebar_label=Перемкнути бічну панель document_outline.title=Показати схему документу (подвійний клік для розгортання/згортання елементів) @@ -153,9 +158,6 @@ current_outline_item_label=Поточний елемент змісту findbar.title=Знайти в документі findbar_label=Знайти -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Сторінка {{page}} - additional_layers=Додаткові шари # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Сторінка {{page}} @@ -176,6 +178,7 @@ find_next.title=Знайти наступне входження фрази find_next_label=Наступне find_highlight=Підсвітити все find_match_case_label=З урахуванням регістру +find_match_diacritics_label=Відповідність діакритичних знаків find_entire_word_label=Цілі слова find_reached_top=Досягнуто початку документу, продовжено з кінця find_reached_bottom=Досягнуто кінця документу, продовжено з початку @@ -219,7 +222,6 @@ error_stack=Стек: {{stack}} error_file=Файл: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Рядок: {{line}} -rendering_error=Під час виведення сторінки сталася помилка. # Predefined zoom values page_scale_width=За шириною @@ -231,15 +233,16 @@ page_scale_actual=Дійсний розмір page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Помилка +loading=Завантаження… # Loading indicator messages -loading=Завантаження… loading_error=Під час завантаження PDF сталася помилка. invalid_file_error=Недійсний або пошкоджений PDF-файл. missing_file_error=Відсутній PDF-файл. unexpected_response_error=Неочікувана відповідь сервера. +rendering_error=Під час виведення сторінки сталася помилка. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -248,7 +251,7 @@ annotation_date_string={{date}}, {{time}} # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). # Some common types are e.g.: "Check", "Text", "Comment", "Note" -text_annotation_type.alt=[{{type}}-аннотація] +text_annotation_type.alt=[{{type}}-анотація] password_label=Введіть пароль для відкриття цього PDF-файла. password_invalid=Невірний пароль. Спробуйте ще. password_ok=Гаразд @@ -257,3 +260,23 @@ password_cancel=Скасувати printing_not_supported=Попередження: Цей браузер не повністю підтримує друк. printing_not_ready=Попередження: PDF не повністю завантажений для друку. web_fonts_disabled=Веб-шрифти вимкнено: неможливо використати вбудовані у PDF шрифти. + +# Editor +editor_free_text2.title=Текст +editor_free_text2_label=Текст +editor_ink2.title=Малювати +editor_ink2_label=Малювати + +free_text2_default_content=Почніть вводити… + +# Editor Parameters +editor_free_text_color=Колір +editor_free_text_size=Розмір +editor_ink_color=Колір +editor_ink_thickness=Товщина +editor_ink_opacity=Прозорість + +# Editor aria +editor_free_text2_aria_label=Текстовий редактор +editor_ink2_aria_label=Графічний редактор +editor_ink_canvas_aria_label=Зображення, створене користувачем diff --git a/media/js/pdf/web/locale/ur/viewer.properties b/media/js/pdf/web/locale/ur/viewer.properties index beaa4cfbf3..e3853b0ffa 100644 --- a/media/js/pdf/web/locale/ur/viewer.properties +++ b/media/js/pdf/web/locale/ur/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=حالیہ نظارہ tools.title=آلات tools_label=آلات first_page.title=پہلے صفحہ پر جائیں -first_page.label=پہلے صفحہ پر جائیں first_page_label=پہلے صفحہ پر جائیں last_page.title=آخری صفحہ پر جائیں -last_page.label=آخری صفحہ پر جائیں last_page_label=آخری صفحہ پر جائیں page_rotate_cw.title=گھڑی وار گھمائیں -page_rotate_cw.label=گھڑی وار گھمائیں page_rotate_cw_label=گھڑی وار گھمائیں page_rotate_ccw.title=ضد گھڑی وار گھمائیں -page_rotate_ccw.label=ضد گھڑی وار گھمائیں page_rotate_ccw_label=ضد گھڑی وار گھمائیں cursor_text_select_tool.title=متن کے انتخاب کے ٹول کو فعال بناے @@ -143,9 +139,6 @@ thumbs_label=مجمل findbar.title=دستاویز میں ڈھونڈیں findbar_label=ڈھونڈیں -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=صفحہ {{page}} - # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=صفحہ {{page}} # Thumbnails panel item (tooltip and alt text for images) @@ -218,9 +211,6 @@ page_scale_actual=اصل سائز # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=نقص - # Loading indicator messages loading_error=PDF لوڈ کرتے وقت نقص آ گیا۔ invalid_file_error=ناجائز یا خراب PDF مسل @@ -246,3 +236,4 @@ printing_not_ready=تنبیہ: PDF چھپائی کے لیے پوری طرح لو web_fonts_disabled=ویب فانٹ نا اہل ہیں: شامل PDF فانٹ استعمال کرنے میں ناکام۔ # LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same # exact string as in the `chrome.properties` file. + diff --git a/media/js/pdf/web/locale/uz/viewer.properties b/media/js/pdf/web/locale/uz/viewer.properties index 638fde5792..31c60aedd7 100644 --- a/media/js/pdf/web/locale/uz/viewer.properties +++ b/media/js/pdf/web/locale/uz/viewer.properties @@ -46,16 +46,12 @@ bookmark_label=Joriy koʻrinish tools.title=Vositalar tools_label=Vositalar first_page.title=Birinchi sahifaga oʻtish -first_page.label=Birinchi sahifaga oʻtish first_page_label=Birinchi sahifaga oʻtish last_page.title=Soʻnggi sahifaga oʻtish -last_page.label=Soʻnggi sahifaga oʻtish last_page_label=Soʻnggi sahifaga oʻtish page_rotate_cw.title=Soat yoʻnalishi boʻyicha burish -page_rotate_cw.label=Soat yoʻnalishi boʻyicha burish page_rotate_cw_label=Soat yoʻnalishi boʻyicha burish page_rotate_ccw.title=Soat yoʻnalishiga qarshi burish -page_rotate_ccw.label=Soat yoʻnalishiga qarshi burish page_rotate_ccw_label=Soat yoʻnalishiga qarshi burish @@ -147,9 +143,6 @@ page_scale_actual=Haqiqiy hajmi # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Xato - loading_error=PDF yuklanayotganda xato yuz berdi. invalid_file_error=Xato yoki buzuq PDF fayli. missing_file_error=PDF fayl kerak. @@ -167,3 +160,4 @@ password_ok=OK printing_not_supported=Diqqat: chop qilish bruzer tomonidan toʻliq qoʻllab-quvvatlanmaydi. printing_not_ready=Diqqat: PDF fayl chop qilish uchun toʻliq yuklanmadi. web_fonts_disabled=Veb shriftlar oʻchirilgan: ichki PDF shriftlardan foydalanib boʻlmmaydi. + diff --git a/media/js/pdf/web/locale/vi/viewer.properties b/media/js/pdf/web/locale/vi/viewer.properties index a8aa396da0..957e9fa239 100644 --- a/media/js/pdf/web/locale/vi/viewer.properties +++ b/media/js/pdf/web/locale/vi/viewer.properties @@ -44,20 +44,24 @@ download_label=Tải xuống bookmark.title=Chế độ xem hiện tại (sao chép hoặc mở trong cửa sổ mới) bookmark_label=Chế độ xem hiện tại +save.title=Lưu +save_label=Lưu +bookmark1.title=Trang hiện tại (xem URL từ trang hiện tại) +bookmark1_label=Trang hiện tại + +open_in_app.title=Mở trong ứng dụng +open_in_app_label=Mở trong ứng dụng + # Secondary toolbar and context menu tools.title=Công cụ tools_label=Công cụ first_page.title=Về trang đầu -first_page.label=Về trang đầu first_page_label=Về trang đầu last_page.title=Đến trang cuối -last_page.label=Đến trang cuối last_page_label=Đến trang cuối page_rotate_cw.title=Xoay theo chiều kim đồng hồ -page_rotate_cw.label=Xoay theo chiều kim đồng hồ page_rotate_cw_label=Xoay theo chiều kim đồng hồ page_rotate_ccw.title=Xoay ngược chiều kim đồng hồ -page_rotate_ccw.label=Xoay ngược chiều kim đồng hồ page_rotate_ccw_label=Xoay ngược chiều kim đồng hồ cursor_text_select_tool.title=Kích hoạt công cụ chọn vùng văn bản @@ -65,6 +69,8 @@ cursor_text_select_tool_label=Công cụ chọn vùng văn bản cursor_hand_tool.title=Kích hoạt công cụ con trỏ cursor_hand_tool_label=Công cụ con trỏ +scroll_page.title=Sử dụng cuộn trang hiện tại +scroll_page_label=Cuộn trang hiện tại scroll_vertical.title=Sử dụng cuộn dọc scroll_vertical_label=Cuộn dọc scroll_horizontal.title=Sử dụng cuộn ngang @@ -137,10 +143,9 @@ print_progress_close=Hủy bỏ # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Bật/Tắt thanh lề -toggle_sidebar_notification.title=Bật tắt thanh lề (tài liệu bao gồm bản phác thảo/tập tin đính kèm) toggle_sidebar_notification2.title=Bật tắt thanh lề (tài liệu bao gồm bản phác thảo/tập tin đính kèm/lớp) toggle_sidebar_label=Bật/Tắt thanh lề -document_outline.title=Hiện tài liệu phác thảo (nhấp đúp vào để mở rộng/thu gọn tất cả các mục) +document_outline.title=Hiển thị tài liệu phác thảo (nhấp đúp vào để mở rộng/thu gọn tất cả các mục) document_outline_label=Bản phác tài liệu attachments.title=Hiện nội dung đính kèm attachments_label=Nội dung đính kèm @@ -153,9 +158,6 @@ current_outline_item_label=Mục phác thảo hiện tại findbar.title=Tìm trong tài liệu findbar_label=Tìm -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=Trang {{page}} - additional_layers=Các lớp bổ sung # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=Trang {{page}} @@ -176,6 +178,7 @@ find_next.title=Tìm cụm từ ở phần sau find_next_label=Tiếp find_highlight=Tô sáng tất cả find_match_case_label=Phân biệt hoa, thường +find_match_diacritics_label=Khớp dấu phụ find_entire_word_label=Toàn bộ từ find_reached_top=Đã đến phần đầu tài liệu, quay trở lại từ cuối find_reached_bottom=Đã đến phần cuối của tài liệu, quay trở lại từ đầu @@ -219,7 +222,6 @@ error_stack=Stack: {{stack}} error_file=Tập tin: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Dòng: {{line}} -rendering_error=Lỗi khi hiển thị trang. # Predefined zoom values page_scale_width=Vừa chiều rộng @@ -231,15 +233,16 @@ page_scale_actual=Kích thước thực page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=Lỗi +loading=Đang tải… # Loading indicator messages -loading=Đang tải… loading_error=Lỗi khi tải tài liệu PDF. invalid_file_error=Tập tin PDF hỏng hoặc không hợp lệ. missing_file_error=Thiếu tập tin PDF. unexpected_response_error=Máy chủ có phản hồi lạ. +rendering_error=Lỗi khi hiển thị trang. + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}}, {{time}} @@ -257,3 +260,23 @@ password_cancel=Hủy bỏ printing_not_supported=Cảnh báo: In ấn không được hỗ trợ đầy đủ ở trình duyệt này. printing_not_ready=Cảnh báo: PDF chưa được tải hết để in. web_fonts_disabled=Phông chữ Web bị vô hiệu hóa: không thể sử dụng các phông chữ PDF được nhúng. + +# Editor +editor_free_text2.title=Văn bản +editor_free_text2_label=Văn bản +editor_ink2.title=Vẽ +editor_ink2_label=Vẽ + +free_text2_default_content=Bắt đầu nhập… + +# Editor Parameters +editor_free_text_color=Màu +editor_free_text_size=Kích cỡ +editor_ink_color=Màu +editor_ink_thickness=Độ dày +editor_ink_opacity=Độ mờ + +# Editor aria +editor_free_text2_aria_label=Trình sửa văn bản +editor_ink2_aria_label=Trình sửa nét vẽ +editor_ink_canvas_aria_label=Hình ảnh do người dùng tạo diff --git a/media/js/pdf/web/locale/wo/viewer.properties b/media/js/pdf/web/locale/wo/viewer.properties index 3c7b89942f..71b23cb501 100644 --- a/media/js/pdf/web/locale/wo/viewer.properties +++ b/media/js/pdf/web/locale/wo/viewer.properties @@ -108,9 +108,6 @@ page_scale_actual=Dayo bi am # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. -# Loading indicator messages -loading_error_indicator=Njumte - loading_error=Am na njumte ci yebum dencukaay PDF bi. invalid_file_error=Dencukaay PDF bi baaxul walla mu sankar. @@ -123,3 +120,4 @@ password_ok=OK password_cancel=Neenal printing_not_supported=Artu: Joowkat bii nanguwul lool mool. + diff --git a/media/js/pdf/web/locale/xh/viewer.properties b/media/js/pdf/web/locale/xh/viewer.properties index 6f76c45238..0bb9e88117 100644 --- a/media/js/pdf/web/locale/xh/viewer.properties +++ b/media/js/pdf/web/locale/xh/viewer.properties @@ -48,16 +48,12 @@ bookmark_label=Imbonakalo ekhoyo tools.title=Izixhobo zemiyalelo tools_label=Izixhobo zemiyalelo first_page.title=Yiya kwiphepha lokuqala -first_page.label=Yiya kwiphepha lokuqala first_page_label=Yiya kwiphepha lokuqala last_page.title=Yiya kwiphepha lokugqibela -last_page.label=Yiya kwiphepha lokugqibela last_page_label=Yiya kwiphepha lokugqibela page_rotate_cw.title=Jikelisa ngasekunene -page_rotate_cw.label=Jikelisa ngasekunene page_rotate_cw_label=Jikelisa ngasekunene page_rotate_ccw.title=Jikelisa ngasekhohlo -page_rotate_ccw.label=Jikelisa ngasekhohlo page_rotate_ccw_label=Jikelisa ngasekhohlo cursor_text_select_tool.title=Vumela iSixhobo sokuKhetha iTeksti @@ -101,7 +97,6 @@ print_progress_close=Rhoxisa # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Togola ngebha eseCaleni -toggle_sidebar_notification.title=ISidebar yeQhosha (uxwebhu lunolwandlalo/iziqhotyoshelwa) toggle_sidebar_label=Togola ngebha eseCaleni document_outline.title=Bonisa uLwandlalo loXwebhu (cofa kabini ukuze wandise/diliza zonke izinto) document_outline_label=Isishwankathelo soxwebhu @@ -161,9 +156,6 @@ page_scale_actual=Ubungakanani bokwenene # numerical scale value. page_scale_percent={{scale}}% -# Loading indicator messages -loading_error_indicator=Imposiso - loading_error=Imposiso yenzekile xa kulayishwa i-PDF. invalid_file_error=Ifayile ye-PDF engeyiyo okanye eyonakalisiweyo. missing_file_error=Ifayile ye-PDF edukileyo. @@ -182,3 +174,4 @@ password_cancel=Rhoxisa printing_not_supported=Isilumkiso: Ukuprinta akuxhaswa ngokupheleleyo yile bhrawuza. printing_not_ready=Isilumkiso: IPDF ayihlohlwanga ngokupheleleyo ukwenzela ukuprinta. web_fonts_disabled=Iifonti zewebhu ziqhwalelisiwe: ayikwazi ukusebenzisa iifonti ze-PDF ezincanyathelisiweyo. + diff --git a/media/js/pdf/web/locale/zh-CN/viewer.properties b/media/js/pdf/web/locale/zh-CN/viewer.properties index 0648ee277e..ba08c12219 100644 --- a/media/js/pdf/web/locale/zh-CN/viewer.properties +++ b/media/js/pdf/web/locale/zh-CN/viewer.properties @@ -44,20 +44,24 @@ download_label=下载 bookmark.title=当前在看的内容(复制或在新窗口中打开) bookmark_label=当前在看 +save.title=保存 +save_label=保存 +bookmark1.title=当前页面(在当前页面查看 URL) +bookmark1_label=当前页面 + +open_in_app.title=在应用中打开 +open_in_app_label=在应用中打开 + # Secondary toolbar and context menu tools.title=工具 tools_label=工具 first_page.title=转到第一页 -first_page.label=转到第一页 first_page_label=转到第一页 last_page.title=转到最后一页 -last_page.label=转到最后一页 last_page_label=转到最后一页 page_rotate_cw.title=顺时针旋转 -page_rotate_cw.label=顺时针旋转 page_rotate_cw_label=顺时针旋转 page_rotate_ccw.title=逆时针旋转 -page_rotate_ccw.label=逆时针旋转 page_rotate_ccw_label=逆时针旋转 cursor_text_select_tool.title=启用文本选择工具 @@ -65,6 +69,8 @@ cursor_text_select_tool_label=文本选择工具 cursor_hand_tool.title=启用手形工具 cursor_hand_tool_label=手形工具 +scroll_page.title=使用页面滚动 +scroll_page_label=页面滚动 scroll_vertical.title=使用垂直滚动 scroll_vertical_label=垂直滚动 scroll_horizontal.title=使用水平滚动 @@ -137,7 +143,6 @@ print_progress_close=取消 # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=切换侧栏 -toggle_sidebar_notification.title=切换侧栏(文档所含的大纲/附件) toggle_sidebar_notification2.title=切换侧栏(文档所含的大纲/附件/图层) toggle_sidebar_label=切换侧栏 document_outline.title=显示文档大纲(双击展开/折叠所有项) @@ -153,9 +158,6 @@ current_outline_item_label=当前大纲项目 findbar.title=在文档中查找 findbar_label=查找 -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=第 {{page}} 页 - additional_layers=其他图层 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=第 {{page}} 页 @@ -176,7 +178,8 @@ find_next.title=查找词语后一次出现的位置 find_next_label=下一页 find_highlight=全部高亮显示 find_match_case_label=区分大小写 -find_entire_word_label=字词匹配 +find_match_diacritics_label=匹配变音符号 +find_entire_word_label=全词匹配 find_reached_top=到达文档开头,从末尾继续 find_reached_bottom=到达文档末尾,从开头继续 # LOCALIZATION NOTE (find_match_count): The supported plural forms are @@ -219,7 +222,6 @@ error_stack=堆栈:{{stack}} error_file=文件:{{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=行号:{{line}} -rendering_error=渲染页面时发生错误。 # Predefined zoom values page_scale_width=适合页宽 @@ -231,15 +233,16 @@ page_scale_actual=实际大小 page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=错误 +loading=正在加载… # Loading indicator messages -loading=正在载入… -loading_error=载入 PDF 时发生错误。 +loading_error=加载 PDF 时发生错误。 invalid_file_error=无效或损坏的 PDF 文件。 missing_file_error=缺少 PDF 文件。 unexpected_response_error=意外的服务器响应。 +rendering_error=渲染页面时发生错误。 + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}},{{time}} @@ -255,5 +258,25 @@ password_ok=确定 password_cancel=取消 printing_not_supported=警告:此浏览器尚未完整支持打印功能。 -printing_not_ready=警告:此 PDF 未完成载入,无法打印。 +printing_not_ready=警告:此 PDF 未完成加载,无法打印。 web_fonts_disabled=Web 字体已被禁用:无法使用嵌入的 PDF 字体。 + +# Editor +editor_free_text2.title=文本 +editor_free_text2_label=文本 +editor_ink2.title=绘图 +editor_ink2_label=绘图 + +free_text2_default_content=开始输入… + +# Editor Parameters +editor_free_text_color=颜色 +editor_free_text_size=字号 +editor_ink_color=颜色 +editor_ink_thickness=粗细 +editor_ink_opacity=不透明度 + +# Editor aria +editor_free_text2_aria_label=文本编辑器 +editor_ink2_aria_label=绘图编辑器 +editor_ink_canvas_aria_label=用户创建图像 diff --git a/media/js/pdf/web/locale/zh-TW/viewer.properties b/media/js/pdf/web/locale/zh-TW/viewer.properties index e29bcf428e..3c406b2cf0 100644 --- a/media/js/pdf/web/locale/zh-TW/viewer.properties +++ b/media/js/pdf/web/locale/zh-TW/viewer.properties @@ -42,22 +42,26 @@ print_label=列印 download.title=下載 download_label=下載 bookmark.title=目前畫面(複製或開啟於新視窗) -bookmark_label=目前檢視 +bookmark_label=目前畫面 + +save.title=儲存 +save_label=儲存 +bookmark1.title=目前頁面(含目前檢視頁面的網址) +bookmark1_label=目前頁面 + +open_in_app.title=在應用程式中開啟 +open_in_app_label=用程式開啟 # Secondary toolbar and context menu tools.title=工具 tools_label=工具 first_page.title=跳到第一頁 -first_page.label=跳到第一頁 first_page_label=跳到第一頁 last_page.title=跳到最後一頁 -last_page.label=跳到最後一頁 last_page_label=跳到最後一頁 page_rotate_cw.title=順時針旋轉 -page_rotate_cw.label=順時針旋轉 page_rotate_cw_label=順時針旋轉 page_rotate_ccw.title=逆時針旋轉 -page_rotate_ccw.label=逆時針旋轉 page_rotate_ccw_label=逆時針旋轉 cursor_text_select_tool.title=開啟文字選擇工具 @@ -65,6 +69,8 @@ cursor_text_select_tool_label=文字選擇工具 cursor_hand_tool.title=開啟頁面移動工具 cursor_hand_tool_label=頁面移動工具 +scroll_page.title=使用頁面捲動功能 +scroll_page_label=頁面捲動功能 scroll_vertical.title=使用垂直捲動版面 scroll_vertical_label=垂直捲動 scroll_horizontal.title=使用水平捲動版面 @@ -137,7 +143,6 @@ print_progress_close=取消 # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=切換側邊欄 -toggle_sidebar_notification.title=切換側邊攔(文件包含大綱或附件) toggle_sidebar_notification2.title=切換側邊欄(包含大綱、附件、圖層的文件) toggle_sidebar_label=切換側邊欄 document_outline.title=顯示文件大綱(雙擊展開/摺疊所有項目) @@ -153,9 +158,6 @@ current_outline_item_label=目前的大綱項目 findbar.title=在文件中尋找 findbar_label=尋找 -# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. -page_canvas=第 {{page}} 頁 - additional_layers=其他圖層 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number. page_landmark=第 {{page}} 頁 @@ -165,7 +167,7 @@ page_landmark=第 {{page}} 頁 thumb_page_title=第 {{page}} 頁 # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page # number. -thumb_page_canvas=頁 {{page}} 的縮圖 +thumb_page_canvas=第 {{page}} 頁的縮圖 # Find panel button title and messages find_input.title=尋找 @@ -176,6 +178,7 @@ find_next.title=尋找文字下次出現的位置 find_next_label=下一個 find_highlight=全部強調標示 find_match_case_label=區分大小寫 +find_match_diacritics_label=符合變音符號 find_entire_word_label=符合整個字 find_reached_top=已搜尋至文件頂端,自底端繼續搜尋 find_reached_bottom=已搜尋至文件底端,自頂端繼續搜尋 @@ -219,7 +222,6 @@ error_stack=堆疊: {{stack}} error_file=檔案: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=行: {{line}} -rendering_error=描繪頁面時發生錯誤。 # Predefined zoom values page_scale_width=頁面寬度 @@ -231,15 +233,16 @@ page_scale_actual=實際大小 page_scale_percent={{scale}}% # Loading indicator messages -loading_error_indicator=錯誤 +loading=載入中… # Loading indicator messages -loading=載入中… loading_error=載入 PDF 時發生錯誤。 invalid_file_error=無效或毀損的 PDF 檔案。 missing_file_error=找不到 PDF 檔案。 unexpected_response_error=伺服器回應未預期的內容。 +rendering_error=描繪頁面時發生錯誤。 + # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. annotation_date_string={{date}} {{time}} @@ -257,3 +260,23 @@ password_cancel=取消 printing_not_supported=警告: 此瀏覽器未完整支援列印功能。 printing_not_ready=警告: 此 PDF 未完成下載以供列印。 web_fonts_disabled=已停用網路字型 (Web fonts): 無法使用 PDF 內嵌字型。 + +# Editor +editor_free_text2.title=文字 +editor_free_text2_label=文字 +editor_ink2.title=繪圖 +editor_ink2_label=繪圖 + +free_text2_default_content=開始打字… + +# Editor Parameters +editor_free_text_color=色彩 +editor_free_text_size=大小 +editor_ink_color=色彩 +editor_ink_thickness=線條粗細 +editor_ink_opacity=透​明度 + +# Editor aria +editor_free_text2_aria_label=文本編輯器 +editor_ink2_aria_label=圖形編輯器 +editor_ink_canvas_aria_label=使用者建立的圖片 diff --git a/media/js/pdf/web/standard_fonts/FoxitDingbats.pfb b/media/js/pdf/web/standard_fonts/FoxitDingbats.pfb new file mode 100644 index 0000000000..30d52963e2 Binary files /dev/null and b/media/js/pdf/web/standard_fonts/FoxitDingbats.pfb differ diff --git a/media/js/pdf/web/standard_fonts/FoxitFixed.pfb b/media/js/pdf/web/standard_fonts/FoxitFixed.pfb new file mode 100644 index 0000000000..f12dcbce52 Binary files /dev/null and b/media/js/pdf/web/standard_fonts/FoxitFixed.pfb differ diff --git a/media/js/pdf/web/standard_fonts/FoxitFixedBold.pfb b/media/js/pdf/web/standard_fonts/FoxitFixedBold.pfb new file mode 100644 index 0000000000..cf8e24aee5 Binary files /dev/null and b/media/js/pdf/web/standard_fonts/FoxitFixedBold.pfb differ diff --git a/media/js/pdf/web/standard_fonts/FoxitFixedBoldItalic.pfb b/media/js/pdf/web/standard_fonts/FoxitFixedBoldItalic.pfb new file mode 100644 index 0000000000..d2880017c2 Binary files /dev/null and b/media/js/pdf/web/standard_fonts/FoxitFixedBoldItalic.pfb differ diff --git a/media/js/pdf/web/standard_fonts/FoxitFixedItalic.pfb b/media/js/pdf/web/standard_fonts/FoxitFixedItalic.pfb new file mode 100644 index 0000000000..d71697d4b6 Binary files /dev/null and b/media/js/pdf/web/standard_fonts/FoxitFixedItalic.pfb differ diff --git a/media/js/pdf/web/standard_fonts/FoxitSerif.pfb b/media/js/pdf/web/standard_fonts/FoxitSerif.pfb new file mode 100644 index 0000000000..3fa682efbb Binary files /dev/null and b/media/js/pdf/web/standard_fonts/FoxitSerif.pfb differ diff --git a/media/js/pdf/web/standard_fonts/FoxitSerifBold.pfb b/media/js/pdf/web/standard_fonts/FoxitSerifBold.pfb new file mode 100644 index 0000000000..ff7c6ddecf Binary files /dev/null and b/media/js/pdf/web/standard_fonts/FoxitSerifBold.pfb differ diff --git a/media/js/pdf/web/standard_fonts/FoxitSerifBoldItalic.pfb b/media/js/pdf/web/standard_fonts/FoxitSerifBoldItalic.pfb new file mode 100644 index 0000000000..460231fb88 Binary files /dev/null and b/media/js/pdf/web/standard_fonts/FoxitSerifBoldItalic.pfb differ diff --git a/media/js/pdf/web/standard_fonts/FoxitSerifItalic.pfb b/media/js/pdf/web/standard_fonts/FoxitSerifItalic.pfb new file mode 100644 index 0000000000..d03a7c781e Binary files /dev/null and b/media/js/pdf/web/standard_fonts/FoxitSerifItalic.pfb differ diff --git a/media/js/pdf/web/standard_fonts/FoxitSymbol.pfb b/media/js/pdf/web/standard_fonts/FoxitSymbol.pfb new file mode 100644 index 0000000000..c8f9bca78c Binary files /dev/null and b/media/js/pdf/web/standard_fonts/FoxitSymbol.pfb differ diff --git a/media/js/pdf/web/standard_fonts/LICENSE_FOXIT b/media/js/pdf/web/standard_fonts/LICENSE_FOXIT new file mode 100644 index 0000000000..8b4ed6dddf --- /dev/null +++ b/media/js/pdf/web/standard_fonts/LICENSE_FOXIT @@ -0,0 +1,27 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/media/js/pdf/web/standard_fonts/LICENSE_LIBERATION b/media/js/pdf/web/standard_fonts/LICENSE_LIBERATION new file mode 100644 index 0000000000..aba73e8a40 --- /dev/null +++ b/media/js/pdf/web/standard_fonts/LICENSE_LIBERATION @@ -0,0 +1,102 @@ +Digitized data copyright (c) 2010 Google Corporation + with Reserved Font Arimo, Tinos and Cousine. +Copyright (c) 2012 Red Hat, Inc. + with Reserved Font Name Liberation. + +This Font Software is licensed under the SIL Open Font License, +Version 1.1. + +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 + +PREAMBLE The goals of the Open Font License (OFL) are to stimulate +worldwide development of collaborative font projects, to support the font +creation efforts of academic and linguistic communities, and to provide +a free and open framework in which fonts may be shared and improved in +partnership with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. +The fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply to +any document created using the fonts or their derivatives. + + + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. +This may include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components +as distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting ? in part or in whole ? +any of the components of the Original Version, by changing formats or +by porting the Font Software to a new environment. + +"Author" refers to any designer, engineer, programmer, technical writer +or other person who contributed to the Font Software. + + +PERMISSION & CONDITIONS + +Permission is hereby granted, free of charge, to any person obtaining a +copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components,in + Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, + redistributed and/or sold with any software, provided that each copy + contains the above copyright notice and this license. These can be + included either as stand-alone text files, human-readable headers or + in the appropriate machine-readable metadata fields within text or + binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font + Name(s) unless explicit written permission is granted by the + corresponding Copyright Holder. This restriction only applies to the + primary font name as presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font + Software shall not be used to promote, endorse or advertise any + Modified Version, except to acknowledge the contribution(s) of the + Copyright Holder(s) and the Author(s) or with their explicit written + permission. + +5) The Font Software, modified or unmodified, in part or in whole, must + be distributed entirely under this license, and must not be distributed + under any other license. The requirement for fonts to remain under + this license does not apply to any document created using the Font + Software. + + + +TERMINATION +This license becomes null and void if any of the above conditions are not met. + + + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER +DEALINGS IN THE FONT SOFTWARE. + diff --git a/media/js/pdf/web/standard_fonts/LiberationSans-Bold.ttf b/media/js/pdf/web/standard_fonts/LiberationSans-Bold.ttf new file mode 100644 index 0000000000..ee23715404 Binary files /dev/null and b/media/js/pdf/web/standard_fonts/LiberationSans-Bold.ttf differ diff --git a/media/js/pdf/web/standard_fonts/LiberationSans-BoldItalic.ttf b/media/js/pdf/web/standard_fonts/LiberationSans-BoldItalic.ttf new file mode 100644 index 0000000000..42b5717ddb Binary files /dev/null and b/media/js/pdf/web/standard_fonts/LiberationSans-BoldItalic.ttf differ diff --git a/media/js/pdf/web/standard_fonts/LiberationSans-Italic.ttf b/media/js/pdf/web/standard_fonts/LiberationSans-Italic.ttf new file mode 100644 index 0000000000..0cf6126349 Binary files /dev/null and b/media/js/pdf/web/standard_fonts/LiberationSans-Italic.ttf differ diff --git a/media/js/pdf/web/standard_fonts/LiberationSans-Regular.ttf b/media/js/pdf/web/standard_fonts/LiberationSans-Regular.ttf new file mode 100644 index 0000000000..366d1489cd Binary files /dev/null and b/media/js/pdf/web/standard_fonts/LiberationSans-Regular.ttf differ diff --git a/media/js/pdf/web/viewer.css b/media/js/pdf/web/viewer.css new file mode 100644 index 0000000000..bbe0e9d93f --- /dev/null +++ b/media/js/pdf/web/viewer.css @@ -0,0 +1,2645 @@ +/* Copyright 2014 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +:root { + --highlight-bg-color: rgba(180, 0, 170, 1); + --highlight-selected-bg-color: rgba(0, 100, 0, 1); +} + +@media screen and (forced-colors: active) { + :root { + --highlight-bg-color: Highlight; + --highlight-selected-bg-color: ButtonText; + } +} + +.textLayer { + position: absolute; + text-align: initial; + inset: 0; + overflow: hidden; + opacity: 0.25; + line-height: 1; + -webkit-text-size-adjust: none; + -moz-text-size-adjust: none; + text-size-adjust: none; + forced-color-adjust: none; + transform-origin: 0 0; + z-index: 2; +} + +.textLayer :is(span, br) { + color: transparent; + position: absolute; + white-space: pre; + cursor: text; + transform-origin: 0% 0%; +} + +/* Only necessary in Google Chrome, see issue 14205, and most unfortunately + * the problem doesn't show up in "text" reference tests. */ +.textLayer span.markedContent { + top: 0; + height: 0; +} + +.textLayer .highlight { + margin: -1px; + padding: 1px; + background-color: var(--highlight-bg-color); + border-radius: 4px; +} + +.textLayer .highlight.appended { + position: initial; +} + +.textLayer .highlight.begin { + border-radius: 4px 0 0 4px; +} + +.textLayer .highlight.end { + border-radius: 0 4px 4px 0; +} + +.textLayer .highlight.middle { + border-radius: 0; +} + +.textLayer .highlight.selected { + background-color: var(--highlight-selected-bg-color); +} + +.textLayer ::-moz-selection { + background: blue; + background: AccentColor; +} + +.textLayer ::selection { + background: blue; + background: AccentColor; +} + +/* Avoids https://github.com/mozilla/pdf.js/issues/13840 in Chrome */ +.textLayer br::-moz-selection { + background: transparent; +} +.textLayer br::selection { + background: transparent; +} + +.textLayer .endOfContent { + display: block; + position: absolute; + inset: 100% 0 0; + z-index: -1; + cursor: default; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.textLayer .endOfContent.active { + top: 0; +} + + +:root { + --annotation-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,"); + --input-focus-border-color: Highlight; + --input-focus-outline: 1px solid Canvas; + --input-unfocused-border-color: transparent; + --input-disabled-border-color: transparent; + --input-hover-border-color: black; + --link-outline: none; +} + +@media screen and (forced-colors: active) { + :root { + --input-focus-border-color: CanvasText; + --input-unfocused-border-color: ActiveText; + --input-disabled-border-color: GrayText; + --input-hover-border-color: Highlight; + --link-outline: 1.5px solid LinkText; + --hcm-highligh-filter: invert(100%); + } + .annotationLayer .textWidgetAnnotation :is(input, textarea):required, + .annotationLayer .choiceWidgetAnnotation select:required, + .annotationLayer + .buttonWidgetAnnotation:is(.checkBox, .radioButton) + input:required { + outline: 1.5px solid selectedItem; + } + + .annotationLayer .linkAnnotation:hover { + -webkit-backdrop-filter: var(--hcm-highligh-filter); + backdrop-filter: var(--hcm-highligh-filter); + } + + .annotationLayer .linkAnnotation > a:hover { + opacity: 0 !important; + background: none !important; + box-shadow: none; + } + + .annotationLayer .popupAnnotation .popup { + outline: calc(1.5px * var(--scale-factor)) solid CanvasText !important; + background-color: ButtonFace !important; + color: ButtonText !important; + } + + .annotationLayer .highlightArea:hover::after { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + -webkit-backdrop-filter: var(--hcm-highligh-filter); + backdrop-filter: var(--hcm-highligh-filter); + content: ""; + pointer-events: none; + } + + .annotationLayer .popupAnnotation.focused .popup { + outline: calc(3px * var(--scale-factor)) solid Highlight !important; + } +} + +.annotationLayer { + position: absolute; + top: 0; + left: 0; + pointer-events: none; + transform-origin: 0 0; + z-index: 3; +} + +.annotationLayer[data-main-rotation="90"] .norotate { + transform: rotate(270deg) translateX(-100%); +} +.annotationLayer[data-main-rotation="180"] .norotate { + transform: rotate(180deg) translate(-100%, -100%); +} +.annotationLayer[data-main-rotation="270"] .norotate { + transform: rotate(90deg) translateY(-100%); +} + +.annotationLayer canvas { + position: absolute; + width: 100%; + height: 100%; + pointer-events: none; +} + +.annotationLayer section { + position: absolute; + text-align: initial; + pointer-events: auto; + box-sizing: border-box; + transform-origin: 0 0; +} + +.annotationLayer .linkAnnotation { + outline: var(--link-outline); +} + +.annotationLayer :is(.linkAnnotation, .buttonWidgetAnnotation.pushButton) > a { + position: absolute; + font-size: 1em; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.annotationLayer + :is(.linkAnnotation, .buttonWidgetAnnotation.pushButton) + > a:hover { + opacity: 0.2; + background: rgba(255, 255, 0, 1); + box-shadow: 0 2px 10px rgba(255, 255, 0, 1); +} + +.annotationLayer .textAnnotation img { + position: absolute; + cursor: pointer; + width: 100%; + height: 100%; + top: 0; + left: 0; +} + +.annotationLayer .textWidgetAnnotation :is(input, textarea), +.annotationLayer .choiceWidgetAnnotation select, +.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input { + background-image: var(--annotation-unfocused-field-background); + border: 2px solid var(--input-unfocused-border-color); + box-sizing: border-box; + font: calc(9px * var(--scale-factor)) sans-serif; + height: 100%; + margin: 0; + vertical-align: top; + width: 100%; +} + +.annotationLayer .textWidgetAnnotation :is(input, textarea):required, +.annotationLayer .choiceWidgetAnnotation select:required, +.annotationLayer + .buttonWidgetAnnotation:is(.checkBox, .radioButton) + input:required { + outline: 1.5px solid red; +} + +.annotationLayer .choiceWidgetAnnotation select option { + padding: 0; +} + +.annotationLayer .buttonWidgetAnnotation.radioButton input { + border-radius: 50%; +} + +.annotationLayer .textWidgetAnnotation textarea { + resize: none; +} + +.annotationLayer .textWidgetAnnotation :is(input, textarea)[disabled], +.annotationLayer .choiceWidgetAnnotation select[disabled], +.annotationLayer + .buttonWidgetAnnotation:is(.checkBox, .radioButton) + input[disabled] { + background: none; + border: 2px solid var(--input-disabled-border-color); + cursor: not-allowed; +} + +.annotationLayer .textWidgetAnnotation :is(input, textarea):hover, +.annotationLayer .choiceWidgetAnnotation select:hover, +.annotationLayer + .buttonWidgetAnnotation:is(.checkBox, .radioButton) + input:hover { + border: 2px solid var(--input-hover-border-color); +} +.annotationLayer .textWidgetAnnotation :is(input, textarea):hover, +.annotationLayer .choiceWidgetAnnotation select:hover, +.annotationLayer .buttonWidgetAnnotation.checkBox input:hover { + border-radius: 2px; +} + +.annotationLayer .textWidgetAnnotation :is(input, textarea):focus, +.annotationLayer .choiceWidgetAnnotation select:focus { + background: none; + border: 2px solid var(--input-focus-border-color); + border-radius: 2px; + outline: var(--input-focus-outline); +} + +.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) :focus { + background-image: none; + background-color: transparent; +} + +.annotationLayer .buttonWidgetAnnotation.checkBox :focus { + border: 2px solid var(--input-focus-border-color); + border-radius: 2px; + outline: var(--input-focus-outline); +} + +.annotationLayer .buttonWidgetAnnotation.radioButton :focus { + border: 2px solid var(--input-focus-border-color); + outline: var(--input-focus-outline); +} + +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before, +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after, +.annotationLayer .buttonWidgetAnnotation.radioButton input:checked::before { + background-color: CanvasText; + content: ""; + display: block; + position: absolute; +} + +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before, +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after { + height: 80%; + left: 45%; + width: 1px; +} + +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before { + transform: rotate(45deg); +} + +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after { + transform: rotate(-45deg); +} + +.annotationLayer .buttonWidgetAnnotation.radioButton input:checked::before { + border-radius: 50%; + height: 50%; + left: 30%; + top: 20%; + width: 50%; +} + +.annotationLayer .textWidgetAnnotation input.comb { + font-family: monospace; + padding-left: 2px; + padding-right: 0; +} + +.annotationLayer .textWidgetAnnotation input.comb:focus { + /* + * Letter spacing is placed on the right side of each character. Hence, the + * letter spacing of the last character may be placed outside the visible + * area, causing horizontal scrolling. We avoid this by extending the width + * when the element has focus and revert this when it loses focus. + */ + width: 103%; +} + +.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +.annotationLayer .fileAttachmentAnnotation .popupTriggerArea { + height: 100%; + width: 100%; +} + +.annotationLayer .popupAnnotation { + position: absolute; + font-size: calc(9px * var(--scale-factor)); + pointer-events: none; + width: -moz-max-content; + width: max-content; + max-width: 45%; + height: auto; +} + +.annotationLayer .popup { + background-color: rgba(255, 255, 153, 1); + box-shadow: 0 calc(2px * var(--scale-factor)) calc(5px * var(--scale-factor)) + rgba(136, 136, 136, 1); + border-radius: calc(2px * var(--scale-factor)); + outline: 1.5px solid rgb(255, 255, 74); + padding: calc(6px * var(--scale-factor)); + cursor: pointer; + font: message-box; + white-space: normal; + word-wrap: break-word; + pointer-events: auto; +} + +.annotationLayer .popupAnnotation.focused .popup { + outline-width: 3px; +} + +.annotationLayer .popup * { + font-size: calc(9px * var(--scale-factor)); +} + +.annotationLayer .popup > .header { + display: inline-block; +} + +.annotationLayer .popup > .header h1 { + display: inline; +} + +.annotationLayer .popup > .header .popupDate { + display: inline-block; + margin-left: calc(5px * var(--scale-factor)); + width: -moz-fit-content; + width: fit-content; +} + +.annotationLayer .popupContent { + border-top: 1px solid rgba(51, 51, 51, 1); + margin-top: calc(2px * var(--scale-factor)); + padding-top: calc(2px * var(--scale-factor)); +} + +.annotationLayer .richText > * { + white-space: pre-wrap; + font-size: calc(9px * var(--scale-factor)); +} + +.annotationLayer .highlightAnnotation, +.annotationLayer .underlineAnnotation, +.annotationLayer .squigglyAnnotation, +.annotationLayer .strikeoutAnnotation, +.annotationLayer .freeTextAnnotation, +.annotationLayer .lineAnnotation svg line, +.annotationLayer .squareAnnotation svg rect, +.annotationLayer .circleAnnotation svg ellipse, +.annotationLayer .polylineAnnotation svg polyline, +.annotationLayer .polygonAnnotation svg polygon, +.annotationLayer .caretAnnotation, +.annotationLayer .inkAnnotation svg polyline, +.annotationLayer .stampAnnotation, +.annotationLayer .fileAttachmentAnnotation { + cursor: pointer; +} + +.annotationLayer section svg { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; +} + +.annotationLayer .annotationTextContent { + position: absolute; + width: 100%; + height: 100%; + opacity: 0; + color: transparent; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + pointer-events: none; +} + +.annotationLayer .annotationTextContent span { + width: 100%; + display: inline-block; +} + + +:root { + --xfa-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,"); + --xfa-focus-outline: auto; +} + +@media screen and (forced-colors: active) { + :root { + --xfa-focus-outline: 2px solid CanvasText; + } + .xfaLayer *:required { + outline: 1.5px solid selectedItem; + } +} + +.xfaLayer { + background-color: transparent; +} + +.xfaLayer .highlight { + margin: -1px; + padding: 1px; + background-color: rgba(239, 203, 237, 1); + border-radius: 4px; +} + +.xfaLayer .highlight.appended { + position: initial; +} + +.xfaLayer .highlight.begin { + border-radius: 4px 0 0 4px; +} + +.xfaLayer .highlight.end { + border-radius: 0 4px 4px 0; +} + +.xfaLayer .highlight.middle { + border-radius: 0; +} + +.xfaLayer .highlight.selected { + background-color: rgba(203, 223, 203, 1); +} + +.xfaPage { + overflow: hidden; + position: relative; +} + +.xfaContentarea { + position: absolute; +} + +.xfaPrintOnly { + display: none; +} + +.xfaLayer { + position: absolute; + text-align: initial; + top: 0; + left: 0; + transform-origin: 0 0; + line-height: 1.2; +} + +.xfaLayer * { + color: inherit; + font: inherit; + font-style: inherit; + font-weight: inherit; + font-kerning: inherit; + letter-spacing: -0.01px; + text-align: inherit; + text-decoration: inherit; + box-sizing: border-box; + background-color: transparent; + padding: 0; + margin: 0; + pointer-events: auto; + line-height: inherit; +} + +.xfaLayer *:required { + outline: 1.5px solid red; +} + +.xfaLayer div, +.xfaLayer svg, +.xfaLayer svg * { + pointer-events: none; +} + +.xfaLayer a { + color: blue; +} + +.xfaRich li { + margin-left: 3em; +} + +.xfaFont { + color: black; + font-weight: normal; + font-kerning: none; + font-size: 10px; + font-style: normal; + letter-spacing: 0; + text-decoration: none; + vertical-align: 0; +} + +.xfaCaption { + overflow: hidden; + flex: 0 0 auto; +} + +.xfaCaptionForCheckButton { + overflow: hidden; + flex: 1 1 auto; +} + +.xfaLabel { + height: 100%; + width: 100%; +} + +.xfaLeft { + display: flex; + flex-direction: row; + align-items: center; +} + +.xfaRight { + display: flex; + flex-direction: row-reverse; + align-items: center; +} + +:is(.xfaLeft, .xfaRight) > :is(.xfaCaption, .xfaCaptionForCheckButton) { + max-height: 100%; +} + +.xfaTop { + display: flex; + flex-direction: column; + align-items: flex-start; +} + +.xfaBottom { + display: flex; + flex-direction: column-reverse; + align-items: flex-start; +} + +:is(.xfaTop, .xfaBottom) > :is(.xfaCaption, .xfaCaptionForCheckButton) { + width: 100%; +} + +.xfaBorder { + background-color: transparent; + position: absolute; + pointer-events: none; +} + +.xfaWrapped { + width: 100%; + height: 100%; +} + +:is(.xfaTextfield, .xfaSelect):focus { + background-image: none; + background-color: transparent; + outline: var(--xfa-focus-outline); + outline-offset: -1px; +} + +:is(.xfaCheckbox, .xfaRadio):focus { + outline: var(--xfa-focus-outline); +} + +.xfaTextfield, +.xfaSelect { + height: 100%; + width: 100%; + flex: 1 1 auto; + border: none; + resize: none; + background-image: var(--xfa-unfocused-field-background); +} + +.xfaSelect { + padding-inline: 2px; +} + +:is(.xfaTop, .xfaBottom) > :is(.xfaTextfield, .xfaSelect) { + flex: 0 1 auto; +} + +.xfaButton { + cursor: pointer; + width: 100%; + height: 100%; + border: none; + text-align: center; +} + +.xfaLink { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; +} + +.xfaCheckbox, +.xfaRadio { + width: 100%; + height: 100%; + flex: 0 0 auto; + border: none; +} + +.xfaRich { + white-space: pre-wrap; + width: 100%; + height: 100%; +} + +.xfaImage { + -o-object-position: left top; + object-position: left top; + -o-object-fit: contain; + object-fit: contain; + width: 100%; + height: 100%; +} + +.xfaLrTb, +.xfaRlTb, +.xfaTb { + display: flex; + flex-direction: column; + align-items: stretch; +} + +.xfaLr { + display: flex; + flex-direction: row; + align-items: stretch; +} + +.xfaRl { + display: flex; + flex-direction: row-reverse; + align-items: stretch; +} + +.xfaTb > div { + justify-content: left; +} + +.xfaPosition { + position: relative; +} + +.xfaArea { + position: relative; +} + +.xfaValignMiddle { + display: flex; + align-items: center; +} + +.xfaTable { + display: flex; + flex-direction: column; + align-items: stretch; +} + +.xfaTable .xfaRow { + display: flex; + flex-direction: row; + align-items: stretch; +} + +.xfaTable .xfaRlRow { + display: flex; + flex-direction: row-reverse; + align-items: stretch; + flex: 1; +} + +.xfaTable .xfaRlRow > div { + flex: 1; +} + +:is(.xfaNonInteractive, .xfaDisabled, .xfaReadOnly) :is(input, textarea) { + background: initial; +} + +@media print { + .xfaTextfield, + .xfaSelect { + background: transparent; + } + + .xfaSelect { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + text-indent: 1px; + text-overflow: ""; + } +} + + +:root { + --focus-outline: solid 2px blue; + --hover-outline: dashed 2px blue; + --freetext-line-height: 1.35; + --freetext-padding: 2px; + --editorFreeText-editing-cursor: text; + --editorInk-editing-cursor: url(images/cursor-editorInk.svg) 0 16, pointer; +} + +@media (-webkit-min-device-pixel-ratio: 1.1), (min-resolution: 1.1dppx) { + :root { + --editorFreeText-editing-cursor: url(images/cursor-editorFreeText.svg) 0 16, + text; + } +} + +@media screen and (forced-colors: active) { + :root { + --focus-outline: solid 3px ButtonText; + --hover-outline: dashed 3px ButtonText; + } +} + +[data-editor-rotation="90"] { + transform: rotate(90deg); +} +[data-editor-rotation="180"] { + transform: rotate(180deg); +} +[data-editor-rotation="270"] { + transform: rotate(270deg); +} + +.annotationEditorLayer { + background: transparent; + position: absolute; + top: 0; + left: 0; + font-size: calc(100px * var(--scale-factor)); + transform-origin: 0 0; + cursor: auto; + z-index: 4; +} + +.annotationEditorLayer.freeTextEditing { + cursor: var(--editorFreeText-editing-cursor); +} + +.annotationEditorLayer.inkEditing { + cursor: var(--editorInk-editing-cursor); +} + +.annotationEditorLayer :is(.freeTextEditor, .inkEditor)[draggable="true"] { + cursor: move; +} + +.annotationEditorLayer .selectedEditor { + outline: var(--focus-outline); + resize: none; +} + +.annotationEditorLayer .freeTextEditor { + position: absolute; + background: transparent; + border-radius: 3px; + padding: calc(var(--freetext-padding) * var(--scale-factor)); + resize: none; + width: auto; + height: auto; + z-index: 1; + transform-origin: 0 0; + touch-action: none; + cursor: auto; +} + +.annotationEditorLayer .freeTextEditor .internal { + background: transparent; + border: none; + top: 0; + left: 0; + overflow: visible; + white-space: nowrap; + resize: none; + font: 10px sans-serif; + line-height: var(--freetext-line-height); +} + +.annotationEditorLayer .freeTextEditor .overlay { + position: absolute; + display: none; + background: transparent; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.annotationEditorLayer .freeTextEditor .overlay.enabled { + display: block; +} + +.annotationEditorLayer .freeTextEditor .internal:empty::before { + content: attr(default-content); + color: gray; +} + +.annotationEditorLayer .freeTextEditor .internal:focus { + outline: none; +} + +.annotationEditorLayer .inkEditor.disabled { + resize: none; +} + +.annotationEditorLayer .inkEditor.disabled.selectedEditor { + resize: horizontal; +} + +.annotationEditorLayer + :is(.freeTextEditor, .inkEditor):hover:not(.selectedEditor) { + outline: var(--hover-outline); +} + +.annotationEditorLayer .inkEditor { + position: absolute; + background: transparent; + border-radius: 3px; + overflow: auto; + width: 100%; + height: 100%; + z-index: 1; + transform-origin: 0 0; + cursor: auto; +} + +.annotationEditorLayer .inkEditor.editing { + resize: none; + cursor: inherit; +} + +.annotationEditorLayer .inkEditor .inkEditorCanvas { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + touch-action: none; +} + +:root { + --viewer-container-height: 0; + --pdfViewer-padding-bottom: 0; + --page-margin: 1px auto -8px; + --page-border: 9px solid transparent; + --spreadHorizontalWrapped-margin-LR: -3.5px; + --loading-icon-delay: 400ms; +} + +@media screen and (forced-colors: active) { + :root { + --pdfViewer-padding-bottom: 9px; + --page-margin: 8px auto -1px; + --page-border: 1px solid CanvasText; + --spreadHorizontalWrapped-margin-LR: 3.5px; + } +} + +[data-main-rotation="90"] { + transform: rotate(90deg) translateY(-100%); +} +[data-main-rotation="180"] { + transform: rotate(180deg) translate(-100%, -100%); +} +[data-main-rotation="270"] { + transform: rotate(270deg) translateX(-100%); +} + +#hiddenCopyElement { + position: absolute; + top: 0; + left: 0; + width: 0; + height: 0; + display: none; +} + +.pdfViewer { + /* Define this variable here and not in :root to avoid to reflow all the UI + when scaling (see #15929). */ + --scale-factor: 1; + + padding-bottom: var(--pdfViewer-padding-bottom); +} + +.pdfViewer .canvasWrapper { + overflow: hidden; + width: 100%; + height: 100%; + z-index: 1; +} + +.pdfViewer .page { + direction: ltr; + width: 816px; + height: 1056px; + margin: var(--page-margin); + position: relative; + overflow: visible; + border: var(--page-border); + background-clip: content-box; + background-color: rgba(255, 255, 255, 1); +} + +.pdfViewer .dummyPage { + position: relative; + width: 0; + height: var(--viewer-container-height); +} + +.pdfViewer.removePageBorders .page { + margin: 0 auto 10px; + border: none; +} + +.pdfViewer:is(.scrollHorizontal, .scrollWrapped), +.spread { + margin-inline: 3.5px; + text-align: center; +} + +.pdfViewer.scrollHorizontal, +.spread { + white-space: nowrap; +} + +.pdfViewer.removePageBorders, +.pdfViewer:is(.scrollHorizontal, .scrollWrapped) .spread { + margin-inline: 0; +} + +.spread :is(.page, .dummyPage), +.pdfViewer:is(.scrollHorizontal, .scrollWrapped) :is(.page, .spread) { + display: inline-block; + vertical-align: middle; +} + +.spread .page, +.pdfViewer:is(.scrollHorizontal, .scrollWrapped) .page { + margin-inline: var(--spreadHorizontalWrapped-margin-LR); +} + +.pdfViewer.removePageBorders .spread .page, +.pdfViewer.removePageBorders:is(.scrollHorizontal, .scrollWrapped) .page { + margin-inline: 5px; +} + +.pdfViewer .page canvas { + margin: 0; + display: block; +} + +.pdfViewer .page canvas .structTree { + contain: strict; +} + +.pdfViewer .page canvas[hidden] { + display: none; +} + +.pdfViewer .page canvas[zooming] { + width: 100%; + height: 100%; +} + +.pdfViewer .page.loadingIcon::after { + position: absolute; + top: 0; + left: 0; + content: ""; + width: 100%; + height: 100%; + background: url("images/loading-icon.gif") center no-repeat; + display: none; + /* Using a delay with background-image doesn't work, + consequently we use the display. */ + transition-property: display; + transition-delay: var(--loading-icon-delay); + z-index: 5; + contain: strict; +} + +.pdfViewer .page.loading::after { + display: block; +} + +.pdfViewer .page:not(.loading)::after { + transition-property: none; + display: none; +} + +.pdfPresentationMode .pdfViewer { + padding-bottom: 0; +} + +.pdfPresentationMode .spread { + margin: 0; +} + +.pdfPresentationMode .pdfViewer .page { + margin: 0 auto; + border: 2px solid transparent; +} + +:root { + --dir-factor: 1; + --inline-start: left; + --inline-end: right; + + --sidebar-width: 200px; + --sidebar-transition-duration: 200ms; + --sidebar-transition-timing-function: ease; + + --toolbar-icon-opacity: 0.7; + --doorhanger-icon-opacity: 0.9; + + --main-color: rgba(12, 12, 13, 1); + --body-bg-color: rgba(212, 212, 215, 1); + --progressBar-color: rgba(10, 132, 255, 1); + --progressBar-bg-color: rgba(221, 221, 222, 1); + --progressBar-blend-color: rgba(116, 177, 239, 1); + --scrollbar-color: auto; + --scrollbar-bg-color: auto; + --toolbar-icon-bg-color: rgba(0, 0, 0, 1); + --toolbar-icon-hover-bg-color: rgba(0, 0, 0, 1); + + --sidebar-narrow-bg-color: rgba(212, 212, 215, 0.9); + --sidebar-toolbar-bg-color: rgba(245, 246, 247, 1); + --toolbar-bg-color: rgba(249, 249, 250, 1); + --toolbar-border-color: rgba(184, 184, 184, 1); + --toolbar-box-shadow: 0 1px 0 var(--toolbar-border-color); + --toolbar-border-bottom: none; + --toolbarSidebar-box-shadow: inset calc(-1px * var(--dir-factor)) 0 0 + rgba(0, 0, 0, 0.25), + 0 1px 0 rgba(0, 0, 0, 0.15), 0 0 1px rgba(0, 0, 0, 0.1); + --toolbarSidebar-border-bottom: none; + --button-hover-color: rgba(221, 222, 223, 1); + --toggled-btn-color: rgba(0, 0, 0, 1); + --toggled-btn-bg-color: rgba(0, 0, 0, 0.3); + --toggled-hover-active-btn-color: rgba(0, 0, 0, 0.4); + --dropdown-btn-bg-color: rgba(215, 215, 219, 1); + --dropdown-btn-border: none; + --separator-color: rgba(0, 0, 0, 0.3); + --field-color: rgba(6, 6, 6, 1); + --field-bg-color: rgba(255, 255, 255, 1); + --field-border-color: rgba(187, 187, 188, 1); + --treeitem-color: rgba(0, 0, 0, 0.8); + --treeitem-bg-color: rgba(0, 0, 0, 0.15); + --treeitem-hover-color: rgba(0, 0, 0, 0.9); + --treeitem-selected-color: rgba(0, 0, 0, 0.9); + --treeitem-selected-bg-color: rgba(0, 0, 0, 0.25); + --thumbnail-hover-color: rgba(0, 0, 0, 0.1); + --thumbnail-selected-color: rgba(0, 0, 0, 0.2); + --doorhanger-bg-color: rgba(255, 255, 255, 1); + --doorhanger-border-color: rgba(12, 12, 13, 0.2); + --doorhanger-hover-color: rgba(12, 12, 13, 1); + --doorhanger-hover-bg-color: rgba(237, 237, 237, 1); + --doorhanger-separator-color: rgba(222, 222, 222, 1); + --dialog-button-border: none; + --dialog-button-bg-color: rgba(12, 12, 13, 0.1); + --dialog-button-hover-bg-color: rgba(12, 12, 13, 0.3); + + --loading-icon: url(images/loading.svg); + --treeitem-expanded-icon: url(images/treeitem-expanded.svg); + --treeitem-collapsed-icon: url(images/treeitem-collapsed.svg); + --toolbarButton-editorFreeText-icon: url(images/toolbarButton-editorFreeText.svg); + --toolbarButton-editorInk-icon: url(images/toolbarButton-editorInk.svg); + --toolbarButton-menuArrow-icon: url(images/toolbarButton-menuArrow.svg); + --toolbarButton-sidebarToggle-icon: url(images/toolbarButton-sidebarToggle.svg); + --toolbarButton-secondaryToolbarToggle-icon: url(images/toolbarButton-secondaryToolbarToggle.svg); + --toolbarButton-pageUp-icon: url(images/toolbarButton-pageUp.svg); + --toolbarButton-pageDown-icon: url(images/toolbarButton-pageDown.svg); + --toolbarButton-zoomOut-icon: url(images/toolbarButton-zoomOut.svg); + --toolbarButton-zoomIn-icon: url(images/toolbarButton-zoomIn.svg); + --toolbarButton-presentationMode-icon: url(images/toolbarButton-presentationMode.svg); + --toolbarButton-print-icon: url(images/toolbarButton-print.svg); + --toolbarButton-openFile-icon: url(images/toolbarButton-openFile.svg); + --toolbarButton-download-icon: url(images/toolbarButton-download.svg); + --toolbarButton-bookmark-icon: url(images/toolbarButton-bookmark.svg); + --toolbarButton-viewThumbnail-icon: url(images/toolbarButton-viewThumbnail.svg); + --toolbarButton-viewOutline-icon: url(images/toolbarButton-viewOutline.svg); + --toolbarButton-viewAttachments-icon: url(images/toolbarButton-viewAttachments.svg); + --toolbarButton-viewLayers-icon: url(images/toolbarButton-viewLayers.svg); + --toolbarButton-currentOutlineItem-icon: url(images/toolbarButton-currentOutlineItem.svg); + --toolbarButton-search-icon: url(images/toolbarButton-search.svg); + --findbarButton-previous-icon: url(images/findbarButton-previous.svg); + --findbarButton-next-icon: url(images/findbarButton-next.svg); + --secondaryToolbarButton-firstPage-icon: url(images/secondaryToolbarButton-firstPage.svg); + --secondaryToolbarButton-lastPage-icon: url(images/secondaryToolbarButton-lastPage.svg); + --secondaryToolbarButton-rotateCcw-icon: url(images/secondaryToolbarButton-rotateCcw.svg); + --secondaryToolbarButton-rotateCw-icon: url(images/secondaryToolbarButton-rotateCw.svg); + --secondaryToolbarButton-selectTool-icon: url(images/secondaryToolbarButton-selectTool.svg); + --secondaryToolbarButton-handTool-icon: url(images/secondaryToolbarButton-handTool.svg); + --secondaryToolbarButton-scrollPage-icon: url(images/secondaryToolbarButton-scrollPage.svg); + --secondaryToolbarButton-scrollVertical-icon: url(images/secondaryToolbarButton-scrollVertical.svg); + --secondaryToolbarButton-scrollHorizontal-icon: url(images/secondaryToolbarButton-scrollHorizontal.svg); + --secondaryToolbarButton-scrollWrapped-icon: url(images/secondaryToolbarButton-scrollWrapped.svg); + --secondaryToolbarButton-spreadNone-icon: url(images/secondaryToolbarButton-spreadNone.svg); + --secondaryToolbarButton-spreadOdd-icon: url(images/secondaryToolbarButton-spreadOdd.svg); + --secondaryToolbarButton-spreadEven-icon: url(images/secondaryToolbarButton-spreadEven.svg); + --secondaryToolbarButton-documentProperties-icon: url(images/secondaryToolbarButton-documentProperties.svg); +} + +[dir="rtl"]:root { + --dir-factor: -1; + --inline-start: right; + --inline-end: left; +} + +@media (prefers-color-scheme: dark) { + :root { + --main-color: rgba(249, 249, 250, 1); + --body-bg-color: rgba(42, 42, 46, 1); + --progressBar-color: rgba(0, 96, 223, 1); + --progressBar-bg-color: rgba(40, 40, 43, 1); + --progressBar-blend-color: rgba(20, 68, 133, 1); + --scrollbar-color: rgba(121, 121, 123, 1); + --scrollbar-bg-color: rgba(35, 35, 39, 1); + --toolbar-icon-bg-color: rgba(255, 255, 255, 1); + --toolbar-icon-hover-bg-color: rgba(255, 255, 255, 1); + + --sidebar-narrow-bg-color: rgba(42, 42, 46, 0.9); + --sidebar-toolbar-bg-color: rgba(50, 50, 52, 1); + --toolbar-bg-color: rgba(56, 56, 61, 1); + --toolbar-border-color: rgba(12, 12, 13, 1); + --button-hover-color: rgba(102, 102, 103, 1); + --toggled-btn-color: rgba(255, 255, 255, 1); + --toggled-btn-bg-color: rgba(0, 0, 0, 0.3); + --toggled-hover-active-btn-color: rgba(0, 0, 0, 0.4); + --dropdown-btn-bg-color: rgba(74, 74, 79, 1); + --separator-color: rgba(0, 0, 0, 0.3); + --field-color: rgba(250, 250, 250, 1); + --field-bg-color: rgba(64, 64, 68, 1); + --field-border-color: rgba(115, 115, 115, 1); + --treeitem-color: rgba(255, 255, 255, 0.8); + --treeitem-bg-color: rgba(255, 255, 255, 0.15); + --treeitem-hover-color: rgba(255, 255, 255, 0.9); + --treeitem-selected-color: rgba(255, 255, 255, 0.9); + --treeitem-selected-bg-color: rgba(255, 255, 255, 0.25); + --thumbnail-hover-color: rgba(255, 255, 255, 0.1); + --thumbnail-selected-color: rgba(255, 255, 255, 0.2); + --doorhanger-bg-color: rgba(74, 74, 79, 1); + --doorhanger-border-color: rgba(39, 39, 43, 1); + --doorhanger-hover-color: rgba(249, 249, 250, 1); + --doorhanger-hover-bg-color: rgba(93, 94, 98, 1); + --doorhanger-separator-color: rgba(92, 92, 97, 1); + --dialog-button-bg-color: rgba(92, 92, 97, 1); + --dialog-button-hover-bg-color: rgba(115, 115, 115, 1); + + /* This image is used in elements, which unfortunately means that + * the `mask-image` approach used with all of the other images doesn't work + * here; hence why we still have two versions of this particular image. */ + --loading-icon: url(images/loading-dark.svg); + } +} + +@media screen and (forced-colors: active) { + :root { + --button-hover-color: Highlight; + --doorhanger-hover-bg-color: Highlight; + --toolbar-icon-opacity: 1; + --toolbar-icon-bg-color: ButtonText; + --toolbar-icon-hover-bg-color: ButtonFace; + --toolbar-border-color: CanvasText; + --toolbar-border-bottom: 1px solid var(--toolbar-border-color); + --toolbar-box-shadow: none; + --toggled-btn-color: HighlightText; + --toggled-btn-bg-color: LinkText; + --doorhanger-hover-color: ButtonFace; + --doorhanger-border-color-whcm: 1px solid ButtonText; + --doorhanger-triangle-opacity-whcm: 0; + --dialog-button-border: 1px solid Highlight; + --dialog-button-hover-bg-color: Highlight; + --dialog-button-hover-color: ButtonFace; + --dropdown-btn-border: 1px solid ButtonText; + --field-border-color: ButtonText; + --main-color: CanvasText; + --separator-color: GrayText; + --doorhanger-separator-color: GrayText; + --toolbarSidebar-box-shadow: none; + --toolbarSidebar-border-bottom: 1px solid var(--toolbar-border-color); + } +} + +@media screen and (prefers-reduced-motion: reduce) { + :root { + --sidebar-transition-duration: 0; + } +} + +* { + padding: 0; + margin: 0; +} + +html, +body { + height: 100%; + width: 100%; +} + +body { + background-color: var(--body-bg-color); + scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color); +} + +.hidden, +[hidden] { + display: none !important; +} + +#viewerContainer.pdfPresentationMode:-webkit-full-screen { + top: 0; + background-color: rgba(0, 0, 0, 1); + width: 100%; + height: 100%; + overflow: hidden; + cursor: none; + -webkit-user-select: none; + user-select: none; +} + +#viewerContainer.pdfPresentationMode:fullscreen { + top: 0; + background-color: rgba(0, 0, 0, 1); + width: 100%; + height: 100%; + overflow: hidden; + cursor: none; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.pdfPresentationMode:-webkit-full-screen section:not([data-internal-link]) { + pointer-events: none; +} + +.pdfPresentationMode:fullscreen section:not([data-internal-link]) { + pointer-events: none; +} + +.pdfPresentationMode:-webkit-full-screen .textLayer span { + cursor: none; +} + +.pdfPresentationMode:fullscreen .textLayer span { + cursor: none; +} + +.pdfPresentationMode.pdfPresentationModeControls > *, +.pdfPresentationMode.pdfPresentationModeControls .textLayer span { + cursor: default; +} + +#outerContainer { + width: 100%; + height: 100%; + position: relative; +} + +#sidebarContainer { + position: absolute; + inset-block: 32px 0; + inset-inline-start: calc(-1 * var(--sidebar-width)); + width: var(--sidebar-width); + visibility: hidden; + z-index: 100; + font: message-box; + border-top: 1px solid rgba(51, 51, 51, 1); + -webkit-border-end: var(--doorhanger-border-color-whcm); + border-inline-end: var(--doorhanger-border-color-whcm); + transition-property: inset-inline-start; + transition-duration: var(--sidebar-transition-duration); + transition-timing-function: var(--sidebar-transition-timing-function); +} + +#outerContainer:is(.sidebarMoving, .sidebarOpen) #sidebarContainer { + visibility: visible; +} +#outerContainer.sidebarOpen #sidebarContainer { + inset-inline-start: 0; +} + +#mainContainer { + position: absolute; + inset: 0; + min-width: 350px; +} + +#sidebarContent { + inset-block: 32px 0; + inset-inline-start: 0; + overflow: auto; + position: absolute; + width: 100%; + box-shadow: inset calc(-1px * var(--dir-factor)) 0 0 rgba(0, 0, 0, 0.25); +} + +#viewerContainer { + overflow: auto; + position: absolute; + inset: 32px 0 0; + outline: none; +} +#viewerContainer:not(.pdfPresentationMode) { + transition-duration: var(--sidebar-transition-duration); + transition-timing-function: var(--sidebar-transition-timing-function); +} + +#outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) { + inset-inline-start: var(--sidebar-width); + transition-property: inset-inline-start; +} + +.toolbar { + position: relative; + inset-inline: 0; + z-index: 9999; + cursor: default; + font: message-box; +} + +:is(.toolbar, .editorParamsToolbar, .findbar, #sidebarContainer) + :is(input, button, select), +.secondaryToolbar :is(input, button, a, select) { + outline: none; + font: message-box; +} + +#toolbarContainer { + width: 100%; +} + +#toolbarSidebar { + width: 100%; + height: 32px; + background-color: var(--sidebar-toolbar-bg-color); + box-shadow: var(--toolbarSidebar-box-shadow); + border-bottom: var(--toolbarSidebar-border-bottom); +} + +#sidebarResizer { + position: absolute; + inset-block: 0; + inset-inline-end: -6px; + width: 6px; + z-index: 200; + cursor: ew-resize; +} + +#toolbarContainer, +.findbar, +.secondaryToolbar, +.editorParamsToolbar { + position: relative; + height: 32px; + background-color: var(--toolbar-bg-color); + box-shadow: var(--toolbar-box-shadow); + border-bottom: var(--toolbar-border-bottom); +} + +#toolbarViewer { + height: 32px; +} + +#loadingBar { + /* Define these variables here, and not in :root, to avoid reflowing the + entire viewer when updating progress (see issue 15958). */ + --progressBar-percent: 0%; + --progressBar-end-offset: 0; + + position: absolute; + inset-inline: 0 var(--progressBar-end-offset); + height: 4px; + background-color: var(--progressBar-bg-color); + border-bottom: 1px solid var(--toolbar-border-color); + transition-property: inset-inline-start; + transition-duration: var(--sidebar-transition-duration); + transition-timing-function: var(--sidebar-transition-timing-function); +} + +#outerContainer.sidebarOpen #loadingBar { + inset-inline-start: var(--sidebar-width); +} + +#loadingBar .progress { + position: absolute; + top: 0; + inset-inline-start: 0; + width: 100%; + transform: scaleX(var(--progressBar-percent)); + transform-origin: calc(50% - 50% * var(--dir-factor)) 0; + height: 100%; + background-color: var(--progressBar-color); + overflow: hidden; + transition: transform 200ms; +} + +@keyframes progressIndeterminate { + 0% { + transform: translateX(calc(-142px * var(--dir-factor))); + } + 100% { + transform: translateX(0); + } +} + +#loadingBar.indeterminate .progress { + transform: none; + background-color: var(--progressBar-bg-color); + transition: none; +} + +#loadingBar.indeterminate .progress .glimmer { + position: absolute; + top: 0; + inset-inline-start: 0; + height: 100%; + width: calc(100% + 150px); + background: repeating-linear-gradient( + 135deg, + var(--progressBar-blend-color) 0, + var(--progressBar-bg-color) 5px, + var(--progressBar-bg-color) 45px, + var(--progressBar-color) 55px, + var(--progressBar-color) 95px, + var(--progressBar-blend-color) 100px + ); + animation: progressIndeterminate 1s linear infinite; +} + +#outerContainer.sidebarResizing + :is(#sidebarContainer, #viewerContainer, #loadingBar) { + /* Improve responsiveness and avoid visual glitches when the sidebar is resized. */ + transition-duration: 0s; +} + +.findbar, +.secondaryToolbar, +.editorParamsToolbar { + top: 32px; + position: absolute; + z-index: 30000; + height: auto; + padding: 0 4px; + margin: 4px 2px; + font: message-box; + font-size: 12px; + line-height: 14px; + text-align: left; + cursor: default; +} + +.findbar { + inset-inline-start: 64px; + min-width: 300px; + background-color: var(--toolbar-bg-color); +} +.findbar > div { + height: 32px; +} +.findbar > div#findbarInputContainer { + -webkit-margin-end: 4px; + margin-inline-end: 4px; +} +.findbar.wrapContainers > div, +.findbar.wrapContainers > div#findbarMessageContainer > * { + clear: both; +} +.findbar.wrapContainers > div#findbarMessageContainer { + height: auto; +} + +.findbar input[type="checkbox"] { + pointer-events: none; +} + +.findbar label { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.findbar label:hover, +.findbar input:focus-visible + label { + color: var(--toggled-btn-color); + background-color: var(--button-hover-color); +} + +.findbar .toolbarField[type="checkbox"]:checked + .toolbarLabel { + background-color: var(--toggled-btn-bg-color) !important; + color: var(--toggled-btn-color); +} + +#findInput { + width: 200px; +} +#findInput::-moz-placeholder { + font-style: normal; +} +#findInput::placeholder { + font-style: normal; +} +#findInput[data-status="pending"] { + background-image: var(--loading-icon); + background-repeat: no-repeat; + background-position: calc(50% + 48% * var(--dir-factor)); +} +#findInput[data-status="notFound"] { + background-color: rgba(255, 102, 102, 1); +} + +.secondaryToolbar, +.editorParamsToolbar { + padding: 6px 0 10px; + inset-inline-end: 4px; + height: auto; + background-color: var(--doorhanger-bg-color); +} + +.editorParamsToolbarContainer { + width: 220px; + margin-bottom: -4px; +} + +.editorParamsToolbarContainer > .editorParamsSetter { + min-height: 26px; + display: flex; + align-items: center; + justify-content: space-between; + padding-inline: 10px; +} + +.editorParamsToolbarContainer .editorParamsLabel { + -webkit-padding-end: 10px; + padding-inline-end: 10px; + flex: none; + color: var(--main-color); +} + +.editorParamsToolbarContainer .editorParamsColor { + width: 32px; + height: 32px; + flex: none; +} + +.editorParamsToolbarContainer .editorParamsSlider { + background-color: transparent; + width: 90px; + flex: 0 1 0; +} + +.editorParamsToolbarContainer .editorParamsSlider::-moz-range-progress { + background-color: black; +} + +.editorParamsToolbarContainer .editorParamsSlider::-webkit-slider-runnable-track, +.editorParamsToolbarContainer .editorParamsSlider::-moz-range-track { + background-color: black; +} + +.editorParamsToolbarContainer .editorParamsSlider::-webkit-slider-thumb, +.editorParamsToolbarContainer .editorParamsSlider::-moz-range-thumb { + background-color: white; +} + +#secondaryToolbarButtonContainer { + max-width: 220px; + min-height: 26px; + max-height: calc(var(--viewer-container-height) - 40px); + overflow-y: auto; + margin-bottom: -4px; +} + +#editorInkParamsToolbar { + inset-inline-end: 40px; + background-color: var(--toolbar-bg-color); +} + +#editorFreeTextParamsToolbar { + inset-inline-end: 68px; + background-color: var(--toolbar-bg-color); +} + +.doorHanger, +.doorHangerRight { + border-radius: 2px; + box-shadow: 0 1px 5px var(--doorhanger-border-color), + 0 0 0 1px var(--doorhanger-border-color); + border: var(--doorhanger-border-color-whcm); +} +:is(.doorHanger, .doorHangerRight)::after, +:is(.doorHanger, .doorHangerRight)::before { + bottom: 100%; + border: 8px solid rgba(0, 0, 0, 0); + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + opacity: var(--doorhanger-triangle-opacity-whcm); +} +.doorHanger::after { + inset-inline-start: 10px; + -webkit-margin-start: -8px; + margin-inline-start: -8px; + border-bottom-color: var(--toolbar-bg-color); +} +.doorHangerRight::after { + inset-inline-end: 10px; + -webkit-margin-end: -8px; + margin-inline-end: -8px; + border-bottom-color: var(--doorhanger-bg-color); +} +:is(.doorHanger, .doorHangerRight)::before { + border-bottom-color: var(--doorhanger-border-color); + border-width: 9px; +} +.doorHanger::before { + inset-inline-start: 10px; + -webkit-margin-start: -9px; + margin-inline-start: -9px; +} +.doorHangerRight::before { + inset-inline-end: 10px; + -webkit-margin-end: -9px; + margin-inline-end: -9px; +} + +#findResultsCount { + background-color: rgba(217, 217, 217, 1); + color: rgba(82, 82, 82, 1); + text-align: center; + padding: 4px 5px; + margin: 5px; +} + +#findMsg[data-status="notFound"] { + font-weight: bold; +} + +:is(#findResultsCount, #findMsg):empty { + display: none; +} + +#toolbarViewerMiddle { + position: absolute; + left: 50%; + transform: translateX(-50%); +} + +#toolbarViewerLeft, +#toolbarSidebarLeft { + float: var(--inline-start); +} +#toolbarViewerRight, +#toolbarSidebarRight { + float: var(--inline-end); +} + +#toolbarViewerLeft > *, +#toolbarViewerMiddle > *, +#toolbarViewerRight > *, +#toolbarSidebarLeft *, +#toolbarSidebarRight *, +.findbar * { + position: relative; + float: var(--inline-start); +} + +#toolbarViewerLeft { + -webkit-padding-start: 1px; + padding-inline-start: 1px; +} +#toolbarViewerRight { + -webkit-padding-end: 1px; + padding-inline-end: 1px; +} +#toolbarSidebarRight { + -webkit-padding-end: 2px; + padding-inline-end: 2px; +} + +.splitToolbarButton { + margin: 2px; + display: inline-block; +} +.splitToolbarButton > .toolbarButton { + float: var(--inline-start); +} + +.toolbarButton, +.secondaryToolbarButton, +.dialogButton { + border: none; + background: none; + width: 28px; + height: 28px; + outline: none; +} + +.dialogButton:is(:hover, :focus-visible) { + background-color: var(--dialog-button-hover-bg-color); +} + +.dialogButton:is(:hover, :focus-visible) > span { + color: var(--dialog-button-hover-color); +} + +.toolbarButton > span { + display: inline-block; + width: 0; + height: 0; + overflow: hidden; +} + +:is(.toolbarButton, .secondaryToolbarButton, .dialogButton)[disabled] { + opacity: 0.5; +} + +.splitToolbarButton > .toolbarButton:is(:hover, :focus-visible), +.dropdownToolbarButton:hover { + background-color: var(--button-hover-color); +} +.splitToolbarButton > .toolbarButton { + position: relative; + margin: 0; +} +#toolbarSidebar .splitToolbarButton > .toolbarButton { + -webkit-margin-end: 2px; + margin-inline-end: 2px; +} + +.splitToolbarButtonSeparator { + float: var(--inline-start); + margin: 4px 0; + width: 1px; + height: 20px; + background-color: var(--separator-color); +} + +.toolbarButton, +.dropdownToolbarButton, +.secondaryToolbarButton, +.dialogButton { + min-width: 16px; + margin: 2px 1px; + padding: 2px 6px 0; + border: none; + border-radius: 2px; + color: var(--main-color); + font-size: 12px; + line-height: 14px; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + cursor: default; + box-sizing: border-box; +} + +.toolbarButton:is(:hover, :focus-visible) { + background-color: var(--button-hover-color); +} +.secondaryToolbarButton:is(:hover, :focus-visible) { + background-color: var(--doorhanger-hover-bg-color); + color: var(--doorhanger-hover-color); +} + +:is(.toolbarButton, .secondaryToolbarButton).toggled, +.splitToolbarButton.toggled > .toolbarButton.toggled { + background-color: var(--toggled-btn-bg-color); + color: var(--toggled-btn-color); +} + +:is(.toolbarButton, .secondaryToolbarButton).toggled::before { + background-color: var(--toggled-btn-color); +} + +:is(.toolbarButton, .secondaryToolbarButton).toggled:hover:active, +.splitToolbarButton.toggled > .toolbarButton.toggled:hover:active { + background-color: var(--toggled-hover-active-btn-color); +} + +.dropdownToolbarButton { + /* Define this variable here, and not in :root, to avoid reflowing the + entire viewer when updating the width. */ + --scale-select-width: 140px; + + width: var(--scale-select-width); + padding: 0; + background-color: var(--dropdown-btn-bg-color); + border: var(--dropdown-btn-border); +} +.dropdownToolbarButton::after { + top: 6px; + inset-inline-end: 6px; + pointer-events: none; + -webkit-mask-image: var(--toolbarButton-menuArrow-icon); + mask-image: var(--toolbarButton-menuArrow-icon); +} + +.dropdownToolbarButton > select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + width: inherit; + height: 28px; + font-size: 12px; + color: var(--main-color); + margin: 0; + padding: 1px 0 2px; + -webkit-padding-start: 6px; + padding-inline-start: 6px; + border: none; + background-color: var(--dropdown-btn-bg-color); +} +.dropdownToolbarButton > select:is(:hover, :focus-visible) { + background-color: var(--button-hover-color); + color: var(--toggled-btn-color); +} +.dropdownToolbarButton > select > option { + background: var(--doorhanger-bg-color); + color: var(--main-color); +} + +.toolbarButtonSpacer { + width: 30px; + display: inline-block; + height: 1px; +} + +:is(.toolbarButton, .secondaryToolbarButton, .treeItemToggler)::before, +.dropdownToolbarButton::after { + /* All matching images have a size of 16x16 + * All relevant containers have a size of 28x28 */ + position: absolute; + display: inline-block; + width: 16px; + height: 16px; + + content: ""; + background-color: var(--toolbar-icon-bg-color); + -webkit-mask-size: cover; + mask-size: cover; +} + +.dropdownToolbarButton:is(:hover, :focus-visible, :active)::after { + background-color: var(--toolbar-icon-hover-bg-color); +} + +.toolbarButton::before { + opacity: var(--toolbar-icon-opacity); + top: 6px; + left: 6px; +} + +.toolbarButton:is(:hover, :focus-visible)::before, +.secondaryToolbarButton:is(:hover, :focus-visible)::before { + background-color: var(--toolbar-icon-hover-bg-color); +} + +.secondaryToolbarButton::before { + opacity: var(--doorhanger-icon-opacity); + top: 5px; + inset-inline-start: 12px; +} + +#sidebarToggle::before { + -webkit-mask-image: var(--toolbarButton-sidebarToggle-icon); + mask-image: var(--toolbarButton-sidebarToggle-icon); + transform: scaleX(var(--dir-factor)); +} + +#secondaryToolbarToggle::before { + -webkit-mask-image: var(--toolbarButton-secondaryToolbarToggle-icon); + mask-image: var(--toolbarButton-secondaryToolbarToggle-icon); + transform: scaleX(var(--dir-factor)); +} + +#findPrevious::before { + -webkit-mask-image: var(--findbarButton-previous-icon); + mask-image: var(--findbarButton-previous-icon); +} + +#findNext::before { + -webkit-mask-image: var(--findbarButton-next-icon); + mask-image: var(--findbarButton-next-icon); +} + +#previous::before { + -webkit-mask-image: var(--toolbarButton-pageUp-icon); + mask-image: var(--toolbarButton-pageUp-icon); +} + +#next::before { + -webkit-mask-image: var(--toolbarButton-pageDown-icon); + mask-image: var(--toolbarButton-pageDown-icon); +} + +#zoomOut::before { + -webkit-mask-image: var(--toolbarButton-zoomOut-icon); + mask-image: var(--toolbarButton-zoomOut-icon); +} + +#zoomIn::before { + -webkit-mask-image: var(--toolbarButton-zoomIn-icon); + mask-image: var(--toolbarButton-zoomIn-icon); +} + +#presentationMode::before { + -webkit-mask-image: var(--toolbarButton-presentationMode-icon); + mask-image: var(--toolbarButton-presentationMode-icon); +} + +#editorFreeText::before { + -webkit-mask-image: var(--toolbarButton-editorFreeText-icon); + mask-image: var(--toolbarButton-editorFreeText-icon); +} + +#editorInk::before { + -webkit-mask-image: var(--toolbarButton-editorInk-icon); + mask-image: var(--toolbarButton-editorInk-icon); +} + +#print::before, +#secondaryPrint::before { + -webkit-mask-image: var(--toolbarButton-print-icon); + mask-image: var(--toolbarButton-print-icon); +} + +:is(#openFile, #secondaryOpenFile)::before { + -webkit-mask-image: var(--toolbarButton-openFile-icon); + mask-image: var(--toolbarButton-openFile-icon); +} + +:is(#download, #secondaryDownload)::before { + -webkit-mask-image: var(--toolbarButton-download-icon); + mask-image: var(--toolbarButton-download-icon); +} + +a.secondaryToolbarButton { + padding-top: 5px; + text-decoration: none; +} +a:is(.toolbarButton, .secondaryToolbarButton)[href="#"] { + opacity: 0.5; + pointer-events: none; +} + +#viewBookmark::before { + -webkit-mask-image: var(--toolbarButton-bookmark-icon); + mask-image: var(--toolbarButton-bookmark-icon); +} + +#viewThumbnail::before { + -webkit-mask-image: var(--toolbarButton-viewThumbnail-icon); + mask-image: var(--toolbarButton-viewThumbnail-icon); +} + +#viewOutline::before { + -webkit-mask-image: var(--toolbarButton-viewOutline-icon); + mask-image: var(--toolbarButton-viewOutline-icon); + transform: scaleX(var(--dir-factor)); +} + +#viewAttachments::before { + -webkit-mask-image: var(--toolbarButton-viewAttachments-icon); + mask-image: var(--toolbarButton-viewAttachments-icon); +} + +#viewLayers::before { + -webkit-mask-image: var(--toolbarButton-viewLayers-icon); + mask-image: var(--toolbarButton-viewLayers-icon); +} + +#currentOutlineItem::before { + -webkit-mask-image: var(--toolbarButton-currentOutlineItem-icon); + mask-image: var(--toolbarButton-currentOutlineItem-icon); + transform: scaleX(var(--dir-factor)); +} + +#viewFind::before { + -webkit-mask-image: var(--toolbarButton-search-icon); + mask-image: var(--toolbarButton-search-icon); +} + +.pdfSidebarNotification::after { + position: absolute; + display: inline-block; + top: 2px; + inset-inline-end: 2px; + /* Create a filled circle, with a diameter of 9 pixels, using only CSS: */ + content: ""; + background-color: rgba(112, 219, 85, 1); + height: 9px; + width: 9px; + border-radius: 50%; +} + +.secondaryToolbarButton { + position: relative; + margin: 0; + padding: 0 0 1px; + -webkit-padding-start: 36px; + padding-inline-start: 36px; + height: auto; + min-height: 26px; + width: auto; + min-width: 100%; + text-align: start; + white-space: normal; + border-radius: 0; + box-sizing: border-box; + display: inline-block; +} +.secondaryToolbarButton > span { + -webkit-padding-end: 4px; + padding-inline-end: 4px; +} + +#firstPage::before { + -webkit-mask-image: var(--secondaryToolbarButton-firstPage-icon); + mask-image: var(--secondaryToolbarButton-firstPage-icon); +} + +#lastPage::before { + -webkit-mask-image: var(--secondaryToolbarButton-lastPage-icon); + mask-image: var(--secondaryToolbarButton-lastPage-icon); +} + +#pageRotateCcw::before { + -webkit-mask-image: var(--secondaryToolbarButton-rotateCcw-icon); + mask-image: var(--secondaryToolbarButton-rotateCcw-icon); +} + +#pageRotateCw::before { + -webkit-mask-image: var(--secondaryToolbarButton-rotateCw-icon); + mask-image: var(--secondaryToolbarButton-rotateCw-icon); +} + +#cursorSelectTool::before { + -webkit-mask-image: var(--secondaryToolbarButton-selectTool-icon); + mask-image: var(--secondaryToolbarButton-selectTool-icon); +} + +#cursorHandTool::before { + -webkit-mask-image: var(--secondaryToolbarButton-handTool-icon); + mask-image: var(--secondaryToolbarButton-handTool-icon); +} + +#scrollPage::before { + -webkit-mask-image: var(--secondaryToolbarButton-scrollPage-icon); + mask-image: var(--secondaryToolbarButton-scrollPage-icon); +} + +#scrollVertical::before { + -webkit-mask-image: var(--secondaryToolbarButton-scrollVertical-icon); + mask-image: var(--secondaryToolbarButton-scrollVertical-icon); +} + +#scrollHorizontal::before { + -webkit-mask-image: var(--secondaryToolbarButton-scrollHorizontal-icon); + mask-image: var(--secondaryToolbarButton-scrollHorizontal-icon); +} + +#scrollWrapped::before { + -webkit-mask-image: var(--secondaryToolbarButton-scrollWrapped-icon); + mask-image: var(--secondaryToolbarButton-scrollWrapped-icon); +} + +#spreadNone::before { + -webkit-mask-image: var(--secondaryToolbarButton-spreadNone-icon); + mask-image: var(--secondaryToolbarButton-spreadNone-icon); +} + +#spreadOdd::before { + -webkit-mask-image: var(--secondaryToolbarButton-spreadOdd-icon); + mask-image: var(--secondaryToolbarButton-spreadOdd-icon); +} + +#spreadEven::before { + -webkit-mask-image: var(--secondaryToolbarButton-spreadEven-icon); + mask-image: var(--secondaryToolbarButton-spreadEven-icon); +} + +#documentProperties::before { + -webkit-mask-image: var(--secondaryToolbarButton-documentProperties-icon); + mask-image: var(--secondaryToolbarButton-documentProperties-icon); +} + +.verticalToolbarSeparator { + display: block; + margin: 5px 2px; + width: 1px; + height: 22px; + background-color: var(--separator-color); +} +.horizontalToolbarSeparator { + display: block; + margin: 6px 0; + height: 1px; + width: 100%; + background-color: var(--doorhanger-separator-color); +} + +.toolbarField { + padding: 4px 7px; + margin: 3px 0; + border-radius: 2px; + background-color: var(--field-bg-color); + background-clip: padding-box; + border: 1px solid var(--field-border-color); + box-shadow: none; + color: var(--field-color); + font-size: 12px; + line-height: 16px; + outline: none; +} + +.toolbarField[type="checkbox"] { + opacity: 0; + position: absolute !important; + left: 0; + margin: 10px 0 3px; + -webkit-margin-start: 7px; + margin-inline-start: 7px; +} + +#pageNumber { + -moz-appearance: textfield; /* hides the spinner in moz */ + text-align: end; + width: 40px; + background-size: 0 0; + transition-property: none; +} +#pageNumber.visiblePageIsLoading { + background-image: var(--loading-icon); + background-repeat: no-repeat; + background-position: calc(50% - 42% * var(--dir-factor)); + background-size: 16px 16px; + /* Using a delay with background-image doesn't work, + consequently we use background-size. */ + transition-property: background-size; + transition-delay: var(--loading-icon-delay); +} +#pageNumber::-webkit-inner-spin-button { + -webkit-appearance: none; +} + +.toolbarField:focus { + border-color: #0a84ff; +} + +.toolbarLabel { + min-width: 16px; + padding: 7px; + margin: 2px; + border-radius: 2px; + color: var(--main-color); + font-size: 12px; + line-height: 14px; + text-align: left; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + cursor: default; +} + +#numPages.toolbarLabel { + -webkit-padding-start: 3px; + padding-inline-start: 3px; +} + +#thumbnailView, +#outlineView, +#attachmentsView, +#layersView { + position: absolute; + width: calc(100% - 8px); + inset-block: 0; + padding: 4px 4px 0; + overflow: auto; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +#thumbnailView { + width: calc(100% - 60px); + padding: 10px 30px 0; +} + +#thumbnailView > a:is(:active, :focus) { + outline: 0; +} + +.thumbnail { + /* Define these variables here, and not in :root, since the individual + thumbnails may have different sizes. */ + --thumbnail-width: 0; + --thumbnail-height: 0; + + float: var(--inline-start); + width: var(--thumbnail-width); + height: var(--thumbnail-height); + margin: 0 10px 5px; + padding: 1px; + border: 7px solid transparent; + border-radius: 2px; +} + +#thumbnailView > a:last-of-type > .thumbnail { + margin-bottom: 10px; +} + +a:focus > .thumbnail, +.thumbnail:hover { + border-color: var(--thumbnail-hover-color); +} +.thumbnail.selected { + border-color: var(--thumbnail-selected-color) !important; +} + +.thumbnailImage { + width: var(--thumbnail-width); + height: var(--thumbnail-height); + opacity: 0.9; +} +a:focus > .thumbnail > .thumbnailImage, +.thumbnail:hover > .thumbnailImage { + opacity: 0.95; +} +.thumbnail.selected > .thumbnailImage { + opacity: 1 !important; +} + +.thumbnail:not([data-loaded]) > .thumbnailImage { + width: calc(var(--thumbnail-width) - 2px); + height: calc(var(--thumbnail-height) - 2px); + border: 1px dashed rgba(132, 132, 132, 1); +} + +.treeWithDeepNesting > .treeItem, +.treeItem > .treeItems { + -webkit-margin-start: 20px; + margin-inline-start: 20px; +} + +.treeItem > a { + text-decoration: none; + display: inline-block; + /* Subtract the right padding (left, in RTL mode) of the container: */ + min-width: calc(100% - 4px); + height: auto; + margin-bottom: 1px; + padding: 2px 0 5px; + -webkit-padding-start: 4px; + padding-inline-start: 4px; + border-radius: 2px; + color: var(--treeitem-color); + font-size: 13px; + line-height: 15px; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + white-space: normal; + cursor: pointer; +} + +#layersView .treeItem > a * { + cursor: pointer; +} +#layersView .treeItem > a > label { + -webkit-padding-start: 4px; + padding-inline-start: 4px; +} +#layersView .treeItem > a > label > input { + float: var(--inline-start); + margin-top: 1px; +} + +.treeItemToggler { + position: relative; + float: var(--inline-start); + height: 0; + width: 0; + color: rgba(255, 255, 255, 0.5); +} +.treeItemToggler::before { + inset-inline-end: 4px; + -webkit-mask-image: var(--treeitem-expanded-icon); + mask-image: var(--treeitem-expanded-icon); +} +.treeItemToggler.treeItemsHidden::before { + -webkit-mask-image: var(--treeitem-collapsed-icon); + mask-image: var(--treeitem-collapsed-icon); + transform: scaleX(var(--dir-factor)); +} +.treeItemToggler.treeItemsHidden ~ .treeItems { + display: none; +} + +.treeItem.selected > a { + background-color: var(--treeitem-selected-bg-color); + color: var(--treeitem-selected-color); +} + +.treeItemToggler:hover, +.treeItemToggler:hover + a, +.treeItemToggler:hover ~ .treeItems, +.treeItem > a:hover { + background-color: var(--treeitem-bg-color); + background-clip: padding-box; + border-radius: 2px; + color: var(--treeitem-hover-color); +} + +.dialogButton { + width: auto; + margin: 3px 4px 2px !important; + padding: 2px 11px; + color: var(--main-color); + background-color: var(--dialog-button-bg-color); + border: var(--dialog-button-border) !important; +} + +dialog { + margin: auto; + padding: 15px; + border-spacing: 4px; + color: var(--main-color); + font: message-box; + font-size: 12px; + line-height: 14px; + background-color: var(--doorhanger-bg-color); + border: 1px solid rgba(0, 0, 0, 0.5); + border-radius: 4px; + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); +} +dialog::backdrop { + background-color: rgba(0, 0, 0, 0.2); +} + +dialog > .row { + display: table-row; +} + +dialog > .row > * { + display: table-cell; +} + +dialog .toolbarField { + margin: 5px 0; +} + +dialog .separator { + display: block; + margin: 4px 0; + height: 1px; + width: 100%; + background-color: var(--separator-color); +} + +dialog .buttonRow { + text-align: center; + vertical-align: middle; +} + +dialog :link { + color: rgba(255, 255, 255, 1); +} + +#passwordDialog { + text-align: center; +} +#passwordDialog .toolbarField { + width: 200px; +} + +#documentPropertiesDialog { + text-align: left; +} +#documentPropertiesDialog .row > * { + min-width: 100px; + text-align: start; +} +#documentPropertiesDialog .row > span { + width: 125px; + word-wrap: break-word; +} +#documentPropertiesDialog .row > p { + max-width: 225px; + word-wrap: break-word; +} +#documentPropertiesDialog .buttonRow { + margin-top: 10px; +} + +.grab-to-pan-grab { + cursor: grab !important; +} +.grab-to-pan-grab + *:not(input):not(textarea):not(button):not(select):not(:link) { + cursor: inherit !important; +} +.grab-to-pan-grab:active, +.grab-to-pan-grabbing { + cursor: grabbing !important; + position: fixed; + background: rgba(0, 0, 0, 0); + display: block; + inset: 0; + overflow: hidden; + z-index: 50000; /* should be higher than anything else in PDF.js! */ +} + +@page { + margin: 0; +} + +#printContainer { + display: none; +} + +@media print { + body { + background: rgba(0, 0, 0, 0) none; + } + body[data-pdfjsprinting] #outerContainer { + display: none; + } + body[data-pdfjsprinting] #printContainer { + display: block; + } + #printContainer { + height: 100%; + } + /* wrapper around (scaled) print canvas elements */ + #printContainer > .printedPage { + page-break-after: always; + page-break-inside: avoid; + + /* The wrapper always cover the whole page. */ + height: 100%; + width: 100%; + + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + } + + #printContainer > .xfaPrintedPage .xfaPage { + position: absolute; + } + + #printContainer > .xfaPrintedPage { + page-break-after: always; + page-break-inside: avoid; + width: 100%; + height: 100%; + position: relative; + } + + #printContainer > .printedPage :is(canvas, img) { + /* The intrinsic canvas / image size will make sure that we fit the page. */ + max-width: 100%; + max-height: 100%; + + direction: ltr; + display: block; + } +} + +.visibleLargeView, +.visibleMediumView { + display: none; +} + +@media all and (max-width: 900px) { + #toolbarViewerMiddle { + display: table; + margin: auto; + left: auto; + position: inherit; + transform: none; + } +} + +@media all and (max-width: 840px) { + #sidebarContainer { + background-color: var(--sidebar-narrow-bg-color); + } + #outerContainer.sidebarOpen #viewerContainer { + inset-inline-start: 0 !important; + } +} + +@media all and (max-width: 820px) { + #outerContainer .hiddenLargeView { + display: none; + } + #outerContainer .visibleLargeView { + display: inherit; + } +} + +@media all and (max-width: 750px) { + #outerContainer .hiddenMediumView { + display: none; + } + #outerContainer .visibleMediumView { + display: inherit; + } +} + +@media all and (max-width: 690px) { + .hiddenSmallView, + .hiddenSmallView * { + display: none; + } + .toolbarButtonSpacer { + width: 0; + } + .findbar { + inset-inline-start: 34px; + } +} + +@media all and (max-width: 560px) { + #scaleSelectContainer { + display: none; + } +} diff --git a/media/js/pdf/web/viewer.js b/media/js/pdf/web/viewer.js index fcd9e214aa..a52df1b9bc 100644 --- a/media/js/pdf/web/viewer.js +++ b/media/js/pdf/web/viewer.js @@ -1,8 +1,8 @@ /** * @licstart The following is the entire license notice for the - * Javascript code in this page + * JavaScript code in this page * - * Copyright 2021 Mozilla Foundation + * Copyright 2023 Mozilla Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ * limitations under the License. * * @licend The above is the entire license notice for the - * Javascript code in this page + * JavaScript code in this page */ /******/ (() => { // webpackBootstrap @@ -32,10 +32,2990 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.OptionKind = exports.AppOptions = void 0; +exports.GenericCom = void 0; +var _app = __webpack_require__(2); +var _preferences = __webpack_require__(41); +var _download_manager = __webpack_require__(42); +var _genericl10n = __webpack_require__(43); +var _generic_scripting = __webpack_require__(45); +; +const GenericCom = {}; +exports.GenericCom = GenericCom; +class GenericPreferences extends _preferences.BasePreferences { + async _writeToStorage(prefObj) { + localStorage.setItem("pdfjs.preferences", JSON.stringify(prefObj)); + } + async _readFromStorage(prefObj) { + return JSON.parse(localStorage.getItem("pdfjs.preferences")); + } +} +class GenericExternalServices extends _app.DefaultExternalServices { + static createDownloadManager() { + return new _download_manager.DownloadManager(); + } + static createPreferences() { + return new GenericPreferences(); + } + static createL10n({ + locale = "en-US" + }) { + return new _genericl10n.GenericL10n(locale); + } + static createScripting({ + sandboxBundleSrc + }) { + return new _generic_scripting.GenericScripting(sandboxBundleSrc); + } +} +_app.PDFViewerApplication.externalServices = GenericExternalServices; -var _viewer_compatibility = __webpack_require__(2); +/***/ }), +/* 2 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFViewerApplication = exports.PDFPrintServiceFactory = exports.DefaultExternalServices = void 0; +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); +var _app_options = __webpack_require__(5); +var _event_utils = __webpack_require__(6); +var _pdf_link_service = __webpack_require__(7); +var _webAnnotation_editor_params = __webpack_require__(8); +var _overlay_manager = __webpack_require__(9); +var _password_prompt = __webpack_require__(10); +var _webPdf_attachment_viewer = __webpack_require__(11); +var _webPdf_cursor_tools = __webpack_require__(13); +var _webPdf_document_properties = __webpack_require__(15); +var _webPdf_find_bar = __webpack_require__(16); +var _pdf_find_controller = __webpack_require__(17); +var _pdf_history = __webpack_require__(19); +var _webPdf_layer_viewer = __webpack_require__(20); +var _webPdf_outline_viewer = __webpack_require__(21); +var _webPdf_presentation_mode = __webpack_require__(22); +var _pdf_rendering_queue = __webpack_require__(23); +var _pdf_scripting_manager = __webpack_require__(24); +var _webPdf_sidebar = __webpack_require__(25); +var _webPdf_thumbnail_viewer = __webpack_require__(26); +var _pdf_viewer = __webpack_require__(28); +var _webSecondary_toolbar = __webpack_require__(38); +var _webToolbar = __webpack_require__(39); +var _view_history = __webpack_require__(40); +const FORCE_PAGES_LOADED_TIMEOUT = 10000; +const WHEEL_ZOOM_DISABLED_TIMEOUT = 1000; +const ViewOnLoad = { + UNKNOWN: -1, + PREVIOUS: 0, + INITIAL: 1 +}; +const ViewerCssTheme = { + AUTOMATIC: 0, + LIGHT: 1, + DARK: 2 +}; +class DefaultExternalServices { + constructor() { + throw new Error("Cannot initialize DefaultExternalServices."); + } + static updateFindControlState(data) {} + static updateFindMatchesCount(data) {} + static initPassiveLoading(callbacks) {} + static reportTelemetry(data) {} + static createDownloadManager() { + throw new Error("Not implemented: createDownloadManager"); + } + static createPreferences() { + throw new Error("Not implemented: createPreferences"); + } + static createL10n(options) { + throw new Error("Not implemented: createL10n"); + } + static createScripting(options) { + throw new Error("Not implemented: createScripting"); + } + static get supportsPinchToZoom() { + return (0, _pdfjsLib.shadow)(this, "supportsPinchToZoom", true); + } + static get supportsIntegratedFind() { + return (0, _pdfjsLib.shadow)(this, "supportsIntegratedFind", false); + } + static get supportsDocumentFonts() { + return (0, _pdfjsLib.shadow)(this, "supportsDocumentFonts", true); + } + static get supportedMouseWheelZoomModifierKeys() { + return (0, _pdfjsLib.shadow)(this, "supportedMouseWheelZoomModifierKeys", { + ctrlKey: true, + metaKey: true + }); + } + static get isInAutomation() { + return (0, _pdfjsLib.shadow)(this, "isInAutomation", false); + } + static updateEditorStates(data) { + throw new Error("Not implemented: updateEditorStates"); + } + static get canvasMaxAreaInBytes() { + return (0, _pdfjsLib.shadow)(this, "canvasMaxAreaInBytes", -1); + } + static getNimbusExperimentData() { + return (0, _pdfjsLib.shadow)(this, "getNimbusExperimentData", Promise.resolve(null)); + } +} +exports.DefaultExternalServices = DefaultExternalServices; +const PDFViewerApplication = { + initialBookmark: document.location.hash.substring(1), + _initializedCapability: new _pdfjsLib.PromiseCapability(), + appConfig: null, + pdfDocument: null, + pdfLoadingTask: null, + printService: null, + pdfViewer: null, + pdfThumbnailViewer: null, + pdfRenderingQueue: null, + pdfPresentationMode: null, + pdfDocumentProperties: null, + pdfLinkService: null, + pdfHistory: null, + pdfSidebar: null, + pdfOutlineViewer: null, + pdfAttachmentViewer: null, + pdfLayerViewer: null, + pdfCursorTools: null, + pdfScriptingManager: null, + store: null, + downloadManager: null, + overlayManager: null, + preferences: null, + toolbar: null, + secondaryToolbar: null, + eventBus: null, + l10n: null, + annotationEditorParams: null, + isInitialViewSet: false, + downloadComplete: false, + isViewerEmbedded: window.parent !== window, + url: "", + baseUrl: "", + _downloadUrl: "", + externalServices: DefaultExternalServices, + _boundEvents: Object.create(null), + documentInfo: null, + metadata: null, + _contentDispositionFilename: null, + _contentLength: null, + _saveInProgress: false, + _wheelUnusedTicks: 0, + _wheelUnusedFactor: 1, + _touchUnusedTicks: 0, + _touchUnusedFactor: 1, + _PDFBug: null, + _hasAnnotationEditors: false, + _title: document.title, + _printAnnotationStoragePromise: null, + _touchInfo: null, + _isCtrlKeyDown: false, + _nimbusDataPromise: null, + async initialize(appConfig) { + this.preferences = this.externalServices.createPreferences(); + this.appConfig = appConfig; + await this._initializeOptions(); + this._forceCssTheme(); + await this._initializeL10n(); + if (this.isViewerEmbedded && _app_options.AppOptions.get("externalLinkTarget") === _pdf_link_service.LinkTarget.NONE) { + _app_options.AppOptions.set("externalLinkTarget", _pdf_link_service.LinkTarget.TOP); + } + await this._initializeViewerComponents(); + this.bindEvents(); + this.bindWindowEvents(); + const appContainer = appConfig.appContainer || document.documentElement; + this.l10n.translate(appContainer).then(() => { + this.eventBus.dispatch("localized", { + source: this + }); + }); + this._initializedCapability.resolve(); + }, + async _initializeOptions() { + if (_app_options.AppOptions.get("disablePreferences")) { + if (_app_options.AppOptions.get("pdfBugEnabled")) { + await this._parseHashParams(); + } + return; + } + if (_app_options.AppOptions._hasUserOptions()) { + console.warn("_initializeOptions: The Preferences may override manually set AppOptions; " + 'please use the "disablePreferences"-option in order to prevent that.'); + } + try { + _app_options.AppOptions.setAll(await this.preferences.getAll()); + } catch (reason) { + console.error(`_initializeOptions: "${reason.message}".`); + } + if (_app_options.AppOptions.get("pdfBugEnabled")) { + await this._parseHashParams(); + } + }, + async _parseHashParams() { + const hash = document.location.hash.substring(1); + if (!hash) { + return; + } + const { + mainContainer, + viewerContainer + } = this.appConfig, + params = (0, _ui_utils.parseQueryString)(hash); + if (params.get("disableworker") === "true") { + try { + await loadFakeWorker(); + } catch (ex) { + console.error(`_parseHashParams: "${ex.message}".`); + } + } + if (params.has("disablerange")) { + _app_options.AppOptions.set("disableRange", params.get("disablerange") === "true"); + } + if (params.has("disablestream")) { + _app_options.AppOptions.set("disableStream", params.get("disablestream") === "true"); + } + if (params.has("disableautofetch")) { + _app_options.AppOptions.set("disableAutoFetch", params.get("disableautofetch") === "true"); + } + if (params.has("disablefontface")) { + _app_options.AppOptions.set("disableFontFace", params.get("disablefontface") === "true"); + } + if (params.has("disablehistory")) { + _app_options.AppOptions.set("disableHistory", params.get("disablehistory") === "true"); + } + if (params.has("verbosity")) { + _app_options.AppOptions.set("verbosity", params.get("verbosity") | 0); + } + if (params.has("textlayer")) { + switch (params.get("textlayer")) { + case "off": + _app_options.AppOptions.set("textLayerMode", _ui_utils.TextLayerMode.DISABLE); + break; + case "visible": + case "shadow": + case "hover": + viewerContainer.classList.add(`textLayer-${params.get("textlayer")}`); + try { + await loadPDFBug(this); + this._PDFBug.loadCSS(); + } catch (ex) { + console.error(`_parseHashParams: "${ex.message}".`); + } + break; + } + } + if (params.has("pdfbug")) { + _app_options.AppOptions.set("pdfBug", true); + _app_options.AppOptions.set("fontExtraProperties", true); + const enabled = params.get("pdfbug").split(","); + try { + await loadPDFBug(this); + this._PDFBug.init({ + OPS: _pdfjsLib.OPS + }, mainContainer, enabled); + } catch (ex) { + console.error(`_parseHashParams: "${ex.message}".`); + } + } + if (params.has("locale")) { + _app_options.AppOptions.set("locale", params.get("locale")); + } + }, + async _initializeL10n() { + this.l10n = this.externalServices.createL10n({ + locale: _app_options.AppOptions.get("locale") + }); + const dir = await this.l10n.getDirection(); + document.getElementsByTagName("html")[0].dir = dir; + }, + _forceCssTheme() { + const cssTheme = _app_options.AppOptions.get("viewerCssTheme"); + if (cssTheme === ViewerCssTheme.AUTOMATIC || !Object.values(ViewerCssTheme).includes(cssTheme)) { + return; + } + try { + const styleSheet = document.styleSheets[0]; + const cssRules = styleSheet?.cssRules || []; + for (let i = 0, ii = cssRules.length; i < ii; i++) { + const rule = cssRules[i]; + if (rule instanceof CSSMediaRule && rule.media?.[0] === "(prefers-color-scheme: dark)") { + if (cssTheme === ViewerCssTheme.LIGHT) { + styleSheet.deleteRule(i); + return; + } + const darkRules = /^@media \(prefers-color-scheme: dark\) {\n\s*([\w\s-.,:;/\\{}()]+)\n}$/.exec(rule.cssText); + if (darkRules?.[1]) { + styleSheet.deleteRule(i); + styleSheet.insertRule(darkRules[1], i); + } + return; + } + } + } catch (reason) { + console.error(`_forceCssTheme: "${reason?.message}".`); + } + }, + async _initializeViewerComponents() { + const { + appConfig, + externalServices, + l10n + } = this; + const eventBus = externalServices.isInAutomation ? new _event_utils.AutomationEventBus() : new _event_utils.EventBus(); + this.eventBus = eventBus; + this.overlayManager = new _overlay_manager.OverlayManager(); + const pdfRenderingQueue = new _pdf_rendering_queue.PDFRenderingQueue(); + pdfRenderingQueue.onIdle = this._cleanup.bind(this); + this.pdfRenderingQueue = pdfRenderingQueue; + const pdfLinkService = new _pdf_link_service.PDFLinkService({ + eventBus, + externalLinkTarget: _app_options.AppOptions.get("externalLinkTarget"), + externalLinkRel: _app_options.AppOptions.get("externalLinkRel"), + ignoreDestinationZoom: _app_options.AppOptions.get("ignoreDestinationZoom") + }); + this.pdfLinkService = pdfLinkService; + const downloadManager = externalServices.createDownloadManager(); + this.downloadManager = downloadManager; + const findController = new _pdf_find_controller.PDFFindController({ + linkService: pdfLinkService, + eventBus, + updateMatchesCountOnProgress: true + }); + this.findController = findController; + const pdfScriptingManager = new _pdf_scripting_manager.PDFScriptingManager({ + eventBus, + sandboxBundleSrc: _app_options.AppOptions.get("sandboxBundleSrc"), + externalServices, + docProperties: this._scriptingDocProperties.bind(this) + }); + this.pdfScriptingManager = pdfScriptingManager; + const container = appConfig.mainContainer, + viewer = appConfig.viewerContainer; + const annotationEditorMode = _app_options.AppOptions.get("annotationEditorMode"); + const pageColors = _app_options.AppOptions.get("forcePageColors") || window.matchMedia("(forced-colors: active)").matches ? { + background: _app_options.AppOptions.get("pageColorsBackground"), + foreground: _app_options.AppOptions.get("pageColorsForeground") + } : null; + const pdfViewer = new _pdf_viewer.PDFViewer({ + container, + viewer, + eventBus, + renderingQueue: pdfRenderingQueue, + linkService: pdfLinkService, + downloadManager, + findController, + scriptingManager: _app_options.AppOptions.get("enableScripting") && pdfScriptingManager, + l10n, + textLayerMode: _app_options.AppOptions.get("textLayerMode"), + annotationMode: _app_options.AppOptions.get("annotationMode"), + annotationEditorMode, + imageResourcesPath: _app_options.AppOptions.get("imageResourcesPath"), + enablePrintAutoRotate: _app_options.AppOptions.get("enablePrintAutoRotate"), + useOnlyCssZoom: _app_options.AppOptions.get("useOnlyCssZoom"), + isOffscreenCanvasSupported: _app_options.AppOptions.get("isOffscreenCanvasSupported"), + maxCanvasPixels: _app_options.AppOptions.get("maxCanvasPixels"), + enablePermissions: _app_options.AppOptions.get("enablePermissions"), + pageColors + }); + this.pdfViewer = pdfViewer; + pdfRenderingQueue.setViewer(pdfViewer); + pdfLinkService.setViewer(pdfViewer); + pdfScriptingManager.setViewer(pdfViewer); + if (appConfig.sidebar?.thumbnailView) { + this.pdfThumbnailViewer = new _webPdf_thumbnail_viewer.PDFThumbnailViewer({ + container: appConfig.sidebar.thumbnailView, + eventBus, + renderingQueue: pdfRenderingQueue, + linkService: pdfLinkService, + l10n, + pageColors + }); + pdfRenderingQueue.setThumbnailViewer(this.pdfThumbnailViewer); + } + if (!this.isViewerEmbedded && !_app_options.AppOptions.get("disableHistory")) { + this.pdfHistory = new _pdf_history.PDFHistory({ + linkService: pdfLinkService, + eventBus + }); + pdfLinkService.setHistory(this.pdfHistory); + } + if (!this.supportsIntegratedFind && appConfig.findBar) { + this.findBar = new _webPdf_find_bar.PDFFindBar(appConfig.findBar, eventBus, l10n); + } + if (appConfig.annotationEditorParams) { + if (annotationEditorMode !== _pdfjsLib.AnnotationEditorType.DISABLE) { + this.annotationEditorParams = new _webAnnotation_editor_params.AnnotationEditorParams(appConfig.annotationEditorParams, eventBus); + } else { + for (const id of ["editorModeButtons", "editorModeSeparator"]) { + document.getElementById(id)?.classList.add("hidden"); + } + } + } + if (appConfig.documentProperties) { + this.pdfDocumentProperties = new _webPdf_document_properties.PDFDocumentProperties(appConfig.documentProperties, this.overlayManager, eventBus, l10n, () => this._docFilename); + } + if (appConfig.secondaryToolbar?.cursorHandToolButton) { + this.pdfCursorTools = new _webPdf_cursor_tools.PDFCursorTools({ + container, + eventBus, + cursorToolOnLoad: _app_options.AppOptions.get("cursorToolOnLoad") + }); + } + if (appConfig.toolbar) { + this.toolbar = new _webToolbar.Toolbar(appConfig.toolbar, eventBus, l10n); + } + if (appConfig.secondaryToolbar) { + this.secondaryToolbar = new _webSecondary_toolbar.SecondaryToolbar(appConfig.secondaryToolbar, eventBus, externalServices); + } + if (this.supportsFullscreen && appConfig.secondaryToolbar?.presentationModeButton) { + this.pdfPresentationMode = new _webPdf_presentation_mode.PDFPresentationMode({ + container, + pdfViewer, + eventBus + }); + } + if (appConfig.passwordOverlay) { + this.passwordPrompt = new _password_prompt.PasswordPrompt(appConfig.passwordOverlay, this.overlayManager, l10n, this.isViewerEmbedded); + } + if (appConfig.sidebar?.outlineView) { + this.pdfOutlineViewer = new _webPdf_outline_viewer.PDFOutlineViewer({ + container: appConfig.sidebar.outlineView, + eventBus, + linkService: pdfLinkService, + downloadManager + }); + } + if (appConfig.sidebar?.attachmentsView) { + this.pdfAttachmentViewer = new _webPdf_attachment_viewer.PDFAttachmentViewer({ + container: appConfig.sidebar.attachmentsView, + eventBus, + downloadManager + }); + } + if (appConfig.sidebar?.layersView) { + this.pdfLayerViewer = new _webPdf_layer_viewer.PDFLayerViewer({ + container: appConfig.sidebar.layersView, + eventBus, + l10n + }); + } + if (appConfig.sidebar) { + this.pdfSidebar = new _webPdf_sidebar.PDFSidebar({ + elements: appConfig.sidebar, + eventBus, + l10n + }); + this.pdfSidebar.onToggled = this.forceRendering.bind(this); + this.pdfSidebar.onUpdateThumbnails = () => { + for (const pageView of pdfViewer.getCachedPageViews()) { + if (pageView.renderingState === _ui_utils.RenderingStates.FINISHED) { + this.pdfThumbnailViewer.getThumbnail(pageView.id - 1)?.setImage(pageView); + } + } + this.pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber); + }; + } + }, + async run(config) { + await this.initialize(config); + const { + appConfig, + eventBus, + l10n + } = this; + /* these lines are not needed in SEAFILE. + * + let file; + const queryString = document.location.search.substring(1); + const params = (0, _ui_utils.parseQueryString)(queryString); + file = params.get("file") ?? _app_options.AppOptions.get("defaultUrl"); + validateFileURL(file); + */ + const file = _app_options.AppOptions.get("defaultUrl"); + const fileInput = appConfig.openFileInput; + fileInput.value = null; + fileInput.addEventListener("change", function (evt) { + const { + files + } = evt.target; + if (!files || files.length === 0) { + return; + } + eventBus.dispatch("fileinputchange", { + source: this, + fileInput: evt.target + }); + }); + appConfig.mainContainer.addEventListener("dragover", function (evt) { + evt.preventDefault(); + evt.dataTransfer.dropEffect = evt.dataTransfer.effectAllowed === "copy" ? "copy" : "move"; + }); + appConfig.mainContainer.addEventListener("drop", function (evt) { + evt.preventDefault(); + const { + files + } = evt.dataTransfer; + if (!files || files.length === 0) { + return; + } + eventBus.dispatch("fileinputchange", { + source: this, + fileInput: evt.dataTransfer + }); + }); + if (!this.supportsDocumentFonts) { + _app_options.AppOptions.set("disableFontFace", true); + l10n.get("web_fonts_disabled").then(msg => { + console.warn(msg); + }); + } + if (!this.supportsPrinting) { + appConfig.toolbar?.print?.classList.add("hidden"); + appConfig.secondaryToolbar?.printButton.classList.add("hidden"); + } + if (!this.supportsFullscreen) { + appConfig.secondaryToolbar?.presentationModeButton.classList.add("hidden"); + } + if (this.supportsIntegratedFind) { + appConfig.toolbar?.viewFind?.classList.add("hidden"); + } + appConfig.mainContainer.addEventListener("transitionend", function (evt) { + if (evt.target === this) { + eventBus.dispatch("resize", { + source: this + }); + } + }, true); + try { + if (file) { + this.open({ + url: file + }); + } else { + this._hideViewBookmark(); + } + } catch (reason) { + l10n.get("loading_error").then(msg => { + this._documentError(msg, reason); + }); + } + }, + get initialized() { + return this._initializedCapability.settled; + }, + get initializedPromise() { + return this._initializedCapability.promise; + }, + zoomIn(steps, scaleFactor) { + if (this.pdfViewer.isInPresentationMode) { + return; + } + this.pdfViewer.increaseScale({ + drawingDelay: _app_options.AppOptions.get("defaultZoomDelay"), + steps, + scaleFactor + }); + }, + zoomOut(steps, scaleFactor) { + if (this.pdfViewer.isInPresentationMode) { + return; + } + this.pdfViewer.decreaseScale({ + drawingDelay: _app_options.AppOptions.get("defaultZoomDelay"), + steps, + scaleFactor + }); + }, + zoomReset() { + if (this.pdfViewer.isInPresentationMode) { + return; + } + this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; + }, + get pagesCount() { + return this.pdfDocument ? this.pdfDocument.numPages : 0; + }, + get page() { + return this.pdfViewer.currentPageNumber; + }, + set page(val) { + this.pdfViewer.currentPageNumber = val; + }, + get supportsPrinting() { + return PDFPrintServiceFactory.instance.supportsPrinting; + }, + get supportsFullscreen() { + return (0, _pdfjsLib.shadow)(this, "supportsFullscreen", document.fullscreenEnabled); + }, + get supportsPinchToZoom() { + return this.externalServices.supportsPinchToZoom; + }, + get supportsIntegratedFind() { + return this.externalServices.supportsIntegratedFind; + }, + get supportsDocumentFonts() { + return this.externalServices.supportsDocumentFonts; + }, + get loadingBar() { + const barElement = document.getElementById("loadingBar"); + const bar = barElement ? new _ui_utils.ProgressBar(barElement) : null; + return (0, _pdfjsLib.shadow)(this, "loadingBar", bar); + }, + get supportedMouseWheelZoomModifierKeys() { + return this.externalServices.supportedMouseWheelZoomModifierKeys; + }, + initPassiveLoading(file) { + throw new Error("Not implemented: initPassiveLoading"); + }, + setTitleUsingUrl(url = "", downloadUrl = null) { + this.url = url; + this.baseUrl = url.split("#")[0]; + if (downloadUrl) { + this._downloadUrl = downloadUrl === url ? this.baseUrl : downloadUrl.split("#")[0]; + } + if ((0, _pdfjsLib.isDataScheme)(url)) { + this._hideViewBookmark(); + } + let title = (0, _pdfjsLib.getPdfFilenameFromUrl)(url, ""); + if (!title) { + try { + title = decodeURIComponent((0, _pdfjsLib.getFilenameFromUrl)(url)) || url; + } catch { + title = url; + } + } + this.setTitle(title); + }, + setTitle(title = this._title) { + this._title = title; + if (this.isViewerEmbedded) { + return; + } + const editorIndicator = this._hasAnnotationEditors && !this.pdfRenderingQueue.printing; + document.title = `${editorIndicator ? "* " : ""}${title}`; + }, + get _docFilename() { + return this._contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(this.url); + }, + _hideViewBookmark() { + const { + secondaryToolbar + } = this.appConfig; + secondaryToolbar?.viewBookmarkButton.classList.add("hidden"); + if (secondaryToolbar?.presentationModeButton.classList.contains("hidden")) { + document.getElementById("viewBookmarkSeparator")?.classList.add("hidden"); + } + }, + async close() { + this._unblockDocumentLoadEvent(); + this._hideViewBookmark(); + if (!this.pdfLoadingTask) { + return; + } + if (this.pdfDocument?.annotationStorage.size > 0 && this._annotationStorageModified) { + try { + await this.save(); + } catch {} + } + const promises = []; + promises.push(this.pdfLoadingTask.destroy()); + this.pdfLoadingTask = null; + if (this.pdfDocument) { + this.pdfDocument = null; + this.pdfThumbnailViewer?.setDocument(null); + this.pdfViewer.setDocument(null); + this.pdfLinkService.setDocument(null); + this.pdfDocumentProperties?.setDocument(null); + } + this.pdfLinkService.externalLinkEnabled = true; + this.store = null; + this.isInitialViewSet = false; + this.downloadComplete = false; + this.url = ""; + this.baseUrl = ""; + this._downloadUrl = ""; + this.documentInfo = null; + this.metadata = null; + this._contentDispositionFilename = null; + this._contentLength = null; + this._saveInProgress = false; + this._hasAnnotationEditors = false; + promises.push(this.pdfScriptingManager.destroyPromise); + this.setTitle(); + this.pdfSidebar?.reset(); + this.pdfOutlineViewer?.reset(); + this.pdfAttachmentViewer?.reset(); + this.pdfLayerViewer?.reset(); + this.pdfHistory?.reset(); + this.findBar?.reset(); + this.toolbar?.reset(); + this.secondaryToolbar?.reset(); + this._PDFBug?.cleanup(); + await Promise.all(promises); + }, + async open(args) { + let deprecatedArgs = false; + if (typeof args === "string") { + args = { + url: args + }; + deprecatedArgs = true; + } else if (args?.byteLength) { + args = { + data: args + }; + deprecatedArgs = true; + } + if (deprecatedArgs) { + console.error("The `PDFViewerApplication.open` signature was updated, please use an object instead."); + } + if (this.pdfLoadingTask) { + await this.close(); + } + const workerParams = _app_options.AppOptions.getAll(_app_options.OptionKind.WORKER); + Object.assign(_pdfjsLib.GlobalWorkerOptions, workerParams); + if (args.url) { + this.setTitleUsingUrl(args.originalUrl || args.url, args.url); + } + const apiParams = _app_options.AppOptions.getAll(_app_options.OptionKind.API); + const params = { + canvasMaxAreaInBytes: this.externalServices.canvasMaxAreaInBytes, + ...apiParams, + ...args + }; + const loadingTask = (0, _pdfjsLib.getDocument)(params); + this.pdfLoadingTask = loadingTask; + loadingTask.onPassword = (updateCallback, reason) => { + if (this.isViewerEmbedded) { + this._unblockDocumentLoadEvent(); + } + this.pdfLinkService.externalLinkEnabled = false; + this.passwordPrompt.setUpdateCallback(updateCallback, reason); + this.passwordPrompt.open(); + }; + loadingTask.onProgress = ({ + loaded, + total + }) => { + this.progress(loaded / total); + }; + return loadingTask.promise.then(pdfDocument => { + this.load(pdfDocument); + }, reason => { + if (loadingTask !== this.pdfLoadingTask) { + return undefined; + } + let key = "loading_error"; + if (reason instanceof _pdfjsLib.InvalidPDFException) { + key = "invalid_file_error"; + } else if (reason instanceof _pdfjsLib.MissingPDFException) { + key = "missing_file_error"; + } else if (reason instanceof _pdfjsLib.UnexpectedResponseException) { + key = "unexpected_response_error"; + } + return this.l10n.get(key).then(msg => { + this._documentError(msg, { + message: reason?.message + }); + throw reason; + }); + }); + }, + _ensureDownloadComplete() { + if (this.pdfDocument && this.downloadComplete) { + return; + } + throw new Error("PDF document not downloaded."); + }, + async download(options = {}) { + const url = this._downloadUrl, + filename = this._docFilename; + try { + this._ensureDownloadComplete(); + const data = await this.pdfDocument.getData(); + const blob = new Blob([data], { + type: "application/pdf" + }); + await this.downloadManager.download(blob, url, filename, options); + } catch { + await this.downloadManager.downloadUrl(url, filename, options); + } + }, + async save(options = {}) { + if (this._saveInProgress) { + return; + } + this._saveInProgress = true; + await this.pdfScriptingManager.dispatchWillSave(); + const url = this._downloadUrl, + filename = this._docFilename; + try { + this._ensureDownloadComplete(); + const data = await this.pdfDocument.saveDocument(); + const blob = new Blob([data], { + type: "application/pdf" + }); + await this.downloadManager.download(blob, url, filename, options); + } catch (reason) { + console.error(`Error when saving the document: ${reason.message}`); + await this.download(options); + } finally { + await this.pdfScriptingManager.dispatchDidSave(); + this._saveInProgress = false; + } + if (this._hasAnnotationEditors) { + this.externalServices.reportTelemetry({ + type: "editing", + data: { + type: "save" + } + }); + } + }, + downloadOrSave(options = {}) { + if (this.pdfDocument?.annotationStorage.size > 0) { + this.save(options); + } else { + this.download(options); + } + }, + openInExternalApp() { + this.downloadOrSave({ + openInExternalApp: true + }); + }, + _documentError(message, moreInfo = null) { + this._unblockDocumentLoadEvent(); + this._otherError(message, moreInfo); + this.eventBus.dispatch("documenterror", { + source: this, + message, + reason: moreInfo?.message ?? null + }); + }, + _otherError(message, moreInfo = null) { + const moreInfoText = [`PDF.js v${_pdfjsLib.version || "?"} (build: ${_pdfjsLib.build || "?"})`]; + if (moreInfo) { + moreInfoText.push(`Message: ${moreInfo.message}`); + if (moreInfo.stack) { + moreInfoText.push(`Stack: ${moreInfo.stack}`); + } else { + if (moreInfo.filename) { + moreInfoText.push(`File: ${moreInfo.filename}`); + } + if (moreInfo.lineNumber) { + moreInfoText.push(`Line: ${moreInfo.lineNumber}`); + } + } + } + console.error(`${message}\n\n${moreInfoText.join("\n")}`); + }, + progress(level) { + if (!this.loadingBar || this.downloadComplete) { + return; + } + const percent = Math.round(level * 100); + if (percent <= this.loadingBar.percent) { + return; + } + this.loadingBar.percent = percent; + if (this.pdfDocument?.loadingParams.disableAutoFetch ?? _app_options.AppOptions.get("disableAutoFetch")) { + this.loadingBar.setDisableAutoFetch(); + } + }, + load(pdfDocument) { + this.pdfDocument = pdfDocument; + pdfDocument.getDownloadInfo().then(({ + length + }) => { + this._contentLength = length; + this.downloadComplete = true; + this.loadingBar?.hide(); + firstPagePromise.then(() => { + this.eventBus.dispatch("documentloaded", { + source: this + }); + }); + }); + const pageLayoutPromise = pdfDocument.getPageLayout().catch(function () {}); + const pageModePromise = pdfDocument.getPageMode().catch(function () {}); + const openActionPromise = pdfDocument.getOpenAction().catch(function () {}); + this.toolbar?.setPagesCount(pdfDocument.numPages, false); + this.secondaryToolbar?.setPagesCount(pdfDocument.numPages); + this.pdfLinkService.setDocument(pdfDocument); + this.pdfDocumentProperties?.setDocument(pdfDocument); + const pdfViewer = this.pdfViewer; + pdfViewer.setDocument(pdfDocument); + const { + firstPagePromise, + onePageRendered, + pagesPromise + } = pdfViewer; + this.pdfThumbnailViewer?.setDocument(pdfDocument); + const storedPromise = (this.store = new _view_history.ViewHistory(pdfDocument.fingerprints[0])).getMultiple({ + page: null, + zoom: _ui_utils.DEFAULT_SCALE_VALUE, + scrollLeft: "0", + scrollTop: "0", + rotation: null, + sidebarView: _ui_utils.SidebarView.UNKNOWN, + scrollMode: _ui_utils.ScrollMode.UNKNOWN, + spreadMode: _ui_utils.SpreadMode.UNKNOWN + }).catch(() => { + return Object.create(null); + }); + firstPagePromise.then(pdfPage => { + this.loadingBar?.setWidth(this.appConfig.viewerContainer); + this._initializeAnnotationStorageCallbacks(pdfDocument); + Promise.all([_ui_utils.animationStarted, storedPromise, pageLayoutPromise, pageModePromise, openActionPromise]).then(async ([timeStamp, stored, pageLayout, pageMode, openAction]) => { + const viewOnLoad = _app_options.AppOptions.get("viewOnLoad"); + this._initializePdfHistory({ + fingerprint: pdfDocument.fingerprints[0], + viewOnLoad, + initialDest: openAction?.dest + }); + const initialBookmark = this.initialBookmark; + const zoom = _app_options.AppOptions.get("defaultZoomValue"); + let hash = zoom ? `zoom=${zoom}` : null; + let rotation = null; + let sidebarView = _app_options.AppOptions.get("sidebarViewOnLoad"); + let scrollMode = _app_options.AppOptions.get("scrollModeOnLoad"); + let spreadMode = _app_options.AppOptions.get("spreadModeOnLoad"); + if (stored.page && viewOnLoad !== ViewOnLoad.INITIAL) { + hash = `page=${stored.page}&zoom=${zoom || stored.zoom},` + `${stored.scrollLeft},${stored.scrollTop}`; + rotation = parseInt(stored.rotation, 10); + if (sidebarView === _ui_utils.SidebarView.UNKNOWN) { + sidebarView = stored.sidebarView | 0; + } + if (scrollMode === _ui_utils.ScrollMode.UNKNOWN) { + scrollMode = stored.scrollMode | 0; + } + if (spreadMode === _ui_utils.SpreadMode.UNKNOWN) { + spreadMode = stored.spreadMode | 0; + } + } + if (pageMode && sidebarView === _ui_utils.SidebarView.UNKNOWN) { + sidebarView = (0, _ui_utils.apiPageModeToSidebarView)(pageMode); + } + if (pageLayout && scrollMode === _ui_utils.ScrollMode.UNKNOWN && spreadMode === _ui_utils.SpreadMode.UNKNOWN) { + const modes = (0, _ui_utils.apiPageLayoutToViewerModes)(pageLayout); + spreadMode = modes.spreadMode; + } + this.setInitialView(hash, { + rotation, + sidebarView, + scrollMode, + spreadMode + }); + this.eventBus.dispatch("documentinit", { + source: this + }); + if (!this.isViewerEmbedded) { + pdfViewer.focus(); + } + await Promise.race([pagesPromise, new Promise(resolve => { + setTimeout(resolve, FORCE_PAGES_LOADED_TIMEOUT); + })]); + if (!initialBookmark && !hash) { + return; + } + if (pdfViewer.hasEqualPageSizes) { + return; + } + this.initialBookmark = initialBookmark; + pdfViewer.currentScaleValue = pdfViewer.currentScaleValue; + this.setInitialView(hash); + }).catch(() => { + this.setInitialView(); + }).then(function () { + pdfViewer.update(); + }); + }); + pagesPromise.then(() => { + this._unblockDocumentLoadEvent(); + this._initializeAutoPrint(pdfDocument, openActionPromise); + }, reason => { + this.l10n.get("loading_error").then(msg => { + this._documentError(msg, { + message: reason?.message + }); + }); + }); + onePageRendered.then(data => { + this.externalServices.reportTelemetry({ + type: "pageInfo", + timestamp: data.timestamp + }); + if (this.pdfOutlineViewer) { + pdfDocument.getOutline().then(outline => { + if (pdfDocument !== this.pdfDocument) { + return; + } + this.pdfOutlineViewer.render({ + outline, + pdfDocument + }); + }); + } + if (this.pdfAttachmentViewer) { + pdfDocument.getAttachments().then(attachments => { + if (pdfDocument !== this.pdfDocument) { + return; + } + this.pdfAttachmentViewer.render({ + attachments + }); + }); + } + if (this.pdfLayerViewer) { + pdfViewer.optionalContentConfigPromise.then(optionalContentConfig => { + if (pdfDocument !== this.pdfDocument) { + return; + } + this.pdfLayerViewer.render({ + optionalContentConfig, + pdfDocument + }); + }); + } + }); + this._initializePageLabels(pdfDocument); + this._initializeMetadata(pdfDocument); + }, + async _scriptingDocProperties(pdfDocument) { + if (!this.documentInfo) { + await new Promise(resolve => { + this.eventBus._on("metadataloaded", resolve, { + once: true + }); + }); + if (pdfDocument !== this.pdfDocument) { + return null; + } + } + if (!this._contentLength) { + await new Promise(resolve => { + this.eventBus._on("documentloaded", resolve, { + once: true + }); + }); + if (pdfDocument !== this.pdfDocument) { + return null; + } + } + return { + ...this.documentInfo, + baseURL: this.baseUrl, + filesize: this._contentLength, + filename: this._docFilename, + metadata: this.metadata?.getRaw(), + authors: this.metadata?.get("dc:creator"), + numPages: this.pagesCount, + URL: this.url + }; + }, + async _initializeAutoPrint(pdfDocument, openActionPromise) { + const [openAction, javaScript] = await Promise.all([openActionPromise, !this.pdfViewer.enableScripting ? pdfDocument.getJavaScript() : null]); + if (pdfDocument !== this.pdfDocument) { + return; + } + let triggerAutoPrint = false; + if (openAction?.action === "Print") { + triggerAutoPrint = true; + } + if (javaScript) { + javaScript.some(js => { + if (!js) { + return false; + } + console.warn("Warning: JavaScript support is not enabled"); + return true; + }); + if (!triggerAutoPrint) { + for (const js of javaScript) { + if (js && _ui_utils.AutoPrintRegExp.test(js)) { + triggerAutoPrint = true; + break; + } + } + } + } + if (triggerAutoPrint) { + this.triggerPrinting(); + } + }, + async _initializeMetadata(pdfDocument) { + const { + info, + metadata, + contentDispositionFilename, + contentLength + } = await pdfDocument.getMetadata(); + if (pdfDocument !== this.pdfDocument) { + return; + } + this.documentInfo = info; + this.metadata = metadata; + this._contentDispositionFilename ??= contentDispositionFilename; + this._contentLength ??= contentLength; + console.log(`PDF ${pdfDocument.fingerprints[0]} [${info.PDFFormatVersion} ` + `${(info.Producer || "-").trim()} / ${(info.Creator || "-").trim()}] ` + `(PDF.js: ${_pdfjsLib.version || "?"} [${_pdfjsLib.build || "?"}])`); + let pdfTitle = info.Title; + const metadataTitle = metadata?.get("dc:title"); + if (metadataTitle) { + if (metadataTitle !== "Untitled" && !/[\uFFF0-\uFFFF]/g.test(metadataTitle)) { + pdfTitle = metadataTitle; + } + } + if (pdfTitle) { + this.setTitle(`${pdfTitle} - ${this._contentDispositionFilename || this._title}`); + } else if (this._contentDispositionFilename) { + this.setTitle(this._contentDispositionFilename); + } + if (info.IsXFAPresent && !info.IsAcroFormPresent && !pdfDocument.isPureXfa) { + if (pdfDocument.loadingParams.enableXfa) { + console.warn("Warning: XFA Foreground documents are not supported"); + } else { + console.warn("Warning: XFA support is not enabled"); + } + } else if ((info.IsAcroFormPresent || info.IsXFAPresent) && !this.pdfViewer.renderForms) { + console.warn("Warning: Interactive form support is not enabled"); + } + if (info.IsSignaturesPresent) { + console.warn("Warning: Digital signatures validation is not supported"); + } + this.eventBus.dispatch("metadataloaded", { + source: this + }); + }, + async _initializePageLabels(pdfDocument) { + const labels = await pdfDocument.getPageLabels(); + if (pdfDocument !== this.pdfDocument) { + return; + } + if (!labels || _app_options.AppOptions.get("disablePageLabels")) { + return; + } + const numLabels = labels.length; + let standardLabels = 0, + emptyLabels = 0; + for (let i = 0; i < numLabels; i++) { + const label = labels[i]; + if (label === (i + 1).toString()) { + standardLabels++; + } else if (label === "") { + emptyLabels++; + } else { + break; + } + } + if (standardLabels >= numLabels || emptyLabels >= numLabels) { + return; + } + const { + pdfViewer, + pdfThumbnailViewer, + toolbar + } = this; + pdfViewer.setPageLabels(labels); + pdfThumbnailViewer?.setPageLabels(labels); + toolbar?.setPagesCount(numLabels, true); + toolbar?.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel); + }, + _initializePdfHistory({ + fingerprint, + viewOnLoad, + initialDest = null + }) { + if (!this.pdfHistory) { + return; + } + this.pdfHistory.initialize({ + fingerprint, + resetHistory: viewOnLoad === ViewOnLoad.INITIAL, + updateUrl: _app_options.AppOptions.get("historyUpdateUrl") + }); + if (this.pdfHistory.initialBookmark) { + this.initialBookmark = this.pdfHistory.initialBookmark; + this.initialRotation = this.pdfHistory.initialRotation; + } + if (initialDest && !this.initialBookmark && viewOnLoad === ViewOnLoad.UNKNOWN) { + this.initialBookmark = JSON.stringify(initialDest); + this.pdfHistory.push({ + explicitDest: initialDest, + pageNumber: null + }); + } + }, + _initializeAnnotationStorageCallbacks(pdfDocument) { + if (pdfDocument !== this.pdfDocument) { + return; + } + const { + annotationStorage + } = pdfDocument; + annotationStorage.onSetModified = () => { + window.addEventListener("beforeunload", beforeUnload); + this._annotationStorageModified = true; + }; + annotationStorage.onResetModified = () => { + window.removeEventListener("beforeunload", beforeUnload); + delete this._annotationStorageModified; + }; + annotationStorage.onAnnotationEditor = typeStr => { + this._hasAnnotationEditors = !!typeStr; + this.setTitle(); + if (typeStr) { + this.externalServices.reportTelemetry({ + type: "editing", + data: { + type: typeStr + } + }); + } + }; + }, + setInitialView(storedHash, { + rotation, + sidebarView, + scrollMode, + spreadMode + } = {}) { + const setRotation = angle => { + if ((0, _ui_utils.isValidRotation)(angle)) { + this.pdfViewer.pagesRotation = angle; + } + }; + const setViewerModes = (scroll, spread) => { + if ((0, _ui_utils.isValidScrollMode)(scroll)) { + this.pdfViewer.scrollMode = scroll; + } + if ((0, _ui_utils.isValidSpreadMode)(spread)) { + this.pdfViewer.spreadMode = spread; + } + }; + this.isInitialViewSet = true; + this.pdfSidebar?.setInitialView(sidebarView); + setViewerModes(scrollMode, spreadMode); + if (this.initialBookmark) { + setRotation(this.initialRotation); + delete this.initialRotation; + this.pdfLinkService.setHash(this.initialBookmark); + this.initialBookmark = null; + } else if (storedHash) { + setRotation(rotation); + this.pdfLinkService.setHash(storedHash); + } + this.toolbar?.setPageNumber(this.pdfViewer.currentPageNumber, this.pdfViewer.currentPageLabel); + this.secondaryToolbar?.setPageNumber(this.pdfViewer.currentPageNumber); + if (!this.pdfViewer.currentScaleValue) { + this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; + } + }, + _cleanup() { + if (!this.pdfDocument) { + return; + } + this.pdfViewer.cleanup(); + this.pdfThumbnailViewer?.cleanup(); + this.pdfDocument.cleanup(); + }, + forceRendering() { + this.pdfRenderingQueue.printing = !!this.printService; + this.pdfRenderingQueue.isThumbnailViewEnabled = this.pdfSidebar?.visibleView === _ui_utils.SidebarView.THUMBS; + this.pdfRenderingQueue.renderHighestPriority(); + }, + beforePrint() { + this._printAnnotationStoragePromise = this.pdfScriptingManager.dispatchWillPrint().catch(() => {}).then(() => { + return this.pdfDocument?.annotationStorage.print; + }); + if (this.printService) { + return; + } + if (!this.supportsPrinting) { + this.l10n.get("printing_not_supported").then(msg => { + this._otherError(msg); + }); + return; + } + if (!this.pdfViewer.pageViewsReady) { + this.l10n.get("printing_not_ready").then(msg => { + window.alert(msg); + }); + return; + } + const pagesOverview = this.pdfViewer.getPagesOverview(); + const printContainer = this.appConfig.printContainer; + const printResolution = _app_options.AppOptions.get("printResolution"); + const optionalContentConfigPromise = this.pdfViewer.optionalContentConfigPromise; + const printService = PDFPrintServiceFactory.instance.createPrintService(this.pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise, this._printAnnotationStoragePromise, this.l10n); + this.printService = printService; + this.forceRendering(); + this.setTitle(); + printService.layout(); + if (this._hasAnnotationEditors) { + this.externalServices.reportTelemetry({ + type: "editing", + data: { + type: "print" + } + }); + } + }, + afterPrint() { + if (this._printAnnotationStoragePromise) { + this._printAnnotationStoragePromise.then(() => { + this.pdfScriptingManager.dispatchDidPrint(); + }); + this._printAnnotationStoragePromise = null; + } + if (this.printService) { + this.printService.destroy(); + this.printService = null; + this.pdfDocument?.annotationStorage.resetModified(); + } + this.forceRendering(); + this.setTitle(); + }, + rotatePages(delta) { + this.pdfViewer.pagesRotation += delta; + }, + requestPresentationMode() { + this.pdfPresentationMode?.request(); + }, + triggerPrinting() { + if (!this.supportsPrinting) { + return; + } + window.print(); + }, + bindEvents() { + const { + eventBus, + _boundEvents + } = this; + _boundEvents.beforePrint = this.beforePrint.bind(this); + _boundEvents.afterPrint = this.afterPrint.bind(this); + eventBus._on("resize", webViewerResize); + eventBus._on("hashchange", webViewerHashchange); + eventBus._on("beforeprint", _boundEvents.beforePrint); + eventBus._on("afterprint", _boundEvents.afterPrint); + eventBus._on("pagerender", webViewerPageRender); + eventBus._on("pagerendered", webViewerPageRendered); + eventBus._on("updateviewarea", webViewerUpdateViewarea); + eventBus._on("pagechanging", webViewerPageChanging); + eventBus._on("scalechanging", webViewerScaleChanging); + eventBus._on("rotationchanging", webViewerRotationChanging); + eventBus._on("sidebarviewchanged", webViewerSidebarViewChanged); + eventBus._on("pagemode", webViewerPageMode); + eventBus._on("namedaction", webViewerNamedAction); + eventBus._on("presentationmodechanged", webViewerPresentationModeChanged); + eventBus._on("presentationmode", webViewerPresentationMode); + eventBus._on("switchannotationeditormode", webViewerSwitchAnnotationEditorMode); + eventBus._on("switchannotationeditorparams", webViewerSwitchAnnotationEditorParams); + eventBus._on("print", webViewerPrint); + eventBus._on("download", webViewerDownload); + eventBus._on("openinexternalapp", webViewerOpenInExternalApp); + eventBus._on("firstpage", webViewerFirstPage); + eventBus._on("lastpage", webViewerLastPage); + eventBus._on("nextpage", webViewerNextPage); + eventBus._on("previouspage", webViewerPreviousPage); + eventBus._on("zoomin", webViewerZoomIn); + eventBus._on("zoomout", webViewerZoomOut); + eventBus._on("zoomreset", webViewerZoomReset); + eventBus._on("pagenumberchanged", webViewerPageNumberChanged); + eventBus._on("scalechanged", webViewerScaleChanged); + eventBus._on("rotatecw", webViewerRotateCw); + eventBus._on("rotateccw", webViewerRotateCcw); + eventBus._on("optionalcontentconfig", webViewerOptionalContentConfig); + eventBus._on("switchscrollmode", webViewerSwitchScrollMode); + eventBus._on("scrollmodechanged", webViewerScrollModeChanged); + eventBus._on("switchspreadmode", webViewerSwitchSpreadMode); + eventBus._on("spreadmodechanged", webViewerSpreadModeChanged); + eventBus._on("documentproperties", webViewerDocumentProperties); + eventBus._on("findfromurlhash", webViewerFindFromUrlHash); + eventBus._on("updatefindmatchescount", webViewerUpdateFindMatchesCount); + eventBus._on("updatefindcontrolstate", webViewerUpdateFindControlState); + if (_app_options.AppOptions.get("pdfBug")) { + _boundEvents.reportPageStatsPDFBug = reportPageStatsPDFBug; + eventBus._on("pagerendered", _boundEvents.reportPageStatsPDFBug); + eventBus._on("pagechanging", _boundEvents.reportPageStatsPDFBug); + } + eventBus._on("fileinputchange", webViewerFileInputChange); + eventBus._on("openfile", webViewerOpenFile); + }, + bindWindowEvents() { + const { + eventBus, + _boundEvents + } = this; + function addWindowResolutionChange(evt = null) { + if (evt) { + webViewerResolutionChange(evt); + } + const mediaQueryList = window.matchMedia(`(resolution: ${window.devicePixelRatio || 1}dppx)`); + mediaQueryList.addEventListener("change", addWindowResolutionChange, { + once: true + }); + _boundEvents.removeWindowResolutionChange ||= function () { + mediaQueryList.removeEventListener("change", addWindowResolutionChange); + _boundEvents.removeWindowResolutionChange = null; + }; + } + addWindowResolutionChange(); + _boundEvents.windowResize = () => { + eventBus.dispatch("resize", { + source: window + }); + }; + _boundEvents.windowHashChange = () => { + eventBus.dispatch("hashchange", { + source: window, + hash: document.location.hash.substring(1) + }); + }; + _boundEvents.windowBeforePrint = () => { + eventBus.dispatch("beforeprint", { + source: window + }); + }; + _boundEvents.windowAfterPrint = () => { + eventBus.dispatch("afterprint", { + source: window + }); + }; + _boundEvents.windowUpdateFromSandbox = event => { + eventBus.dispatch("updatefromsandbox", { + source: window, + detail: event.detail + }); + }; + window.addEventListener("visibilitychange", webViewerVisibilityChange); + window.addEventListener("wheel", webViewerWheel, { + passive: false + }); + window.addEventListener("touchstart", webViewerTouchStart, { + passive: false + }); + window.addEventListener("touchmove", webViewerTouchMove, { + passive: false + }); + window.addEventListener("touchend", webViewerTouchEnd, { + passive: false + }); + window.addEventListener("click", webViewerClick); + window.addEventListener("keydown", webViewerKeyDown); + window.addEventListener("keyup", webViewerKeyUp); + window.addEventListener("resize", _boundEvents.windowResize); + window.addEventListener("hashchange", _boundEvents.windowHashChange); + window.addEventListener("beforeprint", _boundEvents.windowBeforePrint); + window.addEventListener("afterprint", _boundEvents.windowAfterPrint); + window.addEventListener("updatefromsandbox", _boundEvents.windowUpdateFromSandbox); + }, + unbindEvents() { + const { + eventBus, + _boundEvents + } = this; + eventBus._off("resize", webViewerResize); + eventBus._off("hashchange", webViewerHashchange); + eventBus._off("beforeprint", _boundEvents.beforePrint); + eventBus._off("afterprint", _boundEvents.afterPrint); + eventBus._off("pagerender", webViewerPageRender); + eventBus._off("pagerendered", webViewerPageRendered); + eventBus._off("updateviewarea", webViewerUpdateViewarea); + eventBus._off("pagechanging", webViewerPageChanging); + eventBus._off("scalechanging", webViewerScaleChanging); + eventBus._off("rotationchanging", webViewerRotationChanging); + eventBus._off("sidebarviewchanged", webViewerSidebarViewChanged); + eventBus._off("pagemode", webViewerPageMode); + eventBus._off("namedaction", webViewerNamedAction); + eventBus._off("presentationmodechanged", webViewerPresentationModeChanged); + eventBus._off("presentationmode", webViewerPresentationMode); + eventBus._off("print", webViewerPrint); + eventBus._off("download", webViewerDownload); + eventBus._off("openinexternalapp", webViewerOpenInExternalApp); + eventBus._off("firstpage", webViewerFirstPage); + eventBus._off("lastpage", webViewerLastPage); + eventBus._off("nextpage", webViewerNextPage); + eventBus._off("previouspage", webViewerPreviousPage); + eventBus._off("zoomin", webViewerZoomIn); + eventBus._off("zoomout", webViewerZoomOut); + eventBus._off("zoomreset", webViewerZoomReset); + eventBus._off("pagenumberchanged", webViewerPageNumberChanged); + eventBus._off("scalechanged", webViewerScaleChanged); + eventBus._off("rotatecw", webViewerRotateCw); + eventBus._off("rotateccw", webViewerRotateCcw); + eventBus._off("optionalcontentconfig", webViewerOptionalContentConfig); + eventBus._off("switchscrollmode", webViewerSwitchScrollMode); + eventBus._off("scrollmodechanged", webViewerScrollModeChanged); + eventBus._off("switchspreadmode", webViewerSwitchSpreadMode); + eventBus._off("spreadmodechanged", webViewerSpreadModeChanged); + eventBus._off("documentproperties", webViewerDocumentProperties); + eventBus._off("findfromurlhash", webViewerFindFromUrlHash); + eventBus._off("updatefindmatchescount", webViewerUpdateFindMatchesCount); + eventBus._off("updatefindcontrolstate", webViewerUpdateFindControlState); + if (_boundEvents.reportPageStatsPDFBug) { + eventBus._off("pagerendered", _boundEvents.reportPageStatsPDFBug); + eventBus._off("pagechanging", _boundEvents.reportPageStatsPDFBug); + _boundEvents.reportPageStatsPDFBug = null; + } + eventBus._off("fileinputchange", webViewerFileInputChange); + eventBus._off("openfile", webViewerOpenFile); + _boundEvents.beforePrint = null; + _boundEvents.afterPrint = null; + }, + unbindWindowEvents() { + const { + _boundEvents + } = this; + window.removeEventListener("visibilitychange", webViewerVisibilityChange); + window.removeEventListener("wheel", webViewerWheel, { + passive: false + }); + window.removeEventListener("touchstart", webViewerTouchStart, { + passive: false + }); + window.removeEventListener("touchmove", webViewerTouchMove, { + passive: false + }); + window.removeEventListener("touchend", webViewerTouchEnd, { + passive: false + }); + window.removeEventListener("click", webViewerClick); + window.removeEventListener("keydown", webViewerKeyDown); + window.removeEventListener("keyup", webViewerKeyUp); + window.removeEventListener("resize", _boundEvents.windowResize); + window.removeEventListener("hashchange", _boundEvents.windowHashChange); + window.removeEventListener("beforeprint", _boundEvents.windowBeforePrint); + window.removeEventListener("afterprint", _boundEvents.windowAfterPrint); + window.removeEventListener("updatefromsandbox", _boundEvents.windowUpdateFromSandbox); + _boundEvents.removeWindowResolutionChange?.(); + _boundEvents.windowResize = null; + _boundEvents.windowHashChange = null; + _boundEvents.windowBeforePrint = null; + _boundEvents.windowAfterPrint = null; + _boundEvents.windowUpdateFromSandbox = null; + }, + _accumulateTicks(ticks, prop) { + if (this[prop] > 0 && ticks < 0 || this[prop] < 0 && ticks > 0) { + this[prop] = 0; + } + this[prop] += ticks; + const wholeTicks = Math.trunc(this[prop]); + this[prop] -= wholeTicks; + return wholeTicks; + }, + _accumulateFactor(previousScale, factor, prop) { + if (factor === 1) { + return 1; + } + if (this[prop] > 1 && factor < 1 || this[prop] < 1 && factor > 1) { + this[prop] = 1; + } + const newFactor = Math.floor(previousScale * factor * this[prop] * 100) / (100 * previousScale); + this[prop] = factor / newFactor; + return newFactor; + }, + _centerAtPos(previousScale, x, y) { + const { + pdfViewer + } = this; + const scaleDiff = pdfViewer.currentScale / previousScale - 1; + if (scaleDiff !== 0) { + const [top, left] = pdfViewer.containerTopLeft; + pdfViewer.container.scrollLeft += (x - left) * scaleDiff; + pdfViewer.container.scrollTop += (y - top) * scaleDiff; + } + }, + _unblockDocumentLoadEvent() { + document.blockUnblockOnload?.(false); + this._unblockDocumentLoadEvent = () => {}; + }, + get scriptingReady() { + return this.pdfScriptingManager.ready; + } +}; +exports.PDFViewerApplication = PDFViewerApplication; +{ + const HOSTED_VIEWER_ORIGINS = ["null", "http://mozilla.github.io", "https://mozilla.github.io"]; + var validateFileURL = function (file) { + if (!file) { + return; + } + try { + const viewerOrigin = new URL(window.location.href).origin || "null"; + if (HOSTED_VIEWER_ORIGINS.includes(viewerOrigin)) { + return; + } + const fileOrigin = new URL(file, window.location.href).origin; + if (fileOrigin !== viewerOrigin) { + throw new Error("file origin does not match viewer's"); + } + } catch (ex) { + PDFViewerApplication.l10n.get("loading_error").then(msg => { + PDFViewerApplication._documentError(msg, { + message: ex?.message + }); + }); + throw ex; + } + }; +} +async function loadFakeWorker() { + _pdfjsLib.GlobalWorkerOptions.workerSrc ||= _app_options.AppOptions.get("workerSrc"); + await (0, _pdfjsLib.loadScript)(_pdfjsLib.PDFWorker.workerSrc); +} +async function loadPDFBug(self) { + const { + debuggerScriptPath + } = self.appConfig; + const { + PDFBug + } = await import(debuggerScriptPath); + self._PDFBug = PDFBug; +} +function reportPageStatsPDFBug({ + pageNumber +}) { + if (!globalThis.Stats?.enabled) { + return; + } + const pageView = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1); + globalThis.Stats.add(pageNumber, pageView?.pdfPage?.stats); +} +function webViewerPageRender({ + pageNumber +}) { + if (pageNumber === PDFViewerApplication.page) { + PDFViewerApplication.toolbar?.updateLoadingIndicatorState(true); + } +} +function webViewerPageRendered({ + pageNumber, + error +}) { + if (pageNumber === PDFViewerApplication.page) { + PDFViewerApplication.toolbar?.updateLoadingIndicatorState(false); + } + if (PDFViewerApplication.pdfSidebar?.visibleView === _ui_utils.SidebarView.THUMBS) { + const pageView = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1); + const thumbnailView = PDFViewerApplication.pdfThumbnailViewer?.getThumbnail(pageNumber - 1); + if (pageView) { + thumbnailView?.setImage(pageView); + } + } + if (error) { + PDFViewerApplication.l10n.get("rendering_error").then(msg => { + PDFViewerApplication._otherError(msg, error); + }); + } +} +function webViewerPageMode({ + mode +}) { + let view; + switch (mode) { + case "thumbs": + view = _ui_utils.SidebarView.THUMBS; + break; + case "bookmarks": + case "outline": + view = _ui_utils.SidebarView.OUTLINE; + break; + case "attachments": + view = _ui_utils.SidebarView.ATTACHMENTS; + break; + case "layers": + view = _ui_utils.SidebarView.LAYERS; + break; + case "none": + view = _ui_utils.SidebarView.NONE; + break; + default: + console.error('Invalid "pagemode" hash parameter: ' + mode); + return; + } + PDFViewerApplication.pdfSidebar?.switchView(view, true); +} +function webViewerNamedAction(evt) { + switch (evt.action) { + case "GoToPage": + PDFViewerApplication.appConfig.toolbar?.pageNumber.select(); + break; + case "Find": + if (!PDFViewerApplication.supportsIntegratedFind) { + PDFViewerApplication?.findBar.toggle(); + } + break; + case "Print": + PDFViewerApplication.triggerPrinting(); + break; + case "SaveAs": + PDFViewerApplication.downloadOrSave(); + break; + } +} +function webViewerPresentationModeChanged(evt) { + PDFViewerApplication.pdfViewer.presentationModeState = evt.state; +} +function webViewerSidebarViewChanged({ + view +}) { + PDFViewerApplication.pdfRenderingQueue.isThumbnailViewEnabled = view === _ui_utils.SidebarView.THUMBS; + if (PDFViewerApplication.isInitialViewSet) { + PDFViewerApplication.store?.set("sidebarView", view).catch(() => {}); + } +} +function webViewerUpdateViewarea({ + location +}) { + if (PDFViewerApplication.isInitialViewSet) { + PDFViewerApplication.store?.setMultiple({ + page: location.pageNumber, + zoom: location.scale, + scrollLeft: location.left, + scrollTop: location.top, + rotation: location.rotation + }).catch(() => {}); + } + if (PDFViewerApplication.appConfig.secondaryToolbar) { + const href = PDFViewerApplication.pdfLinkService.getAnchorUrl(location.pdfOpenParams); + PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href = href; + } +} +function webViewerScrollModeChanged(evt) { + if (PDFViewerApplication.isInitialViewSet && !PDFViewerApplication.pdfViewer.isInPresentationMode) { + PDFViewerApplication.store?.set("scrollMode", evt.mode).catch(() => {}); + } +} +function webViewerSpreadModeChanged(evt) { + if (PDFViewerApplication.isInitialViewSet && !PDFViewerApplication.pdfViewer.isInPresentationMode) { + PDFViewerApplication.store?.set("spreadMode", evt.mode).catch(() => {}); + } +} +function webViewerResize() { + const { + pdfDocument, + pdfViewer, + pdfRenderingQueue + } = PDFViewerApplication; + if (pdfRenderingQueue.printing && window.matchMedia("print").matches) { + return; + } + if (!pdfDocument) { + return; + } + const currentScaleValue = pdfViewer.currentScaleValue; + if (currentScaleValue === "auto" || currentScaleValue === "page-fit" || currentScaleValue === "page-width") { + pdfViewer.currentScaleValue = currentScaleValue; + } + pdfViewer.update(); +} +function webViewerHashchange(evt) { + const hash = evt.hash; + if (!hash) { + return; + } + if (!PDFViewerApplication.isInitialViewSet) { + PDFViewerApplication.initialBookmark = hash; + } else if (!PDFViewerApplication.pdfHistory?.popStateInProgress) { + PDFViewerApplication.pdfLinkService.setHash(hash); + } +} +{ + var webViewerFileInputChange = function (evt) { + if (PDFViewerApplication.pdfViewer?.isInPresentationMode) { + return; + } + const file = evt.fileInput.files[0]; + PDFViewerApplication.open({ + url: URL.createObjectURL(file), + originalUrl: file.name + }); + }; + var webViewerOpenFile = function (evt) { + const fileInput = PDFViewerApplication.appConfig.openFileInput; + fileInput.click(); + }; +} +function webViewerPresentationMode() { + PDFViewerApplication.requestPresentationMode(); +} +function webViewerSwitchAnnotationEditorMode(evt) { + PDFViewerApplication.pdfViewer.annotationEditorMode = evt.mode; +} +function webViewerSwitchAnnotationEditorParams(evt) { + PDFViewerApplication.pdfViewer.annotationEditorParams = evt; +} +function webViewerPrint() { + PDFViewerApplication.triggerPrinting(); +} +function webViewerDownload() { + PDFViewerApplication.downloadOrSave(); +} +function webViewerOpenInExternalApp() { + PDFViewerApplication.openInExternalApp(); +} +function webViewerFirstPage() { + PDFViewerApplication.page = 1; +} +function webViewerLastPage() { + PDFViewerApplication.page = PDFViewerApplication.pagesCount; +} +function webViewerNextPage() { + PDFViewerApplication.pdfViewer.nextPage(); +} +function webViewerPreviousPage() { + PDFViewerApplication.pdfViewer.previousPage(); +} +function webViewerZoomIn() { + PDFViewerApplication.zoomIn(); +} +function webViewerZoomOut() { + PDFViewerApplication.zoomOut(); +} +function webViewerZoomReset() { + PDFViewerApplication.zoomReset(); +} +function webViewerPageNumberChanged(evt) { + const pdfViewer = PDFViewerApplication.pdfViewer; + if (evt.value !== "") { + PDFViewerApplication.pdfLinkService.goToPage(evt.value); + } + if (evt.value !== pdfViewer.currentPageNumber.toString() && evt.value !== pdfViewer.currentPageLabel) { + PDFViewerApplication.toolbar?.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel); + } +} +function webViewerScaleChanged(evt) { + PDFViewerApplication.pdfViewer.currentScaleValue = evt.value; +} +function webViewerRotateCw() { + PDFViewerApplication.rotatePages(90); +} +function webViewerRotateCcw() { + PDFViewerApplication.rotatePages(-90); +} +function webViewerOptionalContentConfig(evt) { + PDFViewerApplication.pdfViewer.optionalContentConfigPromise = evt.promise; +} +function webViewerSwitchScrollMode(evt) { + PDFViewerApplication.pdfViewer.scrollMode = evt.mode; +} +function webViewerSwitchSpreadMode(evt) { + PDFViewerApplication.pdfViewer.spreadMode = evt.mode; +} +function webViewerDocumentProperties() { + PDFViewerApplication.pdfDocumentProperties?.open(); +} +function webViewerFindFromUrlHash(evt) { + PDFViewerApplication.eventBus.dispatch("find", { + source: evt.source, + type: "", + query: evt.query, + caseSensitive: false, + entireWord: false, + highlightAll: true, + findPrevious: false, + matchDiacritics: true + }); +} +function webViewerUpdateFindMatchesCount({ + matchesCount +}) { + if (PDFViewerApplication.supportsIntegratedFind) { + PDFViewerApplication.externalServices.updateFindMatchesCount(matchesCount); + } else { + PDFViewerApplication.findBar.updateResultsCount(matchesCount); + } +} +function webViewerUpdateFindControlState({ + state, + previous, + matchesCount, + rawQuery +}) { + if (PDFViewerApplication.supportsIntegratedFind) { + PDFViewerApplication.externalServices.updateFindControlState({ + result: state, + findPrevious: previous, + matchesCount, + rawQuery + }); + } else { + PDFViewerApplication.findBar?.updateUIState(state, previous, matchesCount); + } +} +function webViewerScaleChanging(evt) { + PDFViewerApplication.toolbar?.setPageScale(evt.presetValue, evt.scale); + PDFViewerApplication.pdfViewer.update(); +} +function webViewerRotationChanging(evt) { + if (PDFViewerApplication.pdfThumbnailViewer) { + PDFViewerApplication.pdfThumbnailViewer.pagesRotation = evt.pagesRotation; + } + PDFViewerApplication.forceRendering(); + PDFViewerApplication.pdfViewer.currentPageNumber = evt.pageNumber; +} +function webViewerPageChanging({ + pageNumber, + pageLabel +}) { + PDFViewerApplication.toolbar?.setPageNumber(pageNumber, pageLabel); + PDFViewerApplication.secondaryToolbar?.setPageNumber(pageNumber); + if (PDFViewerApplication.pdfSidebar?.visibleView === _ui_utils.SidebarView.THUMBS) { + PDFViewerApplication.pdfThumbnailViewer?.scrollThumbnailIntoView(pageNumber); + } + const currentPage = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1); + PDFViewerApplication.toolbar?.updateLoadingIndicatorState(currentPage?.renderingState === _ui_utils.RenderingStates.RUNNING); +} +function webViewerResolutionChange(evt) { + PDFViewerApplication.pdfViewer.refresh(); +} +function webViewerVisibilityChange(evt) { + if (document.visibilityState === "visible") { + setZoomDisabledTimeout(); + } +} +let zoomDisabledTimeout = null; +function setZoomDisabledTimeout() { + if (zoomDisabledTimeout) { + clearTimeout(zoomDisabledTimeout); + } + zoomDisabledTimeout = setTimeout(function () { + zoomDisabledTimeout = null; + }, WHEEL_ZOOM_DISABLED_TIMEOUT); +} +function webViewerWheel(evt) { + const { + pdfViewer, + supportedMouseWheelZoomModifierKeys, + supportsPinchToZoom + } = PDFViewerApplication; + if (pdfViewer.isInPresentationMode) { + return; + } + const deltaMode = evt.deltaMode; + let scaleFactor = Math.exp(-evt.deltaY / 100); + const isBuiltInMac = false; + const isPinchToZoom = evt.ctrlKey && !PDFViewerApplication._isCtrlKeyDown && deltaMode === WheelEvent.DOM_DELTA_PIXEL && evt.deltaX === 0 && (Math.abs(scaleFactor - 1) < 0.05 || isBuiltInMac) && evt.deltaZ === 0; + if (isPinchToZoom || evt.ctrlKey && supportedMouseWheelZoomModifierKeys.ctrlKey || evt.metaKey && supportedMouseWheelZoomModifierKeys.metaKey) { + evt.preventDefault(); + if (zoomDisabledTimeout || document.visibilityState === "hidden") { + return; + } + const previousScale = pdfViewer.currentScale; + if (isPinchToZoom && supportsPinchToZoom) { + scaleFactor = PDFViewerApplication._accumulateFactor(previousScale, scaleFactor, "_wheelUnusedFactor"); + if (scaleFactor < 1) { + PDFViewerApplication.zoomOut(null, scaleFactor); + } else if (scaleFactor > 1) { + PDFViewerApplication.zoomIn(null, scaleFactor); + } else { + return; + } + } else { + const delta = (0, _ui_utils.normalizeWheelEventDirection)(evt); + let ticks = 0; + if (deltaMode === WheelEvent.DOM_DELTA_LINE || deltaMode === WheelEvent.DOM_DELTA_PAGE) { + if (Math.abs(delta) >= 1) { + ticks = Math.sign(delta); + } else { + ticks = PDFViewerApplication._accumulateTicks(delta, "_wheelUnusedTicks"); + } + } else { + const PIXELS_PER_LINE_SCALE = 30; + ticks = PDFViewerApplication._accumulateTicks(delta / PIXELS_PER_LINE_SCALE, "_wheelUnusedTicks"); + } + if (ticks < 0) { + PDFViewerApplication.zoomOut(-ticks); + } else if (ticks > 0) { + PDFViewerApplication.zoomIn(ticks); + } else { + return; + } + } + PDFViewerApplication._centerAtPos(previousScale, evt.clientX, evt.clientY); + } else { + setZoomDisabledTimeout(); + } +} +function webViewerTouchStart(evt) { + if (PDFViewerApplication.pdfViewer.isInPresentationMode || evt.touches.length < 2) { + return; + } + evt.preventDefault(); + if (evt.touches.length !== 2) { + PDFViewerApplication._touchInfo = null; + return; + } + let [touch0, touch1] = evt.touches; + if (touch0.identifier > touch1.identifier) { + [touch0, touch1] = [touch1, touch0]; + } + PDFViewerApplication._touchInfo = { + touch0X: touch0.pageX, + touch0Y: touch0.pageY, + touch1X: touch1.pageX, + touch1Y: touch1.pageY + }; +} +function webViewerTouchMove(evt) { + if (!PDFViewerApplication._touchInfo || evt.touches.length !== 2) { + return; + } + const { + pdfViewer, + _touchInfo, + supportsPinchToZoom + } = PDFViewerApplication; + let [touch0, touch1] = evt.touches; + if (touch0.identifier > touch1.identifier) { + [touch0, touch1] = [touch1, touch0]; + } + const { + pageX: page0X, + pageY: page0Y + } = touch0; + const { + pageX: page1X, + pageY: page1Y + } = touch1; + const { + touch0X: pTouch0X, + touch0Y: pTouch0Y, + touch1X: pTouch1X, + touch1Y: pTouch1Y + } = _touchInfo; + if (Math.abs(pTouch0X - page0X) <= 1 && Math.abs(pTouch0Y - page0Y) <= 1 && Math.abs(pTouch1X - page1X) <= 1 && Math.abs(pTouch1Y - page1Y) <= 1) { + return; + } + _touchInfo.touch0X = page0X; + _touchInfo.touch0Y = page0Y; + _touchInfo.touch1X = page1X; + _touchInfo.touch1Y = page1Y; + if (pTouch0X === page0X && pTouch0Y === page0Y) { + const v1X = pTouch1X - page0X; + const v1Y = pTouch1Y - page0Y; + const v2X = page1X - page0X; + const v2Y = page1Y - page0Y; + const det = v1X * v2Y - v1Y * v2X; + if (Math.abs(det) > 0.02 * Math.hypot(v1X, v1Y) * Math.hypot(v2X, v2Y)) { + return; + } + } else if (pTouch1X === page1X && pTouch1Y === page1Y) { + const v1X = pTouch0X - page1X; + const v1Y = pTouch0Y - page1Y; + const v2X = page0X - page1X; + const v2Y = page0Y - page1Y; + const det = v1X * v2Y - v1Y * v2X; + if (Math.abs(det) > 0.02 * Math.hypot(v1X, v1Y) * Math.hypot(v2X, v2Y)) { + return; + } + } else { + const diff0X = page0X - pTouch0X; + const diff1X = page1X - pTouch1X; + const diff0Y = page0Y - pTouch0Y; + const diff1Y = page1Y - pTouch1Y; + const dotProduct = diff0X * diff1X + diff0Y * diff1Y; + if (dotProduct >= 0) { + return; + } + } + evt.preventDefault(); + const distance = Math.hypot(page0X - page1X, page0Y - page1Y) || 1; + const pDistance = Math.hypot(pTouch0X - pTouch1X, pTouch0Y - pTouch1Y) || 1; + const previousScale = pdfViewer.currentScale; + if (supportsPinchToZoom) { + const newScaleFactor = PDFViewerApplication._accumulateFactor(previousScale, distance / pDistance, "_touchUnusedFactor"); + if (newScaleFactor < 1) { + PDFViewerApplication.zoomOut(null, newScaleFactor); + } else if (newScaleFactor > 1) { + PDFViewerApplication.zoomIn(null, newScaleFactor); + } else { + return; + } + } else { + const PIXELS_PER_LINE_SCALE = 30; + const ticks = PDFViewerApplication._accumulateTicks((distance - pDistance) / PIXELS_PER_LINE_SCALE, "_touchUnusedTicks"); + if (ticks < 0) { + PDFViewerApplication.zoomOut(-ticks); + } else if (ticks > 0) { + PDFViewerApplication.zoomIn(ticks); + } else { + return; + } + } + PDFViewerApplication._centerAtPos(previousScale, (page0X + page1X) / 2, (page0Y + page1Y) / 2); +} +function webViewerTouchEnd(evt) { + if (!PDFViewerApplication._touchInfo) { + return; + } + evt.preventDefault(); + PDFViewerApplication._touchInfo = null; + PDFViewerApplication._touchUnusedTicks = 0; + PDFViewerApplication._touchUnusedFactor = 1; +} +function webViewerClick(evt) { + if (!PDFViewerApplication.secondaryToolbar?.isOpen) { + return; + } + const appConfig = PDFViewerApplication.appConfig; + if (PDFViewerApplication.pdfViewer.containsElement(evt.target) || appConfig.toolbar?.container.contains(evt.target) && evt.target !== appConfig.secondaryToolbar?.toggleButton) { + PDFViewerApplication.secondaryToolbar.close(); + } +} +function webViewerKeyUp(evt) { + if (evt.key === "Control") { + PDFViewerApplication._isCtrlKeyDown = false; + } +} +function webViewerKeyDown(evt) { + PDFViewerApplication._isCtrlKeyDown = evt.key === "Control"; + if (PDFViewerApplication.overlayManager.active) { + return; + } + const { + eventBus, + pdfViewer + } = PDFViewerApplication; + const isViewerInPresentationMode = pdfViewer.isInPresentationMode; + let handled = false, + ensureViewerFocused = false; + const cmd = (evt.ctrlKey ? 1 : 0) | (evt.altKey ? 2 : 0) | (evt.shiftKey ? 4 : 0) | (evt.metaKey ? 8 : 0); + if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) { + switch (evt.keyCode) { + case 70: + if (!PDFViewerApplication.supportsIntegratedFind && !evt.shiftKey) { + PDFViewerApplication.findBar?.open(); + handled = true; + } + break; + case 71: + if (!PDFViewerApplication.supportsIntegratedFind) { + const { + state + } = PDFViewerApplication.findController; + if (state) { + const newState = { + source: window, + type: "again", + findPrevious: cmd === 5 || cmd === 12 + }; + eventBus.dispatch("find", { + ...state, + ...newState + }); + } + handled = true; + } + break; + case 61: + case 107: + case 187: + case 171: + PDFViewerApplication.zoomIn(); + handled = true; + break; + case 173: + case 109: + case 189: + PDFViewerApplication.zoomOut(); + handled = true; + break; + case 48: + case 96: + if (!isViewerInPresentationMode) { + setTimeout(function () { + PDFViewerApplication.zoomReset(); + }); + handled = false; + } + break; + case 38: + if (isViewerInPresentationMode || PDFViewerApplication.page > 1) { + PDFViewerApplication.page = 1; + handled = true; + ensureViewerFocused = true; + } + break; + case 40: + if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) { + PDFViewerApplication.page = PDFViewerApplication.pagesCount; + handled = true; + ensureViewerFocused = true; + } + break; + } + } + if (cmd === 1 || cmd === 8) { + switch (evt.keyCode) { + case 83: + eventBus.dispatch("download", { + source: window + }); + handled = true; + break; + case 79: + { + eventBus.dispatch("openfile", { + source: window + }); + handled = true; + } + break; + } + } + if (cmd === 3 || cmd === 10) { + switch (evt.keyCode) { + case 80: + PDFViewerApplication.requestPresentationMode(); + handled = true; + PDFViewerApplication.externalServices.reportTelemetry({ + type: "buttons", + data: { + id: "presentationModeKeyboard" + } + }); + break; + case 71: + if (PDFViewerApplication.appConfig.toolbar) { + PDFViewerApplication.appConfig.toolbar.pageNumber.select(); + handled = true; + } + break; + } + } + if (handled) { + if (ensureViewerFocused && !isViewerInPresentationMode) { + pdfViewer.focus(); + } + evt.preventDefault(); + return; + } + const curElement = (0, _ui_utils.getActiveOrFocusedElement)(); + const curElementTagName = curElement?.tagName.toUpperCase(); + if (curElementTagName === "INPUT" || curElementTagName === "TEXTAREA" || curElementTagName === "SELECT" || curElement?.isContentEditable) { + if (evt.keyCode !== 27) { + return; + } + } + if (cmd === 0) { + let turnPage = 0, + turnOnlyIfPageFit = false; + switch (evt.keyCode) { + case 38: + case 33: + if (pdfViewer.isVerticalScrollbarEnabled) { + turnOnlyIfPageFit = true; + } + turnPage = -1; + break; + case 8: + if (!isViewerInPresentationMode) { + turnOnlyIfPageFit = true; + } + turnPage = -1; + break; + case 37: + if (pdfViewer.isHorizontalScrollbarEnabled) { + turnOnlyIfPageFit = true; + } + case 75: + case 80: + turnPage = -1; + break; + case 27: + if (PDFViewerApplication.secondaryToolbar?.isOpen) { + PDFViewerApplication.secondaryToolbar.close(); + handled = true; + } + if (!PDFViewerApplication.supportsIntegratedFind && PDFViewerApplication.findBar?.opened) { + PDFViewerApplication.findBar.close(); + handled = true; + } + break; + case 40: + case 34: + if (pdfViewer.isVerticalScrollbarEnabled) { + turnOnlyIfPageFit = true; + } + turnPage = 1; + break; + case 13: + case 32: + if (!isViewerInPresentationMode) { + turnOnlyIfPageFit = true; + } + turnPage = 1; + break; + case 39: + if (pdfViewer.isHorizontalScrollbarEnabled) { + turnOnlyIfPageFit = true; + } + case 74: + case 78: + turnPage = 1; + break; + case 36: + if (isViewerInPresentationMode || PDFViewerApplication.page > 1) { + PDFViewerApplication.page = 1; + handled = true; + ensureViewerFocused = true; + } + break; + case 35: + if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) { + PDFViewerApplication.page = PDFViewerApplication.pagesCount; + handled = true; + ensureViewerFocused = true; + } + break; + case 83: + PDFViewerApplication.pdfCursorTools?.switchTool(_ui_utils.CursorTool.SELECT); + break; + case 72: + PDFViewerApplication.pdfCursorTools?.switchTool(_ui_utils.CursorTool.HAND); + break; + case 82: + PDFViewerApplication.rotatePages(90); + break; + case 115: + PDFViewerApplication.pdfSidebar?.toggle(); + break; + } + if (turnPage !== 0 && (!turnOnlyIfPageFit || pdfViewer.currentScaleValue === "page-fit")) { + if (turnPage > 0) { + pdfViewer.nextPage(); + } else { + pdfViewer.previousPage(); + } + handled = true; + } + } + if (cmd === 4) { + switch (evt.keyCode) { + case 13: + case 32: + if (!isViewerInPresentationMode && pdfViewer.currentScaleValue !== "page-fit") { + break; + } + pdfViewer.previousPage(); + handled = true; + break; + case 82: + PDFViewerApplication.rotatePages(-90); + break; + } + } + if (!handled && !isViewerInPresentationMode) { + if (evt.keyCode >= 33 && evt.keyCode <= 40 || evt.keyCode === 32 && curElementTagName !== "BUTTON") { + ensureViewerFocused = true; + } + } + if (ensureViewerFocused && !pdfViewer.containsElement(curElement)) { + pdfViewer.focus(); + } + if (handled) { + evt.preventDefault(); + } +} +function beforeUnload(evt) { + evt.preventDefault(); + evt.returnValue = ""; + return false; +} +function webViewerAnnotationEditorStatesChanged(data) { + PDFViewerApplication.externalServices.updateEditorStates(data); +} +const PDFPrintServiceFactory = { + instance: { + supportsPrinting: false, + createPrintService() { + throw new Error("Not implemented: createPrintService"); + } + } +}; +exports.PDFPrintServiceFactory = PDFPrintServiceFactory; + +/***/ }), +/* 3 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.animationStarted = exports.VERTICAL_PADDING = exports.UNKNOWN_SCALE = exports.TextLayerMode = exports.SpreadMode = exports.SidebarView = exports.ScrollMode = exports.SCROLLBAR_PADDING = exports.RenderingStates = exports.ProgressBar = exports.PresentationModeState = exports.OutputScale = exports.MIN_SCALE = exports.MAX_SCALE = exports.MAX_AUTO_SCALE = exports.DEFAULT_SCALE_VALUE = exports.DEFAULT_SCALE_DELTA = exports.DEFAULT_SCALE = exports.CursorTool = exports.AutoPrintRegExp = void 0; +exports.apiPageLayoutToViewerModes = apiPageLayoutToViewerModes; +exports.apiPageModeToSidebarView = apiPageModeToSidebarView; +exports.approximateFraction = approximateFraction; +exports.backtrackBeforeAllVisibleElements = backtrackBeforeAllVisibleElements; +exports.binarySearchFirstItem = binarySearchFirstItem; +exports.docStyle = void 0; +exports.getActiveOrFocusedElement = getActiveOrFocusedElement; +exports.getPageSizeInches = getPageSizeInches; +exports.getVisibleElements = getVisibleElements; +exports.isPortraitOrientation = isPortraitOrientation; +exports.isValidRotation = isValidRotation; +exports.isValidScrollMode = isValidScrollMode; +exports.isValidSpreadMode = isValidSpreadMode; +exports.noContextMenuHandler = noContextMenuHandler; +exports.normalizeWheelEventDelta = normalizeWheelEventDelta; +exports.normalizeWheelEventDirection = normalizeWheelEventDirection; +exports.parseQueryString = parseQueryString; +exports.removeNullCharacters = removeNullCharacters; +exports.roundToDivide = roundToDivide; +exports.scrollIntoView = scrollIntoView; +exports.toggleCheckedBtn = toggleCheckedBtn; +exports.toggleExpandedBtn = toggleExpandedBtn; +exports.watchScroll = watchScroll; +const DEFAULT_SCALE_VALUE = "auto"; +exports.DEFAULT_SCALE_VALUE = DEFAULT_SCALE_VALUE; +const DEFAULT_SCALE = 1.0; +exports.DEFAULT_SCALE = DEFAULT_SCALE; +const DEFAULT_SCALE_DELTA = 1.1; +exports.DEFAULT_SCALE_DELTA = DEFAULT_SCALE_DELTA; +const MIN_SCALE = 0.1; +exports.MIN_SCALE = MIN_SCALE; +const MAX_SCALE = 10.0; +exports.MAX_SCALE = MAX_SCALE; +const UNKNOWN_SCALE = 0; +exports.UNKNOWN_SCALE = UNKNOWN_SCALE; +const MAX_AUTO_SCALE = 1.25; +exports.MAX_AUTO_SCALE = MAX_AUTO_SCALE; +const SCROLLBAR_PADDING = 40; +exports.SCROLLBAR_PADDING = SCROLLBAR_PADDING; +const VERTICAL_PADDING = 5; +exports.VERTICAL_PADDING = VERTICAL_PADDING; +const RenderingStates = { + INITIAL: 0, + RUNNING: 1, + PAUSED: 2, + FINISHED: 3 +}; +exports.RenderingStates = RenderingStates; +const PresentationModeState = { + UNKNOWN: 0, + NORMAL: 1, + CHANGING: 2, + FULLSCREEN: 3 +}; +exports.PresentationModeState = PresentationModeState; +const SidebarView = { + UNKNOWN: -1, + NONE: 0, + THUMBS: 1, + OUTLINE: 2, + ATTACHMENTS: 3, + LAYERS: 4 +}; +exports.SidebarView = SidebarView; +const TextLayerMode = { + DISABLE: 0, + ENABLE: 1, + ENABLE_PERMISSIONS: 2 +}; +exports.TextLayerMode = TextLayerMode; +const ScrollMode = { + UNKNOWN: -1, + VERTICAL: 0, + HORIZONTAL: 1, + WRAPPED: 2, + PAGE: 3 +}; +exports.ScrollMode = ScrollMode; +const SpreadMode = { + UNKNOWN: -1, + NONE: 0, + ODD: 1, + EVEN: 2 +}; +exports.SpreadMode = SpreadMode; +const CursorTool = { + SELECT: 0, + HAND: 1, + ZOOM: 2 +}; +exports.CursorTool = CursorTool; +const AutoPrintRegExp = /\bprint\s*\(/; +exports.AutoPrintRegExp = AutoPrintRegExp; +class OutputScale { + constructor() { + const pixelRatio = window.devicePixelRatio || 1; + this.sx = pixelRatio; + this.sy = pixelRatio; + } + get scaled() { + return this.sx !== 1 || this.sy !== 1; + } +} +exports.OutputScale = OutputScale; +function scrollIntoView(element, spot, scrollMatches = false) { + let parent = element.offsetParent; + if (!parent) { + console.error("offsetParent is not set -- cannot scroll"); + return; + } + let offsetY = element.offsetTop + element.clientTop; + let offsetX = element.offsetLeft + element.clientLeft; + while (parent.clientHeight === parent.scrollHeight && parent.clientWidth === parent.scrollWidth || scrollMatches && (parent.classList.contains("markedContent") || getComputedStyle(parent).overflow === "hidden")) { + offsetY += parent.offsetTop; + offsetX += parent.offsetLeft; + parent = parent.offsetParent; + if (!parent) { + return; + } + } + if (spot) { + if (spot.top !== undefined) { + offsetY += spot.top; + } + if (spot.left !== undefined) { + offsetX += spot.left; + parent.scrollLeft = offsetX; + } + } + parent.scrollTop = offsetY; +} +function watchScroll(viewAreaElement, callback) { + const debounceScroll = function (evt) { + if (rAF) { + return; + } + rAF = window.requestAnimationFrame(function viewAreaElementScrolled() { + rAF = null; + const currentX = viewAreaElement.scrollLeft; + const lastX = state.lastX; + if (currentX !== lastX) { + state.right = currentX > lastX; + } + state.lastX = currentX; + const currentY = viewAreaElement.scrollTop; + const lastY = state.lastY; + if (currentY !== lastY) { + state.down = currentY > lastY; + } + state.lastY = currentY; + callback(state); + }); + }; + const state = { + right: true, + down: true, + lastX: viewAreaElement.scrollLeft, + lastY: viewAreaElement.scrollTop, + _eventHandler: debounceScroll + }; + let rAF = null; + viewAreaElement.addEventListener("scroll", debounceScroll, true); + return state; +} +function parseQueryString(query) { + const params = new Map(); + for (const [key, value] of new URLSearchParams(query)) { + params.set(key.toLowerCase(), value); + } + return params; +} +const InvisibleCharactersRegExp = /[\x01-\x1F]/g; +function removeNullCharacters(str, replaceInvisible = false) { + if (typeof str !== "string") { + console.error(`The argument must be a string.`); + return str; + } + if (replaceInvisible) { + str = str.replaceAll(InvisibleCharactersRegExp, " "); + } + return str.replaceAll("\x00", ""); +} +function binarySearchFirstItem(items, condition, start = 0) { + let minIndex = start; + let maxIndex = items.length - 1; + if (maxIndex < 0 || !condition(items[maxIndex])) { + return items.length; + } + if (condition(items[minIndex])) { + return minIndex; + } + while (minIndex < maxIndex) { + const currentIndex = minIndex + maxIndex >> 1; + const currentItem = items[currentIndex]; + if (condition(currentItem)) { + maxIndex = currentIndex; + } else { + minIndex = currentIndex + 1; + } + } + return minIndex; +} +function approximateFraction(x) { + if (Math.floor(x) === x) { + return [x, 1]; + } + const xinv = 1 / x; + const limit = 8; + if (xinv > limit) { + return [1, limit]; + } else if (Math.floor(xinv) === xinv) { + return [1, xinv]; + } + const x_ = x > 1 ? xinv : x; + let a = 0, + b = 1, + c = 1, + d = 1; + while (true) { + const p = a + c, + q = b + d; + if (q > limit) { + break; + } + if (x_ <= p / q) { + c = p; + d = q; + } else { + a = p; + b = q; + } + } + let result; + if (x_ - a / b < c / d - x_) { + result = x_ === x ? [a, b] : [b, a]; + } else { + result = x_ === x ? [c, d] : [d, c]; + } + return result; +} +function roundToDivide(x, div) { + const r = x % div; + return r === 0 ? x : Math.round(x - r + div); +} +function getPageSizeInches({ + view, + userUnit, + rotate +}) { + const [x1, y1, x2, y2] = view; + const changeOrientation = rotate % 180 !== 0; + const width = (x2 - x1) / 72 * userUnit; + const height = (y2 - y1) / 72 * userUnit; + return { + width: changeOrientation ? height : width, + height: changeOrientation ? width : height + }; +} +function backtrackBeforeAllVisibleElements(index, views, top) { + if (index < 2) { + return index; + } + let elt = views[index].div; + let pageTop = elt.offsetTop + elt.clientTop; + if (pageTop >= top) { + elt = views[index - 1].div; + pageTop = elt.offsetTop + elt.clientTop; + } + for (let i = index - 2; i >= 0; --i) { + elt = views[i].div; + if (elt.offsetTop + elt.clientTop + elt.clientHeight <= pageTop) { + break; + } + index = i; + } + return index; +} +function getVisibleElements({ + scrollEl, + views, + sortByVisibility = false, + horizontal = false, + rtl = false +}) { + const top = scrollEl.scrollTop, + bottom = top + scrollEl.clientHeight; + const left = scrollEl.scrollLeft, + right = left + scrollEl.clientWidth; + function isElementBottomAfterViewTop(view) { + const element = view.div; + const elementBottom = element.offsetTop + element.clientTop + element.clientHeight; + return elementBottom > top; + } + function isElementNextAfterViewHorizontally(view) { + const element = view.div; + const elementLeft = element.offsetLeft + element.clientLeft; + const elementRight = elementLeft + element.clientWidth; + return rtl ? elementLeft < right : elementRight > left; + } + const visible = [], + ids = new Set(), + numViews = views.length; + let firstVisibleElementInd = binarySearchFirstItem(views, horizontal ? isElementNextAfterViewHorizontally : isElementBottomAfterViewTop); + if (firstVisibleElementInd > 0 && firstVisibleElementInd < numViews && !horizontal) { + firstVisibleElementInd = backtrackBeforeAllVisibleElements(firstVisibleElementInd, views, top); + } + let lastEdge = horizontal ? right : -1; + for (let i = firstVisibleElementInd; i < numViews; i++) { + const view = views[i], + element = view.div; + const currentWidth = element.offsetLeft + element.clientLeft; + const currentHeight = element.offsetTop + element.clientTop; + const viewWidth = element.clientWidth, + viewHeight = element.clientHeight; + const viewRight = currentWidth + viewWidth; + const viewBottom = currentHeight + viewHeight; + if (lastEdge === -1) { + if (viewBottom >= bottom) { + lastEdge = viewBottom; + } + } else if ((horizontal ? currentWidth : currentHeight) > lastEdge) { + break; + } + if (viewBottom <= top || currentHeight >= bottom || viewRight <= left || currentWidth >= right) { + continue; + } + const hiddenHeight = Math.max(0, top - currentHeight) + Math.max(0, viewBottom - bottom); + const hiddenWidth = Math.max(0, left - currentWidth) + Math.max(0, viewRight - right); + const fractionHeight = (viewHeight - hiddenHeight) / viewHeight, + fractionWidth = (viewWidth - hiddenWidth) / viewWidth; + const percent = fractionHeight * fractionWidth * 100 | 0; + visible.push({ + id: view.id, + x: currentWidth, + y: currentHeight, + view, + percent, + widthPercent: fractionWidth * 100 | 0 + }); + ids.add(view.id); + } + const first = visible[0], + last = visible.at(-1); + if (sortByVisibility) { + visible.sort(function (a, b) { + const pc = a.percent - b.percent; + if (Math.abs(pc) > 0.001) { + return -pc; + } + return a.id - b.id; + }); + } + return { + first, + last, + views: visible, + ids + }; +} +function noContextMenuHandler(evt) { + evt.preventDefault(); +} +function normalizeWheelEventDirection(evt) { + let delta = Math.hypot(evt.deltaX, evt.deltaY); + const angle = Math.atan2(evt.deltaY, evt.deltaX); + if (-0.25 * Math.PI < angle && angle < 0.75 * Math.PI) { + delta = -delta; + } + return delta; +} +function normalizeWheelEventDelta(evt) { + const deltaMode = evt.deltaMode; + let delta = normalizeWheelEventDirection(evt); + const MOUSE_PIXELS_PER_LINE = 30; + const MOUSE_LINES_PER_PAGE = 30; + if (deltaMode === WheelEvent.DOM_DELTA_PIXEL) { + delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE; + } else if (deltaMode === WheelEvent.DOM_DELTA_LINE) { + delta /= MOUSE_LINES_PER_PAGE; + } + return delta; +} +function isValidRotation(angle) { + return Number.isInteger(angle) && angle % 90 === 0; +} +function isValidScrollMode(mode) { + return Number.isInteger(mode) && Object.values(ScrollMode).includes(mode) && mode !== ScrollMode.UNKNOWN; +} +function isValidSpreadMode(mode) { + return Number.isInteger(mode) && Object.values(SpreadMode).includes(mode) && mode !== SpreadMode.UNKNOWN; +} +function isPortraitOrientation(size) { + return size.width <= size.height; +} +const animationStarted = new Promise(function (resolve) { + window.requestAnimationFrame(resolve); +}); +exports.animationStarted = animationStarted; +const docStyle = document.documentElement.style; +exports.docStyle = docStyle; +function clamp(v, min, max) { + return Math.min(Math.max(v, min), max); +} +class ProgressBar { + #classList = null; + #disableAutoFetchTimeout = null; + #percent = 0; + #style = null; + #visible = true; + constructor(bar) { + this.#classList = bar.classList; + this.#style = bar.style; + } + get percent() { + return this.#percent; + } + set percent(val) { + this.#percent = clamp(val, 0, 100); + if (isNaN(val)) { + this.#classList.add("indeterminate"); + return; + } + this.#classList.remove("indeterminate"); + this.#style.setProperty("--progressBar-percent", `${this.#percent}%`); + } + setWidth(viewer) { + if (!viewer) { + return; + } + const container = viewer.parentNode; + const scrollbarWidth = container.offsetWidth - viewer.offsetWidth; + if (scrollbarWidth > 0) { + this.#style.setProperty("--progressBar-end-offset", `${scrollbarWidth}px`); + } + } + setDisableAutoFetch(delay = 5000) { + if (isNaN(this.#percent)) { + return; + } + if (this.#disableAutoFetchTimeout) { + clearTimeout(this.#disableAutoFetchTimeout); + } + this.show(); + this.#disableAutoFetchTimeout = setTimeout(() => { + this.#disableAutoFetchTimeout = null; + this.hide(); + }, delay); + } + hide() { + if (!this.#visible) { + return; + } + this.#visible = false; + this.#classList.add("hidden"); + } + show() { + if (this.#visible) { + return; + } + this.#visible = true; + this.#classList.remove("hidden"); + } +} +exports.ProgressBar = ProgressBar; +function getActiveOrFocusedElement() { + let curRoot = document; + let curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus"); + while (curActiveOrFocused?.shadowRoot) { + curRoot = curActiveOrFocused.shadowRoot; + curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus"); + } + return curActiveOrFocused; +} +function apiPageLayoutToViewerModes(layout) { + let scrollMode = ScrollMode.VERTICAL, + spreadMode = SpreadMode.NONE; + switch (layout) { + case "SinglePage": + scrollMode = ScrollMode.PAGE; + break; + case "OneColumn": + break; + case "TwoPageLeft": + scrollMode = ScrollMode.PAGE; + case "TwoColumnLeft": + spreadMode = SpreadMode.ODD; + break; + case "TwoPageRight": + scrollMode = ScrollMode.PAGE; + case "TwoColumnRight": + spreadMode = SpreadMode.EVEN; + break; + } + return { + scrollMode, + spreadMode + }; +} +function apiPageModeToSidebarView(mode) { + switch (mode) { + case "UseNone": + return SidebarView.NONE; + case "UseThumbs": + return SidebarView.THUMBS; + case "UseOutlines": + return SidebarView.OUTLINE; + case "UseAttachments": + return SidebarView.ATTACHMENTS; + case "UseOC": + return SidebarView.LAYERS; + } + return SidebarView.NONE; +} +function toggleCheckedBtn(button, toggle, view = null) { + button.classList.toggle("toggled", toggle); + button.setAttribute("aria-checked", toggle); + view?.classList.toggle("hidden", !toggle); +} +function toggleExpandedBtn(button, toggle, view = null) { + button.classList.toggle("toggled", toggle); + button.setAttribute("aria-expanded", toggle); + view?.classList.toggle("hidden", !toggle); +} + +/***/ }), +/* 4 */ +/***/ ((module) => { + + + +let pdfjsLib; +if (typeof window !== "undefined" && window["pdfjs-dist/build/pdf"]) { + pdfjsLib = window["pdfjs-dist/build/pdf"]; +} else { + pdfjsLib = require("../build/pdf.js"); +} +module.exports = pdfjsLib; + +/***/ }), +/* 5 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.compatibilityParams = exports.OptionKind = exports.AppOptions = void 0; +const compatibilityParams = Object.create(null); +exports.compatibilityParams = compatibilityParams; +{ + const userAgent = navigator.userAgent || ""; + const platform = navigator.platform || ""; + const maxTouchPoints = navigator.maxTouchPoints || 1; + const isAndroid = /Android/.test(userAgent); + const isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) || platform === "MacIntel" && maxTouchPoints > 1; + (function checkCanvasSizeLimitation() { + if (isIOS || isAndroid) { + compatibilityParams.maxCanvasPixels = 5242880; + } + })(); +} const OptionKind = { VIEWER: 0x02, API: 0x04, @@ -44,13 +3024,21 @@ const OptionKind = { }; exports.OptionKind = OptionKind; const defaultOptions = { + annotationEditorMode: { + value: 0, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + annotationMode: { + value: 2, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, cursorToolOnLoad: { value: 0, kind: OptionKind.VIEWER + OptionKind.PREFERENCE }, - defaultUrl: { - value: "compressed.tracemonkey-pldi-09.pdf", - kind: OptionKind.VIEWER + defaultZoomDelay: { + value: 400, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE }, defaultZoomValue: { value: "", @@ -98,9 +3086,20 @@ const defaultOptions = { }, maxCanvasPixels: { value: 16777216, - compatibility: _viewer_compatibility.viewerCompatibilityParams.maxCanvasPixels, kind: OptionKind.VIEWER }, + forcePageColors: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + pageColorsBackground: { + value: "Canvas", + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + pageColorsForeground: { + value: "CanvasText", + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, pdfBugEnabled: { value: false, kind: OptionKind.VIEWER + OptionKind.PREFERENCE @@ -109,14 +3108,6 @@ const defaultOptions = { value: 150, kind: OptionKind.VIEWER }, - renderer: { - value: "canvas", - kind: OptionKind.VIEWER - }, - renderInteractiveForms: { - value: true, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, sidebarViewOnLoad: { value: -1, kind: OptionKind.VIEWER + OptionKind.PREFERENCE @@ -174,7 +3165,7 @@ const defaultOptions = { kind: OptionKind.API }, enableXfa: { - value: false, + value: true, kind: OptionKind.API + OptionKind.PREFERENCE }, fontExtraProperties: { @@ -185,6 +3176,10 @@ const defaultOptions = { value: true, kind: OptionKind.API }, + isOffscreenCanvasSupported: { + value: true, + kind: OptionKind.API + }, maxImageSize: { value: -1, kind: OptionKind.API @@ -194,7 +3189,7 @@ const defaultOptions = { kind: OptionKind.API }, standardFontDataUrl: { - value: "../web/standard_fonts/", + value: SEAFILE_PDFJS_DIR + "/web/standard_fonts/", kind: OptionKind.API }, verbosity: { @@ -211,94 +3206,83 @@ const defaultOptions = { } }; { + defaultOptions.defaultUrl = { + value: SEAFILE_FILE_URL, + kind: OptionKind.VIEWER + }; defaultOptions.disablePreferences = { value: false, kind: OptionKind.VIEWER }; defaultOptions.locale = { - value: typeof navigator !== "undefined" ? navigator.language : "en-US", + value: navigator.language || "en-US", kind: OptionKind.VIEWER }; defaultOptions.sandboxBundleSrc = { value: "../build/pdf.sandbox.js", kind: OptionKind.VIEWER }; - defaultOptions.renderer.kind += OptionKind.PREFERENCE; } const userOptions = Object.create(null); - class AppOptions { constructor() { throw new Error("Cannot initialize AppOptions."); } - static get(name) { const userOption = userOptions[name]; - if (userOption !== undefined) { return userOption; } - const defaultOption = defaultOptions[name]; - if (defaultOption !== undefined) { - return defaultOption.compatibility ?? defaultOption.value; + return compatibilityParams[name] ?? defaultOption.value; } - return undefined; } - static getAll(kind = null) { const options = Object.create(null); - for (const name in defaultOptions) { const defaultOption = defaultOptions[name]; - if (kind) { if ((kind & defaultOption.kind) === 0) { continue; } - if (kind === OptionKind.PREFERENCE) { const value = defaultOption.value, - valueType = typeof value; - + valueType = typeof value; if (valueType === "boolean" || valueType === "string" || valueType === "number" && Number.isInteger(value)) { options[name] = value; continue; } - throw new Error(`Invalid type for preference: ${name}`); } } - const userOption = userOptions[name]; - options[name] = userOption !== undefined ? userOption : defaultOption.compatibility ?? defaultOption.value; + options[name] = userOption !== undefined ? userOption : compatibilityParams[name] ?? defaultOption.value; } - return options; } - static set(name, value) { userOptions[name] = value; } - static setAll(options) { for (const name in options) { userOptions[name] = options[name]; } } - static remove(name) { delete userOptions[name]; } - } - exports.AppOptions = AppOptions; +{ + AppOptions._hasUserOptions = function () { + return Object.keys(userOptions).length > 0; + }; +} /***/ }), -/* 2 */ +/* 6 */ /***/ ((__unused_webpack_module, exports) => { @@ -306,3363 +3290,13 @@ exports.AppOptions = AppOptions; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.viewerCompatibilityParams = void 0; -const compatibilityParams = Object.create(null); -{ - const userAgent = typeof navigator !== "undefined" && navigator.userAgent || ""; - const platform = typeof navigator !== "undefined" && navigator.platform || ""; - const maxTouchPoints = typeof navigator !== "undefined" && navigator.maxTouchPoints || 1; - const isAndroid = /Android/.test(userAgent); - const isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) || platform === "MacIntel" && maxTouchPoints > 1; - const isIOSChrome = /CriOS/.test(userAgent); - - (function checkOnBlobSupport() { - if (isIOSChrome) { - compatibilityParams.disableCreateObjectURL = true; - } - })(); - - (function checkCanvasSizeLimitation() { - if (isIOS || isAndroid) { - compatibilityParams.maxCanvasPixels = 5242880; - } - })(); -} -const viewerCompatibilityParams = Object.freeze(compatibilityParams); -exports.viewerCompatibilityParams = viewerCompatibilityParams; - -/***/ }), -/* 3 */ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.PDFViewerApplication = exports.PDFPrintServiceFactory = exports.DefaultExternalServices = void 0; - -var _ui_utils = __webpack_require__(4); - -var _app_options = __webpack_require__(1); - -var _pdfjsLib = __webpack_require__(5); - -var _pdf_cursor_tools = __webpack_require__(6); - -var _pdf_rendering_queue = __webpack_require__(8); - -var _overlay_manager = __webpack_require__(9); - -var _password_prompt = __webpack_require__(10); - -var _pdf_attachment_viewer = __webpack_require__(11); - -var _pdf_document_properties = __webpack_require__(13); - -var _pdf_find_bar = __webpack_require__(14); - -var _pdf_find_controller = __webpack_require__(15); - -var _pdf_history = __webpack_require__(17); - -var _pdf_layer_viewer = __webpack_require__(18); - -var _pdf_link_service = __webpack_require__(19); - -var _pdf_outline_viewer = __webpack_require__(20); - -var _pdf_presentation_mode = __webpack_require__(21); - -var _pdf_scripting_manager = __webpack_require__(22); - -var _pdf_sidebar = __webpack_require__(23); - -var _pdf_sidebar_resizer = __webpack_require__(24); - -var _pdf_thumbnail_viewer = __webpack_require__(25); - -var _pdf_viewer = __webpack_require__(27); - -var _secondary_toolbar = __webpack_require__(35); - -var _toolbar = __webpack_require__(37); - -var _viewer_compatibility = __webpack_require__(2); - -var _view_history = __webpack_require__(38); - -const DEFAULT_SCALE_DELTA = 1.1; -const DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000; -const FORCE_PAGES_LOADED_TIMEOUT = 10000; -const WHEEL_ZOOM_DISABLED_TIMEOUT = 1000; -const ENABLE_PERMISSIONS_CLASS = "enablePermissions"; -const ViewOnLoad = { - UNKNOWN: -1, - PREVIOUS: 0, - INITIAL: 1 -}; -const ViewerCssTheme = { - AUTOMATIC: 0, - LIGHT: 1, - DARK: 2 -}; -const KNOWN_VERSIONS = ["1.0", "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9", "2.0", "2.1", "2.2", "2.3"]; -const KNOWN_GENERATORS = ["acrobat distiller", "acrobat pdfwriter", "adobe livecycle", "adobe pdf library", "adobe photoshop", "ghostscript", "tcpdf", "cairo", "dvipdfm", "dvips", "pdftex", "pdfkit", "itext", "prince", "quarkxpress", "mac os x", "microsoft", "openoffice", "oracle", "luradocument", "pdf-xchange", "antenna house", "aspose.cells", "fpdf"]; - -class DefaultExternalServices { - constructor() { - throw new Error("Cannot initialize DefaultExternalServices."); - } - - static updateFindControlState(data) {} - - static updateFindMatchesCount(data) {} - - static initPassiveLoading(callbacks) {} - - static async fallback(data) {} - - static reportTelemetry(data) {} - - static createDownloadManager(options) { - throw new Error("Not implemented: createDownloadManager"); - } - - static createPreferences() { - throw new Error("Not implemented: createPreferences"); - } - - static createL10n(options) { - throw new Error("Not implemented: createL10n"); - } - - static createScripting(options) { - throw new Error("Not implemented: createScripting"); - } - - static get supportsIntegratedFind() { - return (0, _pdfjsLib.shadow)(this, "supportsIntegratedFind", false); - } - - static get supportsDocumentFonts() { - return (0, _pdfjsLib.shadow)(this, "supportsDocumentFonts", true); - } - - static get supportedMouseWheelZoomModifierKeys() { - return (0, _pdfjsLib.shadow)(this, "supportedMouseWheelZoomModifierKeys", { - ctrlKey: true, - metaKey: true - }); - } - - static get isInAutomation() { - return (0, _pdfjsLib.shadow)(this, "isInAutomation", false); - } - -} - -exports.DefaultExternalServices = DefaultExternalServices; -const PDFViewerApplication = { - initialBookmark: document.location.hash.substring(1), - _initializedCapability: (0, _pdfjsLib.createPromiseCapability)(), - _fellback: false, - appConfig: null, - pdfDocument: null, - pdfLoadingTask: null, - printService: null, - pdfViewer: null, - pdfThumbnailViewer: null, - pdfRenderingQueue: null, - pdfPresentationMode: null, - pdfDocumentProperties: null, - pdfLinkService: null, - pdfHistory: null, - pdfSidebar: null, - pdfSidebarResizer: null, - pdfOutlineViewer: null, - pdfAttachmentViewer: null, - pdfLayerViewer: null, - pdfCursorTools: null, - pdfScriptingManager: null, - store: null, - downloadManager: null, - overlayManager: null, - preferences: null, - toolbar: null, - secondaryToolbar: null, - eventBus: null, - l10n: null, - isInitialViewSet: false, - downloadComplete: false, - isViewerEmbedded: window.parent !== window, - url: "", - baseUrl: "", - externalServices: DefaultExternalServices, - _boundEvents: Object.create(null), - documentInfo: null, - metadata: null, - _contentDispositionFilename: null, - _contentLength: null, - _saveInProgress: false, - _wheelUnusedTicks: 0, - _idleCallbacks: new Set(), - - async initialize(appConfig) { - this.preferences = this.externalServices.createPreferences(); - this.appConfig = appConfig; - await this._readPreferences(); - await this._parseHashParameters(); - - this._forceCssTheme(); - - await this._initializeL10n(); - - if (this.isViewerEmbedded && _app_options.AppOptions.get("externalLinkTarget") === _pdfjsLib.LinkTarget.NONE) { - _app_options.AppOptions.set("externalLinkTarget", _pdfjsLib.LinkTarget.TOP); - } - - await this._initializeViewerComponents(); - this.bindEvents(); - this.bindWindowEvents(); - const appContainer = appConfig.appContainer || document.documentElement; - this.l10n.translate(appContainer).then(() => { - this.eventBus.dispatch("localized", { - source: this - }); - }); - - this._initializedCapability.resolve(); - - // for mobile - enablePinchZoom(); - }, - - async _readPreferences() { - if (_app_options.AppOptions.get("disablePreferences")) { - return; - } - - try { - _app_options.AppOptions.setAll(await this.preferences.getAll()); - } catch (reason) { - console.error(`_readPreferences: "${reason?.message}".`); - } - }, - - async _parseHashParameters() { - if (!_app_options.AppOptions.get("pdfBugEnabled")) { - return undefined; - } - - const hash = document.location.hash.substring(1); - - if (!hash) { - return undefined; - } - - const hashParams = (0, _ui_utils.parseQueryString)(hash), - waitOn = []; - - if ("disableworker" in hashParams && hashParams.disableworker === "true") { - waitOn.push(loadFakeWorker()); - } - - if ("disablerange" in hashParams) { - _app_options.AppOptions.set("disableRange", hashParams.disablerange === "true"); - } - - if ("disablestream" in hashParams) { - _app_options.AppOptions.set("disableStream", hashParams.disablestream === "true"); - } - - if ("disableautofetch" in hashParams) { - _app_options.AppOptions.set("disableAutoFetch", hashParams.disableautofetch === "true"); - } - - if ("disablefontface" in hashParams) { - _app_options.AppOptions.set("disableFontFace", hashParams.disablefontface === "true"); - } - - if ("disablehistory" in hashParams) { - _app_options.AppOptions.set("disableHistory", hashParams.disablehistory === "true"); - } - - if ("verbosity" in hashParams) { - _app_options.AppOptions.set("verbosity", hashParams.verbosity | 0); - } - - if ("textlayer" in hashParams) { - switch (hashParams.textlayer) { - case "off": - _app_options.AppOptions.set("textLayerMode", _ui_utils.TextLayerMode.DISABLE); - - break; - - case "visible": - case "shadow": - case "hover": - const viewer = this.appConfig.viewerContainer; - viewer.classList.add("textLayer-" + hashParams.textlayer); - break; - } - } - - if ("pdfbug" in hashParams) { - _app_options.AppOptions.set("pdfBug", true); - - _app_options.AppOptions.set("fontExtraProperties", true); - - const enabled = hashParams.pdfbug.split(","); - waitOn.push(loadAndEnablePDFBug(enabled)); - } - - if ("locale" in hashParams) { - _app_options.AppOptions.set("locale", hashParams.locale); - } - - if (waitOn.length === 0) { - return undefined; - } - - return Promise.all(waitOn).catch(reason => { - console.error(`_parseHashParameters: "${reason.message}".`); - }); - }, - - async _initializeL10n() { - this.l10n = this.externalServices.createL10n({ - locale: _app_options.AppOptions.get("locale") - }); - const dir = await this.l10n.getDirection(); - document.getElementsByTagName("html")[0].dir = dir; - }, - - _forceCssTheme() { - const cssTheme = _app_options.AppOptions.get("viewerCssTheme"); - - if (cssTheme === ViewerCssTheme.AUTOMATIC || !Object.values(ViewerCssTheme).includes(cssTheme)) { - return; - } - - try { - const styleSheet = document.styleSheets[0]; - const cssRules = styleSheet?.cssRules || []; - const mediaMatcher = "prefers-color-scheme"; - const mediaRule = `(${mediaMatcher}: dark)`; - const mediaRegex = new RegExp(`^@media \\(${mediaMatcher}: dark\\) {\\n\\s*([\\w\\s-.,:;/\\\\{}()]+)\\n}$`); - - for (let i = 0, ii = cssRules.length; i < ii; i++) { - const rule = cssRules[i]; - - if (rule instanceof CSSMediaRule && rule.media?.[0] === mediaRule) { - if (cssTheme === ViewerCssTheme.LIGHT) { - styleSheet.deleteRule(i); - return; - } - - const darkRules = mediaRegex.exec(rule.cssText); - - if (darkRules?.[1]) { - styleSheet.deleteRule(i); - styleSheet.insertRule(darkRules[1], i); - } - - return; - } - } - } catch (reason) { - console.error(`_forceCssTheme: "${reason?.message}".`); - } - }, - - async _initializeViewerComponents() { - const appConfig = this.appConfig; - const eventBus = appConfig.eventBus || new _ui_utils.EventBus({ - isInAutomation: this.externalServices.isInAutomation - }); - this.eventBus = eventBus; - this.overlayManager = new _overlay_manager.OverlayManager(); - const pdfRenderingQueue = new _pdf_rendering_queue.PDFRenderingQueue(); - pdfRenderingQueue.onIdle = this._cleanup.bind(this); - this.pdfRenderingQueue = pdfRenderingQueue; - const pdfLinkService = new _pdf_link_service.PDFLinkService({ - eventBus, - externalLinkTarget: _app_options.AppOptions.get("externalLinkTarget"), - externalLinkRel: _app_options.AppOptions.get("externalLinkRel"), - ignoreDestinationZoom: _app_options.AppOptions.get("ignoreDestinationZoom") - }); - this.pdfLinkService = pdfLinkService; - const downloadManager = this.externalServices.createDownloadManager(); - this.downloadManager = downloadManager; - const findController = new _pdf_find_controller.PDFFindController({ - linkService: pdfLinkService, - eventBus - }); - this.findController = findController; - const pdfScriptingManager = new _pdf_scripting_manager.PDFScriptingManager({ - eventBus, - sandboxBundleSrc: _app_options.AppOptions.get("sandboxBundleSrc"), - scriptingFactory: this.externalServices, - docPropertiesLookup: this._scriptingDocProperties.bind(this) - }); - this.pdfScriptingManager = pdfScriptingManager; - const container = appConfig.mainContainer; - const viewer = appConfig.viewerContainer; - this.pdfViewer = new _pdf_viewer.PDFViewer({ - container, - viewer, - eventBus, - renderingQueue: pdfRenderingQueue, - linkService: pdfLinkService, - downloadManager, - findController, - scriptingManager: pdfScriptingManager, - renderer: _app_options.AppOptions.get("renderer"), - l10n: this.l10n, - textLayerMode: _app_options.AppOptions.get("textLayerMode"), - imageResourcesPath: _app_options.AppOptions.get("imageResourcesPath"), - renderInteractiveForms: _app_options.AppOptions.get("renderInteractiveForms"), - enablePrintAutoRotate: _app_options.AppOptions.get("enablePrintAutoRotate"), - useOnlyCssZoom: _app_options.AppOptions.get("useOnlyCssZoom"), - maxCanvasPixels: _app_options.AppOptions.get("maxCanvasPixels"), - enableScripting: _app_options.AppOptions.get("enableScripting") - }); - pdfRenderingQueue.setViewer(this.pdfViewer); - pdfLinkService.setViewer(this.pdfViewer); - pdfScriptingManager.setViewer(this.pdfViewer); - this.pdfThumbnailViewer = new _pdf_thumbnail_viewer.PDFThumbnailViewer({ - container: appConfig.sidebar.thumbnailView, - eventBus, - renderingQueue: pdfRenderingQueue, - linkService: pdfLinkService, - l10n: this.l10n - }); - pdfRenderingQueue.setThumbnailViewer(this.pdfThumbnailViewer); - this.pdfHistory = new _pdf_history.PDFHistory({ - linkService: pdfLinkService, - eventBus - }); - pdfLinkService.setHistory(this.pdfHistory); - - if (!this.supportsIntegratedFind) { - this.findBar = new _pdf_find_bar.PDFFindBar(appConfig.findBar, eventBus, this.l10n); - } - - this.pdfDocumentProperties = new _pdf_document_properties.PDFDocumentProperties(appConfig.documentProperties, this.overlayManager, eventBus, this.l10n); - this.pdfCursorTools = new _pdf_cursor_tools.PDFCursorTools({ - container, - eventBus, - cursorToolOnLoad: _app_options.AppOptions.get("cursorToolOnLoad") - }); - this.toolbar = new _toolbar.Toolbar(appConfig.toolbar, eventBus, this.l10n); - this.secondaryToolbar = new _secondary_toolbar.SecondaryToolbar(appConfig.secondaryToolbar, container, eventBus); - - if (this.supportsFullscreen) { - this.pdfPresentationMode = new _pdf_presentation_mode.PDFPresentationMode({ - container, - pdfViewer: this.pdfViewer, - eventBus - }); - } - - this.passwordPrompt = new _password_prompt.PasswordPrompt(appConfig.passwordOverlay, this.overlayManager, this.l10n, this.isViewerEmbedded); - this.pdfOutlineViewer = new _pdf_outline_viewer.PDFOutlineViewer({ - container: appConfig.sidebar.outlineView, - eventBus, - linkService: pdfLinkService - }); - this.pdfAttachmentViewer = new _pdf_attachment_viewer.PDFAttachmentViewer({ - container: appConfig.sidebar.attachmentsView, - eventBus, - downloadManager - }); - this.pdfLayerViewer = new _pdf_layer_viewer.PDFLayerViewer({ - container: appConfig.sidebar.layersView, - eventBus, - l10n: this.l10n - }); - this.pdfSidebar = new _pdf_sidebar.PDFSidebar({ - elements: appConfig.sidebar, - pdfViewer: this.pdfViewer, - pdfThumbnailViewer: this.pdfThumbnailViewer, - eventBus, - l10n: this.l10n - }); - this.pdfSidebar.onToggled = this.forceRendering.bind(this); - this.pdfSidebarResizer = new _pdf_sidebar_resizer.PDFSidebarResizer(appConfig.sidebarResizer, eventBus, this.l10n); - }, - - run(config) { - this.initialize(config).then(webViewerInitialized); - }, - - get initialized() { - return this._initializedCapability.settled; - }, - - get initializedPromise() { - return this._initializedCapability.promise; - }, - - zoomIn(ticks) { - if (this.pdfViewer.isInPresentationMode) { - return; - } - - let newScale = this.pdfViewer.currentScale; - - do { - newScale = (newScale * DEFAULT_SCALE_DELTA).toFixed(2); - newScale = Math.ceil(newScale * 10) / 10; - newScale = Math.min(_ui_utils.MAX_SCALE, newScale); - } while (--ticks > 0 && newScale < _ui_utils.MAX_SCALE); - - this.pdfViewer.currentScaleValue = newScale; - }, - - zoomOut(ticks) { - if (this.pdfViewer.isInPresentationMode) { - return; - } - - let newScale = this.pdfViewer.currentScale; - - do { - newScale = (newScale / DEFAULT_SCALE_DELTA).toFixed(2); - newScale = Math.floor(newScale * 10) / 10; - newScale = Math.max(_ui_utils.MIN_SCALE, newScale); - } while (--ticks > 0 && newScale > _ui_utils.MIN_SCALE); - - this.pdfViewer.currentScaleValue = newScale; - }, - - zoomReset() { - if (this.pdfViewer.isInPresentationMode) { - return; - } - - this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; - }, - - get pagesCount() { - return this.pdfDocument ? this.pdfDocument.numPages : 0; - }, - - get page() { - return this.pdfViewer.currentPageNumber; - }, - - set page(val) { - this.pdfViewer.currentPageNumber = val; - }, - - get supportsPrinting() { - return PDFPrintServiceFactory.instance.supportsPrinting; - }, - - get supportsFullscreen() { - const doc = document.documentElement; - let support = !!(doc.requestFullscreen || doc.mozRequestFullScreen || doc.webkitRequestFullScreen); - - if (document.fullscreenEnabled === false || document.mozFullScreenEnabled === false || document.webkitFullscreenEnabled === false) { - support = false; - } - - return (0, _pdfjsLib.shadow)(this, "supportsFullscreen", support); - }, - - get supportsIntegratedFind() { - return this.externalServices.supportsIntegratedFind; - }, - - get supportsDocumentFonts() { - return this.externalServices.supportsDocumentFonts; - }, - - get loadingBar() { - const bar = new _ui_utils.ProgressBar("#loadingBar"); - return (0, _pdfjsLib.shadow)(this, "loadingBar", bar); - }, - - get supportedMouseWheelZoomModifierKeys() { - return this.externalServices.supportedMouseWheelZoomModifierKeys; - }, - - initPassiveLoading() { - throw new Error("Not implemented: initPassiveLoading"); - }, - - setTitleUsingUrl(url = "") { - this.url = url; - this.baseUrl = url.split("#")[0]; - let title = (0, _pdfjsLib.getPdfFilenameFromUrl)(url, ""); - - if (!title) { - try { - title = decodeURIComponent((0, _pdfjsLib.getFilenameFromUrl)(url)) || url; - } catch (ex) { - title = url; - } - } - - this.setTitle(title); - }, - - setTitle(title) { - if (this.isViewerEmbedded) { - return; - } - - // Seahub has its own 'title' - // document.title = title; - }, - - get _docFilename() { - return this._contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(this.url); - }, - - _cancelIdleCallbacks() { - if (!this._idleCallbacks.size) { - return; - } - - for (const callback of this._idleCallbacks) { - window.cancelIdleCallback(callback); - } - - this._idleCallbacks.clear(); - }, - - async close() { - this._unblockDocumentLoadEvent(); - - const { - container - } = this.appConfig.errorWrapper; - container.hidden = true; - - if (!this.pdfLoadingTask) { - return; - } - - if (this.pdfDocument?.annotationStorage.size > 0 && this._annotationStorageModified) { - try { - await this.save({ - sourceEventType: "save" - }); - } catch (reason) {} - } - - const promises = []; - promises.push(this.pdfLoadingTask.destroy()); - this.pdfLoadingTask = null; - - if (this.pdfDocument) { - this.pdfDocument = null; - this.pdfThumbnailViewer.setDocument(null); - this.pdfViewer.setDocument(null); - this.pdfLinkService.setDocument(null); - this.pdfDocumentProperties.setDocument(null); - } - - webViewerResetPermissions(); - this.pdfLinkService.externalLinkEnabled = true; - this._fellback = false; - this.store = null; - this.isInitialViewSet = false; - this.downloadComplete = false; - this.url = ""; - this.baseUrl = ""; - this.documentInfo = null; - this.metadata = null; - this._contentDispositionFilename = null; - this._contentLength = null; - this._saveInProgress = false; - - this._cancelIdleCallbacks(); - - promises.push(this.pdfScriptingManager.destroyPromise); - this.pdfSidebar.reset(); - this.pdfOutlineViewer.reset(); - this.pdfAttachmentViewer.reset(); - this.pdfLayerViewer.reset(); - - if (this.pdfHistory) { - this.pdfHistory.reset(); - } - - if (this.findBar) { - this.findBar.reset(); - } - - this.toolbar.reset(); - this.secondaryToolbar.reset(); - - if (typeof PDFBug !== "undefined") { - PDFBug.cleanup(); - } - - await Promise.all(promises); - }, - - async open(file, args) { - if (this.pdfLoadingTask) { - await this.close(); - } - - const workerParameters = _app_options.AppOptions.getAll(_app_options.OptionKind.WORKER); - - for (const key in workerParameters) { - _pdfjsLib.GlobalWorkerOptions[key] = workerParameters[key]; - } - - const parameters = Object.create(null); - - if (typeof file === "string") { - this.setTitleUsingUrl(file); - parameters.url = file; - } else if (file && "byteLength" in file) { - parameters.data = file; - } else if (file.url && file.originalUrl) { - this.setTitleUsingUrl(file.originalUrl); - parameters.url = file.url; - } - - const apiParameters = _app_options.AppOptions.getAll(_app_options.OptionKind.API); - - for (const key in apiParameters) { - let value = apiParameters[key]; - - if (key === "docBaseUrl" && !value) {} - - parameters[key] = value; - } - - if (args) { - for (const key in args) { - parameters[key] = args[key]; - } - } - - const loadingTask = (0, _pdfjsLib.getDocument)(parameters); - this.pdfLoadingTask = loadingTask; - - loadingTask.onPassword = (updateCallback, reason) => { - this.pdfLinkService.externalLinkEnabled = false; - this.passwordPrompt.setUpdateCallback(updateCallback, reason); - this.passwordPrompt.open(); - }; - - loadingTask.onProgress = ({ - loaded, - total - }) => { - this.progress(loaded / total); - }; - - loadingTask.onUnsupportedFeature = this.fallback.bind(this); - return loadingTask.promise.then(pdfDocument => { - this.load(pdfDocument); - }, exception => { - if (loadingTask !== this.pdfLoadingTask) { - return undefined; - } - - let key = "loading_error"; - - if (exception instanceof _pdfjsLib.InvalidPDFException) { - key = "invalid_file_error"; - } else if (exception instanceof _pdfjsLib.MissingPDFException) { - key = "missing_file_error"; - } else if (exception instanceof _pdfjsLib.UnexpectedResponseException) { - key = "unexpected_response_error"; - } - - return this.l10n.get(key).then(msg => { - this._documentError(msg, { - message: exception?.message - }); - - throw exception; - }); - }); - }, - - _ensureDownloadComplete() { - if (this.pdfDocument && this.downloadComplete) { - return; - } - - throw new Error("PDF document not downloaded."); - }, - - async download({ - sourceEventType = "download" - } = {}) { - const url = this.baseUrl, - filename = this._docFilename; - - try { - this._ensureDownloadComplete(); - - const data = await this.pdfDocument.getData(); - const blob = new Blob([data], { - type: "application/pdf" - }); - await this.downloadManager.download(blob, url, filename, sourceEventType); - } catch (reason) { - await this.downloadManager.downloadUrl(url, filename); - } - }, - - async save({ - sourceEventType = "download" - } = {}) { - if (this._saveInProgress) { - return; - } - - this._saveInProgress = true; - await this.pdfScriptingManager.dispatchWillSave(); - const url = this.baseUrl, - filename = this._docFilename; - - try { - this._ensureDownloadComplete(); - - const data = await this.pdfDocument.saveDocument(); - const blob = new Blob([data], { - type: "application/pdf" - }); - await this.downloadManager.download(blob, url, filename, sourceEventType); - } catch (reason) { - await this.download({ - sourceEventType - }); - } finally { - await this.pdfScriptingManager.dispatchDidSave(); - this._saveInProgress = false; - } - }, - - downloadOrSave(options) { - if (this.pdfDocument?.annotationStorage.size > 0) { - this.save(options); - } else { - this.download(options); - } - }, - - fallback(featureId) { - this.externalServices.reportTelemetry({ - type: "unsupportedFeature", - featureId - }); - - if (this._fellback) { - return; - } - - this._fellback = true; - this.externalServices.fallback({ - featureId, - url: this.baseUrl - }).then(download => { - if (!download) { - return; - } - - this.download({ - sourceEventType: "download" - }); - }); - }, - - _documentError(message, moreInfo = null) { - this._unblockDocumentLoadEvent(); - - this._otherError(message, moreInfo); - }, - - _otherError(message, moreInfo = null) { - const moreInfoText = [this.l10n.get("error_version_info", { - version: _pdfjsLib.version || "?", - build: _pdfjsLib.build || "?" - })]; - - if (moreInfo) { - moreInfoText.push(this.l10n.get("error_message", { - message: moreInfo.message - })); - - if (moreInfo.stack) { - moreInfoText.push(this.l10n.get("error_stack", { - stack: moreInfo.stack - })); - } else { - if (moreInfo.filename) { - moreInfoText.push(this.l10n.get("error_file", { - file: moreInfo.filename - })); - } - - if (moreInfo.lineNumber) { - moreInfoText.push(this.l10n.get("error_line", { - line: moreInfo.lineNumber - })); - } - } - } - - const errorWrapperConfig = this.appConfig.errorWrapper; - const errorWrapper = errorWrapperConfig.container; - errorWrapper.hidden = false; - const errorMessage = errorWrapperConfig.errorMessage; - errorMessage.textContent = message; - const closeButton = errorWrapperConfig.closeButton; - - closeButton.onclick = function () { - errorWrapper.hidden = true; - }; - - const errorMoreInfo = errorWrapperConfig.errorMoreInfo; - const moreInfoButton = errorWrapperConfig.moreInfoButton; - const lessInfoButton = errorWrapperConfig.lessInfoButton; - - moreInfoButton.onclick = function () { - errorMoreInfo.hidden = false; - moreInfoButton.hidden = true; - lessInfoButton.hidden = false; - errorMoreInfo.style.height = errorMoreInfo.scrollHeight + "px"; - }; - - lessInfoButton.onclick = function () { - errorMoreInfo.hidden = true; - moreInfoButton.hidden = false; - lessInfoButton.hidden = true; - }; - - moreInfoButton.oncontextmenu = _ui_utils.noContextMenuHandler; - lessInfoButton.oncontextmenu = _ui_utils.noContextMenuHandler; - closeButton.oncontextmenu = _ui_utils.noContextMenuHandler; - moreInfoButton.hidden = false; - lessInfoButton.hidden = true; - Promise.all(moreInfoText).then(parts => { - errorMoreInfo.value = parts.join("\n"); - }); - }, - - progress(level) { - if (this.downloadComplete) { - return; - } - - const percent = Math.round(level * 100); - - if (percent > this.loadingBar.percent || isNaN(percent)) { - this.loadingBar.percent = percent; - const disableAutoFetch = this.pdfDocument ? this.pdfDocument.loadingParams.disableAutoFetch : _app_options.AppOptions.get("disableAutoFetch"); - - if (disableAutoFetch && percent) { - if (this.disableAutoFetchLoadingBarTimeout) { - clearTimeout(this.disableAutoFetchLoadingBarTimeout); - this.disableAutoFetchLoadingBarTimeout = null; - } - - this.loadingBar.show(); - this.disableAutoFetchLoadingBarTimeout = setTimeout(() => { - this.loadingBar.hide(); - this.disableAutoFetchLoadingBarTimeout = null; - }, DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT); - } - } - }, - - load(pdfDocument) { - this.pdfDocument = pdfDocument; - pdfDocument.getDownloadInfo().then(({ - length - }) => { - this._contentLength = length; - this.downloadComplete = true; - this.loadingBar.hide(); - firstPagePromise.then(() => { - this.eventBus.dispatch("documentloaded", { - source: this - }); - }); - }); - const pageLayoutPromise = pdfDocument.getPageLayout().catch(function () {}); - const pageModePromise = pdfDocument.getPageMode().catch(function () {}); - const openActionPromise = pdfDocument.getOpenAction().catch(function () {}); - this.toolbar.setPagesCount(pdfDocument.numPages, false); - this.secondaryToolbar.setPagesCount(pdfDocument.numPages); - let baseDocumentUrl; - baseDocumentUrl = null; - this.pdfLinkService.setDocument(pdfDocument, baseDocumentUrl); - this.pdfDocumentProperties.setDocument(pdfDocument, this.url); - const pdfViewer = this.pdfViewer; - pdfViewer.setDocument(pdfDocument); - const { - firstPagePromise, - onePageRendered, - pagesPromise - } = pdfViewer; - const pdfThumbnailViewer = this.pdfThumbnailViewer; - pdfThumbnailViewer.setDocument(pdfDocument); - const storedPromise = (this.store = new _view_history.ViewHistory(pdfDocument.fingerprints[0])).getMultiple({ - page: null, - zoom: _ui_utils.DEFAULT_SCALE_VALUE, - scrollLeft: "0", - scrollTop: "0", - rotation: null, - sidebarView: _ui_utils.SidebarView.UNKNOWN, - scrollMode: _ui_utils.ScrollMode.UNKNOWN, - spreadMode: _ui_utils.SpreadMode.UNKNOWN - }).catch(() => { - return Object.create(null); - }); - firstPagePromise.then(pdfPage => { - this.loadingBar.setWidth(this.appConfig.viewerContainer); - - this._initializeAnnotationStorageCallbacks(pdfDocument); - - Promise.all([_ui_utils.animationStarted, storedPromise, pageLayoutPromise, pageModePromise, openActionPromise]).then(async ([timeStamp, stored, pageLayout, pageMode, openAction]) => { - const viewOnLoad = _app_options.AppOptions.get("viewOnLoad"); - - this._initializePdfHistory({ - fingerprint: pdfDocument.fingerprints[0], - viewOnLoad, - initialDest: openAction?.dest - }); - - const initialBookmark = this.initialBookmark; - - const zoom = _app_options.AppOptions.get("defaultZoomValue"); - - let hash = zoom ? `zoom=${zoom}` : null; - let rotation = null; - - let sidebarView = _app_options.AppOptions.get("sidebarViewOnLoad"); - - let scrollMode = _app_options.AppOptions.get("scrollModeOnLoad"); - - let spreadMode = _app_options.AppOptions.get("spreadModeOnLoad"); - - if (stored.page && viewOnLoad !== ViewOnLoad.INITIAL) { - hash = `page=${stored.page}&zoom=${zoom || stored.zoom},` + `${stored.scrollLeft},${stored.scrollTop}`; - rotation = parseInt(stored.rotation, 10); - - if (sidebarView === _ui_utils.SidebarView.UNKNOWN) { - sidebarView = stored.sidebarView | 0; - } - - if (scrollMode === _ui_utils.ScrollMode.UNKNOWN) { - scrollMode = stored.scrollMode | 0; - } - - if (spreadMode === _ui_utils.SpreadMode.UNKNOWN) { - spreadMode = stored.spreadMode | 0; - } - } - - if (pageMode && sidebarView === _ui_utils.SidebarView.UNKNOWN) { - sidebarView = (0, _ui_utils.apiPageModeToSidebarView)(pageMode); - } - - if (pageLayout && spreadMode === _ui_utils.SpreadMode.UNKNOWN) { - spreadMode = (0, _ui_utils.apiPageLayoutToSpreadMode)(pageLayout); - } - - this.setInitialView(hash, { - rotation, - sidebarView, - scrollMode, - spreadMode - }); - this.eventBus.dispatch("documentinit", { - source: this - }); - - if (!this.isViewerEmbedded) { - pdfViewer.focus(); - } - - this._initializePermissions(pdfDocument); - - await Promise.race([pagesPromise, new Promise(resolve => { - setTimeout(resolve, FORCE_PAGES_LOADED_TIMEOUT); - })]); - - if (!initialBookmark && !hash) { - return; - } - - if (pdfViewer.hasEqualPageSizes) { - return; - } - - this.initialBookmark = initialBookmark; - pdfViewer.currentScaleValue = pdfViewer.currentScaleValue; - this.setInitialView(hash); - }).catch(() => { - this.setInitialView(); - }).then(function () { - pdfViewer.update(); - }); - }); - pagesPromise.then(() => { - this._unblockDocumentLoadEvent(); - - this._initializeAutoPrint(pdfDocument, openActionPromise); - }); - onePageRendered.then(() => { - pdfDocument.getOutline().then(outline => { - if (pdfDocument !== this.pdfDocument) { - return; - } - - this.pdfOutlineViewer.render({ - outline, - pdfDocument - }); - }); - pdfDocument.getAttachments().then(attachments => { - if (pdfDocument !== this.pdfDocument) { - return; - } - - this.pdfAttachmentViewer.render({ - attachments - }); - }); - pdfViewer.optionalContentConfigPromise.then(optionalContentConfig => { - if (pdfDocument !== this.pdfDocument) { - return; - } - - this.pdfLayerViewer.render({ - optionalContentConfig, - pdfDocument - }); - }); - - if ("requestIdleCallback" in window) { - const callback = window.requestIdleCallback(() => { - this._collectTelemetry(pdfDocument); - - this._idleCallbacks.delete(callback); - }, { - timeout: 1000 - }); - - this._idleCallbacks.add(callback); - } - }); - - this._initializePageLabels(pdfDocument); - - this._initializeMetadata(pdfDocument); - }, - - async _scriptingDocProperties(pdfDocument) { - if (!this.documentInfo) { - await new Promise(resolve => { - this.eventBus._on("metadataloaded", resolve, { - once: true - }); - }); - - if (pdfDocument !== this.pdfDocument) { - return null; - } - } - - if (!this._contentLength) { - await new Promise(resolve => { - this.eventBus._on("documentloaded", resolve, { - once: true - }); - }); - - if (pdfDocument !== this.pdfDocument) { - return null; - } - } - - return { ...this.documentInfo, - baseURL: this.baseUrl, - filesize: this._contentLength, - filename: this._docFilename, - metadata: this.metadata?.getRaw(), - authors: this.metadata?.get("dc:creator"), - numPages: this.pagesCount, - URL: this.url - }; - }, - - async _collectTelemetry(pdfDocument) { - const markInfo = await this.pdfDocument.getMarkInfo(); - - if (pdfDocument !== this.pdfDocument) { - return; - } - - const tagged = markInfo?.Marked || false; - this.externalServices.reportTelemetry({ - type: "tagged", - tagged - }); - }, - - async _initializeAutoPrint(pdfDocument, openActionPromise) { - const [openAction, javaScript] = await Promise.all([openActionPromise, !this.pdfViewer.enableScripting ? pdfDocument.getJavaScript() : null]); - - if (pdfDocument !== this.pdfDocument) { - return; - } - - let triggerAutoPrint = false; - - if (openAction?.action === "Print") { - triggerAutoPrint = true; - } - - if (javaScript) { - javaScript.some(js => { - if (!js) { - return false; - } - - console.warn("Warning: JavaScript support is not enabled"); - this.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.javaScript); - return true; - }); - - if (!triggerAutoPrint) { - for (const js of javaScript) { - if (js && _ui_utils.AutoPrintRegExp.test(js)) { - triggerAutoPrint = true; - break; - } - } - } - } - - if (triggerAutoPrint) { - this.triggerPrinting(); - } - }, - - async _initializeMetadata(pdfDocument) { - const { - info, - metadata, - contentDispositionFilename, - contentLength - } = await pdfDocument.getMetadata(); - - if (pdfDocument !== this.pdfDocument) { - return; - } - - this.documentInfo = info; - this.metadata = metadata; - this._contentDispositionFilename ?? (this._contentDispositionFilename = contentDispositionFilename); - this._contentLength ?? (this._contentLength = contentLength); - console.log(`PDF ${pdfDocument.fingerprints[0]} [${info.PDFFormatVersion} ` + `${(info.Producer || "-").trim()} / ${(info.Creator || "-").trim()}] ` + `(PDF.js: ${_pdfjsLib.version || "-"})`); - let pdfTitle = info?.Title; - const metadataTitle = metadata?.get("dc:title"); - - if (metadataTitle) { - if (metadataTitle !== "Untitled" && !/[\uFFF0-\uFFFF]/g.test(metadataTitle)) { - pdfTitle = metadataTitle; - } - } - - if (pdfTitle) { - this.setTitle(`${pdfTitle} - ${contentDispositionFilename || document.title}`); - } else if (contentDispositionFilename) { - this.setTitle(contentDispositionFilename); - } - - if (info.IsXFAPresent && !info.IsAcroFormPresent && !pdfDocument.isPureXfa) { - console.warn("Warning: XFA support is not enabled"); - this.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.forms); - } else if ((info.IsAcroFormPresent || info.IsXFAPresent) && !this.pdfViewer.renderInteractiveForms) { - console.warn("Warning: Interactive form support is not enabled"); - this.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.forms); - } - - if (info.IsSignaturesPresent) { - console.warn("Warning: Digital signatures validation is not supported"); - this.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.signatures); - } - - let versionId = "other"; - - if (KNOWN_VERSIONS.includes(info.PDFFormatVersion)) { - versionId = `v${info.PDFFormatVersion.replace(".", "_")}`; - } - - let generatorId = "other"; - - if (info.Producer) { - const producer = info.Producer.toLowerCase(); - KNOWN_GENERATORS.some(function (generator) { - if (!producer.includes(generator)) { - return false; - } - - generatorId = generator.replace(/[ .-]/g, "_"); - return true; - }); - } - - let formType = null; - - if (info.IsXFAPresent) { - formType = "xfa"; - } else if (info.IsAcroFormPresent) { - formType = "acroform"; - } - - this.externalServices.reportTelemetry({ - type: "documentInfo", - version: versionId, - generator: generatorId, - formType - }); - this.eventBus.dispatch("metadataloaded", { - source: this - }); - }, - - async _initializePageLabels(pdfDocument) { - const labels = await pdfDocument.getPageLabels(); - - if (pdfDocument !== this.pdfDocument) { - return; - } - - if (!labels || _app_options.AppOptions.get("disablePageLabels")) { - return; - } - - const numLabels = labels.length; - - if (numLabels !== this.pagesCount) { - console.error("The number of Page Labels does not match the number of pages in the document."); - return; - } - - let i = 0; - - while (i < numLabels && labels[i] === (i + 1).toString()) { - i++; - } - - if (i === numLabels) { - return; - } - - const { - pdfViewer, - pdfThumbnailViewer, - toolbar - } = this; - pdfViewer.setPageLabels(labels); - pdfThumbnailViewer.setPageLabels(labels); - toolbar.setPagesCount(numLabels, true); - toolbar.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel); - }, - - _initializePdfHistory({ - fingerprint, - viewOnLoad, - initialDest = null - }) { - if (this.isViewerEmbedded || _app_options.AppOptions.get("disableHistory")) { - return; - } - - this.pdfHistory.initialize({ - fingerprint, - resetHistory: viewOnLoad === ViewOnLoad.INITIAL, - updateUrl: _app_options.AppOptions.get("historyUpdateUrl") - }); - - if (this.pdfHistory.initialBookmark) { - this.initialBookmark = this.pdfHistory.initialBookmark; - this.initialRotation = this.pdfHistory.initialRotation; - } - - if (initialDest && !this.initialBookmark && viewOnLoad === ViewOnLoad.UNKNOWN) { - this.initialBookmark = JSON.stringify(initialDest); - this.pdfHistory.push({ - explicitDest: initialDest, - pageNumber: null - }); - } - }, - - async _initializePermissions(pdfDocument) { - const permissions = await pdfDocument.getPermissions(); - - if (pdfDocument !== this.pdfDocument) { - return; - } - - if (!permissions || !_app_options.AppOptions.get("enablePermissions")) { - return; - } - - if (!permissions.includes(_pdfjsLib.PermissionFlag.COPY)) { - this.appConfig.viewerContainer.classList.add(ENABLE_PERMISSIONS_CLASS); - } - }, - - _initializeAnnotationStorageCallbacks(pdfDocument) { - if (pdfDocument !== this.pdfDocument) { - return; - } - - const { - annotationStorage - } = pdfDocument; - - annotationStorage.onSetModified = () => { - window.addEventListener("beforeunload", beforeUnload); - this._annotationStorageModified = true; - }; - - annotationStorage.onResetModified = () => { - window.removeEventListener("beforeunload", beforeUnload); - delete this._annotationStorageModified; - }; - }, - - setInitialView(storedHash, { - rotation, - sidebarView, - scrollMode, - spreadMode - } = {}) { - const setRotation = angle => { - if ((0, _ui_utils.isValidRotation)(angle)) { - this.pdfViewer.pagesRotation = angle; - } - }; - - const setViewerModes = (scroll, spread) => { - if ((0, _ui_utils.isValidScrollMode)(scroll)) { - this.pdfViewer.scrollMode = scroll; - } - - if ((0, _ui_utils.isValidSpreadMode)(spread)) { - this.pdfViewer.spreadMode = spread; - } - }; - - this.isInitialViewSet = true; - this.pdfSidebar.setInitialView(sidebarView); - setViewerModes(scrollMode, spreadMode); - - if (this.initialBookmark) { - setRotation(this.initialRotation); - delete this.initialRotation; - this.pdfLinkService.setHash(this.initialBookmark); - this.initialBookmark = null; - } else if (storedHash) { - setRotation(rotation); - this.pdfLinkService.setHash(storedHash); - } - - this.toolbar.setPageNumber(this.pdfViewer.currentPageNumber, this.pdfViewer.currentPageLabel); - this.secondaryToolbar.setPageNumber(this.pdfViewer.currentPageNumber); - - if (!this.pdfViewer.currentScaleValue) { - this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; - } - }, - - _cleanup() { - if (!this.pdfDocument) { - return; - } - - this.pdfViewer.cleanup(); - this.pdfThumbnailViewer.cleanup(); - this.pdfDocument.cleanup(this.pdfViewer.renderer === _ui_utils.RendererType.SVG); - }, - - forceRendering() { - this.pdfRenderingQueue.printing = !!this.printService; - this.pdfRenderingQueue.isThumbnailViewEnabled = this.pdfSidebar.isThumbnailViewVisible; - this.pdfRenderingQueue.renderHighestPriority(); - }, - - beforePrint() { - this.pdfScriptingManager.dispatchWillPrint(); - - if (this.printService) { - return; - } - - if (!this.supportsPrinting) { - this.l10n.get("printing_not_supported").then(msg => { - this._otherError(msg); - }); - return; - } - - if (!this.pdfViewer.pageViewsReady) { - this.l10n.get("printing_not_ready").then(msg => { - window.alert(msg); - }); - return; - } - - const pagesOverview = this.pdfViewer.getPagesOverview(); - const printContainer = this.appConfig.printContainer; - - const printResolution = _app_options.AppOptions.get("printResolution"); - - const optionalContentConfigPromise = this.pdfViewer.optionalContentConfigPromise; - const printService = PDFPrintServiceFactory.instance.createPrintService(this.pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise, this.l10n); - this.printService = printService; - this.forceRendering(); - printService.layout(); - this.externalServices.reportTelemetry({ - type: "print" - }); - }, - - afterPrint() { - this.pdfScriptingManager.dispatchDidPrint(); - - if (this.printService) { - this.printService.destroy(); - this.printService = null; - - if (this.pdfDocument) { - this.pdfDocument.annotationStorage.resetModified(); - } - } - - this.forceRendering(); - }, - - rotatePages(delta) { - this.pdfViewer.pagesRotation += delta; - }, - - requestPresentationMode() { - if (!this.pdfPresentationMode) { - return; - } - - this.pdfPresentationMode.request(); - }, - - triggerPrinting() { - if (!this.supportsPrinting) { - return; - } - - window.print(); - }, - - bindEvents() { - const { - eventBus, - _boundEvents - } = this; - _boundEvents.beforePrint = this.beforePrint.bind(this); - _boundEvents.afterPrint = this.afterPrint.bind(this); - - eventBus._on("resize", webViewerResize); - - eventBus._on("hashchange", webViewerHashchange); - - eventBus._on("beforeprint", _boundEvents.beforePrint); - - eventBus._on("afterprint", _boundEvents.afterPrint); - - eventBus._on("pagerendered", webViewerPageRendered); - - eventBus._on("updateviewarea", webViewerUpdateViewarea); - - eventBus._on("pagechanging", webViewerPageChanging); - - eventBus._on("scalechanging", webViewerScaleChanging); - - eventBus._on("rotationchanging", webViewerRotationChanging); - - eventBus._on("sidebarviewchanged", webViewerSidebarViewChanged); - - eventBus._on("pagemode", webViewerPageMode); - - eventBus._on("namedaction", webViewerNamedAction); - - eventBus._on("presentationmodechanged", webViewerPresentationModeChanged); - - eventBus._on("presentationmode", webViewerPresentationMode); - - eventBus._on("print", webViewerPrint); - - eventBus._on("download", webViewerDownload); - - eventBus._on("save", webViewerSave); - - eventBus._on("firstpage", webViewerFirstPage); - - eventBus._on("lastpage", webViewerLastPage); - - eventBus._on("nextpage", webViewerNextPage); - - eventBus._on("previouspage", webViewerPreviousPage); - - eventBus._on("zoomin", webViewerZoomIn); - - eventBus._on("zoomout", webViewerZoomOut); - - eventBus._on("zoomreset", webViewerZoomReset); - - eventBus._on("pagenumberchanged", webViewerPageNumberChanged); - - eventBus._on("scalechanged", webViewerScaleChanged); - - eventBus._on("rotatecw", webViewerRotateCw); - - eventBus._on("rotateccw", webViewerRotateCcw); - - eventBus._on("optionalcontentconfig", webViewerOptionalContentConfig); - - eventBus._on("switchscrollmode", webViewerSwitchScrollMode); - - eventBus._on("scrollmodechanged", webViewerScrollModeChanged); - - eventBus._on("switchspreadmode", webViewerSwitchSpreadMode); - - eventBus._on("spreadmodechanged", webViewerSpreadModeChanged); - - eventBus._on("documentproperties", webViewerDocumentProperties); - - eventBus._on("find", webViewerFind); - - eventBus._on("findfromurlhash", webViewerFindFromUrlHash); - - eventBus._on("updatefindmatchescount", webViewerUpdateFindMatchesCount); - - eventBus._on("updatefindcontrolstate", webViewerUpdateFindControlState); - - if (_app_options.AppOptions.get("pdfBug")) { - _boundEvents.reportPageStatsPDFBug = reportPageStatsPDFBug; - - eventBus._on("pagerendered", _boundEvents.reportPageStatsPDFBug); - - eventBus._on("pagechanging", _boundEvents.reportPageStatsPDFBug); - } - - eventBus._on("fileinputchange", webViewerFileInputChange); - - eventBus._on("openfile", webViewerOpenFile); - }, - - bindWindowEvents() { - const { - eventBus, - _boundEvents - } = this; - - _boundEvents.windowResize = () => { - eventBus.dispatch("resize", { - source: window - }); - }; - - _boundEvents.windowHashChange = () => { - eventBus.dispatch("hashchange", { - source: window, - hash: document.location.hash.substring(1) - }); - }; - - _boundEvents.windowBeforePrint = () => { - eventBus.dispatch("beforeprint", { - source: window - }); - }; - - _boundEvents.windowAfterPrint = () => { - eventBus.dispatch("afterprint", { - source: window - }); - }; - - _boundEvents.windowUpdateFromSandbox = event => { - eventBus.dispatch("updatefromsandbox", { - source: window, - detail: event.detail - }); - }; - - window.addEventListener("visibilitychange", webViewerVisibilityChange); - window.addEventListener("wheel", webViewerWheel, { - passive: false - }); - window.addEventListener("touchstart", webViewerTouchStart, { - passive: false - }); - window.addEventListener("click", webViewerClick); - window.addEventListener("keydown", webViewerKeyDown); - window.addEventListener("resize", _boundEvents.windowResize); - window.addEventListener("hashchange", _boundEvents.windowHashChange); - window.addEventListener("beforeprint", _boundEvents.windowBeforePrint); - window.addEventListener("afterprint", _boundEvents.windowAfterPrint); - window.addEventListener("updatefromsandbox", _boundEvents.windowUpdateFromSandbox); - }, - - unbindEvents() { - const { - eventBus, - _boundEvents - } = this; - - eventBus._off("resize", webViewerResize); - - eventBus._off("hashchange", webViewerHashchange); - - eventBus._off("beforeprint", _boundEvents.beforePrint); - - eventBus._off("afterprint", _boundEvents.afterPrint); - - eventBus._off("pagerendered", webViewerPageRendered); - - eventBus._off("updateviewarea", webViewerUpdateViewarea); - - eventBus._off("pagechanging", webViewerPageChanging); - - eventBus._off("scalechanging", webViewerScaleChanging); - - eventBus._off("rotationchanging", webViewerRotationChanging); - - eventBus._off("sidebarviewchanged", webViewerSidebarViewChanged); - - eventBus._off("pagemode", webViewerPageMode); - - eventBus._off("namedaction", webViewerNamedAction); - - eventBus._off("presentationmodechanged", webViewerPresentationModeChanged); - - eventBus._off("presentationmode", webViewerPresentationMode); - - eventBus._off("print", webViewerPrint); - - eventBus._off("download", webViewerDownload); - - eventBus._off("save", webViewerSave); - - eventBus._off("firstpage", webViewerFirstPage); - - eventBus._off("lastpage", webViewerLastPage); - - eventBus._off("nextpage", webViewerNextPage); - - eventBus._off("previouspage", webViewerPreviousPage); - - eventBus._off("zoomin", webViewerZoomIn); - - eventBus._off("zoomout", webViewerZoomOut); - - eventBus._off("zoomreset", webViewerZoomReset); - - eventBus._off("pagenumberchanged", webViewerPageNumberChanged); - - eventBus._off("scalechanged", webViewerScaleChanged); - - eventBus._off("rotatecw", webViewerRotateCw); - - eventBus._off("rotateccw", webViewerRotateCcw); - - eventBus._off("optionalcontentconfig", webViewerOptionalContentConfig); - - eventBus._off("switchscrollmode", webViewerSwitchScrollMode); - - eventBus._off("scrollmodechanged", webViewerScrollModeChanged); - - eventBus._off("switchspreadmode", webViewerSwitchSpreadMode); - - eventBus._off("spreadmodechanged", webViewerSpreadModeChanged); - - eventBus._off("documentproperties", webViewerDocumentProperties); - - eventBus._off("find", webViewerFind); - - eventBus._off("findfromurlhash", webViewerFindFromUrlHash); - - eventBus._off("updatefindmatchescount", webViewerUpdateFindMatchesCount); - - eventBus._off("updatefindcontrolstate", webViewerUpdateFindControlState); - - if (_boundEvents.reportPageStatsPDFBug) { - eventBus._off("pagerendered", _boundEvents.reportPageStatsPDFBug); - - eventBus._off("pagechanging", _boundEvents.reportPageStatsPDFBug); - - _boundEvents.reportPageStatsPDFBug = null; - } - - eventBus._off("fileinputchange", webViewerFileInputChange); - - eventBus._off("openfile", webViewerOpenFile); - - _boundEvents.beforePrint = null; - _boundEvents.afterPrint = null; - }, - - unbindWindowEvents() { - const { - _boundEvents - } = this; - window.removeEventListener("visibilitychange", webViewerVisibilityChange); - window.removeEventListener("wheel", webViewerWheel, { - passive: false - }); - window.removeEventListener("touchstart", webViewerTouchStart, { - passive: false - }); - window.removeEventListener("click", webViewerClick); - window.removeEventListener("keydown", webViewerKeyDown); - window.removeEventListener("resize", _boundEvents.windowResize); - window.removeEventListener("hashchange", _boundEvents.windowHashChange); - window.removeEventListener("beforeprint", _boundEvents.windowBeforePrint); - window.removeEventListener("afterprint", _boundEvents.windowAfterPrint); - window.removeEventListener("updatefromsandbox", _boundEvents.windowUpdateFromSandbox); - _boundEvents.windowResize = null; - _boundEvents.windowHashChange = null; - _boundEvents.windowBeforePrint = null; - _boundEvents.windowAfterPrint = null; - _boundEvents.windowUpdateFromSandbox = null; - }, - - accumulateWheelTicks(ticks) { - if (this._wheelUnusedTicks > 0 && ticks < 0 || this._wheelUnusedTicks < 0 && ticks > 0) { - this._wheelUnusedTicks = 0; - } - - this._wheelUnusedTicks += ticks; - const wholeTicks = Math.sign(this._wheelUnusedTicks) * Math.floor(Math.abs(this._wheelUnusedTicks)); - this._wheelUnusedTicks -= wholeTicks; - return wholeTicks; - }, - - _unblockDocumentLoadEvent() { - if (document.blockUnblockOnload) { - document.blockUnblockOnload(false); - } - - this._unblockDocumentLoadEvent = () => {}; - }, - - get scriptingReady() { - return this.pdfScriptingManager.ready; - } - -}; -exports.PDFViewerApplication = PDFViewerApplication; -let validateFileURL; -{ - const HOSTED_VIEWER_ORIGINS = ["null", "http://mozilla.github.io", "https://mozilla.github.io"]; - - validateFileURL = function (file) { - if (file === undefined) { - return; - } - - try { - const viewerOrigin = new URL(window.location.href).origin || "null"; - - if (HOSTED_VIEWER_ORIGINS.includes(viewerOrigin)) { - return; - } - - const { - origin, - protocol - } = new URL(file, window.location.href); - - if (origin !== viewerOrigin && protocol !== "blob:") { - throw new Error("file origin does not match viewer's"); - } - } catch (ex) { - PDFViewerApplication.l10n.get("loading_error").then(msg => { - PDFViewerApplication._documentError(msg, { - message: ex?.message - }); - }); - throw ex; - } - }; -} - -async function loadFakeWorker() { - if (!_pdfjsLib.GlobalWorkerOptions.workerSrc) { - _pdfjsLib.GlobalWorkerOptions.workerSrc = _app_options.AppOptions.get("workerSrc"); - } - - return (0, _pdfjsLib.loadScript)(_pdfjsLib.PDFWorker.getWorkerSrc()); -} - -function loadAndEnablePDFBug(enabledTabs) { - const appConfig = PDFViewerApplication.appConfig; - return (0, _pdfjsLib.loadScript)(appConfig.debuggerScriptPath).then(function () { - PDFBug.enable(enabledTabs); - PDFBug.init({ - OPS: _pdfjsLib.OPS - }, appConfig.mainContainer); - }); -} - -function reportPageStatsPDFBug({ - pageNumber -}) { - if (typeof Stats === "undefined" || !Stats.enabled) { - return; - } - - const pageView = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1); - const pageStats = pageView?.pdfPage?.stats; - - if (!pageStats) { - return; - } - - Stats.add(pageNumber, pageStats); -} - -function webViewerInitialized() { - const appConfig = PDFViewerApplication.appConfig; - let file; - /* - const queryString = document.location.search.substring(1); - const params = (0, _ui_utils.parseQueryString)(queryString); - file = "file" in params ? params.file : _app_options.AppOptions.get("defaultUrl"); - validateFileURL(file); - */ - // the above lines were commented out as they are not needed in SEAFILE - file = SEAFILE_FILE_URL; - - const fileInput = document.createElement("input"); - fileInput.id = appConfig.openFileInputName; - fileInput.className = "fileInput"; - fileInput.setAttribute("type", "file"); - fileInput.oncontextmenu = _ui_utils.noContextMenuHandler; - document.body.appendChild(fileInput); - - if (!window.File || !window.FileReader || !window.FileList || !window.Blob) { - appConfig.toolbar.openFile.hidden = true; - appConfig.secondaryToolbar.openFileButton.hidden = true; - } else { - fileInput.value = null; - } - - fileInput.addEventListener("change", function (evt) { - const files = evt.target.files; - - if (!files || files.length === 0) { - return; - } - - PDFViewerApplication.eventBus.dispatch("fileinputchange", { - source: this, - fileInput: evt.target - }); - }); - appConfig.mainContainer.addEventListener("dragover", function (evt) { - evt.preventDefault(); - evt.dataTransfer.dropEffect = "move"; - }); - appConfig.mainContainer.addEventListener("drop", function (evt) { - evt.preventDefault(); - const files = evt.dataTransfer.files; - - if (!files || files.length === 0) { - return; - } - - PDFViewerApplication.eventBus.dispatch("fileinputchange", { - source: this, - fileInput: evt.dataTransfer - }); - }); - - if (!PDFViewerApplication.supportsDocumentFonts) { - _app_options.AppOptions.set("disableFontFace", true); - - PDFViewerApplication.l10n.get("web_fonts_disabled").then(msg => { - console.warn(msg); - }); - } - - if (!PDFViewerApplication.supportsPrinting) { - appConfig.toolbar.print.classList.add("hidden"); - appConfig.secondaryToolbar.printButton.classList.add("hidden"); - } - - if (!PDFViewerApplication.supportsFullscreen) { - appConfig.toolbar.presentationModeButton.classList.add("hidden"); - appConfig.secondaryToolbar.presentationModeButton.classList.add("hidden"); - } - - if (PDFViewerApplication.supportsIntegratedFind) { - appConfig.toolbar.viewFind.classList.add("hidden"); - } - - appConfig.mainContainer.addEventListener("transitionend", function (evt) { - if (evt.target === this) { - PDFViewerApplication.eventBus.dispatch("resize", { - source: this - }); - } - }, true); - - try { - webViewerOpenFileViaURL(file); - } catch (reason) { - PDFViewerApplication.l10n.get("loading_error").then(msg => { - PDFViewerApplication._documentError(msg, reason); - }); - } -} - -function webViewerOpenFileViaURL(file) { - if (file) { - PDFViewerApplication.open(file); - } -} - -function webViewerResetPermissions() { - const { - appConfig - } = PDFViewerApplication; - - if (!appConfig) { - return; - } - - appConfig.viewerContainer.classList.remove(ENABLE_PERMISSIONS_CLASS); -} - -function webViewerPageRendered({ - pageNumber, - timestamp, - error -}) { - if (pageNumber === PDFViewerApplication.page) { - PDFViewerApplication.toolbar.updateLoadingIndicatorState(false); - } - - if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) { - const pageView = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1); - const thumbnailView = PDFViewerApplication.pdfThumbnailViewer.getThumbnail(pageNumber - 1); - - if (pageView && thumbnailView) { - thumbnailView.setImage(pageView); - } - } - - if (error) { - PDFViewerApplication.l10n.get("rendering_error").then(msg => { - PDFViewerApplication._otherError(msg, error); - }); - } - - PDFViewerApplication.externalServices.reportTelemetry({ - type: "pageInfo", - timestamp - }); - PDFViewerApplication.pdfDocument.getStats().then(function (stats) { - PDFViewerApplication.externalServices.reportTelemetry({ - type: "documentStats", - stats - }); - }); -} - -function webViewerPageMode({ - mode -}) { - let view; - - switch (mode) { - case "thumbs": - view = _ui_utils.SidebarView.THUMBS; - break; - - case "bookmarks": - case "outline": - view = _ui_utils.SidebarView.OUTLINE; - break; - - case "attachments": - view = _ui_utils.SidebarView.ATTACHMENTS; - break; - - case "layers": - view = _ui_utils.SidebarView.LAYERS; - break; - - case "none": - view = _ui_utils.SidebarView.NONE; - break; - - default: - console.error('Invalid "pagemode" hash parameter: ' + mode); - return; - } - - PDFViewerApplication.pdfSidebar.switchView(view, true); -} - -function webViewerNamedAction(evt) { - switch (evt.action) { - case "GoToPage": - PDFViewerApplication.appConfig.toolbar.pageNumber.select(); - break; - - case "Find": - if (!PDFViewerApplication.supportsIntegratedFind) { - PDFViewerApplication.findBar.toggle(); - } - - break; - - case "Print": - PDFViewerApplication.triggerPrinting(); - break; - - case "SaveAs": - webViewerSave(); - break; - } -} - -function webViewerPresentationModeChanged(evt) { - PDFViewerApplication.pdfViewer.presentationModeState = evt.state; -} - -function webViewerSidebarViewChanged(evt) { - PDFViewerApplication.pdfRenderingQueue.isThumbnailViewEnabled = PDFViewerApplication.pdfSidebar.isThumbnailViewVisible; - const store = PDFViewerApplication.store; - - if (store && PDFViewerApplication.isInitialViewSet) { - store.set("sidebarView", evt.view).catch(function () {}); - } -} - -function webViewerUpdateViewarea(evt) { - const location = evt.location, - store = PDFViewerApplication.store; - - if (store && PDFViewerApplication.isInitialViewSet) { - store.setMultiple({ - page: location.pageNumber, - zoom: location.scale, - scrollLeft: location.left, - scrollTop: location.top, - rotation: location.rotation - }).catch(function () {}); - } - - const href = PDFViewerApplication.pdfLinkService.getAnchorUrl(location.pdfOpenParams); - PDFViewerApplication.appConfig.toolbar.viewBookmark.href = href; - PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href = href; - const currentPage = PDFViewerApplication.pdfViewer.getPageView(PDFViewerApplication.page - 1); - const loading = currentPage?.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED; - PDFViewerApplication.toolbar.updateLoadingIndicatorState(loading); -} - -function webViewerScrollModeChanged(evt) { - const store = PDFViewerApplication.store; - - if (store && PDFViewerApplication.isInitialViewSet) { - store.set("scrollMode", evt.mode).catch(function () {}); - } -} - -function webViewerSpreadModeChanged(evt) { - const store = PDFViewerApplication.store; - - if (store && PDFViewerApplication.isInitialViewSet) { - store.set("spreadMode", evt.mode).catch(function () {}); - } -} - -function webViewerResize() { - const { - pdfDocument, - pdfViewer - } = PDFViewerApplication; - - if (!pdfDocument) { - return; - } - - const currentScaleValue = pdfViewer.currentScaleValue; - - if (currentScaleValue === "auto" || currentScaleValue === "page-fit" || currentScaleValue === "page-width") { - pdfViewer.currentScaleValue = currentScaleValue; - } - - pdfViewer.update(); -} - -function webViewerHashchange(evt) { - const hash = evt.hash; - - if (!hash) { - return; - } - - if (!PDFViewerApplication.isInitialViewSet) { - PDFViewerApplication.initialBookmark = hash; - } else if (!PDFViewerApplication.pdfHistory.popStateInProgress) { - PDFViewerApplication.pdfLinkService.setHash(hash); - } -} - -let webViewerFileInputChange, webViewerOpenFile; -{ - webViewerFileInputChange = function (evt) { - if (PDFViewerApplication.pdfViewer?.isInPresentationMode) { - return; - } - - const file = evt.fileInput.files[0]; - - if (!_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL) { - let url = URL.createObjectURL(file); - - if (file.name) { - url = { - url, - originalUrl: file.name - }; - } - - PDFViewerApplication.open(url); - } else { - PDFViewerApplication.setTitleUsingUrl(file.name); - const fileReader = new FileReader(); - - fileReader.onload = function webViewerChangeFileReaderOnload(event) { - const buffer = event.target.result; - PDFViewerApplication.open(new Uint8Array(buffer)); - }; - - fileReader.readAsArrayBuffer(file); - } - - const appConfig = PDFViewerApplication.appConfig; - appConfig.toolbar.viewBookmark.hidden = true; - appConfig.secondaryToolbar.viewBookmarkButton.hidden = true; - appConfig.toolbar.download.hidden = true; - appConfig.secondaryToolbar.downloadButton.hidden = true; - }; - - webViewerOpenFile = function (evt) { - const openFileInputName = PDFViewerApplication.appConfig.openFileInputName; - document.getElementById(openFileInputName).click(); - }; -} - -function webViewerPresentationMode() { - PDFViewerApplication.requestPresentationMode(); -} - -function webViewerPrint() { - PDFViewerApplication.triggerPrinting(); -} - -function webViewerDownload() { - PDFViewerApplication.downloadOrSave({ - sourceEventType: "download" - }); -} - -function webViewerSave() { - PDFViewerApplication.downloadOrSave({ - sourceEventType: "save" - }); -} - -function webViewerFirstPage() { - if (PDFViewerApplication.pdfDocument) { - PDFViewerApplication.page = 1; - } -} - -function webViewerLastPage() { - if (PDFViewerApplication.pdfDocument) { - PDFViewerApplication.page = PDFViewerApplication.pagesCount; - } -} - -function webViewerNextPage() { - PDFViewerApplication.pdfViewer.nextPage(); -} - -function webViewerPreviousPage() { - PDFViewerApplication.pdfViewer.previousPage(); -} - -function webViewerZoomIn() { - PDFViewerApplication.zoomIn(); -} - -function webViewerZoomOut() { - PDFViewerApplication.zoomOut(); -} - -function webViewerZoomReset() { - PDFViewerApplication.zoomReset(); -} - -function webViewerPageNumberChanged(evt) { - const pdfViewer = PDFViewerApplication.pdfViewer; - - if (evt.value !== "") { - PDFViewerApplication.pdfLinkService.goToPage(evt.value); - } - - if (evt.value !== pdfViewer.currentPageNumber.toString() && evt.value !== pdfViewer.currentPageLabel) { - PDFViewerApplication.toolbar.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel); - } -} - -function webViewerScaleChanged(evt) { - PDFViewerApplication.pdfViewer.currentScaleValue = evt.value; -} - -function webViewerRotateCw() { - PDFViewerApplication.rotatePages(90); -} - -function webViewerRotateCcw() { - PDFViewerApplication.rotatePages(-90); -} - -function webViewerOptionalContentConfig(evt) { - PDFViewerApplication.pdfViewer.optionalContentConfigPromise = evt.promise; -} - -function webViewerSwitchScrollMode(evt) { - PDFViewerApplication.pdfViewer.scrollMode = evt.mode; -} - -function webViewerSwitchSpreadMode(evt) { - PDFViewerApplication.pdfViewer.spreadMode = evt.mode; -} - -function webViewerDocumentProperties() { - PDFViewerApplication.pdfDocumentProperties.open(); -} - -function webViewerFind(evt) { - PDFViewerApplication.findController.executeCommand("find" + evt.type, { - query: evt.query, - phraseSearch: evt.phraseSearch, - caseSensitive: evt.caseSensitive, - entireWord: evt.entireWord, - highlightAll: evt.highlightAll, - findPrevious: evt.findPrevious - }); -} - -function webViewerFindFromUrlHash(evt) { - PDFViewerApplication.findController.executeCommand("find", { - query: evt.query, - phraseSearch: evt.phraseSearch, - caseSensitive: false, - entireWord: false, - highlightAll: true, - findPrevious: false - }); -} - -function webViewerUpdateFindMatchesCount({ - matchesCount -}) { - if (PDFViewerApplication.supportsIntegratedFind) { - PDFViewerApplication.externalServices.updateFindMatchesCount(matchesCount); - } else { - PDFViewerApplication.findBar.updateResultsCount(matchesCount); - } -} - -function webViewerUpdateFindControlState({ - state, - previous, - matchesCount, - rawQuery -}) { - if (PDFViewerApplication.supportsIntegratedFind) { - PDFViewerApplication.externalServices.updateFindControlState({ - result: state, - findPrevious: previous, - matchesCount, - rawQuery - }); - } else { - PDFViewerApplication.findBar.updateUIState(state, previous, matchesCount); - } -} - -function webViewerScaleChanging(evt) { - PDFViewerApplication.toolbar.setPageScale(evt.presetValue, evt.scale); - PDFViewerApplication.pdfViewer.update(); -} - -function webViewerRotationChanging(evt) { - PDFViewerApplication.pdfThumbnailViewer.pagesRotation = evt.pagesRotation; - PDFViewerApplication.forceRendering(); - PDFViewerApplication.pdfViewer.currentPageNumber = evt.pageNumber; -} - -function webViewerPageChanging({ - pageNumber, - pageLabel -}) { - PDFViewerApplication.toolbar.setPageNumber(pageNumber, pageLabel); - PDFViewerApplication.secondaryToolbar.setPageNumber(pageNumber); - - if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) { - PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(pageNumber); - } -} - -function webViewerVisibilityChange(evt) { - if (document.visibilityState === "visible") { - setZoomDisabledTimeout(); - } -} - -let zoomDisabledTimeout = null; - -function setZoomDisabledTimeout() { - if (zoomDisabledTimeout) { - clearTimeout(zoomDisabledTimeout); - } - - zoomDisabledTimeout = setTimeout(function () { - zoomDisabledTimeout = null; - }, WHEEL_ZOOM_DISABLED_TIMEOUT); -} - -function webViewerWheel(evt) { - const { - pdfViewer, - supportedMouseWheelZoomModifierKeys - } = PDFViewerApplication; - - if (pdfViewer.isInPresentationMode) { - return; - } - - if (evt.ctrlKey && supportedMouseWheelZoomModifierKeys.ctrlKey || evt.metaKey && supportedMouseWheelZoomModifierKeys.metaKey) { - evt.preventDefault(); - - if (zoomDisabledTimeout || document.visibilityState === "hidden") { - return; - } - - const previousScale = pdfViewer.currentScale; - const delta = (0, _ui_utils.normalizeWheelEventDirection)(evt); - let ticks = 0; - - if (evt.deltaMode === WheelEvent.DOM_DELTA_LINE || evt.deltaMode === WheelEvent.DOM_DELTA_PAGE) { - if (Math.abs(delta) >= 1) { - ticks = Math.sign(delta); - } else { - ticks = PDFViewerApplication.accumulateWheelTicks(delta); - } - } else { - const PIXELS_PER_LINE_SCALE = 30; - ticks = PDFViewerApplication.accumulateWheelTicks(delta / PIXELS_PER_LINE_SCALE); - } - - if (ticks < 0) { - PDFViewerApplication.zoomOut(-ticks); - } else if (ticks > 0) { - PDFViewerApplication.zoomIn(ticks); - } - - const currentScale = pdfViewer.currentScale; - - if (previousScale !== currentScale) { - const scaleCorrectionFactor = currentScale / previousScale - 1; - const rect = pdfViewer.container.getBoundingClientRect(); - const dx = evt.clientX - rect.left; - const dy = evt.clientY - rect.top; - pdfViewer.container.scrollLeft += dx * scaleCorrectionFactor; - pdfViewer.container.scrollTop += dy * scaleCorrectionFactor; - } - } else { - setZoomDisabledTimeout(); - } -} - -function webViewerTouchStart(evt) { - if (evt.touches.length > 1) { - evt.preventDefault(); - } -} - -// for mobile -function enablePinchZoom() { - let startX = 0, startY = 0; - let initialPinchDistance = 0; - let pinchScale = 1; - const viewer = document.getElementById("viewer"); - const container = document.getElementById("viewerContainer"); - const reset = () => { startX = startY = initialPinchDistance = 0; pinchScale = 1; }; - // Prevent native iOS page zoom - //document.addEventListener("touchmove", (e) => { if (e.scale !== 1) { e.preventDefault(); } }, { passive: false }); - - document.addEventListener("touchstart", (e) => { - if (e.touches.length > 1) { - startX = (e.touches[0].pageX + e.touches[1].pageX) / 2; - startY = (e.touches[0].pageY + e.touches[1].pageY) / 2; - initialPinchDistance = Math.hypot((e.touches[1].pageX - e.touches[0].pageX), (e.touches[1].pageY - e.touches[0].pageY)); - } else { - initialPinchDistance = 0; - } - }); - - document.addEventListener("touchmove", (e) => { - if (initialPinchDistance <= 0 || e.touches.length < 2) { return; } - if (e.scale !== 1) { e.preventDefault(); } - const pinchDistance = Math.hypot((e.touches[1].pageX - e.touches[0].pageX), (e.touches[1].pageY - e.touches[0].pageY)); - const originX = startX + container.scrollLeft; - const originY = startY + container.scrollTop; - pinchScale = pinchDistance / initialPinchDistance; - viewer.style.transform = `scale(${pinchScale})`; - viewer.style.transformOrigin = `${originX}px ${originY}px`; - }, { passive: false }); - - document.addEventListener("touchend", (e) => { - if (initialPinchDistance <= 0) { return; } - viewer.style.transform = `none`; - viewer.style.transformOrigin = `unset`; - PDFViewerApplication.pdfViewer.currentScale *= pinchScale; - const rect = container.getBoundingClientRect(); - const dx = startX - rect.left; - const dy = startY - rect.top; - container.scrollLeft += dx * (pinchScale - 1); - container.scrollTop += dy * (pinchScale - 1); - reset(); - }); -} - -function webViewerClick(evt) { - if (!PDFViewerApplication.secondaryToolbar.isOpen) { - return; - } - - const appConfig = PDFViewerApplication.appConfig; - - if (PDFViewerApplication.pdfViewer.containsElement(evt.target) || appConfig.toolbar.container.contains(evt.target) && evt.target !== appConfig.secondaryToolbar.toggleButton) { - PDFViewerApplication.secondaryToolbar.close(); - } -} - -function webViewerKeyDown(evt) { - if (PDFViewerApplication.overlayManager.active) { - return; - } - - let handled = false, - ensureViewerFocused = false; - const cmd = (evt.ctrlKey ? 1 : 0) | (evt.altKey ? 2 : 0) | (evt.shiftKey ? 4 : 0) | (evt.metaKey ? 8 : 0); - const pdfViewer = PDFViewerApplication.pdfViewer; - const isViewerInPresentationMode = pdfViewer?.isInPresentationMode; - - if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) { - switch (evt.keyCode) { - case 70: - if (!PDFViewerApplication.supportsIntegratedFind && !evt.shiftKey) { - PDFViewerApplication.findBar.open(); - handled = true; - } - - break; - - case 71: - if (!PDFViewerApplication.supportsIntegratedFind) { - const findState = PDFViewerApplication.findController.state; - - if (findState) { - PDFViewerApplication.findController.executeCommand("findagain", { - query: findState.query, - phraseSearch: findState.phraseSearch, - caseSensitive: findState.caseSensitive, - entireWord: findState.entireWord, - highlightAll: findState.highlightAll, - findPrevious: cmd === 5 || cmd === 12 - }); - } - - handled = true; - } - - break; - - case 61: - case 107: - case 187: - case 171: - if (!isViewerInPresentationMode) { - PDFViewerApplication.zoomIn(); - } - - handled = true; - break; - - case 173: - case 109: - case 189: - if (!isViewerInPresentationMode) { - PDFViewerApplication.zoomOut(); - } - - handled = true; - break; - - case 48: - case 96: - if (!isViewerInPresentationMode) { - setTimeout(function () { - PDFViewerApplication.zoomReset(); - }); - handled = false; - } - - break; - - case 38: - if (isViewerInPresentationMode || PDFViewerApplication.page > 1) { - PDFViewerApplication.page = 1; - handled = true; - ensureViewerFocused = true; - } - - break; - - case 40: - if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) { - PDFViewerApplication.page = PDFViewerApplication.pagesCount; - handled = true; - ensureViewerFocused = true; - } - - break; - } - } - - const { - eventBus - } = PDFViewerApplication; - - if (cmd === 1 || cmd === 8) { - switch (evt.keyCode) { - case 83: - eventBus.dispatch("download", { - source: window - }); - handled = true; - break; - - case 79: - { - eventBus.dispatch("openfile", { - source: window - }); - handled = true; - } - break; - } - } - - if (cmd === 3 || cmd === 10) { - switch (evt.keyCode) { - case 80: - PDFViewerApplication.requestPresentationMode(); - handled = true; - break; - - case 71: - PDFViewerApplication.appConfig.toolbar.pageNumber.select(); - handled = true; - break; - } - } - - if (handled) { - if (ensureViewerFocused && !isViewerInPresentationMode) { - pdfViewer.focus(); - } - - evt.preventDefault(); - return; - } - - const curElement = (0, _ui_utils.getActiveOrFocusedElement)(); - const curElementTagName = curElement?.tagName.toUpperCase(); - - if (curElementTagName === "INPUT" || curElementTagName === "TEXTAREA" || curElementTagName === "SELECT" || curElement?.isContentEditable) { - if (evt.keyCode !== 27) { - return; - } - } - - if (cmd === 0) { - let turnPage = 0, - turnOnlyIfPageFit = false; - - switch (evt.keyCode) { - case 38: - case 33: - if (pdfViewer.isVerticalScrollbarEnabled) { - turnOnlyIfPageFit = true; - } - - turnPage = -1; - break; - - case 8: - if (!isViewerInPresentationMode) { - turnOnlyIfPageFit = true; - } - - turnPage = -1; - break; - - case 37: - if (pdfViewer.isHorizontalScrollbarEnabled) { - turnOnlyIfPageFit = true; - } - - case 75: - case 80: - turnPage = -1; - break; - - case 27: - if (PDFViewerApplication.secondaryToolbar.isOpen) { - PDFViewerApplication.secondaryToolbar.close(); - handled = true; - } - - if (!PDFViewerApplication.supportsIntegratedFind && PDFViewerApplication.findBar.opened) { - PDFViewerApplication.findBar.close(); - handled = true; - } - - break; - - case 40: - case 34: - if (pdfViewer.isVerticalScrollbarEnabled) { - turnOnlyIfPageFit = true; - } - - turnPage = 1; - break; - - case 13: - case 32: - if (!isViewerInPresentationMode) { - turnOnlyIfPageFit = true; - } - - turnPage = 1; - break; - - case 39: - if (pdfViewer.isHorizontalScrollbarEnabled) { - turnOnlyIfPageFit = true; - } - - case 74: - case 78: - turnPage = 1; - break; - - case 36: - if (isViewerInPresentationMode || PDFViewerApplication.page > 1) { - PDFViewerApplication.page = 1; - handled = true; - ensureViewerFocused = true; - } - - break; - - case 35: - if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) { - PDFViewerApplication.page = PDFViewerApplication.pagesCount; - handled = true; - ensureViewerFocused = true; - } - - break; - - case 83: - PDFViewerApplication.pdfCursorTools.switchTool(_pdf_cursor_tools.CursorTool.SELECT); - break; - - case 72: - PDFViewerApplication.pdfCursorTools.switchTool(_pdf_cursor_tools.CursorTool.HAND); - break; - - case 82: - PDFViewerApplication.rotatePages(90); - break; - - case 115: - PDFViewerApplication.pdfSidebar.toggle(); - break; - } - - if (turnPage !== 0 && (!turnOnlyIfPageFit || pdfViewer.currentScaleValue === "page-fit")) { - if (turnPage > 0) { - pdfViewer.nextPage(); - } else { - pdfViewer.previousPage(); - } - - handled = true; - } - } - - if (cmd === 4) { - switch (evt.keyCode) { - case 13: - case 32: - if (!isViewerInPresentationMode && pdfViewer.currentScaleValue !== "page-fit") { - break; - } - - if (PDFViewerApplication.page > 1) { - PDFViewerApplication.page--; - } - - handled = true; - break; - - case 82: - PDFViewerApplication.rotatePages(-90); - break; - } - } - - if (!handled && !isViewerInPresentationMode) { - if (evt.keyCode >= 33 && evt.keyCode <= 40 || evt.keyCode === 32 && curElementTagName !== "BUTTON") { - ensureViewerFocused = true; - } - } - - if (ensureViewerFocused && !pdfViewer.containsElement(curElement)) { - pdfViewer.focus(); - } - - if (handled) { - evt.preventDefault(); - } -} - -function beforeUnload(evt) { - evt.preventDefault(); - evt.returnValue = ""; - return false; -} - -const PDFPrintServiceFactory = { - instance: { - supportsPrinting: false, - - createPrintService() { - throw new Error("Not implemented: createPrintService"); - } - - } -}; -exports.PDFPrintServiceFactory = PDFPrintServiceFactory; - -/***/ }), -/* 4 */ -/***/ ((__unused_webpack_module, exports) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.apiPageLayoutToSpreadMode = apiPageLayoutToSpreadMode; -exports.apiPageModeToSidebarView = apiPageModeToSidebarView; -exports.approximateFraction = approximateFraction; -exports.backtrackBeforeAllVisibleElements = backtrackBeforeAllVisibleElements; -exports.binarySearchFirstItem = binarySearchFirstItem; -exports.getActiveOrFocusedElement = getActiveOrFocusedElement; -exports.getOutputScale = getOutputScale; -exports.getPageSizeInches = getPageSizeInches; -exports.getVisibleElements = getVisibleElements; -exports.isPortraitOrientation = isPortraitOrientation; -exports.isValidRotation = isValidRotation; -exports.isValidScrollMode = isValidScrollMode; -exports.isValidSpreadMode = isValidSpreadMode; -exports.moveToEndOfArray = moveToEndOfArray; -exports.noContextMenuHandler = noContextMenuHandler; -exports.normalizeWheelEventDelta = normalizeWheelEventDelta; -exports.normalizeWheelEventDirection = normalizeWheelEventDirection; -exports.parseQueryString = parseQueryString; -exports.roundToDivide = roundToDivide; -exports.scrollIntoView = scrollIntoView; +exports.WaitOnType = exports.EventBus = exports.AutomationEventBus = void 0; exports.waitOnEventOrTimeout = waitOnEventOrTimeout; -exports.watchScroll = watchScroll; -exports.WaitOnType = exports.VERTICAL_PADDING = exports.UNKNOWN_SCALE = exports.TextLayerMode = exports.SpreadMode = exports.SidebarView = exports.ScrollMode = exports.SCROLLBAR_PADDING = exports.RendererType = exports.ProgressBar = exports.PresentationModeState = exports.MIN_SCALE = exports.MAX_SCALE = exports.MAX_AUTO_SCALE = exports.EventBus = exports.DEFAULT_SCALE_VALUE = exports.DEFAULT_SCALE = exports.CSS_UNITS = exports.AutoPrintRegExp = exports.animationStarted = void 0; -const CSS_UNITS = 96.0 / 72.0; -exports.CSS_UNITS = CSS_UNITS; -const DEFAULT_SCALE_VALUE = "auto"; -exports.DEFAULT_SCALE_VALUE = DEFAULT_SCALE_VALUE; -const DEFAULT_SCALE = 1.0; -exports.DEFAULT_SCALE = DEFAULT_SCALE; -const MIN_SCALE = 0.1; -exports.MIN_SCALE = MIN_SCALE; -const MAX_SCALE = 10.0; -exports.MAX_SCALE = MAX_SCALE; -const UNKNOWN_SCALE = 0; -exports.UNKNOWN_SCALE = UNKNOWN_SCALE; -const MAX_AUTO_SCALE = 1.25; -exports.MAX_AUTO_SCALE = MAX_AUTO_SCALE; -const SCROLLBAR_PADDING = 40; -exports.SCROLLBAR_PADDING = SCROLLBAR_PADDING; -const VERTICAL_PADDING = 5; -exports.VERTICAL_PADDING = VERTICAL_PADDING; -const LOADINGBAR_END_OFFSET_VAR = "--loadingBar-end-offset"; -const PresentationModeState = { - UNKNOWN: 0, - NORMAL: 1, - CHANGING: 2, - FULLSCREEN: 3 -}; -exports.PresentationModeState = PresentationModeState; -const SidebarView = { - UNKNOWN: -1, - NONE: 0, - THUMBS: 1, - OUTLINE: 2, - ATTACHMENTS: 3, - LAYERS: 4 -}; -exports.SidebarView = SidebarView; -const RendererType = { - CANVAS: "canvas", - SVG: "svg" -}; -exports.RendererType = RendererType; -const TextLayerMode = { - DISABLE: 0, - ENABLE: 1, - ENABLE_ENHANCE: 2 -}; -exports.TextLayerMode = TextLayerMode; -const ScrollMode = { - UNKNOWN: -1, - VERTICAL: 0, - HORIZONTAL: 1, - WRAPPED: 2 -}; -exports.ScrollMode = ScrollMode; -const SpreadMode = { - UNKNOWN: -1, - NONE: 0, - ODD: 1, - EVEN: 2 -}; -exports.SpreadMode = SpreadMode; -const AutoPrintRegExp = /\bprint\s*\(/; -exports.AutoPrintRegExp = AutoPrintRegExp; - -function getOutputScale(ctx) { - const devicePixelRatio = window.devicePixelRatio || 1; - const backingStoreRatio = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.backingStorePixelRatio || 1; - const pixelRatio = devicePixelRatio / backingStoreRatio; - return { - sx: pixelRatio, - sy: pixelRatio, - scaled: pixelRatio !== 1 - }; -} - -function scrollIntoView(element, spot, scrollMatches = false) { - let parent = element.offsetParent; - - if (!parent) { - console.error("offsetParent is not set -- cannot scroll"); - return; - } - - let offsetY = element.offsetTop + element.clientTop; - let offsetX = element.offsetLeft + element.clientLeft; - - while (parent.clientHeight === parent.scrollHeight && parent.clientWidth === parent.scrollWidth || scrollMatches && (parent.classList.contains("markedContent") || getComputedStyle(parent).overflow === "hidden")) { - offsetY += parent.offsetTop; - offsetX += parent.offsetLeft; - parent = parent.offsetParent; - - if (!parent) { - return; - } - } - - if (spot) { - if (spot.top !== undefined) { - offsetY += spot.top; - } - - if (spot.left !== undefined) { - offsetX += spot.left; - parent.scrollLeft = offsetX; - } - } - - parent.scrollTop = offsetY; -} - -function watchScroll(viewAreaElement, callback) { - const debounceScroll = function (evt) { - if (rAF) { - return; - } - - rAF = window.requestAnimationFrame(function viewAreaElementScrolled() { - rAF = null; - const currentX = viewAreaElement.scrollLeft; - const lastX = state.lastX; - - if (currentX !== lastX) { - state.right = currentX > lastX; - } - - state.lastX = currentX; - const currentY = viewAreaElement.scrollTop; - const lastY = state.lastY; - - if (currentY !== lastY) { - state.down = currentY > lastY; - } - - state.lastY = currentY; - callback(state); - }); - }; - - const state = { - right: true, - down: true, - lastX: viewAreaElement.scrollLeft, - lastY: viewAreaElement.scrollTop, - _eventHandler: debounceScroll - }; - let rAF = null; - viewAreaElement.addEventListener("scroll", debounceScroll, true); - return state; -} - -function parseQueryString(query) { - const parts = query.split("&"); - const params = Object.create(null); - - for (let i = 0, ii = parts.length; i < ii; ++i) { - const param = parts[i].split("="); - const key = param[0].toLowerCase(); - const value = param.length > 1 ? param[1] : null; - params[decodeURIComponent(key)] = decodeURIComponent(value); - } - - return params; -} - -function binarySearchFirstItem(items, condition) { - let minIndex = 0; - let maxIndex = items.length - 1; - - if (maxIndex < 0 || !condition(items[maxIndex])) { - return items.length; - } - - if (condition(items[minIndex])) { - return minIndex; - } - - while (minIndex < maxIndex) { - const currentIndex = minIndex + maxIndex >> 1; - const currentItem = items[currentIndex]; - - if (condition(currentItem)) { - maxIndex = currentIndex; - } else { - minIndex = currentIndex + 1; - } - } - - return minIndex; -} - -function approximateFraction(x) { - if (Math.floor(x) === x) { - return [x, 1]; - } - - const xinv = 1 / x; - const limit = 8; - - if (xinv > limit) { - return [1, limit]; - } else if (Math.floor(xinv) === xinv) { - return [1, xinv]; - } - - const x_ = x > 1 ? xinv : x; - let a = 0, - b = 1, - c = 1, - d = 1; - - while (true) { - const p = a + c, - q = b + d; - - if (q > limit) { - break; - } - - if (x_ <= p / q) { - c = p; - d = q; - } else { - a = p; - b = q; - } - } - - let result; - - if (x_ - a / b < c / d - x_) { - result = x_ === x ? [a, b] : [b, a]; - } else { - result = x_ === x ? [c, d] : [d, c]; - } - - return result; -} - -function roundToDivide(x, div) { - const r = x % div; - return r === 0 ? x : Math.round(x - r + div); -} - -function getPageSizeInches({ - view, - userUnit, - rotate -}) { - const [x1, y1, x2, y2] = view; - const changeOrientation = rotate % 180 !== 0; - const width = (x2 - x1) / 72 * userUnit; - const height = (y2 - y1) / 72 * userUnit; - return { - width: changeOrientation ? height : width, - height: changeOrientation ? width : height - }; -} - -function backtrackBeforeAllVisibleElements(index, views, top) { - if (index < 2) { - return index; - } - - let elt = views[index].div; - let pageTop = elt.offsetTop + elt.clientTop; - - if (pageTop >= top) { - elt = views[index - 1].div; - pageTop = elt.offsetTop + elt.clientTop; - } - - for (let i = index - 2; i >= 0; --i) { - elt = views[i].div; - - if (elt.offsetTop + elt.clientTop + elt.clientHeight <= pageTop) { - break; - } - - index = i; - } - - return index; -} - -function getVisibleElements({ - scrollEl, - views, - sortByVisibility = false, - horizontal = false, - rtl = false -}) { - const top = scrollEl.scrollTop, - bottom = top + scrollEl.clientHeight; - const left = scrollEl.scrollLeft, - right = left + scrollEl.clientWidth; - - function isElementBottomAfterViewTop(view) { - const element = view.div; - const elementBottom = element.offsetTop + element.clientTop + element.clientHeight; - return elementBottom > top; - } - - function isElementNextAfterViewHorizontally(view) { - const element = view.div; - const elementLeft = element.offsetLeft + element.clientLeft; - const elementRight = elementLeft + element.clientWidth; - return rtl ? elementLeft < right : elementRight > left; - } - - const visible = [], - numViews = views.length; - let firstVisibleElementInd = binarySearchFirstItem(views, horizontal ? isElementNextAfterViewHorizontally : isElementBottomAfterViewTop); - - if (firstVisibleElementInd > 0 && firstVisibleElementInd < numViews && !horizontal) { - firstVisibleElementInd = backtrackBeforeAllVisibleElements(firstVisibleElementInd, views, top); - } - - let lastEdge = horizontal ? right : -1; - - for (let i = firstVisibleElementInd; i < numViews; i++) { - const view = views[i], - element = view.div; - const currentWidth = element.offsetLeft + element.clientLeft; - const currentHeight = element.offsetTop + element.clientTop; - const viewWidth = element.clientWidth, - viewHeight = element.clientHeight; - const viewRight = currentWidth + viewWidth; - const viewBottom = currentHeight + viewHeight; - - if (lastEdge === -1) { - if (viewBottom >= bottom) { - lastEdge = viewBottom; - } - } else if ((horizontal ? currentWidth : currentHeight) > lastEdge) { - break; - } - - if (viewBottom <= top || currentHeight >= bottom || viewRight <= left || currentWidth >= right) { - continue; - } - - const hiddenHeight = Math.max(0, top - currentHeight) + Math.max(0, viewBottom - bottom); - const hiddenWidth = Math.max(0, left - currentWidth) + Math.max(0, viewRight - right); - const fractionHeight = (viewHeight - hiddenHeight) / viewHeight, - fractionWidth = (viewWidth - hiddenWidth) / viewWidth; - const percent = fractionHeight * fractionWidth * 100 | 0; - visible.push({ - id: view.id, - x: currentWidth, - y: currentHeight, - view, - percent, - widthPercent: fractionWidth * 100 | 0 - }); - } - - const first = visible[0], - last = visible[visible.length - 1]; - - if (sortByVisibility) { - visible.sort(function (a, b) { - const pc = a.percent - b.percent; - - if (Math.abs(pc) > 0.001) { - return -pc; - } - - return a.id - b.id; - }); - } - - return { - first, - last, - views: visible - }; -} - -function noContextMenuHandler(evt) { - evt.preventDefault(); -} - -function normalizeWheelEventDirection(evt) { - let delta = Math.hypot(evt.deltaX, evt.deltaY); - const angle = Math.atan2(evt.deltaY, evt.deltaX); - - if (-0.25 * Math.PI < angle && angle < 0.75 * Math.PI) { - delta = -delta; - } - - return delta; -} - -function normalizeWheelEventDelta(evt) { - let delta = normalizeWheelEventDirection(evt); - const MOUSE_DOM_DELTA_PIXEL_MODE = 0; - const MOUSE_DOM_DELTA_LINE_MODE = 1; - const MOUSE_PIXELS_PER_LINE = 30; - const MOUSE_LINES_PER_PAGE = 30; - - if (evt.deltaMode === MOUSE_DOM_DELTA_PIXEL_MODE) { - delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE; - } else if (evt.deltaMode === MOUSE_DOM_DELTA_LINE_MODE) { - delta /= MOUSE_LINES_PER_PAGE; - } - - return delta; -} - -function isValidRotation(angle) { - return Number.isInteger(angle) && angle % 90 === 0; -} - -function isValidScrollMode(mode) { - return Number.isInteger(mode) && Object.values(ScrollMode).includes(mode) && mode !== ScrollMode.UNKNOWN; -} - -function isValidSpreadMode(mode) { - return Number.isInteger(mode) && Object.values(SpreadMode).includes(mode) && mode !== SpreadMode.UNKNOWN; -} - -function isPortraitOrientation(size) { - return size.width <= size.height; -} - const WaitOnType = { EVENT: "event", TIMEOUT: "timeout" }; exports.WaitOnType = WaitOnType; - function waitOnEventOrTimeout({ target, name, @@ -3672,72 +3306,47 @@ function waitOnEventOrTimeout({ if (typeof target !== "object" || !(name && typeof name === "string") || !(Number.isInteger(delay) && delay >= 0)) { throw new Error("waitOnEventOrTimeout - invalid parameters."); } - function handler(type) { if (target instanceof EventBus) { target._off(name, eventHandler); } else { target.removeEventListener(name, eventHandler); } - if (timeout) { clearTimeout(timeout); } - resolve(type); } - const eventHandler = handler.bind(null, WaitOnType.EVENT); - if (target instanceof EventBus) { target._on(name, eventHandler); } else { target.addEventListener(name, eventHandler); } - const timeoutHandler = handler.bind(null, WaitOnType.TIMEOUT); const timeout = setTimeout(timeoutHandler, delay); }); } - -const animationStarted = new Promise(function (resolve) { - window.requestAnimationFrame(resolve); -}); -exports.animationStarted = animationStarted; - -function dispatchDOMEvent(eventName, args = null) { - throw new Error("Not implemented: dispatchDOMEvent"); -} - class EventBus { - constructor(options) { - this._listeners = Object.create(null); - } - + #listeners = Object.create(null); on(eventName, listener, options = null) { this._on(eventName, listener, { external: true, once: options?.once }); } - off(eventName, listener, options = null) { this._off(eventName, listener, { external: true, once: options?.once }); } - - dispatch(eventName) { - const eventListeners = this._listeners[eventName]; - + dispatch(eventName, data) { + const eventListeners = this.#listeners[eventName]; if (!eventListeners || eventListeners.length === 0) { return; } - - const args = Array.prototype.slice.call(arguments, 1); let externalListeners; - for (const { listener, external, @@ -3746,42 +3355,32 @@ class EventBus { if (once) { this._off(eventName, listener); } - if (external) { - (externalListeners || (externalListeners = [])).push(listener); + (externalListeners ||= []).push(listener); continue; } - - listener.apply(null, args); + listener(data); } - if (externalListeners) { for (const listener of externalListeners) { - listener.apply(null, args); + listener(data); } - externalListeners = null; } } - _on(eventName, listener, options = null) { - var _this$_listeners; - - const eventListeners = (_this$_listeners = this._listeners)[eventName] || (_this$_listeners[eventName] = []); + const eventListeners = this.#listeners[eventName] ||= []; eventListeners.push({ listener, external: options?.external === true, once: options?.once === true }); } - _off(eventName, listener, options = null) { - const eventListeners = this._listeners[eventName]; - + const eventListeners = this.#listeners[eventName]; if (!eventListeners) { return; } - for (let i = 0, ii = eventListeners.length; i < ii; i++) { if (eventListeners[i].listener === listener) { eventListeners.splice(i, 1); @@ -3789,178 +3388,17 @@ class EventBus { } } } - } - exports.EventBus = EventBus; - -function clamp(v, min, max) { - return Math.min(Math.max(v, min), max); -} - -class ProgressBar { - constructor(id, { - height, - width, - units - } = {}) { - this.visible = true; - this.div = document.querySelector(id + " .progress"); - this.bar = this.div.parentNode; - this.height = height || 100; - this.width = width || 100; - this.units = units || "%"; - this.div.style.height = this.height + this.units; - this.percent = 0; - } - - _updateBar() { - if (this._indeterminate) { - this.div.classList.add("indeterminate"); - this.div.style.width = this.width + this.units; - return; - } - - this.div.classList.remove("indeterminate"); - const progressSize = this.width * this._percent / 100; - this.div.style.width = progressSize + this.units; - } - - get percent() { - return this._percent; - } - - set percent(val) { - this._indeterminate = isNaN(val); - this._percent = clamp(val, 0, 100); - - this._updateBar(); - } - - setWidth(viewer) { - if (!viewer) { - return; - } - - const container = viewer.parentNode; - const scrollbarWidth = container.offsetWidth - viewer.offsetWidth; - - if (scrollbarWidth > 0) { - const doc = document.documentElement; - doc.style.setProperty(LOADINGBAR_END_OFFSET_VAR, `${scrollbarWidth}px`); - } - } - - hide() { - if (!this.visible) { - return; - } - - this.visible = false; - this.bar.classList.add("hidden"); - } - - show() { - if (this.visible) { - return; - } - - this.visible = true; - this.bar.classList.remove("hidden"); - } - -} - -exports.ProgressBar = ProgressBar; - -function moveToEndOfArray(arr, condition) { - const moved = [], - len = arr.length; - let write = 0; - - for (let read = 0; read < len; ++read) { - if (condition(arr[read])) { - moved.push(arr[read]); - } else { - arr[write] = arr[read]; - ++write; - } - } - - for (let read = 0; write < len; ++read, ++write) { - arr[write] = moved[read]; +class AutomationEventBus extends EventBus { + dispatch(eventName, data) { + throw new Error("Not implemented: AutomationEventBus.dispatch"); } } - -function getActiveOrFocusedElement() { - let curRoot = document; - let curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus"); - - while (curActiveOrFocused?.shadowRoot) { - curRoot = curActiveOrFocused.shadowRoot; - curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus"); - } - - return curActiveOrFocused; -} - -function apiPageLayoutToSpreadMode(layout) { - switch (layout) { - case "SinglePage": - case "OneColumn": - return SpreadMode.NONE; - - case "TwoColumnLeft": - case "TwoPageLeft": - return SpreadMode.ODD; - - case "TwoColumnRight": - case "TwoPageRight": - return SpreadMode.EVEN; - } - - return SpreadMode.NONE; -} - -function apiPageModeToSidebarView(mode) { - switch (mode) { - case "UseNone": - return SidebarView.NONE; - - case "UseThumbs": - return SidebarView.THUMBS; - - case "UseOutlines": - return SidebarView.OUTLINE; - - case "UseAttachments": - return SidebarView.ATTACHMENTS; - - case "UseOC": - return SidebarView.LAYERS; - } - - return SidebarView.NONE; -} +exports.AutomationEventBus = AutomationEventBus; /***/ }), -/* 5 */ -/***/ ((module) => { - - - -let pdfjsLib; - -if (typeof window !== "undefined" && window["pdfjs-dist/build/pdf"]) { - pdfjsLib = window["pdfjs-dist/build/pdf"]; -} else { - pdfjsLib = require("../build/pdf.js"); -} - -module.exports = pdfjsLib; - -/***/ }), -/* 6 */ +/* 7 */ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { @@ -3968,271 +3406,446 @@ module.exports = pdfjsLib; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.PDFCursorTools = exports.CursorTool = void 0; - -var _grab_to_pan = __webpack_require__(7); - -var _ui_utils = __webpack_require__(4); - -const CursorTool = { - SELECT: 0, - HAND: 1, - ZOOM: 2 +exports.SimpleLinkService = exports.PDFLinkService = exports.LinkTarget = void 0; +var _ui_utils = __webpack_require__(3); +const DEFAULT_LINK_REL = "noopener noreferrer nofollow"; +const LinkTarget = { + NONE: 0, + SELF: 1, + BLANK: 2, + PARENT: 3, + TOP: 4 }; -exports.CursorTool = CursorTool; - -class PDFCursorTools { - constructor({ - container, - eventBus, - cursorToolOnLoad = CursorTool.SELECT - }) { - this.container = container; - this.eventBus = eventBus; - this.active = CursorTool.SELECT; - this.activeBeforePresentationMode = null; - this.handTool = new _grab_to_pan.GrabToPan({ - element: this.container - }); - - this._addEventListeners(); - - Promise.resolve().then(() => { - this.switchTool(cursorToolOnLoad); - }); +exports.LinkTarget = LinkTarget; +function addLinkAttributes(link, { + url, + target, + rel, + enabled = true +} = {}) { + if (!url || typeof url !== "string") { + throw new Error('A valid "url" parameter must provided.'); } - - get activeTool() { - return this.active; - } - - switchTool(tool) { - if (this.activeBeforePresentationMode !== null) { - return; - } - - if (tool === this.active) { - return; - } - - const disableActiveTool = () => { - switch (this.active) { - case CursorTool.SELECT: - break; - - case CursorTool.HAND: - this.handTool.deactivate(); - break; - - case CursorTool.ZOOM: - } + const urlNullRemoved = (0, _ui_utils.removeNullCharacters)(url); + if (enabled) { + link.href = link.title = urlNullRemoved; + } else { + link.href = ""; + link.title = `Disabled: ${urlNullRemoved}`; + link.onclick = () => { + return false; }; - - switch (tool) { - case CursorTool.SELECT: - disableActiveTool(); - break; - - case CursorTool.HAND: - disableActiveTool(); - this.handTool.activate(); - break; - - case CursorTool.ZOOM: - default: - console.error(`switchTool: "${tool}" is an unsupported value.`); + } + let targetStr = ""; + switch (target) { + case LinkTarget.NONE: + break; + case LinkTarget.SELF: + targetStr = "_self"; + break; + case LinkTarget.BLANK: + targetStr = "_blank"; + break; + case LinkTarget.PARENT: + targetStr = "_parent"; + break; + case LinkTarget.TOP: + targetStr = "_top"; + break; + } + link.target = targetStr; + link.rel = typeof rel === "string" ? rel : DEFAULT_LINK_REL; +} +class PDFLinkService { + #pagesRefCache = new Map(); + constructor({ + eventBus, + externalLinkTarget = null, + externalLinkRel = null, + ignoreDestinationZoom = false + } = {}) { + this.eventBus = eventBus; + this.externalLinkTarget = externalLinkTarget; + this.externalLinkRel = externalLinkRel; + this.externalLinkEnabled = true; + this._ignoreDestinationZoom = ignoreDestinationZoom; + this.baseUrl = null; + this.pdfDocument = null; + this.pdfViewer = null; + this.pdfHistory = null; + } + setDocument(pdfDocument, baseUrl = null) { + this.baseUrl = baseUrl; + this.pdfDocument = pdfDocument; + this.#pagesRefCache.clear(); + } + setViewer(pdfViewer) { + this.pdfViewer = pdfViewer; + } + setHistory(pdfHistory) { + this.pdfHistory = pdfHistory; + } + get pagesCount() { + return this.pdfDocument ? this.pdfDocument.numPages : 0; + } + get page() { + return this.pdfViewer.currentPageNumber; + } + set page(value) { + this.pdfViewer.currentPageNumber = value; + } + get rotation() { + return this.pdfViewer.pagesRotation; + } + set rotation(value) { + this.pdfViewer.pagesRotation = value; + } + get isInPresentationMode() { + return this.pdfViewer.isInPresentationMode; + } + #goToDestinationHelper(rawDest, namedDest = null, explicitDest) { + const destRef = explicitDest[0]; + let pageNumber; + if (typeof destRef === "object" && destRef !== null) { + pageNumber = this._cachedPageNumber(destRef); + if (!pageNumber) { + this.pdfDocument.getPageIndex(destRef).then(pageIndex => { + this.cachePageRef(pageIndex + 1, destRef); + this.#goToDestinationHelper(rawDest, namedDest, explicitDest); + }).catch(() => { + console.error(`PDFLinkService.#goToDestinationHelper: "${destRef}" is not ` + `a valid page reference, for dest="${rawDest}".`); + }); return; - } - - this.active = tool; - - this._dispatchEvent(); - } - - _dispatchEvent() { - this.eventBus.dispatch("cursortoolchanged", { - source: this, - tool: this.active - }); - } - - _addEventListeners() { - this.eventBus._on("switchcursortool", evt => { - this.switchTool(evt.tool); - }); - - this.eventBus._on("presentationmodechanged", evt => { - switch (evt.state) { - case _ui_utils.PresentationModeState.FULLSCREEN: - { - const previouslyActive = this.active; - this.switchTool(CursorTool.SELECT); - this.activeBeforePresentationMode = previouslyActive; - break; - } - - case _ui_utils.PresentationModeState.NORMAL: - { - const previouslyActive = this.activeBeforePresentationMode; - this.activeBeforePresentationMode = null; - this.switchTool(previouslyActive); - break; - } } - }); - } - -} - -exports.PDFCursorTools = PDFCursorTools; - -/***/ }), -/* 7 */ -/***/ ((__unused_webpack_module, exports) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.GrabToPan = GrabToPan; - -function GrabToPan(options) { - this.element = options.element; - this.document = options.element.ownerDocument; - - if (typeof options.ignoreTarget === "function") { - this.ignoreTarget = options.ignoreTarget; - } - - this.onActiveChanged = options.onActiveChanged; - this.activate = this.activate.bind(this); - this.deactivate = this.deactivate.bind(this); - this.toggle = this.toggle.bind(this); - this._onmousedown = this._onmousedown.bind(this); - this._onmousemove = this._onmousemove.bind(this); - this._endPan = this._endPan.bind(this); - const overlay = this.overlay = document.createElement("div"); - overlay.className = "grab-to-pan-grabbing"; -} - -GrabToPan.prototype = { - CSS_CLASS_GRAB: "grab-to-pan-grab", - activate: function GrabToPan_activate() { - if (!this.active) { - this.active = true; - this.element.addEventListener("mousedown", this._onmousedown, true); - this.element.classList.add(this.CSS_CLASS_GRAB); - - if (this.onActiveChanged) { - this.onActiveChanged(true); - } - } - }, - deactivate: function GrabToPan_deactivate() { - if (this.active) { - this.active = false; - this.element.removeEventListener("mousedown", this._onmousedown, true); - - this._endPan(); - - this.element.classList.remove(this.CSS_CLASS_GRAB); - - if (this.onActiveChanged) { - this.onActiveChanged(false); - } - } - }, - toggle: function GrabToPan_toggle() { - if (this.active) { - this.deactivate(); + } else if (Number.isInteger(destRef)) { + pageNumber = destRef + 1; } else { - this.activate(); - } - }, - ignoreTarget: function GrabToPan_ignoreTarget(node) { - return node.matches("a[href], a[href] *, input, textarea, button, button *, select, option"); - }, - _onmousedown: function GrabToPan__onmousedown(event) { - if (event.button !== 0 || this.ignoreTarget(event.target)) { + console.error(`PDFLinkService.#goToDestinationHelper: "${destRef}" is not ` + `a valid destination reference, for dest="${rawDest}".`); return; } - - if (event.originalTarget) { - try { - event.originalTarget.tagName; - } catch (e) { - return; - } - } - - this.scrollLeftStart = this.element.scrollLeft; - this.scrollTopStart = this.element.scrollTop; - this.clientXStart = event.clientX; - this.clientYStart = event.clientY; - this.document.addEventListener("mousemove", this._onmousemove, true); - this.document.addEventListener("mouseup", this._endPan, true); - this.element.addEventListener("scroll", this._endPan, true); - event.preventDefault(); - event.stopPropagation(); - const focusedElement = document.activeElement; - - if (focusedElement && !focusedElement.contains(event.target)) { - focusedElement.blur(); - } - }, - _onmousemove: function GrabToPan__onmousemove(event) { - this.element.removeEventListener("scroll", this._endPan, true); - - if (isLeftMouseReleased(event)) { - this._endPan(); - + if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) { + console.error(`PDFLinkService.#goToDestinationHelper: "${pageNumber}" is not ` + `a valid page number, for dest="${rawDest}".`); return; } - - const xDiff = event.clientX - this.clientXStart; - const yDiff = event.clientY - this.clientYStart; - const scrollTop = this.scrollTopStart - yDiff; - const scrollLeft = this.scrollLeftStart - xDiff; - - if (this.element.scrollTo) { - this.element.scrollTo({ - top: scrollTop, - left: scrollLeft, - behavior: "instant" + if (this.pdfHistory) { + this.pdfHistory.pushCurrentPosition(); + this.pdfHistory.push({ + namedDest, + explicitDest, + pageNumber }); + } + this.pdfViewer.scrollPageIntoView({ + pageNumber, + destArray: explicitDest, + ignoreDestinationZoom: this._ignoreDestinationZoom + }); + } + async goToDestination(dest) { + if (!this.pdfDocument) { + return; + } + let namedDest, explicitDest; + if (typeof dest === "string") { + namedDest = dest; + explicitDest = await this.pdfDocument.getDestination(dest); } else { - this.element.scrollTop = scrollTop; - this.element.scrollLeft = scrollLeft; + namedDest = null; + explicitDest = await dest; } - - if (!this.overlay.parentNode) { - document.body.appendChild(this.overlay); + if (!Array.isArray(explicitDest)) { + console.error(`PDFLinkService.goToDestination: "${explicitDest}" is not ` + `a valid destination array, for dest="${dest}".`); + return; } - }, - _endPan: function GrabToPan__endPan() { - this.element.removeEventListener("scroll", this._endPan, true); - this.document.removeEventListener("mousemove", this._onmousemove, true); - this.document.removeEventListener("mouseup", this._endPan, true); - this.overlay.remove(); + this.#goToDestinationHelper(dest, namedDest, explicitDest); } -}; - -function isLeftMouseReleased(event) { - if ("buttons" in event) { - return !(event.buttons & 1); + goToPage(val) { + if (!this.pdfDocument) { + return; + } + const pageNumber = typeof val === "string" && this.pdfViewer.pageLabelToPageNumber(val) || val | 0; + if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) { + console.error(`PDFLinkService.goToPage: "${val}" is not a valid page.`); + return; + } + if (this.pdfHistory) { + this.pdfHistory.pushCurrentPosition(); + this.pdfHistory.pushPage(pageNumber); + } + this.pdfViewer.scrollPageIntoView({ + pageNumber + }); } - - const chrome = window.chrome; - const isChrome15OrOpera15plus = chrome && (chrome.webstore || chrome.app); - const isSafari6plus = /Apple/.test(navigator.vendor) && /Version\/([6-9]\d*|[1-5]\d+)/.test(navigator.userAgent); - - if (isChrome15OrOpera15plus || isSafari6plus) { - return event.which === 0; + addLinkAttributes(link, url, newWindow = false) { + addLinkAttributes(link, { + url, + target: newWindow ? LinkTarget.BLANK : this.externalLinkTarget, + rel: this.externalLinkRel, + enabled: this.externalLinkEnabled + }); + } + getDestinationHash(dest) { + if (typeof dest === "string") { + if (dest.length > 0) { + return this.getAnchorUrl("#" + escape(dest)); + } + } else if (Array.isArray(dest)) { + const str = JSON.stringify(dest); + if (str.length > 0) { + return this.getAnchorUrl("#" + escape(str)); + } + } + return this.getAnchorUrl(""); + } + getAnchorUrl(anchor) { + return this.baseUrl ? this.baseUrl + anchor : anchor; + } + setHash(hash) { + if (!this.pdfDocument) { + return; + } + let pageNumber, dest; + if (hash.includes("=")) { + const params = (0, _ui_utils.parseQueryString)(hash); + if (params.has("search")) { + const query = params.get("search").replaceAll('"', ""), + phrase = params.get("phrase") === "true"; + this.eventBus.dispatch("findfromurlhash", { + source: this, + query: phrase ? query : query.match(/\S+/g) + }); + } + if (params.has("page")) { + pageNumber = params.get("page") | 0 || 1; + } + if (params.has("zoom")) { + const zoomArgs = params.get("zoom").split(","); + const zoomArg = zoomArgs[0]; + const zoomArgNumber = parseFloat(zoomArg); + if (!zoomArg.includes("Fit")) { + dest = [null, { + name: "XYZ" + }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null, zoomArgs.length > 2 ? zoomArgs[2] | 0 : null, zoomArgNumber ? zoomArgNumber / 100 : zoomArg]; + } else { + if (zoomArg === "Fit" || zoomArg === "FitB") { + dest = [null, { + name: zoomArg + }]; + } else if (zoomArg === "FitH" || zoomArg === "FitBH" || zoomArg === "FitV" || zoomArg === "FitBV") { + dest = [null, { + name: zoomArg + }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null]; + } else if (zoomArg === "FitR") { + if (zoomArgs.length !== 5) { + console.error('PDFLinkService.setHash: Not enough parameters for "FitR".'); + } else { + dest = [null, { + name: zoomArg + }, zoomArgs[1] | 0, zoomArgs[2] | 0, zoomArgs[3] | 0, zoomArgs[4] | 0]; + } + } else { + console.error(`PDFLinkService.setHash: "${zoomArg}" is not a valid zoom value.`); + } + } + } + if (dest) { + this.pdfViewer.scrollPageIntoView({ + pageNumber: pageNumber || this.page, + destArray: dest, + allowNegativeOffset: true + }); + } else if (pageNumber) { + this.page = pageNumber; + } + if (params.has("pagemode")) { + this.eventBus.dispatch("pagemode", { + source: this, + mode: params.get("pagemode") + }); + } + if (params.has("nameddest")) { + this.goToDestination(params.get("nameddest")); + } + } else { + dest = unescape(hash); + try { + dest = JSON.parse(dest); + if (!Array.isArray(dest)) { + dest = dest.toString(); + } + } catch {} + if (typeof dest === "string" || PDFLinkService.#isValidExplicitDestination(dest)) { + this.goToDestination(dest); + return; + } + console.error(`PDFLinkService.setHash: "${unescape(hash)}" is not a valid destination.`); + } + } + executeNamedAction(action) { + switch (action) { + case "GoBack": + this.pdfHistory?.back(); + break; + case "GoForward": + this.pdfHistory?.forward(); + break; + case "NextPage": + this.pdfViewer.nextPage(); + break; + case "PrevPage": + this.pdfViewer.previousPage(); + break; + case "LastPage": + this.page = this.pagesCount; + break; + case "FirstPage": + this.page = 1; + break; + default: + break; + } + this.eventBus.dispatch("namedaction", { + source: this, + action + }); + } + async executeSetOCGState(action) { + const pdfDocument = this.pdfDocument; + const optionalContentConfig = await this.pdfViewer.optionalContentConfigPromise; + if (pdfDocument !== this.pdfDocument) { + return; + } + let operator; + for (const elem of action.state) { + switch (elem) { + case "ON": + case "OFF": + case "Toggle": + operator = elem; + continue; + } + switch (operator) { + case "ON": + optionalContentConfig.setVisibility(elem, true); + break; + case "OFF": + optionalContentConfig.setVisibility(elem, false); + break; + case "Toggle": + const group = optionalContentConfig.getGroup(elem); + if (group) { + optionalContentConfig.setVisibility(elem, !group.visible); + } + break; + } + } + this.pdfViewer.optionalContentConfigPromise = Promise.resolve(optionalContentConfig); + } + cachePageRef(pageNum, pageRef) { + if (!pageRef) { + return; + } + const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`; + this.#pagesRefCache.set(refStr, pageNum); + } + _cachedPageNumber(pageRef) { + if (!pageRef) { + return null; + } + const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`; + return this.#pagesRefCache.get(refStr) || null; + } + static #isValidExplicitDestination(dest) { + if (!Array.isArray(dest)) { + return false; + } + const destLength = dest.length; + if (destLength < 2) { + return false; + } + const page = dest[0]; + if (!(typeof page === "object" && Number.isInteger(page.num) && Number.isInteger(page.gen)) && !(Number.isInteger(page) && page >= 0)) { + return false; + } + const zoom = dest[1]; + if (!(typeof zoom === "object" && typeof zoom.name === "string")) { + return false; + } + let allowNull = true; + switch (zoom.name) { + case "XYZ": + if (destLength !== 5) { + return false; + } + break; + case "Fit": + case "FitB": + return destLength === 2; + case "FitH": + case "FitBH": + case "FitV": + case "FitBV": + if (destLength !== 3) { + return false; + } + break; + case "FitR": + if (destLength !== 6) { + return false; + } + allowNull = false; + break; + default: + return false; + } + for (let i = 2; i < destLength; i++) { + const param = dest[i]; + if (!(typeof param === "number" || allowNull && param === null)) { + return false; + } + } + return true; } - - return false; } +exports.PDFLinkService = PDFLinkService; +class SimpleLinkService { + constructor() { + this.externalLinkEnabled = true; + } + get pagesCount() { + return 0; + } + get page() { + return 0; + } + set page(value) {} + get rotation() { + return 0; + } + set rotation(value) {} + get isInPresentationMode() { + return false; + } + async goToDestination(dest) {} + goToPage(val) {} + addLinkAttributes(link, url, newWindow = false) { + addLinkAttributes(link, { + url, + enabled: this.externalLinkEnabled + }); + } + getDestinationHash(dest) { + return "#"; + } + getAnchorUrl(hash) { + return "#"; + } + setHash(hash) {} + executeNamedAction(action) {} + executeSetOCGState(action) {} + cachePageRef(pageNum, pageRef) {} +} +exports.SimpleLinkService = SimpleLinkService; /***/ }), /* 8 */ @@ -4243,138 +3856,66 @@ function isLeftMouseReleased(event) { Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.RenderingStates = exports.PDFRenderingQueue = void 0; - -var _pdfjsLib = __webpack_require__(5); - -const CLEANUP_TIMEOUT = 30000; -const RenderingStates = { - INITIAL: 0, - RUNNING: 1, - PAUSED: 2, - FINISHED: 3 -}; -exports.RenderingStates = RenderingStates; - -class PDFRenderingQueue { - constructor() { - this.pdfViewer = null; - this.pdfThumbnailViewer = null; - this.onIdle = null; - this.highestPriorityPage = null; - this.idleTimeout = null; - this.printing = false; - this.isThumbnailViewEnabled = false; +exports.AnnotationEditorParams = void 0; +var _pdfjsLib = __webpack_require__(4); +class AnnotationEditorParams { + constructor(options, eventBus) { + this.eventBus = eventBus; + this.#bindListeners(options); } - - setViewer(pdfViewer) { - this.pdfViewer = pdfViewer; - } - - setThumbnailViewer(pdfThumbnailViewer) { - this.pdfThumbnailViewer = pdfThumbnailViewer; - } - - isHighestPriority(view) { - return this.highestPriorityPage === view.renderingId; - } - - renderHighestPriority(currentlyVisiblePages) { - if (this.idleTimeout) { - clearTimeout(this.idleTimeout); - this.idleTimeout = null; - } - - if (this.pdfViewer.forceRendering(currentlyVisiblePages)) { - return; - } - - if (this.pdfThumbnailViewer && this.isThumbnailViewEnabled) { - if (this.pdfThumbnailViewer.forceRendering()) { - return; + #bindListeners({ + editorFreeTextFontSize, + editorFreeTextColor, + editorInkColor, + editorInkThickness, + editorInkOpacity + }) { + const dispatchEvent = (typeStr, value) => { + this.eventBus.dispatch("switchannotationeditorparams", { + source: this, + type: _pdfjsLib.AnnotationEditorParamsType[typeStr], + value + }); + }; + editorFreeTextFontSize.addEventListener("input", function () { + dispatchEvent("FREETEXT_SIZE", this.valueAsNumber); + }); + editorFreeTextColor.addEventListener("input", function () { + dispatchEvent("FREETEXT_COLOR", this.value); + }); + editorInkColor.addEventListener("input", function () { + dispatchEvent("INK_COLOR", this.value); + }); + editorInkThickness.addEventListener("input", function () { + dispatchEvent("INK_THICKNESS", this.valueAsNumber); + }); + editorInkOpacity.addEventListener("input", function () { + dispatchEvent("INK_OPACITY", this.valueAsNumber); + }); + this.eventBus._on("annotationeditorparamschanged", evt => { + for (const [type, value] of evt.details) { + switch (type) { + case _pdfjsLib.AnnotationEditorParamsType.FREETEXT_SIZE: + editorFreeTextFontSize.value = value; + break; + case _pdfjsLib.AnnotationEditorParamsType.FREETEXT_COLOR: + editorFreeTextColor.value = value; + break; + case _pdfjsLib.AnnotationEditorParamsType.INK_COLOR: + editorInkColor.value = value; + break; + case _pdfjsLib.AnnotationEditorParamsType.INK_THICKNESS: + editorInkThickness.value = value; + break; + case _pdfjsLib.AnnotationEditorParamsType.INK_OPACITY: + editorInkOpacity.value = value; + break; + } } - } - - if (this.printing) { - return; - } - - if (this.onIdle) { - this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT); - } + }); } - - getHighestPriority(visible, views, scrolledDown) { - const visibleViews = visible.views; - const numVisible = visibleViews.length; - - if (numVisible === 0) { - return null; - } - - for (let i = 0; i < numVisible; ++i) { - const view = visibleViews[i].view; - - if (!this.isViewFinished(view)) { - return view; - } - } - - if (scrolledDown) { - const nextPageIndex = visible.last.id; - - if (views[nextPageIndex] && !this.isViewFinished(views[nextPageIndex])) { - return views[nextPageIndex]; - } - } else { - const previousPageIndex = visible.first.id - 2; - - if (views[previousPageIndex] && !this.isViewFinished(views[previousPageIndex])) { - return views[previousPageIndex]; - } - } - - return null; - } - - isViewFinished(view) { - return view.renderingState === RenderingStates.FINISHED; - } - - renderView(view) { - switch (view.renderingState) { - case RenderingStates.FINISHED: - return false; - - case RenderingStates.PAUSED: - this.highestPriorityPage = view.renderingId; - view.resume(); - break; - - case RenderingStates.RUNNING: - this.highestPriorityPage = view.renderingId; - break; - - case RenderingStates.INITIAL: - this.highestPriorityPage = view.renderingId; - view.draw().finally(() => { - this.renderHighestPriority(); - }).catch(reason => { - if (reason instanceof _pdfjsLib.RenderingCancelledException) { - return; - } - - console.error(`renderView: "${reason}"`); - }); - break; - } - - return true; - } - } - -exports.PDFRenderingQueue = PDFRenderingQueue; +exports.AnnotationEditorParams = AnnotationEditorParams; /***/ }), /* 9 */ @@ -4386,104 +3927,52 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.OverlayManager = void 0; - class OverlayManager { - constructor() { - this._overlays = {}; - this._active = null; - this._keyDownBound = this._keyDown.bind(this); - } - + #overlays = new WeakMap(); + #active = null; get active() { - return this._active; + return this.#active; } - - async register(name, element, callerCloseMethod = null, canForceClose = false) { - let container; - - if (!name || !element || !(container = element.parentNode)) { + async register(dialog, canForceClose = false) { + if (typeof dialog !== "object") { throw new Error("Not enough parameters."); - } else if (this._overlays[name]) { + } else if (this.#overlays.has(dialog)) { throw new Error("The overlay is already registered."); } - - this._overlays[name] = { - element, - container, - callerCloseMethod, + this.#overlays.set(dialog, { canForceClose - }; + }); + dialog.addEventListener("cancel", evt => { + this.#active = null; + }); } - - async unregister(name) { - if (!this._overlays[name]) { + async open(dialog) { + if (!this.#overlays.has(dialog)) { throw new Error("The overlay does not exist."); - } else if (this._active === name) { - throw new Error("The overlay cannot be removed while it is active."); - } - - delete this._overlays[name]; - } - - async open(name) { - if (!this._overlays[name]) { - throw new Error("The overlay does not exist."); - } else if (this._active) { - if (this._overlays[name].canForceClose) { - this._closeThroughCaller(); - } else if (this._active === name) { + } else if (this.#active) { + if (this.#active === dialog) { throw new Error("The overlay is already active."); + } else if (this.#overlays.get(dialog).canForceClose) { + await this.close(); } else { throw new Error("Another overlay is currently active."); } } - - this._active = name; - - this._overlays[this._active].element.classList.remove("hidden"); - - this._overlays[this._active].container.classList.remove("hidden"); - - window.addEventListener("keydown", this._keyDownBound); + this.#active = dialog; + dialog.showModal(); } - - async close(name) { - if (!this._overlays[name]) { + async close(dialog = this.#active) { + if (!this.#overlays.has(dialog)) { throw new Error("The overlay does not exist."); - } else if (!this._active) { + } else if (!this.#active) { throw new Error("The overlay is currently not active."); - } else if (this._active !== name) { + } else if (this.#active !== dialog) { throw new Error("Another overlay is currently active."); } - - this._overlays[this._active].container.classList.add("hidden"); - - this._overlays[this._active].element.classList.add("hidden"); - - this._active = null; - window.removeEventListener("keydown", this._keyDownBound); + dialog.close(); + this.#active = null; } - - _keyDown(evt) { - if (this._active && evt.keyCode === 27) { - this._closeThroughCaller(); - - evt.preventDefault(); - } - } - - _closeThroughCaller() { - if (this._overlays[this._active].callerCloseMethod) { - this._overlays[this._active].callerCloseMethod(); - } - - if (this._active) { - this.close(this._active); - } - } - } - exports.OverlayManager = OverlayManager; /***/ }), @@ -4496,13 +3985,13 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.PasswordPrompt = void 0; - -var _pdfjsLib = __webpack_require__(5); - +var _pdfjsLib = __webpack_require__(4); class PasswordPrompt { + #activeCapability = null; + #updateCallback = null; + #reason = null; constructor(options, overlayManager, l10n, isViewerEmbedded = false) { - this.overlayName = options.overlayName; - this.container = options.container; + this.dialog = options.dialog; this.label = options.label; this.input = options.input; this.submitButton = options.submitButton; @@ -4510,51 +3999,65 @@ class PasswordPrompt { this.overlayManager = overlayManager; this.l10n = l10n; this._isViewerEmbedded = isViewerEmbedded; - this.updateCallback = null; - this.reason = null; - this.submitButton.addEventListener("click", this.verify.bind(this)); + this.submitButton.addEventListener("click", this.#verify.bind(this)); this.cancelButton.addEventListener("click", this.close.bind(this)); this.input.addEventListener("keydown", e => { if (e.keyCode === 13) { - this.verify(); + this.#verify(); } }); - this.overlayManager.register(this.overlayName, this.container, this.close.bind(this), true); + this.overlayManager.register(this.dialog, true); + this.dialog.addEventListener("close", this.#cancel.bind(this)); } - async open() { - await this.overlayManager.open(this.overlayName); - const passwordIncorrect = this.reason === _pdfjsLib.PasswordResponses.INCORRECT_PASSWORD; - + if (this.#activeCapability) { + await this.#activeCapability.promise; + } + this.#activeCapability = new _pdfjsLib.PromiseCapability(); + try { + await this.overlayManager.open(this.dialog); + } catch (ex) { + this.#activeCapability = null; + throw ex; + } + const passwordIncorrect = this.#reason === _pdfjsLib.PasswordResponses.INCORRECT_PASSWORD; if (!this._isViewerEmbedded || passwordIncorrect) { this.input.focus(); } - this.label.textContent = await this.l10n.get(`password_${passwordIncorrect ? "invalid" : "label"}`); } - - close() { - this.overlayManager.close(this.overlayName).then(() => { - this.input.value = ""; - }); - } - - verify() { - const password = this.input.value; - - if (password?.length > 0) { - this.close(); - this.updateCallback(password); + async close() { + if (this.overlayManager.active === this.dialog) { + this.overlayManager.close(this.dialog); } } - - setUpdateCallback(updateCallback, reason) { - this.updateCallback = updateCallback; - this.reason = reason; + #verify() { + const password = this.input.value; + if (password?.length > 0) { + this.#invokeCallback(password); + } + } + #cancel() { + this.#invokeCallback(new Error("PasswordPrompt cancelled.")); + this.#activeCapability.resolve(); + } + #invokeCallback(password) { + if (!this.#updateCallback) { + return; + } + this.close(); + this.input.value = ""; + this.#updateCallback(password); + this.#updateCallback = null; + } + async setUpdateCallback(updateCallback, reason) { + if (this.#activeCapability) { + await this.#activeCapability.promise; + } + this.#updateCallback = updateCallback; + this.#reason = reason; } - } - exports.PasswordPrompt = PasswordPrompt; /***/ }), @@ -4567,59 +4070,42 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.PDFAttachmentViewer = void 0; - -var _pdfjsLib = __webpack_require__(5); - +var _pdfjsLib = __webpack_require__(4); var _base_tree_viewer = __webpack_require__(12); - +var _event_utils = __webpack_require__(6); class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer { constructor(options) { super(options); this.downloadManager = options.downloadManager; - - this.eventBus._on("fileattachmentannotation", this._appendAttachment.bind(this)); + this.eventBus._on("fileattachmentannotation", this.#appendAttachment.bind(this)); } - reset(keepRenderedCapability = false) { super.reset(); this._attachments = null; - if (!keepRenderedCapability) { - this._renderedCapability = (0, _pdfjsLib.createPromiseCapability)(); + this._renderedCapability = new _pdfjsLib.PromiseCapability(); } - - if (this._pendingDispatchEvent) { - clearTimeout(this._pendingDispatchEvent); - } - - this._pendingDispatchEvent = null; + this._pendingDispatchEvent = false; } - - _dispatchEvent(attachmentsCount) { + async _dispatchEvent(attachmentsCount) { this._renderedCapability.resolve(); - - if (this._pendingDispatchEvent) { - clearTimeout(this._pendingDispatchEvent); - this._pendingDispatchEvent = null; - } - - if (attachmentsCount === 0) { - this._pendingDispatchEvent = setTimeout(() => { - this.eventBus.dispatch("attachmentsloaded", { - source: this, - attachmentsCount: 0 - }); - this._pendingDispatchEvent = null; + if (attachmentsCount === 0 && !this._pendingDispatchEvent) { + this._pendingDispatchEvent = true; + await (0, _event_utils.waitOnEventOrTimeout)({ + target: this.eventBus, + name: "annotationlayerrendered", + delay: 1000 }); - return; + if (!this._pendingDispatchEvent) { + return; + } } - + this._pendingDispatchEvent = false; this.eventBus.dispatch("attachmentsloaded", { source: this, attachmentsCount }); } - _bindLink(element, { content, filename @@ -4629,7 +4115,6 @@ class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer { return false; }; } - render({ attachments, keepRenderedCapability = false @@ -4637,45 +4122,32 @@ class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer { if (this._attachments) { this.reset(keepRenderedCapability); } - this._attachments = attachments || null; - if (!attachments) { this._dispatchEvent(0); - return; } - - const names = Object.keys(attachments).sort(function (a, b) { - return a.toLowerCase().localeCompare(b.toLowerCase()); - }); const fragment = document.createDocumentFragment(); let attachmentsCount = 0; - - for (const name of names) { + for (const name in attachments) { const item = attachments[name]; const content = item.content, - filename = (0, _pdfjsLib.getFilenameFromUrl)(item.filename); + filename = (0, _pdfjsLib.getFilenameFromUrl)(item.filename, true); const div = document.createElement("div"); div.className = "treeItem"; const element = document.createElement("a"); - this._bindLink(element, { content, filename }); - element.textContent = this._normalizeTextContent(filename); - div.appendChild(element); - fragment.appendChild(div); + div.append(element); + fragment.append(div); attachmentsCount++; } - this._finishRendering(fragment, attachmentsCount); } - - _appendAttachment({ - id, + #appendAttachment({ filename, content }) { @@ -4684,20 +4156,13 @@ class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer { if (renderedPromise !== this._renderedCapability.promise) { return; } - - let attachments = this._attachments; - - if (!attachments) { - attachments = Object.create(null); - } else { - for (const name in attachments) { - if (id === name) { - return; - } + const attachments = this._attachments || Object.create(null); + for (const name in attachments) { + if (filename === name) { + return; } } - - attachments[id] = { + attachments[filename] = { filename, content }; @@ -4707,9 +4172,7 @@ class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer { }); }); } - } - exports.PDFAttachmentViewer = PDFAttachmentViewer; /***/ }), @@ -4722,23 +4185,18 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.BaseTreeViewer = void 0; - -var _pdfjsLib = __webpack_require__(5); - +var _ui_utils = __webpack_require__(3); const TREEITEM_OFFSET_TOP = -100; const TREEITEM_SELECTED_CLASS = "selected"; - class BaseTreeViewer { constructor(options) { if (this.constructor === BaseTreeViewer) { throw new Error("Cannot initialize BaseTreeViewer."); } - this.container = options.container; this.eventBus = options.eventBus; this.reset(); } - reset() { this._pdfDocument = null; this._lastToggleIsShow = true; @@ -4746,104 +4204,77 @@ class BaseTreeViewer { this.container.textContent = ""; this.container.classList.remove("treeWithDeepNesting"); } - _dispatchEvent(count) { throw new Error("Not implemented: _dispatchEvent"); } - _bindLink(element, params) { throw new Error("Not implemented: _bindLink"); } - _normalizeTextContent(str) { - return (0, _pdfjsLib.removeNullCharacters)(str) || "\u2013"; + return (0, _ui_utils.removeNullCharacters)(str, true) || "\u2013"; } - _addToggleButton(div, hidden = false) { const toggler = document.createElement("div"); toggler.className = "treeItemToggler"; - if (hidden) { toggler.classList.add("treeItemsHidden"); } - toggler.onclick = evt => { evt.stopPropagation(); toggler.classList.toggle("treeItemsHidden"); - if (evt.shiftKey) { const shouldShowAll = !toggler.classList.contains("treeItemsHidden"); - this._toggleTreeItem(div, shouldShowAll); } }; - - div.insertBefore(toggler, div.firstChild); + div.prepend(toggler); } - _toggleTreeItem(root, show = false) { this._lastToggleIsShow = show; - for (const toggler of root.querySelectorAll(".treeItemToggler")) { toggler.classList.toggle("treeItemsHidden", !show); } } - _toggleAllTreeItems() { this._toggleTreeItem(this.container, !this._lastToggleIsShow); } - _finishRendering(fragment, count, hasAnyNesting = false) { if (hasAnyNesting) { this.container.classList.add("treeWithDeepNesting"); this._lastToggleIsShow = !fragment.querySelector(".treeItemsHidden"); } - - this.container.appendChild(fragment); - + this.container.append(fragment); this._dispatchEvent(count); } - render(params) { throw new Error("Not implemented: render"); } - _updateCurrentTreeItem(treeItem = null) { if (this._currentTreeItem) { this._currentTreeItem.classList.remove(TREEITEM_SELECTED_CLASS); - this._currentTreeItem = null; } - if (treeItem) { treeItem.classList.add(TREEITEM_SELECTED_CLASS); this._currentTreeItem = treeItem; } } - _scrollToCurrentTreeItem(treeItem) { if (!treeItem) { return; } - let currentNode = treeItem.parentNode; - while (currentNode && currentNode !== this.container) { if (currentNode.classList.contains("treeItem")) { const toggler = currentNode.firstElementChild; toggler?.classList.remove("treeItemsHidden"); } - currentNode = currentNode.parentNode; } - this._updateCurrentTreeItem(treeItem); - this.container.scrollTo(treeItem.offsetLeft, treeItem.offsetTop + TREEITEM_OFFSET_TOP); } - } - exports.BaseTreeViewer = BaseTreeViewer; /***/ }), @@ -4852,15 +4283,235 @@ exports.BaseTreeViewer = BaseTreeViewer; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFCursorTools = void 0; +var _pdfjsLib = __webpack_require__(4); +var _ui_utils = __webpack_require__(3); +var _grab_to_pan = __webpack_require__(14); +class PDFCursorTools { + #active = _ui_utils.CursorTool.SELECT; + #prevActive = null; + constructor({ + container, + eventBus, + cursorToolOnLoad = _ui_utils.CursorTool.SELECT + }) { + this.container = container; + this.eventBus = eventBus; + this.#addEventListeners(); + Promise.resolve().then(() => { + this.switchTool(cursorToolOnLoad); + }); + } + get activeTool() { + return this.#active; + } + switchTool(tool) { + if (this.#prevActive !== null) { + return; + } + if (tool === this.#active) { + return; + } + const disableActiveTool = () => { + switch (this.#active) { + case _ui_utils.CursorTool.SELECT: + break; + case _ui_utils.CursorTool.HAND: + this._handTool.deactivate(); + break; + case _ui_utils.CursorTool.ZOOM: + } + }; + switch (tool) { + case _ui_utils.CursorTool.SELECT: + disableActiveTool(); + break; + case _ui_utils.CursorTool.HAND: + disableActiveTool(); + this._handTool.activate(); + break; + case _ui_utils.CursorTool.ZOOM: + default: + console.error(`switchTool: "${tool}" is an unsupported value.`); + return; + } + this.#active = tool; + this.eventBus.dispatch("cursortoolchanged", { + source: this, + tool + }); + } + #addEventListeners() { + this.eventBus._on("switchcursortool", evt => { + this.switchTool(evt.tool); + }); + let annotationEditorMode = _pdfjsLib.AnnotationEditorType.NONE, + presentationModeState = _ui_utils.PresentationModeState.NORMAL; + const disableActive = () => { + const prevActive = this.#active; + this.switchTool(_ui_utils.CursorTool.SELECT); + this.#prevActive ??= prevActive; + }; + const enableActive = () => { + const prevActive = this.#prevActive; + if (prevActive !== null && annotationEditorMode === _pdfjsLib.AnnotationEditorType.NONE && presentationModeState === _ui_utils.PresentationModeState.NORMAL) { + this.#prevActive = null; + this.switchTool(prevActive); + } + }; + this.eventBus._on("secondarytoolbarreset", evt => { + if (this.#prevActive !== null) { + annotationEditorMode = _pdfjsLib.AnnotationEditorType.NONE; + presentationModeState = _ui_utils.PresentationModeState.NORMAL; + enableActive(); + } + }); + this.eventBus._on("annotationeditormodechanged", ({ + mode + }) => { + annotationEditorMode = mode; + if (mode === _pdfjsLib.AnnotationEditorType.NONE) { + enableActive(); + } else { + disableActive(); + } + }); + this.eventBus._on("presentationmodechanged", ({ + state + }) => { + presentationModeState = state; + if (state === _ui_utils.PresentationModeState.NORMAL) { + enableActive(); + } else if (state === _ui_utils.PresentationModeState.FULLSCREEN) { + disableActive(); + } + }); + } + get _handTool() { + return (0, _pdfjsLib.shadow)(this, "_handTool", new _grab_to_pan.GrabToPan({ + element: this.container + })); + } +} +exports.PDFCursorTools = PDFCursorTools; + +/***/ }), +/* 14 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GrabToPan = void 0; +const CSS_CLASS_GRAB = "grab-to-pan-grab"; +class GrabToPan { + constructor({ + element + }) { + this.element = element; + this.document = element.ownerDocument; + this.activate = this.activate.bind(this); + this.deactivate = this.deactivate.bind(this); + this.toggle = this.toggle.bind(this); + this._onMouseDown = this.#onMouseDown.bind(this); + this._onMouseMove = this.#onMouseMove.bind(this); + this._endPan = this.#endPan.bind(this); + const overlay = this.overlay = document.createElement("div"); + overlay.className = "grab-to-pan-grabbing"; + } + activate() { + if (!this.active) { + this.active = true; + this.element.addEventListener("mousedown", this._onMouseDown, true); + this.element.classList.add(CSS_CLASS_GRAB); + } + } + deactivate() { + if (this.active) { + this.active = false; + this.element.removeEventListener("mousedown", this._onMouseDown, true); + this._endPan(); + this.element.classList.remove(CSS_CLASS_GRAB); + } + } + toggle() { + if (this.active) { + this.deactivate(); + } else { + this.activate(); + } + } + ignoreTarget(node) { + return node.matches("a[href], a[href] *, input, textarea, button, button *, select, option"); + } + #onMouseDown(event) { + if (event.button !== 0 || this.ignoreTarget(event.target)) { + return; + } + if (event.originalTarget) { + try { + event.originalTarget.tagName; + } catch { + return; + } + } + this.scrollLeftStart = this.element.scrollLeft; + this.scrollTopStart = this.element.scrollTop; + this.clientXStart = event.clientX; + this.clientYStart = event.clientY; + this.document.addEventListener("mousemove", this._onMouseMove, true); + this.document.addEventListener("mouseup", this._endPan, true); + this.element.addEventListener("scroll", this._endPan, true); + event.preventDefault(); + event.stopPropagation(); + const focusedElement = document.activeElement; + if (focusedElement && !focusedElement.contains(event.target)) { + focusedElement.blur(); + } + } + #onMouseMove(event) { + this.element.removeEventListener("scroll", this._endPan, true); + if (!(event.buttons & 1)) { + this._endPan(); + return; + } + const xDiff = event.clientX - this.clientXStart; + const yDiff = event.clientY - this.clientYStart; + this.element.scrollTo({ + top: this.scrollTopStart - yDiff, + left: this.scrollLeftStart - xDiff, + behavior: "instant" + }); + if (!this.overlay.parentNode) { + document.body.append(this.overlay); + } + } + #endPan() { + this.element.removeEventListener("scroll", this._endPan, true); + this.document.removeEventListener("mousemove", this._onMouseMove, true); + this.document.removeEventListener("mouseup", this._endPan, true); + this.overlay.remove(); + } +} +exports.GrabToPan = GrabToPan; + +/***/ }), +/* 15 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + Object.defineProperty(exports, "__esModule", ({ value: true })); exports.PDFDocumentProperties = void 0; - -var _pdfjsLib = __webpack_require__(5); - -var _ui_utils = __webpack_require__(4); - +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); const DEFAULT_FIELD_CONTENT = "-"; const NON_METRIC_LOCALES = ["en-us", "en-lr", "my"]; const US_PAGE_NAMES = { @@ -4871,74 +4522,53 @@ const METRIC_PAGE_NAMES = { "297x420": "A3", "210x297": "A4" }; - function getPageName(size, isPortrait, pageNames) { const width = isPortrait ? size.width : size.height; const height = isPortrait ? size.height : size.width; return pageNames[`${width}x${height}`]; } - class PDFDocumentProperties { + #fieldData = null; constructor({ - overlayName, + dialog, fields, - container, closeButton - }, overlayManager, eventBus, l10n) { - this.overlayName = overlayName; + }, overlayManager, eventBus, l10n, fileNameLookup) { + this.dialog = dialog; this.fields = fields; - this.container = container; this.overlayManager = overlayManager; this.l10n = l10n; - - this._reset(); - + this._fileNameLookup = fileNameLookup; + this.#reset(); closeButton.addEventListener("click", this.close.bind(this)); - this.overlayManager.register(this.overlayName, this.container, this.close.bind(this)); - + this.overlayManager.register(this.dialog); eventBus._on("pagechanging", evt => { this._currentPageNumber = evt.pageNumber; }); - eventBus._on("rotationchanging", evt => { this._pagesRotation = evt.pagesRotation; }); - this._isNonMetricLocale = true; l10n.getLanguage().then(locale => { this._isNonMetricLocale = NON_METRIC_LOCALES.includes(locale); }); } - async open() { - const freezeFieldData = data => { - Object.defineProperty(this, "fieldData", { - value: Object.freeze(data), - writable: false, - enumerable: true, - configurable: true - }); - }; - - await Promise.all([this.overlayManager.open(this.overlayName), this._dataAvailableCapability.promise]); + await Promise.all([this.overlayManager.open(this.dialog), this._dataAvailableCapability.promise]); const currentPageNumber = this._currentPageNumber; const pagesRotation = this._pagesRotation; - - if (this.fieldData && currentPageNumber === this.fieldData._currentPageNumber && pagesRotation === this.fieldData._pagesRotation) { - this._updateUI(); - + if (this.#fieldData && currentPageNumber === this.#fieldData._currentPageNumber && pagesRotation === this.#fieldData._pagesRotation) { + this.#updateUI(); return; } - const { info, - contentDispositionFilename, contentLength } = await this.pdfDocument.getMetadata(); - const [fileName, fileSize, creationDate, modificationDate, pageSize, isLinearized] = await Promise.all([contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(this.url), this._parseFileSize(contentLength), this._parseDate(info.CreationDate), this._parseDate(info.ModDate), this.pdfDocument.getPage(currentPageNumber).then(pdfPage => { - return this._parsePageSize((0, _ui_utils.getPageSizeInches)(pdfPage), pagesRotation); - }), this._parseLinearization(info.IsLinearized)]); - freezeFieldData({ + const [fileName, fileSize, creationDate, modificationDate, pageSize, isLinearized] = await Promise.all([this._fileNameLookup(), this.#parseFileSize(contentLength), this.#parseDate(info.CreationDate), this.#parseDate(info.ModDate), this.pdfDocument.getPage(currentPageNumber).then(pdfPage => { + return this.#parsePageSize((0, _ui_utils.getPageSizeInches)(pdfPage), pagesRotation); + }), this.#parseLinearization(info.IsLinearized)]); + this.#fieldData = Object.freeze({ fileName, fileSize, title: info.Title, @@ -4956,100 +4586,76 @@ class PDFDocumentProperties { _currentPageNumber: currentPageNumber, _pagesRotation: pagesRotation }); - - this._updateUI(); - + this.#updateUI(); const { length } = await this.pdfDocument.getDownloadInfo(); - if (contentLength === length) { return; } - - const data = Object.assign(Object.create(null), this.fieldData); - data.fileSize = await this._parseFileSize(length); - freezeFieldData(data); - - this._updateUI(); + const data = Object.assign(Object.create(null), this.#fieldData); + data.fileSize = await this.#parseFileSize(length); + this.#fieldData = Object.freeze(data); + this.#updateUI(); } - - close() { - this.overlayManager.close(this.overlayName); + async close() { + this.overlayManager.close(this.dialog); } - - setDocument(pdfDocument, url = null) { + setDocument(pdfDocument) { if (this.pdfDocument) { - this._reset(); - - this._updateUI(true); + this.#reset(); + this.#updateUI(true); } - if (!pdfDocument) { return; } - this.pdfDocument = pdfDocument; - this.url = url; - this._dataAvailableCapability.resolve(); } - - _reset() { + #reset() { this.pdfDocument = null; - this.url = null; - delete this.fieldData; - this._dataAvailableCapability = (0, _pdfjsLib.createPromiseCapability)(); + this.#fieldData = null; + this._dataAvailableCapability = new _pdfjsLib.PromiseCapability(); this._currentPageNumber = 1; this._pagesRotation = 0; } - - _updateUI(reset = false) { - if (reset || !this.fieldData) { + #updateUI(reset = false) { + if (reset || !this.#fieldData) { for (const id in this.fields) { this.fields[id].textContent = DEFAULT_FIELD_CONTENT; } - return; } - - if (this.overlayManager.active !== this.overlayName) { + if (this.overlayManager.active !== this.dialog) { return; } - for (const id in this.fields) { - const content = this.fieldData[id]; + const content = this.#fieldData[id]; this.fields[id].textContent = content || content === 0 ? content : DEFAULT_FIELD_CONTENT; } } - - async _parseFileSize(fileSize = 0) { + async #parseFileSize(fileSize = 0) { const kb = fileSize / 1024, - mb = kb / 1024; - + mb = kb / 1024; if (!kb) { return undefined; } - return this.l10n.get(`document_properties_${mb >= 1 ? "mb" : "kb"}`, { size_mb: mb >= 1 && (+mb.toPrecision(3)).toLocaleString(), size_kb: mb < 1 && (+kb.toPrecision(3)).toLocaleString(), size_b: fileSize.toLocaleString() }); } - - async _parsePageSize(pageSizeInches, pagesRotation) { + async #parsePageSize(pageSizeInches, pagesRotation) { if (!pageSizeInches) { return undefined; } - if (pagesRotation % 180 !== 0) { pageSizeInches = { width: pageSizeInches.height, height: pageSizeInches.width }; } - const isPortrait = (0, _ui_utils.isPortraitOrientation)(pageSizeInches); let sizeInches = { width: Math.round(pageSizeInches.width * 100) / 100, @@ -5060,7 +4666,6 @@ class PDFDocumentProperties { height: Math.round(pageSizeInches.height * 25.4 * 10) / 10 }; let rawName = getPageName(sizeInches, isPortrait, US_PAGE_NAMES) || getPageName(sizeMillimeters, isPortrait, METRIC_PAGE_NAMES); - if (!rawName && !(Number.isInteger(sizeMillimeters.width) && Number.isInteger(sizeMillimeters.height))) { const exactMillimeters = { width: pageSizeInches.width * 25.4, @@ -5070,10 +4675,8 @@ class PDFDocumentProperties { width: Math.round(sizeMillimeters.width), height: Math.round(sizeMillimeters.height) }; - if (Math.abs(exactMillimeters.width - intMillimeters.width) < 0.1 && Math.abs(exactMillimeters.height - intMillimeters.height) < 0.1) { rawName = getPageName(intMillimeters, isPortrait, METRIC_PAGE_NAMES); - if (rawName) { sizeInches = { width: Math.round(intMillimeters.width / 25.4 * 100) / 100, @@ -5083,7 +4686,6 @@ class PDFDocumentProperties { } } } - const [{ width, height @@ -5096,30 +4698,24 @@ class PDFDocumentProperties { orientation }); } - - async _parseDate(inputDate) { + async #parseDate(inputDate) { const dateObject = _pdfjsLib.PDFDateString.toDateObject(inputDate); - if (!dateObject) { return undefined; } - return this.l10n.get("document_properties_date_string", { date: dateObject.toLocaleDateString(), time: dateObject.toLocaleTimeString() }); } - - _parseLinearization(isLinearized) { + #parseLinearization(isLinearized) { return this.l10n.get(`document_properties_linearized_${isLinearized ? "yes" : "no"}`); } - } - exports.PDFDocumentProperties = PDFDocumentProperties; /***/ }), -/* 14 */ +/* 16 */ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { @@ -5128,11 +4724,9 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.PDFFindBar = void 0; - -var _pdf_find_controller = __webpack_require__(15); - +var _pdf_find_controller = __webpack_require__(17); +var _ui_utils = __webpack_require__(3); const MATCHES_COUNT_LIMIT = 1000; - class PDFFindBar { constructor(options, eventBus, l10n) { this.opened = false; @@ -5141,6 +4735,7 @@ class PDFFindBar { this.findField = options.findField; this.highlightAll = options.highlightAllCheckbox; this.caseSensitive = options.caseSensitiveCheckbox; + this.matchDiacritics = options.matchDiacriticsCheckbox; this.entireWord = options.entireWordCheckbox; this.findMsg = options.findMsg; this.findResultsCount = options.findResultsCount; @@ -5160,9 +4755,7 @@ class PDFFindBar { if (e.target === this.findField) { this.dispatchEvent("again", e.shiftKey); } - break; - case 27: this.close(); break; @@ -5183,65 +4776,58 @@ class PDFFindBar { this.entireWord.addEventListener("click", () => { this.dispatchEvent("entirewordchange"); }); - - this.eventBus._on("resize", this._adjustWidth.bind(this)); + this.matchDiacritics.addEventListener("click", () => { + this.dispatchEvent("diacriticmatchingchange"); + }); + this.eventBus._on("resize", this.#adjustWidth.bind(this)); } - reset() { this.updateUIState(); } - - dispatchEvent(type, findPrev) { + dispatchEvent(type, findPrev = false) { this.eventBus.dispatch("find", { source: this, type, query: this.findField.value, - phraseSearch: true, caseSensitive: this.caseSensitive.checked, entireWord: this.entireWord.checked, highlightAll: this.highlightAll.checked, - findPrevious: findPrev + findPrevious: findPrev, + matchDiacritics: this.matchDiacritics.checked }); } - updateUIState(state, previous, matchesCount) { let findMsg = Promise.resolve(""); let status = ""; - switch (state) { case _pdf_find_controller.FindState.FOUND: break; - case _pdf_find_controller.FindState.PENDING: status = "pending"; break; - case _pdf_find_controller.FindState.NOT_FOUND: findMsg = this.l10n.get("find_not_found"); status = "notFound"; break; - case _pdf_find_controller.FindState.WRAPPED: findMsg = this.l10n.get(`find_reached_${previous ? "top" : "bottom"}`); break; } - this.findField.setAttribute("data-status", status); + this.findField.setAttribute("aria-invalid", state === _pdf_find_controller.FindState.NOT_FOUND); findMsg.then(msg => { + this.findMsg.setAttribute("data-status", status); this.findMsg.textContent = msg; - - this._adjustWidth(); + this.#adjustWidth(); }); this.updateResultsCount(matchesCount); } - updateResultsCount({ current = 0, total = 0 } = {}) { const limit = MATCHES_COUNT_LIMIT; let matchCountMsg = Promise.resolve(""); - if (total > 0) { if (total > limit) { let key = "find_match_count_limit"; @@ -5256,43 +4842,30 @@ class PDFFindBar { }); } } - matchCountMsg.then(msg => { this.findResultsCount.textContent = msg; - this.findResultsCount.classList.toggle("hidden", !total); - - this._adjustWidth(); + this.#adjustWidth(); }); } - open() { if (!this.opened) { this.opened = true; - this.toggleButton.classList.add("toggled"); - this.toggleButton.setAttribute("aria-expanded", "true"); - this.bar.classList.remove("hidden"); + (0, _ui_utils.toggleExpandedBtn)(this.toggleButton, true, this.bar); } - this.findField.select(); this.findField.focus(); - - this._adjustWidth(); + this.#adjustWidth(); } - close() { if (!this.opened) { return; } - this.opened = false; - this.toggleButton.classList.remove("toggled"); - this.toggleButton.setAttribute("aria-expanded", "false"); - this.bar.classList.add("hidden"); + (0, _ui_utils.toggleExpandedBtn)(this.toggleButton, false, this.bar); this.eventBus.dispatch("findbarclose", { source: this }); } - toggle() { if (this.opened) { this.close(); @@ -5300,27 +4873,22 @@ class PDFFindBar { this.open(); } } - - _adjustWidth() { + #adjustWidth() { if (!this.opened) { return; } - this.bar.classList.remove("wrapContainers"); const findbarHeight = this.bar.clientHeight; const inputContainerHeight = this.bar.firstElementChild.clientHeight; - if (findbarHeight > inputContainerHeight) { this.bar.classList.add("wrapContainers"); } } - } - exports.PDFFindBar = PDFFindBar; /***/ }), -/* 15 */ +/* 17 */ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { @@ -5329,13 +4897,9 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.PDFFindController = exports.FindState = void 0; - -var _pdfjsLib = __webpack_require__(5); - -var _pdf_find_utils = __webpack_require__(16); - -var _ui_utils = __webpack_require__(4); - +var _ui_utils = __webpack_require__(3); +var _pdf_find_utils = __webpack_require__(18); +var _pdfjsLib = __webpack_require__(4); const FindState = { FOUND: 0, NOT_FOUND: 1, @@ -5360,160 +4924,278 @@ const CHARACTERS_TO_NORMALIZE = { "\u00BD": "1/2", "\u00BE": "3/4" }; -let normalizationRegex = null; - +const DIACRITICS_EXCEPTION = new Set([0x3099, 0x309a, 0x094d, 0x09cd, 0x0a4d, 0x0acd, 0x0b4d, 0x0bcd, 0x0c4d, 0x0ccd, 0x0d3b, 0x0d3c, 0x0d4d, 0x0dca, 0x0e3a, 0x0eba, 0x0f84, 0x1039, 0x103a, 0x1714, 0x1734, 0x17d2, 0x1a60, 0x1b44, 0x1baa, 0x1bab, 0x1bf2, 0x1bf3, 0x2d7f, 0xa806, 0xa82c, 0xa8c4, 0xa953, 0xa9c0, 0xaaf6, 0xabed, 0x0c56, 0x0f71, 0x0f72, 0x0f7a, 0x0f7b, 0x0f7c, 0x0f7d, 0x0f80, 0x0f74]); +let DIACRITICS_EXCEPTION_STR; +const DIACRITICS_REG_EXP = /\p{M}+/gu; +const SPECIAL_CHARS_REG_EXP = /([.*+?^${}()|[\]\\])|(\p{P})|(\s+)|(\p{M})|(\p{L})/gu; +const NOT_DIACRITIC_FROM_END_REG_EXP = /([^\p{M}])\p{M}*$/u; +const NOT_DIACRITIC_FROM_START_REG_EXP = /^\p{M}*([^\p{M}])/u; +const SYLLABLES_REG_EXP = /[\uAC00-\uD7AF\uFA6C\uFACF-\uFAD1\uFAD5-\uFAD7]+/g; +const SYLLABLES_LENGTHS = new Map(); +const FIRST_CHAR_SYLLABLES_REG_EXP = "[\\u1100-\\u1112\\ud7a4-\\ud7af\\ud84a\\ud84c\\ud850\\ud854\\ud857\\ud85f]"; +const NFKC_CHARS_TO_NORMALIZE = new Map(); +let noSyllablesRegExp = null; +let withSyllablesRegExp = null; function normalize(text) { - if (!normalizationRegex) { + const syllablePositions = []; + let m; + while ((m = SYLLABLES_REG_EXP.exec(text)) !== null) { + let { + index + } = m; + for (const char of m[0]) { + let len = SYLLABLES_LENGTHS.get(char); + if (!len) { + len = char.normalize("NFD").length; + SYLLABLES_LENGTHS.set(char, len); + } + syllablePositions.push([len, index++]); + } + } + let normalizationRegex; + if (syllablePositions.length === 0 && noSyllablesRegExp) { + normalizationRegex = noSyllablesRegExp; + } else if (syllablePositions.length > 0 && withSyllablesRegExp) { + normalizationRegex = withSyllablesRegExp; + } else { const replace = Object.keys(CHARACTERS_TO_NORMALIZE).join(""); - normalizationRegex = new RegExp(`[${replace}]`, "g"); - } - - let diffs = null; - const normalizedText = text.replace(normalizationRegex, function (ch, index) { - const normalizedCh = CHARACTERS_TO_NORMALIZE[ch], - diff = normalizedCh.length - ch.length; - - if (diff !== 0) { - (diffs || (diffs = [])).push([index, diff]); + const toNormalizeWithNFKC = (0, _pdf_find_utils.getNormalizeWithNFKC)(); + const CJK = "(?:\\p{Ideographic}|[\u3040-\u30FF])"; + const HKDiacritics = "(?:\u3099|\u309A)"; + const regexp = `([${replace}])|([${toNormalizeWithNFKC}])|(${HKDiacritics}\\n)|(\\p{M}+(?:-\\n)?)|(\\S-\\n)|(${CJK}\\n)|(\\n)`; + if (syllablePositions.length === 0) { + normalizationRegex = noSyllablesRegExp = new RegExp(regexp + "|(\\u0000)", "gum"); + } else { + normalizationRegex = withSyllablesRegExp = new RegExp(regexp + `|(${FIRST_CHAR_SYLLABLES_REG_EXP})`, "gum"); } - - return normalizedCh; + } + const rawDiacriticsPositions = []; + while ((m = DIACRITICS_REG_EXP.exec(text)) !== null) { + rawDiacriticsPositions.push([m[0].length, m.index]); + } + let normalized = text.normalize("NFD"); + const positions = [[0, 0]]; + let rawDiacriticsIndex = 0; + let syllableIndex = 0; + let shift = 0; + let shiftOrigin = 0; + let eol = 0; + let hasDiacritics = false; + normalized = normalized.replace(normalizationRegex, (match, p1, p2, p3, p4, p5, p6, p7, p8, i) => { + i -= shiftOrigin; + if (p1) { + const replacement = CHARACTERS_TO_NORMALIZE[p1]; + const jj = replacement.length; + for (let j = 1; j < jj; j++) { + positions.push([i - shift + j, shift - j]); + } + shift -= jj - 1; + return replacement; + } + if (p2) { + let replacement = NFKC_CHARS_TO_NORMALIZE.get(p2); + if (!replacement) { + replacement = p2.normalize("NFKC"); + NFKC_CHARS_TO_NORMALIZE.set(p2, replacement); + } + const jj = replacement.length; + for (let j = 1; j < jj; j++) { + positions.push([i - shift + j, shift - j]); + } + shift -= jj - 1; + return replacement; + } + if (p3) { + hasDiacritics = true; + if (i + eol === rawDiacriticsPositions[rawDiacriticsIndex]?.[1]) { + ++rawDiacriticsIndex; + } else { + positions.push([i - 1 - shift + 1, shift - 1]); + shift -= 1; + shiftOrigin += 1; + } + positions.push([i - shift + 1, shift]); + shiftOrigin += 1; + eol += 1; + return p3.charAt(0); + } + if (p4) { + const hasTrailingDashEOL = p4.endsWith("\n"); + const len = hasTrailingDashEOL ? p4.length - 2 : p4.length; + hasDiacritics = true; + let jj = len; + if (i + eol === rawDiacriticsPositions[rawDiacriticsIndex]?.[1]) { + jj -= rawDiacriticsPositions[rawDiacriticsIndex][0]; + ++rawDiacriticsIndex; + } + for (let j = 1; j <= jj; j++) { + positions.push([i - 1 - shift + j, shift - j]); + } + shift -= jj; + shiftOrigin += jj; + if (hasTrailingDashEOL) { + i += len - 1; + positions.push([i - shift + 1, 1 + shift]); + shift += 1; + shiftOrigin += 1; + eol += 1; + return p4.slice(0, len); + } + return p4; + } + if (p5) { + const len = p5.length - 2; + positions.push([i - shift + len, 1 + shift]); + shift += 1; + shiftOrigin += 1; + eol += 1; + return p5.slice(0, -2); + } + if (p6) { + const len = p6.length - 1; + positions.push([i - shift + len, shift]); + shiftOrigin += 1; + eol += 1; + return p6.slice(0, -1); + } + if (p7) { + positions.push([i - shift + 1, shift - 1]); + shift -= 1; + shiftOrigin += 1; + eol += 1; + return " "; + } + if (i + eol === syllablePositions[syllableIndex]?.[1]) { + const newCharLen = syllablePositions[syllableIndex][0] - 1; + ++syllableIndex; + for (let j = 1; j <= newCharLen; j++) { + positions.push([i - (shift - j), shift - j]); + } + shift -= newCharLen; + shiftOrigin += newCharLen; + } + return p8; }); - return [normalizedText, diffs]; + positions.push([normalized.length, shift]); + return [normalized, positions, hasDiacritics]; } - -function getOriginalIndex(matchIndex, diffs = null) { +function getOriginalIndex(diffs, pos, len) { if (!diffs) { - return matchIndex; + return [pos, len]; } - - let totalDiff = 0; - - for (const [index, diff] of diffs) { - const currentIndex = index + totalDiff; - - if (currentIndex >= matchIndex) { - break; - } - - if (currentIndex + diff > matchIndex) { - totalDiff += matchIndex - currentIndex; - break; - } - - totalDiff += diff; + const start = pos; + const end = pos + len - 1; + let i = (0, _ui_utils.binarySearchFirstItem)(diffs, x => x[0] >= start); + if (diffs[i][0] > start) { + --i; } - - return matchIndex - totalDiff; + let j = (0, _ui_utils.binarySearchFirstItem)(diffs, x => x[0] >= end, i); + if (diffs[j][0] > end) { + --j; + } + const oldStart = start + diffs[i][1]; + const oldEnd = end + diffs[j][1]; + const oldLen = oldEnd + 1 - oldStart; + return [oldStart, oldLen]; } - class PDFFindController { + #state = null; + #updateMatchesCountOnProgress = true; + #visitedPagesCount = 0; constructor({ linkService, - eventBus + eventBus, + updateMatchesCountOnProgress = true }) { this._linkService = linkService; this._eventBus = eventBus; - - this._reset(); - - eventBus._on("findbarclose", this._onFindBarClose.bind(this)); + this.#updateMatchesCountOnProgress = updateMatchesCountOnProgress; + this.onIsPageVisible = null; + this.#reset(); + eventBus._on("find", this.#onFind.bind(this)); + eventBus._on("findbarclose", this.#onFindBarClose.bind(this)); } - get highlightMatches() { return this._highlightMatches; } - get pageMatches() { return this._pageMatches; } - get pageMatchesLength() { return this._pageMatchesLength; } - get selected() { return this._selected; } - get state() { - return this._state; + return this.#state; } - setDocument(pdfDocument) { if (this._pdfDocument) { - this._reset(); + this.#reset(); } - if (!pdfDocument) { return; } - this._pdfDocument = pdfDocument; - this._firstPageCapability.resolve(); } - - executeCommand(cmd, state) { + #onFind(state) { if (!state) { return; } - + if (state.phraseSearch === false) { + console.error("The `phraseSearch`-parameter was removed, please provide " + "an Array of strings in the `query`-parameter instead."); + if (typeof state.query === "string") { + state.query = state.query.match(/\S+/g); + } + } const pdfDocument = this._pdfDocument; - - if (this._state === null || this._shouldDirtyMatch(cmd, state)) { + const { + type + } = state; + if (this.#state === null || this.#shouldDirtyMatch(state)) { this._dirtyMatch = true; } - - this._state = state; - - if (cmd !== "findhighlightallchange") { - this._updateUIState(FindState.PENDING); + this.#state = state; + if (type !== "highlightallchange") { + this.#updateUIState(FindState.PENDING); } - this._firstPageCapability.promise.then(() => { if (!this._pdfDocument || pdfDocument && this._pdfDocument !== pdfDocument) { return; } - - this._extractText(); - + this.#extractText(); const findbarClosed = !this._highlightMatches; const pendingTimeout = !!this._findTimeout; - if (this._findTimeout) { clearTimeout(this._findTimeout); this._findTimeout = null; } - - if (cmd === "find") { + if (!type) { this._findTimeout = setTimeout(() => { - this._nextMatch(); - + this.#nextMatch(); this._findTimeout = null; }, FIND_TIMEOUT); } else if (this._dirtyMatch) { - this._nextMatch(); - } else if (cmd === "findagain") { - this._nextMatch(); - - if (findbarClosed && this._state.highlightAll) { - this._updateAllPages(); + this.#nextMatch(); + } else if (type === "again") { + this.#nextMatch(); + if (findbarClosed && this.#state.highlightAll) { + this.#updateAllPages(); } - } else if (cmd === "findhighlightallchange") { + } else if (type === "highlightallchange") { if (pendingTimeout) { - this._nextMatch(); + this.#nextMatch(); } else { this._highlightMatches = true; } - - this._updateAllPages(); + this.#updateAllPages(); } else { - this._nextMatch(); + this.#nextMatch(); } }); } - scrollMatchIntoView({ element = null, selectedLeft = 0, @@ -5527,7 +5209,6 @@ class PDFFindController { } else if (pageIndex === -1 || pageIndex !== this._selected.pageIdx) { return; } - this._scrollMatches = false; const spot = { top: MATCH_SCROLL_OFFSET_TOP, @@ -5535,14 +5216,14 @@ class PDFFindController { }; (0, _ui_utils.scrollIntoView)(element, spot, true); } - - _reset() { + #reset() { this._highlightMatches = false; this._scrollMatches = false; this._pdfDocument = null; this._pageMatches = []; this._pageMatchesLength = []; - this._state = null; + this.#visitedPagesCount = 0; + this.#state = null; this._selected = { pageIdx: -1, matchIdx: -1 @@ -5555,6 +5236,7 @@ class PDFFindController { this._extractTextPromises = []; this._pageContents = []; this._pageDiffs = []; + this._hasDiacritics = []; this._matchesCountTotal = 0; this._pagesToSearch = null; this._pendingFindMatches = new Set(); @@ -5562,277 +5244,221 @@ class PDFFindController { this._dirtyMatch = false; clearTimeout(this._findTimeout); this._findTimeout = null; - this._firstPageCapability = (0, _pdfjsLib.createPromiseCapability)(); + this._firstPageCapability = new _pdfjsLib.PromiseCapability(); } - - get _query() { - if (this._state.query !== this._rawQuery) { - this._rawQuery = this._state.query; - [this._normalizedQuery] = normalize(this._state.query); + get #query() { + const { + query + } = this.#state; + if (typeof query === "string") { + if (query !== this._rawQuery) { + this._rawQuery = query; + [this._normalizedQuery] = normalize(query); + } + return this._normalizedQuery; } - - return this._normalizedQuery; + return (query || []).filter(q => !!q).map(q => normalize(q)[0]); } - - _shouldDirtyMatch(cmd, state) { - if (state.query !== this._state.query) { + #shouldDirtyMatch(state) { + const newQuery = state.query, + prevQuery = this.#state.query; + const newType = typeof newQuery, + prevType = typeof prevQuery; + if (newType !== prevType) { return true; } - - switch (cmd) { - case "findagain": - const pageNumber = this._selected.pageIdx + 1; - const linkService = this._linkService; - - if (pageNumber >= 1 && pageNumber <= linkService.pagesCount && pageNumber !== linkService.page && !linkService.isPageVisible(pageNumber)) { - return true; - } - - return false; - - case "findhighlightallchange": - return false; - } - - return true; - } - - _prepareMatches(matchesWithLength, matches, matchesLength) { - function isSubTerm(currentIndex) { - const currentElem = matchesWithLength[currentIndex]; - const nextElem = matchesWithLength[currentIndex + 1]; - - if (currentIndex < matchesWithLength.length - 1 && currentElem.match === nextElem.match) { - currentElem.skipped = true; + if (newType === "string") { + if (newQuery !== prevQuery) { return true; } - - for (let i = currentIndex - 1; i >= 0; i--) { - const prevElem = matchesWithLength[i]; - - if (prevElem.skipped) { - continue; - } - - if (prevElem.match + prevElem.matchLength < currentElem.match) { - break; - } - - if (prevElem.match + prevElem.matchLength >= currentElem.match + currentElem.matchLength) { - currentElem.skipped = true; - return true; - } + } else { + if (JSON.stringify(newQuery) !== JSON.stringify(prevQuery)) { + return true; } - - return false; } - - matchesWithLength.sort(function (a, b) { - return a.match === b.match ? a.matchLength - b.matchLength : a.match - b.match; - }); - - for (let i = 0, len = matchesWithLength.length; i < len; i++) { - if (isSubTerm(i)) { - continue; - } - - matches.push(matchesWithLength[i].match); - matchesLength.push(matchesWithLength[i].matchLength); + switch (state.type) { + case "again": + const pageNumber = this._selected.pageIdx + 1; + const linkService = this._linkService; + return pageNumber >= 1 && pageNumber <= linkService.pagesCount && pageNumber !== linkService.page && !(this.onIsPageVisible?.(pageNumber) ?? true); + case "highlightallchange": + return false; } + return true; } - - _isEntireWord(content, startIdx, length) { - if (startIdx > 0) { + #isEntireWord(content, startIdx, length) { + let match = content.slice(0, startIdx).match(NOT_DIACRITIC_FROM_END_REG_EXP); + if (match) { const first = content.charCodeAt(startIdx); - const limit = content.charCodeAt(startIdx - 1); - + const limit = match[1].charCodeAt(0); if ((0, _pdf_find_utils.getCharacterType)(first) === (0, _pdf_find_utils.getCharacterType)(limit)) { return false; } } - - const endIdx = startIdx + length - 1; - - if (endIdx < content.length - 1) { - const last = content.charCodeAt(endIdx); - const limit = content.charCodeAt(endIdx + 1); - + match = content.slice(startIdx + length).match(NOT_DIACRITIC_FROM_START_REG_EXP); + if (match) { + const last = content.charCodeAt(startIdx + length - 1); + const limit = match[1].charCodeAt(0); if ((0, _pdf_find_utils.getCharacterType)(last) === (0, _pdf_find_utils.getCharacterType)(limit)) { return false; } } - return true; } - - _calculatePhraseMatch(query, pageIndex, pageContent, pageDiffs, entireWord) { - const matches = [], - matchesLength = []; - const queryLen = query.length; - let matchIdx = -queryLen; - - while (true) { - matchIdx = pageContent.indexOf(query, matchIdx + queryLen); - - if (matchIdx === -1) { - break; - } - - if (entireWord && !this._isEntireWord(pageContent, matchIdx, queryLen)) { + #calculateRegExpMatch(query, entireWord, pageIndex, pageContent) { + const matches = this._pageMatches[pageIndex] = []; + const matchesLength = this._pageMatchesLength[pageIndex] = []; + if (!query) { + return; + } + const diffs = this._pageDiffs[pageIndex]; + let match; + while ((match = query.exec(pageContent)) !== null) { + if (entireWord && !this.#isEntireWord(pageContent, match.index, match[0].length)) { continue; } - - const originalMatchIdx = getOriginalIndex(matchIdx, pageDiffs), - matchEnd = matchIdx + queryLen - 1, - originalQueryLen = getOriginalIndex(matchEnd, pageDiffs) - originalMatchIdx + 1; - matches.push(originalMatchIdx); - matchesLength.push(originalQueryLen); - } - - this._pageMatches[pageIndex] = matches; - this._pageMatchesLength[pageIndex] = matchesLength; - } - - _calculateWordMatch(query, pageIndex, pageContent, pageDiffs, entireWord) { - const matchesWithLength = []; - const queryArray = query.match(/\S+/g); - - for (let i = 0, len = queryArray.length; i < len; i++) { - const subquery = queryArray[i]; - const subqueryLen = subquery.length; - let matchIdx = -subqueryLen; - - while (true) { - matchIdx = pageContent.indexOf(subquery, matchIdx + subqueryLen); - - if (matchIdx === -1) { - break; - } - - if (entireWord && !this._isEntireWord(pageContent, matchIdx, subqueryLen)) { - continue; - } - - const originalMatchIdx = getOriginalIndex(matchIdx, pageDiffs), - matchEnd = matchIdx + subqueryLen - 1, - originalQueryLen = getOriginalIndex(matchEnd, pageDiffs) - originalMatchIdx + 1; - matchesWithLength.push({ - match: originalMatchIdx, - matchLength: originalQueryLen, - skipped: false - }); + const [matchPos, matchLen] = getOriginalIndex(diffs, match.index, match[0].length); + if (matchLen) { + matches.push(matchPos); + matchesLength.push(matchLen); } } - - this._pageMatchesLength[pageIndex] = []; - this._pageMatches[pageIndex] = []; - - this._prepareMatches(matchesWithLength, this._pageMatches[pageIndex], this._pageMatchesLength[pageIndex]); } - - _calculateMatch(pageIndex) { - let pageContent = this._pageContents[pageIndex]; - const pageDiffs = this._pageDiffs[pageIndex]; - let query = this._query; + #convertToRegExpString(query, hasDiacritics) { const { - caseSensitive, - entireWord, - phraseSearch - } = this._state; - + matchDiacritics + } = this.#state; + let isUnicode = false; + query = query.replaceAll(SPECIAL_CHARS_REG_EXP, (match, p1, p2, p3, p4, p5) => { + if (p1) { + return `[ ]*\\${p1}[ ]*`; + } + if (p2) { + return `[ ]*${p2}[ ]*`; + } + if (p3) { + return "[ ]+"; + } + if (matchDiacritics) { + return p4 || p5; + } + if (p4) { + return DIACRITICS_EXCEPTION.has(p4.charCodeAt(0)) ? p4 : ""; + } + if (hasDiacritics) { + isUnicode = true; + return `${p5}\\p{M}*`; + } + return p5; + }); + const trailingSpaces = "[ ]*"; + if (query.endsWith(trailingSpaces)) { + query = query.slice(0, query.length - trailingSpaces.length); + } + if (matchDiacritics) { + if (hasDiacritics) { + DIACRITICS_EXCEPTION_STR ||= String.fromCharCode(...DIACRITICS_EXCEPTION); + isUnicode = true; + query = `${query}(?=[${DIACRITICS_EXCEPTION_STR}]|[^\\p{M}]|$)`; + } + } + return [isUnicode, query]; + } + #calculateMatch(pageIndex) { + let query = this.#query; if (query.length === 0) { return; } - - if (!caseSensitive) { - pageContent = pageContent.toLowerCase(); - query = query.toLowerCase(); - } - - if (phraseSearch) { - this._calculatePhraseMatch(query, pageIndex, pageContent, pageDiffs, entireWord); + const { + caseSensitive, + entireWord + } = this.#state; + const pageContent = this._pageContents[pageIndex]; + const hasDiacritics = this._hasDiacritics[pageIndex]; + let isUnicode = false; + if (typeof query === "string") { + [isUnicode, query] = this.#convertToRegExpString(query, hasDiacritics); } else { - this._calculateWordMatch(query, pageIndex, pageContent, pageDiffs, entireWord); + query = query.sort().reverse().map(q => { + const [isUnicodePart, queryPart] = this.#convertToRegExpString(q, hasDiacritics); + isUnicode ||= isUnicodePart; + return `(${queryPart})`; + }).join("|"); } - - if (this._state.highlightAll) { - this._updatePage(pageIndex); + const flags = `g${isUnicode ? "u" : ""}${caseSensitive ? "" : "i"}`; + query = query ? new RegExp(query, flags) : null; + this.#calculateRegExpMatch(query, entireWord, pageIndex, pageContent); + if (this.#state.highlightAll) { + this.#updatePage(pageIndex); } - if (this._resumePageIdx === pageIndex) { this._resumePageIdx = null; - - this._nextPageMatch(); + this.#nextPageMatch(); } - const pageMatchesCount = this._pageMatches[pageIndex].length; - - if (pageMatchesCount > 0) { - this._matchesCountTotal += pageMatchesCount; - - this._updateUIResultsCount(); + this._matchesCountTotal += pageMatchesCount; + if (this.#updateMatchesCountOnProgress) { + if (pageMatchesCount > 0) { + this.#updateUIResultsCount(); + } + } else if (++this.#visitedPagesCount === this._linkService.pagesCount) { + this.#updateUIResultsCount(); } } - - _extractText() { + #extractText() { if (this._extractTextPromises.length > 0) { return; } - let promise = Promise.resolve(); - + const textOptions = { + disableNormalization: true + }; for (let i = 0, ii = this._linkService.pagesCount; i < ii; i++) { - const extractTextCapability = (0, _pdfjsLib.createPromiseCapability)(); + const extractTextCapability = new _pdfjsLib.PromiseCapability(); this._extractTextPromises[i] = extractTextCapability.promise; promise = promise.then(() => { return this._pdfDocument.getPage(i + 1).then(pdfPage => { - return pdfPage.getTextContent({ - normalizeWhitespace: true - }); + return pdfPage.getTextContent(textOptions); }).then(textContent => { - const textItems = textContent.items; const strBuf = []; - - for (let j = 0, jj = textItems.length; j < jj; j++) { - strBuf.push(textItems[j].str); + for (const textItem of textContent.items) { + strBuf.push(textItem.str); + if (textItem.hasEOL) { + strBuf.push("\n"); + } } - - [this._pageContents[i], this._pageDiffs[i]] = normalize(strBuf.join("")); - extractTextCapability.resolve(i); + [this._pageContents[i], this._pageDiffs[i], this._hasDiacritics[i]] = normalize(strBuf.join("")); + extractTextCapability.resolve(); }, reason => { console.error(`Unable to get text content for page ${i + 1}`, reason); this._pageContents[i] = ""; this._pageDiffs[i] = null; - extractTextCapability.resolve(i); + this._hasDiacritics[i] = false; + extractTextCapability.resolve(); }); }); } } - - _updatePage(index) { + #updatePage(index) { if (this._scrollMatches && this._selected.pageIdx === index) { this._linkService.page = index + 1; } - this._eventBus.dispatch("updatetextlayermatches", { source: this, pageIndex: index }); } - - _updateAllPages() { + #updateAllPages() { this._eventBus.dispatch("updatetextlayermatches", { source: this, pageIndex: -1 }); } - - _nextMatch() { - const previous = this._state.findPrevious; + #nextMatch() { + const previous = this.#state.findPrevious; const currentPageIndex = this._linkService.page - 1; const numPages = this._linkService.pagesCount; this._highlightMatches = true; - if (this._dirtyMatch) { this._dirtyMatch = false; this._selected.pageIdx = this._selected.matchIdx = -1; @@ -5842,214 +5468,167 @@ class PDFFindController { this._resumePageIdx = null; this._pageMatches.length = 0; this._pageMatchesLength.length = 0; + this.#visitedPagesCount = 0; this._matchesCountTotal = 0; - - this._updateAllPages(); - + this.#updateAllPages(); for (let i = 0; i < numPages; i++) { if (this._pendingFindMatches.has(i)) { continue; } - this._pendingFindMatches.add(i); - - this._extractTextPromises[i].then(pageIdx => { - this._pendingFindMatches.delete(pageIdx); - - this._calculateMatch(pageIdx); + this._extractTextPromises[i].then(() => { + this._pendingFindMatches.delete(i); + this.#calculateMatch(i); }); } } - - if (this._query === "") { - this._updateUIState(FindState.FOUND); - + const query = this.#query; + if (query.length === 0) { + this.#updateUIState(FindState.FOUND); return; } - if (this._resumePageIdx) { return; } - const offset = this._offset; this._pagesToSearch = numPages; - if (offset.matchIdx !== null) { const numPageMatches = this._pageMatches[offset.pageIdx].length; - if (!previous && offset.matchIdx + 1 < numPageMatches || previous && offset.matchIdx > 0) { offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1; - - this._updateMatch(true); - + this.#updateMatch(true); return; } - - this._advanceOffsetPage(previous); + this.#advanceOffsetPage(previous); } - - this._nextPageMatch(); + this.#nextPageMatch(); } - - _matchesReady(matches) { + #matchesReady(matches) { const offset = this._offset; const numMatches = matches.length; - const previous = this._state.findPrevious; - + const previous = this.#state.findPrevious; if (numMatches) { offset.matchIdx = previous ? numMatches - 1 : 0; - - this._updateMatch(true); - + this.#updateMatch(true); return true; } - - this._advanceOffsetPage(previous); - + this.#advanceOffsetPage(previous); if (offset.wrapped) { offset.matchIdx = null; - if (this._pagesToSearch < 0) { - this._updateMatch(false); - + this.#updateMatch(false); return true; } } - return false; } - - _nextPageMatch() { + #nextPageMatch() { if (this._resumePageIdx !== null) { console.error("There can only be one pending page."); } - let matches = null; - do { const pageIdx = this._offset.pageIdx; matches = this._pageMatches[pageIdx]; - if (!matches) { this._resumePageIdx = pageIdx; break; } - } while (!this._matchesReady(matches)); + } while (!this.#matchesReady(matches)); } - - _advanceOffsetPage(previous) { + #advanceOffsetPage(previous) { const offset = this._offset; const numPages = this._linkService.pagesCount; offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1; offset.matchIdx = null; this._pagesToSearch--; - if (offset.pageIdx >= numPages || offset.pageIdx < 0) { offset.pageIdx = previous ? numPages - 1 : 0; offset.wrapped = true; } } - - _updateMatch(found = false) { + #updateMatch(found = false) { let state = FindState.NOT_FOUND; const wrapped = this._offset.wrapped; this._offset.wrapped = false; - if (found) { const previousPage = this._selected.pageIdx; this._selected.pageIdx = this._offset.pageIdx; this._selected.matchIdx = this._offset.matchIdx; state = wrapped ? FindState.WRAPPED : FindState.FOUND; - if (previousPage !== -1 && previousPage !== this._selected.pageIdx) { - this._updatePage(previousPage); + this.#updatePage(previousPage); } } - - this._updateUIState(state, this._state.findPrevious); - + this.#updateUIState(state, this.#state.findPrevious); if (this._selected.pageIdx !== -1) { this._scrollMatches = true; - - this._updatePage(this._selected.pageIdx); + this.#updatePage(this._selected.pageIdx); } } - - _onFindBarClose(evt) { + #onFindBarClose(evt) { const pdfDocument = this._pdfDocument; - this._firstPageCapability.promise.then(() => { if (!this._pdfDocument || pdfDocument && this._pdfDocument !== pdfDocument) { return; } - if (this._findTimeout) { clearTimeout(this._findTimeout); this._findTimeout = null; } - if (this._resumePageIdx) { this._resumePageIdx = null; this._dirtyMatch = true; } - - this._updateUIState(FindState.FOUND); - + this.#updateUIState(FindState.FOUND); this._highlightMatches = false; - - this._updateAllPages(); + this.#updateAllPages(); }); } - - _requestMatchesCount() { + #requestMatchesCount() { const { pageIdx, matchIdx } = this._selected; let current = 0, - total = this._matchesCountTotal; - + total = this._matchesCountTotal; if (matchIdx !== -1) { for (let i = 0; i < pageIdx; i++) { current += this._pageMatches[i]?.length || 0; } - current += matchIdx + 1; } - if (current < 1 || current > total) { current = total = 0; } - return { current, total }; } - - _updateUIResultsCount() { + #updateUIResultsCount() { this._eventBus.dispatch("updatefindmatchescount", { source: this, - matchesCount: this._requestMatchesCount() + matchesCount: this.#requestMatchesCount() }); } - - _updateUIState(state, previous) { + #updateUIState(state, previous = false) { + if (!this.#updateMatchesCountOnProgress && (this.#visitedPagesCount !== this._linkService.pagesCount || state === FindState.PENDING)) { + return; + } this._eventBus.dispatch("updatefindcontrolstate", { source: this, state, previous, - matchesCount: this._requestMatchesCount(), - rawQuery: this._state?.query ?? null + matchesCount: this.#requestMatchesCount(), + rawQuery: this.#state?.query ?? null }); } - } - exports.PDFFindController = PDFFindController; /***/ }), -/* 16 */ +/* 18 */ /***/ ((__unused_webpack_module, exports) => { @@ -6057,8 +5636,9 @@ exports.PDFFindController = PDFFindController; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getCharacterType = getCharacterType; exports.CharacterType = void 0; +exports.getCharacterType = getCharacterType; +exports.getNormalizeWithNFKC = getNormalizeWithNFKC; const CharacterType = { SPACE: 0, ALPHA_LETTER: 1, @@ -6070,47 +5650,36 @@ const CharacterType = { THAI_LETTER: 7 }; exports.CharacterType = CharacterType; - function isAlphabeticalScript(charCode) { return charCode < 0x2e80; } - function isAscii(charCode) { return (charCode & 0xff80) === 0; } - function isAsciiAlpha(charCode) { return charCode >= 0x61 && charCode <= 0x7a || charCode >= 0x41 && charCode <= 0x5a; } - function isAsciiDigit(charCode) { return charCode >= 0x30 && charCode <= 0x39; } - function isAsciiSpace(charCode) { return charCode === 0x20 || charCode === 0x09 || charCode === 0x0d || charCode === 0x0a; } - function isHan(charCode) { return charCode >= 0x3400 && charCode <= 0x9fff || charCode >= 0xf900 && charCode <= 0xfaff; } - function isKatakana(charCode) { return charCode >= 0x30a0 && charCode <= 0x30ff; } - function isHiragana(charCode) { return charCode >= 0x3040 && charCode <= 0x309f; } - function isHalfwidthKatakana(charCode) { return charCode >= 0xff60 && charCode <= 0xff9f; } - function isThai(charCode) { return (charCode & 0xff80) === 0x0e00; } - function getCharacterType(charCode) { if (isAlphabeticalScript(charCode)) { if (isAscii(charCode)) { @@ -6119,17 +5688,14 @@ function getCharacterType(charCode) { } else if (isAsciiAlpha(charCode) || isAsciiDigit(charCode) || charCode === 0x5f) { return CharacterType.ALPHA_LETTER; } - return CharacterType.PUNCT; } else if (isThai(charCode)) { return CharacterType.THAI_LETTER; } else if (charCode === 0xa0) { return CharacterType.SPACE; } - return CharacterType.ALPHA_LETTER; } - if (isHan(charCode)) { return CharacterType.HAN_LETTER; } else if (isKatakana(charCode)) { @@ -6139,12 +5705,16 @@ function getCharacterType(charCode) { } else if (isHalfwidthKatakana(charCode)) { return CharacterType.HALFWIDTH_KATAKANA_LETTER; } - return CharacterType.ALPHA_LETTER; } +let NormalizeWithNFKC; +function getNormalizeWithNFKC() { + NormalizeWithNFKC ||= ` ¨ª¯²-µ¸-º¼-¾IJ-ijĿ-ŀʼnſDŽ-njDZ-dzʰ-ʸ˘-˝ˠ-ˤʹͺ;΄-΅·ϐ-ϖϰ-ϲϴ-ϵϹևٵ-ٸक़-य़ড়-ঢ়য়ਲ਼ਸ਼ਖ਼-ਜ਼ਫ਼ଡ଼-ଢ଼ำຳໜ-ໝ༌གྷཌྷདྷབྷཛྷཀྵჼᴬ-ᴮᴰ-ᴺᴼ-ᵍᵏ-ᵪᵸᶛ-ᶿẚ-ẛάέήίόύώΆ᾽-῁ΈΉ῍-῏ΐΊ῝-῟ΰΎ῭-`ΌΏ´-῾ - ‑‗․-… ″-‴‶-‷‼‾⁇-⁉⁗ ⁰-ⁱ⁴-₎ₐ-ₜ₨℀-℃℅-ℇ℉-ℓℕ-№ℙ-ℝ℠-™ℤΩℨK-ℭℯ-ℱℳ-ℹ℻-⅀ⅅ-ⅉ⅐-ⅿ↉∬-∭∯-∰〈-〉①-⓪⨌⩴-⩶⫝̸ⱼ-ⱽⵯ⺟⻳⼀-⿕ 〶〸-〺゛-゜ゟヿㄱ-ㆎ㆒-㆟㈀-㈞㈠-㉇㉐-㉾㊀-㏿ꚜ-ꚝꝰꟲ-ꟴꟸ-ꟹꭜ-ꭟꭩ豈-嗀塚晴凞-羽蘒諸逸-都飯-舘並-龎ff-stﬓ-ﬗיִײַ-זּטּ-לּמּנּ-סּףּ-פּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-﷼︐-︙︰-﹄﹇-﹒﹔-﹦﹨-﹫ﹰ-ﹲﹴﹶ-ﻼ!-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ¢-₩`; + return NormalizeWithNFKC; +} /***/ }), -/* 17 */ +/* 19 */ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { @@ -6152,20 +5722,17 @@ function getCharacterType(charCode) { Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.PDFHistory = void 0; exports.isDestArraysEqual = isDestArraysEqual; exports.isDestHashesEqual = isDestHashesEqual; -exports.PDFHistory = void 0; - -var _ui_utils = __webpack_require__(4); - +var _ui_utils = __webpack_require__(3); +var _event_utils = __webpack_require__(6); const HASH_CHANGE_TIMEOUT = 1000; const POSITION_UPDATED_THRESHOLD = 50; const UPDATE_VIEWAREA_TIMEOUT = 1000; - function getCurrentHash() { return document.location.hash; } - class PDFHistory { constructor({ linkService, @@ -6177,15 +5744,8 @@ class PDFHistory { this._fingerprint = ""; this.reset(); this._boundEvents = null; - this._isViewerInPresentationMode = false; - - this.eventBus._on("presentationmodechanged", evt => { - this._isViewerInPresentationMode = evt.state !== _ui_utils.PresentationModeState.NORMAL; - }); - this.eventBus._on("pagesinit", () => { this._isPagesLoaded = false; - this.eventBus._on("pagesloaded", evt => { this._isPagesLoaded = !!evt.pagesCount; }, { @@ -6193,7 +5753,6 @@ class PDFHistory { }); }); } - initialize({ fingerprint, resetHistory = false, @@ -6203,18 +5762,14 @@ class PDFHistory { console.error('PDFHistory.initialize: The "fingerprint" must be a non-empty string.'); return; } - if (this._initialized) { this.reset(); } - const reInitialized = this._fingerprint !== "" && this._fingerprint !== fingerprint; this._fingerprint = fingerprint; this._updateUrl = updateUrl === true; this._initialized = true; - this._bindEvents(); - const state = window.history.state; this._popStateInProgress = false; this._blockHashChange = 0; @@ -6223,37 +5778,28 @@ class PDFHistory { this._uid = this._maxUid = 0; this._destination = null; this._position = null; - if (!this._isValidState(state, true) || resetHistory) { const { hash, page, rotation } = this._parseCurrentHash(true); - if (!hash || reInitialized || resetHistory) { this._pushOrReplaceState(null, true); - return; } - this._pushOrReplaceState({ hash, page, rotation }, true); - return; } - const destination = state.destination; - this._updateInternalState(destination, state.uid, true); - if (destination.rotation !== undefined) { this._initialRotation = destination.rotation; } - if (destination.dest) { this._initialBookmark = JSON.stringify(destination.dest); this._destination.page = null; @@ -6263,25 +5809,19 @@ class PDFHistory { this._initialBookmark = `page=${destination.page}`; } } - reset() { if (this._initialized) { this._pageHide(); - this._initialized = false; - this._unbindEvents(); } - if (this._updateViewareaTimeout) { clearTimeout(this._updateViewareaTimeout); this._updateViewareaTimeout = null; } - this._initialBookmark = null; this._initialRotation = null; } - push({ namedDest = null, explicitDest, @@ -6290,7 +5830,6 @@ class PDFHistory { if (!this._initialized) { return; } - if (namedDest && typeof namedDest !== "string") { console.error("PDFHistory.push: " + `"${namedDest}" is not a valid namedDest parameter.`); return; @@ -6303,34 +5842,26 @@ class PDFHistory { return; } } - const hash = namedDest || JSON.stringify(explicitDest); - if (!hash) { return; } - let forceReplace = false; - if (this._destination && (isDestHashesEqual(this._destination.hash, hash) || isDestArraysEqual(this._destination.dest, explicitDest))) { if (this._destination.page) { return; } - forceReplace = true; } - if (this._popStateInProgress && !forceReplace) { return; } - this._pushOrReplaceState({ dest: explicitDest, hash, page: pageNumber, rotation: this.linkService.rotation }, forceReplace); - if (!this._popStateInProgress) { this._popStateInProgress = true; Promise.resolve().then(() => { @@ -6338,32 +5869,26 @@ class PDFHistory { }); } } - pushPage(pageNumber) { if (!this._initialized) { return; } - if (!this._isValidPage(pageNumber)) { console.error(`PDFHistory.pushPage: "${pageNumber}" is not a valid page number.`); return; } - if (this._destination?.page === pageNumber) { return; } - if (this._popStateInProgress) { return; } - this._pushOrReplaceState({ dest: null, hash: `page=${pageNumber}`, page: pageNumber, rotation: this.linkService.rotation }); - if (!this._popStateInProgress) { this._popStateInProgress = true; Promise.resolve().then(() => { @@ -6371,51 +5896,39 @@ class PDFHistory { }); } } - pushCurrentPosition() { if (!this._initialized || this._popStateInProgress) { return; } - this._tryPushCurrentPosition(); } - back() { if (!this._initialized || this._popStateInProgress) { return; } - const state = window.history.state; - if (this._isValidState(state) && state.uid > 0) { window.history.back(); } } - forward() { if (!this._initialized || this._popStateInProgress) { return; } - const state = window.history.state; - if (this._isValidState(state) && state.uid < this._maxUid) { window.history.forward(); } } - get popStateInProgress() { return this._initialized && (this._popStateInProgress || this._blockHashChange > 0); } - get initialBookmark() { return this._initialized ? this._initialBookmark : null; } - get initialRotation() { return this._initialized ? this._initialRotation : null; } - _pushOrReplaceState(destination, forceReplace = false) { const shouldReplace = forceReplace || !this._destination; const newState = { @@ -6423,88 +5936,65 @@ class PDFHistory { uid: shouldReplace ? this._uid : this._uid + 1, destination }; - this._updateInternalState(destination, newState.uid); - let newUrl; - if (this._updateUrl && destination?.hash) { const baseUrl = document.location.href.split("#")[0]; - if (!baseUrl.startsWith("file://")) { newUrl = `${baseUrl}#${destination.hash}`; } } - if (shouldReplace) { window.history.replaceState(newState, "", newUrl); } else { window.history.pushState(newState, "", newUrl); } } - _tryPushCurrentPosition(temporary = false) { if (!this._position) { return; } - let position = this._position; - if (temporary) { position = Object.assign(Object.create(null), this._position); position.temporary = true; } - if (!this._destination) { this._pushOrReplaceState(position); - return; } - if (this._destination.temporary) { this._pushOrReplaceState(position, true); - return; } - if (this._destination.hash === position.hash) { return; } - if (!this._destination.page && (POSITION_UPDATED_THRESHOLD <= 0 || this._numPositionUpdates <= POSITION_UPDATED_THRESHOLD)) { return; } - let forceReplace = false; - if (this._destination.page >= position.first && this._destination.page <= position.page) { if (this._destination.dest !== undefined || !this._destination.first) { return; } - forceReplace = true; } - this._pushOrReplaceState(position, forceReplace); } - _isValidPage(val) { return Number.isInteger(val) && val > 0 && val <= this.linkService.pagesCount; } - _isValidState(state, checkReload = false) { if (!state) { return false; } - if (state.fingerprint !== this._fingerprint) { if (checkReload) { if (typeof state.fingerprint !== "string" || state.fingerprint.length !== this._fingerprint.length) { return false; } - const [perfEntry] = performance.getEntriesByType("navigation"); - if (perfEntry?.type !== "reload") { return false; } @@ -6512,51 +6002,41 @@ class PDFHistory { return false; } } - if (!Number.isInteger(state.uid) || state.uid < 0) { return false; } - if (state.destination === null || typeof state.destination !== "object") { return false; } - return true; } - _updateInternalState(destination, uid, removeTemporary = false) { if (this._updateViewareaTimeout) { clearTimeout(this._updateViewareaTimeout); this._updateViewareaTimeout = null; } - if (removeTemporary && destination?.temporary) { delete destination.temporary; } - this._destination = destination; this._uid = uid; this._maxUid = Math.max(this._maxUid, uid); this._numPositionUpdates = 0; } - _parseCurrentHash(checkNameddest = false) { const hash = unescape(getCurrentHash()).substring(1); const params = (0, _ui_utils.parseQueryString)(hash); - const nameddest = params.nameddest || ""; - let page = params.page | 0; - + const nameddest = params.get("nameddest") || ""; + let page = params.get("page") | 0; if (!this._isValidPage(page) || checkNameddest && nameddest.length > 0) { page = null; } - return { hash, page, rotation: this.linkService.rotation }; } - _updateViewarea({ location }) { @@ -6564,67 +6044,54 @@ class PDFHistory { clearTimeout(this._updateViewareaTimeout); this._updateViewareaTimeout = null; } - this._position = { - hash: this._isViewerInPresentationMode ? `page=${location.pageNumber}` : location.pdfOpenParams.substring(1), + hash: location.pdfOpenParams.substring(1), page: this.linkService.page, first: location.pageNumber, rotation: location.rotation }; - if (this._popStateInProgress) { return; } - if (POSITION_UPDATED_THRESHOLD > 0 && this._isPagesLoaded && this._destination && !this._destination.page) { this._numPositionUpdates++; } - if (UPDATE_VIEWAREA_TIMEOUT > 0) { this._updateViewareaTimeout = setTimeout(() => { if (!this._popStateInProgress) { this._tryPushCurrentPosition(true); } - this._updateViewareaTimeout = null; }, UPDATE_VIEWAREA_TIMEOUT); } } - _popState({ state }) { const newHash = getCurrentHash(), - hashChanged = this._currentHash !== newHash; + hashChanged = this._currentHash !== newHash; this._currentHash = newHash; - if (!state) { this._uid++; - const { hash, page, rotation } = this._parseCurrentHash(); - this._pushOrReplaceState({ hash, page, rotation }, true); - return; } - if (!this._isValidState(state)) { return; } - this._popStateInProgress = true; - if (hashChanged) { this._blockHashChange++; - (0, _ui_utils.waitOnEventOrTimeout)({ + (0, _event_utils.waitOnEventOrTimeout)({ target: window, name: "hashchange", delay: HASH_CHANGE_TIMEOUT @@ -6632,15 +6099,11 @@ class PDFHistory { this._blockHashChange--; }); } - const destination = state.destination; - this._updateInternalState(destination, state.uid, true); - if ((0, _ui_utils.isValidRotation)(destination.rotation)) { this.linkService.rotation = destination.rotation; } - if (destination.dest) { this.linkService.goToDestination(destination.dest); } else if (destination.hash) { @@ -6648,761 +6111,87 @@ class PDFHistory { } else if (destination.page) { this.linkService.page = destination.page; } - Promise.resolve().then(() => { this._popStateInProgress = false; }); } - _pageHide() { if (!this._destination || this._destination.temporary) { this._tryPushCurrentPosition(); } } - _bindEvents() { if (this._boundEvents) { return; } - this._boundEvents = { updateViewarea: this._updateViewarea.bind(this), popState: this._popState.bind(this), pageHide: this._pageHide.bind(this) }; - this.eventBus._on("updateviewarea", this._boundEvents.updateViewarea); - window.addEventListener("popstate", this._boundEvents.popState); window.addEventListener("pagehide", this._boundEvents.pageHide); } - _unbindEvents() { if (!this._boundEvents) { return; } - this.eventBus._off("updateviewarea", this._boundEvents.updateViewarea); - window.removeEventListener("popstate", this._boundEvents.popState); window.removeEventListener("pagehide", this._boundEvents.pageHide); this._boundEvents = null; } - } - exports.PDFHistory = PDFHistory; - function isDestHashesEqual(destHash, pushHash) { if (typeof destHash !== "string" || typeof pushHash !== "string") { return false; } - if (destHash === pushHash) { return true; } - - const { - nameddest - } = (0, _ui_utils.parseQueryString)(destHash); - + const nameddest = (0, _ui_utils.parseQueryString)(destHash).get("nameddest"); if (nameddest === pushHash) { return true; } - return false; } - function isDestArraysEqual(firstDest, secondDest) { function isEntryEqual(first, second) { if (typeof first !== typeof second) { return false; } - if (Array.isArray(first) || Array.isArray(second)) { return false; } - if (first !== null && typeof first === "object" && second !== null) { if (Object.keys(first).length !== Object.keys(second).length) { return false; } - for (const key in first) { if (!isEntryEqual(first[key], second[key])) { return false; } } - return true; } - return first === second || Number.isNaN(first) && Number.isNaN(second); } - if (!(Array.isArray(firstDest) && Array.isArray(secondDest))) { return false; } - if (firstDest.length !== secondDest.length) { return false; } - for (let i = 0, ii = firstDest.length; i < ii; i++) { if (!isEntryEqual(firstDest[i], secondDest[i])) { return false; } } - return true; } -/***/ }), -/* 18 */ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.PDFLayerViewer = void 0; - -var _base_tree_viewer = __webpack_require__(12); - -class PDFLayerViewer extends _base_tree_viewer.BaseTreeViewer { - constructor(options) { - super(options); - this.l10n = options.l10n; - - this.eventBus._on("resetlayers", this._resetLayers.bind(this)); - - this.eventBus._on("togglelayerstree", this._toggleAllTreeItems.bind(this)); - } - - reset() { - super.reset(); - this._optionalContentConfig = null; - } - - _dispatchEvent(layersCount) { - this.eventBus.dispatch("layersloaded", { - source: this, - layersCount - }); - } - - _bindLink(element, { - groupId, - input - }) { - const setVisibility = () => { - this._optionalContentConfig.setVisibility(groupId, input.checked); - - this.eventBus.dispatch("optionalcontentconfig", { - source: this, - promise: Promise.resolve(this._optionalContentConfig) - }); - }; - - element.onclick = evt => { - if (evt.target === input) { - setVisibility(); - return true; - } else if (evt.target !== element) { - return true; - } - - input.checked = !input.checked; - setVisibility(); - return false; - }; - } - - async _setNestedName(element, { - name = null - }) { - if (typeof name === "string") { - element.textContent = this._normalizeTextContent(name); - return; - } - - element.textContent = await this.l10n.get("additional_layers"); - element.style.fontStyle = "italic"; - } - - _addToggleButton(div, { - name = null - }) { - super._addToggleButton(div, name === null); - } - - _toggleAllTreeItems() { - if (!this._optionalContentConfig) { - return; - } - - super._toggleAllTreeItems(); - } - - render({ - optionalContentConfig, - pdfDocument - }) { - if (this._optionalContentConfig) { - this.reset(); - } - - this._optionalContentConfig = optionalContentConfig || null; - this._pdfDocument = pdfDocument || null; - const groups = optionalContentConfig?.getOrder(); - - if (!groups) { - this._dispatchEvent(0); - - return; - } - - const fragment = document.createDocumentFragment(), - queue = [{ - parent: fragment, - groups - }]; - let layersCount = 0, - hasAnyNesting = false; - - while (queue.length > 0) { - const levelData = queue.shift(); - - for (const groupId of levelData.groups) { - const div = document.createElement("div"); - div.className = "treeItem"; - const element = document.createElement("a"); - div.appendChild(element); - - if (typeof groupId === "object") { - hasAnyNesting = true; - - this._addToggleButton(div, groupId); - - this._setNestedName(element, groupId); - - const itemsDiv = document.createElement("div"); - itemsDiv.className = "treeItems"; - div.appendChild(itemsDiv); - queue.push({ - parent: itemsDiv, - groups: groupId.order - }); - } else { - const group = optionalContentConfig.getGroup(groupId); - const input = document.createElement("input"); - - this._bindLink(element, { - groupId, - input - }); - - input.type = "checkbox"; - input.id = groupId; - input.checked = group.visible; - const label = document.createElement("label"); - label.setAttribute("for", groupId); - label.textContent = this._normalizeTextContent(group.name); - element.appendChild(input); - element.appendChild(label); - layersCount++; - } - - levelData.parent.appendChild(div); - } - } - - this._finishRendering(fragment, layersCount, hasAnyNesting); - } - - async _resetLayers() { - if (!this._optionalContentConfig) { - return; - } - - const optionalContentConfig = await this._pdfDocument.getOptionalContentConfig(); - this.eventBus.dispatch("optionalcontentconfig", { - source: this, - promise: Promise.resolve(optionalContentConfig) - }); - this.render({ - optionalContentConfig, - pdfDocument: this._pdfDocument - }); - } - -} - -exports.PDFLayerViewer = PDFLayerViewer; - -/***/ }), -/* 19 */ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.SimpleLinkService = exports.PDFLinkService = void 0; - -var _ui_utils = __webpack_require__(4); - -class PDFLinkService { - constructor({ - eventBus, - externalLinkTarget = null, - externalLinkRel = null, - ignoreDestinationZoom = false - } = {}) { - this.eventBus = eventBus; - this.externalLinkTarget = externalLinkTarget; - this.externalLinkRel = externalLinkRel; - this.externalLinkEnabled = true; - this._ignoreDestinationZoom = ignoreDestinationZoom; - this.baseUrl = null; - this.pdfDocument = null; - this.pdfViewer = null; - this.pdfHistory = null; - this._pagesRefCache = null; - } - - setDocument(pdfDocument, baseUrl = null) { - this.baseUrl = baseUrl; - this.pdfDocument = pdfDocument; - this._pagesRefCache = Object.create(null); - } - - setViewer(pdfViewer) { - this.pdfViewer = pdfViewer; - } - - setHistory(pdfHistory) { - this.pdfHistory = pdfHistory; - } - - get pagesCount() { - return this.pdfDocument ? this.pdfDocument.numPages : 0; - } - - get page() { - return this.pdfViewer.currentPageNumber; - } - - set page(value) { - this.pdfViewer.currentPageNumber = value; - } - - get rotation() { - return this.pdfViewer.pagesRotation; - } - - set rotation(value) { - this.pdfViewer.pagesRotation = value; - } - - _goToDestinationHelper(rawDest, namedDest = null, explicitDest) { - const destRef = explicitDest[0]; - let pageNumber; - - if (typeof destRef === "object" && destRef !== null) { - pageNumber = this._cachedPageNumber(destRef); - - if (pageNumber === null) { - this.pdfDocument.getPageIndex(destRef).then(pageIndex => { - this.cachePageRef(pageIndex + 1, destRef); - - this._goToDestinationHelper(rawDest, namedDest, explicitDest); - }).catch(() => { - console.error(`PDFLinkService._goToDestinationHelper: "${destRef}" is not ` + `a valid page reference, for dest="${rawDest}".`); - }); - return; - } - } else if (Number.isInteger(destRef)) { - pageNumber = destRef + 1; - } else { - console.error(`PDFLinkService._goToDestinationHelper: "${destRef}" is not ` + `a valid destination reference, for dest="${rawDest}".`); - return; - } - - if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) { - console.error(`PDFLinkService._goToDestinationHelper: "${pageNumber}" is not ` + `a valid page number, for dest="${rawDest}".`); - return; - } - - if (this.pdfHistory) { - this.pdfHistory.pushCurrentPosition(); - this.pdfHistory.push({ - namedDest, - explicitDest, - pageNumber - }); - } - - this.pdfViewer.scrollPageIntoView({ - pageNumber, - destArray: explicitDest, - ignoreDestinationZoom: this._ignoreDestinationZoom - }); - } - - async goToDestination(dest) { - if (!this.pdfDocument) { - return; - } - - let namedDest, explicitDest; - - if (typeof dest === "string") { - namedDest = dest; - explicitDest = await this.pdfDocument.getDestination(dest); - } else { - namedDest = null; - explicitDest = await dest; - } - - if (!Array.isArray(explicitDest)) { - console.error(`PDFLinkService.goToDestination: "${explicitDest}" is not ` + `a valid destination array, for dest="${dest}".`); - return; - } - - this._goToDestinationHelper(dest, namedDest, explicitDest); - } - - goToPage(val) { - if (!this.pdfDocument) { - return; - } - - const pageNumber = typeof val === "string" && this.pdfViewer.pageLabelToPageNumber(val) || val | 0; - - if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) { - console.error(`PDFLinkService.goToPage: "${val}" is not a valid page.`); - return; - } - - if (this.pdfHistory) { - this.pdfHistory.pushCurrentPosition(); - this.pdfHistory.pushPage(pageNumber); - } - - this.pdfViewer.scrollPageIntoView({ - pageNumber - }); - } - - getDestinationHash(dest) { - if (typeof dest === "string") { - if (dest.length > 0) { - return this.getAnchorUrl("#" + escape(dest)); - } - } else if (Array.isArray(dest)) { - const str = JSON.stringify(dest); - - if (str.length > 0) { - return this.getAnchorUrl("#" + escape(str)); - } - } - - return this.getAnchorUrl(""); - } - - getAnchorUrl(anchor) { - return (this.baseUrl || "") + anchor; - } - - setHash(hash) { - if (!this.pdfDocument) { - return; - } - - let pageNumber, dest; - - if (hash.includes("=")) { - const params = (0, _ui_utils.parseQueryString)(hash); - - if ("search" in params) { - this.eventBus.dispatch("findfromurlhash", { - source: this, - query: params.search.replace(/"/g, ""), - phraseSearch: params.phrase === "true" - }); - } - - if ("page" in params) { - pageNumber = params.page | 0 || 1; - } - - if ("zoom" in params) { - const zoomArgs = params.zoom.split(","); - const zoomArg = zoomArgs[0]; - const zoomArgNumber = parseFloat(zoomArg); - - if (!zoomArg.includes("Fit")) { - dest = [null, { - name: "XYZ" - }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null, zoomArgs.length > 2 ? zoomArgs[2] | 0 : null, zoomArgNumber ? zoomArgNumber / 100 : zoomArg]; - } else { - if (zoomArg === "Fit" || zoomArg === "FitB") { - dest = [null, { - name: zoomArg - }]; - } else if (zoomArg === "FitH" || zoomArg === "FitBH" || zoomArg === "FitV" || zoomArg === "FitBV") { - dest = [null, { - name: zoomArg - }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null]; - } else if (zoomArg === "FitR") { - if (zoomArgs.length !== 5) { - console.error('PDFLinkService.setHash: Not enough parameters for "FitR".'); - } else { - dest = [null, { - name: zoomArg - }, zoomArgs[1] | 0, zoomArgs[2] | 0, zoomArgs[3] | 0, zoomArgs[4] | 0]; - } - } else { - console.error(`PDFLinkService.setHash: "${zoomArg}" is not ` + "a valid zoom value."); - } - } - } - - if (dest) { - this.pdfViewer.scrollPageIntoView({ - pageNumber: pageNumber || this.page, - destArray: dest, - allowNegativeOffset: true - }); - } else if (pageNumber) { - this.page = pageNumber; - } - - if ("pagemode" in params) { - this.eventBus.dispatch("pagemode", { - source: this, - mode: params.pagemode - }); - } - - if ("nameddest" in params) { - this.goToDestination(params.nameddest); - } - } else { - dest = unescape(hash); - - try { - dest = JSON.parse(dest); - - if (!Array.isArray(dest)) { - dest = dest.toString(); - } - } catch (ex) {} - - if (typeof dest === "string" || isValidExplicitDestination(dest)) { - this.goToDestination(dest); - return; - } - - console.error(`PDFLinkService.setHash: "${unescape(hash)}" is not ` + "a valid destination."); - } - } - - executeNamedAction(action) { - switch (action) { - case "GoBack": - if (this.pdfHistory) { - this.pdfHistory.back(); - } - - break; - - case "GoForward": - if (this.pdfHistory) { - this.pdfHistory.forward(); - } - - break; - - case "NextPage": - this.pdfViewer.nextPage(); - break; - - case "PrevPage": - this.pdfViewer.previousPage(); - break; - - case "LastPage": - this.page = this.pagesCount; - break; - - case "FirstPage": - this.page = 1; - break; - - default: - break; - } - - this.eventBus.dispatch("namedaction", { - source: this, - action - }); - } - - cachePageRef(pageNum, pageRef) { - if (!pageRef) { - return; - } - - const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`; - this._pagesRefCache[refStr] = pageNum; - } - - _cachedPageNumber(pageRef) { - const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`; - return this._pagesRefCache?.[refStr] || null; - } - - isPageVisible(pageNumber) { - return this.pdfViewer.isPageVisible(pageNumber); - } - - isPageCached(pageNumber) { - return this.pdfViewer.isPageCached(pageNumber); - } - -} - -exports.PDFLinkService = PDFLinkService; - -function isValidExplicitDestination(dest) { - if (!Array.isArray(dest)) { - return false; - } - - const destLength = dest.length; - - if (destLength < 2) { - return false; - } - - const page = dest[0]; - - if (!(typeof page === "object" && Number.isInteger(page.num) && Number.isInteger(page.gen)) && !(Number.isInteger(page) && page >= 0)) { - return false; - } - - const zoom = dest[1]; - - if (!(typeof zoom === "object" && typeof zoom.name === "string")) { - return false; - } - - let allowNull = true; - - switch (zoom.name) { - case "XYZ": - if (destLength !== 5) { - return false; - } - - break; - - case "Fit": - case "FitB": - return destLength === 2; - - case "FitH": - case "FitBH": - case "FitV": - case "FitBV": - if (destLength !== 3) { - return false; - } - - break; - - case "FitR": - if (destLength !== 6) { - return false; - } - - allowNull = false; - break; - - default: - return false; - } - - for (let i = 2; i < destLength; i++) { - const param = dest[i]; - - if (!(typeof param === "number" || allowNull && param === null)) { - return false; - } - } - - return true; -} - -class SimpleLinkService { - constructor() { - this.externalLinkTarget = null; - this.externalLinkRel = null; - this.externalLinkEnabled = true; - this._ignoreDestinationZoom = false; - } - - get pagesCount() { - return 0; - } - - get page() { - return 0; - } - - set page(value) {} - - get rotation() { - return 0; - } - - set rotation(value) {} - - async goToDestination(dest) {} - - goToPage(val) {} - - getDestinationHash(dest) { - return "#"; - } - - getAnchorUrl(hash) { - return "#"; - } - - setHash(hash) {} - - executeNamedAction(action) {} - - cachePageRef(pageNum, pageRef) {} - - isPageVisible(pageNumber) { - return true; - } - - isPageCached(pageNumber) { - return true; - } - -} - -exports.SimpleLinkService = SimpleLinkService; - /***/ }), /* 20 */ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { @@ -7412,336 +6201,162 @@ exports.SimpleLinkService = SimpleLinkService; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.PDFOutlineViewer = void 0; - -var _pdfjsLib = __webpack_require__(5); - +exports.PDFLayerViewer = void 0; var _base_tree_viewer = __webpack_require__(12); - -var _ui_utils = __webpack_require__(4); - -class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer { +class PDFLayerViewer extends _base_tree_viewer.BaseTreeViewer { constructor(options) { super(options); - this.linkService = options.linkService; - - this.eventBus._on("toggleoutlinetree", this._toggleAllTreeItems.bind(this)); - - this.eventBus._on("currentoutlineitem", this._currentOutlineItem.bind(this)); - - this.eventBus._on("pagechanging", evt => { - this._currentPageNumber = evt.pageNumber; + this.l10n = options.l10n; + this.eventBus._on("optionalcontentconfigchanged", evt => { + this.#updateLayers(evt.promise); }); - - this.eventBus._on("pagesloaded", evt => { - this._isPagesLoaded = !!evt.pagesCount; - - if (this._currentOutlineItemCapability && !this._currentOutlineItemCapability.settled) { - this._currentOutlineItemCapability.resolve(this._isPagesLoaded); - } - }); - - this.eventBus._on("sidebarviewchanged", evt => { - this._sidebarView = evt.view; + this.eventBus._on("resetlayers", () => { + this.#updateLayers(); }); + this.eventBus._on("togglelayerstree", this._toggleAllTreeItems.bind(this)); } - reset() { super.reset(); - this._outline = null; - this._pageNumberToDestHashCapability = null; - this._currentPageNumber = 1; - this._isPagesLoaded = false; - - if (this._currentOutlineItemCapability && !this._currentOutlineItemCapability.settled) { - this._currentOutlineItemCapability.resolve(false); - } - - this._currentOutlineItemCapability = null; + this._optionalContentConfig = null; + this._optionalContentHash = null; } - - _dispatchEvent(outlineCount) { - this._currentOutlineItemCapability = (0, _pdfjsLib.createPromiseCapability)(); - - if (outlineCount === 0 || this._pdfDocument?.loadingParams.disableAutoFetch) { - this._currentOutlineItemCapability.resolve(false); - } else if (this._isPagesLoaded) { - this._currentOutlineItemCapability.resolve(true); - } - - this.eventBus.dispatch("outlineloaded", { + _dispatchEvent(layersCount) { + this.eventBus.dispatch("layersloaded", { source: this, - outlineCount, - currentOutlineItemPromise: this._currentOutlineItemCapability.promise + layersCount }); } - _bindLink(element, { - url, - newWindow, - dest + groupId, + input }) { - const { - linkService - } = this; - - if (url) { - (0, _pdfjsLib.addLinkAttributes)(element, { - url, - target: newWindow ? _pdfjsLib.LinkTarget.BLANK : linkService.externalLinkTarget, - rel: linkService.externalLinkRel, - enabled: linkService.externalLinkEnabled + const setVisibility = () => { + this._optionalContentConfig.setVisibility(groupId, input.checked); + this._optionalContentHash = this._optionalContentConfig.getHash(); + this.eventBus.dispatch("optionalcontentconfig", { + source: this, + promise: Promise.resolve(this._optionalContentConfig) }); - return; - } - - element.href = linkService.getDestinationHash(dest); - + }; element.onclick = evt => { - this._updateCurrentTreeItem(evt.target.parentNode); - - if (dest) { - linkService.goToDestination(dest); + if (evt.target === input) { + setVisibility(); + return true; + } else if (evt.target !== element) { + return true; } - + input.checked = !input.checked; + setVisibility(); return false; }; } - - _setStyles(element, { - bold, - italic + async _setNestedName(element, { + name = null }) { - if (bold) { - element.style.fontWeight = "bold"; - } - - if (italic) { - element.style.fontStyle = "italic"; - } - } - - _addToggleButton(div, { - count, - items - }) { - let hidden = false; - - if (count < 0) { - let totalCount = items.length; - - if (totalCount > 0) { - const queue = [...items]; - - while (queue.length > 0) { - const { - count: nestedCount, - items: nestedItems - } = queue.shift(); - - if (nestedCount > 0 && nestedItems.length > 0) { - totalCount += nestedItems.length; - queue.push(...nestedItems); - } - } - } - - if (Math.abs(count) === totalCount) { - hidden = true; - } - } - - super._addToggleButton(div, hidden); - } - - _toggleAllTreeItems() { - if (!this._outline) { + if (typeof name === "string") { + element.textContent = this._normalizeTextContent(name); + return; + } + element.textContent = await this.l10n.get("additional_layers"); + element.style.fontStyle = "italic"; + } + _addToggleButton(div, { + name = null + }) { + super._addToggleButton(div, name === null); + } + _toggleAllTreeItems() { + if (!this._optionalContentConfig) { return; } - super._toggleAllTreeItems(); } - render({ - outline, + optionalContentConfig, pdfDocument }) { - if (this._outline) { + if (this._optionalContentConfig) { this.reset(); } - - this._outline = outline || null; + this._optionalContentConfig = optionalContentConfig || null; this._pdfDocument = pdfDocument || null; - - if (!outline) { + const groups = optionalContentConfig?.getOrder(); + if (!groups) { this._dispatchEvent(0); - return; } - - const fragment = document.createDocumentFragment(); - const queue = [{ - parent: fragment, - items: outline - }]; - let outlineCount = 0, - hasAnyNesting = false; - + this._optionalContentHash = optionalContentConfig.getHash(); + const fragment = document.createDocumentFragment(), + queue = [{ + parent: fragment, + groups + }]; + let layersCount = 0, + hasAnyNesting = false; while (queue.length > 0) { const levelData = queue.shift(); - - for (const item of levelData.items) { + for (const groupId of levelData.groups) { const div = document.createElement("div"); div.className = "treeItem"; const element = document.createElement("a"); - - this._bindLink(element, item); - - this._setStyles(element, item); - - element.textContent = this._normalizeTextContent(item.title); - div.appendChild(element); - - if (item.items.length > 0) { + div.append(element); + if (typeof groupId === "object") { hasAnyNesting = true; - - this._addToggleButton(div, item); - + this._addToggleButton(div, groupId); + this._setNestedName(element, groupId); const itemsDiv = document.createElement("div"); itemsDiv.className = "treeItems"; - div.appendChild(itemsDiv); + div.append(itemsDiv); queue.push({ parent: itemsDiv, - items: item.items + groups: groupId.order }); - } - - levelData.parent.appendChild(div); - outlineCount++; - } - } - - this._finishRendering(fragment, outlineCount, hasAnyNesting); - } - - async _currentOutlineItem() { - if (!this._isPagesLoaded) { - throw new Error("_currentOutlineItem: All pages have not been loaded."); - } - - if (!this._outline || !this._pdfDocument) { - return; - } - - const pageNumberToDestHash = await this._getPageNumberToDestHash(this._pdfDocument); - - if (!pageNumberToDestHash) { - return; - } - - this._updateCurrentTreeItem(null); - - if (this._sidebarView !== _ui_utils.SidebarView.OUTLINE) { - return; - } - - for (let i = this._currentPageNumber; i > 0; i--) { - const destHash = pageNumberToDestHash.get(i); - - if (!destHash) { - continue; - } - - const linkElement = this.container.querySelector(`a[href="${destHash}"]`); - - if (!linkElement) { - continue; - } - - this._scrollToCurrentTreeItem(linkElement.parentNode); - - break; - } - } - - async _getPageNumberToDestHash(pdfDocument) { - if (this._pageNumberToDestHashCapability) { - return this._pageNumberToDestHashCapability.promise; - } - - this._pageNumberToDestHashCapability = (0, _pdfjsLib.createPromiseCapability)(); - const pageNumberToDestHash = new Map(), - pageNumberNesting = new Map(); - const queue = [{ - nesting: 0, - items: this._outline - }]; - - while (queue.length > 0) { - const levelData = queue.shift(), - currentNesting = levelData.nesting; - - for (const { - dest, - items - } of levelData.items) { - let explicitDest, pageNumber; - - if (typeof dest === "string") { - explicitDest = await pdfDocument.getDestination(dest); - - if (pdfDocument !== this._pdfDocument) { - return null; - } } else { - explicitDest = dest; - } - - if (Array.isArray(explicitDest)) { - const [destRef] = explicitDest; - - if (typeof destRef === "object" && destRef !== null) { - pageNumber = this.linkService._cachedPageNumber(destRef); - - if (!pageNumber) { - try { - pageNumber = (await pdfDocument.getPageIndex(destRef)) + 1; - - if (pdfDocument !== this._pdfDocument) { - return null; - } - - this.linkService.cachePageRef(pageNumber, destRef); - } catch (ex) {} - } - } else if (Number.isInteger(destRef)) { - pageNumber = destRef + 1; - } - - if (Number.isInteger(pageNumber) && (!pageNumberToDestHash.has(pageNumber) || currentNesting > pageNumberNesting.get(pageNumber))) { - const destHash = this.linkService.getDestinationHash(dest); - pageNumberToDestHash.set(pageNumber, destHash); - pageNumberNesting.set(pageNumber, currentNesting); - } - } - - if (items.length > 0) { - queue.push({ - nesting: currentNesting + 1, - items + const group = optionalContentConfig.getGroup(groupId); + const input = document.createElement("input"); + this._bindLink(element, { + groupId, + input }); + input.type = "checkbox"; + input.checked = group.visible; + const label = document.createElement("label"); + label.textContent = this._normalizeTextContent(group.name); + label.append(input); + element.append(label); + layersCount++; } + levelData.parent.append(div); } } - - this._pageNumberToDestHashCapability.resolve(pageNumberToDestHash.size > 0 ? pageNumberToDestHash : null); - - return this._pageNumberToDestHashCapability.promise; + this._finishRendering(fragment, layersCount, hasAnyNesting); + } + async #updateLayers(promise = null) { + if (!this._optionalContentConfig) { + return; + } + const pdfDocument = this._pdfDocument; + const optionalContentConfig = await (promise || pdfDocument.getOptionalContentConfig()); + if (pdfDocument !== this._pdfDocument) { + return; + } + if (promise) { + if (optionalContentConfig.getHash() === this._optionalContentHash) { + return; + } + } else { + this.eventBus.dispatch("optionalcontentconfig", { + source: this, + promise: Promise.resolve(optionalContentConfig) + }); + } + this.render({ + optionalContentConfig, + pdfDocument: this._pdfDocument + }); } - } - -exports.PDFOutlineViewer = PDFOutlineViewer; +exports.PDFLayerViewer = PDFLayerViewer; /***/ }), /* 21 */ @@ -7749,14 +6364,298 @@ exports.PDFOutlineViewer = PDFOutlineViewer; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFOutlineViewer = void 0; +var _base_tree_viewer = __webpack_require__(12); +var _pdfjsLib = __webpack_require__(4); +var _ui_utils = __webpack_require__(3); +class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer { + constructor(options) { + super(options); + this.linkService = options.linkService; + this.downloadManager = options.downloadManager; + this.eventBus._on("toggleoutlinetree", this._toggleAllTreeItems.bind(this)); + this.eventBus._on("currentoutlineitem", this._currentOutlineItem.bind(this)); + this.eventBus._on("pagechanging", evt => { + this._currentPageNumber = evt.pageNumber; + }); + this.eventBus._on("pagesloaded", evt => { + this._isPagesLoaded = !!evt.pagesCount; + if (this._currentOutlineItemCapability && !this._currentOutlineItemCapability.settled) { + this._currentOutlineItemCapability.resolve(this._isPagesLoaded); + } + }); + this.eventBus._on("sidebarviewchanged", evt => { + this._sidebarView = evt.view; + }); + } + reset() { + super.reset(); + this._outline = null; + this._pageNumberToDestHashCapability = null; + this._currentPageNumber = 1; + this._isPagesLoaded = null; + if (this._currentOutlineItemCapability && !this._currentOutlineItemCapability.settled) { + this._currentOutlineItemCapability.resolve(false); + } + this._currentOutlineItemCapability = null; + } + _dispatchEvent(outlineCount) { + this._currentOutlineItemCapability = new _pdfjsLib.PromiseCapability(); + if (outlineCount === 0 || this._pdfDocument?.loadingParams.disableAutoFetch) { + this._currentOutlineItemCapability.resolve(false); + } else if (this._isPagesLoaded !== null) { + this._currentOutlineItemCapability.resolve(this._isPagesLoaded); + } + this.eventBus.dispatch("outlineloaded", { + source: this, + outlineCount, + currentOutlineItemPromise: this._currentOutlineItemCapability.promise + }); + } + _bindLink(element, { + url, + newWindow, + action, + attachment, + dest, + setOCGState + }) { + const { + linkService + } = this; + if (url) { + linkService.addLinkAttributes(element, url, newWindow); + return; + } + if (action) { + element.href = linkService.getAnchorUrl(""); + element.onclick = () => { + linkService.executeNamedAction(action); + return false; + }; + return; + } + if (attachment) { + element.href = linkService.getAnchorUrl(""); + element.onclick = () => { + this.downloadManager.openOrDownloadData(element, attachment.content, attachment.filename); + return false; + }; + return; + } + if (setOCGState) { + element.href = linkService.getAnchorUrl(""); + element.onclick = () => { + linkService.executeSetOCGState(setOCGState); + return false; + }; + return; + } + element.href = linkService.getDestinationHash(dest); + element.onclick = evt => { + this._updateCurrentTreeItem(evt.target.parentNode); + if (dest) { + linkService.goToDestination(dest); + } + return false; + }; + } + _setStyles(element, { + bold, + italic + }) { + if (bold) { + element.style.fontWeight = "bold"; + } + if (italic) { + element.style.fontStyle = "italic"; + } + } + _addToggleButton(div, { + count, + items + }) { + let hidden = false; + if (count < 0) { + let totalCount = items.length; + if (totalCount > 0) { + const queue = [...items]; + while (queue.length > 0) { + const { + count: nestedCount, + items: nestedItems + } = queue.shift(); + if (nestedCount > 0 && nestedItems.length > 0) { + totalCount += nestedItems.length; + queue.push(...nestedItems); + } + } + } + if (Math.abs(count) === totalCount) { + hidden = true; + } + } + super._addToggleButton(div, hidden); + } + _toggleAllTreeItems() { + if (!this._outline) { + return; + } + super._toggleAllTreeItems(); + } + render({ + outline, + pdfDocument + }) { + if (this._outline) { + this.reset(); + } + this._outline = outline || null; + this._pdfDocument = pdfDocument || null; + if (!outline) { + this._dispatchEvent(0); + return; + } + const fragment = document.createDocumentFragment(); + const queue = [{ + parent: fragment, + items: outline + }]; + let outlineCount = 0, + hasAnyNesting = false; + while (queue.length > 0) { + const levelData = queue.shift(); + for (const item of levelData.items) { + const div = document.createElement("div"); + div.className = "treeItem"; + const element = document.createElement("a"); + this._bindLink(element, item); + this._setStyles(element, item); + element.textContent = this._normalizeTextContent(item.title); + div.append(element); + if (item.items.length > 0) { + hasAnyNesting = true; + this._addToggleButton(div, item); + const itemsDiv = document.createElement("div"); + itemsDiv.className = "treeItems"; + div.append(itemsDiv); + queue.push({ + parent: itemsDiv, + items: item.items + }); + } + levelData.parent.append(div); + outlineCount++; + } + } + this._finishRendering(fragment, outlineCount, hasAnyNesting); + } + async _currentOutlineItem() { + if (!this._isPagesLoaded) { + throw new Error("_currentOutlineItem: All pages have not been loaded."); + } + if (!this._outline || !this._pdfDocument) { + return; + } + const pageNumberToDestHash = await this._getPageNumberToDestHash(this._pdfDocument); + if (!pageNumberToDestHash) { + return; + } + this._updateCurrentTreeItem(null); + if (this._sidebarView !== _ui_utils.SidebarView.OUTLINE) { + return; + } + for (let i = this._currentPageNumber; i > 0; i--) { + const destHash = pageNumberToDestHash.get(i); + if (!destHash) { + continue; + } + const linkElement = this.container.querySelector(`a[href="${destHash}"]`); + if (!linkElement) { + continue; + } + this._scrollToCurrentTreeItem(linkElement.parentNode); + break; + } + } + async _getPageNumberToDestHash(pdfDocument) { + if (this._pageNumberToDestHashCapability) { + return this._pageNumberToDestHashCapability.promise; + } + this._pageNumberToDestHashCapability = new _pdfjsLib.PromiseCapability(); + const pageNumberToDestHash = new Map(), + pageNumberNesting = new Map(); + const queue = [{ + nesting: 0, + items: this._outline + }]; + while (queue.length > 0) { + const levelData = queue.shift(), + currentNesting = levelData.nesting; + for (const { + dest, + items + } of levelData.items) { + let explicitDest, pageNumber; + if (typeof dest === "string") { + explicitDest = await pdfDocument.getDestination(dest); + if (pdfDocument !== this._pdfDocument) { + return null; + } + } else { + explicitDest = dest; + } + if (Array.isArray(explicitDest)) { + const [destRef] = explicitDest; + if (typeof destRef === "object" && destRef !== null) { + pageNumber = this.linkService._cachedPageNumber(destRef); + if (!pageNumber) { + try { + pageNumber = (await pdfDocument.getPageIndex(destRef)) + 1; + if (pdfDocument !== this._pdfDocument) { + return null; + } + this.linkService.cachePageRef(pageNumber, destRef); + } catch {} + } + } else if (Number.isInteger(destRef)) { + pageNumber = destRef + 1; + } + if (Number.isInteger(pageNumber) && (!pageNumberToDestHash.has(pageNumber) || currentNesting > pageNumberNesting.get(pageNumber))) { + const destHash = this.linkService.getDestinationHash(dest); + pageNumberToDestHash.set(pageNumber, destHash); + pageNumberNesting.set(pageNumber, currentNesting); + } + } + if (items.length > 0) { + queue.push({ + nesting: currentNesting + 1, + items + }); + } + } + } + this._pageNumberToDestHashCapability.resolve(pageNumberToDestHash.size > 0 ? pageNumberToDestHash : null); + return this._pageNumberToDestHashCapability.promise; + } +} +exports.PDFOutlineViewer = PDFOutlineViewer; + +/***/ }), +/* 22 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + Object.defineProperty(exports, "__esModule", ({ value: true })); exports.PDFPresentationMode = void 0; - -var _ui_utils = __webpack_require__(4); - -const DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS = 1500; +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); const DELAY_BEFORE_HIDING_CONTROLS = 3000; const ACTIVE_SELECTOR = "pdfPresentationMode"; const CONTROLS_SELECTOR = "pdfPresentationModeControls"; @@ -7764,8 +6663,9 @@ const MOUSE_SCROLL_COOLDOWN_TIME = 50; const PAGE_SWITCH_THRESHOLD = 0.1; const SWIPE_MIN_DISTANCE_THRESHOLD = 50; const SWIPE_ANGLE_THRESHOLD = Math.PI / 6; - class PDFPresentationMode { + #state = _ui_utils.PresentationModeState.UNKNOWN; + #args = null; constructor({ container, pdfViewer, @@ -7774,224 +6674,174 @@ class PDFPresentationMode { this.container = container; this.pdfViewer = pdfViewer; this.eventBus = eventBus; - this.active = false; - this.args = null; this.contextMenuOpen = false; this.mouseScrollTimeStamp = 0; this.mouseScrollDelta = 0; this.touchSwipeState = null; } - - request() { - if (this.switchInProgress || this.active || !this.pdfViewer.pagesCount) { + async request() { + const { + container, + pdfViewer + } = this; + if (this.active || !pdfViewer.pagesCount || !container.requestFullscreen) { return false; } - - this._addFullscreenChangeListeners(); - - this._setSwitchInProgress(); - - this._notifyStateChange(); - - if (this.container.requestFullscreen) { - this.container.requestFullscreen(); - } else if (this.container.mozRequestFullScreen) { - this.container.mozRequestFullScreen(); - } else if (this.container.webkitRequestFullscreen) { - this.container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); - } else { - return false; - } - - this.args = { - page: this.pdfViewer.currentPageNumber, - previousScale: this.pdfViewer.currentScaleValue + this.#addFullscreenChangeListeners(); + this.#notifyStateChange(_ui_utils.PresentationModeState.CHANGING); + const promise = container.requestFullscreen(); + this.#args = { + pageNumber: pdfViewer.currentPageNumber, + scaleValue: pdfViewer.currentScaleValue, + scrollMode: pdfViewer.scrollMode, + spreadMode: null, + annotationEditorMode: null }; - return true; + if (pdfViewer.spreadMode !== _ui_utils.SpreadMode.NONE && !(pdfViewer.pageViewsReady && pdfViewer.hasEqualPageSizes)) { + console.warn("Ignoring Spread modes when entering PresentationMode, " + "since the document may contain varying page sizes."); + this.#args.spreadMode = pdfViewer.spreadMode; + } + if (pdfViewer.annotationEditorMode !== _pdfjsLib.AnnotationEditorType.DISABLE) { + this.#args.annotationEditorMode = pdfViewer.annotationEditorMode; + } + try { + await promise; + pdfViewer.focus(); + return true; + } catch { + this.#removeFullscreenChangeListeners(); + this.#notifyStateChange(_ui_utils.PresentationModeState.NORMAL); + } + return false; } - - _mouseWheel(evt) { + get active() { + return this.#state === _ui_utils.PresentationModeState.CHANGING || this.#state === _ui_utils.PresentationModeState.FULLSCREEN; + } + #mouseWheel(evt) { if (!this.active) { return; } - evt.preventDefault(); const delta = (0, _ui_utils.normalizeWheelEventDelta)(evt); const currentTime = Date.now(); const storedTime = this.mouseScrollTimeStamp; - if (currentTime > storedTime && currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME) { return; } - if (this.mouseScrollDelta > 0 && delta < 0 || this.mouseScrollDelta < 0 && delta > 0) { - this._resetMouseScrollState(); + this.#resetMouseScrollState(); } - this.mouseScrollDelta += delta; - if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) { const totalDelta = this.mouseScrollDelta; - - this._resetMouseScrollState(); - + this.#resetMouseScrollState(); const success = totalDelta > 0 ? this.pdfViewer.previousPage() : this.pdfViewer.nextPage(); - if (success) { this.mouseScrollTimeStamp = currentTime; } } } - - get isFullscreen() { - return !!(document.fullscreenElement || document.mozFullScreen || document.webkitIsFullScreen); - } - - _notifyStateChange() { - let state = _ui_utils.PresentationModeState.NORMAL; - - if (this.switchInProgress) { - state = _ui_utils.PresentationModeState.CHANGING; - } else if (this.active) { - state = _ui_utils.PresentationModeState.FULLSCREEN; - } - + #notifyStateChange(state) { + this.#state = state; this.eventBus.dispatch("presentationmodechanged", { source: this, state }); } - - _setSwitchInProgress() { - if (this.switchInProgress) { - clearTimeout(this.switchInProgress); - } - - this.switchInProgress = setTimeout(() => { - this._removeFullscreenChangeListeners(); - - delete this.switchInProgress; - - this._notifyStateChange(); - }, DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS); - } - - _resetSwitchInProgress() { - if (this.switchInProgress) { - clearTimeout(this.switchInProgress); - delete this.switchInProgress; - } - } - - _enter() { - this.active = true; - - this._resetSwitchInProgress(); - - this._notifyStateChange(); - + #enter() { + this.#notifyStateChange(_ui_utils.PresentationModeState.FULLSCREEN); this.container.classList.add(ACTIVE_SELECTOR); setTimeout(() => { - this.pdfViewer.currentPageNumber = this.args.page; + this.pdfViewer.scrollMode = _ui_utils.ScrollMode.PAGE; + if (this.#args.spreadMode !== null) { + this.pdfViewer.spreadMode = _ui_utils.SpreadMode.NONE; + } + this.pdfViewer.currentPageNumber = this.#args.pageNumber; this.pdfViewer.currentScaleValue = "page-fit"; + if (this.#args.annotationEditorMode !== null) { + this.pdfViewer.annotationEditorMode = _pdfjsLib.AnnotationEditorType.NONE; + } }, 0); - - this._addWindowListeners(); - - this._showControls(); - + this.#addWindowListeners(); + this.#showControls(); this.contextMenuOpen = false; window.getSelection().removeAllRanges(); } - - _exit() { - const page = this.pdfViewer.currentPageNumber; + #exit() { + const pageNumber = this.pdfViewer.currentPageNumber; this.container.classList.remove(ACTIVE_SELECTOR); setTimeout(() => { - this.active = false; - - this._removeFullscreenChangeListeners(); - - this._notifyStateChange(); - - this.pdfViewer.currentScaleValue = this.args.previousScale; - this.pdfViewer.currentPageNumber = page; - this.args = null; + this.#removeFullscreenChangeListeners(); + this.#notifyStateChange(_ui_utils.PresentationModeState.NORMAL); + this.pdfViewer.scrollMode = this.#args.scrollMode; + if (this.#args.spreadMode !== null) { + this.pdfViewer.spreadMode = this.#args.spreadMode; + } + this.pdfViewer.currentScaleValue = this.#args.scaleValue; + this.pdfViewer.currentPageNumber = pageNumber; + if (this.#args.annotationEditorMode !== null) { + this.pdfViewer.annotationEditorMode = this.#args.annotationEditorMode; + } + this.#args = null; }, 0); - - this._removeWindowListeners(); - - this._hideControls(); - - this._resetMouseScrollState(); - + this.#removeWindowListeners(); + this.#hideControls(); + this.#resetMouseScrollState(); this.contextMenuOpen = false; } - - _mouseDown(evt) { + #mouseDown(evt) { if (this.contextMenuOpen) { this.contextMenuOpen = false; evt.preventDefault(); return; } - - if (evt.button === 0) { - const isInternalLink = evt.target.href && evt.target.classList.contains("internalLink"); - - if (!isInternalLink) { - evt.preventDefault(); - - if (evt.shiftKey) { - this.pdfViewer.previousPage(); - } else { - this.pdfViewer.nextPage(); - } - } + if (evt.button !== 0) { + return; + } + if (evt.target.href && evt.target.parentNode?.hasAttribute("data-internal-link")) { + return; + } + evt.preventDefault(); + if (evt.shiftKey) { + this.pdfViewer.previousPage(); + } else { + this.pdfViewer.nextPage(); } } - - _contextMenu() { + #contextMenu() { this.contextMenuOpen = true; } - - _showControls() { + #showControls() { if (this.controlsTimeout) { clearTimeout(this.controlsTimeout); } else { this.container.classList.add(CONTROLS_SELECTOR); } - this.controlsTimeout = setTimeout(() => { this.container.classList.remove(CONTROLS_SELECTOR); delete this.controlsTimeout; }, DELAY_BEFORE_HIDING_CONTROLS); } - - _hideControls() { + #hideControls() { if (!this.controlsTimeout) { return; } - clearTimeout(this.controlsTimeout); this.container.classList.remove(CONTROLS_SELECTOR); delete this.controlsTimeout; } - - _resetMouseScrollState() { + #resetMouseScrollState() { this.mouseScrollTimeStamp = 0; this.mouseScrollDelta = 0; } - - _touchSwipe(evt) { + #touchSwipe(evt) { if (!this.active) { return; } - if (evt.touches.length > 1) { this.touchSwipeState = null; return; } - switch (evt.type) { case "touchstart": this.touchSwipeState = { @@ -8001,50 +6851,42 @@ class PDFPresentationMode { endY: evt.touches[0].pageY }; break; - case "touchmove": if (this.touchSwipeState === null) { return; } - this.touchSwipeState.endX = evt.touches[0].pageX; this.touchSwipeState.endY = evt.touches[0].pageY; evt.preventDefault(); break; - case "touchend": if (this.touchSwipeState === null) { return; } - let delta = 0; const dx = this.touchSwipeState.endX - this.touchSwipeState.startX; const dy = this.touchSwipeState.endY - this.touchSwipeState.startY; const absAngle = Math.abs(Math.atan2(dy, dx)); - if (Math.abs(dx) > SWIPE_MIN_DISTANCE_THRESHOLD && (absAngle <= SWIPE_ANGLE_THRESHOLD || absAngle >= Math.PI - SWIPE_ANGLE_THRESHOLD)) { delta = dx; } else if (Math.abs(dy) > SWIPE_MIN_DISTANCE_THRESHOLD && Math.abs(absAngle - Math.PI / 2) <= SWIPE_ANGLE_THRESHOLD) { delta = dy; } - if (delta > 0) { this.pdfViewer.previousPage(); } else if (delta < 0) { this.pdfViewer.nextPage(); } - break; } } - - _addWindowListeners() { - this.showControlsBind = this._showControls.bind(this); - this.mouseDownBind = this._mouseDown.bind(this); - this.mouseWheelBind = this._mouseWheel.bind(this); - this.resetMouseScrollStateBind = this._resetMouseScrollState.bind(this); - this.contextMenuBind = this._contextMenu.bind(this); - this.touchSwipeBind = this._touchSwipe.bind(this); + #addWindowListeners() { + this.showControlsBind = this.#showControls.bind(this); + this.mouseDownBind = this.#mouseDown.bind(this); + this.mouseWheelBind = this.#mouseWheel.bind(this); + this.resetMouseScrollStateBind = this.#resetMouseScrollState.bind(this); + this.contextMenuBind = this.#contextMenu.bind(this); + this.touchSwipeBind = this.#touchSwipe.bind(this); window.addEventListener("mousemove", this.showControlsBind); window.addEventListener("mousedown", this.mouseDownBind); window.addEventListener("wheel", this.mouseWheelBind, { @@ -8056,8 +6898,7 @@ class PDFPresentationMode { window.addEventListener("touchmove", this.touchSwipeBind); window.addEventListener("touchend", this.touchSwipeBind); } - - _removeWindowListeners() { + #removeWindowListeners() { window.removeEventListener("mousemove", this.showControlsBind); window.removeEventListener("mousedown", this.mouseDownBind); window.removeEventListener("wheel", this.mouseWheelBind, { @@ -8075,515 +6916,538 @@ class PDFPresentationMode { delete this.contextMenuBind; delete this.touchSwipeBind; } - - _fullscreenChange() { - if (this.isFullscreen) { - this._enter(); + #fullscreenChange() { + if (document.fullscreenElement) { + this.#enter(); } else { - this._exit(); + this.#exit(); } } - - _addFullscreenChangeListeners() { - this.fullscreenChangeBind = this._fullscreenChange.bind(this); + #addFullscreenChangeListeners() { + this.fullscreenChangeBind = this.#fullscreenChange.bind(this); window.addEventListener("fullscreenchange", this.fullscreenChangeBind); - window.addEventListener("mozfullscreenchange", this.fullscreenChangeBind); - window.addEventListener("webkitfullscreenchange", this.fullscreenChangeBind); } - - _removeFullscreenChangeListeners() { + #removeFullscreenChangeListeners() { window.removeEventListener("fullscreenchange", this.fullscreenChangeBind); - window.removeEventListener("mozfullscreenchange", this.fullscreenChangeBind); - window.removeEventListener("webkitfullscreenchange", this.fullscreenChangeBind); delete this.fullscreenChangeBind; } - } - exports.PDFPresentationMode = PDFPresentationMode; -/***/ }), -/* 22 */ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.PDFScriptingManager = void 0; - -var _pdfjsLib = __webpack_require__(5); - -var _ui_utils = __webpack_require__(4); - -var _pdf_rendering_queue = __webpack_require__(8); - -class PDFScriptingManager { - constructor({ - eventBus, - sandboxBundleSrc = null, - scriptingFactory = null, - docPropertiesLookup = null - }) { - this._pdfDocument = null; - this._pdfViewer = null; - this._closeCapability = null; - this._destroyCapability = null; - this._scripting = null; - this._mouseState = Object.create(null); - this._ready = false; - this._eventBus = eventBus; - this._sandboxBundleSrc = sandboxBundleSrc; - this._scriptingFactory = scriptingFactory; - this._docPropertiesLookup = docPropertiesLookup; - } - - setViewer(pdfViewer) { - this._pdfViewer = pdfViewer; - } - - async setDocument(pdfDocument) { - if (this._pdfDocument) { - await this._destroyScripting(); - } - - this._pdfDocument = pdfDocument; - - if (!pdfDocument) { - return; - } - - const [objects, calculationOrder, docActions] = await Promise.all([pdfDocument.getFieldObjects(), pdfDocument.getCalculationOrderIds(), pdfDocument.getJSActions()]); - - if (!objects && !docActions) { - await this._destroyScripting(); - return; - } - - if (pdfDocument !== this._pdfDocument) { - return; - } - - try { - this._scripting = this._createScripting(); - } catch (error) { - console.error(`PDFScriptingManager.setDocument: "${error?.message}".`); - await this._destroyScripting(); - return; - } - - this._internalEvents.set("updatefromsandbox", event => { - if (event?.source !== window) { - return; - } - - this._updateFromSandbox(event.detail); - }); - - this._internalEvents.set("dispatcheventinsandbox", event => { - this._scripting?.dispatchEventInSandbox(event.detail); - }); - - this._internalEvents.set("pagechanging", ({ - pageNumber, - previous - }) => { - if (pageNumber === previous) { - return; - } - - this._dispatchPageClose(previous); - - this._dispatchPageOpen(pageNumber); - }); - - this._internalEvents.set("pagerendered", ({ - pageNumber - }) => { - if (!this._pageOpenPending.has(pageNumber)) { - return; - } - - if (pageNumber !== this._pdfViewer.currentPageNumber) { - return; - } - - this._dispatchPageOpen(pageNumber); - }); - - this._internalEvents.set("pagesdestroy", async event => { - await this._dispatchPageClose(this._pdfViewer.currentPageNumber); - await this._scripting?.dispatchEventInSandbox({ - id: "doc", - name: "WillClose" - }); - this._closeCapability?.resolve(); - }); - - this._domEvents.set("mousedown", event => { - this._mouseState.isDown = true; - }); - - this._domEvents.set("mouseup", event => { - this._mouseState.isDown = false; - }); - - for (const [name, listener] of this._internalEvents) { - this._eventBus._on(name, listener); - } - - for (const [name, listener] of this._domEvents) { - window.addEventListener(name, listener); - } - - try { - const docProperties = await this._getDocProperties(); - - if (pdfDocument !== this._pdfDocument) { - return; - } - - await this._scripting.createSandbox({ - objects, - calculationOrder, - appInfo: { - platform: navigator.platform, - language: navigator.language - }, - docInfo: { ...docProperties, - actions: docActions - } - }); - - this._eventBus.dispatch("sandboxcreated", { - source: this - }); - } catch (error) { - console.error(`PDFScriptingManager.setDocument: "${error?.message}".`); - await this._destroyScripting(); - return; - } - - await this._scripting?.dispatchEventInSandbox({ - id: "doc", - name: "Open" - }); - await this._dispatchPageOpen(this._pdfViewer.currentPageNumber, true); - Promise.resolve().then(() => { - if (pdfDocument === this._pdfDocument) { - this._ready = true; - } - }); - } - - async dispatchWillSave(detail) { - return this._scripting?.dispatchEventInSandbox({ - id: "doc", - name: "WillSave" - }); - } - - async dispatchDidSave(detail) { - return this._scripting?.dispatchEventInSandbox({ - id: "doc", - name: "DidSave" - }); - } - - async dispatchWillPrint(detail) { - return this._scripting?.dispatchEventInSandbox({ - id: "doc", - name: "WillPrint" - }); - } - - async dispatchDidPrint(detail) { - return this._scripting?.dispatchEventInSandbox({ - id: "doc", - name: "DidPrint" - }); - } - - get mouseState() { - return this._mouseState; - } - - get destroyPromise() { - return this._destroyCapability?.promise || null; - } - - get ready() { - return this._ready; - } - - get _internalEvents() { - return (0, _pdfjsLib.shadow)(this, "_internalEvents", new Map()); - } - - get _domEvents() { - return (0, _pdfjsLib.shadow)(this, "_domEvents", new Map()); - } - - get _pageOpenPending() { - return (0, _pdfjsLib.shadow)(this, "_pageOpenPending", new Set()); - } - - get _visitedPages() { - return (0, _pdfjsLib.shadow)(this, "_visitedPages", new Map()); - } - - async _updateFromSandbox(detail) { - const isInPresentationMode = this._pdfViewer.isInPresentationMode || this._pdfViewer.isChangingPresentationMode; - const { - id, - siblings, - command, - value - } = detail; - - if (!id) { - switch (command) { - case "clear": - console.clear(); - break; - - case "error": - console.error(value); - break; - - case "layout": - this._pdfViewer.spreadMode = (0, _ui_utils.apiPageLayoutToSpreadMode)(value); - break; - - case "page-num": - this._pdfViewer.currentPageNumber = value + 1; - break; - - case "print": - await this._pdfViewer.pagesPromise; - - this._eventBus.dispatch("print", { - source: this - }); - - break; - - case "println": - console.log(value); - break; - - case "zoom": - if (isInPresentationMode) { - return; - } - - this._pdfViewer.currentScaleValue = value; - break; - } - - return; - } - - if (isInPresentationMode) { - if (detail.focus) { - return; - } - } - - delete detail.id; - delete detail.siblings; - const ids = siblings ? [id, ...siblings] : [id]; - - for (const elementId of ids) { - const element = document.getElementById(elementId); - - if (element) { - element.dispatchEvent(new CustomEvent("updatefromsandbox", { - detail - })); - } else { - this._pdfDocument?.annotationStorage.setValue(elementId, detail); - } - } - } - - async _dispatchPageOpen(pageNumber, initialize = false) { - const pdfDocument = this._pdfDocument, - visitedPages = this._visitedPages; - - if (initialize) { - this._closeCapability = (0, _pdfjsLib.createPromiseCapability)(); - } - - if (!this._closeCapability) { - return; - } - - const pageView = this._pdfViewer.getPageView(pageNumber - 1); - - if (pageView?.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { - this._pageOpenPending.add(pageNumber); - - return; - } - - this._pageOpenPending.delete(pageNumber); - - const actionsPromise = (async () => { - const actions = await (!visitedPages.has(pageNumber) ? pageView.pdfPage?.getJSActions() : null); - - if (pdfDocument !== this._pdfDocument) { - return; - } - - await this._scripting?.dispatchEventInSandbox({ - id: "page", - name: "PageOpen", - pageNumber, - actions - }); - })(); - - visitedPages.set(pageNumber, actionsPromise); - } - - async _dispatchPageClose(pageNumber) { - const pdfDocument = this._pdfDocument, - visitedPages = this._visitedPages; - - if (!this._closeCapability) { - return; - } - - if (this._pageOpenPending.has(pageNumber)) { - return; - } - - const actionsPromise = visitedPages.get(pageNumber); - - if (!actionsPromise) { - return; - } - - visitedPages.set(pageNumber, null); - await actionsPromise; - - if (pdfDocument !== this._pdfDocument) { - return; - } - - await this._scripting?.dispatchEventInSandbox({ - id: "page", - name: "PageClose", - pageNumber - }); - } - - async _getDocProperties() { - if (this._docPropertiesLookup) { - return this._docPropertiesLookup(this._pdfDocument); - } - - throw new Error("_getDocProperties: Unable to lookup properties."); - } - - _createScripting() { - this._destroyCapability = (0, _pdfjsLib.createPromiseCapability)(); - - if (this._scripting) { - throw new Error("_createScripting: Scripting already exists."); - } - - if (this._scriptingFactory) { - return this._scriptingFactory.createScripting({ - sandboxBundleSrc: this._sandboxBundleSrc - }); - } - - throw new Error("_createScripting: Cannot create scripting."); - } - - async _destroyScripting() { - if (!this._scripting) { - this._pdfDocument = null; - this._destroyCapability?.resolve(); - return; - } - - if (this._closeCapability) { - await Promise.race([this._closeCapability.promise, new Promise(resolve => { - setTimeout(resolve, 1000); - })]).catch(reason => {}); - this._closeCapability = null; - } - - this._pdfDocument = null; - - try { - await this._scripting.destroySandbox(); - } catch (ex) {} - - for (const [name, listener] of this._internalEvents) { - this._eventBus._off(name, listener); - } - - this._internalEvents.clear(); - - for (const [name, listener] of this._domEvents) { - window.removeEventListener(name, listener); - } - - this._domEvents.clear(); - - this._pageOpenPending.clear(); - - this._visitedPages.clear(); - - this._scripting = null; - delete this._mouseState.isDown; - this._ready = false; - this._destroyCapability?.resolve(); - } - -} - -exports.PDFScriptingManager = PDFScriptingManager; - /***/ }), /* 23 */ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFRenderingQueue = void 0; +var _pdfjsLib = __webpack_require__(4); +var _ui_utils = __webpack_require__(3); +const CLEANUP_TIMEOUT = 30000; +class PDFRenderingQueue { + constructor() { + this.pdfViewer = null; + this.pdfThumbnailViewer = null; + this.onIdle = null; + this.highestPriorityPage = null; + this.idleTimeout = null; + this.printing = false; + this.isThumbnailViewEnabled = false; + Object.defineProperty(this, "hasViewer", { + value: () => !!this.pdfViewer + }); + } + setViewer(pdfViewer) { + this.pdfViewer = pdfViewer; + } + setThumbnailViewer(pdfThumbnailViewer) { + this.pdfThumbnailViewer = pdfThumbnailViewer; + } + isHighestPriority(view) { + return this.highestPriorityPage === view.renderingId; + } + renderHighestPriority(currentlyVisiblePages) { + if (this.idleTimeout) { + clearTimeout(this.idleTimeout); + this.idleTimeout = null; + } + if (this.pdfViewer.forceRendering(currentlyVisiblePages)) { + return; + } + if (this.isThumbnailViewEnabled && this.pdfThumbnailViewer?.forceRendering()) { + return; + } + if (this.printing) { + return; + } + if (this.onIdle) { + this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT); + } + } + getHighestPriority(visible, views, scrolledDown, preRenderExtra = false) { + const visibleViews = visible.views, + numVisible = visibleViews.length; + if (numVisible === 0) { + return null; + } + for (let i = 0; i < numVisible; i++) { + const view = visibleViews[i].view; + if (!this.isViewFinished(view)) { + return view; + } + } + const firstId = visible.first.id, + lastId = visible.last.id; + if (lastId - firstId + 1 > numVisible) { + const visibleIds = visible.ids; + for (let i = 1, ii = lastId - firstId; i < ii; i++) { + const holeId = scrolledDown ? firstId + i : lastId - i; + if (visibleIds.has(holeId)) { + continue; + } + const holeView = views[holeId - 1]; + if (!this.isViewFinished(holeView)) { + return holeView; + } + } + } + let preRenderIndex = scrolledDown ? lastId : firstId - 2; + let preRenderView = views[preRenderIndex]; + if (preRenderView && !this.isViewFinished(preRenderView)) { + return preRenderView; + } + if (preRenderExtra) { + preRenderIndex += scrolledDown ? 1 : -1; + preRenderView = views[preRenderIndex]; + if (preRenderView && !this.isViewFinished(preRenderView)) { + return preRenderView; + } + } + return null; + } + isViewFinished(view) { + return view.renderingState === _ui_utils.RenderingStates.FINISHED; + } + renderView(view) { + switch (view.renderingState) { + case _ui_utils.RenderingStates.FINISHED: + return false; + case _ui_utils.RenderingStates.PAUSED: + this.highestPriorityPage = view.renderingId; + view.resume(); + break; + case _ui_utils.RenderingStates.RUNNING: + this.highestPriorityPage = view.renderingId; + break; + case _ui_utils.RenderingStates.INITIAL: + this.highestPriorityPage = view.renderingId; + view.draw().finally(() => { + this.renderHighestPriority(); + }).catch(reason => { + if (reason instanceof _pdfjsLib.RenderingCancelledException) { + return; + } + console.error(`renderView: "${reason}"`); + }); + break; + } + return true; + } +} +exports.PDFRenderingQueue = PDFRenderingQueue; + +/***/ }), +/* 24 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFScriptingManager = void 0; +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); +class PDFScriptingManager { + #closeCapability = null; + #destroyCapability = null; + #docProperties = null; + #eventBus = null; + #externalServices = null; + #pdfDocument = null; + #pdfViewer = null; + #ready = false; + #sandboxBundleSrc = null; + #scripting = null; + constructor({ + eventBus, + sandboxBundleSrc = null, + externalServices = null, + docProperties = null + }) { + this.#eventBus = eventBus; + this.#sandboxBundleSrc = sandboxBundleSrc; + this.#externalServices = externalServices; + this.#docProperties = docProperties; + } + setViewer(pdfViewer) { + this.#pdfViewer = pdfViewer; + } + async setDocument(pdfDocument) { + if (this.#pdfDocument) { + await this.#destroyScripting(); + } + this.#pdfDocument = pdfDocument; + if (!pdfDocument) { + return; + } + const [objects, calculationOrder, docActions] = await Promise.all([pdfDocument.getFieldObjects(), pdfDocument.getCalculationOrderIds(), pdfDocument.getJSActions()]); + if (!objects && !docActions) { + await this.#destroyScripting(); + return; + } + if (pdfDocument !== this.#pdfDocument) { + return; + } + try { + this.#scripting = this.#initScripting(); + } catch (error) { + console.error(`setDocument: "${error.message}".`); + await this.#destroyScripting(); + return; + } + this._internalEvents.set("updatefromsandbox", event => { + if (event?.source === window) { + this.#updateFromSandbox(event.detail); + } + }); + this._internalEvents.set("dispatcheventinsandbox", event => { + this.#scripting?.dispatchEventInSandbox(event.detail); + }); + this._internalEvents.set("pagechanging", ({ + pageNumber, + previous + }) => { + if (pageNumber === previous) { + return; + } + this.#dispatchPageClose(previous); + this.#dispatchPageOpen(pageNumber); + }); + this._internalEvents.set("pagerendered", ({ + pageNumber + }) => { + if (!this._pageOpenPending.has(pageNumber)) { + return; + } + if (pageNumber !== this.#pdfViewer.currentPageNumber) { + return; + } + this.#dispatchPageOpen(pageNumber); + }); + this._internalEvents.set("pagesdestroy", async () => { + await this.#dispatchPageClose(this.#pdfViewer.currentPageNumber); + await this.#scripting?.dispatchEventInSandbox({ + id: "doc", + name: "WillClose" + }); + this.#closeCapability?.resolve(); + }); + for (const [name, listener] of this._internalEvents) { + this.#eventBus._on(name, listener); + } + try { + const docProperties = await this.#docProperties(pdfDocument); + if (pdfDocument !== this.#pdfDocument) { + return; + } + await this.#scripting.createSandbox({ + objects, + calculationOrder, + appInfo: { + platform: navigator.platform, + language: navigator.language + }, + docInfo: { + ...docProperties, + actions: docActions + } + }); + this.#eventBus.dispatch("sandboxcreated", { + source: this + }); + } catch (error) { + console.error(`setDocument: "${error.message}".`); + await this.#destroyScripting(); + return; + } + await this.#scripting?.dispatchEventInSandbox({ + id: "doc", + name: "Open" + }); + await this.#dispatchPageOpen(this.#pdfViewer.currentPageNumber, true); + Promise.resolve().then(() => { + if (pdfDocument === this.#pdfDocument) { + this.#ready = true; + } + }); + } + async dispatchWillSave() { + return this.#scripting?.dispatchEventInSandbox({ + id: "doc", + name: "WillSave" + }); + } + async dispatchDidSave() { + return this.#scripting?.dispatchEventInSandbox({ + id: "doc", + name: "DidSave" + }); + } + async dispatchWillPrint() { + return this.#scripting?.dispatchEventInSandbox({ + id: "doc", + name: "WillPrint" + }); + } + async dispatchDidPrint() { + return this.#scripting?.dispatchEventInSandbox({ + id: "doc", + name: "DidPrint" + }); + } + get destroyPromise() { + return this.#destroyCapability?.promise || null; + } + get ready() { + return this.#ready; + } + get _internalEvents() { + return (0, _pdfjsLib.shadow)(this, "_internalEvents", new Map()); + } + get _pageOpenPending() { + return (0, _pdfjsLib.shadow)(this, "_pageOpenPending", new Set()); + } + get _visitedPages() { + return (0, _pdfjsLib.shadow)(this, "_visitedPages", new Map()); + } + async #updateFromSandbox(detail) { + const pdfViewer = this.#pdfViewer; + const isInPresentationMode = pdfViewer.isInPresentationMode || pdfViewer.isChangingPresentationMode; + const { + id, + siblings, + command, + value + } = detail; + if (!id) { + switch (command) { + case "clear": + console.clear(); + break; + case "error": + console.error(value); + break; + case "layout": + if (!isInPresentationMode) { + const modes = (0, _ui_utils.apiPageLayoutToViewerModes)(value); + pdfViewer.spreadMode = modes.spreadMode; + } + break; + case "page-num": + pdfViewer.currentPageNumber = value + 1; + break; + case "print": + await pdfViewer.pagesPromise; + this.#eventBus.dispatch("print", { + source: this + }); + break; + case "println": + console.log(value); + break; + case "zoom": + if (!isInPresentationMode) { + pdfViewer.currentScaleValue = value; + } + break; + case "SaveAs": + this.#eventBus.dispatch("download", { + source: this + }); + break; + case "FirstPage": + pdfViewer.currentPageNumber = 1; + break; + case "LastPage": + pdfViewer.currentPageNumber = pdfViewer.pagesCount; + break; + case "NextPage": + pdfViewer.nextPage(); + break; + case "PrevPage": + pdfViewer.previousPage(); + break; + case "ZoomViewIn": + if (!isInPresentationMode) { + pdfViewer.increaseScale(); + } + break; + case "ZoomViewOut": + if (!isInPresentationMode) { + pdfViewer.decreaseScale(); + } + break; + } + return; + } + if (isInPresentationMode && detail.focus) { + return; + } + delete detail.id; + delete detail.siblings; + const ids = siblings ? [id, ...siblings] : [id]; + for (const elementId of ids) { + const element = document.querySelector(`[data-element-id="${elementId}"]`); + if (element) { + element.dispatchEvent(new CustomEvent("updatefromsandbox", { + detail + })); + } else { + this.#pdfDocument?.annotationStorage.setValue(elementId, detail); + } + } + } + async #dispatchPageOpen(pageNumber, initialize = false) { + const pdfDocument = this.#pdfDocument, + visitedPages = this._visitedPages; + if (initialize) { + this.#closeCapability = new _pdfjsLib.PromiseCapability(); + } + if (!this.#closeCapability) { + return; + } + const pageView = this.#pdfViewer.getPageView(pageNumber - 1); + if (pageView?.renderingState !== _ui_utils.RenderingStates.FINISHED) { + this._pageOpenPending.add(pageNumber); + return; + } + this._pageOpenPending.delete(pageNumber); + const actionsPromise = (async () => { + const actions = await (!visitedPages.has(pageNumber) ? pageView.pdfPage?.getJSActions() : null); + if (pdfDocument !== this.#pdfDocument) { + return; + } + await this.#scripting?.dispatchEventInSandbox({ + id: "page", + name: "PageOpen", + pageNumber, + actions + }); + })(); + visitedPages.set(pageNumber, actionsPromise); + } + async #dispatchPageClose(pageNumber) { + const pdfDocument = this.#pdfDocument, + visitedPages = this._visitedPages; + if (!this.#closeCapability) { + return; + } + if (this._pageOpenPending.has(pageNumber)) { + return; + } + const actionsPromise = visitedPages.get(pageNumber); + if (!actionsPromise) { + return; + } + visitedPages.set(pageNumber, null); + await actionsPromise; + if (pdfDocument !== this.#pdfDocument) { + return; + } + await this.#scripting?.dispatchEventInSandbox({ + id: "page", + name: "PageClose", + pageNumber + }); + } + #initScripting() { + this.#destroyCapability = new _pdfjsLib.PromiseCapability(); + if (this.#scripting) { + throw new Error("#initScripting: Scripting already exists."); + } + return this.#externalServices.createScripting({ + sandboxBundleSrc: this.#sandboxBundleSrc + }); + } + async #destroyScripting() { + if (!this.#scripting) { + this.#pdfDocument = null; + this.#destroyCapability?.resolve(); + return; + } + if (this.#closeCapability) { + await Promise.race([this.#closeCapability.promise, new Promise(resolve => { + setTimeout(resolve, 1000); + })]).catch(() => {}); + this.#closeCapability = null; + } + this.#pdfDocument = null; + try { + await this.#scripting.destroySandbox(); + } catch {} + for (const [name, listener] of this._internalEvents) { + this.#eventBus._off(name, listener); + } + this._internalEvents.clear(); + this._pageOpenPending.clear(); + this._visitedPages.clear(); + this.#scripting = null; + this.#ready = false; + this.#destroyCapability?.resolve(); + } +} +exports.PDFScriptingManager = PDFScriptingManager; + +/***/ }), +/* 25 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + Object.defineProperty(exports, "__esModule", ({ value: true })); exports.PDFSidebar = void 0; - -var _ui_utils = __webpack_require__(4); - -var _pdf_rendering_queue = __webpack_require__(8); - +var _ui_utils = __webpack_require__(3); +const SIDEBAR_WIDTH_VAR = "--sidebar-width"; +const SIDEBAR_MIN_WIDTH = 200; +const SIDEBAR_RESIZING_CLASS = "sidebarResizing"; const UI_NOTIFICATION_CLASS = "pdfSidebarNotification"; - class PDFSidebar { + #isRTL = false; + #mouseMoveBound = this.#mouseMove.bind(this); + #mouseUpBound = this.#mouseUp.bind(this); + #outerContainerWidth = null; + #width = null; constructor({ elements, - pdfViewer, - pdfThumbnailViewer, eventBus, l10n }) { this.isOpen = false; this.active = _ui_utils.SidebarView.THUMBS; this.isInitialViewSet = false; + this.isInitialEventDispatched = false; this.onToggled = null; - this.pdfViewer = pdfViewer; - this.pdfThumbnailViewer = pdfThumbnailViewer; + this.onUpdateThumbnails = null; this.outerContainer = elements.outerContainer; - this.viewerContainer = elements.viewerContainer; + this.sidebarContainer = elements.sidebarContainer; this.toggleButton = elements.toggleButton; + this.resizer = elements.resizer; this.thumbnailButton = elements.thumbnailButton; this.outlineButton = elements.outlineButton; this.attachmentsButton = elements.attachmentsButton; @@ -8596,177 +7460,114 @@ class PDFSidebar { this._currentOutlineItemButton = elements.currentOutlineItemButton; this.eventBus = eventBus; this.l10n = l10n; - - this._addEventListeners(); + l10n.getDirection().then(dir => { + this.#isRTL = dir === "rtl"; + }); + this.#addEventListeners(); } - reset() { this.isInitialViewSet = false; - - this._hideUINotification(true); - + this.isInitialEventDispatched = false; + this.#hideUINotification(true); this.switchView(_ui_utils.SidebarView.THUMBS); this.outlineButton.disabled = false; this.attachmentsButton.disabled = false; this.layersButton.disabled = false; this._currentOutlineItemButton.disabled = true; } - get visibleView() { return this.isOpen ? this.active : _ui_utils.SidebarView.NONE; } - - get isThumbnailViewVisible() { - return this.isOpen && this.active === _ui_utils.SidebarView.THUMBS; - } - - get isOutlineViewVisible() { - return this.isOpen && this.active === _ui_utils.SidebarView.OUTLINE; - } - - get isAttachmentsViewVisible() { - return this.isOpen && this.active === _ui_utils.SidebarView.ATTACHMENTS; - } - - get isLayersViewVisible() { - return this.isOpen && this.active === _ui_utils.SidebarView.LAYERS; - } - setInitialView(view = _ui_utils.SidebarView.NONE) { if (this.isInitialViewSet) { return; } - this.isInitialViewSet = true; - if (view === _ui_utils.SidebarView.NONE || view === _ui_utils.SidebarView.UNKNOWN) { - this._dispatchEvent(); - + this.#dispatchEvent(); return; } - - if (!this._switchView(view, true)) { - this._dispatchEvent(); + this.switchView(view, true); + if (!this.isInitialEventDispatched) { + this.#dispatchEvent(); } } - switchView(view, forceOpen = false) { - this._switchView(view, forceOpen); - } - - _switchView(view, forceOpen = false) { const isViewChanged = view !== this.active; - let shouldForceRendering = false; - + let forceRendering = false; switch (view) { case _ui_utils.SidebarView.NONE: if (this.isOpen) { this.close(); - return true; } - - return false; - + return; case _ui_utils.SidebarView.THUMBS: if (this.isOpen && isViewChanged) { - shouldForceRendering = true; + forceRendering = true; } - break; - case _ui_utils.SidebarView.OUTLINE: if (this.outlineButton.disabled) { - return false; + return; } - break; - case _ui_utils.SidebarView.ATTACHMENTS: if (this.attachmentsButton.disabled) { - return false; + return; } - break; - case _ui_utils.SidebarView.LAYERS: if (this.layersButton.disabled) { - return false; + return; } - break; - default: - console.error(`PDFSidebar._switchView: "${view}" is not a valid view.`); - return false; + console.error(`PDFSidebar.switchView: "${view}" is not a valid view.`); + return; } - this.active = view; - this.thumbnailButton.classList.toggle("toggled", view === _ui_utils.SidebarView.THUMBS); - this.outlineButton.classList.toggle("toggled", view === _ui_utils.SidebarView.OUTLINE); - this.attachmentsButton.classList.toggle("toggled", view === _ui_utils.SidebarView.ATTACHMENTS); - this.layersButton.classList.toggle("toggled", view === _ui_utils.SidebarView.LAYERS); - this.thumbnailView.classList.toggle("hidden", view !== _ui_utils.SidebarView.THUMBS); - this.outlineView.classList.toggle("hidden", view !== _ui_utils.SidebarView.OUTLINE); - this.attachmentsView.classList.toggle("hidden", view !== _ui_utils.SidebarView.ATTACHMENTS); - this.layersView.classList.toggle("hidden", view !== _ui_utils.SidebarView.LAYERS); - + (0, _ui_utils.toggleCheckedBtn)(this.thumbnailButton, view === _ui_utils.SidebarView.THUMBS, this.thumbnailView); + (0, _ui_utils.toggleCheckedBtn)(this.outlineButton, view === _ui_utils.SidebarView.OUTLINE, this.outlineView); + (0, _ui_utils.toggleCheckedBtn)(this.attachmentsButton, view === _ui_utils.SidebarView.ATTACHMENTS, this.attachmentsView); + (0, _ui_utils.toggleCheckedBtn)(this.layersButton, view === _ui_utils.SidebarView.LAYERS, this.layersView); this._outlineOptionsContainer.classList.toggle("hidden", view !== _ui_utils.SidebarView.OUTLINE); - if (forceOpen && !this.isOpen) { this.open(); - return true; + return; } - - if (shouldForceRendering) { - this._updateThumbnailViewer(); - - this._forceRendering(); + if (forceRendering) { + this.onUpdateThumbnails(); + this.onToggled(); } - if (isViewChanged) { - this._dispatchEvent(); + this.#dispatchEvent(); } - - return isViewChanged; } - open() { if (this.isOpen) { return; } - this.isOpen = true; - this.toggleButton.classList.add("toggled"); - this.toggleButton.setAttribute("aria-expanded", "true"); + (0, _ui_utils.toggleExpandedBtn)(this.toggleButton, true); this.outerContainer.classList.add("sidebarMoving", "sidebarOpen"); - if (this.active === _ui_utils.SidebarView.THUMBS) { - this._updateThumbnailViewer(); + this.onUpdateThumbnails(); } - - this._forceRendering(); - - this._dispatchEvent(); - - this._hideUINotification(); + this.onToggled(); + this.#dispatchEvent(); + this.#hideUINotification(); } - close() { if (!this.isOpen) { return; } - this.isOpen = false; - this.toggleButton.classList.remove("toggled"); - this.toggleButton.setAttribute("aria-expanded", "false"); + (0, _ui_utils.toggleExpandedBtn)(this.toggleButton, false); this.outerContainer.classList.add("sidebarMoving"); this.outerContainer.classList.remove("sidebarOpen"); - - this._forceRendering(); - - this._dispatchEvent(); + this.onToggled(); + this.#dispatchEvent(); } - toggle() { if (this.isOpen) { this.close(); @@ -8774,73 +7575,44 @@ class PDFSidebar { this.open(); } } - - _dispatchEvent() { + #dispatchEvent() { + if (this.isInitialViewSet) { + this.isInitialEventDispatched ||= true; + } this.eventBus.dispatch("sidebarviewchanged", { source: this, view: this.visibleView }); } - - _forceRendering() { - if (this.onToggled) { - this.onToggled(); - } else { - this.pdfViewer.forceRendering(); - this.pdfThumbnailViewer.forceRendering(); - } - } - - _updateThumbnailViewer() { - const { - pdfViewer, - pdfThumbnailViewer - } = this; - const pagesCount = pdfViewer.pagesCount; - - for (let pageIndex = 0; pageIndex < pagesCount; pageIndex++) { - const pageView = pdfViewer.getPageView(pageIndex); - - if (pageView?.renderingState === _pdf_rendering_queue.RenderingStates.FINISHED) { - const thumbnailView = pdfThumbnailViewer.getThumbnail(pageIndex); - thumbnailView.setImage(pageView); - } - } - - pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber); - } - - _showUINotification() { - this.l10n.get("toggle_sidebar_notification2.title").then(msg => { - this.toggleButton.title = msg; - }); - + #showUINotification() { + this.toggleButton.setAttribute("data-l10n-id", "toggle_sidebar_notification2"); + this.l10n.translate(this.toggleButton); if (!this.isOpen) { this.toggleButton.classList.add(UI_NOTIFICATION_CLASS); } } - - _hideUINotification(reset = false) { + #hideUINotification(reset = false) { if (this.isOpen || reset) { this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS); } - if (reset) { - this.l10n.get("toggle_sidebar.title").then(msg => { - this.toggleButton.title = msg; - }); + this.toggleButton.setAttribute("data-l10n-id", "toggle_sidebar"); + this.l10n.translate(this.toggleButton); } } - - _addEventListeners() { - this.viewerContainer.addEventListener("transitionend", evt => { - if (evt.target === this.viewerContainer) { + #addEventListeners() { + this.sidebarContainer.addEventListener("transitionend", evt => { + if (evt.target === this.sidebarContainer) { this.outerContainer.classList.remove("sidebarMoving"); } }); this.toggleButton.addEventListener("click", () => { this.toggle(); }); + // custom for SEAFILE + document.getElementById('close-thumbnail-panel').addEventListener("click", () => { + this.toggle(); + }); this.thumbnailButton.addEventListener("click", () => { this.switchView(_ui_utils.SidebarView.THUMBS); }); @@ -8863,171 +7635,63 @@ class PDFSidebar { source: this }); }); - this._currentOutlineItemButton.addEventListener("click", () => { this.eventBus.dispatch("currentoutlineitem", { source: this }); }); - const onTreeLoaded = (count, button, view) => { button.disabled = !count; - if (count) { - this._showUINotification(); + this.#showUINotification(); } else if (this.active === view) { this.switchView(_ui_utils.SidebarView.THUMBS); } }; - this.eventBus._on("outlineloaded", evt => { onTreeLoaded(evt.outlineCount, this.outlineButton, _ui_utils.SidebarView.OUTLINE); evt.currentOutlineItemPromise.then(enabled => { if (!this.isInitialViewSet) { return; } - this._currentOutlineItemButton.disabled = !enabled; }); }); - this.eventBus._on("attachmentsloaded", evt => { onTreeLoaded(evt.attachmentsCount, this.attachmentsButton, _ui_utils.SidebarView.ATTACHMENTS); }); - this.eventBus._on("layersloaded", evt => { onTreeLoaded(evt.layersCount, this.layersButton, _ui_utils.SidebarView.LAYERS); }); - this.eventBus._on("presentationmodechanged", evt => { - if (evt.state === _ui_utils.PresentationModeState.NORMAL && this.isThumbnailViewVisible) { - this._updateThumbnailViewer(); + if (evt.state === _ui_utils.PresentationModeState.NORMAL && this.visibleView === _ui_utils.SidebarView.THUMBS) { + this.onUpdateThumbnails(); } }); - } - -} - -exports.PDFSidebar = PDFSidebar; - -/***/ }), -/* 24 */ -/***/ ((__unused_webpack_module, exports) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.PDFSidebarResizer = void 0; -const SIDEBAR_WIDTH_VAR = "--sidebar-width"; -const SIDEBAR_MIN_WIDTH = 200; -const SIDEBAR_RESIZING_CLASS = "sidebarResizing"; - -class PDFSidebarResizer { - constructor(options, eventBus, l10n) { - this.isRTL = false; - this.sidebarOpen = false; - this.doc = document.documentElement; - this._width = null; - this._outerContainerWidth = null; - this._boundEvents = Object.create(null); - this.outerContainer = options.outerContainer; - this.resizer = options.resizer; - this.eventBus = eventBus; - l10n.getDirection().then(dir => { - this.isRTL = dir === "rtl"; - }); - - this._addEventListeners(); - } - - get outerContainerWidth() { - return this._outerContainerWidth || (this._outerContainerWidth = this.outerContainer.clientWidth); - } - - _updateWidth(width = 0) { - const maxWidth = Math.floor(this.outerContainerWidth / 2); - - if (width > maxWidth) { - width = maxWidth; - } - - if (width < SIDEBAR_MIN_WIDTH) { - width = SIDEBAR_MIN_WIDTH; - } - - if (width === this._width) { - return false; - } - - this._width = width; - this.doc.style.setProperty(SIDEBAR_WIDTH_VAR, `${width}px`); - return true; - } - - _mouseMove(evt) { - let width = evt.clientX; - - if (this.isRTL) { - width = this.outerContainerWidth - width; - } - - this._updateWidth(width); - } - - _mouseUp(evt) { - this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS); - this.eventBus.dispatch("resize", { - source: this - }); - const _boundEvents = this._boundEvents; - window.removeEventListener("mousemove", _boundEvents.mouseMove); - window.removeEventListener("mouseup", _boundEvents.mouseUp); - } - - _addEventListeners() { - const _boundEvents = this._boundEvents; - _boundEvents.mouseMove = this._mouseMove.bind(this); - _boundEvents.mouseUp = this._mouseUp.bind(this); this.resizer.addEventListener("mousedown", evt => { if (evt.button !== 0) { return; } - this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS); - window.addEventListener("mousemove", _boundEvents.mouseMove); - window.addEventListener("mouseup", _boundEvents.mouseUp); + window.addEventListener("mousemove", this.#mouseMoveBound); + window.addEventListener("mouseup", this.#mouseUpBound); }); - - this.eventBus._on("sidebarviewchanged", evt => { - this.sidebarOpen = !!evt?.view; - }); - this.eventBus._on("resize", evt => { - if (evt?.source !== window) { + if (evt.source !== window) { return; } - - this._outerContainerWidth = null; - - if (!this._width) { + this.#outerContainerWidth = null; + if (!this.#width) { return; } - - if (!this.sidebarOpen) { - this._updateWidth(this._width); - + if (!this.isOpen) { + this.#updateWidth(this.#width); return; } - this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS); - - const updated = this._updateWidth(this._width); - + const updated = this.#updateWidth(this.#width); Promise.resolve().then(() => { this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS); - if (updated) { this.eventBus.dispatch("resize", { source: this @@ -9036,290 +7700,41 @@ class PDFSidebarResizer { }); }); } - + get outerContainerWidth() { + return this.#outerContainerWidth ||= this.outerContainer.clientWidth; + } + #updateWidth(width = 0) { + const maxWidth = Math.floor(this.outerContainerWidth / 2); + if (width > maxWidth) { + width = maxWidth; + } + if (width < SIDEBAR_MIN_WIDTH) { + width = SIDEBAR_MIN_WIDTH; + } + if (width === this.#width) { + return false; + } + this.#width = width; + _ui_utils.docStyle.setProperty(SIDEBAR_WIDTH_VAR, `${width}px`); + return true; + } + #mouseMove(evt) { + let width = evt.clientX; + if (this.#isRTL) { + width = this.outerContainerWidth - width; + } + this.#updateWidth(width); + } + #mouseUp(evt) { + this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS); + this.eventBus.dispatch("resize", { + source: this + }); + window.removeEventListener("mousemove", this.#mouseMoveBound); + window.removeEventListener("mouseup", this.#mouseUpBound); + } } - -exports.PDFSidebarResizer = PDFSidebarResizer; - -/***/ }), -/* 25 */ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.PDFThumbnailViewer = void 0; - -var _ui_utils = __webpack_require__(4); - -var _pdf_thumbnail_view = __webpack_require__(26); - -var _pdf_rendering_queue = __webpack_require__(8); - -const THUMBNAIL_SCROLL_MARGIN = -19; -const THUMBNAIL_SELECTED_CLASS = "selected"; - -class PDFThumbnailViewer { - constructor({ - container, - eventBus, - linkService, - renderingQueue, - l10n - }) { - this.container = container; - this.linkService = linkService; - this.renderingQueue = renderingQueue; - this.l10n = l10n; - this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdated.bind(this)); - - this._resetView(); - - eventBus._on("optionalcontentconfigchanged", () => { - this._setImageDisabled = true; - }); - } - - _scrollUpdated() { - this.renderingQueue.renderHighestPriority(); - } - - getThumbnail(index) { - return this._thumbnails[index]; - } - - _getVisibleThumbs() { - return (0, _ui_utils.getVisibleElements)({ - scrollEl: this.container, - views: this._thumbnails - }); - } - - scrollThumbnailIntoView(pageNumber) { - if (!this.pdfDocument) { - return; - } - - const thumbnailView = this._thumbnails[pageNumber - 1]; - - if (!thumbnailView) { - console.error('scrollThumbnailIntoView: Invalid "pageNumber" parameter.'); - return; - } - - if (pageNumber !== this._currentPageNumber) { - const prevThumbnailView = this._thumbnails[this._currentPageNumber - 1]; - prevThumbnailView.div.classList.remove(THUMBNAIL_SELECTED_CLASS); - thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS); - } - - const visibleThumbs = this._getVisibleThumbs(); - - const numVisibleThumbs = visibleThumbs.views.length; - - if (numVisibleThumbs > 0) { - const first = visibleThumbs.first.id; - const last = numVisibleThumbs > 1 ? visibleThumbs.last.id : first; - let shouldScroll = false; - - if (pageNumber <= first || pageNumber >= last) { - shouldScroll = true; - } else { - visibleThumbs.views.some(function (view) { - if (view.id !== pageNumber) { - return false; - } - - shouldScroll = view.percent < 100; - return true; - }); - } - - if (shouldScroll) { - (0, _ui_utils.scrollIntoView)(thumbnailView.div, { - top: THUMBNAIL_SCROLL_MARGIN - }); - } - } - - this._currentPageNumber = pageNumber; - } - - get pagesRotation() { - return this._pagesRotation; - } - - set pagesRotation(rotation) { - if (!(0, _ui_utils.isValidRotation)(rotation)) { - throw new Error("Invalid thumbnails rotation angle."); - } - - if (!this.pdfDocument) { - return; - } - - if (this._pagesRotation === rotation) { - return; - } - - this._pagesRotation = rotation; - - for (let i = 0, ii = this._thumbnails.length; i < ii; i++) { - this._thumbnails[i].update(rotation); - } - } - - cleanup() { - for (let i = 0, ii = this._thumbnails.length; i < ii; i++) { - if (this._thumbnails[i] && this._thumbnails[i].renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { - this._thumbnails[i].reset(); - } - } - - _pdf_thumbnail_view.TempImageFactory.destroyCanvas(); - } - - _resetView() { - this._thumbnails = []; - this._currentPageNumber = 1; - this._pageLabels = null; - this._pagesRotation = 0; - this._optionalContentConfigPromise = null; - this._pagesRequests = new WeakMap(); - this._setImageDisabled = false; - this.container.textContent = ""; - } - - setDocument(pdfDocument) { - if (this.pdfDocument) { - this._cancelRendering(); - - this._resetView(); - } - - this.pdfDocument = pdfDocument; - - if (!pdfDocument) { - return; - } - - const firstPagePromise = pdfDocument.getPage(1); - const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig(); - firstPagePromise.then(firstPdfPage => { - this._optionalContentConfigPromise = optionalContentConfigPromise; - const pagesCount = pdfDocument.numPages; - const viewport = firstPdfPage.getViewport({ - scale: 1 - }); - - const checkSetImageDisabled = () => { - return this._setImageDisabled; - }; - - for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) { - const thumbnail = new _pdf_thumbnail_view.PDFThumbnailView({ - container: this.container, - id: pageNum, - defaultViewport: viewport.clone(), - optionalContentConfigPromise, - linkService: this.linkService, - renderingQueue: this.renderingQueue, - checkSetImageDisabled, - l10n: this.l10n - }); - - this._thumbnails.push(thumbnail); - } - - const firstThumbnailView = this._thumbnails[0]; - - if (firstThumbnailView) { - firstThumbnailView.setPdfPage(firstPdfPage); - } - - const thumbnailView = this._thumbnails[this._currentPageNumber - 1]; - thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS); - }).catch(reason => { - console.error("Unable to initialize thumbnail viewer", reason); - }); - } - - _cancelRendering() { - for (let i = 0, ii = this._thumbnails.length; i < ii; i++) { - if (this._thumbnails[i]) { - this._thumbnails[i].cancelRendering(); - } - } - } - - setPageLabels(labels) { - if (!this.pdfDocument) { - return; - } - - if (!labels) { - this._pageLabels = null; - } else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) { - this._pageLabels = null; - console.error("PDFThumbnailViewer_setPageLabels: Invalid page labels."); - } else { - this._pageLabels = labels; - } - - for (let i = 0, ii = this._thumbnails.length; i < ii; i++) { - this._thumbnails[i].setPageLabel(this._pageLabels?.[i] ?? null); - } - } - - _ensurePdfPageLoaded(thumbView) { - if (thumbView.pdfPage) { - return Promise.resolve(thumbView.pdfPage); - } - - if (this._pagesRequests.has(thumbView)) { - return this._pagesRequests.get(thumbView); - } - - const promise = this.pdfDocument.getPage(thumbView.id).then(pdfPage => { - if (!thumbView.pdfPage) { - thumbView.setPdfPage(pdfPage); - } - - this._pagesRequests.delete(thumbView); - - return pdfPage; - }).catch(reason => { - console.error("Unable to get page for thumb view", reason); - - this._pagesRequests.delete(thumbView); - }); - - this._pagesRequests.set(thumbView, promise); - - return promise; - } - - forceRendering() { - const visibleThumbs = this._getVisibleThumbs(); - - const thumbView = this.renderingQueue.getHighestPriority(visibleThumbs, this._thumbnails, this.scroll.down); - - if (thumbView) { - this._ensurePdfPageLoaded(thumbView).then(() => { - this.renderingQueue.renderView(thumbView); - }); - - return true; - } - - return false; - } - -} - -exports.PDFThumbnailViewer = PDFThumbnailViewer; +exports.PDFSidebar = PDFSidebar; /***/ }), /* 26 */ @@ -9330,399 +7745,215 @@ exports.PDFThumbnailViewer = PDFThumbnailViewer; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.TempImageFactory = exports.PDFThumbnailView = void 0; - -var _ui_utils = __webpack_require__(4); - -var _pdfjsLib = __webpack_require__(5); - -var _pdf_rendering_queue = __webpack_require__(8); - -const DRAW_UPSCALE_FACTOR = 2; -const MAX_NUM_SCALING_STEPS = 3; -const THUMBNAIL_CANVAS_BORDER_WIDTH = 1; -const THUMBNAIL_WIDTH = 98; - -const TempImageFactory = function TempImageFactoryClosure() { - let tempCanvasCache = null; - return { - getCanvas(width, height) { - let tempCanvas = tempCanvasCache; - - if (!tempCanvas) { - tempCanvas = document.createElement("canvas"); - tempCanvasCache = tempCanvas; - } - - tempCanvas.width = width; - tempCanvas.height = height; - tempCanvas.mozOpaque = true; - const ctx = tempCanvas.getContext("2d", { - alpha: false - }); - ctx.save(); - ctx.fillStyle = "rgb(255, 255, 255)"; - ctx.fillRect(0, 0, width, height); - ctx.restore(); - return [tempCanvas, tempCanvas.getContext("2d")]; - }, - - destroyCanvas() { - const tempCanvas = tempCanvasCache; - - if (tempCanvas) { - tempCanvas.width = 0; - tempCanvas.height = 0; - } - - tempCanvasCache = null; - } - - }; -}(); - -exports.TempImageFactory = TempImageFactory; - -class PDFThumbnailView { +exports.PDFThumbnailViewer = void 0; +var _ui_utils = __webpack_require__(3); +var _pdf_thumbnail_view = __webpack_require__(27); +const THUMBNAIL_SCROLL_MARGIN = -19; +const THUMBNAIL_SELECTED_CLASS = "selected"; +class PDFThumbnailViewer { constructor({ container, - id, - defaultViewport, - optionalContentConfigPromise, + eventBus, linkService, renderingQueue, - checkSetImageDisabled, - l10n + l10n, + pageColors }) { - this.id = id; - this.renderingId = "thumbnail" + id; - this.pageLabel = null; - this.pdfPage = null; - this.rotation = 0; - this.viewport = defaultViewport; - this.pdfPageRotate = defaultViewport.rotation; - this._optionalContentConfigPromise = optionalContentConfigPromise || null; + this.container = container; + this.eventBus = eventBus; this.linkService = linkService; this.renderingQueue = renderingQueue; - this.renderTask = null; - this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL; - this.resume = null; - - this._checkSetImageDisabled = checkSetImageDisabled || function () { - return false; - }; - - const pageWidth = this.viewport.width, - pageHeight = this.viewport.height, - pageRatio = pageWidth / pageHeight; - this.canvasWidth = THUMBNAIL_WIDTH; - this.canvasHeight = this.canvasWidth / pageRatio | 0; - this.scale = this.canvasWidth / pageWidth; this.l10n = l10n; - const anchor = document.createElement("a"); - anchor.href = linkService.getAnchorUrl("#page=" + id); - - this._thumbPageTitle.then(msg => { - anchor.title = msg; + this.pageColors = pageColors || null; + this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdated.bind(this)); + this._resetView(); + } + _scrollUpdated() { + this.renderingQueue.renderHighestPriority(); + } + getThumbnail(index) { + return this._thumbnails[index]; + } + _getVisibleThumbs() { + return (0, _ui_utils.getVisibleElements)({ + scrollEl: this.container, + views: this._thumbnails }); - - anchor.onclick = function () { - linkService.goToPage(id); + } + scrollThumbnailIntoView(pageNumber) { + if (!this.pdfDocument) { + return; + } + const thumbnailView = this._thumbnails[pageNumber - 1]; + if (!thumbnailView) { + console.error('scrollThumbnailIntoView: Invalid "pageNumber" parameter.'); + return; + } + if (pageNumber !== this._currentPageNumber) { + const prevThumbnailView = this._thumbnails[this._currentPageNumber - 1]; + prevThumbnailView.div.classList.remove(THUMBNAIL_SELECTED_CLASS); + thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS); + } + const { + first, + last, + views + } = this._getVisibleThumbs(); + if (views.length > 0) { + let shouldScroll = false; + if (pageNumber <= first.id || pageNumber >= last.id) { + shouldScroll = true; + } else { + for (const { + id, + percent + } of views) { + if (id !== pageNumber) { + continue; + } + shouldScroll = percent < 100; + break; + } + } + if (shouldScroll) { + (0, _ui_utils.scrollIntoView)(thumbnailView.div, { + top: THUMBNAIL_SCROLL_MARGIN + }); + } + } + this._currentPageNumber = pageNumber; + } + get pagesRotation() { + return this._pagesRotation; + } + set pagesRotation(rotation) { + if (!(0, _ui_utils.isValidRotation)(rotation)) { + throw new Error("Invalid thumbnails rotation angle."); + } + if (!this.pdfDocument) { + return; + } + if (this._pagesRotation === rotation) { + return; + } + this._pagesRotation = rotation; + const updateArgs = { + rotation + }; + for (const thumbnail of this._thumbnails) { + thumbnail.update(updateArgs); + } + } + cleanup() { + for (const thumbnail of this._thumbnails) { + if (thumbnail.renderingState !== _ui_utils.RenderingStates.FINISHED) { + thumbnail.reset(); + } + } + _pdf_thumbnail_view.TempImageFactory.destroyCanvas(); + } + _resetView() { + this._thumbnails = []; + this._currentPageNumber = 1; + this._pageLabels = null; + this._pagesRotation = 0; + this.container.textContent = ""; + } + setDocument(pdfDocument) { + if (this.pdfDocument) { + this._cancelRendering(); + this._resetView(); + } + this.pdfDocument = pdfDocument; + if (!pdfDocument) { + return; + } + const firstPagePromise = pdfDocument.getPage(1); + const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig(); + firstPagePromise.then(firstPdfPage => { + const pagesCount = pdfDocument.numPages; + const viewport = firstPdfPage.getViewport({ + scale: 1 + }); + for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) { + const thumbnail = new _pdf_thumbnail_view.PDFThumbnailView({ + container: this.container, + eventBus: this.eventBus, + id: pageNum, + defaultViewport: viewport.clone(), + optionalContentConfigPromise, + linkService: this.linkService, + renderingQueue: this.renderingQueue, + l10n: this.l10n, + pageColors: this.pageColors + }); + this._thumbnails.push(thumbnail); + } + this._thumbnails[0]?.setPdfPage(firstPdfPage); + const thumbnailView = this._thumbnails[this._currentPageNumber - 1]; + thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS); + }).catch(reason => { + console.error("Unable to initialize thumbnail viewer", reason); + }); + } + _cancelRendering() { + for (const thumbnail of this._thumbnails) { + thumbnail.cancelRendering(); + } + } + setPageLabels(labels) { + if (!this.pdfDocument) { + return; + } + if (!labels) { + this._pageLabels = null; + } else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) { + this._pageLabels = null; + console.error("PDFThumbnailViewer_setPageLabels: Invalid page labels."); + } else { + this._pageLabels = labels; + } + for (let i = 0, ii = this._thumbnails.length; i < ii; i++) { + this._thumbnails[i].setPageLabel(this._pageLabels?.[i] ?? null); + } + } + async #ensurePdfPageLoaded(thumbView) { + if (thumbView.pdfPage) { + return thumbView.pdfPage; + } + try { + const pdfPage = await this.pdfDocument.getPage(thumbView.id); + if (!thumbView.pdfPage) { + thumbView.setPdfPage(pdfPage); + } + return pdfPage; + } catch (reason) { + console.error("Unable to get page for thumb view", reason); + return null; + } + } + #getScrollAhead(visible) { + if (visible.first?.id === 1) { + return true; + } else if (visible.last?.id === this._thumbnails.length) { return false; - }; - - this.anchor = anchor; - const div = document.createElement("div"); - div.className = "thumbnail"; - div.setAttribute("data-page-number", this.id); - this.div = div; - const ring = document.createElement("div"); - ring.className = "thumbnailSelectionRing"; - const borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH; - ring.style.width = this.canvasWidth + borderAdjustment + "px"; - ring.style.height = this.canvasHeight + borderAdjustment + "px"; - this.ring = ring; - div.appendChild(ring); - anchor.appendChild(div); - container.appendChild(anchor); + } + return this.scroll.down; } - - setPdfPage(pdfPage) { - this.pdfPage = pdfPage; - this.pdfPageRotate = pdfPage.rotate; - const totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = pdfPage.getViewport({ - scale: 1, - rotation: totalRotation - }); - this.reset(); + forceRendering() { + const visibleThumbs = this._getVisibleThumbs(); + const scrollAhead = this.#getScrollAhead(visibleThumbs); + const thumbView = this.renderingQueue.getHighestPriority(visibleThumbs, this._thumbnails, scrollAhead); + if (thumbView) { + this.#ensurePdfPageLoaded(thumbView).then(() => { + this.renderingQueue.renderView(thumbView); + }); + return true; + } + return false; } - - reset() { - this.cancelRendering(); - this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL; - const pageWidth = this.viewport.width, - pageHeight = this.viewport.height, - pageRatio = pageWidth / pageHeight; - this.canvasHeight = this.canvasWidth / pageRatio | 0; - this.scale = this.canvasWidth / pageWidth; - this.div.removeAttribute("data-loaded"); - const ring = this.ring; - ring.textContent = ""; - const borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH; - ring.style.width = this.canvasWidth + borderAdjustment + "px"; - ring.style.height = this.canvasHeight + borderAdjustment + "px"; - - if (this.canvas) { - this.canvas.width = 0; - this.canvas.height = 0; - delete this.canvas; - } - - if (this.image) { - this.image.removeAttribute("src"); - delete this.image; - } - } - - update(rotation) { - if (typeof rotation !== "undefined") { - this.rotation = rotation; - } - - const totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = this.viewport.clone({ - scale: 1, - rotation: totalRotation - }); - this.reset(); - } - - cancelRendering() { - if (this.renderTask) { - this.renderTask.cancel(); - this.renderTask = null; - } - - this.resume = null; - } - - _getPageDrawContext(upscaleFactor = 1) { - const canvas = document.createElement("canvas"); - canvas.mozOpaque = true; - const ctx = canvas.getContext("2d", { - alpha: false - }); - const outputScale = (0, _ui_utils.getOutputScale)(ctx); - canvas.width = upscaleFactor * this.canvasWidth * outputScale.sx | 0; - canvas.height = upscaleFactor * this.canvasHeight * outputScale.sy | 0; - const transform = outputScale.scaled ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0] : null; - return { - ctx, - canvas, - transform - }; - } - - _convertCanvasToImage(canvas) { - if (this.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { - throw new Error("_convertCanvasToImage: Rendering has not finished."); - } - - const reducedCanvas = this._reduceImage(canvas); - - const image = document.createElement("img"); - image.className = "thumbnailImage"; - - this._thumbPageCanvas.then(msg => { - image.setAttribute("aria-label", msg); - }); - - image.style.width = this.canvasWidth + "px"; - image.style.height = this.canvasHeight + "px"; - image.src = reducedCanvas.toDataURL(); - this.image = image; - this.div.setAttribute("data-loaded", true); - this.ring.appendChild(image); - reducedCanvas.width = 0; - reducedCanvas.height = 0; - } - - draw() { - if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) { - console.error("Must be in new state before drawing"); - return Promise.resolve(undefined); - } - - const { - pdfPage - } = this; - - if (!pdfPage) { - this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; - return Promise.reject(new Error("pdfPage is not loaded")); - } - - this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING; - - const finishRenderTask = async (error = null) => { - if (renderTask === this.renderTask) { - this.renderTask = null; - } - - if (error instanceof _pdfjsLib.RenderingCancelledException) { - return; - } - - this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; - - this._convertCanvasToImage(canvas); - - if (error) { - throw error; - } - }; - - const { - ctx, - canvas, - transform - } = this._getPageDrawContext(DRAW_UPSCALE_FACTOR); - - const drawViewport = this.viewport.clone({ - scale: DRAW_UPSCALE_FACTOR * this.scale - }); - - const renderContinueCallback = cont => { - if (!this.renderingQueue.isHighestPriority(this)) { - this.renderingState = _pdf_rendering_queue.RenderingStates.PAUSED; - - this.resume = () => { - this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING; - cont(); - }; - - return; - } - - cont(); - }; - - const renderContext = { - canvasContext: ctx, - transform, - viewport: drawViewport, - optionalContentConfigPromise: this._optionalContentConfigPromise - }; - const renderTask = this.renderTask = pdfPage.render(renderContext); - renderTask.onContinue = renderContinueCallback; - const resultPromise = renderTask.promise.then(function () { - return finishRenderTask(null); - }, function (error) { - return finishRenderTask(error); - }); - resultPromise.finally(() => { - canvas.width = 0; - canvas.height = 0; - const pageCached = this.linkService.isPageCached(this.id); - - if (!pageCached) { - this.pdfPage?.cleanup(); - } - }); - return resultPromise; - } - - setImage(pageView) { - if (this._checkSetImageDisabled()) { - return; - } - - if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) { - return; - } - - const { - canvas, - pdfPage - } = pageView; - - if (!canvas) { - return; - } - - if (!this.pdfPage) { - this.setPdfPage(pdfPage); - } - - this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; - - this._convertCanvasToImage(canvas); - } - - _reduceImage(img) { - const { - ctx, - canvas - } = this._getPageDrawContext(); - - if (img.width <= 2 * canvas.width) { - ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, canvas.width, canvas.height); - return canvas; - } - - let reducedWidth = canvas.width << MAX_NUM_SCALING_STEPS; - let reducedHeight = canvas.height << MAX_NUM_SCALING_STEPS; - const [reducedImage, reducedImageCtx] = TempImageFactory.getCanvas(reducedWidth, reducedHeight); - - while (reducedWidth > img.width || reducedHeight > img.height) { - reducedWidth >>= 1; - reducedHeight >>= 1; - } - - reducedImageCtx.drawImage(img, 0, 0, img.width, img.height, 0, 0, reducedWidth, reducedHeight); - - while (reducedWidth > 2 * canvas.width) { - reducedImageCtx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, reducedWidth >> 1, reducedHeight >> 1); - reducedWidth >>= 1; - reducedHeight >>= 1; - } - - ctx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, canvas.width, canvas.height); - return canvas; - } - - get _thumbPageTitle() { - return this.l10n.get("thumb_page_title", { - page: this.pageLabel ?? this.id - }); - } - - get _thumbPageCanvas() { - return this.l10n.get("thumb_page_canvas", { - page: this.pageLabel ?? this.id - }); - } - - setPageLabel(label) { - this.pageLabel = typeof label === "string" ? label : null; - - this._thumbPageTitle.then(msg => { - this.anchor.title = msg; - }); - - if (this.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { - return; - } - - this._thumbPageCanvas.then(msg => { - this.image?.setAttribute("aria-label", msg); - }); - } - } - -exports.PDFThumbnailView = PDFThumbnailView; +exports.PDFThumbnailViewer = PDFThumbnailViewer; /***/ }), /* 27 */ @@ -9733,84 +7964,318 @@ exports.PDFThumbnailView = PDFThumbnailView; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.PDFViewer = void 0; - -var _ui_utils = __webpack_require__(4); - -var _base_viewer = __webpack_require__(28); - -var _pdfjsLib = __webpack_require__(5); - -class PDFViewer extends _base_viewer.BaseViewer { - get _viewerElement() { - return (0, _pdfjsLib.shadow)(this, "_viewerElement", this.viewer); - } - - _scrollIntoView({ - pageDiv, - pageSpot = null, - pageNumber = null - }) { - if (!pageSpot && !this.isInPresentationMode) { - const left = pageDiv.offsetLeft + pageDiv.clientLeft; - const right = left + pageDiv.clientWidth; - const { - scrollLeft, - clientWidth - } = this.container; - - if (this._isScrollModeHorizontal || left < scrollLeft || right > scrollLeft + clientWidth) { - pageSpot = { - left: 0, - top: 0 - }; - } - } - - super._scrollIntoView({ - pageDiv, - pageSpot, - pageNumber +exports.TempImageFactory = exports.PDFThumbnailView = void 0; +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); +const DRAW_UPSCALE_FACTOR = 2; +const MAX_NUM_SCALING_STEPS = 3; +const THUMBNAIL_WIDTH = 98; +class TempImageFactory { + static #tempCanvas = null; + static getCanvas(width, height) { + const tempCanvas = this.#tempCanvas ||= document.createElement("canvas"); + tempCanvas.width = width; + tempCanvas.height = height; + const ctx = tempCanvas.getContext("2d", { + alpha: false }); + ctx.save(); + ctx.fillStyle = "rgb(255, 255, 255)"; + ctx.fillRect(0, 0, width, height); + ctx.restore(); + return [tempCanvas, tempCanvas.getContext("2d")]; } - - _getVisiblePages() { - if (this.isInPresentationMode) { - return this._getCurrentVisiblePage(); + static destroyCanvas() { + const tempCanvas = this.#tempCanvas; + if (tempCanvas) { + tempCanvas.width = 0; + tempCanvas.height = 0; } - - return super._getVisiblePages(); + this.#tempCanvas = null; } - - _updateHelper(visiblePages) { - if (this.isInPresentationMode) { +} +exports.TempImageFactory = TempImageFactory; +class PDFThumbnailView { + constructor({ + container, + eventBus, + id, + defaultViewport, + optionalContentConfigPromise, + linkService, + renderingQueue, + l10n, + pageColors + }) { + this.id = id; + this.renderingId = "thumbnail" + id; + this.pageLabel = null; + this.pdfPage = null; + this.rotation = 0; + this.viewport = defaultViewport; + this.pdfPageRotate = defaultViewport.rotation; + this._optionalContentConfigPromise = optionalContentConfigPromise || null; + this.pageColors = pageColors || null; + this.eventBus = eventBus; + this.linkService = linkService; + this.renderingQueue = renderingQueue; + this.renderTask = null; + this.renderingState = _ui_utils.RenderingStates.INITIAL; + this.resume = null; + this.l10n = l10n; + const anchor = document.createElement("a"); + // custom for SEAFILE + anchor.className = "d-inline-block position-relative"; + anchor.href = linkService.getAnchorUrl("#page=" + id); + this._thumbPageTitle.then(msg => { + anchor.title = msg; + }); + anchor.onclick = function () { + linkService.goToPage(id); + return false; + }; + this.anchor = anchor; + const div = document.createElement("div"); + div.className = "thumbnail"; + div.setAttribute("data-page-number", this.id); + this.div = div; + this.#updateDims(); + const img = document.createElement("div"); + img.className = "thumbnailImage"; + this._placeholderImg = img; + // custom for SEAFILE + const span = document.createElement("span"); + span.className = "thumbnail-page-number mr-1 position-absolute"; + span.innerHTML = this.id; + anchor.append(span); + anchor.append(img); + div.append(anchor); + container.append(div); + } + #updateDims() { + const { + width, + height + } = this.viewport; + const ratio = width / height; + this.canvasWidth = THUMBNAIL_WIDTH; + this.canvasHeight = this.canvasWidth / ratio | 0; + this.scale = this.canvasWidth / width; + const { + style + } = this.div; + style.setProperty("--thumbnail-width", `${this.canvasWidth}px`); + style.setProperty("--thumbnail-height", `${this.canvasHeight}px`); + } + setPdfPage(pdfPage) { + this.pdfPage = pdfPage; + this.pdfPageRotate = pdfPage.rotate; + const totalRotation = (this.rotation + this.pdfPageRotate) % 360; + this.viewport = pdfPage.getViewport({ + scale: 1, + rotation: totalRotation + }); + this.reset(); + } + reset() { + this.cancelRendering(); + this.renderingState = _ui_utils.RenderingStates.INITIAL; + this.div.removeAttribute("data-loaded"); + this.image?.replaceWith(this._placeholderImg); + this.#updateDims(); + if (this.image) { + this.image.removeAttribute("src"); + delete this.image; + } + } + update({ + rotation = null + }) { + if (typeof rotation === "number") { + this.rotation = rotation; + } + const totalRotation = (this.rotation + this.pdfPageRotate) % 360; + this.viewport = this.viewport.clone({ + scale: 1, + rotation: totalRotation + }); + this.reset(); + } + cancelRendering() { + if (this.renderTask) { + this.renderTask.cancel(); + this.renderTask = null; + } + this.resume = null; + } + _getPageDrawContext(upscaleFactor = 1) { + const canvas = document.createElement("canvas"); + const ctx = canvas.getContext("2d", { + alpha: false + }); + const outputScale = new _ui_utils.OutputScale(); + canvas.width = upscaleFactor * this.canvasWidth * outputScale.sx | 0; + canvas.height = upscaleFactor * this.canvasHeight * outputScale.sy | 0; + const transform = outputScale.scaled ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0] : null; + return { + ctx, + canvas, + transform + }; + } + _convertCanvasToImage(canvas) { + if (this.renderingState !== _ui_utils.RenderingStates.FINISHED) { + throw new Error("_convertCanvasToImage: Rendering has not finished."); + } + const reducedCanvas = this._reduceImage(canvas); + const image = document.createElement("img"); + image.className = "thumbnailImage"; + this._thumbPageCanvas.then(msg => { + image.setAttribute("aria-label", msg); + }); + image.src = reducedCanvas.toDataURL(); + this.image = image; + this.div.setAttribute("data-loaded", true); + this._placeholderImg.replaceWith(image); + reducedCanvas.width = 0; + reducedCanvas.height = 0; + } + async #finishRenderTask(renderTask, canvas, error = null) { + if (renderTask === this.renderTask) { + this.renderTask = null; + } + if (error instanceof _pdfjsLib.RenderingCancelledException) { return; } - - let currentId = this._currentPageNumber; - let stillFullyVisible = false; - - for (const page of visiblePages) { - if (page.percent < 100) { - break; - } - - if (page.id === currentId && this._scrollMode === _ui_utils.ScrollMode.VERTICAL && this._spreadMode === _ui_utils.SpreadMode.NONE) { - stillFullyVisible = true; - break; - } + this.renderingState = _ui_utils.RenderingStates.FINISHED; + this._convertCanvasToImage(canvas); + if (error) { + throw error; } - - if (!stillFullyVisible) { - currentId = visiblePages[0].id; - } - - this._setCurrentPageNumber(currentId); } - + async draw() { + if (this.renderingState !== _ui_utils.RenderingStates.INITIAL) { + console.error("Must be in new state before drawing"); + return undefined; + } + const { + pdfPage + } = this; + if (!pdfPage) { + this.renderingState = _ui_utils.RenderingStates.FINISHED; + throw new Error("pdfPage is not loaded"); + } + this.renderingState = _ui_utils.RenderingStates.RUNNING; + const { + ctx, + canvas, + transform + } = this._getPageDrawContext(DRAW_UPSCALE_FACTOR); + const drawViewport = this.viewport.clone({ + scale: DRAW_UPSCALE_FACTOR * this.scale + }); + const renderContinueCallback = cont => { + if (!this.renderingQueue.isHighestPriority(this)) { + this.renderingState = _ui_utils.RenderingStates.PAUSED; + this.resume = () => { + this.renderingState = _ui_utils.RenderingStates.RUNNING; + cont(); + }; + return; + } + cont(); + }; + const renderContext = { + canvasContext: ctx, + transform, + viewport: drawViewport, + optionalContentConfigPromise: this._optionalContentConfigPromise, + pageColors: this.pageColors + }; + const renderTask = this.renderTask = pdfPage.render(renderContext); + renderTask.onContinue = renderContinueCallback; + const resultPromise = renderTask.promise.then(() => this.#finishRenderTask(renderTask, canvas), error => this.#finishRenderTask(renderTask, canvas, error)); + resultPromise.finally(() => { + canvas.width = 0; + canvas.height = 0; + this.eventBus.dispatch("thumbnailrendered", { + source: this, + pageNumber: this.id, + pdfPage: this.pdfPage + }); + }); + return resultPromise; + } + setImage(pageView) { + if (this.renderingState !== _ui_utils.RenderingStates.INITIAL) { + return; + } + const { + thumbnailCanvas: canvas, + pdfPage, + scale + } = pageView; + if (!canvas) { + return; + } + if (!this.pdfPage) { + this.setPdfPage(pdfPage); + } + if (scale < this.scale) { + return; + } + this.renderingState = _ui_utils.RenderingStates.FINISHED; + this._convertCanvasToImage(canvas); + } + _reduceImage(img) { + const { + ctx, + canvas + } = this._getPageDrawContext(); + if (img.width <= 2 * canvas.width) { + ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, canvas.width, canvas.height); + return canvas; + } + let reducedWidth = canvas.width << MAX_NUM_SCALING_STEPS; + let reducedHeight = canvas.height << MAX_NUM_SCALING_STEPS; + const [reducedImage, reducedImageCtx] = TempImageFactory.getCanvas(reducedWidth, reducedHeight); + while (reducedWidth > img.width || reducedHeight > img.height) { + reducedWidth >>= 1; + reducedHeight >>= 1; + } + reducedImageCtx.drawImage(img, 0, 0, img.width, img.height, 0, 0, reducedWidth, reducedHeight); + while (reducedWidth > 2 * canvas.width) { + reducedImageCtx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, reducedWidth >> 1, reducedHeight >> 1); + reducedWidth >>= 1; + reducedHeight >>= 1; + } + ctx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, canvas.width, canvas.height); + return canvas; + } + get _thumbPageTitle() { + return this.l10n.get("thumb_page_title", { + page: this.pageLabel ?? this.id + }); + } + get _thumbPageCanvas() { + return this.l10n.get("thumb_page_canvas", { + page: this.pageLabel ?? this.id + }); + } + setPageLabel(label) { + this.pageLabel = typeof label === "string" ? label : null; + this._thumbPageTitle.then(msg => { + this.anchor.title = msg; + }); + if (this.renderingState !== _ui_utils.RenderingStates.FINISHED) { + return; + } + this._thumbPageCanvas.then(msg => { + this.image?.setAttribute("aria-label", msg); + }); + } } - -exports.PDFViewer = PDFViewer; +exports.PDFThumbnailView = PDFThumbnailView; /***/ }), /* 28 */ @@ -9821,198 +8286,190 @@ exports.PDFViewer = PDFViewer; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.BaseViewer = void 0; - -var _pdfjsLib = __webpack_require__(5); - -var _ui_utils = __webpack_require__(4); - -var _pdf_rendering_queue = __webpack_require__(8); - -var _annotation_layer_builder = __webpack_require__(29); - -var _l10n_utils = __webpack_require__(30); - -var _pdf_page_view = __webpack_require__(31); - -var _pdf_link_service = __webpack_require__(19); - -var _struct_tree_layer_builder = __webpack_require__(32); - -var _text_layer_builder = __webpack_require__(33); - -var _xfa_layer_builder = __webpack_require__(34); - +exports.PagesCountLimit = exports.PDFViewer = exports.PDFPageViewBuffer = void 0; +var _pdfjsLib = __webpack_require__(4); +var _ui_utils = __webpack_require__(3); +var _l10n_utils = __webpack_require__(29); +var _pdf_page_view = __webpack_require__(30); +var _pdf_rendering_queue = __webpack_require__(23); +var _pdf_link_service = __webpack_require__(7); const DEFAULT_CACHE_SIZE = 10; - -function PDFPageViewBuffer(size) { - const data = []; - - this.push = function (view) { - const i = data.indexOf(view); - - if (i >= 0) { - data.splice(i, 1); +const PagesCountLimit = { + FORCE_SCROLL_MODE_PAGE: 15000, + FORCE_LAZY_PAGE_INIT: 7500, + PAUSE_EAGER_PAGE_INIT: 250 +}; +exports.PagesCountLimit = PagesCountLimit; +function isValidAnnotationEditorMode(mode) { + return Object.values(_pdfjsLib.AnnotationEditorType).includes(mode) && mode !== _pdfjsLib.AnnotationEditorType.DISABLE; +} +class PDFPageViewBuffer { + #buf = new Set(); + #size = 0; + constructor(size) { + this.#size = size; + } + push(view) { + const buf = this.#buf; + if (buf.has(view)) { + buf.delete(view); } - - data.push(view); - - if (data.length > size) { - data.shift().destroy(); + buf.add(view); + if (buf.size > this.#size) { + this.#destroyFirstView(); } - }; - - this.resize = function (newSize, pagesToKeep) { - size = newSize; - - if (pagesToKeep) { - const pageIdsToKeep = new Set(); - - for (let i = 0, iMax = pagesToKeep.length; i < iMax; ++i) { - pageIdsToKeep.add(pagesToKeep[i].id); + } + resize(newSize, idsToKeep = null) { + this.#size = newSize; + const buf = this.#buf; + if (idsToKeep) { + const ii = buf.size; + let i = 1; + for (const view of buf) { + if (idsToKeep.has(view.id)) { + buf.delete(view); + buf.add(view); + } + if (++i > ii) { + break; + } } - - (0, _ui_utils.moveToEndOfArray)(data, function (page) { - return pageIdsToKeep.has(page.id); - }); } - - while (data.length > size) { - data.shift().destroy(); + while (buf.size > this.#size) { + this.#destroyFirstView(); } - }; - - this.has = function (view) { - return data.includes(view); - }; -} - -function isSameScale(oldScale, newScale) { - if (newScale === oldScale) { - return true; } - - if (Math.abs(newScale - oldScale) < 1e-15) { - return true; + has(view) { + return this.#buf.has(view); + } + [Symbol.iterator]() { + return this.#buf.keys(); + } + #destroyFirstView() { + const firstView = this.#buf.keys().next().value; + firstView?.destroy(); + this.#buf.delete(firstView); } - - return false; } - -class BaseViewer { +exports.PDFPageViewBuffer = PDFPageViewBuffer; +class PDFViewer { + #buffer = null; + #annotationEditorMode = _pdfjsLib.AnnotationEditorType.NONE; + #annotationEditorUIManager = null; + #annotationMode = _pdfjsLib.AnnotationMode.ENABLE_FORMS; + #containerTopLeft = null; + #copyCallbackBound = null; + #enablePermissions = false; + #getAllTextInProgress = false; + #hiddenCopyElement = null; + #interruptCopyCondition = false; + #previousContainerHeight = 0; + #resizeObserver = new ResizeObserver(this.#resizeObserverCallback.bind(this)); + #scrollModePageState = null; + #onVisibilityChange = null; + #scaleTimeoutId = null; + #textLayerMode = _ui_utils.TextLayerMode.ENABLE; constructor(options) { - if (this.constructor === BaseViewer) { - throw new Error("Cannot initialize BaseViewer."); - } - - const viewerVersion = '2.10.377'; - + const viewerVersion = '3.8.162'; if (_pdfjsLib.version !== viewerVersion) { throw new Error(`The API version "${_pdfjsLib.version}" does not match the Viewer version "${viewerVersion}".`); } - - this._name = this.constructor.name; this.container = options.container; this.viewer = options.viewer || options.container.firstElementChild; - - if (!(this.container?.tagName.toUpperCase() === "DIV" && this.viewer?.tagName.toUpperCase() === "DIV")) { + if (this.container?.tagName !== "DIV" || this.viewer?.tagName !== "DIV") { throw new Error("Invalid `container` and/or `viewer` option."); } - if (this.container.offsetParent && getComputedStyle(this.container).position !== "absolute") { throw new Error("The `container` must be absolutely positioned."); } - + this.#resizeObserver.observe(this.container); this.eventBus = options.eventBus; this.linkService = options.linkService || new _pdf_link_service.SimpleLinkService(); this.downloadManager = options.downloadManager || null; this.findController = options.findController || null; + if (this.findController) { + this.findController.onIsPageVisible = pageNumber => this._getVisiblePages().ids.has(pageNumber); + } this._scriptingManager = options.scriptingManager || null; - this.removePageBorders = options.removePageBorders || false; - this.textLayerMode = Number.isInteger(options.textLayerMode) ? options.textLayerMode : _ui_utils.TextLayerMode.ENABLE; + this.#textLayerMode = options.textLayerMode ?? _ui_utils.TextLayerMode.ENABLE; + this.#annotationMode = options.annotationMode ?? _pdfjsLib.AnnotationMode.ENABLE_FORMS; + this.#annotationEditorMode = options.annotationEditorMode ?? _pdfjsLib.AnnotationEditorType.NONE; this.imageResourcesPath = options.imageResourcesPath || ""; - this.renderInteractiveForms = options.renderInteractiveForms !== false; this.enablePrintAutoRotate = options.enablePrintAutoRotate || false; - this.renderer = options.renderer || _ui_utils.RendererType.CANVAS; + this.removePageBorders = options.removePageBorders || false; this.useOnlyCssZoom = options.useOnlyCssZoom || false; + this.isOffscreenCanvasSupported = options.isOffscreenCanvasSupported ?? true; this.maxCanvasPixels = options.maxCanvasPixels; this.l10n = options.l10n || _l10n_utils.NullL10n; - this.enableScripting = options.enableScripting === true && !!this._scriptingManager; + this.#enablePermissions = options.enablePermissions || false; + this.pageColors = options.pageColors || null; this.defaultRenderingQueue = !options.renderingQueue; - if (this.defaultRenderingQueue) { this.renderingQueue = new _pdf_rendering_queue.PDFRenderingQueue(); this.renderingQueue.setViewer(this); } else { this.renderingQueue = options.renderingQueue; } - this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdate.bind(this)); this.presentationModeState = _ui_utils.PresentationModeState.UNKNOWN; this._onBeforeDraw = this._onAfterDraw = null; - this._resetView(); - if (this.removePageBorders) { this.viewer.classList.add("removePageBorders"); } - - Promise.resolve().then(() => { - this.eventBus.dispatch("baseviewerinit", { - source: this - }); + this.#updateContainerHeightCss(); + this.eventBus._on("thumbnailrendered", ({ + pageNumber, + pdfPage + }) => { + const pageView = this._pages[pageNumber - 1]; + if (!this.#buffer.has(pageView)) { + pdfPage?.cleanup(); + } }); } - get pagesCount() { return this._pages.length; } - getPageView(index) { return this._pages[index]; } - - get pageViewsReady() { - if (!this._pagesCapability.settled) { - return false; - } - - return this._pages.every(function (pageView) { - return pageView?.pdfPage; - }); + getCachedPageViews() { + return new Set(this.#buffer); + } + get pageViewsReady() { + return this._pagesCapability.settled && this._pages.every(pageView => pageView?.pdfPage); + } + get renderForms() { + return this.#annotationMode === _pdfjsLib.AnnotationMode.ENABLE_FORMS; + } + get enableScripting() { + return !!this._scriptingManager; } - get currentPageNumber() { return this._currentPageNumber; } - set currentPageNumber(val) { if (!Number.isInteger(val)) { throw new Error("Invalid page number."); } - if (!this.pdfDocument) { return; } - if (!this._setCurrentPageNumber(val, true)) { - console.error(`${this._name}.currentPageNumber: "${val}" is not a valid page.`); + console.error(`currentPageNumber: "${val}" is not a valid page.`); } } - _setCurrentPageNumber(val, resetCurrentPageView = false) { if (this._currentPageNumber === val) { if (resetCurrentPageView) { - this._resetCurrentPageView(); + this.#resetCurrentPageView(); } - return true; } - if (!(0 < val && val <= this.pagesCount)) { return false; } - const previous = this._currentPageNumber; this._currentPageNumber = val; this.eventBus.dispatch("pagechanging", { @@ -10021,377 +8478,566 @@ class BaseViewer { pageLabel: this._pageLabels?.[val - 1] ?? null, previous }); - if (resetCurrentPageView) { - this._resetCurrentPageView(); + this.#resetCurrentPageView(); } - return true; } - get currentPageLabel() { return this._pageLabels?.[this._currentPageNumber - 1] ?? null; } - set currentPageLabel(val) { if (!this.pdfDocument) { return; } - let page = val | 0; - if (this._pageLabels) { const i = this._pageLabels.indexOf(val); - if (i >= 0) { page = i + 1; } } - if (!this._setCurrentPageNumber(page, true)) { - console.error(`${this._name}.currentPageLabel: "${val}" is not a valid page.`); + console.error(`currentPageLabel: "${val}" is not a valid page.`); } } - get currentScale() { return this._currentScale !== _ui_utils.UNKNOWN_SCALE ? this._currentScale : _ui_utils.DEFAULT_SCALE; } - set currentScale(val) { if (isNaN(val)) { throw new Error("Invalid numeric scale."); } - if (!this.pdfDocument) { return; } - - this._setScale(val, false); + this.#setScale(val, { + noScroll: false + }); } - get currentScaleValue() { return this._currentScaleValue; } - set currentScaleValue(val) { if (!this.pdfDocument) { return; } - - this._setScale(val, false); + this.#setScale(val, { + noScroll: false + }); } - get pagesRotation() { return this._pagesRotation; } - set pagesRotation(rotation) { if (!(0, _ui_utils.isValidRotation)(rotation)) { throw new Error("Invalid pages rotation angle."); } - if (!this.pdfDocument) { return; } - rotation %= 360; - if (rotation < 0) { rotation += 360; } - if (this._pagesRotation === rotation) { return; } - this._pagesRotation = rotation; const pageNumber = this._currentPageNumber; - - for (let i = 0, ii = this._pages.length; i < ii; i++) { - const pageView = this._pages[i]; - pageView.update(pageView.scale, rotation); - } - + this.refresh(true, { + rotation + }); if (this._currentScaleValue) { - this._setScale(this._currentScaleValue, true); + this.#setScale(this._currentScaleValue, { + noScroll: true + }); } - this.eventBus.dispatch("rotationchanging", { source: this, pagesRotation: rotation, pageNumber }); - if (this.defaultRenderingQueue) { this.update(); } } - get firstPagePromise() { return this.pdfDocument ? this._firstPageCapability.promise : null; } - get onePageRendered() { return this.pdfDocument ? this._onePageRenderedCapability.promise : null; } - get pagesPromise() { return this.pdfDocument ? this._pagesCapability.promise : null; } - - get _viewerElement() { - throw new Error("Not implemented: _viewerElement"); + #layerProperties() { + const self = this; + return { + get annotationEditorUIManager() { + return self.#annotationEditorUIManager; + }, + get annotationStorage() { + return self.pdfDocument?.annotationStorage; + }, + get downloadManager() { + return self.downloadManager; + }, + get enableScripting() { + return !!self._scriptingManager; + }, + get fieldObjectsPromise() { + return self.pdfDocument?.getFieldObjects(); + }, + get findController() { + return self.findController; + }, + get hasJSActionsPromise() { + return self.pdfDocument?.hasJSActions(); + }, + get linkService() { + return self.linkService; + } + }; } - - _onePageRenderedOrForceFetch() { - if (!this.container.offsetParent || this._getVisiblePages().views.length === 0) { + #initializePermissions(permissions) { + const params = { + annotationEditorMode: this.#annotationEditorMode, + annotationMode: this.#annotationMode, + textLayerMode: this.#textLayerMode + }; + if (!permissions) { + return params; + } + if (!permissions.includes(_pdfjsLib.PermissionFlag.COPY) && this.#textLayerMode === _ui_utils.TextLayerMode.ENABLE) { + params.textLayerMode = _ui_utils.TextLayerMode.ENABLE_PERMISSIONS; + } + if (!permissions.includes(_pdfjsLib.PermissionFlag.MODIFY_CONTENTS)) { + params.annotationEditorMode = _pdfjsLib.AnnotationEditorType.DISABLE; + } + if (!permissions.includes(_pdfjsLib.PermissionFlag.MODIFY_ANNOTATIONS) && !permissions.includes(_pdfjsLib.PermissionFlag.FILL_INTERACTIVE_FORMS) && this.#annotationMode === _pdfjsLib.AnnotationMode.ENABLE_FORMS) { + params.annotationMode = _pdfjsLib.AnnotationMode.ENABLE; + } + return params; + } + #onePageRenderedOrForceFetch() { + if (document.visibilityState === "hidden" || !this.container.offsetParent || this._getVisiblePages().views.length === 0) { return Promise.resolve(); } - - return this._onePageRenderedCapability.promise; + const visibilityChangePromise = new Promise(resolve => { + this.#onVisibilityChange = () => { + if (document.visibilityState !== "hidden") { + return; + } + resolve(); + document.removeEventListener("visibilitychange", this.#onVisibilityChange); + this.#onVisibilityChange = null; + }; + document.addEventListener("visibilitychange", this.#onVisibilityChange); + }); + return Promise.race([this._onePageRenderedCapability.promise, visibilityChangePromise]); + } + async getAllText() { + const texts = []; + const buffer = []; + for (let pageNum = 1, pagesCount = this.pdfDocument.numPages; pageNum <= pagesCount; ++pageNum) { + if (this.#interruptCopyCondition) { + return null; + } + buffer.length = 0; + const page = await this.pdfDocument.getPage(pageNum); + const { + items + } = await page.getTextContent(); + for (const item of items) { + if (item.str) { + buffer.push(item.str); + } + if (item.hasEOL) { + buffer.push("\n"); + } + } + texts.push((0, _ui_utils.removeNullCharacters)(buffer.join(""))); + } + return texts.join("\n"); + } + #copyCallback(textLayerMode, event) { + const selection = document.getSelection(); + const { + focusNode, + anchorNode + } = selection; + if (anchorNode && focusNode && selection.containsNode(this.#hiddenCopyElement)) { + if (this.#getAllTextInProgress || textLayerMode === _ui_utils.TextLayerMode.ENABLE_PERMISSIONS) { + event.preventDefault(); + event.stopPropagation(); + return; + } + this.#getAllTextInProgress = true; + const savedCursor = this.container.style.cursor; + this.container.style.cursor = "wait"; + const interruptCopy = ev => this.#interruptCopyCondition = ev.key === "Escape"; + window.addEventListener("keydown", interruptCopy); + this.getAllText().then(async text => { + if (text !== null) { + await navigator.clipboard.writeText(text); + } + }).catch(reason => { + console.warn(`Something goes wrong when extracting the text: ${reason.message}`); + }).finally(() => { + this.#getAllTextInProgress = false; + this.#interruptCopyCondition = false; + window.removeEventListener("keydown", interruptCopy); + this.container.style.cursor = savedCursor; + }); + event.preventDefault(); + event.stopPropagation(); + } } - setDocument(pdfDocument) { if (this.pdfDocument) { this.eventBus.dispatch("pagesdestroy", { source: this }); - this._cancelRendering(); - this._resetView(); - - if (this.findController) { - this.findController.setDocument(null); - } - - if (this._scriptingManager) { - this._scriptingManager.setDocument(null); + this.findController?.setDocument(null); + this._scriptingManager?.setDocument(null); + if (this.#annotationEditorUIManager) { + this.#annotationEditorUIManager.destroy(); + this.#annotationEditorUIManager = null; } } - this.pdfDocument = pdfDocument; - if (!pdfDocument) { return; } - - const isPureXfa = pdfDocument.isPureXfa; const pagesCount = pdfDocument.numPages; const firstPagePromise = pdfDocument.getPage(1); const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig(); - + const permissionsPromise = this.#enablePermissions ? pdfDocument.getPermissions() : Promise.resolve(); + if (pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE) { + console.warn("Forcing PAGE-scrolling for performance reasons, given the length of the document."); + const mode = this._scrollMode = _ui_utils.ScrollMode.PAGE; + this.eventBus.dispatch("scrollmodechanged", { + source: this, + mode + }); + } this._pagesCapability.promise.then(() => { this.eventBus.dispatch("pagesloaded", { source: this, pagesCount }); - }); - + }, () => {}); this._onBeforeDraw = evt => { const pageView = this._pages[evt.pageNumber - 1]; - if (!pageView) { return; } - - this._buffer.push(pageView); + this.#buffer.push(pageView); }; - this.eventBus._on("pagerender", this._onBeforeDraw); - this._onAfterDraw = evt => { if (evt.cssTransform || this._onePageRenderedCapability.settled) { return; } - - this._onePageRenderedCapability.resolve(); - + this._onePageRenderedCapability.resolve({ + timestamp: evt.timestamp + }); this.eventBus._off("pagerendered", this._onAfterDraw); - this._onAfterDraw = null; + if (this.#onVisibilityChange) { + document.removeEventListener("visibilitychange", this.#onVisibilityChange); + this.#onVisibilityChange = null; + } }; - this.eventBus._on("pagerendered", this._onAfterDraw); - - firstPagePromise.then(firstPdfPage => { + Promise.all([firstPagePromise, permissionsPromise]).then(([firstPdfPage, permissions]) => { + if (pdfDocument !== this.pdfDocument) { + return; + } this._firstPageCapability.resolve(firstPdfPage); - this._optionalContentConfigPromise = optionalContentConfigPromise; + const { + annotationEditorMode, + annotationMode, + textLayerMode + } = this.#initializePermissions(permissions); + if (textLayerMode !== _ui_utils.TextLayerMode.DISABLE) { + const element = this.#hiddenCopyElement = document.createElement("div"); + element.id = "hiddenCopyElement"; + this.viewer.before(element); + } + if (annotationEditorMode !== _pdfjsLib.AnnotationEditorType.DISABLE) { + const mode = annotationEditorMode; + if (pdfDocument.isPureXfa) { + console.warn("Warning: XFA-editing is not implemented."); + } else if (isValidAnnotationEditorMode(mode)) { + this.#annotationEditorUIManager = new _pdfjsLib.AnnotationEditorUIManager(this.container, this.eventBus, pdfDocument?.annotationStorage); + if (mode !== _pdfjsLib.AnnotationEditorType.NONE) { + this.#annotationEditorUIManager.updateMode(mode); + } + } else { + console.error(`Invalid AnnotationEditor mode: ${mode}`); + } + } + const layerProperties = this.#layerProperties.bind(this); + const viewerElement = this._scrollMode === _ui_utils.ScrollMode.PAGE ? null : this.viewer; const scale = this.currentScale; const viewport = firstPdfPage.getViewport({ - scale: scale * _ui_utils.CSS_UNITS + scale: scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS }); - const textLayerFactory = this.textLayerMode !== _ui_utils.TextLayerMode.DISABLE ? this : null; - const xfaLayerFactory = isPureXfa ? this : null; - + this.viewer.style.setProperty("--scale-factor", viewport.scale); + if (this.pageColors?.foreground === "CanvasText" || this.pageColors?.background === "Canvas") { + this.viewer.style.setProperty("--hcm-highligh-filter", pdfDocument.filterFactory.addHighlightHCMFilter("CanvasText", "Canvas", "HighlightText", "Highlight")); + } for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) { const pageView = new _pdf_page_view.PDFPageView({ - container: this._viewerElement, + container: viewerElement, eventBus: this.eventBus, id: pageNum, scale, defaultViewport: viewport.clone(), optionalContentConfigPromise, renderingQueue: this.renderingQueue, - textLayerFactory, - textLayerMode: this.textLayerMode, - annotationLayerFactory: this, - xfaLayerFactory, - structTreeLayerFactory: this, + textLayerMode, + annotationMode, imageResourcesPath: this.imageResourcesPath, - renderInteractiveForms: this.renderInteractiveForms, - renderer: this.renderer, useOnlyCssZoom: this.useOnlyCssZoom, + isOffscreenCanvasSupported: this.isOffscreenCanvasSupported, maxCanvasPixels: this.maxCanvasPixels, - l10n: this.l10n + pageColors: this.pageColors, + l10n: this.l10n, + layerProperties }); - this._pages.push(pageView); } - const firstPageView = this._pages[0]; - if (firstPageView) { firstPageView.setPdfPage(firstPdfPage); this.linkService.cachePageRef(1, firstPdfPage.ref); } - - if (this._spreadMode !== _ui_utils.SpreadMode.NONE) { + if (this._scrollMode === _ui_utils.ScrollMode.PAGE) { + this.#ensurePageViewVisible(); + } else if (this._spreadMode !== _ui_utils.SpreadMode.NONE) { this._updateSpreadMode(); } - - this._onePageRenderedOrForceFetch().then(() => { - if (this.findController) { - this.findController.setDocument(pdfDocument); + this.#onePageRenderedOrForceFetch().then(async () => { + this.findController?.setDocument(pdfDocument); + this._scriptingManager?.setDocument(pdfDocument); + if (this.#hiddenCopyElement) { + this.#copyCallbackBound = this.#copyCallback.bind(this, textLayerMode); + document.addEventListener("copy", this.#copyCallbackBound); } - - if (this.enableScripting) { - this._scriptingManager.setDocument(pdfDocument); + if (this.#annotationEditorUIManager) { + this.eventBus.dispatch("annotationeditormodechanged", { + source: this, + mode: this.#annotationEditorMode + }); } - - if (pdfDocument.loadingParams.disableAutoFetch || pagesCount > 7500) { + if (pdfDocument.loadingParams.disableAutoFetch || pagesCount > PagesCountLimit.FORCE_LAZY_PAGE_INIT) { this._pagesCapability.resolve(); - return; } - let getPagesLeft = pagesCount - 1; - if (getPagesLeft <= 0) { this._pagesCapability.resolve(); - return; } - for (let pageNum = 2; pageNum <= pagesCount; ++pageNum) { - pdfDocument.getPage(pageNum).then(pdfPage => { + const promise = pdfDocument.getPage(pageNum).then(pdfPage => { const pageView = this._pages[pageNum - 1]; - if (!pageView.pdfPage) { pageView.setPdfPage(pdfPage); } - this.linkService.cachePageRef(pageNum, pdfPage.ref); - if (--getPagesLeft === 0) { this._pagesCapability.resolve(); } }, reason => { console.error(`Unable to get page ${pageNum} to initialize viewer`, reason); - if (--getPagesLeft === 0) { this._pagesCapability.resolve(); } }); + if (pageNum % PagesCountLimit.PAUSE_EAGER_PAGE_INIT === 0) { + await promise; + } } }); - this.eventBus.dispatch("pagesinit", { source: this }); - + pdfDocument.getMetadata().then(({ + info + }) => { + if (pdfDocument !== this.pdfDocument) { + return; + } + if (info.Language) { + this.viewer.lang = info.Language; + } + }); if (this.defaultRenderingQueue) { this.update(); } }).catch(reason => { console.error("Unable to initialize viewer", reason); + this._pagesCapability.reject(reason); }); } - setPageLabels(labels) { if (!this.pdfDocument) { return; } - if (!labels) { this._pageLabels = null; } else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) { this._pageLabels = null; - console.error(`${this._name}.setPageLabels: Invalid page labels.`); + console.error(`setPageLabels: Invalid page labels.`); } else { this._pageLabels = labels; } - for (let i = 0, ii = this._pages.length; i < ii; i++) { this._pages[i].setPageLabel(this._pageLabels?.[i] ?? null); } } - _resetView() { this._pages = []; this._currentPageNumber = 1; this._currentScale = _ui_utils.UNKNOWN_SCALE; this._currentScaleValue = null; this._pageLabels = null; - this._buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE); + this.#buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE); this._location = null; this._pagesRotation = 0; this._optionalContentConfigPromise = null; - this._pagesRequests = new WeakMap(); - this._firstPageCapability = (0, _pdfjsLib.createPromiseCapability)(); - this._onePageRenderedCapability = (0, _pdfjsLib.createPromiseCapability)(); - this._pagesCapability = (0, _pdfjsLib.createPromiseCapability)(); + this._firstPageCapability = new _pdfjsLib.PromiseCapability(); + this._onePageRenderedCapability = new _pdfjsLib.PromiseCapability(); + this._pagesCapability = new _pdfjsLib.PromiseCapability(); this._scrollMode = _ui_utils.ScrollMode.VERTICAL; + this._previousScrollMode = _ui_utils.ScrollMode.UNKNOWN; this._spreadMode = _ui_utils.SpreadMode.NONE; - + this.#scrollModePageState = { + previousPageNumber: 1, + scrollDown: true, + pages: [] + }; if (this._onBeforeDraw) { this.eventBus._off("pagerender", this._onBeforeDraw); - this._onBeforeDraw = null; } - if (this._onAfterDraw) { this.eventBus._off("pagerendered", this._onAfterDraw); - this._onAfterDraw = null; } - + if (this.#onVisibilityChange) { + document.removeEventListener("visibilitychange", this.#onVisibilityChange); + this.#onVisibilityChange = null; + } this.viewer.textContent = ""; - this._updateScrollMode(); + this.viewer.removeAttribute("lang"); + if (this.#hiddenCopyElement) { + document.removeEventListener("copy", this.#copyCallbackBound); + this.#copyCallbackBound = null; + this.#hiddenCopyElement.remove(); + this.#hiddenCopyElement = null; + } + } + #ensurePageViewVisible() { + if (this._scrollMode !== _ui_utils.ScrollMode.PAGE) { + throw new Error("#ensurePageViewVisible: Invalid scrollMode value."); + } + const pageNumber = this._currentPageNumber, + state = this.#scrollModePageState, + viewer = this.viewer; + viewer.textContent = ""; + state.pages.length = 0; + if (this._spreadMode === _ui_utils.SpreadMode.NONE && !this.isInPresentationMode) { + const pageView = this._pages[pageNumber - 1]; + viewer.append(pageView.div); + state.pages.push(pageView); + } else { + const pageIndexSet = new Set(), + parity = this._spreadMode - 1; + if (parity === -1) { + pageIndexSet.add(pageNumber - 1); + } else if (pageNumber % 2 !== parity) { + pageIndexSet.add(pageNumber - 1); + pageIndexSet.add(pageNumber); + } else { + pageIndexSet.add(pageNumber - 2); + pageIndexSet.add(pageNumber - 1); + } + const spread = document.createElement("div"); + spread.className = "spread"; + if (this.isInPresentationMode) { + const dummyPage = document.createElement("div"); + dummyPage.className = "dummyPage"; + spread.append(dummyPage); + } + for (const i of pageIndexSet) { + const pageView = this._pages[i]; + if (!pageView) { + continue; + } + spread.append(pageView.div); + state.pages.push(pageView); + } + viewer.append(spread); + } + state.scrollDown = pageNumber >= state.previousPageNumber; + state.previousPageNumber = pageNumber; } - _scrollUpdate() { if (this.pagesCount === 0) { return; } - this.update(); } - - _scrollIntoView({ - pageDiv, - pageSpot = null, - pageNumber = null - }) { - (0, _ui_utils.scrollIntoView)(pageDiv, pageSpot); + #scrollIntoView(pageView, pageSpot = null) { + const { + div, + id + } = pageView; + if (this._currentPageNumber !== id) { + this._setCurrentPageNumber(id); + } + if (this._scrollMode === _ui_utils.ScrollMode.PAGE) { + this.#ensurePageViewVisible(); + this.update(); + } + if (!pageSpot && !this.isInPresentationMode) { + const left = div.offsetLeft + div.clientLeft, + right = left + div.clientWidth; + const { + scrollLeft, + clientWidth + } = this.container; + if (this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL || left < scrollLeft || right > scrollLeft + clientWidth) { + pageSpot = { + left: 0, + top: 0 + }; + } + } + (0, _ui_utils.scrollIntoView)(div, pageSpot); + if (!this._currentScaleValue && this._location) { + this._location = null; + } } - - _setScaleUpdatePages(newScale, newValue, noScroll = false, preset = false) { + #isSameScale(newScale) { + return newScale === this._currentScale || Math.abs(newScale - this._currentScale) < 1e-15; + } + #setScaleUpdatePages(newScale, newValue, { + noScroll = false, + preset = false, + drawingDelay = -1 + }) { this._currentScaleValue = newValue.toString(); - - if (isSameScale(this._currentScale, newScale)) { + if (this.#isSameScale(newScale)) { if (preset) { this.eventBus.dispatch("scalechanging", { source: this, @@ -10399,133 +9045,119 @@ class BaseViewer { presetValue: newValue }); } - return; } - - for (let i = 0, ii = this._pages.length; i < ii; i++) { - this._pages[i].update(newScale); + this.viewer.style.setProperty("--scale-factor", newScale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS); + const postponeDrawing = drawingDelay >= 0 && drawingDelay < 1000; + this.refresh(true, { + scale: newScale, + drawingDelay: postponeDrawing ? drawingDelay : -1 + }); + if (postponeDrawing) { + this.#scaleTimeoutId = setTimeout(() => { + this.#scaleTimeoutId = null; + this.refresh(); + }, drawingDelay); } - this._currentScale = newScale; - if (!noScroll) { let page = this._currentPageNumber, - dest; - + dest; if (this._location && !(this.isInPresentationMode || this.isChangingPresentationMode)) { page = this._location.pageNumber; dest = [null, { name: "XYZ" }, this._location.left, this._location.top, null]; } - this.scrollPageIntoView({ pageNumber: page, destArray: dest, allowNegativeOffset: true }); } - this.eventBus.dispatch("scalechanging", { source: this, scale: newScale, presetValue: preset ? newValue : undefined }); - if (this.defaultRenderingQueue) { this.update(); } } - - get _pageWidthScaleFactor() { - if (this._spreadMode !== _ui_utils.SpreadMode.NONE && this._scrollMode !== _ui_utils.ScrollMode.HORIZONTAL && !this.isInPresentationMode) { + get #pageWidthScaleFactor() { + if (this._spreadMode !== _ui_utils.SpreadMode.NONE && this._scrollMode !== _ui_utils.ScrollMode.HORIZONTAL) { return 2; } - return 1; } - - _setScale(value, noScroll = false) { + #setScale(value, options) { let scale = parseFloat(value); - if (scale > 0) { - this._setScaleUpdatePages(scale, value, noScroll, false); + options.preset = false; + this.#setScaleUpdatePages(scale, value, options); } else { const currentPage = this._pages[this._currentPageNumber - 1]; - if (!currentPage) { return; } - - const noPadding = this.isInPresentationMode || this.removePageBorders; - let hPadding = noPadding ? 0 : _ui_utils.SCROLLBAR_PADDING; - let vPadding = noPadding ? 0 : _ui_utils.VERTICAL_PADDING; - - if (!noPadding && this._isScrollModeHorizontal) { + let hPadding = _ui_utils.SCROLLBAR_PADDING, + vPadding = _ui_utils.VERTICAL_PADDING; + if (this.isInPresentationMode) { + hPadding = vPadding = 4; + if (this._spreadMode !== _ui_utils.SpreadMode.NONE) { + hPadding *= 2; + } + } else if (this.removePageBorders) { + hPadding = vPadding = 0; + } else if (this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL) { [hPadding, vPadding] = [vPadding, hPadding]; } - - const pageWidthScale = (this.container.clientWidth - hPadding) / currentPage.width * currentPage.scale / this._pageWidthScaleFactor; + const pageWidthScale = (this.container.clientWidth - hPadding) / currentPage.width * currentPage.scale / this.#pageWidthScaleFactor; const pageHeightScale = (this.container.clientHeight - vPadding) / currentPage.height * currentPage.scale; - switch (value) { case "page-actual": scale = 1; break; - case "page-width": scale = pageWidthScale; break; - case "page-height": scale = pageHeightScale; break; - case "page-fit": scale = Math.min(pageWidthScale, pageHeightScale); break; - case "auto": const horizontalScale = (0, _ui_utils.isPortraitOrientation)(currentPage) ? pageWidthScale : Math.min(pageHeightScale, pageWidthScale); scale = Math.min(_ui_utils.MAX_AUTO_SCALE, horizontalScale); break; - default: - console.error(`${this._name}._setScale: "${value}" is an unknown zoom value.`); + console.error(`#setScale: "${value}" is an unknown zoom value.`); return; } - - this._setScaleUpdatePages(scale, value, noScroll, true); + options.preset = true; + this.#setScaleUpdatePages(scale, value, options); } } - - _resetCurrentPageView() { - if (this.isInPresentationMode) { - this._setScale(this._currentScaleValue, true); - } - + #resetCurrentPageView() { const pageView = this._pages[this._currentPageNumber - 1]; - - this._scrollIntoView({ - pageDiv: pageView.div - }); + if (this.isInPresentationMode) { + this.#setScale(this._currentScaleValue, { + noScroll: true + }); + } + this.#scrollIntoView(pageView); } - pageLabelToPageNumber(label) { if (!this._pageLabels) { return null; } - const i = this._pageLabels.indexOf(label); - if (i < 0) { return null; } - return i + 1; } - scrollPageIntoView({ pageNumber, destArray = null, @@ -10535,31 +9167,25 @@ class BaseViewer { if (!this.pdfDocument) { return; } - const pageView = Number.isInteger(pageNumber) && this._pages[pageNumber - 1]; - if (!pageView) { - console.error(`${this._name}.scrollPageIntoView: ` + `"${pageNumber}" is not a valid pageNumber parameter.`); + console.error(`scrollPageIntoView: "${pageNumber}" is not a valid pageNumber parameter.`); return; } - if (this.isInPresentationMode || !destArray) { this._setCurrentPageNumber(pageNumber, true); - return; } - let x = 0, - y = 0; + y = 0; let width = 0, - height = 0, - widthScale, - heightScale; + height = 0, + widthScale, + heightScale; const changeOrientation = pageView.rotation % 180 !== 0; - const pageWidth = (changeOrientation ? pageView.height : pageView.width) / pageView.scale / _ui_utils.CSS_UNITS; - const pageHeight = (changeOrientation ? pageView.width : pageView.height) / pageView.scale / _ui_utils.CSS_UNITS; + const pageWidth = (changeOrientation ? pageView.height : pageView.width) / pageView.scale / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS; + const pageHeight = (changeOrientation ? pageView.width : pageView.height) / pageView.scale / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS; let scale = 0; - switch (destArray[1].name) { case "XYZ": x = destArray[2]; @@ -10568,26 +9194,21 @@ class BaseViewer { x = x !== null ? x : 0; y = y !== null ? y : pageHeight; break; - case "Fit": case "FitB": scale = "page-fit"; break; - case "FitH": case "FitBH": y = destArray[2]; scale = "page-width"; - if (y === null && this._location) { x = this._location.left; y = this._location.top; - } else if (typeof y !== "number") { + } else if (typeof y !== "number" || y < 0) { y = pageHeight; } - break; - case "FitV": case "FitBV": x = destArray[2]; @@ -10595,24 +9216,24 @@ class BaseViewer { height = pageHeight; scale = "page-height"; break; - case "FitR": x = destArray[2]; y = destArray[3]; width = destArray[4] - x; height = destArray[5] - y; - const hPadding = this.removePageBorders ? 0 : _ui_utils.SCROLLBAR_PADDING; - const vPadding = this.removePageBorders ? 0 : _ui_utils.VERTICAL_PADDING; - widthScale = (this.container.clientWidth - hPadding) / width / _ui_utils.CSS_UNITS; - heightScale = (this.container.clientHeight - vPadding) / height / _ui_utils.CSS_UNITS; + let hPadding = _ui_utils.SCROLLBAR_PADDING, + vPadding = _ui_utils.VERTICAL_PADDING; + if (this.removePageBorders) { + hPadding = vPadding = 0; + } + widthScale = (this.container.clientWidth - hPadding) / width / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS; + heightScale = (this.container.clientHeight - vPadding) / height / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS; scale = Math.min(Math.abs(widthScale), Math.abs(heightScale)); break; - default: - console.error(`${this._name}.scrollPageIntoView: ` + `"${destArray[1].name}" is not a valid destination type.`); + console.error(`scrollPageIntoView: "${destArray[1].name}" is not a valid destination type.`); return; } - if (!ignoreDestinationZoom) { if (scale && scale !== this._currentScale) { this.currentScaleValue = scale; @@ -10620,48 +9241,36 @@ class BaseViewer { this.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; } } - if (scale === "page-fit" && !destArray[4]) { - this._scrollIntoView({ - pageDiv: pageView.div, - pageNumber - }); - + this.#scrollIntoView(pageView); return; } - const boundingRect = [pageView.viewport.convertToViewportPoint(x, y), pageView.viewport.convertToViewportPoint(x + width, y + height)]; let left = Math.min(boundingRect[0][0], boundingRect[1][0]); let top = Math.min(boundingRect[0][1], boundingRect[1][1]); - if (!allowNegativeOffset) { left = Math.max(left, 0); top = Math.max(top, 0); } - - this._scrollIntoView({ - pageDiv: pageView.div, - pageSpot: { - left, - top - }, - pageNumber + this.#scrollIntoView(pageView, { + left, + top }); } - _updateLocation(firstPage) { const currentScale = this._currentScale; const currentScaleValue = this._currentScaleValue; const normalizedScaleValue = parseFloat(currentScaleValue) === currentScale ? Math.round(currentScale * 10000) / 100 : currentScaleValue; const pageNumber = firstPage.id; - let pdfOpenParams = "#page=" + pageNumber; - pdfOpenParams += "&zoom=" + normalizedScaleValue; const currentPageView = this._pages[pageNumber - 1]; const container = this.container; const topLeft = currentPageView.getPagePoint(container.scrollLeft - firstPage.x, container.scrollTop - firstPage.y); const intLeft = Math.round(topLeft[0]); const intTop = Math.round(topLeft[1]); - pdfOpenParams += "," + intLeft + "," + intTop; + let pdfOpenParams = `#page=${pageNumber}`; + if (!this.isInPresentationMode) { + pdfOpenParams += `&zoom=${normalizedScaleValue},${intLeft},${intTop}`; + } this._location = { pageNumber, scale: normalizedScaleValue, @@ -10671,431 +9280,295 @@ class BaseViewer { pdfOpenParams }; } - - _updateHelper(visiblePages) { - throw new Error("Not implemented: _updateHelper"); - } - update() { const visible = this._getVisiblePages(); - const visiblePages = visible.views, - numVisiblePages = visiblePages.length; - + numVisiblePages = visiblePages.length; if (numVisiblePages === 0) { return; } - const newCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * numVisiblePages + 1); - - this._buffer.resize(newCacheSize, visiblePages); - + this.#buffer.resize(newCacheSize, visible.ids); this.renderingQueue.renderHighestPriority(visible); - - this._updateHelper(visiblePages); - + const isSimpleLayout = this._spreadMode === _ui_utils.SpreadMode.NONE && (this._scrollMode === _ui_utils.ScrollMode.PAGE || this._scrollMode === _ui_utils.ScrollMode.VERTICAL); + const currentId = this._currentPageNumber; + let stillFullyVisible = false; + for (const page of visiblePages) { + if (page.percent < 100) { + break; + } + if (page.id === currentId && isSimpleLayout) { + stillFullyVisible = true; + break; + } + } + this._setCurrentPageNumber(stillFullyVisible ? currentId : visiblePages[0].id); this._updateLocation(visible.first); - this.eventBus.dispatch("updateviewarea", { source: this, location: this._location }); } - containsElement(element) { return this.container.contains(element); } - focus() { this.container.focus(); } - - get _isScrollModeHorizontal() { - return this.isInPresentationMode ? false : this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL; - } - get _isContainerRtl() { return getComputedStyle(this.container).direction === "rtl"; } - get isInPresentationMode() { return this.presentationModeState === _ui_utils.PresentationModeState.FULLSCREEN; } - get isChangingPresentationMode() { return this.presentationModeState === _ui_utils.PresentationModeState.CHANGING; } - get isHorizontalScrollbarEnabled() { return this.isInPresentationMode ? false : this.container.scrollWidth > this.container.clientWidth; } - get isVerticalScrollbarEnabled() { return this.isInPresentationMode ? false : this.container.scrollHeight > this.container.clientHeight; } - - _getCurrentVisiblePage() { - if (!this.pagesCount) { - return { - views: [] - }; - } - - const pageView = this._pages[this._currentPageNumber - 1]; - const element = pageView.div; - const view = { - id: pageView.id, - x: element.offsetLeft + element.clientLeft, - y: element.offsetTop + element.clientTop, - view: pageView - }; - return { - first: view, - last: view, - views: [view] - }; - } - _getVisiblePages() { + const views = this._scrollMode === _ui_utils.ScrollMode.PAGE ? this.#scrollModePageState.pages : this._pages, + horizontal = this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL, + rtl = horizontal && this._isContainerRtl; return (0, _ui_utils.getVisibleElements)({ scrollEl: this.container, - views: this._pages, + views, sortByVisibility: true, - horizontal: this._isScrollModeHorizontal, - rtl: this._isScrollModeHorizontal && this._isContainerRtl + horizontal, + rtl }); } - - isPageVisible(pageNumber) { - if (!this.pdfDocument) { - return false; - } - - if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) { - console.error(`${this._name}.isPageVisible: "${pageNumber}" is not a valid page.`); - return false; - } - - return this._getVisiblePages().views.some(function (view) { - return view.id === pageNumber; - }); - } - - isPageCached(pageNumber) { - if (!this.pdfDocument || !this._buffer) { - return false; - } - - if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) { - console.error(`${this._name}.isPageCached: "${pageNumber}" is not a valid page.`); - return false; - } - - const pageView = this._pages[pageNumber - 1]; - - if (!pageView) { - return false; - } - - return this._buffer.has(pageView); - } - cleanup() { - for (let i = 0, ii = this._pages.length; i < ii; i++) { - if (this._pages[i] && this._pages[i].renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { - this._pages[i].reset(); + for (const pageView of this._pages) { + if (pageView.renderingState !== _ui_utils.RenderingStates.FINISHED) { + pageView.reset(); } } } - _cancelRendering() { - for (let i = 0, ii = this._pages.length; i < ii; i++) { - if (this._pages[i]) { - this._pages[i].cancelRendering(); - } + for (const pageView of this._pages) { + pageView.cancelRendering(); } } - - _ensurePdfPageLoaded(pageView) { + async #ensurePdfPageLoaded(pageView) { if (pageView.pdfPage) { - return Promise.resolve(pageView.pdfPage); + return pageView.pdfPage; } - - if (this._pagesRequests.has(pageView)) { - return this._pagesRequests.get(pageView); - } - - const promise = this.pdfDocument.getPage(pageView.id).then(pdfPage => { + try { + const pdfPage = await this.pdfDocument.getPage(pageView.id); if (!pageView.pdfPage) { pageView.setPdfPage(pdfPage); } - - this._pagesRequests.delete(pageView); - + if (!this.linkService._cachedPageNumber?.(pdfPage.ref)) { + this.linkService.cachePageRef(pageView.id, pdfPage.ref); + } return pdfPage; - }).catch(reason => { + } catch (reason) { console.error("Unable to get page for page view", reason); - - this._pagesRequests.delete(pageView); - }); - - this._pagesRequests.set(pageView, promise); - - return promise; + return null; + } + } + #getScrollAhead(visible) { + if (visible.first?.id === 1) { + return true; + } else if (visible.last?.id === this.pagesCount) { + return false; + } + switch (this._scrollMode) { + case _ui_utils.ScrollMode.PAGE: + return this.#scrollModePageState.scrollDown; + case _ui_utils.ScrollMode.HORIZONTAL: + return this.scroll.right; + } + return this.scroll.down; } - forceRendering(currentlyVisiblePages) { const visiblePages = currentlyVisiblePages || this._getVisiblePages(); - - const scrollAhead = this._isScrollModeHorizontal ? this.scroll.right : this.scroll.down; - const pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, scrollAhead); - + const scrollAhead = this.#getScrollAhead(visiblePages); + const preRenderExtra = this._spreadMode !== _ui_utils.SpreadMode.NONE && this._scrollMode !== _ui_utils.ScrollMode.HORIZONTAL; + const pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, scrollAhead, preRenderExtra); if (pageView) { - this._ensurePdfPageLoaded(pageView).then(() => { + this.#ensurePdfPageLoaded(pageView).then(() => { this.renderingQueue.renderView(pageView); }); - return true; } - return false; } - - createTextLayerBuilder(textLayerDiv, pageIndex, viewport, enhanceTextSelection = false, eventBus) { - return new _text_layer_builder.TextLayerBuilder({ - textLayerDiv, - eventBus, - pageIndex, - viewport, - findController: this.isInPresentationMode ? null : this.findController, - enhanceTextSelection: this.isInPresentationMode ? false : enhanceTextSelection - }); - } - - createAnnotationLayerBuilder(pageDiv, pdfPage, annotationStorage = null, imageResourcesPath = "", renderInteractiveForms = false, l10n = _l10n_utils.NullL10n, enableScripting = null, hasJSActionsPromise = null, mouseState = null) { - return new _annotation_layer_builder.AnnotationLayerBuilder({ - pageDiv, - pdfPage, - annotationStorage: annotationStorage || this.pdfDocument?.annotationStorage, - imageResourcesPath, - renderInteractiveForms, - linkService: this.linkService, - downloadManager: this.downloadManager, - l10n, - enableScripting: enableScripting ?? this.enableScripting, - hasJSActionsPromise: hasJSActionsPromise || this.pdfDocument?.hasJSActions(), - mouseState: mouseState || this._scriptingManager?.mouseState - }); - } - - createXfaLayerBuilder(pageDiv, pdfPage, annotationStorage = null) { - return new _xfa_layer_builder.XfaLayerBuilder({ - pageDiv, - pdfPage, - annotationStorage: annotationStorage || this.pdfDocument?.annotationStorage - }); - } - - createStructTreeLayerBuilder(pdfPage) { - return new _struct_tree_layer_builder.StructTreeLayerBuilder({ - pdfPage - }); - } - get hasEqualPageSizes() { const firstPageView = this._pages[0]; - for (let i = 1, ii = this._pages.length; i < ii; ++i) { const pageView = this._pages[i]; - if (pageView.width !== firstPageView.width || pageView.height !== firstPageView.height) { return false; } } - return true; } - getPagesOverview() { + let initialOrientation; return this._pages.map(pageView => { const viewport = pageView.pdfPage.getViewport({ scale: 1 }); - - if (!this.enablePrintAutoRotate || (0, _ui_utils.isPortraitOrientation)(viewport)) { + const orientation = (0, _ui_utils.isPortraitOrientation)(viewport); + if (initialOrientation === undefined) { + initialOrientation = orientation; + } else if (this.enablePrintAutoRotate && orientation !== initialOrientation) { return { - width: viewport.width, - height: viewport.height, - rotation: viewport.rotation + width: viewport.height, + height: viewport.width, + rotation: (viewport.rotation - 90) % 360 }; } - return { - width: viewport.height, - height: viewport.width, - rotation: (viewport.rotation - 90) % 360 + width: viewport.width, + height: viewport.height, + rotation: viewport.rotation }; }); } - get optionalContentConfigPromise() { if (!this.pdfDocument) { return Promise.resolve(null); } - if (!this._optionalContentConfigPromise) { + console.error("optionalContentConfigPromise: Not initialized yet."); return this.pdfDocument.getOptionalContentConfig(); } - return this._optionalContentConfigPromise; } - set optionalContentConfigPromise(promise) { if (!(promise instanceof Promise)) { throw new Error(`Invalid optionalContentConfigPromise: ${promise}`); } - if (!this.pdfDocument) { return; } - if (!this._optionalContentConfigPromise) { return; } - this._optionalContentConfigPromise = promise; - - for (const pageView of this._pages) { - pageView.update(pageView.scale, pageView.rotation, promise); - } - - this.update(); + this.refresh(false, { + optionalContentConfigPromise: promise + }); this.eventBus.dispatch("optionalcontentconfigchanged", { source: this, promise }); } - get scrollMode() { return this._scrollMode; } - set scrollMode(mode) { if (this._scrollMode === mode) { return; } - if (!(0, _ui_utils.isValidScrollMode)(mode)) { throw new Error(`Invalid scroll mode: ${mode}`); } - + if (this.pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE) { + return; + } + this._previousScrollMode = this._scrollMode; this._scrollMode = mode; this.eventBus.dispatch("scrollmodechanged", { source: this, mode }); - this._updateScrollMode(this._currentPageNumber); } - _updateScrollMode(pageNumber = null) { const scrollMode = this._scrollMode, - viewer = this.viewer; + viewer = this.viewer; viewer.classList.toggle("scrollHorizontal", scrollMode === _ui_utils.ScrollMode.HORIZONTAL); viewer.classList.toggle("scrollWrapped", scrollMode === _ui_utils.ScrollMode.WRAPPED); - if (!this.pdfDocument || !pageNumber) { return; } - - if (this._currentScaleValue && isNaN(this._currentScaleValue)) { - this._setScale(this._currentScaleValue, true); + if (scrollMode === _ui_utils.ScrollMode.PAGE) { + this.#ensurePageViewVisible(); + } else if (this._previousScrollMode === _ui_utils.ScrollMode.PAGE) { + this._updateSpreadMode(); + } + if (this._currentScaleValue && isNaN(this._currentScaleValue)) { + this.#setScale(this._currentScaleValue, { + noScroll: true + }); } - this._setCurrentPageNumber(pageNumber, true); - this.update(); } - get spreadMode() { return this._spreadMode; } - set spreadMode(mode) { if (this._spreadMode === mode) { return; } - if (!(0, _ui_utils.isValidSpreadMode)(mode)) { throw new Error(`Invalid spread mode: ${mode}`); } - this._spreadMode = mode; this.eventBus.dispatch("spreadmodechanged", { source: this, mode }); - this._updateSpreadMode(this._currentPageNumber); } - _updateSpreadMode(pageNumber = null) { if (!this.pdfDocument) { return; } - const viewer = this.viewer, - pages = this._pages; - viewer.textContent = ""; - - if (this._spreadMode === _ui_utils.SpreadMode.NONE) { - for (let i = 0, iMax = pages.length; i < iMax; ++i) { - viewer.appendChild(pages[i].div); - } + pages = this._pages; + if (this._scrollMode === _ui_utils.ScrollMode.PAGE) { + this.#ensurePageViewVisible(); } else { - const parity = this._spreadMode - 1; - let spread = null; - - for (let i = 0, iMax = pages.length; i < iMax; ++i) { - if (spread === null) { - spread = document.createElement("div"); - spread.className = "spread"; - viewer.appendChild(spread); - } else if (i % 2 === parity) { - spread = spread.cloneNode(false); - viewer.appendChild(spread); + viewer.textContent = ""; + if (this._spreadMode === _ui_utils.SpreadMode.NONE) { + for (const pageView of this._pages) { + viewer.append(pageView.div); + } + } else { + const parity = this._spreadMode - 1; + let spread = null; + for (let i = 0, ii = pages.length; i < ii; ++i) { + if (spread === null) { + spread = document.createElement("div"); + spread.className = "spread"; + viewer.append(spread); + } else if (i % 2 === parity) { + spread = spread.cloneNode(false); + viewer.append(spread); + } + spread.append(pages[i].div); } - - spread.appendChild(pages[i].div); } } - if (!pageNumber) { return; } - if (this._currentScaleValue && isNaN(this._currentScaleValue)) { - this._setScale(this._currentScaleValue, true); + this.#setScale(this._currentScaleValue, { + noScroll: true + }); } - this._setCurrentPageNumber(pageNumber, true); - this.update(); } - _getPageAdvance(currentPageNumber, previous = false) { - if (this.isInPresentationMode) { - return 1; - } - switch (this._scrollMode) { case _ui_utils.ScrollMode.WRAPPED: { const { - views - } = this._getVisiblePages(), - pageLayout = new Map(); - + views + } = this._getVisiblePages(), + pageLayout = new Map(); for (const { id, y, @@ -11105,34 +9578,25 @@ class BaseViewer { if (percent === 0 || widthPercent < 100) { continue; } - let yArray = pageLayout.get(y); - if (!yArray) { - pageLayout.set(y, yArray || (yArray = [])); + pageLayout.set(y, yArray ||= []); } - yArray.push(id); } - for (const yArray of pageLayout.values()) { const currentIndex = yArray.indexOf(currentPageNumber); - if (currentIndex === -1) { continue; } - const numPages = yArray.length; - if (numPages === 1) { break; } - if (previous) { for (let i = currentIndex - 1, ii = 0; i >= ii; i--) { const currentId = yArray[i], - expectedId = yArray[i + 1] - 1; - + expectedId = yArray[i + 1] - 1; if (currentId < expectedId) { return currentPageNumber - expectedId; } @@ -11140,58 +9604,47 @@ class BaseViewer { } else { for (let i = currentIndex + 1, ii = numPages; i < ii; i++) { const currentId = yArray[i], - expectedId = yArray[i - 1] + 1; - + expectedId = yArray[i - 1] + 1; if (currentId > expectedId) { return expectedId - currentPageNumber; } } } - if (previous) { const firstId = yArray[0]; - if (firstId < currentPageNumber) { return currentPageNumber - firstId + 1; } } else { const lastId = yArray[numPages - 1]; - if (lastId > currentPageNumber) { return lastId - currentPageNumber + 1; } } - break; } - break; } - case _ui_utils.ScrollMode.HORIZONTAL: { break; } - + case _ui_utils.ScrollMode.PAGE: case _ui_utils.ScrollMode.VERTICAL: { if (this._spreadMode === _ui_utils.SpreadMode.NONE) { break; } - const parity = this._spreadMode - 1; - if (previous && currentPageNumber % 2 !== parity) { break; } else if (!previous && currentPageNumber % 2 === parity) { break; } - const { - views - } = this._getVisiblePages(), - expectedId = previous ? currentPageNumber - 1 : currentPageNumber + 1; - + views + } = this._getVisiblePages(), + expectedId = previous ? currentPageNumber - 1 : currentPageNumber + 1; for (const { id, percent, @@ -11200,178 +9653,149 @@ class BaseViewer { if (id !== expectedId) { continue; } - if (percent > 0 && widthPercent === 100) { return 2; } - break; } - break; } } - return 1; } - nextPage() { const currentPageNumber = this._currentPageNumber, - pagesCount = this.pagesCount; - + pagesCount = this.pagesCount; if (currentPageNumber >= pagesCount) { return false; } - const advance = this._getPageAdvance(currentPageNumber, false) || 1; this.currentPageNumber = Math.min(currentPageNumber + advance, pagesCount); return true; } - previousPage() { const currentPageNumber = this._currentPageNumber; - if (currentPageNumber <= 1) { return false; } - const advance = this._getPageAdvance(currentPageNumber, true) || 1; this.currentPageNumber = Math.max(currentPageNumber - advance, 1); return true; } - + increaseScale({ + drawingDelay, + scaleFactor, + steps + } = {}) { + if (!this.pdfDocument) { + return; + } + let newScale = this._currentScale; + if (scaleFactor > 1) { + newScale = Math.round(newScale * scaleFactor * 100) / 100; + } else { + steps ??= 1; + do { + newScale = Math.ceil((newScale * _ui_utils.DEFAULT_SCALE_DELTA).toFixed(2) * 10) / 10; + } while (--steps > 0 && newScale < _ui_utils.MAX_SCALE); + } + this.#setScale(Math.min(_ui_utils.MAX_SCALE, newScale), { + noScroll: false, + drawingDelay + }); + } + decreaseScale({ + drawingDelay, + scaleFactor, + steps + } = {}) { + if (!this.pdfDocument) { + return; + } + let newScale = this._currentScale; + if (scaleFactor > 0 && scaleFactor < 1) { + newScale = Math.round(newScale * scaleFactor * 100) / 100; + } else { + steps ??= 1; + do { + newScale = Math.floor((newScale / _ui_utils.DEFAULT_SCALE_DELTA).toFixed(2) * 10) / 10; + } while (--steps > 0 && newScale > _ui_utils.MIN_SCALE); + } + this.#setScale(Math.max(_ui_utils.MIN_SCALE, newScale), { + noScroll: false, + drawingDelay + }); + } + #updateContainerHeightCss(height = this.container.clientHeight) { + if (height !== this.#previousContainerHeight) { + this.#previousContainerHeight = height; + _ui_utils.docStyle.setProperty("--viewer-container-height", `${height}px`); + } + } + #resizeObserverCallback(entries) { + for (const entry of entries) { + if (entry.target === this.container) { + this.#updateContainerHeightCss(Math.floor(entry.borderBoxSize[0].blockSize)); + this.#containerTopLeft = null; + break; + } + } + } + get containerTopLeft() { + return this.#containerTopLeft ||= [this.container.offsetTop, this.container.offsetLeft]; + } + get annotationEditorMode() { + return this.#annotationEditorUIManager ? this.#annotationEditorMode : _pdfjsLib.AnnotationEditorType.DISABLE; + } + set annotationEditorMode(mode) { + if (!this.#annotationEditorUIManager) { + throw new Error(`The AnnotationEditor is not enabled.`); + } + if (this.#annotationEditorMode === mode) { + return; + } + if (!isValidAnnotationEditorMode(mode)) { + throw new Error(`Invalid AnnotationEditor mode: ${mode}`); + } + if (!this.pdfDocument) { + return; + } + this.#annotationEditorMode = mode; + this.eventBus.dispatch("annotationeditormodechanged", { + source: this, + mode + }); + this.#annotationEditorUIManager.updateMode(mode); + } + set annotationEditorParams({ + type, + value + }) { + if (!this.#annotationEditorUIManager) { + throw new Error(`The AnnotationEditor is not enabled.`); + } + this.#annotationEditorUIManager.updateParams(type, value); + } + refresh(noUpdate = false, updateArgs = Object.create(null)) { + if (!this.pdfDocument) { + return; + } + for (const pageView of this._pages) { + pageView.update(updateArgs); + } + if (this.#scaleTimeoutId !== null) { + clearTimeout(this.#scaleTimeoutId); + this.#scaleTimeoutId = null; + } + if (!noUpdate) { + this.update(); + } + } } - -exports.BaseViewer = BaseViewer; +exports.PDFViewer = PDFViewer; /***/ }), /* 29 */ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.DefaultAnnotationLayerFactory = exports.AnnotationLayerBuilder = void 0; - -var _pdfjsLib = __webpack_require__(5); - -var _l10n_utils = __webpack_require__(30); - -var _pdf_link_service = __webpack_require__(19); - -class AnnotationLayerBuilder { - constructor({ - pageDiv, - pdfPage, - linkService, - downloadManager, - annotationStorage = null, - imageResourcesPath = "", - renderInteractiveForms = true, - l10n = _l10n_utils.NullL10n, - enableScripting = false, - hasJSActionsPromise = null, - mouseState = null - }) { - this.pageDiv = pageDiv; - this.pdfPage = pdfPage; - this.linkService = linkService; - this.downloadManager = downloadManager; - this.imageResourcesPath = imageResourcesPath; - this.renderInteractiveForms = renderInteractiveForms; - this.l10n = l10n; - this.annotationStorage = annotationStorage; - this.enableScripting = enableScripting; - this._hasJSActionsPromise = hasJSActionsPromise; - this._mouseState = mouseState; - this.div = null; - this._cancelled = false; - } - - render(viewport, intent = "display") { - return Promise.all([this.pdfPage.getAnnotations({ - intent - }), this._hasJSActionsPromise]).then(([annotations, hasJSActions = false]) => { - if (this._cancelled) { - return; - } - - if (annotations.length === 0) { - return; - } - - const parameters = { - viewport: viewport.clone({ - dontFlip: true - }), - div: this.div, - annotations, - page: this.pdfPage, - imageResourcesPath: this.imageResourcesPath, - renderInteractiveForms: this.renderInteractiveForms, - linkService: this.linkService, - downloadManager: this.downloadManager, - annotationStorage: this.annotationStorage, - enableScripting: this.enableScripting, - hasJSActions, - mouseState: this._mouseState - }; - - if (this.div) { - _pdfjsLib.AnnotationLayer.update(parameters); - } else { - this.div = document.createElement("div"); - this.div.className = "annotationLayer"; - this.pageDiv.appendChild(this.div); - parameters.div = this.div; - - _pdfjsLib.AnnotationLayer.render(parameters); - - this.l10n.translate(this.div); - } - }); - } - - cancel() { - this._cancelled = true; - } - - hide() { - if (!this.div) { - return; - } - - this.div.hidden = true; - } - -} - -exports.AnnotationLayerBuilder = AnnotationLayerBuilder; - -class DefaultAnnotationLayerFactory { - createAnnotationLayerBuilder(pageDiv, pdfPage, annotationStorage = null, imageResourcesPath = "", renderInteractiveForms = true, l10n = _l10n_utils.NullL10n, enableScripting = false, hasJSActionsPromise = null, mouseState = null) { - return new AnnotationLayerBuilder({ - pageDiv, - pdfPage, - imageResourcesPath, - renderInteractiveForms, - linkService: new _pdf_link_service.SimpleLinkService(), - l10n, - annotationStorage, - enableScripting, - hasJSActionsPromise, - mouseState - }); - } - -} - -exports.DefaultAnnotationLayerFactory = DefaultAnnotationLayerFactory; - -/***/ }), -/* 30 */ /***/ ((__unused_webpack_module, exports) => { @@ -11379,9 +9803,8 @@ exports.DefaultAnnotationLayerFactory = DefaultAnnotationLayerFactory; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.fixupLangCode = fixupLangCode; -exports.getL10nFallback = getL10nFallback; exports.NullL10n = void 0; +exports.getL10nFallback = getL10nFallback; const DEFAULT_L10N_STRINGS = { of_pages: "of {{pagesCount}}", page_of_pages: "({{pageNumber}} of {{pagesCount}})", @@ -11400,9 +9823,6 @@ const DEFAULT_L10N_STRINGS = { document_properties_page_size_dimension_name_string: "{{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})", document_properties_linearized_yes: "Yes", document_properties_linearized_no: "No", - print_progress_percent: "{{progress}}%", - "toggle_sidebar.title": "Toggle Sidebar", - "toggle_sidebar_notification2.title": "Toggle Sidebar (document contains outline/attachments/layers)", additional_layers: "Additional Layers", page_landmark: "Page {{page}}", thumb_page_title: "Page {{page}}", @@ -11414,90 +9834,815 @@ const DEFAULT_L10N_STRINGS = { "find_match_count_limit[one]": "More than {{limit}} match", "find_match_count_limit[other]": "More than {{limit}} matches", find_not_found: "Phrase not found", - error_version_info: "PDF.js v{{version}} (build: {{build}})", - error_message: "Message: {{message}}", - error_stack: "Stack: {{stack}}", - error_file: "File: {{file}}", - error_line: "Line: {{line}}", - rendering_error: "An error occurred while rendering the page.", page_scale_width: "Page Width", page_scale_fit: "Page Fit", page_scale_auto: "Automatic Zoom", page_scale_actual: "Actual Size", page_scale_percent: "{{scale}}%", - loading: "Loading…", loading_error: "An error occurred while loading the PDF.", invalid_file_error: "Invalid or corrupted PDF file.", missing_file_error: "Missing PDF file.", unexpected_response_error: "Unexpected server response.", + rendering_error: "An error occurred while rendering the page.", + annotation_date_string: "{{date}}, {{time}}", printing_not_supported: "Warning: Printing is not fully supported by this browser.", printing_not_ready: "Warning: The PDF is not fully loaded for printing.", - web_fonts_disabled: "Web fonts are disabled: unable to use embedded PDF fonts." + web_fonts_disabled: "Web fonts are disabled: unable to use embedded PDF fonts.", + free_text2_default_content: "Start typing…", + editor_free_text2_aria_label: "Text Editor", + editor_ink2_aria_label: "Draw Editor", + editor_ink_canvas_aria_label: "User-created image" }; - +{ + DEFAULT_L10N_STRINGS.print_progress_percent = "{{progress}}%"; +} function getL10nFallback(key, args) { switch (key) { case "find_match_count": key = `find_match_count[${args.total === 1 ? "one" : "other"}]`; break; - case "find_match_count_limit": key = `find_match_count_limit[${args.limit === 1 ? "one" : "other"}]`; break; } - return DEFAULT_L10N_STRINGS[key] || ""; } - -const PARTIAL_LANG_CODES = { - en: "en-US", - es: "es-ES", - fy: "fy-NL", - ga: "ga-IE", - gu: "gu-IN", - hi: "hi-IN", - hy: "hy-AM", - nb: "nb-NO", - ne: "ne-NP", - nn: "nn-NO", - pa: "pa-IN", - pt: "pt-PT", - sv: "sv-SE", - zh: "zh-CN" -}; - -function fixupLangCode(langCode) { - return PARTIAL_LANG_CODES[langCode?.toLowerCase()] || langCode; -} - function formatL10nValue(text, args) { if (!args) { return text; } - - return text.replace(/\{\{\s*(\w+)\s*\}\}/g, (all, name) => { + return text.replaceAll(/\{\{\s*(\w+)\s*\}\}/g, (all, name) => { return name in args ? args[name] : "{{" + name + "}}"; }); } - const NullL10n = { async getLanguage() { return "en-us"; }, - async getDirection() { return "ltr"; }, - async get(key, args = null, fallback = getL10nFallback(key, args)) { return formatL10nValue(fallback, args); }, - async translate(element) {} - }; exports.NullL10n = NullL10n; +/***/ }), +/* 30 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFPageView = void 0; +var _pdfjsLib = __webpack_require__(4); +var _ui_utils = __webpack_require__(3); +var _annotation_editor_layer_builder = __webpack_require__(31); +var _annotation_layer_builder = __webpack_require__(32); +var _app_options = __webpack_require__(5); +var _l10n_utils = __webpack_require__(29); +var _pdf_link_service = __webpack_require__(7); +var _struct_tree_layer_builder = __webpack_require__(33); +var _text_accessibility = __webpack_require__(34); +var _text_highlighter = __webpack_require__(35); +var _text_layer_builder = __webpack_require__(36); +var _xfa_layer_builder = __webpack_require__(37); +const MAX_CANVAS_PIXELS = _app_options.compatibilityParams.maxCanvasPixels || 16777216; +const DEFAULT_LAYER_PROPERTIES = () => { + return null; +}; +class PDFPageView { + #annotationMode = _pdfjsLib.AnnotationMode.ENABLE_FORMS; + #layerProperties = null; + #loadingId = null; + #previousRotation = null; + #renderError = null; + #renderingState = _ui_utils.RenderingStates.INITIAL; + #textLayerMode = _ui_utils.TextLayerMode.ENABLE; + #useThumbnailCanvas = { + directDrawing: true, + initialOptionalContent: true, + regularAnnotations: true + }; + #viewportMap = new WeakMap(); + constructor(options) { + const container = options.container; + const defaultViewport = options.defaultViewport; + this.id = options.id; + this.renderingId = "page" + this.id; + this.#layerProperties = options.layerProperties || DEFAULT_LAYER_PROPERTIES; + this.pdfPage = null; + this.pageLabel = null; + this.rotation = 0; + this.scale = options.scale || _ui_utils.DEFAULT_SCALE; + this.viewport = defaultViewport; + this.pdfPageRotate = defaultViewport.rotation; + this._optionalContentConfigPromise = options.optionalContentConfigPromise || null; + this.hasRestrictedScaling = false; + this.#textLayerMode = options.textLayerMode ?? _ui_utils.TextLayerMode.ENABLE; + this.#annotationMode = options.annotationMode ?? _pdfjsLib.AnnotationMode.ENABLE_FORMS; + this.imageResourcesPath = options.imageResourcesPath || ""; + this.useOnlyCssZoom = options.useOnlyCssZoom || false; + this.isOffscreenCanvasSupported = options.isOffscreenCanvasSupported ?? true; + this.maxCanvasPixels = options.maxCanvasPixels || MAX_CANVAS_PIXELS; + this.pageColors = options.pageColors || null; + this.eventBus = options.eventBus; + this.renderingQueue = options.renderingQueue; + this.l10n = options.l10n || _l10n_utils.NullL10n; + this.renderTask = null; + this.resume = null; + this._isStandalone = !this.renderingQueue?.hasViewer(); + this._container = container; + this._annotationCanvasMap = null; + this.annotationLayer = null; + this.annotationEditorLayer = null; + this.textLayer = null; + this.zoomLayer = null; + this.xfaLayer = null; + this.structTreeLayer = null; + const div = document.createElement("div"); + div.className = "page"; + div.setAttribute("data-page-number", this.id); + div.setAttribute("role", "region"); + this.l10n.get("page_landmark", { + page: this.id + }).then(msg => { + div.setAttribute("aria-label", msg); + }); + this.div = div; + this.#setDimensions(); + container?.append(div); + if (this._isStandalone) { + container?.style.setProperty("--scale-factor", this.scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS); + const { + optionalContentConfigPromise + } = options; + if (optionalContentConfigPromise) { + optionalContentConfigPromise.then(optionalContentConfig => { + if (optionalContentConfigPromise !== this._optionalContentConfigPromise) { + return; + } + this.#useThumbnailCanvas.initialOptionalContent = optionalContentConfig.hasInitialVisibility; + }); + } + } + } + get renderingState() { + return this.#renderingState; + } + set renderingState(state) { + if (state === this.#renderingState) { + return; + } + this.#renderingState = state; + if (this.#loadingId) { + clearTimeout(this.#loadingId); + this.#loadingId = null; + } + switch (state) { + case _ui_utils.RenderingStates.PAUSED: + this.div.classList.remove("loading"); + break; + case _ui_utils.RenderingStates.RUNNING: + this.div.classList.add("loadingIcon"); + this.#loadingId = setTimeout(() => { + this.div.classList.add("loading"); + this.#loadingId = null; + }, 0); + break; + case _ui_utils.RenderingStates.INITIAL: + case _ui_utils.RenderingStates.FINISHED: + this.div.classList.remove("loadingIcon", "loading"); + break; + } + } + #setDimensions() { + const { + viewport + } = this; + if (this.pdfPage) { + if (this.#previousRotation === viewport.rotation) { + return; + } + this.#previousRotation = viewport.rotation; + } + (0, _pdfjsLib.setLayerDimensions)(this.div, viewport, true, false); + } + setPdfPage(pdfPage) { + if (this._isStandalone && (this.pageColors?.foreground === "CanvasText" || this.pageColors?.background === "Canvas")) { + this._container?.style.setProperty("--hcm-highligh-filter", pdfPage.filterFactory.addHighlightHCMFilter("CanvasText", "Canvas", "HighlightText", "Highlight")); + } + this.pdfPage = pdfPage; + this.pdfPageRotate = pdfPage.rotate; + const totalRotation = (this.rotation + this.pdfPageRotate) % 360; + this.viewport = pdfPage.getViewport({ + scale: this.scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS, + rotation: totalRotation + }); + this.#setDimensions(); + this.reset(); + } + destroy() { + this.reset(); + this.pdfPage?.cleanup(); + } + get _textHighlighter() { + return (0, _pdfjsLib.shadow)(this, "_textHighlighter", new _text_highlighter.TextHighlighter({ + pageIndex: this.id - 1, + eventBus: this.eventBus, + findController: this.#layerProperties().findController + })); + } + async #renderAnnotationLayer() { + let error = null; + try { + await this.annotationLayer.render(this.viewport, "display"); + } catch (ex) { + console.error(`#renderAnnotationLayer: "${ex}".`); + error = ex; + } finally { + this.eventBus.dispatch("annotationlayerrendered", { + source: this, + pageNumber: this.id, + error + }); + } + } + async #renderAnnotationEditorLayer() { + let error = null; + try { + await this.annotationEditorLayer.render(this.viewport, "display"); + } catch (ex) { + console.error(`#renderAnnotationEditorLayer: "${ex}".`); + error = ex; + } finally { + this.eventBus.dispatch("annotationeditorlayerrendered", { + source: this, + pageNumber: this.id, + error + }); + } + } + async #renderXfaLayer() { + let error = null; + try { + const result = await this.xfaLayer.render(this.viewport, "display"); + if (result?.textDivs && this._textHighlighter) { + this.#buildXfaTextContentItems(result.textDivs); + } + } catch (ex) { + console.error(`#renderXfaLayer: "${ex}".`); + error = ex; + } finally { + this.eventBus.dispatch("xfalayerrendered", { + source: this, + pageNumber: this.id, + error + }); + } + } + async #renderTextLayer() { + const { + pdfPage, + textLayer, + viewport + } = this; + if (!textLayer) { + return; + } + let error = null; + try { + if (!textLayer.renderingDone) { + const readableStream = pdfPage.streamTextContent({ + includeMarkedContent: true, + disableNormalization: true + }); + textLayer.setTextContentSource(readableStream); + } + await textLayer.render(viewport); + } catch (ex) { + if (ex instanceof _pdfjsLib.AbortException) { + return; + } + console.error(`#renderTextLayer: "${ex}".`); + error = ex; + } + this.eventBus.dispatch("textlayerrendered", { + source: this, + pageNumber: this.id, + numTextDivs: textLayer.numTextDivs, + error + }); + this.#renderStructTreeLayer(); + } + async #renderStructTreeLayer() { + if (!this.textLayer) { + return; + } + this.structTreeLayer ||= new _struct_tree_layer_builder.StructTreeLayerBuilder(); + const tree = await (!this.structTreeLayer.renderingDone ? this.pdfPage.getStructTree() : null); + const treeDom = this.structTreeLayer?.render(tree); + if (treeDom) { + this.canvas?.append(treeDom); + } + this.structTreeLayer?.show(); + } + async #buildXfaTextContentItems(textDivs) { + const text = await this.pdfPage.getTextContent(); + const items = []; + for (const item of text.items) { + items.push(item.str); + } + this._textHighlighter.setTextMapping(textDivs, items); + this._textHighlighter.enable(); + } + _resetZoomLayer(removeFromDOM = false) { + if (!this.zoomLayer) { + return; + } + const zoomLayerCanvas = this.zoomLayer.firstChild; + this.#viewportMap.delete(zoomLayerCanvas); + zoomLayerCanvas.width = 0; + zoomLayerCanvas.height = 0; + if (removeFromDOM) { + this.zoomLayer.remove(); + } + this.zoomLayer = null; + } + reset({ + keepZoomLayer = false, + keepAnnotationLayer = false, + keepAnnotationEditorLayer = false, + keepXfaLayer = false, + keepTextLayer = false + } = {}) { + this.cancelRendering({ + keepAnnotationLayer, + keepAnnotationEditorLayer, + keepXfaLayer, + keepTextLayer + }); + this.renderingState = _ui_utils.RenderingStates.INITIAL; + const div = this.div; + const childNodes = div.childNodes, + zoomLayerNode = keepZoomLayer && this.zoomLayer || null, + annotationLayerNode = keepAnnotationLayer && this.annotationLayer?.div || null, + annotationEditorLayerNode = keepAnnotationEditorLayer && this.annotationEditorLayer?.div || null, + xfaLayerNode = keepXfaLayer && this.xfaLayer?.div || null, + textLayerNode = keepTextLayer && this.textLayer?.div || null; + for (let i = childNodes.length - 1; i >= 0; i--) { + const node = childNodes[i]; + switch (node) { + case zoomLayerNode: + case annotationLayerNode: + case annotationEditorLayerNode: + case xfaLayerNode: + case textLayerNode: + continue; + } + node.remove(); + } + div.removeAttribute("data-loaded"); + if (annotationLayerNode) { + this.annotationLayer.hide(); + } + if (annotationEditorLayerNode) { + this.annotationEditorLayer.hide(); + } + if (xfaLayerNode) { + this.xfaLayer.hide(); + } + if (textLayerNode) { + this.textLayer.hide(); + } + this.structTreeLayer?.hide(); + if (!zoomLayerNode) { + if (this.canvas) { + this.#viewportMap.delete(this.canvas); + this.canvas.width = 0; + this.canvas.height = 0; + delete this.canvas; + } + this._resetZoomLayer(); + } + } + update({ + scale = 0, + rotation = null, + optionalContentConfigPromise = null, + drawingDelay = -1 + }) { + this.scale = scale || this.scale; + if (typeof rotation === "number") { + this.rotation = rotation; + } + if (optionalContentConfigPromise instanceof Promise) { + this._optionalContentConfigPromise = optionalContentConfigPromise; + optionalContentConfigPromise.then(optionalContentConfig => { + if (optionalContentConfigPromise !== this._optionalContentConfigPromise) { + return; + } + this.#useThumbnailCanvas.initialOptionalContent = optionalContentConfig.hasInitialVisibility; + }); + } + this.#useThumbnailCanvas.directDrawing = true; + const totalRotation = (this.rotation + this.pdfPageRotate) % 360; + this.viewport = this.viewport.clone({ + scale: this.scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS, + rotation: totalRotation + }); + this.#setDimensions(); + if (this._isStandalone) { + this._container?.style.setProperty("--scale-factor", this.viewport.scale); + } + let isScalingRestricted = false; + if (this.canvas && this.maxCanvasPixels > 0) { + const { + width, + height + } = this.viewport; + const { + sx, + sy + } = this.outputScale; + if ((Math.floor(width) * sx | 0) * (Math.floor(height) * sy | 0) > this.maxCanvasPixels) { + isScalingRestricted = true; + } + } + const onlyCssZoom = this.useOnlyCssZoom || this.hasRestrictedScaling && isScalingRestricted; + const postponeDrawing = !onlyCssZoom && drawingDelay >= 0 && drawingDelay < 1000; + if (this.canvas) { + if (postponeDrawing || onlyCssZoom) { + if (postponeDrawing && this.renderingState !== _ui_utils.RenderingStates.FINISHED) { + this.cancelRendering({ + keepZoomLayer: true, + keepAnnotationLayer: true, + keepAnnotationEditorLayer: true, + keepXfaLayer: true, + keepTextLayer: true, + cancelExtraDelay: drawingDelay + }); + this.renderingState = _ui_utils.RenderingStates.FINISHED; + this.#useThumbnailCanvas.directDrawing = false; + } + this.cssTransform({ + target: this.canvas, + redrawAnnotationLayer: true, + redrawAnnotationEditorLayer: true, + redrawXfaLayer: true, + redrawTextLayer: !postponeDrawing, + hideTextLayer: postponeDrawing + }); + if (postponeDrawing) { + return; + } + this.eventBus.dispatch("pagerendered", { + source: this, + pageNumber: this.id, + cssTransform: true, + timestamp: performance.now(), + error: this.#renderError + }); + return; + } + if (!this.zoomLayer && !this.canvas.hidden) { + this.zoomLayer = this.canvas.parentNode; + this.zoomLayer.style.position = "absolute"; + } + } + if (this.zoomLayer) { + this.cssTransform({ + target: this.zoomLayer.firstChild + }); + } + this.reset({ + keepZoomLayer: true, + keepAnnotationLayer: true, + keepAnnotationEditorLayer: true, + keepXfaLayer: true, + keepTextLayer: true + }); + } + cancelRendering({ + keepAnnotationLayer = false, + keepAnnotationEditorLayer = false, + keepXfaLayer = false, + keepTextLayer = false, + cancelExtraDelay = 0 + } = {}) { + if (this.renderTask) { + this.renderTask.cancel(cancelExtraDelay); + this.renderTask = null; + } + this.resume = null; + if (this.textLayer && (!keepTextLayer || !this.textLayer.div)) { + this.textLayer.cancel(); + this.textLayer = null; + } + if (this.structTreeLayer && !this.textLayer) { + this.structTreeLayer = null; + } + if (this.annotationLayer && (!keepAnnotationLayer || !this.annotationLayer.div)) { + this.annotationLayer.cancel(); + this.annotationLayer = null; + this._annotationCanvasMap = null; + } + if (this.annotationEditorLayer && (!keepAnnotationEditorLayer || !this.annotationEditorLayer.div)) { + this.annotationEditorLayer.cancel(); + this.annotationEditorLayer = null; + } + if (this.xfaLayer && (!keepXfaLayer || !this.xfaLayer.div)) { + this.xfaLayer.cancel(); + this.xfaLayer = null; + this._textHighlighter?.disable(); + } + } + cssTransform({ + target, + redrawAnnotationLayer = false, + redrawAnnotationEditorLayer = false, + redrawXfaLayer = false, + redrawTextLayer = false, + hideTextLayer = false + }) { + if (!target.hasAttribute("zooming")) { + target.setAttribute("zooming", true); + const { + style + } = target; + style.width = style.height = ""; + } + const originalViewport = this.#viewportMap.get(target); + if (this.viewport !== originalViewport) { + const relativeRotation = this.viewport.rotation - originalViewport.rotation; + const absRotation = Math.abs(relativeRotation); + let scaleX = 1, + scaleY = 1; + if (absRotation === 90 || absRotation === 270) { + const { + width, + height + } = this.viewport; + scaleX = height / width; + scaleY = width / height; + } + target.style.transform = `rotate(${relativeRotation}deg) scale(${scaleX}, ${scaleY})`; + } + if (redrawAnnotationLayer && this.annotationLayer) { + this.#renderAnnotationLayer(); + } + if (redrawAnnotationEditorLayer && this.annotationEditorLayer) { + this.#renderAnnotationEditorLayer(); + } + if (redrawXfaLayer && this.xfaLayer) { + this.#renderXfaLayer(); + } + if (this.textLayer) { + if (hideTextLayer) { + this.textLayer.hide(); + this.structTreeLayer?.hide(); + } else if (redrawTextLayer) { + this.#renderTextLayer(); + } + } + } + get width() { + return this.viewport.width; + } + get height() { + return this.viewport.height; + } + getPagePoint(x, y) { + return this.viewport.convertToPdfPoint(x, y); + } + async #finishRenderTask(renderTask, error = null) { + if (renderTask === this.renderTask) { + this.renderTask = null; + } + if (error instanceof _pdfjsLib.RenderingCancelledException) { + this.#renderError = null; + return; + } + this.#renderError = error; + this.renderingState = _ui_utils.RenderingStates.FINISHED; + this._resetZoomLayer(true); + this.#useThumbnailCanvas.regularAnnotations = !renderTask.separateAnnots; + this.eventBus.dispatch("pagerendered", { + source: this, + pageNumber: this.id, + cssTransform: false, + timestamp: performance.now(), + error: this.#renderError + }); + if (error) { + throw error; + } + } + async draw() { + if (this.renderingState !== _ui_utils.RenderingStates.INITIAL) { + console.error("Must be in new state before drawing"); + this.reset(); + } + const { + div, + l10n, + pageColors, + pdfPage, + viewport + } = this; + if (!pdfPage) { + this.renderingState = _ui_utils.RenderingStates.FINISHED; + throw new Error("pdfPage is not loaded"); + } + this.renderingState = _ui_utils.RenderingStates.RUNNING; + const canvasWrapper = document.createElement("div"); + canvasWrapper.classList.add("canvasWrapper"); + div.append(canvasWrapper); + if (!this.textLayer && this.#textLayerMode !== _ui_utils.TextLayerMode.DISABLE && !pdfPage.isPureXfa) { + this._accessibilityManager ||= new _text_accessibility.TextAccessibilityManager(); + this.textLayer = new _text_layer_builder.TextLayerBuilder({ + highlighter: this._textHighlighter, + accessibilityManager: this._accessibilityManager, + isOffscreenCanvasSupported: this.isOffscreenCanvasSupported, + enablePermissions: this.#textLayerMode === _ui_utils.TextLayerMode.ENABLE_PERMISSIONS + }); + div.append(this.textLayer.div); + } + if (!this.annotationLayer && this.#annotationMode !== _pdfjsLib.AnnotationMode.DISABLE) { + const { + annotationStorage, + downloadManager, + enableScripting, + fieldObjectsPromise, + hasJSActionsPromise, + linkService + } = this.#layerProperties(); + this._annotationCanvasMap ||= new Map(); + this.annotationLayer = new _annotation_layer_builder.AnnotationLayerBuilder({ + pageDiv: div, + pdfPage, + annotationStorage, + imageResourcesPath: this.imageResourcesPath, + renderForms: this.#annotationMode === _pdfjsLib.AnnotationMode.ENABLE_FORMS, + linkService, + downloadManager, + l10n, + enableScripting, + hasJSActionsPromise, + fieldObjectsPromise, + annotationCanvasMap: this._annotationCanvasMap, + accessibilityManager: this._accessibilityManager + }); + } + const renderContinueCallback = cont => { + showCanvas?.(false); + if (this.renderingQueue && !this.renderingQueue.isHighestPriority(this)) { + this.renderingState = _ui_utils.RenderingStates.PAUSED; + this.resume = () => { + this.renderingState = _ui_utils.RenderingStates.RUNNING; + cont(); + }; + return; + } + cont(); + }; + const { + width, + height + } = viewport; + const canvas = document.createElement("canvas"); + canvas.setAttribute("role", "presentation"); + canvas.hidden = true; + const hasHCM = !!(pageColors?.background && pageColors?.foreground); + let showCanvas = isLastShow => { + if (!hasHCM || isLastShow) { + canvas.hidden = false; + showCanvas = null; + } + }; + canvasWrapper.append(canvas); + this.canvas = canvas; + const ctx = canvas.getContext("2d", { + alpha: false + }); + const outputScale = this.outputScale = new _ui_utils.OutputScale(); + if (this.useOnlyCssZoom) { + const actualSizeViewport = viewport.clone({ + scale: _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS + }); + outputScale.sx *= actualSizeViewport.width / width; + outputScale.sy *= actualSizeViewport.height / height; + } + if (this.maxCanvasPixels > 0) { + const pixelsInViewport = width * height; + const maxScale = Math.sqrt(this.maxCanvasPixels / pixelsInViewport); + if (outputScale.sx > maxScale || outputScale.sy > maxScale) { + outputScale.sx = maxScale; + outputScale.sy = maxScale; + this.hasRestrictedScaling = true; + } else { + this.hasRestrictedScaling = false; + } + } + const sfx = (0, _ui_utils.approximateFraction)(outputScale.sx); + const sfy = (0, _ui_utils.approximateFraction)(outputScale.sy); + canvas.width = (0, _ui_utils.roundToDivide)(width * outputScale.sx, sfx[0]); + canvas.height = (0, _ui_utils.roundToDivide)(height * outputScale.sy, sfy[0]); + const { + style + } = canvas; + style.width = (0, _ui_utils.roundToDivide)(width, sfx[1]) + "px"; + style.height = (0, _ui_utils.roundToDivide)(height, sfy[1]) + "px"; + this.#viewportMap.set(canvas, viewport); + const transform = outputScale.scaled ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0] : null; + const renderContext = { + canvasContext: ctx, + transform, + viewport, + annotationMode: this.#annotationMode, + optionalContentConfigPromise: this._optionalContentConfigPromise, + annotationCanvasMap: this._annotationCanvasMap, + pageColors + }; + const renderTask = this.renderTask = this.pdfPage.render(renderContext); + renderTask.onContinue = renderContinueCallback; + const resultPromise = renderTask.promise.then(async () => { + showCanvas?.(true); + await this.#finishRenderTask(renderTask); + this.#renderTextLayer(); + if (this.annotationLayer) { + await this.#renderAnnotationLayer(); + } + if (!this.annotationEditorLayer) { + const { + annotationEditorUIManager + } = this.#layerProperties(); + if (!annotationEditorUIManager) { + return; + } + this.annotationEditorLayer = new _annotation_editor_layer_builder.AnnotationEditorLayerBuilder({ + uiManager: annotationEditorUIManager, + pageDiv: div, + pdfPage, + l10n, + accessibilityManager: this._accessibilityManager, + annotationLayer: this.annotationLayer?.annotationLayer + }); + } + this.#renderAnnotationEditorLayer(); + }, error => { + if (!(error instanceof _pdfjsLib.RenderingCancelledException)) { + showCanvas?.(true); + } + return this.#finishRenderTask(renderTask, error); + }); + if (pdfPage.isPureXfa) { + if (!this.xfaLayer) { + const { + annotationStorage, + linkService + } = this.#layerProperties(); + this.xfaLayer = new _xfa_layer_builder.XfaLayerBuilder({ + pageDiv: div, + pdfPage, + annotationStorage, + linkService + }); + } else if (this.xfaLayer.div) { + div.append(this.xfaLayer.div); + } + this.#renderXfaLayer(); + } + div.setAttribute("data-loaded", true); + this.eventBus.dispatch("pagerender", { + source: this, + pageNumber: this.id + }); + return resultPromise; + } + setPageLabel(label) { + this.pageLabel = typeof label === "string" ? label : null; + if (this.pageLabel !== null) { + this.div.setAttribute("data-page-label", this.pageLabel); + } else { + this.div.removeAttribute("data-page-label"); + } + } + get thumbnailCanvas() { + const { + directDrawing, + initialOptionalContent, + regularAnnotations + } = this.#useThumbnailCanvas; + return directDrawing && initialOptionalContent && regularAnnotations ? this.canvas : null; + } +} +exports.PDFPageView = PDFPageView; + /***/ }), /* 31 */ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { @@ -11507,739 +10652,230 @@ exports.NullL10n = NullL10n; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.PDFPageView = void 0; - -var _ui_utils = __webpack_require__(4); - -var _pdfjsLib = __webpack_require__(5); - -var _l10n_utils = __webpack_require__(30); - -var _pdf_rendering_queue = __webpack_require__(8); - -var _viewer_compatibility = __webpack_require__(2); - -const MAX_CANVAS_PIXELS = _viewer_compatibility.viewerCompatibilityParams.maxCanvasPixels || 16777216; - -class PDFPageView { +exports.AnnotationEditorLayerBuilder = void 0; +var _pdfjsLib = __webpack_require__(4); +var _l10n_utils = __webpack_require__(29); +class AnnotationEditorLayerBuilder { + #annotationLayer = null; + #uiManager; constructor(options) { - const container = options.container; - const defaultViewport = options.defaultViewport; - this.id = options.id; - this.renderingId = "page" + this.id; - this.pdfPage = null; - this.pageLabel = null; - this.rotation = 0; - this.scale = options.scale || _ui_utils.DEFAULT_SCALE; - this.viewport = defaultViewport; - this.pdfPageRotate = defaultViewport.rotation; - this._optionalContentConfigPromise = options.optionalContentConfigPromise || null; - this.hasRestrictedScaling = false; - this.textLayerMode = Number.isInteger(options.textLayerMode) ? options.textLayerMode : _ui_utils.TextLayerMode.ENABLE; - this.imageResourcesPath = options.imageResourcesPath || ""; - this.renderInteractiveForms = options.renderInteractiveForms !== false; - this.useOnlyCssZoom = options.useOnlyCssZoom || false; - this.maxCanvasPixels = options.maxCanvasPixels || MAX_CANVAS_PIXELS; - this.eventBus = options.eventBus; - this.renderingQueue = options.renderingQueue; - this.textLayerFactory = options.textLayerFactory; - this.annotationLayerFactory = options.annotationLayerFactory; - this.xfaLayerFactory = options.xfaLayerFactory; - this.structTreeLayerFactory = options.structTreeLayerFactory; - this.renderer = options.renderer || _ui_utils.RendererType.CANVAS; + this.pageDiv = options.pageDiv; + this.pdfPage = options.pdfPage; + this.accessibilityManager = options.accessibilityManager; this.l10n = options.l10n || _l10n_utils.NullL10n; - this.paintTask = null; - this.paintedViewportMap = new WeakMap(); - this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL; - this.resume = null; - this._renderError = null; - this.annotationLayer = null; - this.textLayer = null; - this.zoomLayer = null; - this.xfaLayer = null; - this.structTreeLayer = null; - const div = document.createElement("div"); - div.className = "page"; - div.style.width = Math.floor(this.viewport.width) + "px"; - div.style.height = Math.floor(this.viewport.height) + "px"; - div.setAttribute("data-page-number", this.id); - div.setAttribute("role", "region"); - this.l10n.get("page_landmark", { - page: this.id - }).then(msg => { - div.setAttribute("aria-label", msg); - }); - this.div = div; - container.appendChild(div); + this.annotationEditorLayer = null; + this.div = null; + this._cancelled = false; + this.#uiManager = options.uiManager; + this.#annotationLayer = options.annotationLayer || null; } - - setPdfPage(pdfPage) { - this.pdfPage = pdfPage; - this.pdfPageRotate = pdfPage.rotate; - const totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = pdfPage.getViewport({ - scale: this.scale * _ui_utils.CSS_UNITS, - rotation: totalRotation - }); - this.reset(); - } - - destroy() { - this.reset(); - - if (this.pdfPage) { - this.pdfPage.cleanup(); - } - } - - async _renderAnnotationLayer() { - let error = null; - - try { - await this.annotationLayer.render(this.viewport, "display"); - } catch (ex) { - error = ex; - } finally { - this.eventBus.dispatch("annotationlayerrendered", { - source: this, - pageNumber: this.id, - error - }); - } - } - - async _renderXfaLayer() { - let error = null; - - try { - await this.xfaLayer.render(this.viewport, "display"); - } catch (ex) { - error = ex; - } finally { - this.eventBus.dispatch("xfalayerrendered", { - source: this, - pageNumber: this.id, - error - }); - } - } - - _resetZoomLayer(removeFromDOM = false) { - if (!this.zoomLayer) { + async render(viewport, intent = "display") { + if (intent !== "display") { return; } - - const zoomLayerCanvas = this.zoomLayer.firstChild; - this.paintedViewportMap.delete(zoomLayerCanvas); - zoomLayerCanvas.width = 0; - zoomLayerCanvas.height = 0; - - if (removeFromDOM) { - this.zoomLayer.remove(); - } - - this.zoomLayer = null; - } - - reset({ - keepZoomLayer = false, - keepAnnotationLayer = false, - keepXfaLayer = false - } = {}) { - this.cancelRendering({ - keepAnnotationLayer, - keepXfaLayer - }); - this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL; - const div = this.div; - div.style.width = Math.floor(this.viewport.width) + "px"; - div.style.height = Math.floor(this.viewport.height) + "px"; - const childNodes = div.childNodes, - zoomLayerNode = keepZoomLayer && this.zoomLayer || null, - annotationLayerNode = keepAnnotationLayer && this.annotationLayer?.div || null, - xfaLayerNode = keepXfaLayer && this.xfaLayer?.div || null; - - for (let i = childNodes.length - 1; i >= 0; i--) { - const node = childNodes[i]; - - switch (node) { - case zoomLayerNode: - case annotationLayerNode: - case xfaLayerNode: - continue; - } - - div.removeChild(node); - } - - div.removeAttribute("data-loaded"); - - if (annotationLayerNode) { - this.annotationLayer.hide(); - } - - if (xfaLayerNode) { - this.xfaLayer.hide(); - } - - if (!zoomLayerNode) { - if (this.canvas) { - this.paintedViewportMap.delete(this.canvas); - this.canvas.width = 0; - this.canvas.height = 0; - delete this.canvas; - } - - this._resetZoomLayer(); - } - - if (this.svg) { - this.paintedViewportMap.delete(this.svg); - delete this.svg; - } - - this.loadingIconDiv = document.createElement("div"); - this.loadingIconDiv.className = "loading-icon loading-tip"; - this.loadingIconDiv.setAttribute("role", "img"); - this.l10n.get("loading").then(msg => { - this.loadingIconDiv?.setAttribute("aria-label", msg); - }); - div.appendChild(this.loadingIconDiv); - } - - update(scale, rotation, optionalContentConfigPromise = null) { - this.scale = scale || this.scale; - - if (typeof rotation !== "undefined") { - this.rotation = rotation; - } - - if (optionalContentConfigPromise instanceof Promise) { - this._optionalContentConfigPromise = optionalContentConfigPromise; - } - - const totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = this.viewport.clone({ - scale: this.scale * _ui_utils.CSS_UNITS, - rotation: totalRotation - }); - - if (this.svg) { - this.cssTransform({ - target: this.svg, - redrawAnnotationLayer: true, - redrawXfaLayer: true - }); - this.eventBus.dispatch("pagerendered", { - source: this, - pageNumber: this.id, - cssTransform: true, - timestamp: performance.now(), - error: this._renderError - }); + if (this._cancelled) { return; } - - let isScalingRestricted = false; - - if (this.canvas && this.maxCanvasPixels > 0) { - const outputScale = this.outputScale; - - if ((Math.floor(this.viewport.width) * outputScale.sx | 0) * (Math.floor(this.viewport.height) * outputScale.sy | 0) > this.maxCanvasPixels) { - isScalingRestricted = true; - } - } - - if (this.canvas) { - if (this.useOnlyCssZoom || this.hasRestrictedScaling && isScalingRestricted) { - this.cssTransform({ - target: this.canvas, - redrawAnnotationLayer: true, - redrawXfaLayer: true - }); - this.eventBus.dispatch("pagerendered", { - source: this, - pageNumber: this.id, - cssTransform: true, - timestamp: performance.now(), - error: this._renderError - }); - return; - } - - if (!this.zoomLayer && !this.canvas.hidden) { - this.zoomLayer = this.canvas.parentNode; - this.zoomLayer.style.position = "absolute"; - } - } - - if (this.zoomLayer) { - this.cssTransform({ - target: this.zoomLayer.firstChild - }); - } - - this.reset({ - keepZoomLayer: true, - keepAnnotationLayer: true, - keepXfaLayer: true + const clonedViewport = viewport.clone({ + dontFlip: true }); - } - - cancelRendering({ - keepAnnotationLayer = false, - keepXfaLayer = false - } = {}) { - if (this.paintTask) { - this.paintTask.cancel(); - this.paintTask = null; + if (this.div) { + this.annotationEditorLayer.update({ + viewport: clonedViewport + }); + this.show(); + return; } - - this.resume = null; - - if (this.textLayer) { - this.textLayer.cancel(); - this.textLayer = null; - } - - if (this.annotationLayer && (!keepAnnotationLayer || !this.annotationLayer.div)) { - this.annotationLayer.cancel(); - this.annotationLayer = null; - } - - if (this.xfaLayer && (!keepXfaLayer || !this.xfaLayer.div)) { - this.xfaLayer.cancel(); - this.xfaLayer = null; - } - - if (this._onTextLayerRendered) { - this.eventBus._off("textlayerrendered", this._onTextLayerRendered); - - this._onTextLayerRendered = null; - } - } - - cssTransform({ - target, - redrawAnnotationLayer = false, - redrawXfaLayer = false - }) { - const width = this.viewport.width; - const height = this.viewport.height; - const div = this.div; - target.style.width = target.parentNode.style.width = div.style.width = Math.floor(width) + "px"; - target.style.height = target.parentNode.style.height = div.style.height = Math.floor(height) + "px"; - const relativeRotation = this.viewport.rotation - this.paintedViewportMap.get(target).rotation; - const absRotation = Math.abs(relativeRotation); - let scaleX = 1, - scaleY = 1; - - if (absRotation === 90 || absRotation === 270) { - scaleX = height / width; - scaleY = width / height; - } - - target.style.transform = `rotate(${relativeRotation}deg) scale(${scaleX}, ${scaleY})`; - - if (this.textLayer) { - const textLayerViewport = this.textLayer.viewport; - const textRelativeRotation = this.viewport.rotation - textLayerViewport.rotation; - const textAbsRotation = Math.abs(textRelativeRotation); - let scale = width / textLayerViewport.width; - - if (textAbsRotation === 90 || textAbsRotation === 270) { - scale = width / textLayerViewport.height; - } - - const textLayerDiv = this.textLayer.textLayerDiv; - let transX, transY; - - switch (textAbsRotation) { - case 0: - transX = transY = 0; - break; - - case 90: - transX = 0; - transY = "-" + textLayerDiv.style.height; - break; - - case 180: - transX = "-" + textLayerDiv.style.width; - transY = "-" + textLayerDiv.style.height; - break; - - case 270: - transX = "-" + textLayerDiv.style.width; - transY = 0; - break; - - default: - console.error("Bad rotation value."); - break; - } - - textLayerDiv.style.transform = `rotate(${textAbsRotation}deg) ` + `scale(${scale}) ` + `translate(${transX}, ${transY})`; - textLayerDiv.style.transformOrigin = "0% 0%"; - } - - if (redrawAnnotationLayer && this.annotationLayer) { - this._renderAnnotationLayer(); - } - - if (redrawXfaLayer && this.xfaLayer) { - this._renderXfaLayer(); - } - } - - get width() { - return this.viewport.width; - } - - get height() { - return this.viewport.height; - } - - getPagePoint(x, y) { - return this.viewport.convertToPdfPoint(x, y); - } - - draw() { - if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) { - console.error("Must be in new state before drawing"); - this.reset(); - } - - const { + const div = this.div = document.createElement("div"); + div.className = "annotationEditorLayer"; + div.tabIndex = 0; + div.hidden = true; + this.pageDiv.append(div); + this.annotationEditorLayer = new _pdfjsLib.AnnotationEditorLayer({ + uiManager: this.#uiManager, div, - pdfPage - } = this; - - if (!pdfPage) { - this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; - - if (this.loadingIconDiv) { - div.removeChild(this.loadingIconDiv); - delete this.loadingIconDiv; - } - - return Promise.reject(new Error("pdfPage is not loaded")); - } - - this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING; - const canvasWrapper = document.createElement("div"); - canvasWrapper.style.width = div.style.width; - canvasWrapper.style.height = div.style.height; - canvasWrapper.classList.add("canvasWrapper"); - - if (this.annotationLayer?.div) { - div.insertBefore(canvasWrapper, this.annotationLayer.div); - } else { - div.appendChild(canvasWrapper); - } - - let textLayer = null; - - if (this.textLayerMode !== _ui_utils.TextLayerMode.DISABLE && this.textLayerFactory) { - const textLayerDiv = document.createElement("div"); - textLayerDiv.className = "textLayer"; - textLayerDiv.style.width = canvasWrapper.style.width; - textLayerDiv.style.height = canvasWrapper.style.height; - - if (this.annotationLayer?.div) { - div.insertBefore(textLayerDiv, this.annotationLayer.div); - } else { - div.appendChild(textLayerDiv); - } - - textLayer = this.textLayerFactory.createTextLayerBuilder(textLayerDiv, this.id - 1, this.viewport, this.textLayerMode === _ui_utils.TextLayerMode.ENABLE_ENHANCE, this.eventBus); - } - - this.textLayer = textLayer; - - if (this.xfaLayer?.div) { - div.appendChild(this.xfaLayer.div); - } - - let renderContinueCallback = null; - - if (this.renderingQueue) { - renderContinueCallback = cont => { - if (!this.renderingQueue.isHighestPriority(this)) { - this.renderingState = _pdf_rendering_queue.RenderingStates.PAUSED; - - this.resume = () => { - this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING; - cont(); - }; - - return; - } - - cont(); - }; - } - - const finishPaintTask = async (error = null) => { - if (paintTask === this.paintTask) { - this.paintTask = null; - } - - if (error instanceof _pdfjsLib.RenderingCancelledException) { - this._renderError = null; - return; - } - - this._renderError = error; - this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; - - if (this.loadingIconDiv) { - div.removeChild(this.loadingIconDiv); - delete this.loadingIconDiv; - } - - this._resetZoomLayer(true); - - this.eventBus.dispatch("pagerendered", { - source: this, - pageNumber: this.id, - cssTransform: false, - timestamp: performance.now(), - error: this._renderError - }); - - if (error) { - throw error; - } + accessibilityManager: this.accessibilityManager, + pageIndex: this.pdfPage.pageNumber - 1, + l10n: this.l10n, + viewport: clonedViewport, + annotationLayer: this.#annotationLayer + }); + const parameters = { + viewport: clonedViewport, + div, + annotations: null, + intent }; - - const paintTask = this.renderer === _ui_utils.RendererType.SVG ? this.paintOnSvg(canvasWrapper) : this.paintOnCanvas(canvasWrapper); - paintTask.onRenderContinue = renderContinueCallback; - this.paintTask = paintTask; - const resultPromise = paintTask.promise.then(() => { - return finishPaintTask(null).then(() => { - if (textLayer) { - const readableStream = pdfPage.streamTextContent({ - normalizeWhitespace: true, - includeMarkedContent: true - }); - textLayer.setTextContentStream(readableStream); - textLayer.render(); - } - }); - }, function (reason) { - return finishPaintTask(reason); - }); - - if (this.annotationLayerFactory) { - if (!this.annotationLayer) { - this.annotationLayer = this.annotationLayerFactory.createAnnotationLayerBuilder(div, pdfPage, null, this.imageResourcesPath, this.renderInteractiveForms, this.l10n, null, null, null); - } - - this._renderAnnotationLayer(); - } - - if (this.xfaLayerFactory) { - if (!this.xfaLayer) { - this.xfaLayer = this.xfaLayerFactory.createXfaLayerBuilder(div, pdfPage, null); - } - - this._renderXfaLayer(); - } - - if (this.structTreeLayerFactory && this.textLayer && this.canvas) { - this._onTextLayerRendered = event => { - if (event.pageNumber !== this.id) { - return; - } - - this.eventBus._off("textlayerrendered", this._onTextLayerRendered); - - this._onTextLayerRendered = null; - - if (!this.canvas) { - return; - } - - this.pdfPage.getStructTree().then(tree => { - if (!tree) { - return; - } - - if (!this.canvas) { - return; - } - - const treeDom = this.structTreeLayer.render(tree); - treeDom.classList.add("structTree"); - this.canvas.appendChild(treeDom); - }); - }; - - this.eventBus._on("textlayerrendered", this._onTextLayerRendered); - - this.structTreeLayer = this.structTreeLayerFactory.createStructTreeLayerBuilder(pdfPage); - } - - div.setAttribute("data-loaded", true); - this.eventBus.dispatch("pagerender", { - source: this, - pageNumber: this.id - }); - return resultPromise; + this.annotationEditorLayer.render(parameters); + this.show(); } - - paintOnCanvas(canvasWrapper) { - const renderCapability = (0, _pdfjsLib.createPromiseCapability)(); - const result = { - promise: renderCapability.promise, - - onRenderContinue(cont) { - cont(); - }, - - cancel() { - renderTask.cancel(); - } - - }; - const viewport = this.viewport; - const canvas = document.createElement("canvas"); - canvas.hidden = true; - let isCanvasHidden = true; - - const showCanvas = function () { - if (isCanvasHidden) { - canvas.hidden = false; - isCanvasHidden = false; - } - }; - - canvasWrapper.appendChild(canvas); - this.canvas = canvas; - canvas.mozOpaque = true; - const ctx = canvas.getContext("2d", { - alpha: false - }); - const outputScale = (0, _ui_utils.getOutputScale)(ctx); - this.outputScale = outputScale; - - if (this.useOnlyCssZoom) { - const actualSizeViewport = viewport.clone({ - scale: _ui_utils.CSS_UNITS - }); - outputScale.sx *= actualSizeViewport.width / viewport.width; - outputScale.sy *= actualSizeViewport.height / viewport.height; - outputScale.scaled = true; + cancel() { + this._cancelled = true; + if (!this.div) { + return; } - - if (this.maxCanvasPixels > 0) { - const pixelsInViewport = viewport.width * viewport.height; - const maxScale = Math.sqrt(this.maxCanvasPixels / pixelsInViewport); - - if (outputScale.sx > maxScale || outputScale.sy > maxScale) { - outputScale.sx = maxScale; - outputScale.sy = maxScale; - outputScale.scaled = true; - this.hasRestrictedScaling = true; - } else { - this.hasRestrictedScaling = false; - } + this.pageDiv = null; + this.annotationEditorLayer.destroy(); + this.div.remove(); + } + hide() { + if (!this.div) { + return; } - - const sfx = (0, _ui_utils.approximateFraction)(outputScale.sx); - const sfy = (0, _ui_utils.approximateFraction)(outputScale.sy); - canvas.width = (0, _ui_utils.roundToDivide)(viewport.width * outputScale.sx, sfx[0]); - canvas.height = (0, _ui_utils.roundToDivide)(viewport.height * outputScale.sy, sfy[0]); - canvas.style.width = (0, _ui_utils.roundToDivide)(viewport.width, sfx[1]) + "px"; - canvas.style.height = (0, _ui_utils.roundToDivide)(viewport.height, sfy[1]) + "px"; - this.paintedViewportMap.set(canvas, viewport); - const transform = !outputScale.scaled ? null : [outputScale.sx, 0, 0, outputScale.sy, 0, 0]; - const renderContext = { - canvasContext: ctx, - transform, - viewport: this.viewport, - renderInteractiveForms: this.renderInteractiveForms, - optionalContentConfigPromise: this._optionalContentConfigPromise - }; - const renderTask = this.pdfPage.render(renderContext); - - renderTask.onContinue = function (cont) { - showCanvas(); - - if (result.onRenderContinue) { - result.onRenderContinue(cont); - } else { - cont(); - } - }; - - renderTask.promise.then(function () { - showCanvas(); - renderCapability.resolve(undefined); - }, function (error) { - showCanvas(); - renderCapability.reject(error); - }); - return result; + this.div.hidden = true; } - - paintOnSvg(wrapper) { - let cancelled = false; - - const ensureNotCancelled = () => { - if (cancelled) { - throw new _pdfjsLib.RenderingCancelledException(`Rendering cancelled, page ${this.id}`, "svg"); - } - }; - - const pdfPage = this.pdfPage; - const actualSizeViewport = this.viewport.clone({ - scale: _ui_utils.CSS_UNITS - }); - const promise = pdfPage.getOperatorList().then(opList => { - ensureNotCancelled(); - const svgGfx = new _pdfjsLib.SVGGraphics(pdfPage.commonObjs, pdfPage.objs, _viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL); - return svgGfx.getSVG(opList, actualSizeViewport).then(svg => { - ensureNotCancelled(); - this.svg = svg; - this.paintedViewportMap.set(svg, actualSizeViewport); - svg.style.width = wrapper.style.width; - svg.style.height = wrapper.style.height; - this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; - wrapper.appendChild(svg); - }); - }); - return { - promise, - - onRenderContinue(cont) { - cont(); - }, - - cancel() { - cancelled = true; - } - - }; - } - - setPageLabel(label) { - this.pageLabel = typeof label === "string" ? label : null; - - if (this.pageLabel !== null) { - this.div.setAttribute("data-page-label", this.pageLabel); - } else { - this.div.removeAttribute("data-page-label"); + show() { + if (!this.div || this.annotationEditorLayer.isEmpty) { + return; } + this.div.hidden = false; } - } - -exports.PDFPageView = PDFPageView; +exports.AnnotationEditorLayerBuilder = AnnotationEditorLayerBuilder; /***/ }), /* 32 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationLayerBuilder = void 0; +var _pdfjsLib = __webpack_require__(4); +var _l10n_utils = __webpack_require__(29); +var _ui_utils = __webpack_require__(3); +class AnnotationLayerBuilder { + #onPresentationModeChanged = null; + constructor({ + pageDiv, + pdfPage, + linkService, + downloadManager, + annotationStorage = null, + imageResourcesPath = "", + renderForms = true, + l10n = _l10n_utils.NullL10n, + enableScripting = false, + hasJSActionsPromise = null, + fieldObjectsPromise = null, + annotationCanvasMap = null, + accessibilityManager = null + }) { + this.pageDiv = pageDiv; + this.pdfPage = pdfPage; + this.linkService = linkService; + this.downloadManager = downloadManager; + this.imageResourcesPath = imageResourcesPath; + this.renderForms = renderForms; + this.l10n = l10n; + this.annotationStorage = annotationStorage; + this.enableScripting = enableScripting; + this._hasJSActionsPromise = hasJSActionsPromise || Promise.resolve(false); + this._fieldObjectsPromise = fieldObjectsPromise || Promise.resolve(null); + this._annotationCanvasMap = annotationCanvasMap; + this._accessibilityManager = accessibilityManager; + this.annotationLayer = null; + this.div = null; + this._cancelled = false; + this._eventBus = linkService.eventBus; + } + async render(viewport, intent = "display") { + if (this.div) { + if (this._cancelled || !this.annotationLayer) { + return; + } + this.annotationLayer.update({ + viewport: viewport.clone({ + dontFlip: true + }) + }); + return; + } + const [annotations, hasJSActions, fieldObjects] = await Promise.all([this.pdfPage.getAnnotations({ + intent + }), this._hasJSActionsPromise, this._fieldObjectsPromise]); + if (this._cancelled) { + return; + } + const div = this.div = document.createElement("div"); + div.className = "annotationLayer"; + this.pageDiv.append(div); + if (annotations.length === 0) { + this.hide(); + return; + } + this.annotationLayer = new _pdfjsLib.AnnotationLayer({ + div, + accessibilityManager: this._accessibilityManager, + annotationCanvasMap: this._annotationCanvasMap, + l10n: this.l10n, + page: this.pdfPage, + viewport: viewport.clone({ + dontFlip: true + }) + }); + await this.annotationLayer.render({ + annotations, + imageResourcesPath: this.imageResourcesPath, + renderForms: this.renderForms, + linkService: this.linkService, + downloadManager: this.downloadManager, + annotationStorage: this.annotationStorage, + enableScripting: this.enableScripting, + hasJSActions, + fieldObjects + }); + if (this.linkService.isInPresentationMode) { + this.#updatePresentationModeState(_ui_utils.PresentationModeState.FULLSCREEN); + } + if (!this.#onPresentationModeChanged) { + this.#onPresentationModeChanged = evt => { + this.#updatePresentationModeState(evt.state); + }; + this._eventBus?._on("presentationmodechanged", this.#onPresentationModeChanged); + } + } + cancel() { + this._cancelled = true; + if (this.#onPresentationModeChanged) { + this._eventBus?._off("presentationmodechanged", this.#onPresentationModeChanged); + this.#onPresentationModeChanged = null; + } + } + hide() { + if (!this.div) { + return; + } + this.div.hidden = true; + } + #updatePresentationModeState(state) { + if (!this.div) { + return; + } + let disableFormElements = false; + switch (state) { + case _ui_utils.PresentationModeState.FULLSCREEN: + disableFormElements = true; + break; + case _ui_utils.PresentationModeState.NORMAL: + break; + default: + return; + } + for (const section of this.div.childNodes) { + if (section.hasAttribute("data-internal-link")) { + continue; + } + section.inert = disableFormElements; + } + } +} +exports.AnnotationLayerBuilder = AnnotationLayerBuilder; + +/***/ }), +/* 33 */ /***/ ((__unused_webpack_module, exports) => { @@ -12247,7 +10883,7 @@ exports.PDFPageView = PDFPageView; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.StructTreeLayerBuilder = exports.DefaultStructTreeLayerFactory = void 0; +exports.StructTreeLayerBuilder = void 0; const PDF_ROLE_TO_HTML_ROLE = { Document: null, DocumentFragment: null, @@ -12291,41 +10927,50 @@ const PDF_ROLE_TO_HTML_ROLE = { Artifact: null }; const HEADING_PATTERN = /^H(\d+)$/; - class StructTreeLayerBuilder { - constructor({ - pdfPage - }) { - this.pdfPage = pdfPage; + #treeDom = undefined; + get renderingDone() { + return this.#treeDom !== undefined; } - render(structTree) { - return this._walk(structTree); + if (this.#treeDom !== undefined) { + return this.#treeDom; + } + const treeDom = this.#walk(structTree); + treeDom?.classList.add("structTree"); + return this.#treeDom = treeDom; } - - _setAttributes(structElement, htmlElement) { + hide() { + if (this.#treeDom && !this.#treeDom.hidden) { + this.#treeDom.hidden = true; + } + } + show() { + if (this.#treeDom?.hidden) { + this.#treeDom.hidden = false; + } + } + #setAttributes(structElement, htmlElement) { if (structElement.alt !== undefined) { htmlElement.setAttribute("aria-label", structElement.alt); } - if (structElement.id !== undefined) { htmlElement.setAttribute("aria-owns", structElement.id); } + if (structElement.lang !== undefined) { + htmlElement.setAttribute("lang", structElement.lang); + } } - - _walk(node) { + #walk(node) { if (!node) { return null; } - const element = document.createElement("span"); - if ("role" in node) { const { role } = node; const match = role.match(HEADING_PATTERN); - if (match) { element.setAttribute("role", "heading"); element.setAttribute("aria-level", match[1]); @@ -12333,39 +10978,23 @@ class StructTreeLayerBuilder { element.setAttribute("role", PDF_ROLE_TO_HTML_ROLE[role]); } } - - this._setAttributes(node, element); - + this.#setAttributes(node, element); if (node.children) { if (node.children.length === 1 && "id" in node.children[0]) { - this._setAttributes(node.children[0], element); + this.#setAttributes(node.children[0], element); } else { for (const kid of node.children) { - element.appendChild(this._walk(kid)); + element.append(this.#walk(kid)); } } } - return element; } - } - exports.StructTreeLayerBuilder = StructTreeLayerBuilder; -class DefaultStructTreeLayerFactory { - createStructTreeLayerBuilder(pdfPage) { - return new StructTreeLayerBuilder({ - pdfPage - }); - } - -} - -exports.DefaultStructTreeLayerFactory = DefaultStructTreeLayerFactory; - /***/ }), -/* 33 */ +/* 34 */ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { @@ -12373,141 +11002,233 @@ exports.DefaultStructTreeLayerFactory = DefaultStructTreeLayerFactory; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.TextLayerBuilder = exports.DefaultTextLayerFactory = void 0; - -var _pdfjsLib = __webpack_require__(5); - -const EXPAND_DIVS_TIMEOUT = 300; - -class TextLayerBuilder { - constructor({ - textLayerDiv, - eventBus, - pageIndex, - viewport, - findController = null, - enhanceTextSelection = false - }) { - this.textLayerDiv = textLayerDiv; - this.eventBus = eventBus; - this.textContent = null; - this.textContentItemsStr = []; - this.textContentStream = null; - this.renderingDone = false; - this.pageIdx = pageIndex; - this.pageNumber = this.pageIdx + 1; - this.matches = []; - this.viewport = viewport; - this.textDivs = []; - this.findController = findController; - this.textLayerRenderTask = null; - this.enhanceTextSelection = enhanceTextSelection; - this._onUpdateTextLayerMatches = null; - - this._bindMouse(); +exports.TextAccessibilityManager = void 0; +var _ui_utils = __webpack_require__(3); +class TextAccessibilityManager { + #enabled = false; + #textChildren = null; + #textNodes = new Map(); + #waitingElements = new Map(); + setTextMapping(textDivs) { + this.#textChildren = textDivs; } - - _finishRendering() { - this.renderingDone = true; - - if (!this.enhanceTextSelection) { - const endOfContent = document.createElement("div"); - endOfContent.className = "endOfContent"; - this.textLayerDiv.appendChild(endOfContent); + static #compareElementPositions(e1, e2) { + const rect1 = e1.getBoundingClientRect(); + const rect2 = e2.getBoundingClientRect(); + if (rect1.width === 0 && rect1.height === 0) { + return +1; } - - this.eventBus.dispatch("textlayerrendered", { - source: this, - pageNumber: this.pageNumber, - numTextDivs: this.textDivs.length - }); + if (rect2.width === 0 && rect2.height === 0) { + return -1; + } + const top1 = rect1.y; + const bot1 = rect1.y + rect1.height; + const mid1 = rect1.y + rect1.height / 2; + const top2 = rect2.y; + const bot2 = rect2.y + rect2.height; + const mid2 = rect2.y + rect2.height / 2; + if (mid1 <= top2 && mid2 >= bot1) { + return -1; + } + if (mid2 <= top1 && mid1 >= bot2) { + return +1; + } + const centerX1 = rect1.x + rect1.width / 2; + const centerX2 = rect2.x + rect2.width / 2; + return centerX1 - centerX2; } - - render(timeout = 0) { - if (!(this.textContent || this.textContentStream) || this.renderingDone) { + enable() { + if (this.#enabled) { + throw new Error("TextAccessibilityManager is already enabled."); + } + if (!this.#textChildren) { + throw new Error("Text divs and strings have not been set."); + } + this.#enabled = true; + this.#textChildren = this.#textChildren.slice(); + this.#textChildren.sort(TextAccessibilityManager.#compareElementPositions); + if (this.#textNodes.size > 0) { + const textChildren = this.#textChildren; + for (const [id, nodeIndex] of this.#textNodes) { + const element = document.getElementById(id); + if (!element) { + this.#textNodes.delete(id); + continue; + } + this.#addIdToAriaOwns(id, textChildren[nodeIndex]); + } + } + for (const [element, isRemovable] of this.#waitingElements) { + this.addPointerInTextLayer(element, isRemovable); + } + this.#waitingElements.clear(); + } + disable() { + if (!this.#enabled) { return; } + this.#waitingElements.clear(); + this.#textChildren = null; + this.#enabled = false; + } + removePointerInTextLayer(element) { + if (!this.#enabled) { + this.#waitingElements.delete(element); + return; + } + const children = this.#textChildren; + if (!children || children.length === 0) { + return; + } + const { + id + } = element; + const nodeIndex = this.#textNodes.get(id); + if (nodeIndex === undefined) { + return; + } + const node = children[nodeIndex]; + this.#textNodes.delete(id); + let owns = node.getAttribute("aria-owns"); + if (owns?.includes(id)) { + owns = owns.split(" ").filter(x => x !== id).join(" "); + if (owns) { + node.setAttribute("aria-owns", owns); + } else { + node.removeAttribute("aria-owns"); + node.setAttribute("role", "presentation"); + } + } + } + #addIdToAriaOwns(id, node) { + const owns = node.getAttribute("aria-owns"); + if (!owns?.includes(id)) { + node.setAttribute("aria-owns", owns ? `${owns} ${id}` : id); + } + node.removeAttribute("role"); + } + addPointerInTextLayer(element, isRemovable) { + const { + id + } = element; + if (!id) { + return; + } + if (!this.#enabled) { + this.#waitingElements.set(element, isRemovable); + return; + } + if (isRemovable) { + this.removePointerInTextLayer(element); + } + const children = this.#textChildren; + if (!children || children.length === 0) { + return; + } + const index = (0, _ui_utils.binarySearchFirstItem)(children, node => TextAccessibilityManager.#compareElementPositions(element, node) < 0); + const nodeIndex = Math.max(0, index - 1); + this.#addIdToAriaOwns(id, children[nodeIndex]); + this.#textNodes.set(id, nodeIndex); + } + moveElementInDOM(container, element, contentElement, isRemovable) { + this.addPointerInTextLayer(contentElement, isRemovable); + if (!container.hasChildNodes()) { + container.append(element); + return; + } + const children = Array.from(container.childNodes).filter(node => node !== element); + if (children.length === 0) { + return; + } + const elementToCompare = contentElement || element; + const index = (0, _ui_utils.binarySearchFirstItem)(children, node => TextAccessibilityManager.#compareElementPositions(elementToCompare, node) < 0); + if (index === 0) { + children[0].before(element); + } else { + children[index - 1].after(element); + } + } +} +exports.TextAccessibilityManager = TextAccessibilityManager; - this.cancel(); - this.textDivs = []; - const textLayerFrag = document.createDocumentFragment(); - this.textLayerRenderTask = (0, _pdfjsLib.renderTextLayer)({ - textContent: this.textContent, - textContentStream: this.textContentStream, - container: textLayerFrag, - viewport: this.viewport, - textDivs: this.textDivs, - textContentItemsStr: this.textContentItemsStr, - timeout, - enhanceTextSelection: this.enhanceTextSelection - }); - this.textLayerRenderTask.promise.then(() => { - this.textLayerDiv.appendChild(textLayerFrag); +/***/ }), +/* 35 */ +/***/ ((__unused_webpack_module, exports) => { - this._finishRendering(); - this._updateMatches(); - }, function (reason) {}); +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TextHighlighter = void 0; +class TextHighlighter { + constructor({ + findController, + eventBus, + pageIndex + }) { + this.findController = findController; + this.matches = []; + this.eventBus = eventBus; + this.pageIdx = pageIndex; + this._onUpdateTextLayerMatches = null; + this.textDivs = null; + this.textContentItemsStr = null; + this.enabled = false; + } + setTextMapping(divs, texts) { + this.textDivs = divs; + this.textContentItemsStr = texts; + } + enable() { + if (!this.textDivs || !this.textContentItemsStr) { + throw new Error("Text divs and strings have not been set."); + } + if (this.enabled) { + throw new Error("TextHighlighter is already enabled."); + } + this.enabled = true; if (!this._onUpdateTextLayerMatches) { this._onUpdateTextLayerMatches = evt => { if (evt.pageIndex === this.pageIdx || evt.pageIndex === -1) { this._updateMatches(); } }; - this.eventBus._on("updatetextlayermatches", this._onUpdateTextLayerMatches); } + this._updateMatches(); } - - cancel() { - if (this.textLayerRenderTask) { - this.textLayerRenderTask.cancel(); - this.textLayerRenderTask = null; + disable() { + if (!this.enabled) { + return; } - + this.enabled = false; if (this._onUpdateTextLayerMatches) { this.eventBus._off("updatetextlayermatches", this._onUpdateTextLayerMatches); - this._onUpdateTextLayerMatches = null; } + this._updateMatches(true); } - - setTextContentStream(readableStream) { - this.cancel(); - this.textContentStream = readableStream; - } - - setTextContent(textContent) { - this.cancel(); - this.textContent = textContent; - } - _convertMatches(matches, matchesLength) { if (!matches) { return []; } - const { textContentItemsStr } = this; let i = 0, - iIndex = 0; + iIndex = 0; const end = textContentItemsStr.length - 1; const result = []; - for (let m = 0, mm = matches.length; m < mm; m++) { let matchIdx = matches[m]; - while (i !== end && matchIdx >= iIndex + textContentItemsStr[i].length) { iIndex += textContentItemsStr[i].length; i++; } - if (i === textContentItemsStr.length) { console.error("Could not find a matching mapping"); } - const match = { begin: { divIdx: i, @@ -12515,30 +11236,27 @@ class TextLayerBuilder { } }; matchIdx += matchesLength[m]; - while (i !== end && matchIdx > iIndex + textContentItemsStr[i].length) { iIndex += textContentItemsStr[i].length; i++; } - match.end = { divIdx: i, offset: matchIdx - iIndex }; result.push(match); } - return result; } - _renderMatches(matches) { if (matches.length === 0) { return; } - const { findController, - pageIdx, + pageIdx + } = this; + const { textContentItemsStr, textDivs } = this; @@ -12550,72 +11268,72 @@ class TextLayerBuilder { divIdx: -1, offset: undefined }; - function beginText(begin, className) { const divIdx = begin.divIdx; textDivs[divIdx].textContent = ""; return appendTextToDiv(divIdx, 0, begin.offset, className); } - function appendTextToDiv(divIdx, fromOffset, toOffset, className) { - const div = textDivs[divIdx]; + let div = textDivs[divIdx]; + if (div.nodeType === Node.TEXT_NODE) { + const span = document.createElement("span"); + div.before(span); + span.append(div); + textDivs[divIdx] = span; + div = span; + } const content = textContentItemsStr[divIdx].substring(fromOffset, toOffset); const node = document.createTextNode(content); - if (className) { const span = document.createElement("span"); span.className = `${className} appended`; - span.appendChild(node); - div.appendChild(span); + span.append(node); + div.append(span); return className.includes("selected") ? span.offsetLeft : 0; } - - div.appendChild(node); + div.append(node); return 0; } - let i0 = selectedMatchIdx, - i1 = i0 + 1; - + i1 = i0 + 1; if (highlightAll) { i0 = 0; i1 = matches.length; } else if (!isSelectedPage) { return; } - + let lastDivIdx = -1; + let lastOffset = -1; for (let i = i0; i < i1; i++) { const match = matches[i]; const begin = match.begin; + if (begin.divIdx === lastDivIdx && begin.offset === lastOffset) { + continue; + } + lastDivIdx = begin.divIdx; + lastOffset = begin.offset; const end = match.end; const isSelected = isSelectedPage && i === selectedMatchIdx; const highlightSuffix = isSelected ? " selected" : ""; let selectedLeft = 0; - if (!prevEnd || begin.divIdx !== prevEnd.divIdx) { if (prevEnd !== null) { appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset); } - beginText(begin); } else { appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset); } - if (begin.divIdx === end.divIdx) { selectedLeft = appendTextToDiv(begin.divIdx, begin.offset, end.offset, "highlight" + highlightSuffix); } else { selectedLeft = appendTextToDiv(begin.divIdx, begin.offset, infinity.offset, "highlight begin" + highlightSuffix); - for (let n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) { textDivs[n0].className = "highlight middle" + highlightSuffix; } - beginText(end, "highlight end" + highlightSuffix); } - prevEnd = end; - if (isSelected) { findController.scrollMatchIntoView({ element: textDivs[begin.divIdx], @@ -12625,126 +11343,46 @@ class TextLayerBuilder { }); } } - if (prevEnd) { appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset); } } - - _updateMatches() { - if (!this.renderingDone) { + _updateMatches(reset = false) { + if (!this.enabled && !reset) { return; } - const { findController, matches, - pageIdx, + pageIdx + } = this; + const { textContentItemsStr, textDivs } = this; let clearedUntilDivIdx = -1; - - for (let i = 0, ii = matches.length; i < ii; i++) { - const match = matches[i]; + for (const match of matches) { const begin = Math.max(clearedUntilDivIdx, match.begin.divIdx); - for (let n = begin, end = match.end.divIdx; n <= end; n++) { const div = textDivs[n]; div.textContent = textContentItemsStr[n]; div.className = ""; } - clearedUntilDivIdx = match.end.divIdx + 1; } - - if (!findController?.highlightMatches) { + if (!findController?.highlightMatches || reset) { return; } - const pageMatches = findController.pageMatches[pageIdx] || null; const pageMatchesLength = findController.pageMatchesLength[pageIdx] || null; this.matches = this._convertMatches(pageMatches, pageMatchesLength); - this._renderMatches(this.matches); } - - _bindMouse() { - const div = this.textLayerDiv; - let expandDivsTimer = null; - div.addEventListener("mousedown", evt => { - if (this.enhanceTextSelection && this.textLayerRenderTask) { - this.textLayerRenderTask.expandTextDivs(true); - - if (expandDivsTimer) { - clearTimeout(expandDivsTimer); - expandDivsTimer = null; - } - - return; - } - - const end = div.querySelector(".endOfContent"); - - if (!end) { - return; - } - - let adjustTop = evt.target !== div; - adjustTop = adjustTop && window.getComputedStyle(end).getPropertyValue("-moz-user-select") !== "none"; - - if (adjustTop) { - const divBounds = div.getBoundingClientRect(); - const r = Math.max(0, (evt.pageY - divBounds.top) / divBounds.height); - end.style.top = (r * 100).toFixed(2) + "%"; - } - - end.classList.add("active"); - }); - div.addEventListener("mouseup", () => { - if (this.enhanceTextSelection && this.textLayerRenderTask) { - expandDivsTimer = setTimeout(() => { - if (this.textLayerRenderTask) { - this.textLayerRenderTask.expandTextDivs(false); - } - - expandDivsTimer = null; - }, EXPAND_DIVS_TIMEOUT); - return; - } - - const end = div.querySelector(".endOfContent"); - - if (!end) { - return; - } - - end.style.top = ""; - end.classList.remove("active"); - }); - } - } - -exports.TextLayerBuilder = TextLayerBuilder; - -class DefaultTextLayerFactory { - createTextLayerBuilder(textLayerDiv, pageIndex, viewport, enhanceTextSelection = false, eventBus) { - return new TextLayerBuilder({ - textLayerDiv, - pageIndex, - viewport, - enhanceTextSelection, - eventBus - }); - } - -} - -exports.DefaultTextLayerFactory = DefaultTextLayerFactory; +exports.TextHighlighter = TextHighlighter; /***/ }), -/* 34 */ +/* 36 */ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { @@ -12752,108 +11390,237 @@ exports.DefaultTextLayerFactory = DefaultTextLayerFactory; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.XfaLayerBuilder = exports.DefaultXfaLayerFactory = void 0; +exports.TextLayerBuilder = void 0; +var _pdfjsLib = __webpack_require__(4); +var _ui_utils = __webpack_require__(3); +class TextLayerBuilder { + #enablePermissions = false; + #rotation = 0; + #scale = 0; + #textContentSource = null; + constructor({ + highlighter = null, + accessibilityManager = null, + isOffscreenCanvasSupported = true, + enablePermissions = false + }) { + this.textContentItemsStr = []; + this.renderingDone = false; + this.textDivs = []; + this.textDivProperties = new WeakMap(); + this.textLayerRenderTask = null; + this.highlighter = highlighter; + this.accessibilityManager = accessibilityManager; + this.isOffscreenCanvasSupported = isOffscreenCanvasSupported; + this.#enablePermissions = enablePermissions === true; + this.div = document.createElement("div"); + this.div.className = "textLayer"; + this.hide(); + } + #finishRendering() { + this.renderingDone = true; + const endOfContent = document.createElement("div"); + endOfContent.className = "endOfContent"; + this.div.append(endOfContent); + this.#bindMouse(); + } + get numTextDivs() { + return this.textDivs.length; + } + async render(viewport) { + if (!this.#textContentSource) { + throw new Error('No "textContentSource" parameter specified.'); + } + const scale = viewport.scale * (globalThis.devicePixelRatio || 1); + const { + rotation + } = viewport; + if (this.renderingDone) { + const mustRotate = rotation !== this.#rotation; + const mustRescale = scale !== this.#scale; + if (mustRotate || mustRescale) { + this.hide(); + (0, _pdfjsLib.updateTextLayer)({ + container: this.div, + viewport, + textDivs: this.textDivs, + textDivProperties: this.textDivProperties, + isOffscreenCanvasSupported: this.isOffscreenCanvasSupported, + mustRescale, + mustRotate + }); + this.#scale = scale; + this.#rotation = rotation; + } + this.show(); + return; + } + this.cancel(); + this.highlighter?.setTextMapping(this.textDivs, this.textContentItemsStr); + this.accessibilityManager?.setTextMapping(this.textDivs); + this.textLayerRenderTask = (0, _pdfjsLib.renderTextLayer)({ + textContentSource: this.#textContentSource, + container: this.div, + viewport, + textDivs: this.textDivs, + textDivProperties: this.textDivProperties, + textContentItemsStr: this.textContentItemsStr, + isOffscreenCanvasSupported: this.isOffscreenCanvasSupported + }); + await this.textLayerRenderTask.promise; + this.#finishRendering(); + this.#scale = scale; + this.#rotation = rotation; + this.show(); + this.accessibilityManager?.enable(); + } + hide() { + if (!this.div.hidden) { + this.highlighter?.disable(); + this.div.hidden = true; + } + } + show() { + if (this.div.hidden && this.renderingDone) { + this.div.hidden = false; + this.highlighter?.enable(); + } + } + cancel() { + if (this.textLayerRenderTask) { + this.textLayerRenderTask.cancel(); + this.textLayerRenderTask = null; + } + this.highlighter?.disable(); + this.accessibilityManager?.disable(); + this.textContentItemsStr.length = 0; + this.textDivs.length = 0; + this.textDivProperties = new WeakMap(); + } + setTextContentSource(source) { + this.cancel(); + this.#textContentSource = source; + } + #bindMouse() { + const { + div + } = this; + div.addEventListener("mousedown", evt => { + const end = div.querySelector(".endOfContent"); + if (!end) { + return; + } + let adjustTop = evt.target !== div; + adjustTop &&= getComputedStyle(end).getPropertyValue("-moz-user-select") !== "none"; + if (adjustTop) { + const divBounds = div.getBoundingClientRect(); + const r = Math.max(0, (evt.pageY - divBounds.top) / divBounds.height); + end.style.top = (r * 100).toFixed(2) + "%"; + } + end.classList.add("active"); + }); + div.addEventListener("mouseup", () => { + const end = div.querySelector(".endOfContent"); + if (!end) { + return; + } + end.style.top = ""; + end.classList.remove("active"); + }); + div.addEventListener("copy", event => { + if (!this.#enablePermissions) { + const selection = document.getSelection(); + event.clipboardData.setData("text/plain", (0, _ui_utils.removeNullCharacters)((0, _pdfjsLib.normalizeUnicode)(selection.toString()))); + } + event.preventDefault(); + event.stopPropagation(); + }); + } +} +exports.TextLayerBuilder = TextLayerBuilder; -var _pdfjsLib = __webpack_require__(5); +/***/ }), +/* 37 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XfaLayerBuilder = void 0; +var _pdfjsLib = __webpack_require__(4); class XfaLayerBuilder { constructor({ pageDiv, pdfPage, - xfaHtml, - annotationStorage + annotationStorage = null, + linkService, + xfaHtml = null }) { this.pageDiv = pageDiv; this.pdfPage = pdfPage; - this.xfaHtml = xfaHtml; this.annotationStorage = annotationStorage; + this.linkService = linkService; + this.xfaHtml = xfaHtml; this.div = null; this._cancelled = false; } - - render(viewport, intent = "display") { + async render(viewport, intent = "display") { if (intent === "print") { const parameters = { viewport: viewport.clone({ dontFlip: true }), div: this.div, - xfa: this.xfaHtml, - page: null, + xfaHtml: this.xfaHtml, annotationStorage: this.annotationStorage, + linkService: this.linkService, intent }; const div = document.createElement("div"); - this.pageDiv.appendChild(div); + this.pageDiv.append(div); parameters.div = div; - - _pdfjsLib.XfaLayer.render(parameters); - - return Promise.resolve(); + return _pdfjsLib.XfaLayer.render(parameters); } - - return this.pdfPage.getXfa().then(xfa => { - if (this._cancelled) { - return; - } - - const parameters = { - viewport: viewport.clone({ - dontFlip: true - }), - div: this.div, - xfa, - page: this.pdfPage, - annotationStorage: this.annotationStorage, - intent + const xfaHtml = await this.pdfPage.getXfa(); + if (this._cancelled || !xfaHtml) { + return { + textDivs: [] }; - - if (this.div) { - _pdfjsLib.XfaLayer.update(parameters); - } else { - this.div = document.createElement("div"); - this.pageDiv.appendChild(this.div); - parameters.div = this.div; - - _pdfjsLib.XfaLayer.render(parameters); - } - }).catch(error => { - console.error(error); - }); + } + const parameters = { + viewport: viewport.clone({ + dontFlip: true + }), + div: this.div, + xfaHtml, + annotationStorage: this.annotationStorage, + linkService: this.linkService, + intent + }; + if (this.div) { + return _pdfjsLib.XfaLayer.update(parameters); + } + this.div = document.createElement("div"); + this.pageDiv.append(this.div); + parameters.div = this.div; + return _pdfjsLib.XfaLayer.render(parameters); } - cancel() { this._cancelled = true; } - hide() { if (!this.div) { return; } - this.div.hidden = true; } - } - exports.XfaLayerBuilder = XfaLayerBuilder; -class DefaultXfaLayerFactory { - createXfaLayerBuilder(pageDiv, pdfPage, annotationStorage = null, xfaHtml = null) { - return new XfaLayerBuilder({ - pageDiv, - pdfPage, - annotationStorage, - xfaHtml - }); - } - -} - -exports.DefaultXfaLayerFactory = DefaultXfaLayerFactory; - /***/ }), -/* 35 */ +/* 38 */ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { @@ -12862,26 +11629,16 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.SecondaryToolbar = void 0; - -var _ui_utils = __webpack_require__(4); - -var _pdf_cursor_tools = __webpack_require__(6); - -var _pdf_single_page_viewer = __webpack_require__(36); - +var _ui_utils = __webpack_require__(3); +var _pdf_viewer = __webpack_require__(28); class SecondaryToolbar { - constructor(options, mainContainer, eventBus) { + constructor(options, eventBus, externalServices) { this.toolbar = options.toolbar; this.toggleButton = options.toggleButton; - this.toolbarButtonContainer = options.toolbarButtonContainer; this.buttons = [{ element: options.presentationModeButton, eventName: "presentationmode", close: true - }, { - element: options.openFileButton, - eventName: "openfile", - close: true }, { element: options.printButton, eventName: "print", @@ -12914,14 +11671,21 @@ class SecondaryToolbar { element: options.cursorSelectToolButton, eventName: "switchcursortool", eventDetails: { - tool: _pdf_cursor_tools.CursorTool.SELECT + tool: _ui_utils.CursorTool.SELECT }, close: true }, { element: options.cursorHandToolButton, eventName: "switchcursortool", eventDetails: { - tool: _pdf_cursor_tools.CursorTool.HAND + tool: _ui_utils.CursorTool.HAND + }, + close: true + }, { + element: options.scrollPageButton, + eventName: "switchscrollmode", + eventDetails: { + mode: _ui_utils.ScrollMode.PAGE }, close: true }, { @@ -12971,75 +11735,53 @@ class SecondaryToolbar { eventName: "documentproperties", close: true }]; + this.buttons.push({ + element: options.openFileButton, + eventName: "openfile", + close: true + }); this.items = { firstPage: options.firstPageButton, lastPage: options.lastPageButton, pageRotateCw: options.pageRotateCwButton, pageRotateCcw: options.pageRotateCcwButton }; - this.mainContainer = mainContainer; this.eventBus = eventBus; + this.externalServices = externalServices; this.opened = false; - this.containerHeight = null; - this.previousContainerHeight = null; + this.#bindClickListeners(); + this.#bindCursorToolsListener(options); + this.#bindScrollModeListener(options); + this.#bindSpreadModeListener(options); this.reset(); - - this._bindClickListeners(); - - this._bindCursorToolsListener(options); - - this._bindScrollModeListener(options); - - this._bindSpreadModeListener(options); - - this.eventBus._on("resize", this._setMaxHeight.bind(this)); - - this.eventBus._on("baseviewerinit", evt => { - if (evt.source instanceof _pdf_single_page_viewer.PDFSinglePageViewer) { - this.toolbarButtonContainer.classList.add("hiddenScrollModeButtons", "hiddenSpreadModeButtons"); - } else { - this.toolbarButtonContainer.classList.remove("hiddenScrollModeButtons", "hiddenSpreadModeButtons"); - } - }); } - get isOpen() { return this.opened; } - setPageNumber(pageNumber) { this.pageNumber = pageNumber; - - this._updateUIState(); + this.#updateUIState(); } - setPagesCount(pagesCount) { this.pagesCount = pagesCount; - - this._updateUIState(); + this.#updateUIState(); } - reset() { this.pageNumber = 0; this.pagesCount = 0; - - this._updateUIState(); - + this.#updateUIState(); this.eventBus.dispatch("secondarytoolbarreset", { source: this }); } - - _updateUIState() { + #updateUIState() { this.items.firstPage.disabled = this.pageNumber <= 1; this.items.lastPage.disabled = this.pageNumber >= this.pagesCount; this.items.pageRotateCw.disabled = this.pagesCount === 0; this.items.pageRotateCcw.disabled = this.pagesCount === 0; } - - _bindClickListeners() { + #bindClickListeners() { this.toggleButton.addEventListener("click", this.toggle.bind(this)); - for (const { element, eventName, @@ -13048,48 +11790,61 @@ class SecondaryToolbar { } of this.buttons) { element.addEventListener("click", evt => { if (eventName !== null) { - const details = { - source: this - }; - - for (const property in eventDetails) { - details[property] = eventDetails[property]; - } - - this.eventBus.dispatch(eventName, details); + this.eventBus.dispatch(eventName, { + source: this, + ...eventDetails + }); } - if (close) { this.close(); } + this.externalServices.reportTelemetry({ + type: "buttons", + data: { + id: element.id + } + }); }); } } - - _bindCursorToolsListener(buttons) { - this.eventBus._on("cursortoolchanged", function ({ + #bindCursorToolsListener({ + cursorSelectToolButton, + cursorHandToolButton + }) { + this.eventBus._on("cursortoolchanged", ({ tool - }) { - buttons.cursorSelectToolButton.classList.toggle("toggled", tool === _pdf_cursor_tools.CursorTool.SELECT); - buttons.cursorHandToolButton.classList.toggle("toggled", tool === _pdf_cursor_tools.CursorTool.HAND); + }) => { + (0, _ui_utils.toggleCheckedBtn)(cursorSelectToolButton, tool === _ui_utils.CursorTool.SELECT); + (0, _ui_utils.toggleCheckedBtn)(cursorHandToolButton, tool === _ui_utils.CursorTool.HAND); }); } - - _bindScrollModeListener(buttons) { - function scrollModeChanged({ + #bindScrollModeListener({ + scrollPageButton, + scrollVerticalButton, + scrollHorizontalButton, + scrollWrappedButton, + spreadNoneButton, + spreadOddButton, + spreadEvenButton + }) { + const scrollModeChanged = ({ mode - }) { - buttons.scrollVerticalButton.classList.toggle("toggled", mode === _ui_utils.ScrollMode.VERTICAL); - buttons.scrollHorizontalButton.classList.toggle("toggled", mode === _ui_utils.ScrollMode.HORIZONTAL); - buttons.scrollWrappedButton.classList.toggle("toggled", mode === _ui_utils.ScrollMode.WRAPPED); - const isScrollModeHorizontal = mode === _ui_utils.ScrollMode.HORIZONTAL; - buttons.spreadNoneButton.disabled = isScrollModeHorizontal; - buttons.spreadOddButton.disabled = isScrollModeHorizontal; - buttons.spreadEvenButton.disabled = isScrollModeHorizontal; - } - + }) => { + (0, _ui_utils.toggleCheckedBtn)(scrollPageButton, mode === _ui_utils.ScrollMode.PAGE); + (0, _ui_utils.toggleCheckedBtn)(scrollVerticalButton, mode === _ui_utils.ScrollMode.VERTICAL); + (0, _ui_utils.toggleCheckedBtn)(scrollHorizontalButton, mode === _ui_utils.ScrollMode.HORIZONTAL); + (0, _ui_utils.toggleCheckedBtn)(scrollWrappedButton, mode === _ui_utils.ScrollMode.WRAPPED); + const forceScrollModePage = this.pagesCount > _pdf_viewer.PagesCountLimit.FORCE_SCROLL_MODE_PAGE; + scrollPageButton.disabled = forceScrollModePage; + scrollVerticalButton.disabled = forceScrollModePage; + scrollHorizontalButton.disabled = forceScrollModePage; + scrollWrappedButton.disabled = forceScrollModePage; + const isHorizontal = mode === _ui_utils.ScrollMode.HORIZONTAL; + spreadNoneButton.disabled = isHorizontal; + spreadOddButton.disabled = isHorizontal; + spreadEvenButton.disabled = isHorizontal; + }; this.eventBus._on("scrollmodechanged", scrollModeChanged); - this.eventBus._on("secondarytoolbarreset", evt => { if (evt.source === this) { scrollModeChanged({ @@ -13098,18 +11853,19 @@ class SecondaryToolbar { } }); } - - _bindSpreadModeListener(buttons) { - function spreadModeChanged({ + #bindSpreadModeListener({ + spreadNoneButton, + spreadOddButton, + spreadEvenButton + }) { + const spreadModeChanged = ({ mode - }) { - buttons.spreadNoneButton.classList.toggle("toggled", mode === _ui_utils.SpreadMode.NONE); - buttons.spreadOddButton.classList.toggle("toggled", mode === _ui_utils.SpreadMode.ODD); - buttons.spreadEvenButton.classList.toggle("toggled", mode === _ui_utils.SpreadMode.EVEN); - } - + }) => { + (0, _ui_utils.toggleCheckedBtn)(spreadNoneButton, mode === _ui_utils.SpreadMode.NONE); + (0, _ui_utils.toggleCheckedBtn)(spreadOddButton, mode === _ui_utils.SpreadMode.ODD); + (0, _ui_utils.toggleCheckedBtn)(spreadEvenButton, mode === _ui_utils.SpreadMode.EVEN); + }; this.eventBus._on("spreadmodechanged", spreadModeChanged); - this.eventBus._on("secondarytoolbarreset", evt => { if (evt.source === this) { spreadModeChanged({ @@ -13118,32 +11874,20 @@ class SecondaryToolbar { } }); } - open() { if (this.opened) { return; } - this.opened = true; - - this._setMaxHeight(); - - this.toggleButton.classList.add("toggled"); - this.toggleButton.setAttribute("aria-expanded", "true"); - this.toolbar.classList.remove("hidden"); + (0, _ui_utils.toggleExpandedBtn)(this.toggleButton, true, this.toolbar); } - close() { if (!this.opened) { return; } - this.opened = false; - this.toolbar.classList.add("hidden"); - this.toggleButton.classList.remove("toggled"); - this.toggleButton.setAttribute("aria-expanded", "false"); + (0, _ui_utils.toggleExpandedBtn)(this.toggleButton, false, this.toolbar); } - toggle() { if (this.opened) { this.close(); @@ -13151,157 +11895,11 @@ class SecondaryToolbar { this.open(); } } - - _setMaxHeight() { - if (!this.opened) { - return; - } - - this.containerHeight = this.mainContainer.clientHeight; - - if (this.containerHeight === this.previousContainerHeight) { - return; - } - - this.toolbarButtonContainer.style.maxHeight = `${this.containerHeight - _ui_utils.SCROLLBAR_PADDING}px`; - this.previousContainerHeight = this.containerHeight; - } - } - exports.SecondaryToolbar = SecondaryToolbar; /***/ }), -/* 36 */ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.PDFSinglePageViewer = void 0; - -var _base_viewer = __webpack_require__(28); - -var _pdfjsLib = __webpack_require__(5); - -class PDFSinglePageViewer extends _base_viewer.BaseViewer { - constructor(options) { - super(options); - - this.eventBus._on("pagesinit", evt => { - this._ensurePageViewVisible(); - }); - } - - get _viewerElement() { - return (0, _pdfjsLib.shadow)(this, "_viewerElement", this._shadowViewer); - } - - get _pageWidthScaleFactor() { - return 1; - } - - _resetView() { - super._resetView(); - - this._previousPageNumber = 1; - this._shadowViewer = document.createDocumentFragment(); - this._updateScrollDown = null; - } - - _ensurePageViewVisible() { - const pageView = this._pages[this._currentPageNumber - 1]; - const previousPageView = this._pages[this._previousPageNumber - 1]; - const viewerNodes = this.viewer.childNodes; - - switch (viewerNodes.length) { - case 0: - this.viewer.appendChild(pageView.div); - break; - - case 1: - if (viewerNodes[0] !== previousPageView.div) { - throw new Error("_ensurePageViewVisible: Unexpected previously visible page."); - } - - if (pageView === previousPageView) { - break; - } - - this._shadowViewer.appendChild(previousPageView.div); - - this.viewer.appendChild(pageView.div); - this.container.scrollTop = 0; - break; - - default: - throw new Error("_ensurePageViewVisible: Only one page should be visible at a time."); - } - - this._previousPageNumber = this._currentPageNumber; - } - - _scrollUpdate() { - if (this._updateScrollDown) { - this._updateScrollDown(); - } - - super._scrollUpdate(); - } - - _scrollIntoView({ - pageDiv, - pageSpot = null, - pageNumber = null - }) { - if (pageNumber) { - this._setCurrentPageNumber(pageNumber); - } - - const scrolledDown = this._currentPageNumber >= this._previousPageNumber; - - this._ensurePageViewVisible(); - - this.update(); - - super._scrollIntoView({ - pageDiv, - pageSpot, - pageNumber - }); - - this._updateScrollDown = () => { - this.scroll.down = scrolledDown; - this._updateScrollDown = null; - }; - } - - _getVisiblePages() { - return this._getCurrentVisiblePage(); - } - - _updateHelper(visiblePages) {} - - get _isScrollModeHorizontal() { - return (0, _pdfjsLib.shadow)(this, "_isScrollModeHorizontal", false); - } - - _updateScrollMode() {} - - _updateSpreadMode() {} - - _getPageAdvance() { - return 1; - } - -} - -exports.PDFSinglePageViewer = PDFSinglePageViewer; - -/***/ }), -/* 37 */ +/* 39 */ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { @@ -13310,14 +11908,11 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Toolbar = void 0; - -var _ui_utils = __webpack_require__(4); - +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); const PAGE_NUMBER_LOADING_INDICATOR = "visiblePageIsLoading"; -const SCALE_SELECT_CONTAINER_WIDTH = 140; -const SCALE_SELECT_WIDTH = 162; - class Toolbar { + #wasLocalized = false; constructor(options, eventBus, l10n) { this.toolbar = options.container; this.eventBus = eventBus; @@ -13334,61 +11929,67 @@ class Toolbar { }, { element: options.zoomOut, eventName: "zoomout" - }, { - element: options.openFile, - eventName: "openfile" }, { element: options.print, eventName: "print" - }, { - element: options.presentationModeButton, - eventName: "presentationmode" }, { element: options.download, eventName: "download" }, { - element: options.viewBookmark, - eventName: null + element: options.editorFreeTextButton, + eventName: "switchannotationeditormode", + eventDetails: { + get mode() { + const { + classList + } = options.editorFreeTextButton; + return classList.contains("toggled") ? _pdfjsLib.AnnotationEditorType.NONE : _pdfjsLib.AnnotationEditorType.FREETEXT; + } + } + }, { + element: options.editorInkButton, + eventName: "switchannotationeditormode", + eventDetails: { + get mode() { + const { + classList + } = options.editorInkButton; + return classList.contains("toggled") ? _pdfjsLib.AnnotationEditorType.NONE : _pdfjsLib.AnnotationEditorType.INK; + } + } }]; + this.buttons.push({ + element: options.openFile, + eventName: "openfile" + }); this.items = { numPages: options.numPages, pageNumber: options.pageNumber, - scaleSelectContainer: options.scaleSelectContainer, scaleSelect: options.scaleSelect, customScaleOption: options.customScaleOption, previous: options.previous, next: options.next, - restoreToAuto: options.restoreToAuto, zoomIn: options.zoomIn, zoomOut: options.zoomOut }; - this._wasLocalized = false; + this.#bindListeners(options); this.reset(); - - this._bindListeners(); } - setPageNumber(pageNumber, pageLabel) { this.pageNumber = pageNumber; this.pageLabel = pageLabel; - - this._updateUIState(false); + this.#updateUIState(false); } - setPagesCount(pagesCount, hasPageLabels) { this.pagesCount = pagesCount; this.hasPageLabels = hasPageLabels; - - this._updateUIState(true); + this.#updateUIState(true); } - setPageScale(pageScaleValue, pageScale) { this.pageScaleValue = (pageScaleValue || pageScale).toString(); this.pageScale = pageScale; - - this._updateUIState(false); + this.#updateUIState(false); } - reset() { this.pageNumber = 0; this.pageLabel = null; @@ -13396,33 +11997,32 @@ class Toolbar { this.pagesCount = 0; this.pageScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; this.pageScale = _ui_utils.DEFAULT_SCALE; - - this._updateUIState(true); - + this.#updateUIState(true); this.updateLoadingIndicatorState(); + this.eventBus.dispatch("toolbarreset", { + source: this + }); } - - _bindListeners() { + #bindListeners(options) { const { pageNumber, - scaleSelect, - restoreToAuto + scaleSelect } = this.items; const self = this; - for (const { element, - eventName + eventName, + eventDetails } of this.buttons) { element.addEventListener("click", evt => { if (eventName !== null) { this.eventBus.dispatch(eventName, { - source: this + source: this, + ...eventDetails }); } }); } - pageNumber.addEventListener("click", function () { this.select(); }); @@ -13436,7 +12036,6 @@ class Toolbar { if (this.value === "custom") { return; } - self.eventBus.dispatch("scalechanged", { source: self, value: this.value @@ -13444,34 +12043,46 @@ class Toolbar { }); scaleSelect.addEventListener("click", function (evt) { const target = evt.target; - if (this.value === self.pageScaleValue && target.tagName.toUpperCase() === "OPTION") { this.blur(); } }); scaleSelect.oncontextmenu = _ui_utils.noContextMenuHandler; - - restoreToAuto.addEventListener("click", function () { - self.eventBus.dispatch("scalechanged", { - source: self, - value: 'auto' - }); - }); - this.eventBus._on("localized", () => { - this._wasLocalized = true; - - this._adjustScaleWidth(); - - this._updateUIState(true); + this.#wasLocalized = true; + this.#adjustScaleWidth(); + this.#updateUIState(true); + }); + this.#bindEditorToolsListener(options); + } + #bindEditorToolsListener({ + editorFreeTextButton, + editorFreeTextParamsToolbar, + editorInkButton, + editorInkParamsToolbar + }) { + const editorModeChanged = ({ + mode + }) => { + (0, _ui_utils.toggleCheckedBtn)(editorFreeTextButton, mode === _pdfjsLib.AnnotationEditorType.FREETEXT, editorFreeTextParamsToolbar); + (0, _ui_utils.toggleCheckedBtn)(editorInkButton, mode === _pdfjsLib.AnnotationEditorType.INK, editorInkParamsToolbar); + const isDisable = mode === _pdfjsLib.AnnotationEditorType.DISABLE; + editorFreeTextButton.disabled = isDisable; + editorInkButton.disabled = isDisable; + }; + this.eventBus._on("annotationeditormodechanged", editorModeChanged); + this.eventBus._on("toolbarreset", evt => { + if (evt.source === this) { + editorModeChanged({ + mode: _pdfjsLib.AnnotationEditorType.DISABLE + }); + } }); } - - _updateUIState(resetNumPages = false) { - if (!this._wasLocalized) { + #updateUIState(resetNumPages = false) { + if (!this.#wasLocalized) { return; } - const { pageNumber, pagesCount, @@ -13479,7 +12090,6 @@ class Toolbar { pageScale, items } = this; - if (resetNumPages) { if (this.hasPageLabels) { items.pageNumber.type = "text"; @@ -13491,10 +12101,8 @@ class Toolbar { items.numPages.textContent = msg; }); } - items.pageNumber.max = pagesCount; } - if (this.hasPageLabels) { items.pageNumber.value = this.pageLabel; this.l10n.get("page_of_pages", { @@ -13506,7 +12114,6 @@ class Toolbar { } else { items.pageNumber.value = pageNumber; } - items.previous.disabled = pageNumber <= 1; items.next.disabled = pageNumber >= pagesCount; items.zoomOut.disabled = pageScale <= _ui_utils.MIN_SCALE; @@ -13515,77 +12122,62 @@ class Toolbar { scale: Math.round(pageScale * 10000) / 100 }).then(msg => { let predefinedValueFound = false; - for (const option of items.scaleSelect.options) { if (option.value !== pageScaleValue) { option.selected = false; continue; } - option.selected = true; predefinedValueFound = true; } - if (!predefinedValueFound) { items.customScaleOption.textContent = msg; items.customScaleOption.selected = true; } }); } - updateLoadingIndicatorState(loading = false) { - const pageNumberInput = this.items.pageNumber; - pageNumberInput.classList.toggle(PAGE_NUMBER_LOADING_INDICATOR, loading); + const { + pageNumber + } = this.items; + pageNumber.classList.toggle(PAGE_NUMBER_LOADING_INDICATOR, loading); } - - async _adjustScaleWidth() { + async #adjustScaleWidth() { const { items, l10n } = this; const predefinedValuesPromise = Promise.all([l10n.get("page_scale_auto"), l10n.get("page_scale_actual"), l10n.get("page_scale_fit"), l10n.get("page_scale_width")]); - let canvas = document.createElement("canvas"); - canvas.mozOpaque = true; - let ctx = canvas.getContext("2d", { + await _ui_utils.animationStarted; + const style = getComputedStyle(items.scaleSelect); + const scaleSelectWidth = parseFloat(style.getPropertyValue("--scale-select-width")); + const canvas = document.createElement("canvas"); + const ctx = canvas.getContext("2d", { alpha: false }); - await _ui_utils.animationStarted; - const { - fontSize, - fontFamily - } = getComputedStyle(items.scaleSelect); - ctx.font = `${fontSize} ${fontFamily}`; + ctx.font = `${style.fontSize} ${style.fontFamily}`; let maxWidth = 0; - for (const predefinedValue of await predefinedValuesPromise) { const { width } = ctx.measureText(predefinedValue); - if (width > maxWidth) { maxWidth = width; } } - - const overflow = SCALE_SELECT_WIDTH - SCALE_SELECT_CONTAINER_WIDTH; - maxWidth += 2 * overflow; - - if (maxWidth > SCALE_SELECT_CONTAINER_WIDTH) { - items.scaleSelect.style.width = `${maxWidth + overflow}px`; - items.scaleSelectContainer.style.width = `${maxWidth}px`; + maxWidth += 0.3 * scaleSelectWidth; + if (maxWidth > scaleSelectWidth) { + const container = items.scaleSelect.parentNode; + container.style.setProperty("--scale-select-width", `${maxWidth}px`); } - canvas.width = 0; canvas.height = 0; - canvas = ctx = null; } - } - exports.Toolbar = Toolbar; /***/ }), -/* 38 */ +/* 40 */ /***/ ((__unused_webpack_module, exports) => { @@ -13595,7 +12187,6 @@ Object.defineProperty(exports, "__esModule", ({ })); exports.ViewHistory = void 0; const DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20; - class ViewHistory { constructor(fingerprint, cacheSize = DEFAULT_VIEW_HISTORY_CACHE_SIZE) { this.fingerprint = fingerprint; @@ -13603,145 +12194,67 @@ class ViewHistory { this._initializedPromise = this._readFromStorage().then(databaseStr => { const database = JSON.parse(databaseStr || "{}"); let index = -1; - if (!Array.isArray(database.files)) { database.files = []; } else { while (database.files.length >= this.cacheSize) { database.files.shift(); } - for (let i = 0, ii = database.files.length; i < ii; i++) { const branch = database.files[i]; - if (branch.fingerprint === this.fingerprint) { index = i; break; } } } - if (index === -1) { index = database.files.push({ fingerprint: this.fingerprint }) - 1; } - this.file = database.files[index]; this.database = database; }); } - async _writeToStorage() { const databaseStr = JSON.stringify(this.database); localStorage.setItem("pdfjs.history", databaseStr); } - async _readFromStorage() { return localStorage.getItem("pdfjs.history"); } - async set(name, val) { await this._initializedPromise; this.file[name] = val; return this._writeToStorage(); } - async setMultiple(properties) { await this._initializedPromise; - for (const name in properties) { this.file[name] = properties[name]; } - return this._writeToStorage(); } - async get(name, defaultValue) { await this._initializedPromise; const val = this.file[name]; return val !== undefined ? val : defaultValue; } - async getMultiple(properties) { await this._initializedPromise; const values = Object.create(null); - for (const name in properties) { const val = this.file[name]; values[name] = val !== undefined ? val : properties[name]; } - return values; } - } - exports.ViewHistory = ViewHistory; /***/ }), -/* 39 */ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.GenericCom = void 0; - -var _app = __webpack_require__(3); - -var _preferences = __webpack_require__(40); - -var _download_manager = __webpack_require__(41); - -var _genericl10n = __webpack_require__(42); - -var _generic_scripting = __webpack_require__(44); - -; -const GenericCom = {}; -exports.GenericCom = GenericCom; - -class GenericPreferences extends _preferences.BasePreferences { - async _writeToStorage(prefObj) { - localStorage.setItem("pdfjs.preferences", JSON.stringify(prefObj)); - } - - async _readFromStorage(prefObj) { - return JSON.parse(localStorage.getItem("pdfjs.preferences")); - } - -} - -class GenericExternalServices extends _app.DefaultExternalServices { - static createDownloadManager(options) { - return new _download_manager.DownloadManager(); - } - - static createPreferences() { - return new GenericPreferences(); - } - - static createL10n({ - locale = "en-US" - }) { - return new _genericl10n.GenericL10n(locale); - } - - static createScripting({ - sandboxBundleSrc - }) { - return new _generic_scripting.GenericScripting(sandboxBundleSrc); - } - -} - -_app.PDFViewerApplication.externalServices = GenericExternalServices; - -/***/ }), -/* 40 */ +/* 41 */ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { @@ -13750,85 +12263,79 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.BasePreferences = void 0; - -var _app_options = __webpack_require__(1); - +var _app_options = __webpack_require__(5); class BasePreferences { + #defaults = Object.freeze({ + "annotationEditorMode": 0, + "annotationMode": 2, + "cursorToolOnLoad": 0, + "defaultZoomDelay": 400, + "defaultZoomValue": "", + "disablePageLabels": false, + "enablePermissions": false, + "enablePrintAutoRotate": true, + "enableScripting": true, + "externalLinkTarget": 0, + "historyUpdateUrl": false, + "ignoreDestinationZoom": false, + "forcePageColors": false, + "pageColorsBackground": "Canvas", + "pageColorsForeground": "CanvasText", + "pdfBugEnabled": false, + "sidebarViewOnLoad": -1, + "scrollModeOnLoad": -1, + "spreadModeOnLoad": -1, + "textLayerMode": 1, + "useOnlyCssZoom": false, + "viewerCssTheme": 0, + "viewOnLoad": 0, + "disableAutoFetch": false, + "disableFontFace": false, + "disableRange": false, + "disableStream": false, + "enableXfa": true + }); + #prefs = Object.create(null); + #initializedPromise = null; constructor() { if (this.constructor === BasePreferences) { throw new Error("Cannot initialize BasePreferences."); } - - Object.defineProperty(this, "defaults", { - value: Object.freeze({ - "cursorToolOnLoad": 0, - "defaultZoomValue": "", - "disablePageLabels": false, - "enablePermissions": false, - "enablePrintAutoRotate": true, - "enableScripting": true, - "externalLinkTarget": 0, - "historyUpdateUrl": false, - "ignoreDestinationZoom": false, - "pdfBugEnabled": false, - "renderer": "canvas", - "renderInteractiveForms": true, - "sidebarViewOnLoad": -1, - "scrollModeOnLoad": -1, - "spreadModeOnLoad": -1, - "textLayerMode": 1, - "useOnlyCssZoom": false, - "viewerCssTheme": 0, - "viewOnLoad": 0, - "disableAutoFetch": false, - "disableFontFace": false, - "disableRange": false, - "disableStream": false, - "enableXfa": false - }), - writable: false, - enumerable: true, - configurable: false - }); - this.prefs = Object.create(null); - this._initializedPromise = this._readFromStorage(this.defaults).then(prefs => { - for (const name in this.defaults) { + this.#initializedPromise = this._readFromStorage(this.#defaults).then(prefs => { + for (const name in this.#defaults) { const prefValue = prefs?.[name]; - - if (typeof prefValue === typeof this.defaults[name]) { - this.prefs[name] = prefValue; + if (typeof prefValue === typeof this.#defaults[name]) { + this.#prefs[name] = prefValue; } } }); } - async _writeToStorage(prefObj) { throw new Error("Not implemented: _writeToStorage"); } - async _readFromStorage(prefObj) { throw new Error("Not implemented: _readFromStorage"); } - async reset() { - await this._initializedPromise; - this.prefs = Object.create(null); - return this._writeToStorage(this.defaults); + await this.#initializedPromise; + const prefs = this.#prefs; + this.#prefs = Object.create(null); + return this._writeToStorage(this.#defaults).catch(reason => { + this.#prefs = prefs; + throw reason; + }); } - async set(name, value) { - await this._initializedPromise; - const defaultValue = this.defaults[name]; - + await this.#initializedPromise; + const defaultValue = this.#defaults[name], + prefs = this.#prefs; if (defaultValue === undefined) { throw new Error(`Set preference: "${name}" is undefined.`); } else if (value === undefined) { throw new Error("Set preference: no value is specified."); } - - const valueType = typeof value; - const defaultType = typeof defaultValue; - + const valueType = typeof value, + defaultType = typeof defaultValue; if (valueType !== defaultType) { if (valueType === "number" && defaultType === "string") { value = value.toString(); @@ -13840,198 +12347,173 @@ class BasePreferences { throw new Error(`Set preference: "${value}" must be an integer.`); } } - - this.prefs[name] = value; - return this._writeToStorage(this.prefs); + this.#prefs[name] = value; + return this._writeToStorage(this.#prefs).catch(reason => { + this.#prefs = prefs; + throw reason; + }); } - async get(name) { - await this._initializedPromise; - const defaultValue = this.defaults[name], - prefValue = this.prefs[name]; - + await this.#initializedPromise; + const defaultValue = this.#defaults[name]; if (defaultValue === undefined) { throw new Error(`Get preference: "${name}" is undefined.`); } - - return prefValue !== undefined ? prefValue : defaultValue; + return this.#prefs[name] ?? defaultValue; } - async getAll() { - await this._initializedPromise; + await this.#initializedPromise; const obj = Object.create(null); - - for (const name in this.defaults) { - const prefValue = this.prefs[name]; - obj[name] = prefValue !== undefined ? prefValue : this.defaults[name]; + for (const name in this.#defaults) { + obj[name] = this.#prefs[name] ?? this.#defaults[name]; } - return obj; } - } - exports.BasePreferences = BasePreferences; -/***/ }), -/* 41 */ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.DownloadManager = void 0; - -var _pdfjsLib = __webpack_require__(5); - -var _viewer_compatibility = __webpack_require__(2); - -; - -function download(blobUrl, filename) { - const a = document.createElement("a"); - - if (!a.click) { - throw new Error('DownloadManager: "a.click()" is not supported.'); - } - - a.href = blobUrl; - a.target = "_parent"; - - if ("download" in a) { - a.download = filename; - } - - (document.body || document.documentElement).appendChild(a); - a.click(); - a.remove(); -} - -class DownloadManager { - constructor() { - this._openBlobUrls = new WeakMap(); - } - - downloadUrl(url, filename) { - if (!(0, _pdfjsLib.createValidAbsoluteUrl)(url, "http://example.com")) { - return; - } - - download(url + "#pdfjs.action=download", filename); - } - - downloadData(data, filename, contentType) { - const blobUrl = (0, _pdfjsLib.createObjectURL)(data, contentType, _viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL); - download(blobUrl, filename); - } - - openOrDownloadData(element, data, filename) { - const isPdfData = (0, _pdfjsLib.isPdfFile)(filename); - const contentType = isPdfData ? "application/pdf" : ""; - - if (isPdfData && !_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL) { - let blobUrl = this._openBlobUrls.get(element); - - if (!blobUrl) { - blobUrl = URL.createObjectURL(new Blob([data], { - type: contentType - })); - - this._openBlobUrls.set(element, blobUrl); - } - - let viewerUrl; - viewerUrl = "?file=" + encodeURIComponent(blobUrl + "#" + filename); - - try { - window.open(viewerUrl); - return true; - } catch (ex) { - console.error(`openOrDownloadData: ${ex}`); - URL.revokeObjectURL(blobUrl); - - this._openBlobUrls.delete(element); - } - } - - this.downloadData(data, filename, contentType); - return false; - } - - download(blob, url, filename, sourceEventType = "download") { - if (_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL) { - this.downloadUrl(url, filename); - return; - } - - const blobUrl = URL.createObjectURL(blob); - download(blobUrl, filename); - } - -} - -exports.DownloadManager = DownloadManager; - /***/ }), /* 42 */ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.DownloadManager = void 0; +var _pdfjsLib = __webpack_require__(4); +; +function download(blobUrl, filename) { + const a = document.createElement("a"); + if (!a.click) { + throw new Error('DownloadManager: "a.click()" is not supported.'); + } + a.href = blobUrl; + a.target = "_parent"; + if ("download" in a) { + a.download = filename; + } + (document.body || document.documentElement).append(a); + a.click(); + a.remove(); +} +class DownloadManager { + #openBlobUrls = new WeakMap(); + downloadUrl(url, filename, _options) { + if (!(0, _pdfjsLib.createValidAbsoluteUrl)(url, "http://example.com")) { + console.error(`downloadUrl - not a valid URL: ${url}`); + return; + } + download(url + "#pdfjs.action=download", filename); + } + downloadData(data, filename, contentType) { + const blobUrl = URL.createObjectURL(new Blob([data], { + type: contentType + })); + download(blobUrl, filename); + } + openOrDownloadData(element, data, filename) { + const isPdfData = (0, _pdfjsLib.isPdfFile)(filename); + const contentType = isPdfData ? "application/pdf" : ""; + if (isPdfData) { + let blobUrl = this.#openBlobUrls.get(element); + if (!blobUrl) { + blobUrl = URL.createObjectURL(new Blob([data], { + type: contentType + })); + this.#openBlobUrls.set(element, blobUrl); + } + let viewerUrl; + viewerUrl = "?file=" + encodeURIComponent(blobUrl + "#" + filename); + try { + window.open(viewerUrl); + return true; + } catch (ex) { + console.error(`openOrDownloadData: ${ex}`); + URL.revokeObjectURL(blobUrl); + this.#openBlobUrls.delete(element); + } + } + this.downloadData(data, filename, contentType); + return false; + } + download(blob, url, filename, _options) { + const blobUrl = URL.createObjectURL(blob); + download(blobUrl, filename); + } +} +exports.DownloadManager = DownloadManager; + +/***/ }), +/* 43 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + Object.defineProperty(exports, "__esModule", ({ value: true })); exports.GenericL10n = void 0; - -__webpack_require__(43); - -var _l10n_utils = __webpack_require__(30); - -const webL10n = document.webL10n; - +__webpack_require__(44); +var _l10n_utils = __webpack_require__(29); +const PARTIAL_LANG_CODES = { + en: "en-US", + es: "es-ES", + fy: "fy-NL", + ga: "ga-IE", + gu: "gu-IN", + hi: "hi-IN", + hy: "hy-AM", + nb: "nb-NO", + ne: "ne-NP", + nn: "nn-NO", + pa: "pa-IN", + pt: "pt-PT", + sv: "sv-SE", + zh: "zh-CN" +}; +function fixupLangCode(langCode) { + return PARTIAL_LANG_CODES[langCode?.toLowerCase()] || langCode; +} class GenericL10n { constructor(lang) { + const { + webL10n + } = document; this._lang = lang; this._ready = new Promise((resolve, reject) => { - webL10n.setLanguage((0, _l10n_utils.fixupLangCode)(lang), () => { + webL10n.setLanguage(fixupLangCode(lang), () => { resolve(webL10n); }); }); } - async getLanguage() { const l10n = await this._ready; return l10n.getLanguage(); } - async getDirection() { const l10n = await this._ready; return l10n.getDirection(); } - async get(key, args = null, fallback = (0, _l10n_utils.getL10nFallback)(key, args)) { const l10n = await this._ready; return l10n.get(key, args, fallback); } - async translate(element) { const l10n = await this._ready; return l10n.translate(element); } - } - exports.GenericL10n = GenericL10n; /***/ }), -/* 43 */ +/* 44 */ /***/ (() => { -document.webL10n = function (window, document, undefined) { +document.webL10n = function (window, document) { var gL10nData = {}; var gTextData = ''; var gTextProp = 'textContent'; @@ -14039,26 +12521,21 @@ document.webL10n = function (window, document, undefined) { var gMacros = {}; var gReadyState = 'loading'; var gAsyncResourceLoading = true; - function getL10nResourceLinks() { return document.querySelectorAll('link[type="application/l10n"]'); } - function getL10nDictionary() { var script = document.querySelector('script[type="application/l10n"]'); return script ? JSON.parse(script.innerHTML) : null; } - function getTranslatableChildren(element) { return element ? element.querySelectorAll('*[data-l10n-id]') : []; } - function getL10nAttributes(element) { if (!element) return {}; var l10nId = element.getAttribute('data-l10n-id'); var l10nArgs = element.getAttribute('data-l10n-args'); var args = {}; - if (l10nArgs) { try { args = JSON.parse(l10nArgs); @@ -14066,25 +12543,19 @@ document.webL10n = function (window, document, undefined) { console.warn('could not parse arguments for #' + l10nId); } } - return { id: l10nId, args: args }; } - function xhrLoadText(url, onSuccess, onFailure) { onSuccess = onSuccess || function _onSuccess(data) {}; - onFailure = onFailure || function _onFailure() {}; - var xhr = new XMLHttpRequest(); xhr.open('GET', url, gAsyncResourceLoading); - if (xhr.overrideMimeType) { xhr.overrideMimeType('text/plain; charset=utf-8'); } - xhr.onreadystatechange = function () { if (xhr.readyState == 4) { if (xhr.status == 200 || xhr.status === 0) { @@ -14094,25 +12565,20 @@ document.webL10n = function (window, document, undefined) { } } }; - xhr.onerror = onFailure; xhr.ontimeout = onFailure; - try { xhr.send(null); } catch (e) { onFailure(); } } - function parseResource(href, lang, successCallback, failureCallback) { var baseURL = href.replace(/[^\/]*$/, '') || './'; - function evalString(text) { if (text.lastIndexOf('\\') < 0) return text; return text.replace(/\\\\/g, '\\').replace(/\\n/g, '\n').replace(/\\r/g, '\r').replace(/\\t/g, '\t').replace(/\\b/g, '\b').replace(/\\f/g, '\f').replace(/\\{/g, '{').replace(/\\}/g, '}').replace(/\\"/g, '"').replace(/\\'/g, "'"); } - function parseProperties(text, parsedPropertiesCallback) { var dictionary = {}; var reBlank = /^\s*|\s*$/; @@ -14120,27 +12586,22 @@ document.webL10n = function (window, document, undefined) { var reSection = /^\s*\[(.*)\]\s*$/; var reImport = /^\s*@import\s+url\((.*)\)\s*$/i; var reSplit = /^([^=\s]*)\s*=\s*(.+)$/; - function parseRawLines(rawText, extendedSyntax, parsedRawLinesCallback) { var entries = rawText.replace(reBlank, '').split(/[\r\n]+/); var currentLang = '*'; var genericLang = lang.split('-', 1)[0]; var skipLang = false; var match = ''; - function nextEntry() { while (true) { if (!entries.length) { parsedRawLinesCallback(); return; } - var line = entries.shift(); if (reComment.test(line)) continue; - if (extendedSyntax) { match = reSection.exec(line); - if (match) { currentLang = match[1].toLowerCase(); skipLang = currentLang !== '*' && currentLang !== lang && currentLang !== genericLang; @@ -14148,26 +12609,20 @@ document.webL10n = function (window, document, undefined) { } else if (skipLang) { continue; } - match = reImport.exec(line); - if (match) { loadImport(baseURL + match[1], nextEntry); return; } } - var tmp = line.match(reSplit); - if (tmp && tmp.length == 3) { dictionary[tmp[1]] = evalString(tmp[2]); } } } - nextEntry(); } - function loadImport(url, callback) { xhrLoadText(url, function (content) { parseRawLines(content, false, callback); @@ -14176,20 +12631,17 @@ document.webL10n = function (window, document, undefined) { callback(); }); } - parseRawLines(text, true, function () { parsedPropertiesCallback(dictionary); }); } - xhrLoadText(href, function (response) { gTextData += response; parseProperties(response, function (data) { for (var key in data) { var id, - prop, - index = key.lastIndexOf('.'); - + prop, + index = key.lastIndexOf('.'); if (index > 0) { id = key.substring(0, index); prop = key.substring(index + 1); @@ -14197,46 +12649,35 @@ document.webL10n = function (window, document, undefined) { id = key; prop = gTextProp; } - if (!gL10nData[id]) { gL10nData[id] = {}; } - gL10nData[id][prop] = data[key]; } - if (successCallback) { successCallback(); } }); }, failureCallback); } - function loadLocale(lang, callback) { if (lang) { lang = lang.toLowerCase(); } - callback = callback || function _callback() {}; - clear(); gLanguage = lang; var langLinks = getL10nResourceLinks(); var langCount = langLinks.length; - if (langCount === 0) { var dict = getL10nDictionary(); - if (dict && dict.locales && dict.default_locale) { console.log('using the embedded JSON directory, early way out'); gL10nData = dict.locales[lang]; - if (!gL10nData) { var defaultLocale = dict.default_locale.toLowerCase(); - for (var anyCaseLang in dict.locales) { anyCaseLang = anyCaseLang.toLowerCase(); - if (anyCaseLang === lang) { gL10nData = dict.locales[lang]; break; @@ -14245,31 +12686,24 @@ document.webL10n = function (window, document, undefined) { } } } - callback(); } else { console.log('no resource to load, early way out'); } - gReadyState = 'complete'; return; } - var onResourceLoaded = null; var gResourceCount = 0; - onResourceLoaded = function () { gResourceCount++; - if (gResourceCount >= langCount) { callback(); gReadyState = 'complete'; } }; - function L10nResourceLink(link) { var href = link.href; - this.load = function (lang, callback) { parseResource(href, lang, callback, function () { console.warn(href + ' not found.'); @@ -14279,19 +12713,16 @@ document.webL10n = function (window, document, undefined) { }); }; } - for (var i = 0; i < langCount; i++) { var resource = new L10nResourceLink(langLinks[i]); resource.load(lang, onResourceLoaded); } } - function clear() { gL10nData = {}; gTextData = ''; gLanguage = ''; } - function getPluralRules(lang) { var locales2rules = { 'af': 3, @@ -14465,15 +12896,12 @@ document.webL10n = function (window, document, undefined) { 'zh': 0, 'zu': 3 }; - function isIn(n, list) { return list.indexOf(n) !== -1; } - function isBetween(n, start, end) { return start <= n && n <= end; } - var pluralRules = { '0': function (n) { return 'other'; @@ -14610,28 +13038,22 @@ document.webL10n = function (window, document, undefined) { } }; var index = locales2rules[lang.replace(/-.*$/, '')]; - if (!(index in pluralRules)) { console.warn('plural form unknown for [' + lang + ']'); return function () { return 'other'; }; } - return pluralRules[index]; } - gMacros.plural = function (str, param, key, prop) { var n = parseFloat(param); if (isNaN(n)) return str; if (prop != gTextProp) return str; - if (!gMacros._pluralRules) { gMacros._pluralRules = getPluralRules(gLanguage); } - var index = '[' + gMacros._pluralRules(n) + ']'; - if (n === 0 && key + '[zero]' in gL10nData) { str = gL10nData[key + '[zero]'][prop]; } else if (n == 1 && key + '[one]' in gL10nData) { @@ -14643,35 +13065,26 @@ document.webL10n = function (window, document, undefined) { } else if (key + '[other]' in gL10nData) { str = gL10nData[key + '[other]'][prop]; } - return str; }; - function getL10nData(key, args, fallback) { var data = gL10nData[key]; - if (!data) { console.warn('#' + key + ' is undefined.'); - if (!fallback) { return null; } - data = fallback; } - var rv = {}; - for (var prop in data) { var str = data[prop]; str = substIndexes(str, args, key, prop); str = substArguments(str, args, key); rv[prop] = str; } - return rv; } - function substIndexes(str, args, key, prop) { var reIndex = /\{\[\s*([a-zA-Z]+)\(([a-zA-Z]+)\)\s*\]\}/; var reMatch = reIndex.exec(str); @@ -14679,54 +13092,44 @@ document.webL10n = function (window, document, undefined) { var macroName = reMatch[1]; var paramName = reMatch[2]; var param; - if (args && paramName in args) { param = args[paramName]; } else if (paramName in gL10nData) { param = gL10nData[paramName]; } - if (macroName in gMacros) { var macro = gMacros[macroName]; str = macro(str, param, key, prop); } - return str; } - function substArguments(str, args, key) { var reArgs = /\{\{\s*(.+?)\s*\}\}/g; return str.replace(reArgs, function (matched_text, arg) { if (args && arg in args) { return args[arg]; } - if (arg in gL10nData) { return gL10nData[arg]; } - console.log('argument {{' + arg + '}} for #' + key + ' is undefined.'); return matched_text; }); } - function translateElement(element) { var l10n = getL10nAttributes(element); if (!l10n.id) return; var data = getL10nData(l10n.id, l10n.args); - if (!data) { console.warn('#' + l10n.id + ' is undefined.'); return; } - if (data[gTextProp]) { if (getChildElementCount(element) === 0) { element[gTextProp] = data[gTextProp]; } else { var children = element.childNodes; var found = false; - for (var i = 0, l = children.length; i < l; i++) { if (children[i].nodeType === 3 && /\S/.test(children[i].nodeValue)) { if (found) { @@ -14737,74 +13140,56 @@ document.webL10n = function (window, document, undefined) { } } } - if (!found) { var textNode = document.createTextNode(data[gTextProp]); - element.insertBefore(textNode, element.firstChild); + element.prepend(textNode); } } - delete data[gTextProp]; } - for (var k in data) { element[k] = data[k]; } } - function getChildElementCount(element) { if (element.children) { return element.children.length; } - if (typeof element.childElementCount !== 'undefined') { return element.childElementCount; } - var count = 0; - for (var i = 0; i < element.childNodes.length; i++) { count += element.nodeType === 1 ? 1 : 0; } - return count; } - function translateFragment(element) { element = element || document.documentElement; var children = getTranslatableChildren(element); var elementCount = children.length; - for (var i = 0; i < elementCount; i++) { translateElement(children[i]); } - translateElement(element); } - return { get: function (key, args, fallbackString) { var index = key.lastIndexOf('.'); var prop = gTextProp; - if (index > 0) { prop = key.substring(index + 1); key = key.substring(0, index); } - var fallback; - if (fallbackString) { fallback = {}; fallback[prop] = fallbackString; } - var data = getL10nData(key, args, fallback); - if (data && prop in data) { return data[prop]; } - return '{{' + key + '}}'; }, getData: function () { @@ -14848,7 +13233,7 @@ document.webL10n = function (window, document, undefined) { }(window, document); /***/ }), -/* 44 */ +/* 45 */ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { @@ -14856,29 +13241,26 @@ document.webL10n = function (window, document, undefined) { Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.docPropertiesLookup = docPropertiesLookup; exports.GenericScripting = void 0; - -var _pdfjsLib = __webpack_require__(5); - -async function docPropertiesLookup(pdfDocument) { +exports.docProperties = docProperties; +var _pdfjsLib = __webpack_require__(4); +async function docProperties(pdfDocument) { const url = "", - baseUrl = url.split("#")[0]; + baseUrl = url.split("#")[0]; let { info, metadata, contentDispositionFilename, contentLength } = await pdfDocument.getMetadata(); - if (!contentLength) { const { length } = await pdfDocument.getDownloadInfo(); contentLength = length; } - - return { ...info, + return { + ...info, baseURL: baseUrl, filesize: contentLength, filename: contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(url), @@ -14888,357 +13270,309 @@ async function docPropertiesLookup(pdfDocument) { URL: url }; } - class GenericScripting { constructor(sandboxBundleSrc) { this._ready = (0, _pdfjsLib.loadScript)(sandboxBundleSrc, true).then(() => { return window.pdfjsSandbox.QuickJSSandbox(); }); } - async createSandbox(data) { const sandbox = await this._ready; sandbox.create(data); } - async dispatchEventInSandbox(event) { const sandbox = await this._ready; - sandbox.dispatchEvent(event); + setTimeout(() => sandbox.dispatchEvent(event), 0); } - async destroySandbox() { const sandbox = await this._ready; sandbox.nukeSandbox(); } - } - exports.GenericScripting = GenericScripting; -/***/ }), -/* 45 */ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.PDFPrintService = PDFPrintService; - -var _app = __webpack_require__(3); - -var _print_utils = __webpack_require__(46); - -var _viewer_compatibility = __webpack_require__(2); - -let activeService = null; -let overlayManager = null; - -function renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size, printResolution, optionalContentConfigPromise) { - const scratchCanvas = activeService.scratchCanvas; - const PRINT_UNITS = printResolution / 72.0; - scratchCanvas.width = Math.floor(size.width * PRINT_UNITS); - scratchCanvas.height = Math.floor(size.height * PRINT_UNITS); - const ctx = scratchCanvas.getContext("2d"); - ctx.save(); - ctx.fillStyle = "rgb(255, 255, 255)"; - ctx.fillRect(0, 0, scratchCanvas.width, scratchCanvas.height); - ctx.restore(); - return pdfDocument.getPage(pageNumber).then(function (pdfPage) { - const renderContext = { - canvasContext: ctx, - transform: [PRINT_UNITS, 0, 0, PRINT_UNITS, 0, 0], - viewport: pdfPage.getViewport({ - scale: 1, - rotation: size.rotation - }), - intent: "print", - includeAnnotationStorage: true, - optionalContentConfigPromise - }; - return pdfPage.render(renderContext).promise; - }); -} - -function PDFPrintService(pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise = null, l10n) { - this.pdfDocument = pdfDocument; - this.pagesOverview = pagesOverview; - this.printContainer = printContainer; - this._printResolution = printResolution || 150; - this._optionalContentConfigPromise = optionalContentConfigPromise || pdfDocument.getOptionalContentConfig(); - this.l10n = l10n; - this.currentPage = -1; - this.scratchCanvas = document.createElement("canvas"); -} - -PDFPrintService.prototype = { - layout() { - this.throwIfInactive(); - const body = document.querySelector("body"); - body.setAttribute("data-pdfjsprinting", true); - const hasEqualPageSizes = this.pagesOverview.every(function (size) { - return size.width === this.pagesOverview[0].width && size.height === this.pagesOverview[0].height; - }, this); - - if (!hasEqualPageSizes) { - console.warn("Not all pages have the same size. The printed " + "result may be incorrect!"); - } - - this.pageStyleSheet = document.createElement("style"); - const pageSize = this.pagesOverview[0]; - this.pageStyleSheet.textContent = "@page { size: " + pageSize.width + "pt " + pageSize.height + "pt;}"; - body.appendChild(this.pageStyleSheet); - }, - - destroy() { - if (activeService !== this) { - return; - } - - this.printContainer.textContent = ""; - const body = document.querySelector("body"); - body.removeAttribute("data-pdfjsprinting"); - - if (this.pageStyleSheet) { - this.pageStyleSheet.remove(); - this.pageStyleSheet = null; - } - - this.scratchCanvas.width = this.scratchCanvas.height = 0; - this.scratchCanvas = null; - activeService = null; - ensureOverlay().then(function () { - if (overlayManager.active !== "printServiceOverlay") { - return; - } - - overlayManager.close("printServiceOverlay"); - }); - }, - - renderPages() { - if (this.pdfDocument.isPureXfa) { - (0, _print_utils.getXfaHtmlForPrinting)(this.printContainer, this.pdfDocument); - return Promise.resolve(); - } - - const pageCount = this.pagesOverview.length; - - const renderNextPage = (resolve, reject) => { - this.throwIfInactive(); - - if (++this.currentPage >= pageCount) { - renderProgress(pageCount, pageCount, this.l10n); - resolve(); - return; - } - - const index = this.currentPage; - renderProgress(index, pageCount, this.l10n); - renderPage(this, this.pdfDocument, index + 1, this.pagesOverview[index], this._printResolution, this._optionalContentConfigPromise).then(this.useRenderedPage.bind(this)).then(function () { - renderNextPage(resolve, reject); - }, reject); - }; - - return new Promise(renderNextPage); - }, - - useRenderedPage() { - this.throwIfInactive(); - const img = document.createElement("img"); - const scratchCanvas = this.scratchCanvas; - - if ("toBlob" in scratchCanvas && !_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL) { - scratchCanvas.toBlob(function (blob) { - img.src = URL.createObjectURL(blob); - }); - } else { - img.src = scratchCanvas.toDataURL(); - } - - const wrapper = document.createElement("div"); - wrapper.className = "printedPage"; - wrapper.appendChild(img); - this.printContainer.appendChild(wrapper); - return new Promise(function (resolve, reject) { - img.onload = resolve; - img.onerror = reject; - }); - }, - - performPrint() { - this.throwIfInactive(); - return new Promise(resolve => { - setTimeout(() => { - if (!this.active) { - resolve(); - return; - } - - print.call(window); - setTimeout(resolve, 20); - }, 0); - }); - }, - - get active() { - return this === activeService; - }, - - throwIfInactive() { - if (!this.active) { - throw new Error("This print request was cancelled or completed."); - } - } - -}; -const print = window.print; - -window.print = function () { - if (activeService) { - console.warn("Ignored window.print() because of a pending print job."); - return; - } - - ensureOverlay().then(function () { - if (activeService) { - overlayManager.open("printServiceOverlay"); - } - }); - - try { - dispatchEvent("beforeprint"); - } finally { - if (!activeService) { - console.error("Expected print service to be initialized."); - ensureOverlay().then(function () { - if (overlayManager.active === "printServiceOverlay") { - overlayManager.close("printServiceOverlay"); - } - }); - return; - } - - const activeServiceOnEntry = activeService; - activeService.renderPages().then(function () { - return activeServiceOnEntry.performPrint(); - }).catch(function () {}).then(function () { - if (activeServiceOnEntry.active) { - abort(); - } - }); - } -}; - -function dispatchEvent(eventType) { - const event = document.createEvent("CustomEvent"); - event.initCustomEvent(eventType, false, false, "custom"); - window.dispatchEvent(event); -} - -function abort() { - if (activeService) { - activeService.destroy(); - dispatchEvent("afterprint"); - } -} - -function renderProgress(index, total, l10n) { - const progressContainer = document.getElementById("printServiceOverlay"); - const progress = Math.round(100 * index / total); - const progressBar = progressContainer.querySelector("progress"); - const progressPerc = progressContainer.querySelector(".relative-progress"); - progressBar.value = progress; - l10n.get("print_progress_percent", { - progress - }).then(msg => { - progressPerc.textContent = msg; - }); -} - -window.addEventListener("keydown", function (event) { - if (event.keyCode === 80 && (event.ctrlKey || event.metaKey) && !event.altKey && (!event.shiftKey || window.chrome || window.opera)) { - window.print(); - event.preventDefault(); - - if (event.stopImmediatePropagation) { - event.stopImmediatePropagation(); - } else { - event.stopPropagation(); - } - } -}, true); - -if ("onbeforeprint" in window) { - const stopPropagationIfNeeded = function (event) { - if (event.detail !== "custom" && event.stopImmediatePropagation) { - event.stopImmediatePropagation(); - } - }; - - window.addEventListener("beforeprint", stopPropagationIfNeeded); - window.addEventListener("afterprint", stopPropagationIfNeeded); -} - -let overlayPromise; - -function ensureOverlay() { - if (!overlayPromise) { - overlayManager = _app.PDFViewerApplication.overlayManager; - - if (!overlayManager) { - throw new Error("The overlay manager has not yet been initialized."); - } - - overlayPromise = overlayManager.register("printServiceOverlay", document.getElementById("printServiceOverlay"), abort, true); - document.getElementById("printCancel").onclick = abort; - } - - return overlayPromise; -} - -_app.PDFPrintServiceFactory.instance = { - supportsPrinting: true, - - createPrintService(pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise, l10n) { - if (activeService) { - throw new Error("The print service is created and active."); - } - - activeService = new PDFPrintService(pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise, l10n); - return activeService; - } - -}; - /***/ }), /* 46 */ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFPrintService = void 0; +var _pdfjsLib = __webpack_require__(4); +var _app = __webpack_require__(2); +var _print_utils = __webpack_require__(47); +let activeService = null; +let dialog = null; +let overlayManager = null; +function renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size, printResolution, optionalContentConfigPromise, printAnnotationStoragePromise) { + const scratchCanvas = activeService.scratchCanvas; + const PRINT_UNITS = printResolution / _pdfjsLib.PixelsPerInch.PDF; + scratchCanvas.width = Math.floor(size.width * PRINT_UNITS); + scratchCanvas.height = Math.floor(size.height * PRINT_UNITS); + const ctx = scratchCanvas.getContext("2d"); + ctx.save(); + ctx.fillStyle = "rgb(255, 255, 255)"; + ctx.fillRect(0, 0, scratchCanvas.width, scratchCanvas.height); + ctx.restore(); + return Promise.all([pdfDocument.getPage(pageNumber), printAnnotationStoragePromise]).then(function ([pdfPage, printAnnotationStorage]) { + const renderContext = { + canvasContext: ctx, + transform: [PRINT_UNITS, 0, 0, PRINT_UNITS, 0, 0], + viewport: pdfPage.getViewport({ + scale: 1, + rotation: size.rotation + }), + intent: "print", + annotationMode: _pdfjsLib.AnnotationMode.ENABLE_STORAGE, + optionalContentConfigPromise, + printAnnotationStorage + }; + return pdfPage.render(renderContext).promise; + }); +} +class PDFPrintService { + constructor(pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise = null, printAnnotationStoragePromise = null, l10n) { + this.pdfDocument = pdfDocument; + this.pagesOverview = pagesOverview; + this.printContainer = printContainer; + this._printResolution = printResolution || 150; + this._optionalContentConfigPromise = optionalContentConfigPromise || pdfDocument.getOptionalContentConfig(); + this._printAnnotationStoragePromise = printAnnotationStoragePromise || Promise.resolve(); + this.l10n = l10n; + this.currentPage = -1; + this.scratchCanvas = document.createElement("canvas"); + } + layout() { + this.throwIfInactive(); + const body = document.querySelector("body"); + body.setAttribute("data-pdfjsprinting", true); + const { + width, + height + } = this.pagesOverview[0]; + const hasEqualPageSizes = this.pagesOverview.every(size => size.width === width && size.height === height); + if (!hasEqualPageSizes) { + console.warn("Not all pages have the same size. The printed result may be incorrect!"); + } + this.pageStyleSheet = document.createElement("style"); + this.pageStyleSheet.textContent = `@page { size: ${width}pt ${height}pt;}`; + body.append(this.pageStyleSheet); + } + destroy() { + if (activeService !== this) { + return; + } + this.printContainer.textContent = ""; + const body = document.querySelector("body"); + body.removeAttribute("data-pdfjsprinting"); + if (this.pageStyleSheet) { + this.pageStyleSheet.remove(); + this.pageStyleSheet = null; + } + this.scratchCanvas.width = this.scratchCanvas.height = 0; + this.scratchCanvas = null; + activeService = null; + ensureOverlay().then(function () { + if (overlayManager.active === dialog) { + overlayManager.close(dialog); + } + }); + } + renderPages() { + if (this.pdfDocument.isPureXfa) { + (0, _print_utils.getXfaHtmlForPrinting)(this.printContainer, this.pdfDocument); + return Promise.resolve(); + } + const pageCount = this.pagesOverview.length; + const renderNextPage = (resolve, reject) => { + this.throwIfInactive(); + if (++this.currentPage >= pageCount) { + renderProgress(pageCount, pageCount, this.l10n); + resolve(); + return; + } + const index = this.currentPage; + renderProgress(index, pageCount, this.l10n); + renderPage(this, this.pdfDocument, index + 1, this.pagesOverview[index], this._printResolution, this._optionalContentConfigPromise, this._printAnnotationStoragePromise).then(this.useRenderedPage.bind(this)).then(function () { + renderNextPage(resolve, reject); + }, reject); + }; + return new Promise(renderNextPage); + } + useRenderedPage() { + this.throwIfInactive(); + const img = document.createElement("img"); + const scratchCanvas = this.scratchCanvas; + if ("toBlob" in scratchCanvas) { + scratchCanvas.toBlob(function (blob) { + img.src = URL.createObjectURL(blob); + }); + } else { + img.src = scratchCanvas.toDataURL(); + } + const wrapper = document.createElement("div"); + wrapper.className = "printedPage"; + wrapper.append(img); + this.printContainer.append(wrapper); + return new Promise(function (resolve, reject) { + img.onload = resolve; + img.onerror = reject; + }); + } + performPrint() { + this.throwIfInactive(); + return new Promise(resolve => { + setTimeout(() => { + if (!this.active) { + resolve(); + return; + } + print.call(window); + setTimeout(resolve, 20); + }, 0); + }); + } + get active() { + return this === activeService; + } + throwIfInactive() { + if (!this.active) { + throw new Error("This print request was cancelled or completed."); + } + } +} +exports.PDFPrintService = PDFPrintService; +const print = window.print; +window.print = function () { + if (activeService) { + console.warn("Ignored window.print() because of a pending print job."); + return; + } + ensureOverlay().then(function () { + if (activeService) { + overlayManager.open(dialog); + } + }); + try { + dispatchEvent("beforeprint"); + } finally { + if (!activeService) { + console.error("Expected print service to be initialized."); + ensureOverlay().then(function () { + if (overlayManager.active === dialog) { + overlayManager.close(dialog); + } + }); + return; + } + const activeServiceOnEntry = activeService; + activeService.renderPages().then(function () { + return activeServiceOnEntry.performPrint(); + }).catch(function () {}).then(function () { + if (activeServiceOnEntry.active) { + abort(); + } + }); + } +}; +function dispatchEvent(eventType) { + const event = new CustomEvent(eventType, { + bubbles: false, + cancelable: false, + detail: "custom" + }); + window.dispatchEvent(event); +} +function abort() { + if (activeService) { + activeService.destroy(); + dispatchEvent("afterprint"); + } +} +function renderProgress(index, total, l10n) { + dialog ||= document.getElementById("printServiceDialog"); + const progress = Math.round(100 * index / total); + const progressBar = dialog.querySelector("progress"); + const progressPerc = dialog.querySelector(".relative-progress"); + progressBar.value = progress; + l10n.get("print_progress_percent", { + progress + }).then(msg => { + progressPerc.textContent = msg; + }); +} +window.addEventListener("keydown", function (event) { + if (event.keyCode === 80 && (event.ctrlKey || event.metaKey) && !event.altKey && (!event.shiftKey || window.chrome || window.opera)) { + window.print(); + event.preventDefault(); + event.stopImmediatePropagation(); + } +}, true); +if ("onbeforeprint" in window) { + const stopPropagationIfNeeded = function (event) { + if (event.detail !== "custom") { + event.stopImmediatePropagation(); + } + }; + window.addEventListener("beforeprint", stopPropagationIfNeeded); + window.addEventListener("afterprint", stopPropagationIfNeeded); +} +let overlayPromise; +function ensureOverlay() { + if (!overlayPromise) { + overlayManager = _app.PDFViewerApplication.overlayManager; + if (!overlayManager) { + throw new Error("The overlay manager has not yet been initialized."); + } + dialog ||= document.getElementById("printServiceDialog"); + overlayPromise = overlayManager.register(dialog, true); + document.getElementById("printCancel").onclick = abort; + dialog.addEventListener("close", abort); + } + return overlayPromise; +} +_app.PDFPrintServiceFactory.instance = { + supportsPrinting: true, + createPrintService(pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise, printAnnotationStoragePromise, l10n) { + if (activeService) { + throw new Error("The print service is created and active."); + } + activeService = new PDFPrintService(pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise, printAnnotationStoragePromise, l10n); + return activeService; + } +}; + +/***/ }), +/* 47 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + Object.defineProperty(exports, "__esModule", ({ value: true })); exports.getXfaHtmlForPrinting = getXfaHtmlForPrinting; - -var _ui_utils = __webpack_require__(4); - -var _xfa_layer_builder = __webpack_require__(34); - -var _pdfjsLib = __webpack_require__(5); - +var _pdfjsLib = __webpack_require__(4); +var _pdf_link_service = __webpack_require__(7); +var _xfa_layer_builder = __webpack_require__(37); function getXfaHtmlForPrinting(printContainer, pdfDocument) { const xfaHtml = pdfDocument.allXfaHtml; - const factory = new _xfa_layer_builder.DefaultXfaLayerFactory(); - const scale = Math.round(_ui_utils.CSS_UNITS * 100) / 100; - + const linkService = new _pdf_link_service.SimpleLinkService(); + const scale = Math.round(_pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS * 100) / 100; for (const xfaPage of xfaHtml.children) { const page = document.createElement("div"); page.className = "xfaPrintedPage"; - printContainer.appendChild(page); - const builder = factory.createXfaLayerBuilder(page, null, pdfDocument.annotationStorage, xfaPage); + printContainer.append(page); + const builder = new _xfa_layer_builder.XfaLayerBuilder({ + pageDiv: page, + pdfPage: null, + annotationStorage: pdfDocument.annotationStorage, + linkService, + xfaHtml: xfaPage + }); const viewport = (0, _pdfjsLib.getXfaPageViewport)(xfaPage, { scale }); @@ -15283,86 +13617,77 @@ var exports = __webpack_exports__; Object.defineProperty(exports, "__esModule", ({ value: true })); -Object.defineProperty(exports, "PDFViewerApplicationOptions", ({ - enumerable: true, - get: function () { - return _app_options.AppOptions; - } -})); Object.defineProperty(exports, "PDFViewerApplication", ({ enumerable: true, get: function () { return _app.PDFViewerApplication; } })); - -var _app_options = __webpack_require__(1); - -var _app = __webpack_require__(3); - -const pdfjsVersion = '2.10.377'; -const pdfjsBuild = '156762c48'; +exports.PDFViewerApplicationConstants = void 0; +Object.defineProperty(exports, "PDFViewerApplicationOptions", ({ + enumerable: true, + get: function () { + return _app_options.AppOptions; + } +})); +__webpack_require__(1); +__webpack_require__(46); +var _ui_utils = __webpack_require__(3); +var _app_options = __webpack_require__(5); +var _pdf_link_service = __webpack_require__(7); +var _app = __webpack_require__(2); +const pdfjsVersion = '3.8.162'; +const pdfjsBuild = '2c74323e3'; +const AppConstants = { + LinkTarget: _pdf_link_service.LinkTarget, + RenderingStates: _ui_utils.RenderingStates, + ScrollMode: _ui_utils.ScrollMode, + SpreadMode: _ui_utils.SpreadMode +}; +exports.PDFViewerApplicationConstants = AppConstants; window.PDFViewerApplication = _app.PDFViewerApplication; +window.PDFViewerApplicationConstants = AppConstants; window.PDFViewerApplicationOptions = _app_options.AppOptions; -; -; -{ - __webpack_require__(39); -} -; -{ - __webpack_require__(45); -} - function getViewerConfiguration() { - let errorWrapper = null; - errorWrapper = { - container: document.getElementById("errorWrapper"), - errorMessage: document.getElementById("errorMessage"), - closeButton: document.getElementById("errorClose"), - errorMoreInfo: document.getElementById("errorMoreInfo"), - moreInfoButton: document.getElementById("errorShowMore"), - lessInfoButton: document.getElementById("errorShowLess") - }; return { appContainer: document.body, mainContainer: document.getElementById("viewerContainer"), viewerContainer: document.getElementById("viewer"), - eventBus: null, toolbar: { container: document.getElementById("toolbarViewer"), numPages: document.getElementById("numPages"), pageNumber: document.getElementById("pageNumber"), - scaleSelectContainer: document.getElementById("scaleSelectContainer"), scaleSelect: document.getElementById("scaleSelect"), customScaleOption: document.getElementById("customScaleOption"), previous: document.getElementById("previous"), next: document.getElementById("next"), - restoreToAuto: document.getElementById("restoreToAuto"), zoomIn: document.getElementById("zoomIn"), zoomOut: document.getElementById("zoomOut"), viewFind: document.getElementById("viewFind"), openFile: document.getElementById("openFile"), - print: document.getElementById("print"), - presentationModeButton: document.getElementById("presentationMode"), - download: document.getElementById("download"), - viewBookmark: document.getElementById("viewBookmark") + // custom for seafile: 'seafile-pdf-print' only exists in 'pdf file view' page, not in 'shared/history/trash' file view pages + print: document.getElementById("seafile-pdf-print") || document.getElementById("print"), + editorFreeTextButton: document.getElementById("editorFreeText"), + editorFreeTextParamsToolbar: document.getElementById("editorFreeTextParamsToolbar"), + editorInkButton: document.getElementById("editorInk"), + editorInkParamsToolbar: document.getElementById("editorInkParamsToolbar"), + download: document.getElementById("download") }, secondaryToolbar: { toolbar: document.getElementById("secondaryToolbar"), toggleButton: document.getElementById("secondaryToolbarToggle"), - toolbarButtonContainer: document.getElementById("secondaryToolbarButtonContainer"), - presentationModeButton: document.getElementById("secondaryPresentationMode"), + presentationModeButton: document.getElementById("presentationMode"), openFileButton: document.getElementById("secondaryOpenFile"), printButton: document.getElementById("secondaryPrint"), downloadButton: document.getElementById("secondaryDownload"), - viewBookmarkButton: document.getElementById("secondaryViewBookmark"), + viewBookmarkButton: document.getElementById("viewBookmark"), firstPageButton: document.getElementById("firstPage"), lastPageButton: document.getElementById("lastPage"), pageRotateCwButton: document.getElementById("pageRotateCw"), pageRotateCcwButton: document.getElementById("pageRotateCcw"), cursorSelectToolButton: document.getElementById("cursorSelectTool"), cursorHandToolButton: document.getElementById("cursorHandTool"), + scrollPageButton: document.getElementById("scrollPage"), scrollVerticalButton: document.getElementById("scrollVertical"), scrollHorizontalButton: document.getElementById("scrollHorizontal"), scrollWrappedButton: document.getElementById("scrollWrapped"), @@ -15373,8 +13698,9 @@ function getViewerConfiguration() { }, sidebar: { outerContainer: document.getElementById("outerContainer"), - viewerContainer: document.getElementById("viewerContainer"), + sidebarContainer: document.getElementById("sidebarContainer"), toggleButton: document.getElementById("sidebarToggle"), + resizer: document.getElementById("sidebarResizer"), thumbnailButton: document.getElementById("viewThumbnail"), outlineButton: document.getElementById("viewOutline"), attachmentsButton: document.getElementById("viewAttachments"), @@ -15386,16 +13712,13 @@ function getViewerConfiguration() { outlineOptionsContainer: document.getElementById("outlineOptionsContainer"), currentOutlineItemButton: document.getElementById("currentOutlineItem") }, - sidebarResizer: { - outerContainer: document.getElementById("outerContainer"), - resizer: document.getElementById("sidebarResizer") - }, findBar: { bar: document.getElementById("findbar"), toggleButton: document.getElementById("viewFind"), findField: document.getElementById("findInput"), highlightAllCheckbox: document.getElementById("findHighlightAll"), caseSensitiveCheckbox: document.getElementById("findMatchCase"), + matchDiacriticsCheckbox: document.getElementById("findMatchDiacritics"), entireWordCheckbox: document.getElementById("findEntireWord"), findMsg: document.getElementById("findMsg"), findResultsCount: document.getElementById("findResultsCount"), @@ -15403,16 +13726,14 @@ function getViewerConfiguration() { findNextButton: document.getElementById("findNext") }, passwordOverlay: { - overlayName: "passwordOverlay", - container: document.getElementById("passwordOverlay"), + dialog: document.getElementById("passwordDialog"), label: document.getElementById("passwordText"), input: document.getElementById("password"), submitButton: document.getElementById("passwordSubmit"), cancelButton: document.getElementById("passwordCancel") }, documentProperties: { - overlayName: "documentPropertiesOverlay", - container: document.getElementById("documentPropertiesOverlay"), + dialog: document.getElementById("documentPropertiesDialog"), closeButton: document.getElementById("documentPropertiesClose"), fields: { fileName: document.getElementById("fileNameField"), @@ -15431,34 +13752,36 @@ function getViewerConfiguration() { linearized: document.getElementById("linearizedField") } }, - errorWrapper, + annotationEditorParams: { + editorFreeTextFontSize: document.getElementById("editorFreeTextFontSize"), + editorFreeTextColor: document.getElementById("editorFreeTextColor"), + editorInkColor: document.getElementById("editorInkColor"), + editorInkThickness: document.getElementById("editorInkThickness"), + editorInkOpacity: document.getElementById("editorInkOpacity") + }, printContainer: document.getElementById("printContainer"), - openFileInputName: "fileInput", + openFileInput: document.getElementById("fileInput"), debuggerScriptPath: "./debugger.js" }; } - function webViewerLoad() { const config = getViewerConfiguration(); - const event = document.createEvent("CustomEvent"); - event.initCustomEvent("webviewerloaded", true, true, { - source: window + const event = new CustomEvent("webviewerloaded", { + bubbles: true, + cancelable: true, + detail: { + source: window + } }); - try { parent.document.dispatchEvent(event); } catch (ex) { console.error(`webviewerloaded: ${ex}`); document.dispatchEvent(event); } - _app.PDFViewerApplication.run(config); } - -if (document.blockUnblockOnload) { - document.blockUnblockOnload(true); -} - +document.blockUnblockOnload?.(true); if (document.readyState === "interactive" || document.readyState === "complete") { webViewerLoad(); } else { diff --git a/media/js/pdf/web/viewer.js.map b/media/js/pdf/web/viewer.js.map deleted file mode 100644 index bbdcb31bdf..0000000000 --- a/media/js/pdf/web/viewer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://pdf.js/web/app_options.js","webpack://pdf.js/web/viewer_compatibility.js","webpack://pdf.js/web/app.js","webpack://pdf.js/web/ui_utils.js","webpack://pdf.js/web/pdfjs.js","webpack://pdf.js/web/pdf_cursor_tools.js","webpack://pdf.js/web/grab_to_pan.js","webpack://pdf.js/web/pdf_rendering_queue.js","webpack://pdf.js/web/overlay_manager.js","webpack://pdf.js/web/password_prompt.js","webpack://pdf.js/web/pdf_attachment_viewer.js","webpack://pdf.js/web/base_tree_viewer.js","webpack://pdf.js/web/pdf_document_properties.js","webpack://pdf.js/web/pdf_find_bar.js","webpack://pdf.js/web/pdf_find_controller.js","webpack://pdf.js/web/pdf_find_utils.js","webpack://pdf.js/web/pdf_history.js","webpack://pdf.js/web/pdf_layer_viewer.js","webpack://pdf.js/web/pdf_link_service.js","webpack://pdf.js/web/pdf_outline_viewer.js","webpack://pdf.js/web/pdf_presentation_mode.js","webpack://pdf.js/web/pdf_scripting_manager.js","webpack://pdf.js/web/pdf_sidebar.js","webpack://pdf.js/web/pdf_sidebar_resizer.js","webpack://pdf.js/web/pdf_thumbnail_viewer.js","webpack://pdf.js/web/pdf_thumbnail_view.js","webpack://pdf.js/web/pdf_viewer.js","webpack://pdf.js/web/base_viewer.js","webpack://pdf.js/web/annotation_layer_builder.js","webpack://pdf.js/web/l10n_utils.js","webpack://pdf.js/web/pdf_page_view.js","webpack://pdf.js/web/struct_tree_layer_builder.js","webpack://pdf.js/web/text_layer_builder.js","webpack://pdf.js/web/xfa_layer_builder.js","webpack://pdf.js/web/secondary_toolbar.js","webpack://pdf.js/web/pdf_single_page_viewer.js","webpack://pdf.js/web/toolbar.js","webpack://pdf.js/web/view_history.js","webpack://pdf.js/web/genericcom.js","webpack://pdf.js/web/preferences.js","webpack://pdf.js/web/download_manager.js","webpack://pdf.js/web/genericl10n.js","webpack://pdf.js/external/webL10n/l10n.js","webpack://pdf.js/web/generic_scripting.js","webpack://pdf.js/web/pdf_print_service.js","webpack://pdf.js/web/print_utils.js","webpack://pdf.js/webpack/bootstrap","webpack://pdf.js/web/viewer.js"],"names":["OptionKind","VIEWER","API","WORKER","PREFERENCE","defaultOptions","cursorToolOnLoad","value","kind","defaultUrl","defaultZoomValue","disableHistory","disablePageLabels","enablePermissions","enablePrintAutoRotate","enableScripting","externalLinkRel","externalLinkTarget","historyUpdateUrl","ignoreDestinationZoom","imageResourcesPath","maxCanvasPixels","compatibility","viewerCompatibilityParams","pdfBugEnabled","printResolution","renderer","renderInteractiveForms","sidebarViewOnLoad","scrollModeOnLoad","spreadModeOnLoad","textLayerMode","useOnlyCssZoom","viewerCssTheme","viewOnLoad","cMapPacked","cMapUrl","disableAutoFetch","disableFontFace","disableRange","disableStream","docBaseUrl","enableXfa","fontExtraProperties","isEvalSupported","maxImageSize","pdfBug","standardFontDataUrl","verbosity","workerPort","workerSrc","navigator","userOptions","Object","constructor","get","userOption","defaultOption","getAll","options","valueType","Number","set","setAll","remove","compatibilityParams","userAgent","platform","maxTouchPoints","isAndroid","isIOS","isIOSChrome","DEFAULT_SCALE_DELTA","DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT","FORCE_PAGES_LOADED_TIMEOUT","WHEEL_ZOOM_DISABLED_TIMEOUT","ENABLE_PERMISSIONS_CLASS","ViewOnLoad","UNKNOWN","PREVIOUS","INITIAL","ViewerCssTheme","AUTOMATIC","LIGHT","DARK","KNOWN_VERSIONS","KNOWN_GENERATORS","updateFindControlState","updateFindMatchesCount","initPassiveLoading","fallback","reportTelemetry","createDownloadManager","createPreferences","createL10n","createScripting","supportsIntegratedFind","shadow","supportsDocumentFonts","supportedMouseWheelZoomModifierKeys","ctrlKey","metaKey","isInAutomation","PDFViewerApplication","initialBookmark","document","_initializedCapability","_fellback","appConfig","pdfDocument","pdfLoadingTask","printService","pdfViewer","pdfThumbnailViewer","pdfRenderingQueue","pdfPresentationMode","pdfDocumentProperties","pdfLinkService","pdfHistory","pdfSidebar","pdfSidebarResizer","pdfOutlineViewer","pdfAttachmentViewer","pdfLayerViewer","pdfCursorTools","pdfScriptingManager","store","downloadManager","overlayManager","preferences","toolbar","secondaryToolbar","eventBus","l10n","isInitialViewSet","downloadComplete","isViewerEmbedded","window","url","baseUrl","externalServices","_boundEvents","documentInfo","metadata","_contentDispositionFilename","_contentLength","_saveInProgress","_wheelUnusedTicks","_idleCallbacks","AppOptions","LinkTarget","appContainer","source","console","reason","hash","hashParams","parseQueryString","waitOn","loadFakeWorker","TextLayerMode","viewer","enabled","loadAndEnablePDFBug","locale","dir","_forceCssTheme","cssTheme","styleSheet","cssRules","mediaMatcher","mediaRule","mediaRegex","i","ii","rule","darkRules","findController","linkService","sandboxBundleSrc","scriptingFactory","docPropertiesLookup","container","renderingQueue","scriptingManager","elements","run","zoomIn","newScale","Math","zoomOut","zoomReset","PDFPrintServiceFactory","doc","support","bar","setTitleUsingUrl","title","getPdfFilenameFromUrl","decodeURIComponent","getFilenameFromUrl","setTitle","_cancelIdleCallbacks","sourceEventType","promises","webViewerResetPermissions","PDFBug","Promise","workerParameters","GlobalWorkerOptions","parameters","file","apiParameters","key","args","loadingTask","getDocument","loaded","exception","msg","message","_ensureDownloadComplete","filename","data","blob","type","downloadOrSave","download","_documentError","moreInfo","_otherError","moreInfoText","version","build","stack","line","errorWrapperConfig","errorWrapper","errorMessage","closeButton","errorMoreInfo","moreInfoButton","lessInfoButton","parts","progress","percent","level","isNaN","clearTimeout","load","firstPagePromise","pageLayoutPromise","pageModePromise","openActionPromise","baseDocumentUrl","storedPromise","page","zoom","scrollLeft","scrollTop","rotation","sidebarView","SidebarView","scrollMode","ScrollMode","spreadMode","SpreadMode","pdfPage","fingerprint","initialDest","openAction","stored","parseInt","pageMode","apiPageModeToSidebarView","pageLayout","apiPageLayoutToSpreadMode","resolve","setTimeout","pagesPromise","onePageRendered","outline","attachments","optionalContentConfig","callback","timeout","once","baseURL","filesize","authors","numPages","URL","markInfo","tagged","triggerAutoPrint","javaScript","js","UNSUPPORTED_FEATURES","AutoPrintRegExp","info","pdfTitle","metadataTitle","contentDispositionFilename","versionId","generatorId","producer","generator","formType","labels","numLabels","_initializePdfHistory","resetHistory","updateUrl","JSON","explicitDest","pageNumber","permissions","PermissionFlag","_initializeAnnotationStorageCallbacks","annotationStorage","setInitialView","setRotation","angle","isValidRotation","setViewerModes","isValidScrollMode","isValidSpreadMode","_cleanup","RendererType","forceRendering","beforePrint","pagesOverview","printContainer","optionalContentConfigPromise","afterPrint","rotatePages","requestPresentationMode","triggerPrinting","bindEvents","bindWindowEvents","event","detail","passive","unbindEvents","unbindWindowEvents","accumulateWheelTicks","ticks","wholeTicks","_unblockDocumentLoadEvent","HOSTED_VIEWER_ORIGINS","validateFileURL","viewerOrigin","origin","protocol","ex","loadScript","PDFWorker","OPS","Stats","pageView","pageStats","queryString","params","fileInput","files","evt","webViewerOpenFileViaURL","thumbnailView","view","webViewerSave","location","href","currentPage","loading","RenderingStates","currentScaleValue","webViewerFileInputChange","originalUrl","fileReader","buffer","webViewerOpenFile","openFileInputName","query","phraseSearch","caseSensitive","entireWord","highlightAll","findPrevious","result","setZoomDisabledTimeout","zoomDisabledTimeout","previousScale","delta","normalizeWheelEventDirection","WheelEvent","PIXELS_PER_LINE_SCALE","currentScale","scaleCorrectionFactor","rect","dx","dy","handled","ensureViewerFocused","cmd","isViewerInPresentationMode","findState","curElement","curElementTagName","turnPage","turnOnlyIfPageFit","CursorTool","instance","supportsPrinting","createPrintService","CSS_UNITS","DEFAULT_SCALE_VALUE","DEFAULT_SCALE","MIN_SCALE","MAX_SCALE","UNKNOWN_SCALE","MAX_AUTO_SCALE","SCROLLBAR_PADDING","VERTICAL_PADDING","LOADINGBAR_END_OFFSET_VAR","PresentationModeState","NORMAL","CHANGING","FULLSCREEN","NONE","THUMBS","OUTLINE","ATTACHMENTS","LAYERS","CANVAS","SVG","DISABLE","ENABLE","ENABLE_ENHANCE","VERTICAL","HORIZONTAL","WRAPPED","ODD","EVEN","devicePixelRatio","backingStoreRatio","ctx","pixelRatio","sx","sy","scaled","scrollMatches","parent","element","offsetY","offsetX","getComputedStyle","spot","debounceScroll","rAF","currentX","viewAreaElement","lastX","state","currentY","lastY","right","down","_eventHandler","param","minIndex","maxIndex","items","condition","currentIndex","currentItem","xinv","limit","x_","x","a","b","c","d","p","q","r","changeOrientation","rotate","width","height","index","elt","views","pageTop","sortByVisibility","horizontal","rtl","top","scrollEl","bottom","left","elementBottom","elementLeft","elementRight","visible","numViews","firstVisibleElementInd","binarySearchFirstItem","backtrackBeforeAllVisibleElements","lastEdge","currentWidth","currentHeight","viewWidth","viewHeight","viewRight","viewBottom","hiddenHeight","hiddenWidth","fractionHeight","fractionWidth","id","y","widthPercent","first","last","pc","MOUSE_DOM_DELTA_PIXEL_MODE","MOUSE_DOM_DELTA_LINE_MODE","MOUSE_PIXELS_PER_LINE","MOUSE_LINES_PER_PAGE","mode","size","WaitOnType","EVENT","TIMEOUT","delay","target","eventHandler","handler","timeoutHandler","animationStarted","on","external","off","dispatch","eventListeners","Array","listener","externalListeners","_on","_off","units","_updateBar","progressSize","clamp","setWidth","scrollbarWidth","hide","show","moved","len","arr","write","read","curRoot","curActiveOrFocused","pdfjsLib","__non_webpack_require__","module","SELECT","HAND","ZOOM","activeTool","switchTool","tool","disableActiveTool","_dispatchEvent","_addEventListeners","previouslyActive","overlay","GrabToPan","CSS_CLASS_GRAB","activate","deactivate","toggle","ignoreTarget","node","_onmousedown","focusedElement","_onmousemove","isLeftMouseReleased","xDiff","yDiff","behavior","_endPan","chrome","isChrome15OrOpera15plus","isSafari6plus","CLEANUP_TIMEOUT","RUNNING","PAUSED","FINISHED","setViewer","setThumbnailViewer","isHighestPriority","renderHighestPriority","getHighestPriority","visibleViews","numVisible","nextPageIndex","previousPageIndex","isViewFinished","renderView","active","register","callerCloseMethod","canForceClose","unregister","open","close","_keyDown","_closeThroughCaller","e","passwordIncorrect","PasswordResponses","verify","password","setUpdateCallback","reset","keepRenderedCapability","attachmentsCount","_bindLink","render","names","fragment","item","content","div","_appendAttachment","renderedPromise","TREEITEM_OFFSET_TOP","TREEITEM_SELECTED_CLASS","_normalizeTextContent","removeNullCharacters","_addToggleButton","hidden","toggler","shouldShowAll","_toggleTreeItem","root","_toggleAllTreeItems","_finishRendering","hasAnyNesting","_updateCurrentTreeItem","treeItem","_scrollToCurrentTreeItem","currentNode","DEFAULT_FIELD_CONTENT","NON_METRIC_LOCALES","US_PAGE_NAMES","METRIC_PAGE_NAMES","isPortrait","pageNames","freezeFieldData","writable","enumerable","configurable","currentPageNumber","pagesRotation","getPageSizeInches","author","subject","keywords","creator","pageCount","linearized","_currentPageNumber","_pagesRotation","contentLength","setDocument","_reset","_updateUI","_parseFileSize","fileSize","kb","mb","size_mb","size_kb","size_b","_parsePageSize","pageSizeInches","isPortraitOrientation","sizeInches","sizeMillimeters","rawName","getPageName","exactMillimeters","intMillimeters","name","_parseDate","dateObject","PDFDateString","date","time","_parseLinearization","isLinearized","MATCHES_COUNT_LIMIT","dispatchEvent","updateUIState","findMsg","status","FindState","previous","updateResultsCount","current","total","matchCountMsg","_adjustWidth","findbarHeight","inputContainerHeight","FOUND","NOT_FOUND","PENDING","FIND_TIMEOUT","MATCH_SCROLL_OFFSET_TOP","MATCH_SCROLL_OFFSET_LEFT","CHARACTERS_TO_NORMALIZE","normalizationRegex","replace","diffs","normalizedText","normalizedCh","diff","ch","totalDiff","matchIndex","highlightMatches","pageMatches","pageMatchesLength","selected","executeCommand","findbarClosed","pendingTimeout","scrollMatchIntoView","selectedLeft","pageIndex","scrollIntoView","pageIdx","matchIdx","wrapped","_query","normalize","_shouldDirtyMatch","_prepareMatches","currentElem","matchesWithLength","nextElem","prevElem","isSubTerm","matches","matchesLength","_isEntireWord","startIdx","getCharacterType","endIdx","_calculatePhraseMatch","queryLen","pageContent","originalMatchIdx","getOriginalIndex","matchEnd","originalQueryLen","_calculateWordMatch","queryArray","subquery","subqueryLen","match","matchLength","skipped","_calculateMatch","pageDiffs","pageMatchesCount","_extractText","promise","extractTextCapability","normalizeWhitespace","textContent","textItems","strBuf","j","jj","_updatePage","_updateAllPages","_nextMatch","currentPageIndex","offset","numPageMatches","_matchesReady","numMatches","_nextPageMatch","_advanceOffsetPage","_updateMatch","found","previousPage","_onFindBarClose","_requestMatchesCount","_updateUIResultsCount","matchesCount","_updateUIState","rawQuery","CharacterType","SPACE","ALPHA_LETTER","PUNCT","HAN_LETTER","KATAKANA_LETTER","HIRAGANA_LETTER","HALFWIDTH_KATAKANA_LETTER","THAI_LETTER","charCode","isAlphabeticalScript","isAscii","isAsciiSpace","isAsciiAlpha","isAsciiDigit","isThai","isHan","isKatakana","isHiragana","isHalfwidthKatakana","HASH_CHANGE_TIMEOUT","POSITION_UPDATED_THRESHOLD","UPDATE_VIEWAREA_TIMEOUT","initialize","reInitialized","getCurrentHash","destination","push","namedDest","forceReplace","isDestArraysEqual","dest","pushPage","pushCurrentPosition","back","forward","popStateInProgress","initialRotation","_pushOrReplaceState","shouldReplace","newState","uid","newUrl","_tryPushCurrentPosition","temporary","position","_isValidPage","val","_isValidState","checkReload","performance","perfEntry","_updateInternalState","removeTemporary","_parseCurrentHash","checkNameddest","unescape","nameddest","_updateViewarea","_popState","newHash","hashChanged","waitOnEventOrTimeout","_pageHide","_bindEvents","updateViewarea","popState","pageHide","_unbindEvents","destHash","second","isEntryEqual","firstDest","secondDest","setVisibility","input","_setNestedName","groups","queue","layersCount","levelData","itemsDiv","groupId","group","label","_resetLayers","setHistory","pagesCount","_goToDestinationHelper","destRef","destArray","goToDestination","goToPage","getDestinationHash","escape","str","getAnchorUrl","setHash","zoomArgs","zoomArg","zoomArgNumber","parseFloat","allowNegativeOffset","isValidExplicitDestination","executeNamedAction","cachePageRef","refStr","pageRef","_cachedPageNumber","isPageVisible","isPageCached","destLength","allowNull","outlineCount","currentOutlineItemPromise","addLinkAttributes","newWindow","rel","_setStyles","count","totalCount","nestedCount","nestedItems","_currentOutlineItem","pageNumberToDestHash","linkElement","_getPageNumberToDestHash","pageNumberNesting","nesting","currentNesting","DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS","DELAY_BEFORE_HIDING_CONTROLS","ACTIVE_SELECTOR","CONTROLS_SELECTOR","MOUSE_SCROLL_COOLDOWN_TIME","PAGE_SWITCH_THRESHOLD","SWIPE_MIN_DISTANCE_THRESHOLD","SWIPE_ANGLE_THRESHOLD","request","Element","_mouseWheel","normalizeWheelEventDelta","currentTime","Date","storedTime","totalDelta","success","isFullscreen","_notifyStateChange","_setSwitchInProgress","_resetSwitchInProgress","_enter","_exit","_mouseDown","isInternalLink","_contextMenu","_showControls","_hideControls","_resetMouseScrollState","_touchSwipe","startX","startY","endX","endY","absAngle","_addWindowListeners","_removeWindowListeners","_fullscreenChange","_addFullscreenChangeListeners","_removeFullscreenChangeListeners","error","docProperties","appInfo","language","docInfo","actions","dispatchWillSave","dispatchDidSave","dispatchWillPrint","dispatchDidPrint","mouseState","destroyPromise","ready","_internalEvents","_domEvents","_pageOpenPending","_visitedPages","_updateFromSandbox","isInPresentationMode","ids","_dispatchPageOpen","visitedPages","actionsPromise","_dispatchPageClose","_getDocProperties","_createScripting","_destroyScripting","UI_NOTIFICATION_CLASS","visibleView","isThumbnailViewVisible","isOutlineViewVisible","isAttachmentsViewVisible","isLayersViewVisible","switchView","forceOpen","_switchView","isViewChanged","shouldForceRendering","_forceRendering","_updateThumbnailViewer","_showUINotification","_hideUINotification","onTreeLoaded","button","SIDEBAR_WIDTH_VAR","SIDEBAR_MIN_WIDTH","SIDEBAR_RESIZING_CLASS","outerContainerWidth","_updateWidth","maxWidth","_mouseMove","_mouseUp","updated","THUMBNAIL_SCROLL_MARGIN","THUMBNAIL_SELECTED_CLASS","watchScroll","_scrollUpdated","getThumbnail","_getVisibleThumbs","scrollThumbnailIntoView","prevThumbnailView","visibleThumbs","numVisibleThumbs","shouldScroll","cleanup","TempImageFactory","_resetView","firstPdfPage","viewport","scale","checkSetImageDisabled","pageNum","thumbnail","defaultViewport","firstThumbnailView","_cancelRendering","setPageLabels","_ensurePdfPageLoaded","thumbView","DRAW_UPSCALE_FACTOR","MAX_NUM_SCALING_STEPS","THUMBNAIL_CANVAS_BORDER_WIDTH","THUMBNAIL_WIDTH","tempCanvasCache","getCanvas","tempCanvas","alpha","destroyCanvas","pageWidth","pageHeight","pageRatio","anchor","ring","borderAdjustment","setPdfPage","totalRotation","update","cancelRendering","_getPageDrawContext","upscaleFactor","canvas","outputScale","getOutputScale","transform","_convertCanvasToImage","reducedCanvas","image","draw","finishRenderTask","renderTask","drawViewport","renderContinueCallback","cont","renderContext","canvasContext","resultPromise","pageCached","setImage","_reduceImage","img","reducedWidth","reducedHeight","reducedImageCtx","_thumbPageTitle","_thumbPageCanvas","setPageLabel","_viewerElement","_scrollIntoView","pageSpot","pageDiv","_getVisiblePages","_updateHelper","currentId","stillFullyVisible","visiblePages","DEFAULT_CACHE_SIZE","pageIdsToKeep","iMax","pagesToKeep","moveToEndOfArray","viewerVersion","getPageView","pageViewsReady","_setCurrentPageNumber","resetCurrentPageView","pageLabel","currentPageLabel","_onePageRenderedOrForceFetch","isPureXfa","textLayerFactory","xfaLayerFactory","annotationLayerFactory","structTreeLayerFactory","firstPageView","getPagesLeft","_scrollUpdate","_setScaleUpdatePages","noScroll","preset","newValue","isSameScale","presetValue","_pageWidthScaleFactor","_setScale","noPadding","hPadding","vPadding","pageWidthScale","pageHeightScale","horizontalScale","_resetCurrentPageView","pageLabelToPageNumber","scrollPageIntoView","widthScale","heightScale","boundingRect","_updateLocation","normalizedScaleValue","firstPage","pdfOpenParams","currentPageView","topLeft","intLeft","intTop","numVisiblePages","newCacheSize","containsElement","focus","_isScrollModeHorizontal","_isContainerRtl","isChangingPresentationMode","isHorizontalScrollbarEnabled","isVerticalScrollbarEnabled","_getCurrentVisiblePage","currentlyVisiblePages","scrollAhead","createTextLayerBuilder","enhanceTextSelection","createAnnotationLayerBuilder","hasJSActionsPromise","createXfaLayerBuilder","createStructTreeLayerBuilder","hasEqualPageSizes","getPagesOverview","_updateScrollMode","_updateSpreadMode","pages","parity","spread","_getPageAdvance","yArray","expectedId","firstId","lastId","nextPage","advance","intent","hasJSActions","annotations","dontFlip","AnnotationLayer","cancel","DEFAULT_L10N_STRINGS","of_pages","page_of_pages","document_properties_kb","document_properties_mb","document_properties_date_string","document_properties_page_size_unit_inches","document_properties_page_size_unit_millimeters","document_properties_page_size_orientation_portrait","document_properties_page_size_orientation_landscape","document_properties_page_size_name_a3","document_properties_page_size_name_a4","document_properties_page_size_name_letter","document_properties_page_size_name_legal","document_properties_page_size_dimension_string","document_properties_page_size_dimension_name_string","document_properties_linearized_yes","document_properties_linearized_no","print_progress_percent","additional_layers","page_landmark","thumb_page_title","thumb_page_canvas","find_reached_top","find_reached_bottom","find_not_found","error_version_info","error_message","error_stack","error_file","error_line","rendering_error","page_scale_width","page_scale_fit","page_scale_auto","page_scale_actual","page_scale_percent","loading_error","invalid_file_error","missing_file_error","unexpected_response_error","printing_not_supported","printing_not_ready","web_fonts_disabled","PARTIAL_LANG_CODES","en","es","fy","ga","gu","hi","hy","nb","ne","nn","pa","pt","sv","zh","langCode","NullL10n","getL10nFallback","formatL10nValue","MAX_CANVAS_PIXELS","destroy","_renderAnnotationLayer","_renderXfaLayer","_resetZoomLayer","removeFromDOM","zoomLayerCanvas","keepZoomLayer","keepAnnotationLayer","keepXfaLayer","childNodes","zoomLayerNode","annotationLayerNode","xfaLayerNode","redrawAnnotationLayer","redrawXfaLayer","cssTransform","timestamp","isScalingRestricted","relativeRotation","absRotation","scaleX","scaleY","textLayerViewport","textRelativeRotation","textAbsRotation","textLayerDiv","transX","transY","getPagePoint","canvasWrapper","textLayer","finishPaintTask","paintTask","readableStream","includeMarkedContent","tree","treeDom","paintOnCanvas","renderCapability","onRenderContinue","isCanvasHidden","showCanvas","actualSizeViewport","pixelsInViewport","maxScale","sfx","approximateFraction","sfy","roundToDivide","paintOnSvg","cancelled","ensureNotCancelled","opList","svgGfx","svg","wrapper","PDF_ROLE_TO_HTML_ROLE","Document","DocumentFragment","Part","Sect","Div","Aside","NonStruct","P","H","Title","FENote","Sub","Lbl","Span","Em","Strong","Link","Annot","Form","Ruby","RB","RT","RP","Warichu","WT","WP","L","LI","LBody","Table","TR","TH","TD","THead","TBody","TFoot","Caption","Figure","Formula","Artifact","HEADING_PATTERN","_setAttributes","structElement","htmlElement","_walk","role","EXPAND_DIVS_TIMEOUT","endOfContent","numTextDivs","textLayerFrag","textContentStream","textDivs","textContentItemsStr","setTextContentStream","setTextContent","_convertMatches","iIndex","end","m","mm","begin","divIdx","_renderMatches","isSelectedPage","selectedMatchIdx","prevEnd","infinity","appendTextToDiv","span","className","i0","i1","isSelected","highlightSuffix","beginText","n0","n1","_updateMatches","clearedUntilDivIdx","n","_bindMouse","expandDivsTimer","adjustTop","divBounds","xfa","XfaLayer","xfaHtml","eventName","eventDetails","lastPage","pageRotateCw","pageRotateCcw","isOpen","setPageNumber","setPagesCount","_bindClickListeners","details","_bindCursorToolsListener","buttons","_bindScrollModeListener","isScrollModeHorizontal","scrollModeChanged","_bindSpreadModeListener","spreadModeChanged","_setMaxHeight","_ensurePageViewVisible","previousPageView","viewerNodes","scrolledDown","PAGE_NUMBER_LOADING_INDICATOR","SCALE_SELECT_CONTAINER_WIDTH","SCALE_SELECT_WIDTH","scaleSelectContainer","scaleSelect","customScaleOption","next","setPageScale","_bindListeners","self","resetNumPages","pageScale","predefinedValueFound","option","updateLoadingIndicatorState","pageNumberInput","_adjustScaleWidth","predefinedValuesPromise","overflow","DEFAULT_VIEW_HISTORY_CACHE_SIZE","cacheSize","databaseStr","database","branch","_writeToStorage","localStorage","_readFromStorage","setMultiple","properties","getMultiple","values","GenericCom","prefs","prefValue","defaultValue","defaultType","obj","downloadUrl","createValidAbsoluteUrl","downloadData","blobUrl","createObjectURL","openOrDownloadData","isPdfData","isPdfFile","contentType","viewerUrl","encodeURIComponent","webL10n","fixupLangCode","getLanguage","getDirection","translate","gL10nData","gTextData","gTextProp","gLanguage","gMacros","gReadyState","gAsyncResourceLoading","script","l10nId","l10nArgs","onSuccess","onFailure","xhr","text","dictionary","reBlank","reComment","reSection","reImport","reSplit","entries","rawText","currentLang","genericLang","lang","skipLang","parsedRawLinesCallback","loadImport","tmp","evalString","nextEntry","xhrLoadText","parseRawLines","parsedPropertiesCallback","parseProperties","prop","successCallback","clear","langLinks","getL10nResourceLinks","langCount","dict","getL10nDictionary","defaultLocale","anyCaseLang","onResourceLoaded","gResourceCount","link","parseResource","resource","locales2rules","list","start","pluralRules","isBetween","getPluralRules","rv","substIndexes","substArguments","reIndex","reMatch","macroName","paramName","macro","reArgs","arg","getL10nAttributes","getL10nData","getChildElementCount","children","l","textNode","getTranslatableChildren","elementCount","translateElement","getData","getText","setLanguage","loadLocale","rtlList","shortCode","getReadyState","createSandbox","sandbox","dispatchEventInSandbox","destroySandbox","activeService","scratchCanvas","PRINT_UNITS","includeAnnotationStorage","PDFPrintService","layout","body","pageSize","ensureOverlay","renderPages","getXfaHtmlForPrinting","renderNextPage","renderProgress","renderPage","useRenderedPage","performPrint","print","throwIfInactive","activeServiceOnEntry","abort","progressContainer","progressBar","progressPerc","stopPropagationIfNeeded","overlayPromise","factory","builder","getXfaPageViewport","pdfjsVersion","pdfjsBuild","require","mainContainer","viewerContainer","viewFind","openFile","presentationModeButton","viewBookmark","toggleButton","toolbarButtonContainer","openFileButton","printButton","downloadButton","viewBookmarkButton","firstPageButton","lastPageButton","pageRotateCwButton","pageRotateCcwButton","cursorSelectToolButton","cursorHandToolButton","scrollVerticalButton","scrollHorizontalButton","scrollWrappedButton","spreadNoneButton","spreadOddButton","spreadEvenButton","documentPropertiesButton","sidebar","outerContainer","thumbnailButton","outlineButton","attachmentsButton","layersButton","outlineView","attachmentsView","layersView","outlineOptionsContainer","currentOutlineItemButton","sidebarResizer","resizer","findBar","findField","highlightAllCheckbox","caseSensitiveCheckbox","entireWordCheckbox","findResultsCount","findPreviousButton","findNextButton","passwordOverlay","overlayName","submitButton","cancelButton","documentProperties","fields","fileName","creationDate","modificationDate","debuggerScriptPath","config","getViewerConfiguration","webViewerLoad"],"mappings":"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","file":"viewer.js","sourcesContent":["/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { viewerCompatibilityParams } from \"./viewer_compatibility.js\";\n\nconst OptionKind = {\n VIEWER: 0x02,\n API: 0x04,\n WORKER: 0x08,\n PREFERENCE: 0x80,\n};\n\n/**\n * PLEASE NOTE: To avoid introducing unnecessary dependencies, we specify the\n * values below *explicitly* rather than relying on imported types.\n */\nconst defaultOptions = {\n cursorToolOnLoad: {\n /** @type {number} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n defaultUrl: {\n /** @type {string} */\n value: \"compressed.tracemonkey-pldi-09.pdf\",\n kind: OptionKind.VIEWER,\n },\n defaultZoomValue: {\n /** @type {string} */\n value: \"\",\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n disableHistory: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER,\n },\n disablePageLabels: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n enablePermissions: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n enablePrintAutoRotate: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n enableScripting: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n externalLinkRel: {\n /** @type {string} */\n value: \"noopener noreferrer nofollow\",\n kind: OptionKind.VIEWER,\n },\n externalLinkTarget: {\n /** @type {number} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n historyUpdateUrl: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n ignoreDestinationZoom: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n imageResourcesPath: {\n /** @type {string} */\n value: \"./images/\",\n kind: OptionKind.VIEWER,\n },\n maxCanvasPixels: {\n /** @type {number} */\n value: 16777216,\n compatibility: viewerCompatibilityParams.maxCanvasPixels,\n kind: OptionKind.VIEWER,\n },\n pdfBugEnabled: {\n /** @type {boolean} */\n value: typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\"),\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n printResolution: {\n /** @type {number} */\n value: 150,\n kind: OptionKind.VIEWER,\n },\n renderer: {\n /** @type {string} */\n value: \"canvas\",\n kind: OptionKind.VIEWER,\n },\n renderInteractiveForms: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n sidebarViewOnLoad: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n scrollModeOnLoad: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n spreadModeOnLoad: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n textLayerMode: {\n /** @type {number} */\n value: 1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n useOnlyCssZoom: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n viewerCssTheme: {\n /** @type {number} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n viewOnLoad: {\n /** @type {boolean} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n\n cMapPacked: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.API,\n },\n cMapUrl: {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../external/bcmaps/\"\n : \"../web/cmaps/\",\n kind: OptionKind.API,\n },\n disableAutoFetch: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n disableFontFace: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n disableRange: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n disableStream: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n docBaseUrl: {\n /** @type {string} */\n value: \"\",\n kind: OptionKind.API,\n },\n enableXfa: {\n /** @type {boolean} */\n value: typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\"),\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n fontExtraProperties: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API,\n },\n isEvalSupported: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.API,\n },\n maxImageSize: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.API,\n },\n pdfBug: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API,\n },\n standardFontDataUrl: {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../external/standard_fonts/\"\n : \"../web/standard_fonts/\",\n kind: OptionKind.API,\n },\n verbosity: {\n /** @type {number} */\n value: 1,\n kind: OptionKind.API,\n },\n\n workerPort: {\n /** @type {Object} */\n value: null,\n kind: OptionKind.WORKER,\n },\n workerSrc: {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../src/worker_loader.js\"\n : \"../build/pdf.worker.js\",\n kind: OptionKind.WORKER,\n },\n};\nif (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n) {\n defaultOptions.disablePreferences = {\n /** @type {boolean} */\n value: typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\"),\n kind: OptionKind.VIEWER,\n };\n defaultOptions.locale = {\n /** @type {string} */\n value: typeof navigator !== \"undefined\" ? navigator.language : \"en-US\",\n kind: OptionKind.VIEWER,\n };\n defaultOptions.sandboxBundleSrc = {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../build/dev-sandbox/pdf.sandbox.js\"\n : \"../build/pdf.sandbox.js\",\n kind: OptionKind.VIEWER,\n };\n\n defaultOptions.renderer.kind += OptionKind.PREFERENCE;\n} else if (PDFJSDev.test(\"CHROME\")) {\n defaultOptions.disableTelemetry = {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n };\n defaultOptions.sandboxBundleSrc = {\n /** @type {string} */\n value: \"../build/pdf.sandbox.js\",\n kind: OptionKind.VIEWER,\n };\n}\n\nconst userOptions = Object.create(null);\n\nclass AppOptions {\n constructor() {\n throw new Error(\"Cannot initialize AppOptions.\");\n }\n\n static get(name) {\n const userOption = userOptions[name];\n if (userOption !== undefined) {\n return userOption;\n }\n const defaultOption = defaultOptions[name];\n if (defaultOption !== undefined) {\n return defaultOption.compatibility ?? defaultOption.value;\n }\n return undefined;\n }\n\n static getAll(kind = null) {\n const options = Object.create(null);\n for (const name in defaultOptions) {\n const defaultOption = defaultOptions[name];\n if (kind) {\n if ((kind & defaultOption.kind) === 0) {\n continue;\n }\n if (kind === OptionKind.PREFERENCE) {\n const value = defaultOption.value,\n valueType = typeof value;\n\n if (\n valueType === \"boolean\" ||\n valueType === \"string\" ||\n (valueType === \"number\" && Number.isInteger(value))\n ) {\n options[name] = value;\n continue;\n }\n throw new Error(`Invalid type for preference: ${name}`);\n }\n }\n const userOption = userOptions[name];\n options[name] =\n userOption !== undefined\n ? userOption\n : defaultOption.compatibility ?? defaultOption.value;\n }\n return options;\n }\n\n static set(name, value) {\n userOptions[name] = value;\n }\n\n static setAll(options) {\n for (const name in options) {\n userOptions[name] = options[name];\n }\n }\n\n static remove(name) {\n delete userOptions[name];\n }\n}\n\nexport { AppOptions, OptionKind };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst compatibilityParams = Object.create(null);\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n const userAgent =\n (typeof navigator !== \"undefined\" && navigator.userAgent) || \"\";\n const platform =\n (typeof navigator !== \"undefined\" && navigator.platform) || \"\";\n const maxTouchPoints =\n (typeof navigator !== \"undefined\" && navigator.maxTouchPoints) || 1;\n\n const isAndroid = /Android/.test(userAgent);\n const isIOS =\n /\\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) ||\n (platform === \"MacIntel\" && maxTouchPoints > 1);\n const isIOSChrome = /CriOS/.test(userAgent);\n\n // Checks if possible to use URL.createObjectURL()\n // Support: IE, Chrome on iOS\n (function checkOnBlobSupport() {\n // Sometimes Chrome on iOS loses data created with createObjectURL(),\n // see issue #8081.\n if (isIOSChrome) {\n compatibilityParams.disableCreateObjectURL = true;\n }\n })();\n\n // Limit canvas size to 5 mega-pixels on mobile.\n // Support: Android, iOS\n (function checkCanvasSizeLimitation() {\n if (isIOS || isAndroid) {\n compatibilityParams.maxCanvasPixels = 5242880;\n }\n })();\n}\nconst viewerCompatibilityParams = Object.freeze(compatibilityParams);\n\nexport { viewerCompatibilityParams };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals PDFBug, Stats */\n\nimport {\n animationStarted,\n apiPageLayoutToSpreadMode,\n apiPageModeToSidebarView,\n AutoPrintRegExp,\n DEFAULT_SCALE_VALUE,\n EventBus,\n getActiveOrFocusedElement,\n isValidRotation,\n isValidScrollMode,\n isValidSpreadMode,\n MAX_SCALE,\n MIN_SCALE,\n noContextMenuHandler,\n normalizeWheelEventDirection,\n parseQueryString,\n ProgressBar,\n RendererType,\n ScrollMode,\n SidebarView,\n SpreadMode,\n TextLayerMode,\n} from \"./ui_utils.js\";\nimport { AppOptions, OptionKind } from \"./app_options.js\";\nimport {\n build,\n createPromiseCapability,\n getDocument,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n GlobalWorkerOptions,\n InvalidPDFException,\n isPdfFile,\n LinkTarget,\n loadScript,\n MissingPDFException,\n OPS,\n PDFWorker,\n PermissionFlag,\n shadow,\n UnexpectedResponseException,\n UNSUPPORTED_FEATURES,\n version,\n} from \"pdfjs-lib\";\nimport { CursorTool, PDFCursorTools } from \"./pdf_cursor_tools.js\";\nimport { PDFRenderingQueue, RenderingStates } from \"./pdf_rendering_queue.js\";\nimport { OverlayManager } from \"./overlay_manager.js\";\nimport { PasswordPrompt } from \"./password_prompt.js\";\nimport { PDFAttachmentViewer } from \"./pdf_attachment_viewer.js\";\nimport { PDFDocumentProperties } from \"./pdf_document_properties.js\";\nimport { PDFFindBar } from \"./pdf_find_bar.js\";\nimport { PDFFindController } from \"./pdf_find_controller.js\";\nimport { PDFHistory } from \"./pdf_history.js\";\nimport { PDFLayerViewer } from \"./pdf_layer_viewer.js\";\nimport { PDFLinkService } from \"./pdf_link_service.js\";\nimport { PDFOutlineViewer } from \"./pdf_outline_viewer.js\";\nimport { PDFPresentationMode } from \"./pdf_presentation_mode.js\";\nimport { PDFScriptingManager } from \"./pdf_scripting_manager.js\";\nimport { PDFSidebar } from \"./pdf_sidebar.js\";\nimport { PDFSidebarResizer } from \"./pdf_sidebar_resizer.js\";\nimport { PDFThumbnailViewer } from \"./pdf_thumbnail_viewer.js\";\nimport { PDFViewer } from \"./pdf_viewer.js\";\nimport { SecondaryToolbar } from \"./secondary_toolbar.js\";\nimport { Toolbar } from \"./toolbar.js\";\nimport { viewerCompatibilityParams } from \"./viewer_compatibility.js\";\nimport { ViewHistory } from \"./view_history.js\";\n\nconst DEFAULT_SCALE_DELTA = 1.1;\nconst DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000; // ms\nconst FORCE_PAGES_LOADED_TIMEOUT = 10000; // ms\nconst WHEEL_ZOOM_DISABLED_TIMEOUT = 1000; // ms\nconst ENABLE_PERMISSIONS_CLASS = \"enablePermissions\";\n\nconst ViewOnLoad = {\n UNKNOWN: -1,\n PREVIOUS: 0, // Default value.\n INITIAL: 1,\n};\n\nconst ViewerCssTheme = {\n AUTOMATIC: 0, // Default value.\n LIGHT: 1,\n DARK: 2,\n};\n\n// Keep these in sync with mozilla-central's Histograms.json.\nconst KNOWN_VERSIONS = [\n \"1.0\",\n \"1.1\",\n \"1.2\",\n \"1.3\",\n \"1.4\",\n \"1.5\",\n \"1.6\",\n \"1.7\",\n \"1.8\",\n \"1.9\",\n \"2.0\",\n \"2.1\",\n \"2.2\",\n \"2.3\",\n];\n// Keep these in sync with mozilla-central's Histograms.json.\nconst KNOWN_GENERATORS = [\n \"acrobat distiller\",\n \"acrobat pdfwriter\",\n \"adobe livecycle\",\n \"adobe pdf library\",\n \"adobe photoshop\",\n \"ghostscript\",\n \"tcpdf\",\n \"cairo\",\n \"dvipdfm\",\n \"dvips\",\n \"pdftex\",\n \"pdfkit\",\n \"itext\",\n \"prince\",\n \"quarkxpress\",\n \"mac os x\",\n \"microsoft\",\n \"openoffice\",\n \"oracle\",\n \"luradocument\",\n \"pdf-xchange\",\n \"antenna house\",\n \"aspose.cells\",\n \"fpdf\",\n];\n\nclass DefaultExternalServices {\n constructor() {\n throw new Error(\"Cannot initialize DefaultExternalServices.\");\n }\n\n static updateFindControlState(data) {}\n\n static updateFindMatchesCount(data) {}\n\n static initPassiveLoading(callbacks) {}\n\n static async fallback(data) {}\n\n static reportTelemetry(data) {}\n\n static createDownloadManager(options) {\n throw new Error(\"Not implemented: createDownloadManager\");\n }\n\n static createPreferences() {\n throw new Error(\"Not implemented: createPreferences\");\n }\n\n static createL10n(options) {\n throw new Error(\"Not implemented: createL10n\");\n }\n\n static createScripting(options) {\n throw new Error(\"Not implemented: createScripting\");\n }\n\n static get supportsIntegratedFind() {\n return shadow(this, \"supportsIntegratedFind\", false);\n }\n\n static get supportsDocumentFonts() {\n return shadow(this, \"supportsDocumentFonts\", true);\n }\n\n static get supportedMouseWheelZoomModifierKeys() {\n return shadow(this, \"supportedMouseWheelZoomModifierKeys\", {\n ctrlKey: true,\n metaKey: true,\n });\n }\n\n static get isInAutomation() {\n return shadow(this, \"isInAutomation\", false);\n }\n}\n\nconst PDFViewerApplication = {\n initialBookmark: document.location.hash.substring(1),\n _initializedCapability: createPromiseCapability(),\n _fellback: false,\n appConfig: null,\n pdfDocument: null,\n pdfLoadingTask: null,\n printService: null,\n /** @type {PDFViewer} */\n pdfViewer: null,\n /** @type {PDFThumbnailViewer} */\n pdfThumbnailViewer: null,\n /** @type {PDFRenderingQueue} */\n pdfRenderingQueue: null,\n /** @type {PDFPresentationMode} */\n pdfPresentationMode: null,\n /** @type {PDFDocumentProperties} */\n pdfDocumentProperties: null,\n /** @type {PDFLinkService} */\n pdfLinkService: null,\n /** @type {PDFHistory} */\n pdfHistory: null,\n /** @type {PDFSidebar} */\n pdfSidebar: null,\n /** @type {PDFSidebarResizer} */\n pdfSidebarResizer: null,\n /** @type {PDFOutlineViewer} */\n pdfOutlineViewer: null,\n /** @type {PDFAttachmentViewer} */\n pdfAttachmentViewer: null,\n /** @type {PDFLayerViewer} */\n pdfLayerViewer: null,\n /** @type {PDFCursorTools} */\n pdfCursorTools: null,\n /** @type {PDFScriptingManager} */\n pdfScriptingManager: null,\n /** @type {ViewHistory} */\n store: null,\n /** @type {DownloadManager} */\n downloadManager: null,\n /** @type {OverlayManager} */\n overlayManager: null,\n /** @type {Preferences} */\n preferences: null,\n /** @type {Toolbar} */\n toolbar: null,\n /** @type {SecondaryToolbar} */\n secondaryToolbar: null,\n /** @type {EventBus} */\n eventBus: null,\n /** @type {IL10n} */\n l10n: null,\n isInitialViewSet: false,\n downloadComplete: false,\n isViewerEmbedded: window.parent !== window,\n url: \"\",\n baseUrl: \"\",\n externalServices: DefaultExternalServices,\n _boundEvents: Object.create(null),\n documentInfo: null,\n metadata: null,\n _contentDispositionFilename: null,\n _contentLength: null,\n _saveInProgress: false,\n _wheelUnusedTicks: 0,\n _idleCallbacks: new Set(),\n\n // Called once when the document is loaded.\n async initialize(appConfig) {\n this.preferences = this.externalServices.createPreferences();\n this.appConfig = appConfig;\n\n await this._readPreferences();\n await this._parseHashParameters();\n this._forceCssTheme();\n await this._initializeL10n();\n\n if (\n this.isViewerEmbedded &&\n AppOptions.get(\"externalLinkTarget\") === LinkTarget.NONE\n ) {\n // Prevent external links from \"replacing\" the viewer,\n // when it's embedded in e.g. an