@embedpdf/viewer-chrome 3.0.0-next.13 → 3.0.0-next.15

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 (157) hide show
  1. package/README.md +175 -132
  2. package/dist/annotation-fonts-BqoLZ4Mp.js +80 -0
  3. package/dist/annotation-fonts-BqoLZ4Mp.js.map +1 -0
  4. package/dist/annotation-fonts-Dt0IQXhz.cjs +91 -0
  5. package/dist/annotation-fonts-Dt0IQXhz.cjs.map +1 -0
  6. package/dist/annotation-style--rPIZsuP.js +879 -0
  7. package/dist/annotation-style--rPIZsuP.js.map +1 -0
  8. package/dist/annotation-style-Bzvvp8-N.cjs +879 -0
  9. package/dist/annotation-style-Bzvvp8-N.cjs.map +1 -0
  10. package/dist/ar-D9XKAmDx.js +567 -0
  11. package/dist/ar-D9XKAmDx.js.map +1 -0
  12. package/dist/ar-DnEj5vbP.cjs +567 -0
  13. package/dist/ar-DnEj5vbP.cjs.map +1 -0
  14. package/dist/chrome.cjs +378 -221
  15. package/dist/chrome.cjs.map +1 -1
  16. package/dist/chrome.d.cts +5 -34
  17. package/dist/chrome.d.ts +5 -34
  18. package/dist/chrome.js +377 -218
  19. package/dist/chrome.js.map +1 -1
  20. package/dist/commands-BmgxhJ8B.js +953 -0
  21. package/dist/commands-BmgxhJ8B.js.map +1 -0
  22. package/dist/commands-CYt4SFUX.cjs +1060 -0
  23. package/dist/commands-CYt4SFUX.cjs.map +1 -0
  24. package/dist/commands.cjs +12 -595
  25. package/dist/commands.d.cts +29 -4
  26. package/dist/commands.d.ts +29 -4
  27. package/dist/commands.js +2 -593
  28. package/dist/comments-panel-MUVgLCBI.js +514 -0
  29. package/dist/comments-panel-MUVgLCBI.js.map +1 -0
  30. package/dist/comments-panel-pEcQg4Vs.cjs +514 -0
  31. package/dist/comments-panel-pEcQg4Vs.cjs.map +1 -0
  32. package/dist/de-Bdr4aWzm.js +566 -0
  33. package/dist/de-Bdr4aWzm.js.map +1 -0
  34. package/dist/de-Dv6zvbnd.cjs +566 -0
  35. package/dist/de-Dv6zvbnd.cjs.map +1 -0
  36. package/dist/dialog-B5GBisKv.js +55 -0
  37. package/dist/dialog-B5GBisKv.js.map +1 -0
  38. package/dist/dialog-t8F13BL_.cjs +60 -0
  39. package/dist/dialog-t8F13BL_.cjs.map +1 -0
  40. package/dist/es-BP09DR9w.cjs +566 -0
  41. package/dist/es-BP09DR9w.cjs.map +1 -0
  42. package/dist/es-BSXz5tBv.js +566 -0
  43. package/dist/es-BSXz5tBv.js.map +1 -0
  44. package/dist/form-design-panel-B5MXTZ96.cjs +418 -0
  45. package/dist/form-design-panel-B5MXTZ96.cjs.map +1 -0
  46. package/dist/form-design-panel-vWWU9uB-.js +418 -0
  47. package/dist/form-design-panel-vWWU9uB-.js.map +1 -0
  48. package/dist/fr-BBQQn7tJ.cjs +566 -0
  49. package/dist/fr-BBQQn7tJ.cjs.map +1 -0
  50. package/dist/fr-Ckn3K9v1.js +566 -0
  51. package/dist/fr-Ckn3K9v1.js.map +1 -0
  52. package/dist/he-DRsG7bH7.cjs +567 -0
  53. package/dist/he-DRsG7bH7.cjs.map +1 -0
  54. package/dist/he-wdGU5PkU.js +567 -0
  55. package/dist/he-wdGU5PkU.js.map +1 -0
  56. package/dist/icons-BrK5iVL8.js +856 -0
  57. package/dist/icons-BrK5iVL8.js.map +1 -0
  58. package/dist/icons-x0Tc05bs.cjs +1010 -0
  59. package/dist/icons-x0Tc05bs.cjs.map +1 -0
  60. package/dist/index.cjs +3162 -5106
  61. package/dist/index.cjs.map +1 -1
  62. package/dist/index.d.cts +636 -143
  63. package/dist/index.d.ts +636 -143
  64. package/dist/index.js +3083 -4975
  65. package/dist/index.js.map +1 -1
  66. package/dist/it-BuP4o0xQ.cjs +566 -0
  67. package/dist/it-BuP4o0xQ.cjs.map +1 -0
  68. package/dist/it-Us-VmvIu.js +566 -0
  69. package/dist/it-Us-VmvIu.js.map +1 -0
  70. package/dist/ja-Cizj0-5O.js +566 -0
  71. package/dist/ja-Cizj0-5O.js.map +1 -0
  72. package/dist/ja-DovEd6ts.cjs +566 -0
  73. package/dist/ja-DovEd6ts.cjs.map +1 -0
  74. package/dist/ko-B-qJEol2.cjs +566 -0
  75. package/dist/ko-B-qJEol2.cjs.map +1 -0
  76. package/dist/ko-DlrXliE1.js +566 -0
  77. package/dist/ko-DlrXliE1.js.map +1 -0
  78. package/dist/labels-BiM9wp9K.cjs +21 -0
  79. package/dist/labels-BiM9wp9K.cjs.map +1 -0
  80. package/dist/labels-C6_i87Oj.js +16 -0
  81. package/dist/labels-C6_i87Oj.js.map +1 -0
  82. package/dist/link-editor-CSjqPnj1.cjs +125 -0
  83. package/dist/link-editor-CSjqPnj1.cjs.map +1 -0
  84. package/dist/link-editor-SxM1nnJU.js +125 -0
  85. package/dist/link-editor-SxM1nnJU.js.map +1 -0
  86. package/dist/measurement-Bs61XWbJ.js +325 -0
  87. package/dist/measurement-Bs61XWbJ.js.map +1 -0
  88. package/dist/measurement-CcCsHPOX.cjs +326 -0
  89. package/dist/measurement-CcCsHPOX.cjs.map +1 -0
  90. package/dist/nl-0aF7M_0h.js +566 -0
  91. package/dist/nl-0aF7M_0h.js.map +1 -0
  92. package/dist/nl-D3KZDDiJ.cjs +566 -0
  93. package/dist/nl-D3KZDDiJ.cjs.map +1 -0
  94. package/dist/pl-BW--AaCI.js +566 -0
  95. package/dist/pl-BW--AaCI.js.map +1 -0
  96. package/dist/pl-DSFhAUqx.cjs +566 -0
  97. package/dist/pl-DSFhAUqx.cjs.map +1 -0
  98. package/dist/pt-C5S-8MC5.cjs +566 -0
  99. package/dist/pt-C5S-8MC5.cjs.map +1 -0
  100. package/dist/pt-DIhpU5pT.js +566 -0
  101. package/dist/pt-DIhpU5pT.js.map +1 -0
  102. package/dist/redact-confirm-B6j36TPw.js +83 -0
  103. package/dist/redact-confirm-B6j36TPw.js.map +1 -0
  104. package/dist/redact-confirm-CX_SY2ZN.cjs +83 -0
  105. package/dist/redact-confirm-CX_SY2ZN.cjs.map +1 -0
  106. package/dist/redaction-panel-BmoIl-Ll.cjs +96 -0
  107. package/dist/redaction-panel-BmoIl-Ll.cjs.map +1 -0
  108. package/dist/redaction-panel-IJDshSJI.js +96 -0
  109. package/dist/redaction-panel-IJDshSJI.js.map +1 -0
  110. package/dist/search-panel-HfIhJm1M.js +249 -0
  111. package/dist/search-panel-HfIhJm1M.js.map +1 -0
  112. package/dist/search-panel-s9IoiOtv.cjs +249 -0
  113. package/dist/search-panel-s9IoiOtv.cjs.map +1 -0
  114. package/dist/sheet-BDsa_Sup.cjs +442 -0
  115. package/dist/sheet-BDsa_Sup.cjs.map +1 -0
  116. package/dist/sheet-R6XDgyEf.js +365 -0
  117. package/dist/sheet-R6XDgyEf.js.map +1 -0
  118. package/dist/sign-dialog-CgnR7akj.cjs +155 -0
  119. package/dist/sign-dialog-CgnR7akj.cjs.map +1 -0
  120. package/dist/sign-dialog-GDqCoQhA.js +155 -0
  121. package/dist/sign-dialog-GDqCoQhA.js.map +1 -0
  122. package/dist/signature-inspector-DyO313Qf.cjs +166 -0
  123. package/dist/signature-inspector-DyO313Qf.cjs.map +1 -0
  124. package/dist/signature-inspector-okFz8do6.js +166 -0
  125. package/dist/signature-inspector-okFz8do6.js.map +1 -0
  126. package/dist/signature-maker-BhCmYyHD.js +393 -0
  127. package/dist/signature-maker-BhCmYyHD.js.map +1 -0
  128. package/dist/signature-maker-BoYa8vgA.cjs +393 -0
  129. package/dist/signature-maker-BoYa8vgA.cjs.map +1 -0
  130. package/dist/signatures-panel-B56PC6d9.cjs +300 -0
  131. package/dist/signatures-panel-B56PC6d9.cjs.map +1 -0
  132. package/dist/signatures-panel-CgnFfhFm.js +300 -0
  133. package/dist/signatures-panel-CgnFfhFm.js.map +1 -0
  134. package/dist/stamp-store-BHvRs-Do.cjs +147 -0
  135. package/dist/stamp-store-BHvRs-Do.cjs.map +1 -0
  136. package/dist/stamp-store-WuF-L3Jj.js +112 -0
  137. package/dist/stamp-store-WuF-L3Jj.js.map +1 -0
  138. package/dist/stamps-panel-B9NYGayn.cjs +231 -0
  139. package/dist/stamps-panel-B9NYGayn.cjs.map +1 -0
  140. package/dist/stamps-panel-CDO0FPyK.js +231 -0
  141. package/dist/stamps-panel-CDO0FPyK.js.map +1 -0
  142. package/dist/toolbar-CJu2wKTU.cjs +1659 -0
  143. package/dist/toolbar-CJu2wKTU.cjs.map +1 -0
  144. package/dist/toolbar-z9od3tKl.js +1564 -0
  145. package/dist/toolbar-z9od3tKl.js.map +1 -0
  146. package/dist/zh-cn-3tmMeHqv.cjs +566 -0
  147. package/dist/zh-cn-3tmMeHqv.cjs.map +1 -0
  148. package/dist/zh-cn-CxkUUBct.js +566 -0
  149. package/dist/zh-cn-CxkUUBct.js.map +1 -0
  150. package/package.json +6 -4
  151. package/src/styles.css +153 -89
  152. package/dist/commands.cjs.map +0 -1
  153. package/dist/commands.js.map +0 -1
  154. package/dist/es-DYwzfxyt.cjs +0 -293
  155. package/dist/es-DYwzfxyt.cjs.map +0 -1
  156. package/dist/es-sN6uqBgD.js +0 -293
  157. package/dist/es-sN6uqBgD.js.map +0 -1
@@ -0,0 +1,55 @@
1
+ import { c as holdFocus, n as SCRIM_CLASS, o as POPOVER, s as attachViewerLayer } from "./sheet-R6XDgyEf.js";
2
+ import { useLayoutEffect, useRef } from "react";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ //#region src/ui/dialog.tsx
5
+ /**
6
+ * A dialog: centered in the viewer's box over the dimmed viewer, in the layer
7
+ * over it (`viewer-layer.ts`), so it covers the viewer and never the page
8
+ * around it, and sits above a sheet or a panel it opened from. It takes focus
9
+ * when it opens (its first control), keeps Tab inside it, closes on Escape
10
+ * and gives focus back to what opened it.
11
+ */
12
+ function Dialog({ labelledBy, onClose, className, children }) {
13
+ const layer = useRef(null);
14
+ const panel = useRef(null);
15
+ const close = useRef(onClose);
16
+ close.current = onClose;
17
+ useLayoutEffect(() => {
18
+ const layerElement = layer.current;
19
+ const panelElement = panel.current;
20
+ if (!layerElement || !panelElement) return;
21
+ const stopLayer = attachViewerLayer(layerElement);
22
+ const held = holdFocus(panelElement, { onEscape: () => close.current() });
23
+ return () => {
24
+ held.release();
25
+ stopLayer();
26
+ };
27
+ }, []);
28
+ return /* @__PURE__ */ jsxs("div", {
29
+ ref: layer,
30
+ ...POPOVER,
31
+ "data-epdf-layer": "",
32
+ className: "text-fg m-0 place-items-center overflow-hidden border-0 bg-transparent p-4 open:grid",
33
+ style: {
34
+ position: "fixed",
35
+ inset: "auto",
36
+ maxWidth: "none",
37
+ maxHeight: "none"
38
+ },
39
+ children: [/* @__PURE__ */ jsx("div", {
40
+ "aria-hidden": "true",
41
+ className: `absolute inset-0 ${SCRIM_CLASS}`
42
+ }), /* @__PURE__ */ jsx("div", {
43
+ ref: panel,
44
+ role: "dialog",
45
+ "aria-modal": "true",
46
+ "aria-labelledby": labelledBy,
47
+ className: `relative max-h-full max-w-full overflow-y-auto ${className}`,
48
+ children
49
+ })]
50
+ });
51
+ }
52
+ //#endregion
53
+ export { Dialog as t };
54
+
55
+ //# sourceMappingURL=dialog-B5GBisKv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog-B5GBisKv.js","names":[],"sources":["../src/ui/dialog.tsx"],"sourcesContent":["/**\n * A dialog: centered in the viewer's box over the dimmed viewer, in the layer\n * over it (`viewer-layer.ts`), so it covers the viewer and never the page\n * around it, and sits above a sheet or a panel it opened from. It takes focus\n * when it opens (its first control), keeps Tab inside it, closes on Escape\n * and gives focus back to what opened it.\n */\nimport { useLayoutEffect, useRef, type ReactNode } from 'react';\n\nimport { SCRIM_CLASS } from './sheet';\nimport { POPOVER, attachViewerLayer, holdFocus } from './viewer-layer';\n\nexport interface DialogProps {\n /** The id of the dialog's title, which names it for assistive technology. */\n readonly labelledBy: string;\n /** What Escape does: close the dialog, or nothing while it's busy. */\n readonly onClose: () => void;\n /** The dialog's own box: its border, background, width and padding. */\n readonly className: string;\n readonly children: ReactNode;\n}\n\nexport function Dialog({ labelledBy, onClose, className, children }: DialogProps) {\n const layer = useRef<HTMLDivElement>(null);\n const panel = useRef<HTMLDivElement>(null);\n const close = useRef(onClose);\n close.current = onClose;\n useLayoutEffect(() => {\n const layerElement = layer.current;\n const panelElement = panel.current;\n if (!layerElement || !panelElement) return;\n const stopLayer = attachViewerLayer(layerElement);\n const held = holdFocus(panelElement, { onEscape: () => close.current() });\n return () => {\n held.release();\n stopLayer();\n };\n // The dialog opens once; it closes by unmounting.\n }, []);\n return (\n <div\n ref={layer}\n {...POPOVER}\n data-epdf-layer=\"\"\n className=\"text-fg m-0 place-items-center overflow-hidden border-0 bg-transparent p-4 open:grid\"\n style={{ position: 'fixed', inset: 'auto', maxWidth: 'none', maxHeight: 'none' }}\n >\n <div aria-hidden=\"true\" className={`absolute inset-0 ${SCRIM_CLASS}`} />\n <div\n ref={panel}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={labelledBy}\n className={`relative max-h-full max-w-full overflow-y-auto ${className}`}\n >\n {children}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;AAsBA,SAAgB,OAAO,EAAE,YAAY,SAAS,WAAW,YAAyB;CAChF,MAAM,QAAQ,OAAuB,IAAI;CACzC,MAAM,QAAQ,OAAuB,IAAI;CACzC,MAAM,QAAQ,OAAO,OAAO;CAC5B,MAAM,UAAU;CAChB,sBAAsB;EACpB,MAAM,eAAe,MAAM;EAC3B,MAAM,eAAe,MAAM;EAC3B,IAAI,CAAC,gBAAgB,CAAC,cAAc;EACpC,MAAM,YAAY,kBAAkB,YAAY;EAChD,MAAM,OAAO,UAAU,cAAc,EAAE,gBAAgB,MAAM,QAAQ,EAAE,CAAC;EACxE,aAAa;GACX,KAAK,QAAQ;GACb,UAAU;EACZ;CAEF,GAAG,CAAC,CAAC;CACL,OACE,qBAAC,OAAD;EACE,KAAK;EACL,GAAI;EACJ,mBAAgB;EAChB,WAAU;EACV,OAAO;GAAE,UAAU;GAAS,OAAO;GAAQ,UAAU;GAAQ,WAAW;EAAO;EALjF,UAAA,CAOE,oBAAC,OAAD;GAAK,eAAY;GAAO,WAAW,oBAAoB;EAAgB,CAAA,GACvE,oBAAC,OAAD;GACE,KAAK;GACL,MAAK;GACL,cAAW;GACX,mBAAiB;GACjB,WAAW,kDAAkD;GAE5D;EACE,CAAA,CACF;;AAET"}
@@ -0,0 +1,60 @@
1
+ const require_sheet = require("./sheet-BDsa_Sup.cjs");
2
+ let react = require("react");
3
+ let react_jsx_runtime = require("react/jsx-runtime");
4
+ //#region src/ui/dialog.tsx
5
+ /**
6
+ * A dialog: centered in the viewer's box over the dimmed viewer, in the layer
7
+ * over it (`viewer-layer.ts`), so it covers the viewer and never the page
8
+ * around it, and sits above a sheet or a panel it opened from. It takes focus
9
+ * when it opens (its first control), keeps Tab inside it, closes on Escape
10
+ * and gives focus back to what opened it.
11
+ */
12
+ function Dialog({ labelledBy, onClose, className, children }) {
13
+ const layer = (0, react.useRef)(null);
14
+ const panel = (0, react.useRef)(null);
15
+ const close = (0, react.useRef)(onClose);
16
+ close.current = onClose;
17
+ (0, react.useLayoutEffect)(() => {
18
+ const layerElement = layer.current;
19
+ const panelElement = panel.current;
20
+ if (!layerElement || !panelElement) return;
21
+ const stopLayer = require_sheet.attachViewerLayer(layerElement);
22
+ const held = require_sheet.holdFocus(panelElement, { onEscape: () => close.current() });
23
+ return () => {
24
+ held.release();
25
+ stopLayer();
26
+ };
27
+ }, []);
28
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
29
+ ref: layer,
30
+ ...require_sheet.POPOVER,
31
+ "data-epdf-layer": "",
32
+ className: "text-fg m-0 place-items-center overflow-hidden border-0 bg-transparent p-4 open:grid",
33
+ style: {
34
+ position: "fixed",
35
+ inset: "auto",
36
+ maxWidth: "none",
37
+ maxHeight: "none"
38
+ },
39
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
40
+ "aria-hidden": "true",
41
+ className: `absolute inset-0 ${require_sheet.SCRIM_CLASS}`
42
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
43
+ ref: panel,
44
+ role: "dialog",
45
+ "aria-modal": "true",
46
+ "aria-labelledby": labelledBy,
47
+ className: `relative max-h-full max-w-full overflow-y-auto ${className}`,
48
+ children
49
+ })]
50
+ });
51
+ }
52
+ //#endregion
53
+ Object.defineProperty(exports, "Dialog", {
54
+ enumerable: true,
55
+ get: function() {
56
+ return Dialog;
57
+ }
58
+ });
59
+
60
+ //# sourceMappingURL=dialog-t8F13BL_.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog-t8F13BL_.cjs","names":["attachViewerLayer","holdFocus","POPOVER","SCRIM_CLASS"],"sources":["../src/ui/dialog.tsx"],"sourcesContent":["/**\n * A dialog: centered in the viewer's box over the dimmed viewer, in the layer\n * over it (`viewer-layer.ts`), so it covers the viewer and never the page\n * around it, and sits above a sheet or a panel it opened from. It takes focus\n * when it opens (its first control), keeps Tab inside it, closes on Escape\n * and gives focus back to what opened it.\n */\nimport { useLayoutEffect, useRef, type ReactNode } from 'react';\n\nimport { SCRIM_CLASS } from './sheet';\nimport { POPOVER, attachViewerLayer, holdFocus } from './viewer-layer';\n\nexport interface DialogProps {\n /** The id of the dialog's title, which names it for assistive technology. */\n readonly labelledBy: string;\n /** What Escape does: close the dialog, or nothing while it's busy. */\n readonly onClose: () => void;\n /** The dialog's own box: its border, background, width and padding. */\n readonly className: string;\n readonly children: ReactNode;\n}\n\nexport function Dialog({ labelledBy, onClose, className, children }: DialogProps) {\n const layer = useRef<HTMLDivElement>(null);\n const panel = useRef<HTMLDivElement>(null);\n const close = useRef(onClose);\n close.current = onClose;\n useLayoutEffect(() => {\n const layerElement = layer.current;\n const panelElement = panel.current;\n if (!layerElement || !panelElement) return;\n const stopLayer = attachViewerLayer(layerElement);\n const held = holdFocus(panelElement, { onEscape: () => close.current() });\n return () => {\n held.release();\n stopLayer();\n };\n // The dialog opens once; it closes by unmounting.\n }, []);\n return (\n <div\n ref={layer}\n {...POPOVER}\n data-epdf-layer=\"\"\n className=\"text-fg m-0 place-items-center overflow-hidden border-0 bg-transparent p-4 open:grid\"\n style={{ position: 'fixed', inset: 'auto', maxWidth: 'none', maxHeight: 'none' }}\n >\n <div aria-hidden=\"true\" className={`absolute inset-0 ${SCRIM_CLASS}`} />\n <div\n ref={panel}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={labelledBy}\n className={`relative max-h-full max-w-full overflow-y-auto ${className}`}\n >\n {children}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;AAsBA,SAAgB,OAAO,EAAE,YAAY,SAAS,WAAW,YAAyB;CAChF,MAAM,SAAA,GAAA,MAAA,OAAA,CAA+B,IAAI;CACzC,MAAM,SAAA,GAAA,MAAA,OAAA,CAA+B,IAAI;CACzC,MAAM,SAAA,GAAA,MAAA,OAAA,CAAe,OAAO;CAC5B,MAAM,UAAU;CAChB,CAAA,GAAA,MAAA,gBAAA,OAAsB;EACpB,MAAM,eAAe,MAAM;EAC3B,MAAM,eAAe,MAAM;EAC3B,IAAI,CAAC,gBAAgB,CAAC,cAAc;EACpC,MAAM,YAAYA,cAAAA,kBAAkB,YAAY;EAChD,MAAM,OAAOC,cAAAA,UAAU,cAAc,EAAE,gBAAgB,MAAM,QAAQ,EAAE,CAAC;EACxE,aAAa;GACX,KAAK,QAAQ;GACb,UAAU;EACZ;CAEF,GAAG,CAAC,CAAC;CACL,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EACE,KAAK;EACL,GAAIC,cAAAA;EACJ,mBAAgB;EAChB,WAAU;EACV,OAAO;GAAE,UAAU;GAAS,OAAO;GAAQ,UAAU;GAAQ,WAAW;EAAO;EALjF,UAAA,CAOE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;GAAK,eAAY;GAAO,WAAW,oBAAoBC,cAAAA;EAAgB,CAAA,GACvE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;GACE,KAAK;GACL,MAAK;GACL,cAAW;GACX,mBAAiB;GACjB,WAAW,kDAAkD;GAE5D;EACE,CAAA,CACF;;AAET"}