oysterun 1.6.0-beta.2 → 1.6.0-beta.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/bin/oysterun.mjs +64 -17
  2. package/dev/client/connectivity/completed-message-neighbor-click.mjs +78 -0
  3. package/dev/client/connectivity/completed-message-neighbor-contract.mjs +205 -0
  4. package/dev/client/connectivity/completed-message-visibility.d.mts +4 -4
  5. package/dev/client/connectivity/completed-message-visibility.mjs +14 -11
  6. package/dev/client/connectivity/desktop-chat-sidebar-preference.mjs +57 -0
  7. package/dev/client/connectivity/host-connection-feedback.mjs +12 -1
  8. package/dev/client/connectivity/managed-host-browser.mjs +10 -0
  9. package/dev/client/connectivity/session-navigation-intent.mjs +189 -0
  10. package/dev/client/connectivity/session-transition-state.mjs +18 -6
  11. package/dev/client/connectivity/test-completed-message-neighbor-click.mjs +180 -0
  12. package/dev/client/web/index.html +5367 -609
  13. package/dev/client/web-chat/dist/assets/{ReactPrism-BwJhidYf.js → ReactPrism-C6YiTZTC.js} +1 -1
  14. package/dev/client/web-chat/dist/assets/{ReactPrism-BwJhidYf.js.map → ReactPrism-C6YiTZTC.js.map} +1 -1
  15. package/dev/client/web-chat/dist/assets/SessionsSetupApp-CKJOSPFP.js +6442 -0
  16. package/dev/client/web-chat/dist/assets/SessionsSetupApp-CKJOSPFP.js.map +1 -0
  17. package/dev/client/web-chat/dist/assets/SessionsSetupApp-Dx09Uz-6.css +1 -0
  18. package/dev/client/web-chat/dist/assets/index-Ae5I4LHp.js +9 -0
  19. package/dev/client/web-chat/dist/assets/index-Ae5I4LHp.js.map +1 -0
  20. package/dev/client/web-chat/dist/assets/index-CN_FoTB1.js +2 -0
  21. package/dev/client/web-chat/dist/assets/index-CN_FoTB1.js.map +1 -0
  22. package/dev/client/web-chat/dist/assets/{index--1xmQ99x.js → index-DCQFwgGf.js} +2 -2
  23. package/dev/client/web-chat/dist/assets/{index--1xmQ99x.js.map → index-DCQFwgGf.js.map} +1 -1
  24. package/dev/client/web-chat/dist/assets/matrix-entry-BV7G38kH.css +10 -0
  25. package/dev/client/web-chat/dist/assets/matrix-entry-abAy3aOo.js +594 -0
  26. package/dev/client/web-chat/dist/assets/matrix-entry-abAy3aOo.js.map +1 -0
  27. package/dev/client/web-chat/dist/assets/{pdf-ZjtalfgI.js → pdf-DN7oVvM6.js} +5 -5
  28. package/dev/client/web-chat/dist/assets/pdf-DN7oVvM6.js.map +1 -0
  29. package/dev/client/web-chat/dist/assets/session-notice-DlyODy1z.css +1 -0
  30. package/dev/client/web-chat/dist/assets/web-BlYuDlOV.js +1 -0
  31. package/dev/client/web-chat/dist/assets/{web-c70YaskK.js.map → web-BlYuDlOV.js.map} +1 -1
  32. package/dev/client/web-chat/dist/assets/web-Dabw6cJi.js +1 -0
  33. package/dev/client/web-chat/dist/assets/{web-BzHcZK2M.js.map → web-Dabw6cJi.js.map} +1 -1
  34. package/dev/client/web-chat/dist/index.html +1 -2
  35. package/docs/routec/dev/cloud_deplyments.md +5 -0
  36. package/docs/routec/dev/npm_native_dependency_install.md +6 -2
  37. package/docs/routec/dev/npmjs_publish.md +55 -19
  38. package/docs/routec/dev/p262_setup_input_file.md +117 -0
  39. package/docs/routec/host2_turn_started_idempotency_diagnostics.md +8 -7
  40. package/docs/routec/host_setup.md +39 -10
  41. package/docs/routec/oysterun_operation_interface_spec.md +78 -2
  42. package/docs/routec/provider_contract.md +35 -5
  43. package/host-service/README.md +36 -0
  44. package/host-service/adapters/claude-code-adapter.mjs +48 -5
  45. package/host-service/adapters/codex-app-server-adapter.mjs +320 -18
  46. package/host-service/adapters/debug-fixture-provider-adapter.mjs +102 -1
  47. package/host-service/adapters/debug-large-tool-spillover-provider-adapter.mjs +2 -0
  48. package/host-service/adapters/debug-p135-codex-replay-provider-adapter.mjs +2 -0
  49. package/host-service/adapters/debug-routec-structural-replay-provider-adapter.mjs +2 -0
  50. package/host-service/agent-config.mjs +16 -5
  51. package/host-service/agent-folder-availability.mjs +41 -0
  52. package/host-service/apns-complete-message-dispatcher.mjs +1 -0
  53. package/host-service/assets/product-skills/Oysterun/modules/oysterun-find-context/SKILL.md +24 -0
  54. package/host-service/assets/product-skills/Oysterun/modules/oysterun-session-chat/SKILL.md +94 -5
  55. package/host-service/assets/product-skills/Oysterun/modules/oysterun-sessions/SKILL.md +103 -0
  56. package/host-service/assets/product-skills/Oysterun/modules/oysterun-website/SKILL.md +7 -0
  57. package/host-service/assets/product-skills/oysterun-find-context/SKILL.md +24 -0
  58. package/host-service/assets/product-skills/oysterun-session-chat/SKILL.md +94 -5
  59. package/host-service/assets/product-skills/oysterun-sessions/SKILL.md +103 -0
  60. package/host-service/assets/product-skills/oysterun-website/SKILL.md +7 -0
  61. package/host-service/callback-durable-store.mjs +354 -47
  62. package/host-service/callback-foundation.mjs +21 -1
  63. package/host-service/callback-host-integration.mjs +345 -30
  64. package/host-service/claude-acp-model-discovery.mjs +23 -18
  65. package/host-service/cli/assert-installer-reinstall-target.mjs +9 -0
  66. package/host-service/cli/installer-recovery-guidance.mjs +20 -0
  67. package/host-service/cli/prepare-restart-restore.mjs +2 -0
  68. package/host-service/cli/product-cli.mjs +34 -33
  69. package/host-service/cli/reconcile-initial-preflight.mjs +19 -0
  70. package/host-service/cli/recover-installer-lifecycle.mjs +24 -0
  71. package/host-service/cli/run-host-lifecycle.mjs +2 -0
  72. package/host-service/cli/run-staged-lifecycle-recovery.mjs +161 -0
  73. package/host-service/codex-model-discovery.mjs +23 -18
  74. package/host-service/complete-cli-uninstall.mjs +176 -0
  75. package/host-service/complete-message-notification-predicate.mjs +8 -6
  76. package/host-service/complete-message-notification-title.mjs +4 -0
  77. package/host-service/completed-session-unread.mjs +425 -42
  78. package/host-service/completed-turn-navigation.mjs +444 -144
  79. package/host-service/completed-turn-notification-observer.mjs +116 -0
  80. package/host-service/completed-turn-service.mjs +445 -0
  81. package/host-service/config.mjs +115 -9
  82. package/host-service/desired-open-session-state.mjs +331 -0
  83. package/host-service/fixtures/p218-completed-turn-notification.json +11 -0
  84. package/host-service/frp-agent.mjs +9 -9
  85. package/host-service/grok-acp-model-discovery.mjs +31 -33
  86. package/host-service/host-lifecycle-recovery.mjs +37 -0
  87. package/host-service/host-port-resolution.mjs +98 -0
  88. package/host-service/host-runtime-diagnostics.mjs +18 -1
  89. package/host-service/initial-preflight-recovery.mjs +71 -0
  90. package/host-service/installer-recovery-guidance.mjs +85 -0
  91. package/host-service/installer-reinstall-bindings.mjs +49 -0
  92. package/host-service/installer-reinstall-target.mjs +49 -0
  93. package/host-service/legacy-continuity-observation.mjs +33 -0
  94. package/host-service/lifecycle-compat-cli.mjs +13 -0
  95. package/host-service/lifecycle-compat-preload.mjs +89 -0
  96. package/host-service/lifecycle-compatibility.mjs +164 -0
  97. package/host-service/lifecycle-continuity-assets.mjs +222 -0
  98. package/host-service/lifecycle-continuity-probe.mjs +97 -0
  99. package/host-service/lifecycle-continuity-projection.mjs +29 -0
  100. package/host-service/lifecycle-continuity-runner.mjs +192 -0
  101. package/host-service/lifecycle-continuity.mjs +493 -0
  102. package/host-service/lifecycle-service-render-bundle.mjs +120 -0
  103. package/host-service/lifecycle-user-path.mjs +34 -0
  104. package/host-service/link-annotations.mjs +10 -0
  105. package/host-service/matrix-credential-issuer.mjs +32 -1
  106. package/host-service/matrix-event-correlator.mjs +166 -27
  107. package/host-service/matrix-facade.mjs +96 -19
  108. package/host-service/matrix-room-binding.mjs +24 -0
  109. package/host-service/matrix-transcript-read-adapter.mjs +17 -3
  110. package/host-service/model-discovery-guardian.mjs +40 -0
  111. package/host-service/model-discovery-process.mjs +141 -0
  112. package/host-service/onboard-lifecycle-status.mjs +28 -0
  113. package/host-service/onboard.mjs +479 -0
  114. package/host-service/package.json +2 -1
  115. package/host-service/portable-scheduler-definitions.mjs +28 -0
  116. package/host-service/product-runtime-host-origin.mjs +22 -0
  117. package/host-service/provider-model-params.mjs +14 -17
  118. package/host-service/provider-model-refresh-runner.mjs +124 -169
  119. package/host-service/provider-model-refresh-schedule.mjs +11 -0
  120. package/host-service/provider-resume-contract.mjs +9 -3
  121. package/host-service/restart-restore-state.mjs +25 -0
  122. package/host-service/retained-host-state-holder.mjs +57 -0
  123. package/host-service/routec-matrix-sqlite-store.mjs +155 -10
  124. package/host-service/routec-matrix-storage-adapter.mjs +208 -25
  125. package/host-service/routec-matrix-storage-paths.mjs +12 -0
  126. package/host-service/routec-request-delay-window.mjs +55 -0
  127. package/host-service/scheduler-acp-provider-runner.mjs +2 -1
  128. package/host-service/scheduler-direct-provider-runner.mjs +71 -9
  129. package/host-service/scheduler-run-timeout-policy.mjs +85 -0
  130. package/host-service/scheduler-service.mjs +96 -9
  131. package/host-service/scheduler-store.mjs +9 -2
  132. package/host-service/server.mjs +2202 -552
  133. package/host-service/service-definition-migration.mjs +10 -3
  134. package/host-service/session-collection-service.mjs +320 -0
  135. package/host-service/session-history.mjs +99 -15
  136. package/host-service/session-list-preview-service.mjs +87 -12
  137. package/host-service/session-list-projection-service.mjs +182 -0
  138. package/host-service/session-loop-definitions.mjs +702 -75
  139. package/host-service/session-manager.mjs +473 -38
  140. package/host-service/session-switcher-projection.mjs +11 -3
  141. package/host-service/session-tags.mjs +451 -0
  142. package/host-service/session-transcript-target.mjs +103 -0
  143. package/host-service/setup-input-file.mjs +91 -0
  144. package/host-service/setup-provider-model-defaults.mjs +53 -0
  145. package/host-service/setup.mjs +133 -101
  146. package/host-service/stopped-user-host-package.mjs +60 -0
  147. package/host-service/test-fixtures/p236-navigation-original.mjs +500 -0
  148. package/host-service/update-reminder-state.mjs +7 -0
  149. package/host-service/voice-input-receipt-store.mjs +60 -0
  150. package/package.json +1 -1
  151. package/static/oysterun-social-preview.png +0 -0
  152. package/static/site/assets/oysterun-social-preview.png +0 -0
  153. package/static/site/blog/en/index.html +17 -0
  154. package/static/site/blog/generated_manifest.json +9 -9
  155. package/static/site/blog/index.html +18 -0
  156. package/static/site/blog/voice-input-model-experiment/en/index.html +17 -0
  157. package/static/site/blog/voice-input-model-experiment/zh/index.html +17 -0
  158. package/static/site/blog/zh/index.html +17 -0
  159. package/static/site/docs/choose-and-recover-a-provider/en/index.html +17 -0
  160. package/static/site/docs/choose-and-recover-a-provider/zh/index.html +17 -0
  161. package/static/site/docs/configure-session-files-and-settings/en/index.html +17 -0
  162. package/static/site/docs/configure-session-files-and-settings/zh/index.html +17 -0
  163. package/static/site/docs/en/index.html +17 -0
  164. package/static/site/docs/generated_manifest.json +60 -60
  165. package/static/site/docs/host-authentication-and-connection/en/index.html +17 -0
  166. package/static/site/docs/host-authentication-and-connection/zh/index.html +17 -0
  167. package/static/site/docs/index.html +18 -0
  168. package/static/site/docs/install-and-use-a-skill/en/index.html +17 -0
  169. package/static/site/docs/install-and-use-a-skill/zh/index.html +17 -0
  170. package/static/site/docs/read-large-tool-results/en/index.html +17 -0
  171. package/static/site/docs/read-large-tool-results/zh/index.html +17 -0
  172. package/static/site/docs/recover-from-a-host-runtime-error/en/index.html +17 -0
  173. package/static/site/docs/recover-from-a-host-runtime-error/zh/index.html +17 -0
  174. package/static/site/docs/restore-work-after-a-host-restart/en/index.html +17 -0
  175. package/static/site/docs/restore-work-after-a-host-restart/zh/index.html +17 -0
  176. package/static/site/docs/send-images-and-media/en/index.html +17 -0
  177. package/static/site/docs/send-images-and-media/zh/index.html +17 -0
  178. package/static/site/docs/set-up-and-understand-a-host/en/index.html +17 -0
  179. package/static/site/docs/set-up-and-understand-a-host/zh/index.html +17 -0
  180. package/static/site/docs/understand-agent-activity/en/index.html +19 -2
  181. package/static/site/docs/understand-agent-activity/en/index.md +2 -2
  182. package/static/site/docs/understand-agent-activity/zh/index.html +19 -2
  183. package/static/site/docs/understand-agent-activity/zh/index.md +2 -2
  184. package/static/site/docs/use-the-oysterun-cli-safely/en/index.html +17 -0
  185. package/static/site/docs/use-the-oysterun-cli-safely/zh/index.html +17 -0
  186. package/static/site/docs/zh/index.html +17 -0
  187. package/static/site/en/index.html +18 -1
  188. package/static/site/en/index.md +1 -1
  189. package/static/site/faq/en/index.html +17 -0
  190. package/static/site/faq/index.html +18 -0
  191. package/static/site/faq/zh/index.html +17 -0
  192. package/static/site/getting-started/en/index.html +23 -1
  193. package/static/site/getting-started/en/index.md +7 -1
  194. package/static/site/getting-started/index.html +18 -0
  195. package/static/site/getting-started/zh/index.html +23 -1
  196. package/static/site/getting-started/zh/index.md +7 -1
  197. package/static/site/index.html +18 -0
  198. package/static/site/install.sh +676 -127
  199. package/static/site/overview/en/index.html +18 -1
  200. package/static/site/overview/en/index.md +2 -2
  201. package/static/site/overview/index.html +18 -0
  202. package/static/site/overview/zh/index.html +18 -1
  203. package/static/site/overview/zh/index.md +2 -2
  204. package/static/site/privacy/en/index.html +17 -0
  205. package/static/site/privacy/index.html +18 -0
  206. package/static/site/privacy/zh/index.html +17 -0
  207. package/static/site/zh/index.html +18 -1
  208. package/static/site/zh/index.md +1 -1
  209. package/static/site_source/content/tutorials/published/understand-agent-activity/en/article.html +2 -2
  210. package/static/site_source/content/tutorials/published/understand-agent-activity/zh/article.html +2 -2
  211. package/static/site_source/downloads/install.sh +676 -127
  212. package/static/site_source/manifests/host_install.json +2 -10
  213. package/static/site_source/pages/getting-started/en.html +6 -1
  214. package/static/site_source/pages/getting-started/zh.html +6 -1
  215. package/static/site_source/pages/home/en.html +1 -1
  216. package/static/site_source/pages/home/zh.html +1 -1
  217. package/static/site_source/pages/home_main.html +3 -2
  218. package/static/site_source/pages/overview/en.html +1 -1
  219. package/static/site_source/pages/overview/zh.html +1 -1
  220. package/tool_scripts/install_oysterun_update.mjs +78 -13
  221. package/tool_scripts/oysterun_continuity_transaction.mjs +438 -0
  222. package/tool_scripts/oysterun_npm_package_manifest.mjs +32 -0
  223. package/tool_scripts/oysterun_release_service.sh +5 -0
  224. package/tool_scripts/oysterun_service_common.sh +59 -24
  225. package/tool_scripts/oysterun_setup_input.sh +97 -0
  226. package/tool_scripts/oysterun_update_restart_runner.mjs +19 -3
  227. package/tool_scripts/p233_legacy_bootstrap.mjs +254 -0
  228. package/tool_scripts/resolve_user_host_port.mjs +15 -0
  229. package/tool_scripts/restart_oysterun.sh +8 -2
  230. package/tool_scripts/stack_dashboard_credentials.mjs +2 -1
  231. package/tool_scripts/status_oysterun_launch_agents.sh +13 -1
  232. package/tool_scripts/sync_host_stack_config.mjs +9 -6
  233. package/tool_scripts/test_environment_remote_cloud_deprovision.mjs +419 -0
  234. package/tool_scripts/uninstall_oysterun_launch_agents.sh +3 -5
  235. package/dev/client/web-chat/dist/assets/index-Ce9NZBZf.js +0 -129
  236. package/dev/client/web-chat/dist/assets/index-Ce9NZBZf.js.map +0 -1
  237. package/dev/client/web-chat/dist/assets/index-DzIClZ3T.js +0 -2
  238. package/dev/client/web-chat/dist/assets/index-DzIClZ3T.js.map +0 -1
  239. package/dev/client/web-chat/dist/assets/index-NYnaSGBb.css +0 -1
  240. package/dev/client/web-chat/dist/assets/pdf-ZjtalfgI.js.map +0 -1
  241. package/dev/client/web-chat/dist/assets/web-BzHcZK2M.js +0 -1
  242. package/dev/client/web-chat/dist/assets/web-c70YaskK.js +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"mappings":"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","names":["__webpack_modules__","__unused_webpack___webpack_module__","__webpack_exports__","__webpack_require__","InkAnnotationElement","display_utils","annotation_storage","makeColorComp","n","scaleAndClamp","x","ColorConverters","y","m","g","G","r","b","color","c","k","components","rgb","xfa_layer","rect","AnnotationElementFactory","parameters","util","LinkAnnotationElement","TextAnnotationElement","TextWidgetAnnotationElement","RadioButtonWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","AnnotationElement","#hasBorder","isRenderable","createQuadrilaterals","ignoreBorder","richText","titleObj","#updates","params","#setRectEdited","style","rotation","pageX","width","height","pageWidth","pageHeight","page","data","DEFAULT_TAB_INDEX","container","getRectDims","horizontalRadius","radius","borderColor","pageY","viewport","angle","elementWidth","elementHeight","setColor","event","colorType","hidden","display","jsEvent","name","element","storedData","commonActions","actionName","action","eventProxy","detail","quadPoints","rectTrX","rectTrY","trY","blY","trX","blX","rectBlY","svgBuffer","borderWidth","svg","svgFactory","defs","clipPath","rectWidth","rectHeight","popup","fieldObj","id","exportValues","skipId","exportValue","domElement","GetElementsByNameSet","fields","triggers","mode","options","link","isBound","#bindSetOCGState","#setInternalLink","destination","attachment","dest","map","jsName","otherClickAction","resetFormFields","include","allFields","fieldIds","fieldName","field","allIds","storage","value","image","baseName","elementData","eventName","names","getter","fontSize","DEFAULT_FONT_SIZE","computedFontSize","BORDER_SIZE","numberOfLines","fontColor","TEXT_ALIGNMENT","base","key","keyInStorage","textContent","fieldFormattedValues","maxLen","target","actions","formattedValue","charLimit","commitKey","blurListener","_blurListener","selStart","selectionStart","selEnd","match","selectionEnd","SignatureWidgetAnnotationElement","CheckboxWidgetAnnotationElement","checked","curChecked","checkbox","defaultValue","radio","linkElement","selectElement","option","optionElement","removeEmptyEntry","noneOptionElement","isExport","getValue","getItems","values","selectedValues","displayValue","selectChild","items","item","change","elements","PopupElement","elementIds","#boundKeyDown","#keyDown","#boundHide","#hide","#show","#boundToggle","#toggle","#container","#dateObj","#parent","#parentRect","#pinned","#rect","#richText","parent","parentRect","open","#titleObj","#elements","modificationDate","e","#popup","#color","baseColor","header","title","contentsObj","contents","useParentRect","view","parentWidth","normalizedRect","popupLeft","popupTop","str","dir","lines","i","ii","line","p","#wasVisible","content","lineSpan","SquareAnnotationElement","square","#square","CircleAnnotationElement","circle","points","coordinate","polyline","#polyline","#polylines","inkList","FileAttachmentAnnotationElement","#trigger","filename","trigger","#download","evt","isMac","AnnotationLayer","#annotationCanvasMap","#editableAnnotations","annotationCanvasMap","annotationEditorUIManager","#accessibilityManager","accessibilityManager","#appendElement","contentElement","layer","popupToElements","annotations","isPopupAnnotation","elementParams","#setAnnotationCanvasMap","firstChild","canvas","SerializableEmpty","_editor_editor_js__WEBPACK_IMPORTED_MODULE_1__","#storage","modified","obj","entry","val","#setModified","#modified","PrintAnnotationStorage","context","hasBitmap","serialized","hash","editorStats","stats","counters","count","type","editor","#serializable","transfer","clone","_shared_util_js__WEBPACK_IMPORTED_MODULE_0__","__webpack_module__","getDocument","src","task","PDFDocumentLoadingTask","docId","url","getUrlProp","getDataProp","httpHeaders","rangeTransport","DEFAULT_RANGE_CHUNK_SIZE","PDFWorker","verbosity","_display_utils_js__WEBPACK_IMPORTED_MODULE_2__","cMapPacked","CMapReaderFactory","DefaultStandardFontDataFactory","ignoreErrors","isEvalSupported","disableFontFace","fontExtraProperties","enableXfa","ownerDocument","disableRange","disableAutoFetch","pdfBug","length","useSystemFonts","useWorkerFetch","cMapUrl","standardFontDataUrl","canvasFactory","DefaultFilterFactory","styleElement","filterFactory","transportFactory","StandardFontDataFactory","worker","workerParams","_worker_options_js__WEBPACK_IMPORTED_MODULE_14__","fetchDocParams","password","rangeChunkSize","isOffscreenCanvasSupported","canvasMaxAreaInBytes","transportParams","workerIdPromise","networkStreamPromise","resolve","networkStream","display_fetch_stream__WEBPACK_IMPORTED_MODULE_11__","display_node_stream__WEBPACK_IMPORTED_MODULE_13__","display_network__WEBPACK_IMPORTED_MODULE_12__","disableStream","messageHandler","transport","WorkerTransport","Buffer","isRefProxy","ref","build","__webpack_async_dependencies__","RENDERING_CANCELLED_TIMEOUT","DELAYED_CLEANUP_TIMEOUT","display_node_utils__WEBPACK_IMPORTED_MODULE_4__","source","#docId","ex","contentDispositionFilename","initialData","listener","loaded","total","chunk","begin","end","PDFDocumentProxy","pdfInfo","pageNumber","intent","#delayedCleanupTimeout","#pendingCleanup","pageIndex","scale","offsetX","offsetY","dontFlip","renderingIntent","canvasContext","annotationMode","transform","pageColors","intentArgs","intentState","complete","error","intentPrint","internalRenderTask","InternalRenderTask","optionalContentConfigPromise","optionalContentConfig","transparency","operatorListChanged","printAnnotationStorage","opListTask","disableNormalization","xfa","pump","reject","waitOn","resetStats","success","delayed","#abortDelayedCleanup","cacheKey","operatorListChunk","#tryCleanup","annotationStorageSerializable","reader","done","force","reason","curIntentState","#deferred","#listeners","PDFWorkerUtil","other","otherUrl","#workerPorts","port","_shared_message_handler_js__WEBPACK_IMPORTED_MODULE_7__","workerSrc","terminateEarly","onWorkerError","sendTest","WorkerMessageHandler","LoopbackPort","cachedPort","#mainThreadWorkerMessageHandler","loader","#methodPromises","#pagePromises","#pageRefCache","#passwordCapability","loadingTask","factory","PDFObjects","#cacheSimpleMethod","promise","isOpList","_annotation_storage_js__WEBPACK_IMPORTED_MODULE_1__","#pageCache","terminated","_text_layer_js__WEBPACK_IMPORTED_MODULE_6__","sink","headersCapability","fullReader","rangeReader","updatePassword","exception","exportedError","exportedData","inspectFont","font","imageRef","pageProxy","imageData","cachedPromise","_optional_content_config_js__WEBPACK_IMPORTED_MODULE_9__","results","_metadata_js__WEBPACK_IMPORTED_MODULE_8__","keepLoadedFonts","INITIAL_DATA","#ensureObj","#objs","objId","RenderTask","#internalRenderTask","extraDelay","#canvasInUse","commonObjs","operatorList","useRequestAnimationFrame","__webpack_async_result__","BaseCMapReaderFactory","BaseCanvasFactory","BaseFilterFactory","maps","fgColor","newFgColor","newBgColor","canvasAndContext","baseUrl","isCompressed","BaseStandardFontDataFactory","BaseSVGFactory","skipDimensions","PathType","bbox","region","BaseShadingPattern","RadialAxialShadingPattern","IR","ctx","grad","colorStop","pattern","pathType","owner","ownerBBox","tmpCtx","inverse","applyBoundingBox","tmpCanvas","domMatrix","drawTriangle","p1","p3","c1","c2","c3","coords","rowSize","p2","tmp","x1","x2","x3","y1","y3","c1r","colors","c1g","c2r","c2b","c3g","c3b","minY","xa","car","cag","cab","xb","cbr","cbg","cbb","maxY","y2","c1b","c3r","c2g","x1_","j","bytes","figure","cs","verticesPerRow","rows","ps","q","MeshShadingPattern","combinedScale","backgroundColor","boundsWidth","scaleX","scaleY","paddedWidth","drawFigure","matrixScale","temporaryPatternCanvas","DummyShadingPattern","canvasGraphicsFactory","baseTransform","x0","y0","curMatrixScale","xstep","dimx","dimy","graphics","adjustedX0","adjustedY0","adjustedX1","adjustedY1","realOutputSize","step","maxSize","size","bboxWidth","bboxHeight","paintType","current","PaintType","cssColor","matrix","convertBlackAndWhiteToRGBA","srcPos","nonBlackColor","inverseDecode","zeroMapping","oneMapping","black","srcLength","max","widthInSource","elem","destPos","widthRemainder","MAX_FONT_SIZE","MAX_SIZE_TO_COMPILE","destCtx","a","f","rule","cp1x","cp2y","cp2x","canvasEntry","drawImageAtIntegerCoords","srcX","srcY","srcW","srcH","destX","destY","destW","destH","d","ty","tx","rTlX","tlX","rTlY","brX","rWidth","brY","rHeight","tlY","srcImg","compileType3Glyph","width1","j0","pos","mask","lineSize","sum","POINT_TYPES","POINT_TO_PROCESS_LIMIT","path","p0","steps","pp","CanvasExtraState","p4","minMax","box","xStrokePad","yStrokePad","putBinaryImageData","imgData","fullChunks","partialChunkHeight","FULL_CHUNK_HEIGHT","totalChunks","chunkImgData","dest32","dest32DataLength","white","thisChunkHeight","srcDiff","fullSrcDiff","kEndUnrolled","kEnd","srcByte","elemsInThisChunk","putBinaryImageMask","copyCtxState","sourceCtx","properties","property","resetCtxToDefault","filter","composeSMaskBackdrop","r0","g0","b0","alpha","layerData","transferMap","maskData","genericComposeSMask","maskCtx","hasBackdrop","backdrop","composeFn","subtype","composeSMaskLuminosity","composeSMaskAlpha","row","maskOffsetX","chunkHeight","layerCtx","layerOffsetY","composeSMask","layerBox","layerOffsetX","layerWidth","layerHeight","smask","getImageSmoothingEnabled","interpolate","actualScale","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","objs","fallback","background","savedFillStyle","transparentCanvas","executionStartIdx","continueCallback","stepper","argsArray","fnArray","argsArrayLen","chunkOperations","EXECUTION_STEPS","endTime","EXECUTION_TIME","fnId","objsPool","depObjId","#restoreInitialState","cache","img","widthScale","inverseTransform","paintWidth","newHeight","paintHeight","newWidth","heightScale","tmpCanvasId","fillColor","isPatternFill","currentTransform","scaled","maskCanvas","mainKey","cachedImage","maskToCanvas","minX","fillCanvas","drawnWidth","drawnHeight","fillCtx","flatness","inSMaskMode","mirrorContextOperations","dirtyBox","old","ops","minMaxForBezier","isScalingMatrix","args","xw","yh","startX","startY","consumePath","strokeColor","needRestore","intersect","paths","spacing","leading","fontRefName","fontObj","typeface","bold","italic","MIN_FONT_SIZE","browserFontSize","rise","patternTransform","textRenderingMode","patternFill","addToPath","fillStrokeMode","character","isAddToPathSet","enabled","glyphs","textHScale","fontDirection","glyphsLength","spacingDir","vertical","defaultVMetrics","simpleFillText","lineWidth","fontSizeScale","chars","glyph","widthAdvanceScale","accent","scaledY","vmetric","vx","vy","scaledX","measuredWidth","restoreNeeded","characterScaleX","scaledAccentX","charWidth","charSpacing","wordSpacing","isTextInvisible","spacingLength","fontMatrix","xWidth","yWidth","llx","lly","urx","ury","TilingPattern","inv","currentCtx","group","bounds","canvasBounds","MAX_GROUP_SIZE","cacheId","scratchCanvas","groupCtx","currentMtx","hasOwnCanvas","canvasWidth","canvasHeight","viewportScale","#drawFilter","skewX","skewY","trans","positions","bitmap","imgToPaint","h","w","tag","isEmpty","clipBox","absDet","normX","normY","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","op","CanvasGraphics","DOMSVGFactory","PDFDateString","PageViewport","StatTimer","getCurrentTransform","getPdfFilenameFromUrl","getRGB","isDataScheme","isPdfFile","_shared_util_js__WEBPACK_IMPORTED_MODULE_1__","SVG_NS","DOMFilterFactory","#_cache","#_defs","#document","#cache","#hcmCache","#_hcmCache","div","tableR","tableG","buffer","mapB","bufferR","bufferG","mapG","#id","#addTransferMapConversion","tableB","bgColor","filterName","info","fgRGB","table","#addGrayConversion","start","bgRGB","arr","getSteps","#getRGB","bgGray","newFgRGB","newBgRGB","fgGray","fg","newStep","bg","newStart","prev","#createFilter","keepHCM","feColorMatrix","func","feFunc","feComponentTransfer","rTable","gTable","bTable","#appendFeFunc","#defs","fetchData","response","request","DOMCMapReaderFactory","compressionType","_base_factory_js__WEBPACK_IMPORTED_MODULE_0__","viewBox","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","topLeft","bottomRight","RenderingCancelledException","msg","getFilenameFromUrl","onlyStripPath","defaultFilename","reURI","reFilename","splitURI","suggestedFilename","longest","outBuf","isValidFetchUrl","protocol","noContextMenu","input","pdfDateStringRegex","matches","year","month","day","hour","minute","second","universalTimeRelation","offsetHour","offsetMinute","getXfaPageViewport","xfaPage","colorRGB","span","computedColor","getCurrentTransformInverse","mustFlip","mustRotate","widthStr","useRound","heightStr","DrawLayer","_display_utils_js__WEBPACK_IMPORTED_MODULE_0__","#mapping","#toUpdate","root","#setBox","#createSVG","clipPathId","clipPathUse","opacity","outlines","pathId","#createClipPath","use","use1","maskId","className","AnnotationEditorLayer","editor_editor","annotation_layer","EOL_PATTERN","FreeTextEditor","#boundEditorDivBlur","#content","proto","arrowChecker","self","small","tools","big","#fontSize","l10n","uiManager","#updateFontSize","#updateColor","#setEditorDimensions","setFontsize","col","savedColor","#boundEditorDivPaste","#editorDivId","#extractText","parentHeight","currentLayer","savedDisplay","savedVisibility","paste","selection","range","#setContent","beforeLength","acc","newRange","#serializeContent","textPosition","#deserializeContent","#initialData","isForCopying","padding","annotation","color_picker","#anchorOffset","#boxes","#colorPicker","#focusOutlines","#focusNode","#focusOffset","#highlightOutlines","#isFreeHighlight","#lastPoint","#opacity","#outlineId","#methodOfCreation","HighlightEditor","#thickness","#text","#addToDrawLayer","#createOutlines","outlinerForOutline","highlightOutlines","#updateThickness","thickness","savedThickness","setThickness","th","#getRotation","#cleanDrawLayer","mustBeSelected","#changeThickness","#createFreeOutlines","#clipPathId","#highlightDiv","#rotateBbox","drawLayer","#boundKeydown","highlightDiv","#keydown","direction","#setCaret","#anchorNode","visible","#serializeBoxes","boxes","sy","sx","#serializeOutlines","isLTR","textLayer","layerX","layerY","pointerMove","#highlightMove","pointerDown","pointerUpCallback","pointerDownOptions","#endHighlight","InkEditor","#baseHeight","#boundCanvasPointermove","#boundCanvasPointerup","#boundCanvasPointerdown","#canvasContextMenuTimeoutId","#currentPath2D","#disableEditing","#hasSomethingToDraw","#isCanvasInitialized","#realWidth","#requestFrameCallback","#updateOpacity","setOpacity","#redraw","savedOpacity","#createObserver","#setCanvasDims","#fitToContent","#observer","#getInitialBBox","parentRotation","#setStroke","scaleFactor","parentScale","#startDrawing","#drawPoints","#draw","lastY","currentPath","path2D","#makeBezierCurve","#endPath","#generateBezierPoints","xy","cmd","bezier","undo","#createCanvas","lastPoints","prevX","prevY","control1","control2","bezierPoints","#updateTransform","#endDrawing","#boundCanvasPointerleave","entries","baseX","baseY","roundedHeight","roundedWidth","#realHeight","#setScaleFactor","scaleFactorW","scaleFactorH","#getPadding","first","#fromPDFCoordinates","#serializePaths","shiftX","shiftY","s","jj","p10","p11","p20","p21","p31","p41","p30","p40","#toPDFCoordinates","#getBbox","xMax","yMin","xMin","yMax","prevTranslationY","unscaledPadding","firstTime","prevTranslationX","#buildPath2D","#baseWidth","StampEditor","#bitmapUrl","#bitmapFile","#bitmapFileName","#canvas","#resizeTimeoutId","#isSvg","#hasBeenAddedInUndoStack","types","mime","#getBitmapFetched","#bitmap","fromId","#bitmapId","#getBitmapDone","#bitmapPromise","#getBitmap","MAX_RATIO","factor","#drawBitmap","#setDimensions","TIME_TO_WAIT","#scaleBitmap","bitmapWidth","offscreen","prevWidth","prevHeight","fileReader","altText","blob","#serializeBitmap","toUrl","bitmapUrl","bitmapId","isSvg","accessibilityData","decorative","area","prevData","#annotationLayer","#boundPointerup","#boundPointerdown","#boundTextLayerPointerDown","#editorFocusTimeoutId","#hadPointerDown","#isCleaningUp","#isDisabling","#editorTypes","editorType","editorTypes","#uiManager","#editors","#cleanup","classList","isCommitting","isEditing","annotationElementIds","editables","editable","changedAnnotations","resetAnnotations","#textLayer","#textLayerPointerDown","annotationElementId","activeElement","#createNewEditor","isCentered","#getCenterPoint","#allowClick","oldRotation","ColorPicker","_tools_js__WEBPACK_IMPORTED_MODULE_1__","#pointerDown","#button","#buttonSwatch","#dropdownWasFromKeyboard","#isMainColorPicker","#type","#editor","#defaultColor","button","swatch","dropdown","#getDropdownRoot","#colorSelect","#eventBus","#isDropdownVisible","#openDropdown","#dropdown","#boundPointerDown","child","#altText","#altTextDecorative","#altTextButton","#altTextTooltip","#altTextTooltipTimeout","#altTextWasFromKeyBoard","l10nPromise","AltText","onClick","#setState","tooltip","DELAY_TO_SHOW_TOOLTIP","toolbar","AnnotationEditor","#keepAspectRatio","#resizersDiv","#savedDimensions","#boundFocusout","#editToolbar","#focusedResizerName","#isEditing","#isInEditMode","#moveInDOMTimeout","#prevDragX","#telemetryTimeouts","#zIndex","resize","fakeEditor","_uiManager","_type","_value","#isDraggable","#stopResizing","#hasBeenClicked","#translate","#initialPosition","bx","by","_borderLineWidth","#rotatePoint","#getRotationMatrix","scaledWidth","scaledHeight","widthPercent","heightPercent","#createResizers","classes","#resizerPointerdown","boundResizerPointermove","#resizerPointermove","pointerMoveOptions","savedY","savedWidth","savedHeight","savedParentCursor","savedCursor","savedDraggable","savedX","newY","round","rotationMatrix","invRotationMatrix","getPoint","isDiagonal","getOpposite","isHorizontal","point","transfOppositePoint","deltaX","deltaY","oldDiag","oppositePoint","minWidth","minHeight","ratioY","transf","oppositeX","newX","#disabled","#selectOnPointerEvent","#setUpDragSession","isSelected","#prevDragY","#boundFocusin","_angle","timeout","#allResizerDivs","children","#resizerBlur","boundResizerBlur","firstPosition","nextFirstPosition","#setResizerTabIndex","#isResizerEnabledForKeyboard","#resizerFocus","#addResizeToUndoStack","aspectRatio","mustWait","FakeEditor","Outliner","#box","#verticalEdges","#intervals","innerMargin","maxX","EPSILON","right","shiftedMinX","shiftedMinY","lastEdge","lastPoint","edge","#breakEdge","#insert","#remove","outlineVerticalEdges","#getOutlines","edges","allEdges","edge2","edge1","outline","lastPointX","lastPointY","HighlightOutline","array","middle","index","#binarySearch","y4","FreeHighlightOutline","Outline","#outlines","polygon","#bottom","#isLTR","#top","#lastY","#points","#MIN_DIFF","#MIN","FreeOutliner","#MIN_DIST","#min","#last","lastTop","lastBottom","#lastX","diffX","diffY","#min_dist","nX","diffD","nY","thX","thY","top","bottom","lastTopY","lastBottomX","lastBottomY","#getLastCoords","lastTopX","last","#scaleFactor","#innerMargin","#bbox","#outline","#computeMinMax","#rescale","#rescaleAndSwap","lastX","ltrCallback","outliner","EditorToolbar","#toolbar","#buttons","editToolbar","buttons","position","#addDeleteButton","#focusOut","#addListenersToElement","#focusIn","#divider","divider","colorPicker","HighlightToolbar","#render","#addHighlightButton","#getLastPoint","AnnotationEditorUIManager","ColorManager","opacityToHex","_display_utils_js__WEBPACK_IMPORTED_MODULE_1__","_toolbar_js__WEBPACK_IMPORTED_MODULE_2__","bindEvents","ImageManager","#baseId","#get","rawData","mustRemoveAspectRatioPromise","imagePromise","file","lastModified","CommandManager","#commands","#locked","#maxSize","#position","post","mustExec","overwriteIfSameType","keepUndo","save","next","callbacks","callback","keys","isMacKey","#serialize","bubbles","checker","RGB","#activeEditor","#allEditors","#allLayers","#altTextManager","#annotationStorage","#changedExistingAnnotations","#commandManager","#currentPageIndex","#deletedAnnotationsElementIds","#draggingEditors","#editorsToRescale","#enableHighlightFloatingButton","#filterFactory","#focusMainContainerTimeoutId","#highlightColors","#highlightWhenShiftUp","#highlightToolbar","#idManager","IdManager","#isEnabled","#isWaiting","#lastActiveElement","#mainHighlightColorPicker","#mlManager","#selectedTextNode","#pageColors","#showAllStates","#boundBlur","#boundFocus","#boundCopy","#boundCut","#boundPaste","#boundKeyup","#boundOnEditingAction","#boundOnPageChanging","#selectionChange","#boundOnRotationChanging","#previousStates","#translation","#translationTimeoutId","#viewer","textInputChecker","el","KeyboardManager","viewer","altTextManager","eventBus","pdfDocument","highlightColors","enableHighlightFloatingButton","mlManager","#boundOnScaleChanging","#addSelectionListener","#addKeyboardManager","#removeKeyboardManager","#removeFocusManager","#selectedEditors","#removeSelectionListener","pair","#getAnchorElementForSelection","anchorNode","methodOfCreation","anchorOffset","focusNode","focusOffset","#mode","text","#displayHighlightToolbar","#dispatchUpdateStates","pointerup","#onSelectEnd","#boundSelectionChange","#addFocusManager","lastEditor","lastActiveElement","#addCopyPasteListeners","#removeCopyPasteListeners","editors","clipboardData","newEditors","deserializedEditor","#addEditorToLayer","#selectEditors","details","#isEmpty","#dispatchUpdateUI","editId","isFromKeyboard","#disableAll","#enableAll","updateButton","#lastSelectedEditor","ed","noCommit","totalX","totalY","mustBeAddedInUndoStack","move","newPageIndex","savedPageIndex","rotator","editorId","_network_utils_js__WEBPACK_IMPORTED_MODULE_1__","headers","withCredentials","abortController","createHeaders","getArrayBuffer","PDFFetchStream","PDFFetchStreamReader","createFetchOptions","getResponseHeader","suggestedLength","allowRangeRequests","PDFFetchStreamRangeReader","stream","FontLoader","#systemFonts","nativeFontFace","loadedName","hasFonts","supported","completeRequest","loadingRequests","otherRequest","testFont","int32","offset","remove","insert","chunk1","chunk2","called","isFontReady","loadTestFontId","spliceString","CFF_CHECKSUM_OFFSET","checksum","XXXX_VALUE","FontFaceObject","translatedData","css","cmds","commands","Metadata","#metadataMap","#data","parsedData","PARTIAL_CONTENT_RESPONSE","xhr","listeners","prop","pendingRequest","OK_RESPONSE","xhrId","xhrStatus","rangeHeader","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","manager","fullRequestXhrId","fullRequestXhr","status","requestCapability","createResponseStatusError","extractFilenameFromHeader","getFilenameFromContentDispositionHeader","rfc2616unquote","rfc5987decode","fixupEncoding","rfc2231getparam","toParamRegExp","attributePattern","encoding","decoder","needsEncodingFixup","textdecode","contentDispositionStr","iter","quot","part","parts","extvalue","encodingend","charset","hex","returnValues","isHttp","parsedUrl","sourceUrl","http","__vitePreload","PDFNodeStreamFsFullReader","PDFNodeStreamRangeReader","BaseFullReader","readableStream","PDFNodeStreamFullReader","handleResponse","https","BaseRangeReader","createRequestOptions","fileUriRegex","stat","PDFNodeStreamFsRangeReader","NodeCMapReaderFactory","NodeStandardFontDataFactory","fs","path2d","NodeCanvasFactory","_shared_murmurhash3_js__WEBPACK_IMPORTED_MODULE_1__","#isDisplay","#isPrint","#visible","usage","#userSet","print","internal","INTERNAL","userSet","#cachedGetHash","#groups","#initialHash","#order","OptionalContentGroup","on","#evaluateVisibilityExpression","state","operator","renderTextLayer","DEFAULT_FONT_ASCENT","ascentCache","getCtx","_canvasContext","savedFont","ascent","ratio","fontFamily","pixels","textDiv","textDivProperties","geom","styles","fontHeight","getAscent","left","fontAscent","scaleFactorStr","divStyle","shouldScaleText","absScaleY","absScaleX","layout","prevFontSize","prevFontFamily","capability","textContentSource","textContentItemsStr","styleCache","appendText","br","updateTextLayer","textDivs","mustRescale","PDFDataTransportStream","pdfDataRangeTransport","progressiveDone","PDFDataTransportStreamReader","PDFDataTransportStreamRangeReader","queuedChunks","GlobalWorkerOptions","#port","#src","_xfa_text_js__WEBPACK_IMPORTED_MODULE_0__","XfaLayer","html","attributes","linkService","isNotForRichText","rootDiv","rootHtml","node","stack","childHtml","XfaText","output","walk","__webpack_handle_async_dependencies__","_display_editor_annotation_editor_layer_js__WEBPACK_IMPORTED_MODULE_4__","_display_editor_tools_js__WEBPACK_IMPORTED_MODULE_5__","_display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__","_display_draw_layer_js__WEBPACK_IMPORTED_MODULE_8__","_display_editor_outliner_js__WEBPACK_IMPORTED_MODULE_9__","_display_api_js__WEBPACK_IMPORTED_MODULE_1__","_display_text_layer_js__WEBPACK_IMPORTED_MODULE_3__","_display_annotation_layer_js__WEBPACK_IMPORTED_MODULE_6__","_display_editor_color_picker_js__WEBPACK_IMPORTED_MODULE_7__","_display_worker_options_js__WEBPACK_IMPORTED_MODULE_10__","pdfjsVersion","MessageHandler","_util_js__WEBPACK_IMPORTED_MODULE_0__","CallbackKind","StreamKind","sourceName","comObj","#processStreamMessage","callbackId","wrapReason","cbTargetName","#createStreamSink","handler","ah","transfers","queueingStrategy","streamId","controller","targetName","startCapability","pullCapability","cancelCapability","streamSink","lastDesiredSize","streamController","#deleteStreamController","MurmurHash3_64","MASK_HIGH","MASK_LOW","seed","SEED","code","tailLength","h1","h2","C1","C1_LOW","C2_LOW","C2","k1","k2","blockCounts","AnnotationBorderStyleType","AnnotationEditorParamsType","AnnotationEditorType","AnnotationMode","AnnotationPrefix","AnnotationType","FONT_IDENTITY_MATRIX","FontRenderOps","FormatError","ImageKind","InvalidPDFException","LINE_FACTOR","PasswordException","PasswordResponses","PermissionFlag","RenderingIntentFlag","TextRenderingMode","UnknownErrorException","VerbosityLevel","assert","bytesToString","getUuid","shadow","stringToBytes","unreachable","CMapCompressionType","OPS","setVerbosityLevel","level","getVerbosityLevel","warn","cond","stringToUTF8String","absoluteUrl","nonSerializable","BaseException","message","MissingPDFException","UnexpectedResponseException","AbortException","MAX_ARGUMENT_COUNT","strBuf","chunkEnd","string32","objectFromMap","isLittleEndian","buffer8","hexNumbers","Util","temp","m1","m2","xt","yt","transpose","rect1","rect2","xHigh","yLow","yHigh","t","tt","ttt","mt","delta","sqrtDelta","a2","#getExtremumOnCurve","NormalizationMap","buf","__webpack_module_cache__","cachedModule","moduleId","module","webpackError","queue","fn","dep","webpackQueues","webpackExports","resolveQueue","ret","body","hasAwait","depQueues","exports","currentDeps","outerResolve","wrapDeps","fnQueue","getResult","err","definition","__webpack_exports__AbortException","__webpack_exports__AnnotationEditorType","__webpack_exports__AnnotationEditorUIManager","__webpack_exports__CMapCompressionType","__webpack_exports__DOMSVGFactory","__webpack_exports__ImageKind","__webpack_exports__InvalidPDFException","__webpack_exports__MissingPDFException","__webpack_exports__Outliner","__webpack_exports__PDFDataRangeTransport","__webpack_exports__PasswordResponses","__webpack_exports__PermissionFlag","__webpack_exports__PixelsPerInch","__webpack_exports__RenderingCancelledException","__webpack_exports__UnexpectedResponseException","__webpack_exports__VerbosityLevel","__webpack_exports__XfaLayer","__webpack_exports__createValidAbsoluteUrl","__webpack_exports__fetchData","__webpack_exports__getFilenameFromUrl","__webpack_exports__getPdfFilenameFromUrl","__webpack_exports__getXfaPageViewport","__webpack_exports__isDataScheme","__webpack_exports__isPdfFile","__webpack_exports__noContextMenu","__webpack_exports__normalizeUnicode","__webpack_exports__renderTextLayer","__webpack_exports__setLayerDimensions","__webpack_exports__version"],"ignoreList":[0],"sources":["../../node_modules/pdfjs-dist/build/pdf.mjs"],"sourcesContent":["/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2023 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n/******/ var __webpack_modules__ = ({\n\n/***/ 976:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n AnnotationLayer: () => (/* binding */ AnnotationLayer),\n FreeTextAnnotationElement: () => (/* binding */ FreeTextAnnotationElement),\n InkAnnotationElement: () => (/* binding */ InkAnnotationElement),\n StampAnnotationElement: () => (/* binding */ StampAnnotationElement)\n});\n\n// EXTERNAL MODULE: ./src/shared/util.js\nvar util = __webpack_require__(292);\n// EXTERNAL MODULE: ./src/display/display_utils.js\nvar display_utils = __webpack_require__(419);\n// EXTERNAL MODULE: ./src/display/annotation_storage.js\nvar annotation_storage = __webpack_require__(792);\n;// CONCATENATED MODULE: ./src/shared/scripting_utils.js\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \"0\");\n}\nfunction scaleAndClamp(x) {\n return Math.max(0, Math.min(255, 255 * x));\n}\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n static T_HTML() {\n return \"#00000000\";\n }\n static T_rgb() {\n return [null];\n }\n static CMYK_RGB([c, y, m, k]) {\n return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n static CMYK_rgb([c, y, m, k]) {\n return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];\n }\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\n\n// EXTERNAL MODULE: ./src/display/xfa_layer.js\nvar xfa_layer = __webpack_require__(284);\n;// CONCATENATED MODULE: ./src/display/annotation_layer.js\n\n\n\n\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nfunction getRectDims(rect) {\n return {\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n}\nclass AnnotationElementFactory {\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n switch (subtype) {\n case util.AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n case util.AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n case util.AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n case util.AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n case util.AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n case util.AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n case util.AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n case util.AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n case util.AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n case util.AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n case util.AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n case util.AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n case util.AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n case util.AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n case util.AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n case util.AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n case util.AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n case util.AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\nclass AnnotationElement {\n #updates = null;\n #hasBorder = false;\n constructor(parameters, {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false\n } = {}) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this.parent = parameters.parent;\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n static _hasPopupData({\n titleObj,\n contentsObj,\n richText\n }) {\n return !!(titleObj?.str || contentsObj?.str || richText?.str);\n }\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data);\n }\n updateEdited(params) {\n if (!this.container) {\n return;\n }\n this.#updates ||= {\n rect: this.data.rect.slice(0)\n };\n const {\n rect\n } = params;\n if (rect) {\n this.#setRectEdited(rect);\n }\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n this.#setRectEdited(this.#updates.rect);\n this.#updates = null;\n }\n #setRectEdited(rect) {\n const {\n container: {\n style\n },\n data: {\n rect: currentRect,\n rotation\n },\n parent: {\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n }\n } = this;\n currentRect?.splice(0, 4, ...rect);\n const {\n width,\n height\n } = getRectDims(rect);\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (pageHeight - rect[3] + pageY) / pageHeight}%`;\n if (rotation === 0) {\n style.width = `${100 * width / pageWidth}%`;\n style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation);\n }\n }\n _createContainer(ignoreBorder) {\n const {\n data,\n parent: {\n page,\n viewport\n }\n } = this;\n const container = document.createElement(\"section\");\n container.setAttribute(\"data-annotation-id\", data.id);\n if (!(this instanceof WidgetAnnotationElement)) {\n container.tabIndex = DEFAULT_TAB_INDEX;\n }\n const {\n style\n } = container;\n style.zIndex = this.parent.zIndex++;\n if (data.popupRef) {\n container.setAttribute(\"aria-haspopup\", \"dialog\");\n }\n if (data.alternativeText) {\n container.title = data.alternativeText;\n }\n if (data.noRotate) {\n container.classList.add(\"norotate\");\n }\n if (!data.rect || this instanceof PopupAnnotationElement) {\n const {\n rotation\n } = data;\n if (!data.hasOwnCanvas && rotation !== 0) {\n this.setRotation(rotation, container);\n }\n return container;\n }\n const {\n width,\n height\n } = getRectDims(data.rect);\n if (!ignoreBorder && data.borderStyle.width > 0) {\n style.borderWidth = `${data.borderStyle.width}px`;\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `calc(${horizontalRadius}px * var(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`;\n style.borderRadius = radius;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const radius = `calc(${width}px * var(--scale-factor)) / calc(${height}px * var(--scale-factor))`;\n style.borderRadius = radius;\n }\n switch (data.borderStyle.style) {\n case util.AnnotationBorderStyleType.SOLID:\n style.borderStyle = \"solid\";\n break;\n case util.AnnotationBorderStyleType.DASHED:\n style.borderStyle = \"dashed\";\n break;\n case util.AnnotationBorderStyleType.BEVELED:\n (0,util.warn)(\"Unimplemented border style: beveled\");\n break;\n case util.AnnotationBorderStyleType.INSET:\n (0,util.warn)(\"Unimplemented border style: inset\");\n break;\n case util.AnnotationBorderStyleType.UNDERLINE:\n style.borderBottomStyle = \"solid\";\n break;\n default:\n break;\n }\n const borderColor = data.borderColor || null;\n if (borderColor) {\n this.#hasBorder = true;\n style.borderColor = util.Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0);\n } else {\n style.borderWidth = 0;\n }\n }\n 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]]);\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (rect[1] - pageY) / pageHeight}%`;\n const {\n rotation\n } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n style.width = `${100 * width / pageWidth}%`;\n style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n return container;\n }\n setRotation(angle, container = this.container) {\n if (!this.data.rect) {\n return;\n }\n const {\n pageWidth,\n pageHeight\n } = this.parent.viewport.rawDims;\n const {\n width,\n height\n } = getRectDims(this.data.rect);\n let elementWidth, elementHeight;\n if (angle % 180 === 0) {\n elementWidth = 100 * width / pageWidth;\n elementHeight = 100 * height / pageHeight;\n } else {\n elementWidth = 100 * height / pageWidth;\n elementHeight = 100 * width / pageHeight;\n }\n container.style.width = `${elementWidth}%`;\n container.style.height = `${elementHeight}%`;\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n const colorType = color[0];\n const colorArray = color.slice(1);\n event.target.style[styleName] = ColorConverters[`${colorType}_HTML`](colorArray);\n this.annotationStorage.setValue(this.data.id, {\n [styleName]: ColorConverters[`${colorType}_rgb`](colorArray)\n });\n };\n return (0,util.shadow)(this, \"_commonActions\", {\n display: event => {\n const {\n display\n } = event.detail;\n const hidden = display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noView: hidden,\n noPrint: display === 1 || display === 2\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n noPrint: !event.detail.print\n });\n },\n hidden: event => {\n const {\n hidden\n } = event.detail;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noPrint: hidden,\n noView: hidden\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({\n preventScroll: false\n }), 0);\n },\n userName: event => {\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n event.target.disabled = event.detail.readonly;\n },\n required: event => {\n this._setRequired(event.target, event.detail.required);\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n rotation: event => {\n const angle = event.detail.rotation;\n this.setRotation(angle);\n this.annotationStorage.setValue(this.data.id, {\n rotation: angle\n });\n }\n });\n }\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n action?.(jsEvent);\n }\n }\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\n const commonActions = this._commonActions;\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n if (action) {\n const eventProxy = {\n detail: {\n [actionName]: detail\n },\n target: element\n };\n action(eventProxy);\n delete storedData[actionName];\n }\n }\n }\n _createQuadrilaterals() {\n if (!this.container) {\n return;\n }\n const {\n quadPoints\n } = this.data;\n if (!quadPoints) {\n return;\n }\n const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect;\n if (quadPoints.length === 1) {\n const [, {\n x: trX,\n y: trY\n }, {\n x: blX,\n y: blY\n }] = quadPoints[0];\n if (rectTrX === trX && rectTrY === trY && rectBlX === blX && rectBlY === blY) {\n return;\n }\n }\n const {\n style\n } = this.container;\n let svgBuffer;\n if (this.#hasBorder) {\n const {\n borderColor,\n borderWidth\n } = style;\n style.borderWidth = 0;\n svgBuffer = [\"url('data:image/svg+xml;utf8,\", `<svg xmlns=\"http://www.w3.org/2000/svg\"`, ` preserveAspectRatio=\"none\" viewBox=\"0 0 1 1\">`, `<g fill=\"transparent\" stroke=\"${borderColor}\" stroke-width=\"${borderWidth}\">`];\n this.container.classList.add(\"hasBorder\");\n }\n const width = rectTrX - rectBlX;\n const height = rectTrY - rectBlY;\n const {\n svgFactory\n } = this;\n const svg = svgFactory.createElement(\"svg\");\n svg.classList.add(\"quadrilateralsContainer\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n const defs = svgFactory.createElement(\"defs\");\n svg.append(defs);\n const clipPath = svgFactory.createElement(\"clipPath\");\n const id = `clippath_${this.data.id}`;\n clipPath.setAttribute(\"id\", id);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n defs.append(clipPath);\n for (const [, {\n x: trX,\n y: trY\n }, {\n x: blX,\n y: blY\n }] of quadPoints) {\n const rect = svgFactory.createElement(\"rect\");\n const x = (blX - rectBlX) / width;\n const y = (rectTrY - trY) / height;\n const rectWidth = (trX - blX) / width;\n const rectHeight = (trY - blY) / height;\n rect.setAttribute(\"x\", x);\n rect.setAttribute(\"y\", y);\n rect.setAttribute(\"width\", rectWidth);\n rect.setAttribute(\"height\", rectHeight);\n clipPath.append(rect);\n svgBuffer?.push(`<rect vector-effect=\"non-scaling-stroke\" x=\"${x}\" y=\"${y}\" width=\"${rectWidth}\" height=\"${rectHeight}\"/>`);\n }\n if (this.#hasBorder) {\n svgBuffer.push(`</g></svg>')`);\n style.backgroundImage = svgBuffer.join(\"\");\n }\n this.container.append(svg);\n this.container.style.clipPath = `url(#${id})`;\n }\n _createPopup() {\n const {\n container,\n data\n } = this;\n container.setAttribute(\"aria-haspopup\", \"dialog\");\n const popup = new PopupAnnotationElement({\n data: {\n color: data.color,\n titleObj: data.titleObj,\n modificationDate: data.modificationDate,\n contentsObj: data.contentsObj,\n richText: data.richText,\n parentRect: data.rect,\n borderStyle: 0,\n id: `popup_${data.id}`,\n rotation: data.rotation\n },\n parent: this.parent,\n elements: [this]\n });\n this.parent.div.append(popup.render());\n }\n render() {\n (0,util.unreachable)(\"Abstract method `AnnotationElement.render` called\");\n }\n _getElementsByName(name, skipId = null) {\n const fields = [];\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const {\n page,\n id,\n exportValues\n } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n (0,util.warn)(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n }\n return fields;\n }\n for (const domElement of document.getElementsByName(name)) {\n const {\n exportValue\n } = domElement;\n const id = domElement.getAttribute(\"data-element-id\");\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n return fields;\n }\n show() {\n if (this.container) {\n this.container.hidden = false;\n }\n this.popup?.maybeShow();\n }\n hide() {\n if (this.container) {\n this.container.hidden = true;\n }\n this.popup?.forceHide();\n }\n getElementsToTriggerPopup() {\n return this.container;\n }\n addHighlightArea() {\n const triggers = this.getElementsToTriggerPopup();\n if (Array.isArray(triggers)) {\n for (const element of triggers) {\n element.classList.add(\"highlightArea\");\n }\n } else {\n triggers.classList.add(\"highlightArea\");\n }\n }\n get _isEditable() {\n return false;\n }\n _editOnDoubleClick() {\n if (!this._isEditable) {\n return;\n }\n const {\n annotationEditorType: mode,\n data: {\n id: editId\n }\n } = this;\n this.container.addEventListener(\"dblclick\", () => {\n this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n editId\n });\n });\n }\n}\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true\n });\n this.isTooltipOnly = parameters.data.isTooltipOnly;\n }\n render() {\n const {\n data,\n linkService\n } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n if (data.url) {\n linkService.addLinkAttributes(link, data.url, data.newWindow);\n isBound = true;\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n isBound = true;\n } else if (data.attachment) {\n this.#bindAttachment(link, data.attachment, data.attachmentDest);\n isBound = true;\n } else if (data.setOCGState) {\n this.#bindSetOCGState(link, data.setOCGState);\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest);\n isBound = true;\n } else {\n if (data.actions && (data.actions.Action || data.actions[\"Mouse Up\"] || data.actions[\"Mouse Down\"]) && this.enableScripting && this.hasJSActions) {\n this._bindJSAction(link, data);\n isBound = true;\n }\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n isBound = true;\n } else if (this.isTooltipOnly && !isBound) {\n this._bindLink(link, \"\");\n isBound = true;\n }\n }\n this.container.classList.add(\"linkAnnotation\");\n if (isBound) {\n this.container.append(link);\n }\n return this.container;\n }\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === \"\") {\n this.#setInternalLink();\n }\n }\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n this.#setInternalLink();\n }\n #bindAttachment(link, attachment, dest = null) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.downloadManager?.openOrDownloadData(attachment.content, attachment.filename, dest);\n return false;\n };\n this.#setInternalLink();\n }\n #bindSetOCGState(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\n };\n this.#setInternalLink();\n }\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name\n }\n });\n return false;\n };\n }\n if (!link.onclick) {\n link.onclick = () => false;\n }\n this.#setInternalLink();\n }\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n this.#setInternalLink();\n if (!this._fieldObjects) {\n (0,util.warn)(`_bindResetFormAction - \"resetForm\" action not supported, ` + \"ensure that the `fieldObjects` parameter is provided.\");\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n link.onclick = () => {\n otherClickAction?.();\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include\n } = resetForm;\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n for (const {\n id\n } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const {\n id\n } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\":\n {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"combobox\":\n case \"listbox\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n default:\n continue;\n }\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (!domElement) {\n continue;\n } else if (!GetElementsByNameSet.has(domElement)) {\n (0,util.warn)(`_bindResetFormAction - element not allowed: ${id}`);\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n if (this.enableScripting) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\"\n }\n });\n }\n return false;\n };\n }\n}\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n }\n render() {\n this.container.classList.add(\"textAnnotation\");\n const image = document.createElement(\"img\");\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n image.setAttribute(\"data-l10n-args\", JSON.stringify({\n type: this.data.name\n }));\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.append(image);\n return this.container;\n }\n}\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n return this.container;\n }\n showElementAndHideCanvas(element) {\n if (this.data.hasOwnCanvas) {\n if (element.previousSibling?.nodeName === \"CANVAS\") {\n element.previousSibling.hidden = true;\n }\n element.hidden = false;\n }\n }\n _getKeyModifier(event) {\n return util.FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n }\n _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event)\n }\n });\n });\n } else {\n element.addEventListener(baseName, event => {\n if (baseName === \"blur\") {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n elementData.focused = false;\n } else if (baseName === \"focus\") {\n if (elementData.focused) {\n return;\n }\n elementData.focused = true;\n }\n if (!valueGetter) {\n return;\n }\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event)\n }\n });\n });\n }\n }\n _setEventListeners(element, elementData, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n if (eventName === \"Focus\" || eventName === \"Blur\") {\n elementData ||= {\n focused: false\n };\n }\n this._setEventListener(element, elementData, baseName, eventName, getter);\n if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n } else if (eventName === \"Blur\" && !this.data.actions?.Focus) {\n this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n }\n }\n }\n }\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor = color === null ? \"transparent\" : util.Util.makeHexColor(color[0], color[1], color[2]);\n }\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const {\n fontColor\n } = this.data.defaultAppearanceData;\n const fontSize = this.data.defaultAppearanceData.fontSize || DEFAULT_FONT_SIZE;\n const style = element.style;\n let computedFontSize;\n const BORDER_SIZE = 2;\n const roundToOneDecimal = x => Math.round(10 * x) / 10;\n if (this.data.multiLine) {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n const numberOfLines = Math.round(height / (util.LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / util.LINE_FACTOR));\n } else {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n computedFontSize = Math.min(fontSize, roundToOneDecimal(height / util.LINE_FACTOR));\n }\n style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;\n style.color = util.Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n _setRequired(element, isRequired) {\n if (isRequired) {\n element.setAttribute(\"required\", true);\n } else {\n element.removeAttribute(\"required\");\n }\n element.setAttribute(\"aria-required\", isRequired);\n }\n}\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable = parameters.renderForms || parameters.data.hasOwnCanvas || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n super(parameters, {\n isRenderable\n });\n }\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(base.name, base.id)) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, {\n [keyInStorage]: value\n });\n }\n }\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n this.container.classList.add(\"textWidgetAnnotation\");\n let element = null;\n if (this.renderForms) {\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n let textContent = storedData.value || \"\";\n const maxLen = storage.getValue(id, {\n charLimit: this.data.maxLen\n }).charLimit;\n if (maxLen && textContent.length > maxLen) {\n textContent = textContent.slice(0, maxLen);\n }\n let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n if (fieldFormattedValues && this.data.comb) {\n fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n }\n const elementData = {\n userValue: textContent,\n formattedValue: fieldFormattedValues,\n lastCommittedValue: null,\n commitKey: 1,\n focused: false\n };\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = fieldFormattedValues ?? textContent;\n if (this.data.doNotScroll) {\n element.style.overflowY = \"hidden\";\n }\n } else {\n element = document.createElement(\"input\");\n element.type = \"text\";\n element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n if (this.data.doNotScroll) {\n element.style.overflowX = \"hidden\";\n }\n }\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = DEFAULT_TAB_INDEX;\n this._setRequired(element, this.data.required);\n if (maxLen) {\n element.maxLength = maxLen;\n }\n element.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n this.setPropertyOnSiblings(element, \"value\", event.target.value, \"value\");\n elementData.formattedValue = null;\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n let blurListener = event => {\n const {\n formattedValue\n } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n event.target.scrollLeft = 0;\n };\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.focused) {\n return;\n }\n const {\n target\n } = event;\n if (elementData.userValue) {\n target.value = elementData.userValue;\n }\n elementData.lastCommittedValue = target.value;\n elementData.commitKey = 1;\n if (!this.data.actions?.Focus) {\n elementData.focused = true;\n }\n });\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n this.showElementAndHideCanvas(jsEvent.target);\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value ?? \"\";\n storage.setValue(id, {\n value: elementData.userValue.toString()\n });\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const {\n formattedValue\n } = event.detail;\n elementData.formattedValue = formattedValue;\n if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) {\n event.target.value = formattedValue;\n }\n storage.setValue(id, {\n formattedValue\n });\n },\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\n },\n charLimit: event => {\n const {\n charLimit\n } = event.detail;\n const {\n target\n } = event;\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\n }\n target.setAttribute(\"maxLength\", charLimit);\n let value = elementData.userValue;\n if (!value || value.length <= charLimit) {\n return;\n }\n value = value.slice(0, charLimit);\n target.value = elementData.userValue = value;\n storage.setValue(id, {\n value\n });\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: 1,\n selStart: target.selectionStart,\n selEnd: target.selectionEnd\n }\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n element.addEventListener(\"keydown\", event => {\n elementData.commitKey = 1;\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\" && !this.data.multiLine) {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n elementData.commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const {\n value\n } = event.target;\n if (elementData.lastCommittedValue === value) {\n return;\n }\n elementData.lastCommittedValue = value;\n elementData.userValue = value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n if (!this.data.actions?.Blur) {\n elementData.focused = false;\n }\n const {\n value\n } = event.target;\n elementData.userValue = value;\n if (elementData.lastCommittedValue !== value) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: elementData.commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n }\n _blurListener(event);\n });\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.lastCommittedValue = null;\n const {\n data,\n target\n } = event;\n const {\n value,\n selectionStart,\n selectionEnd\n } = target;\n let selStart = selectionStart,\n selEnd = selectionEnd;\n switch (event.inputType) {\n case \"deleteWordBackward\":\n {\n const match = value.substring(0, selectionStart).match(/\\w*[^\\w]*$/);\n if (match) {\n selStart -= match[0].length;\n }\n break;\n }\n case \"deleteWordForward\":\n {\n const match = value.substring(selectionStart).match(/^[^\\w]*\\w*/);\n if (match) {\n selEnd += match[0].length;\n }\n break;\n }\n case \"deleteContentBackward\":\n if (selectionStart === selectionEnd) {\n selStart -= 1;\n }\n break;\n case \"deleteContentForward\":\n if (selectionStart === selectionEnd) {\n selEnd += 1;\n }\n break;\n }\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data || \"\",\n willCommit: false,\n selStart,\n selEnd\n }\n });\n });\n }\n this._setEventListeners(element, elementData, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.value);\n }\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / maxLen;\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px * var(--scale-factor) - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n }\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: !!parameters.data.hasOwnCanvas\n });\n }\n}\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== \"Off\";\n storage.setValue(id, {\n value\n });\n }\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const checkbox of this._getElementsByName(name, id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, {\n value: curChecked\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, {\n value: event.target.checked\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== data.buttonValue;\n storage.setValue(id, {\n value\n });\n }\n if (value) {\n for (const radio of this._getElementsByName(data.fieldName, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n }\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const radio of this._getElementsByName(name, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, {\n value: curChecked\n });\n }\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n ignoreBorder: parameters.data.hasAppearance\n });\n }\n render() {\n const container = super.render();\n container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n const linkElement = container.lastChild;\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n return container;\n }\n}\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"choiceWidgetAnnotation\");\n const storage = this.annotationStorage;\n const id = this.data.id;\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n selectElement.disabled = this.data.readOnly;\n this._setRequired(selectElement, this.data.required);\n selectElement.name = this.data.fieldName;\n selectElement.tabIndex = DEFAULT_TAB_INDEX;\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n if (storedData.value.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n addAnEmptyEntry = false;\n }\n selectElement.append(optionElement);\n }\n let removeEmptyEntry = null;\n if (addAnEmptyEntry) {\n const noneOptionElement = document.createElement(\"option\");\n noneOptionElement.value = \" \";\n noneOptionElement.setAttribute(\"hidden\", true);\n noneOptionElement.setAttribute(\"selected\", true);\n selectElement.prepend(noneOptionElement);\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n const getValue = isExport => {\n const name = isExport ? \"value\" : \"textContent\";\n const {\n options,\n multiple\n } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n }\n return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);\n };\n let selectedValues = getValue(false);\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => ({\n displayValue: option.textContent,\n exportValue: option.value\n }));\n };\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n removeEmptyEntry?.();\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(options, option => option.selected);\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, {\n value: null,\n items: []\n });\n selectedValues = getValue(false);\n },\n insert(event) {\n const {\n index,\n displayValue,\n exportValue\n } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n items(event) {\n const {\n items\n } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const {\n displayValue,\n exportValue\n } = item;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.append(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(true);\n const change = getValue(false);\n storage.setValue(id, {\n value: exportValue\n });\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: selectedValues,\n change,\n changeEx: exportValue,\n willCommit: false,\n commitKey: 1,\n keyDown: false\n }\n });\n });\n this._setEventListeners(selectElement, null, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"], [\"input\", \"Validate\"]], event => event.target.value);\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, {\n value: getValue(true)\n });\n });\n }\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {}\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n this.container.append(selectElement);\n return this.container;\n }\n}\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const {\n data,\n elements\n } = parameters;\n super(parameters, {\n isRenderable: AnnotationElement._hasPopupData(data)\n });\n this.elements = elements;\n }\n render() {\n this.container.classList.add(\"popupAnnotation\");\n const popup = new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n rect: this.data.rect,\n parentRect: this.data.parentRect || null,\n parent: this.parent,\n elements: this.elements,\n open: this.data.open\n });\n const elementIds = [];\n for (const element of this.elements) {\n element.popup = popup;\n elementIds.push(element.data.id);\n element.addHighlightArea();\n }\n this.container.setAttribute(\"aria-controls\", elementIds.map(id => `${util.AnnotationPrefix}${id}`).join(\",\"));\n return this.container;\n }\n}\nclass PopupElement {\n #boundKeyDown = this.#keyDown.bind(this);\n #boundHide = this.#hide.bind(this);\n #boundShow = this.#show.bind(this);\n #boundToggle = this.#toggle.bind(this);\n #color = null;\n #container = null;\n #contentsObj = null;\n #dateObj = null;\n #elements = null;\n #parent = null;\n #parentRect = null;\n #pinned = false;\n #popup = null;\n #rect = null;\n #richText = null;\n #titleObj = null;\n #wasVisible = false;\n constructor({\n container,\n color,\n elements,\n titleObj,\n modificationDate,\n contentsObj,\n richText,\n parent,\n rect,\n parentRect,\n open\n }) {\n this.#container = container;\n this.#titleObj = titleObj;\n this.#contentsObj = contentsObj;\n this.#richText = richText;\n this.#parent = parent;\n this.#color = color;\n this.#rect = rect;\n this.#parentRect = parentRect;\n this.#elements = elements;\n this.#dateObj = display_utils.PDFDateString.toDateObject(modificationDate);\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this.#boundToggle);\n element.addEventListener(\"mouseenter\", this.#boundShow);\n element.addEventListener(\"mouseleave\", this.#boundHide);\n element.classList.add(\"popupTriggerArea\");\n }\n for (const element of elements) {\n element.container?.addEventListener(\"keydown\", this.#boundKeyDown);\n }\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\n }\n }\n render() {\n if (this.#popup) {\n return;\n }\n const {\n page: {\n view\n },\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n } = this.#parent;\n const popup = this.#popup = document.createElement(\"div\");\n popup.className = \"popup\";\n if (this.#color) {\n const baseColor = popup.style.outlineColor = util.Util.makeHexColor(...this.#color);\n if (CSS.supports(\"background-color\", \"color-mix(in srgb, red 30%, white)\")) {\n popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n } else {\n const BACKGROUND_ENLIGHT = 0.7;\n popup.style.backgroundColor = util.Util.makeHexColor(...this.#color.map(c => Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c)));\n }\n }\n const header = document.createElement(\"span\");\n header.className = \"header\";\n const title = document.createElement(\"h1\");\n header.append(title);\n ({\n dir: title.dir,\n str: title.textContent\n } = this.#titleObj);\n popup.append(header);\n if (this.#dateObj) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.classList.add(\"popupDate\");\n modificationDate.setAttribute(\"data-l10n-id\", \"pdfjs-annotation-date-string\");\n modificationDate.setAttribute(\"data-l10n-args\", JSON.stringify({\n date: this.#dateObj.toLocaleDateString(),\n time: this.#dateObj.toLocaleTimeString()\n }));\n header.append(modificationDate);\n }\n const contentsObj = this.#contentsObj;\n const richText = this.#richText;\n if (richText?.str && (!contentsObj?.str || contentsObj.str === richText.str)) {\n xfa_layer.XfaLayer.render({\n xfaHtml: richText.html,\n intent: \"richText\",\n div: popup\n });\n popup.lastChild.classList.add(\"richText\", \"popupContent\");\n } else {\n const contents = this._formatContents(contentsObj);\n popup.append(contents);\n }\n let useParentRect = !!this.#parentRect;\n let rect = useParentRect ? this.#parentRect : this.#rect;\n for (const element of this.#elements) {\n if (!rect || util.Util.intersect(element.data.rect, rect) !== null) {\n rect = element.data.rect;\n useParentRect = true;\n break;\n }\n }\n const normalizedRect = util.Util.normalizeRect([rect[0], view[3] - rect[1] + view[1], rect[2], view[3] - rect[3] + view[1]]);\n const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n const parentWidth = useParentRect ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION : 0;\n const popupLeft = normalizedRect[0] + parentWidth;\n const popupTop = normalizedRect[1];\n const {\n style\n } = this.#container;\n style.left = `${100 * (popupLeft - pageX) / pageWidth}%`;\n style.top = `${100 * (popupTop - pageY) / pageHeight}%`;\n this.#container.append(popup);\n }\n _formatContents({\n str,\n dir\n }) {\n const p = document.createElement(\"p\");\n p.classList.add(\"popupContent\");\n p.dir = dir;\n const lines = str.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.append(document.createTextNode(line));\n if (i < ii - 1) {\n p.append(document.createElement(\"br\"));\n }\n }\n return p;\n }\n #keyDown(event) {\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return;\n }\n if (event.key === \"Enter\" || event.key === \"Escape\" && this.#pinned) {\n this.#toggle();\n }\n }\n #toggle() {\n this.#pinned = !this.#pinned;\n if (this.#pinned) {\n this.#show();\n this.#container.addEventListener(\"click\", this.#boundToggle);\n this.#container.addEventListener(\"keydown\", this.#boundKeyDown);\n } else {\n this.#hide();\n this.#container.removeEventListener(\"click\", this.#boundToggle);\n this.#container.removeEventListener(\"keydown\", this.#boundKeyDown);\n }\n }\n #show() {\n if (!this.#popup) {\n this.render();\n }\n if (!this.isVisible) {\n this.#container.hidden = false;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) + 1000;\n } else if (this.#pinned) {\n this.#container.classList.add(\"focused\");\n }\n }\n #hide() {\n this.#container.classList.remove(\"focused\");\n if (this.#pinned || !this.isVisible) {\n return;\n }\n this.#container.hidden = true;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) - 1000;\n }\n forceHide() {\n this.#wasVisible = this.isVisible;\n if (!this.#wasVisible) {\n return;\n }\n this.#container.hidden = true;\n }\n maybeShow() {\n if (!this.#wasVisible) {\n return;\n }\n this.#wasVisible = false;\n this.#container.hidden = false;\n }\n get isVisible() {\n return this.#container.hidden === false;\n }\n}\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.textContent = parameters.data.textContent;\n this.textPosition = parameters.data.textPosition;\n this.annotationEditorType = util.AnnotationEditorType.FREETEXT;\n }\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n if (this.textContent) {\n const content = document.createElement(\"div\");\n content.classList.add(\"annotationTextContent\");\n content.setAttribute(\"role\", \"comment\");\n for (const line of this.textContent) {\n const lineSpan = document.createElement(\"span\");\n lineSpan.textContent = line;\n content.append(lineSpan);\n }\n this.container.append(content);\n }\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n get _isEditable() {\n return this.data.hasOwnCanvas;\n }\n}\nclass LineAnnotationElement extends AnnotationElement {\n #line = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"lineAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const line = this.#line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n svg.append(line);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#line;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass SquareAnnotationElement extends AnnotationElement {\n #square = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"squareAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const square = this.#square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n svg.append(square);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#square;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass CircleAnnotationElement extends AnnotationElement {\n #circle = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"circleAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const circle = this.#circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n svg.append(circle);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#circle;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolylineAnnotationElement extends AnnotationElement {\n #polyline = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n let points = [];\n for (const coordinate of data.vertices) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(x + \",\" + y);\n }\n points = points.join(\" \");\n const polyline = this.#polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.append(polyline);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polyline;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n super(parameters);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"caretAnnotation\");\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n}\nclass InkAnnotationElement extends AnnotationElement {\n #polylines = [];\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = util.AnnotationEditorType.INK;\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n for (const inkList of data.inkLists) {\n let points = [];\n for (const coordinate of inkList) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n const polyline = this.svgFactory.createElement(this.svgElementName);\n this.#polylines.push(polyline);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n svg.append(polyline);\n }\n this.container.append(svg);\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polylines;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"highlightAnnotation\");\n return this.container;\n }\n}\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"underlineAnnotation\");\n return this.container;\n }\n}\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"squigglyAnnotation\");\n return this.container;\n }\n}\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"strikeoutAnnotation\");\n return this.container;\n }\n}\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"stampAnnotation\");\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n}\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n #trigger = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n const {\n filename,\n content\n } = this.data.file;\n this.filename = (0,display_utils.getFilenameFromUrl)(filename, true);\n this.content = content;\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n filename,\n content\n });\n }\n render() {\n this.container.classList.add(\"fileAttachmentAnnotation\");\n const {\n container,\n data\n } = this;\n let trigger;\n if (data.hasAppearance || data.fillAlpha === 0) {\n trigger = document.createElement(\"div\");\n } else {\n trigger = document.createElement(\"img\");\n trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"}.svg`;\n if (data.fillAlpha && data.fillAlpha < 1) {\n trigger.style = `filter: opacity(${Math.round(data.fillAlpha * 100)}%);`;\n }\n }\n trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n this.#trigger = trigger;\n const {\n isMac\n } = util.FeatureTest.platform;\n container.addEventListener(\"keydown\", evt => {\n if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n this.#download();\n }\n });\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n } else {\n trigger.classList.add(\"popupTriggerArea\");\n }\n container.append(trigger);\n return container;\n }\n getElementsToTriggerPopup() {\n return this.#trigger;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n #download() {\n this.downloadManager?.openOrDownloadData(this.content, this.filename);\n }\n}\nclass AnnotationLayer {\n #accessibilityManager = null;\n #annotationCanvasMap = null;\n #editableAnnotations = new Map();\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n annotationEditorUIManager,\n page,\n viewport\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.page = page;\n this.viewport = viewport;\n this.zIndex = 0;\n this._annotationEditorUIManager = annotationEditorUIManager;\n }\n #appendElement(element, id) {\n const contentElement = element.firstChild || element;\n contentElement.id = `${util.AnnotationPrefix}${id}`;\n this.div.append(element);\n this.#accessibilityManager?.moveElementInDOM(this.div, element, contentElement, false);\n }\n async render(params) {\n const {\n annotations\n } = params;\n const layer = this.div;\n (0,display_utils.setLayerDimensions)(layer, this.viewport);\n const popupToElements = new Map();\n const elementParams = {\n data: null,\n layer,\n linkService: params.linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new display_utils.DOMSVGFactory(),\n annotationStorage: params.annotationStorage || new annotation_storage.AnnotationStorage(),\n enableScripting: params.enableScripting === true,\n hasJSActions: params.hasJSActions,\n fieldObjects: params.fieldObjects,\n parent: this,\n elements: null\n };\n for (const data of annotations) {\n if (data.noHTML) {\n continue;\n }\n const isPopupAnnotation = data.annotationType === util.AnnotationType.POPUP;\n if (!isPopupAnnotation) {\n const {\n width,\n height\n } = getRectDims(data.rect);\n if (width <= 0 || height <= 0) {\n continue;\n }\n } else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\n continue;\n }\n elementParams.elements = elements;\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n if (!isPopupAnnotation && data.popupRef) {\n const elements = popupToElements.get(data.popupRef);\n if (!elements) {\n popupToElements.set(data.popupRef, [element]);\n } else {\n elements.push(element);\n }\n }\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n this.#appendElement(rendered, data.id);\n if (element.annotationEditorType > 0) {\n this.#editableAnnotations.set(element.data.id, element);\n this._annotationEditorUIManager?.renderAnnotationElement(element);\n }\n }\n this.#setAnnotationCanvasMap();\n }\n update({\n viewport\n }) {\n const layer = this.div;\n this.viewport = viewport;\n (0,display_utils.setLayerDimensions)(layer, {\n rotation: viewport.rotation\n });\n this.#setAnnotationCanvasMap();\n layer.hidden = false;\n }\n #setAnnotationCanvasMap() {\n if (!this.#annotationCanvasMap) {\n return;\n }\n const layer = this.div;\n for (const [id, canvas] of this.#annotationCanvasMap) {\n const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n canvas.className = \"annotationContent\";\n const {\n firstChild\n } = element;\n if (!firstChild) {\n element.append(canvas);\n } else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n } else if (!firstChild.classList.contains(\"annotationContent\")) {\n firstChild.before(canvas);\n } else {\n firstChild.after(canvas);\n }\n }\n this.#annotationCanvasMap.clear();\n }\n getEditableAnnotations() {\n return Array.from(this.#editableAnnotations.values());\n }\n getEditableAnnotation(id) {\n return this.#editableAnnotations.get(id);\n }\n}\n\n\n/***/ }),\n\n/***/ 792:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AnnotationStorage: () => (/* binding */ AnnotationStorage),\n/* harmony export */ PrintAnnotationStorage: () => (/* binding */ PrintAnnotationStorage),\n/* harmony export */ SerializableEmpty: () => (/* binding */ SerializableEmpty)\n/* harmony export */ });\n/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(292);\n/* harmony import */ var _editor_editor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(310);\n/* harmony import */ var _shared_murmurhash3_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(651);\n\n\n\nconst SerializableEmpty = Object.freeze({\n map: null,\n hash: \"\",\n transfer: undefined\n});\nclass AnnotationStorage {\n #modified = false;\n #storage = new Map();\n constructor() {\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n getValue(key, defaultValue) {\n const value = this.#storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n return Object.assign(defaultValue, value);\n }\n getRawValue(key) {\n return this.#storage.get(key);\n }\n remove(key) {\n this.#storage.delete(key);\n if (this.#storage.size === 0) {\n this.resetModified();\n }\n if (typeof this.onAnnotationEditor === \"function\") {\n for (const value of this.#storage.values()) {\n if (value instanceof _editor_editor_js__WEBPACK_IMPORTED_MODULE_1__.AnnotationEditor) {\n return;\n }\n }\n this.onAnnotationEditor(null);\n }\n }\n setValue(key, value) {\n const obj = this.#storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this.#storage.set(key, value);\n }\n if (modified) {\n this.#setModified();\n }\n if (value instanceof _editor_editor_js__WEBPACK_IMPORTED_MODULE_1__.AnnotationEditor && typeof this.onAnnotationEditor === \"function\") {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n has(key) {\n return this.#storage.has(key);\n }\n getAll() {\n return this.#storage.size > 0 ? (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.objectFromMap)(this.#storage) : null;\n }\n setAll(obj) {\n for (const [key, val] of Object.entries(obj)) {\n this.setValue(key, val);\n }\n }\n get size() {\n return this.#storage.size;\n }\n #setModified() {\n if (!this.#modified) {\n this.#modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n resetModified() {\n if (this.#modified) {\n this.#modified = false;\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n get print() {\n return new PrintAnnotationStorage(this);\n }\n get serializable() {\n if (this.#storage.size === 0) {\n return SerializableEmpty;\n }\n const map = new Map(),\n hash = new _shared_murmurhash3_js__WEBPACK_IMPORTED_MODULE_2__.MurmurHash3_64(),\n transfer = [];\n const context = Object.create(null);\n let hasBitmap = false;\n for (const [key, val] of this.#storage) {\n const serialized = val instanceof _editor_editor_js__WEBPACK_IMPORTED_MODULE_1__.AnnotationEditor ? val.serialize(false, context) : val;\n if (serialized) {\n map.set(key, serialized);\n hash.update(`${key}:${JSON.stringify(serialized)}`);\n hasBitmap ||= !!serialized.bitmap;\n }\n }\n if (hasBitmap) {\n for (const value of map.values()) {\n if (value.bitmap) {\n transfer.push(value.bitmap);\n }\n }\n }\n return map.size > 0 ? {\n map,\n hash: hash.hexdigest(),\n transfer\n } : SerializableEmpty;\n }\n get editorStats() {\n let stats = null;\n const typeToEditor = new Map();\n for (const value of this.#storage.values()) {\n if (!(value instanceof _editor_editor_js__WEBPACK_IMPORTED_MODULE_1__.AnnotationEditor)) {\n continue;\n }\n const editorStats = value.telemetryFinalData;\n if (!editorStats) {\n continue;\n }\n const {\n type\n } = editorStats;\n if (!typeToEditor.has(type)) {\n typeToEditor.set(type, Object.getPrototypeOf(value).constructor);\n }\n stats ||= Object.create(null);\n const map = stats[type] ||= new Map();\n for (const [key, val] of Object.entries(editorStats)) {\n if (key === \"type\") {\n continue;\n }\n let counters = map.get(key);\n if (!counters) {\n counters = new Map();\n map.set(key, counters);\n }\n const count = counters.get(val) ?? 0;\n counters.set(val, count + 1);\n }\n }\n for (const [type, editor] of typeToEditor) {\n stats[type] = editor.computeTelemetryFinalData(stats[type]);\n }\n return stats;\n }\n}\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable;\n constructor(parent) {\n super();\n const {\n map,\n hash,\n transfer\n } = parent.serializable;\n const clone = structuredClone(map, transfer ? {\n transfer\n } : null);\n this.#serializable = {\n map: clone,\n hash,\n transfer\n };\n }\n get print() {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)(\"Should not call PrintAnnotationStorage.print\");\n }\n get serializable() {\n return this.#serializable;\n }\n}\n\n\n/***/ }),\n\n/***/ 831:\n/***/ ((__webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PDFDataRangeTransport: () => (/* binding */ PDFDataRangeTransport),\n/* harmony export */ PDFWorker: () => (/* binding */ PDFWorker),\n/* harmony export */ build: () => (/* binding */ build),\n/* harmony export */ getDocument: () => (/* binding */ getDocument),\n/* harmony export */ version: () => (/* binding */ version)\n/* harmony export */ });\n/* unused harmony exports DefaultCanvasFactory, DefaultCMapReaderFactory, DefaultFilterFactory, DefaultStandardFontDataFactory, LoopbackPort, PDFDocumentLoadingTask, PDFDocumentProxy, PDFPageProxy, PDFWorkerUtil, RenderTask */\n/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(292);\n/* harmony import */ var _annotation_storage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(792);\n/* harmony import */ var _display_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(419);\n/* harmony import */ var _font_loader_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10);\n/* harmony import */ var display_node_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(573);\n/* harmony import */ var _canvas_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(923);\n/* harmony import */ var _text_layer_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(814);\n/* harmony import */ var _worker_options_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(164);\n/* harmony import */ var _shared_message_handler_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(178);\n/* harmony import */ var _metadata_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(62);\n/* harmony import */ var _optional_content_config_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(626);\n/* harmony import */ var _transport_stream_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(585);\n/* harmony import */ var display_fetch_stream__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(94);\n/* harmony import */ var display_network__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(457);\n/* harmony import */ var display_node_stream__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(786);\n/* harmony import */ var _xfa_text_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(50);\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([display_node_utils__WEBPACK_IMPORTED_MODULE_4__, display_node_stream__WEBPACK_IMPORTED_MODULE_13__]);\n([display_node_utils__WEBPACK_IMPORTED_MODULE_4__, display_node_stream__WEBPACK_IMPORTED_MODULE_13__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536;\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nconst DELAYED_CLEANUP_TIMEOUT = 5000;\nconst DefaultCanvasFactory = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS ? display_node_utils__WEBPACK_IMPORTED_MODULE_4__.NodeCanvasFactory : _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.DOMCanvasFactory;\nconst DefaultCMapReaderFactory = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS ? display_node_utils__WEBPACK_IMPORTED_MODULE_4__.NodeCMapReaderFactory : _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.DOMCMapReaderFactory;\nconst DefaultFilterFactory = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS ? display_node_utils__WEBPACK_IMPORTED_MODULE_4__.NodeFilterFactory : _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.DOMFilterFactory;\nconst DefaultStandardFontDataFactory = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS ? display_node_utils__WEBPACK_IMPORTED_MODULE_4__.NodeStandardFontDataFactory : _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.DOMStandardFontDataFactory;\nfunction getDocument(src) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = {\n url: src\n };\n } else if (src instanceof ArrayBuffer || ArrayBuffer.isView(src)) {\n src = {\n data: src\n };\n }\n if (typeof src !== \"object\") {\n throw new Error(\"Invalid parameter in getDocument, need parameter object.\");\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\"Invalid parameter object: need either .data, .range or .url\");\n }\n const task = new PDFDocumentLoadingTask();\n const {\n docId\n } = task;\n const url = src.url ? getUrlProp(src.url) : null;\n const data = src.data ? getDataProp(src.data) : null;\n const httpHeaders = src.httpHeaders || null;\n const withCredentials = src.withCredentials === true;\n const password = src.password ?? null;\n const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : DEFAULT_RANGE_CHUNK_SIZE;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n const docBaseUrl = typeof src.docBaseUrl === \"string\" && !(0,_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.isDataScheme)(src.docBaseUrl) ? src.docBaseUrl : null;\n const cMapUrl = typeof src.cMapUrl === \"string\" ? src.cMapUrl : null;\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory;\n const standardFontDataUrl = typeof src.standardFontDataUrl === \"string\" ? src.standardFontDataUrl : null;\n const StandardFontDataFactory = src.StandardFontDataFactory || DefaultStandardFontDataFactory;\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === \"boolean\" ? src.isOffscreenCanvasSupported : !_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS;\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;\n const disableFontFace = typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS;\n const fontExtraProperties = src.fontExtraProperties === true;\n const enableXfa = src.enableXfa === true;\n const ownerDocument = src.ownerDocument || globalThis.document;\n const disableRange = src.disableRange === true;\n const disableStream = src.disableStream === true;\n const disableAutoFetch = src.disableAutoFetch === true;\n const pdfBug = src.pdfBug === true;\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts = typeof src.useSystemFonts === \"boolean\" ? src.useSystemFonts : !_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS && !disableFontFace;\n const useWorkerFetch = typeof src.useWorkerFetch === \"boolean\" ? src.useWorkerFetch : CMapReaderFactory === _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.DOMCMapReaderFactory && StandardFontDataFactory === _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.DOMStandardFontDataFactory && cMapUrl && standardFontDataUrl && (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.isValidFetchUrl)(cMapUrl, document.baseURI) && (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.isValidFetchUrl)(standardFontDataUrl, document.baseURI);\n const canvasFactory = src.canvasFactory || new DefaultCanvasFactory({\n ownerDocument\n });\n const filterFactory = src.filterFactory || new DefaultFilterFactory({\n docId,\n ownerDocument\n });\n const styleElement = null;\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.setVerbosityLevel)(verbosity);\n const transportFactory = {\n canvasFactory,\n filterFactory\n };\n if (!useWorkerFetch) {\n transportFactory.cMapReaderFactory = new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked\n });\n transportFactory.standardFontDataFactory = new StandardFontDataFactory({\n baseUrl: standardFontDataUrl\n });\n }\n if (!worker) {\n const workerParams = {\n verbosity,\n port: _worker_options_js__WEBPACK_IMPORTED_MODULE_14__.GlobalWorkerOptions.workerPort\n };\n worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);\n task._worker = worker;\n }\n const fetchDocParams = {\n docId,\n apiVersion: \"4.2.67\",\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n length,\n docBaseUrl,\n enableXfa,\n evaluatorOptions: {\n maxImageSize,\n disableFontFace,\n ignoreErrors,\n isEvalSupported,\n isOffscreenCanvasSupported,\n canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n cMapUrl: useWorkerFetch ? cMapUrl : null,\n standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null\n }\n };\n const transportParams = {\n ignoreErrors,\n disableFontFace,\n fontExtraProperties,\n enableXfa,\n ownerDocument,\n disableAutoFetch,\n pdfBug,\n styleElement\n };\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n const workerIdPromise = _fetchDocument(worker, fetchDocParams);\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n if (rangeTransport) {\n networkStream = new _transport_stream_js__WEBPACK_IMPORTED_MODULE_10__.PDFDataTransportStream(rangeTransport, {\n disableRange,\n disableStream\n });\n } else if (!data) {\n const createPDFNetworkStream = params => {\n if (_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS) {\n const isFetchSupported = function () {\n return typeof fetch !== \"undefined\" && typeof Response !== \"undefined\" && \"body\" in Response.prototype;\n };\n return isFetchSupported() && (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.isValidFetchUrl)(params.url) ? new display_fetch_stream__WEBPACK_IMPORTED_MODULE_11__.PDFFetchStream(params) : new display_node_stream__WEBPACK_IMPORTED_MODULE_13__.PDFNodeStream(params);\n }\n return (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.isValidFetchUrl)(params.url) ? new display_fetch_stream__WEBPACK_IMPORTED_MODULE_11__.PDFFetchStream(params) : new display_network__WEBPACK_IMPORTED_MODULE_12__.PDFNetworkStream(params);\n };\n networkStream = createPDFNetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream\n });\n }\n resolve(networkStream);\n });\n return Promise.all([workerIdPromise, networkStreamPromise]).then(function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n const messageHandler = new _shared_message_handler_js__WEBPACK_IMPORTED_MODULE_7__.MessageHandler(docId, workerId, worker.port);\n const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject);\n return task;\n}\nasync function _fetchDocument(worker, source) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerId = await worker.messageHandler.sendWithPromise(\"GetDocRequest\", source, source.data ? [source.data.buffer] : null);\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n return workerId;\n}\nfunction getUrlProp(val) {\n if (val instanceof URL) {\n return val.href;\n }\n try {\n return new URL(val, window.location).href;\n } catch {\n if (_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS && typeof val === \"string\") {\n return val;\n }\n }\n throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n}\nfunction getDataProp(val) {\n if (_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS && typeof Buffer !== \"undefined\" && val instanceof Buffer) {\n throw new Error(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n return val;\n }\n if (typeof val === \"string\") {\n return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.stringToBytes)(val);\n }\n if (val instanceof ArrayBuffer || ArrayBuffer.isView(val) || typeof val === \"object\" && !isNaN(val?.length)) {\n return new Uint8Array(val);\n }\n throw new Error(\"Invalid PDF binary data: either TypedArray, \" + \"string, or array-like object is expected in the data property.\");\n}\nfunction isRefProxy(ref) {\n return typeof ref === \"object\" && Number.isInteger(ref?.num) && ref.num >= 0 && Number.isInteger(ref?.gen) && ref.gen >= 0;\n}\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n constructor() {\n this._capability = Promise.withResolvers();\n this._transport = null;\n this._worker = null;\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n this.destroyed = false;\n this.onPassword = null;\n this.onProgress = null;\n }\n get promise() {\n return this._capability.promise;\n }\n async destroy() {\n this.destroyed = true;\n try {\n if (this._worker?.port) {\n this._worker._pendingDestroy = true;\n }\n await this._transport?.destroy();\n } catch (ex) {\n if (this._worker?.port) {\n delete this._worker._pendingDestroy;\n }\n throw ex;\n }\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n}\nclass PDFDataRangeTransport {\n constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = Promise.withResolvers();\n }\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n transportReady() {\n this._readyCapability.resolve();\n }\n requestDataRange(begin, end) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n abort() {}\n}\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n }\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get numPages() {\n return this._pdfInfo.numPages;\n }\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n get isPureXfa() {\n return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n getDestinations() {\n return this._transport.getDestinations();\n }\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n getPageMode() {\n return this._transport.getPageMode();\n }\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n getAttachments() {\n return this._transport.getAttachments();\n }\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n getOutline() {\n return this._transport.getOutline();\n }\n getOptionalContentConfig({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getOptionalContentConfig(renderingIntent);\n }\n getPermissions() {\n return this._transport.getPermissions();\n }\n getMetadata() {\n return this._transport.getMetadata();\n }\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n getData() {\n return this._transport.getData();\n }\n saveDocument() {\n return this._transport.saveDocument();\n }\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n destroy() {\n return this.loadingTask.destroy();\n }\n cachedPageNumber(ref) {\n return this._transport.cachedPageNumber(ref);\n }\n get loadingParams() {\n return this._transport.loadingParams;\n }\n get loadingTask() {\n return this._transport.loadingTask;\n }\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\nclass PDFPageProxy {\n #delayedCleanupTimeout = null;\n #pendingCleanup = false;\n constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._transport = transport;\n this._stats = pdfBug ? new _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this._maybeCleanupAfterRender = false;\n this._intentStates = new Map();\n this.destroyed = false;\n }\n get pageNumber() {\n return this._pageIndex + 1;\n }\n get rotate() {\n return this._pageInfo.rotate;\n }\n get ref() {\n return this._pageInfo.ref;\n }\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n get view() {\n return this._pageInfo.view;\n }\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n } = {}) {\n return new _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n getAnnotations({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getAnnotations(this._pageIndex, renderingIntent);\n }\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get isPureXfa() {\n return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationMode.ENABLE,\n transform = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null\n }) {\n this._stats?.time(\"Overall\");\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage);\n const {\n renderingIntent,\n cacheKey\n } = intentArgs;\n this.#pendingCleanup = false;\n this.#abortDelayedCleanup();\n optionalContentConfigPromise ||= this._transport.getOptionalContentConfig(renderingIntent);\n let intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(cacheKey, intentState);\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n const intentPrint = !!(renderingIntent & _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.PRINT);\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = Promise.withResolvers();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n if (this._maybeCleanupAfterRender || intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup(!intentPrint);\n if (error) {\n internalRenderTask.capability.reject(error);\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error)\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n this._stats?.timeEnd(\"Rendering\");\n this._stats?.timeEnd(\"Overall\");\n };\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n params: {\n canvasContext,\n viewport,\n transform,\n background\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors\n });\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n if (this.destroyed) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n if (!(optionalContentConfig.renderingIntent & renderingIntent)) {\n throw new Error(\"Must use the same `intent`-argument when calling the `PDFPageProxy.render` \" + \"and `PDFDocumentProxy.getOptionalContentConfig` methods.\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig\n });\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n return renderTask;\n }\n getOperatorList({\n intent = \"display\",\n annotationMode = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationMode.ENABLE,\n printAnnotationStorage = null\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n intentState.renderTasks.delete(opListTask);\n }\n }\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, true);\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = Promise.withResolvers();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n }\n });\n }\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n return this.getXfa().then(xfa => _xfa_text_js__WEBPACK_IMPORTED_MODULE_15__.XfaText.textContent(xfa));\n }\n const readableStream = this.streamTextContent(params);\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n resolve(textContent);\n return;\n }\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null)\n };\n pump();\n });\n }\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n _destroy() {\n this.destroyed = true;\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true\n });\n if (intentState.opListReadCapability) {\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this.#pendingCleanup = false;\n this.#abortDelayedCleanup();\n return Promise.all(waitOn);\n }\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup(false);\n if (resetStats && success) {\n this._stats &&= new _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.StatTimer();\n }\n return success;\n }\n #tryCleanup(delayed = false) {\n this.#abortDelayedCleanup();\n if (!this.#pendingCleanup || this.destroyed) {\n return false;\n }\n if (delayed) {\n this.#delayedCleanupTimeout = setTimeout(() => {\n this.#delayedCleanupTimeout = null;\n this.#tryCleanup(false);\n }, DELAYED_CLEANUP_TIMEOUT);\n return false;\n }\n for (const {\n renderTasks,\n operatorList\n } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n this._intentStates.clear();\n this.objs.clear();\n this.#pendingCleanup = false;\n return true;\n }\n #abortDelayedCleanup() {\n if (this.#delayedCleanupTimeout) {\n clearTimeout(this.#delayedCleanupTimeout);\n this.#delayedCleanupTimeout = null;\n }\n }\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return;\n }\n this._stats?.timeEnd(\"Page Request\");\n intentState.displayReadyCapability?.resolve(transparency);\n }\n _renderPageChunk(operatorListChunk, intentState) {\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup(true);\n }\n }\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageSerializable\n }) {\n const {\n map,\n transfer\n } = annotationStorageSerializable;\n const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: map\n }, transfer);\n const reader = readableStream.getReader();\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n const pump = () => {\n reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return;\n }\n this._renderPageChunk(value, intentState);\n pump();\n }, reason => {\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n if (intentState.operatorList) {\n intentState.operatorList.lastChunk = true;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup(true);\n }\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n });\n };\n pump();\n }\n _abortOperatorList({\n intentState,\n reason,\n force = false\n }) {\n if (!intentState.streamReader) {\n return;\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n if (!force) {\n if (intentState.renderTasks.size > 0) {\n return;\n }\n if (reason instanceof _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < 1000) {\n delay += reason.extraDelay;\n }\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({\n intentState,\n reason,\n force: true\n });\n }, delay);\n return;\n }\n }\n intentState.streamReader.cancel(new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AbortException(reason.message)).catch(() => {});\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n this.cleanup();\n }\n get stats() {\n return this._stats;\n }\n}\nclass LoopbackPort {\n #listeners = new Set();\n #deferred = Promise.resolve();\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(obj, transfer ? {\n transfer\n } : null)\n };\n this.#deferred.then(() => {\n for (const listener of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n addEventListener(name, listener) {\n this.#listeners.add(listener);\n }\n removeEventListener(name, listener) {\n this.#listeners.delete(listener);\n }\n terminate() {\n this.#listeners.clear();\n }\n}\nconst PDFWorkerUtil = {\n isWorkerDisabled: false,\n fakeWorkerId: 0\n};\n{\n if (_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS) {\n PDFWorkerUtil.isWorkerDisabled = true;\n _worker_options_js__WEBPACK_IMPORTED_MODULE_14__.GlobalWorkerOptions.workerSrc ||= \"./pdf.worker.mjs\";\n }\n PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false;\n }\n } catch {\n return false;\n }\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n PDFWorkerUtil.createCDNWrapper = function (url) {\n const wrapper = `await import(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper], {\n type: \"text/javascript\"\n }));\n };\n}\nclass PDFWorker {\n static #workerPorts;\n constructor({\n name = null,\n port = null,\n verbosity = (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.getVerbosityLevel)()\n } = {}) {\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n this._readyCapability = Promise.withResolvers();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n if (port) {\n if (PDFWorker.#workerPorts?.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n (PDFWorker.#workerPorts ||= new WeakMap()).set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n get promise() {\n return this._readyCapability.promise;\n }\n get port() {\n return this._port;\n }\n get messageHandler() {\n return this._messageHandler;\n }\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new _shared_message_handler_js__WEBPACK_IMPORTED_MODULE_7__.MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {});\n this._readyCapability.resolve();\n this._messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }\n _initialize() {\n if (!PDFWorkerUtil.isWorkerDisabled && !PDFWorker.#mainThreadWorkerMessageHandler) {\n let {\n workerSrc\n } = PDFWorker;\n try {\n if (!PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)) {\n workerSrc = PDFWorkerUtil.createCDNWrapper(new URL(workerSrc, window.location).href);\n }\n const worker = new Worker(workerSrc, {\n type: \"module\"\n });\n const messageHandler = new _shared_message_handler_js__WEBPACK_IMPORTED_MODULE_7__.MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n this._setupFakeWorker();\n }\n };\n const onWorkerError = () => {\n if (!this._webWorker) {\n terminateEarly();\n }\n };\n worker.addEventListener(\"error\", onWorkerError);\n messageHandler.on(\"test\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n if (data) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n this._readyCapability.resolve();\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n } else {\n this._setupFakeWorker();\n messageHandler.destroy();\n worker.terminate();\n }\n });\n messageHandler.on(\"ready\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n try {\n sendTest();\n } catch {\n this._setupFakeWorker();\n }\n });\n const sendTest = () => {\n const testObj = new Uint8Array();\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n sendTest();\n return;\n } catch {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.info)(\"The worker has been disabled.\");\n }\n }\n this._setupFakeWorker();\n }\n _setupFakeWorker() {\n if (!PDFWorkerUtil.isWorkerDisabled) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(\"Setting up fake worker.\");\n PDFWorkerUtil.isWorkerDisabled = true;\n }\n PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this._port = port;\n const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n const workerHandler = new _shared_message_handler_js__WEBPACK_IMPORTED_MODULE_7__.MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n const messageHandler = new _shared_message_handler_js__WEBPACK_IMPORTED_MODULE_7__.MessageHandler(id, id + \"_worker\", port);\n this._messageHandler = messageHandler;\n this._readyCapability.resolve();\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }).catch(reason => {\n this._readyCapability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n });\n }\n destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n this._webWorker.terminate();\n this._webWorker = null;\n }\n PDFWorker.#workerPorts?.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n static fromPort(params) {\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n const cachedPort = this.#workerPorts?.get(params.port);\n if (cachedPort) {\n if (cachedPort._pendingDestroy) {\n throw new Error(\"PDFWorker.fromPort - the worker is being destroyed.\\n\" + \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\");\n }\n return cachedPort;\n }\n return new PDFWorker(params);\n }\n static get workerSrc() {\n if (_worker_options_js__WEBPACK_IMPORTED_MODULE_14__.GlobalWorkerOptions.workerSrc) {\n return _worker_options_js__WEBPACK_IMPORTED_MODULE_14__.GlobalWorkerOptions.workerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n static get #mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch {\n return null;\n }\n }\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n if (this.#mainThreadWorkerMessageHandler) {\n return this.#mainThreadWorkerMessageHandler;\n }\n const worker = await import( /*webpackIgnore: true*/this.workerSrc);\n return worker.WorkerMessageHandler;\n };\n return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\nclass WorkerTransport {\n #methodPromises = new Map();\n #pageCache = new Map();\n #pagePromises = new Map();\n #pageRefCache = new Map();\n #passwordCapability = null;\n constructor(messageHandler, loadingTask, networkStream, params, factory) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new _font_loader_js__WEBPACK_IMPORTED_MODULE_3__.FontLoader({\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement\n });\n this._params = params;\n this.canvasFactory = factory.canvasFactory;\n this.filterFactory = factory.filterFactory;\n this.cMapReaderFactory = factory.cMapReaderFactory;\n this.standardFontDataFactory = factory.standardFontDataFactory;\n this.destroyed = false;\n this.destroyCapability = null;\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = Promise.withResolvers();\n this.setupMessageHandler();\n }\n #cacheSimpleMethod(name, data = null) {\n const cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, data);\n this.#methodPromises.set(name, promise);\n return promise;\n }\n get annotationStorage() {\n return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, \"annotationStorage\", new _annotation_storage_js__WEBPACK_IMPORTED_MODULE_1__.AnnotationStorage());\n }\n getRenderingIntent(intent, annotationMode = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationMode.ENABLE, printAnnotationStorage = null, isOpList = false) {\n let renderingIntent = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.DISPLAY;\n let annotationStorageSerializable = _annotation_storage_js__WEBPACK_IMPORTED_MODULE_1__.SerializableEmpty;\n switch (intent) {\n case \"any\":\n renderingIntent = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.PRINT;\n break;\n default:\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`getRenderingIntent - invalid intent: ${intent}`);\n }\n switch (annotationMode) {\n case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationMode.DISABLE:\n renderingIntent += _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationMode.ENABLE:\n break;\n case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationMode.ENABLE_FORMS:\n renderingIntent += _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationMode.ENABLE_STORAGE:\n renderingIntent += _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.ANNOTATIONS_STORAGE;\n const annotationStorage = renderingIntent & _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.PRINT && printAnnotationStorage instanceof _annotation_storage_js__WEBPACK_IMPORTED_MODULE_1__.PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\n annotationStorageSerializable = annotationStorage.serializable;\n break;\n default:\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n if (isOpList) {\n renderingIntent += _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.OPLIST;\n }\n return {\n renderingIntent,\n cacheKey: `${renderingIntent}_${annotationStorageSerializable.hash}`,\n annotationStorageSerializable\n };\n }\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n this.destroyed = true;\n this.destroyCapability = Promise.withResolvers();\n this.#passwordCapability?.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n const waitOn = [];\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n this.#pageRefCache.clear();\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#methodPromises.clear();\n this.filterFactory.destroy();\n (0,_text_layer_js__WEBPACK_IMPORTED_MODULE_6__.cleanupTextLayer)();\n this._networkStream?.cancelAllRequests(new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AbortException(\"Worker was terminated.\"));\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n setupMessageHandler() {\n const {\n messageHandler,\n loadingTask\n } = this;\n messageHandler.on(\"GetReader\", (data, sink) => {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total\n };\n };\n sink.onPull = () => {\n this._fullReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(value instanceof ArrayBuffer, \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", data => {\n const headersCapability = Promise.withResolvers();\n const fullReader = this._fullReader;\n fullReader.headersReady.then(() => {\n if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n };\n }\n headersCapability.resolve({\n isStreamingSupported: fullReader.isStreamingSupported,\n isRangeSupported: fullReader.isRangeSupported,\n contentLength: fullReader.contentLength\n });\n }, headersCapability.reject);\n return headersCapability.promise;\n });\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n if (!rangeReader) {\n sink.close();\n return;\n }\n sink.onPull = () => {\n rangeReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(value instanceof ArrayBuffer, \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"GetDoc\", ({\n pdfInfo\n }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n messageHandler.on(\"DocException\", function (ex) {\n let reason;\n switch (ex.name) {\n case \"PasswordException\":\n reason = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PasswordException(ex.message, ex.code);\n break;\n case \"InvalidPDFException\":\n reason = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.InvalidPDFException(ex.message);\n break;\n case \"MissingPDFException\":\n reason = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.MissingPDFException(ex.message);\n break;\n case \"UnexpectedResponseException\":\n reason = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.UnexpectedResponseException(ex.message, ex.status);\n break;\n case \"UnknownErrorException\":\n reason = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.UnknownErrorException(ex.message, ex.details);\n break;\n default:\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)(\"DocException - expected a valid Error.\");\n }\n loadingTask._capability.reject(reason);\n });\n messageHandler.on(\"PasswordRequest\", exception => {\n this.#passwordCapability = Promise.withResolvers();\n if (loadingTask.onPassword) {\n const updatePassword = password => {\n if (password instanceof Error) {\n this.#passwordCapability.reject(password);\n } else {\n this.#passwordCapability.resolve({\n password\n });\n }\n };\n try {\n loadingTask.onPassword(updatePassword, exception.code);\n } catch (ex) {\n this.#passwordCapability.reject(ex);\n }\n } else {\n this.#passwordCapability.reject(new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PasswordException(exception.message, exception.code));\n }\n return this.#passwordCapability.promise;\n });\n messageHandler.on(\"DataLoaded\", data => {\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length\n });\n this.downloadInfoCapability.resolve(data);\n });\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return;\n }\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return null;\n }\n if (this.commonObjs.has(id)) {\n return null;\n }\n switch (type) {\n case \"Font\":\n const params = this._params;\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n const inspectFont = params.pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n const font = new _font_loader_js__WEBPACK_IMPORTED_MODULE_3__.FontFaceObject(exportedData, {\n disableFontFace: params.disableFontFace,\n ignoreErrors: params.ignoreErrors,\n inspectFont\n });\n this.fontLoader.bind(font).catch(() => messageHandler.sendWithPromise(\"FontFallback\", {\n id\n })).finally(() => {\n if (!params.fontExtraProperties && font.data) {\n font.data = null;\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"CopyLocalImage\":\n const {\n imageRef\n } = exportedData;\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(imageRef, \"The imageRef must be defined.\");\n for (const pageProxy of this.#pageCache.values()) {\n for (const [, data] of pageProxy.objs) {\n if (data.ref !== imageRef) {\n continue;\n }\n if (!data.dataLen) {\n return null;\n }\n this.commonObjs.resolve(id, structuredClone(data));\n return data.dataLen;\n }\n }\n break;\n case \"FontPath\":\n case \"Image\":\n case \"Pattern\":\n this.commonObjs.resolve(id, exportedData);\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n return null;\n });\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n return;\n }\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n if (pageProxy._intentStates.size === 0) {\n imageData?.bitmap?.close();\n return;\n }\n switch (type) {\n case \"Image\":\n pageProxy.objs.resolve(id, imageData);\n if (imageData?.dataLen > _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.MAX_IMAGE_SIZE_TO_CACHE) {\n pageProxy._maybeCleanupAfterRender = true;\n }\n break;\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return;\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total\n });\n });\n messageHandler.on(\"FetchBuiltInCMap\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.cMapReaderFactory) {\n return Promise.reject(new Error(\"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\"));\n }\n return this.cMapReaderFactory.fetch(data);\n });\n messageHandler.on(\"FetchStandardFontData\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.standardFontDataFactory) {\n return Promise.reject(new Error(\"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\"));\n }\n return this.standardFontDataFactory.fetch(data);\n });\n }\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n saveDocument() {\n if (this.annotationStorage.size <= 0) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(\"saveDocument called while `annotationStorage` is empty, \" + \"please use the getData-method instead.\");\n }\n const {\n map,\n transfer\n } = this.annotationStorage.serializable;\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: map,\n filename: this._fullReader?.filename ?? null\n }, transfer).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n getPage(pageNumber) {\n if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex\n }).then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n if (pageInfo.refStr) {\n this.#pageRefCache.set(pageInfo.refStr, pageNumber);\n }\n const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.pdfBug);\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n getPageIndex(ref) {\n if (!isRefProxy(ref)) {\n return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen\n });\n }\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent\n });\n }\n getFieldObjects() {\n return this.#cacheSimpleMethod(\"GetFieldObjects\");\n }\n hasJSActions() {\n return this.#cacheSimpleMethod(\"HasJSActions\");\n }\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id\n });\n }\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n getDocJSActions() {\n return this.#cacheSimpleMethod(\"GetDocJSActions\");\n }\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex\n });\n }\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex\n });\n }\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n getOptionalContentConfig(renderingIntent) {\n return this.#cacheSimpleMethod(\"GetOptionalContentConfig\").then(data => new _optional_content_config_js__WEBPACK_IMPORTED_MODULE_9__.OptionalContentConfig(data, renderingIntent));\n }\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n getMetadata() {\n const name = \"GetMetadata\",\n cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, null).then(results => ({\n info: results[0],\n metadata: results[1] ? new _metadata_js__WEBPACK_IMPORTED_MODULE_8__.Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader?.filename ?? null,\n contentLength: this._fullReader?.contentLength ?? null\n }));\n this.#methodPromises.set(name, promise);\n return promise;\n }\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n async startCleanup(keepLoadedFonts = false) {\n if (this.destroyed) {\n return;\n }\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n if (!cleanupSuccessful) {\n throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#methodPromises.clear();\n this.filterFactory.destroy(true);\n (0,_text_layer_js__WEBPACK_IMPORTED_MODULE_6__.cleanupTextLayer)();\n }\n cachedPageNumber(ref) {\n if (!isRefProxy(ref)) {\n return null;\n }\n const refStr = ref.gen === 0 ? `${ref.num}R` : `${ref.num}R${ref.gen}`;\n return this.#pageRefCache.get(refStr) ?? null;\n }\n get loadingParams() {\n const {\n disableAutoFetch,\n enableXfa\n } = this._params;\n return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, \"loadingParams\", {\n disableAutoFetch,\n enableXfa\n });\n }\n}\nconst INITIAL_DATA = Symbol(\"INITIAL_DATA\");\nclass PDFObjects {\n #objs = Object.create(null);\n #ensureObj(objId) {\n return this.#objs[objId] ||= {\n ...Promise.withResolvers(),\n data: INITIAL_DATA\n };\n }\n get(objId, callback = null) {\n if (callback) {\n const obj = this.#ensureObj(objId);\n obj.promise.then(() => callback(obj.data));\n return null;\n }\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n has(objId) {\n const obj = this.#objs[objId];\n return !!obj && obj.data !== INITIAL_DATA;\n }\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.resolve();\n }\n clear() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n data?.bitmap?.close();\n }\n this.#objs = Object.create(null);\n }\n *[Symbol.iterator]() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n if (data === INITIAL_DATA) {\n continue;\n }\n yield [objId, data];\n }\n }\n}\nclass RenderTask {\n #internalRenderTask = null;\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\n this.onContinue = null;\n }\n get promise() {\n return this.#internalRenderTask.capability.promise;\n }\n cancel(extraDelay = 0) {\n this.#internalRenderTask.cancel(null, extraDelay);\n }\n get separateAnnots() {\n const {\n separateAnnots\n } = this.#internalRenderTask.operatorList;\n if (!separateAnnots) {\n return false;\n }\n const {\n annotationCanvasMap\n } = this.#internalRenderTask;\n return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0;\n }\n}\nclass InternalRenderTask {\n static #canvasInUse = new WeakSet();\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n filterFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n pageColors = null\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this._pdfBug = pdfBug;\n this.pageColors = pageColors;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = Promise.withResolvers();\n this.task = new RenderTask(this);\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n get completed() {\n return this.capability.promise.catch(function () {});\n }\n initializeGraphics({\n transparency = false,\n optionalContentConfig\n }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n }\n InternalRenderTask.#canvasInUse.add(this._canvas);\n }\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const {\n canvasContext,\n viewport,\n transform,\n background\n } = this.params;\n this.gfx = new _canvas_js__WEBPACK_IMPORTED_MODULE_5__.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig\n }, this.annotationCanvasMap, this.pageColors);\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n this.graphicsReadyCallback?.();\n }\n cancel(error = null, extraDelay = 0) {\n this.running = false;\n this.cancelled = true;\n this.gfx?.endDrawing();\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback(error || new _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay));\n }\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\n this.stepper?.updateOperatorList(this.operatorList);\n if (this.running) {\n return;\n }\n this._continue();\n }\n _continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n window.requestAnimationFrame(() => {\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback();\n }\n }\n }\n}\nconst version = \"4.2.67\";\nconst build = \"49b388101\";\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });\n\n/***/ }),\n\n/***/ 583:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BaseCMapReaderFactory: () => (/* binding */ BaseCMapReaderFactory),\n/* harmony export */ BaseCanvasFactory: () => (/* binding */ BaseCanvasFactory),\n/* harmony export */ BaseFilterFactory: () => (/* binding */ BaseFilterFactory),\n/* harmony export */ BaseSVGFactory: () => (/* binding */ BaseSVGFactory),\n/* harmony export */ BaseStandardFontDataFactory: () => (/* binding */ BaseStandardFontDataFactory)\n/* harmony export */ });\n/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(292);\n\nclass BaseFilterFactory {\n constructor() {\n if (this.constructor === BaseFilterFactory) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)(\"Cannot initialize BaseFilterFactory.\");\n }\n }\n addFilter(maps) {\n return \"none\";\n }\n addHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n return \"none\";\n }\n destroy(keepHCM = false) {}\n}\nclass BaseCanvasFactory {\n constructor() {\n if (this.constructor === BaseCanvasFactory) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)(\"Cannot initialize BaseCanvasFactory.\");\n }\n }\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\")\n };\n }\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n _createCanvas(width, height) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)(\"Abstract method `_createCanvas` called.\");\n }\n}\nclass BaseCMapReaderFactory {\n constructor({\n baseUrl = null,\n isCompressed = true\n }) {\n if (this.constructor === BaseCMapReaderFactory) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)(\"Cannot initialize BaseCMapReaderFactory.\");\n }\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n async fetch({\n name\n }) {\n if (!this.baseUrl) {\n throw new Error('The CMap \"baseUrl\" parameter must be specified, ensure that ' + 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.');\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n const compressionType = this.isCompressed ? _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.CMapCompressionType.BINARY : _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.CMapCompressionType.NONE;\n return this._fetchData(url, compressionType).catch(reason => {\n throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n });\n }\n _fetchData(url, compressionType) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)(\"Abstract method `_fetchData` called.\");\n }\n}\nclass BaseStandardFontDataFactory {\n constructor({\n baseUrl = null\n }) {\n if (this.constructor === BaseStandardFontDataFactory) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)(\"Cannot initialize BaseStandardFontDataFactory.\");\n }\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error('The standard font \"baseUrl\" parameter must be specified, ensure that ' + 'the \"standardFontDataUrl\" API parameter is provided.');\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetchData(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n _fetchData(url) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)(\"Abstract method `_fetchData` called.\");\n }\n}\nclass BaseSVGFactory {\n constructor() {\n if (this.constructor === BaseSVGFactory) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)(\"Cannot initialize BaseSVGFactory.\");\n }\n }\n create(width, height, skipDimensions = false) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n if (!skipDimensions) {\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n }\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n return svg;\n }\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n _createSVG(type) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)(\"Abstract method `_createSVG` called.\");\n }\n}\n\n\n/***/ }),\n\n/***/ 923:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n CanvasGraphics: () => (/* binding */ CanvasGraphics)\n});\n\n// EXTERNAL MODULE: ./src/shared/util.js\nvar util = __webpack_require__(292);\n// EXTERNAL MODULE: ./src/display/display_utils.js\nvar display_utils = __webpack_require__(419);\n;// CONCATENATED MODULE: ./src/display/pattern_helper.js\n\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\"\n};\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox) {\n return;\n }\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\nclass BaseShadingPattern {\n constructor() {\n if (this.constructor === BaseShadingPattern) {\n (0,util.unreachable)(\"Cannot initialize BaseShadingPattern.\");\n }\n }\n getPattern() {\n (0,util.unreachable)(\"Abstract method `getPattern` called.\");\n }\n}\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n this.matrix = null;\n }\n _createGradient(ctx) {\n let grad;\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1);\n }\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, (0,display_utils.getCurrentTransform)(ctx)) || [0, 0, 0, 0];\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", width, height, true);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = util.Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n tmpCtx.transform(...owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform(...this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n pattern.setTransform(domMatrix);\n } else {\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n const c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n const c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n const k = y < y1 ? 0 : (y1 - y) / (y1 - y2);\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n let k;\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n bytes[j++] = car - (car - cbr) * k | 0;\n bytes[j++] = cag - (cag - cbg) * k | 0;\n bytes[j++] = cab - (cab - cbb) * k | 0;\n bytes[j++] = 255;\n }\n }\n}\nfunction drawFigure(data, figure, context) {\n const ps = figure.coords;\n const cs = figure.colors;\n let i, ii;\n switch (figure.type) {\n case \"lattice\":\n const verticesPerRow = figure.verticesPerRow;\n const rows = Math.floor(ps.length / verticesPerRow) - 1;\n const cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n let q = i * verticesPerRow;\n for (let j = 0; j < cols; j++, q++) {\n drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n break;\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n}\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._coords = IR[2];\n this._colors = IR[3];\n this._figures = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[7];\n this._background = IR[8];\n this.matrix = null;\n }\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n const EXPECTED_SCALE = 1.1;\n const MAX_PATTERN_SIZE = 3000;\n const BORDER_SIZE = 2;\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n const context = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY\n };\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n const tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight, false);\n const tmpCtx = tmpCanvas.context;\n const data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n const bytes = data.data;\n for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (const figure of this._figures) {\n drawFigure(data, figure, context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n const canvas = tmpCanvas.canvas;\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY\n };\n }\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n let scale;\n if (pathType === PathType.SHADING) {\n scale = util.Util.singularValueDecompose2dScale((0,display_utils.getCurrentTransform)(ctx));\n } else {\n scale = util.Util.singularValueDecompose2dScale(owner.baseTransform);\n if (this.matrix) {\n const matrixScale = util.Util.singularValueDecompose2dScale(this.matrix);\n scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n }\n }\n const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);\n if (pathType !== PathType.SHADING) {\n ctx.setTransform(...owner.baseTransform);\n if (this.matrix) {\n ctx.transform(...this.matrix);\n }\n }\n ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n}\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2\n};\nclass TilingPattern {\n static MAX_PATTERN_SIZE = 3000;\n constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n createPatternCanvas(owner) {\n const operatorList = this.operatorList;\n const bbox = this.bbox;\n const xstep = this.xstep;\n const ystep = this.ystep;\n const paintType = this.paintType;\n const tilingType = this.tilingType;\n const color = this.color;\n const canvasGraphicsFactory = this.canvasGraphicsFactory;\n (0,util.info)(\"TilingType: \" + tilingType);\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n const matrixScale = util.Util.singularValueDecompose2dScale(this.matrix);\n const curMatrixScale = util.Util.singularValueDecompose2dScale(this.baseTransform);\n const combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];\n const dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]);\n const dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]);\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size, true);\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n let adjustedX0 = x0;\n let adjustedY0 = y0;\n let adjustedX1 = x1;\n let adjustedY1 = y1;\n if (x0 < 0) {\n adjustedX0 = 0;\n adjustedX1 += Math.abs(x0);\n }\n if (y0 < 0) {\n adjustedY0 = 0;\n adjustedY1 += Math.abs(y0);\n }\n tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n tmpCtx.save();\n this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);\n graphics.baseTransform = (0,display_utils.getCurrentTransform)(graphics.ctx);\n graphics.executeOperatorList(operatorList);\n graphics.endDrawing();\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: adjustedX0,\n offsetY: adjustedY0\n };\n }\n getSizeAndScale(step, realOutputSize, scale) {\n step = Math.abs(step);\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return {\n scale,\n size\n };\n }\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.current.updateRectMinMax((0,display_utils.getCurrentTransform)(graphics.ctx), [x0, y0, x1, y1]);\n graphics.clip();\n graphics.endPath();\n }\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n const ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n case PaintType.UNCOLORED:\n const cssColor = util.Util.makeHexColor(color[0], color[1], color[2]);\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n default:\n throw new util.FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n getPattern(ctx, owner, inverse, pathType) {\n let matrix = inverse;\n if (pathType !== PathType.SHADING) {\n matrix = util.Util.transform(matrix, owner.baseTransform);\n if (this.matrix) {\n matrix = util.Util.transform(matrix, this.matrix);\n }\n }\n const temporaryPatternCanvas = this.createPatternCanvas(owner);\n let domMatrix = new DOMMatrix(matrix);\n domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n pattern.setTransform(domMatrix);\n return pattern;\n }\n}\n\n;// CONCATENATED MODULE: ./src/shared/image_utils.js\n\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case ImageKind.RGB_24BPP:\n return convertRGBToRGBA(params);\n }\n return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false\n}) {\n const black = util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction convertRGBToRGBA({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height\n}) {\n let i = 0;\n const len32 = src.length >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n if (FeatureTest.isLittleEndian) {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff000000;\n dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000;\n dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000;\n dest[destPos + 3] = s3 >>> 8 | 0xff000000;\n }\n for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff;\n dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff;\n dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff;\n dest[destPos + 3] = s3 << 8 | 0xff;\n }\n for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction grayToRGBA(src, dest) {\n if (FeatureTest.isLittleEndian) {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x10101 | 0xff000000;\n }\n } else {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x1010100 | 0x000000ff;\n }\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/canvas.js\n\n\n\n\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst MAX_GROUP_SIZE = 4096;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst MAX_SIZE_TO_COMPILE = 1000;\nconst FULL_CHUNK_HEIGHT = 16;\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n ctx.__originalSave = ctx.save;\n ctx.__originalRestore = ctx.restore;\n ctx.__originalRotate = ctx.rotate;\n ctx.__originalScale = ctx.scale;\n ctx.__originalTranslate = ctx.translate;\n ctx.__originalTransform = ctx.transform;\n ctx.__originalSetTransform = ctx.setTransform;\n ctx.__originalResetTransform = ctx.resetTransform;\n ctx.__originalClip = ctx.clip;\n ctx.__originalMoveTo = ctx.moveTo;\n ctx.__originalLineTo = ctx.lineTo;\n ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n ctx.__originalRect = ctx.rect;\n ctx.__originalClosePath = ctx.closePath;\n ctx.__originalBeginPath = ctx.beginPath;\n ctx._removeMirroring = () => {\n ctx.save = ctx.__originalSave;\n ctx.restore = ctx.__originalRestore;\n ctx.rotate = ctx.__originalRotate;\n ctx.scale = ctx.__originalScale;\n ctx.translate = ctx.__originalTranslate;\n ctx.transform = ctx.__originalTransform;\n ctx.setTransform = ctx.__originalSetTransform;\n ctx.resetTransform = ctx.__originalResetTransform;\n ctx.clip = ctx.__originalClip;\n ctx.moveTo = ctx.__originalMoveTo;\n ctx.lineTo = ctx.__originalLineTo;\n ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n ctx.rect = ctx.__originalRect;\n ctx.closePath = ctx.__originalClosePath;\n ctx.beginPath = ctx.__originalBeginPath;\n delete ctx._removeMirroring;\n };\n ctx.save = function ctxSave() {\n destCtx.save();\n this.__originalSave();\n };\n ctx.restore = function ctxRestore() {\n destCtx.restore();\n this.__originalRestore();\n };\n ctx.translate = function ctxTranslate(x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n ctx.scale = function ctxScale(x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n this.__originalTransform(a, b, c, d, e, f);\n };\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n ctx.resetTransform = function ctxResetTransform() {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n ctx.rotate = function ctxRotate(angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n ctx.clip = function ctxRotate(rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\n };\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n ctx.closePath = function () {\n destCtx.closePath();\n this.__originalClosePath();\n };\n ctx.beginPath = function () {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n getCanvas(id, width, height) {\n let canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n return canvasEntry;\n }\n delete(id) {\n delete this.cache[id];\n }\n clear() {\n for (const id in this.cache) {\n const canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n}\nfunction drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {\n const [a, b, c, d, tx, ty] = (0,display_utils.getCurrentTransform)(ctx);\n if (b === 0 && c === 0) {\n const tlX = destX * a + tx;\n const rTlX = Math.round(tlX);\n const tlY = destY * d + ty;\n const rTlY = Math.round(tlY);\n const brX = (destX + destW) * a + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destY + destH) * d + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rWidth, rHeight];\n }\n if (a === 0 && d === 0) {\n const tlX = destY * c + tx;\n const rTlX = Math.round(tlX);\n const tlY = destX * b + ty;\n const rTlY = Math.round(tlY);\n const brX = (destY + destH) * c + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destX + destW) * b + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rHeight, rWidth];\n }\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\nfunction compileType3Glyph(imgData) {\n const {\n width,\n height\n } = imgData;\n if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n return null;\n }\n const POINT_TO_PROCESS_LIMIT = 1000;\n const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n const width1 = width + 1;\n let points = new Uint8Array(width1 * (height + 1));\n let i, j, j0;\n const lineSize = width + 7 & ~7;\n let data = new Uint8Array(lineSize * height),\n pos = 0;\n for (const elem of imgData.data) {\n let mask = 128;\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n let count = 0;\n pos = 0;\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n pos++;\n }\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n pos = lineSize * (height - 1);\n j0 = i * width1;\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n const path = new Path2D();\n for (i = 0; count && i <= height; i++) {\n let p = i * width1;\n const end = p + width;\n while (p < end && !points[p]) {\n p++;\n }\n if (p === end) {\n continue;\n }\n path.moveTo(p % width1, i);\n const p0 = p;\n let type = points[p];\n do {\n const step = steps[type];\n do {\n p += step;\n } while (!points[p]);\n const pp = points[p];\n if (pp !== 5 && pp !== 10) {\n type = pp;\n points[p] = 0;\n } else {\n type = pp & 0x33 * type >> 4;\n points[p] &= type >> 2 | type << 2;\n }\n path.lineTo(p % width1, p / width1 | 0);\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n --i;\n }\n data = null;\n points = null;\n const drawOutline = function (c) {\n c.save();\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.fill(path);\n c.beginPath();\n c.restore();\n };\n return drawOutline;\n}\nclass CanvasExtraState {\n constructor(width, height) {\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = util.IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = util.FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = util.TextRenderingMode.FILL;\n this.textRise = 0;\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.transferMaps = \"none\";\n this.startNewPathAndClipBox([0, 0, width, height]);\n }\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n return clone;\n }\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n updatePathMinMax(transform, x, y) {\n [x, y] = util.Util.applyTransform([x, y], transform);\n this.minX = Math.min(this.minX, x);\n this.minY = Math.min(this.minY, y);\n this.maxX = Math.max(this.maxX, x);\n this.maxY = Math.max(this.maxY, y);\n }\n updateRectMinMax(transform, rect) {\n const p1 = util.Util.applyTransform(rect, transform);\n const p2 = util.Util.applyTransform(rect.slice(2), transform);\n const p3 = util.Util.applyTransform([rect[0], rect[3]], transform);\n const p4 = util.Util.applyTransform([rect[2], rect[1]], transform);\n this.minX = Math.min(this.minX, p1[0], p2[0], p3[0], p4[0]);\n this.minY = Math.min(this.minY, p1[1], p2[1], p3[1], p4[1]);\n this.maxX = Math.max(this.maxX, p1[0], p2[0], p3[0], p4[0]);\n this.maxY = Math.max(this.maxY, p1[1], p2[1], p3[1], p4[1]);\n }\n updateScalingPathMinMax(transform, minMax) {\n util.Util.scaleMinMax(transform, minMax);\n this.minX = Math.min(this.minX, minMax[0]);\n this.minY = Math.min(this.minY, minMax[1]);\n this.maxX = Math.max(this.maxX, minMax[2]);\n this.maxY = Math.max(this.maxY, minMax[3]);\n }\n updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n const box = util.Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax);\n if (minMax) {\n return;\n }\n this.updateRectMinMax(transform, box);\n }\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = [this.minX, this.minY, this.maxX, this.maxY];\n if (pathType === PathType.STROKE) {\n if (!transform) {\n (0,util.unreachable)(\"Stroke bounding box must include transform.\");\n }\n const scale = util.Util.singularValueDecompose2dScale(transform);\n const xStrokePad = scale[0] * this.lineWidth / 2;\n const yStrokePad = scale[1] * this.lineWidth / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n return box;\n }\n updateClipFromPath() {\n const intersect = util.Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n isEmptyClip() {\n return this.minX === Infinity;\n }\n startNewPathAndClipBox(box) {\n this.clipBox = box;\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = 0;\n this.maxY = 0;\n }\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return util.Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n }\n}\nfunction putBinaryImageData(ctx, imgData) {\n if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0,\n destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n if (imgData.kind === util.ImageKind.GRAYSCALE_1BPP) {\n const srcLength = src.byteLength;\n const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n const dest32DataLength = dest32.length;\n const fullSrcDiff = width + 7 >> 3;\n const white = 0xffffffff;\n const black = util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n const srcDiff = srcLength - srcPos;\n let k = 0;\n const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n const kEndUnrolled = kEnd & ~7;\n let mask = 0;\n let srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === util.ImageKind.RGBA_32BPP) {\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === util.ImageKind.RGB_24BPP) {\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n destPos = 0;\n for (j = elemsInThisChunk; j--;) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n ({\n srcPos\n } = convertBlackAndWhiteToRGBA({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight,\n nonBlackColor: 0\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\", \"filter\"];\n for (const property of properties) {\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n if (!util.isNodeJS) {\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n }\n}\nfunction composeSMaskBackdrop(bytes, r0, g0, b0) {\n const length = bytes.length;\n for (let i = 3; i < length; i += 4) {\n const alpha = bytes[i];\n if (alpha === 0) {\n bytes[i - 3] = r0;\n bytes[i - 2] = g0;\n bytes[i - 1] = b0;\n } else if (alpha < 255) {\n const alpha_ = 255 - alpha;\n bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8;\n bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8;\n bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8;\n }\n }\n}\nfunction composeSMaskAlpha(maskData, layerData, transferMap) {\n const length = maskData.length;\n const scale = 1 / 255;\n for (let i = 3; i < length; i += 4) {\n const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n layerData[i] = layerData[i] * alpha * scale | 0;\n }\n}\nfunction composeSMaskLuminosity(maskData, layerData, transferMap) {\n const length = maskData.length;\n for (let i = 3; i < length; i += 4) {\n const y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;\n layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16;\n }\n}\nfunction genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n const hasBackdrop = !!backdrop;\n const r0 = hasBackdrop ? backdrop[0] : 0;\n const g0 = hasBackdrop ? backdrop[1] : 0;\n const b0 = hasBackdrop ? backdrop[2] : 0;\n const composeFn = subtype === \"Luminosity\" ? composeSMaskLuminosity : composeSMaskAlpha;\n const PIXELS_TO_PROCESS = 1048576;\n const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n for (let row = 0; row < height; row += chunkSize) {\n const chunkHeight = Math.min(chunkSize, height - row);\n const maskData = maskCtx.getImageData(layerOffsetX - maskOffsetX, row + (layerOffsetY - maskOffsetY), width, chunkHeight);\n const layerData = layerCtx.getImageData(layerOffsetX, row + layerOffsetY, width, chunkHeight);\n if (hasBackdrop) {\n composeSMaskBackdrop(maskData.data, r0, g0, b0);\n }\n composeFn(maskData.data, layerData.data, transferMap);\n layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY);\n }\n}\nfunction composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n}\nfunction getImageSmoothingEnabled(transform, interpolate) {\n if (interpolate) {\n return true;\n }\n const scale = util.Util.singularValueDecompose2dScale(transform);\n scale[0] = Math.fround(scale[0]);\n scale[1] = Math.fround(scale[1]);\n const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * display_utils.PixelsPerInch.PDF_TO_CSS_UNITS);\n return scale[0] <= actualScale && scale[1] <= actualScale;\n}\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\nclass CanvasGraphics {\n constructor(canvasCtx, commonObjs, objs, canvasFactory, filterFactory, {\n optionalContentConfig,\n markedContentStack = null\n }, annotationCanvasMap, pageColors) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this.groupStack = [];\n this.processingType3 = null;\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = markedContentStack || [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n this.pageColors = pageColors;\n this._cachedScaleForStroking = [-1, 0];\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n }\n getObject(data, fallback = null) {\n if (typeof data === \"string\") {\n return data.startsWith(\"g_\") ? this.commonObjs.get(data) : this.objs.get(data);\n }\n return fallback;\n }\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null\n }) {\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n const savedFillStyle = this.ctx.fillStyle;\n this.ctx.fillStyle = background || \"#ffffff\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.fillStyle = savedFillStyle;\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n this.ctx.transform(...(0,display_utils.getCurrentTransform)(this.compositeCtx));\n }\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform(...transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n this.ctx.transform(...viewport.transform);\n this.viewportScale = viewport.scale;\n this.baseTransform = (0,display_utils.getCurrentTransform)(this.ctx);\n }\n executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n if (argsArrayLen === i) {\n return i;\n }\n const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId;\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n fnId = fnArray[i];\n if (fnId !== util.OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n for (const depObjId of argsArray[i]) {\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n i++;\n if (i === argsArrayLen) {\n return i;\n }\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n }\n }\n #restoreInitialState() {\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n this.ctx.restore();\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n }\n endDrawing() {\n this.#restoreInitialState();\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement) {\n canvas.width = canvas.height = 0;\n }\n }\n cache.clear();\n }\n this._cachedBitmapsMap.clear();\n this.#drawFilter();\n }\n #drawFilter() {\n if (this.pageColors) {\n const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\n if (hcmFilterId !== \"none\") {\n const savedFilter = this.ctx.filter;\n this.ctx.filter = hcmFilterId;\n this.ctx.drawImage(this.ctx.canvas, 0, 0);\n this.ctx.filter = savedFilter;\n }\n }\n }\n _scaleImage(img, inverseTransform) {\n const width = img.width;\n const height = img.height;\n let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = paintWidth >= 16384 ? Math.floor(paintWidth / 2) - 1 || 1 : Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = paintHeight >= 16384 ? Math.floor(paintHeight / 2) - 1 || 1 : Math.ceil(paintHeight) / 2;\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n img = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n return {\n img,\n paintWidth,\n paintHeight\n };\n }\n _createMaskCanvas(img) {\n const ctx = this.ctx;\n const {\n width,\n height\n } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = (0,display_utils.getCurrentTransform)(ctx);\n let cache, cacheKey, scaled, maskCanvas;\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), fillColor]);\n cache = this._cachedBitmapsMap.get(mainKey);\n if (!cache) {\n cache = new Map();\n this._cachedBitmapsMap.set(mainKey, cache);\n }\n const cachedImage = cache.get(cacheKey);\n if (cachedImage && !isPatternFill) {\n const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);\n const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]);\n return {\n canvas: cachedImage,\n offsetX,\n offsetY\n };\n }\n scaled = cachedImage;\n }\n if (!scaled) {\n maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n putBinaryImageMask(maskCanvas.context, img);\n }\n let maskToCanvas = util.Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);\n maskToCanvas = util.Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const [minX, minY, maxX, maxY] = util.Util.getAxialAlignedBoundingBox([0, 0, width, height], maskToCanvas);\n const drawnWidth = Math.round(maxX - minX) || 1;\n const drawnHeight = Math.round(maxY - minY) || 1;\n const fillCanvas = this.cachedCanvases.getCanvas(\"fillCanvas\", drawnWidth, drawnHeight);\n const fillCtx = fillCanvas.context;\n const offsetX = minX;\n const offsetY = minY;\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform(...maskToCanvas);\n if (!scaled) {\n scaled = this._scaleImage(maskCanvas.canvas, (0,display_utils.getCurrentTransformInverse)(fillCtx));\n scaled = scaled.img;\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n }\n }\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled((0,display_utils.getCurrentTransform)(fillCtx), img.interpolate);\n drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height);\n fillCtx.globalCompositeOperation = \"source-in\";\n const inverse = util.Util.transform((0,display_utils.getCurrentTransformInverse)(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]);\n fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, PathType.FILL) : fillColor;\n fillCtx.fillRect(0, 0, width, height);\n if (cache && !isPatternFill) {\n this.cachedCanvases.delete(\"fillCanvas\");\n cache.set(cacheKey, fillCanvas.canvas);\n }\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY)\n };\n }\n setLineWidth(width) {\n if (width !== this.current.lineWidth) {\n this._cachedScaleForStroking[0] = -1;\n }\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n }\n setDash(dashArray, dashPhase) {\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n setRenderingIntent(intent) {}\n setFlatness(flatness) {}\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n case \"CA\":\n this.current.strokeAlpha = value;\n break;\n case \"ca\":\n this.current.fillAlpha = value;\n this.ctx.globalAlpha = value;\n break;\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(value);\n break;\n }\n }\n }\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n checkSMaskState() {\n const inSMaskMode = this.inSMaskMode;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n }\n beginSMaskMode() {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const drawnWidth = this.ctx.canvas.width;\n const drawnHeight = this.ctx.canvas.height;\n const cacheId = \"smaskGroupAt\" + this.groupLevel;\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n this.suspendedCtx = this.ctx;\n this.ctx = scratchCanvas.context;\n const ctx = this.ctx;\n ctx.setTransform(...(0,display_utils.getCurrentTransform)(this.suspendedCtx));\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n }\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n this.suspendedCtx = null;\n }\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n save() {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n this.suspendedCtx.save();\n } else {\n this.ctx.save();\n }\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n }\n restore() {\n if (this.stateStack.length === 0 && this.inSMaskMode) {\n this.endSMaskMode();\n }\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n if (this.inSMaskMode) {\n this.suspendedCtx.restore();\n copyCtxState(this.suspendedCtx, this.ctx);\n } else {\n this.ctx.restore();\n }\n this.checkSMaskState();\n this.pendingClip = null;\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n }\n transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n constructPath(ops, args, minMax) {\n const ctx = this.ctx;\n const current = this.current;\n let x = current.x,\n y = current.y;\n let startX, startY;\n const currentTransform = (0,display_utils.getCurrentTransform)(ctx);\n const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0;\n const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\n for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case util.OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n ctx.moveTo(x, y);\n if (width === 0 || height === 0) {\n ctx.lineTo(xw, yh);\n } else {\n ctx.lineTo(xw, y);\n ctx.lineTo(xw, yh);\n ctx.lineTo(x, yh);\n }\n if (!isScalingMatrix) {\n current.updateRectMinMax(currentTransform, [x, y, xw, yh]);\n }\n ctx.closePath();\n break;\n case util.OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case util.OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case util.OPS.curveTo:\n startX = x;\n startY = y;\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier);\n j += 6;\n break;\n case util.OPS.curveTo2:\n startX = x;\n startY = y;\n ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);\n current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier);\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case util.OPS.curveTo3:\n startX = x;\n startY = y;\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier);\n j += 4;\n break;\n case util.OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n if (isScalingMatrix) {\n current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\n }\n current.setCurrentPoint(x, y);\n }\n closePath() {\n this.ctx.closePath();\n }\n stroke(consumePath = true) {\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this, (0,display_utils.getCurrentTransformInverse)(ctx), PathType.STROKE);\n this.rescaleAndStroke(false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(true);\n }\n }\n if (consumePath) {\n this.consumePath(this.current.getClippedPathBoundingBox());\n }\n ctx.globalAlpha = this.current.fillAlpha;\n }\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n fill(consumePath = true) {\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n if (isPatternFill) {\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(ctx, this, (0,display_utils.getCurrentTransformInverse)(ctx), PathType.FILL);\n needRestore = true;\n }\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(\"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n }\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath(intersect);\n }\n }\n eoFill() {\n this.pendingEOFill = true;\n this.fill();\n }\n fillStroke() {\n this.fill(false);\n this.stroke(false);\n this.consumePath();\n }\n eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n }\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n }\n endPath() {\n this.consumePath();\n }\n clip() {\n this.pendingClip = NORMAL_CLIP;\n }\n eoClip() {\n this.pendingClip = EO_CLIP;\n }\n beginText() {\n this.current.textMatrix = util.IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n endText() {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n ctx.save();\n ctx.beginPath();\n for (const path of paths) {\n ctx.setTransform(...path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n }\n setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n }\n setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n }\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n setLeading(leading) {\n this.current.leading = -leading;\n }\n setFont(fontRefName, size) {\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || util.FONT_IDENTITY_MATRIX;\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n (0,util.warn)(\"Invalid font matrix for font \" + fontRefName);\n }\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n this.current.font = fontObj;\n this.current.fontSize = size;\n if (fontObj.isType3Font) {\n return;\n }\n const name = fontObj.loadedName || \"sans-serif\";\n const typeface = fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n let browserFontSize = size;\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n this.current.fontSizeScale = size / browserFontSize;\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n }\n setTextRise(rise) {\n this.current.textRise = rise;\n }\n moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.hypot(a, b);\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n paintChar(character, x, y, patternTransform) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode = textRenderingMode & util.TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(textRenderingMode & util.TextRenderingMode.ADD_TO_PATH_FLAG);\n const patternFill = current.patternFill && !font.missingFile;\n let addToPath;\n if (font.disableFontFace || isAddToPathSet || patternFill) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n if (font.disableFontFace || patternFill) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n if (patternTransform) {\n ctx.setTransform(...patternTransform);\n }\n if (fillStrokeMode === util.TextRenderingMode.FILL || fillStrokeMode === util.TextRenderingMode.FILL_STROKE) {\n ctx.fill();\n }\n if (fillStrokeMode === util.TextRenderingMode.STROKE || fillStrokeMode === util.TextRenderingMode.FILL_STROKE) {\n ctx.stroke();\n }\n ctx.restore();\n } else {\n if (fillStrokeMode === util.TextRenderingMode.FILL || fillStrokeMode === util.TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n }\n if (fillStrokeMode === util.TextRenderingMode.STROKE || fillStrokeMode === util.TextRenderingMode.FILL_STROKE) {\n ctx.strokeText(character, x, y);\n }\n }\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths ||= [];\n paths.push({\n transform: (0,display_utils.getCurrentTransform)(ctx),\n x,\n y,\n fontSize,\n addToPath\n });\n }\n }\n get isFontSubpixelAAEnabled() {\n const {\n context: ctx\n } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10);\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n let enabled = false;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return (0,util.shadow)(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return undefined;\n }\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n const simpleFillText = current.textRenderingMode === util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n let patternTransform;\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this, (0,display_utils.getCurrentTransformInverse)(ctx), PathType.FILL);\n patternTransform = (0,display_utils.getCurrentTransform)(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode = current.textRenderingMode & util.TextRenderingMode.FILL_STROKE_MASK;\n if (fillStrokeMode === util.TextRenderingMode.STROKE || fillStrokeMode === util.TextRenderingMode.FILL_STROKE) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n ctx.lineWidth = lineWidth;\n if (font.isInvalidPDFjsFont) {\n const chars = [];\n let width = 0;\n for (const glyph of glyphs) {\n chars.push(glyph.unicode);\n width += glyph.width;\n }\n ctx.fillText(chars.join(\"\"), 0, 0);\n current.x += width * widthAdvanceScale * textHScale;\n ctx.restore();\n this.compose();\n return undefined;\n }\n let x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n if (font.remeasure && width > 0) {\n const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n }\n }\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY, patternTransform);\n if (accent) {\n const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform);\n }\n }\n }\n const charWidth = vertical ? width * widthAdvanceScale - spacing * fontDirection : width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n this.compose();\n return undefined;\n }\n showType3Text(glyphs) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || util.FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible = current.textRenderingMode === util.TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y);\n ctx.scale(textHScale, fontDirection);\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n (0,util.warn)(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\n if (this.contentVisible) {\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform(...fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n const transformed = util.Util.applyTransform([glyph.width, 0], fontMatrix);\n width = transformed[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n this.processingType3 = null;\n }\n setCharWidth(xWidth, yWidth) {}\n setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip();\n this.endPath();\n }\n getColorN_Pattern(IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const color = IR[1];\n const baseTransform = this.baseTransform || (0,display_utils.getCurrentTransform)(this.ctx);\n const canvasGraphicsFactory = {\n createCanvasGraphics: ctx => new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack\n })\n };\n pattern = new TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = this._getPattern(IR[1], IR[2]);\n }\n return pattern;\n }\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n }\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n }\n setStrokeRGBColor(r, g, b) {\n const color = util.Util.makeHexColor(r, g, b);\n this.ctx.strokeStyle = color;\n this.current.strokeColor = color;\n }\n setFillRGBColor(r, g, b) {\n const color = util.Util.makeHexColor(r, g, b);\n this.ctx.fillStyle = color;\n this.current.fillColor = color;\n this.current.patternFill = false;\n }\n _getPattern(objId, matrix = null) {\n let pattern;\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = getShadingPattern(this.getObject(objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n shadingFill(objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n this.save();\n const pattern = this._getPattern(objId);\n ctx.fillStyle = pattern.getPattern(ctx, this, (0,display_utils.getCurrentTransformInverse)(ctx), PathType.SHADING);\n const inv = (0,display_utils.getCurrentTransformInverse)(ctx);\n if (inv) {\n const {\n width,\n height\n } = ctx.canvas;\n const [x0, y0, x1, y1] = util.Util.getAxialAlignedBoundingBox([0, 0, width, height], inv);\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n beginInlineImage() {\n (0,util.unreachable)(\"Should not call beginInlineImage\");\n }\n beginImageData() {\n (0,util.unreachable)(\"Should not call beginImageData\");\n }\n paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(...matrix);\n }\n this.baseTransform = (0,display_utils.getCurrentTransform)(this.ctx);\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.current.updateRectMinMax((0,display_utils.getCurrentTransform)(this.ctx), bbox);\n this.clip();\n this.endPath();\n }\n }\n paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n const currentCtx = this.ctx;\n if (!group.isolated) {\n (0,util.info)(\"TODO: Support non-isolated groups.\");\n }\n if (group.knockout) {\n (0,util.warn)(\"Knockout groups not supported.\");\n }\n const currentTransform = (0,display_utils.getCurrentTransform)(currentCtx);\n if (group.matrix) {\n currentCtx.transform(...group.matrix);\n }\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n let bounds = util.Util.getAxialAlignedBoundingBox(group.bbox, (0,display_utils.getCurrentTransform)(currentCtx));\n const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n bounds = util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n let scaleX = 1,\n scaleY = 1;\n if (drawnWidth > MAX_GROUP_SIZE) {\n scaleX = drawnWidth / MAX_GROUP_SIZE;\n drawnWidth = MAX_GROUP_SIZE;\n }\n if (drawnHeight > MAX_GROUP_SIZE) {\n scaleY = drawnHeight / MAX_GROUP_SIZE;\n drawnHeight = MAX_GROUP_SIZE;\n }\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n const groupCtx = scratchCanvas.context;\n groupCtx.scale(1 / scaleX, 1 / scaleY);\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform(...currentTransform);\n if (group.smask) {\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n scaleX,\n scaleY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null\n });\n } else {\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.scale(scaleX, scaleY);\n currentCtx.save();\n }\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n endGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.groupLevel--;\n const groupCtx = this.ctx;\n const ctx = this.groupStack.pop();\n this.ctx = ctx;\n this.ctx.imageSmoothingEnabled = false;\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore();\n } else {\n this.ctx.restore();\n const currentMtx = (0,display_utils.getCurrentTransform)(this.ctx);\n this.restore();\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n const dirtyBox = util.Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx);\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n this.ctx.save();\n this.save();\n if (this.baseTransform) {\n this.ctx.setTransform(...this.baseTransform);\n }\n if (Array.isArray(rect) && rect.length === 4) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n const [scaleX, scaleY] = util.Util.singularValueDecompose2dScale((0,display_utils.getCurrentTransform)(this.ctx));\n const {\n viewportScale\n } = this;\n const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);\n const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);\n this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);\n const {\n canvas,\n context\n } = this.annotationCanvas;\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.save();\n this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n this.ctx.rect(rect[0], rect[1], width, height);\n this.ctx.clip();\n this.endPath();\n }\n }\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.transform(...transform);\n this.transform(...matrix);\n }\n endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx.restore();\n this.#drawFilter();\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n }\n paintImageMaskXObject(img) {\n if (!this.contentVisible) {\n return;\n }\n const count = img.count;\n img = this.getObject(img.data, img);\n img.count = count;\n const ctx = this.ctx;\n const glyph = this.processingType3;\n if (glyph) {\n if (glyph.compiled === undefined) {\n glyph.compiled = compileType3Glyph(img);\n }\n if (glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\n }\n const mask = this._createMaskCanvas(img);\n const maskCanvas = mask.canvas;\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n img = this.getObject(img.data, img);\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = (0,display_utils.getCurrentTransform)(ctx);\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n const mask = this._createMaskCanvas(img);\n ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = util.Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n const [x, y] = util.Util.applyTransform([0, 0], trans);\n ctx.drawImage(mask.canvas, x, y);\n }\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n for (const image of images) {\n const {\n data,\n width,\n height,\n transform\n } = image;\n const maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n const img = this.getObject(data, image);\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, (0,display_utils.getCurrentTransformInverse)(ctx), PathType.FILL) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n ctx.save();\n ctx.transform(...transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n (0,util.warn)(\"Dependent image isn't ready yet\");\n return;\n }\n this.paintInlineImageXObject(imgData);\n }\n paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n (0,util.warn)(\"Dependent image isn't ready yet\");\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height\n });\n }\n this.paintInlineImageXObjectGroup(imgData, map);\n }\n applyTransferMapsToCanvas(ctx) {\n if (this.current.transferMaps !== \"none\") {\n ctx.filter = this.current.transferMaps;\n ctx.drawImage(ctx.canvas, 0, 0);\n ctx.filter = \"none\";\n }\n return ctx.canvas;\n }\n applyTransferMapsToBitmap(imgData) {\n if (this.current.transferMaps === \"none\") {\n return imgData.bitmap;\n }\n const {\n bitmap,\n width,\n height\n } = imgData;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.filter = this.current.transferMaps;\n tmpCtx.drawImage(bitmap, 0, 0);\n tmpCtx.filter = \"none\";\n return tmpCanvas.canvas;\n }\n paintInlineImageXObject(imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n this.save();\n if (!util.isNodeJS) {\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n }\n ctx.scale(1 / width, -1 / height);\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = this.applyTransferMapsToBitmap(imgData);\n } else if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n const scaled = this._scaleImage(imgToPaint, (0,display_utils.getCurrentTransformInverse)(ctx));\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled((0,display_utils.getCurrentTransform)(ctx), imgData.interpolate);\n drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n this.compose();\n this.restore();\n }\n paintInlineImageXObjectGroup(imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = imgData.bitmap;\n } else {\n const w = imgData.width;\n const h = imgData.height;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n for (const entry of map) {\n ctx.save();\n ctx.transform(...entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n markPoint(tag) {}\n markPointProps(tag, properties) {}\n beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true\n });\n }\n beginMarkedContentProps(tag, properties) {\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties)\n });\n } else {\n this.markedContentStack.push({\n visible: true\n });\n }\n this.contentVisible = this.isContentVisible();\n }\n endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n beginCompat() {}\n endCompat() {}\n consumePath(clipBox) {\n const isEmpty = this.current.isEmptyClip();\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (!isEmpty) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(\"evenodd\");\n } else {\n ctx.clip();\n }\n }\n this.pendingClip = null;\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n ctx.beginPath();\n }\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = (0,display_utils.getCurrentTransform)(this.ctx);\n if (m[1] === 0 && m[2] === 0) {\n this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n } else {\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[2]);\n const normY = Math.hypot(m[1], m[3]);\n this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n }\n }\n return this._cachedGetSinglePixelWidth;\n }\n getScaleForStroking() {\n if (this._cachedScaleForStroking[0] === -1) {\n const {\n lineWidth\n } = this.current;\n const {\n a,\n b,\n c,\n d\n } = this.ctx.getTransform();\n let scaleX, scaleY;\n if (b === 0 && c === 0) {\n const normX = Math.abs(a);\n const normY = Math.abs(d);\n if (normX === normY) {\n if (lineWidth === 0) {\n scaleX = scaleY = 1 / normX;\n } else {\n const scaledLineWidth = normX * lineWidth;\n scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n }\n } else if (lineWidth === 0) {\n scaleX = 1 / normX;\n scaleY = 1 / normY;\n } else {\n const scaledXLineWidth = normX * lineWidth;\n const scaledYLineWidth = normY * lineWidth;\n scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n }\n } else {\n const absDet = Math.abs(a * d - b * c);\n const normX = Math.hypot(a, b);\n const normY = Math.hypot(c, d);\n if (lineWidth === 0) {\n scaleX = normY / absDet;\n scaleY = normX / absDet;\n } else {\n const baseArea = lineWidth * absDet;\n scaleX = normY > baseArea ? normY / baseArea : 1;\n scaleY = normX > baseArea ? normX / baseArea : 1;\n }\n }\n this._cachedScaleForStroking[0] = scaleX;\n this._cachedScaleForStroking[1] = scaleY;\n }\n return this._cachedScaleForStroking;\n }\n rescaleAndStroke(saveRestore) {\n const {\n ctx\n } = this;\n const {\n lineWidth\n } = this.current;\n const [scaleX, scaleY] = this.getScaleForStroking();\n ctx.lineWidth = lineWidth || 1;\n if (scaleX === 1 && scaleY === 1) {\n ctx.stroke();\n return;\n }\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n ctx.scale(scaleX, scaleY);\n if (dashes.length > 0) {\n const scale = Math.max(scaleX, scaleY);\n ctx.setLineDash(dashes.map(x => x / scale));\n ctx.lineDashOffset /= scale;\n }\n ctx.stroke();\n if (saveRestore) {\n ctx.restore();\n }\n }\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n return true;\n }\n}\nfor (const op in util.OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[util.OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\n\n/***/ }),\n\n/***/ 419:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DOMCMapReaderFactory: () => (/* binding */ DOMCMapReaderFactory),\n/* harmony export */ DOMCanvasFactory: () => (/* binding */ DOMCanvasFactory),\n/* harmony export */ DOMFilterFactory: () => (/* binding */ DOMFilterFactory),\n/* harmony export */ DOMSVGFactory: () => (/* binding */ DOMSVGFactory),\n/* harmony export */ DOMStandardFontDataFactory: () => (/* binding */ DOMStandardFontDataFactory),\n/* harmony export */ PDFDateString: () => (/* binding */ PDFDateString),\n/* harmony export */ PageViewport: () => (/* binding */ PageViewport),\n/* harmony export */ PixelsPerInch: () => (/* binding */ PixelsPerInch),\n/* harmony export */ RenderingCancelledException: () => (/* binding */ RenderingCancelledException),\n/* harmony export */ StatTimer: () => (/* binding */ StatTimer),\n/* harmony export */ fetchData: () => (/* binding */ fetchData),\n/* harmony export */ getColorValues: () => (/* binding */ getColorValues),\n/* harmony export */ getCurrentTransform: () => (/* binding */ getCurrentTransform),\n/* harmony export */ getCurrentTransformInverse: () => (/* binding */ getCurrentTransformInverse),\n/* harmony export */ getFilenameFromUrl: () => (/* binding */ getFilenameFromUrl),\n/* harmony export */ getPdfFilenameFromUrl: () => (/* binding */ getPdfFilenameFromUrl),\n/* harmony export */ getRGB: () => (/* binding */ getRGB),\n/* harmony export */ getXfaPageViewport: () => (/* binding */ getXfaPageViewport),\n/* harmony export */ isDataScheme: () => (/* binding */ isDataScheme),\n/* harmony export */ isPdfFile: () => (/* binding */ isPdfFile),\n/* harmony export */ isValidFetchUrl: () => (/* binding */ isValidFetchUrl),\n/* harmony export */ noContextMenu: () => (/* binding */ noContextMenu),\n/* harmony export */ setLayerDimensions: () => (/* binding */ setLayerDimensions)\n/* harmony export */ });\n/* unused harmony export deprecated */\n/* harmony import */ var _base_factory_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(583);\n/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(292);\n\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nclass PixelsPerInch {\n static CSS = 96.0;\n static PDF = 72.0;\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\nclass DOMFilterFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseFilterFactory {\n #_cache;\n #_defs;\n #docId;\n #document;\n #_hcmCache;\n #id = 0;\n constructor({\n docId,\n ownerDocument = globalThis.document\n } = {}) {\n super();\n this.#docId = docId;\n this.#document = ownerDocument;\n }\n get #cache() {\n return this.#_cache ||= new Map();\n }\n get #hcmCache() {\n return this.#_hcmCache ||= new Map();\n }\n get #defs() {\n if (!this.#_defs) {\n const div = this.#document.createElement(\"div\");\n const {\n style\n } = div;\n style.visibility = \"hidden\";\n style.contain = \"strict\";\n style.width = style.height = 0;\n style.position = \"absolute\";\n style.top = style.left = 0;\n style.zIndex = -1;\n const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n div.append(svg);\n svg.append(this.#_defs);\n this.#document.body.append(div);\n }\n return this.#_defs;\n }\n addFilter(maps) {\n if (!maps) {\n return \"none\";\n }\n let value = this.#cache.get(maps);\n if (value) {\n return value;\n }\n let tableR, tableG, tableB, key;\n if (maps.length === 1) {\n const mapR = maps[0];\n const buffer = new Array(256);\n for (let i = 0; i < 256; i++) {\n buffer[i] = mapR[i] / 255;\n }\n key = tableR = tableG = tableB = buffer.join(\",\");\n } else {\n const [mapR, mapG, mapB] = maps;\n const bufferR = new Array(256);\n const bufferG = new Array(256);\n const bufferB = new Array(256);\n for (let i = 0; i < 256; i++) {\n bufferR[i] = mapR[i] / 255;\n bufferG[i] = mapG[i] / 255;\n bufferB[i] = mapB[i] / 255;\n }\n tableR = bufferR.join(\",\");\n tableG = bufferG.join(\",\");\n tableB = bufferB.join(\",\");\n key = `${tableR}${tableG}${tableB}`;\n }\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(maps, value);\n return value;\n }\n const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n const url = `url(#${id})`;\n this.#cache.set(maps, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n return url;\n }\n addHCMFilter(fgColor, bgColor) {\n const key = `${fgColor}-${bgColor}`;\n const filterName = \"base\";\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const fgRGB = this.#getRGB(fgColor);\n fgColor = _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.Util.makeHexColor(...fgRGB);\n const bgRGB = this.#getRGB(bgColor);\n bgColor = _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.Util.makeHexColor(...bgRGB);\n this.#defs.style.color = \"\";\n if (fgColor === \"#000000\" && bgColor === \"#ffffff\" || fgColor === bgColor) {\n return info.url;\n }\n const map = new Array(256);\n for (let i = 0; i <= 255; i++) {\n const x = i / 255;\n map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n }\n const table = map.join(\",\");\n const id = `g_${this.#docId}_hcm_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addTransferMapConversion(table, table, table, filter);\n this.#addGrayConversion(filter);\n const getSteps = (c, n) => {\n const start = fgRGB[c] / 255;\n const end = bgRGB[c] / 255;\n const arr = new Array(n + 1);\n for (let i = 0; i <= n; i++) {\n arr[i] = start + i / n * (end - start);\n }\n return arr.join(\",\");\n };\n this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter);\n info.url = `url(#${id})`;\n return info.url;\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]);\n let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]);\n let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this));\n if (bgGray < fgGray) {\n [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB];\n }\n this.#defs.style.color = \"\";\n const getSteps = (fg, bg, n) => {\n const arr = new Array(256);\n const step = (bgGray - fgGray) / n;\n const newStart = fg / 255;\n const newStep = (bg - fg) / (255 * n);\n let prev = 0;\n for (let i = 0; i <= n; i++) {\n const k = Math.round(fgGray + i * step);\n const value = newStart + i * newStep;\n for (let j = prev; j <= k; j++) {\n arr[j] = value;\n }\n prev = k + 1;\n }\n for (let i = prev; i < 256; i++) {\n arr[i] = arr[prev - 1];\n }\n return arr.join(\",\");\n };\n const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addGrayConversion(filter);\n this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter);\n info.url = `url(#${id})`;\n return info.url;\n }\n destroy(keepHCM = false) {\n if (keepHCM && this.#hcmCache.size !== 0) {\n return;\n }\n if (this.#_defs) {\n this.#_defs.parentNode.parentNode.remove();\n this.#_defs = null;\n }\n if (this.#_cache) {\n this.#_cache.clear();\n this.#_cache = null;\n }\n this.#id = 0;\n }\n #addGrayConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n filter.append(feColorMatrix);\n }\n #createFilter(id) {\n const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n filter.setAttribute(\"id\", id);\n this.#defs.append(filter);\n return filter;\n }\n #appendFeFunc(feComponentTransfer, func, table) {\n const feFunc = this.#document.createElementNS(SVG_NS, func);\n feFunc.setAttribute(\"type\", \"discrete\");\n feFunc.setAttribute(\"tableValues\", table);\n feComponentTransfer.append(feFunc);\n }\n #addTransferMapConversion(rTable, gTable, bTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n }\n #getRGB(color) {\n this.#defs.style.color = color;\n return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n }\n}\nclass DOMCanvasFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseCanvasFactory {\n constructor({\n ownerDocument = globalThis.document\n } = {}) {\n super();\n this._document = ownerDocument;\n }\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\nasync function fetchData(url, type = \"text\") {\n if (isValidFetchUrl(url, document.baseURI)) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n switch (type) {\n case \"arraybuffer\":\n return response.arrayBuffer();\n case \"blob\":\n return response.blob();\n case \"json\":\n return response.json();\n }\n return response.text();\n }\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n request.responseType = type;\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n switch (type) {\n case \"arraybuffer\":\n case \"blob\":\n case \"json\":\n resolve(request.response);\n return;\n }\n resolve(request.responseText);\n return;\n }\n reject(new Error(request.statusText));\n };\n request.send(null);\n });\n}\nclass DOMCMapReaderFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n return fetchData(url, this.isCompressed ? \"arraybuffer\" : \"text\").then(data => ({\n cMapData: data instanceof ArrayBuffer ? new Uint8Array(data) : (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.stringToBytes)(data),\n compressionType\n }));\n }\n}\nclass DOMStandardFontDataFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseStandardFontDataFactory {\n _fetchData(url) {\n return fetchData(url, \"arraybuffer\").then(data => new Uint8Array(data));\n }\n}\nclass DOMSVGFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\nclass PageViewport {\n constructor({\n viewBox,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n }) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = (viewBox[3] - viewBox[1]) * scale;\n height = (viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = (viewBox[2] - viewBox[0]) * scale;\n height = (viewBox[3] - viewBox[1]) * scale;\n }\n this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n this.width = width;\n this.height = height;\n }\n get rawDims() {\n const {\n viewBox\n } = this;\n return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.shadow)(this, \"rawDims\", {\n pageWidth: viewBox[2] - viewBox[0],\n pageHeight: viewBox[3] - viewBox[1],\n pageX: viewBox[0],\n pageY: viewBox[1]\n });\n }\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n convertToViewportPoint(x, y) {\n return _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.Util.applyTransform([x, y], this.transform);\n }\n convertToViewportRectangle(rect) {\n const topLeft = _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.Util.applyTransform([rect[0], rect[1]], this.transform);\n const bottomRight = _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.Util.applyTransform([rect[2], rect[3]], this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n convertToPdfPoint(x, y) {\n return _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.Util.applyInverseTransform([x, y], this.transform);\n }\n}\nclass RenderingCancelledException extends _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.BaseException {\n constructor(msg, extraDelay = 0) {\n super(msg, \"RenderingCancelledException\");\n this.extraDelay = extraDelay;\n }\n}\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\nfunction getFilenameFromUrl(url, onlyStripPath = false) {\n if (!onlyStripPath) {\n [url] = url.split(/[#?]/, 1);\n }\n return url.substring(url.lastIndexOf(\"/\") + 1);\n}\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.warn)('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const splitURI = reURI.exec(url);\n let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n if (suggestedFilename.includes(\"%\")) {\n try {\n suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];\n } catch {}\n }\n }\n return suggestedFilename || defaultFilename;\n}\nclass StatTimer {\n started = Object.create(null);\n times = [];\n time(name) {\n if (name in this.started) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.warn)(`Timer is already running for ${name}`);\n }\n this.started[name] = Date.now();\n }\n timeEnd(name) {\n if (!(name in this.started)) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.warn)(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now()\n });\n delete this.started[name];\n }\n toString() {\n const outBuf = [];\n let longest = 0;\n for (const {\n name\n } of this.times) {\n longest = Math.max(name.length, longest);\n }\n for (const {\n name,\n start,\n end\n } of this.times) {\n outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\nfunction isValidFetchUrl(url, baseUrl) {\n try {\n const {\n protocol\n } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n return protocol === \"http:\" || protocol === \"https:\";\n } catch {\n return false;\n }\n}\nfunction noContextMenu(e) {\n e.preventDefault();\n}\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\nlet pdfDateStringRegex;\nclass PDFDateString {\n static toDateObject(input) {\n if (!input || typeof input !== \"string\") {\n return null;\n }\n pdfDateStringRegex ||= new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n const matches = pdfDateStringRegex.exec(input);\n if (!matches) {\n return null;\n }\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\nfunction getXfaPageViewport(xfaPage, {\n scale = 1,\n rotation = 0\n}) {\n const {\n width,\n height\n } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n return new PageViewport({\n viewBox,\n scale,\n rotation\n });\n}\nfunction getRGB(color) {\n if (color.startsWith(\"#\")) {\n const colorRGB = parseInt(color.slice(1), 16);\n return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff];\n }\n if (color.startsWith(\"rgb(\")) {\n return color.slice(4, -1).split(\",\").map(x => parseInt(x));\n }\n if (color.startsWith(\"rgba(\")) {\n return color.slice(5, -1).split(\",\").map(x => parseInt(x)).slice(0, 3);\n }\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.warn)(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n}\nfunction getColorValues(colors) {\n const span = document.createElement(\"span\");\n span.style.visibility = \"hidden\";\n document.body.append(span);\n for (const name of colors.keys()) {\n span.style.color = name;\n const computedColor = window.getComputedStyle(span).color;\n colors.set(name, getRGB(computedColor));\n }\n span.remove();\n}\nfunction getCurrentTransform(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform();\n return [a, b, c, d, e, f];\n}\nfunction getCurrentTransformInverse(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform().invertSelf();\n return [a, b, c, d, e, f];\n}\nfunction setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) {\n if (viewport instanceof PageViewport) {\n const {\n pageWidth,\n pageHeight\n } = viewport.rawDims;\n const {\n style\n } = div;\n const useRound = _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.FeatureTest.isCSSRoundSupported;\n const w = `var(--scale-factor) * ${pageWidth}px`,\n h = `var(--scale-factor) * ${pageHeight}px`;\n const widthStr = useRound ? `round(${w}, 1px)` : `calc(${w})`,\n heightStr = useRound ? `round(${h}, 1px)` : `calc(${h})`;\n if (!mustFlip || viewport.rotation % 180 === 0) {\n style.width = widthStr;\n style.height = heightStr;\n } else {\n style.width = heightStr;\n style.height = widthStr;\n }\n }\n if (mustRotate) {\n div.setAttribute(\"data-main-rotation\", viewport.rotation);\n }\n}\n\n\n/***/ }),\n\n/***/ 47:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DrawLayer: () => (/* binding */ DrawLayer)\n/* harmony export */ });\n/* harmony import */ var _display_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(419);\n/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(292);\n\n\nclass DrawLayer {\n #parent = null;\n #id = 0;\n #mapping = new Map();\n #toUpdate = new Map();\n constructor({\n pageIndex\n }) {\n this.pageIndex = pageIndex;\n }\n setParent(parent) {\n if (!this.#parent) {\n this.#parent = parent;\n return;\n }\n if (this.#parent !== parent) {\n if (this.#mapping.size > 0) {\n for (const root of this.#mapping.values()) {\n root.remove();\n parent.append(root);\n }\n }\n this.#parent = parent;\n }\n }\n static get _svgFactory() {\n return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.shadow)(this, \"_svgFactory\", new _display_utils_js__WEBPACK_IMPORTED_MODULE_0__.DOMSVGFactory());\n }\n static #setBox(element, {\n x = 0,\n y = 0,\n width = 1,\n height = 1\n } = {}) {\n const {\n style\n } = element;\n style.top = `${100 * y}%`;\n style.left = `${100 * x}%`;\n style.width = `${100 * width}%`;\n style.height = `${100 * height}%`;\n }\n #createSVG(box) {\n const svg = DrawLayer._svgFactory.create(1, 1, true);\n this.#parent.append(svg);\n svg.setAttribute(\"aria-hidden\", true);\n DrawLayer.#setBox(svg, box);\n return svg;\n }\n #createClipPath(defs, pathId) {\n const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n defs.append(clipPath);\n const clipPathId = `clip_${pathId}`;\n clipPath.setAttribute(\"id\", clipPathId);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n const clipPathUse = DrawLayer._svgFactory.createElement(\"use\");\n clipPath.append(clipPathUse);\n clipPathUse.setAttribute(\"href\", `#${pathId}`);\n clipPathUse.classList.add(\"clip\");\n return clipPathId;\n }\n highlight(outlines, color, opacity, isPathUpdatable = false) {\n const id = this.#id++;\n const root = this.#createSVG(outlines.box);\n root.classList.add(\"highlight\");\n if (outlines.free) {\n root.classList.add(\"free\");\n }\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"d\", outlines.toSVGPath());\n if (isPathUpdatable) {\n this.#toUpdate.set(id, path);\n }\n const clipPathId = this.#createClipPath(defs, pathId);\n const use = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use);\n root.setAttribute(\"fill\", color);\n root.setAttribute(\"fill-opacity\", opacity);\n use.setAttribute(\"href\", `#${pathId}`);\n this.#mapping.set(id, root);\n return {\n id,\n clipPathId: `url(#${clipPathId})`\n };\n }\n highlightOutline(outlines) {\n const id = this.#id++;\n const root = this.#createSVG(outlines.box);\n root.classList.add(\"highlightOutline\");\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"d\", outlines.toSVGPath());\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n let maskId;\n if (outlines.free) {\n root.classList.add(\"free\");\n const mask = DrawLayer._svgFactory.createElement(\"mask\");\n defs.append(mask);\n maskId = `mask_p${this.pageIndex}_${id}`;\n mask.setAttribute(\"id\", maskId);\n mask.setAttribute(\"maskUnits\", \"objectBoundingBox\");\n const rect = DrawLayer._svgFactory.createElement(\"rect\");\n mask.append(rect);\n rect.setAttribute(\"width\", \"1\");\n rect.setAttribute(\"height\", \"1\");\n rect.setAttribute(\"fill\", \"white\");\n const use = DrawLayer._svgFactory.createElement(\"use\");\n mask.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n use.setAttribute(\"stroke\", \"none\");\n use.setAttribute(\"fill\", \"black\");\n use.setAttribute(\"fill-rule\", \"nonzero\");\n use.classList.add(\"mask\");\n }\n const use1 = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use1);\n use1.setAttribute(\"href\", `#${pathId}`);\n if (maskId) {\n use1.setAttribute(\"mask\", `url(#${maskId})`);\n }\n const use2 = use1.cloneNode();\n root.append(use2);\n use1.classList.add(\"mainOutline\");\n use2.classList.add(\"secondaryOutline\");\n this.#mapping.set(id, root);\n return id;\n }\n finalizeLine(id, line) {\n const path = this.#toUpdate.get(id);\n this.#toUpdate.delete(id);\n this.updateBox(id, line.box);\n path.setAttribute(\"d\", line.toSVGPath());\n }\n updateLine(id, line) {\n const root = this.#mapping.get(id);\n const defs = root.firstChild;\n const path = defs.firstChild;\n path.setAttribute(\"d\", line.toSVGPath());\n }\n removeFreeHighlight(id) {\n this.remove(id);\n this.#toUpdate.delete(id);\n }\n updatePath(id, line) {\n this.#toUpdate.get(id).setAttribute(\"d\", line.toSVGPath());\n }\n updateBox(id, box) {\n DrawLayer.#setBox(this.#mapping.get(id), box);\n }\n show(id, visible) {\n this.#mapping.get(id).classList.toggle(\"hidden\", !visible);\n }\n rotate(id, angle) {\n this.#mapping.get(id).setAttribute(\"data-main-rotation\", angle);\n }\n changeColor(id, color) {\n this.#mapping.get(id).setAttribute(\"fill\", color);\n }\n changeOpacity(id, opacity) {\n this.#mapping.get(id).setAttribute(\"fill-opacity\", opacity);\n }\n addClass(id, className) {\n this.#mapping.get(id).classList.add(className);\n }\n removeClass(id, className) {\n this.#mapping.get(id).classList.remove(className);\n }\n remove(id) {\n if (this.#parent === null) {\n return;\n }\n this.#mapping.get(id).remove();\n this.#mapping.delete(id);\n }\n destroy() {\n this.#parent = null;\n for (const root of this.#mapping.values()) {\n root.remove();\n }\n this.#mapping.clear();\n }\n}\n\n\n/***/ }),\n\n/***/ 731:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n AnnotationEditorLayer: () => (/* binding */ AnnotationEditorLayer)\n});\n\n// EXTERNAL MODULE: ./src/shared/util.js\nvar util = __webpack_require__(292);\n// EXTERNAL MODULE: ./src/display/editor/editor.js + 1 modules\nvar editor_editor = __webpack_require__(310);\n// EXTERNAL MODULE: ./src/display/editor/tools.js\nvar tools = __webpack_require__(830);\n// EXTERNAL MODULE: ./src/display/annotation_layer.js + 1 modules\nvar annotation_layer = __webpack_require__(976);\n;// CONCATENATED MODULE: ./src/display/editor/freetext.js\n\n\n\n\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\nclass FreeTextEditor extends editor_editor.AnnotationEditor {\n #boundEditorDivBlur = this.editorDivBlur.bind(this);\n #boundEditorDivFocus = this.editorDivFocus.bind(this);\n #boundEditorDivInput = this.editorDivInput.bind(this);\n #boundEditorDivKeydown = this.editorDivKeydown.bind(this);\n #boundEditorDivPaste = this.editorDivPaste.bind(this);\n #color;\n #content = \"\";\n #editorDivId = `${this.id}-editor`;\n #fontSize;\n #initialData = null;\n static _freeTextDefaultContent = \"\";\n static _internalPadding = 0;\n static _defaultColor = null;\n static _defaultFontSize = 10;\n static get _keyboardManager() {\n const proto = FreeTextEditor.prototype;\n const arrowChecker = self => self.isEmpty();\n const small = tools.AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = tools.AnnotationEditorUIManager.TRANSLATE_BIG;\n return (0,util.shadow)(this, \"_keyboardManager\", new tools.KeyboardManager([[[\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"], proto.commitOrRemove, {\n bubbles: true\n }], [[\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"], proto.commitOrRemove], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._translateEmpty, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto._translateEmpty, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._translateEmpty, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto._translateEmpty, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._translateEmpty, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto._translateEmpty, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._translateEmpty, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto._translateEmpty, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n static _type = \"freetext\";\n static _editorType = util.AnnotationEditorType.FREETEXT;\n constructor(params) {\n super({\n ...params,\n name: \"freeTextEditor\"\n });\n this.#color = params.color || FreeTextEditor._defaultColor || editor_editor.AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n }\n static initialize(l10n, uiManager) {\n editor_editor.AnnotationEditor.initialize(l10n, uiManager, {\n strings: [\"pdfjs-free-text-default-content\"]\n });\n const style = getComputedStyle(document.documentElement);\n this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\"));\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case util.AnnotationEditorParamsType.FREETEXT_SIZE:\n FreeTextEditor._defaultFontSize = value;\n break;\n case util.AnnotationEditorParamsType.FREETEXT_COLOR:\n FreeTextEditor._defaultColor = value;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case util.AnnotationEditorParamsType.FREETEXT_SIZE:\n this.#updateFontSize(value);\n break;\n case util.AnnotationEditorParamsType.FREETEXT_COLOR:\n this.#updateColor(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[util.AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [util.AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || editor_editor.AnnotationEditor._defaultLineColor]];\n }\n get propertiesToUpdate() {\n return [[util.AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [util.AnnotationEditorParamsType.FREETEXT_COLOR, this.#color]];\n }\n #updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--scale-factor))`;\n this.translate(0, -(size - this.#fontSize) * this.parentScale);\n this.#fontSize = size;\n this.#setEditorDimensions();\n };\n const savedFontsize = this.#fontSize;\n this.addCommands({\n cmd: setFontsize.bind(this, fontSize),\n undo: setFontsize.bind(this, savedFontsize),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: util.AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateColor(color) {\n const setColor = col => {\n this.#color = this.editorDiv.style.color = col;\n };\n const savedColor = this.#color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: util.AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _translateEmpty(x, y) {\n this._uiManager.translateSelectedEditors(x, y, true);\n }\n getInitialTranslation() {\n const scale = this.parentScale;\n return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale];\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n enableEditMode() {\n if (this.isInEditMode()) {\n return;\n }\n this.parent.setEditingState(false);\n this.parent.updateToolbar(util.AnnotationEditorType.FREETEXT);\n super.enableEditMode();\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = true;\n this._isDraggable = false;\n this.div.removeAttribute(\"aria-activedescendant\");\n this.editorDiv.addEventListener(\"keydown\", this.#boundEditorDivKeydown);\n this.editorDiv.addEventListener(\"focus\", this.#boundEditorDivFocus);\n this.editorDiv.addEventListener(\"blur\", this.#boundEditorDivBlur);\n this.editorDiv.addEventListener(\"input\", this.#boundEditorDivInput);\n this.editorDiv.addEventListener(\"paste\", this.#boundEditorDivPaste);\n }\n disableEditMode() {\n if (!this.isInEditMode()) {\n return;\n }\n this.parent.setEditingState(true);\n super.disableEditMode();\n this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = false;\n this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n this._isDraggable = true;\n this.editorDiv.removeEventListener(\"keydown\", this.#boundEditorDivKeydown);\n this.editorDiv.removeEventListener(\"focus\", this.#boundEditorDivFocus);\n this.editorDiv.removeEventListener(\"blur\", this.#boundEditorDivBlur);\n this.editorDiv.removeEventListener(\"input\", this.#boundEditorDivInput);\n this.editorDiv.removeEventListener(\"paste\", this.#boundEditorDivPaste);\n this.div.focus({\n preventScroll: true\n });\n this.isEditing = false;\n this.parent.div.classList.add(\"freetextEditing\");\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n onceAdded() {\n if (this.width) {\n return;\n }\n this.enableEditMode();\n this.editorDiv.focus();\n if (this._initialOptions?.isCentered) {\n this.center();\n }\n this._initialOptions = null;\n }\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n remove() {\n this.isEditing = false;\n if (this.parent) {\n this.parent.setEditingState(true);\n this.parent.div.classList.add(\"freetextEditing\");\n }\n super.remove();\n }\n #extractText() {\n const buffer = [];\n this.editorDiv.normalize();\n for (const child of this.editorDiv.childNodes) {\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n return buffer.join(\"\\n\");\n }\n #setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n let rect;\n if (this.isAttachedToDOM) {\n rect = this.div.getBoundingClientRect();\n } else {\n const {\n currentLayer,\n div\n } = this;\n const savedDisplay = div.style.display;\n const savedVisibility = div.classList.contains(\"hidden\");\n div.classList.remove(\"hidden\");\n div.style.display = \"hidden\";\n currentLayer.div.append(this.div);\n rect = div.getBoundingClientRect();\n div.remove();\n div.style.display = savedDisplay;\n div.classList.toggle(\"hidden\", savedVisibility);\n }\n if (this.rotation % 180 === this.parentRotation % 180) {\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n } else {\n this.width = rect.height / parentWidth;\n this.height = rect.width / parentHeight;\n }\n this.fixAndSetPosition();\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n super.commit();\n this.disableEditMode();\n const savedText = this.#content;\n const newText = this.#content = this.#extractText().trimEnd();\n if (savedText === newText) {\n return;\n }\n const setText = text => {\n this.#content = text;\n if (!text) {\n this.remove();\n return;\n }\n this.#setContent();\n this._uiManager.rebuild(this);\n this.#setEditorDimensions();\n };\n this.addCommands({\n cmd: () => {\n setText(newText);\n },\n undo: () => {\n setText(savedText);\n },\n mustExec: false\n });\n this.#setEditorDimensions();\n }\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n enterInEditMode() {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n dblclick(event) {\n this.enterInEditMode();\n }\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enterInEditMode();\n event.preventDefault();\n }\n }\n editorDivKeydown(event) {\n FreeTextEditor._keyboardManager.exec(this, event);\n }\n editorDivFocus(event) {\n this.isEditing = true;\n }\n editorDivBlur(event) {\n this.isEditing = false;\n }\n editorDivInput(event) {\n this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n }\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text\");\n this.enableEditing();\n editor_editor.AnnotationEditor._l10nPromise.get(\"pdfjs-free-text-default-content\").then(msg => this.editorDiv?.setAttribute(\"default-content\", msg));\n this.editorDiv.contentEditable = true;\n const {\n style\n } = this.editorDiv;\n style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n style.color = this.#color;\n this.div.append(this.editorDiv);\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n (0,tools.bindEvents)(this, this.div, [\"dblclick\", \"keydown\"]);\n if (this.width) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.annotationElementId) {\n const {\n position\n } = this.#initialData;\n let [tx, ty] = this.getInitialTranslation();\n [tx, ty] = this.pageTranslationToScreen(tx, ty);\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n let posX, posY;\n switch (this.rotation) {\n case 0:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n break;\n case 90:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [ty, -tx];\n break;\n case 180:\n posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [-tx, -ty];\n break;\n case 270:\n posX = baseX + (position[0] - pageX - this.height * pageHeight) / pageWidth;\n posY = baseY + (position[1] - pageY - this.width * pageWidth) / pageHeight;\n [tx, ty] = [-ty, tx];\n break;\n }\n this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n } else {\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n }\n this.#setContent();\n this._isDraggable = true;\n this.editorDiv.contentEditable = false;\n } else {\n this._isDraggable = false;\n this.editorDiv.contentEditable = true;\n }\n return this.div;\n }\n static #getNodeContent(node) {\n return (node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText).replaceAll(EOL_PATTERN, \"\");\n }\n editorDivPaste(event) {\n const clipboardData = event.clipboardData || window.clipboardData;\n const {\n types\n } = clipboardData;\n if (types.length === 1 && types[0] === \"text/plain\") {\n return;\n }\n event.preventDefault();\n const paste = FreeTextEditor.#deserializeContent(clipboardData.getData(\"text\") || \"\").replaceAll(EOL_PATTERN, \"\\n\");\n if (!paste) {\n return;\n }\n const selection = window.getSelection();\n if (!selection.rangeCount) {\n return;\n }\n this.editorDiv.normalize();\n selection.deleteFromDocument();\n const range = selection.getRangeAt(0);\n if (!paste.includes(\"\\n\")) {\n range.insertNode(document.createTextNode(paste));\n this.editorDiv.normalize();\n selection.collapseToStart();\n return;\n }\n const {\n startContainer,\n startOffset\n } = range;\n const bufferBefore = [];\n const bufferAfter = [];\n if (startContainer.nodeType === Node.TEXT_NODE) {\n const parent = startContainer.parentElement;\n bufferAfter.push(startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \"\"));\n if (parent !== this.editorDiv) {\n let buffer = bufferBefore;\n for (const child of this.editorDiv.childNodes) {\n if (child === parent) {\n buffer = bufferAfter;\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n bufferBefore.push(startContainer.nodeValue.slice(0, startOffset).replaceAll(EOL_PATTERN, \"\"));\n } else if (startContainer === this.editorDiv) {\n let buffer = bufferBefore;\n let i = 0;\n for (const child of this.editorDiv.childNodes) {\n if (i++ === startOffset) {\n buffer = bufferAfter;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n this.#content = `${bufferBefore.join(\"\\n\")}${paste}${bufferAfter.join(\"\\n\")}`;\n this.#setContent();\n const newRange = new Range();\n let beforeLength = bufferBefore.reduce((acc, line) => acc + line.length, 0);\n for (const {\n firstChild\n } of this.editorDiv.childNodes) {\n if (firstChild.nodeType === Node.TEXT_NODE) {\n const length = firstChild.nodeValue.length;\n if (beforeLength <= length) {\n newRange.setStart(firstChild, beforeLength);\n newRange.setEnd(firstChild, beforeLength);\n break;\n }\n beforeLength -= length;\n }\n }\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n #setContent() {\n this.editorDiv.replaceChildren();\n if (!this.#content) {\n return;\n }\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n this.editorDiv.append(div);\n }\n }\n #serializeContent() {\n return this.#content.replaceAll(\"\\xa0\", \" \");\n }\n static #deserializeContent(content) {\n return content.replaceAll(\" \", \"\\xa0\");\n }\n get contentDiv() {\n return this.editorDiv;\n }\n static deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof annotation_layer.FreeTextAnnotationElement) {\n const {\n data: {\n defaultAppearanceData: {\n fontSize,\n fontColor\n },\n rect,\n rotation,\n id\n },\n textContent,\n textPosition,\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n if (!textContent || textContent.length === 0) {\n return null;\n }\n initialData = data = {\n annotationType: util.AnnotationEditorType.FREETEXT,\n color: Array.from(fontColor),\n fontSize,\n value: textContent.join(\"\\n\"),\n position: textPosition,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false\n };\n }\n const editor = super.deserialize(data, parent, uiManager);\n editor.#fontSize = data.fontSize;\n editor.#color = util.Util.makeHexColor(...data.color);\n editor.#content = FreeTextEditor.#deserializeContent(data.value);\n editor.annotationElementId = data.id || null;\n editor.#initialData = initialData;\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return {\n pageIndex: this.pageIndex,\n id: this.annotationElementId,\n deleted: true\n };\n }\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n const rect = this.getRect(padding, padding);\n const color = editor_editor.AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.#color);\n const serialized = {\n annotationType: util.AnnotationEditorType.FREETEXT,\n color,\n fontSize: this.#fontSize,\n value: this.#serializeContent(),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n value,\n fontSize,\n color,\n pageIndex\n } = this.#initialData;\n return this._hasBeenMoved || serialized.value !== value || serialized.fontSize !== fontSize || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n const content = super.renderAnnotationElement(annotation);\n if (this.deleted) {\n return content;\n }\n const {\n style\n } = content;\n style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n style.color = this.#color;\n content.replaceChildren();\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n content.append(div);\n }\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n annotation.updateEdited({\n rect: this.getRect(padding, padding)\n });\n return content;\n }\n resetAnnotationElement(annotation) {\n super.resetAnnotationElement(annotation);\n annotation.resetEdited();\n }\n}\n\n// EXTERNAL MODULE: ./src/display/editor/outliner.js\nvar editor_outliner = __webpack_require__(61);\n// EXTERNAL MODULE: ./src/display/editor/color_picker.js\nvar color_picker = __webpack_require__(259);\n// EXTERNAL MODULE: ./src/display/display_utils.js\nvar display_utils = __webpack_require__(419);\n;// CONCATENATED MODULE: ./src/display/editor/highlight.js\n\n\n\n\n\n\nclass HighlightEditor extends editor_editor.AnnotationEditor {\n #anchorNode = null;\n #anchorOffset = 0;\n #boxes;\n #clipPathId = null;\n #colorPicker = null;\n #focusOutlines = null;\n #focusNode = null;\n #focusOffset = 0;\n #highlightDiv = null;\n #highlightOutlines = null;\n #id = null;\n #isFreeHighlight = false;\n #boundKeydown = this.#keydown.bind(this);\n #lastPoint = null;\n #opacity;\n #outlineId = null;\n #text = \"\";\n #thickness;\n #methodOfCreation = \"\";\n static _defaultColor = null;\n static _defaultOpacity = 1;\n static _defaultThickness = 12;\n static _l10nPromise;\n static _type = \"highlight\";\n static _editorType = util.AnnotationEditorType.HIGHLIGHT;\n static _freeHighlightId = -1;\n static _freeHighlight = null;\n static _freeHighlightClipId = \"\";\n static get _keyboardManager() {\n const proto = HighlightEditor.prototype;\n return (0,util.shadow)(this, \"_keyboardManager\", new tools.KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._moveCaret, {\n args: [0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._moveCaret, {\n args: [1]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._moveCaret, {\n args: [2]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._moveCaret, {\n args: [3]\n }]]));\n }\n constructor(params) {\n super({\n ...params,\n name: \"highlightEditor\"\n });\n this.color = params.color || HighlightEditor._defaultColor;\n this.#thickness = params.thickness || HighlightEditor._defaultThickness;\n this.#opacity = params.opacity || HighlightEditor._defaultOpacity;\n this.#boxes = params.boxes || null;\n this.#methodOfCreation = params.methodOfCreation || \"\";\n this.#text = params.text || \"\";\n this._isDraggable = false;\n if (params.highlightId > -1) {\n this.#isFreeHighlight = true;\n this.#createFreeOutlines(params);\n this.#addToDrawLayer();\n } else {\n this.#anchorNode = params.anchorNode;\n this.#anchorOffset = params.anchorOffset;\n this.#focusNode = params.focusNode;\n this.#focusOffset = params.focusOffset;\n this.#createOutlines();\n this.#addToDrawLayer();\n this.rotate(this.rotation);\n }\n }\n get telemetryInitialData() {\n return {\n action: \"added\",\n type: this.#isFreeHighlight ? \"free_highlight\" : \"highlight\",\n color: this._uiManager.highlightColorNames.get(this.color),\n thickness: this.#thickness,\n methodOfCreation: this.#methodOfCreation\n };\n }\n get telemetryFinalData() {\n return {\n type: \"highlight\",\n color: this._uiManager.highlightColorNames.get(this.color)\n };\n }\n static computeTelemetryFinalData(data) {\n return {\n numberOfColors: data.get(\"color\").size\n };\n }\n #createOutlines() {\n const outliner = new editor_outliner.Outliner(this.#boxes, 0.001);\n this.#highlightOutlines = outliner.getOutlines();\n ({\n x: this.x,\n y: this.y,\n width: this.width,\n height: this.height\n } = this.#highlightOutlines.box);\n const outlinerForOutline = new editor_outliner.Outliner(this.#boxes, 0.0025, 0.001, this._uiManager.direction === \"ltr\");\n this.#focusOutlines = outlinerForOutline.getOutlines();\n const {\n lastPoint\n } = this.#focusOutlines.box;\n this.#lastPoint = [(lastPoint[0] - this.x) / this.width, (lastPoint[1] - this.y) / this.height];\n }\n #createFreeOutlines({\n highlightOutlines,\n highlightId,\n clipPathId\n }) {\n this.#highlightOutlines = highlightOutlines;\n const extraThickness = 1.5;\n this.#focusOutlines = highlightOutlines.getNewOutline(this.#thickness / 2 + extraThickness, 0.0025);\n if (highlightId >= 0) {\n this.#id = highlightId;\n this.#clipPathId = clipPathId;\n this.parent.drawLayer.finalizeLine(highlightId, highlightOutlines);\n this.#outlineId = this.parent.drawLayer.highlightOutline(this.#focusOutlines);\n } else if (this.parent) {\n const angle = this.parent.viewport.rotation;\n this.parent.drawLayer.updateLine(this.#id, highlightOutlines);\n this.parent.drawLayer.updateBox(this.#id, HighlightEditor.#rotateBbox(this.#highlightOutlines.box, (angle - this.rotation + 360) % 360));\n this.parent.drawLayer.updateLine(this.#outlineId, this.#focusOutlines);\n this.parent.drawLayer.updateBox(this.#outlineId, HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle));\n }\n const {\n x,\n y,\n width,\n height\n } = highlightOutlines.box;\n switch (this.rotation) {\n case 0:\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n break;\n case 90:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = y;\n this.y = 1 - x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n case 180:\n this.x = 1 - x;\n this.y = 1 - y;\n this.width = width;\n this.height = height;\n break;\n case 270:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = 1 - y;\n this.y = x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n }\n const {\n lastPoint\n } = this.#focusOutlines.box;\n this.#lastPoint = [(lastPoint[0] - x) / width, (lastPoint[1] - y) / height];\n }\n static initialize(l10n, uiManager) {\n editor_editor.AnnotationEditor.initialize(l10n, uiManager);\n HighlightEditor._defaultColor ||= uiManager.highlightColors?.values().next().value || \"#fff066\";\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case util.AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n HighlightEditor._defaultColor = value;\n break;\n case util.AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n HighlightEditor._defaultThickness = value;\n break;\n }\n }\n translateInPage(x, y) {}\n get toolbarPosition() {\n return this.#lastPoint;\n }\n updateParams(type, value) {\n switch (type) {\n case util.AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n this.#updateColor(value);\n break;\n case util.AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n this.#updateThickness(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[util.AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR, HighlightEditor._defaultColor], [util.AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, HighlightEditor._defaultThickness]];\n }\n get propertiesToUpdate() {\n return [[util.AnnotationEditorParamsType.HIGHLIGHT_COLOR, this.color || HighlightEditor._defaultColor], [util.AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, this.#thickness || HighlightEditor._defaultThickness], [util.AnnotationEditorParamsType.HIGHLIGHT_FREE, this.#isFreeHighlight]];\n }\n #updateColor(color) {\n const setColor = col => {\n this.color = col;\n this.parent?.drawLayer.changeColor(this.#id, col);\n this.#colorPicker?.updateColor(col);\n };\n const savedColor = this.color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: util.AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"color_changed\",\n color: this._uiManager.highlightColorNames.get(color)\n }, true);\n }\n #updateThickness(thickness) {\n const savedThickness = this.#thickness;\n const setThickness = th => {\n this.#thickness = th;\n this.#changeThickness(th);\n };\n this.addCommands({\n cmd: setThickness.bind(this, thickness),\n undo: setThickness.bind(this, savedThickness),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: util.AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"thickness_changed\",\n thickness\n }, true);\n }\n async addEditToolbar() {\n const toolbar = await super.addEditToolbar();\n if (!toolbar) {\n return null;\n }\n if (this._uiManager.highlightColors) {\n this.#colorPicker = new color_picker.ColorPicker({\n editor: this\n });\n toolbar.addColorPicker(this.#colorPicker);\n }\n return toolbar;\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n fixAndSetPosition() {\n return super.fixAndSetPosition(this.#getRotation());\n }\n getBaseTranslation() {\n return [0, 0];\n }\n getRect(tx, ty) {\n return super.getRect(tx, ty, this.#getRotation());\n }\n onceAdded() {\n this.parent.addUndoableEditor(this);\n this.div.focus();\n }\n remove() {\n this.#cleanDrawLayer();\n this._reportTelemetry({\n action: \"deleted\"\n });\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this.#cleanDrawLayer();\n } else if (parent) {\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n this.show(this._isVisible);\n if (mustBeSelected) {\n this.select();\n }\n }\n #changeThickness(thickness) {\n if (!this.#isFreeHighlight) {\n return;\n }\n this.#createFreeOutlines({\n highlightOutlines: this.#highlightOutlines.getNewOutline(thickness / 2)\n });\n this.fixAndSetPosition();\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n }\n #cleanDrawLayer() {\n if (this.#id === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this.#id);\n this.#id = null;\n this.parent.drawLayer.remove(this.#outlineId);\n this.#outlineId = null;\n }\n #addToDrawLayer(parent = this.parent) {\n if (this.#id !== null) {\n return;\n }\n ({\n id: this.#id,\n clipPathId: this.#clipPathId\n } = parent.drawLayer.highlight(this.#highlightOutlines, this.color, this.#opacity));\n this.#outlineId = parent.drawLayer.highlightOutline(this.#focusOutlines);\n if (this.#highlightDiv) {\n this.#highlightDiv.style.clipPath = this.#clipPathId;\n }\n }\n static #rotateBbox({\n x,\n y,\n width,\n height\n }, angle) {\n switch (angle) {\n case 90:\n return {\n x: 1 - y - height,\n y: x,\n width: height,\n height: width\n };\n case 180:\n return {\n x: 1 - x - width,\n y: 1 - y - height,\n width,\n height\n };\n case 270:\n return {\n x: y,\n y: 1 - x - width,\n width: height,\n height: width\n };\n }\n return {\n x,\n y,\n width,\n height\n };\n }\n rotate(angle) {\n const {\n drawLayer\n } = this.parent;\n let box;\n if (this.#isFreeHighlight) {\n angle = (angle - this.rotation + 360) % 360;\n box = HighlightEditor.#rotateBbox(this.#highlightOutlines.box, angle);\n } else {\n box = HighlightEditor.#rotateBbox(this, angle);\n }\n drawLayer.rotate(this.#id, angle);\n drawLayer.rotate(this.#outlineId, angle);\n drawLayer.updateBox(this.#id, box);\n drawLayer.updateBox(this.#outlineId, HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle));\n }\n render() {\n if (this.div) {\n return this.div;\n }\n const div = super.render();\n if (this.#text) {\n div.setAttribute(\"aria-label\", this.#text);\n div.setAttribute(\"role\", \"mark\");\n }\n if (this.#isFreeHighlight) {\n div.classList.add(\"free\");\n } else {\n this.div.addEventListener(\"keydown\", this.#boundKeydown);\n }\n const highlightDiv = this.#highlightDiv = document.createElement(\"div\");\n div.append(highlightDiv);\n highlightDiv.setAttribute(\"aria-hidden\", \"true\");\n highlightDiv.className = \"internal\";\n highlightDiv.style.clipPath = this.#clipPathId;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n (0,tools.bindEvents)(this, this.#highlightDiv, [\"pointerover\", \"pointerleave\"]);\n this.enableEditing();\n return div;\n }\n pointerover() {\n this.parent.drawLayer.addClass(this.#outlineId, \"hovered\");\n }\n pointerleave() {\n this.parent.drawLayer.removeClass(this.#outlineId, \"hovered\");\n }\n #keydown(event) {\n HighlightEditor._keyboardManager.exec(this, event);\n }\n _moveCaret(direction) {\n this.parent.unselect(this);\n switch (direction) {\n case 0:\n case 2:\n this.#setCaret(true);\n break;\n case 1:\n case 3:\n this.#setCaret(false);\n break;\n }\n }\n #setCaret(start) {\n if (!this.#anchorNode) {\n return;\n }\n const selection = window.getSelection();\n if (start) {\n selection.setPosition(this.#anchorNode, this.#anchorOffset);\n } else {\n selection.setPosition(this.#focusNode, this.#focusOffset);\n }\n }\n select() {\n super.select();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.removeClass(this.#outlineId, \"hovered\");\n this.parent?.drawLayer.addClass(this.#outlineId, \"selected\");\n }\n unselect() {\n super.unselect();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.removeClass(this.#outlineId, \"selected\");\n if (!this.#isFreeHighlight) {\n this.#setCaret(false);\n }\n }\n get _mustFixPosition() {\n return !this.#isFreeHighlight;\n }\n show(visible = this._isVisible) {\n super.show(visible);\n if (this.parent) {\n this.parent.drawLayer.show(this.#id, visible);\n this.parent.drawLayer.show(this.#outlineId, visible);\n }\n }\n #getRotation() {\n return this.#isFreeHighlight ? this.rotation : 0;\n }\n #serializeBoxes() {\n if (this.#isFreeHighlight) {\n return null;\n }\n const [pageWidth, pageHeight] = this.pageDimensions;\n const boxes = this.#boxes;\n const quadPoints = new Array(boxes.length * 8);\n let i = 0;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const sx = x * pageWidth;\n const sy = (1 - y - height) * pageHeight;\n quadPoints[i] = quadPoints[i + 4] = sx;\n quadPoints[i + 1] = quadPoints[i + 3] = sy;\n quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\n quadPoints[i + 5] = quadPoints[i + 7] = sy + height * pageHeight;\n i += 8;\n }\n return quadPoints;\n }\n #serializeOutlines(rect) {\n return this.#highlightOutlines.serialize(rect, this.#getRotation());\n }\n static startHighlighting(parent, isLTR, {\n target: textLayer,\n x,\n y\n }) {\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n const pointerMove = e => {\n this.#highlightMove(parent, e);\n };\n const pointerDownOptions = {\n capture: true,\n passive: false\n };\n const pointerDown = e => {\n e.preventDefault();\n e.stopPropagation();\n };\n const pointerUpCallback = e => {\n textLayer.removeEventListener(\"pointermove\", pointerMove);\n window.removeEventListener(\"blur\", pointerUpCallback);\n window.removeEventListener(\"pointerup\", pointerUpCallback);\n window.removeEventListener(\"pointerdown\", pointerDown, pointerDownOptions);\n window.removeEventListener(\"contextmenu\", display_utils.noContextMenu);\n this.#endHighlight(parent, e);\n };\n window.addEventListener(\"blur\", pointerUpCallback);\n window.addEventListener(\"pointerup\", pointerUpCallback);\n window.addEventListener(\"pointerdown\", pointerDown, pointerDownOptions);\n window.addEventListener(\"contextmenu\", display_utils.noContextMenu);\n textLayer.addEventListener(\"pointermove\", pointerMove);\n this._freeHighlight = new editor_outliner.FreeOutliner({\n x,\n y\n }, [layerX, layerY, parentWidth, parentHeight], parent.scale, this._defaultThickness / 2, isLTR, 0.001);\n ({\n id: this._freeHighlightId,\n clipPathId: this._freeHighlightClipId\n } = parent.drawLayer.highlight(this._freeHighlight, this._defaultColor, this._defaultOpacity, true));\n }\n static #highlightMove(parent, event) {\n if (this._freeHighlight.add(event)) {\n parent.drawLayer.updatePath(this._freeHighlightId, this._freeHighlight);\n }\n }\n static #endHighlight(parent, event) {\n if (!this._freeHighlight.isEmpty()) {\n parent.createAndAddNewEditor(event, false, {\n highlightId: this._freeHighlightId,\n highlightOutlines: this._freeHighlight.getOutlines(),\n clipPathId: this._freeHighlightClipId,\n methodOfCreation: \"main_toolbar\"\n });\n } else {\n parent.drawLayer.removeFreeHighlight(this._freeHighlightId);\n }\n this._freeHighlightId = -1;\n this._freeHighlight = null;\n this._freeHighlightClipId = \"\";\n }\n static deserialize(data, parent, uiManager) {\n const editor = super.deserialize(data, parent, uiManager);\n const {\n rect: [blX, blY, trX, trY],\n color,\n quadPoints\n } = data;\n editor.color = util.Util.makeHexColor(...color);\n editor.#opacity = data.opacity;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n editor.width = (trX - blX) / pageWidth;\n editor.height = (trY - blY) / pageHeight;\n const boxes = editor.#boxes = [];\n for (let i = 0; i < quadPoints.length; i += 8) {\n boxes.push({\n x: (quadPoints[4] - trX) / pageWidth,\n y: (trY - (1 - quadPoints[i + 5])) / pageHeight,\n width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n height: (quadPoints[i + 5] - quadPoints[i + 1]) / pageHeight\n });\n }\n editor.#createOutlines();\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty() || isForCopying) {\n return null;\n }\n const rect = this.getRect(0, 0);\n const color = editor_editor.AnnotationEditor._colorManager.convert(this.color);\n return {\n annotationType: util.AnnotationEditorType.HIGHLIGHT,\n color,\n opacity: this.#opacity,\n thickness: this.#thickness,\n quadPoints: this.#serializeBoxes(),\n outlines: this.#serializeOutlines(rect),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.#getRotation(),\n structTreeParentId: this._structTreeParentId\n };\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/editor/ink.js\n\n\n\n\n\nclass InkEditor extends editor_editor.AnnotationEditor {\n #baseHeight = 0;\n #baseWidth = 0;\n #boundCanvasPointermove = this.canvasPointermove.bind(this);\n #boundCanvasPointerleave = this.canvasPointerleave.bind(this);\n #boundCanvasPointerup = this.canvasPointerup.bind(this);\n #boundCanvasPointerdown = this.canvasPointerdown.bind(this);\n #canvasContextMenuTimeoutId = null;\n #currentPath2D = new Path2D();\n #disableEditing = false;\n #hasSomethingToDraw = false;\n #isCanvasInitialized = false;\n #observer = null;\n #realWidth = 0;\n #realHeight = 0;\n #requestFrameCallback = null;\n static _defaultColor = null;\n static _defaultOpacity = 1;\n static _defaultThickness = 1;\n static _type = \"ink\";\n static _editorType = util.AnnotationEditorType.INK;\n constructor(params) {\n super({\n ...params,\n name: \"inkEditor\"\n });\n this.color = params.color || null;\n this.thickness = params.thickness || null;\n this.opacity = params.opacity || null;\n this.paths = [];\n this.bezierPath2D = [];\n this.allRawPaths = [];\n this.currentPath = [];\n this.scaleFactor = 1;\n this.translationX = this.translationY = 0;\n this.x = 0;\n this.y = 0;\n this._willKeepAspectRatio = true;\n }\n static initialize(l10n, uiManager) {\n editor_editor.AnnotationEditor.initialize(l10n, uiManager);\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case util.AnnotationEditorParamsType.INK_THICKNESS:\n InkEditor._defaultThickness = value;\n break;\n case util.AnnotationEditorParamsType.INK_COLOR:\n InkEditor._defaultColor = value;\n break;\n case util.AnnotationEditorParamsType.INK_OPACITY:\n InkEditor._defaultOpacity = value / 100;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case util.AnnotationEditorParamsType.INK_THICKNESS:\n this.#updateThickness(value);\n break;\n case util.AnnotationEditorParamsType.INK_COLOR:\n this.#updateColor(value);\n break;\n case util.AnnotationEditorParamsType.INK_OPACITY:\n this.#updateOpacity(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[util.AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness], [util.AnnotationEditorParamsType.INK_COLOR, InkEditor._defaultColor || editor_editor.AnnotationEditor._defaultLineColor], [util.AnnotationEditorParamsType.INK_OPACITY, Math.round(InkEditor._defaultOpacity * 100)]];\n }\n get propertiesToUpdate() {\n return [[util.AnnotationEditorParamsType.INK_THICKNESS, this.thickness || InkEditor._defaultThickness], [util.AnnotationEditorParamsType.INK_COLOR, this.color || InkEditor._defaultColor || editor_editor.AnnotationEditor._defaultLineColor], [util.AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity))]];\n }\n #updateThickness(thickness) {\n const setThickness = th => {\n this.thickness = th;\n this.#fitToContent();\n };\n const savedThickness = this.thickness;\n this.addCommands({\n cmd: setThickness.bind(this, thickness),\n undo: setThickness.bind(this, savedThickness),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: util.AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateColor(color) {\n const setColor = col => {\n this.color = col;\n this.#redraw();\n };\n const savedColor = this.color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: util.AnnotationEditorParamsType.INK_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateOpacity(opacity) {\n const setOpacity = op => {\n this.opacity = op;\n this.#redraw();\n };\n opacity /= 100;\n const savedOpacity = this.opacity;\n this.addCommands({\n cmd: setOpacity.bind(this, opacity),\n undo: setOpacity.bind(this, savedOpacity),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: util.AnnotationEditorParamsType.INK_OPACITY,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.canvas) {\n this.#createCanvas();\n this.#createObserver();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n this.#setCanvasDims();\n }\n this.#fitToContent();\n }\n remove() {\n if (this.canvas === null) {\n return;\n }\n if (!this.isEmpty()) {\n this.commit();\n }\n this.canvas.width = this.canvas.height = 0;\n this.canvas.remove();\n this.canvas = null;\n if (this.#canvasContextMenuTimeoutId) {\n clearTimeout(this.#canvasContextMenuTimeoutId);\n this.#canvasContextMenuTimeoutId = null;\n }\n this.#observer.disconnect();\n this.#observer = null;\n super.remove();\n }\n setParent(parent) {\n if (!this.parent && parent) {\n this._uiManager.removeShouldRescale(this);\n } else if (this.parent && parent === null) {\n this._uiManager.addShouldRescale(this);\n }\n super.setParent(parent);\n }\n onScaleChanging() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const width = this.width * parentWidth;\n const height = this.height * parentHeight;\n this.setDimensions(width, height);\n }\n enableEditMode() {\n if (this.#disableEditing || this.canvas === null) {\n return;\n }\n super.enableEditMode();\n this._isDraggable = false;\n this.canvas.addEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n }\n disableEditMode() {\n if (!this.isInEditMode() || this.canvas === null) {\n return;\n }\n super.disableEditMode();\n this._isDraggable = !this.isEmpty();\n this.div.classList.remove(\"editing\");\n this.canvas.removeEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n }\n onceAdded() {\n this._isDraggable = !this.isEmpty();\n }\n isEmpty() {\n return this.paths.length === 0 || this.paths.length === 1 && this.paths[0].length === 0;\n }\n #getInitialBBox() {\n const {\n parentRotation,\n parentDimensions: [width, height]\n } = this;\n switch (parentRotation) {\n case 90:\n return [0, height, height, width];\n case 180:\n return [width, height, width, height];\n case 270:\n return [width, 0, height, width];\n default:\n return [0, 0, width, height];\n }\n }\n #setStroke() {\n const {\n ctx,\n color,\n opacity,\n thickness,\n parentScale,\n scaleFactor\n } = this;\n ctx.lineWidth = thickness * parentScale / scaleFactor;\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n ctx.miterLimit = 10;\n ctx.strokeStyle = `${color}${(0,tools.opacityToHex)(opacity)}`;\n }\n #startDrawing(x, y) {\n this.canvas.addEventListener(\"contextmenu\", display_utils.noContextMenu);\n this.canvas.addEventListener(\"pointerleave\", this.#boundCanvasPointerleave);\n this.canvas.addEventListener(\"pointermove\", this.#boundCanvasPointermove);\n this.canvas.addEventListener(\"pointerup\", this.#boundCanvasPointerup);\n this.canvas.removeEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n this.isEditing = true;\n if (!this.#isCanvasInitialized) {\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.thickness ||= InkEditor._defaultThickness;\n this.color ||= InkEditor._defaultColor || editor_editor.AnnotationEditor._defaultLineColor;\n this.opacity ??= InkEditor._defaultOpacity;\n }\n this.currentPath.push([x, y]);\n this.#hasSomethingToDraw = false;\n this.#setStroke();\n this.#requestFrameCallback = () => {\n this.#drawPoints();\n if (this.#requestFrameCallback) {\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n };\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n #draw(x, y) {\n const [lastX, lastY] = this.currentPath.at(-1);\n if (this.currentPath.length > 1 && x === lastX && y === lastY) {\n return;\n }\n const currentPath = this.currentPath;\n let path2D = this.#currentPath2D;\n currentPath.push([x, y]);\n this.#hasSomethingToDraw = true;\n if (currentPath.length <= 2) {\n path2D.moveTo(...currentPath[0]);\n path2D.lineTo(x, y);\n return;\n }\n if (currentPath.length === 3) {\n this.#currentPath2D = path2D = new Path2D();\n path2D.moveTo(...currentPath[0]);\n }\n this.#makeBezierCurve(path2D, ...currentPath.at(-3), ...currentPath.at(-2), x, y);\n }\n #endPath() {\n if (this.currentPath.length === 0) {\n return;\n }\n const lastPoint = this.currentPath.at(-1);\n this.#currentPath2D.lineTo(...lastPoint);\n }\n #stopDrawing(x, y) {\n this.#requestFrameCallback = null;\n x = Math.min(Math.max(x, 0), this.canvas.width);\n y = Math.min(Math.max(y, 0), this.canvas.height);\n this.#draw(x, y);\n this.#endPath();\n let bezier;\n if (this.currentPath.length !== 1) {\n bezier = this.#generateBezierPoints();\n } else {\n const xy = [x, y];\n bezier = [[xy, xy.slice(), xy.slice(), xy]];\n }\n const path2D = this.#currentPath2D;\n const currentPath = this.currentPath;\n this.currentPath = [];\n this.#currentPath2D = new Path2D();\n const cmd = () => {\n this.allRawPaths.push(currentPath);\n this.paths.push(bezier);\n this.bezierPath2D.push(path2D);\n this._uiManager.rebuild(this);\n };\n const undo = () => {\n this.allRawPaths.pop();\n this.paths.pop();\n this.bezierPath2D.pop();\n if (this.paths.length === 0) {\n this.remove();\n } else {\n if (!this.canvas) {\n this.#createCanvas();\n this.#createObserver();\n }\n this.#fitToContent();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n #drawPoints() {\n if (!this.#hasSomethingToDraw) {\n return;\n }\n this.#hasSomethingToDraw = false;\n const thickness = Math.ceil(this.thickness * this.parentScale);\n const lastPoints = this.currentPath.slice(-3);\n const x = lastPoints.map(xy => xy[0]);\n const y = lastPoints.map(xy => xy[1]);\n const xMin = Math.min(...x) - thickness;\n const xMax = Math.max(...x) + thickness;\n const yMin = Math.min(...y) - thickness;\n const yMax = Math.max(...y) + thickness;\n const {\n ctx\n } = this;\n ctx.save();\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n ctx.stroke(this.#currentPath2D);\n ctx.restore();\n }\n #makeBezierCurve(path2D, x0, y0, x1, y1, x2, y2) {\n const prevX = (x0 + x1) / 2;\n const prevY = (y0 + y1) / 2;\n const x3 = (x1 + x2) / 2;\n const y3 = (y1 + y2) / 2;\n path2D.bezierCurveTo(prevX + 2 * (x1 - prevX) / 3, prevY + 2 * (y1 - prevY) / 3, x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3, x3, y3);\n }\n #generateBezierPoints() {\n const path = this.currentPath;\n if (path.length <= 2) {\n return [[path[0], path[0], path.at(-1), path.at(-1)]];\n }\n const bezierPoints = [];\n let i;\n let [x0, y0] = path[0];\n for (i = 1; i < path.length - 2; i++) {\n const [x1, y1] = path[i];\n const [x2, y2] = path[i + 1];\n const x3 = (x1 + x2) / 2;\n const y3 = (y1 + y2) / 2;\n const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3];\n const control2 = [x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3];\n bezierPoints.push([[x0, y0], control1, control2, [x3, y3]]);\n [x0, y0] = [x3, y3];\n }\n const [x1, y1] = path[i];\n const [x2, y2] = path[i + 1];\n const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3];\n const control2 = [x2 + 2 * (x1 - x2) / 3, y2 + 2 * (y1 - y2) / 3];\n bezierPoints.push([[x0, y0], control1, control2, [x2, y2]]);\n return bezierPoints;\n }\n #redraw() {\n if (this.isEmpty()) {\n this.#updateTransform();\n return;\n }\n this.#setStroke();\n const {\n canvas,\n ctx\n } = this;\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n this.#updateTransform();\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n }\n commit() {\n if (this.#disableEditing) {\n return;\n }\n super.commit();\n this.isEditing = false;\n this.disableEditMode();\n this.setInForeground();\n this.#disableEditing = true;\n this.div.classList.add(\"disabled\");\n this.#fitToContent(true);\n this.select();\n this.parent.addInkEditorIfNeeded(true);\n this.moveInDOM();\n this.div.focus({\n preventScroll: true\n });\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n this.enableEditMode();\n }\n canvasPointerdown(event) {\n if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) {\n return;\n }\n this.setInForeground();\n event.preventDefault();\n if (!this.div.contains(document.activeElement)) {\n this.div.focus({\n preventScroll: true\n });\n }\n this.#startDrawing(event.offsetX, event.offsetY);\n }\n canvasPointermove(event) {\n event.preventDefault();\n this.#draw(event.offsetX, event.offsetY);\n }\n canvasPointerup(event) {\n event.preventDefault();\n this.#endDrawing(event);\n }\n canvasPointerleave(event) {\n this.#endDrawing(event);\n }\n #endDrawing(event) {\n this.canvas.removeEventListener(\"pointerleave\", this.#boundCanvasPointerleave);\n this.canvas.removeEventListener(\"pointermove\", this.#boundCanvasPointermove);\n this.canvas.removeEventListener(\"pointerup\", this.#boundCanvasPointerup);\n this.canvas.addEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n if (this.#canvasContextMenuTimeoutId) {\n clearTimeout(this.#canvasContextMenuTimeoutId);\n }\n this.#canvasContextMenuTimeoutId = setTimeout(() => {\n this.#canvasContextMenuTimeoutId = null;\n this.canvas.removeEventListener(\"contextmenu\", display_utils.noContextMenu);\n }, 10);\n this.#stopDrawing(event.offsetX, event.offsetY);\n this.addToAnnotationStorage();\n this.setInBackground();\n }\n #createCanvas() {\n this.canvas = document.createElement(\"canvas\");\n this.canvas.width = this.canvas.height = 0;\n this.canvas.className = \"inkEditorCanvas\";\n this.canvas.setAttribute(\"data-l10n-id\", \"pdfjs-ink-canvas\");\n this.div.append(this.canvas);\n this.ctx = this.canvas.getContext(\"2d\");\n }\n #createObserver() {\n this.#observer = new ResizeObserver(entries => {\n const rect = entries[0].contentRect;\n if (rect.width && rect.height) {\n this.setDimensions(rect.width, rect.height);\n }\n });\n this.#observer.observe(this.div);\n }\n get isResizable() {\n return !this.isEmpty() && this.#disableEditing;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.setAttribute(\"data-l10n-id\", \"pdfjs-ink\");\n const [x, y, w, h] = this.#getInitialBBox();\n this.setAt(x, y, 0, 0);\n this.setDims(w, h);\n this.#createCanvas();\n if (this.width) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAspectRatio(this.width * parentWidth, this.height * parentHeight);\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n this.#redraw();\n this.div.classList.add(\"disabled\");\n } else {\n this.div.classList.add(\"editing\");\n this.enableEditMode();\n }\n this.#createObserver();\n return this.div;\n }\n #setCanvasDims() {\n if (!this.#isCanvasInitialized) {\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.canvas.width = Math.ceil(this.width * parentWidth);\n this.canvas.height = Math.ceil(this.height * parentHeight);\n this.#updateTransform();\n }\n setDimensions(width, height) {\n const roundedWidth = Math.round(width);\n const roundedHeight = Math.round(height);\n if (this.#realWidth === roundedWidth && this.#realHeight === roundedHeight) {\n return;\n }\n this.#realWidth = roundedWidth;\n this.#realHeight = roundedHeight;\n this.canvas.style.visibility = \"hidden\";\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.fixAndSetPosition();\n if (this.#disableEditing) {\n this.#setScaleFactor(width, height);\n }\n this.#setCanvasDims();\n this.#redraw();\n this.canvas.style.visibility = \"visible\";\n this.fixDims();\n }\n #setScaleFactor(width, height) {\n const padding = this.#getPadding();\n const scaleFactorW = (width - padding) / this.#baseWidth;\n const scaleFactorH = (height - padding) / this.#baseHeight;\n this.scaleFactor = Math.min(scaleFactorW, scaleFactorH);\n }\n #updateTransform() {\n const padding = this.#getPadding() / 2;\n this.ctx.setTransform(this.scaleFactor, 0, 0, this.scaleFactor, this.translationX * this.scaleFactor + padding, this.translationY * this.scaleFactor + padding);\n }\n static #buildPath2D(bezier) {\n const path2D = new Path2D();\n for (let i = 0, ii = bezier.length; i < ii; i++) {\n const [first, control1, control2, second] = bezier[i];\n if (i === 0) {\n path2D.moveTo(...first);\n }\n path2D.bezierCurveTo(control1[0], control1[1], control2[0], control2[1], second[0], second[1]);\n }\n return path2D;\n }\n static #toPDFCoordinates(points, rect, rotation) {\n const [blX, blY, trX, trY] = rect;\n switch (rotation) {\n case 0:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] += blX;\n points[i + 1] = trY - points[i + 1];\n }\n break;\n case 90:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = points[i + 1] + blX;\n points[i + 1] = x + blY;\n }\n break;\n case 180:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = trX - points[i];\n points[i + 1] += blY;\n }\n break;\n case 270:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = trX - points[i + 1];\n points[i + 1] = trY - x;\n }\n break;\n default:\n throw new Error(\"Invalid rotation\");\n }\n return points;\n }\n static #fromPDFCoordinates(points, rect, rotation) {\n const [blX, blY, trX, trY] = rect;\n switch (rotation) {\n case 0:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] -= blX;\n points[i + 1] = trY - points[i + 1];\n }\n break;\n case 90:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = points[i + 1] - blY;\n points[i + 1] = x - blX;\n }\n break;\n case 180:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = trX - points[i];\n points[i + 1] -= blY;\n }\n break;\n case 270:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = trY - points[i + 1];\n points[i + 1] = trX - x;\n }\n break;\n default:\n throw new Error(\"Invalid rotation\");\n }\n return points;\n }\n #serializePaths(s, tx, ty, rect) {\n const paths = [];\n const padding = this.thickness / 2;\n const shiftX = s * tx + padding;\n const shiftY = s * ty + padding;\n for (const bezier of this.paths) {\n const buffer = [];\n const points = [];\n for (let j = 0, jj = bezier.length; j < jj; j++) {\n const [first, control1, control2, second] = bezier[j];\n if (first[0] === second[0] && first[1] === second[1] && jj === 1) {\n const p0 = s * first[0] + shiftX;\n const p1 = s * first[1] + shiftY;\n buffer.push(p0, p1);\n points.push(p0, p1);\n break;\n }\n const p10 = s * first[0] + shiftX;\n const p11 = s * first[1] + shiftY;\n const p20 = s * control1[0] + shiftX;\n const p21 = s * control1[1] + shiftY;\n const p30 = s * control2[0] + shiftX;\n const p31 = s * control2[1] + shiftY;\n const p40 = s * second[0] + shiftX;\n const p41 = s * second[1] + shiftY;\n if (j === 0) {\n buffer.push(p10, p11);\n points.push(p10, p11);\n }\n buffer.push(p20, p21, p30, p31, p40, p41);\n points.push(p20, p21);\n if (j === jj - 1) {\n points.push(p40, p41);\n }\n }\n paths.push({\n bezier: InkEditor.#toPDFCoordinates(buffer, rect, this.rotation),\n points: InkEditor.#toPDFCoordinates(points, rect, this.rotation)\n });\n }\n return paths;\n }\n #getBbox() {\n let xMin = Infinity;\n let xMax = -Infinity;\n let yMin = Infinity;\n let yMax = -Infinity;\n for (const path of this.paths) {\n for (const [first, control1, control2, second] of path) {\n const bbox = util.Util.bezierBoundingBox(...first, ...control1, ...control2, ...second);\n xMin = Math.min(xMin, bbox[0]);\n yMin = Math.min(yMin, bbox[1]);\n xMax = Math.max(xMax, bbox[2]);\n yMax = Math.max(yMax, bbox[3]);\n }\n }\n return [xMin, yMin, xMax, yMax];\n }\n #getPadding() {\n return this.#disableEditing ? Math.ceil(this.thickness * this.parentScale) : 0;\n }\n #fitToContent(firstTime = false) {\n if (this.isEmpty()) {\n return;\n }\n if (!this.#disableEditing) {\n this.#redraw();\n return;\n }\n const bbox = this.#getBbox();\n const padding = this.#getPadding();\n this.#baseWidth = Math.max(editor_editor.AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n this.#baseHeight = Math.max(editor_editor.AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor);\n const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor);\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.setAspectRatio(width, height);\n const prevTranslationX = this.translationX;\n const prevTranslationY = this.translationY;\n this.translationX = -bbox[0];\n this.translationY = -bbox[1];\n this.#setCanvasDims();\n this.#redraw();\n this.#realWidth = width;\n this.#realHeight = height;\n this.setDims(width, height);\n const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0;\n this.translate(prevTranslationX - this.translationX - unscaledPadding, prevTranslationY - this.translationY - unscaledPadding);\n }\n static deserialize(data, parent, uiManager) {\n if (data instanceof annotation_layer.InkAnnotationElement) {\n return null;\n }\n const editor = super.deserialize(data, parent, uiManager);\n editor.thickness = data.thickness;\n editor.color = util.Util.makeHexColor(...data.color);\n editor.opacity = data.opacity;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const width = editor.width * pageWidth;\n const height = editor.height * pageHeight;\n const scaleFactor = editor.parentScale;\n const padding = data.thickness / 2;\n editor.#disableEditing = true;\n editor.#realWidth = Math.round(width);\n editor.#realHeight = Math.round(height);\n const {\n paths,\n rect,\n rotation\n } = data;\n for (let {\n bezier\n } of paths) {\n bezier = InkEditor.#fromPDFCoordinates(bezier, rect, rotation);\n const path = [];\n editor.paths.push(path);\n let p0 = scaleFactor * (bezier[0] - padding);\n let p1 = scaleFactor * (bezier[1] - padding);\n for (let i = 2, ii = bezier.length; i < ii; i += 6) {\n const p10 = scaleFactor * (bezier[i] - padding);\n const p11 = scaleFactor * (bezier[i + 1] - padding);\n const p20 = scaleFactor * (bezier[i + 2] - padding);\n const p21 = scaleFactor * (bezier[i + 3] - padding);\n const p30 = scaleFactor * (bezier[i + 4] - padding);\n const p31 = scaleFactor * (bezier[i + 5] - padding);\n path.push([[p0, p1], [p10, p11], [p20, p21], [p30, p31]]);\n p0 = p30;\n p1 = p31;\n }\n const path2D = this.#buildPath2D(path);\n editor.bezierPath2D.push(path2D);\n }\n const bbox = editor.#getBbox();\n editor.#baseWidth = Math.max(editor_editor.AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n editor.#baseHeight = Math.max(editor_editor.AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n editor.#setScaleFactor(width, height);\n return editor;\n }\n serialize() {\n if (this.isEmpty()) {\n return null;\n }\n const rect = this.getRect(0, 0);\n const color = editor_editor.AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);\n return {\n annotationType: util.AnnotationEditorType.INK,\n color,\n thickness: this.thickness,\n opacity: this.opacity,\n paths: this.#serializePaths(this.scaleFactor / this.parentScale, this.translationX, this.translationY, rect),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/editor/stamp.js\n\n\n\n\nclass StampEditor extends editor_editor.AnnotationEditor {\n #bitmap = null;\n #bitmapId = null;\n #bitmapPromise = null;\n #bitmapUrl = null;\n #bitmapFile = null;\n #bitmapFileName = \"\";\n #canvas = null;\n #observer = null;\n #resizeTimeoutId = null;\n #isSvg = false;\n #hasBeenAddedInUndoStack = false;\n static _type = \"stamp\";\n static _editorType = util.AnnotationEditorType.STAMP;\n constructor(params) {\n super({\n ...params,\n name: \"stampEditor\"\n });\n this.#bitmapUrl = params.bitmapUrl;\n this.#bitmapFile = params.bitmapFile;\n }\n static initialize(l10n, uiManager) {\n editor_editor.AnnotationEditor.initialize(l10n, uiManager);\n }\n static get supportedTypes() {\n const types = [\"apng\", \"avif\", \"bmp\", \"gif\", \"jpeg\", \"png\", \"svg+xml\", \"webp\", \"x-icon\"];\n return (0,util.shadow)(this, \"supportedTypes\", types.map(type => `image/${type}`));\n }\n static get supportedTypesStr() {\n return (0,util.shadow)(this, \"supportedTypesStr\", this.supportedTypes.join(\",\"));\n }\n static isHandlingMimeForPasting(mime) {\n return this.supportedTypes.includes(mime);\n }\n static paste(item, parent) {\n parent.pasteEditor(util.AnnotationEditorType.STAMP, {\n bitmapFile: item.getAsFile()\n });\n }\n #getBitmapFetched(data, fromId = false) {\n if (!data) {\n this.remove();\n return;\n }\n this.#bitmap = data.bitmap;\n if (!fromId) {\n this.#bitmapId = data.id;\n this.#isSvg = data.isSvg;\n }\n if (data.file) {\n this.#bitmapFileName = data.file.name;\n }\n this.#createCanvas();\n }\n #getBitmapDone() {\n this.#bitmapPromise = null;\n this._uiManager.enableWaiting(false);\n if (this.#canvas) {\n this.div.focus();\n }\n }\n #getBitmap() {\n if (this.#bitmapId) {\n this._uiManager.enableWaiting(true);\n this._uiManager.imageManager.getFromId(this.#bitmapId).then(data => this.#getBitmapFetched(data, true)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapUrl) {\n const url = this.#bitmapUrl;\n this.#bitmapUrl = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromUrl(url).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapFile) {\n const file = this.#bitmapFile;\n this.#bitmapFile = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromFile(file).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = StampEditor.supportedTypesStr;\n this.#bitmapPromise = new Promise(resolve => {\n input.addEventListener(\"change\", async () => {\n if (!input.files || input.files.length === 0) {\n this.remove();\n } else {\n this._uiManager.enableWaiting(true);\n const data = await this._uiManager.imageManager.getFromFile(input.files[0]);\n this.#getBitmapFetched(data);\n }\n resolve();\n });\n input.addEventListener(\"cancel\", () => {\n this.remove();\n resolve();\n });\n }).finally(() => this.#getBitmapDone());\n input.click();\n }\n remove() {\n if (this.#bitmapId) {\n this.#bitmap = null;\n this._uiManager.imageManager.deleteId(this.#bitmapId);\n this.#canvas?.remove();\n this.#canvas = null;\n this.#observer?.disconnect();\n this.#observer = null;\n if (this.#resizeTimeoutId) {\n clearTimeout(this.#resizeTimeoutId);\n this.#resizeTimeoutId = null;\n }\n }\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n if (this.#bitmapId) {\n this.#getBitmap();\n }\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (this.#bitmapId && this.#canvas === null) {\n this.#getBitmap();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n onceAdded() {\n this._isDraggable = true;\n this.div.focus();\n }\n isEmpty() {\n return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile || this.#bitmapId);\n }\n get isResizable() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.hidden = true;\n this.addAltTextButton();\n if (this.#bitmap) {\n this.#createCanvas();\n } else {\n this.#getBitmap();\n }\n if (this.width) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n }\n return this.div;\n }\n #createCanvas() {\n const {\n div\n } = this;\n let {\n width,\n height\n } = this.#bitmap;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const MAX_RATIO = 0.75;\n if (this.width) {\n width = this.width * pageWidth;\n height = this.height * pageHeight;\n } else if (width > MAX_RATIO * pageWidth || height > MAX_RATIO * pageHeight) {\n const factor = Math.min(MAX_RATIO * pageWidth / width, MAX_RATIO * pageHeight / height);\n width *= factor;\n height *= factor;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(width * parentWidth / pageWidth, height * parentHeight / pageHeight);\n this._uiManager.enableWaiting(false);\n const canvas = this.#canvas = document.createElement(\"canvas\");\n div.append(canvas);\n div.hidden = false;\n this.#drawBitmap(width, height);\n this.#createObserver();\n if (!this.#hasBeenAddedInUndoStack) {\n this.parent.addUndoableEditor(this);\n this.#hasBeenAddedInUndoStack = true;\n }\n this._reportTelemetry({\n action: \"inserted_image\"\n });\n if (this.#bitmapFileName) {\n canvas.setAttribute(\"aria-label\", this.#bitmapFileName);\n }\n }\n #setDimensions(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.setDims(width, height);\n if (this._initialOptions?.isCentered) {\n this.center();\n } else {\n this.fixAndSetPosition();\n }\n this._initialOptions = null;\n if (this.#resizeTimeoutId !== null) {\n clearTimeout(this.#resizeTimeoutId);\n }\n const TIME_TO_WAIT = 200;\n this.#resizeTimeoutId = setTimeout(() => {\n this.#resizeTimeoutId = null;\n this.#drawBitmap(width, height);\n }, TIME_TO_WAIT);\n }\n #scaleBitmap(width, height) {\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n let newWidth = bitmapWidth;\n let newHeight = bitmapHeight;\n let bitmap = this.#bitmap;\n while (newWidth > 2 * width || newHeight > 2 * height) {\n const prevWidth = newWidth;\n const prevHeight = newHeight;\n if (newWidth > 2 * width) {\n newWidth = newWidth >= 16384 ? Math.floor(newWidth / 2) - 1 : Math.ceil(newWidth / 2);\n }\n if (newHeight > 2 * height) {\n newHeight = newHeight >= 16384 ? Math.floor(newHeight / 2) - 1 : Math.ceil(newHeight / 2);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n bitmap = offscreen.transferToImageBitmap();\n }\n return bitmap;\n }\n #drawBitmap(width, height) {\n width = Math.ceil(width);\n height = Math.ceil(height);\n const canvas = this.#canvas;\n if (!canvas || canvas.width === width && canvas.height === height) {\n return;\n }\n canvas.width = width;\n canvas.height = height;\n const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(width, height);\n if (this._uiManager.hasMLManager && !this.hasAltText()) {\n const offscreen = new OffscreenCanvas(width, height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, width, height);\n offscreen.convertToBlob().then(blob => {\n const fileReader = new FileReader();\n fileReader.onload = () => {\n const url = fileReader.result;\n this._uiManager.mlGuess({\n service: \"image-to-text\",\n request: {\n imageData: url\n }\n }).then(response => {\n const altText = response?.output || \"\";\n if (this.parent && altText && !this.hasAltText()) {\n this.altTextData = {\n altText,\n decorative: false\n };\n }\n });\n };\n fileReader.readAsDataURL(blob);\n });\n }\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, width, height);\n }\n getImageForAltText() {\n return this.#canvas;\n }\n #serializeBitmap(toUrl) {\n if (toUrl) {\n if (this.#isSvg) {\n const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n if (url) {\n return url;\n }\n }\n const canvas = document.createElement(\"canvas\");\n ({\n width: canvas.width,\n height: canvas.height\n } = this.#bitmap);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0);\n return canvas.toDataURL();\n }\n if (this.#isSvg) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n const width = Math.round(this.width * pageWidth * display_utils.PixelsPerInch.PDF_TO_CSS_UNITS);\n const height = Math.round(this.height * pageHeight * display_utils.PixelsPerInch.PDF_TO_CSS_UNITS);\n const offscreen = new OffscreenCanvas(width, height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0, this.#bitmap.width, this.#bitmap.height, 0, 0, width, height);\n return offscreen.transferToImageBitmap();\n }\n return structuredClone(this.#bitmap);\n }\n #createObserver() {\n this.#observer = new ResizeObserver(entries => {\n const rect = entries[0].contentRect;\n if (rect.width && rect.height) {\n this.#setDimensions(rect.width, rect.height);\n }\n });\n this.#observer.observe(this.div);\n }\n static deserialize(data, parent, uiManager) {\n if (data instanceof annotation_layer.StampAnnotationElement) {\n return null;\n }\n const editor = super.deserialize(data, parent, uiManager);\n const {\n rect,\n bitmapUrl,\n bitmapId,\n isSvg,\n accessibilityData\n } = data;\n if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n editor.#bitmapId = bitmapId;\n } else {\n editor.#bitmapUrl = bitmapUrl;\n }\n editor.#isSvg = isSvg;\n const [parentWidth, parentHeight] = editor.pageDimensions;\n editor.width = (rect[2] - rect[0]) / parentWidth;\n editor.height = (rect[3] - rect[1]) / parentHeight;\n if (accessibilityData) {\n editor.altTextData = accessibilityData;\n }\n return editor;\n }\n serialize(isForCopying = false, context = null) {\n if (this.isEmpty()) {\n return null;\n }\n const serialized = {\n annotationType: util.AnnotationEditorType.STAMP,\n bitmapId: this.#bitmapId,\n pageIndex: this.pageIndex,\n rect: this.getRect(0, 0),\n rotation: this.rotation,\n isSvg: this.#isSvg,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n serialized.bitmapUrl = this.#serializeBitmap(true);\n serialized.accessibilityData = this.altTextData;\n return serialized;\n }\n const {\n decorative,\n altText\n } = this.altTextData;\n if (!decorative && altText) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: altText\n };\n }\n if (context === null) {\n return serialized;\n }\n context.stamps ||= new Map();\n const area = this.#isSvg ? (serialized.rect[2] - serialized.rect[0]) * (serialized.rect[3] - serialized.rect[1]) : null;\n if (!context.stamps.has(this.#bitmapId)) {\n context.stamps.set(this.#bitmapId, {\n area,\n serialized\n });\n serialized.bitmap = this.#serializeBitmap(false);\n } else if (this.#isSvg) {\n const prevData = context.stamps.get(this.#bitmapId);\n if (area > prevData.area) {\n prevData.area = area;\n prevData.serialized.bitmap.close();\n prevData.serialized.bitmap = this.#serializeBitmap(false);\n }\n }\n return serialized;\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/editor/annotation_editor_layer.js\n\n\n\n\n\n\n\nclass AnnotationEditorLayer {\n #accessibilityManager;\n #allowClick = false;\n #annotationLayer = null;\n #boundPointerup = null;\n #boundPointerdown = null;\n #boundTextLayerPointerDown = null;\n #editorFocusTimeoutId = null;\n #editors = new Map();\n #hadPointerDown = false;\n #isCleaningUp = false;\n #isDisabling = false;\n #textLayer = null;\n #uiManager;\n static _initialized = false;\n static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor].map(type => [type._editorType, type]));\n constructor({\n uiManager,\n pageIndex,\n div,\n accessibilityManager,\n annotationLayer,\n drawLayer,\n textLayer,\n viewport,\n l10n\n }) {\n const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = true;\n for (const editorType of editorTypes) {\n editorType.initialize(l10n, uiManager);\n }\n }\n uiManager.registerEditorTypes(editorTypes);\n this.#uiManager = uiManager;\n this.pageIndex = pageIndex;\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationLayer = annotationLayer;\n this.viewport = viewport;\n this.#textLayer = textLayer;\n this.drawLayer = drawLayer;\n this.#uiManager.addLayer(this);\n }\n get isEmpty() {\n return this.#editors.size === 0;\n }\n get isInvisible() {\n return this.isEmpty && this.#uiManager.getMode() === util.AnnotationEditorType.NONE;\n }\n updateToolbar(mode) {\n this.#uiManager.updateToolbar(mode);\n }\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n switch (mode) {\n case util.AnnotationEditorType.NONE:\n this.disableTextSelection();\n this.togglePointerEvents(false);\n this.toggleAnnotationLayerPointerEvents(true);\n this.disableClick();\n return;\n case util.AnnotationEditorType.INK:\n this.addInkEditorIfNeeded(false);\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.disableClick();\n break;\n case util.AnnotationEditorType.HIGHLIGHT:\n this.enableTextSelection();\n this.togglePointerEvents(false);\n this.disableClick();\n break;\n default:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n }\n this.toggleAnnotationLayerPointerEvents(false);\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType);\n }\n this.div.hidden = false;\n }\n hasTextLayer(textLayer) {\n return textLayer === this.#textLayer?.div;\n }\n addInkEditorIfNeeded(isCommitting) {\n if (this.#uiManager.getMode() !== util.AnnotationEditorType.INK) {\n return;\n }\n if (!isCommitting) {\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.setInBackground();\n return;\n }\n }\n }\n const editor = this.createAndAddNewEditor({\n offsetX: 0,\n offsetY: 0\n }, false);\n editor.setInBackground();\n }\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n toggleAnnotationLayerPointerEvents(enabled = false) {\n this.#annotationLayer?.div.classList.toggle(\"disabled\", !enabled);\n }\n enable() {\n this.div.tabIndex = 0;\n this.togglePointerEvents(true);\n const annotationElementIds = new Set();\n for (const editor of this.#editors.values()) {\n editor.enableEditing();\n editor.show(true);\n if (editor.annotationElementId) {\n this.#uiManager.removeChangedExistingAnnotation(editor);\n annotationElementIds.add(editor.annotationElementId);\n }\n }\n if (!this.#annotationLayer) {\n return;\n }\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n editable.hide();\n if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n continue;\n }\n if (annotationElementIds.has(editable.data.id)) {\n continue;\n }\n const editor = this.deserialize(editable);\n if (!editor) {\n continue;\n }\n this.addOrRebuild(editor);\n editor.enableEditing();\n }\n }\n disable() {\n this.#isDisabling = true;\n this.div.tabIndex = -1;\n this.togglePointerEvents(false);\n const changedAnnotations = new Map();\n const resetAnnotations = new Map();\n for (const editor of this.#editors.values()) {\n editor.disableEditing();\n if (!editor.annotationElementId) {\n continue;\n }\n if (editor.serialize() !== null) {\n changedAnnotations.set(editor.annotationElementId, editor);\n continue;\n } else {\n resetAnnotations.set(editor.annotationElementId, editor);\n }\n this.getEditableAnnotation(editor.annotationElementId)?.show();\n editor.remove();\n }\n if (this.#annotationLayer) {\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n const {\n id\n } = editable.data;\n if (this.#uiManager.isDeletedAnnotationElement(id)) {\n continue;\n }\n let editor = resetAnnotations.get(id);\n if (editor) {\n editor.resetAnnotationElement(editable);\n editor.show(false);\n editable.show();\n continue;\n }\n editor = changedAnnotations.get(id);\n if (editor) {\n this.#uiManager.addChangedExistingAnnotation(editor);\n editor.renderAnnotationElement(editable);\n editor.show(false);\n }\n editable.show();\n }\n }\n this.#cleanup();\n if (this.isEmpty) {\n this.div.hidden = true;\n }\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.remove(`${editorType._type}Editing`);\n }\n this.disableTextSelection();\n this.toggleAnnotationLayerPointerEvents(true);\n this.#isDisabling = false;\n }\n getEditableAnnotation(id) {\n return this.#annotationLayer?.getEditableAnnotation(id) || null;\n }\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n if (currentActive === editor) {\n return;\n }\n this.#uiManager.setActiveEditor(editor);\n }\n enableTextSelection() {\n this.div.tabIndex = -1;\n if (this.#textLayer?.div && !this.#boundTextLayerPointerDown) {\n this.#boundTextLayerPointerDown = this.#textLayerPointerDown.bind(this);\n this.#textLayer.div.addEventListener(\"pointerdown\", this.#boundTextLayerPointerDown);\n this.#textLayer.div.classList.add(\"highlighting\");\n }\n }\n disableTextSelection() {\n this.div.tabIndex = 0;\n if (this.#textLayer?.div && this.#boundTextLayerPointerDown) {\n this.#textLayer.div.removeEventListener(\"pointerdown\", this.#boundTextLayerPointerDown);\n this.#boundTextLayerPointerDown = null;\n this.#textLayer.div.classList.remove(\"highlighting\");\n }\n }\n #textLayerPointerDown(event) {\n this.#uiManager.unselectAll();\n if (event.target === this.#textLayer.div) {\n const {\n isMac\n } = util.FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#uiManager.showAllEditors(\"highlight\", true, true);\n this.#textLayer.div.classList.add(\"free\");\n HighlightEditor.startHighlighting(this, this.#uiManager.direction === \"ltr\", event);\n this.#textLayer.div.addEventListener(\"pointerup\", () => {\n this.#textLayer.div.classList.remove(\"free\");\n }, {\n once: true\n });\n event.preventDefault();\n }\n }\n enableClick() {\n if (this.#boundPointerdown) {\n return;\n }\n this.#boundPointerdown = this.pointerdown.bind(this);\n this.#boundPointerup = this.pointerup.bind(this);\n this.div.addEventListener(\"pointerdown\", this.#boundPointerdown);\n this.div.addEventListener(\"pointerup\", this.#boundPointerup);\n }\n disableClick() {\n if (!this.#boundPointerdown) {\n return;\n }\n this.div.removeEventListener(\"pointerdown\", this.#boundPointerdown);\n this.div.removeEventListener(\"pointerup\", this.#boundPointerup);\n this.#boundPointerdown = null;\n this.#boundPointerup = null;\n }\n attach(editor) {\n this.#editors.set(editor.id, editor);\n const {\n annotationElementId\n } = editor;\n if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) {\n this.#uiManager.removeDeletedAnnotationElement(editor);\n }\n }\n detach(editor) {\n this.#editors.delete(editor.id);\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n if (!this.#isDisabling && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n }\n }\n remove(editor) {\n this.detach(editor);\n this.#uiManager.removeEditor(editor);\n editor.div.remove();\n editor.isAttachedToDOM = false;\n if (!this.#isCleaningUp) {\n this.addInkEditorIfNeeded(false);\n }\n }\n changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\n if (editor.parent && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);\n editor_editor.AnnotationEditor.deleteAnnotationElement(editor);\n editor.annotationElementId = null;\n }\n this.attach(editor);\n editor.parent?.detach(editor);\n editor.setParent(this);\n if (editor.div && editor.isAttachedToDOM) {\n editor.div.remove();\n this.div.append(editor.div);\n }\n }\n add(editor) {\n if (editor.parent === this && editor.isAttachedToDOM) {\n return;\n }\n this.changeParent(editor);\n this.#uiManager.addEditor(editor);\n this.attach(editor);\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n editor.fixAndSetPosition();\n editor.onceAdded();\n this.#uiManager.addToAnnotationStorage(editor);\n editor._reportTelemetry(editor.telemetryInitialData);\n }\n moveEditorInDOM(editor) {\n if (!editor.isAttachedToDOM) {\n return;\n }\n const {\n activeElement\n } = document;\n if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n editor._focusEventsAllowed = false;\n this.#editorFocusTimeoutId = setTimeout(() => {\n this.#editorFocusTimeoutId = null;\n if (!editor.div.contains(document.activeElement)) {\n editor.div.addEventListener(\"focusin\", () => {\n editor._focusEventsAllowed = true;\n }, {\n once: true\n });\n activeElement.focus();\n } else {\n editor._focusEventsAllowed = true;\n }\n }, 0);\n }\n editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true);\n }\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.parent ||= this;\n editor.rebuild();\n editor.show();\n } else {\n this.add(editor);\n }\n }\n addUndoableEditor(editor) {\n const cmd = () => editor._uiManager.rebuild(editor);\n const undo = () => {\n editor.remove();\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: false\n });\n }\n getNextId() {\n return this.#uiManager.getId();\n }\n get #currentEditorType() {\n return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\n }\n #createNewEditor(params) {\n const editorType = this.#currentEditorType;\n return editorType ? new editorType.prototype.constructor(params) : null;\n }\n canCreateNewEmptyEditor() {\n return this.#currentEditorType?.canCreateNewEmptyEditor();\n }\n pasteEditor(mode, params) {\n this.#uiManager.updateToolbar(mode);\n this.#uiManager.updateMode(mode);\n const {\n offsetX,\n offsetY\n } = this.#getCenterPoint();\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: offsetX,\n y: offsetY,\n uiManager: this.#uiManager,\n isCentered: true,\n ...params\n });\n if (editor) {\n this.add(editor);\n }\n }\n deserialize(data) {\n return AnnotationEditorLayer.#editorTypes.get(data.annotationType ?? data.annotationEditorType)?.deserialize(data, this, this.#uiManager) || null;\n }\n createAndAddNewEditor(event, isCentered, data = {}) {\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: event.offsetX,\n y: event.offsetY,\n uiManager: this.#uiManager,\n isCentered,\n ...data\n });\n if (editor) {\n this.add(editor);\n }\n return editor;\n }\n #getCenterPoint() {\n const {\n x,\n y,\n width,\n height\n } = this.div.getBoundingClientRect();\n const tlX = Math.max(0, x);\n const tlY = Math.max(0, y);\n const brX = Math.min(window.innerWidth, x + width);\n const brY = Math.min(window.innerHeight, y + height);\n const centerX = (tlX + brX) / 2 - x;\n const centerY = (tlY + brY) / 2 - y;\n const [offsetX, offsetY] = this.viewport.rotation % 180 === 0 ? [centerX, centerY] : [centerY, centerX];\n return {\n offsetX,\n offsetY\n };\n }\n addNewEditor() {\n this.createAndAddNewEditor(this.#getCenterPoint(), true);\n }\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n isSelected(editor) {\n return this.#uiManager.isSelected(editor);\n }\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n pointerup(event) {\n const {\n isMac\n } = util.FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n if (!this.#hadPointerDown) {\n return;\n }\n this.#hadPointerDown = false;\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n if (this.#uiManager.getMode() === util.AnnotationEditorType.STAMP) {\n this.#uiManager.unselectAll();\n return;\n }\n this.createAndAddNewEditor(event, false);\n }\n pointerdown(event) {\n if (this.#uiManager.getMode() === util.AnnotationEditorType.HIGHLIGHT) {\n this.enableTextSelection();\n }\n if (this.#hadPointerDown) {\n this.#hadPointerDown = false;\n return;\n }\n const {\n isMac\n } = util.FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n this.#hadPointerDown = true;\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n findNewParent(editor, x, y) {\n const layer = this.#uiManager.findParent(x, y);\n if (layer === null || layer === this) {\n return false;\n }\n layer.changeParent(editor);\n return true;\n }\n destroy() {\n if (this.#uiManager.getActive()?.parent === this) {\n this.#uiManager.commitOrRemove();\n this.#uiManager.setActiveEditor(null);\n }\n if (this.#editorFocusTimeoutId) {\n clearTimeout(this.#editorFocusTimeoutId);\n this.#editorFocusTimeoutId = null;\n }\n for (const editor of this.#editors.values()) {\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n editor.setParent(null);\n editor.isAttachedToDOM = false;\n editor.div.remove();\n }\n this.div = null;\n this.#editors.clear();\n this.#uiManager.removeLayer(this);\n }\n #cleanup() {\n this.#isCleaningUp = true;\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n this.#isCleaningUp = false;\n }\n render({\n viewport\n }) {\n this.viewport = viewport;\n (0,display_utils.setLayerDimensions)(this.div, viewport);\n for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n this.add(editor);\n editor.rebuild();\n }\n this.updateMode();\n }\n update({\n viewport\n }) {\n this.#uiManager.commitOrRemove();\n this.#cleanup();\n const oldRotation = this.viewport.rotation;\n const rotation = viewport.rotation;\n this.viewport = viewport;\n (0,display_utils.setLayerDimensions)(this.div, {\n rotation\n });\n if (oldRotation !== rotation) {\n for (const editor of this.#editors.values()) {\n editor.rotate(rotation);\n }\n }\n this.addInkEditorIfNeeded(false);\n }\n get pageDimensions() {\n const {\n pageWidth,\n pageHeight\n } = this.viewport.rawDims;\n return [pageWidth, pageHeight];\n }\n get scale() {\n return this.#uiManager.viewParameters.realScale;\n }\n}\n\n\n/***/ }),\n\n/***/ 259:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ColorPicker: () => (/* binding */ ColorPicker)\n/* harmony export */ });\n/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(292);\n/* harmony import */ var _tools_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(830);\n/* harmony import */ var _display_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(419);\n\n\n\nclass ColorPicker {\n #boundKeyDown = this.#keyDown.bind(this);\n #boundPointerDown = this.#pointerDown.bind(this);\n #button = null;\n #buttonSwatch = null;\n #defaultColor;\n #dropdown = null;\n #dropdownWasFromKeyboard = false;\n #isMainColorPicker = false;\n #editor = null;\n #eventBus;\n #uiManager = null;\n #type;\n static get _keyboardManager() {\n return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, \"_keyboardManager\", new _tools_js__WEBPACK_IMPORTED_MODULE_1__.KeyboardManager([[[\"Escape\", \"mac+Escape\"], ColorPicker.prototype._hideDropdownFromKeyboard], [[\" \", \"mac+ \"], ColorPicker.prototype._colorSelectFromKeyboard], [[\"ArrowDown\", \"ArrowRight\", \"mac+ArrowDown\", \"mac+ArrowRight\"], ColorPicker.prototype._moveToNext], [[\"ArrowUp\", \"ArrowLeft\", \"mac+ArrowUp\", \"mac+ArrowLeft\"], ColorPicker.prototype._moveToPrevious], [[\"Home\", \"mac+Home\"], ColorPicker.prototype._moveToBeginning], [[\"End\", \"mac+End\"], ColorPicker.prototype._moveToEnd]]));\n }\n constructor({\n editor = null,\n uiManager = null\n }) {\n if (editor) {\n this.#isMainColorPicker = false;\n this.#type = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorParamsType.HIGHLIGHT_COLOR;\n this.#editor = editor;\n } else {\n this.#isMainColorPicker = true;\n this.#type = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR;\n }\n this.#uiManager = editor?._uiManager || uiManager;\n this.#eventBus = this.#uiManager._eventBus;\n this.#defaultColor = editor?.color || this.#uiManager?.highlightColors.values().next().value || \"#FFFF98\";\n }\n renderButton() {\n const button = this.#button = document.createElement(\"button\");\n button.className = \"colorPicker\";\n button.tabIndex = \"0\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-button\");\n button.setAttribute(\"aria-haspopup\", true);\n button.addEventListener(\"click\", this.#openDropdown.bind(this));\n button.addEventListener(\"keydown\", this.#boundKeyDown);\n const swatch = this.#buttonSwatch = document.createElement(\"span\");\n swatch.className = \"swatch\";\n swatch.setAttribute(\"aria-hidden\", true);\n swatch.style.backgroundColor = this.#defaultColor;\n button.append(swatch);\n return button;\n }\n renderMainDropdown() {\n const dropdown = this.#dropdown = this.#getDropdownRoot();\n dropdown.setAttribute(\"aria-orientation\", \"horizontal\");\n dropdown.setAttribute(\"aria-labelledby\", \"highlightColorPickerLabel\");\n return dropdown;\n }\n #getDropdownRoot() {\n const div = document.createElement(\"div\");\n div.addEventListener(\"contextmenu\", _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.noContextMenu);\n div.className = \"dropdown\";\n div.role = \"listbox\";\n div.setAttribute(\"aria-multiselectable\", false);\n div.setAttribute(\"aria-orientation\", \"vertical\");\n div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\n for (const [name, color] of this.#uiManager.highlightColors) {\n const button = document.createElement(\"button\");\n button.tabIndex = \"0\";\n button.role = \"option\";\n button.setAttribute(\"data-color\", color);\n button.title = name;\n button.setAttribute(\"data-l10n-id\", `pdfjs-editor-colorpicker-${name}`);\n const swatch = document.createElement(\"span\");\n button.append(swatch);\n swatch.className = \"swatch\";\n swatch.style.backgroundColor = color;\n button.setAttribute(\"aria-selected\", color === this.#defaultColor);\n button.addEventListener(\"click\", this.#colorSelect.bind(this, color));\n div.append(button);\n }\n div.addEventListener(\"keydown\", this.#boundKeyDown);\n return div;\n }\n #colorSelect(color, event) {\n event.stopPropagation();\n this.#eventBus.dispatch(\"switchannotationeditorparams\", {\n source: this,\n type: this.#type,\n value: color\n });\n }\n _colorSelectFromKeyboard(event) {\n if (event.target === this.#button) {\n this.#openDropdown(event);\n return;\n }\n const color = event.target.getAttribute(\"data-color\");\n if (!color) {\n return;\n }\n this.#colorSelect(color, event);\n }\n _moveToNext(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n if (event.target === this.#button) {\n this.#dropdown.firstChild?.focus();\n return;\n }\n event.target.nextSibling?.focus();\n }\n _moveToPrevious(event) {\n if (event.target === this.#dropdown?.firstChild || event.target === this.#button) {\n if (this.#isDropdownVisible) {\n this._hideDropdownFromKeyboard();\n }\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n }\n event.target.previousSibling?.focus();\n }\n _moveToBeginning(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.firstChild?.focus();\n }\n _moveToEnd(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.lastChild?.focus();\n }\n #keyDown(event) {\n ColorPicker._keyboardManager.exec(this, event);\n }\n #openDropdown(event) {\n if (this.#isDropdownVisible) {\n this.hideDropdown();\n return;\n }\n this.#dropdownWasFromKeyboard = event.detail === 0;\n window.addEventListener(\"pointerdown\", this.#boundPointerDown);\n if (this.#dropdown) {\n this.#dropdown.classList.remove(\"hidden\");\n return;\n }\n const root = this.#dropdown = this.#getDropdownRoot();\n this.#button.append(root);\n }\n #pointerDown(event) {\n if (this.#dropdown?.contains(event.target)) {\n return;\n }\n this.hideDropdown();\n }\n hideDropdown() {\n this.#dropdown?.classList.add(\"hidden\");\n window.removeEventListener(\"pointerdown\", this.#boundPointerDown);\n }\n get #isDropdownVisible() {\n return this.#dropdown && !this.#dropdown.classList.contains(\"hidden\");\n }\n _hideDropdownFromKeyboard() {\n if (this.#isMainColorPicker) {\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#editor?.unselect();\n return;\n }\n this.hideDropdown();\n this.#button.focus({\n preventScroll: true,\n focusVisible: this.#dropdownWasFromKeyboard\n });\n }\n updateColor(color) {\n if (this.#buttonSwatch) {\n this.#buttonSwatch.style.backgroundColor = color;\n }\n if (!this.#dropdown) {\n return;\n }\n const i = this.#uiManager.highlightColors.values();\n for (const child of this.#dropdown.children) {\n child.setAttribute(\"aria-selected\", i.next().value === color);\n }\n }\n destroy() {\n this.#button?.remove();\n this.#button = null;\n this.#buttonSwatch = null;\n this.#dropdown?.remove();\n this.#dropdown = null;\n }\n}\n\n\n/***/ }),\n\n/***/ 310:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n AnnotationEditor: () => (/* binding */ AnnotationEditor)\n});\n\n// EXTERNAL MODULE: ./src/display/editor/tools.js\nvar tools = __webpack_require__(830);\n// EXTERNAL MODULE: ./src/shared/util.js\nvar util = __webpack_require__(292);\n// EXTERNAL MODULE: ./src/display/display_utils.js\nvar display_utils = __webpack_require__(419);\n;// CONCATENATED MODULE: ./src/display/editor/alt_text.js\n\nclass AltText {\n #altText = \"\";\n #altTextDecorative = false;\n #altTextButton = null;\n #altTextTooltip = null;\n #altTextTooltipTimeout = null;\n #altTextWasFromKeyBoard = false;\n #editor = null;\n static _l10nPromise = null;\n constructor(editor) {\n this.#editor = editor;\n }\n static initialize(l10nPromise) {\n AltText._l10nPromise ||= l10nPromise;\n }\n async render() {\n const altText = this.#altTextButton = document.createElement(\"button\");\n altText.className = \"altText\";\n const msg = await AltText._l10nPromise.get(\"pdfjs-editor-alt-text-button-label\");\n altText.textContent = msg;\n altText.setAttribute(\"aria-label\", msg);\n altText.tabIndex = \"0\";\n altText.addEventListener(\"contextmenu\", display_utils.noContextMenu);\n altText.addEventListener(\"pointerdown\", event => event.stopPropagation());\n const onClick = event => {\n event.preventDefault();\n this.#editor._uiManager.editAltText(this.#editor);\n };\n altText.addEventListener(\"click\", onClick, {\n capture: true\n });\n altText.addEventListener(\"keydown\", event => {\n if (event.target === altText && event.key === \"Enter\") {\n this.#altTextWasFromKeyBoard = true;\n onClick(event);\n }\n });\n await this.#setState();\n return altText;\n }\n finish() {\n if (!this.#altTextButton) {\n return;\n }\n this.#altTextButton.focus({\n focusVisible: this.#altTextWasFromKeyBoard\n });\n this.#altTextWasFromKeyBoard = false;\n }\n isEmpty() {\n return !this.#altText && !this.#altTextDecorative;\n }\n get data() {\n return {\n altText: this.#altText,\n decorative: this.#altTextDecorative\n };\n }\n set data({\n altText,\n decorative\n }) {\n if (this.#altText === altText && this.#altTextDecorative === decorative) {\n return;\n }\n this.#altText = altText;\n this.#altTextDecorative = decorative;\n this.#setState();\n }\n toggle(enabled = false) {\n if (!this.#altTextButton) {\n return;\n }\n if (!enabled && this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextButton.disabled = !enabled;\n }\n destroy() {\n this.#altTextButton?.remove();\n this.#altTextButton = null;\n this.#altTextTooltip = null;\n }\n async #setState() {\n const button = this.#altTextButton;\n if (!button) {\n return;\n }\n if (!this.#altText && !this.#altTextDecorative) {\n button.classList.remove(\"done\");\n this.#altTextTooltip?.remove();\n return;\n }\n button.classList.add(\"done\");\n AltText._l10nPromise.get(\"pdfjs-editor-alt-text-edit-button-label\").then(msg => {\n button.setAttribute(\"aria-label\", msg);\n });\n let tooltip = this.#altTextTooltip;\n if (!tooltip) {\n this.#altTextTooltip = tooltip = document.createElement(\"span\");\n tooltip.className = \"tooltip\";\n tooltip.setAttribute(\"role\", \"tooltip\");\n const id = tooltip.id = `alt-text-tooltip-${this.#editor.id}`;\n button.setAttribute(\"aria-describedby\", id);\n const DELAY_TO_SHOW_TOOLTIP = 100;\n button.addEventListener(\"mouseenter\", () => {\n this.#altTextTooltipTimeout = setTimeout(() => {\n this.#altTextTooltipTimeout = null;\n this.#altTextTooltip.classList.add(\"show\");\n this.#editor._reportTelemetry({\n action: \"alt_text_tooltip\"\n });\n }, DELAY_TO_SHOW_TOOLTIP);\n });\n button.addEventListener(\"mouseleave\", () => {\n if (this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextTooltip?.classList.remove(\"show\");\n });\n }\n tooltip.innerText = this.#altTextDecorative ? await AltText._l10nPromise.get(\"pdfjs-editor-alt-text-decorative-tooltip\") : this.#altText;\n if (!tooltip.parentNode) {\n button.append(tooltip);\n }\n const element = this.#editor.getImageForAltText();\n element?.setAttribute(\"aria-describedby\", tooltip.id);\n }\n}\n\n// EXTERNAL MODULE: ./src/display/editor/toolbar.js\nvar toolbar = __webpack_require__(362);\n;// CONCATENATED MODULE: ./src/display/editor/editor.js\n\n\n\n\n\nclass AnnotationEditor {\n #allResizerDivs = null;\n #altText = null;\n #disabled = false;\n #keepAspectRatio = false;\n #resizersDiv = null;\n #savedDimensions = null;\n #boundFocusin = this.focusin.bind(this);\n #boundFocusout = this.focusout.bind(this);\n #editToolbar = null;\n #focusedResizerName = \"\";\n #hasBeenClicked = false;\n #initialPosition = null;\n #isEditing = false;\n #isInEditMode = false;\n #isResizerEnabledForKeyboard = false;\n #moveInDOMTimeout = null;\n #prevDragX = 0;\n #prevDragY = 0;\n #telemetryTimeouts = null;\n _initialOptions = Object.create(null);\n _isVisible = true;\n _uiManager = null;\n _focusEventsAllowed = true;\n _l10nPromise = null;\n #isDraggable = false;\n #zIndex = AnnotationEditor._zIndex++;\n static _borderLineWidth = -1;\n static _colorManager = new tools.ColorManager();\n static _zIndex = 1;\n static _telemetryTimeout = 1000;\n static get _resizerKeyboardManager() {\n const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n const small = tools.AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = tools.AnnotationEditorUIManager.TRANSLATE_BIG;\n return (0,util.shadow)(this, \"_resizerKeyboardManager\", new tools.KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], resize, {\n args: [-small, 0]\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], resize, {\n args: [-big, 0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], resize, {\n args: [small, 0]\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], resize, {\n args: [big, 0]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], resize, {\n args: [0, -small]\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, {\n args: [0, -big]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], resize, {\n args: [0, small]\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, {\n args: [0, big]\n }], [[\"Escape\", \"mac+Escape\"], AnnotationEditor.prototype._stopResizingWithKeyboard]]));\n }\n constructor(parameters) {\n if (this.constructor === AnnotationEditor) {\n (0,util.unreachable)(\"Cannot initialize AnnotationEditor.\");\n }\n this.parent = parameters.parent;\n this.id = parameters.id;\n this.width = this.height = null;\n this.pageIndex = parameters.parent.pageIndex;\n this.name = parameters.name;\n this.div = null;\n this._uiManager = parameters.uiManager;\n this.annotationElementId = null;\n this._willKeepAspectRatio = false;\n this._initialOptions.isCentered = parameters.isCentered;\n this._structTreeParentId = null;\n const {\n rotation,\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = this.parent.viewport;\n this.rotation = rotation;\n this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [pageWidth, pageHeight];\n this.pageTranslation = [pageX, pageY];\n const [width, height] = this.parentDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n this.isAttachedToDOM = false;\n this.deleted = false;\n }\n get editorType() {\n return Object.getPrototypeOf(this).constructor._type;\n }\n static get _defaultLineColor() {\n return (0,util.shadow)(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n }\n static deleteAnnotationElement(editor) {\n const fakeEditor = new FakeEditor({\n id: editor.parent.getNextId(),\n parent: editor.parent,\n uiManager: editor._uiManager\n });\n fakeEditor.annotationElementId = editor.annotationElementId;\n fakeEditor.deleted = true;\n fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n }\n static initialize(l10n, _uiManager, options) {\n AnnotationEditor._l10nPromise ||= new Map([\"pdfjs-editor-alt-text-button-label\", \"pdfjs-editor-alt-text-edit-button-label\", \"pdfjs-editor-alt-text-decorative-tooltip\", \"pdfjs-editor-resizer-label-topLeft\", \"pdfjs-editor-resizer-label-topMiddle\", \"pdfjs-editor-resizer-label-topRight\", \"pdfjs-editor-resizer-label-middleRight\", \"pdfjs-editor-resizer-label-bottomRight\", \"pdfjs-editor-resizer-label-bottomMiddle\", \"pdfjs-editor-resizer-label-bottomLeft\", \"pdfjs-editor-resizer-label-middleLeft\"].map(str => [str, l10n.get(str.replaceAll(/([A-Z])/g, c => `-${c.toLowerCase()}`))]));\n if (options?.strings) {\n for (const str of options.strings) {\n AnnotationEditor._l10nPromise.set(str, l10n.get(str));\n }\n }\n if (AnnotationEditor._borderLineWidth !== -1) {\n return;\n }\n const style = getComputedStyle(document.documentElement);\n AnnotationEditor._borderLineWidth = parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n }\n static updateDefaultParams(_type, _value) {}\n static get defaultPropertiesToUpdate() {\n return [];\n }\n static isHandlingMimeForPasting(mime) {\n return false;\n }\n static paste(item, parent) {\n (0,util.unreachable)(\"Not implemented\");\n }\n get propertiesToUpdate() {\n return [];\n }\n get _isDraggable() {\n return this.#isDraggable;\n }\n set _isDraggable(value) {\n this.#isDraggable = value;\n this.div?.classList.toggle(\"draggable\", value);\n }\n get isEnterHandled() {\n return true;\n }\n center() {\n const [pageWidth, pageHeight] = this.pageDimensions;\n switch (this.parentRotation) {\n case 90:\n this.x -= this.height * pageHeight / (pageWidth * 2);\n this.y += this.width * pageWidth / (pageHeight * 2);\n break;\n case 180:\n this.x += this.width / 2;\n this.y += this.height / 2;\n break;\n case 270:\n this.x += this.height * pageHeight / (pageWidth * 2);\n this.y -= this.width * pageWidth / (pageHeight * 2);\n break;\n default:\n this.x -= this.width / 2;\n this.y -= this.height / 2;\n break;\n }\n this.fixAndSetPosition();\n }\n addCommands(params) {\n this._uiManager.addCommands(params);\n }\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n setInForeground() {\n this.div.style.zIndex = this.#zIndex;\n }\n setParent(parent) {\n if (parent !== null) {\n this.pageIndex = parent.pageIndex;\n this.pageDimensions = parent.pageDimensions;\n } else {\n this.#stopResizing();\n }\n this.parent = parent;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.#hasBeenClicked) {\n this.parent.setSelected(this);\n } else {\n this.#hasBeenClicked = false;\n }\n }\n focusout(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.isAttachedToDOM) {\n return;\n }\n const target = event.relatedTarget;\n if (target?.closest(`#${this.id}`)) {\n return;\n }\n event.preventDefault();\n if (!this.parent?.isMultipleSelection) {\n this.commitOrRemove();\n }\n }\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n } else {\n this.commit();\n }\n }\n commit() {\n this.addToAnnotationStorage();\n }\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n setAt(x, y, tx, ty) {\n const [width, height] = this.parentDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n this.fixAndSetPosition();\n }\n #translate([width, height], x, y) {\n [x, y] = this.screenToPageTranslation(x, y);\n this.x += x / width;\n this.y += y / height;\n this.fixAndSetPosition();\n }\n translate(x, y) {\n this.#translate(this.parentDimensions, x, y);\n }\n translateInPage(x, y) {\n this.#initialPosition ||= [this.x, this.y];\n this.#translate(this.pageDimensions, x, y);\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n drag(tx, ty) {\n this.#initialPosition ||= [this.x, this.y];\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.x += tx / parentWidth;\n this.y += ty / parentHeight;\n if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n const {\n x,\n y\n } = this.div.getBoundingClientRect();\n if (this.parent.findNewParent(this, x, y)) {\n this.x -= Math.floor(this.x);\n this.y -= Math.floor(this.y);\n }\n }\n let {\n x,\n y\n } = this;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n this.div.style.left = `${(100 * x).toFixed(2)}%`;\n this.div.style.top = `${(100 * y).toFixed(2)}%`;\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n get _hasBeenMoved() {\n return !!this.#initialPosition && (this.#initialPosition[0] !== this.x || this.#initialPosition[1] !== this.y);\n }\n getBaseTranslation() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n _borderLineWidth\n } = AnnotationEditor;\n const x = _borderLineWidth / parentWidth;\n const y = _borderLineWidth / parentHeight;\n switch (this.rotation) {\n case 90:\n return [-x, y];\n case 180:\n return [x, y];\n case 270:\n return [x, -y];\n default:\n return [-x, -y];\n }\n }\n get _mustFixPosition() {\n return true;\n }\n fixAndSetPosition(rotation = this.rotation) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n let {\n x,\n y,\n width,\n height\n } = this;\n width *= pageWidth;\n height *= pageHeight;\n x *= pageWidth;\n y *= pageHeight;\n if (this._mustFixPosition) {\n switch (rotation) {\n case 0:\n x = Math.max(0, Math.min(pageWidth - width, x));\n y = Math.max(0, Math.min(pageHeight - height, y));\n break;\n case 90:\n x = Math.max(0, Math.min(pageWidth - height, x));\n y = Math.min(pageHeight, Math.max(width, y));\n break;\n case 180:\n x = Math.min(pageWidth, Math.max(width, x));\n y = Math.min(pageHeight, Math.max(height, y));\n break;\n case 270:\n x = Math.min(pageWidth, Math.max(height, x));\n y = Math.max(0, Math.min(pageHeight - width, y));\n break;\n }\n }\n this.x = x /= pageWidth;\n this.y = y /= pageHeight;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n const {\n style\n } = this.div;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this.moveInDOM();\n }\n static #rotatePoint(x, y, angle) {\n switch (angle) {\n case 90:\n return [y, -x];\n case 180:\n return [-x, -y];\n case 270:\n return [-y, x];\n default:\n return [x, y];\n }\n }\n screenToPageTranslation(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n }\n pageTranslationToScreen(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n }\n #getRotationMatrix(rotation) {\n switch (rotation) {\n case 90:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n }\n case 180:\n return [-1, 0, 0, -1];\n case 270:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n }\n default:\n return [1, 0, 0, 1];\n }\n }\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n get parentDimensions() {\n const {\n parentScale,\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n const scaledWidth = pageWidth * parentScale;\n const scaledHeight = pageHeight * parentScale;\n return util.FeatureTest.isCSSRoundSupported ? [Math.round(scaledWidth), Math.round(scaledHeight)] : [scaledWidth, scaledHeight];\n }\n setDims(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.div.style.width = `${(100 * width / parentWidth).toFixed(2)}%`;\n if (!this.#keepAspectRatio) {\n this.div.style.height = `${(100 * height / parentHeight).toFixed(2)}%`;\n }\n }\n fixDims() {\n const {\n style\n } = this.div;\n const {\n height,\n width\n } = style;\n const widthPercent = width.endsWith(\"%\");\n const heightPercent = !this.#keepAspectRatio && height.endsWith(\"%\");\n if (widthPercent && heightPercent) {\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (!widthPercent) {\n style.width = `${(100 * parseFloat(width) / parentWidth).toFixed(2)}%`;\n }\n if (!this.#keepAspectRatio && !heightPercent) {\n style.height = `${(100 * parseFloat(height) / parentHeight).toFixed(2)}%`;\n }\n }\n getInitialTranslation() {\n return [0, 0];\n }\n #createResizers() {\n if (this.#resizersDiv) {\n return;\n }\n this.#resizersDiv = document.createElement(\"div\");\n this.#resizersDiv.classList.add(\"resizers\");\n const classes = this._willKeepAspectRatio ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"] : [\"topLeft\", \"topMiddle\", \"topRight\", \"middleRight\", \"bottomRight\", \"bottomMiddle\", \"bottomLeft\", \"middleLeft\"];\n for (const name of classes) {\n const div = document.createElement(\"div\");\n this.#resizersDiv.append(div);\n div.classList.add(\"resizer\", name);\n div.setAttribute(\"data-resizer-name\", name);\n div.addEventListener(\"pointerdown\", this.#resizerPointerdown.bind(this, name));\n div.addEventListener(\"contextmenu\", display_utils.noContextMenu);\n div.tabIndex = -1;\n }\n this.div.prepend(this.#resizersDiv);\n }\n #resizerPointerdown(name, event) {\n event.preventDefault();\n const {\n isMac\n } = util.FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#altText?.toggle(false);\n const boundResizerPointermove = this.#resizerPointermove.bind(this, name);\n const savedDraggable = this._isDraggable;\n this._isDraggable = false;\n const pointerMoveOptions = {\n passive: true,\n capture: true\n };\n this.parent.togglePointerEvents(false);\n window.addEventListener(\"pointermove\", boundResizerPointermove, pointerMoveOptions);\n window.addEventListener(\"contextmenu\", display_utils.noContextMenu);\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const savedParentCursor = this.parent.div.style.cursor;\n const savedCursor = this.div.style.cursor;\n this.div.style.cursor = this.parent.div.style.cursor = window.getComputedStyle(event.target).cursor;\n const pointerUpCallback = () => {\n this.parent.togglePointerEvents(true);\n this.#altText?.toggle(true);\n this._isDraggable = savedDraggable;\n window.removeEventListener(\"pointerup\", pointerUpCallback);\n window.removeEventListener(\"blur\", pointerUpCallback);\n window.removeEventListener(\"pointermove\", boundResizerPointermove, pointerMoveOptions);\n window.removeEventListener(\"contextmenu\", display_utils.noContextMenu);\n this.parent.div.style.cursor = savedParentCursor;\n this.div.style.cursor = savedCursor;\n this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n };\n window.addEventListener(\"pointerup\", pointerUpCallback);\n window.addEventListener(\"blur\", pointerUpCallback);\n }\n #addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight) {\n const newX = this.x;\n const newY = this.y;\n const newWidth = this.width;\n const newHeight = this.height;\n if (newX === savedX && newY === savedY && newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.addCommands({\n cmd: () => {\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n },\n undo: () => {\n this.width = savedWidth;\n this.height = savedHeight;\n this.x = savedX;\n this.y = savedY;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * savedWidth, parentHeight * savedHeight);\n this.fixAndSetPosition();\n },\n mustExec: true\n });\n }\n #resizerPointermove(name, event) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n const round = x => Math.round(x * 10000) / 10000;\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n const invTransf = (x, y) => [invRotationMatrix[0] * x + invRotationMatrix[2] * y, invRotationMatrix[1] * x + invRotationMatrix[3] * y];\n let getPoint;\n let getOpposite;\n let isDiagonal = false;\n let isHorizontal = false;\n switch (name) {\n case \"topLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, 0];\n getOpposite = (w, h) => [w, h];\n break;\n case \"topMiddle\":\n getPoint = (w, h) => [w / 2, 0];\n getOpposite = (w, h) => [w / 2, h];\n break;\n case \"topRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, 0];\n getOpposite = (w, h) => [0, h];\n break;\n case \"middleRight\":\n isHorizontal = true;\n getPoint = (w, h) => [w, h / 2];\n getOpposite = (w, h) => [0, h / 2];\n break;\n case \"bottomRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, h];\n getOpposite = (w, h) => [0, 0];\n break;\n case \"bottomMiddle\":\n getPoint = (w, h) => [w / 2, h];\n getOpposite = (w, h) => [w / 2, 0];\n break;\n case \"bottomLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, h];\n getOpposite = (w, h) => [w, 0];\n break;\n case \"middleLeft\":\n isHorizontal = true;\n getPoint = (w, h) => [0, h / 2];\n getOpposite = (w, h) => [w, h / 2];\n break;\n }\n const point = getPoint(savedWidth, savedHeight);\n const oppositePoint = getOpposite(savedWidth, savedHeight);\n let transfOppositePoint = transf(...oppositePoint);\n const oppositeX = round(savedX + transfOppositePoint[0]);\n const oppositeY = round(savedY + transfOppositePoint[1]);\n let ratioX = 1;\n let ratioY = 1;\n let [deltaX, deltaY] = this.screenToPageTranslation(event.movementX, event.movementY);\n [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n if (isDiagonal) {\n const oldDiag = Math.hypot(savedWidth, savedHeight);\n ratioX = ratioY = Math.max(Math.min(Math.hypot(oppositePoint[0] - point[0] - deltaX, oppositePoint[1] - point[1] - deltaY) / oldDiag, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n } else if (isHorizontal) {\n ratioX = Math.max(minWidth, Math.min(1, Math.abs(oppositePoint[0] - point[0] - deltaX))) / savedWidth;\n } else {\n ratioY = Math.max(minHeight, Math.min(1, Math.abs(oppositePoint[1] - point[1] - deltaY))) / savedHeight;\n }\n const newWidth = round(savedWidth * ratioX);\n const newHeight = round(savedHeight * ratioY);\n transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n const newX = oppositeX - transfOppositePoint[0];\n const newY = oppositeY - transfOppositePoint[1];\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n }\n altTextFinish() {\n this.#altText?.finish();\n }\n async addEditToolbar() {\n if (this.#editToolbar || this.#isInEditMode) {\n return this.#editToolbar;\n }\n this.#editToolbar = new toolbar.EditorToolbar(this);\n this.div.append(this.#editToolbar.render());\n if (this.#altText) {\n this.#editToolbar.addAltTextButton(await this.#altText.render());\n }\n return this.#editToolbar;\n }\n removeEditToolbar() {\n if (!this.#editToolbar) {\n return;\n }\n this.#editToolbar.remove();\n this.#editToolbar = null;\n this.#altText?.destroy();\n }\n getClientDimensions() {\n return this.div.getBoundingClientRect();\n }\n async addAltTextButton() {\n if (this.#altText) {\n return;\n }\n AltText.initialize(AnnotationEditor._l10nPromise);\n this.#altText = new AltText(this);\n await this.addEditToolbar();\n }\n get altTextData() {\n return this.#altText?.data;\n }\n set altTextData(data) {\n if (!this.#altText) {\n return;\n }\n this.#altText.data = data;\n }\n hasAltText() {\n return !this.#altText?.isEmpty();\n }\n render() {\n this.div = document.createElement(\"div\");\n this.div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n this.div.className = this.name;\n this.div.setAttribute(\"id\", this.id);\n this.div.tabIndex = this.#disabled ? -1 : 0;\n if (!this._isVisible) {\n this.div.classList.add(\"hidden\");\n }\n this.setInForeground();\n this.div.addEventListener(\"focusin\", this.#boundFocusin);\n this.div.addEventListener(\"focusout\", this.#boundFocusout);\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.parentRotation % 180 !== 0) {\n this.div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`;\n this.div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`;\n }\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n (0,tools.bindEvents)(this, this.div, [\"pointerdown\"]);\n return this.div;\n }\n pointerdown(event) {\n const {\n isMac\n } = util.FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n event.preventDefault();\n return;\n }\n this.#hasBeenClicked = true;\n if (this._isDraggable) {\n this.#setUpDragSession(event);\n return;\n }\n this.#selectOnPointerEvent(event);\n }\n #selectOnPointerEvent(event) {\n const {\n isMac\n } = util.FeatureTest.platform;\n if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {\n this.parent.toggleSelected(this);\n } else {\n this.parent.setSelected(this);\n }\n }\n #setUpDragSession(event) {\n const isSelected = this._uiManager.isSelected(this);\n this._uiManager.setUpDragSession();\n let pointerMoveOptions, pointerMoveCallback;\n if (isSelected) {\n this.div.classList.add(\"moving\");\n pointerMoveOptions = {\n passive: true,\n capture: true\n };\n this.#prevDragX = event.clientX;\n this.#prevDragY = event.clientY;\n pointerMoveCallback = e => {\n const {\n clientX: x,\n clientY: y\n } = e;\n const [tx, ty] = this.screenToPageTranslation(x - this.#prevDragX, y - this.#prevDragY);\n this.#prevDragX = x;\n this.#prevDragY = y;\n this._uiManager.dragSelectedEditors(tx, ty);\n };\n window.addEventListener(\"pointermove\", pointerMoveCallback, pointerMoveOptions);\n }\n const pointerUpCallback = () => {\n window.removeEventListener(\"pointerup\", pointerUpCallback);\n window.removeEventListener(\"blur\", pointerUpCallback);\n if (isSelected) {\n this.div.classList.remove(\"moving\");\n window.removeEventListener(\"pointermove\", pointerMoveCallback, pointerMoveOptions);\n }\n this.#hasBeenClicked = false;\n if (!this._uiManager.endDragSession()) {\n this.#selectOnPointerEvent(event);\n }\n };\n window.addEventListener(\"pointerup\", pointerUpCallback);\n window.addEventListener(\"blur\", pointerUpCallback);\n }\n moveInDOM() {\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n }\n this.#moveInDOMTimeout = setTimeout(() => {\n this.#moveInDOMTimeout = null;\n this.parent?.moveEditorInDOM(this);\n }, 0);\n }\n _setParentAndPosition(parent, x, y) {\n parent.changeParent(this);\n this.x = x;\n this.y = y;\n this.fixAndSetPosition();\n }\n getRect(tx, ty, rotation = this.rotation) {\n const scale = this.parentScale;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const shiftX = tx / scale;\n const shiftY = ty / scale;\n const x = this.x * pageWidth;\n const y = this.y * pageHeight;\n const width = this.width * pageWidth;\n const height = this.height * pageHeight;\n switch (rotation) {\n case 0:\n return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY];\n case 90:\n return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY];\n case 180:\n return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY];\n case 270:\n return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n const width = x2 - x1;\n const height = y2 - y1;\n switch (this.rotation) {\n case 0:\n return [x1, pageHeight - y2, width, height];\n case 90:\n return [x1, pageHeight - y1, height, width];\n case 180:\n return [x2, pageHeight - y1, width, height];\n case 270:\n return [x2, pageHeight - y2, height, width];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n onceAdded() {}\n isEmpty() {\n return false;\n }\n enableEditMode() {\n this.#isInEditMode = true;\n }\n disableEditMode() {\n this.#isInEditMode = false;\n }\n isInEditMode() {\n return this.#isInEditMode;\n }\n shouldGetKeyboardEvents() {\n return this.#isResizerEnabledForKeyboard;\n }\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n rebuild() {\n this.div?.addEventListener(\"focusin\", this.#boundFocusin);\n this.div?.addEventListener(\"focusout\", this.#boundFocusout);\n }\n rotate(_angle) {}\n serialize(isForCopying = false, context = null) {\n (0,util.unreachable)(\"An editor must be serializable\");\n }\n static deserialize(data, parent, uiManager) {\n const editor = new this.prototype.constructor({\n parent,\n id: parent.getNextId(),\n uiManager\n });\n editor.rotation = data.rotation;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n return editor;\n }\n get hasBeenModified() {\n return !!this.annotationElementId && (this.deleted || this.serialize() !== null);\n }\n remove() {\n this.div.removeEventListener(\"focusin\", this.#boundFocusin);\n this.div.removeEventListener(\"focusout\", this.#boundFocusout);\n if (!this.isEmpty()) {\n this.commit();\n }\n if (this.parent) {\n this.parent.remove(this);\n } else {\n this._uiManager.removeEditor(this);\n }\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n this.#moveInDOMTimeout = null;\n }\n this.#stopResizing();\n this.removeEditToolbar();\n if (this.#telemetryTimeouts) {\n for (const timeout of this.#telemetryTimeouts.values()) {\n clearTimeout(timeout);\n }\n this.#telemetryTimeouts = null;\n }\n this.parent = null;\n }\n get isResizable() {\n return false;\n }\n makeResizable() {\n if (this.isResizable) {\n this.#createResizers();\n this.#resizersDiv.classList.remove(\"hidden\");\n (0,tools.bindEvents)(this, this.div, [\"keydown\"]);\n }\n }\n get toolbarPosition() {\n return null;\n }\n keydown(event) {\n if (!this.isResizable || event.target !== this.div || event.key !== \"Enter\") {\n return;\n }\n this._uiManager.setSelected(this);\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const children = this.#resizersDiv.children;\n if (!this.#allResizerDivs) {\n this.#allResizerDivs = Array.from(children);\n const boundResizerKeydown = this.#resizerKeydown.bind(this);\n const boundResizerBlur = this.#resizerBlur.bind(this);\n for (const div of this.#allResizerDivs) {\n const name = div.getAttribute(\"data-resizer-name\");\n div.setAttribute(\"role\", \"spinbutton\");\n div.addEventListener(\"keydown\", boundResizerKeydown);\n div.addEventListener(\"blur\", boundResizerBlur);\n div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name));\n AnnotationEditor._l10nPromise.get(`pdfjs-editor-resizer-label-${name}`).then(msg => div.setAttribute(\"aria-label\", msg));\n }\n }\n const first = this.#allResizerDivs[0];\n let firstPosition = 0;\n for (const div of children) {\n if (div === first) {\n break;\n }\n firstPosition++;\n }\n const nextFirstPosition = (360 - this.rotation + this.parentRotation) % 360 / 90 * (this.#allResizerDivs.length / 4);\n if (nextFirstPosition !== firstPosition) {\n if (nextFirstPosition < firstPosition) {\n for (let i = 0; i < firstPosition - nextFirstPosition; i++) {\n this.#resizersDiv.append(this.#resizersDiv.firstChild);\n }\n } else if (nextFirstPosition > firstPosition) {\n for (let i = 0; i < nextFirstPosition - firstPosition; i++) {\n this.#resizersDiv.firstChild.before(this.#resizersDiv.lastChild);\n }\n }\n let i = 0;\n for (const child of children) {\n const div = this.#allResizerDivs[i++];\n const name = div.getAttribute(\"data-resizer-name\");\n AnnotationEditor._l10nPromise.get(`pdfjs-editor-resizer-label-${name}`).then(msg => child.setAttribute(\"aria-label\", msg));\n }\n }\n this.#setResizerTabIndex(0);\n this.#isResizerEnabledForKeyboard = true;\n this.#resizersDiv.firstChild.focus({\n focusVisible: true\n });\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n #resizerKeydown(event) {\n AnnotationEditor._resizerKeyboardManager.exec(this, event);\n }\n #resizerBlur(event) {\n if (this.#isResizerEnabledForKeyboard && event.relatedTarget?.parentNode !== this.#resizersDiv) {\n this.#stopResizing();\n }\n }\n #resizerFocus(name) {\n this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n }\n #setResizerTabIndex(value) {\n if (!this.#allResizerDivs) {\n return;\n }\n for (const div of this.#allResizerDivs) {\n div.tabIndex = value;\n }\n }\n _resizeWithKeyboard(x, y) {\n if (!this.#isResizerEnabledForKeyboard) {\n return;\n }\n this.#resizerPointermove(this.#focusedResizerName, {\n movementX: x,\n movementY: y\n });\n }\n #stopResizing() {\n this.#isResizerEnabledForKeyboard = false;\n this.#setResizerTabIndex(-1);\n if (this.#savedDimensions) {\n const {\n savedX,\n savedY,\n savedWidth,\n savedHeight\n } = this.#savedDimensions;\n this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n this.#savedDimensions = null;\n }\n }\n _stopResizingWithKeyboard() {\n this.#stopResizing();\n this.div.focus();\n }\n select() {\n this.makeResizable();\n this.div?.classList.add(\"selectedEditor\");\n if (!this.#editToolbar) {\n this.addEditToolbar().then(() => {\n if (this.div?.classList.contains(\"selectedEditor\")) {\n this.#editToolbar?.show();\n }\n });\n return;\n }\n this.#editToolbar?.show();\n }\n unselect() {\n this.#resizersDiv?.classList.add(\"hidden\");\n this.div?.classList.remove(\"selectedEditor\");\n if (this.div?.contains(document.activeElement)) {\n this._uiManager.currentLayer.div.focus({\n preventScroll: true\n });\n }\n this.#editToolbar?.hide();\n }\n updateParams(type, value) {}\n disableEditing() {}\n enableEditing() {}\n enterInEditMode() {}\n getImageForAltText() {\n return null;\n }\n get contentDiv() {\n return this.div;\n }\n get isEditing() {\n return this.#isEditing;\n }\n set isEditing(value) {\n this.#isEditing = value;\n if (!this.parent) {\n return;\n }\n if (value) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else {\n this.parent.setActiveEditor(null);\n }\n }\n setAspectRatio(width, height) {\n this.#keepAspectRatio = true;\n const aspectRatio = width / height;\n const {\n style\n } = this.div;\n style.aspectRatio = aspectRatio;\n style.height = \"auto\";\n }\n static get MIN_SIZE() {\n return 16;\n }\n static canCreateNewEmptyEditor() {\n return true;\n }\n get telemetryInitialData() {\n return {\n action: \"added\"\n };\n }\n get telemetryFinalData() {\n return null;\n }\n _reportTelemetry(data, mustWait = false) {\n if (mustWait) {\n this.#telemetryTimeouts ||= new Map();\n const {\n action\n } = data;\n let timeout = this.#telemetryTimeouts.get(action);\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n this._reportTelemetry(data);\n this.#telemetryTimeouts.delete(action);\n if (this.#telemetryTimeouts.size === 0) {\n this.#telemetryTimeouts = null;\n }\n }, AnnotationEditor._telemetryTimeout);\n this.#telemetryTimeouts.set(action, timeout);\n return;\n }\n data.type ||= this.editorType;\n this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data\n }\n });\n }\n show(visible = this._isVisible) {\n this.div.classList.toggle(\"hidden\", !visible);\n this._isVisible = visible;\n }\n enable() {\n if (this.div) {\n this.div.tabIndex = 0;\n }\n this.#disabled = false;\n }\n disable() {\n if (this.div) {\n this.div.tabIndex = -1;\n }\n this.#disabled = true;\n }\n renderAnnotationElement(annotation) {\n let content = annotation.container.querySelector(\".annotationContent\");\n if (!content) {\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n annotation.container.prepend(content);\n } else if (content.nodeName === \"CANVAS\") {\n const canvas = content;\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n canvas.before(content);\n }\n return content;\n }\n resetAnnotationElement(annotation) {\n const {\n firstChild\n } = annotation.container;\n if (firstChild.nodeName === \"DIV\" && firstChild.classList.contains(\"annotationContent\")) {\n firstChild.remove();\n }\n }\n}\nclass FakeEditor extends AnnotationEditor {\n constructor(params) {\n super(params);\n this.annotationElementId = params.annotationElementId;\n this.deleted = true;\n }\n serialize() {\n return {\n id: this.annotationElementId,\n deleted: true,\n pageIndex: this.pageIndex\n };\n }\n}\n\n\n/***/ }),\n\n/***/ 61:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ FreeOutliner: () => (/* binding */ FreeOutliner),\n/* harmony export */ Outliner: () => (/* binding */ Outliner)\n/* harmony export */ });\n/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(292);\n\nclass Outliner {\n #box;\n #verticalEdges = [];\n #intervals = [];\n constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n const NUMBER_OF_DIGITS = 4;\n const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON;\n const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON;\n const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON;\n const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON;\n const left = [x1, y1, y2, true];\n const right = [x2, y1, y2, false];\n this.#verticalEdges.push(left, right);\n minX = Math.min(minX, x1);\n maxX = Math.max(maxX, x2);\n minY = Math.min(minY, y1);\n maxY = Math.max(maxY, y2);\n }\n const bboxWidth = maxX - minX + 2 * innerMargin;\n const bboxHeight = maxY - minY + 2 * innerMargin;\n const shiftedMinX = minX - innerMargin;\n const shiftedMinY = minY - innerMargin;\n const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n const lastPoint = [lastEdge[0], lastEdge[2]];\n for (const edge of this.#verticalEdges) {\n const [x, y1, y2] = edge;\n edge[0] = (x - shiftedMinX) / bboxWidth;\n edge[1] = (y1 - shiftedMinY) / bboxHeight;\n edge[2] = (y2 - shiftedMinY) / bboxHeight;\n }\n this.#box = {\n x: shiftedMinX,\n y: shiftedMinY,\n width: bboxWidth,\n height: bboxHeight,\n lastPoint\n };\n }\n getOutlines() {\n this.#verticalEdges.sort((a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]);\n const outlineVerticalEdges = [];\n for (const edge of this.#verticalEdges) {\n if (edge[3]) {\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n this.#insert(edge);\n } else {\n this.#remove(edge);\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n }\n }\n return this.#getOutlines(outlineVerticalEdges);\n }\n #getOutlines(outlineVerticalEdges) {\n const edges = [];\n const allEdges = new Set();\n for (const edge of outlineVerticalEdges) {\n const [x, y1, y2] = edge;\n edges.push([x, y1, edge], [x, y2, edge]);\n }\n edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n for (let i = 0, ii = edges.length; i < ii; i += 2) {\n const edge1 = edges[i][2];\n const edge2 = edges[i + 1][2];\n edge1.push(edge2);\n edge2.push(edge1);\n allEdges.add(edge1);\n allEdges.add(edge2);\n }\n const outlines = [];\n let outline;\n while (allEdges.size > 0) {\n const edge = allEdges.values().next().value;\n let [x, y1, y2, edge1, edge2] = edge;\n allEdges.delete(edge);\n let lastPointX = x;\n let lastPointY = y1;\n outline = [x, y2];\n outlines.push(outline);\n while (true) {\n let e;\n if (allEdges.has(edge1)) {\n e = edge1;\n } else if (allEdges.has(edge2)) {\n e = edge2;\n } else {\n break;\n }\n allEdges.delete(e);\n [x, y1, y2, edge1, edge2] = e;\n if (lastPointX !== x) {\n outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n lastPointX = x;\n }\n lastPointY = lastPointY === y1 ? y2 : y1;\n }\n outline.push(lastPointX, lastPointY);\n }\n return new HighlightOutline(outlines, this.#box);\n }\n #binarySearch(y) {\n const array = this.#intervals;\n let start = 0;\n let end = array.length - 1;\n while (start <= end) {\n const middle = start + end >> 1;\n const y1 = array[middle][0];\n if (y1 === y) {\n return middle;\n }\n if (y1 < y) {\n start = middle + 1;\n } else {\n end = middle - 1;\n }\n }\n return end + 1;\n }\n #insert([, y1, y2]) {\n const index = this.#binarySearch(y1);\n this.#intervals.splice(index, 0, [y1, y2]);\n }\n #remove([, y1, y2]) {\n const index = this.#binarySearch(y1);\n for (let i = index; i < this.#intervals.length; i++) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n for (let i = index - 1; i >= 0; i--) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n }\n #breakEdge(edge) {\n const [x, y1, y2] = edge;\n const results = [[x, y1, y2]];\n const index = this.#binarySearch(y2);\n for (let i = 0; i < index; i++) {\n const [start, end] = this.#intervals[i];\n for (let j = 0, jj = results.length; j < jj; j++) {\n const [, y3, y4] = results[j];\n if (end <= y3 || y4 <= start) {\n continue;\n }\n if (y3 >= start) {\n if (y4 > end) {\n results[j][1] = end;\n } else {\n if (jj === 1) {\n return [];\n }\n results.splice(j, 1);\n j--;\n jj--;\n }\n continue;\n }\n results[j][2] = start;\n if (y4 > end) {\n results.push([x, end, y4]);\n }\n }\n }\n return results;\n }\n}\nclass Outline {\n toSVGPath() {\n throw new Error(\"Abstract method `toSVGPath` must be implemented.\");\n }\n get box() {\n throw new Error(\"Abstract getter `box` must be implemented.\");\n }\n serialize(_bbox, _rotation) {\n throw new Error(\"Abstract method `serialize` must be implemented.\");\n }\n get free() {\n return this instanceof FreeHighlightOutline;\n }\n}\nclass HighlightOutline extends Outline {\n #box;\n #outlines;\n constructor(outlines, box) {\n super();\n this.#outlines = outlines;\n this.#box = box;\n }\n toSVGPath() {\n const buffer = [];\n for (const polygon of this.#outlines) {\n let [prevX, prevY] = polygon;\n buffer.push(`M${prevX} ${prevY}`);\n for (let i = 2; i < polygon.length; i += 2) {\n const x = polygon[i];\n const y = polygon[i + 1];\n if (x === prevX) {\n buffer.push(`V${y}`);\n prevY = y;\n } else if (y === prevY) {\n buffer.push(`H${x}`);\n prevX = x;\n }\n }\n buffer.push(\"Z\");\n }\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], _rotation) {\n const outlines = [];\n const width = trX - blX;\n const height = trY - blY;\n for (const outline of this.#outlines) {\n const points = new Array(outline.length);\n for (let i = 0; i < outline.length; i += 2) {\n points[i] = blX + outline[i] * width;\n points[i + 1] = trY - outline[i + 1] * height;\n }\n outlines.push(points);\n }\n return outlines;\n }\n get box() {\n return this.#box;\n }\n}\nclass FreeOutliner {\n #box;\n #bottom = [];\n #innerMargin;\n #isLTR;\n #top = [];\n #last = new Float64Array(18);\n #lastX;\n #lastY;\n #min;\n #min_dist;\n #scaleFactor;\n #thickness;\n #points = [];\n static #MIN_DIST = 8;\n static #MIN_DIFF = 2;\n static #MIN = FreeOutliner.#MIN_DIST + FreeOutliner.#MIN_DIFF;\n constructor({\n x,\n y\n }, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n this.#box = box;\n this.#thickness = thickness * scaleFactor;\n this.#isLTR = isLTR;\n this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\n this.#innerMargin = innerMargin;\n this.#min_dist = FreeOutliner.#MIN_DIST * scaleFactor;\n this.#min = FreeOutliner.#MIN * scaleFactor;\n this.#scaleFactor = scaleFactor;\n this.#points.push(x, y);\n }\n get free() {\n return true;\n }\n isEmpty() {\n return isNaN(this.#last[8]);\n }\n #getLastCoords() {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [x, y, width, height] = this.#box;\n return [(this.#lastX + (lastTop[0] - lastBottom[0]) / 2 - x) / width, (this.#lastY + (lastTop[1] - lastBottom[1]) / 2 - y) / height, (this.#lastX + (lastBottom[0] - lastTop[0]) / 2 - x) / width, (this.#lastY + (lastBottom[1] - lastTop[1]) / 2 - y) / height];\n }\n add({\n x,\n y\n }) {\n this.#lastX = x;\n this.#lastY = y;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n let [x1, y1, x2, y2] = this.#last.subarray(8, 12);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(diffX, diffY);\n if (d < this.#min) {\n return false;\n }\n const diffD = d - this.#min_dist;\n const K = diffD / d;\n const shiftX = K * diffX;\n const shiftY = K * diffY;\n let x0 = x1;\n let y0 = y1;\n x1 = x2;\n y1 = y2;\n x2 += shiftX;\n y2 += shiftY;\n this.#points?.push(x, y);\n const nX = -shiftY / diffD;\n const nY = shiftX / diffD;\n const thX = nX * this.#thickness;\n const thY = nY * this.#thickness;\n this.#last.set(this.#last.subarray(2, 8), 0);\n this.#last.set([x2 + thX, y2 + thY], 4);\n this.#last.set(this.#last.subarray(14, 18), 12);\n this.#last.set([x2 - thX, y2 - thY], 16);\n if (isNaN(this.#last[6])) {\n if (this.#top.length === 0) {\n this.#last.set([x1 + thX, y1 + thY], 2);\n this.#top.push(NaN, NaN, NaN, NaN, (x1 + thX - layerX) / layerWidth, (y1 + thY - layerY) / layerHeight);\n this.#last.set([x1 - thX, y1 - thY], 14);\n this.#bottom.push(NaN, NaN, NaN, NaN, (x1 - thX - layerX) / layerWidth, (y1 - thY - layerY) / layerHeight);\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n return !this.isEmpty();\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n const angle = Math.abs(Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX));\n if (angle < Math.PI / 2) {\n [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n this.#top.push(NaN, NaN, NaN, NaN, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x1, y1, x0, y0] = this.#last.subarray(14, 18);\n this.#bottom.push(NaN, NaN, NaN, NaN, ((x0 + x1) / 2 - layerX) / layerWidth, ((y0 + y1) / 2 - layerY) / layerHeight);\n return true;\n }\n [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\n this.#top.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\n this.#bottom.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n return true;\n }\n toSVGPath() {\n if (this.isEmpty()) {\n return \"\";\n }\n const top = this.#top;\n const bottom = this.#bottom;\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [x, y, width, height] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n if (isNaN(this.#last[6]) && !this.isEmpty()) {\n return `M${(this.#last[2] - x) / width} ${(this.#last[3] - y) / height} L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(this.#last[16] - x) / width} ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${(this.#last[15] - y) / height} Z`;\n }\n const buffer = [];\n buffer.push(`M${top[4]} ${top[5]}`);\n for (let i = 6; i < top.length; i += 6) {\n if (isNaN(top[i])) {\n buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\n } else {\n buffer.push(`C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${top[i + 5]}`);\n }\n }\n buffer.push(`L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(lastBottom[0] - x) / width} ${(lastBottom[1] - y) / height}`);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n if (isNaN(bottom[i])) {\n buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\n } else {\n buffer.push(`C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${bottom[i + 4]} ${bottom[i + 5]}`);\n }\n }\n buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n return buffer.join(\" \");\n }\n getOutlines() {\n const top = this.#top;\n const bottom = this.#bottom;\n const last = this.#last;\n const lastTop = last.subarray(4, 6);\n const lastBottom = last.subarray(16, 18);\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const points = new Float64Array((this.#points?.length ?? 0) + 2);\n for (let i = 0, ii = points.length - 2; i < ii; i += 2) {\n points[i] = (this.#points[i] - layerX) / layerWidth;\n points[i + 1] = (this.#points[i + 1] - layerY) / layerHeight;\n }\n points[points.length - 2] = (this.#lastX - layerX) / layerWidth;\n points[points.length - 1] = (this.#lastY - layerY) / layerHeight;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n if (isNaN(last[6]) && !this.isEmpty()) {\n const outline = new Float64Array(36);\n outline.set([NaN, NaN, NaN, NaN, (last[2] - layerX) / layerWidth, (last[3] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[4] - layerX) / layerWidth, (last[5] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (last[16] - layerX) / layerWidth, (last[17] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[14] - layerX) / layerWidth, (last[15] - layerY) / layerHeight], 0);\n return new FreeHighlightOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n const outline = new Float64Array(this.#top.length + 24 + this.#bottom.length);\n let N = top.length;\n for (let i = 0; i < N; i += 2) {\n if (isNaN(top[i])) {\n outline[i] = outline[i + 1] = NaN;\n continue;\n }\n outline[i] = top[i];\n outline[i + 1] = top[i + 1];\n }\n outline.set([NaN, NaN, NaN, NaN, (lastTop[0] - layerX) / layerWidth, (lastTop[1] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (lastBottom[0] - layerX) / layerWidth, (lastBottom[1] - layerY) / layerHeight], N);\n N += 24;\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n for (let j = 0; j < 6; j += 2) {\n if (isNaN(bottom[i + j])) {\n outline[N] = outline[N + 1] = NaN;\n N += 2;\n continue;\n }\n outline[N] = bottom[i + j];\n outline[N + 1] = bottom[i + j + 1];\n N += 2;\n }\n }\n outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], N);\n return new FreeHighlightOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n}\nclass FreeHighlightOutline extends Outline {\n #box;\n #bbox = null;\n #innerMargin;\n #isLTR;\n #points;\n #scaleFactor;\n #outline;\n constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\n super();\n this.#outline = outline;\n this.#points = points;\n this.#box = box;\n this.#scaleFactor = scaleFactor;\n this.#innerMargin = innerMargin;\n this.#isLTR = isLTR;\n this.#computeMinMax(isLTR);\n const {\n x,\n y,\n width,\n height\n } = this.#bbox;\n for (let i = 0, ii = outline.length; i < ii; i += 2) {\n outline[i] = (outline[i] - x) / width;\n outline[i + 1] = (outline[i + 1] - y) / height;\n }\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = (points[i] - x) / width;\n points[i + 1] = (points[i + 1] - y) / height;\n }\n }\n toSVGPath() {\n const buffer = [`M${this.#outline[4]} ${this.#outline[5]}`];\n for (let i = 6, ii = this.#outline.length; i < ii; i += 6) {\n if (isNaN(this.#outline[i])) {\n buffer.push(`L${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n continue;\n }\n buffer.push(`C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${this.#outline[i + 3]} ${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n }\n buffer.push(\"Z\");\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], rotation) {\n const width = trX - blX;\n const height = trY - blY;\n let outline;\n let points;\n switch (rotation) {\n case 0:\n outline = this.#rescale(this.#outline, blX, trY, width, -height);\n points = this.#rescale(this.#points, blX, trY, width, -height);\n break;\n case 90:\n outline = this.#rescaleAndSwap(this.#outline, blX, blY, width, height);\n points = this.#rescaleAndSwap(this.#points, blX, blY, width, height);\n break;\n case 180:\n outline = this.#rescale(this.#outline, trX, blY, -width, height);\n points = this.#rescale(this.#points, trX, blY, -width, height);\n break;\n case 270:\n outline = this.#rescaleAndSwap(this.#outline, trX, trY, -width, -height);\n points = this.#rescaleAndSwap(this.#points, trX, trY, -width, -height);\n break;\n }\n return {\n outline: Array.from(outline),\n points: [Array.from(points)]\n };\n }\n #rescale(src, tx, ty, sx, sy) {\n const dest = new Float64Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i] * sx;\n dest[i + 1] = ty + src[i + 1] * sy;\n }\n return dest;\n }\n #rescaleAndSwap(src, tx, ty, sx, sy) {\n const dest = new Float64Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i + 1] * sx;\n dest[i + 1] = ty + src[i] * sy;\n }\n return dest;\n }\n #computeMinMax(isLTR) {\n const outline = this.#outline;\n let lastX = outline[4];\n let lastY = outline[5];\n let minX = lastX;\n let minY = lastY;\n let maxX = lastX;\n let maxY = lastY;\n let lastPointX = lastX;\n let lastPointY = lastY;\n const ltrCallback = isLTR ? Math.max : Math.min;\n for (let i = 6, ii = outline.length; i < ii; i += 6) {\n if (isNaN(outline[i])) {\n minX = Math.min(minX, outline[i + 4]);\n minY = Math.min(minY, outline[i + 5]);\n maxX = Math.max(maxX, outline[i + 4]);\n maxY = Math.max(maxY, outline[i + 5]);\n if (lastPointY < outline[i + 5]) {\n lastPointX = outline[i + 4];\n lastPointY = outline[i + 5];\n } else if (lastPointY === outline[i + 5]) {\n lastPointX = ltrCallback(lastPointX, outline[i + 4]);\n }\n } else {\n const bbox = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6));\n minX = Math.min(minX, bbox[0]);\n minY = Math.min(minY, bbox[1]);\n maxX = Math.max(maxX, bbox[2]);\n maxY = Math.max(maxY, bbox[3]);\n if (lastPointY < bbox[3]) {\n lastPointX = bbox[2];\n lastPointY = bbox[3];\n } else if (lastPointY === bbox[3]) {\n lastPointX = ltrCallback(lastPointX, bbox[2]);\n }\n }\n lastX = outline[i + 4];\n lastY = outline[i + 5];\n }\n const x = minX - this.#innerMargin,\n y = minY - this.#innerMargin,\n width = maxX - minX + 2 * this.#innerMargin,\n height = maxY - minY + 2 * this.#innerMargin;\n this.#bbox = {\n x,\n y,\n width,\n height,\n lastPoint: [lastPointX, lastPointY]\n };\n }\n get box() {\n return this.#bbox;\n }\n getNewOutline(thickness, innerMargin) {\n const {\n x,\n y,\n width,\n height\n } = this.#bbox;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const sx = width * layerWidth;\n const sy = height * layerHeight;\n const tx = x * layerWidth + layerX;\n const ty = y * layerHeight + layerY;\n const outliner = new FreeOutliner({\n x: this.#points[0] * sx + tx,\n y: this.#points[1] * sy + ty\n }, this.#box, this.#scaleFactor, thickness, this.#isLTR, innerMargin ?? this.#innerMargin);\n for (let i = 2; i < this.#points.length; i += 2) {\n outliner.add({\n x: this.#points[i] * sx + tx,\n y: this.#points[i + 1] * sy + ty\n });\n }\n return outliner.getOutlines();\n }\n}\n\n\n/***/ }),\n\n/***/ 362:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ EditorToolbar: () => (/* binding */ EditorToolbar),\n/* harmony export */ HighlightToolbar: () => (/* binding */ HighlightToolbar)\n/* harmony export */ });\n/* harmony import */ var _display_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(419);\n\nclass EditorToolbar {\n #toolbar = null;\n #colorPicker = null;\n #editor;\n #buttons = null;\n constructor(editor) {\n this.#editor = editor;\n }\n render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.className = \"editToolbar\";\n editToolbar.setAttribute(\"role\", \"toolbar\");\n editToolbar.addEventListener(\"contextmenu\", _display_utils_js__WEBPACK_IMPORTED_MODULE_0__.noContextMenu);\n editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown);\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n const position = this.#editor.toolbarPosition;\n if (position) {\n const {\n style\n } = editToolbar;\n const x = this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0];\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * position[1]}% + var(--editor-toolbar-vert-offset))`;\n }\n this.#addDeleteButton();\n return editToolbar;\n }\n static #pointerDown(e) {\n e.stopPropagation();\n }\n #focusIn(e) {\n this.#editor._focusEventsAllowed = false;\n e.preventDefault();\n e.stopPropagation();\n }\n #focusOut(e) {\n this.#editor._focusEventsAllowed = true;\n e.preventDefault();\n e.stopPropagation();\n }\n #addListenersToElement(element) {\n element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n capture: true\n });\n element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n capture: true\n });\n element.addEventListener(\"contextmenu\", _display_utils_js__WEBPACK_IMPORTED_MODULE_0__.noContextMenu);\n }\n hide() {\n this.#toolbar.classList.add(\"hidden\");\n this.#colorPicker?.hideDropdown();\n }\n show() {\n this.#toolbar.classList.remove(\"hidden\");\n }\n #addDeleteButton() {\n const button = document.createElement(\"button\");\n button.className = \"delete\";\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", `pdfjs-editor-remove-${this.#editor.editorType}-button`);\n this.#addListenersToElement(button);\n button.addEventListener(\"click\", e => {\n this.#editor._uiManager.delete();\n });\n this.#buttons.append(button);\n }\n get #divider() {\n const divider = document.createElement(\"div\");\n divider.className = \"divider\";\n return divider;\n }\n addAltTextButton(button) {\n this.#addListenersToElement(button);\n this.#buttons.prepend(button, this.#divider);\n }\n addColorPicker(colorPicker) {\n this.#colorPicker = colorPicker;\n const button = colorPicker.renderButton();\n this.#addListenersToElement(button);\n this.#buttons.prepend(button, this.#divider);\n }\n remove() {\n this.#toolbar.remove();\n this.#colorPicker?.destroy();\n this.#colorPicker = null;\n }\n}\nclass HighlightToolbar {\n #buttons = null;\n #toolbar = null;\n #uiManager;\n constructor(uiManager) {\n this.#uiManager = uiManager;\n }\n #render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.className = \"editToolbar\";\n editToolbar.setAttribute(\"role\", \"toolbar\");\n editToolbar.addEventListener(\"contextmenu\", _display_utils_js__WEBPACK_IMPORTED_MODULE_0__.noContextMenu);\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n this.#addHighlightButton();\n return editToolbar;\n }\n #getLastPoint(boxes, isLTR) {\n let lastY = 0;\n let lastX = 0;\n for (const box of boxes) {\n const y = box.y + box.height;\n if (y < lastY) {\n continue;\n }\n const x = box.x + (isLTR ? box.width : 0);\n if (y > lastY) {\n lastX = x;\n lastY = y;\n continue;\n }\n if (isLTR) {\n if (x > lastX) {\n lastX = x;\n }\n } else if (x < lastX) {\n lastX = x;\n }\n }\n return [isLTR ? 1 - lastX : lastX, lastY];\n }\n show(parent, boxes, isLTR) {\n const [x, y] = this.#getLastPoint(boxes, isLTR);\n const {\n style\n } = this.#toolbar ||= this.#render();\n parent.append(this.#toolbar);\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * y}% + var(--editor-toolbar-vert-offset))`;\n }\n hide() {\n this.#toolbar.remove();\n }\n #addHighlightButton() {\n const button = document.createElement(\"button\");\n button.className = \"highlightButton\";\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", `pdfjs-highlight-floating-button1`);\n const span = document.createElement(\"span\");\n button.append(span);\n span.className = \"visuallyHidden\";\n span.setAttribute(\"data-l10n-id\", \"pdfjs-highlight-floating-button-label\");\n button.addEventListener(\"contextmenu\", _display_utils_js__WEBPACK_IMPORTED_MODULE_0__.noContextMenu);\n button.addEventListener(\"click\", () => {\n this.#uiManager.highlightSelection(\"floating_button\");\n });\n this.#buttons.append(button);\n }\n}\n\n\n/***/ }),\n\n/***/ 830:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AnnotationEditorUIManager: () => (/* binding */ AnnotationEditorUIManager),\n/* harmony export */ ColorManager: () => (/* binding */ ColorManager),\n/* harmony export */ KeyboardManager: () => (/* binding */ KeyboardManager),\n/* harmony export */ bindEvents: () => (/* binding */ bindEvents),\n/* harmony export */ opacityToHex: () => (/* binding */ opacityToHex)\n/* harmony export */ });\n/* unused harmony export CommandManager */\n/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(292);\n/* harmony import */ var _display_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(419);\n/* harmony import */ var _toolbar_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(362);\n\n\n\nfunction bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\nfunction opacityToHex(opacity) {\n return Math.round(Math.min(255, Math.max(1, 255 * opacity))).toString(16).padStart(2, \"0\");\n}\nclass IdManager {\n #id = 0;\n constructor() {}\n get id() {\n return `${_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorPrefix}${this.#id++}`;\n }\n}\nclass ImageManager {\n #baseId = (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.getUuid)();\n #id = 0;\n #cache = null;\n static get _isSVGFittingCanvas() {\n const svg = `data:image/svg+xml;charset=UTF-8,<svg viewBox=\"0 0 1 1\" width=\"1\" height=\"1\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"1\" height=\"1\" style=\"fill:red;\"/></svg>`;\n const canvas = new OffscreenCanvas(1, 3);\n const ctx = canvas.getContext(\"2d\");\n const image = new Image();\n image.src = svg;\n const promise = image.decode().then(() => {\n ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\n return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\n });\n return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, \"_isSVGFittingCanvas\", promise);\n }\n async #get(key, rawData) {\n this.#cache ||= new Map();\n let data = this.#cache.get(key);\n if (data === null) {\n return null;\n }\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n try {\n data ||= {\n bitmap: null,\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 0,\n isSvg: false\n };\n let image;\n if (typeof rawData === \"string\") {\n data.url = rawData;\n image = await (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_1__.fetchData)(rawData, \"blob\");\n } else {\n image = data.file = rawData;\n }\n if (image.type === \"image/svg+xml\") {\n const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n const fileReader = new FileReader();\n const imageElement = new Image();\n const imagePromise = new Promise((resolve, reject) => {\n imageElement.onload = () => {\n data.bitmap = imageElement;\n data.isSvg = true;\n resolve();\n };\n fileReader.onload = async () => {\n const url = data.svgUrl = fileReader.result;\n imageElement.src = (await mustRemoveAspectRatioPromise) ? `${url}#svgView(preserveAspectRatio(none))` : url;\n };\n imageElement.onerror = fileReader.onerror = reject;\n });\n fileReader.readAsDataURL(image);\n await imagePromise;\n } else {\n data.bitmap = await createImageBitmap(image);\n }\n data.refCounter = 1;\n } catch (e) {\n console.error(e);\n data = null;\n }\n this.#cache.set(key, data);\n if (data) {\n this.#cache.set(data.id, data);\n }\n return data;\n }\n async getFromFile(file) {\n const {\n lastModified,\n name,\n size,\n type\n } = file;\n return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n }\n async getFromUrl(url) {\n return this.#get(url, url);\n }\n async getFromId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return null;\n }\n if (data.bitmap) {\n data.refCounter += 1;\n return data;\n }\n if (data.file) {\n return this.getFromFile(data.file);\n }\n return this.getFromUrl(data.url);\n }\n getSvgUrl(id) {\n const data = this.#cache.get(id);\n if (!data?.isSvg) {\n return null;\n }\n return data.svgUrl;\n }\n deleteId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return;\n }\n data.refCounter -= 1;\n if (data.refCounter !== 0) {\n return;\n }\n data.bitmap = null;\n }\n isValidId(id) {\n return id.startsWith(`image_${this.#baseId}_`);\n }\n}\nclass CommandManager {\n #commands = [];\n #locked = false;\n #maxSize;\n #position = -1;\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n add({\n cmd,\n undo,\n post,\n mustExec,\n type = NaN,\n overwriteIfSameType = false,\n keepUndo = false\n }) {\n if (mustExec) {\n cmd();\n }\n if (this.#locked) {\n return;\n }\n const save = {\n cmd,\n undo,\n post,\n type\n };\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n this.#commands.length = 0;\n }\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n this.#commands[this.#position] = save;\n return;\n }\n const next = this.#position + 1;\n if (next === this.#maxSize) {\n this.#commands.splice(0, 1);\n } else {\n this.#position = next;\n if (next < this.#commands.length) {\n this.#commands.splice(next);\n }\n }\n this.#commands.push(save);\n }\n undo() {\n if (this.#position === -1) {\n return;\n }\n this.#locked = true;\n const {\n undo,\n post\n } = this.#commands[this.#position];\n undo();\n post?.();\n this.#locked = false;\n this.#position -= 1;\n }\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n this.#locked = true;\n const {\n cmd,\n post\n } = this.#commands[this.#position];\n cmd();\n post?.();\n this.#locked = false;\n }\n }\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n destroy() {\n this.#commands = null;\n }\n}\nclass KeyboardManager {\n constructor(callbacks) {\n this.buffer = [];\n this.callbacks = new Map();\n this.allKeys = new Set();\n const {\n isMac\n } = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.FeatureTest.platform;\n for (const [keys, callback, options = {}] of callbacks) {\n for (const key of keys) {\n const isMacKey = key.startsWith(\"mac+\");\n if (isMac && isMacKey) {\n this.callbacks.set(key.slice(4), {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n } else if (!isMac && !isMacKey) {\n this.callbacks.set(key, {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n }\n }\n }\n }\n #serialize(event) {\n if (event.altKey) {\n this.buffer.push(\"alt\");\n }\n if (event.ctrlKey) {\n this.buffer.push(\"ctrl\");\n }\n if (event.metaKey) {\n this.buffer.push(\"meta\");\n }\n if (event.shiftKey) {\n this.buffer.push(\"shift\");\n }\n this.buffer.push(event.key);\n const str = this.buffer.join(\"+\");\n this.buffer.length = 0;\n return str;\n }\n exec(self, event) {\n if (!this.allKeys.has(event.key)) {\n return;\n }\n const info = this.callbacks.get(this.#serialize(event));\n if (!info) {\n return;\n }\n const {\n callback,\n options: {\n bubbles = false,\n args = [],\n checker = null\n }\n } = info;\n if (checker && !checker(self, event)) {\n return;\n }\n callback.bind(self, ...args, event)();\n if (!bubbles) {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n}\nclass ColorManager {\n static _colorsMapping = new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]);\n get _colors() {\n const colors = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_1__.getColorValues)(colors);\n return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, \"_colors\", colors);\n }\n convert(color) {\n const rgb = (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_1__.getRGB)(color);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\n for (const [name, RGB] of this._colors) {\n if (RGB.every((x, i) => x === rgb[i])) {\n return ColorManager._colorsMapping.get(name);\n }\n }\n return rgb;\n }\n getHexCode(name) {\n const rgb = this._colors.get(name);\n if (!rgb) {\n return name;\n }\n return _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.Util.makeHexColor(...rgb);\n }\n}\nclass AnnotationEditorUIManager {\n #activeEditor = null;\n #allEditors = new Map();\n #allLayers = new Map();\n #altTextManager = null;\n #annotationStorage = null;\n #changedExistingAnnotations = null;\n #commandManager = new CommandManager();\n #currentPageIndex = 0;\n #deletedAnnotationsElementIds = new Set();\n #draggingEditors = null;\n #editorTypes = null;\n #editorsToRescale = new Set();\n #enableHighlightFloatingButton = false;\n #filterFactory = null;\n #focusMainContainerTimeoutId = null;\n #highlightColors = null;\n #highlightWhenShiftUp = false;\n #highlightToolbar = null;\n #idManager = new IdManager();\n #isEnabled = false;\n #isWaiting = false;\n #lastActiveElement = null;\n #mainHighlightColorPicker = null;\n #mlManager = null;\n #mode = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorType.NONE;\n #selectedEditors = new Set();\n #selectedTextNode = null;\n #pageColors = null;\n #showAllStates = null;\n #boundBlur = this.blur.bind(this);\n #boundFocus = this.focus.bind(this);\n #boundCopy = this.copy.bind(this);\n #boundCut = this.cut.bind(this);\n #boundPaste = this.paste.bind(this);\n #boundKeydown = this.keydown.bind(this);\n #boundKeyup = this.keyup.bind(this);\n #boundOnEditingAction = this.onEditingAction.bind(this);\n #boundOnPageChanging = this.onPageChanging.bind(this);\n #boundOnScaleChanging = this.onScaleChanging.bind(this);\n #boundSelectionChange = this.#selectionChange.bind(this);\n #boundOnRotationChanging = this.onRotationChanging.bind(this);\n #previousStates = {\n isEditing: false,\n isEmpty: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false,\n hasSelectedText: false\n };\n #translation = [0, 0];\n #translationTimeoutId = null;\n #container = null;\n #viewer = null;\n static TRANSLATE_SMALL = 1;\n static TRANSLATE_BIG = 10;\n static get _keyboardManager() {\n const proto = AnnotationEditorUIManager.prototype;\n const arrowChecker = self => self.#container.contains(document.activeElement) && document.activeElement.tagName !== \"BUTTON\" && self.hasSomethingToControl();\n const textInputChecker = (_self, {\n target: el\n }) => {\n if (el instanceof HTMLInputElement) {\n const {\n type\n } = el;\n return type !== \"text\" && type !== \"number\";\n }\n return true;\n };\n const small = this.TRANSLATE_SMALL;\n const big = this.TRANSLATE_BIG;\n return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], proto.selectAll, {\n checker: textInputChecker\n }], [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, {\n checker: textInputChecker\n }], [[\"ctrl+y\", \"ctrl+shift+z\", \"mac+meta+shift+z\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], proto.redo, {\n checker: textInputChecker\n }], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\", \"mac+Delete\"], proto.delete, {\n checker: textInputChecker\n }], [[\"Enter\", \"mac+Enter\"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(el) && !self.isEnterHandled\n }], [[\" \", \"mac+ \"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(document.activeElement)\n }], [[\"Escape\", \"mac+Escape\"], proto.unselectAll], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto.translateSelectedEditors, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto.translateSelectedEditors, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n constructor(container, viewer, altTextManager, eventBus, pdfDocument, pageColors, highlightColors, enableHighlightFloatingButton, mlManager) {\n this.#container = container;\n this.#viewer = viewer;\n this.#altTextManager = altTextManager;\n this._eventBus = eventBus;\n this._eventBus._on(\"editingaction\", this.#boundOnEditingAction);\n this._eventBus._on(\"pagechanging\", this.#boundOnPageChanging);\n this._eventBus._on(\"scalechanging\", this.#boundOnScaleChanging);\n this._eventBus._on(\"rotationchanging\", this.#boundOnRotationChanging);\n this.#addSelectionListener();\n this.#addKeyboardManager();\n this.#annotationStorage = pdfDocument.annotationStorage;\n this.#filterFactory = pdfDocument.filterFactory;\n this.#pageColors = pageColors;\n this.#highlightColors = highlightColors || null;\n this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\n this.#mlManager = mlManager || null;\n this.viewParameters = {\n realScale: _display_utils_js__WEBPACK_IMPORTED_MODULE_1__.PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0\n };\n this.isShiftKeyDown = false;\n }\n destroy() {\n this.#removeKeyboardManager();\n this.#removeFocusManager();\n this._eventBus._off(\"editingaction\", this.#boundOnEditingAction);\n this._eventBus._off(\"pagechanging\", this.#boundOnPageChanging);\n this._eventBus._off(\"scalechanging\", this.#boundOnScaleChanging);\n this._eventBus._off(\"rotationchanging\", this.#boundOnRotationChanging);\n for (const layer of this.#allLayers.values()) {\n layer.destroy();\n }\n this.#allLayers.clear();\n this.#allEditors.clear();\n this.#editorsToRescale.clear();\n this.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#commandManager.destroy();\n this.#altTextManager?.destroy();\n this.#highlightToolbar?.hide();\n this.#highlightToolbar = null;\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n this.#focusMainContainerTimeoutId = null;\n }\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n this.#translationTimeoutId = null;\n }\n this.#removeSelectionListener();\n }\n async mlGuess(data) {\n return this.#mlManager?.guess(data) || null;\n }\n get hasMLManager() {\n return !!this.#mlManager;\n }\n get hcmFilter() {\n return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, \"hcmFilter\", this.#pageColors ? this.#filterFactory.addHCMFilter(this.#pageColors.foreground, this.#pageColors.background) : \"none\");\n }\n get direction() {\n return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, \"direction\", getComputedStyle(this.#container).direction);\n }\n get highlightColors() {\n return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, \"highlightColors\", this.#highlightColors ? new Map(this.#highlightColors.split(\",\").map(pair => pair.split(\"=\").map(x => x.trim()))) : null);\n }\n get highlightColorNames() {\n return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, \"highlightColorNames\", this.highlightColors ? new Map(Array.from(this.highlightColors, e => e.reverse())) : null);\n }\n setMainHighlightColorPicker(colorPicker) {\n this.#mainHighlightColorPicker = colorPicker;\n }\n editAltText(editor) {\n this.#altTextManager?.editAltText(this, editor);\n }\n onPageChanging({\n pageNumber\n }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n focusMainContainer() {\n this.#container.focus();\n }\n findParent(x, y) {\n for (const layer of this.#allLayers.values()) {\n const {\n x: layerX,\n y: layerY,\n width,\n height\n } = layer.div.getBoundingClientRect();\n if (x >= layerX && x <= layerX + width && y >= layerY && y <= layerY + height) {\n return layer;\n }\n }\n return null;\n }\n disableUserSelect(value = false) {\n this.#viewer.classList.toggle(\"noUserSelect\", value);\n }\n addShouldRescale(editor) {\n this.#editorsToRescale.add(editor);\n }\n removeShouldRescale(editor) {\n this.#editorsToRescale.delete(editor);\n }\n onScaleChanging({\n scale\n }) {\n this.commitOrRemove();\n this.viewParameters.realScale = scale * _display_utils_js__WEBPACK_IMPORTED_MODULE_1__.PixelsPerInch.PDF_TO_CSS_UNITS;\n for (const editor of this.#editorsToRescale) {\n editor.onScaleChanging();\n }\n }\n onRotationChanging({\n pagesRotation\n }) {\n this.commitOrRemove();\n this.viewParameters.rotation = pagesRotation;\n }\n #getAnchorElementForSelection({\n anchorNode\n }) {\n return anchorNode.nodeType === Node.TEXT_NODE ? anchorNode.parentElement : anchorNode;\n }\n highlightSelection(methodOfCreation = \"\") {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const {\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset\n } = selection;\n const text = selection.toString();\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n selection.empty();\n if (this.#mode === _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorType.NONE) {\n this._eventBus.dispatch(\"showannotationeditorui\", {\n source: this,\n mode: _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorType.HIGHLIGHT\n });\n this.showAllEditors(\"highlight\", true, true);\n }\n for (const layer of this.#allLayers.values()) {\n if (layer.hasTextLayer(textLayer)) {\n layer.createAndAddNewEditor({\n x: 0,\n y: 0\n }, false, {\n methodOfCreation,\n boxes,\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n text\n });\n break;\n }\n }\n }\n #displayHighlightToolbar() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n this.#highlightToolbar ||= new _toolbar_js__WEBPACK_IMPORTED_MODULE_2__.HighlightToolbar(this);\n this.#highlightToolbar.show(textLayer, boxes, this.direction === \"ltr\");\n }\n addToAnnotationStorage(editor) {\n if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) {\n this.#annotationStorage.setValue(editor.id, editor);\n }\n }\n #selectionChange() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n if (this.#selectedTextNode) {\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n const {\n anchorNode\n } = selection;\n if (anchorNode === this.#selectedTextNode) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n if (!textLayer) {\n if (this.#selectedTextNode) {\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = anchorNode;\n this.#dispatchUpdateStates({\n hasSelectedText: true\n });\n if (this.#mode !== _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorType.HIGHLIGHT && this.#mode !== _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorType.NONE) {\n return;\n }\n if (this.#mode === _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorType.HIGHLIGHT) {\n this.showAllEditors(\"highlight\", true, true);\n }\n this.#highlightWhenShiftUp = this.isShiftKeyDown;\n if (!this.isShiftKeyDown) {\n const pointerup = e => {\n if (e.type === \"pointerup\" && e.button !== 0) {\n return;\n }\n window.removeEventListener(\"pointerup\", pointerup);\n window.removeEventListener(\"blur\", pointerup);\n if (e.type === \"pointerup\") {\n this.#onSelectEnd(\"main_toolbar\");\n }\n };\n window.addEventListener(\"pointerup\", pointerup);\n window.addEventListener(\"blur\", pointerup);\n }\n }\n #onSelectEnd(methodOfCreation = \"\") {\n if (this.#mode === _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorType.HIGHLIGHT) {\n this.highlightSelection(methodOfCreation);\n } else if (this.#enableHighlightFloatingButton) {\n this.#displayHighlightToolbar();\n }\n }\n #addSelectionListener() {\n document.addEventListener(\"selectionchange\", this.#boundSelectionChange);\n }\n #removeSelectionListener() {\n document.removeEventListener(\"selectionchange\", this.#boundSelectionChange);\n }\n #addFocusManager() {\n window.addEventListener(\"focus\", this.#boundFocus);\n window.addEventListener(\"blur\", this.#boundBlur);\n }\n #removeFocusManager() {\n window.removeEventListener(\"focus\", this.#boundFocus);\n window.removeEventListener(\"blur\", this.#boundBlur);\n }\n blur() {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n if (!this.hasSelection) {\n return;\n }\n const {\n activeElement\n } = document;\n for (const editor of this.#selectedEditors) {\n if (editor.div.contains(activeElement)) {\n this.#lastActiveElement = [editor, activeElement];\n editor._focusEventsAllowed = false;\n break;\n }\n }\n }\n focus() {\n if (!this.#lastActiveElement) {\n return;\n }\n const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n this.#lastActiveElement = null;\n lastActiveElement.addEventListener(\"focusin\", () => {\n lastEditor._focusEventsAllowed = true;\n }, {\n once: true\n });\n lastActiveElement.focus();\n }\n #addKeyboardManager() {\n window.addEventListener(\"keydown\", this.#boundKeydown);\n window.addEventListener(\"keyup\", this.#boundKeyup);\n }\n #removeKeyboardManager() {\n window.removeEventListener(\"keydown\", this.#boundKeydown);\n window.removeEventListener(\"keyup\", this.#boundKeyup);\n }\n #addCopyPasteListeners() {\n document.addEventListener(\"copy\", this.#boundCopy);\n document.addEventListener(\"cut\", this.#boundCut);\n document.addEventListener(\"paste\", this.#boundPaste);\n }\n #removeCopyPasteListeners() {\n document.removeEventListener(\"copy\", this.#boundCopy);\n document.removeEventListener(\"cut\", this.#boundCut);\n document.removeEventListener(\"paste\", this.#boundPaste);\n }\n addEditListeners() {\n this.#addKeyboardManager();\n this.#addCopyPasteListeners();\n }\n removeEditListeners() {\n this.#removeKeyboardManager();\n this.#removeCopyPasteListeners();\n }\n copy(event) {\n event.preventDefault();\n this.#activeEditor?.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [];\n for (const editor of this.#selectedEditors) {\n const serialized = editor.serialize(true);\n if (serialized) {\n editors.push(serialized);\n }\n }\n if (editors.length === 0) {\n return;\n }\n event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n }\n cut(event) {\n this.copy(event);\n this.delete();\n }\n paste(event) {\n event.preventDefault();\n const {\n clipboardData\n } = event;\n for (const item of clipboardData.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n return;\n }\n }\n }\n let data = clipboardData.getData(\"application/pdfjs\");\n if (!data) {\n return;\n }\n try {\n data = JSON.parse(data);\n } catch (ex) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`paste: \"${ex.message}\".`);\n return;\n }\n if (!Array.isArray(data)) {\n return;\n }\n this.unselectAll();\n const layer = this.currentLayer;\n try {\n const newEditors = [];\n for (const editor of data) {\n const deserializedEditor = layer.deserialize(editor);\n if (!deserializedEditor) {\n return;\n }\n newEditors.push(deserializedEditor);\n }\n const cmd = () => {\n for (const editor of newEditors) {\n this.#addEditorToLayer(editor);\n }\n this.#selectEditors(newEditors);\n };\n const undo = () => {\n for (const editor of newEditors) {\n editor.remove();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n } catch (ex) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`paste: \"${ex.message}\".`);\n }\n }\n keydown(event) {\n if (!this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = true;\n }\n if (this.#mode !== _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorType.NONE && !this.isEditorHandlingKeyboard) {\n AnnotationEditorUIManager._keyboardManager.exec(this, event);\n }\n }\n keyup(event) {\n if (this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n onEditingAction({\n name\n }) {\n switch (name) {\n case \"undo\":\n case \"redo\":\n case \"delete\":\n case \"selectAll\":\n this[name]();\n break;\n case \"highlightSelection\":\n this.highlightSelection(\"context_menu\");\n break;\n }\n }\n #dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);\n if (hasChanged) {\n this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(this.#previousStates, details)\n });\n if (this.#mode === _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorType.HIGHLIGHT && details.hasSelectedEditor === false) {\n this.#dispatchUpdateUI([[_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorParamsType.HIGHLIGHT_FREE, true]]);\n }\n }\n }\n #dispatchUpdateUI(details) {\n this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details\n });\n }\n setEditingState(isEditing) {\n if (isEditing) {\n this.#addFocusManager();\n this.#addCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: this.#mode !== _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorType.NONE,\n isEmpty: this.#isEmpty(),\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n hasSelectedEditor: false\n });\n } else {\n this.#removeFocusManager();\n this.#removeCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: false\n });\n this.disableUserSelect(false);\n }\n }\n registerEditorTypes(types) {\n if (this.#editorTypes) {\n return;\n }\n this.#editorTypes = types;\n for (const editorType of this.#editorTypes) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n }\n getId() {\n return this.#idManager.id;\n }\n get currentLayer() {\n return this.#allLayers.get(this.#currentPageIndex);\n }\n getLayer(pageIndex) {\n return this.#allLayers.get(pageIndex);\n }\n get currentPageIndex() {\n return this.#currentPageIndex;\n }\n addLayer(layer) {\n this.#allLayers.set(layer.pageIndex, layer);\n if (this.#isEnabled) {\n layer.enable();\n } else {\n layer.disable();\n }\n }\n removeLayer(layer) {\n this.#allLayers.delete(layer.pageIndex);\n }\n updateMode(mode, editId = null, isFromKeyboard = false) {\n if (this.#mode === mode) {\n return;\n }\n this.#mode = mode;\n if (mode === _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n return;\n }\n this.setEditingState(true);\n this.#enableAll();\n this.unselectAll();\n for (const layer of this.#allLayers.values()) {\n layer.updateMode(mode);\n }\n if (!editId && isFromKeyboard) {\n this.addNewEditorFromKeyboard();\n return;\n }\n if (!editId) {\n return;\n }\n for (const editor of this.#allEditors.values()) {\n if (editor.annotationElementId === editId) {\n this.setSelected(editor);\n editor.enterInEditMode();\n break;\n }\n }\n }\n addNewEditorFromKeyboard() {\n if (this.currentLayer.canCreateNewEmptyEditor()) {\n this.currentLayer.addNewEditor();\n }\n }\n updateToolbar(mode) {\n if (mode === this.#mode) {\n return;\n }\n this._eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode\n });\n }\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\n switch (type) {\n case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorParamsType.CREATE:\n this.currentLayer.addNewEditor();\n return;\n case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n this.#mainHighlightColorPicker?.updateColor(value);\n break;\n case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\n this._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data: {\n type: \"highlight\",\n action: \"toggle_visibility\"\n }\n }\n });\n (this.#showAllStates ||= new Map()).set(type, value);\n this.showAllEditors(\"highlight\", value);\n break;\n }\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n showAllEditors(type, visible, updateButton = false) {\n for (const editor of this.#allEditors.values()) {\n if (editor.editorType === type) {\n editor.show(visible);\n }\n }\n const state = this.#showAllStates?.get(_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL) ?? true;\n if (state !== visible) {\n this.#dispatchUpdateUI([[_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible]]);\n }\n }\n enableWaiting(mustWait = false) {\n if (this.#isWaiting === mustWait) {\n return;\n }\n this.#isWaiting = mustWait;\n for (const layer of this.#allLayers.values()) {\n if (mustWait) {\n layer.disableClick();\n } else {\n layer.enableClick();\n }\n layer.div.classList.toggle(\"waiting\", mustWait);\n }\n }\n #enableAll() {\n if (!this.#isEnabled) {\n this.#isEnabled = true;\n for (const layer of this.#allLayers.values()) {\n layer.enable();\n }\n for (const editor of this.#allEditors.values()) {\n editor.enable();\n }\n }\n }\n #disableAll() {\n this.unselectAll();\n if (this.#isEnabled) {\n this.#isEnabled = false;\n for (const layer of this.#allLayers.values()) {\n layer.disable();\n }\n for (const editor of this.#allEditors.values()) {\n editor.disable();\n }\n }\n }\n getEditors(pageIndex) {\n const editors = [];\n for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n editors.push(editor);\n }\n }\n return editors;\n }\n getEditor(id) {\n return this.#allEditors.get(id);\n }\n addEditor(editor) {\n this.#allEditors.set(editor.id, editor);\n }\n removeEditor(editor) {\n if (editor.div.contains(document.activeElement)) {\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n }\n this.#focusMainContainerTimeoutId = setTimeout(() => {\n this.focusMainContainer();\n this.#focusMainContainerTimeoutId = null;\n }, 0);\n }\n this.#allEditors.delete(editor.id);\n this.unselect(editor);\n if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) {\n this.#annotationStorage?.remove(editor.id);\n }\n }\n addDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n this.addChangedExistingAnnotation(editor);\n editor.deleted = true;\n }\n isDeletedAnnotationElement(annotationElementId) {\n return this.#deletedAnnotationsElementIds.has(annotationElementId);\n }\n removeDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n this.removeChangedExistingAnnotation(editor);\n editor.deleted = false;\n }\n #addEditorToLayer(editor) {\n const layer = this.#allLayers.get(editor.pageIndex);\n if (layer) {\n layer.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n }\n }\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n this.#activeEditor = editor;\n if (editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n get #lastSelectedEditor() {\n let ed = null;\n for (ed of this.#selectedEditors) {}\n return ed;\n }\n updateUI(editor) {\n if (this.#lastSelectedEditor === editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n toggleSelected(editor) {\n if (this.#selectedEditors.has(editor)) {\n this.#selectedEditors.delete(editor);\n editor.unselect();\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n return;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n setSelected(editor) {\n for (const ed of this.#selectedEditors) {\n if (ed !== editor) {\n ed.unselect();\n }\n }\n this.#selectedEditors.clear();\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n isSelected(editor) {\n return this.#selectedEditors.has(editor);\n }\n get firstSelectedEditor() {\n return this.#selectedEditors.values().next().value;\n }\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n get isEnterHandled() {\n return this.#selectedEditors.size === 1 && this.firstSelectedEditor.isEnterHandled;\n }\n undo() {\n this.#commandManager.undo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: this.#isEmpty()\n });\n }\n redo() {\n this.#commandManager.redo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n isEmpty: this.#isEmpty()\n });\n }\n addCommands(params) {\n this.#commandManager.add(params);\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: false,\n isEmpty: this.#isEmpty()\n });\n }\n #isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n return false;\n }\n delete() {\n this.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [...this.#selectedEditors];\n const cmd = () => {\n for (const editor of editors) {\n editor.remove();\n }\n };\n const undo = () => {\n for (const editor of editors) {\n this.#addEditorToLayer(editor);\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n commitOrRemove() {\n this.#activeEditor?.commitOrRemove();\n }\n hasSomethingToControl() {\n return this.#activeEditor || this.hasSelection;\n }\n #selectEditors(editors) {\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n for (const editor of editors) {\n if (editor.isEmpty()) {\n continue;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n }\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n this.#selectEditors(this.#allEditors.values());\n }\n unselectAll() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n if (this.#mode !== _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorType.NONE) {\n return;\n }\n }\n if (!this.hasSelection) {\n return;\n }\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n this.#dispatchUpdateStates({\n hasSelectedEditor: false\n });\n }\n translateSelectedEditors(x, y, noCommit = false) {\n if (!noCommit) {\n this.commitOrRemove();\n }\n if (!this.hasSelection) {\n return;\n }\n this.#translation[0] += x;\n this.#translation[1] += y;\n const [totalX, totalY] = this.#translation;\n const editors = [...this.#selectedEditors];\n const TIME_TO_WAIT = 1000;\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n }\n this.#translationTimeoutId = setTimeout(() => {\n this.#translationTimeoutId = null;\n this.#translation[0] = this.#translation[1] = 0;\n this.addCommands({\n cmd: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(totalX, totalY);\n }\n }\n },\n undo: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(-totalX, -totalY);\n }\n }\n },\n mustExec: false\n });\n }, TIME_TO_WAIT);\n for (const editor of editors) {\n editor.translateInPage(x, y);\n }\n }\n setUpDragSession() {\n if (!this.hasSelection) {\n return;\n }\n this.disableUserSelect(true);\n this.#draggingEditors = new Map();\n for (const editor of this.#selectedEditors) {\n this.#draggingEditors.set(editor, {\n savedX: editor.x,\n savedY: editor.y,\n savedPageIndex: editor.pageIndex,\n newX: 0,\n newY: 0,\n newPageIndex: -1\n });\n }\n }\n endDragSession() {\n if (!this.#draggingEditors) {\n return false;\n }\n this.disableUserSelect(false);\n const map = this.#draggingEditors;\n this.#draggingEditors = null;\n let mustBeAddedInUndoStack = false;\n for (const [{\n x,\n y,\n pageIndex\n }, value] of map) {\n value.newX = x;\n value.newY = y;\n value.newPageIndex = pageIndex;\n mustBeAddedInUndoStack ||= x !== value.savedX || y !== value.savedY || pageIndex !== value.savedPageIndex;\n }\n if (!mustBeAddedInUndoStack) {\n return false;\n }\n const move = (editor, x, y, pageIndex) => {\n if (this.#allEditors.has(editor.id)) {\n const parent = this.#allLayers.get(pageIndex);\n if (parent) {\n editor._setParentAndPosition(parent, x, y);\n } else {\n editor.pageIndex = pageIndex;\n editor.x = x;\n editor.y = y;\n }\n }\n };\n this.addCommands({\n cmd: () => {\n for (const [editor, {\n newX,\n newY,\n newPageIndex\n }] of map) {\n move(editor, newX, newY, newPageIndex);\n }\n },\n undo: () => {\n for (const [editor, {\n savedX,\n savedY,\n savedPageIndex\n }] of map) {\n move(editor, savedX, savedY, savedPageIndex);\n }\n },\n mustExec: true\n });\n return true;\n }\n dragSelectedEditors(tx, ty) {\n if (!this.#draggingEditors) {\n return;\n }\n for (const editor of this.#draggingEditors.keys()) {\n editor.drag(tx, ty);\n }\n }\n rebuild(editor) {\n if (editor.parent === null) {\n const parent = this.getLayer(editor.pageIndex);\n if (parent) {\n parent.changeParent(editor);\n parent.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n editor.rebuild();\n }\n } else {\n editor.parent.addOrRebuild(editor);\n }\n }\n get isEditorHandlingKeyboard() {\n return this.getActive()?.shouldGetKeyboardEvents() || this.#selectedEditors.size === 1 && this.firstSelectedEditor.shouldGetKeyboardEvents();\n }\n isActive(editor) {\n return this.#activeEditor === editor;\n }\n getActive() {\n return this.#activeEditor;\n }\n getMode() {\n return this.#mode;\n }\n get imageManager() {\n return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, \"imageManager\", new ImageManager());\n }\n getSelectionBoxes(textLayer) {\n if (!textLayer) {\n return null;\n }\n const selection = document.getSelection();\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n if (!textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)) {\n return null;\n }\n }\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n let rotator;\n switch (textLayer.getAttribute(\"data-main-rotation\")) {\n case \"90\":\n rotator = (x, y, w, h) => ({\n x: (y - layerY) / parentHeight,\n y: 1 - (x + w - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n case \"180\":\n rotator = (x, y, w, h) => ({\n x: 1 - (x + w - layerX) / parentWidth,\n y: 1 - (y + h - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n case \"270\":\n rotator = (x, y, w, h) => ({\n x: 1 - (y + h - layerY) / parentHeight,\n y: (x - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n default:\n rotator = (x, y, w, h) => ({\n x: (x - layerX) / parentWidth,\n y: (y - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n }\n const boxes = [];\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n const range = selection.getRangeAt(i);\n if (range.collapsed) {\n continue;\n }\n for (const {\n x,\n y,\n width,\n height\n } of range.getClientRects()) {\n if (width === 0 || height === 0) {\n continue;\n }\n boxes.push(rotator(x, y, width, height));\n }\n }\n return boxes.length === 0 ? null : boxes;\n }\n addChangedExistingAnnotation({\n annotationElementId,\n id\n }) {\n (this.#changedExistingAnnotations ||= new Map()).set(annotationElementId, id);\n }\n removeChangedExistingAnnotation({\n annotationElementId\n }) {\n this.#changedExistingAnnotations?.delete(annotationElementId);\n }\n renderAnnotationElement(annotation) {\n const editorId = this.#changedExistingAnnotations?.get(annotation.data.id);\n if (!editorId) {\n return;\n }\n const editor = this.#annotationStorage.getRawValue(editorId);\n if (!editor) {\n return;\n }\n if (this.#mode === _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorType.NONE && !editor.hasBeenModified) {\n return;\n }\n editor.renderAnnotationElement(annotation);\n }\n}\n\n\n/***/ }),\n\n/***/ 94:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PDFFetchStream: () => (/* binding */ PDFFetchStream)\n/* harmony export */ });\n/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(292);\n/* harmony import */ var _network_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(490);\n\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n };\n}\nfunction createHeaders(httpHeaders) {\n const headers = new Headers();\n for (const property in httpHeaders) {\n const value = httpHeaders[property];\n if (value === undefined) {\n continue;\n }\n headers.append(property, value);\n }\n return headers;\n}\nfunction getArrayBuffer(val) {\n if (val instanceof Uint8Array) {\n return val.buffer;\n }\n if (val instanceof ArrayBuffer) {\n return val;\n }\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`getArrayBuffer - unexpected data format: ${val}`);\n return new Uint8Array(val).buffer;\n}\nclass PDFFetchStream {\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.httpHeaders = this.isHttp && source.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._abortController = new AbortController();\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._headers = createHeaders(this._stream.httpHeaders);\n const url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {\n if (!(0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.validateResponseStatus)(response.status)) {\n throw (0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.createResponseStatusError)(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n const getResponseHeader = name => response.headers.get(name);\n const {\n allowRangeRequests,\n suggestedLength\n } = (0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.validateRangeRequestCapabilities)({\n getResponseHeader,\n isHttp: this._stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = (0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.extractFilenameFromHeader)(getResponseHeader);\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AbortException(\"Streaming is disabled.\"));\n }\n }).catch(this._headersCapability.reject);\n this.onProgress = null;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = Promise.withResolvers();\n this._isStreamingSupported = !source.disableStream;\n this._abortController = new AbortController();\n this._headers = createHeaders(this._stream.httpHeaders);\n this._headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n const url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {\n if (!(0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.validateResponseStatus)(response.status)) {\n throw (0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.createResponseStatusError)(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n }).catch(this._readCapability.reject);\n this.onProgress = null;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\n\n/***/ }),\n\n/***/ 10:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ FontFaceObject: () => (/* binding */ FontFaceObject),\n/* harmony export */ FontLoader: () => (/* binding */ FontLoader)\n/* harmony export */ });\n/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(292);\n\nclass FontLoader {\n #systemFonts = new Set();\n constructor({\n ownerDocument = globalThis.document,\n styleElement = null\n }) {\n this._document = ownerDocument;\n this.nativeFontFaces = new Set();\n this.styleElement = null;\n this.loadingRequests = [];\n this.loadTestFontId = 0;\n }\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.add(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n removeNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.delete(nativeFontFace);\n this._document.fonts.delete(nativeFontFace);\n }\n insertRule(rule) {\n if (!this.styleElement) {\n this.styleElement = this._document.createElement(\"style\");\n this._document.documentElement.getElementsByTagName(\"head\")[0].append(this.styleElement);\n }\n const styleSheet = this.styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.clear();\n this.#systemFonts.clear();\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n async loadSystemFont({\n systemFontInfo: info,\n _inspectFont\n }) {\n if (!info || this.#systemFonts.has(info.loadedName)) {\n return;\n }\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(!this.disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n if (this.isFontLoadingAPISupported) {\n const {\n loadedName,\n src,\n style\n } = info;\n const fontFace = new FontFace(loadedName, src, style);\n this.addNativeFontFace(fontFace);\n try {\n await fontFace.load();\n this.#systemFonts.add(loadedName);\n _inspectFont?.(info);\n } catch {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`);\n this.removeNativeFontFace(fontFace);\n }\n return;\n }\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)(\"Not implemented: loadSystemFont without the Font Loading API.\");\n }\n async bind(font) {\n if (font.attached || font.missingFile && !font.systemFontInfo) {\n return;\n }\n font.attached = true;\n if (font.systemFontInfo) {\n await this.loadSystemFont(font);\n return;\n }\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n font.disableFontFace = true;\n throw ex;\n }\n }\n return;\n }\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n if (this.isSyncFontLoadingSupported) {\n return;\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent(font, request);\n });\n }\n }\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n get isSyncFontLoadingSupported() {\n let supported = false;\n if (_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS) {\n supported = true;\n } else if (typeof navigator !== \"undefined\" && typeof navigator?.userAgent === \"string\" && /Mozilla\\/5.0.*?rv:\\d+.*? Gecko/.test(navigator.userAgent)) {\n supported = true;\n }\n return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, \"isSyncFontLoadingSupported\", supported);\n }\n _queueLoadingCallback(callback) {\n function completeRequest() {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n while (loadingRequests.length > 0 && loadingRequests[0].done) {\n const otherRequest = loadingRequests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n const {\n loadingRequests\n } = this;\n const request = {\n done: false,\n complete: completeRequest,\n callback\n };\n loadingRequests.push(request);\n return request;\n }\n get _loadTestFont() {\n const testFont = atob(\"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==\");\n return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, \"_loadTestFont\", testFont);\n }\n _prepareFontLoadEvent(font, request) {\n function int32(data, offset) {\n return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n }\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n let called = 0;\n function isFontReady(name, callback) {\n if (++called > 30) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(\"Load test font never loaded.\");\n callback();\n return;\n }\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976;\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858;\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n }\n if (i < loadTestFontId.length) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.string32)(checksum));\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n const div = this._document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n for (const name of [font.loadedName, loadTestFontId]) {\n const span = this._document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.append(span);\n }\n this._document.body.append(div);\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n }\n}\nclass FontFaceObject {\n constructor(translatedData, {\n disableFontFace = false,\n ignoreErrors = false,\n inspectFont = null\n }) {\n this.compiledGlyphs = Object.create(null);\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n this.disableFontFace = disableFontFace === true;\n this.ignoreErrors = ignoreErrors === true;\n this._inspectFont = inspectFont;\n }\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);\n }\n this._inspectFont?.(this);\n return nativeFontFace;\n }\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const data = (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.bytesToString)(this.data);\n const url = `url(data:${this.mimetype};base64,${btoa(data)});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n this._inspectFont?.(this, url);\n return rule;\n }\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n let cmds;\n try {\n cmds = objs.get(this.loadedName + \"_path_\" + character);\n } catch (ex) {\n if (!this.ignoreErrors) {\n throw ex;\n }\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`getPathGenerator - ignoring character: \"${ex}\".`);\n }\n if (!Array.isArray(cmds) || cmds.length === 0) {\n return this.compiledGlyphs[character] = function (c, size) {};\n }\n const commands = [];\n for (let i = 0, ii = cmds.length; i < ii;) {\n switch (cmds[i++]) {\n case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.FontRenderOps.BEZIER_CURVE_TO:\n {\n const [a, b, c, d, e, f] = cmds.slice(i, i + 6);\n commands.push(ctx => ctx.bezierCurveTo(a, b, c, d, e, f));\n i += 6;\n }\n break;\n case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.FontRenderOps.MOVE_TO:\n {\n const [a, b] = cmds.slice(i, i + 2);\n commands.push(ctx => ctx.moveTo(a, b));\n i += 2;\n }\n break;\n case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.FontRenderOps.LINE_TO:\n {\n const [a, b] = cmds.slice(i, i + 2);\n commands.push(ctx => ctx.lineTo(a, b));\n i += 2;\n }\n break;\n case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.FontRenderOps.QUADRATIC_CURVE_TO:\n {\n const [a, b, c, d] = cmds.slice(i, i + 4);\n commands.push(ctx => ctx.quadraticCurveTo(a, b, c, d));\n i += 4;\n }\n break;\n case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.FontRenderOps.RESTORE:\n commands.push(ctx => ctx.restore());\n break;\n case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.FontRenderOps.SAVE:\n commands.push(ctx => ctx.save());\n break;\n case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.FontRenderOps.SCALE:\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(commands.length === 2, \"Scale command is only valid at the third position.\");\n break;\n case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.FontRenderOps.TRANSFORM:\n {\n const [a, b, c, d, e, f] = cmds.slice(i, i + 6);\n commands.push(ctx => ctx.transform(a, b, c, d, e, f));\n i += 6;\n }\n break;\n case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.FontRenderOps.TRANSLATE:\n {\n const [a, b] = cmds.slice(i, i + 2);\n commands.push(ctx => ctx.translate(a, b));\n i += 2;\n }\n break;\n }\n }\n return this.compiledGlyphs[character] = function glyphDrawer(ctx, size) {\n commands[0](ctx);\n commands[1](ctx);\n ctx.scale(size, -size);\n for (let i = 2, ii = commands.length; i < ii; i++) {\n commands[i](ctx);\n }\n };\n }\n}\n\n\n/***/ }),\n\n/***/ 62:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Metadata: () => (/* binding */ Metadata)\n/* harmony export */ });\n/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(292);\n\nclass Metadata {\n #metadataMap;\n #data;\n constructor({\n parsedData,\n rawData\n }) {\n this.#metadataMap = parsedData;\n this.#data = rawData;\n }\n getRaw() {\n return this.#data;\n }\n get(name) {\n return this.#metadataMap.get(name) ?? null;\n }\n getAll() {\n return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.objectFromMap)(this.#metadataMap);\n }\n has(name) {\n return this.#metadataMap.has(name);\n }\n}\n\n\n/***/ }),\n\n/***/ 457:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PDFNetworkStream: () => (/* binding */ PDFNetworkStream)\n/* harmony export */ });\n/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(292);\n/* harmony import */ var _network_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(490);\n\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\nfunction getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.stringToBytes)(data).buffer;\n}\nclass NetworkManager {\n constructor(url, args = {}) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.httpHeaders = this.isHttp && args.httpHeaders || Object.create(null);\n this.withCredentials = args.withCredentials || false;\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n requestRange(begin, end, listeners) {\n const args = {\n begin,\n end\n };\n for (const prop in listeners) {\n args[prop] = listeners[prop];\n }\n return this.request(args);\n }\n requestFull(listeners) {\n return this.request(listeners);\n }\n request(args) {\n const xhr = new XMLHttpRequest();\n const xhrId = this.currXhrId++;\n const pendingRequest = this.pendingRequests[xhrId] = {\n xhr\n };\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const property in this.httpHeaders) {\n const value = this.httpHeaders[property];\n if (value === undefined) {\n continue;\n }\n xhr.setRequestHeader(property, value);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n if (args.onError) {\n xhr.onerror = function (evt) {\n args.onError(xhr.status);\n };\n }\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n xhr.send(null);\n return xhrId;\n }\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n pendingRequest.onProgress?.(evt);\n }\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n if (xhr.readyState !== 4) {\n return;\n }\n if (!(xhrId in this.pendingRequests)) {\n return;\n }\n delete this.pendingRequests[xhrId];\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const chunk = getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk\n });\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk\n });\n } else {\n pendingRequest.onError?.(xhr.status);\n }\n }\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source.url, {\n httpHeaders: source.httpHeaders,\n withCredentials: source.withCredentials\n });\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n getFullReader() {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n const args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersReceivedCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n this.onProgress = null;\n }\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n const getResponseHeader = name => fullRequestXhr.getResponseHeader(name);\n const {\n allowRangeRequests,\n suggestedLength\n } = (0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.validateRangeRequestCapabilities)({\n getResponseHeader,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = (0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.extractFilenameFromHeader)(getResponseHeader);\n if (this._isRangeSupported) {\n this._manager.abortRequest(fullRequestXhrId);\n }\n this._headersReceivedCapability.resolve();\n }\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: data.chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n _onError(status) {\n this._storedError = (0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.createResponseStatusError)(status, this._url);\n this._headersReceivedCapability.reject(this._storedError);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength\n });\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n get contentLength() {\n return this._contentLength;\n }\n get headersReady() {\n return this._headersReceivedCapability.promise;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n this._headersReceivedCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n }\n}\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n const args = {\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = manager.url;\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n this.onProgress = null;\n this.onClosed = null;\n }\n _close() {\n this.onClosed?.(this);\n }\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._close();\n }\n _onError(status) {\n this._storedError = (0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.createResponseStatusError)(status, this._url);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({\n loaded: evt.loaded\n });\n }\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n }\n}\n\n\n/***/ }),\n\n/***/ 490:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n createResponseStatusError: () => (/* binding */ createResponseStatusError),\n extractFilenameFromHeader: () => (/* binding */ extractFilenameFromHeader),\n validateRangeRequestCapabilities: () => (/* binding */ validateRangeRequestCapabilities),\n validateResponseStatus: () => (/* binding */ validateResponseStatus)\n});\n\n// EXTERNAL MODULE: ./src/shared/util.js\nvar util = __webpack_require__(292);\n;// CONCATENATED MODULE: ./src/display/content_disposition.js\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = (0,util.stringToBytes)(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch {}\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n if (n in matches) {\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n break;\n }\n let [quot, part] = matches[n];\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1;\n }\n parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n return value.replaceAll(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replaceAll(\"_\", \" \");\n text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n try {\n text = atob(text);\n } catch {}\n return textdecode(charset, text);\n });\n }\n return \"\";\n}\n\n// EXTERNAL MODULE: ./src/display/display_utils.js\nvar display_utils = __webpack_require__(419);\n;// CONCATENATED MODULE: ./src/display/network_utils.js\n\n\n\nfunction validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp,\n rangeChunkSize,\n disableRange\n}) {\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined\n };\n const length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n returnValues.suggestedLength = length;\n if (length <= 2 * rangeChunkSize) {\n return returnValues;\n }\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n const contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\nfunction extractFilenameFromHeader(getResponseHeader) {\n const contentDisposition = getResponseHeader(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch {}\n }\n if ((0,display_utils.isPdfFile)(filename)) {\n return filename;\n }\n }\n return null;\n}\nfunction createResponseStatusError(status, url) {\n if (status === 404 || status === 0 && url.startsWith(\"file:\")) {\n return new util.MissingPDFException('Missing PDF \"' + url + '\".');\n }\n return new util.UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status);\n}\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\n\n/***/ }),\n\n/***/ 786:\n/***/ ((__webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PDFNodeStream: () => (/* binding */ PDFNodeStream)\n/* harmony export */ });\n/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(292);\n/* harmony import */ var _network_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(490);\n\n\nlet fs, http, https, url;\nif (_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS) {\n fs = await import( /*webpackIgnore: true*/\"fs\");\n http = await import( /*webpackIgnore: true*/\"http\");\n https = await import( /*webpackIgnore: true*/\"https\");\n url = await import( /*webpackIgnore: true*/\"url\");\n}\nconst fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\nfunction parseUrl(sourceUrl) {\n const parsedUrl = url.parse(sourceUrl);\n if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n return parsedUrl;\n }\n if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n return url.parse(`file:///${sourceUrl}`);\n }\n if (!parsedUrl.host) {\n parsedUrl.protocol = \"file:\";\n }\n return parsedUrl;\n}\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrl(source.url);\n this.isHttp = this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n this.isFsUrl = this.url.protocol === \"file:\";\n this.httpHeaders = this.isHttp && source.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass BaseFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n this._headersCapability = Promise.withResolvers();\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AbortException(\"streaming is disabled\"));\n }\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nclass BaseRangeReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nfunction createRequestOptions(parsedUrl, headers) {\n return {\n protocol: parsedUrl.protocol,\n auth: parsedUrl.auth,\n host: parsedUrl.hostname,\n port: parsedUrl.port,\n path: parsedUrl.path,\n method: \"GET\",\n headers\n };\n}\nclass PDFNodeStreamFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n this._headersCapability.resolve();\n this._setReadableStream(response);\n const getResponseHeader = name => this._readableStream.headers[name.toLowerCase()];\n const {\n allowRangeRequests,\n suggestedLength\n } = (0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.validateRangeRequestCapabilities)({\n getResponseHeader,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = (0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.extractFilenameFromHeader)(getResponseHeader);\n };\n this._request = null;\n if (this._url.protocol === \"http:\") {\n this._request = http.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);\n } else {\n this._request = https.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);\n }\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n this._headersCapability.reject(reason);\n });\n this._request.end();\n }\n}\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n this._httpHeaders = {};\n for (const property in stream.httpHeaders) {\n const value = stream.httpHeaders[property];\n if (value === undefined) {\n continue;\n }\n this._httpHeaders[property] = value;\n }\n this._httpHeaders.Range = `bytes=${start}-${end - 1}`;\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n return;\n }\n this._setReadableStream(response);\n };\n this._request = null;\n if (this._url.protocol === \"http:\") {\n this._request = http.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n } else {\n this._request = https.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n }\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n });\n this._request.end();\n }\n}\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n let path = decodeURIComponent(this._url.path);\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n fs.promises.lstat(path).then(stat => {\n this._contentLength = stat.size;\n this._setReadableStream(fs.createReadStream(path));\n this._headersCapability.resolve();\n }, error => {\n if (error.code === \"ENOENT\") {\n error = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.MissingPDFException(`Missing PDF \"${path}\".`);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n });\n }\n}\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n let path = decodeURIComponent(this._url.path);\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n this._setReadableStream(fs.createReadStream(path, {\n start,\n end: end - 1\n }));\n }\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } }, 1);\n\n/***/ }),\n\n/***/ 573:\n/***/ ((__webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ NodeCMapReaderFactory: () => (/* binding */ NodeCMapReaderFactory),\n/* harmony export */ NodeCanvasFactory: () => (/* binding */ NodeCanvasFactory),\n/* harmony export */ NodeFilterFactory: () => (/* binding */ NodeFilterFactory),\n/* harmony export */ NodeStandardFontDataFactory: () => (/* binding */ NodeStandardFontDataFactory)\n/* harmony export */ });\n/* harmony import */ var _base_factory_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(583);\n/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(292);\n\n\nlet fs, canvas, path2d;\nif (_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.isNodeJS) {\n fs = await import( /*webpackIgnore: true*/\"fs\");\n try {\n canvas = await import( /*webpackIgnore: true*/\"canvas\");\n } catch {}\n try {\n path2d = await import( /*webpackIgnore: true*/\"path2d\");\n } catch {}\n}\nconst fetchData = function (url) {\n return fs.promises.readFile(url).then(data => new Uint8Array(data));\n};\nclass NodeFilterFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseFilterFactory {}\nclass NodeCanvasFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseCanvasFactory {\n _createCanvas(width, height) {\n return canvas.createCanvas(width, height);\n }\n}\nclass NodeCMapReaderFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n return fetchData(url).then(data => ({\n cMapData: data,\n compressionType\n }));\n }\n}\nclass NodeStandardFontDataFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseStandardFontDataFactory {\n _fetchData(url) {\n return fetchData(url);\n }\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } }, 1);\n\n/***/ }),\n\n/***/ 626:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ OptionalContentConfig: () => (/* binding */ OptionalContentConfig)\n/* harmony export */ });\n/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(292);\n/* harmony import */ var _shared_murmurhash3_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(651);\n\n\nconst INTERNAL = Symbol(\"INTERNAL\");\nclass OptionalContentGroup {\n #isDisplay = false;\n #isPrint = false;\n #userSet = false;\n #visible = true;\n constructor(renderingIntent, {\n name,\n intent,\n usage\n }) {\n this.#isDisplay = !!(renderingIntent & _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.DISPLAY);\n this.#isPrint = !!(renderingIntent & _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.PRINT);\n this.name = name;\n this.intent = intent;\n this.usage = usage;\n }\n get visible() {\n if (this.#userSet) {\n return this.#visible;\n }\n if (!this.#visible) {\n return false;\n }\n const {\n print,\n view\n } = this.usage;\n if (this.#isDisplay) {\n return view?.viewState !== \"OFF\";\n } else if (this.#isPrint) {\n return print?.printState !== \"OFF\";\n }\n return true;\n }\n _setVisible(internal, visible, userSet = false) {\n if (internal !== INTERNAL) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)(\"Internal method `_setVisible` called.\");\n }\n this.#userSet = userSet;\n this.#visible = visible;\n }\n}\nclass OptionalContentConfig {\n #cachedGetHash = null;\n #groups = new Map();\n #initialHash = null;\n #order = null;\n constructor(data, renderingIntent = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.DISPLAY) {\n this.renderingIntent = renderingIntent;\n this.name = null;\n this.creator = null;\n if (data === null) {\n return;\n }\n this.name = data.name;\n this.creator = data.creator;\n this.#order = data.order;\n for (const group of data.groups) {\n this.#groups.set(group.id, new OptionalContentGroup(renderingIntent, group));\n }\n if (data.baseState === \"OFF\") {\n for (const group of this.#groups.values()) {\n group._setVisible(INTERNAL, false);\n }\n }\n for (const on of data.on) {\n this.#groups.get(on)._setVisible(INTERNAL, true);\n }\n for (const off of data.off) {\n this.#groups.get(off)._setVisible(INTERNAL, false);\n }\n this.#initialHash = this.getHash();\n }\n #evaluateVisibilityExpression(array) {\n const length = array.length;\n if (length < 2) {\n return true;\n }\n const operator = array[0];\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n if (Array.isArray(element)) {\n state = this.#evaluateVisibilityExpression(element);\n } else if (this.#groups.has(element)) {\n state = this.#groups.get(element).visible;\n } else {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Optional content group not found: ${element}`);\n return true;\n }\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n break;\n case \"Or\":\n if (state) {\n return true;\n }\n break;\n case \"Not\":\n return !state;\n default:\n return true;\n }\n }\n return operator === \"And\";\n }\n isVisible(group) {\n if (this.#groups.size === 0) {\n return true;\n }\n if (!group) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.info)(\"Optional content group not defined.\");\n return true;\n }\n if (group.type === \"OCG\") {\n if (!this.#groups.has(group.id)) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Optional content group not found: ${group.id}`);\n return true;\n }\n return this.#groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n if (group.expression) {\n return this.#evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n }\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Unknown group type ${group.type}.`);\n return true;\n }\n setVisibility(id, visible = true) {\n const group = this.#groups.get(id);\n if (!group) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Optional content group not found: ${id}`);\n return;\n }\n group._setVisible(INTERNAL, !!visible, true);\n this.#cachedGetHash = null;\n }\n setOCGState({\n state,\n preserveRB\n }) {\n let operator;\n for (const elem of state) {\n switch (elem) {\n case \"ON\":\n case \"OFF\":\n case \"Toggle\":\n operator = elem;\n continue;\n }\n const group = this.#groups.get(elem);\n if (!group) {\n continue;\n }\n switch (operator) {\n case \"ON\":\n group._setVisible(INTERNAL, true);\n break;\n case \"OFF\":\n group._setVisible(INTERNAL, false);\n break;\n case \"Toggle\":\n group._setVisible(INTERNAL, !group.visible);\n break;\n }\n }\n this.#cachedGetHash = null;\n }\n get hasInitialVisibility() {\n return this.#initialHash === null || this.getHash() === this.#initialHash;\n }\n getOrder() {\n if (!this.#groups.size) {\n return null;\n }\n if (this.#order) {\n return this.#order.slice();\n }\n return [...this.#groups.keys()];\n }\n getGroups() {\n return this.#groups.size > 0 ? (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.objectFromMap)(this.#groups) : null;\n }\n getGroup(id) {\n return this.#groups.get(id) || null;\n }\n getHash() {\n if (this.#cachedGetHash !== null) {\n return this.#cachedGetHash;\n }\n const hash = new _shared_murmurhash3_js__WEBPACK_IMPORTED_MODULE_1__.MurmurHash3_64();\n for (const [id, group] of this.#groups) {\n hash.update(`${id}:${group.visible}`);\n }\n return this.#cachedGetHash = hash.hexdigest();\n }\n}\n\n\n/***/ }),\n\n/***/ 814:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ cleanupTextLayer: () => (/* binding */ cleanupTextLayer),\n/* harmony export */ renderTextLayer: () => (/* binding */ renderTextLayer),\n/* harmony export */ updateTextLayer: () => (/* binding */ updateTextLayer)\n/* harmony export */ });\n/* unused harmony export TextLayerRenderTask */\n/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(292);\n/* harmony import */ var _display_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(419);\n\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nconst ascentCache = new Map();\nlet _canvasContext = null;\nfunction getCtx() {\n if (!_canvasContext) {\n const canvas = document.createElement(\"canvas\");\n canvas.className = \"hiddenCanvasElement\";\n document.body.append(canvas);\n _canvasContext = canvas.getContext(\"2d\", {\n alpha: false\n });\n }\n return _canvasContext;\n}\nfunction cleanupTextLayer() {\n _canvasContext?.canvas.remove();\n _canvasContext = null;\n}\nfunction getAscent(fontFamily) {\n const cachedAscent = ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n const ctx = getCtx();\n const savedFont = ctx.font;\n ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\n ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;\n const metrics = ctx.measureText(\"\");\n let ascent = metrics.fontBoundingBoxAscent;\n let descent = Math.abs(metrics.fontBoundingBoxDescent);\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n ctx.canvas.width = ctx.canvas.height = 0;\n ctx.font = savedFont;\n return ratio;\n }\n ctx.strokeStyle = \"red\";\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"g\", 0, 0);\n let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n descent = 0;\n for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n if (pixels[i] > 0) {\n descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n ascent = 0;\n for (let i = 0, ii = pixels.length; i < ii; i += 4) {\n if (pixels[i] > 0) {\n ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n ctx.canvas.width = ctx.canvas.height = 0;\n ctx.font = savedFont;\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT);\n return DEFAULT_FONT_ASCENT;\n}\nfunction appendText(task, geom, styles) {\n const textDiv = document.createElement(\"span\");\n const textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n fontSize: 0\n };\n task._textDivs.push(textDiv);\n const tx = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.Util.transform(task._transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = styles[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n const fontFamily = task._fontInspectorEnabled && style.fontSubstitution || style.fontFamily;\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * getAscent(fontFamily);\n let left, top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n const scaleFactorStr = \"calc(var(--scale-factor)*\";\n const divStyle = textDiv.style;\n if (task._container === task._rootContainer) {\n divStyle.left = `${(100 * left / task._pageWidth).toFixed(2)}%`;\n divStyle.top = `${(100 * top / task._pageHeight).toFixed(2)}%`;\n } else {\n divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n }\n divStyle.fontSize = `${scaleFactorStr}${fontHeight.toFixed(2)}px)`;\n divStyle.fontFamily = fontFamily;\n textDivProperties.fontSize = fontHeight;\n textDiv.setAttribute(\"role\", \"presentation\");\n textDiv.textContent = geom.str;\n textDiv.dir = geom.dir;\n if (task._fontInspectorEnabled) {\n textDiv.dataset.fontName = style.fontSubstitutionLoadedName || geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n let shouldScaleText = false;\n if (geom.str.length > 1) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n }\n task._textDivProperties.set(textDiv, textDivProperties);\n if (task._isReadableStream) {\n task._layoutText(textDiv);\n }\n}\nfunction layout(params) {\n const {\n div,\n scale,\n properties,\n ctx,\n prevFontSize,\n prevFontFamily\n } = params;\n const {\n style\n } = div;\n let transform = \"\";\n if (properties.canvasWidth !== 0 && properties.hasText) {\n const {\n fontFamily\n } = style;\n const {\n canvasWidth,\n fontSize\n } = properties;\n if (prevFontSize !== fontSize || prevFontFamily !== fontFamily) {\n ctx.font = `${fontSize * scale}px ${fontFamily}`;\n params.prevFontSize = fontSize;\n params.prevFontFamily = fontFamily;\n }\n const {\n width\n } = ctx.measureText(div.textContent);\n if (width > 0) {\n transform = `scaleX(${canvasWidth * scale / width})`;\n }\n }\n if (properties.angle !== 0) {\n transform = `rotate(${properties.angle}deg) ${transform}`;\n }\n if (transform.length > 0) {\n style.transform = transform;\n }\n}\nfunction render(task) {\n if (task._canceled) {\n return;\n }\n const textDivs = task._textDivs;\n const capability = task._capability;\n const textDivsLength = textDivs.length;\n if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n capability.resolve();\n return;\n }\n if (!task._isReadableStream) {\n for (const textDiv of textDivs) {\n task._layoutText(textDiv);\n }\n }\n capability.resolve();\n}\nclass TextLayerRenderTask {\n constructor({\n textContentSource,\n container,\n viewport,\n textDivs,\n textDivProperties,\n textContentItemsStr\n }) {\n this._textContentSource = textContentSource;\n this._isReadableStream = textContentSource instanceof ReadableStream;\n this._container = this._rootContainer = container;\n this._textDivs = textDivs || [];\n this._textContentItemsStr = textContentItemsStr || [];\n this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n this._reader = null;\n this._textDivProperties = textDivProperties || new WeakMap();\n this._canceled = false;\n this._capability = Promise.withResolvers();\n this._layoutTextParams = {\n prevFontSize: null,\n prevFontFamily: null,\n div: null,\n scale: viewport.scale * (globalThis.devicePixelRatio || 1),\n properties: null,\n ctx: getCtx()\n };\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n this._transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n this._pageWidth = pageWidth;\n this._pageHeight = pageHeight;\n (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_1__.setLayerDimensions)(container, viewport);\n this._capability.promise.finally(() => {\n this._layoutTextParams = null;\n }).catch(() => {});\n }\n get promise() {\n return this._capability.promise;\n }\n cancel() {\n this._canceled = true;\n if (this._reader) {\n this._reader.cancel(new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AbortException(\"TextLayer task cancelled.\")).catch(() => {});\n this._reader = null;\n }\n this._capability.reject(new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AbortException(\"TextLayer task cancelled.\"));\n }\n _processItems(items, styleCache) {\n for (const item of items) {\n if (item.str === undefined) {\n if (item.type === \"beginMarkedContentProps\" || item.type === \"beginMarkedContent\") {\n const parent = this._container;\n this._container = document.createElement(\"span\");\n this._container.classList.add(\"markedContent\");\n if (item.id !== null) {\n this._container.setAttribute(\"id\", `${item.id}`);\n }\n parent.append(this._container);\n } else if (item.type === \"endMarkedContent\") {\n this._container = this._container.parentNode;\n }\n continue;\n }\n this._textContentItemsStr.push(item.str);\n appendText(this, item, styleCache);\n }\n }\n _layoutText(textDiv) {\n const textDivProperties = this._layoutTextParams.properties = this._textDivProperties.get(textDiv);\n this._layoutTextParams.div = textDiv;\n layout(this._layoutTextParams);\n if (textDivProperties.hasText) {\n this._container.append(textDiv);\n }\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n this._container.append(br);\n }\n }\n _render() {\n const {\n promise,\n resolve,\n reject\n } = Promise.withResolvers();\n let styleCache = Object.create(null);\n if (this._isReadableStream) {\n const pump = () => {\n this._reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n resolve();\n return;\n }\n Object.assign(styleCache, value.styles);\n this._processItems(value.items, styleCache);\n pump();\n }, reject);\n };\n this._reader = this._textContentSource.getReader();\n pump();\n } else if (this._textContentSource) {\n const {\n items,\n styles\n } = this._textContentSource;\n this._processItems(items, styles);\n resolve();\n } else {\n throw new Error('No \"textContentSource\" parameter specified.');\n }\n promise.then(() => {\n styleCache = null;\n render(this);\n }, this._capability.reject);\n }\n}\nfunction renderTextLayer(params) {\n const task = new TextLayerRenderTask(params);\n task._render();\n return task;\n}\nfunction updateTextLayer({\n container,\n viewport,\n textDivs,\n textDivProperties,\n mustRotate = true,\n mustRescale = true\n}) {\n if (mustRotate) {\n (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_1__.setLayerDimensions)(container, {\n rotation: viewport.rotation\n });\n }\n if (mustRescale) {\n const ctx = getCtx();\n const scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n const params = {\n prevFontSize: null,\n prevFontFamily: null,\n div: null,\n scale,\n properties: null,\n ctx\n };\n for (const div of textDivs) {\n params.properties = textDivProperties.get(div);\n params.div = div;\n layout(params);\n }\n }\n}\n\n\n/***/ }),\n\n/***/ 585:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PDFDataTransportStream: () => (/* binding */ PDFDataTransportStream)\n/* harmony export */ });\n/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(292);\n/* harmony import */ var _display_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(419);\n\n\nclass PDFDataTransportStream {\n constructor(pdfDataRangeTransport, {\n disableRange = false,\n disableStream = false\n }) {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n const {\n length,\n initialData,\n progressiveDone,\n contentDispositionFilename\n } = pdfDataRangeTransport;\n this._queuedChunks = [];\n this._progressiveDone = progressiveDone;\n this._contentDispositionFilename = contentDispositionFilename;\n if (initialData?.length > 0) {\n const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !disableStream;\n this._isRangeSupported = !disableRange;\n this._contentLength = length;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({\n begin,\n chunk\n });\n });\n pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({\n loaded,\n total\n });\n });\n pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({\n chunk\n });\n });\n pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n pdfDataRangeTransport.transportReady();\n }\n _onReceiveData({\n begin,\n chunk\n }) {\n const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer;\n if (begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n _onProgress(evt) {\n if (evt.total === undefined) {\n this._rangeReaders[0]?.onProgress?.({\n loaded: evt.loaded\n });\n } else {\n this._fullRequestReader?.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n }\n _onProgressiveDone() {\n this._fullRequestReader?.progressiveDone();\n this._progressiveDone = true;\n }\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n getFullReader() {\n (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\nclass PDFDataTransportStreamReader {\n constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_1__.isPdfFile)(contentDispositionFilename) ? contentDispositionFilename : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n get headersReady() {\n return this._headersReady;\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n get contentLength() {\n return this._stream._contentLength;\n }\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({\n value: chunk,\n done: false\n });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\n\n/***/ }),\n\n/***/ 164:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ GlobalWorkerOptions: () => (/* binding */ GlobalWorkerOptions)\n/* harmony export */ });\nclass GlobalWorkerOptions {\n static #port = null;\n static #src = \"\";\n static get workerPort() {\n return this.#port;\n }\n static set workerPort(val) {\n if (!(typeof Worker !== \"undefined\" && val instanceof Worker) && val !== null) {\n throw new Error(\"Invalid `workerPort` type.\");\n }\n this.#port = val;\n }\n static get workerSrc() {\n return this.#src;\n }\n static set workerSrc(val) {\n if (typeof val !== \"string\") {\n throw new Error(\"Invalid `workerSrc` type.\");\n }\n this.#src = val;\n }\n}\n\n\n/***/ }),\n\n/***/ 284:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ XfaLayer: () => (/* binding */ XfaLayer)\n/* harmony export */ });\n/* harmony import */ var _xfa_text_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(50);\n\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, {\n value: null\n });\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n break;\n case \"input\":\n if (element.attributes.type === \"radio\" || element.attributes.type === \"checkbox\") {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n html.removeAttribute(\"checked\");\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked ? event.target.getAttribute(\"xfaOn\") : event.target.getAttribute(\"xfaOff\")\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n } else if (option.attributes.hasOwnProperty(\"selected\")) {\n delete option.attributes.selected;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value = options.selectedIndex === -1 ? \"\" : options[options.selectedIndex].value;\n storage.setValue(id, {\n value\n });\n });\n break;\n }\n }\n static setAttributes({\n html,\n element,\n storage = null,\n intent,\n linkService\n }) {\n const {\n attributes\n } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n if (attributes.type === \"radio\") {\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n if (value === null || value === undefined) {\n continue;\n }\n switch (key) {\n case \"class\":\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n break;\n case \"dataId\":\n break;\n case \"id\":\n html.setAttribute(\"data-element-id\", value);\n break;\n case \"style\":\n Object.assign(html.style, value);\n break;\n case \"textContent\":\n html.textContent = value;\n break;\n default:\n if (!isHTMLAnchorElement || key !== \"href\" && key !== \"newWindow\") {\n html.setAttribute(key, value);\n }\n }\n }\n if (isHTMLAnchorElement) {\n linkService.addLinkAttributes(html, attributes.href, attributes.newWindow);\n }\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = document.createElement(root.name);\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService\n });\n }\n const isNotForRichText = intent !== \"richText\";\n const rootDiv = parameters.div;\n rootDiv.append(rootHtml);\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n if (isNotForRichText) {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n const textDivs = [];\n if (root.children.length === 0) {\n if (root.value) {\n const node = document.createTextNode(root.value);\n rootHtml.append(node);\n if (isNotForRichText && _xfa_text_js__WEBPACK_IMPORTED_MODULE_0__.XfaText.shouldBuildText(root.name)) {\n textDivs.push(node);\n }\n }\n return {\n textDivs\n };\n }\n const stack = [[root, -1, rootHtml]];\n while (stack.length > 0) {\n const [parent, i, html] = stack.at(-1);\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n const child = parent.children[++stack.at(-1)[1]];\n if (child === null) {\n continue;\n }\n const {\n name\n } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.append(node);\n continue;\n }\n const childHtml = child?.attributes?.xmlns ? document.createElementNS(child.attributes.xmlns, name) : document.createElement(name);\n html.append(childHtml);\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService\n });\n }\n if (child.children?.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (isNotForRichText && _xfa_text_js__WEBPACK_IMPORTED_MODULE_0__.XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.append(node);\n }\n }\n for (const el of rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) {\n el.setAttribute(\"readOnly\", true);\n }\n return {\n textDivs\n };\n }\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n}\n\n\n/***/ }),\n\n/***/ 50:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ XfaText: () => (/* binding */ XfaText)\n/* harmony export */ });\nclass XfaText {\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null)\n };\n function walk(node) {\n if (!node) {\n return;\n }\n let str = null;\n const name = node.name;\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n if (str !== null) {\n items.push({\n str\n });\n }\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n walk(child);\n }\n }\n walk(xfa);\n return output;\n }\n static shouldBuildText(name) {\n return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n }\n}\n\n\n/***/ }),\n\n/***/ 228:\n/***/ ((__webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AbortException: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AbortException),\n/* harmony export */ AnnotationEditorLayer: () => (/* reexport safe */ _display_editor_annotation_editor_layer_js__WEBPACK_IMPORTED_MODULE_4__.AnnotationEditorLayer),\n/* harmony export */ AnnotationEditorParamsType: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorParamsType),\n/* harmony export */ AnnotationEditorType: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorType),\n/* harmony export */ AnnotationEditorUIManager: () => (/* reexport safe */ _display_editor_tools_js__WEBPACK_IMPORTED_MODULE_5__.AnnotationEditorUIManager),\n/* harmony export */ AnnotationLayer: () => (/* reexport safe */ _display_annotation_layer_js__WEBPACK_IMPORTED_MODULE_6__.AnnotationLayer),\n/* harmony export */ AnnotationMode: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationMode),\n/* harmony export */ CMapCompressionType: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.CMapCompressionType),\n/* harmony export */ ColorPicker: () => (/* reexport safe */ _display_editor_color_picker_js__WEBPACK_IMPORTED_MODULE_7__.ColorPicker),\n/* harmony export */ DOMSVGFactory: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.DOMSVGFactory),\n/* harmony export */ DrawLayer: () => (/* reexport safe */ _display_draw_layer_js__WEBPACK_IMPORTED_MODULE_8__.DrawLayer),\n/* harmony export */ FeatureTest: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.FeatureTest),\n/* harmony export */ GlobalWorkerOptions: () => (/* reexport safe */ _display_worker_options_js__WEBPACK_IMPORTED_MODULE_10__.GlobalWorkerOptions),\n/* harmony export */ ImageKind: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.ImageKind),\n/* harmony export */ InvalidPDFException: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.InvalidPDFException),\n/* harmony export */ MissingPDFException: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.MissingPDFException),\n/* harmony export */ OPS: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.OPS),\n/* harmony export */ Outliner: () => (/* reexport safe */ _display_editor_outliner_js__WEBPACK_IMPORTED_MODULE_9__.Outliner),\n/* harmony export */ PDFDataRangeTransport: () => (/* reexport safe */ _display_api_js__WEBPACK_IMPORTED_MODULE_1__.PDFDataRangeTransport),\n/* harmony export */ PDFDateString: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.PDFDateString),\n/* harmony export */ PDFWorker: () => (/* reexport safe */ _display_api_js__WEBPACK_IMPORTED_MODULE_1__.PDFWorker),\n/* harmony export */ PasswordResponses: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PasswordResponses),\n/* harmony export */ PermissionFlag: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PermissionFlag),\n/* harmony export */ PixelsPerInch: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.PixelsPerInch),\n/* harmony export */ RenderingCancelledException: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.RenderingCancelledException),\n/* harmony export */ UnexpectedResponseException: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.UnexpectedResponseException),\n/* harmony export */ Util: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.Util),\n/* harmony export */ VerbosityLevel: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.VerbosityLevel),\n/* harmony export */ XfaLayer: () => (/* reexport safe */ _display_xfa_layer_js__WEBPACK_IMPORTED_MODULE_11__.XfaLayer),\n/* harmony export */ build: () => (/* reexport safe */ _display_api_js__WEBPACK_IMPORTED_MODULE_1__.build),\n/* harmony export */ createValidAbsoluteUrl: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.createValidAbsoluteUrl),\n/* harmony export */ fetchData: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.fetchData),\n/* harmony export */ getDocument: () => (/* reexport safe */ _display_api_js__WEBPACK_IMPORTED_MODULE_1__.getDocument),\n/* harmony export */ getFilenameFromUrl: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.getFilenameFromUrl),\n/* harmony export */ getPdfFilenameFromUrl: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.getPdfFilenameFromUrl),\n/* harmony export */ getXfaPageViewport: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.getXfaPageViewport),\n/* harmony export */ isDataScheme: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.isDataScheme),\n/* harmony export */ isPdfFile: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.isPdfFile),\n/* harmony export */ noContextMenu: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.noContextMenu),\n/* harmony export */ normalizeUnicode: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeUnicode),\n/* harmony export */ renderTextLayer: () => (/* reexport safe */ _display_text_layer_js__WEBPACK_IMPORTED_MODULE_3__.renderTextLayer),\n/* harmony export */ setLayerDimensions: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.setLayerDimensions),\n/* harmony export */ shadow: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow),\n/* harmony export */ updateTextLayer: () => (/* reexport safe */ _display_text_layer_js__WEBPACK_IMPORTED_MODULE_3__.updateTextLayer),\n/* harmony export */ version: () => (/* reexport safe */ _display_api_js__WEBPACK_IMPORTED_MODULE_1__.version)\n/* harmony export */ });\n/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(292);\n/* harmony import */ var _display_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(831);\n/* harmony import */ var _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(419);\n/* harmony import */ var _display_text_layer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(814);\n/* harmony import */ var _display_editor_annotation_editor_layer_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(731);\n/* harmony import */ var _display_editor_tools_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(830);\n/* harmony import */ var _display_annotation_layer_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(976);\n/* harmony import */ var _display_editor_color_picker_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(259);\n/* harmony import */ var _display_draw_layer_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(47);\n/* harmony import */ var _display_worker_options_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(164);\n/* harmony import */ var _display_editor_outliner_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(61);\n/* harmony import */ var _display_xfa_layer_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(284);\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_display_api_js__WEBPACK_IMPORTED_MODULE_1__]);\n_display_api_js__WEBPACK_IMPORTED_MODULE_1__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];\n\n\n\n\n\n\n\n\n\n\n\n\nconst pdfjsVersion = \"4.2.67\";\nconst pdfjsBuild = \"49b388101\";\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });\n\n/***/ }),\n\n/***/ 178:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ MessageHandler: () => (/* binding */ MessageHandler)\n/* harmony export */ });\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(292);\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\nfunction wrapReason(reason) {\n if (!(reason instanceof Error || typeof reason === \"object\" && reason !== null)) {\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n switch (reason.name) {\n case \"AbortException\":\n return new _util_js__WEBPACK_IMPORTED_MODULE_0__.AbortException(reason.message);\n case \"MissingPDFException\":\n return new _util_js__WEBPACK_IMPORTED_MODULE_0__.MissingPDFException(reason.message);\n case \"PasswordException\":\n return new _util_js__WEBPACK_IMPORTED_MODULE_0__.PasswordException(reason.message, reason.code);\n case \"UnexpectedResponseException\":\n return new _util_js__WEBPACK_IMPORTED_MODULE_0__.UnexpectedResponseException(reason.message, reason.status);\n case \"UnknownErrorException\":\n return new _util_js__WEBPACK_IMPORTED_MODULE_0__.UnknownErrorException(reason.message, reason.details);\n default:\n return new _util_js__WEBPACK_IMPORTED_MODULE_0__.UnknownErrorException(reason.message, reason.toString());\n }\n}\nclass MessageHandler {\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n this._onComObjOnMessage = event => {\n const data = event.data;\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this.#processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const cbSourceName = this.sourceName;\n const cbTargetName = data.sourceName;\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n };\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n on(actionName, handler) {\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n send(actionName, data, transfers) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = Promise.withResolvers();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n return new ReadableStream({\n start: controller => {\n const startCapability = Promise.withResolvers();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n comObj.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = Promise.withResolvers();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = Promise.withResolvers();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n #createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = Promise.withResolvers();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\n },\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId\n });\n delete self.streamSinks[streamId];\n },\n error(reason) {\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason)\n });\n },\n sinkCapability: Promise.withResolvers(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n }\n #processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n streamSink.desiredSize = data.desiredSize;\n new Promise(function (resolve) {\n resolve(streamSink.onPull?.());\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n case StreamKind.ENQUEUE:\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n new Promise(function (resolve) {\n resolve(streamSink.onCancel?.(wrapReason(data.reason)));\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n streamSink.sinkCapability.reject(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n async #deleteStreamController(streamController, streamId) {\n await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n delete this.streamControllers[streamId];\n }\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n}\n\n\n/***/ }),\n\n/***/ 651:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ MurmurHash3_64: () => (/* binding */ MurmurHash3_64)\n/* harmony export */ });\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (ArrayBuffer.isView(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n }\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n k2 = k2 << 15 | k2 >>> 17;\n k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n h2 ^= k2;\n h2 = h2 << 13 | h2 >>> 19;\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n k1 = 0;\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n case 1:\n k1 ^= data[blockCounts * 4];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n this.h1 = h1;\n this.h2 = h2;\n }\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n }\n}\n\n\n/***/ }),\n\n/***/ 292:\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AbortException: () => (/* binding */ AbortException),\n/* harmony export */ AnnotationBorderStyleType: () => (/* binding */ AnnotationBorderStyleType),\n/* harmony export */ AnnotationEditorParamsType: () => (/* binding */ AnnotationEditorParamsType),\n/* harmony export */ AnnotationEditorPrefix: () => (/* binding */ AnnotationEditorPrefix),\n/* harmony export */ AnnotationEditorType: () => (/* binding */ AnnotationEditorType),\n/* harmony export */ AnnotationMode: () => (/* binding */ AnnotationMode),\n/* harmony export */ AnnotationPrefix: () => (/* binding */ AnnotationPrefix),\n/* harmony export */ AnnotationType: () => (/* binding */ AnnotationType),\n/* harmony export */ BaseException: () => (/* binding */ BaseException),\n/* harmony export */ CMapCompressionType: () => (/* binding */ CMapCompressionType),\n/* harmony export */ FONT_IDENTITY_MATRIX: () => (/* binding */ FONT_IDENTITY_MATRIX),\n/* harmony export */ FeatureTest: () => (/* binding */ FeatureTest),\n/* harmony export */ FontRenderOps: () => (/* binding */ FontRenderOps),\n/* harmony export */ FormatError: () => (/* binding */ FormatError),\n/* harmony export */ IDENTITY_MATRIX: () => (/* binding */ IDENTITY_MATRIX),\n/* harmony export */ ImageKind: () => (/* binding */ ImageKind),\n/* harmony export */ InvalidPDFException: () => (/* binding */ InvalidPDFException),\n/* harmony export */ LINE_FACTOR: () => (/* binding */ LINE_FACTOR),\n/* harmony export */ MAX_IMAGE_SIZE_TO_CACHE: () => (/* binding */ MAX_IMAGE_SIZE_TO_CACHE),\n/* harmony export */ MissingPDFException: () => (/* binding */ MissingPDFException),\n/* harmony export */ OPS: () => (/* binding */ OPS),\n/* harmony export */ PasswordException: () => (/* binding */ PasswordException),\n/* harmony export */ PasswordResponses: () => (/* binding */ PasswordResponses),\n/* harmony export */ PermissionFlag: () => (/* binding */ PermissionFlag),\n/* harmony export */ RenderingIntentFlag: () => (/* binding */ RenderingIntentFlag),\n/* harmony export */ TextRenderingMode: () => (/* binding */ TextRenderingMode),\n/* harmony export */ UnexpectedResponseException: () => (/* binding */ UnexpectedResponseException),\n/* harmony export */ UnknownErrorException: () => (/* binding */ UnknownErrorException),\n/* harmony export */ Util: () => (/* binding */ Util),\n/* harmony export */ VerbosityLevel: () => (/* binding */ VerbosityLevel),\n/* harmony export */ assert: () => (/* binding */ assert),\n/* harmony export */ bytesToString: () => (/* binding */ bytesToString),\n/* harmony export */ createValidAbsoluteUrl: () => (/* binding */ createValidAbsoluteUrl),\n/* harmony export */ getUuid: () => (/* binding */ getUuid),\n/* harmony export */ getVerbosityLevel: () => (/* binding */ getVerbosityLevel),\n/* harmony export */ info: () => (/* binding */ info),\n/* harmony export */ isNodeJS: () => (/* binding */ isNodeJS),\n/* harmony export */ normalizeUnicode: () => (/* binding */ normalizeUnicode),\n/* harmony export */ objectFromMap: () => (/* binding */ objectFromMap),\n/* harmony export */ setVerbosityLevel: () => (/* binding */ setVerbosityLevel),\n/* harmony export */ shadow: () => (/* binding */ shadow),\n/* harmony export */ string32: () => (/* binding */ string32),\n/* harmony export */ stringToBytes: () => (/* binding */ stringToBytes),\n/* harmony export */ unreachable: () => (/* binding */ unreachable),\n/* harmony export */ warn: () => (/* binding */ warn)\n/* harmony export */ });\n/* unused harmony exports AnnotationActionEventType, AnnotationFieldFlag, AnnotationFlag, AnnotationReplyType, BASELINE_FACTOR, DocumentActionEventType, getModificationDate, isArrayEqual, LINE_DESCENT_FACTOR, objectSize, PageActionEventType, stringToPDFString, stringToUTF8String, utf8StringToString */\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nconst MAX_IMAGE_SIZE_TO_CACHE = 10e6;\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100\n};\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n};\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n HIGHLIGHT: 9,\n STAMP: 13,\n INK: 15\n};\nconst AnnotationEditorParamsType = {\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23,\n HIGHLIGHT_COLOR: 31,\n HIGHLIGHT_DEFAULT_COLOR: 32,\n HIGHLIGHT_THICKNESS: 33,\n HIGHLIGHT_FREE: 34,\n HIGHLIGHT_SHOW_ALL: 35\n};\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800\n};\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26\n};\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200\n};\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000\n};\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\"\n};\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n};\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\"\n};\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1\n};\nconst OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91\n};\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\nfunction getVerbosityLevel() {\n return verbosity;\n}\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\nfunction unreachable(msg) {\n throw new Error(msg);\n}\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\nfunction _isValidProtocol(url) {\n switch (url?.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {}\n }\n }\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch {}\n return null;\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false\n });\n return value;\n}\nconst BaseException = function BaseExceptionClosure() {\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch {\n return false;\n }\n}\nclass FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n }\n static get platform() {\n if (typeof navigator !== \"undefined\" && typeof navigator?.platform === \"string\") {\n return shadow(this, \"platform\", {\n isMac: navigator.platform.includes(\"Mac\")\n });\n }\n return shadow(this, \"platform\", {\n isMac: false\n });\n }\n static get isCSSRoundSupported() {\n return shadow(this, \"isCSSRoundSupported\", globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\"));\n }\n}\nconst hexNumbers = Array.from(Array(256).keys(), n => n.toString(16).padStart(2, \"0\"));\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[0];\n minMax[2] *= transform[0];\n if (transform[3] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n if (transform[1] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[1];\n minMax[3] *= transform[1];\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[2];\n minMax[2] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[5];\n minMax[2] += transform[4];\n minMax[3] += transform[5];\n }\n static transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = this.applyTransform(r, m);\n const p2 = this.applyTransform(r.slice(2, 4), m);\n const p3 = this.applyTransform([r[0], r[3]], m);\n const p4 = this.applyTransform([r[2], r[1]], m);\n 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])];\n }\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n static normalizeRect(rect) {\n const r = rect.slice(0);\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n static intersect(rect1, rect2) {\n const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n if (yLow > yHigh) {\n return null;\n }\n return [xLow, yLow, xHigh, yHigh];\n }\n static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n if (t <= 0 || t >= 1) {\n return;\n }\n const mt = 1 - t;\n const tt = t * t;\n const ttt = tt * t;\n const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) >= 1e-12) {\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, -c / b, minMax);\n }\n return;\n }\n const delta = b ** 2 - 4 * c * a;\n if (delta < 0) {\n return;\n }\n const sqrtDelta = Math.sqrt(delta);\n const a2 = 2 * a;\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b + sqrtDelta) / a2, minMax);\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) / a2, minMax);\n }\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n if (minMax) {\n minMax[0] = Math.min(minMax[0], x0, x3);\n minMax[1] = Math.min(minMax[1], y0, y3);\n minMax[2] = Math.max(minMax[2], x0, x3);\n minMax[3] = Math.max(minMax[3], y0, y3);\n } else {\n minMax = [Math.min(x0, x3), Math.min(y0, y3), Math.max(x0, x3), Math.max(y0, y3)];\n }\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n return minMax;\n }\n}\nconst PDFStringTranslateTable = (/* unused pure expression or super */ null && ([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]));\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(str);\n const decoded = decoder.decode(buffer);\n if (!decoded.includes(\"\\x1b\")) {\n return decoded;\n }\n return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const charCode = str.charCodeAt(i);\n if (charCode === 0x1b) {\n while (++i < ii && str.charCodeAt(i) !== 0x1b) {}\n continue;\n }\n const code = PDFStringTranslateTable[charCode];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction getModificationDate(date = new Date()) {\n 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\")];\n return buffer.join(\"\");\n}\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n NormalizeRegex = /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n}\nfunction getUuid() {\n if (typeof crypto !== \"undefined\" && typeof crypto?.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n if (typeof crypto !== \"undefined\" && typeof crypto?.getRandomValues === \"function\") {\n crypto.getRandomValues(buf);\n } else {\n for (let i = 0; i < 32; i++) {\n buf[i] = Math.floor(Math.random() * 255);\n }\n }\n return bytesToString(buf);\n}\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nconst FontRenderOps = {\n BEZIER_CURVE_TO: 0,\n MOVE_TO: 1,\n LINE_TO: 2,\n QUADRATIC_CURVE_TO: 3,\n RESTORE: 4,\n SAVE: 5,\n SCALE: 6,\n TRANSFORM: 7,\n TRANSLATE: 8\n};\n\n\n/***/ })\n\n/******/ });\n/************************************************************************/\n/******/ // The module cache\n/******/ var __webpack_module_cache__ = {};\n/******/ \n/******/ // The require function\n/******/ function __webpack_require__(moduleId) {\n/******/ \t// Check if module is in cache\n/******/ \tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \tif (cachedModule !== undefined) {\n/******/ \t\treturn cachedModule.exports;\n/******/ \t}\n/******/ \t// Create a new module (and put it into the cache)\n/******/ \tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t// no module.id needed\n/******/ \t\t// no module.loaded needed\n/******/ \t\texports: {}\n/******/ \t};\n/******/ \n/******/ \t// Execute the module function\n/******/ \t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \n/******/ \t// Return the exports of the module\n/******/ \treturn module.exports;\n/******/ }\n/******/ \n/************************************************************************/\n/******/ /* webpack/runtime/async module */\n/******/ (() => {\n/******/ \tvar webpackQueues = typeof Symbol === \"function\" ? Symbol(\"webpack queues\") : \"__webpack_queues__\";\n/******/ \tvar webpackExports = typeof Symbol === \"function\" ? Symbol(\"webpack exports\") : \"__webpack_exports__\";\n/******/ \tvar webpackError = typeof Symbol === \"function\" ? Symbol(\"webpack error\") : \"__webpack_error__\";\n/******/ \tvar resolveQueue = (queue) => {\n/******/ \t\tif(queue && queue.d < 1) {\n/******/ \t\t\tqueue.d = 1;\n/******/ \t\t\tqueue.forEach((fn) => (fn.r--));\n/******/ \t\t\tqueue.forEach((fn) => (fn.r-- ? fn.r++ : fn()));\n/******/ \t\t}\n/******/ \t}\n/******/ \tvar wrapDeps = (deps) => (deps.map((dep) => {\n/******/ \t\tif(dep !== null && typeof dep === \"object\") {\n/******/ \t\t\tif(dep[webpackQueues]) return dep;\n/******/ \t\t\tif(dep.then) {\n/******/ \t\t\t\tvar queue = [];\n/******/ \t\t\t\tqueue.d = 0;\n/******/ \t\t\t\tdep.then((r) => {\n/******/ \t\t\t\t\tobj[webpackExports] = r;\n/******/ \t\t\t\t\tresolveQueue(queue);\n/******/ \t\t\t\t}, (e) => {\n/******/ \t\t\t\t\tobj[webpackError] = e;\n/******/ \t\t\t\t\tresolveQueue(queue);\n/******/ \t\t\t\t});\n/******/ \t\t\t\tvar obj = {};\n/******/ \t\t\t\tobj[webpackQueues] = (fn) => (fn(queue));\n/******/ \t\t\t\treturn obj;\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tvar ret = {};\n/******/ \t\tret[webpackQueues] = x => {};\n/******/ \t\tret[webpackExports] = dep;\n/******/ \t\treturn ret;\n/******/ \t}));\n/******/ \t__webpack_require__.a = (module, body, hasAwait) => {\n/******/ \t\tvar queue;\n/******/ \t\thasAwait && ((queue = []).d = -1);\n/******/ \t\tvar depQueues = new Set();\n/******/ \t\tvar exports = module.exports;\n/******/ \t\tvar currentDeps;\n/******/ \t\tvar outerResolve;\n/******/ \t\tvar reject;\n/******/ \t\tvar promise = new Promise((resolve, rej) => {\n/******/ \t\t\treject = rej;\n/******/ \t\t\touterResolve = resolve;\n/******/ \t\t});\n/******/ \t\tpromise[webpackExports] = exports;\n/******/ \t\tpromise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise[\"catch\"](x => {}));\n/******/ \t\tmodule.exports = promise;\n/******/ \t\tbody((deps) => {\n/******/ \t\t\tcurrentDeps = wrapDeps(deps);\n/******/ \t\t\tvar fn;\n/******/ \t\t\tvar getResult = () => (currentDeps.map((d) => {\n/******/ \t\t\t\tif(d[webpackError]) throw d[webpackError];\n/******/ \t\t\t\treturn d[webpackExports];\n/******/ \t\t\t}))\n/******/ \t\t\tvar promise = new Promise((resolve) => {\n/******/ \t\t\t\tfn = () => (resolve(getResult));\n/******/ \t\t\t\tfn.r = 0;\n/******/ \t\t\t\tvar fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))));\n/******/ \t\t\t\tcurrentDeps.map((dep) => (dep[webpackQueues](fnQueue)));\n/******/ \t\t\t});\n/******/ \t\t\treturn fn.r ? promise : getResult();\n/******/ \t\t}, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue)));\n/******/ \t\tqueue && queue.d < 0 && (queue.d = 0);\n/******/ \t};\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/define property getters */\n/******/ (() => {\n/******/ \t// define getter functions for harmony exports\n/******/ \t__webpack_require__.d = (exports, definition) => {\n/******/ \t\tfor(var key in definition) {\n/******/ \t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t};\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/hasOwnProperty shorthand */\n/******/ (() => {\n/******/ \t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ })();\n/******/ \n/************************************************************************/\n/******/ \n/******/ // startup\n/******/ // Load entry module and return exports\n/******/ // This entry module used 'module' so it can't be inlined\n/******/ var __webpack_exports__ = __webpack_require__(228);\n/******/ __webpack_exports__ = globalThis.pdfjsLib = await (globalThis.pdfjsLibPromise = __webpack_exports__);\n/******/ var __webpack_exports__AbortException = __webpack_exports__.AbortException;\n/******/ var __webpack_exports__AnnotationEditorLayer = __webpack_exports__.AnnotationEditorLayer;\n/******/ var __webpack_exports__AnnotationEditorParamsType = __webpack_exports__.AnnotationEditorParamsType;\n/******/ var __webpack_exports__AnnotationEditorType = __webpack_exports__.AnnotationEditorType;\n/******/ var __webpack_exports__AnnotationEditorUIManager = __webpack_exports__.AnnotationEditorUIManager;\n/******/ var __webpack_exports__AnnotationLayer = __webpack_exports__.AnnotationLayer;\n/******/ var __webpack_exports__AnnotationMode = __webpack_exports__.AnnotationMode;\n/******/ var __webpack_exports__CMapCompressionType = __webpack_exports__.CMapCompressionType;\n/******/ var __webpack_exports__ColorPicker = __webpack_exports__.ColorPicker;\n/******/ var __webpack_exports__DOMSVGFactory = __webpack_exports__.DOMSVGFactory;\n/******/ var __webpack_exports__DrawLayer = __webpack_exports__.DrawLayer;\n/******/ var __webpack_exports__FeatureTest = __webpack_exports__.FeatureTest;\n/******/ var __webpack_exports__GlobalWorkerOptions = __webpack_exports__.GlobalWorkerOptions;\n/******/ var __webpack_exports__ImageKind = __webpack_exports__.ImageKind;\n/******/ var __webpack_exports__InvalidPDFException = __webpack_exports__.InvalidPDFException;\n/******/ var __webpack_exports__MissingPDFException = __webpack_exports__.MissingPDFException;\n/******/ var __webpack_exports__OPS = __webpack_exports__.OPS;\n/******/ var __webpack_exports__Outliner = __webpack_exports__.Outliner;\n/******/ var __webpack_exports__PDFDataRangeTransport = __webpack_exports__.PDFDataRangeTransport;\n/******/ var __webpack_exports__PDFDateString = __webpack_exports__.PDFDateString;\n/******/ var __webpack_exports__PDFWorker = __webpack_exports__.PDFWorker;\n/******/ var __webpack_exports__PasswordResponses = __webpack_exports__.PasswordResponses;\n/******/ var __webpack_exports__PermissionFlag = __webpack_exports__.PermissionFlag;\n/******/ var __webpack_exports__PixelsPerInch = __webpack_exports__.PixelsPerInch;\n/******/ var __webpack_exports__RenderingCancelledException = __webpack_exports__.RenderingCancelledException;\n/******/ var __webpack_exports__UnexpectedResponseException = __webpack_exports__.UnexpectedResponseException;\n/******/ var __webpack_exports__Util = __webpack_exports__.Util;\n/******/ var __webpack_exports__VerbosityLevel = __webpack_exports__.VerbosityLevel;\n/******/ var __webpack_exports__XfaLayer = __webpack_exports__.XfaLayer;\n/******/ var __webpack_exports__build = __webpack_exports__.build;\n/******/ var __webpack_exports__createValidAbsoluteUrl = __webpack_exports__.createValidAbsoluteUrl;\n/******/ var __webpack_exports__fetchData = __webpack_exports__.fetchData;\n/******/ var __webpack_exports__getDocument = __webpack_exports__.getDocument;\n/******/ var __webpack_exports__getFilenameFromUrl = __webpack_exports__.getFilenameFromUrl;\n/******/ var __webpack_exports__getPdfFilenameFromUrl = __webpack_exports__.getPdfFilenameFromUrl;\n/******/ var __webpack_exports__getXfaPageViewport = __webpack_exports__.getXfaPageViewport;\n/******/ var __webpack_exports__isDataScheme = __webpack_exports__.isDataScheme;\n/******/ var __webpack_exports__isPdfFile = __webpack_exports__.isPdfFile;\n/******/ var __webpack_exports__noContextMenu = __webpack_exports__.noContextMenu;\n/******/ var __webpack_exports__normalizeUnicode = __webpack_exports__.normalizeUnicode;\n/******/ var __webpack_exports__renderTextLayer = __webpack_exports__.renderTextLayer;\n/******/ var __webpack_exports__setLayerDimensions = __webpack_exports__.setLayerDimensions;\n/******/ var __webpack_exports__shadow = __webpack_exports__.shadow;\n/******/ var __webpack_exports__updateTextLayer = __webpack_exports__.updateTextLayer;\n/******/ var __webpack_exports__version = __webpack_exports__.version;\n/******/ export { __webpack_exports__AbortException as AbortException, __webpack_exports__AnnotationEditorLayer as AnnotationEditorLayer, __webpack_exports__AnnotationEditorParamsType as AnnotationEditorParamsType, __webpack_exports__AnnotationEditorType as AnnotationEditorType, __webpack_exports__AnnotationEditorUIManager as AnnotationEditorUIManager, __webpack_exports__AnnotationLayer as AnnotationLayer, __webpack_exports__AnnotationMode as AnnotationMode, __webpack_exports__CMapCompressionType as CMapCompressionType, __webpack_exports__ColorPicker as ColorPicker, __webpack_exports__DOMSVGFactory as DOMSVGFactory, __webpack_exports__DrawLayer as DrawLayer, __webpack_exports__FeatureTest as FeatureTest, __webpack_exports__GlobalWorkerOptions as GlobalWorkerOptions, __webpack_exports__ImageKind as ImageKind, __webpack_exports__InvalidPDFException as InvalidPDFException, __webpack_exports__MissingPDFException as MissingPDFException, __webpack_exports__OPS as OPS, __webpack_exports__Outliner as Outliner, __webpack_exports__PDFDataRangeTransport as PDFDataRangeTransport, __webpack_exports__PDFDateString as PDFDateString, __webpack_exports__PDFWorker as PDFWorker, __webpack_exports__PasswordResponses as PasswordResponses, __webpack_exports__PermissionFlag as PermissionFlag, __webpack_exports__PixelsPerInch as PixelsPerInch, __webpack_exports__RenderingCancelledException as RenderingCancelledException, __webpack_exports__UnexpectedResponseException as UnexpectedResponseException, __webpack_exports__Util as Util, __webpack_exports__VerbosityLevel as VerbosityLevel, __webpack_exports__XfaLayer as XfaLayer, __webpack_exports__build as build, __webpack_exports__createValidAbsoluteUrl as createValidAbsoluteUrl, __webpack_exports__fetchData as fetchData, __webpack_exports__getDocument as getDocument, __webpack_exports__getFilenameFromUrl as getFilenameFromUrl, __webpack_exports__getPdfFilenameFromUrl as getPdfFilenameFromUrl, __webpack_exports__getXfaPageViewport as getXfaPageViewport, __webpack_exports__isDataScheme as isDataScheme, __webpack_exports__isPdfFile as isPdfFile, __webpack_exports__noContextMenu as noContextMenu, __webpack_exports__normalizeUnicode as normalizeUnicode, __webpack_exports__renderTextLayer as renderTextLayer, __webpack_exports__setLayerDimensions as setLayerDimensions, __webpack_exports__shadow as shadow, __webpack_exports__updateTextLayer as updateTextLayer, __webpack_exports__version as version };\n/******/ \n\n//# sourceMappingURL=pdf.mjs.map"],"file":"assets/pdf-ZjtalfgI.js"}