@bnsights/bbsf-utilities 1.0.42 → 1.0.44

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 (126) hide show
  1. package/README.md +87 -66
  2. package/bnsights-bbsf-utilities-1.0.44.tgz +0 -0
  3. package/{esm2020 → esm2022}/bnsights-bbsf-utilities.mjs +4 -4
  4. package/{esm2020 → esm2022}/lib/bbsf-utilities.module.mjs +59 -59
  5. package/esm2022/lib/shared/authentication/auth.service.mjs +211 -0
  6. package/{esm2020 → esm2022}/lib/shared/authentication/index.mjs +1 -1
  7. package/{esm2020 → esm2022}/lib/shared/config/environment.mjs +11 -11
  8. package/{esm2020 → esm2022}/lib/shared/config/word/constants.mjs +104 -104
  9. package/{esm2020 → esm2022}/lib/shared/config/word/docx-document.mjs +347 -347
  10. package/{esm2020 → esm2022}/lib/shared/config/word/helpers/index.mjs +3 -3
  11. package/{esm2020 → esm2022}/lib/shared/config/word/helpers/render-document-file.mjs +153 -153
  12. package/{esm2020 → esm2022}/lib/shared/config/word/helpers/xml-builder.mjs +1835 -1835
  13. package/{esm2020 → esm2022}/lib/shared/config/word/html-to-docx.mjs +186 -186
  14. package/{esm2020 → esm2022}/lib/shared/config/word/index.mjs +49 -49
  15. package/{esm2020 → esm2022}/lib/shared/config/word/namespaces.mjs +36 -36
  16. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/content-types.mjs +2 -2
  17. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/core.mjs +6 -6
  18. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/document-rels.mjs +3 -3
  19. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/document.template.mjs +17 -17
  20. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/font-table.mjs +3 -3
  21. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/generic-rels.mjs +2 -2
  22. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/index.mjs +12 -12
  23. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/numbering.mjs +3 -3
  24. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/rels.mjs +3 -3
  25. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/settings.mjs +3 -3
  26. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/styles.mjs +4 -4
  27. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/theme.mjs +3 -3
  28. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/web-settings.mjs +3 -3
  29. package/{esm2020 → esm2022}/lib/shared/config/word/utils/color-conversion.mjs +59 -59
  30. package/{esm2020 → esm2022}/lib/shared/config/word/utils/list.mjs +50 -50
  31. package/{esm2020 → esm2022}/lib/shared/config/word/utils/unit-conversion.mjs +29 -29
  32. package/{esm2020 → esm2022}/lib/shared/config/word/utils/url.mjs +6 -6
  33. package/{esm2020 → esm2022}/lib/shared/config/word/utils/vnode.mjs +2 -2
  34. package/{esm2020 → esm2022}/lib/shared/config/word/word-work/templates/documentTemplate.mjs +12 -12
  35. package/{esm2020 → esm2022}/lib/shared/config/word/word-work/templates/index.mjs +3 -3
  36. package/{esm2020 → esm2022}/lib/shared/config/word/word-work/templates/mhtDocumentTemplate.mjs +4 -4
  37. package/{esm2020 → esm2022}/lib/shared/config/word/word-work/templates/mhtPartTemplate.mjs +3 -3
  38. package/{esm2020 → esm2022}/lib/shared/config/word/word-work/utils.mjs +25 -25
  39. package/{esm2020 → esm2022}/lib/shared/enums/authentication-modes-enums.mjs +7 -7
  40. package/{esm2020 → esm2022}/lib/shared/index.mjs +3 -3
  41. package/{esm2020 → esm2022}/lib/shared/models/UserModel.mjs +2 -2
  42. package/{esm2020 → esm2022}/lib/shared/models/area-model.mjs +2 -2
  43. package/{esm2020 → esm2022}/lib/shared/models/error-model.mjs +2 -2
  44. package/{esm2020 → esm2022}/lib/shared/models/index.mjs +4 -4
  45. package/{esm2020 → esm2022}/lib/shared/models/request-options-model.mjs +10 -10
  46. package/{esm2020 → esm2022}/lib/shared/models/word-document-model.mjs +7 -7
  47. package/{esm2020 → esm2022}/lib/shared/services/appearance-configuration.service.mjs +35 -35
  48. package/esm2022/lib/shared/services/configuration.service.mjs +24 -0
  49. package/{esm2020 → esm2022}/lib/shared/services/control-validation.service.mjs +173 -173
  50. package/esm2022/lib/shared/services/environment.service.mjs +75 -0
  51. package/{esm2020 → esm2022}/lib/shared/services/index.mjs +11 -11
  52. package/{esm2020 → esm2022}/lib/shared/services/master-layout.service.mjs +72 -72
  53. package/{esm2020 → esm2022}/lib/shared/services/request-handler.service.mjs +219 -199
  54. package/{esm2020 → esm2022}/lib/shared/services/styles-bundle.service.mjs +55 -55
  55. package/{esm2020 → esm2022}/lib/shared/services/translate.service.mjs +14 -14
  56. package/{esm2020 → esm2022}/lib/shared/services/translation-resolver.service.mjs +6 -6
  57. package/{esm2020 → esm2022}/lib/shared/services/utility.service.mjs +87 -87
  58. package/{esm2020 → esm2022}/lib/shared/services/word-document.service.mjs +38 -38
  59. package/{esm2020 → esm2022}/public-api.mjs +29 -29
  60. package/{fesm2020 → fesm2022}/bnsights-bbsf-utilities.mjs +3856 -3836
  61. package/fesm2022/bnsights-bbsf-utilities.mjs.map +1 -0
  62. package/index.d.ts +5 -5
  63. package/lib/bbsf-utilities.module.d.ts +10 -10
  64. package/lib/shared/authentication/auth.service.d.ts +52 -52
  65. package/lib/shared/authentication/index.d.ts +1 -1
  66. package/lib/shared/config/environment.d.ts +1 -1
  67. package/lib/shared/config/word/constants.d.ts +124 -124
  68. package/lib/shared/config/word/docx-document.d.ts +73 -73
  69. package/lib/shared/config/word/helpers/index.d.ts +1 -1
  70. package/lib/shared/config/word/helpers/render-document-file.d.ts +2 -2
  71. package/lib/shared/config/word/helpers/xml-builder.d.ts +16 -16
  72. package/lib/shared/config/word/html-to-docx.d.ts +1 -1
  73. package/lib/shared/config/word/index.d.ts +1 -1
  74. package/lib/shared/config/word/namespaces.d.ts +36 -36
  75. package/lib/shared/config/word/schemas/content-types.d.ts +1 -1
  76. package/lib/shared/config/word/schemas/core.d.ts +1 -1
  77. package/lib/shared/config/word/schemas/document-rels.d.ts +1 -1
  78. package/lib/shared/config/word/schemas/document.template.d.ts +4 -4
  79. package/lib/shared/config/word/schemas/font-table.d.ts +1 -1
  80. package/lib/shared/config/word/schemas/generic-rels.d.ts +1 -1
  81. package/lib/shared/config/word/schemas/index.d.ts +12 -12
  82. package/lib/shared/config/word/schemas/numbering.d.ts +1 -1
  83. package/lib/shared/config/word/schemas/rels.d.ts +1 -1
  84. package/lib/shared/config/word/schemas/settings.d.ts +1 -1
  85. package/lib/shared/config/word/schemas/styles.d.ts +1 -1
  86. package/lib/shared/config/word/schemas/theme.d.ts +1 -1
  87. package/lib/shared/config/word/schemas/web-settings.d.ts +1 -1
  88. package/lib/shared/config/word/utils/color-conversion.d.ts +7 -7
  89. package/lib/shared/config/word/utils/list.d.ts +6 -6
  90. package/lib/shared/config/word/utils/unit-conversion.d.ts +29 -29
  91. package/lib/shared/config/word/utils/url.d.ts +1 -1
  92. package/lib/shared/config/word/utils/vnode.d.ts +1 -1
  93. package/lib/shared/config/word/word-work/templates/documentTemplate.d.ts +12 -12
  94. package/lib/shared/config/word/word-work/templates/index.d.ts +3 -3
  95. package/lib/shared/config/word/word-work/templates/mhtDocumentTemplate.d.ts +1 -1
  96. package/lib/shared/config/word/word-work/templates/mhtPartTemplate.d.ts +1 -1
  97. package/lib/shared/config/word/word-work/utils.d.ts +1 -1
  98. package/lib/shared/enums/authentication-modes-enums.d.ts +6 -6
  99. package/lib/shared/index.d.ts +3 -3
  100. package/lib/shared/models/UserModel.d.ts +6 -6
  101. package/lib/shared/models/area-model.d.ts +4 -4
  102. package/lib/shared/models/error-model.d.ts +5 -5
  103. package/lib/shared/models/index.d.ts +4 -4
  104. package/lib/shared/models/request-options-model.d.ts +11 -11
  105. package/lib/shared/models/word-document-model.d.ts +16 -16
  106. package/lib/shared/services/appearance-configuration.service.d.ts +14 -14
  107. package/lib/shared/services/configuration.service.d.ts +10 -10
  108. package/lib/shared/services/control-validation.service.d.ts +23 -23
  109. package/lib/shared/services/environment.service.d.ts +25 -25
  110. package/lib/shared/services/index.d.ts +11 -11
  111. package/lib/shared/services/master-layout.service.d.ts +24 -24
  112. package/lib/shared/services/request-handler.service.d.ts +35 -33
  113. package/lib/shared/services/styles-bundle.service.d.ts +12 -12
  114. package/lib/shared/services/translate.service.d.ts +6 -6
  115. package/lib/shared/services/translation-resolver.service.d.ts +2 -2
  116. package/lib/shared/services/utility.service.d.ts +23 -23
  117. package/lib/shared/services/word-document.service.d.ts +8 -8
  118. package/package.json +28 -29
  119. package/public-api.d.ts +17 -17
  120. package/bnsights-bbsf-utilities-1.0.42.tgz +0 -0
  121. package/esm2020/lib/shared/authentication/auth.service.mjs +0 -211
  122. package/esm2020/lib/shared/services/configuration.service.mjs +0 -24
  123. package/esm2020/lib/shared/services/environment.service.mjs +0 -75
  124. package/fesm2015/bnsights-bbsf-utilities.mjs +0 -4555
  125. package/fesm2015/bnsights-bbsf-utilities.mjs.map +0 -1
  126. package/fesm2020/bnsights-bbsf-utilities.mjs.map +0 -1
@@ -1,4 +1,4 @@
1
- /* eslint-disable import/prefer-default-export */
2
- export { renderDocumentFile } from './render-document-file';
3
- export { convertVTreeToXML } from './render-document-file';
1
+ /* eslint-disable import/prefer-default-export */
2
+ export { renderDocumentFile } from './render-document-file';
3
+ export { convertVTreeToXML } from './render-document-file';
4
4
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvbGliL3NoYXJlZC9jb25maWcvd29yZC9oZWxwZXJzL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlEQUFpRDtBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9wcmVmZXItZGVmYXVsdC1leHBvcnQgKi9cclxuZXhwb3J0IHsgcmVuZGVyRG9jdW1lbnRGaWxlIH0gZnJvbSAnLi9yZW5kZXItZG9jdW1lbnQtZmlsZSc7XHJcbmV4cG9ydCB7IGNvbnZlcnRWVHJlZVRvWE1MIH0gZnJvbSAnLi9yZW5kZXItZG9jdW1lbnQtZmlsZSc7XHJcbiJdfQ==
@@ -1,154 +1,154 @@
1
- /* eslint-disable no-await-in-loop */
2
- /* eslint-disable no-case-declarations */
3
- import { fragment } from 'xmlbuilder2';
4
- import VNode from 'virtual-dom/vnode/vnode';
5
- import VText from 'virtual-dom/vnode/vtext';
6
- import isVNode from 'virtual-dom/vnode/is-vnode';
7
- import isVText from 'virtual-dom/vnode/is-vtext';
8
- // eslint-disable-next-line import/no-named-default
9
- import { default as HTMLToVDOM } from 'html-to-vdom';
10
- import escape from 'escape-html';
11
- // FIXME: remove the cyclic dependency
12
- // eslint-disable-next-line import/no-cycle
13
- import * as xmlBuilder from './xml-builder';
14
- import namespaces from '../namespaces';
15
- import { vNodeHasChildren } from '../utils/vnode';
16
- const convertHTML = HTMLToVDOM({
17
- VNode,
18
- VText,
19
- });
20
- async function findXMLEquivalent(docxDocumentInstance, vNode, xmlFragment) {
21
- if (vNode.tagName === 'div' &&
22
- (vNode.properties.attributes.class === 'page-break' ||
23
- (vNode.properties.style && vNode.properties.style['page-break-after']))) {
24
- const paragraphFragment = fragment({ namespaceAlias: { w: namespaces.w } })
25
- .ele('@w', 'p')
26
- .ele('@w', 'r')
27
- .ele('@w', 'br')
28
- .att('@w', 'type', 'page')
29
- .up()
30
- .up()
31
- .up();
32
- xmlFragment.import(paragraphFragment);
33
- return;
34
- }
35
- switch (vNode.tagName) {
36
- case 'h1':
37
- case 'h2':
38
- case 'h3':
39
- case 'h4':
40
- case 'h5':
41
- case 'h6':
42
- const headingFragment = await xmlBuilder.buildParagraph(vNode, {
43
- paragraphStyle: `Heading${vNode.tagName[1]}`,
44
- }, docxDocumentInstance);
45
- xmlFragment.import(headingFragment);
46
- return;
47
- case 'span':
48
- case 'strong':
49
- case 'b':
50
- case 'em':
51
- case 'i':
52
- case 'u':
53
- case 'ins':
54
- case 'strike':
55
- case 'del':
56
- case 's':
57
- case 'sub':
58
- case 'sup':
59
- case 'mark':
60
- case 'p':
61
- case 'a':
62
- case 'blockquote':
63
- case 'code':
64
- case 'pre':
65
- const paragraphFragment = await xmlBuilder.buildParagraph(vNode, {}, docxDocumentInstance);
66
- xmlFragment.import(paragraphFragment);
67
- return;
68
- case 'figure':
69
- if (vNodeHasChildren(vNode)) {
70
- // eslint-disable-next-line no-plusplus
71
- for (let index = 0; index < vNode.children.length; index++) {
72
- const childVNode = vNode.children[index];
73
- if (childVNode.tagName === 'table') {
74
- const tableFragment = await xmlBuilder.buildTable(childVNode, {
75
- maximumWidth: docxDocumentInstance.availableDocumentSpace,
76
- rowCantSplit: docxDocumentInstance.tableRowCantSplit,
77
- }, docxDocumentInstance);
78
- xmlFragment.import(tableFragment);
79
- // Adding empty paragraph for space after table
80
- const emptyParagraphFragment = await xmlBuilder.buildParagraph(null, {});
81
- xmlFragment.import(emptyParagraphFragment);
82
- }
83
- else if (childVNode.tagName === 'img') {
84
- const imageFragment = await xmlBuilder.buildImage(docxDocumentInstance, childVNode);
85
- if (imageFragment) {
86
- xmlFragment.import(imageFragment);
87
- }
88
- }
89
- }
90
- }
91
- return;
92
- case 'table':
93
- const tableFragment = await xmlBuilder.buildTable(vNode, {
94
- maximumWidth: docxDocumentInstance.availableDocumentSpace,
95
- rowCantSplit: docxDocumentInstance.tableRowCantSplit,
96
- }, docxDocumentInstance);
97
- xmlFragment.import(tableFragment);
98
- // Adding empty paragraph for space after table
99
- const emptyParagraphFragment = await xmlBuilder.buildParagraph(null, {});
100
- xmlFragment.import(emptyParagraphFragment);
101
- return;
102
- case 'ol':
103
- case 'ul':
104
- await xmlBuilder.buildList(vNode, docxDocumentInstance, xmlFragment);
105
- return;
106
- case 'img':
107
- const imageFragment = await xmlBuilder.buildImage(docxDocumentInstance, vNode);
108
- if (imageFragment) {
109
- xmlFragment.import(imageFragment);
110
- }
111
- return;
112
- case 'br':
113
- const linebreakFragment = await xmlBuilder.buildParagraph(null, {});
114
- xmlFragment.import(linebreakFragment);
115
- return;
116
- }
117
- if (vNodeHasChildren(vNode)) {
118
- // eslint-disable-next-line no-plusplus
119
- for (let index = 0; index < vNode.children.length; index++) {
120
- const childVNode = vNode.children[index];
121
- // eslint-disable-next-line no-use-before-define
122
- await convertVTreeToXML(docxDocumentInstance, childVNode, xmlFragment);
123
- }
124
- }
125
- }
126
- // eslint-disable-next-line consistent-return
127
- export async function convertVTreeToXML(docxDocumentInstance, vTree, xmlFragment) {
128
- if (!vTree) {
129
- // eslint-disable-next-line no-useless-return
130
- return '';
131
- }
132
- if (Array.isArray(vTree) && vTree.length) {
133
- // eslint-disable-next-line no-plusplus
134
- for (let index = 0; index < vTree.length; index++) {
135
- const vNode = vTree[index];
136
- await convertVTreeToXML(docxDocumentInstance, vNode, xmlFragment);
137
- }
138
- }
139
- else if (isVNode(vTree)) {
140
- await findXMLEquivalent(docxDocumentInstance, vTree, xmlFragment);
141
- }
142
- else if (isVText(vTree)) {
143
- xmlBuilder.buildTextElement(xmlFragment, escape(String(vTree.text)));
144
- }
145
- return xmlFragment;
146
- }
147
- async function renderDocumentFile(docxDocumentInstance) {
148
- const vTree = convertHTML(docxDocumentInstance.htmlString);
149
- const xmlFragment = fragment({ namespaceAlias: { w: namespaces.w } });
150
- const populatedXmlFragment = await convertVTreeToXML(docxDocumentInstance, vTree, xmlFragment);
151
- return populatedXmlFragment;
152
- }
153
- export { renderDocumentFile };
1
+ /* eslint-disable no-await-in-loop */
2
+ /* eslint-disable no-case-declarations */
3
+ import { fragment } from 'xmlbuilder2';
4
+ import VNode from 'virtual-dom/vnode/vnode';
5
+ import VText from 'virtual-dom/vnode/vtext';
6
+ import isVNode from 'virtual-dom/vnode/is-vnode';
7
+ import isVText from 'virtual-dom/vnode/is-vtext';
8
+ // eslint-disable-next-line import/no-named-default
9
+ import { default as HTMLToVDOM } from 'html-to-vdom';
10
+ import escape from 'escape-html';
11
+ // FIXME: remove the cyclic dependency
12
+ // eslint-disable-next-line import/no-cycle
13
+ import * as xmlBuilder from './xml-builder';
14
+ import namespaces from '../namespaces';
15
+ import { vNodeHasChildren } from '../utils/vnode';
16
+ const convertHTML = HTMLToVDOM({
17
+ VNode,
18
+ VText,
19
+ });
20
+ async function findXMLEquivalent(docxDocumentInstance, vNode, xmlFragment) {
21
+ if (vNode.tagName === 'div' &&
22
+ (vNode.properties.attributes.class === 'page-break' ||
23
+ (vNode.properties.style && vNode.properties.style['page-break-after']))) {
24
+ const paragraphFragment = fragment({ namespaceAlias: { w: namespaces.w } })
25
+ .ele('@w', 'p')
26
+ .ele('@w', 'r')
27
+ .ele('@w', 'br')
28
+ .att('@w', 'type', 'page')
29
+ .up()
30
+ .up()
31
+ .up();
32
+ xmlFragment.import(paragraphFragment);
33
+ return;
34
+ }
35
+ switch (vNode.tagName) {
36
+ case 'h1':
37
+ case 'h2':
38
+ case 'h3':
39
+ case 'h4':
40
+ case 'h5':
41
+ case 'h6':
42
+ const headingFragment = await xmlBuilder.buildParagraph(vNode, {
43
+ paragraphStyle: `Heading${vNode.tagName[1]}`,
44
+ }, docxDocumentInstance);
45
+ xmlFragment.import(headingFragment);
46
+ return;
47
+ case 'span':
48
+ case 'strong':
49
+ case 'b':
50
+ case 'em':
51
+ case 'i':
52
+ case 'u':
53
+ case 'ins':
54
+ case 'strike':
55
+ case 'del':
56
+ case 's':
57
+ case 'sub':
58
+ case 'sup':
59
+ case 'mark':
60
+ case 'p':
61
+ case 'a':
62
+ case 'blockquote':
63
+ case 'code':
64
+ case 'pre':
65
+ const paragraphFragment = await xmlBuilder.buildParagraph(vNode, {}, docxDocumentInstance);
66
+ xmlFragment.import(paragraphFragment);
67
+ return;
68
+ case 'figure':
69
+ if (vNodeHasChildren(vNode)) {
70
+ // eslint-disable-next-line no-plusplus
71
+ for (let index = 0; index < vNode.children.length; index++) {
72
+ const childVNode = vNode.children[index];
73
+ if (childVNode.tagName === 'table') {
74
+ const tableFragment = await xmlBuilder.buildTable(childVNode, {
75
+ maximumWidth: docxDocumentInstance.availableDocumentSpace,
76
+ rowCantSplit: docxDocumentInstance.tableRowCantSplit,
77
+ }, docxDocumentInstance);
78
+ xmlFragment.import(tableFragment);
79
+ // Adding empty paragraph for space after table
80
+ const emptyParagraphFragment = await xmlBuilder.buildParagraph(null, {});
81
+ xmlFragment.import(emptyParagraphFragment);
82
+ }
83
+ else if (childVNode.tagName === 'img') {
84
+ const imageFragment = await xmlBuilder.buildImage(docxDocumentInstance, childVNode);
85
+ if (imageFragment) {
86
+ xmlFragment.import(imageFragment);
87
+ }
88
+ }
89
+ }
90
+ }
91
+ return;
92
+ case 'table':
93
+ const tableFragment = await xmlBuilder.buildTable(vNode, {
94
+ maximumWidth: docxDocumentInstance.availableDocumentSpace,
95
+ rowCantSplit: docxDocumentInstance.tableRowCantSplit,
96
+ }, docxDocumentInstance);
97
+ xmlFragment.import(tableFragment);
98
+ // Adding empty paragraph for space after table
99
+ const emptyParagraphFragment = await xmlBuilder.buildParagraph(null, {});
100
+ xmlFragment.import(emptyParagraphFragment);
101
+ return;
102
+ case 'ol':
103
+ case 'ul':
104
+ await xmlBuilder.buildList(vNode, docxDocumentInstance, xmlFragment);
105
+ return;
106
+ case 'img':
107
+ const imageFragment = await xmlBuilder.buildImage(docxDocumentInstance, vNode);
108
+ if (imageFragment) {
109
+ xmlFragment.import(imageFragment);
110
+ }
111
+ return;
112
+ case 'br':
113
+ const linebreakFragment = await xmlBuilder.buildParagraph(null, {});
114
+ xmlFragment.import(linebreakFragment);
115
+ return;
116
+ }
117
+ if (vNodeHasChildren(vNode)) {
118
+ // eslint-disable-next-line no-plusplus
119
+ for (let index = 0; index < vNode.children.length; index++) {
120
+ const childVNode = vNode.children[index];
121
+ // eslint-disable-next-line no-use-before-define
122
+ await convertVTreeToXML(docxDocumentInstance, childVNode, xmlFragment);
123
+ }
124
+ }
125
+ }
126
+ // eslint-disable-next-line consistent-return
127
+ export async function convertVTreeToXML(docxDocumentInstance, vTree, xmlFragment) {
128
+ if (!vTree) {
129
+ // eslint-disable-next-line no-useless-return
130
+ return '';
131
+ }
132
+ if (Array.isArray(vTree) && vTree.length) {
133
+ // eslint-disable-next-line no-plusplus
134
+ for (let index = 0; index < vTree.length; index++) {
135
+ const vNode = vTree[index];
136
+ await convertVTreeToXML(docxDocumentInstance, vNode, xmlFragment);
137
+ }
138
+ }
139
+ else if (isVNode(vTree)) {
140
+ await findXMLEquivalent(docxDocumentInstance, vTree, xmlFragment);
141
+ }
142
+ else if (isVText(vTree)) {
143
+ xmlBuilder.buildTextElement(xmlFragment, escape(String(vTree.text)));
144
+ }
145
+ return xmlFragment;
146
+ }
147
+ async function renderDocumentFile(docxDocumentInstance) {
148
+ const vTree = convertHTML(docxDocumentInstance.htmlString);
149
+ const xmlFragment = fragment({ namespaceAlias: { w: namespaces.w } });
150
+ const populatedXmlFragment = await convertVTreeToXML(docxDocumentInstance, vTree, xmlFragment);
151
+ return populatedXmlFragment;
152
+ }
153
+ export { renderDocumentFile };
154
154
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWRvY3VtZW50LWZpbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvbGliL3NoYXJlZC9jb25maWcvd29yZC9oZWxwZXJzL3JlbmRlci1kb2N1bWVudC1maWxlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQUNyQyx5Q0FBeUM7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEtBQUssTUFBTSx5QkFBeUIsQ0FBQztBQUM1QyxPQUFPLEtBQUssTUFBTSx5QkFBeUIsQ0FBQztBQUM1QyxPQUFPLE9BQU8sTUFBTSw0QkFBNEIsQ0FBQztBQUNqRCxPQUFPLE9BQU8sTUFBTSw0QkFBNEIsQ0FBQztBQUNqRCxtREFBbUQ7QUFDbkQsT0FBTyxFQUFFLE9BQU8sSUFBSSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDckQsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBRWpDLHNDQUFzQztBQUN0QywyQ0FBMkM7QUFDM0MsT0FBTyxLQUFLLFVBQVUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxVQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxELE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQztJQUM3QixLQUFLO0lBQ0wsS0FBSztDQUNOLENBQUMsQ0FBQztBQUVILEtBQUssVUFBVSxpQkFBaUIsQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsV0FBVztJQUN2RSxJQUNFLEtBQUssQ0FBQyxPQUFPLEtBQUssS0FBSztRQUN2QixDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssS0FBSyxZQUFZO1lBQ2pELENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFD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LEVBQUUsV0FBVyxDQUFDLENBQUM7S0FDbkU7U0FBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN6QixVQUFVLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN0RTtJQUNELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFFRCxLQUFLLFVBQVUsa0JBQWtCLENBQUMsb0JBQW9CO0lBQ3BELE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUUzRCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsRUFBRSxjQUFjLEVBQUUsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUV0RSxNQUFNLG9CQUFvQixHQUFHLE1BQU0saUJBQWlCLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBRS9GLE9BQU8sb0JBQW9CLENBQUM7QUFDOUIsQ0FBQztBQUVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jYXNlLWRlY2xhcmF0aW9ucyAqL1xyXG5pbXBvcnQgeyBmcmFnbWVudCB9IGZyb20gJ3htbGJ1aWxkZXIyJztcclxuaW1wb3J0IFZOb2RlIGZyb20gJ3ZpcnR1YWwtZG9tL3Zub2RlL3Zub2RlJztcclxuaW1wb3J0IFZUZXh0IGZyb20gJ3ZpcnR1YWwtZG9tL3Zub2RlL3Z0ZXh0JztcclxuaW1wb3J0IGlzVk5vZGUgZnJvbSAndmlydHVhbC1kb20vdm5vZGUvaXMtdm5vZGUnO1xyXG5pbXBvcnQgaXNWVGV4dCBmcm9tICd2aXJ0dWFsLWRvbS92bm9kZS9pcy12dGV4dCc7XHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tbmFtZWQtZGVmYXVsdFxyXG5pbXBvcnQgeyBkZWZhdWx0IGFzIEhUTUxUb1ZET00gfSBmcm9tICdodG1sLXRvLXZkb20nO1xyXG5pbXBvcnQgZXNjYXBlIGZyb20gJ2VzY2FwZS1odG1sJztcclxuXHJcbi8vIEZJWE1FOiByZW1vdmUgdGhlIGN5Y2xpYyBkZXBlbmRlbmN5XHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tY3ljbGVcclxuaW1wb3J0ICogYXMgeG1sQnVpbGRlciBmcm9tICcuL3htbC1idWlsZGVyJztcclxuaW1wb3J0IG5hbWVzcGFjZXMgZnJvbSAnLi4vbmFtZXNwYWNlcyc7XHJcbmltcG9ydCB7IHZOb2RlSGFzQ2hpbGRyZW4gfSBmcm9tICcuLi91dGlscy92bm9kZSc7XHJcblxyXG5jb25zdCBjb252ZXJ0SFRNTCA9IEhUTUxUb1ZET00oe1xyXG4gIFZOb2RlLFxyXG4gIFZUZXh0LFxyXG59KTtcclxuXHJcbmFzeW5jIGZ1bmN0aW9uIGZpbmRYTUxFcXVpdmFsZW50KGRvY3hEb2N1bWVudEluc3RhbmNlLCB2Tm9kZSwgeG1sRnJhZ21lbnQpIHtcclxuICBpZiAoXHJcbiAgICB2Tm9kZS50YWdOYW1lID09PSAnZGl2JyAmJlxyXG4gICAgKHZOb2RlLnByb3BlcnRpZXMuYXR0cmlidXRlcy5jbGFzcyA9PT0gJ3BhZ2UtYnJlYWsnIHx8XHJcbiAgICAgICh2Tm9kZS5wcm9wZXJ0aWVzLnN0eWxlICYmIHZOb2RlLnByb3BlcnRpZXMuc3R5bGVbJ3BhZ2UtYnJlYWstYWZ0ZXInXSkpXHJcbiAgKSB7XHJcbiAgICBjb25zdCBwYXJhZ3JhcGhGcmFnbWVudCA9IGZyYWdtZW50KHsgbmFtZXNwYWNlQWxpYXM6IHsgdzogbmFtZXNwYWNlcy53IH0gfSlcclxuICAgICAgLmVsZSgnQHcnLCAncCcpXHJcbiAgICAgIC5lbGUoJ0B3JywgJ3InKVxyXG4gICAgICAuZWxlKCdAdycsICdicicpXHJcbiAgICAgIC5hdHQoJ0B3JywgJ3R5cGUnLCAncGFnZScpXHJcbiAgICAgIC51cCgpXHJcbiAgICAgIC51cCgpXHJcbiAgICAgIC51cCgpO1xyXG5cclxuICAgIHhtbEZyYWdtZW50LmltcG9ydChwYXJhZ3JhcGhGcmFnbWVudCk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBzd2l0Y2ggKHZOb2RlLnRhZ05hbWUpIHtcclxuICAgIGNhc2UgJ2gxJzpcclxuICAgIGNhc2UgJ2gyJzpcclxuICAgIGNhc2UgJ2gzJzpcclxuICAgIGNhc2UgJ2g0JzpcclxuICAgIGNhc2UgJ2g1JzpcclxuICAgIGNhc2UgJ2g2JzpcclxuICAgICAgY29uc3QgaGVhZGluZ0ZyYWdtZW50ID0gYXdhaXQgeG1sQnVpbGRlci5idWlsZFBhcmFncmFwaChcclxuICAgICAgICB2Tm9kZSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwYXJhZ3JhcGhTdHlsZTogYEhlYWRpbmcke3ZOb2RlLnRhZ05hbWVbMV19YCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGRvY3hEb2N1bWVudEluc3RhbmNlXHJcbiAgICAgICk7XHJcbiAgICAgIHhtbEZyYWdtZW50LmltcG9ydChoZWFkaW5nRnJhZ21lbnQpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICBjYXNlICdzcGFuJzpcclxuICAgIGNhc2UgJ3N0cm9uZyc6XHJcbiAgICBjYXNlICdiJzpcclxuICAgIGNhc2UgJ2VtJzpcclxuICAgIGNhc2UgJ2knOlxyXG4gICAgY2FzZSAndSc6XHJcbiAgICBjYXNlICdpbnMnOlxyXG4gICAgY2FzZSAnc3RyaWtlJzpcclxuICAgIGNhc2UgJ2RlbCc6XHJcbiAgICBjYXNlICdzJzpcclxuICAgIGNhc2UgJ3N1Yic6XHJcbiAgICBjYXNlICdzdXAnOlxyXG4gICAgY2FzZSAnbWFyayc6XHJcbiAgICBjYXNlICdwJzpcclxuICAgIGNhc2UgJ2EnOlxyXG4gICAgY2FzZSAnYmxvY2txdW90ZSc6XHJcbiAgICBjYXNlICdjb2RlJzpcclxuICAgIGNhc2UgJ3ByZSc6XHJcbiAgICAgIGNvbnN0IHBhcmFncmFwaEZyYWdtZW50ID0gYXdhaXQgeG1sQnVpbGRlci5idWlsZFBhcmFncmFwaCh2Tm9kZSwge30sIGRvY3hEb2N1bWVudEluc3RhbmNlKTtcclxuICAgICAgeG1sRnJhZ21lbnQuaW1wb3J0KHBhcmFncmFwaEZyYWdtZW50KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgY2FzZSAnZmlndXJlJzpcclxuICAgICAgaWYgKHZOb2RlSGFzQ2hpbGRyZW4odk5vZGUpKSB7XHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXHJcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHZOb2RlLmNoaWxkcmVuLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgY29uc3QgY2hpbGRWTm9kZSA9IHZOb2RlLmNoaWxkcmVuW2luZGV4XTtcclxuICAgICAgICAgIGlmIChjaGlsZFZOb2RlLnRhZ05hbWUgPT09ICd0YWJsZScpIHtcclxuICAgICAgICAgICAgY29uc3QgdGFibGVGcmFnbWVudCA9IGF3YWl0IHhtbEJ1aWxkZXIuYnVpbGRUYWJsZShcclxuICAgICAgICAgICAgICBjaGlsZFZOb2RlLFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG1heGltdW1XaWR0aDogZG9jeERvY3VtZW50SW5zdGFuY2UuYXZhaWxhYmxlRG9jdW1lbnRTcGFjZSxcclxuICAgICAgICAgICAgICAgIHJvd0NhbnRTcGxpdDogZG9jeERvY3VtZW50SW5zdGFuY2UudGFibGVSb3dDYW50U3BsaXQsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBkb2N4RG9jdW1lbnRJbnN0YW5jZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB4bWxGcmFnbWVudC5pbXBvcnQodGFibGVGcmFnbWVudCk7XHJcbiAgICAgICAgICAgIC8vIEFkZGluZyBlbXB0eSBwYXJhZ3JhcGggZm9yIHNwYWNlIGFmdGVyIHRhYmxlXHJcbiAgICAgICAgICAgIGNvbnN0IGVtcHR5UGFyYWdyYXBoRnJhZ21lbnQgPSBhd2FpdCB4bWxCdWlsZGVyLmJ1aWxkUGFyYWdyYXBoKG51bGwsIHt9KTtcclxuICAgICAgICAgICAgeG1sRnJhZ21lbnQuaW1wb3J0KGVtcHR5UGFyYWdyYXBoRnJhZ21lbnQpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChjaGlsZFZOb2RlLnRhZ05hbWUgPT09ICdpbWcnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGltYWdlRnJhZ21lbnQgPSBhd2FpdCB4bWxCdWlsZGVyLmJ1aWxkSW1hZ2UoZG9jeERvY3VtZW50SW5zdGFuY2UsIGNoaWxkVk5vZGUpO1xyXG4gICAgICAgICAgICBpZiAoaW1hZ2VGcmFnbWVudCkge1xyXG4gICAgICAgICAgICAgIHhtbEZyYWdtZW50LmltcG9ydChpbWFnZUZyYWdtZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICBjYXNlICd0YWJsZSc6XHJcbiAgICAgIGNvbnN0IHRhYmxlRnJhZ21lbnQgPSBhd2FpdCB4bWxCdWlsZGVyLmJ1aWxkVGFibGUoXHJcbiAgICAgICAgdk5vZGUsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbWF4aW11bVdpZHRoOiBkb2N4RG9jdW1lbnRJbnN0YW5jZS5hdmFpbGFibGVEb2N1bWVudFNwYWNlLFxyXG4gICAgICAgICAgcm93Q2FudFNwbGl0OiBkb2N4RG9jdW1lbnRJbnN0YW5jZS50YWJsZVJvd0NhbnRTcGxpdCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGRvY3hEb2N1bWVudEluc3RhbmNlXHJcbiAgICAgICk7XHJcbiAgICAgIHhtbEZyYWdtZW50LmltcG9ydCh0YWJsZUZyYWdtZW50KTtcclxuICAgICAgLy8gQWRkaW5nIGVtcHR5IHBhcmFncmFwaCBmb3Igc3BhY2UgYWZ0ZXIgdGFibGVcclxuICAgICAgY29uc3QgZW1wdHlQYXJhZ3JhcGhGcmFnbWVudCA9IGF3YWl0IHhtbEJ1aWxkZXIuYnVpbGRQYXJhZ3JhcGgobnVsbCwge30pO1xyXG4gICAgICB4bWxGcmFnbWVudC5pbXBvcnQoZW1wdHlQYXJhZ3JhcGhGcmFnbWVudCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIGNhc2UgJ29sJzpcclxuICAgIGNhc2UgJ3VsJzpcclxuICAgICAgYXdhaXQgeG1sQnVpbGRlci5idWlsZExpc3Qodk5vZGUsIGRvY3hEb2N1bWVudEluc3RhbmNlLCB4bWxGcmFnbWVudCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIGNhc2UgJ2ltZyc6XHJcbiAgICAgIGNvbnN0IGltYWdlRnJhZ21lbnQgPSBhd2FpdCB4bWxCdWlsZGVyLmJ1aWxkSW1hZ2UoZG9jeERvY3VtZW50SW5zdGFuY2UsIHZOb2RlKTtcclxuICAgICAgaWYgKGltYWdlRnJhZ21lbnQpIHtcclxuICAgICAgICB4bWxGcmFnbWVudC5pbXBvcnQoaW1hZ2VGcmFnbWVudCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgY2FzZSAnYnInOlxyXG4gICAgICBjb25zdCBsaW5lYnJlYWtGcmFnbWVudCA9IGF3YWl0IHhtbEJ1aWxkZXIuYnVpbGRQYXJhZ3JhcGgobnVsbCwge30pO1xyXG4gICAgICB4bWxGcmFnbWVudC5pbXBvcnQobGluZWJyZWFrRnJhZ21lbnQpO1xyXG4gICAgICByZXR1cm47XHJcbiAgfVxyXG4gIGlmICh2Tm9kZUhhc0NoaWxkcmVuKHZOb2RlKSkge1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdk5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgIGNvbnN0IGNoaWxkVk5vZGUgPSB2Tm9kZS5jaGlsZHJlbltpbmRleF07XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxyXG4gICAgICBhd2FpdCBjb252ZXJ0VlRyZWVUb1hNTChkb2N4RG9jdW1lbnRJbnN0YW5jZSwgY2hpbGRWTm9kZSwgeG1sRnJhZ21lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb252ZXJ0VlRyZWVUb1hNTChkb2N4RG9jdW1lbnRJbnN0YW5jZSwgdlRyZWUsIHhtbEZyYWdtZW50KSB7XHJcbiAgaWYgKCF2VHJlZSkge1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtcmV0dXJuXHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG4gIGlmIChBcnJheS5pc0FycmF5KHZUcmVlKSAmJiB2VHJlZS5sZW5ndGgpIHtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wbHVzcGx1c1xyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHZUcmVlLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICBjb25zdCB2Tm9kZSA9IHZUcmVlW2luZGV4XTtcclxuICAgICAgYXdhaXQgY29udmVydFZUcmVlVG9YTUwoZG9jeERvY3VtZW50SW5zdGFuY2UsIHZOb2RlLCB4bWxGcmFnbWVudCk7XHJcbiAgICB9XHJcbiAgfSBlbHNlIGlmIChpc1ZOb2RlKHZUcmVlKSkge1xyXG4gICAgYXdhaXQgZmluZFhNTEVxdWl2YWxlbnQoZG9jeERvY3VtZW50SW5zdGFuY2UsIHZUcmVlLCB4bWxGcmFnbWVudCk7XHJcbiAgfSBlbHNlIGlmIChpc1ZUZXh0KHZUcmVlKSkge1xyXG4gICAgeG1sQnVpbGRlci5idWlsZFRleHRFbGVtZW50KHhtbEZyYWdtZW50LCBlc2NhcGUoU3RyaW5nKHZUcmVlLnRleHQpKSk7XHJcbiAgfVxyXG4gIHJldHVybiB4bWxGcmFnbWVudDtcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gcmVuZGVyRG9jdW1lbnRGaWxlKGRvY3hEb2N1bWVudEluc3RhbmNlKSB7XHJcbiAgY29uc3QgdlRyZWUgPSBjb252ZXJ0SFRNTChkb2N4RG9jdW1lbnRJbnN0YW5jZS5odG1sU3RyaW5nKTtcclxuXHJcbiAgY29uc3QgeG1sRnJhZ21lbnQgPSBmcmFnbWVudCh7IG5hbWVzcGFjZUFsaWFzOiB7IHc6IG5hbWVzcGFjZXMudyB9IH0pO1xyXG5cclxuICBjb25zdCBwb3B1bGF0ZWRYbWxGcmFnbWVudCA9IGF3YWl0IGNvbnZlcnRWVHJlZVRvWE1MKGRvY3hEb2N1bWVudEluc3RhbmNlLCB2VHJlZSwgeG1sRnJhZ21lbnQpO1xyXG5cclxuICByZXR1cm4gcG9wdWxhdGVkWG1sRnJhZ21lbnQ7XHJcbn1cclxuXHJcbmV4cG9ydCB7IHJlbmRlckRvY3VtZW50RmlsZSB9O1xyXG4iXX0=