superdoc 2.4.0-next.9 → 2.4.0

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 (77) hide show
  1. package/dist/chunks/{FindReplaceSurface-9VkPw_-X.cjs → FindReplaceSurface-0p7EtMZh.cjs} +4 -3
  2. package/dist/chunks/{FindReplaceSurface-BuvaIrQ5.es.js → FindReplaceSurface-40AnrqWk.es.js} +4 -2
  3. package/dist/chunks/{PasswordPromptSurface-Bu5xHm91.cjs → PasswordPromptSurface-31lYPcCK.cjs} +4 -3
  4. package/dist/chunks/{PasswordPromptSurface-Bz9_sKhX.es.js → PasswordPromptSurface-CwYeO3iQ.es.js} +4 -2
  5. package/dist/chunks/{PdfViewer-CdVGB6Fe.es.js → PdfViewer-D8h7LRZy.es.js} +103 -19
  6. package/dist/chunks/{PdfViewer-D4eD2dV1.cjs → PdfViewer-Dug6yDRC.cjs} +105 -20
  7. package/dist/chunks/_plugin-vue_export-helper-BOaGB7Aw.es.js +8 -0
  8. package/dist/chunks/_plugin-vue_export-helper-SDR04tiH.cjs +13 -0
  9. package/dist/chunks/{blank-docx-DP8RUPW-.cjs → blank-docx-BuFAbRjs.cjs} +2 -0
  10. package/dist/chunks/{blank-docx-XRX6Ker2.es.js → blank-docx-DzQccOlW.es.js} +2 -0
  11. package/dist/chunks/constants-B6VBlmKp.es.js +4 -0
  12. package/dist/chunks/constants-DpXuDx_g.cjs +9 -0
  13. package/dist/chunks/{create-super-doc-ui-DBXOhHdW.es.js → create-super-doc-ui-CmOSA_lN.es.js} +2030 -1086
  14. package/dist/chunks/{create-super-doc-ui-ByvmsAAG.cjs → create-super-doc-ui-CqGmoMMA.cjs} +1841 -1137
  15. package/dist/chunks/{eventemitter3-DqY4aSMf.cjs → eventemitter3-C_TAnXOl.cjs} +125 -16
  16. package/dist/chunks/{eventemitter3-Bt2s0X0a.es.js → eventemitter3-DEIiXiH2.es.js} +124 -16
  17. package/dist/chunks/jszip-BzJ3CyxR.es.js +4717 -0
  18. package/dist/chunks/jszip-D8mAFF-r.cjs +4758 -0
  19. package/dist/chunks/{rolldown-runtime-D7PMmH3s.es.js → rolldown-runtime-0pSA04fp.es.js} +12 -3
  20. package/dist/chunks/{rolldown-runtime-1Y-nnZJ3.cjs → rolldown-runtime-74VwNCz7.cjs} +11 -2
  21. package/dist/chunks/{uuid-CFp0WGVU.cjs → uuid-BhG0ngwk.cjs} +10 -6
  22. package/dist/chunks/{uuid-B2Sqk-3p.es.js → uuid-H0Xcmmhy.es.js} +8 -3
  23. package/dist/collaboration-upgrade-engine.cjs +34 -9
  24. package/dist/collaboration-upgrade-engine.es.js +30 -5
  25. package/dist/document-api/src/citations/citations.types.d.ts +9 -0
  26. package/dist/document-api/src/comments/comments.types.d.ts +7 -0
  27. package/dist/document-api/src/types/receipt.d.ts +9 -5
  28. package/dist/layout-engine/contracts/src/incremental-dependency.d.ts +22 -2
  29. package/dist/layout-engine/contracts/src/index.d.ts +74 -2
  30. package/dist/layout-engine/contracts/src/inline-box.d.ts +19 -0
  31. package/dist/layout-engine/contracts/src/paragraph-visible-text.d.ts +19 -0
  32. package/dist/layout-engine/layout-bridge/src/incrementalLayout.d.ts +4 -1
  33. package/dist/layout-engine/layout-bridge/src/index.d.ts +1 -0
  34. package/dist/layout-engine/layout-bridge/src/inline-box-key.d.ts +3 -0
  35. package/dist/layout-engine/layout-bridge/src/layoutHeaderFooter.d.ts +5 -1
  36. package/dist/layout-engine/layout-bridge/src/run-visual-marks.d.ts +2 -0
  37. package/dist/layout-engine/layout-bridge/src/text-measurement.d.ts +0 -12
  38. package/dist/layout-engine/painters/dom/src/runs/inline-box.d.ts +8 -0
  39. package/dist/public/ui-react.cjs +66 -2
  40. package/dist/public/ui-react.es.js +66 -1
  41. package/dist/public/ui.cjs +1 -1
  42. package/dist/public/ui.es.js +1 -1
  43. package/dist/style.css +134 -98
  44. package/dist/style.layered.css +134 -98
  45. package/dist/superdoc/src/components/CommentsLayer/CommentDialog.vue.d.ts +2 -0
  46. package/dist/superdoc/src/components/CommentsLayer/commentsList/ReviewDirectoryListItem.vue.d.ts +16 -0
  47. package/dist/superdoc/src/components/CommentsLayer/commentsList/commentsList.vue.d.ts +3 -1
  48. package/dist/superdoc/src/components/CommentsLayer/commentsList/super-comments-list.d.ts +12 -0
  49. package/dist/superdoc/src/core/SuperDoc.d.ts +10 -7
  50. package/dist/superdoc/src/core/extensions/index.d.ts +1 -1
  51. package/dist/superdoc/src/core/extensions/types.d.ts +63 -5
  52. package/dist/superdoc/src/core/types/index.d.ts +399 -37
  53. package/dist/superdoc/src/core/v2-integration/v2-integration.d.ts +3 -3
  54. package/dist/superdoc/src/helpers/comment-small-screen.d.ts +10 -0
  55. package/dist/superdoc/src/helpers/v2-review-mutation-impact.d.ts +3 -5
  56. package/dist/superdoc/src/internal/toolbar/built-in/ToolbarButton.vue.d.ts +4 -4
  57. package/dist/superdoc/src/internal/toolbar/built-in-toolbar.d.ts +11 -0
  58. package/dist/superdoc/src/internal/toolbar/compatibility-catalog.d.ts +1 -1
  59. package/dist/superdoc/src/public/index.d.cts +20 -0
  60. package/dist/superdoc/src/public/index.d.ts +10 -0
  61. package/dist/superdoc/src/public/ui/types.d.ts +5 -5
  62. package/dist/superdoc/src/stores/comments-store.d.ts +81 -78
  63. package/dist/superdoc/src/stores/superdoc-store.d.ts +243 -234
  64. package/dist/superdoc.cjs +6667 -2090
  65. package/dist/superdoc.es.js +6540 -1963
  66. package/dist-cdn/style.layered.css +1 -1
  67. package/dist-cdn/superdoc.min.css +1 -1
  68. package/dist-cdn/superdoc.min.js +37 -37
  69. package/package.json +14 -14
  70. package/dist/chunks/_plugin-vue_export-helper-CZ1Nl59K.cjs +0 -11
  71. package/dist/chunks/_plugin-vue_export-helper-DSMAhhwD.es.js +0 -6
  72. package/dist/chunks/constants-BfH0br5u.es.js +0 -3
  73. package/dist/chunks/constants-D7TNtyJd.cjs +0 -14
  74. package/dist/chunks/jszip-C8srOKAO.es.js +0 -4650
  75. package/dist/chunks/jszip-Cs9JBLlJ.cjs +0 -4691
  76. package/dist/superdoc/src/helpers/v2-remote-review-hydration.d.ts +0 -12
  77. package/dist/superdoc/src/helpers/v2-review-mutation-reconciler.d.ts +0 -19
@@ -1,6 +1,6 @@
1
- const require_rolldown_runtime = require("./rolldown-runtime-1Y-nnZJ3.cjs");
2
- const require__plugin_vue_export_helper = require("./_plugin-vue_export-helper-CZ1Nl59K.cjs");
1
+ const require__plugin_vue_export_helper = require("./_plugin-vue_export-helper-SDR04tiH.cjs");
3
2
  let vue = require("vue");
3
+ //#region src/components/surfaces/FindReplaceSurface.vue
4
4
  var _hoisted_1 = ["onKeydown"];
5
5
  var _hoisted_2 = { class: "sd-find-replace__row" };
6
6
  var _hoisted_3 = [
@@ -341,5 +341,6 @@ var _sfc_main = {
341
341
  };
342
342
  }
343
343
  };
344
- var FindReplaceSurface_default = /* @__PURE__ */ require__plugin_vue_export_helper.__plugin_vue_export_helper_default(_sfc_main, [["__scopeId", "data-v-41f37c29"]]);
344
+ var FindReplaceSurface_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main, [["__scopeId", "data-v-41f37c29"]]);
345
+ //#endregion
345
346
  exports.default = FindReplaceSurface_default;
@@ -1,5 +1,6 @@
1
- import { t as __plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-DSMAhhwD.es.js";
1
+ import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BOaGB7Aw.es.js";
2
2
  import { computed, createCommentVNode, createElementBlock, createElementVNode, normalizeClass, onMounted, openBlock, ref, toDisplayString, withKeys, withModifiers } from "vue";
3
+ //#region src/components/surfaces/FindReplaceSurface.vue
3
4
  var _hoisted_1 = ["onKeydown"];
4
5
  var _hoisted_2 = { class: "sd-find-replace__row" };
5
6
  var _hoisted_3 = [
@@ -67,7 +68,7 @@ var _hoisted_20 = {
67
68
  "aria-hidden": "true"
68
69
  };
69
70
  var _hoisted_21 = { class: "sd-find-replace__error-text" };
70
- var FindReplaceSurface_default = /* @__PURE__ */ __plugin_vue_export_helper_default({
71
+ var FindReplaceSurface_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
71
72
  __name: "FindReplaceSurface",
72
73
  props: {
73
74
  surfaceId: {
@@ -340,4 +341,5 @@ var FindReplaceSurface_default = /* @__PURE__ */ __plugin_vue_export_helper_defa
340
341
  };
341
342
  }
342
343
  }, [["__scopeId", "data-v-41f37c29"]]);
344
+ //#endregion
343
345
  export { FindReplaceSurface_default as default };
@@ -1,6 +1,6 @@
1
- const require_rolldown_runtime = require("./rolldown-runtime-1Y-nnZJ3.cjs");
2
- const require__plugin_vue_export_helper = require("./_plugin-vue_export-helper-CZ1Nl59K.cjs");
1
+ const require__plugin_vue_export_helper = require("./_plugin-vue_export-helper-SDR04tiH.cjs");
3
2
  let vue = require("vue");
3
+ //#region src/components/surfaces/PasswordPromptSurface.vue
4
4
  var _hoisted_1 = ["onKeydown"];
5
5
  var _hoisted_2 = ["id"];
6
6
  var _hoisted_3 = { class: "sd-password-prompt__description" };
@@ -109,5 +109,6 @@ var _sfc_main = {
109
109
  };
110
110
  }
111
111
  };
112
- var PasswordPromptSurface_default = /* @__PURE__ */ require__plugin_vue_export_helper.__plugin_vue_export_helper_default(_sfc_main, [["__scopeId", "data-v-ecf7f6fb"]]);
112
+ var PasswordPromptSurface_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main, [["__scopeId", "data-v-ecf7f6fb"]]);
113
+ //#endregion
113
114
  exports.default = PasswordPromptSurface_default;
@@ -1,5 +1,6 @@
1
- import { t as __plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-DSMAhhwD.es.js";
1
+ import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BOaGB7Aw.es.js";
2
2
  import { computed, createCommentVNode, createElementBlock, createElementVNode, openBlock, ref, toDisplayString, vModelText, withDirectives, withKeys, withModifiers } from "vue";
3
+ //#region src/components/surfaces/PasswordPromptSurface.vue
3
4
  var _hoisted_1 = ["onKeydown"];
4
5
  var _hoisted_2 = ["id"];
5
6
  var _hoisted_3 = { class: "sd-password-prompt__description" };
@@ -17,7 +18,7 @@ var _hoisted_6 = {
17
18
  var _hoisted_7 = { class: "sd-password-prompt__actions" };
18
19
  var _hoisted_8 = ["disabled"];
19
20
  var _hoisted_9 = ["disabled"];
20
- var PasswordPromptSurface_default = /* @__PURE__ */ __plugin_vue_export_helper_default({
21
+ var PasswordPromptSurface_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
21
22
  __name: "PasswordPromptSurface",
22
23
  props: {
23
24
  surfaceId: {
@@ -108,4 +109,5 @@ var PasswordPromptSurface_default = /* @__PURE__ */ __plugin_vue_export_helper_d
108
109
  };
109
110
  }
110
111
  }, [["__scopeId", "data-v-ecf7f6fb"]]);
112
+ //#endregion
111
113
  export { PasswordPromptSurface_default as default };
@@ -1,11 +1,14 @@
1
- import { t as __plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-DSMAhhwD.es.js";
2
- import { n as PDF_TO_CSS_UNITS, t as OUTPUT_SCALE } from "./constants-BfH0br5u.es.js";
1
+ import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BOaGB7Aw.es.js";
2
+ import { t as PDF_TO_CSS_UNITS } from "./constants-B6VBlmKp.es.js";
3
3
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, markRaw, mergeProps, normalizeStyle, onBeforeUnmount, onMounted, openBlock, ref, renderList, shallowRef, watch } from "vue";
4
- const floor = (val, precision) => {
4
+ //#region src/core/pdf/helpers/floor.js
5
+ var floor = (val, precision) => {
5
6
  const multiplier = 10 ** (precision || 0);
6
7
  return Math.floor(val * multiplier) / multiplier;
7
8
  };
8
- const readFileAsArrayBuffer = (blob) => {
9
+ //#endregion
10
+ //#region src/core/pdf/helpers/read-file.js
11
+ var readFileAsArrayBuffer = (blob) => {
9
12
  return new Promise((resolve, reject) => {
10
13
  const reader = new FileReader();
11
14
  reader.onload = (event) => resolve(event.target.result);
@@ -13,22 +16,71 @@ const readFileAsArrayBuffer = (blob) => {
13
16
  reader.readAsDataURL(blob);
14
17
  });
15
18
  };
16
- const range = (start, end) => {
19
+ //#endregion
20
+ //#region src/core/pdf/helpers/range.js
21
+ var range = (start, end) => {
17
22
  const length = end - start;
18
23
  return Array.from({ length }, (_, i) => start + i);
19
24
  };
20
- const createPDFConfig = (config) => {
25
+ //#endregion
26
+ //#region src/core/pdf/pdf-adapter.js
27
+ /**
28
+ * @typedef {import('pdfjs-dist').PDFDocumentProxy} PDFDocumentProxy
29
+ * @typedef {import('pdfjs-dist').PDFPageProxy} PDFPageProxy
30
+ */
31
+ /**
32
+ * @typedef {'pdfjs'} AdapterType
33
+ */
34
+ /**
35
+ * @typedef {Object} PDFConfig
36
+ * @property {AdapterType} adapter
37
+ * @property {any} [pdfLib]
38
+ * @property {string} [workerSrc]
39
+ * @property {boolean} [setWorker]
40
+ */
41
+ /**
42
+ * @typedef {Object} PDFJSConfig
43
+ * @property {any} pdfLib
44
+ * @property {string} [workerSrc]
45
+ * @property {boolean} [setWorker]
46
+ */
47
+ /**
48
+ * @typedef {Object} RenderPagesOptions
49
+ * @property {string} documentId
50
+ * @property {PDFDocumentProxy} pdfDocument
51
+ * @property {HTMLElement} viewerContainer
52
+ * @property {function(string, ...any): void} [emit]
53
+ */
54
+ /**
55
+ * @typedef {Object} PageSize
56
+ * @property {number} width
57
+ * @property {number} height
58
+ */
59
+ /**
60
+ * @param {Partial<PDFConfig>} [config]
61
+ * @returns {PDFConfig}
62
+ */
63
+ var createPDFConfig = (config) => {
21
64
  return {
22
65
  adapter: "pdfjs",
23
66
  ...config
24
67
  };
25
68
  };
69
+ /**
70
+ * @abstract
71
+ */
26
72
  var PDFAdapter = class PDFAdapter {
73
+ /**
74
+ * @throws {Error}
75
+ */
27
76
  constructor() {
28
77
  if (Object.getPrototypeOf(this).constructor === PDFAdapter) throw new Error("Abstract class should not be instantiated");
29
78
  }
30
79
  };
31
80
  var PDFJSAdapter = class extends PDFAdapter {
81
+ /**
82
+ * @param {PDFJSConfig} config
83
+ */
32
84
  constructor(config) {
33
85
  super();
34
86
  this.pdfLib = config.pdfLib;
@@ -36,15 +88,30 @@ var PDFJSAdapter = class extends PDFAdapter {
36
88
  if (config.setWorker) if (this.workerSrc) this.pdfLib.GlobalWorkerOptions.workerSrc = config.workerSrc;
37
89
  else this.pdfLib.GlobalWorkerOptions.workerSrc = getWorkerSrcFromCDN(this.pdfLib.version);
38
90
  }
91
+ /**
92
+ * @param {string | ArrayBuffer | Uint8Array} file
93
+ * @returns {Promise<PDFDocumentProxy>}
94
+ */
39
95
  async getDocument(file) {
40
96
  return await this.pdfLib.getDocument(file).promise;
41
97
  }
98
+ /**
99
+ * @param {PDFDocumentProxy} pdf
100
+ * @param {number} firstPage
101
+ * @param {number} lastPage
102
+ * @returns {Promise<PDFPageProxy[]>}
103
+ */
42
104
  async getPages(pdf, firstPage, lastPage) {
43
105
  const pagesPromises = range(firstPage, lastPage + 1).map((num) => pdf.getPage(num));
44
106
  return await Promise.all(pagesPromises);
45
107
  }
46
108
  };
47
109
  var PDFAdapterFactory = class {
110
+ /**
111
+ * @param {PDFJSConfig & {adapter: AdapterType}} config
112
+ * @returns {PDFAdapter}
113
+ * @throws {Error}
114
+ */
48
115
  static create(config) {
49
116
  const adapters = {
50
117
  pdfjs: () => {
@@ -57,12 +124,18 @@ var PDFAdapterFactory = class {
57
124
  return (adapters[config.adapter] ?? adapters.default)();
58
125
  }
59
126
  };
127
+ /**
128
+ * @param {number} version
129
+ * @returns {string}
130
+ */
60
131
  function getWorkerSrcFromCDN(version) {
61
132
  return `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${version}/pdf.worker.min.mjs`;
62
133
  }
134
+ //#endregion
135
+ //#region src/components/PdfViewer/PdfViewerPage.vue
63
136
  var _hoisted_1$1 = ["data-page-id", "data-page-number"];
64
137
  var _hoisted_2 = { class: "sd-pdf-viewer-page__canvas-wrapper" };
65
- var PdfViewerPage_default = /* @__PURE__ */ __plugin_vue_export_helper_default({
138
+ var PdfViewerPage_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
66
139
  __name: "PdfViewerPage",
67
140
  props: {
68
141
  config: {
@@ -161,9 +234,8 @@ var PdfViewerPage_default = /* @__PURE__ */ __plugin_vue_export_helper_default({
161
234
  });
162
235
  const pageStyle = computed(() => {
163
236
  const { width: widthPt, height: heightPt } = getPagePtSize();
164
- const scaleFactor = getScaleFactor();
165
237
  return {
166
- "--scale-factor": `${scaleFactor}`,
238
+ "--scale-factor": `${getScaleFactor()}`,
167
239
  width: `calc(var(--scale-factor) * ${widthPt}px)`,
168
240
  height: `calc(var(--scale-factor) * ${heightPt}px)`
169
241
  };
@@ -224,7 +296,7 @@ var PdfViewerPage_default = /* @__PURE__ */ __plugin_vue_export_helper_default({
224
296
  await renderTask.promise;
225
297
  const size = getPageSize();
226
298
  const originalPt = getPagePtSize();
227
- emit("page-rendered", {
299
+ const payload = {
228
300
  page: props.page,
229
301
  documentId: props.page.documentId,
230
302
  pageIndex: pageIdx.value,
@@ -233,7 +305,8 @@ var PdfViewerPage_default = /* @__PURE__ */ __plugin_vue_export_helper_default({
233
305
  height: size.height,
234
306
  originalWidth: originalPt.width * PDF_TO_CSS_UNITS,
235
307
  originalHeight: originalPt.height * PDF_TO_CSS_UNITS
236
- });
308
+ };
309
+ emit("page-rendered", payload);
237
310
  } catch (e) {
238
311
  destroyRenderTask();
239
312
  emit("page-error", props.page);
@@ -306,7 +379,7 @@ var PdfViewerPage_default = /* @__PURE__ */ __plugin_vue_export_helper_default({
306
379
  };
307
380
  }
308
381
  }, [["__scopeId", "data-v-d7a9857d"]]);
309
- var PdfViewerDocument_default = /* @__PURE__ */ __plugin_vue_export_helper_default({
382
+ var PdfViewerDocument_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
310
383
  __name: "PdfViewerDocument",
311
384
  props: {
312
385
  config: {
@@ -376,8 +449,10 @@ var PdfViewerDocument_default = /* @__PURE__ */ __plugin_vue_export_helper_defau
376
449
  };
377
450
  }
378
451
  }, [["__scopeId", "data-v-2152178b"]]);
452
+ //#endregion
453
+ //#region src/components/PdfViewer/PdfViewer.vue
379
454
  var _hoisted_1 = { class: "sd-pdf-viewer__main" };
380
- var PdfViewer_default = /* @__PURE__ */ __plugin_vue_export_helper_default({
455
+ var PdfViewer_default = /*#__PURE__*/ _plugin_vue_export_helper_default({
381
456
  __name: "PdfViewer",
382
457
  props: {
383
458
  config: {
@@ -389,6 +464,11 @@ var PdfViewer_default = /* @__PURE__ */ __plugin_vue_export_helper_default({
389
464
  required: true
390
465
  },
391
466
  fileId: { type: String },
467
+ /**
468
+ * Zoom scale to render the first paint at (1 = 100%). The host seeds
469
+ * this from `config.zoom.initial` so a PDF never flashes 100% before
470
+ * a watcher catches up; later changes still arrive via updateScale().
471
+ */
392
472
  initialScale: {
393
473
  type: Number,
394
474
  default: 1
@@ -447,16 +527,19 @@ var PdfViewer_default = /* @__PURE__ */ __plugin_vue_export_helper_default({
447
527
  renderedPages.value = 0;
448
528
  }
449
529
  function updateScale(nextScale) {
450
- scale.value = floor(nextScale, 2);
530
+ const roundedScale = floor(nextScale, 2);
531
+ scale.value = roundedScale;
451
532
  }
452
533
  __expose({ updateScale });
453
534
  async function getDocument(file) {
454
535
  if (!file) return;
455
536
  try {
456
537
  const result = await readFileAsArrayBuffer(file);
538
+ const documentId = props.fileId || generateDocumentId("document");
539
+ const pdfjsDocument = await pdfAdapter.getDocument(result);
457
540
  pdf.value = {
458
- documentId: props.fileId || generateDocumentId("document"),
459
- pdfjsDocument: markRaw(await pdfAdapter.getDocument(result))
541
+ documentId,
542
+ pdfjsDocument: markRaw(pdfjsDocument)
460
543
  };
461
544
  emit("document-loaded", file);
462
545
  } catch (e) {
@@ -480,9 +563,9 @@ var PdfViewer_default = /* @__PURE__ */ __plugin_vue_export_helper_default({
480
563
  pdfjsPage: markRaw(pdfjsPage)
481
564
  };
482
565
  };
483
- const pages$1 = pdfjsPages.map(mapPages);
484
- updatePages(pages$1);
485
- emit("pages-loaded", pages$1);
566
+ const pages = pdfjsPages.map(mapPages);
567
+ updatePages(pages);
568
+ emit("pages-loaded", pages);
486
569
  } catch (e) {
487
570
  emit("document-error", e);
488
571
  console.error(e);
@@ -528,4 +611,5 @@ var PdfViewer_default = /* @__PURE__ */ __plugin_vue_export_helper_default({
528
611
  };
529
612
  }
530
613
  }, [["__scopeId", "data-v-05c9d9b5"]]);
614
+ //#endregion
531
615
  export { PdfViewer_default as default };
@@ -1,12 +1,14 @@
1
- const require_rolldown_runtime = require("./rolldown-runtime-1Y-nnZJ3.cjs");
2
- const require__plugin_vue_export_helper = require("./_plugin-vue_export-helper-CZ1Nl59K.cjs");
3
- const require_constants = require("./constants-D7TNtyJd.cjs");
1
+ const require__plugin_vue_export_helper = require("./_plugin-vue_export-helper-SDR04tiH.cjs");
2
+ const require_constants = require("./constants-DpXuDx_g.cjs");
4
3
  let vue = require("vue");
5
- const floor = (val, precision) => {
4
+ //#region src/core/pdf/helpers/floor.js
5
+ var floor = (val, precision) => {
6
6
  const multiplier = 10 ** (precision || 0);
7
7
  return Math.floor(val * multiplier) / multiplier;
8
8
  };
9
- const readFileAsArrayBuffer = (blob) => {
9
+ //#endregion
10
+ //#region src/core/pdf/helpers/read-file.js
11
+ var readFileAsArrayBuffer = (blob) => {
10
12
  return new Promise((resolve, reject) => {
11
13
  const reader = new FileReader();
12
14
  reader.onload = (event) => resolve(event.target.result);
@@ -14,22 +16,71 @@ const readFileAsArrayBuffer = (blob) => {
14
16
  reader.readAsDataURL(blob);
15
17
  });
16
18
  };
17
- const range = (start, end) => {
19
+ //#endregion
20
+ //#region src/core/pdf/helpers/range.js
21
+ var range = (start, end) => {
18
22
  const length = end - start;
19
23
  return Array.from({ length }, (_, i) => start + i);
20
24
  };
21
- const createPDFConfig = (config) => {
25
+ //#endregion
26
+ //#region src/core/pdf/pdf-adapter.js
27
+ /**
28
+ * @typedef {import('pdfjs-dist').PDFDocumentProxy} PDFDocumentProxy
29
+ * @typedef {import('pdfjs-dist').PDFPageProxy} PDFPageProxy
30
+ */
31
+ /**
32
+ * @typedef {'pdfjs'} AdapterType
33
+ */
34
+ /**
35
+ * @typedef {Object} PDFConfig
36
+ * @property {AdapterType} adapter
37
+ * @property {any} [pdfLib]
38
+ * @property {string} [workerSrc]
39
+ * @property {boolean} [setWorker]
40
+ */
41
+ /**
42
+ * @typedef {Object} PDFJSConfig
43
+ * @property {any} pdfLib
44
+ * @property {string} [workerSrc]
45
+ * @property {boolean} [setWorker]
46
+ */
47
+ /**
48
+ * @typedef {Object} RenderPagesOptions
49
+ * @property {string} documentId
50
+ * @property {PDFDocumentProxy} pdfDocument
51
+ * @property {HTMLElement} viewerContainer
52
+ * @property {function(string, ...any): void} [emit]
53
+ */
54
+ /**
55
+ * @typedef {Object} PageSize
56
+ * @property {number} width
57
+ * @property {number} height
58
+ */
59
+ /**
60
+ * @param {Partial<PDFConfig>} [config]
61
+ * @returns {PDFConfig}
62
+ */
63
+ var createPDFConfig = (config) => {
22
64
  return {
23
65
  adapter: "pdfjs",
24
66
  ...config
25
67
  };
26
68
  };
69
+ /**
70
+ * @abstract
71
+ */
27
72
  var PDFAdapter = class PDFAdapter {
73
+ /**
74
+ * @throws {Error}
75
+ */
28
76
  constructor() {
29
77
  if (Object.getPrototypeOf(this).constructor === PDFAdapter) throw new Error("Abstract class should not be instantiated");
30
78
  }
31
79
  };
32
80
  var PDFJSAdapter = class extends PDFAdapter {
81
+ /**
82
+ * @param {PDFJSConfig} config
83
+ */
33
84
  constructor(config) {
34
85
  super();
35
86
  this.pdfLib = config.pdfLib;
@@ -37,15 +88,30 @@ var PDFJSAdapter = class extends PDFAdapter {
37
88
  if (config.setWorker) if (this.workerSrc) this.pdfLib.GlobalWorkerOptions.workerSrc = config.workerSrc;
38
89
  else this.pdfLib.GlobalWorkerOptions.workerSrc = getWorkerSrcFromCDN(this.pdfLib.version);
39
90
  }
91
+ /**
92
+ * @param {string | ArrayBuffer | Uint8Array} file
93
+ * @returns {Promise<PDFDocumentProxy>}
94
+ */
40
95
  async getDocument(file) {
41
96
  return await this.pdfLib.getDocument(file).promise;
42
97
  }
98
+ /**
99
+ * @param {PDFDocumentProxy} pdf
100
+ * @param {number} firstPage
101
+ * @param {number} lastPage
102
+ * @returns {Promise<PDFPageProxy[]>}
103
+ */
43
104
  async getPages(pdf, firstPage, lastPage) {
44
105
  const pagesPromises = range(firstPage, lastPage + 1).map((num) => pdf.getPage(num));
45
106
  return await Promise.all(pagesPromises);
46
107
  }
47
108
  };
48
109
  var PDFAdapterFactory = class {
110
+ /**
111
+ * @param {PDFJSConfig & {adapter: AdapterType}} config
112
+ * @returns {PDFAdapter}
113
+ * @throws {Error}
114
+ */
49
115
  static create(config) {
50
116
  const adapters = {
51
117
  pdfjs: () => {
@@ -58,9 +124,15 @@ var PDFAdapterFactory = class {
58
124
  return (adapters[config.adapter] ?? adapters.default)();
59
125
  }
60
126
  };
127
+ /**
128
+ * @param {number} version
129
+ * @returns {string}
130
+ */
61
131
  function getWorkerSrcFromCDN(version) {
62
132
  return `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${version}/pdf.worker.min.mjs`;
63
133
  }
134
+ //#endregion
135
+ //#region src/components/PdfViewer/PdfViewerPage.vue
64
136
  var _hoisted_1$1 = ["data-page-id", "data-page-number"];
65
137
  var _hoisted_2 = { class: "sd-pdf-viewer-page__canvas-wrapper" };
66
138
  var _sfc_main$2 = {
@@ -162,9 +234,8 @@ var _sfc_main$2 = {
162
234
  });
163
235
  const pageStyle = (0, vue.computed)(() => {
164
236
  const { width: widthPt, height: heightPt } = getPagePtSize();
165
- const scaleFactor = getScaleFactor();
166
237
  return {
167
- "--scale-factor": `${scaleFactor}`,
238
+ "--scale-factor": `${getScaleFactor()}`,
168
239
  width: `calc(var(--scale-factor) * ${widthPt}px)`,
169
240
  height: `calc(var(--scale-factor) * ${heightPt}px)`
170
241
  };
@@ -225,7 +296,7 @@ var _sfc_main$2 = {
225
296
  await renderTask.promise;
226
297
  const size = getPageSize();
227
298
  const originalPt = getPagePtSize();
228
- emit("page-rendered", {
299
+ const payload = {
229
300
  page: props.page,
230
301
  documentId: props.page.documentId,
231
302
  pageIndex: pageIdx.value,
@@ -234,7 +305,8 @@ var _sfc_main$2 = {
234
305
  height: size.height,
235
306
  originalWidth: originalPt.width * require_constants.PDF_TO_CSS_UNITS,
236
307
  originalHeight: originalPt.height * require_constants.PDF_TO_CSS_UNITS
237
- });
308
+ };
309
+ emit("page-rendered", payload);
238
310
  } catch (e) {
239
311
  destroyRenderTask();
240
312
  emit("page-error", props.page);
@@ -307,7 +379,9 @@ var _sfc_main$2 = {
307
379
  };
308
380
  }
309
381
  };
310
- var PdfViewerPage_default = /* @__PURE__ */ require__plugin_vue_export_helper.__plugin_vue_export_helper_default(_sfc_main$2, [["__scopeId", "data-v-d7a9857d"]]);
382
+ var PdfViewerPage_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$2, [["__scopeId", "data-v-d7a9857d"]]);
383
+ //#endregion
384
+ //#region src/components/PdfViewer/PdfViewerDocument.vue
311
385
  var _sfc_main$1 = {
312
386
  __name: "PdfViewerDocument",
313
387
  props: {
@@ -378,7 +452,9 @@ var _sfc_main$1 = {
378
452
  };
379
453
  }
380
454
  };
381
- var PdfViewerDocument_default = /* @__PURE__ */ require__plugin_vue_export_helper.__plugin_vue_export_helper_default(_sfc_main$1, [["__scopeId", "data-v-2152178b"]]);
455
+ var PdfViewerDocument_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$1, [["__scopeId", "data-v-2152178b"]]);
456
+ //#endregion
457
+ //#region src/components/PdfViewer/PdfViewer.vue
382
458
  var _hoisted_1 = { class: "sd-pdf-viewer__main" };
383
459
  var _sfc_main = {
384
460
  __name: "PdfViewer",
@@ -392,6 +468,11 @@ var _sfc_main = {
392
468
  required: true
393
469
  },
394
470
  fileId: { type: String },
471
+ /**
472
+ * Zoom scale to render the first paint at (1 = 100%). The host seeds
473
+ * this from `config.zoom.initial` so a PDF never flashes 100% before
474
+ * a watcher catches up; later changes still arrive via updateScale().
475
+ */
395
476
  initialScale: {
396
477
  type: Number,
397
478
  default: 1
@@ -450,16 +531,19 @@ var _sfc_main = {
450
531
  renderedPages.value = 0;
451
532
  }
452
533
  function updateScale(nextScale) {
453
- scale.value = floor(nextScale, 2);
534
+ const roundedScale = floor(nextScale, 2);
535
+ scale.value = roundedScale;
454
536
  }
455
537
  __expose({ updateScale });
456
538
  async function getDocument(file) {
457
539
  if (!file) return;
458
540
  try {
459
541
  const result = await readFileAsArrayBuffer(file);
542
+ const documentId = props.fileId || generateDocumentId("document");
543
+ const pdfjsDocument = await pdfAdapter.getDocument(result);
460
544
  pdf.value = {
461
- documentId: props.fileId || generateDocumentId("document"),
462
- pdfjsDocument: (0, vue.markRaw)(await pdfAdapter.getDocument(result))
545
+ documentId,
546
+ pdfjsDocument: (0, vue.markRaw)(pdfjsDocument)
463
547
  };
464
548
  emit("document-loaded", file);
465
549
  } catch (e) {
@@ -483,9 +567,9 @@ var _sfc_main = {
483
567
  pdfjsPage: (0, vue.markRaw)(pdfjsPage)
484
568
  };
485
569
  };
486
- const pages$1 = pdfjsPages.map(mapPages);
487
- updatePages(pages$1);
488
- emit("pages-loaded", pages$1);
570
+ const pages = pdfjsPages.map(mapPages);
571
+ updatePages(pages);
572
+ emit("pages-loaded", pages);
489
573
  } catch (e) {
490
574
  emit("document-error", e);
491
575
  console.error(e);
@@ -531,5 +615,6 @@ var _sfc_main = {
531
615
  };
532
616
  }
533
617
  };
534
- var PdfViewer_default = /* @__PURE__ */ require__plugin_vue_export_helper.__plugin_vue_export_helper_default(_sfc_main, [["__scopeId", "data-v-05c9d9b5"]]);
618
+ var PdfViewer_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main, [["__scopeId", "data-v-05c9d9b5"]]);
619
+ //#endregion
535
620
  exports.default = PdfViewer_default;
@@ -0,0 +1,8 @@
1
+ //#region \0plugin-vue:export-helper
2
+ var _plugin_vue_export_helper_default = (sfc, props) => {
3
+ const target = sfc.__vccOpts || sfc;
4
+ for (const [key, val] of props) target[key] = val;
5
+ return target;
6
+ };
7
+ //#endregion
8
+ export { _plugin_vue_export_helper_default as t };
@@ -0,0 +1,13 @@
1
+ //#region \0plugin-vue:export-helper
2
+ var _plugin_vue_export_helper_default = (sfc, props) => {
3
+ const target = sfc.__vccOpts || sfc;
4
+ for (const [key, val] of props) target[key] = val;
5
+ return target;
6
+ };
7
+ //#endregion
8
+ Object.defineProperty(exports, "_plugin_vue_export_helper_default", {
9
+ enumerable: true,
10
+ get: function() {
11
+ return _plugin_vue_export_helper_default;
12
+ }
13
+ });
@@ -1,4 +1,6 @@
1
+ //#region ../../shared/common/data/blank.docx?url
1
2
  var blank_default = "data:application/octet-stream;base64,UEsDBBQAAAAIAAAAIQAykW9XXwEAAKUFAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbLWUTWsCMRBA74X+hyVXcaM9lFJcPfTj2BZqf0BMZndDk5mQjLr++7Jql1KsC1Uve0nmvRdYZjJrvMtWEJMlLMQ4H4kMUJOxWBXiY/48vBNZYoVGOUIoxAaSmE2vrybzTYCUNd5hKkTNHO6lTLoGr1JOAbDxrqToFaecYiWD0p+qAnkzGt1KTciAPOSWIaaTRyjV0nH21DDgriSCSyJ72F1sXYVQITirFVtCuULzyzLcG/IIbnsn1TakQeOdkAcN7cnfgv3c6wpitAayNxX5RXkohFxTNNKQXnpAzo9jDnRSWVoN3XxLC5E0pGSx8i7vTryyOOjrwKVfQLRYnT+kQ/dGJN44SOcv2HH79cBssbpEwJ7cm7CGxfvFKn7Ae0NKQp6rhYPzZ3To3giuwcPuOz65Y4s5pjSk3yKFJDXFfzz7e2+008MQKUBke/yv64wqhJPfB+1KMmAOuOV2yU6/AFBLAwQUAAAACAAAACEAAAAAAAIAAAAAAAAACQAAAGRvY1Byb3BzLwMAUEsDBBQAAAAIAAAAIQCGoakSbgEAAM0CAAAQAAAAZG9jUHJvcHMvYXBwLnhtbJ2STWvcMBCG74X+B+N7LG8PoYRZhbIm9NCPBTvJeZDGtoikEZI2rP99sd3dddtbb/M+mnnnA8Hj2dninWIy7PflrqrLgrxibfywL5+7p7vPZZEyeo2WPe3LiVL5KD9+gGPkQDEbSsXZWZ/25ZhzeBAiqZEcpooD+bOzPUeHOVUcB8F9bxQ1rE6OfBaf6vpe0DmT16TvwtWwXB0f3vP/mmpW83zppZsCpVJCRy5YzCR/zJW20pwdiCuFjjPazjiSNYibgCMOlOQOxBrAK0ed5pw1gMOIEVWmuMCNgi8hWKMwG/byu1GRE/e5+LkMW8zVILYp0LBqSZ2iydNstZXwzXhaGqwBHDHiEDGMC9woaBVaOkQOskebCMQNwIFdQD/J9hQoNqxAXMjc4C09h46b+Rq/S/+Em1VfTR7bgIr+WnrDoR0xkm5YXQe5Avg6BYp2dj+M6AfSl5x/H+Yzvqy/U+7uq7qu6+VuFwbi9g/lL1BLAwQUAAAACAAAACEAhRXCKnABAAD7AgAAEQAAAGRvY1Byb3BzL2NvcmUueG1snZJNT+MwEIbvSPsfIt8TO2EXIStNJRZxWqSVKFrEzYyHYhp/yOOS9N+vkrQpFT1x88w888741dTL3rbZB0Yy3i1YWQiWoQOvjVsv2OPqLr9mGSXltGq9wwXbIbFl8+OihiDBR/wbfcCYDFLW29aRhLBgbykFyTnBG1pFhQ/oetu++mhVosLHNQ8KNmqNvBLiiltMSquk+CCYh1mR7SU1zJJhG9tRQAPHFi26RLwsSn5kE0ZLZxvGyifSmrQLeBY9FGe6JzODXdcV3eWIVkKU/On+z8P41dy4wStA1tQaZDKpxabmx6cGSduXd4Q0pedAg4SIKvnYPGwDxlsP2QopZY+EcUQP5cH4De46HzU1NT+JNEiNBNGEZLybRpwkIMhWUbr32rwa1De7s9O+UkNjxA8zXElTjcQc1nvLpw1RZz0ZORl7qPy7/H27umNNJaqfeVnl5dWqqqT4JYV4HpY86T8K2v0C31Y8CEw+nZ5r8x9QSwMEFAAAAAgAAAAhAAAAAAACAAAAAAAAAAYAAABfcmVscy8DAFBLAwQUAAAACAAAACEAHpEat+kAAABOAgAACwAAAF9yZWxzLy5yZWxzrZLBSgMxEIbvgu8Q5t6dbQURabYXEXoTWR9gSGZ3Q5NMSKJu314ERRdq6cHr8PPNN8O/3c3BqzfOxUnUsG5aUByNWBdHDS/94+oOVKkULXmJrOHIBXbd9dX2mT1VJ7FMLhU1Bx+LhqnWdI9YzMSBSiOJ4xz8IDlQLY3kEROZA42Mm7a9xfybAd2CqfZWQ97bG1D9MfElbBkGZ/hBzGvgWE+sQJ4rR8t2lbIkztVxAdVTHrlqsGKesqSClFIzBw942mhzudHf12LgSpYqoZHM530+E+eE1v/5omXix+ZdskX7Nf62wUULug9QSwMEFAAAAAgAAAAhAAAAAAACAAAAAAAAAAUAAAB3b3JkLwMAUEsDBBQAAAAIAAAAIQDscNBiEwIAALQHAAASAAAAd29yZC9mb250VGFibGUueG1svZPNbqMwEIDvlfoOlu8Nw0/SFIVUbbeR9rKHVfcBHGOCtf5BthPI268wECmkuy3tqnCwGWY+jz/D6r6RAh2YsVyrDIczwIgpqnOudhn+9bK5WWJkHVE5EVqxDB+Zxffr66tVnRZaOYsaKZRNJc1w6VyVBoGlJZPEznTFVCNFoY0kzs602QWSmN/76oZqWRHHt1xwdwwigAW+vkII9SzzHpQuCk7ZN033kinnIYFhgjiulS15Zc+Q9XuQtTZ5ZTRl1nK1k6KDSsLVOStMLmiSU6OtLtyMatn35nlBBCH4mRQjynwaJXqdsqCsmQZa9qCAsuYCxvNpsMUJxvMx7GNtjSn5fhInioeO2qEtHwNt7vJyGnM4waCtJY6UxJYXWDZtv/MT8yhZg5Gk6fed0oZsBctwHSaoDufIg1F3Mu2AuhNHwz6QN4TXXTP9T4nqVBHJMvzCJbPoB6vRTy2JGtL61IoobVmI6vRARIah3egCYphDAnOIIIYEB+cltCTGMncqgXFCQSQXx+G98auOUiruaDlkHIjh7Y7HSZbvUJ3u7RYy/AwA0fNmg7tImOEnALhdzh/7SNR24q+7PhKfItBGqOf4x7DjUM855Qyrr4LO4F98Pum94cy0Rt90eQsx3Hmnrcvk0y6lzpn5t8yCNyz/iMkk/mqTD4YT8abDR1hA4h1292cd2ppb+3++x4evtjhM7foPUEsDBBQAAAAIAAAAIQCWFrgr0gIAAIgLAAARAAAAd29yZC9kb2N1bWVudC54bWyllt1u2yAUx+8n7R0s7huM7TiJVbfSmq3qxaRq3R6AALFRDVhA4mRPP2HHH5unKnaugONzfvw5B458/3gShXdk2nAlU4AWPvCYJIpymaXg189vd2vgGYslxYWSLAVnZsDjw+dP91VCFTkIJq13EoU0SVWSFOTWlgmEhuRMYLMQnGhl1N4uiBJQ7fecMFgpTWHgI7+elVoRZgyX2ROWR2zABUdO19GoxhWXmQNGkORYW3bqGWgyZAk3cD0GBTNAyIcBGqPCyagYOlUjUDQLhPwxaTmP9J/DxfNIwZi0mkcKx6T1PNLoOonxBVclkydR7JUW2JqF0hkUWL8fyjuiRIkt3/GC2zMMfD9uMZjL9xmKuHzvCCKkkwkrKBRlRUhbikrBQcvkEn/XxTvpSRN/GboIVly3beCjDWQnWxjbxuprcteEby+Npc4a1KzAlitpcl523UHMpQls8xZy/CgBR1GArrOh6LbWtm3K0AOvkX+pnSga5R8TkX9FNR2ii7hGwt97tkoE5rLfeFZqBslFy2mAYASICTtNY6wvDEj61+04nE7jxB2H0wFnnpgBgB4mIYKw1eEGFz5gGWppPg3X1gi6WGxxjk0+JLJpB1x2uLMY5LvMbntUz1odyp7Gb6O99O21ktMO6Mf/VrA0t4l5y3HJgCdI8pJJpfGuYCmoUORVaOnVFfCa6+oGr3kBXltrr75Anuta4OG+SnaKnt1YehWKkhJr/EJTEKFNHMUrBGqrZSfrrH603KxXmyXwqkQbTn+kwPeDMNyuvnSmV+2MIfKjp6+dccv2+FDYsfvrwBk6GYYR+6qv5dfCs7ffXuU6FgqCyHeOeQrQch35DbLMvmNHtKpMAYoaF82z3PbLnbJWiX5dsP3ga84wZToFq6Be7pWyg2V2sPXysh1RhfGqxJSYsManNlNFnrUrSVJwyV65JXkKwrj+Cttz19OmIrD/hX74A1BLAwQUAAAACAAAACEAyudliigEAAC+DAAAEQAAAHdvcmQvc2V0dGluZ3MueG1stVfbbttGEH0v0H8g+FxZXF4kmTAd6No4sJoictDnFTmUFt4LMbs0rRT994KXldSaCKQEfuLynJkzs5eZJe8+vAruvABqpmTikhvPdUCmKmNyl7hfn1aDietoQ2VGuZKQuAfQ7of7X3+5q2INxjC5086r4FLHIk3cvTFFPBzqdA+C6htVgHwVPFcoqNE3CndDQfG5LAapEgU1bMs4M4eh73kjt5NRiVuijDuJgWApKq1yU7vEKs9ZCt3DeuAlcVuXhUpLAdI0EYcInBqmpN6zQls18aNqgpq9FXn53iReBLd2FfEumG6lMDt6XJJe7VCgSkFrJneC2wSZPAUO3wgdY9+kSnRTbKSGvke8ZnSeeXSdgP9GYJTC63Uak05jmMLruQ7LrtMZHXVYdqbzY8mcCWTlVRJ+YPOoH7X7mZbOTLa/Ts7u0bD2pYbuqd6fK8J1E4yOcgdxWm/NLzmBLfXItkjxcH78RBo/7KRCuuWQuBUJnYpETpOd025l/XDa0+HYdXCaxXXv76r4m1LCqeICMAVpEpf4njusiQKVyjeGGnCqWBfAedPDUg5Uuk4V75AKQdEijU8GOS25eaLbjVGFU8UvlCfu2Eqme4o0NYCbgqZM7uZKGlTc2mXqD2XmShQIWnceTV87jTZtj3SqWFIBifufvrdWGdSZlcgu3xnXRifRecj/B1IvgMgyeKoXemMOHFZKmg37BlOZfSq1YTlLm+73Exl8LwGQdeTPBcinQwEroKZE0O8UrNmJFWfFmiEqfJAZSPNuwVieA4I0jBpYl9wwVFWzzh+BZoDvFbfU8JfCzPdI8IQ0fZ4pY5T4eCj2IH9yJ5vzPjw/vqhZpu3gi1LmaOr5QbAYz9pMa/YSJiBeOF/2MiNvRfp9pmHgBb3MnCxI2M9Ek9m8jwlvwxGZ9jGjyF+GUR8znfmTYNLHzGZkHPUy83kwD1a9zNJb9M9nOffH497cVre+d7vsdqfbExHXnxp/oh3Vhe2I1mNOxRYZddb1x8iwttji84xJy28hVwjnzKbcWnIwaAktKOcrpKklvBbPmC4WkDdjvqa4O+l2FtiLZpB/OmrVXRvwd1Rl0bIV0qItWGtCwrDzZNI8MmFxXW431ktSPJxRpcw+v2CzTqflqWKzB9E0vkfaFFJjC3LwddMVGsdNXSSwpkXR1tp2RxKXs93ekLo8DEncjOJz87Ld+R3nN5zfcs0LTeuZkcTtBifMt9iZXWCx4ISFFgtPWGSx6ISNLDaqsf2hAORMPifucVjjueJcVZB9PPFvIHsJpkxQvjmI7eluu2k5zrTZQEGRGoWW+63hSBhnKn2o7+uwxYPpNFpMvXFLR831aZpWxeTuC+QzqiHrOOsata5/j0beiJD5ZBBOlreD5TgMBxMyux2Mx96YBCviBxPvn64O7I/H/b9QSwMEFAAAAAgAAAAhANuFbMNjBAAAlx0AABIAAAB3b3JkL251bWJlcmluZy54bWzNmctu4zYUhvcF+g6CgC5jkbrbiDJIMkmRwXRQdFJ0TUu0RYQXgaR82c7L9BH6WPMKBWVLdiJPKslO45USkufT4c9zpD/K5YcVo9YCS0UET2w4AraFeSoywueJ/efj/UVsW0ojniEqOE7sNVb2h6uff7pcTnjJplgSPrdWjHI1WRZpYudaFxPHUWmOGVIjRlIplJjpUSqYI2YzkmJnKWTmuACC6qdCihQrRfj8FvEFUvYWl6660TKJloTPDdB30hxJjVc7BuwNCZyxE7dB7gAQBI4L2yivNyp0TFYtkD8IBEGbFAwjHdhcOIzktknRMJLXJsXDSK1yYu0CFwXmK0ZnQjKk1UjIucOQfCqLi1SwAmkyJZToteMCENYYRPjTgIwIf2oIzMt6EyKHiQxTL6spIrFLySfb+Ism3qQ+2cRvL00Ept1u6wI4dvBKU6XrWNlFu034R5GWDHNdqeZITJEmgqucFM3TgQ2lMaTzGrJ4TYAFo3bzZIP+cY+2j5tj2AG7pL89O0Y3mb9OhKDDaRpEE9Elhef3rDNhiPDdjQdJsycuDPoB3BYgTPGqHyPeMpx0192GQ7J+nLDhkGyPMyyZPUBW9kK4Xp2HuZjwPZbKdJb3w9Vn5JhYpFGOVL5PxP02GDS4NdvTu5gf11S/SlEWOxo5jvawe7wueb8NgvDlCRbquGS+5qjAtsXSycOcC4mmFCf2EvrWEgZWdQLWplzNxdp0gFWftVUVkGWeWvbV5XKCpkpLlOovJbOe/faQJTawDXMisdJImsGNp7ueaSxvJEZPZomhcGXuNlkgmtgwhG54AyLbMTOspJp8xgtMH9cFrtfk66kk2W9mjpq5zVrNClqvCODdrX8H4s0MXZgJQhd0k9REFzRNbOCDMQAAVjlUOTZJbOJ4ye5ZMzgtKcW6IT7iVTP1/ds/zfintB6leLZdXvwuzYVws00znNiRW2WSIz6vDLEXArPWaRbL7eVecK2MuColJLG/rtlU0Cr0mqvnA4TrxM7wDJVUb2EVxakSe6kEbCnhVSOYa6TJApsVRysj+uoCfX+YMLeilARL6wte7qnzYjRV7YX9VHNbqgWnV+37t7/76ubCcJhufxE+N3+TqT3Vno/1E8g70GBvIFDvhnPj+L07zj/LjvNCcNYdF5xpx/meex4dF55pxwXAf++Oi86y44IoPOuOi8+040I/fq+Oc5652/+0vnCI9Q3iCEDv5vo463t3F/owuvW7WN/7jseY4ZQwRA+e4y9wdGLv29GuwvHAoqRiieVnrDWWh3fkjk7tWjt6SXhzzJb+EAzxwzvyDu1Iknnew1DCuMOWvAM1NmxLr9acPzq1/evo2N6u6ILRqY1bRzv1ZkUX9i+6lqfqVHTh/1N00ejUDqijaXm7ootHp/YuHR3FmxXduH/RtWzFD4qu7QF49e7ne+988+FskpXVZ7VqEADoR+PQffm57KF57df34geY7iGmHwcBjHwIf8yE+0xn7x+qV/8CUEsDBBQAAAAIAAAAIQC+fnZiWAEAANADAAAUAAAAd29yZC93ZWJTZXR0aW5ncy54bWyd019LwzAQAPB3we8Q8r6lnduQsm4gMvFFBPUDZOmtDeZyJclM56eXdn+s7GX16ULgftwfbrFq0LAvcF6TzXk6TjgDq6jQtsz5x/t6dM+ZD9IW0pCFnO/B89Xy9mYRswibNwhB29KzBo31GaqcVyHUmRBeVYDSj6kG26DZkkMZ/JhcKVC6z109UoS1DHqjjQ57MUmSOT8y7hqFtlut4JHUDsGGLl84MDJosr7StT9p8RotkitqRwq817ZEc/BQantm0ukFhFo58rQNY0V4rKijxCRJk+6F5heYDQMmF8BcQTPMuD8aQkHTd3QxzJmfHV30nP8V0wOK3SBicneqow1tes/yRSiqYdxpR6LNlUFW0ld9EYY1ODtze2znjSp7Li05uTGQ85hOWUxnrIPZYQttYIfFslMLrJsLXy5iRnXQqL9hTe7BUfTgRPstjaH4+vIklgvx5w6XP1BLAwQUAAAACAAAACEAP6/hZjkOAAANpgAADwAAAHdvcmQvc3R5bGVzLnhtbO1dXXPiOBZ936r9Dy6eZh66AUk2kBp6Kkl3b7o2/TFDeudZ2AI0sSXWFk0yv35L/gCDLbDRhUl3baUqCcb3SNa551q6sqVffn2KQucbixMuxbjTf93rOEz4MuBiPu58fXj/athxEkVFQEMp2LjzzJLOr2/++Y9f1leJeg5Z4jxFoUiuIn/cWSi1vOp2E3/BIpq8lksmnqJwJuOIquS1jOfdiMaPq+UrX0ZLqviUh1w9d1Gv53VymLgJipzNuM/eSn8VMaFS+27MQqq4FMmCL5MCbd0EbS3jYBlLnyUJF/MozPAiysUGpk8qQBH3Y5nImXrtyyivUQrVRb1+L/0vCrcAbjsAVAHwfPbUDmOYY3R99lTG4UE7HG+Dw4MSzmmVKQEEq1YQCBf10H+0eQkrCVSwaAdXcNTVtlTRBU0WZUTW7gLdDdxzpNs78q8+zIWM6TRk4866T5x133VSYCdjQf9xMmKd4hKctF06b35ZXwXSf8tmdBWqRH+Mv8T5x/xT+ue9FCpx1lc08Tkfd65jTsOOs75iNFHXCacPCxaxcSfiQsZ31yLh+suF/qd0sp+MOw88Yonzia2d32VEhfPTjQyendvJz52uLuiRxcJZX32j4biDskPJX5sDpDhym+wfC6mYF8eYePV1Uq5d6dCUB3zcofGryXVq2CdXIZ9TtYpZ4uhPKUIWiOLgVgrFntSKhvrkbt4e3f1WWm4+ZWftNWlIFRNqkkWx9VXAZvfSf2TBRFHFxp1eJzv49cOXmMuYq+dxZzTKD05YxO94EDBROlEseMD+WDDxNWHB9vhv79Nokx/w5UqocQcPvJTmMAnePflsqWOXs74SVPP1SRuk3Kz4tvDU/L8FWD9v4Dr7BaM6gDv9fYhRawikLZLS1dZjrvauvd+6IHypgsilCnIvVZB3qYIGlypoeKmCRucuiIuAPWVCrBZTQT2Gg4BwMBAOAcJxgXA8IJwBEM4QCGdkjaOkb/LCkrPj0Sm46Ey4+Ey45Ey47plwvTPhDs6EOzwT7ugMuFlXy/kgAiaUtcpmUiohFXN099QajQohVTqqhcHTNz0Wg1wkAEwW2fIbsTWaT9PPxz3EtbufKz2gc+TMmfG5HpxYV5yJbyyUS+bQIIhZAggYM7WKBZxPx2zGYiZ8BunYcKAhF8wRq2gK4JtLOgfDYiIAbr4CESQobByartRCi4QDOHVE/VgC9FkoWHy454kCAXFuVmHIgLA+wbhYioVgYDAMDIGBcSE5g2qiHA2DohFQNBfSP6HaLUfDoGgEFM2+3R64Ctl+r6PfPHd3G8oEIuBN+Fyk+VNrpDxn6nyhMZ3HdLlwdNr5aE+rdTlpyvkB4p62QYLq16cuorPOXKwYLBqUuDZ4GBiPAOPZS+wjSxLdQbuDGc9MVlNVK9rmo4IJDVdZh9ZebVQxQAG853ECJoN6WAAP/qS7s3dAXb1tLREgFgaPSqDVyyEBahlK/xEmDN89L1kccvFojfRehqFcswAOcaJimflaWfIINZb8u2i5oAlPKhDNb/XFEwzOR7q0vqAvIeUChrd3ryLKQweuB3H38PHeeZBLPczUDQMDeCOVkhEYZp4J/OkPNv0ZpoLXfizFM9DVXgOlh1KwW66AWL2VARDSWzbjgoPcQ1O8f7PnqaRxAIP2JWbZQ0OKASFOaLQMobT1vGTrmEOkZVO8/9CY67wQlKgeQMBKacNkNf2T+Qqgfg5IZujzSqX5x7Sr24eFQ7Bw9l2ElE1nwrX/AlzsDhyChYO62NuQJgn3wa62wEPAeNDXS6DwZCjj2SqEa8ACEEEDYjjAVSQSyCtO8RAwHvT1EmA8FwjvXzEPwMhIwRAkGIYEI5BgoAR4kGADSLAhEBhQF6AEhiDBMCQYgQRzIcE8SLABJBiUn+G3DpvNmK/gbjElSAQPCXejEYpFSxnT+BkI8l3I5hQgQZqhfYnlTL9NIkX2EDdEd3Y1VZCd7QwOiuQ/2BSsahoLsl4AGVEahlIC5da2N5yaZ9eOmaWvc0BkCn22kGHAYsM1HRwvT5bU59XUafPJkns+Xyhnsthk+8swXu+oZTFg3zE7XmBdm3vo4DRTwFdRUdHqyxQebm6MKsbkuPG2J7Fj6Ta0rJbpHbfc9pJ3LAcNLatlDhta4orl6OAsWfxY6wiDQ/6zGeMZnG/Qb2JcWyxqYlnnggPcVCrOte/r2YL+iZox2zcTj9m+jYrMKG3kZEZprCszxCGB/c6+8aQ2R31k/nvz9EQl7pPGkfO3lVSVaWrU/KWuD0IxkTCnFgc3n7jaiTLmdmwcbswQjeOOGaJxADJDNIpERvNWIcmM0jg2mSEaBykzROtohSyjFbKMVggkWiGQaIXsoxU6vTtghmgtVGQvVGQvVGQnVAQiVGQvVGQvVGQvVGwpVGwpVAwiVAwiVGwvVGwvVGwvVGwvVGwvVGwnVAwiVGwvVGwvVGwvVGIpVGIpVAIiVAIiVGIvVGIvVGIvVGIvVGIvVGInVAIiVGIvVGIvVGIvVNdSqK6lUF0QobogQnXtheraC9W1F6prL1TXXqiunVBdEKG69kJ17YXq2gvVsxSqZylUD0SoHohQPXuhevZC9eyF6tkL1bMXqmcnVA9EqJ69UD17oXqthJpPUZoes++3z3oan9hv8Z5PVqnfy69y7+RQ+61rZcZq/i7CjZSPTu2Lhxg3B+HTkMs0Rf18fBmFQeuJz8+3h9/wabCMR9NLyd+FSOdMK+CkqWUlp0JQQ8vKII/ghpaVXichDS0rt0FyKOimuiweSpkvKvNZpNfMuG8w95qZV5t40Myw2sLDZobVBh41M3QdHZz3rd2G7eRtni+tIPSbIQzMCKgVV8bcfmPSzAhN2TMjNKXRjNCKTyNMe2LNUK0ZNkOdRjWyphpZU42sqUYwVCM4qhEc1QiIamxNNbamGltTjWGoxnBUYziqMRDVxJpqYk01saaawFBN4KgmcFQTIKpda6pda6pda6pdGKpdOKpdOKpdIKo9a6o9a6o9a6o9GKo9OKo9OKq9VlSnWZTTR0sl83adsJJhuxtyybBdcC4ZnjBaKlmfOFoqIZw4WqpyddpoqUzaaaOlMnunjZbKNJ42WqrwedpoqZbY00ZLtQyfNloyU42sqUbWVCNrqhEM1QiOagRHNQKiGltTja2pxtZUYxiqMRzVGI5qDEQ1saaaWFNNrKkmMFQTOKoJHNUEiGrXmmrXmmrXmmoXhmoXjmoXjmoXiGrPmmrPmmrPmmoPhmoPjmoPjup2o6WPTIAsATWJaKwcuPXi7miyUNR+ccKvImaJDL+xwIG91PtWV9nd3f7qTbGdn7O+Us/LdAX00utKQbYCbA6Ynvgh2GxTpY11TYp9vvLDaYXz6dqsxNTwSFEb8HyuuF+B325ulZYwpQkLPou6woVeGLHmuHaI4nhRzO2Cxtm3W1ctzhntX8v6Kk70Bm7Z170ewvjt4CY7a5ltzfbI2PITe1Ld4sM9FyzJ9knLXqDVu57pNcXYuIO99N0rOlMsHneGuWpltmrT/bdwU1JOXV5G7S5wxZZv9M/Slm/7+8HpL9/lxzZbwtVa+okqHb7hAc8q52uVb+r1ngy81DfSk9MIMO7QVP/bw/qhFP2cwfv9DeSKyebyBnKkt7e12ynOg4zOgyCdBzVwnq0ss/N2RHlm9+o3dK/+j+leGFXdKztm6V7Y6F4Y0r3wD+Je6LB7HXOiS7gKGtZsZTkEcBVidBUC6SrkhbvKsOwpxOgp+DyewrPftwmI31h6hGv0CBfSI9wfwyPIy4wdlj7gGX3Ag/QB74X7gJl29+KBwB3pn30n0DstbV3ggesdfK89AA8YGD1gAOkBg+/WA7wLCP/CnA+NnA8hOR++KM6rzA4urm000D9NeH4L0ecbGXkeQfI8euE8Dy+gYHhm/QWNqZ8vqG7If+UbI21W9km3Rdrn3LB7koGvfjO+zPVWxUrrhjqnWdqDibt8sXaTQzX2KDUNM6rVNPwgtEOt8z3ss5oGT7RTnHjLwvAjzc6WS/OpIZup7Nt+b1jz/TTbEsJoH6dzB0aA7m5lupuLMLd3tklk/lKLMU+aLhlWbe5sKTHLlm7ow/4qUTJK07379dvJge7X8q5ItzrbOLMXuGp1YMy0HglV5uDz/3Rna0rRQUoREKWo3d3nx2fYJuPYkmF8kGEMxDA+F8Pfe9KvJVvkIFsEiC3y0ti6dOKtJSvuQVZcIFbcH01D4Dx4B3nwgHjwviN1wGcmWlIyOEjJAIiSwYuWxt9OwvAgCUMgEobfkS7OPN4/TsnoICUjIEpGL1oXl0qnZQtb7Ld1dhQij5YiHUqi9XsnPAC0TXLvTYz7evuKJ7WiYb6S/ot56GJb5fSyXhXX/chiUe0sb8KjV+0+u8CBcEtRrRvYyq3kS2b2X+aw9fKc1Yt0s4n2PkGbLyCkWoAdVGv/BLWKVZT9w8Pq81CbLyua7nu9Fzg/VfGKvvt3jHl3yDK5ha10d93L7A0vvM94ZsrqNZttA7DPTHYUQq0p0iGpopHVjbX+AbR+sXjfn36BowexLK5V6oFOJunpnyYcQo+Htw1XS46tZkoMmzk5KpiLtly9A+vpk+2+GvtttbftxjGPrjYFJie4J0+nuvRElV4jr0Gfr6G7bC46Xzhus5rd/mVXlrtr5yg1HtHqhnrcOy74nFXeFvWBbnc3FIiAVy7uUNzDpwwoljdBaYI0PS/hYp7vq/2XfkbOyaIjSzutTt7sJ+bHN1OpZy6pu72yYy9G4CKylzU29NLapDO72SeQ4P+35kMrfnTQdW1vBzsiOeKxL073B2Pkdm1NUwNuz7CNksWcX6soOc1KzVsriWgY3tJlAjXFtduldOtbtPgvefM/UEsDBBQAAAAIAAAAIQAAAAAAAgAAAAAAAAALAAAAd29yZC90aGVtZS8DAFBLAwQUAAAACAAAACEAZ4D8tJEGAADNIAAAFQAAAHdvcmQvdGhlbWUvdGhlbWUxLnhtbO1Zz4/bNha+L9D/gdDd0Q9LsjSIpvDPpslMEmQmWfT4RqIlxhQpkPTMGEWAIj3tZYEFukUvBXrroVhsgS3Qopf+MQEa7Hb/iIVkjy3adJO0k90AO/bBJvV9j5/eeyQfyNvvX5YUnWMhCWeJ5d5yLIRZyjPC8sR6fDrpRBaSClgGlDOcWAssrfcP3/vDbThQBS4xuiwpkweQWIVS1YFty7TAJchbvMLssqRTLkpQ8hYXuZ0JuCAsL6ntOU5ol0CYhRiUOLEeTKckxei0NmkdXhkfU1xipmTdkVJxkjYjthkNNpu59Y9cyCEV6BxoYl0QlvGLU3ypLERBqiEVieU0H8s+vG2vSVTt4bZ4k+az4q0I2cxreCI/WxOdsRf57tq+t7S/ixtH9XdtrwFAmmK20tLGukHoRN4K2wIt/xpsxz23q+Nb9ru79uNw4PkavrvB+7vvOInHo0DD+xt8sIPvO94g7mr4YIMPd/D+uN/zxhq+ARWUsNkuOuxFUbhCryFTTu8Y4XEYOr3RCr5B2a3sWvKZ2pdrJTzlYsKZaoILijCkFhWeQooTq18pLtGIyIrCwkIVMC5xYjme6zqO4zve+tt4HA4wtNjLrlTudNV6kEwFqVRi3a2AWS3Izz/88OL5dy+ef//i009fPP87OiJ5oQy8O8DyNu+Xr//y7y8/Qf/6x1e/fPZXM1628S//9qeXP/70a+aVJuvzb19+9+3PX/z5n998ZoD3BZy14aekxBLdxxfoES+BmQbAZ+LNGKcFkDajz3IJDGqOAT1WhYa+vwAKBtwA6358IgjLTMAP5k81wSeFmCtiAN4rSg14zDkdcGF8p3v1WG0vzFluHlzM27hHAOemsYdbUR7PqwKXxGRyWGBN5kMKTEGOGVaofsZnGBtoHxGi+fWYpIJLPlXoI4IGQIwuOSVnyky6Q0qgsABzvDXfHD9BA05N5kf4XEcCy4GaTGKqufEDmCsojYqhpG3kEajCJPJkIVLN4VIJYDmmHI0zLKWJ80AsNLn3gBJz2I/potSRQpGZCXkEnLeRIz4bFlBWRs2EFW3sh3LGOQX0kCujCK7PkLrNKQG2N9xPCFZvNrcfk7wwJ0j9ZC5MUwJzfT4u6BQwMy5OpbbE9gUxZsdgnmupfYQxhQvIMEaPPzThecXNou8WmOV3sMk3d0HP1brNsMSoKW4MgSVSS9kTnPM9eo4XWwvPAlgJYp/l+zM9ZcZngpTGfKXpTFtKiagnrVnEA1nCa1l9WICWVnVbVnvmGHvTOXayEE9/Awe/MYcLeG3fnALF5oQ5BYKOsJkyN1Pq6dTQ5kbeVJ+0mzDYW0VPSdgrKqD/TeXz1mqe66929i0o2zXOPtx2ZTPkIiPvfmEzgjl7iFlxU9fc1DX/l3XNvvl8U83cVDM31cx/rZrZFDB2+7CnsVLuPfmZEkpP1ILiI9mUPpJTkk0IpU2jIa0PmqpiSMVqOA2XC2j+I8HVH4kqTgqocGK5zQi5XJnOJaq4TCzH2mu7Kb7m5THPVud47tXZJhxIUJt+J1j3K8LUsjfsbQ5C1+abVi7bAoLG6OuLaA2mi+gaRPS6ryfCda5LRWxQEbm/psJuRYUShqA+Fg/8pSIkU6A4q+O05F9F99ojvc+Z+mt7hteL/WuLtCailW66iFYaFpDh7e5rjnUcm0PtGWX0orcRa3t3baBMb6GLxAq7gWOhFKrEmlJQFkrLKkssWa9UQHOWWKlaOfq3rCyVkGoEsljCmkfL9y+JwgJRUiZW1A4DZRttrtdz3l1xsfPuec7eDjKeTnGq9vRsmkdSLY0Yn/5OcN3gc4XFSZFdoDM6F48gS6yg59YOzIhUa29mRLSSe+PFreVqNRW1G6DNFAVaFbDaUdqL+RLe/F/Lab1Ho3T7rWyTC8/yyXXsuq8mbS2aezaQ3t5V7O1t8i1VXbOqwLjWxdErdonfvyG0pEVmaV2ztH17xzUWBK3hwu4r9ojr3g22s9Zu1ZVNa+dym589xaka4SnMqZLLA7JLJWB4dS25XAma3qvV5VKhuSCJ9bET9P2hFww7ThSMO37XdzpR0O92+kHQdceB64wG3jPr8LYqSjdYjj2BktDF6u6+6d+5vy+vSu1bKS9t3tTBdkNu7u9db//9PSJZYn0cepO4Gw/CTtztTzr+aBB14mE46IzCYW80GQ2DKJ48s9B5A/b73aEfjqNO6A6HHT90avlR3On5ntf3e/1o7PefrXyNL9XV75V7G12H/wFQSwMEFAAAAAgAAAAhAAAAAAACAAAAAAAAAAsAAAB3b3JkL19yZWxzLwMAUEsDBBQAAAAIAAAAIQCzvosd/gAAALYDAAAcAAAAd29yZC9fcmVscy9kb2N1bWVudC54bWwucmVsc63TsU7DMBAG4B2Jd7BuJ04KVAg16YKQukJ4ACe5OBb2ObKvkLw9UlHbVFQRQ8b7h///BnuzHZwVXxii8ZRDlqQgkGrfGNI5fJSvd08gIitqlPWEOYwYYVvc3mze0Co2nmJn+igGZynm0DH3z1LGukOnYuJ7pMHZ1genOCY+aNmr+lNplKs0Xcsw7YDiolPsmhzCrrkHUY49/qfbt62p8cXXe4fEVyZkRGZDOoIoVdDIORyTZHAW5HXCalECjxangMM9N58tOU97V2EwpM+CUzSHWC+J4A4dngGH8zfM5gyPSxpaT1yqyk4cp2gO8bAk4hur9z9PchIeIfLitxU/UEsBAhQAFAAAAAgAAAAhADKRb1dfAQAApQUAABMAAAAAAAAAAAAAAAAAAAAAAFtDb250ZW50X1R5cGVzXS54bWxQSwECFAAUAAAACAAAACEAAAAAAAIAAAAAAAAACQAAAAAAAAAAAAAAAACQAQAAZG9jUHJvcHMvUEsBAhQAFAAAAAgAAAAhAIahqRJuAQAAzQIAABAAAAAAAAAAAAAAAAAAuQEAAGRvY1Byb3BzL2FwcC54bWxQSwECFAAUAAAACAAAACEAhRXCKnABAAD7AgAAEQAAAAAAAAAAAAAAAABVAwAAZG9jUHJvcHMvY29yZS54bWxQSwECFAAUAAAACAAAACEAAAAAAAIAAAAAAAAABgAAAAAAAAAAAAAAAAD0BAAAX3JlbHMvUEsBAhQAFAAAAAgAAAAhAB6RGrfpAAAATgIAAAsAAAAAAAAAAAAAAAAAGgUAAF9yZWxzLy5yZWxzUEsBAhQAFAAAAAgAAAAhAAAAAAACAAAAAAAAAAUAAAAAAAAAAAAAAAAALAYAAHdvcmQvUEsBAhQAFAAAAAgAAAAhAOxw0GITAgAAtAcAABIAAAAAAAAAAAAAAAAAUQYAAHdvcmQvZm9udFRhYmxlLnhtbFBLAQIUABQAAAAIAAAAIQCWFrgr0gIAAIgLAAARAAAAAAAAAAAAAAAAAJQIAAB3b3JkL2RvY3VtZW50LnhtbFBLAQIUABQAAAAIAAAAIQDK52WKKAQAAL4MAAARAAAAAAAAAAAAAAAAAJULAAB3b3JkL3NldHRpbmdzLnhtbFBLAQIUABQAAAAIAAAAIQDbhWzDYwQAAJcdAAASAAAAAAAAAAAAAAAAAOwPAAB3b3JkL251bWJlcmluZy54bWxQSwECFAAUAAAACAAAACEAvn52YlgBAADQAwAAFAAAAAAAAAAAAAAAAAB/FAAAd29yZC93ZWJTZXR0aW5ncy54bWxQSwECFAAUAAAACAAAACEAP6/hZjkOAAANpgAADwAAAAAAAAAAAAAAAAAJFgAAd29yZC9zdHlsZXMueG1sUEsBAhQAFAAAAAgAAAAhAAAAAAACAAAAAAAAAAsAAAAAAAAAAAAAAAAAbyQAAHdvcmQvdGhlbWUvUEsBAhQAFAAAAAgAAAAhAGeA/LSRBgAAzSAAABUAAAAAAAAAAAAAAAAAmiQAAHdvcmQvdGhlbWUvdGhlbWUxLnhtbFBLAQIUABQAAAAIAAAAIQAAAAAAAgAAAAAAAAALAAAAAAAAAAAAAAAAAF4rAAB3b3JkL19yZWxzL1BLAQIUABQAAAAIAAAAIQCzvosd/gAAALYDAAAcAAAAAAAAAAAAAAAAAIkrAAB3b3JkL19yZWxzL2RvY3VtZW50LnhtbC5yZWxzUEsFBgAAAAARABEAEQQAAMEsAAAAAA==";
3
+ //#endregion
2
4
  Object.defineProperty(exports, "blank_default", {
3
5
  enumerable: true,
4
6
  get: function() {