@talrace/ngx-noder 0.0.18 → 0.0.20

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 (288) hide show
  1. package/fesm2022/talrace-ngx-noder.mjs +181 -181
  2. package/fesm2022/talrace-ngx-noder.mjs.map +1 -1
  3. package/lib/apart-components/editor-toolbar/components/base-toolbar.component.d.ts +1 -1
  4. package/lib/editor/components/external-element/external.component.d.ts +1 -1
  5. package/lib/editor/components/shared/abstract/base.component.d.ts +1 -1
  6. package/lib/editor/components/shared/abstract/destroy.component.d.ts +1 -1
  7. package/package.json +1 -3
  8. package/src/lib/apart-components/add-link-dialog/_add-link-dialog.theme.scss +3 -6
  9. package/src/lib/apart-components/add-link-mobile/_add-link-mobile.theme.scss +4 -7
  10. package/src/lib/apart-components/confirm-dialog/_theme.scss +6 -9
  11. package/src/lib/apart-components/editor-title/_editor-title.theme.scss +6 -9
  12. package/src/lib/apart-components/editor-title-mobile/_editor-title-mobile.theme.scss +9 -12
  13. package/src/lib/apart-components/editor-toolbar/_editor-toolbar.theme.scss +5 -8
  14. package/src/lib/apart-components/editor-toolbar/components/buttons/color-picker/_color-picker.theme.scss +1 -3
  15. package/src/lib/apart-components/editor-toolbar/components/buttons/font/_font.theme.scss +1 -3
  16. package/src/lib/apart-components/editor-toolbar/components/buttons/font-size/_font-size.theme.scss +2 -5
  17. package/src/lib/apart-components/editor-toolbar/components/buttons/font-style/_font-style.theme.scss +3 -6
  18. package/src/lib/apart-components/editor-toolbar/components/buttons/format/_format.theme.scss +3 -6
  19. package/src/lib/apart-components/editor-toolbar/components/buttons/numbering/_numbering.theme.scss +15 -18
  20. package/src/lib/apart-components/editor-toolbar/components/buttons/undo-redo/_undo-redo.theme.scss +2 -4
  21. package/src/lib/apart-components/editor-toolbar/components/menu-dropdowns/_menu-dropdowns.theme.scss +5 -8
  22. package/src/lib/apart-components/editor-toolbar/components/menu-dropdowns-mobile/_menu-dropdowns-mobile.theme.scss +6 -9
  23. package/src/lib/apart-components/editor-toolbar/components/toolbar-actions/_toolbar-actions.theme.scss +3 -6
  24. package/src/lib/apart-components/insert-table/_insert-table.theme.scss +6 -9
  25. package/src/lib/apart-components/insert-table-mobile/_insert-table-mobile.theme.scss +12 -15
  26. package/src/lib/apart-components/text-format-mobile/_text-format-mobile.theme.scss +22 -25
  27. package/src/lib/editor/components/_editor.theme.scss +25 -28
  28. package/esm2022/lib/apart-components/add-link-dialog/add-link-dialog.component.mjs +0 -73
  29. package/esm2022/lib/apart-components/add-link-dialog/validation.helper.mjs +0 -7
  30. package/esm2022/lib/apart-components/add-link-mobile/add-link-mobile.component.mjs +0 -49
  31. package/esm2022/lib/apart-components/confirm-dialog/confirm-dialog.component.mjs +0 -34
  32. package/esm2022/lib/apart-components/editor-search/editor-search-dialog.component.mjs +0 -75
  33. package/esm2022/lib/apart-components/editor-title/editor-title.component.mjs +0 -95
  34. package/esm2022/lib/apart-components/editor-title-mobile/editor-title-mobile.component.mjs +0 -24
  35. package/esm2022/lib/apart-components/editor-toolbar/components/base-toolbar.component.mjs +0 -117
  36. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/color-picker/color-picker.component.mjs +0 -37
  37. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font/font.component.mjs +0 -49
  38. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font-size/font-size.component.mjs +0 -90
  39. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font-style/font-style.component.mjs +0 -81
  40. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/format/format.component.mjs +0 -28
  41. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/numbering/numbering.component.mjs +0 -53
  42. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/print/print.component.mjs +0 -18
  43. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/undo-redo/undo-redo.component.mjs +0 -27
  44. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/zoom/zoom.component.mjs +0 -71
  45. package/esm2022/lib/apart-components/editor-toolbar/components/menu-dropdowns/menu-dropdowns.component.mjs +0 -107
  46. package/esm2022/lib/apart-components/editor-toolbar/components/menu-dropdowns-mobile/menu-dropdowns-mobile.component.mjs +0 -25
  47. package/esm2022/lib/apart-components/editor-toolbar/components/toolbar-actions/toolbar-actions.component.mjs +0 -65
  48. package/esm2022/lib/apart-components/editor-toolbar/editor-mobile-toolbar/editor-mobile-toolbar.component.mjs +0 -86
  49. package/esm2022/lib/apart-components/editor-toolbar/editor-toolbar/editor-toolbar.component.mjs +0 -90
  50. package/esm2022/lib/apart-components/editor-toolbar/editor-toolbar.module.mjs +0 -122
  51. package/esm2022/lib/apart-components/editor-toolbar/shared/constants/editor-toolbar-modes.const.mjs +0 -8
  52. package/esm2022/lib/apart-components/editor-toolbar/shared/constants/numbering-templates.const.mjs +0 -1148
  53. package/esm2022/lib/apart-components/editor-toolbar/shared/constants/svg-icons.const.mjs +0 -157
  54. package/esm2022/lib/apart-components/editor-toolbar/shared/enums/alignment.enum.mjs +0 -8
  55. package/esm2022/lib/apart-components/editor-toolbar/shared/enums/editor-toolbar-mode.enum.mjs +0 -11
  56. package/esm2022/lib/apart-components/editor-toolbar/shared/enums/numbering-template-type.enum.mjs +0 -16
  57. package/esm2022/lib/apart-components/editor-toolbar/shared/enums/numbering-type.enum.mjs +0 -6
  58. package/esm2022/lib/apart-components/editor-toolbar/shared/services/custom-icon.service.mjs +0 -34
  59. package/esm2022/lib/apart-components/editor-toolbar/shared/services/editor-toolbar.service.mjs +0 -26
  60. package/esm2022/lib/apart-components/editor-toolbar/shared/services/toolbar-core.service.mjs +0 -60
  61. package/esm2022/lib/apart-components/editor-toolbar/shared/toolbar-styles.helper.mjs +0 -48
  62. package/esm2022/lib/apart-components/insert-table/insert-table.component.mjs +0 -54
  63. package/esm2022/lib/apart-components/insert-table-mobile/insert-table-mobile.component.mjs +0 -86
  64. package/esm2022/lib/apart-components/text-format-mobile/text-format-mobile.component.mjs +0 -134
  65. package/esm2022/lib/editor/components/edges/edge-element.model.mjs +0 -38
  66. package/esm2022/lib/editor/components/edges/edge-type.enum.mjs +0 -6
  67. package/esm2022/lib/editor/components/edges/edge.component.mjs +0 -141
  68. package/esm2022/lib/editor/components/edges/edges.mjs +0 -120
  69. package/esm2022/lib/editor/components/edges/page-type.enum.mjs +0 -7
  70. package/esm2022/lib/editor/components/editor.component.mjs +0 -112
  71. package/esm2022/lib/editor/components/external-element/external-element.service.mjs +0 -6
  72. package/esm2022/lib/editor/components/external-element/external-elements.const.mjs +0 -4
  73. package/esm2022/lib/editor/components/external-element/external-sidenav.interface.mjs +0 -2
  74. package/esm2022/lib/editor/components/external-element/external.component.mjs +0 -41
  75. package/esm2022/lib/editor/components/external-element/models/element-data.model.mjs +0 -9
  76. package/esm2022/lib/editor/components/external-element/models/external-element.model.mjs +0 -11
  77. package/esm2022/lib/editor/components/external-element/models/external-sidenav.model.mjs +0 -15
  78. package/esm2022/lib/editor/components/image/components/image.component.mjs +0 -88
  79. package/esm2022/lib/editor/components/image/image-api.service.mjs +0 -36
  80. package/esm2022/lib/editor/components/image/input-handler/image-input.handler.mjs +0 -46
  81. package/esm2022/lib/editor/components/image/resizer/coordinate.mjs +0 -2
  82. package/esm2022/lib/editor/components/image/resizer/direction-wrapper.mjs +0 -19
  83. package/esm2022/lib/editor/components/image/resizer/direction.enum.mjs +0 -12
  84. package/esm2022/lib/editor/components/image/resizer/resizer.component.mjs +0 -106
  85. package/esm2022/lib/editor/components/image/resizer/size-delta.mjs +0 -2
  86. package/esm2022/lib/editor/components/image/resizer/size-wrapper.mjs +0 -52
  87. package/esm2022/lib/editor/components/image/size.mjs +0 -2
  88. package/esm2022/lib/editor/components/shared/abstract/base.component.mjs +0 -60
  89. package/esm2022/lib/editor/components/shared/abstract/destroy.component.mjs +0 -18
  90. package/esm2022/lib/editor/components/shared/custom-component.hepler.mjs +0 -43
  91. package/esm2022/lib/editor/components/shared/custom-components.interface.mjs +0 -2
  92. package/esm2022/lib/editor/components/shared/custom-content-markers.const.mjs +0 -3
  93. package/esm2022/lib/editor/components/shared/custom-content.mjs +0 -2
  94. package/esm2022/lib/editor/components/shared/services/component.service.mjs +0 -52
  95. package/esm2022/lib/editor/components/shared/services/custom-content.service.mjs +0 -123
  96. package/esm2022/lib/editor/components/shared/services/overlay.service.mjs +0 -55
  97. package/esm2022/lib/editor/components/tab/tab.component.mjs +0 -44
  98. package/esm2022/lib/editor/components/tab/tab.helper.mjs +0 -6
  99. package/esm2022/lib/editor/components/table/cell-resizer/cell-resizer.mjs +0 -118
  100. package/esm2022/lib/editor/components/table/components/table-cell.component.mjs +0 -99
  101. package/esm2022/lib/editor/components/table/components/table.component.mjs +0 -412
  102. package/esm2022/lib/editor/components/table/enums/hrule.enum.mjs +0 -7
  103. package/esm2022/lib/editor/components/table/enums/reisizer-side.enum.mjs +0 -8
  104. package/esm2022/lib/editor/components/table/enums/vertical-merge.enum.mjs +0 -6
  105. package/esm2022/lib/editor/components/table/models/cell-data.model.mjs +0 -17
  106. package/esm2022/lib/editor/components/table/models/cell-resizer-parameters.model.mjs +0 -9
  107. package/esm2022/lib/editor/components/table/models/row-data.model.mjs +0 -8
  108. package/esm2022/lib/editor/components/table/models/selection-range.model.mjs +0 -7
  109. package/esm2022/lib/editor/components/table/overlay-menu/overlay-menu.component.mjs +0 -84
  110. package/esm2022/lib/editor/components/table/selection/table-selection.mjs +0 -383
  111. package/esm2022/lib/editor/content/constants/display-values.const.mjs +0 -8
  112. package/esm2022/lib/editor/content/constants/document-info.const.mjs +0 -13
  113. package/esm2022/lib/editor/content/constants/editor.const.mjs +0 -70
  114. package/esm2022/lib/editor/content/contents.interface.mjs +0 -2
  115. package/esm2022/lib/editor/content/display-data/display-data.mjs +0 -839
  116. package/esm2022/lib/editor/content/display-data/display-token.model.mjs +0 -12
  117. package/esm2022/lib/editor/content/display-data/format-ext.model.mjs +0 -10
  118. package/esm2022/lib/editor/content/display-data/general-properties.model.mjs +0 -11
  119. package/esm2022/lib/editor/content/display-data/indent.model.mjs +0 -9
  120. package/esm2022/lib/editor/content/display-data/line-info.model.mjs +0 -9
  121. package/esm2022/lib/editor/content/display-data/lines.mjs +0 -96
  122. package/esm2022/lib/editor/content/display-data/models/paragraph-info.model.mjs +0 -8
  123. package/esm2022/lib/editor/content/display-data/paragraph-info.interface.mjs +0 -2
  124. package/esm2022/lib/editor/content/display-data/paragraph.mjs +0 -56
  125. package/esm2022/lib/editor/content/display-data/text-line-info.mjs +0 -35
  126. package/esm2022/lib/editor/content/display-data/toolbar-styles.interface.mjs +0 -2
  127. package/esm2022/lib/editor/content/helpers/content-style.helper.mjs +0 -78
  128. package/esm2022/lib/editor/content/helpers/display-token.helper.mjs +0 -62
  129. package/esm2022/lib/editor/content/helpers/format.helper.mjs +0 -23
  130. package/esm2022/lib/editor/content/helpers/indexed-element.helper.mjs +0 -6
  131. package/esm2022/lib/editor/content/helpers/link.helper.mjs +0 -42
  132. package/esm2022/lib/editor/content/helpers/scaling.helper.mjs +0 -9
  133. package/esm2022/lib/editor/content/margin.model.mjs +0 -16
  134. package/esm2022/lib/editor/content/page-vertical-data.model.mjs +0 -9
  135. package/esm2022/lib/editor/content/vertical-alignment.enum.mjs +0 -11
  136. package/esm2022/lib/editor/core/event-emitting.mjs +0 -56
  137. package/esm2022/lib/editor/display/cell.interface.mjs +0 -2
  138. package/esm2022/lib/editor/display/event.helper.mjs +0 -18
  139. package/esm2022/lib/editor/display/layers/cursor.layer.mjs +0 -102
  140. package/esm2022/lib/editor/display/layers/layer.config.mjs +0 -2
  141. package/esm2022/lib/editor/display/layers/pages.layer.mjs +0 -109
  142. package/esm2022/lib/editor/display/layers/print.pages.layer.mjs +0 -7
  143. package/esm2022/lib/editor/display/layers/print.text.layer.mjs +0 -7
  144. package/esm2022/lib/editor/display/layers/selection.layer.mjs +0 -119
  145. package/esm2022/lib/editor/display/layers/text.layer.mjs +0 -226
  146. package/esm2022/lib/editor/display/print/print.helper.mjs +0 -40
  147. package/esm2022/lib/editor/display/print/print.renderer.mjs +0 -67
  148. package/esm2022/lib/editor/display/print/print.rendering.helper.mjs +0 -7
  149. package/esm2022/lib/editor/display/render-changes.interface.mjs +0 -2
  150. package/esm2022/lib/editor/display/render-changes.model.mjs +0 -25
  151. package/esm2022/lib/editor/display/renderer.mjs +0 -204
  152. package/esm2022/lib/editor/display/rendering.helper.mjs +0 -185
  153. package/esm2022/lib/editor/display/renderloop.mjs +0 -26
  154. package/esm2022/lib/editor/display/virtual.renderer.mjs +0 -284
  155. package/esm2022/lib/editor/display/visible-range.interface.mjs +0 -2
  156. package/esm2022/lib/editor/editor.module.mjs +0 -91
  157. package/esm2022/lib/editor/execution/distance.model.mjs +0 -10
  158. package/esm2022/lib/editor/execution/edit.session.mjs +0 -602
  159. package/esm2022/lib/editor/execution/editor.mjs +0 -1368
  160. package/esm2022/lib/editor/execution/helpers/dom.helper.mjs +0 -42
  161. package/esm2022/lib/editor/execution/helpers/format-style.helper.mjs +0 -73
  162. package/esm2022/lib/editor/execution/helpers/image.helpet.mjs +0 -12
  163. package/esm2022/lib/editor/execution/helpers/page.helper.mjs +0 -12
  164. package/esm2022/lib/editor/execution/helpers/paragraph-style.helper.mjs +0 -41
  165. package/esm2022/lib/editor/execution/helpers/paragraph.helper.mjs +0 -177
  166. package/esm2022/lib/editor/execution/regulator.service.mjs +0 -212
  167. package/esm2022/lib/editor/execution/targeting/cell-session-source.model.mjs +0 -18
  168. package/esm2022/lib/editor/execution/targeting/edge-session-source.model.mjs +0 -14
  169. package/esm2022/lib/editor/execution/targeting/main-session-source.model.mjs +0 -8
  170. package/esm2022/lib/editor/execution/targeting/session-source.model.mjs +0 -3
  171. package/esm2022/lib/editor/execution/targeting/session.model.mjs +0 -10
  172. package/esm2022/lib/editor/gadgets/font-metrics/editor-version.const.mjs +0 -2
  173. package/esm2022/lib/editor/gadgets/font-metrics/font-metric-size.interface.mjs +0 -2
  174. package/esm2022/lib/editor/gadgets/font-metrics/font-metrics.helper.mjs +0 -88
  175. package/esm2022/lib/editor/gadgets/history/operation-history.mjs +0 -208
  176. package/esm2022/lib/editor/gadgets/history/operation.type.mjs +0 -2
  177. package/esm2022/lib/editor/gadgets/history/operations-history-info.model.mjs +0 -7
  178. package/esm2022/lib/editor/gadgets/numbering/numbering-data.model.mjs +0 -9
  179. package/esm2022/lib/editor/gadgets/numbering/numbering-marker-type.enum.mjs +0 -12
  180. package/esm2022/lib/editor/gadgets/numbering/numbering-paragraph-style.model.mjs +0 -13
  181. package/esm2022/lib/editor/gadgets/numbering/numbering.helper.mjs +0 -149
  182. package/esm2022/lib/editor/gadgets/page-break/break-types.enum.mjs +0 -7
  183. package/esm2022/lib/editor/gadgets/page-break/break.helper.mjs +0 -18
  184. package/esm2022/lib/editor/gadgets/scrollbar.mjs +0 -86
  185. package/esm2022/lib/editor/gadgets/search/replace.interface.mjs +0 -2
  186. package/esm2022/lib/editor/gadgets/search/search-iteration.interface.mjs +0 -2
  187. package/esm2022/lib/editor/gadgets/search/search.mjs +0 -231
  188. package/esm2022/lib/editor/gadgets/unicode/unicode-chars.const.mjs +0 -5
  189. package/esm2022/lib/editor/gadgets/unicode/unicode.helper.mjs +0 -20
  190. package/esm2022/lib/editor/interaction/base.handler.mjs +0 -19
  191. package/esm2022/lib/editor/interaction/document.handler.mjs +0 -27
  192. package/esm2022/lib/editor/interaction/editor.service.mjs +0 -386
  193. package/esm2022/lib/editor/interaction/input.handler.mjs +0 -152
  194. package/esm2022/lib/editor/interaction/mode.enum.mjs +0 -7
  195. package/esm2022/lib/editor/interaction/mouse-button.enum.mjs +0 -7
  196. package/esm2022/lib/editor/interaction/mouse.handler.mjs +0 -50
  197. package/esm2022/lib/editor/interaction/text-input.mjs +0 -53
  198. package/esm2022/lib/editor/operations/commands.service.mjs +0 -20
  199. package/esm2022/lib/editor/operations/enums/command-type.enum.mjs +0 -32
  200. package/esm2022/lib/editor/operations/enums/target-type.enum.mjs +0 -7
  201. package/esm2022/lib/editor/operations/helpers/break-operations.helper.mjs +0 -9
  202. package/esm2022/lib/editor/operations/helpers/content-operations.helper.mjs +0 -15
  203. package/esm2022/lib/editor/operations/helpers/format-operations.helper.mjs +0 -85
  204. package/esm2022/lib/editor/operations/helpers/image-operations.helper.mjs +0 -19
  205. package/esm2022/lib/editor/operations/helpers/indexed-element-operations.helper.mjs +0 -43
  206. package/esm2022/lib/editor/operations/helpers/link-operations.helper.mjs +0 -136
  207. package/esm2022/lib/editor/operations/helpers/numbering-operations.helper.mjs +0 -55
  208. package/esm2022/lib/editor/operations/helpers/paragraph-operations.helper.mjs +0 -114
  209. package/esm2022/lib/editor/operations/helpers/tab-operations.helper.mjs +0 -16
  210. package/esm2022/lib/editor/operations/helpers/table-operations.helper.mjs +0 -374
  211. package/esm2022/lib/editor/operations/operations-helper.helper.mjs +0 -438
  212. package/esm2022/lib/editor/operations/save-commands.helper.mjs +0 -128
  213. package/esm2022/lib/editor/operations/target-operations.helper.mjs +0 -23
  214. package/esm2022/lib/editor/positioning/alignments.const.mjs +0 -8
  215. package/esm2022/lib/editor/positioning/content.helper.mjs +0 -45
  216. package/esm2022/lib/editor/positioning/cursor-paragraph.mjs +0 -13
  217. package/esm2022/lib/editor/positioning/cursor-position.interface.mjs +0 -2
  218. package/esm2022/lib/editor/positioning/insert-index.interface.mjs +0 -2
  219. package/esm2022/lib/editor/positioning/line-width.helper.mjs +0 -13
  220. package/esm2022/lib/editor/positioning/position.helper.mjs +0 -210
  221. package/esm2022/lib/editor/positioning/range.mjs +0 -94
  222. package/esm2022/lib/editor/positioning/selection.mjs +0 -351
  223. package/esm2022/lib/editor/revision.helper.mjs +0 -94
  224. package/esm2022/lib/models/generated/add-numbering.model.mjs +0 -8
  225. package/esm2022/lib/models/generated/apply-element-style.model.mjs +0 -8
  226. package/esm2022/lib/models/generated/apply-image-style.model.mjs +0 -8
  227. package/esm2022/lib/models/generated/apply-paragraph-style.model.mjs +0 -12
  228. package/esm2022/lib/models/generated/apply-text-style.model.mjs +0 -12
  229. package/esm2022/lib/models/generated/borders-style.model.mjs +0 -8
  230. package/esm2022/lib/models/generated/break.model.mjs +0 -8
  231. package/esm2022/lib/models/generated/cell.model.mjs +0 -12
  232. package/esm2022/lib/models/generated/column-section.model.mjs +0 -8
  233. package/esm2022/lib/models/generated/column.model.mjs +0 -8
  234. package/esm2022/lib/models/generated/command.model.mjs +0 -120
  235. package/esm2022/lib/models/generated/delete.model.mjs +0 -8
  236. package/esm2022/lib/models/generated/document-name.model.mjs +0 -8
  237. package/esm2022/lib/models/generated/document.model.mjs +0 -8
  238. package/esm2022/lib/models/generated/docx.model.mjs +0 -12
  239. package/esm2022/lib/models/generated/edge-target.model.mjs +0 -8
  240. package/esm2022/lib/models/generated/edge.model.mjs +0 -8
  241. package/esm2022/lib/models/generated/element.model.mjs +0 -8
  242. package/esm2022/lib/models/generated/file-source.model.mjs +0 -8
  243. package/esm2022/lib/models/generated/format.model.mjs +0 -12
  244. package/esm2022/lib/models/generated/heading.model.mjs +0 -16
  245. package/esm2022/lib/models/generated/image-data.model.mjs +0 -8
  246. package/esm2022/lib/models/generated/image.model.mjs +0 -12
  247. package/esm2022/lib/models/generated/insert-break.model.mjs +0 -8
  248. package/esm2022/lib/models/generated/insert-element.model.mjs +0 -12
  249. package/esm2022/lib/models/generated/insert-image.model.mjs +0 -12
  250. package/esm2022/lib/models/generated/insert-link.model.mjs +0 -12
  251. package/esm2022/lib/models/generated/insert-paragraph.model.mjs +0 -20
  252. package/esm2022/lib/models/generated/insert-styled-text.model.mjs +0 -12
  253. package/esm2022/lib/models/generated/insert-tab.model.mjs +0 -8
  254. package/esm2022/lib/models/generated/insert-table-columns.model.mjs +0 -8
  255. package/esm2022/lib/models/generated/insert-table-rows.model.mjs +0 -8
  256. package/esm2022/lib/models/generated/insert-table.model.mjs +0 -8
  257. package/esm2022/lib/models/generated/insert-text.model.mjs +0 -8
  258. package/esm2022/lib/models/generated/last-document-revision.model.mjs +0 -12
  259. package/esm2022/lib/models/generated/link-data.model.mjs +0 -8
  260. package/esm2022/lib/models/generated/link.model.mjs +0 -8
  261. package/esm2022/lib/models/generated/margins.model.mjs +0 -8
  262. package/esm2022/lib/models/generated/numbering-level.model.mjs +0 -12
  263. package/esm2022/lib/models/generated/numbering.model.mjs +0 -8
  264. package/esm2022/lib/models/generated/operation.model.mjs +0 -12
  265. package/esm2022/lib/models/generated/page-numbers.model.mjs +0 -8
  266. package/esm2022/lib/models/generated/paragraph-style.model.mjs +0 -8
  267. package/esm2022/lib/models/generated/paragraph.model.mjs +0 -12
  268. package/esm2022/lib/models/generated/remove-numberings.model.mjs +0 -8
  269. package/esm2022/lib/models/generated/remove-table-columns.model.mjs +0 -8
  270. package/esm2022/lib/models/generated/remove-table-rows.model.mjs +0 -8
  271. package/esm2022/lib/models/generated/replace-by-text.model.mjs +0 -8
  272. package/esm2022/lib/models/generated/replace.model.mjs +0 -44
  273. package/esm2022/lib/models/generated/resize-table-columns.model.mjs +0 -8
  274. package/esm2022/lib/models/generated/restore-numberings.model.mjs +0 -8
  275. package/esm2022/lib/models/generated/restore-paragraph-styles.model.mjs +0 -8
  276. package/esm2022/lib/models/generated/restore-table.model.mjs +0 -12
  277. package/esm2022/lib/models/generated/restore-text-styles.model.mjs +0 -8
  278. package/esm2022/lib/models/generated/restore.model.mjs +0 -8
  279. package/esm2022/lib/models/generated/revision.model.mjs +0 -12
  280. package/esm2022/lib/models/generated/row.model.mjs +0 -8
  281. package/esm2022/lib/models/generated/tab.model.mjs +0 -8
  282. package/esm2022/lib/models/generated/table-cell.model.mjs +0 -8
  283. package/esm2022/lib/models/generated/table.model.mjs +0 -12
  284. package/esm2022/lib/models/generated/target.model.mjs +0 -16
  285. package/esm2022/lib/models/generated/text-style.model.mjs +0 -8
  286. package/esm2022/lib/translate/noder-translate.loader.mjs +0 -22
  287. package/esm2022/public-api.mjs +0 -54
  288. package/esm2022/talrace-ngx-noder.mjs +0 -5
@@ -1,383 +0,0 @@
1
- import { fromEvent, throttleTime } from 'rxjs';
2
- import { MouseButton } from '../../../interaction/mouse-button.enum';
3
- import { SelectionRangeModel } from '../models/selection-range.model';
4
- import { TableOverlayMenuComponent } from '../overlay-menu/overlay-menu.component';
5
- export class TableSelection {
6
- constructor(editorService, overlayService, regulatorService, rowMatrix, table, tableEl, session) {
7
- this.editorService = editorService;
8
- this.overlayService = overlayService;
9
- this.regulatorService = regulatorService;
10
- this.rowMatrix = rowMatrix;
11
- this.table = table;
12
- this.tableEl = tableEl;
13
- this.session = session;
14
- this.editorTagName = 'APP-NOD-EDITOR';
15
- this.tableTagName = 'APP-NOD-TABLE';
16
- this.cellTagName = 'TD';
17
- this.draggableCellContent = ['APP-NOD-RESIZER'];
18
- this.addTableContextMenuSubscriptions();
19
- this.addTableMouseDownSubscriptions();
20
- }
21
- destroy() {
22
- if (this.tableContextMenu$?.unsubscribe) {
23
- this.tableContextMenu$.unsubscribe();
24
- }
25
- if (this.tableMouseDown$?.unsubscribe) {
26
- this.tableMouseDown$.unsubscribe();
27
- }
28
- this.removeMouseSubscriptions();
29
- }
30
- addTableContextMenuSubscriptions() {
31
- this.tableContextMenu$ = fromEvent(this.tableEl, 'contextmenu').subscribe((event) => {
32
- if (this.session.isEdgeOrWithinEdge() && !this.regulatorService.mainSession.session.customComponents.edges.isEdit) {
33
- return;
34
- }
35
- event.preventDefault();
36
- if (this.editorService.isViewOnly) {
37
- return;
38
- }
39
- const selectionRange = this.getSelectionRangeForMenuOverlay(event.target);
40
- if (!selectionRange) {
41
- return;
42
- }
43
- const targets = this.getTargetsForMenuOverlay(selectionRange);
44
- const canRemoveRows = selectionRange.rowIndexes.endIndex - selectionRange.rowIndexes.startIndex + 1 < this.rowMatrix.length;
45
- const canRemoveColumns = selectionRange.cellIndexes.endIndex - selectionRange.cellIndexes.startIndex + 1 < this.rowMatrix[0].cells.length;
46
- const data = {
47
- selectionRange,
48
- targets,
49
- canRemoveRows,
50
- canRemoveColumns,
51
- tableInsertIndex: this.table.insertIndex,
52
- sessionId: this.session.sessionId
53
- };
54
- this.overlayService.open(TableOverlayMenuComponent, data, event.x, event.y);
55
- });
56
- }
57
- addTableMouseDownSubscriptions() {
58
- this.tableMouseDown$ = fromEvent(this.tableEl, 'mousedown').subscribe((event) => {
59
- if (this.session.isEdgeOrWithinEdge() && !this.regulatorService.mainSession.session.customComponents.edges.isEdit) {
60
- return;
61
- }
62
- if (event.ctrlKey ||
63
- event.button === MouseButton.Right ||
64
- !this.canStartSelection(event.target)) {
65
- return;
66
- }
67
- this.overlayService.close();
68
- this.removeMouseSubscriptions();
69
- this.clearSelectionInAllCells();
70
- this.addDocumentMouseMovementSubscriptions();
71
- const cell = this.getCellIndexes(event.target);
72
- this.originSelectedCell = { ...cell, isFocused: true };
73
- });
74
- }
75
- addDocumentMouseMovementSubscriptions() {
76
- this.documentMouseMove$ = fromEvent(document, 'mousemove')
77
- .pipe(throttleTime(100))
78
- .subscribe((event) => {
79
- this.processMouseMove(event);
80
- });
81
- this.documentMouseUp$ = fromEvent(document, 'mouseup').subscribe(() => {
82
- this.removeMouseSubscriptions();
83
- this.addDocumentMouseDownSubscriptions();
84
- });
85
- }
86
- addDocumentMouseDownSubscriptions() {
87
- this.documentMouseDown$ = fromEvent(document, 'mousedown').subscribe((event) => {
88
- if (!this.isOnEditorClick(event.target) || this.isOnTableClick(event.target)) {
89
- return;
90
- }
91
- this.overlayService.close();
92
- this.clearSelectionInAllCells();
93
- this.originSelectedCell = null;
94
- this.removeMouseSubscriptions();
95
- });
96
- }
97
- removeMouseSubscriptions() {
98
- if (this.documentMouseMove$?.unsubscribe) {
99
- this.documentMouseMove$.unsubscribe();
100
- }
101
- if (this.documentMouseUp$?.unsubscribe) {
102
- this.documentMouseUp$.unsubscribe();
103
- }
104
- if (this.documentMouseDown$?.unsubscribe) {
105
- this.documentMouseDown$.unsubscribe();
106
- }
107
- }
108
- processMouseMove(event) {
109
- if (this.originSelectedCell?.isFocused && !this.isOriginCell(event)) {
110
- this.rowMatrix[this.originSelectedCell.rowIndex].cells[this.originSelectedCell.cellIndex].disableEditorSelection();
111
- this.editorService.endMousePress();
112
- this.originSelectedCell.isFocused = false;
113
- }
114
- if (!this.originSelectedCell?.isFocused) {
115
- this.selectAllCellsInBetween(event);
116
- }
117
- }
118
- selectAllCellsInBetween(event) {
119
- if (!this.originSelectedCell) {
120
- return;
121
- }
122
- const selectedCell = this.getCellIndexes(event.target) || this.getCellIndexesOutsideTable(event);
123
- if (!selectedCell) {
124
- return;
125
- }
126
- this.clearSelectionInAllCells();
127
- const rowIndexes = this.getStartAndEndIndexes(this.originSelectedCell.rowIndex, selectedCell.rowIndex);
128
- const cellIndexes = this.getStartAndEndIndexes(this.originSelectedCell.cellIndex, selectedCell.cellIndex);
129
- const cells = [];
130
- let currentRowIndex = rowIndexes.startIndex;
131
- while (currentRowIndex <= rowIndexes.endIndex) {
132
- let currentCellIndex = cellIndexes.startIndex;
133
- while (currentCellIndex <= cellIndexes.endIndex) {
134
- cells.push(this.rowMatrix[currentRowIndex].cells[currentCellIndex]);
135
- currentCellIndex++;
136
- }
137
- currentRowIndex++;
138
- }
139
- const uniqCells = new Set(cells);
140
- uniqCells.forEach(cell => cell.highlightCell());
141
- this.selectionRange = new SelectionRangeModel(rowIndexes, cellIndexes);
142
- }
143
- getCellIndexes(element) {
144
- let currentElement = element;
145
- let selectedCell = null;
146
- while (!selectedCell && currentElement) {
147
- if (currentElement.tagName === this.cellTagName) {
148
- selectedCell = this.getSelectedCell(currentElement);
149
- }
150
- currentElement = currentElement.parentElement;
151
- }
152
- return selectedCell;
153
- }
154
- getSelectedCell(el) {
155
- let selectedCell = null;
156
- this.rowMatrix.some((row, rowIndex) => {
157
- const cellIndex = row.cells.findIndex(x => x.cell === el);
158
- if (cellIndex > -1) {
159
- selectedCell = { rowIndex, cellIndex };
160
- return true;
161
- }
162
- return false;
163
- });
164
- return selectedCell;
165
- }
166
- getCellIndexesOutsideTable(event) {
167
- let selectedCell = null;
168
- const tableReact = this.tableEl.getBoundingClientRect();
169
- if (event.clientY <= tableReact.top || event.clientY >= tableReact.bottom) {
170
- this.addSelectionInAllCells();
171
- }
172
- else if (event.clientX <= tableReact.left) {
173
- selectedCell = this.getCellIndexesOutsideTableLeft(event);
174
- }
175
- else if (event.clientX >= tableReact.right) {
176
- selectedCell = this.getCellIndexesOutsideTableRights(event);
177
- }
178
- return selectedCell;
179
- }
180
- getCellIndexesOutsideTableLeft(event) {
181
- const rowIndex = this.getNearestRowIndex(event);
182
- return { rowIndex, cellIndex: 0 };
183
- }
184
- getCellIndexesOutsideTableRights(event) {
185
- const rowIndex = this.getNearestRowIndex(event);
186
- return {
187
- rowIndex,
188
- cellIndex: this.rowMatrix[rowIndex].cells.length - 1
189
- };
190
- }
191
- getNearestRowIndex(event) {
192
- const rows = this.tableEl.rows;
193
- const maxRowIndex = rows.length - 1;
194
- let rowIndex = -1;
195
- do {
196
- rowIndex++;
197
- const rowReact = rows[rowIndex].getBoundingClientRect();
198
- if (event.clientY >= rowReact.top && event.clientY <= rowReact.bottom) {
199
- break;
200
- }
201
- } while (rowIndex < maxRowIndex);
202
- return rowIndex;
203
- }
204
- addSelectionInAllCells() {
205
- this.rowMatrix.forEach(row => {
206
- row.cells.forEach(cell => {
207
- cell.highlightCell();
208
- });
209
- });
210
- const rowIndexes = {
211
- startIndex: 0,
212
- endIndex: this.rowMatrix.length - 1
213
- };
214
- const cellIndexes = {
215
- startIndex: 0,
216
- endIndex: Math.max(...this.rowMatrix.map(x => x.cells.length))
217
- };
218
- this.selectionRange = new SelectionRangeModel(rowIndexes, cellIndexes);
219
- }
220
- clearSelection() {
221
- if (!this.selectionRange) {
222
- return;
223
- }
224
- this.clearSelectionInAllCells();
225
- }
226
- clearSelectionInAllCells() {
227
- this.rowMatrix.forEach(row => {
228
- row.cells.forEach(cell => {
229
- cell.removeHighlightCell();
230
- });
231
- });
232
- this.selectionRange = null;
233
- }
234
- getStartAndEndIndexes(originIndex, currentIndex) {
235
- const indexes = [originIndex, currentIndex];
236
- indexes.sort((a, b) => a - b);
237
- return { startIndex: indexes[0], endIndex: indexes[1] };
238
- }
239
- isOriginCell(event) {
240
- const selectedCell = this.getCellIndexes(event.target);
241
- if (!selectedCell || !this.originSelectedCell) {
242
- return false;
243
- }
244
- return this.originSelectedCell.rowIndex === selectedCell.rowIndex && this.originSelectedCell.cellIndex === selectedCell.cellIndex;
245
- }
246
- isOnEditorClick(element) {
247
- let currentElement = element;
248
- let isOnEditorClick = false;
249
- while (!isOnEditorClick && currentElement) {
250
- isOnEditorClick = currentElement.tagName === this.editorTagName;
251
- currentElement = currentElement.parentElement;
252
- }
253
- return isOnEditorClick;
254
- }
255
- isOnTableClick(element) {
256
- let currentElement = element;
257
- let isOnTableClick = false;
258
- while (!isOnTableClick && currentElement) {
259
- isOnTableClick = currentElement === this.tableEl;
260
- currentElement = currentElement.parentElement;
261
- }
262
- return isOnTableClick;
263
- }
264
- canStartSelection(element) {
265
- let currentElement = element;
266
- let canStartSelection = false;
267
- while (!canStartSelection && currentElement) {
268
- if (this.draggableCellContent.includes(currentElement.tagName)) {
269
- break;
270
- }
271
- if (currentElement.tagName === this.tableTagName) {
272
- canStartSelection = this.session.sessionId === +currentElement.getAttribute('data-session-id');
273
- break;
274
- }
275
- currentElement = currentElement.parentElement;
276
- }
277
- return canStartSelection;
278
- }
279
- getSelectionRangeForMenuOverlay(element) {
280
- const selectedCell = this.getCellIndexes(element);
281
- if (!selectedCell) {
282
- return null;
283
- }
284
- const isCellInSelection = this.selectionRange &&
285
- this.selectionRange.rowIndexes.startIndex <= selectedCell.rowIndex &&
286
- this.selectionRange.rowIndexes.endIndex >= selectedCell.rowIndex &&
287
- this.selectionRange.cellIndexes.startIndex <= selectedCell.cellIndex &&
288
- this.selectionRange.cellIndexes.endIndex >= selectedCell.cellIndex;
289
- if (!isCellInSelection && this.selectionRange) {
290
- this.clearSelectionInAllCells();
291
- }
292
- if (isCellInSelection) {
293
- return this.selectionRange;
294
- }
295
- let rowEndIndex = selectedCell.rowIndex;
296
- let columnEndIndex = selectedCell.cellIndex;
297
- while (this.rowMatrix[rowEndIndex].cells[selectedCell.cellIndex].cell ===
298
- this.rowMatrix[rowEndIndex + 1]?.cells[selectedCell.cellIndex].cell) {
299
- rowEndIndex++;
300
- }
301
- while (this.rowMatrix[rowEndIndex].cells[columnEndIndex].cell === this.rowMatrix[rowEndIndex].cells[columnEndIndex + 1]?.cell) {
302
- columnEndIndex++;
303
- }
304
- return new SelectionRangeModel({ startIndex: selectedCell.rowIndex, endIndex: rowEndIndex }, { startIndex: selectedCell.cellIndex, endIndex: columnEndIndex });
305
- }
306
- getTargetsForMenuOverlay(selectionRange) {
307
- return new SelectionRangeModel({
308
- startIndex: this.getTargetRowStartIndex(selectionRange.rowIndexes.startIndex),
309
- endIndex: this.getTargetRowEndIndex(selectionRange.rowIndexes.endIndex)
310
- }, {
311
- startIndex: this.getTargetColumnStartIndex(selectionRange.rowIndexes.startIndex, selectionRange.rowIndexes.endIndex, selectionRange.cellIndexes.startIndex),
312
- endIndex: this.getTargetColumnEndIndex(selectionRange.rowIndexes.startIndex, selectionRange.rowIndexes.endIndex, selectionRange.cellIndexes.endIndex)
313
- });
314
- }
315
- getTargetRowStartIndex(startIndex) {
316
- const mergedRowCells = this.rowMatrix[startIndex].cells.filter(x => x.cell.rowSpan > 1 && x.componentRef.instance.cell.verticalMerge);
317
- if (!mergedRowCells.length) {
318
- return startIndex;
319
- }
320
- const uniqCells = new Set(mergedRowCells);
321
- let index = startIndex;
322
- do {
323
- const cells = this.rowMatrix[index].cells;
324
- if (!cells.some(cell => uniqCells.has(cell))) {
325
- index++;
326
- break;
327
- }
328
- index--;
329
- } while (index >= 0);
330
- return index;
331
- }
332
- getTargetRowEndIndex(endIndex) {
333
- const mergedRowCells = this.rowMatrix[endIndex].cells.filter(x => x.cell.rowSpan > 1 && x.componentRef.instance.cell.verticalMerge);
334
- if (!mergedRowCells.length) {
335
- return endIndex + 1;
336
- }
337
- const uniqCells = new Set(mergedRowCells);
338
- let index = endIndex;
339
- do {
340
- const cells = this.rowMatrix[index]?.cells;
341
- if (!cells?.some(cell => uniqCells.has(cell))) {
342
- break;
343
- }
344
- index++;
345
- } while (index <= this.rowMatrix.length);
346
- return index;
347
- }
348
- getTargetColumnStartIndex(rowStartIndex, rowEndIndex, cellStartIndex) {
349
- let index = cellStartIndex;
350
- for (let i = rowStartIndex; i <= rowEndIndex; i++) {
351
- if (this.rowMatrix[i].cells[cellStartIndex].cell.colSpan > 1) {
352
- let cellIndex = cellStartIndex;
353
- do {
354
- if (!this.rowMatrix[i].cells[cellIndex] || this.rowMatrix[i].cells[cellIndex].cell.colSpan === 1) {
355
- break;
356
- }
357
- const newIndex = cellIndex;
358
- index = index < newIndex ? index : newIndex;
359
- cellIndex--;
360
- } while (cellIndex >= 0);
361
- }
362
- }
363
- return index;
364
- }
365
- getTargetColumnEndIndex(rowStartIndex, rowEndIndex, cellEndIndex) {
366
- let index = cellEndIndex + 1;
367
- for (let i = rowEndIndex; i >= rowStartIndex; i--) {
368
- if (this.rowMatrix[i].cells[cellEndIndex].cell.colSpan > 1) {
369
- let cellIndex = cellEndIndex;
370
- do {
371
- if (!this.rowMatrix[i].cells[cellIndex] || this.rowMatrix[i].cells[cellIndex].cell.colSpan === 1) {
372
- break;
373
- }
374
- const newIndex = cellIndex + 1;
375
- index = index > newIndex ? index : newIndex;
376
- cellIndex++;
377
- } while (cellIndex <= this.rowMatrix[i].cells.length);
378
- }
379
- }
380
- return index;
381
- }
382
- }
383
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc2VsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvZWRpdG9yL2NvbXBvbmVudHMvdGFibGUvc2VsZWN0aW9uL3RhYmxlLXNlbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFnQixZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBSXJFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRW5GLE1BQU0sT0FBTyxjQUFjO0lBdUJ2QixZQUNZLGFBQTRCLEVBQzVCLGNBQThCLEVBQzlCLGdCQUFrQyxFQUNsQyxTQUF5QixFQUN6QixLQUFpQixFQUNqQixPQUF5QixFQUN6QixPQUFvQjtRQU5wQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxjQUFTLEdBQVQsU0FBUyxDQUFnQjtRQUN6QixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBQ3pCLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFmdkIsa0JBQWEsR0FBRyxnQkFBZ0IsQ0FBQztRQUVqQyxpQkFBWSxHQUFHLGVBQWUsQ0FBQztRQUUvQixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUVuQix5QkFBb0IsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFXaEQsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELE9BQU87UUFD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LEVBQUUsWUFBb0I7UUFDcEYsSUFBSSxLQUFLLEdBQUcsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUU3QixLQUFLLElBQUksQ0FBQyxHQUFHLFdBQVcsRUFBRSxDQUFDLElBQUksYUFBYSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQy9DLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUU7Z0JBQ3hELElBQUksU0FBUyxHQUFHLFlBQVksQ0FBQztnQkFFN0IsR0FBRztvQkFDQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxDQUFDLEVBQUU7d0JBQzlGLE1BQU07cUJBQ1Q7b0JBRUQsTUFBTSxRQUFRLEdBQUcsU0FBUyxHQUFHLENBQUMsQ0FBQztvQkFDL0IsS0FBSyxHQUFHLEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO29CQUM1QyxTQUFTLEVBQUUsQ0FBQztpQkFDZixRQUFRLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7YUFDekQ7U0FDSjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQ2VsbERhdGFNb2RlbCB9IGZyb20gJy4uL21vZGVscy9jZWxsLWRhdGEubW9kZWwnO1xuaW1wb3J0IHsgRWRpdG9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyYWN0aW9uL2VkaXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IEVkaXRTZXNzaW9uIH0gZnJvbSAnLi4vLi4vLi4vZXhlY3V0aW9uL2VkaXQuc2Vzc2lvbic7XG5pbXBvcnQgeyBNb3VzZUJ1dHRvbiB9IGZyb20gJy4uLy4uLy4uL2ludGVyYWN0aW9uL21vdXNlLWJ1dHRvbi5lbnVtJztcbmltcG9ydCB7IE92ZXJsYXlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL292ZXJsYXkuc2VydmljZSc7XG5pbXBvcnQgeyBSZWd1bGF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZXhlY3V0aW9uL3JlZ3VsYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IFJvd0RhdGFNb2RlbCB9IGZyb20gJy4uL21vZGVscy9yb3ctZGF0YS5tb2RlbCc7XG5pbXBvcnQgeyBTZWxlY3Rpb25SYW5nZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3NlbGVjdGlvbi1yYW5nZS5tb2RlbCc7XG5pbXBvcnQgeyBUYWJsZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBUYWJsZU92ZXJsYXlNZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vb3ZlcmxheS1tZW51L292ZXJsYXktbWVudS5jb21wb25lbnQnO1xuXG5leHBvcnQgY2xhc3MgVGFibGVTZWxlY3Rpb24ge1xuICAgIG9yaWdpblNlbGVjdGVkQ2VsbDogeyByb3dJbmRleDogbnVtYmVyOyBjZWxsSW5kZXg6IG51bWJlcjsgaXNGb2N1c2VkOiBib29sZWFuIH07XG5cbiAgICB0YWJsZUNvbnRleHRNZW51JDogU3Vic2NyaXB0aW9uO1xuXG4gICAgdGFibGVNb3VzZURvd24kOiBTdWJzY3JpcHRpb247XG5cbiAgICBkb2N1bWVudE1vdXNlRG93biQ6IFN1YnNjcmlwdGlvbjtcblxuICAgIGRvY3VtZW50TW91c2VNb3ZlJDogU3Vic2NyaXB0aW9uO1xuXG4gICAgZG9jdW1lbnRNb3VzZVVwJDogU3Vic2NyaXB0aW9uO1xuXG4gICAgc2VsZWN0aW9uUmFuZ2U6IFNlbGVjdGlvblJhbmdlTW9kZWwgfCBudWxsO1xuXG4gICAgcmVhZG9ubHkgZWRpdG9yVGFnTmFtZSA9ICdBUFAtTk9ELUVESVRPUic7XG5cbiAgICByZWFkb25seSB0YWJsZVRhZ05hbWUgPSAnQVBQLU5PRC1UQUJMRSc7XG5cbiAgICByZWFkb25seSBjZWxsVGFnTmFtZSA9ICdURCc7XG5cbiAgICByZWFkb25seSBkcmFnZ2FibGVDZWxsQ29udGVudCA9IFsnQVBQLU5PRC1SRVNJWkVSJ107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlZGl0b3JTZXJ2aWNlOiBFZGl0b3JTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG92ZXJsYXlTZXJ2aWNlOiBPdmVybGF5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWd1bGF0b3JTZXJ2aWNlOiBSZWd1bGF0b3JTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJvd01hdHJpeDogUm93RGF0YU1vZGVsW10sXG4gICAgICAgIHByaXZhdGUgdGFibGU6IFRhYmxlTW9kZWwsXG4gICAgICAgIHByaXZhdGUgdGFibGVFbDogSFRNTFRhYmxlRWxlbWVudCxcbiAgICAgICAgcHJpdmF0ZSBzZXNzaW9uOiBFZGl0U2Vzc2lvblxuICAgICkge1xuICAgICAgICB0aGlzLmFkZFRhYmxlQ29udGV4dE1lbnVTdWJzY3JpcHRpb25zKCk7XG4gICAgICAgIHRoaXMuYWRkVGFibGVNb3VzZURvd25TdWJzY3JpcHRpb25zKCk7XG4gICAgfVxuXG4gICAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudGFibGVDb250ZXh0TWVudSQ/LnVuc3Vic2NyaWJlKSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlQ29udGV4dE1lbnUkLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50YWJsZU1vdXNlRG93biQ/LnVuc3Vic2NyaWJlKSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlTW91c2VEb3duJC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZW1vdmVNb3VzZVN1YnNjcmlwdGlvbnMoKTtcbiAgICB9XG5cbiAgICBhZGRUYWJsZUNvbnRleHRNZW51U3Vic2NyaXB0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWJsZUNvbnRleHRNZW51JCA9IGZyb21FdmVudCh0aGlzLnRhYmxlRWwsICdjb250ZXh0bWVudScpLnN1YnNjcmliZSgoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2Vzc2lvbi5pc0VkZ2VPcldpdGhpbkVkZ2UoKSAmJiAhdGhpcy5yZWd1bGF0b3JTZXJ2aWNlLm1haW5TZXNzaW9uLnNlc3Npb24uY3VzdG9tQ29tcG9uZW50cy5lZGdlcy5pc0VkaXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKHRoaXMuZWRpdG9yU2VydmljZS5pc1ZpZXdPbmx5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBzZWxlY3Rpb25SYW5nZSA9IHRoaXMuZ2V0U2VsZWN0aW9uUmFuZ2VGb3JNZW51T3ZlcmxheShldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKCFzZWxlY3Rpb25SYW5nZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0cyA9IHRoaXMuZ2V0VGFyZ2V0c0Zvck1lbnVPdmVybGF5KHNlbGVjdGlvblJhbmdlKTtcbiAgICAgICAgICAgIGNvbnN0IGNhblJlbW92ZVJvd3MgPSBzZWxlY3Rpb25SYW5nZS5yb3dJbmRleGVzLmVuZEluZGV4IC0gc2VsZWN0aW9uUmFuZ2Uucm93SW5kZXhlcy5zdGFydEluZGV4ICsgMSA8IHRoaXMucm93TWF0cml4Lmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IGNhblJlbW92ZUNvbHVtbnMgPVxuICAgICAgICAgICAgICAgIHNlbGVjdGlvblJhbmdlLmNlbGxJbmRleGVzLmVuZEluZGV4IC0gc2VsZWN0aW9uUmFuZ2UuY2VsbEluZGV4ZXMuc3RhcnRJbmRleCArIDEgPCB0aGlzLnJvd01hdHJpeFswXS5jZWxscy5sZW5ndGg7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgICAgIHNlbGVjdGlvblJhbmdlLFxuICAgICAgICAgICAgICAgIHRhcmdldHMsXG4gICAgICAgICAgICAgICAgY2FuUmVtb3ZlUm93cyxcbiAgICAgICAgICAgICAgICBjYW5SZW1vdmVDb2x1bW5zLFxuICAgICAgICAgICAgICAgIHRhYmxlSW5zZXJ0SW5kZXg6IHRoaXMudGFibGUuaW5zZXJ0SW5kZXgsXG4gICAgICAgICAgICAgICAgc2Vzc2lvbklkOiB0aGlzLnNlc3Npb24uc2Vzc2lvbklkXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5vcGVuKFRhYmxlT3ZlcmxheU1lbnVDb21wb25lbnQsIGRhdGEsIGV2ZW50LngsIGV2ZW50LnkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGRUYWJsZU1vdXNlRG93blN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFibGVNb3VzZURvd24kID0gZnJvbUV2ZW50KHRoaXMudGFibGVFbCwgJ21vdXNlZG93bicpLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlc3Npb24uaXNFZGdlT3JXaXRoaW5FZGdlKCkgJiYgIXRoaXMucmVndWxhdG9yU2VydmljZS5tYWluU2Vzc2lvbi5zZXNzaW9uLmN1c3RvbUNvbXBvbmVudHMuZWRnZXMuaXNFZGl0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGV2ZW50LmN0cmxLZXkgfHxcbiAgICAgICAgICAgICAgICAoZXZlbnQuYnV0dG9uIGFzIE1vdXNlQnV0dG9uKSA9PT0gTW91c2VCdXR0b24uUmlnaHQgfHxcbiAgICAgICAgICAgICAgICAhdGhpcy5jYW5TdGFydFNlbGVjdGlvbihldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UuY2xvc2UoKTtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlTW91c2VTdWJzY3JpcHRpb25zKCk7XG4gICAgICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uSW5BbGxDZWxscygpO1xuICAgICAgICAgICAgdGhpcy5hZGREb2N1bWVudE1vdXNlTW92ZW1lbnRTdWJzY3JpcHRpb25zKCk7XG4gICAgICAgICAgICBjb25zdCBjZWxsID0gdGhpcy5nZXRDZWxsSW5kZXhlcyhldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5TZWxlY3RlZENlbGwgPSB7IC4uLmNlbGwsIGlzRm9jdXNlZDogdHJ1ZSB9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGREb2N1bWVudE1vdXNlTW92ZW1lbnRTdWJzY3JpcHRpb25zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRvY3VtZW50TW91c2VNb3ZlJCA9IGZyb21FdmVudChkb2N1bWVudCwgJ21vdXNlbW92ZScpXG4gICAgICAgICAgICAucGlwZSh0aHJvdHRsZVRpbWUoMTAwKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzTW91c2VNb3ZlKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZG9jdW1lbnRNb3VzZVVwJCA9IGZyb21FdmVudChkb2N1bWVudCwgJ21vdXNldXAnKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVNb3VzZVN1YnNjcmlwdGlvbnMoKTtcbiAgICAgICAgICAgIHRoaXMuYWRkRG9jdW1lbnRNb3VzZURvd25TdWJzY3JpcHRpb25zKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFkZERvY3VtZW50TW91c2VEb3duU3Vic2NyaXB0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kb2N1bWVudE1vdXNlRG93biQgPSBmcm9tRXZlbnQoZG9jdW1lbnQsICdtb3VzZWRvd24nKS5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNPbkVkaXRvckNsaWNrKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkgfHwgdGhpcy5pc09uVGFibGVDbGljayhldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNsb3NlKCk7XG4gICAgICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uSW5BbGxDZWxscygpO1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5TZWxlY3RlZENlbGwgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVNb3VzZVN1YnNjcmlwdGlvbnMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlTW91c2VTdWJzY3JpcHRpb25zKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kb2N1bWVudE1vdXNlTW92ZSQ/LnVuc3Vic2NyaWJlKSB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50TW91c2VNb3ZlJC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRNb3VzZVVwJD8udW5zdWJzY3JpYmUpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRNb3VzZVVwJC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRNb3VzZURvd24kPy51bnN1YnNjcmliZSkge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudE1vdXNlRG93biQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb2Nlc3NNb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3JpZ2luU2VsZWN0ZWRDZWxsPy5pc0ZvY3VzZWQgJiYgIXRoaXMuaXNPcmlnaW5DZWxsKGV2ZW50KSkge1xuICAgICAgICAgICAgdGhpcy5yb3dNYXRyaXhbdGhpcy5vcmlnaW5TZWxlY3RlZENlbGwucm93SW5kZXhdLmNlbGxzW3RoaXMub3JpZ2luU2VsZWN0ZWRDZWxsLmNlbGxJbmRleF0uZGlzYWJsZUVkaXRvclNlbGVjdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmVuZE1vdXNlUHJlc3MoKTtcbiAgICAgICAgICAgIHRoaXMub3JpZ2luU2VsZWN0ZWRDZWxsLmlzRm9jdXNlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLm9yaWdpblNlbGVjdGVkQ2VsbD8uaXNGb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEFsbENlbGxzSW5CZXR3ZWVuKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlbGVjdEFsbENlbGxzSW5CZXR3ZWVuKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5vcmlnaW5TZWxlY3RlZENlbGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2VsbCA9IHRoaXMuZ2V0Q2VsbEluZGV4ZXMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSB8fCB0aGlzLmdldENlbGxJbmRleGVzT3V0c2lkZVRhYmxlKGV2ZW50KTtcblxuICAgICAgICBpZiAoIXNlbGVjdGVkQ2VsbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jbGVhclNlbGVjdGlvbkluQWxsQ2VsbHMoKTtcblxuICAgICAgICBjb25zdCByb3dJbmRleGVzID0gdGhpcy5nZXRTdGFydEFuZEVuZEluZGV4ZXModGhpcy5vcmlnaW5TZWxlY3RlZENlbGwucm93SW5kZXgsIHNlbGVjdGVkQ2VsbC5yb3dJbmRleCk7XG4gICAgICAgIGNvbnN0IGNlbGxJbmRleGVzID0gdGhpcy5nZXRTdGFydEFuZEVuZEluZGV4ZXModGhpcy5vcmlnaW5TZWxlY3RlZENlbGwuY2VsbEluZGV4LCBzZWxlY3RlZENlbGwuY2VsbEluZGV4KTtcbiAgICAgICAgY29uc3QgY2VsbHM6IENlbGxEYXRhTW9kZWxbXSA9IFtdO1xuICAgICAgICBsZXQgY3VycmVudFJvd0luZGV4ID0gcm93SW5kZXhlcy5zdGFydEluZGV4O1xuXG4gICAgICAgIHdoaWxlIChjdXJyZW50Um93SW5kZXggPD0gcm93SW5kZXhlcy5lbmRJbmRleCkge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRDZWxsSW5kZXggPSBjZWxsSW5kZXhlcy5zdGFydEluZGV4O1xuXG4gICAgICAgICAgICB3aGlsZSAoY3VycmVudENlbGxJbmRleCA8PSBjZWxsSW5kZXhlcy5lbmRJbmRleCkge1xuICAgICAgICAgICAgICAgIGNlbGxzLnB1c2godGhpcy5yb3dNYXRyaXhbY3VycmVudFJvd0luZGV4XS5jZWxsc1tjdXJyZW50Q2VsbEluZGV4XSk7XG4gICAgICAgICAgICAgICAgY3VycmVudENlbGxJbmRleCsrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjdXJyZW50Um93SW5kZXgrKztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVuaXFDZWxscyA9IG5ldyBTZXQoY2VsbHMpO1xuICAgICAgICB1bmlxQ2VsbHMuZm9yRWFjaChjZWxsID0+IGNlbGwuaGlnaGxpZ2h0Q2VsbCgpKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25SYW5nZSA9IG5ldyBTZWxlY3Rpb25SYW5nZU1vZGVsKHJvd0luZGV4ZXMsIGNlbGxJbmRleGVzKTtcbiAgICB9XG5cbiAgICBnZXRDZWxsSW5kZXhlcyhlbGVtZW50OiBIVE1MRWxlbWVudCk6IHsgcm93SW5kZXg6IG51bWJlcjsgY2VsbEluZGV4OiBudW1iZXIgfSB8IG51bGwge1xuICAgICAgICBsZXQgY3VycmVudEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICBsZXQgc2VsZWN0ZWRDZWxsOiB7IHJvd0luZGV4OiBudW1iZXI7IGNlbGxJbmRleDogbnVtYmVyIH0gfCBudWxsID0gbnVsbDtcblxuICAgICAgICB3aGlsZSAoIXNlbGVjdGVkQ2VsbCAmJiBjdXJyZW50RWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LnRhZ05hbWUgPT09IHRoaXMuY2VsbFRhZ05hbWUpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENlbGwgPSB0aGlzLmdldFNlbGVjdGVkQ2VsbChjdXJyZW50RWxlbWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50ID0gY3VycmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RlZENlbGw7XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0ZWRDZWxsKGVsOiBIVE1MRWxlbWVudCk6IHsgcm93SW5kZXg6IG51bWJlcjsgY2VsbEluZGV4OiBudW1iZXIgfSB8IG51bGwge1xuICAgICAgICBsZXQgc2VsZWN0ZWRDZWxsOiB7IHJvd0luZGV4OiBudW1iZXI7IGNlbGxJbmRleDogbnVtYmVyIH0gfCBudWxsID0gbnVsbDtcblxuICAgICAgICB0aGlzLnJvd01hdHJpeC5zb21lKChyb3csIHJvd0luZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjZWxsSW5kZXggPSByb3cuY2VsbHMuZmluZEluZGV4KHggPT4geC5jZWxsID09PSBlbCk7XG5cbiAgICAgICAgICAgIGlmIChjZWxsSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2VsbCA9IHsgcm93SW5kZXgsIGNlbGxJbmRleCB9O1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBzZWxlY3RlZENlbGw7XG4gICAgfVxuXG4gICAgZ2V0Q2VsbEluZGV4ZXNPdXRzaWRlVGFibGUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB7IHJvd0luZGV4OiBudW1iZXI7IGNlbGxJbmRleDogbnVtYmVyIH0gfCBudWxsIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkQ2VsbDogeyByb3dJbmRleDogbnVtYmVyOyBjZWxsSW5kZXg6IG51bWJlciB9IHwgbnVsbCA9IG51bGw7XG4gICAgICAgIGNvbnN0IHRhYmxlUmVhY3QgPSB0aGlzLnRhYmxlRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgaWYgKGV2ZW50LmNsaWVudFkgPD0gdGFibGVSZWFjdC50b3AgfHwgZXZlbnQuY2xpZW50WSA+PSB0YWJsZVJlYWN0LmJvdHRvbSkge1xuICAgICAgICAgICAgdGhpcy5hZGRTZWxlY3Rpb25JbkFsbENlbGxzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuY2xpZW50WCA8PSB0YWJsZVJlYWN0LmxlZnQpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkQ2VsbCA9IHRoaXMuZ2V0Q2VsbEluZGV4ZXNPdXRzaWRlVGFibGVMZWZ0KGV2ZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5jbGllbnRYID49IHRhYmxlUmVhY3QucmlnaHQpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkQ2VsbCA9IHRoaXMuZ2V0Q2VsbEluZGV4ZXNPdXRzaWRlVGFibGVSaWdodHMoZXZlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkQ2VsbDtcbiAgICB9XG5cbiAgICBnZXRDZWxsSW5kZXhlc091dHNpZGVUYWJsZUxlZnQoZXZlbnQ6IE1vdXNlRXZlbnQpOiB7IHJvd0luZGV4OiBudW1iZXI7IGNlbGxJbmRleDogbnVtYmVyIH0ge1xuICAgICAgICBjb25zdCByb3dJbmRleCA9IHRoaXMuZ2V0TmVhcmVzdFJvd0luZGV4KGV2ZW50KTtcbiAgICAgICAgcmV0dXJuIHsgcm93SW5kZXgsIGNlbGxJbmRleDogMCB9O1xuICAgIH1cblxuICAgIGdldENlbGxJbmRleGVzT3V0c2lkZVRhYmxlUmlnaHRzKGV2ZW50OiBNb3VzZUV2ZW50KTogeyByb3dJbmRleDogbnVtYmVyOyBjZWxsSW5kZXg6IG51bWJlciB9IHtcbiAgICAgICAgY29uc3Qgcm93SW5kZXggPSB0aGlzLmdldE5lYXJlc3RSb3dJbmRleChldmVudCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJvd0luZGV4LFxuICAgICAgICAgICAgY2VsbEluZGV4OiB0aGlzLnJvd01hdHJpeFtyb3dJbmRleF0uY2VsbHMubGVuZ3RoIC0gMVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdldE5lYXJlc3RSb3dJbmRleChldmVudDogTW91c2VFdmVudCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHJvd3MgPSB0aGlzLnRhYmxlRWwucm93cztcbiAgICAgICAgY29uc3QgbWF4Um93SW5kZXggPSByb3dzLmxlbmd0aCAtIDE7XG4gICAgICAgIGxldCByb3dJbmRleCA9IC0xO1xuXG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIHJvd0luZGV4Kys7XG4gICAgICAgICAgICBjb25zdCByb3dSZWFjdCA9IHJvd3Nbcm93SW5kZXhdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgICAgICBpZiAoZXZlbnQuY2xpZW50WSA+PSByb3dSZWFjdC50b3AgJiYgZXZlbnQuY2xpZW50WSA8PSByb3dSZWFjdC5ib3R0b20pIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSB3aGlsZSAocm93SW5kZXggPCBtYXhSb3dJbmRleCk7XG5cbiAgICAgICAgcmV0dXJuIHJvd0luZGV4O1xuICAgIH1cblxuICAgIGFkZFNlbGVjdGlvbkluQWxsQ2VsbHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucm93TWF0cml4LmZvckVhY2gocm93ID0+IHtcbiAgICAgICAgICAgIHJvdy5jZWxscy5mb3JFYWNoKGNlbGwgPT4ge1xuICAgICAgICAgICAgICAgIGNlbGwuaGlnaGxpZ2h0Q2VsbCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByb3dJbmRleGVzID0ge1xuICAgICAgICAgICAgc3RhcnRJbmRleDogMCxcbiAgICAgICAgICAgIGVuZEluZGV4OiB0aGlzLnJvd01hdHJpeC5sZW5ndGggLSAxXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGNlbGxJbmRleGVzID0ge1xuICAgICAgICAgICAgc3RhcnRJbmRleDogMCxcbiAgICAgICAgICAgIGVuZEluZGV4OiBNYXRoLm1heCguLi50aGlzLnJvd01hdHJpeC5tYXAoeCA9PiB4LmNlbGxzLmxlbmd0aCkpXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uUmFuZ2UgPSBuZXcgU2VsZWN0aW9uUmFuZ2VNb2RlbChyb3dJbmRleGVzLCBjZWxsSW5kZXhlcyk7XG4gICAgfVxuXG4gICAgY2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3Rpb25SYW5nZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb25JbkFsbENlbGxzKCk7XG4gICAgfVxuXG4gICAgY2xlYXJTZWxlY3Rpb25JbkFsbENlbGxzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvd01hdHJpeC5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgICAgICByb3cuY2VsbHMuZm9yRWFjaChjZWxsID0+IHtcbiAgICAgICAgICAgICAgICBjZWxsLnJlbW92ZUhpZ2hsaWdodENlbGwoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25SYW5nZSA9IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0U3RhcnRBbmRFbmRJbmRleGVzKG9yaWdpbkluZGV4OiBudW1iZXIsIGN1cnJlbnRJbmRleDogbnVtYmVyKTogeyBzdGFydEluZGV4OiBudW1iZXI7IGVuZEluZGV4OiBudW1iZXIgfSB7XG4gICAgICAgIGNvbnN0IGluZGV4ZXMgPSBbb3JpZ2luSW5kZXgsIGN1cnJlbnRJbmRleF07XG4gICAgICAgIGluZGV4ZXMuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuXG4gICAgICAgIHJldHVybiB7IHN0YXJ0SW5kZXg6IGluZGV4ZXNbMF0sIGVuZEluZGV4OiBpbmRleGVzWzFdIH07XG4gICAgfVxuXG4gICAgaXNPcmlnaW5DZWxsKGV2ZW50OiBNb3VzZUV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2VsbCA9IHRoaXMuZ2V0Q2VsbEluZGV4ZXMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcblxuICAgICAgICBpZiAoIXNlbGVjdGVkQ2VsbCB8fCAhdGhpcy5vcmlnaW5TZWxlY3RlZENlbGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm9yaWdpblNlbGVjdGVkQ2VsbC5yb3dJbmRleCA9PT0gc2VsZWN0ZWRDZWxsLnJvd0luZGV4ICYmIHRoaXMub3JpZ2luU2VsZWN0ZWRDZWxsLmNlbGxJbmRleCA9PT0gc2VsZWN0ZWRDZWxsLmNlbGxJbmRleDtcbiAgICB9XG5cbiAgICBpc09uRWRpdG9yQ2xpY2soZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IGN1cnJlbnRFbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgbGV0IGlzT25FZGl0b3JDbGljayA9IGZhbHNlO1xuXG4gICAgICAgIHdoaWxlICghaXNPbkVkaXRvckNsaWNrICYmIGN1cnJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgICBpc09uRWRpdG9yQ2xpY2sgPSBjdXJyZW50RWxlbWVudC50YWdOYW1lID09PSB0aGlzLmVkaXRvclRhZ05hbWU7XG4gICAgICAgICAgICBjdXJyZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXNPbkVkaXRvckNsaWNrO1xuICAgIH1cblxuICAgIGlzT25UYWJsZUNsaWNrKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBjdXJyZW50RWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgIGxldCBpc09uVGFibGVDbGljayA9IGZhbHNlO1xuXG4gICAgICAgIHdoaWxlICghaXNPblRhYmxlQ2xpY2sgJiYgY3VycmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGlzT25UYWJsZUNsaWNrID0gY3VycmVudEVsZW1lbnQgPT09IHRoaXMudGFibGVFbDtcbiAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50ID0gY3VycmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpc09uVGFibGVDbGljaztcbiAgICB9XG5cbiAgICBjYW5TdGFydFNlbGVjdGlvbihlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgY3VycmVudEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICBsZXQgY2FuU3RhcnRTZWxlY3Rpb24gPSBmYWxzZTtcblxuICAgICAgICB3aGlsZSAoIWNhblN0YXJ0U2VsZWN0aW9uICYmIGN1cnJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kcmFnZ2FibGVDZWxsQ29udGVudC5pbmNsdWRlcyhjdXJyZW50RWxlbWVudC50YWdOYW1lKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQudGFnTmFtZSA9PT0gdGhpcy50YWJsZVRhZ05hbWUpIHtcbiAgICAgICAgICAgICAgICBjYW5TdGFydFNlbGVjdGlvbiA9IHRoaXMuc2Vzc2lvbi5zZXNzaW9uSWQgPT09ICtjdXJyZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtc2Vzc2lvbi1pZCcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjdXJyZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2FuU3RhcnRTZWxlY3Rpb247XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0aW9uUmFuZ2VGb3JNZW51T3ZlcmxheShlbGVtZW50OiBIVE1MRWxlbWVudCk6IFNlbGVjdGlvblJhbmdlTW9kZWwge1xuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGwgPSB0aGlzLmdldENlbGxJbmRleGVzKGVsZW1lbnQpO1xuICAgICAgICBpZiAoIXNlbGVjdGVkQ2VsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc0NlbGxJblNlbGVjdGlvbiA9XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblJhbmdlICYmXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblJhbmdlLnJvd0luZGV4ZXMuc3RhcnRJbmRleCA8PSBzZWxlY3RlZENlbGwucm93SW5kZXggJiZcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uUmFuZ2Uucm93SW5kZXhlcy5lbmRJbmRleCA+PSBzZWxlY3RlZENlbGwucm93SW5kZXggJiZcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uUmFuZ2UuY2VsbEluZGV4ZXMuc3RhcnRJbmRleCA8PSBzZWxlY3RlZENlbGwuY2VsbEluZGV4ICYmXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblJhbmdlLmNlbGxJbmRleGVzLmVuZEluZGV4ID49IHNlbGVjdGVkQ2VsbC5jZWxsSW5kZXg7XG5cbiAgICAgICAgaWYgKCFpc0NlbGxJblNlbGVjdGlvbiAmJiB0aGlzLnNlbGVjdGlvblJhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uSW5BbGxDZWxscygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzQ2VsbEluU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25SYW5nZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByb3dFbmRJbmRleCA9IHNlbGVjdGVkQ2VsbC5yb3dJbmRleDtcbiAgICAgICAgbGV0IGNvbHVtbkVuZEluZGV4ID0gc2VsZWN0ZWRDZWxsLmNlbGxJbmRleDtcblxuICAgICAgICB3aGlsZSAoXG4gICAgICAgICAgICB0aGlzLnJvd01hdHJpeFtyb3dFbmRJbmRleF0uY2VsbHNbc2VsZWN0ZWRDZWxsLmNlbGxJbmRleF0uY2VsbCA9PT1cbiAgICAgICAgICAgIHRoaXMucm93TWF0cml4W3Jvd0VuZEluZGV4ICsgMV0/LmNlbGxzW3NlbGVjdGVkQ2VsbC5jZWxsSW5kZXhdLmNlbGxcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByb3dFbmRJbmRleCsrO1xuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKHRoaXMucm93TWF0cml4W3Jvd0VuZEluZGV4XS5jZWxsc1tjb2x1bW5FbmRJbmRleF0uY2VsbCA9PT0gdGhpcy5yb3dNYXRyaXhbcm93RW5kSW5kZXhdLmNlbGxzW2NvbHVtbkVuZEluZGV4ICsgMV0/LmNlbGwpIHtcbiAgICAgICAgICAgIGNvbHVtbkVuZEluZGV4Kys7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IFNlbGVjdGlvblJhbmdlTW9kZWwoXG4gICAgICAgICAgICB7IHN0YXJ0SW5kZXg6IHNlbGVjdGVkQ2VsbC5yb3dJbmRleCwgZW5kSW5kZXg6IHJvd0VuZEluZGV4IH0sXG4gICAgICAgICAgICB7IHN0YXJ0SW5kZXg6IHNlbGVjdGVkQ2VsbC5jZWxsSW5kZXgsIGVuZEluZGV4OiBjb2x1bW5FbmRJbmRleCB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0VGFyZ2V0c0Zvck1lbnVPdmVybGF5KHNlbGVjdGlvblJhbmdlOiBTZWxlY3Rpb25SYW5nZU1vZGVsKTogU2VsZWN0aW9uUmFuZ2VNb2RlbCB7XG4gICAgICAgIHJldHVybiBuZXcgU2VsZWN0aW9uUmFuZ2VNb2RlbChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdGFydEluZGV4OiB0aGlzLmdldFRhcmdldFJvd1N0YXJ0SW5kZXgoc2VsZWN0aW9uUmFuZ2Uucm93SW5kZXhlcy5zdGFydEluZGV4KSxcbiAgICAgICAgICAgICAgICBlbmRJbmRleDogdGhpcy5nZXRUYXJnZXRSb3dFbmRJbmRleChzZWxlY3Rpb25SYW5nZS5yb3dJbmRleGVzLmVuZEluZGV4KVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdGFydEluZGV4OiB0aGlzLmdldFRhcmdldENvbHVtblN0YXJ0SW5kZXgoXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJhbmdlLnJvd0luZGV4ZXMuc3RhcnRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmFuZ2Uucm93SW5kZXhlcy5lbmRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmFuZ2UuY2VsbEluZGV4ZXMuc3RhcnRJbmRleFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZW5kSW5kZXg6IHRoaXMuZ2V0VGFyZ2V0Q29sdW1uRW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJhbmdlLnJvd0luZGV4ZXMuc3RhcnRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmFuZ2Uucm93SW5kZXhlcy5lbmRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmFuZ2UuY2VsbEluZGV4ZXMuZW5kSW5kZXhcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0VGFyZ2V0Um93U3RhcnRJbmRleChzdGFydEluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBtZXJnZWRSb3dDZWxscyA9IHRoaXMucm93TWF0cml4W3N0YXJ0SW5kZXhdLmNlbGxzLmZpbHRlcihcbiAgICAgICAgICAgIHggPT4geC5jZWxsLnJvd1NwYW4gPiAxICYmIHguY29tcG9uZW50UmVmLmluc3RhbmNlLmNlbGwudmVydGljYWxNZXJnZVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghbWVyZ2VkUm93Q2VsbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhcnRJbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVuaXFDZWxscyA9IG5ldyBTZXQobWVyZ2VkUm93Q2VsbHMpO1xuICAgICAgICBsZXQgaW5kZXggPSBzdGFydEluZGV4O1xuXG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIGNvbnN0IGNlbGxzID0gdGhpcy5yb3dNYXRyaXhbaW5kZXhdLmNlbGxzO1xuXG4gICAgICAgICAgICBpZiAoIWNlbGxzLnNvbWUoY2VsbCA9PiB1bmlxQ2VsbHMuaGFzKGNlbGwpKSkge1xuICAgICAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGluZGV4LS07XG4gICAgICAgIH0gd2hpbGUgKGluZGV4ID49IDApO1xuXG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICBnZXRUYXJnZXRSb3dFbmRJbmRleChlbmRJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgbWVyZ2VkUm93Q2VsbHMgPSB0aGlzLnJvd01hdHJpeFtlbmRJbmRleF0uY2VsbHMuZmlsdGVyKHggPT4geC5jZWxsLnJvd1NwYW4gPiAxICYmIHguY29tcG9uZW50UmVmLmluc3RhbmNlLmNlbGwudmVydGljYWxNZXJnZSk7XG5cbiAgICAgICAgaWYgKCFtZXJnZWRSb3dDZWxscy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBlbmRJbmRleCArIDE7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1bmlxQ2VsbHMgPSBuZXcgU2V0KG1lcmdlZFJvd0NlbGxzKTtcbiAgICAgICAgbGV0IGluZGV4ID0gZW5kSW5kZXg7XG5cbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgY29uc3QgY2VsbHMgPSB0aGlzLnJvd01hdHJpeFtpbmRleF0/LmNlbGxzO1xuXG4gICAgICAgICAgICBpZiAoIWNlbGxzPy5zb21lKGNlbGwgPT4gdW5pcUNlbGxzLmhhcyhjZWxsKSkpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgfSB3aGlsZSAoaW5kZXggPD0gdGhpcy5yb3dNYXRyaXgubGVuZ3RoKTtcblxuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgZ2V0VGFyZ2V0Q29sdW1uU3RhcnRJbmRleChyb3dTdGFydEluZGV4OiBudW1iZXIsIHJvd0VuZEluZGV4OiBudW1iZXIsIGNlbGxTdGFydEluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBsZXQgaW5kZXggPSBjZWxsU3RhcnRJbmRleDtcblxuICAgICAgICBmb3IgKGxldCBpID0gcm93U3RhcnRJbmRleDsgaSA8PSByb3dFbmRJbmRleDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5yb3dNYXRyaXhbaV0uY2VsbHNbY2VsbFN0YXJ0SW5kZXhdLmNlbGwuY29sU3BhbiA+IDEpIHtcbiAgICAgICAgICAgICAgICBsZXQgY2VsbEluZGV4ID0gY2VsbFN0YXJ0SW5kZXg7XG5cbiAgICAgICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5yb3dNYXRyaXhbaV0uY2VsbHNbY2VsbEluZGV4XSB8fCB0aGlzLnJvd01hdHJpeFtpXS5jZWxsc1tjZWxsSW5kZXhdLmNlbGwuY29sU3BhbiA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdJbmRleCA9IGNlbGxJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBpbmRleCA8IG5ld0luZGV4ID8gaW5kZXggOiBuZXdJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgY2VsbEluZGV4LS07XG4gICAgICAgICAgICAgICAgfSB3aGlsZSAoY2VsbEluZGV4ID49IDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIGdldFRhcmdldENvbHVtbkVuZEluZGV4KHJvd1N0YXJ0SW5kZXg6IG51bWJlciwgcm93RW5kSW5kZXg6IG51bWJlciwgY2VsbEVuZEluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBsZXQgaW5kZXggPSBjZWxsRW5kSW5kZXggKyAxO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSByb3dFbmRJbmRleDsgaSA+PSByb3dTdGFydEluZGV4OyBpLS0pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJvd01hdHJpeFtpXS5jZWxsc1tjZWxsRW5kSW5kZXhdLmNlbGwuY29sU3BhbiA+IDEpIHtcbiAgICAgICAgICAgICAgICBsZXQgY2VsbEluZGV4ID0gY2VsbEVuZEluZGV4O1xuXG4gICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMucm93TWF0cml4W2ldLmNlbGxzW2NlbGxJbmRleF0gfHwgdGhpcy5yb3dNYXRyaXhbaV0uY2VsbHNbY2VsbEluZGV4XS5jZWxsLmNvbFNwYW4gPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3SW5kZXggPSBjZWxsSW5kZXggKyAxO1xuICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGluZGV4ID4gbmV3SW5kZXggPyBpbmRleCA6IG5ld0luZGV4O1xuICAgICAgICAgICAgICAgICAgICBjZWxsSW5kZXgrKztcbiAgICAgICAgICAgICAgICB9IHdoaWxlIChjZWxsSW5kZXggPD0gdGhpcy5yb3dNYXRyaXhbaV0uY2VsbHMubGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG59XG4iXX0=
@@ -1,8 +0,0 @@
1
- export const DisplayValue = {
2
- char: 1,
3
- customContent: 3,
4
- punctuation: 9,
5
- space: 10,
6
- emptyLine: 13
7
- };
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGxheS12YWx1ZXMuY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi9lZGl0b3IvY29udGVudC9jb25zdGFudHMvZGlzcGxheS12YWx1ZXMuY29uc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHO0lBQ3hCLElBQUksRUFBRSxDQUFDO0lBQ1AsYUFBYSxFQUFFLENBQUM7SUFDaEIsV0FBVyxFQUFFLENBQUM7SUFDZCxLQUFLLEVBQUUsRUFBRTtJQUNULFNBQVMsRUFBRSxFQUFFO0NBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRGlzcGxheVZhbHVlID0ge1xuICAgIGNoYXI6IDEsXG4gICAgY3VzdG9tQ29udGVudDogMyxcbiAgICBwdW5jdHVhdGlvbjogOSxcbiAgICBzcGFjZTogMTAsXG4gICAgZW1wdHlMaW5lOiAxM1xufTtcbiJdfQ==
@@ -1,13 +0,0 @@
1
- export const DocumentInfo = {
2
- width: 794,
3
- widthInInches: 8.267,
4
- height: 1123,
5
- pagesSpace: 8,
6
- paddingTop: 96,
7
- paddingRight: 48,
8
- paddingBottom: 96,
9
- paddingLeft: 48,
10
- paddingHeader: 48,
11
- paddingFooter: 48
12
- };
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtaW5mby5jb25zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2VkaXRvci9jb250ZW50L2NvbnN0YW50cy9kb2N1bWVudC1pbmZvLmNvbnN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUN4QixLQUFLLEVBQUUsR0FBRztJQUNWLGFBQWEsRUFBRSxLQUFLO0lBQ3BCLE1BQU0sRUFBRSxJQUFJO0lBQ1osVUFBVSxFQUFFLENBQUM7SUFDYixVQUFVLEVBQUUsRUFBRTtJQUNkLFlBQVksRUFBRSxFQUFFO0lBQ2hCLGFBQWEsRUFBRSxFQUFFO0lBQ2pCLFdBQVcsRUFBRSxFQUFFO0lBQ2YsYUFBYSxFQUFFLEVBQUU7SUFDakIsYUFBYSxFQUFFLEVBQUU7Q0FDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBEb2N1bWVudEluZm8gPSB7XG4gICAgd2lkdGg6IDc5NCxcbiAgICB3aWR0aEluSW5jaGVzOiA4LjI2NyxcbiAgICBoZWlnaHQ6IDExMjMsXG4gICAgcGFnZXNTcGFjZTogOCxcbiAgICBwYWRkaW5nVG9wOiA5NixcbiAgICBwYWRkaW5nUmlnaHQ6IDQ4LFxuICAgIHBhZGRpbmdCb3R0b206IDk2LFxuICAgIHBhZGRpbmdMZWZ0OiA0OCxcbiAgICBwYWRkaW5nSGVhZGVyOiA0OCxcbiAgICBwYWRkaW5nRm9vdGVyOiA0OFxufTtcbiJdfQ==
@@ -1,70 +0,0 @@
1
- import { Alignment } from '../../positioning/alignments.const';
2
- import { HeadingModel } from '../../../models/generated/heading.model';
3
- import { ParagraphStyleModel } from '../../../models/generated/paragraph-style.model';
4
- import { TextStyleModel } from '../../../models/generated/text-style.model';
5
- import { VerticalAlignment } from '../vertical-alignment.enum';
6
- export const DEFAULT_TOOLBAR_STYLES = () => ({
7
- fontFamily: DEFAULT_FONT_FAMILY,
8
- fontSize: DEFAULT_FONT_SIZE,
9
- fontColor: DEFAULT_FONT_COLOR,
10
- alignment: Alignment.left,
11
- backgroundColor: DEFAULT_BACKGROUND_COLOR,
12
- highlightColor: DEFAULT_BACKGROUND_COLOR
13
- });
14
- export const DEFAULT_BACKGROUND_COLOR = 'transparent';
15
- export const DEFAULT_FONT_FAMILY = 'Roboto';
16
- export const DEFAULT_FONT_SIZE = 14;
17
- export const DEFAULT_FONT_COLOR = '#000';
18
- export const HYPERLINK_FONT_COLOR = '#0000EE';
19
- export const DEFAULT_HEADING_STYLE_ID = 'Default';
20
- export const HYPERLINK_HEADING_STYLE_ID = 'Hyperlink';
21
- export const DEFAULT_TEXT_STYLE = new TextStyleModel({
22
- highlightColor: DEFAULT_BACKGROUND_COLOR,
23
- bold: false,
24
- fontColor: DEFAULT_FONT_COLOR,
25
- fontFamily: DEFAULT_FONT_FAMILY,
26
- fontSize: DEFAULT_FONT_SIZE,
27
- headingStyleId: DEFAULT_HEADING_STYLE_ID,
28
- isSmallCaps: false,
29
- italic: false,
30
- strikethrough: false,
31
- underline: false,
32
- verticalAlignment: VerticalAlignment.None
33
- });
34
- export const DEFAULT_PARAGRAPH_STYLE = new ParagraphStyleModel({
35
- alignment: Alignment.left,
36
- backgroundColor: DEFAULT_BACKGROUND_COLOR,
37
- headingStyleId: DEFAULT_HEADING_STYLE_ID,
38
- indentFirstLine: 0,
39
- indentHanging: 0,
40
- indentLeft: 0,
41
- indentRight: 0,
42
- lineSpacing: 1,
43
- spaceAfter: 0,
44
- spaceBefore: 0,
45
- numberingId: null,
46
- numberingLevel: null,
47
- contextualSpacing: false,
48
- beforeAutospacing: false,
49
- afterAutospacing: false
50
- });
51
- export const DEFAULT_HEADINGS = [
52
- new HeadingModel({
53
- basedOn: null,
54
- name: DEFAULT_HEADING_STYLE_ID,
55
- paragraphStyle: DEFAULT_PARAGRAPH_STYLE,
56
- styleId: DEFAULT_HEADING_STYLE_ID,
57
- textStyle: DEFAULT_TEXT_STYLE
58
- }),
59
- new HeadingModel({
60
- basedOn: DEFAULT_HEADING_STYLE_ID,
61
- name: 'Default Paragraph Font',
62
- paragraphStyle: DEFAULT_PARAGRAPH_STYLE,
63
- styleId: 'DefaultParagraphFont',
64
- textStyle: DEFAULT_TEXT_STYLE
65
- })
66
- ];
67
- export const NEW_LINE_MARKUP = '\n';
68
- export const DEFAULT_TAB_WIDTH = 48;
69
- export const DEFAULT_EDGE_MAX_HEIGHT_MULTIPLIER = 0.4;
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbnN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvZWRpdG9yL2NvbnRlbnQvY29uc3RhbnRzL2VkaXRvci5jb25zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUvRCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLEVBQUUsQ0FDdkMsQ0FBQztJQUNHLFVBQVUsRUFBRSxtQkFBbUI7SUFDL0IsUUFBUSxFQUFFLGlCQUFpQjtJQUMzQixTQUFTLEVBQUUsa0JBQWtCO0lBQzdCLFNBQVMsRUFBRSxTQUFTLENBQUMsSUFBSTtJQUN6QixlQUFlLEVBQUUsd0JBQXdCO0lBQ3pDLGNBQWMsRUFBRSx3QkFBd0I7Q0FDeEIsQ0FBQSxDQUFDO0FBQ3pCLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLGFBQWEsQ0FBQztBQUN0RCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxRQUFRLENBQUM7QUFDNUMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsRUFBRSxDQUFDO0FBQ3BDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQztBQUN6QyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxTQUFTLENBQUM7QUFDOUMsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsU0FBUyxDQUFDO0FBQ2xELE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLFdBQVcsQ0FBQztBQUN0RCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBQztJQUNqRCxjQUFjLEVBQUUsd0JBQXdCO0lBQ3hDLElBQUksRUFBRSxLQUFLO0lBQ1gsU0FBUyxFQUFFLGtCQUFrQjtJQUM3QixVQUFVLEVBQUUsbUJBQW1CO0lBQy9CLFFBQVEsRUFBRSxpQkFBaUI7SUFDM0IsY0FBYyxFQUFFLHdCQUF3QjtJQUN4QyxXQUFXLEVBQUUsS0FBSztJQUNsQixNQUFNLEVBQUUsS0FBSztJQUNiLGFBQWEsRUFBRSxLQUFLO0lBQ3BCLFNBQVMsRUFBRSxLQUFLO0lBQ2hCLGlCQUFpQixFQUFFLGlCQUFpQixDQUFDLElBQUk7Q0FDNUMsQ0FBQyxDQUFDO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQztJQUMzRCxTQUFTLEVBQUUsU0FBUyxDQUFDLElBQUk7SUFDekIsZUFBZSxFQUFFLHdCQUF3QjtJQUN6QyxjQUFjLEVBQUUsd0JBQXdCO0lBQ3hDLGVBQWUsRUFBRSxDQUFDO0lBQ2xCLGFBQWEsRUFBRSxDQUFDO0lBQ2hCLFVBQVUsRUFBRSxDQUFDO0lBQ2IsV0FBVyxFQUFFLENBQUM7SUFDZCxXQUFXLEVBQUUsQ0FBQztJQUNkLFVBQVUsRUFBRSxDQUFDO0lBQ2IsV0FBVyxFQUFFLENBQUM7SUFDZCxXQUFXLEVBQUUsSUFBSTtJQUNqQixjQUFjLEVBQUUsSUFBSTtJQUNwQixpQkFBaUIsRUFBRSxLQUFLO0lBQ3hCLGlCQUFpQixFQUFFLEtBQUs7SUFDeEIsZ0JBQWdCLEVBQUUsS0FBSztDQUMxQixDQUFDLENBQUM7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM1QixJQUFJLFlBQVksQ0FBQztRQUNiLE9BQU8sRUFBRSxJQUFJO1FBQ2IsSUFBSSxFQUFFLHdCQUF3QjtRQUM5QixjQUFjLEVBQUUsdUJBQXVCO1FBQ3ZDLE9BQU8sRUFBRSx3QkFBd0I7UUFDakMsU0FBUyxFQUFFLGtCQUFrQjtLQUNoQyxDQUFDO0lBQ0YsSUFBSSxZQUFZLENBQUM7UUFDYixPQUFPLEVBQUUsd0JBQXdCO1FBQ2pDLElBQUksRUFBRSx3QkFBd0I7UUFDOUIsY0FBYyxFQUFFLHVCQUF1QjtRQUN2QyxPQUFPLEVBQUUsc0JBQXNCO1FBQy9CLFNBQVMsRUFBRSxrQkFBa0I7S0FDaEMsQ0FBQztDQUNMLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDO0FBQ3BDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztBQUNwQyxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRyxHQUFHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbGlnbm1lbnQgfSBmcm9tICcuLi8uLi9wb3NpdGlvbmluZy9hbGlnbm1lbnRzLmNvbnN0JztcbmltcG9ydCB7IEhlYWRpbmdNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaGVhZGluZy5tb2RlbCc7XG5pbXBvcnQgeyBJVG9vbGJhclN0eWxlcyB9IGZyb20gJy4uL2Rpc3BsYXktZGF0YS90b29sYmFyLXN0eWxlcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUGFyYWdyYXBoU3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcGFyYWdyYXBoLXN0eWxlLm1vZGVsJztcbmltcG9ydCB7IFRleHRTdHlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90ZXh0LXN0eWxlLm1vZGVsJztcbmltcG9ydCB7IFZlcnRpY2FsQWxpZ25tZW50IH0gZnJvbSAnLi4vdmVydGljYWwtYWxpZ25tZW50LmVudW0nO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9UT09MQkFSX1NUWUxFUyA9ICgpID0+XG4gICAgKHtcbiAgICAgICAgZm9udEZhbWlseTogREVGQVVMVF9GT05UX0ZBTUlMWSxcbiAgICAgICAgZm9udFNpemU6IERFRkFVTFRfRk9OVF9TSVpFLFxuICAgICAgICBmb250Q29sb3I6IERFRkFVTFRfRk9OVF9DT0xPUixcbiAgICAgICAgYWxpZ25tZW50OiBBbGlnbm1lbnQubGVmdCxcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBERUZBVUxUX0JBQ0tHUk9VTkRfQ09MT1IsXG4gICAgICAgIGhpZ2hsaWdodENvbG9yOiBERUZBVUxUX0JBQ0tHUk9VTkRfQ09MT1JcbiAgICB9IGFzIElUb29sYmFyU3R5bGVzKTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0JBQ0tHUk9VTkRfQ09MT1IgPSAndHJhbnNwYXJlbnQnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRk9OVF9GQU1JTFkgPSAnUm9ib3RvJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX0ZPTlRfU0laRSA9IDE0O1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRk9OVF9DT0xPUiA9ICcjMDAwJztcbmV4cG9ydCBjb25zdCBIWVBFUkxJTktfRk9OVF9DT0xPUiA9ICcjMDAwMEVFJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX0hFQURJTkdfU1RZTEVfSUQgPSAnRGVmYXVsdCc7XG5leHBvcnQgY29uc3QgSFlQRVJMSU5LX0hFQURJTkdfU1RZTEVfSUQgPSAnSHlwZXJsaW5rJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX1RFWFRfU1RZTEUgPSBuZXcgVGV4dFN0eWxlTW9kZWwoe1xuICAgIGhpZ2hsaWdodENvbG9yOiBERUZBVUxUX0JBQ0tHUk9VTkRfQ09MT1IsXG4gICAgYm9sZDogZmFsc2UsXG4gICAgZm9udENvbG9yOiBERUZBVUxUX0ZPTlRfQ09MT1IsXG4gICAgZm9udEZhbWlseTogREVGQVVMVF9GT05UX0ZBTUlMWSxcbiAgICBmb250U2l6ZTogREVGQVVMVF9GT05UX1NJWkUsXG4gICAgaGVhZGluZ1N0eWxlSWQ6IERFRkFVTFRfSEVBRElOR19TVFlMRV9JRCxcbiAgICBpc1NtYWxsQ2FwczogZmFsc2UsXG4gICAgaXRhbGljOiBmYWxzZSxcbiAgICBzdHJpa2V0aHJvdWdoOiBmYWxzZSxcbiAgICB1bmRlcmxpbmU6IGZhbHNlLFxuICAgIHZlcnRpY2FsQWxpZ25tZW50OiBWZXJ0aWNhbEFsaWdubWVudC5Ob25lXG59KTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRSA9IG5ldyBQYXJhZ3JhcGhTdHlsZU1vZGVsKHtcbiAgICBhbGlnbm1lbnQ6IEFsaWdubWVudC5sZWZ0LFxuICAgIGJhY2tncm91bmRDb2xvcjogREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SLFxuICAgIGhlYWRpbmdTdHlsZUlkOiBERUZBVUxUX0hFQURJTkdfU1RZTEVfSUQsXG4gICAgaW5kZW50Rmlyc3RMaW5lOiAwLFxuICAgIGluZGVudEhhbmdpbmc6IDAsXG4gICAgaW5kZW50TGVmdDogMCxcbiAgICBpbmRlbnRSaWdodDogMCxcbiAgICBsaW5lU3BhY2luZzogMSxcbiAgICBzcGFjZUFmdGVyOiAwLFxuICAgIHNwYWNlQmVmb3JlOiAwLFxuICAgIG51bWJlcmluZ0lkOiBudWxsLFxuICAgIG51bWJlcmluZ0xldmVsOiBudWxsLFxuICAgIGNvbnRleHR1YWxTcGFjaW5nOiBmYWxzZSxcbiAgICBiZWZvcmVBdXRvc3BhY2luZzogZmFsc2UsXG4gICAgYWZ0ZXJBdXRvc3BhY2luZzogZmFsc2Vcbn0pO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSEVBRElOR1MgPSBbXG4gICAgbmV3IEhlYWRpbmdNb2RlbCh7XG4gICAgICAgIGJhc2VkT246IG51bGwsXG4gICAgICAgIG5hbWU6IERFRkFVTFRfSEVBRElOR19TVFlMRV9JRCxcbiAgICAgICAgcGFyYWdyYXBoU3R5bGU6IERFRkFVTFRfUEFSQUdSQVBIX1NUWUxFLFxuICAgICAgICBzdHlsZUlkOiBERUZBVUxUX0hFQURJTkdfU1RZTEVfSUQsXG4gICAgICAgIHRleHRTdHlsZTogREVGQVVMVF9URVhUX1NUWUxFXG4gICAgfSksXG4gICAgbmV3IEhlYWRpbmdNb2RlbCh7XG4gICAgICAgIGJhc2VkT246IERFRkFVTFRfSEVBRElOR19TVFlMRV9JRCxcbiAgICAgICAgbmFtZTogJ0RlZmF1bHQgUGFyYWdyYXBoIEZvbnQnLFxuICAgICAgICBwYXJhZ3JhcGhTdHlsZTogREVGQVVMVF9QQVJBR1JBUEhfU1RZTEUsXG4gICAgICAgIHN0eWxlSWQ6ICdEZWZhdWx0UGFyYWdyYXBoRm9udCcsXG4gICAgICAgIHRleHRTdHlsZTogREVGQVVMVF9URVhUX1NUWUxFXG4gICAgfSlcbl07XG5leHBvcnQgY29uc3QgTkVXX0xJTkVfTUFSS1VQID0gJ1xcbic7XG5leHBvcnQgY29uc3QgREVGQVVMVF9UQUJfV0lEVEggPSA0ODtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0VER0VfTUFYX0hFSUdIVF9NVUxUSVBMSUVSID0gMC40O1xuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudHMuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvZWRpdG9yL2NvbnRlbnQvY29udGVudHMuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmVha01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9icmVhay5tb2RlbCc7XG5pbXBvcnQgeyBDb2x1bW5TZWN0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2NvbHVtbi1zZWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IEVsZW1lbnRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvZWxlbWVudC5tb2RlbCc7XG5pbXBvcnQgeyBGb3JtYXRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvZm9ybWF0Lm1vZGVsJztcbmltcG9ydCB7IEltYWdlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2ltYWdlLm1vZGVsJztcbmltcG9ydCB7IExpbmtNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvbGluay5tb2RlbCc7XG5pbXBvcnQgeyBQYXJhZ3JhcGhNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcGFyYWdyYXBoLm1vZGVsJztcbmltcG9ydCB7IFRhYmxlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3RhYmxlLm1vZGVsJztcbmltcG9ydCB7IFRhYk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90YWIubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRzSW50ZXJmYWNlIHtcbiAgICBjb250ZW50OiBzdHJpbmc7XG4gICAgY29udGVudExlbmd0aDogbnVtYmVyO1xuICAgIHBhcmFncmFwaHM6IFBhcmFncmFwaE1vZGVsW107XG4gICAgZm9ybWF0czogRm9ybWF0TW9kZWxbXTtcbiAgICBpbWFnZXM6IEltYWdlTW9kZWxbXTtcbiAgICBsaW5rczogTGlua01vZGVsW107XG4gICAgdGFibGVzOiBUYWJsZU1vZGVsW107XG4gICAgZWxlbWVudHM6IEVsZW1lbnRNb2RlbFtdO1xuICAgIGJyZWFrczogQnJlYWtNb2RlbFtdO1xuICAgIGNvbHVtblNlY3Rpb25zOiBDb2x1bW5TZWN0aW9uTW9kZWxbXTtcbiAgICB0YWJzOiBUYWJNb2RlbFtdO1xufVxuIl19