@acorex/components 20.2.10 → 20.2.12

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 (213) hide show
  1. package/fesm2022/acorex-components-accordion.mjs +10 -10
  2. package/fesm2022/acorex-components-accordion.mjs.map +1 -1
  3. package/fesm2022/acorex-components-action-sheet.mjs +10 -10
  4. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  5. package/fesm2022/acorex-components-alert.mjs +7 -7
  6. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  7. package/fesm2022/acorex-components-aspect-ratio.mjs +3 -3
  8. package/fesm2022/acorex-components-aspect-ratio.mjs.map +1 -1
  9. package/fesm2022/acorex-components-audio-wave.mjs +7 -7
  10. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  11. package/fesm2022/acorex-components-autocomplete.mjs +7 -7
  12. package/fesm2022/acorex-components-autocomplete.mjs.map +1 -1
  13. package/fesm2022/acorex-components-avatar.mjs +10 -10
  14. package/fesm2022/acorex-components-avatar.mjs.map +1 -1
  15. package/fesm2022/acorex-components-badge.mjs +7 -7
  16. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  17. package/fesm2022/acorex-components-bottom-navigation.mjs +10 -10
  18. package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -1
  19. package/fesm2022/acorex-components-breadcrumbs.mjs +10 -10
  20. package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
  21. package/fesm2022/acorex-components-button-group.mjs +10 -10
  22. package/fesm2022/acorex-components-button-group.mjs.map +1 -1
  23. package/fesm2022/acorex-components-button.mjs +13 -13
  24. package/fesm2022/acorex-components-button.mjs.map +1 -1
  25. package/fesm2022/acorex-components-calendar.mjs +13 -13
  26. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  27. package/fesm2022/acorex-components-check-box.mjs +7 -7
  28. package/fesm2022/acorex-components-check-box.mjs.map +1 -1
  29. package/fesm2022/acorex-components-chips.mjs +7 -7
  30. package/fesm2022/acorex-components-chips.mjs.map +1 -1
  31. package/fesm2022/acorex-components-circular-progress.mjs +7 -7
  32. package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
  33. package/fesm2022/acorex-components-code-editor.mjs +7 -7
  34. package/fesm2022/acorex-components-code-editor.mjs.map +1 -1
  35. package/fesm2022/acorex-components-collapse.mjs +11 -26
  36. package/fesm2022/acorex-components-collapse.mjs.map +1 -1
  37. package/fesm2022/acorex-components-color-box.mjs +7 -7
  38. package/fesm2022/acorex-components-color-box.mjs.map +1 -1
  39. package/fesm2022/acorex-components-color-palette.mjs +28 -28
  40. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  41. package/fesm2022/acorex-components-command.mjs +7 -7
  42. package/fesm2022/acorex-components-command.mjs.map +1 -1
  43. package/fesm2022/acorex-components-comment.mjs +28 -28
  44. package/fesm2022/acorex-components-comment.mjs.map +1 -1
  45. package/fesm2022/acorex-components-conversation.mjs +50 -59
  46. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  47. package/fesm2022/acorex-components-cron-job.mjs +46 -46
  48. package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
  49. package/fesm2022/acorex-components-data-list.mjs +3 -3
  50. package/fesm2022/acorex-components-data-list.mjs.map +1 -1
  51. package/fesm2022/acorex-components-data-pager.mjs +31 -31
  52. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  53. package/fesm2022/acorex-components-data-table.mjs +37 -37
  54. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  55. package/fesm2022/acorex-components-datetime-box.mjs +7 -7
  56. package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
  57. package/fesm2022/acorex-components-datetime-input.mjs +7 -7
  58. package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
  59. package/fesm2022/acorex-components-datetime-picker.mjs +7 -7
  60. package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
  61. package/fesm2022/acorex-components-decorators.mjs +25 -25
  62. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  63. package/fesm2022/acorex-components-dialog.mjs +10 -10
  64. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  65. package/fesm2022/acorex-components-drawer-2.mjs +10 -10
  66. package/fesm2022/acorex-components-drawer-2.mjs.map +1 -1
  67. package/fesm2022/acorex-components-drawer.mjs +13 -13
  68. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  69. package/fesm2022/acorex-components-dropdown-button.mjs +7 -7
  70. package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
  71. package/fesm2022/acorex-components-dropdown.mjs +13 -13
  72. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  73. package/fesm2022/acorex-components-file-explorer.mjs +25 -25
  74. package/fesm2022/acorex-components-file-explorer.mjs.map +1 -1
  75. package/fesm2022/acorex-components-flow-chart.mjs +16 -16
  76. package/fesm2022/acorex-components-flow-chart.mjs.map +1 -1
  77. package/fesm2022/acorex-components-form.mjs +16 -16
  78. package/fesm2022/acorex-components-form.mjs.map +1 -1
  79. package/fesm2022/acorex-components-grid-layout-builder.mjs +10 -10
  80. package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
  81. package/fesm2022/acorex-components-image-editor.mjs +34 -34
  82. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  83. package/fesm2022/acorex-components-image.mjs +7 -7
  84. package/fesm2022/acorex-components-image.mjs.map +1 -1
  85. package/fesm2022/acorex-components-json-viewer.mjs +7 -7
  86. package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
  87. package/fesm2022/acorex-components-kanban.mjs +3 -3
  88. package/fesm2022/acorex-components-kanban.mjs.map +1 -1
  89. package/fesm2022/acorex-components-kbd.mjs +6 -6
  90. package/fesm2022/acorex-components-kbd.mjs.map +1 -1
  91. package/fesm2022/acorex-components-label.mjs +7 -7
  92. package/fesm2022/acorex-components-label.mjs.map +1 -1
  93. package/fesm2022/acorex-components-list.mjs +7 -7
  94. package/fesm2022/acorex-components-list.mjs.map +1 -1
  95. package/fesm2022/acorex-components-loading-dialog.mjs +10 -10
  96. package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
  97. package/fesm2022/acorex-components-loading.mjs +16 -16
  98. package/fesm2022/acorex-components-loading.mjs.map +1 -1
  99. package/fesm2022/acorex-components-map.mjs +13 -13
  100. package/fesm2022/acorex-components-map.mjs.map +1 -1
  101. package/fesm2022/acorex-components-media-viewer.mjs +34 -34
  102. package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
  103. package/fesm2022/acorex-components-menu.mjs +16 -16
  104. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  105. package/fesm2022/{acorex-components-modal-acorex-components-modal-eT-v_xm8.mjs → acorex-components-modal-acorex-components-modal-CBjZvGmq.mjs} +21 -21
  106. package/fesm2022/{acorex-components-modal-acorex-components-modal-eT-v_xm8.mjs.map → acorex-components-modal-acorex-components-modal-CBjZvGmq.mjs.map} +1 -1
  107. package/fesm2022/{acorex-components-modal-modal-content.component-DYHKvNVp.mjs → acorex-components-modal-modal-content.component-CEMHSbv-.mjs} +6 -6
  108. package/fesm2022/acorex-components-modal-modal-content.component-CEMHSbv-.mjs.map +1 -0
  109. package/fesm2022/acorex-components-modal.mjs +1 -1
  110. package/fesm2022/acorex-components-navbar.mjs +7 -7
  111. package/fesm2022/acorex-components-navbar.mjs.map +1 -1
  112. package/fesm2022/acorex-components-notification.mjs +10 -10
  113. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  114. package/fesm2022/acorex-components-number-box-2.mjs +3 -3
  115. package/fesm2022/acorex-components-number-box-2.mjs.map +1 -1
  116. package/fesm2022/acorex-components-number-box.mjs +7 -7
  117. package/fesm2022/acorex-components-number-box.mjs.map +1 -1
  118. package/fesm2022/acorex-components-otp.mjs +7 -7
  119. package/fesm2022/acorex-components-otp.mjs.map +1 -1
  120. package/fesm2022/acorex-components-page.mjs +10 -10
  121. package/fesm2022/acorex-components-page.mjs.map +1 -1
  122. package/fesm2022/acorex-components-paint.mjs +25 -25
  123. package/fesm2022/acorex-components-paint.mjs.map +1 -1
  124. package/fesm2022/acorex-components-password-box.mjs +10 -10
  125. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  126. package/fesm2022/acorex-components-pdf-reader.mjs +7 -7
  127. package/fesm2022/acorex-components-pdf-reader.mjs.map +1 -1
  128. package/fesm2022/acorex-components-phone-box.mjs +7 -7
  129. package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
  130. package/fesm2022/acorex-components-picker.mjs +13 -13
  131. package/fesm2022/acorex-components-picker.mjs.map +1 -1
  132. package/fesm2022/acorex-components-popover.mjs +7 -7
  133. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  134. package/fesm2022/acorex-components-popup.mjs +10 -10
  135. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  136. package/fesm2022/acorex-components-progress-bar.mjs +7 -7
  137. package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
  138. package/fesm2022/acorex-components-qrcode.mjs +7 -7
  139. package/fesm2022/acorex-components-qrcode.mjs.map +1 -1
  140. package/fesm2022/acorex-components-query-builder.mjs +7 -7
  141. package/fesm2022/acorex-components-query-builder.mjs.map +1 -1
  142. package/fesm2022/acorex-components-radio.mjs +7 -7
  143. package/fesm2022/acorex-components-radio.mjs.map +1 -1
  144. package/fesm2022/acorex-components-rail-navigation.mjs +13 -13
  145. package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
  146. package/fesm2022/acorex-components-range-slider.mjs +7 -7
  147. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  148. package/fesm2022/acorex-components-rate-picker.mjs +7 -7
  149. package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
  150. package/fesm2022/acorex-components-rest-api-generator.mjs +22 -22
  151. package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
  152. package/fesm2022/acorex-components-result.mjs +7 -7
  153. package/fesm2022/acorex-components-result.mjs.map +1 -1
  154. package/fesm2022/acorex-components-routing-progress.mjs +7 -7
  155. package/fesm2022/acorex-components-routing-progress.mjs.map +1 -1
  156. package/fesm2022/acorex-components-rrule.mjs +9 -9
  157. package/fesm2022/acorex-components-rrule.mjs.map +1 -1
  158. package/fesm2022/acorex-components-scheduler.mjs +34 -34
  159. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  160. package/fesm2022/acorex-components-scss.mjs +4 -4
  161. package/fesm2022/acorex-components-scss.mjs.map +1 -1
  162. package/fesm2022/acorex-components-search-box.mjs +7 -7
  163. package/fesm2022/acorex-components-search-box.mjs.map +1 -1
  164. package/fesm2022/acorex-components-select-box.mjs +7 -7
  165. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  166. package/fesm2022/acorex-components-selection-list-2.mjs +7 -7
  167. package/fesm2022/acorex-components-selection-list-2.mjs.map +1 -1
  168. package/fesm2022/acorex-components-selection-list.mjs +7 -7
  169. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  170. package/fesm2022/acorex-components-side-menu.mjs +19 -34
  171. package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
  172. package/fesm2022/acorex-components-skeleton.mjs +7 -7
  173. package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
  174. package/fesm2022/acorex-components-slider.mjs +7 -7
  175. package/fesm2022/acorex-components-slider.mjs.map +1 -1
  176. package/fesm2022/acorex-components-sliding-item.mjs +13 -13
  177. package/fesm2022/acorex-components-sliding-item.mjs.map +1 -1
  178. package/fesm2022/acorex-components-step-wizard.mjs +13 -13
  179. package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
  180. package/fesm2022/acorex-components-switch.mjs +10 -10
  181. package/fesm2022/acorex-components-switch.mjs.map +1 -1
  182. package/fesm2022/acorex-components-tabs.mjs +13 -13
  183. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  184. package/fesm2022/acorex-components-tag-box.mjs +7 -7
  185. package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
  186. package/fesm2022/acorex-components-tag.mjs +7 -7
  187. package/fesm2022/acorex-components-tag.mjs.map +1 -1
  188. package/fesm2022/acorex-components-text-area.mjs +7 -7
  189. package/fesm2022/acorex-components-text-area.mjs.map +1 -1
  190. package/fesm2022/acorex-components-text-box.mjs +10 -10
  191. package/fesm2022/acorex-components-text-box.mjs.map +1 -1
  192. package/fesm2022/acorex-components-time-duration.mjs +39 -13
  193. package/fesm2022/acorex-components-time-duration.mjs.map +1 -1
  194. package/fesm2022/acorex-components-time-line.mjs +11 -26
  195. package/fesm2022/acorex-components-time-line.mjs.map +1 -1
  196. package/fesm2022/acorex-components-toast.mjs +10 -10
  197. package/fesm2022/acorex-components-toast.mjs.map +1 -1
  198. package/fesm2022/acorex-components-toolbar.mjs +7 -7
  199. package/fesm2022/acorex-components-toolbar.mjs.map +1 -1
  200. package/fesm2022/acorex-components-tooltip.mjs +10 -10
  201. package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
  202. package/fesm2022/acorex-components-tree-view.mjs +13 -42
  203. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  204. package/fesm2022/acorex-components-uploader.mjs +23 -38
  205. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  206. package/fesm2022/acorex-components-video-player.mjs +7 -7
  207. package/fesm2022/acorex-components-video-player.mjs.map +1 -1
  208. package/fesm2022/acorex-components-wysiwyg.mjs +34 -34
  209. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  210. package/package.json +15 -15
  211. package/side-menu/index.d.ts +2 -2
  212. package/time-duration/index.d.ts +6 -2
  213. package/fesm2022/acorex-components-modal-modal-content.component-DYHKvNVp.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-code-editor.mjs","sources":["../tmp-esm2022/code-editor/lib/code-editor.component.js","../tmp-esm2022/code-editor/lib/code-editor.module.js","../tmp-esm2022/code-editor/acorex-components-code-editor.js"],"sourcesContent":["import { AXComponent, AXValuableComponent, MXValueComponent } from '@acorex/cdk/common';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Component, DestroyRef, PLATFORM_ID, afterNextRender, computed, effect, forwardRef, inject, input, output, signal, viewChild, } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i0 from \"@angular/core\";\nexport class AXCodeEditorComponent extends MXValueComponent {\n constructor() {\n super();\n // Inputs (signals)\n // value = input<string>('');\n /** Active language mode. Default: 'javascript'. */\n this.language = input('javascript', ...(ngDevMode ? [{ debugName: \"language\" }] : []));\n /** When true, the editor becomes readonly (non-editable). */\n this.readOnly = input(false, ...(ngDevMode ? [{ debugName: \"readOnly\" }] : []));\n /** Placeholder text shown when the document is empty. */\n this.placeholder = input('', ...(ngDevMode ? [{ debugName: \"placeholder\" }] : []));\n /** Toggle rendering of line numbers in the gutter. */\n this.lineNumbers = input(true, ...(ngDevMode ? [{ debugName: \"lineNumbers\" }] : []));\n /** Soft-wrap long lines when true. */\n this.lineWrapping = input(false, ...(ngDevMode ? [{ debugName: \"lineWrapping\" }] : []));\n /** Tab size (spaces per indent level). */\n this.tabSize = input(2, ...(ngDevMode ? [{ debugName: \"tabSize\" }] : []));\n /** When true, the Tab key indents instead of moving focus. */\n this.indentWithTab = input(true, ...(ngDevMode ? [{ debugName: \"indentWithTab\" }] : []));\n /** Fixed height for the editor (e.g., '320px'). */\n this.height = input(null, ...(ngDevMode ? [{ debugName: \"height\" }] : []));\n /** Minimum height for the editor. */\n this.minHeight = input(null, ...(ngDevMode ? [{ debugName: \"minHeight\" }] : []));\n /** Maximum height for the editor. */\n this.maxHeight = input(null, ...(ngDevMode ? [{ debugName: \"maxHeight\" }] : []));\n // Theme follows platform theme mode; no input\n /** Additional CodeMirror extensions to apply. Reconfigures at runtime. */\n this.extensions = input([], ...(ngDevMode ? [{ debugName: \"extensions\" }] : []));\n /** ARIA label for accessibility. */\n this.ariaLabel = input(null, ...(ngDevMode ? [{ debugName: \"ariaLabel\" }] : []));\n /** Focus the editor after first render. */\n this.focusOnReady = input(false, ...(ngDevMode ? [{ debugName: \"focusOnReady\" }] : []));\n /** If true, format the document via Prettier before emitting save. */\n this.formatOnSave = input(false, ...(ngDevMode ? [{ debugName: \"formatOnSave\" }] : []));\n /**\n * Custom autocompletion options: either a static array of Completion items\n * or a CodeMirror CompletionSource function.\n */\n this.customCompletions = input(null, ...(ngDevMode ? [{ debugName: \"customCompletions\" }] : []));\n // Outputs (signals)\n // valueChange = output<string>();\n /** Emits when the editor is fully initialized and ready. */\n this.ready = output();\n /** Emits when the user triggers save (Ctrl/Cmd+S). Payload is the current text. */\n this.save = output();\n // View container\n this.host = viewChild('host', ...(ngDevMode ? [{ debugName: \"host\" }] : []));\n // Runtime state\n this.platformId = inject(PLATFORM_ID);\n this.destroyRef = inject(DestroyRef);\n this.platformService = inject(AXPlatform);\n this.editorViewSig = signal(null, ...(ngDevMode ? [{ debugName: \"editorViewSig\" }] : []));\n // Compartments to reconfigure editor without recreating it\n this.languageCompartment = null;\n this.readOnlyCompartment = null;\n this.themeCompartment = null;\n this.placeholderCompartment = null;\n this.wrappingCompartment = null;\n this.keymapExtrasCompartment = null;\n this.tabSizeCompartment = null;\n this.lineNumbersCompartment = null;\n // Cached CodeMirror modules after initialization\n this.cm = { view: null, state: null, language: null, autocomplete: null, commands: null, search: null, lint: null };\n this.isBrowser = computed(() => isPlatformBrowser(this.platformId), ...(ngDevMode ? [{ debugName: \"isBrowser\" }] : []));\n afterNextRender(() => {\n if (!this.isBrowser())\n return;\n this.initializeEditor();\n });\n // Keep model in sync when external value changes\n effect(() => {\n const view = this.editorViewSig();\n if (!view)\n return;\n const newDoc = this.value ?? '';\n const current = view.state.doc.toString();\n if (newDoc !== current) {\n view.dispatch({\n changes: { from: 0, to: view.state.doc.length, insert: newDoc },\n });\n }\n });\n // React to dynamic configuration changes\n effect(() => {\n const view = this.editorViewSig();\n if (!view || !this.languageCompartment)\n return;\n const lang = this.language();\n this.resolveLanguageExtension(lang).then((ext) => {\n if (!view || !this.languageCompartment)\n return;\n view.dispatch({ effects: this.languageCompartment.reconfigure(ext) });\n });\n });\n effect(() => {\n const view = this.editorViewSig();\n if (!view || !this.readOnlyCompartment)\n return;\n const editable = !this.readOnly();\n import('@codemirror/view').then(({ EditorView }) => {\n if (!view || !this.readOnlyCompartment)\n return;\n view.dispatch({ effects: this.readOnlyCompartment.reconfigure(EditorView.editable.of(editable)) });\n });\n });\n effect(() => {\n const view = this.editorViewSig();\n // Establish reactive dependency on platform theme\n // Create a reactive dependency to platform theme\n void this.platformService.themeMode();\n if (!view || !this.themeCompartment)\n return;\n this.resolveThemeExtension().then((themeExt) => {\n if (!view || !this.themeCompartment)\n return;\n view.dispatch({ effects: this.themeCompartment.reconfigure(themeExt) });\n });\n });\n effect(() => {\n this.placeholder();\n const view = this.editorViewSig();\n if (!view || !this.placeholderCompartment)\n return;\n import('@codemirror/view').then(({ placeholder }) => {\n if (!view || !this.placeholderCompartment)\n return;\n view.dispatch({ effects: this.placeholderCompartment.reconfigure(placeholder(this.placeholder() ?? '')) });\n });\n });\n effect(() => {\n const view = this.editorViewSig();\n if (!view || !this.wrappingCompartment)\n return;\n const EditorView = this.cm.view?.EditorView;\n if (!EditorView)\n return;\n const nextExt = this.lineWrapping() ? EditorView.lineWrapping : [];\n this.reconfigure(this.wrappingCompartment, nextExt);\n });\n effect(() => {\n const view = this.editorViewSig();\n if (!view || !this.tabSizeCompartment)\n return;\n const EditorState = this.cm.state?.EditorState;\n if (!EditorState)\n return;\n this.reconfigure(this.tabSizeCompartment, EditorState.tabSize.of(this.tabSize() ?? 2));\n });\n effect(() => {\n const view = this.editorViewSig();\n if (!view || !this.keymapExtrasCompartment)\n return;\n const keymap = this.cm.view?.keymap;\n const commands = this.cm.commands;\n if (!keymap || !commands)\n return;\n this.reconfigure(this.keymapExtrasCompartment, keymap.of(this.indentWithTab() ? [commands.indentWithTab] : []));\n });\n effect(() => {\n const view = this.editorViewSig();\n if (!view || !this.lineNumbersCompartment)\n return;\n const lineNumbers = this.cm.view?.lineNumbers;\n if (!lineNumbers)\n return;\n this.reconfigure(this.lineNumbersCompartment, this.lineNumbers() ? lineNumbers() : []);\n });\n }\n async initializeEditor() {\n const hostEl = this.host()?.nativeElement;\n if (!hostEl)\n return;\n await this.loadCodeMirrorModules();\n this.createCompartments();\n const keymaps = this.buildKeymaps();\n const viewMod = this.cm.view;\n const stateMod = this.cm.state;\n const languageMod = this.cm.language;\n const autoMod = this.cm.autocomplete;\n const commandsMod = this.cm.commands;\n const searchMod = this.cm.search;\n const lintMod = this.cm.lint;\n if (!viewMod || !stateMod || !languageMod || !autoMod || !commandsMod || !searchMod || !lintMod)\n return;\n const languageExt = await this.resolveLanguageExtension(this.language());\n const themeExt = await this.resolveThemeExtension();\n const placeholderExt = viewMod.placeholder(this.placeholder() ?? '');\n const editableExt = viewMod.EditorView.editable.of(!this.readOnly());\n const wrappingExt = this.lineWrapping() ? viewMod.EditorView.lineWrapping : [];\n const tabSizeExt = stateMod.EditorState.tabSize.of(this.tabSize() ?? 2);\n const lineNumbersExt = this.lineNumbers() ? viewMod.lineNumbers() : [];\n const autoCompleteExt = autoMod.autocompletion({\n override: this.buildCustomCompletionSources(),\n });\n const baseExtensions = [\n this.lineNumbersCompartment.of(lineNumbersExt),\n viewMod.highlightActiveLine(),\n viewMod.highlightActiveLineGutter(),\n viewMod.drawSelection(),\n viewMod.dropCursor(),\n viewMod.rectangularSelection(),\n viewMod.crosshairCursor(),\n viewMod.highlightSpecialChars(),\n languageMod.syntaxHighlighting(languageMod.defaultHighlightStyle, { fallback: true }),\n languageMod.bracketMatching(),\n languageMod.foldGutter(),\n commandsMod.history(),\n searchMod.highlightSelectionMatches(),\n viewMod.keymap.of(keymaps),\n autoCompleteExt,\n this.languageCompartment.of(languageExt),\n this.readOnlyCompartment.of(editableExt),\n this.themeCompartment.of(themeExt),\n this.placeholderCompartment.of(placeholderExt),\n this.wrappingCompartment.of(wrappingExt),\n this.tabSizeCompartment.of(tabSizeExt),\n this.keymapExtrasCompartment.of(viewMod.keymap.of(this.indentWithTab() ? [commandsMod.indentWithTab] : [])),\n ...this.extensions(),\n ];\n const updateListener = viewMod.EditorView.updateListener.of((vu) => {\n if (vu.docChanged) {\n const text = vu.state.doc.toString();\n // this.writeValue(text);\n this.value = text;\n }\n });\n const state = stateMod.EditorState.create({\n doc: this.value ?? '',\n extensions: [...baseExtensions, updateListener],\n });\n const view = new viewMod.EditorView({ state, parent: hostEl });\n // Update listener for external changes (selection, viewport, etc.) if needed later\n view.dispatch({ effects: [] });\n this.editorViewSig.set(view);\n this.destroyRef.onDestroy(() => {\n view.destroy();\n this.editorViewSig.set(null);\n });\n if (this.focusOnReady()) {\n view.focus();\n }\n this.ready.emit();\n }\n reconfigure(comp, ext) {\n const view = this.editorViewSig();\n if (!view || !comp)\n return;\n view.dispatch({ effects: comp.reconfigure(ext) });\n }\n /**\n * Handles Ctrl/Cmd+S on the host. If formatOnSave is enabled, attempts\n * to format the document first, then emits the saved text.\n */\n async onSaveShortcut(event) {\n event.preventDefault();\n const view = this.editorViewSig();\n const current = view?.state.doc.toString() ?? this.value ?? '';\n const payload = current;\n if (this.formatOnSave()) {\n await this.format(true);\n }\n this.save.emit(payload);\n }\n async loadCodeMirrorModules() {\n const [viewMod, stateMod, langMod, autoMod, cmdMod, searchMod, lintMod] = await Promise.all([\n import('@codemirror/view'),\n import('@codemirror/state'),\n import('@codemirror/language'),\n import('@codemirror/autocomplete'),\n import('@codemirror/commands'),\n import('@codemirror/search'),\n import('@codemirror/lint'),\n ]);\n this.cm.view = viewMod;\n this.cm.state = stateMod;\n this.cm.language = langMod;\n this.cm.autocomplete = autoMod;\n this.cm.commands = cmdMod;\n this.cm.search = searchMod;\n this.cm.lint = lintMod;\n }\n createCompartments() {\n const stateMod = this.cm.state;\n if (!stateMod)\n return;\n this.languageCompartment = new stateMod.Compartment();\n this.readOnlyCompartment = new stateMod.Compartment();\n this.themeCompartment = new stateMod.Compartment();\n this.placeholderCompartment = new stateMod.Compartment();\n this.wrappingCompartment = new stateMod.Compartment();\n this.tabSizeCompartment = new stateMod.Compartment();\n this.keymapExtrasCompartment = new stateMod.Compartment();\n this.lineNumbersCompartment = new stateMod.Compartment();\n }\n buildKeymaps() {\n const cmdMod = this.cm.commands;\n const searchMod = this.cm.search;\n const autoMod = this.cm.autocomplete;\n const lintMod = this.cm.lint;\n if (!cmdMod || !searchMod || !autoMod || !lintMod)\n return [];\n return [\n ...cmdMod.defaultKeymap,\n ...cmdMod.historyKeymap,\n ...searchMod.searchKeymap,\n ...autoMod.completionKeymap,\n ...lintMod.lintKeymap,\n ];\n }\n // Attempts to format code using Prettier (browser-only). Returns formatted text or null on failure/unsupported.\n async tryFormatWithPrettier(text, lang) {\n if (!this.isBrowser())\n return null;\n try {\n const prettier = await import('prettier/standalone');\n let parser = null;\n const plugins = [];\n switch (lang) {\n case 'javascript':\n case 'js': {\n const [babel, estree] = await Promise.all([\n import('prettier/plugins/babel'),\n import('prettier/plugins/estree'),\n ]);\n plugins.push(babel, estree);\n parser = 'babel';\n break;\n }\n case 'typescript':\n case 'ts': {\n const [typescript, estree] = await Promise.all([\n import('prettier/plugins/typescript'),\n import('prettier/plugins/estree'),\n ]);\n plugins.push(typescript, estree);\n parser = 'typescript';\n break;\n }\n case 'json': {\n const [babel, estree] = await Promise.all([\n import('prettier/plugins/babel'),\n import('prettier/plugins/estree'),\n ]);\n plugins.push(babel, estree);\n parser = 'json';\n break;\n }\n case 'html': {\n const html = await import('prettier/plugins/html');\n plugins.push(html);\n parser = 'html';\n break;\n }\n case 'css': {\n const postcss = await import('prettier/plugins/postcss');\n plugins.push(postcss);\n parser = 'css';\n break;\n }\n case 'markdown': {\n const markdown = await import('prettier/plugins/markdown');\n plugins.push(markdown);\n parser = 'markdown';\n break;\n }\n default:\n return null;\n }\n if (!parser)\n return null;\n const formatted = await prettier.format(text, {\n parser,\n plugins,\n });\n return formatted;\n }\n catch {\n return null;\n }\n }\n async resolveLanguageExtension(lang) {\n switch (lang) {\n case 'javascript':\n case 'js': {\n const m = await import('@codemirror/lang-javascript');\n return m.javascript();\n }\n case 'typescript':\n case 'ts': {\n const m = await import('@codemirror/lang-javascript');\n return m.javascript({ typescript: true });\n }\n case 'json': {\n const m = await import('@codemirror/lang-json');\n return m.json();\n }\n case 'html': {\n const m = await import('@codemirror/lang-html');\n return m.html();\n }\n case 'css': {\n const m = await import('@codemirror/lang-css');\n return m.css();\n }\n case 'scss':\n case 'sass': {\n const m = await import('@codemirror/lang-sass');\n return m.sass();\n }\n case 'sql': {\n const m = await import('@codemirror/lang-sql');\n return m.sql();\n }\n case 'xml': {\n const m = await import('@codemirror/lang-xml');\n return m.xml();\n }\n case 'markdown': {\n const m = await import('@codemirror/lang-markdown');\n return m.markdown();\n }\n default:\n return [];\n }\n }\n async resolveThemeExtension() {\n const { EditorView } = await import('@codemirror/view');\n const darkMode = this.platformService.themeMode() === 'dark';\n // const surfaceVar = 'rgb(var(--ax-sys-color-surface)) !important';\n if (darkMode) {\n try {\n const { oneDark } = await import('@codemirror/theme-one-dark');\n return [\n oneDark,\n EditorView.theme({\n '&': { backgroundColor: 'transparent !important' },\n '.cm-gutters': {},\n }, { dark: true }),\n ];\n }\n catch {\n return EditorView.theme({\n '&': { backgroundColor: 'transparent !important' },\n '.cm-gutters': {},\n }, { dark: true });\n }\n }\n return EditorView.theme({\n '&': { backgroundColor: 'transparent !important' },\n '.cm-gutters': {},\n }, { dark: false });\n }\n buildCustomCompletionSources() {\n const provided = this.customCompletions();\n if (!provided)\n return undefined;\n if (typeof provided === 'function') {\n return [provided];\n }\n // Treat array as a static completion list\n const staticSource = (context) => {\n const from = context.pos;\n return { from, options: provided };\n };\n return [staticSource];\n }\n // Public API\n /** Programmatically focus the editor. */\n focus() {\n const view = this.editorViewSig();\n if (view)\n view.focus();\n }\n /** Select all text in the current document. */\n selectAll() {\n const view = this.editorViewSig();\n if (!view)\n return;\n const length = view.state.doc.length;\n view.dispatch({ selection: { anchor: 0, head: length } });\n }\n // Formats the current document with Prettier (if available for the active language).\n // Returns the formatted text or null if unchanged/unsupported.\n async format(affect = true) {\n const view = this.editorViewSig();\n if (!view)\n return null;\n const source = view.state.doc.toString();\n if (!source)\n return null;\n const formatted = await this.tryFormatWithPrettier(source, this.language());\n if (!formatted || formatted === source)\n return null;\n if (affect) {\n view.dispatch({ changes: { from: 0, to: view.state.doc.length, insert: formatted } });\n }\n return formatted;\n }\n /** Returns the total number of characters in the current document. */\n getTotalCharacters() {\n const view = this.editorViewSig();\n if (view)\n return view.state.doc.length ?? 0;\n const text = this.value ?? '';\n return text.length;\n }\n /** Returns the total number of lines in the current document. */\n getTotalLines() {\n const view = this.editorViewSig();\n if (view) {\n const doc = view.state.doc;\n return typeof doc?.lines === 'number' ? doc.lines : doc.toString().split(/\\r?\\n/).length;\n }\n const text = this.value ?? '';\n return text ? text.split(/\\r?\\n/).length : 1;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXCodeEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.2.0\", version: \"20.3.3\", type: AXCodeEditorComponent, isStandalone: true, selector: \"ax-code-editor\", inputs: { language: { classPropertyName: \"language\", publicName: \"language\", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: \"readOnly\", publicName: \"readOnly\", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: true, isRequired: false, transformFunction: null }, lineNumbers: { classPropertyName: \"lineNumbers\", publicName: \"lineNumbers\", isSignal: true, isRequired: false, transformFunction: null }, lineWrapping: { classPropertyName: \"lineWrapping\", publicName: \"lineWrapping\", isSignal: true, isRequired: false, transformFunction: null }, tabSize: { classPropertyName: \"tabSize\", publicName: \"tabSize\", isSignal: true, isRequired: false, transformFunction: null }, indentWithTab: { classPropertyName: \"indentWithTab\", publicName: \"indentWithTab\", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: \"height\", publicName: \"height\", isSignal: true, isRequired: false, transformFunction: null }, minHeight: { classPropertyName: \"minHeight\", publicName: \"minHeight\", isSignal: true, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: \"maxHeight\", publicName: \"maxHeight\", isSignal: true, isRequired: false, transformFunction: null }, extensions: { classPropertyName: \"extensions\", publicName: \"extensions\", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: \"ariaLabel\", publicName: \"ariaLabel\", isSignal: true, isRequired: false, transformFunction: null }, focusOnReady: { classPropertyName: \"focusOnReady\", publicName: \"focusOnReady\", isSignal: true, isRequired: false, transformFunction: null }, formatOnSave: { classPropertyName: \"formatOnSave\", publicName: \"formatOnSave\", isSignal: true, isRequired: false, transformFunction: null }, customCompletions: { classPropertyName: \"customCompletions\", publicName: \"customCompletions\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { ready: \"ready\", save: \"save\" }, host: { listeners: { \"keydown.control.s\": \"onSaveShortcut($event)\" }, classAttribute: \"ax-code-editor block\" }, providers: [\n { provide: AXValuableComponent, useExisting: AXCodeEditorComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXCodeEditorComponent),\n multi: true,\n },\n { provide: AXComponent, useExisting: AXCodeEditorComponent },\n ], viewQueries: [{ propertyName: \"host\", first: true, predicate: [\"host\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `\n <div\n #host\n class=\"cm-editor\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-readonly]=\"readOnly() ? 'true' : 'false'\"\n [attr.data-placeholder]=\"placeholder() ?? null\"\n [style.height]=\"height() ?? null\"\n [style.minHeight]=\"minHeight() ?? null\"\n [style.maxHeight]=\"maxHeight() ?? null\"\n ></div>\n `, isInline: true, styles: [\":host{display:block;width:100%;transition:none}.cm-editor{width:100%;max-width:100%;box-sizing:border-box}.cm-editor.cm-focused{outline:none}\\n\"] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXCodeEditorComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-code-editor', host: {\n '(keydown.control.s)': 'onSaveShortcut($event)',\n class: 'ax-code-editor block',\n }, providers: [\n { provide: AXValuableComponent, useExisting: AXCodeEditorComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXCodeEditorComponent),\n multi: true,\n },\n { provide: AXComponent, useExisting: AXCodeEditorComponent },\n ], template: `\n <div\n #host\n class=\"cm-editor\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-readonly]=\"readOnly() ? 'true' : 'false'\"\n [attr.data-placeholder]=\"placeholder() ?? null\"\n [style.height]=\"height() ?? null\"\n [style.minHeight]=\"minHeight() ?? null\"\n [style.maxHeight]=\"maxHeight() ?? null\"\n ></div>\n `, styles: [\":host{display:block;width:100%;transition:none}.cm-editor{width:100%;max-width:100%;box-sizing:border-box}.cm-editor.cm-focused{outline:none}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb2RlLWVkaXRvci9zcmMvbGliL2NvZGUtZWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUVWLFdBQVcsRUFDWCxlQUFlLEVBQ2YsUUFBUSxFQUNSLE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFrRm5ELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxnQkFBd0I7SUErRWpFO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUEvRVYsbUJBQW1CO1FBQ25CLDZCQUE2QjtRQUM3QixtREFBbUQ7UUFDbkQsYUFBUSxHQUFHLEtBQUssQ0FBZ0MsWUFBWSxvREFBQyxDQUFDO1FBQzlELDZEQUE2RDtRQUM3RCxhQUFRLEdBQUcsS0FBSyxDQUFVLEtBQUssb0RBQUMsQ0FBQztRQUNqQyx5REFBeUQ7UUFDekQsZ0JBQVcsR0FBRyxLQUFLLENBQVMsRUFBRSx1REFBQyxDQUFDO1FBQ2hDLHNEQUFzRDtRQUN0RCxnQkFBVyxHQUFHLEtBQUssQ0FBVSxJQUFJLHVEQUFDLENBQUM7UUFDbkMsc0NBQXNDO1FBQ3RDLGlCQUFZLEdBQUcsS0FBSyxDQUFVLEtBQUssd0RBQUMsQ0FB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bnRlbnQiOlsiaW1wb3J0IHsgQVhDb21wb25lbnQsIEFYVmFsdWFibGVDb21wb25lbnQsIE1YVmFsdWVDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhQbGF0Zm9ybSB9IGZyb20gJ0BhY29yZXgvY29yZS9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIFBMQVRGT1JNX0lELFxuICBhZnRlck5leHRSZW5kZXIsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8vIFR5cGUtb25seSBhbGlhc2VzIGZvciBDb2RlTWlycm9yIHR5cGVzICh0cmVlLXNoYWtlIGZyaWVuZGx5KVxudHlwZSBBWENvZGVFZGl0b3JFZGl0b3JWaWV3TGlrZSA9IGltcG9ydCgnQGNvZGVtaXJyb3IvdmlldycpLkVkaXRvclZpZXc7XG50eXBlIEFYQ29kZUVkaXRvcktleUJpbmRpbmdMaWtlID0gaW1wb3J0KCdAY29kZW1pcnJvci92aWV3JykuS2V5QmluZGluZztcbmV4cG9ydCB0eXBlIEFYQ29kZUVkaXRvckV4dGVuc2lvbkxpa2UgPSBpbXBvcnQoJ0Bjb2RlbWlycm9yL3N0YXRlJykuRXh0ZW5zaW9uO1xudHlwZSBBWENvZGVFZGl0b3JDb21wYXJ0bWVudExpa2UgPSBpbXBvcnQoJ0Bjb2RlbWlycm9yL3N0YXRlJykuQ29tcGFydG1lbnQ7XG5leHBvcnQgdHlwZSBBWENvZGVFZGl0b3JDb21wbGV0aW9uTGlrZSA9IGltcG9ydCgnQGNvZGVtaXJyb3IvYXV0b2NvbXBsZXRlJykuQ29tcGxldGlvbjtcbmV4cG9ydCB0eXBlIEFYQ29kZUVkaXRvckNvbXBsZXRpb25Tb3VyY2VMaWtlID0gaW1wb3J0KCdAY29kZW1pcnJvci9hdXRvY29tcGxldGUnKS5Db21wbGV0aW9uU291cmNlO1xudHlwZSBBWENvZGVFZGl0b3JDb21wbGV0aW9uQ29udGV4dExpa2UgPSBpbXBvcnQoJ0Bjb2RlbWlycm9yL2F1dG9jb21wbGV0ZScpLkNvbXBsZXRpb25Db250ZXh0O1xuXG50eXBlIEFYQ29kZUVkaXRvclZpZXdNb2R1bGUgPSB0eXBlb2YgaW1wb3J0KCdAY29kZW1pcnJvci92aWV3Jyk7XG50eXBlIEFYQ29kZUVkaXRvclN0YXRlTW9kdWxlID0gdHlwZW9mIGltcG9ydCgnQGNvZGVtaXJyb3Ivc3RhdGUnKTtcbnR5cGUgQVhDb2RlRWRpdG9yTGFuZ3VhZ2VNb2R1bGUgPSB0eXBlb2YgaW1wb3J0KCdAY29kZW1pcnJvci9sYW5ndWFnZScpO1xudHlwZSBBWENvZGVFZGl0b3JBdXRvY29tcGxldGVNb2R1bGUgPSB0eXBlb2YgaW1wb3J0KCdAY29kZW1pcnJvci9hdXRvY29tcGxldGUnKTtcbnR5cGUgQVhDb2RlRWRpdG9yQ29tbWFuZHNNb2R1bGUgPSB0eXBlb2YgaW1wb3J0KCdAY29kZW1pcnJvci9jb21tYW5kcycpO1xudHlwZSBBWENvZGVFZGl0b3JTZWFyY2hNb2R1bGUgPSB0eXBlb2YgaW1wb3J0KCdAY29kZW1pcnJvci9zZWFyY2gnKTtcbnR5cGUgQVhDb2RlRWRpdG9yTGludE1vZHVsZSA9IHR5cGVvZiBpbXBvcnQoJ0Bjb2RlbWlycm9yL2xpbnQnKTtcblxuLyoqXG4gKiBTdXBwb3J0ZWQgc3ludGF4IGhpZ2hsaWdodGluZyBtb2RlcyBmb3IgdGhlIGVkaXRvci5cbiAqL1xuZXhwb3J0IHR5cGUgQVhDb2RlRWRpdG9yU3VwcG9ydGVkTGFuZ3VhZ2UgPVxuICB8ICdqYXZhc2NyaXB0J1xuICB8ICdqcydcbiAgfCAndHlwZXNjcmlwdCdcbiAgfCAndHMnXG4gIHwgJ2pzb24nXG4gIHwgJ2h0bWwnXG4gIHwgJ2NzcydcbiAgfCAnc2NzcydcbiAgfCAnc2FzcydcbiAgfCAnc3FsJ1xuICB8ICd4bWwnXG4gIHwgJ21hcmtkb3duJ1xuICB8ICd0ZXh0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY29kZS1lZGl0b3InLFxuICBob3N0OiB7XG4gICAgJyhrZXlkb3duLmNvbnRyb2wucyknOiAnb25TYXZlU2hvcnRjdXQoJGV2ZW50KScsXG4gICAgY2xhc3M6ICdheC1jb2RlLWVkaXRvciBibG9jaycsXG4gIH0sXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgICAgfVxuICAgICAgLmNtLWVkaXRvciB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICB9XG4gICAgICAuY20tZWRpdG9yLmNtLWZvY3VzZWQge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogQVhWYWx1YWJsZUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYQ29kZUVkaXRvckNvbXBvbmVudCB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQVhDb2RlRWRpdG9yQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYQ29kZUVkaXRvckNvbXBvbmVudCB9LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgICNob3N0XG4gICAgICBjbGFzcz1cImNtLWVkaXRvclwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCgpID8/IG51bGxcIlxuICAgICAgW2F0dHIuYXJpYS1yZWFkb25seV09XCJyZWFkT25seSgpID8gJ3RydWUnIDogJ2ZhbHNlJ1wiXG4gICAgICBbYXR0ci5kYXRhLXBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKCkgPz8gbnVsbFwiXG4gICAgICBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodCgpID8/IG51bGxcIlxuICAgICAgW3N0eWxlLm1pbkhlaWdodF09XCJtaW5IZWlnaHQoKSA/PyBudWxsXCJcbiAgICAgIFtzdHlsZS5tYXhIZWlnaHRdPVwibWF4SGVpZ2h0KCkgPz8gbnVsbFwiXG4gICAgPjwvZGl2PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBBWENvZGVFZGl0b3JDb21wb25lbnQgZXh0ZW5kcyBNWFZhbHVlQ29tcG9uZW50PHN0cmluZz4ge1xuICAvLyBJbnB1dHMgKHNpZ25hbHMpXG4gIC8vIHZhbHVlID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIC8qKiBBY3RpdmUgbGFuZ3VhZ2UgbW9kZS4gRGVmYXVsdDogJ2phdmFzY3JpcHQnLiAqL1xuICBsYW5ndWFnZSA9IGlucHV0PEFYQ29kZUVkaXRvclN1cHBvcnRlZExhbmd1YWdlPignamF2YXNjcmlwdCcpO1xuICAvKiogV2hlbiB0cnVlLCB0aGUgZWRpdG9yIGJlY29tZXMgcmVhZG9ubHkgKG5vbi1lZGl0YWJsZSkuICovXG4gIHJlYWRPbmx5ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICAvKiogUGxhY2Vob2xkZXIgdGV4dCBzaG93biB3aGVuIHRoZSBkb2N1bWVudCBpcyBlbXB0eS4gKi9cbiAgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgLyoqIFRvZ2dsZSByZW5kZXJpbmcgb2YgbGluZSBudW1iZXJzIGluIHRoZSBndXR0ZXIuICovXG4gIGxpbmVOdW1iZXJzID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIC8qKiBTb2Z0LXdyYXAgbG9uZyBsaW5lcyB3aGVuIHRydWUuICovXG4gIGxpbmVXcmFwcGluZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgLyoqIFRhYiBzaXplIChzcGFjZXMgcGVyIGluZGVudCBsZXZlbCkuICovXG4gIHRhYlNpemUgPSBpbnB1dDxudW1iZXI+KDIpO1xuICAvKiogV2hlbiB0cnVlLCB0aGUgVGFiIGtleSBpbmRlbnRzIGluc3RlYWQgb2YgbW92aW5nIGZvY3VzLiAqL1xuICBpbmRlbnRXaXRoVGFiID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIC8qKiBGaXhlZCBoZWlnaHQgZm9yIHRoZSBlZGl0b3IgKGUuZy4sICczMjBweCcpLiAqL1xuICBoZWlnaHQgPSBpbnB1dDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgLyoqIE1pbmltdW0gaGVpZ2h0IGZvciB0aGUgZWRpdG9yLiAqL1xuICBtaW5IZWlnaHQgPSBpbnB1dDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgLyoqIE1heGltdW0gaGVpZ2h0IGZvciB0aGUgZWRpdG9yLiAqL1xuICBtYXhIZWlnaHQgPSBpbnB1dDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgLy8gVGhlbWUgZm9sbG93cyBwbGF0Zm9ybSB0aGVtZSBtb2RlOyBubyBpbnB1dFxuICAvKiogQWRkaXRpb25hbCBDb2RlTWlycm9yIGV4dGVuc2lvbnMgdG8gYXBwbHkuIFJlY29uZmlndXJlcyBhdCBydW50aW1lLiAqL1xuICBleHRlbnNpb25zID0gaW5wdXQ8UmVhZG9ubHlBcnJheTxBWENvZGVFZGl0b3JFeHRlbnNpb25MaWtlPj4oW10pO1xuICAvKiogQVJJQSBsYWJlbCBmb3IgYWNjZXNzaWJpbGl0eS4gKi9cbiAgYXJpYUxhYmVsID0gaW5wdXQ8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIC8qKiBGb2N1cyB0aGUgZWRpdG9yIGFmdGVyIGZpcnN0IHJlbmRlci4gKi9cbiAgZm9jdXNPblJlYWR5ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICAvKiogSWYgdHJ1ZSwgZm9ybWF0IHRoZSBkb2N1bWVudCB2aWEgUHJldHRpZXIgYmVmb3JlIGVtaXR0aW5nIHNhdmUuICovXG4gIGZvcm1hdE9uU2F2ZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAvKipcbiAgICogQ3VzdG9tIGF1dG9jb21wbGV0aW9uIG9wdGlvbnM6IGVpdGhlciBhIHN0YXRpYyBhcnJheSBvZiBDb21wbGV0aW9uIGl0ZW1zXG4gICAqIG9yIGEgQ29kZU1pcnJvciBDb21wbGV0aW9uU291cmNlIGZ1bmN0aW9uLlxuICAgKi9cbiAgY3VzdG9tQ29tcGxldGlvbnMgPSBpbnB1dDxSZWFkb25seUFycmF5PEFYQ29kZUVkaXRvckNvbXBsZXRpb25MaWtlPiB8IEFYQ29kZUVkaXRvckNvbXBsZXRpb25Tb3VyY2VMaWtlIHwgbnVsbD4obnVsbCk7XG5cbiAgLy8gT3V0cHV0cyAoc2lnbmFscylcbiAgLy8gdmFsdWVDaGFuZ2UgPSBvdXRwdXQ8c3RyaW5nPigpO1xuICAvKiogRW1pdHMgd2hlbiB0aGUgZWRpdG9yIGlzIGZ1bGx5IGluaXRpYWxpemVkIGFuZCByZWFkeS4gKi9cbiAgcmVhZHkgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgLyoqIEVtaXRzIHdoZW4gdGhlIHVzZXIgdHJpZ2dlcnMgc2F2ZSAoQ3RybC9DbWQrUykuIFBheWxvYWQgaXMgdGhlIGN1cnJlbnQgdGV4dC4gKi9cbiAgc2F2ZSA9IG91dHB1dDxzdHJpbmc+KCk7XG5cbiAgLy8gVmlldyBjb250YWluZXJcbiAgaG9zdCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj4oJ2hvc3QnKTtcblxuICAvLyBSdW50aW1lIHN0YXRlXG4gIHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIHByaXZhdGUgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJpdmF0ZSBwbGF0Zm9ybVNlcnZpY2UgPSBpbmplY3QoQVhQbGF0Zm9ybSk7XG5cbiAgcHJpdmF0ZSBlZGl0b3JWaWV3U2lnID0gc2lnbmFsPEFYQ29kZUVkaXRvckVkaXRvclZpZXdMaWtlIHwgbnVsbD4obnVsbCk7XG5cbiAgLy8gQ29tcGFydG1lbnRzIHRvIHJlY29uZmlndXJlIGVkaXRvciB3aXRob3V0IHJlY3JlYXRpbmcgaXRcbiAgcHJpdmF0ZSBsYW5ndWFnZUNvbXBhcnRtZW50OiBBWENvZGVFZGl0b3JDb21wYXJ0bWVudExpa2UgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSByZWFkT25seUNvbXBhcnRtZW50OiBBWENvZGVFZGl0b3JDb21wYXJ0bWVudExpa2UgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSB0aGVtZUNvbXBhcnRtZW50OiBBWENvZGVFZGl0b3JDb21wYXJ0bWVudExpa2UgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBwbGFjZWhvbGRlckNvbXBhcnRtZW50OiBBWENvZGVFZGl0b3JDb21wYXJ0bWVudExpa2UgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSB3cmFwcGluZ0NvbXBhcnRtZW50OiBBWENvZGVFZGl0b3JDb21wYXJ0bWVudExpa2UgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBrZXltYXBFeHRyYXNDb21wYXJ0bWVudDogQVhDb2RlRWRpdG9yQ29tcGFydG1lbnRMaWtlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgdGFiU2l6ZUNvbXBhcnRtZW50OiBBWENvZGVFZGl0b3JDb21wYXJ0bWVudExpa2UgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBsaW5lTnVtYmVyc0NvbXBhcnRtZW50OiBBWENvZGVFZGl0b3JDb21wYXJ0bWVudExpa2UgfCBudWxsID0gbnVsbDtcblxuICAvLyBDYWNoZWQgQ29kZU1pcnJvciBtb2R1bGVzIGFmdGVyIGluaXRpYWxpemF0aW9uXG4gIHByaXZhdGUgY206IHtcbiAgICB2aWV3OiBBWENvZGVFZGl0b3JWaWV3TW9kdWxlIHwgbnVsbDtcbiAgICBzdGF0ZTogQVhDb2RlRWRpdG9yU3RhdGVNb2R1bGUgfCBudWxsO1xuICAgIGxhbmd1YWdlOiBBWENvZGVFZGl0b3JMYW5ndWFnZU1vZHVsZSB8IG51bGw7XG4gICAgYXV0b2NvbXBsZXRlOiBBWENvZGVFZGl0b3JBdXRvY29tcGxldGVNb2R1bGUgfCBudWxsO1xuICAgIGNvbW1hbmRzOiBBWENvZGVFZGl0b3JDb21tYW5kc01vZHVsZSB8IG51bGw7XG4gICAgc2VhcmNoOiBBWENvZGVFZGl0b3JTZWFyY2hNb2R1bGUgfCBudWxsO1xuICAgIGxpbnQ6IEFYQ29kZUVkaXRvckxpbnRNb2R1bGUgfCBudWxsO1xuICB9ID0geyB2aWV3OiBudWxsLCBzdGF0ZTogbnVsbCwgbGFuZ3VhZ2U6IG51bGwsIGF1dG9jb21wbGV0ZTogbnVsbCwgY29tbWFuZHM6IG51bGwsIHNlYXJjaDogbnVsbCwgbGludDogbnVsbCB9O1xuXG4gIHByaXZhdGUgaXNCcm93c2VyID0gY29tcHV0ZWQoKCkgPT4gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmlzQnJvd3NlcigpKSByZXR1cm47XG4gICAgICB0aGlzLmluaXRpYWxpemVFZGl0b3IoKTtcbiAgICB9KTtcblxuICAgIC8vIEtlZXAgbW9kZWwgaW4gc3luYyB3aGVuIGV4dGVybmFsIHZhbHVlIGNoYW5nZXNcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgdmlldyA9IHRoaXMuZWRpdG9yVmlld1NpZygpO1xuICAgICAgaWYgKCF2aWV3KSByZXR1cm47XG4gICAgICBjb25zdCBuZXdEb2MgPSB0aGlzLnZhbHVlID8/ICcnO1xuICAgICAgY29uc3QgY3VycmVudCA9IHZpZXcuc3RhdGUuZG9jLnRvU3RyaW5nKCk7XG4gICAgICBpZiAobmV3RG9jICE9PSBjdXJyZW50KSB7XG4gICAgICAgIHZpZXcuZGlzcGF0Y2goe1xuICAgICAgICAgIGNoYW5nZXM6IHsgZnJvbTogMCwgdG86IHZpZXcuc3RhdGUuZG9jLmxlbmd0aCwgaW5zZXJ0OiBuZXdEb2MgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBSZWFjdCB0byBkeW5hbWljIGNvbmZpZ3VyYXRpb24gY2hhbmdlc1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB2aWV3ID0gdGhpcy5lZGl0b3JWaWV3U2lnKCk7XG4gICAgICBpZiAoIXZpZXcgfHwgIXRoaXMubGFuZ3VhZ2VDb21wYXJ0bWVudCkgcmV0dXJuO1xuICAgICAgY29uc3QgbGFuZyA9IHRoaXMubGFuZ3VhZ2UoKTtcbiAgICAgIHRoaXMucmVzb2x2ZUxhbmd1YWdlRXh0ZW5zaW9uKGxhbmcpLnRoZW4oKGV4dCkgPT4ge1xuICAgICAgICBpZiAoIXZpZXcgfHwgIXRoaXMubGFuZ3VhZ2VDb21wYXJ0bWVudCkgcmV0dXJuO1xuICAgICAgICB2aWV3LmRpc3BhdGNoKHsgZWZmZWN0czogdGhpcy5sYW5ndWFnZUNvbXBhcnRtZW50LnJlY29uZmlndXJlKGV4dCkgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB2aWV3ID0gdGhpcy5lZGl0b3JWaWV3U2lnKCk7XG4gICAgICBpZiAoIXZpZXcgfHwgIXRoaXMucmVhZE9ubHlDb21wYXJ0bWVudCkgcmV0dXJuO1xuICAgICAgY29uc3QgZWRpdGFibGUgPSAhdGhpcy5yZWFkT25seSgpO1xuICAgICAgaW1wb3J0KCdAY29kZW1pcnJvci92aWV3JykudGhlbigoeyBFZGl0b3JWaWV3IH0pID0+IHtcbiAgICAgICAgaWYgKCF2aWV3IHx8ICF0aGlzLnJlYWRPbmx5Q29tcGFydG1lbnQpIHJldHVybjtcbiAgICAgICAgdmlldy5kaXNwYXRjaCh7IGVmZmVjdHM6IHRoaXMucmVhZE9ubHlDb21wYXJ0bWVudC5yZWNvbmZpZ3VyZShFZGl0b3JWaWV3LmVkaXRhYmxlLm9mKGVkaXRhYmxlKSkgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB2aWV3ID0gdGhpcy5lZGl0b3JWaWV3U2lnKCk7XG4gICAgICAvLyBFc3RhYmxpc2ggcmVhY3RpdmUgZGVwZW5kZW5jeSBvbiBwbGF0Zm9ybSB0aGVtZVxuICAgICAgLy8gQ3JlYXRlIGEgcmVhY3RpdmUgZGVwZW5kZW5jeSB0byBwbGF0Zm9ybSB0aGVtZVxuICAgICAgdm9pZCB0aGlzLnBsYXRmb3JtU2VydmljZS50aGVtZU1vZGUoKTtcbiAgICAgIGlmICghdmlldyB8fCAhdGhpcy50aGVtZUNvbXBhcnRtZW50KSByZXR1cm47XG4gICAgICB0aGlzLnJlc29sdmVUaGVtZUV4dGVuc2lvbigpLnRoZW4oKHRoZW1lRXh0KSA9PiB7XG4gICAgICAgIGlmICghdmlldyB8fCAhdGhpcy50aGVtZUNvbXBhcnRtZW50KSByZXR1cm47XG4gICAgICAgIHZpZXcuZGlzcGF0Y2goeyBlZmZlY3RzOiB0aGlzLnRoZW1lQ29tcGFydG1lbnQucmVjb25maWd1cmUodGhlbWVFeHQpIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgdGhpcy5wbGFjZWhvbGRlcigpO1xuICAgICAgY29uc3QgdmlldyA9IHRoaXMuZWRpdG9yVmlld1NpZygpO1xuICAgICAgaWYgKCF2aWV3IHx8ICF0aGlzLnBsYWNlaG9sZGVyQ29tcGFydG1lbnQpIHJldHVybjtcbiAgICAgIGltcG9ydCgnQGNvZGVtaXJyb3IvdmlldycpLnRoZW4oKHsgcGxhY2Vob2xkZXIgfSkgPT4ge1xuICAgICAgICBpZiAoIXZpZXcgfHwgIXRoaXMucGxhY2Vob2xkZXJDb21wYXJ0bWVudCkgcmV0dXJuO1xuICAgICAgICB2aWV3LmRpc3BhdGNoKHsgZWZmZWN0czogdGhpcy5wbGFjZWhvbGRlckNvbXBhcnRtZW50LnJlY29uZmlndXJlKHBsYWNlaG9sZGVyKHRoaXMucGxhY2Vob2xkZXIoKSA/PyAnJykpIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgdmlldyA9IHRoaXMuZWRpdG9yVmlld1NpZygpO1xuICAgICAgaWYgKCF2aWV3IHx8ICF0aGlzLndyYXBwaW5nQ29tcGFydG1lbnQpIHJldHVybjtcbiAgICAgIGNvbnN0IEVkaXRvclZpZXcgPSB0aGlzLmNtLnZpZXc/LkVkaXRvclZpZXc7XG4gICAgICBpZiAoIUVkaXRvclZpZXcpIHJldHVybjtcbiAgICAgIGNvbnN0IG5leHRFeHQgPSB0aGlzLmxpbmVXcmFwcGluZygpID8gRWRpdG9yVmlldy5saW5lV3JhcHBpbmcgOiBbXTtcbiAgICAgIHRoaXMucmVjb25maWd1cmUodGhpcy53cmFwcGluZ0NvbXBhcnRtZW50LCBuZXh0RXh0KTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB2aWV3ID0gdGhpcy5lZGl0b3JWaWV3U2lnKCk7XG4gICAgICBpZiAoIXZpZXcgfHwgIXRoaXMudGFiU2l6ZUNvbXBhcnRtZW50KSByZXR1cm47XG4gICAgICBjb25zdCBFZGl0b3JTdGF0ZSA9IHRoaXMuY20uc3RhdGU/LkVkaXRvclN0YXRlO1xuICAgICAgaWYgKCFFZGl0b3JTdGF0ZSkgcmV0dXJuO1xuICAgICAgdGhpcy5yZWNvbmZpZ3VyZSh0aGlzLnRhYlNpemVDb21wYXJ0bWVudCwgRWRpdG9yU3RhdGUudGFiU2l6ZS5vZih0aGlzLnRhYlNpemUoKSA/PyAyKSk7XG4gICAgfSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgdmlldyA9IHRoaXMuZWRpdG9yVmlld1NpZygpO1xuICAgICAgaWYgKCF2aWV3IHx8ICF0aGlzLmtleW1hcEV4dHJhc0NvbXBhcnRtZW50KSByZXR1cm47XG4gICAgICBjb25zdCBrZXltYXAgPSB0aGlzLmNtLnZpZXc/LmtleW1hcDtcbiAgICAgIGNvbnN0IGNvbW1hbmRzID0gdGhpcy5jbS5jb21tYW5kcztcbiAgICAgIGlmICgha2V5bWFwIHx8ICFjb21tYW5kcykgcmV0dXJuO1xuICAgICAgdGhpcy5yZWNvbmZpZ3VyZSh0aGlzLmtleW1hcEV4dHJhc0NvbXBhcnRtZW50LCBrZXltYXAub2YodGhpcy5pbmRlbnRXaXRoVGFiKCkgPyBbY29tbWFuZHMuaW5kZW50V2l0aFRhYl0gOiBbXSkpO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHZpZXcgPSB0aGlzLmVkaXRvclZpZXdTaWcoKTtcbiAgICAgIGlmICghdmlldyB8fCAhdGhpcy5saW5lTnVtYmVyc0NvbXBhcnRtZW50KSByZXR1cm47XG4gICAgICBjb25zdCBsaW5lTnVtYmVycyA9IHRoaXMuY20udmlldz8ubGluZU51bWJlcnM7XG4gICAgICBpZiAoIWxpbmVOdW1iZXJzKSByZXR1cm47XG4gICAgICB0aGlzLnJlY29uZmlndXJlKHRoaXMubGluZU51bWJlcnNDb21wYXJ0bWVudCwgdGhpcy5saW5lTnVtYmVycygpID8gbGluZU51bWJlcnMoKSA6IFtdKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaW5pdGlhbGl6ZUVkaXRvcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBob3N0RWwgPSB0aGlzLmhvc3QoKT8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoIWhvc3RFbCkgcmV0dXJuO1xuXG4gICAgYXdhaXQgdGhpcy5sb2FkQ29kZU1pcnJvck1vZHVsZXMoKTtcblxuICAgIHRoaXMuY3JlYXRlQ29tcGFydG1lbnRzKCk7XG5cbiAgICBjb25zdCBrZXltYXBzID0gdGhpcy5idWlsZEtleW1hcHMoKTtcblxuICAgIGNvbnN0IHZpZXdNb2QgPSB0aGlzLmNtLnZpZXc7XG4gICAgY29uc3Qgc3RhdGVNb2QgPSB0aGlzLmNtLnN0YXRlO1xuICAgIGNvbnN0IGxhbmd1YWdlTW9kID0gdGhpcy5jbS5sYW5ndWFnZTtcbiAgICBjb25zdCBhdXRvTW9kID0gdGhpcy5jbS5hdXRvY29tcGxldGU7XG4gICAgY29uc3QgY29tbWFuZHNNb2QgPSB0aGlzLmNtLmNvbW1hbmRzO1xuICAgIGNvbnN0IHNlYXJjaE1vZCA9IHRoaXMuY20uc2VhcmNoO1xuICAgIGNvbnN0IGxpbnRNb2QgPSB0aGlzLmNtLmxpbnQ7XG4gICAgaWYgKCF2aWV3TW9kIHx8ICFzdGF0ZU1vZCB8fCAhbGFuZ3VhZ2VNb2QgfHwgIWF1dG9Nb2QgfHwgIWNvbW1hbmRzTW9kIHx8ICFzZWFyY2hNb2QgfHwgIWxpbnRNb2QpIHJldHVybjtcbiAgICBjb25zdCBsYW5ndWFnZUV4dCA9IGF3YWl0IHRoaXMucmVzb2x2ZUxhbmd1YWdlRXh0ZW5zaW9uKHRoaXMubGFuZ3VhZ2UoKSk7XG4gICAgY29uc3QgdGhlbWVFeHQgPSBhd2FpdCB0aGlzLnJlc29sdmVUaGVtZUV4dGVuc2lvbigpO1xuICAgIGNvbnN0IHBsYWNlaG9sZGVyRXh0ID0gdmlld01vZC5wbGFjZWhvbGRlcih0aGlzLnBsYWNlaG9sZGVyKCkgPz8gJycpO1xuICAgIGNvbnN0IGVkaXRhYmxlRXh0ID0gdmlld01vZC5FZGl0b3JWaWV3LmVkaXRhYmxlLm9mKCF0aGlzLnJlYWRPbmx5KCkpO1xuICAgIGNvbnN0IHdyYXBwaW5nRXh0ID0gdGhpcy5saW5lV3JhcHBpbmcoKSA/IHZpZXdNb2QuRWRpdG9yVmlldy5saW5lV3JhcHBpbmcgOiBbXTtcbiAgICBjb25zdCB0YWJTaXplRXh0ID0gc3RhdGVNb2QuRWRpdG9yU3RhdGUudGFiU2l6ZS5vZih0aGlzLnRhYlNpemUoKSA/PyAyKTtcbiAgICBjb25zdCBsaW5lTnVtYmVyc0V4dCA9IHRoaXMubGluZU51bWJlcnMoKSA/IHZpZXdNb2QubGluZU51bWJlcnMoKSA6IFtdO1xuXG4gICAgY29uc3QgYXV0b0NvbXBsZXRlRXh0ID0gYXV0b01vZC5hdXRvY29tcGxldGlvbih7XG4gICAgICBvdmVycmlkZTogdGhpcy5idWlsZEN1c3RvbUNvbXBsZXRpb25Tb3VyY2VzKCksXG4gICAgfSk7XG5cbiAgICBjb25zdCBiYXNlRXh0ZW5zaW9uczogUmVhZG9ubHlBcnJheTxBWENvZGVFZGl0b3JFeHRlbnNpb25MaWtlPiA9IFtcbiAgICAgIHRoaXMubGluZU51bWJlcnNDb21wYXJ0bWVudC5vZihsaW5lTnVtYmVyc0V4dCksXG4gICAgICB2aWV3TW9kLmhpZ2hsaWdodEFjdGl2ZUxpbmUoKSxcbiAgICAgIHZpZXdNb2QuaGlnaGxpZ2h0QWN0aXZlTGluZUd1dHRlcigpLFxuICAgICAgdmlld01vZC5kcmF3U2VsZWN0aW9uKCksXG4gICAgICB2aWV3TW9kLmRyb3BDdXJzb3IoKSxcbiAgICAgIHZpZXdNb2QucmVjdGFuZ3VsYXJTZWxlY3Rpb24oKSxcbiAgICAgIHZpZXdNb2QuY3Jvc3NoYWlyQ3Vyc29yKCksXG4gICAgICB2aWV3TW9kLmhpZ2hsaWdodFNwZWNpYWxDaGFycygpLFxuICAgICAgbGFuZ3VhZ2VNb2Quc3ludGF4SGlnaGxpZ2h0aW5nKGxhbmd1YWdlTW9kLmRlZmF1bHRIaWdobGlnaHRTdHlsZSwgeyBmYWxsYmFjazogdHJ1ZSB9KSxcbiAgICAgIGxhbmd1YWdlTW9kLmJyYWNrZXRNYXRjaGluZygpLFxuICAgICAgbGFuZ3VhZ2VNb2QuZm9sZEd1dHRlcigpLFxuICAgICAgY29tbWFuZHNNb2QuaGlzdG9yeSgpLFxuICAgICAgc2VhcmNoTW9kLmhpZ2hsaWdodFNlbGVjdGlvbk1hdGNoZXMoKSxcbiAgICAgIHZpZXdNb2Qua2V5bWFwLm9mKGtleW1hcHMpLFxuICAgICAgYXV0b0NvbXBsZXRlRXh0LFxuICAgICAgdGhpcy5sYW5ndWFnZUNvbXBhcnRtZW50Lm9mKGxhbmd1YWdlRXh0KSxcbiAgICAgIHRoaXMucmVhZE9ubHlDb21wYXJ0bWVudC5vZihlZGl0YWJsZUV4dCksXG4gICAgICB0aGlzLnRoZW1lQ29tcGFydG1lbnQub2YodGhlbWVFeHQpLFxuICAgICAgdGhpcy5wbGFjZWhvbGRlckNvbXBhcnRtZW50Lm9mKHBsYWNlaG9sZGVyRXh0KSxcbiAgICAgIHRoaXMud3JhcHBpbmdDb21wYXJ0bWVudC5vZih3cmFwcGluZ0V4dCksXG4gICAgICB0aGlzLnRhYlNpemVDb21wYXJ0bWVudC5vZih0YWJTaXplRXh0KSxcbiAgICAgIHRoaXMua2V5bWFwRXh0cmFzQ29tcGFydG1lbnQub2Yodmlld01vZC5rZXltYXAub2YodGhpcy5pbmRlbnRXaXRoVGFiKCkgPyBbY29tbWFuZHNNb2QuaW5kZW50V2l0aFRhYl0gOiBbXSkpLFxuICAgICAgLi4udGhpcy5leHRlbnNpb25zKCksXG4gICAgXTtcblxuICAgIGNvbnN0IHVwZGF0ZUxpc3RlbmVyID0gdmlld01vZC5FZGl0b3JWaWV3LnVwZGF0ZUxpc3RlbmVyLm9mKCh2dSkgPT4ge1xuICAgICAgaWYgKHZ1LmRvY0NoYW5nZWQpIHtcbiAgICAgICAgY29uc3QgdGV4dCA9IHZ1LnN0YXRlLmRvYy50b1N0cmluZygpO1xuICAgICAgICAvLyB0aGlzLndyaXRlVmFsdWUodGV4dCk7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0ZXh0O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3RhdGUgPSBzdGF0ZU1vZC5FZGl0b3JTdGF0ZS5jcmVhdGUoe1xuICAgICAgZG9jOiB0aGlzLnZhbHVlID8/ICcnLFxuICAgICAgZXh0ZW5zaW9uczogWy4uLmJhc2VFeHRlbnNpb25zLCB1cGRhdGVMaXN0ZW5lcl0sXG4gICAgfSk7XG5cbiAgICBjb25zdCB2aWV3ID0gbmV3IHZpZXdNb2QuRWRpdG9yVmlldyh7IHN0YXRlLCBwYXJlbnQ6IGhvc3RFbCB9KTtcblxuICAgIC8vIFVwZGF0ZSBsaXN0ZW5lciBmb3IgZXh0ZXJuYWwgY2hhbmdlcyAoc2VsZWN0aW9uLCB2aWV3cG9ydCwgZXRjLikgaWYgbmVlZGVkIGxhdGVyXG4gICAgdmlldy5kaXNwYXRjaCh7IGVmZmVjdHM6IFtdIH0pO1xuXG4gICAgdGhpcy5lZGl0b3JWaWV3U2lnLnNldCh2aWV3KTtcblxuICAgIHRoaXMuZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgdmlldy5kZXN0cm95KCk7XG4gICAgICB0aGlzLmVkaXRvclZpZXdTaWcuc2V0KG51bGwpO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuZm9jdXNPblJlYWR5KCkpIHtcbiAgICAgIHZpZXcuZm9jdXMoKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlYWR5LmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb25maWd1cmUoY29tcDogQVhDb2RlRWRpdG9yQ29tcGFydG1lbnRMaWtlIHwgbnVsbCwgZXh0OiBBWENvZGVFZGl0b3JFeHRlbnNpb25MaWtlKTogdm9pZCB7XG4gICAgY29uc3QgdmlldyA9IHRoaXMuZWRpdG9yVmlld1NpZygpO1xuICAgIGlmICghdmlldyB8fCAhY29tcCkgcmV0dXJuO1xuICAgIHZpZXcuZGlzcGF0Y2goeyBlZmZlY3RzOiBjb21wLnJlY29uZmlndXJlKGV4dCkgfSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBDdHJsL0NtZCtTIG9uIHRoZSBob3N0LiBJZiBmb3JtYXRPblNhdmUgaXMgZW5hYmxlZCwgYXR0ZW1wdHNcbiAgICogdG8gZm9ybWF0IHRoZSBkb2N1bWVudCBmaXJzdCwgdGhlbiBlbWl0cyB0aGUgc2F2ZWQgdGV4dC5cbiAgICovXG4gIGFzeW5jIG9uU2F2ZVNob3J0Y3V0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCB2aWV3ID0gdGhpcy5lZGl0b3JWaWV3U2lnKCk7XG4gICAgY29uc3QgY3VycmVudCA9IHZpZXc/LnN0YXRlLmRvYy50b1N0cmluZygpID8/IHRoaXMudmFsdWUgPz8gJyc7XG4gICAgY29uc3QgcGF5bG9hZCA9IGN1cnJlbnQ7XG4gICAgaWYgKHRoaXMuZm9ybWF0T25TYXZlKCkpIHtcbiAgICAgIGF3YWl0IHRoaXMuZm9ybWF0KHRydWUpO1xuICAgIH1cbiAgICB0aGlzLnNhdmUuZW1pdChwYXlsb2FkKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZENvZGVNaXJyb3JNb2R1bGVzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IFt2aWV3TW9kLCBzdGF0ZU1vZCwgbGFuZ01vZCwgYXV0b01vZCwgY21kTW9kLCBzZWFyY2hNb2QsIGxpbnRNb2RdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgaW1wb3J0KCdAY29kZW1pcnJvci92aWV3JyksXG4gICAgICBpbXBvcnQoJ0Bjb2RlbWlycm9yL3N0YXRlJyksXG4gICAgICBpbXBvcnQoJ0Bjb2RlbWlycm9yL2xhbmd1YWdlJyksXG4gICAgICBpbXBvcnQoJ0Bjb2RlbWlycm9yL2F1dG9jb21wbGV0ZScpLFxuICAgICAgaW1wb3J0KCdAY29kZW1pcnJvci9jb21tYW5kcycpLFxuICAgICAgaW1wb3J0KCdAY29kZW1pcnJvci9zZWFyY2gnKSxcbiAgICAgIGltcG9ydCgnQGNvZGVtaXJyb3IvbGludCcpLFxuICAgIF0pO1xuICAgIHRoaXMuY20udmlldyA9IHZpZXdNb2Q7XG4gICAgdGhpcy5jbS5zdGF0ZSA9IHN0YXRlTW9kO1xuICAgIHRoaXMuY20ubGFuZ3VhZ2UgPSBsYW5nTW9kO1xuICAgIHRoaXMuY20uYXV0b2NvbXBsZXRlID0gYXV0b01vZDtcbiAgICB0aGlzLmNtLmNvbW1hbmRzID0gY21kTW9kO1xuICAgIHRoaXMuY20uc2VhcmNoID0gc2VhcmNoTW9kO1xuICAgIHRoaXMuY20ubGludCA9IGxpbnRNb2Q7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNvbXBhcnRtZW50cygpOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZU1vZCA9IHRoaXMuY20uc3RhdGU7XG4gICAgaWYgKCFzdGF0ZU1vZCkgcmV0dXJuO1xuICAgIHRoaXMubGFuZ3VhZ2VDb21wYXJ0bWVudCA9IG5ldyBzdGF0ZU1vZC5Db21wYXJ0bWVudCgpO1xuICAgIHRoaXMucmVhZE9ubHlDb21wYXJ0bWVudCA9IG5ldyBzdGF0ZU1vZC5Db21wYXJ0bWVudCgpO1xuICAgIHRoaXMudGhlbWVDb21wYXJ0bWVudCA9IG5ldyBzdGF0ZU1vZC5Db21wYXJ0bWVudCgpO1xuICAgIHRoaXMucGxhY2Vob2xkZXJDb21wYXJ0bWVudCA9IG5ldyBzdGF0ZU1vZC5Db21wYXJ0bWVudCgpO1xuICAgIHRoaXMud3JhcHBpbmdDb21wYXJ0bWVudCA9IG5ldyBzdGF0ZU1vZC5Db21wYXJ0bWVudCgpO1xuICAgIHRoaXMudGFiU2l6ZUNvbXBhcnRtZW50ID0gbmV3IHN0YXRlTW9kLkNvbXBhcnRtZW50KCk7XG4gICAgdGhpcy5rZXltYXBFeHRyYXNDb21wYXJ0bWVudCA9IG5ldyBzdGF0ZU1vZC5Db21wYXJ0bWVudCgpO1xuICAgIHRoaXMubGluZU51bWJlcnNDb21wYXJ0bWVudCA9IG5ldyBzdGF0ZU1vZC5Db21wYXJ0bWVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEtleW1hcHMoKTogUmVhZG9ubHlBcnJheTxBWENvZGVFZGl0b3JLZXlCaW5kaW5nTGlrZT4ge1xuICAgIGNvbnN0IGNtZE1vZCA9IHRoaXMuY20uY29tbWFuZHM7XG4gICAgY29uc3Qgc2VhcmNoTW9kID0gdGhpcy5jbS5zZWFyY2g7XG4gICAgY29uc3QgYXV0b01vZCA9IHRoaXMuY20uYXV0b2NvbXBsZXRlO1xuICAgIGNvbnN0IGxpbnRNb2QgPSB0aGlzLmNtLmxpbnQ7XG4gICAgaWYgKCFjbWRNb2QgfHwgIXNlYXJjaE1vZCB8fCAhYXV0b01vZCB8fCAhbGludE1vZCkgcmV0dXJuIFtdO1xuICAgIHJldHVybiBbXG4gICAgICAuLi5jbWRNb2QuZGVmYXVsdEtleW1hcCxcbiAgICAgIC4uLmNtZE1vZC5oaXN0b3J5S2V5bWFwLFxuICAgICAgLi4uc2VhcmNoTW9kLnNlYXJjaEtleW1hcCxcbiAgICAgIC4uLmF1dG9Nb2QuY29tcGxldGlvbktleW1hcCxcbiAgICAgIC4uLmxpbnRNb2QubGludEtleW1hcCxcbiAgICBdO1xuICB9XG5cbiAgLy8gQXR0ZW1wdHMgdG8gZm9ybWF0IGNvZGUgdXNpbmcgUHJldHRpZXIgKGJyb3dzZXItb25seSkuIFJldHVybnMgZm9ybWF0dGVkIHRleHQgb3IgbnVsbCBvbiBmYWlsdXJlL3Vuc3VwcG9ydGVkLlxuICBwcml2YXRlIGFzeW5jIHRyeUZvcm1hdFdpdGhQcmV0dGllcih0ZXh0OiBzdHJpbmcsIGxhbmc6IEFYQ29kZUVkaXRvclN1cHBvcnRlZExhbmd1YWdlKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgaWYgKCF0aGlzLmlzQnJvd3NlcigpKSByZXR1cm4gbnVsbDtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcHJldHRpZXIgPSBhd2FpdCBpbXBvcnQoJ3ByZXR0aWVyL3N0YW5kYWxvbmUnKTtcbiAgICAgIGxldCBwYXJzZXI6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgICAgY29uc3QgcGx1Z2luczogYW55W10gPSBbXTtcblxuICAgICAgc3dpdGNoIChsYW5nKSB7XG4gICAgICAgIGNhc2UgJ2phdmFzY3JpcHQnOlxuICAgICAgICBjYXNlICdqcyc6IHtcbiAgICAgICAgICBjb25zdCBbYmFiZWwsIGVzdHJlZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICBpbXBvcnQoJ3ByZXR0aWVyL3BsdWdpbnMvYmFiZWwnKSxcbiAgICAgICAgICAgIGltcG9ydCgncHJldHRpZXIvcGx1Z2lucy9lc3RyZWUnKSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgICBwbHVnaW5zLnB1c2goYmFiZWwsIGVzdHJlZSk7XG4gICAgICAgICAgcGFyc2VyID0gJ2JhYmVsJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICd0eXBlc2NyaXB0JzpcbiAgICAgICAgY2FzZSAndHMnOiB7XG4gICAgICAgICAgY29uc3QgW3R5cGVzY3JpcHQsIGVzdHJlZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICBpbXBvcnQoJ3ByZXR0aWVyL3BsdWdpbnMvdHlwZXNjcmlwdCcpLFxuICAgICAgICAgICAgaW1wb3J0KCdwcmV0dGllci9wbHVnaW5zL2VzdHJlZScpLFxuICAgICAgICAgIF0pO1xuICAgICAgICAgIHBsdWdpbnMucHVzaCh0eXBlc2NyaXB0LCBlc3RyZWUpO1xuICAgICAgICAgIHBhcnNlciA9ICd0eXBlc2NyaXB0JztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdqc29uJzoge1xuICAgICAgICAgIGNvbnN0IFtiYWJlbCwgZXN0cmVlXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgIGltcG9ydCgncHJldHRpZXIvcGx1Z2lucy9iYWJlbCcpLFxuICAgICAgICAgICAgaW1wb3J0KCdwcmV0dGllci9wbHVnaW5zL2VzdHJlZScpLFxuICAgICAgICAgIF0pO1xuICAgICAgICAgIHBsdWdpbnMucHVzaChiYWJlbCwgZXN0cmVlKTtcbiAgICAgICAgICBwYXJzZXIgPSAnanNvbic7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnaHRtbCc6IHtcbiAgICAgICAgICBjb25zdCBodG1sID0gYXdhaXQgaW1wb3J0KCdwcmV0dGllci9wbHVnaW5zL2h0bWwnKTtcbiAgICAgICAgICBwbHVnaW5zLnB1c2goaHRtbCk7XG4gICAgICAgICAgcGFyc2VyID0gJ2h0bWwnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2Nzcyc6IHtcbiAgICAgICAgICBjb25zdCBwb3N0Y3NzID0gYXdhaXQgaW1wb3J0KCdwcmV0dGllci9wbHVnaW5zL3Bvc3Rjc3MnKTtcbiAgICAgICAgICBwbHVnaW5zLnB1c2gocG9zdGNzcyk7XG4gICAgICAgICAgcGFyc2VyID0gJ2Nzcyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnbWFya2Rvd24nOiB7XG4gICAgICAgICAgY29uc3QgbWFya2Rvd24gPSBhd2FpdCBpbXBvcnQoJ3ByZXR0aWVyL3BsdWdpbnMvbWFya2Rvd24nKTtcbiAgICAgICAgICBwbHVnaW5zLnB1c2gobWFya2Rvd24pO1xuICAgICAgICAgIHBhcnNlciA9ICdtYXJrZG93bic7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKCFwYXJzZXIpIHJldHVybiBudWxsO1xuICAgICAgY29uc3QgZm9ybWF0dGVkID0gYXdhaXQgcHJldHRpZXIuZm9ybWF0KHRleHQsIHtcbiAgICAgICAgcGFyc2VyLFxuICAgICAgICBwbHVnaW5zLFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgcmV0dXJuIGZvcm1hdHRlZDtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzb2x2ZUxhbmd1YWdlRXh0ZW5zaW9uKGxhbmc6IEFYQ29kZUVkaXRvclN1cHBvcnRlZExhbmd1YWdlKTogUHJvbWlzZTxBWENvZGVFZGl0b3JFeHRlbnNpb25MaWtlPiB7XG4gICAgc3dpdGNoIChsYW5nKSB7XG4gICAgICBjYXNlICdqYXZhc2NyaXB0JzpcbiAgICAgIGNhc2UgJ2pzJzoge1xuICAgICAgICBjb25zdCBtID0gYXdhaXQgaW1wb3J0KCdAY29kZW1pcnJvci9sYW5nLWphdmFzY3JpcHQnKTtcbiAgICAgICAgcmV0dXJuIG0uamF2YXNjcmlwdCgpO1xuICAgICAgfVxuICAgICAgY2FzZSAndHlwZXNjcmlwdCc6XG4gICAgICBjYXNlICd0cyc6IHtcbiAgICAgICAgY29uc3QgbSA9IGF3YWl0IGltcG9ydCgnQGNvZGVtaXJyb3IvbGFuZy1qYXZhc2NyaXB0Jyk7XG4gICAgICAgIHJldHVybiBtLmphdmFzY3JpcHQoeyB0eXBlc2NyaXB0OiB0cnVlIH0pO1xuICAgICAgfVxuICAgICAgY2FzZSAnanNvbic6IHtcbiAgICAgICAgY29uc3QgbSA9IGF3YWl0IGltcG9ydCgnQGNvZGVtaXJyb3IvbGFuZy1qc29uJyk7XG4gICAgICAgIHJldHVybiBtLmpzb24oKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2h0bWwnOiB7XG4gICAgICAgIGNvbnN0IG0gPSBhd2FpdCBpbXBvcnQoJ0Bjb2RlbWlycm9yL2xhbmctaHRtbCcpO1xuICAgICAgICByZXR1cm4gbS5odG1sKCk7XG4gICAgICB9XG4gICAgICBjYXNlICdjc3MnOiB7XG4gICAgICAgIGNvbnN0IG0gPSBhd2FpdCBpbXBvcnQoJ0Bjb2RlbWlycm9yL2xhbmctY3NzJyk7XG4gICAgICAgIHJldHVybiBtLmNzcygpO1xuICAgICAgfVxuICAgICAgY2FzZSAnc2Nzcyc6XG4gICAgICBjYXNlICdzYXNzJzoge1xuICAgICAgICBjb25zdCBtID0gYXdhaXQgaW1wb3J0KCdAY29kZW1pcnJvci9sYW5nLXNhc3MnKTtcbiAgICAgICAgcmV0dXJuIG0uc2FzcygpO1xuICAgICAgfVxuICAgICAgY2FzZSAnc3FsJzoge1xuICAgICAgICBjb25zdCBtID0gYXdhaXQgaW1wb3J0KCdAY29kZW1pcnJvci9sYW5nLXNxbCcpO1xuICAgICAgICByZXR1cm4gbS5zcWwoKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3htbCc6IHtcbiAgICAgICAgY29uc3QgbSA9IGF3YWl0IGltcG9ydCgnQGNvZGVtaXJyb3IvbGFuZy14bWwnKTtcbiAgICAgICAgcmV0dXJuIG0ueG1sKCk7XG4gICAgICB9XG4gICAgICBjYXNlICdtYXJrZG93bic6IHtcbiAgICAgICAgY29uc3QgbSA9IGF3YWl0IGltcG9ydCgnQGNvZGVtaXJyb3IvbGFuZy1tYXJrZG93bicpO1xuICAgICAgICByZXR1cm4gbS5tYXJrZG93bigpO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzb2x2ZVRoZW1lRXh0ZW5zaW9uKCk6IFByb21pc2U8QVhDb2RlRWRpdG9yRXh0ZW5zaW9uTGlrZT4ge1xuICAgIGNvbnN0IHsgRWRpdG9yVmlldyB9ID0gYXdhaXQgaW1wb3J0KCdAY29kZW1pcnJvci92aWV3Jyk7XG4gICAgY29uc3QgZGFya01vZGUgPSB0aGlzLnBsYXRmb3JtU2VydmljZS50aGVtZU1vZGUoKSA9PT0gJ2RhcmsnO1xuICAgIC8vIGNvbnN0IHN1cmZhY2VWYXIgPSAncmdiKHZhcigtLWF4LXN5cy1jb2xvci1zdXJmYWNlKSkgIWltcG9ydGFudCc7XG4gICAgaWYgKGRhcmtNb2RlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB7IG9uZURhcmsgfSA9IGF3YWl0IGltcG9ydCgnQGNvZGVtaXJyb3IvdGhlbWUtb25lLWRhcmsnKTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBvbmVEYXJrLFxuICAgICAgICAgIEVkaXRvclZpZXcudGhlbWUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICcmJzogeyBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCAhaW1wb3J0YW50JyB9LFxuICAgICAgICAgICAgICAnLmNtLWd1dHRlcnMnOiB7fSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGRhcms6IHRydWUgfSxcbiAgICAgICAgICApLFxuICAgICAgICBdO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBFZGl0b3JWaWV3LnRoZW1lKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgICcmJzogeyBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCAhaW1wb3J0YW50JyB9LFxuICAgICAgICAgICAgJy5jbS1ndXR0ZXJzJzoge30sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IGRhcms6IHRydWUgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIEVkaXRvclZpZXcudGhlbWUoXG4gICAgICB7XG4gICAgICAgICcmJzogeyBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCAhaW1wb3J0YW50JyB9LFxuICAgICAgICAnLmNtLWd1dHRlcnMnOiB7fSxcbiAgICAgIH0sXG4gICAgICB7IGRhcms6IGZhbHNlIH0sXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDdXN0b21Db21wbGV0aW9uU291cmNlcygpOiBSZWFkb25seUFycmF5PEFYQ29kZUVkaXRvckNvbXBsZXRpb25Tb3VyY2VMaWtlPiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgcHJvdmlkZWQgPSB0aGlzLmN1c3RvbUNvbXBsZXRpb25zKCk7XG4gICAgaWYgKCFwcm92aWRlZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAodHlwZW9mIHByb3ZpZGVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gW3Byb3ZpZGVkIGFzIEFYQ29kZUVkaXRvckNvbXBsZXRpb25Tb3VyY2VMaWtlXTtcbiAgICB9XG4gICAgLy8gVHJlYXQgYXJyYXkgYXMgYSBzdGF0aWMgY29tcGxldGlvbiBsaXN0XG4gICAgY29uc3Qgc3RhdGljU291cmNlOiBBWENvZGVFZGl0b3JDb21wbGV0aW9uU291cmNlTGlrZSA9IChjb250ZXh0OiBBWENvZGVFZGl0b3JDb21wbGV0aW9uQ29udGV4dExpa2UpID0+IHtcbiAgICAgIGNvbnN0IGZyb20gPSBjb250ZXh0LnBvcztcbiAgICAgIHJldHVybiB7IGZyb20sIG9wdGlvbnM6IHByb3ZpZGVkIGFzIFJlYWRvbmx5QXJyYXk8QVhDb2RlRWRpdG9yQ29tcGxldGlvbkxpa2U+IH07XG4gICAgfTtcbiAgICByZXR1cm4gW3N0YXRpY1NvdXJjZV07XG4gIH1cblxuICAvLyBQdWJsaWMgQVBJXG4gIC8qKiBQcm9ncmFtbWF0aWNhbGx5IGZvY3VzIHRoZSBlZGl0b3IuICovXG4gIHB1YmxpYyBvdmVycmlkZSBmb2N1cygpOiB2b2lkIHtcbiAgICBjb25zdCB2aWV3ID0gdGhpcy5lZGl0b3JWaWV3U2lnKCk7XG4gICAgaWYgKHZpZXcpIHZpZXcuZm9jdXMoKTtcbiAgfVxuXG4gIC8qKiBTZWxlY3QgYWxsIHRleHQgaW4gdGhlIGN1cnJlbnQgZG9jdW1lbnQuICovXG4gIHB1YmxpYyBzZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgY29uc3QgdmlldyA9IHRoaXMuZWRpdG9yVmlld1NpZygpO1xuICAgIGlmICghdmlldykgcmV0dXJuO1xuICAgIGNvbnN0IGxlbmd0aCA9IHZpZXcuc3RhdGUuZG9jLmxlbmd0aDtcbiAgICB2aWV3LmRpc3BhdGNoKHsgc2VsZWN0aW9uOiB7IGFuY2hvcjogMCwgaGVhZDogbGVuZ3RoIH0gfSk7XG4gIH1cblxuICAvLyBGb3JtYXRzIHRoZSBjdXJyZW50IGRvY3VtZW50IHdpdGggUHJldHRpZXIgKGlmIGF2YWlsYWJsZSBmb3IgdGhlIGFjdGl2ZSBsYW5ndWFnZSkuXG4gIC8vIFJldHVybnMgdGhlIGZvcm1hdHRlZCB0ZXh0IG9yIG51bGwgaWYgdW5jaGFuZ2VkL3Vuc3VwcG9ydGVkLlxuICBwdWJsaWMgYXN5bmMgZm9ybWF0KGFmZmVjdCA9IHRydWUpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICBjb25zdCB2aWV3ID0gdGhpcy5lZGl0b3JWaWV3U2lnKCk7XG4gICAgaWYgKCF2aWV3KSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBzb3VyY2UgPSB2aWV3LnN0YXRlLmRvYy50b1N0cmluZygpO1xuICAgIGlmICghc291cmNlKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBmb3JtYXR0ZWQgPSBhd2FpdCB0aGlzLnRyeUZvcm1hdFdpdGhQcmV0dGllcihzb3VyY2UsIHRoaXMubGFuZ3VhZ2UoKSk7XG4gICAgaWYgKCFmb3JtYXR0ZWQgfHwgZm9ybWF0dGVkID09PSBzb3VyY2UpIHJldHVybiBudWxsO1xuICAgIGlmIChhZmZlY3QpIHtcbiAgICAgIHZpZXcuZGlzcGF0Y2goeyBjaGFuZ2VzOiB7IGZyb206IDAsIHRvOiB2aWV3LnN0YXRlLmRvYy5sZW5ndGgsIGluc2VydDogZm9ybWF0dGVkIH0gfSk7XG4gICAgfVxuICAgIHJldHVybiBmb3JtYXR0ZWQ7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhlIGN1cnJlbnQgZG9jdW1lbnQuICovXG4gIHB1YmxpYyBnZXRUb3RhbENoYXJhY3RlcnMoKTogbnVtYmVyIHtcbiAgICBjb25zdCB2aWV3ID0gdGhpcy5lZGl0b3JWaWV3U2lnKCk7XG4gICAgaWYgKHZpZXcpIHJldHVybiB2aWV3LnN0YXRlLmRvYy5sZW5ndGggPz8gMDtcbiAgICBjb25zdCB0ZXh0ID0gdGhpcy52YWx1ZSA/PyAnJztcbiAgICByZXR1cm4gdGV4dC5sZW5ndGg7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGxpbmVzIGluIHRoZSBjdXJyZW50IGRvY3VtZW50LiAqL1xuICBwdWJsaWMgZ2V0VG90YWxMaW5lcygpOiBudW1iZXIge1xuICAgIGNvbnN0IHZpZXcgPSB0aGlzLmVkaXRvclZpZXdTaWcoKTtcbiAgICBpZiAodmlldykge1xuICAgICAgY29uc3QgZG9jOiBhbnkgPSB2aWV3LnN0YXRlLmRvYztcbiAgICAgIHJldHVybiB0eXBlb2YgZG9jPy5saW5lcyA9PT0gJ251bWJlcicgPyBkb2MubGluZXMgOiBkb2MudG9TdHJpbmcoKS5zcGxpdCgvXFxyP1xcbi8pLmxlbmd0aDtcbiAgICB9XG4gICAgY29uc3QgdGV4dCA9IHRoaXMudmFsdWUgPz8gJyc7XG4gICAgcmV0dXJuIHRleHQgPyB0ZXh0LnNwbGl0KC9cXHI/XFxuLykubGVuZ3RoIDogMTtcbiAgfVxufVxuIl19","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXCodeEditorComponent } from './code-editor.component';\nimport * as i0 from \"@angular/core\";\nexport class AXCodeEditorModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXCodeEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.3\", ngImport: i0, type: AXCodeEditorModule, imports: [CommonModule, AXCodeEditorComponent], exports: [AXCodeEditorComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXCodeEditorModule, imports: [CommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXCodeEditorModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, AXCodeEditorComponent],\n exports: [AXCodeEditorComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1lZGl0b3IubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb2RlLWVkaXRvci9zcmMvbGliL2NvZGUtZWRpdG9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFNaEUsTUFBTSxPQUFPLGtCQUFrQjs4R0FBbEIsa0JBQWtCOytHQUFsQixrQkFBa0IsWUFIbkIsWUFBWSxFQUFFLHFCQUFxQixhQUNuQyxxQkFBcUI7K0dBRXBCLGtCQUFrQixZQUhuQixZQUFZOzsyRkFHWCxrQkFBa0I7a0JBSjlCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLHFCQUFxQixDQUFDO29CQUM5QyxPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQ29kZUVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4vY29kZS1lZGl0b3IuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQVhDb2RlRWRpdG9yQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW0FYQ29kZUVkaXRvckNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYQ29kZUVkaXRvck1vZHVsZSB7fVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtY29kZS1lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvZGUtZWRpdG9yL3NyYy9hY29yZXgtY29tcG9uZW50cy1jb2RlLWVkaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-code-editor.mjs","sources":["../tmp-esm2022/code-editor/lib/code-editor.component.js","../tmp-esm2022/code-editor/lib/code-editor.module.js","../tmp-esm2022/code-editor/acorex-components-code-editor.js"],"sourcesContent":["import { AXComponent, AXValuableComponent, MXValueComponent } from '@acorex/cdk/common';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Component, DestroyRef, PLATFORM_ID, afterNextRender, computed, effect, forwardRef, inject, input, output, signal, viewChild, } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i0 from \"@angular/core\";\nexport class AXCodeEditorComponent extends MXValueComponent {\n constructor() {\n super();\n // Inputs (signals)\n // value = input<string>('');\n /** Active language mode. Default: 'javascript'. */\n this.language = input('javascript', ...(ngDevMode ? [{ debugName: \"language\" }] : []));\n /** When true, the editor becomes readonly (non-editable). */\n this.readOnly = input(false, ...(ngDevMode ? [{ debugName: \"readOnly\" }] : []));\n /** Placeholder text shown when the document is empty. */\n this.placeholder = input('', ...(ngDevMode ? [{ debugName: \"placeholder\" }] : []));\n /** Toggle rendering of line numbers in the gutter. */\n this.lineNumbers = input(true, ...(ngDevMode ? [{ debugName: \"lineNumbers\" }] : []));\n /** Soft-wrap long lines when true. */\n this.lineWrapping = input(false, ...(ngDevMode ? [{ debugName: \"lineWrapping\" }] : []));\n /** Tab size (spaces per indent level). */\n this.tabSize = input(2, ...(ngDevMode ? [{ debugName: \"tabSize\" }] : []));\n /** When true, the Tab key indents instead of moving focus. */\n this.indentWithTab = input(true, ...(ngDevMode ? [{ debugName: \"indentWithTab\" }] : []));\n /** Fixed height for the editor (e.g., '320px'). */\n this.height = input(null, ...(ngDevMode ? [{ debugName: \"height\" }] : []));\n /** Minimum height for the editor. */\n this.minHeight = input(null, ...(ngDevMode ? [{ debugName: \"minHeight\" }] : []));\n /** Maximum height for the editor. */\n this.maxHeight = input(null, ...(ngDevMode ? [{ debugName: \"maxHeight\" }] : []));\n // Theme follows platform theme mode; no input\n /** Additional CodeMirror extensions to apply. Reconfigures at runtime. */\n this.extensions = input([], ...(ngDevMode ? [{ debugName: \"extensions\" }] : []));\n /** ARIA label for accessibility. */\n this.ariaLabel = input(null, ...(ngDevMode ? [{ debugName: \"ariaLabel\" }] : []));\n /** Focus the editor after first render. */\n this.focusOnReady = input(false, ...(ngDevMode ? [{ debugName: \"focusOnReady\" }] : []));\n /** If true, format the document via Prettier before emitting save. */\n this.formatOnSave = input(false, ...(ngDevMode ? [{ debugName: \"formatOnSave\" }] : []));\n /**\n * Custom autocompletion options: either a static array of Completion items\n * or a CodeMirror CompletionSource function.\n */\n this.customCompletions = input(null, ...(ngDevMode ? [{ debugName: \"customCompletions\" }] : []));\n // Outputs (signals)\n // valueChange = output<string>();\n /** Emits when the editor is fully initialized and ready. */\n this.ready = output();\n /** Emits when the user triggers save (Ctrl/Cmd+S). Payload is the current text. */\n this.save = output();\n // View container\n this.host = viewChild('host', ...(ngDevMode ? [{ debugName: \"host\" }] : []));\n // Runtime state\n this.platformId = inject(PLATFORM_ID);\n this.destroyRef = inject(DestroyRef);\n this.platformService = inject(AXPlatform);\n this.editorViewSig = signal(null, ...(ngDevMode ? [{ debugName: \"editorViewSig\" }] : []));\n // Compartments to reconfigure editor without recreating it\n this.languageCompartment = null;\n this.readOnlyCompartment = null;\n this.themeCompartment = null;\n this.placeholderCompartment = null;\n this.wrappingCompartment = null;\n this.keymapExtrasCompartment = null;\n this.tabSizeCompartment = null;\n this.lineNumbersCompartment = null;\n // Cached CodeMirror modules after initialization\n this.cm = { view: null, state: null, language: null, autocomplete: null, commands: null, search: null, lint: null };\n this.isBrowser = computed(() => isPlatformBrowser(this.platformId), ...(ngDevMode ? [{ debugName: \"isBrowser\" }] : []));\n afterNextRender(() => {\n if (!this.isBrowser())\n return;\n this.initializeEditor();\n });\n // Keep model in sync when external value changes\n effect(() => {\n const view = this.editorViewSig();\n if (!view)\n return;\n const newDoc = this.value ?? '';\n const current = view.state.doc.toString();\n if (newDoc !== current) {\n view.dispatch({\n changes: { from: 0, to: view.state.doc.length, insert: newDoc },\n });\n }\n });\n // React to dynamic configuration changes\n effect(() => {\n const view = this.editorViewSig();\n if (!view || !this.languageCompartment)\n return;\n const lang = this.language();\n this.resolveLanguageExtension(lang).then((ext) => {\n if (!view || !this.languageCompartment)\n return;\n view.dispatch({ effects: this.languageCompartment.reconfigure(ext) });\n });\n });\n effect(() => {\n const view = this.editorViewSig();\n if (!view || !this.readOnlyCompartment)\n return;\n const editable = !this.readOnly();\n import('@codemirror/view').then(({ EditorView }) => {\n if (!view || !this.readOnlyCompartment)\n return;\n view.dispatch({ effects: this.readOnlyCompartment.reconfigure(EditorView.editable.of(editable)) });\n });\n });\n effect(() => {\n const view = this.editorViewSig();\n // Establish reactive dependency on platform theme\n // Create a reactive dependency to platform theme\n void this.platformService.themeMode();\n if (!view || !this.themeCompartment)\n return;\n this.resolveThemeExtension().then((themeExt) => {\n if (!view || !this.themeCompartment)\n return;\n view.dispatch({ effects: this.themeCompartment.reconfigure(themeExt) });\n });\n });\n effect(() => {\n this.placeholder();\n const view = this.editorViewSig();\n if (!view || !this.placeholderCompartment)\n return;\n import('@codemirror/view').then(({ placeholder }) => {\n if (!view || !this.placeholderCompartment)\n return;\n view.dispatch({ effects: this.placeholderCompartment.reconfigure(placeholder(this.placeholder() ?? '')) });\n });\n });\n effect(() => {\n const view = this.editorViewSig();\n if (!view || !this.wrappingCompartment)\n return;\n const EditorView = this.cm.view?.EditorView;\n if (!EditorView)\n return;\n const nextExt = this.lineWrapping() ? EditorView.lineWrapping : [];\n this.reconfigure(this.wrappingCompartment, nextExt);\n });\n effect(() => {\n const view = this.editorViewSig();\n if (!view || !this.tabSizeCompartment)\n return;\n const EditorState = this.cm.state?.EditorState;\n if (!EditorState)\n return;\n this.reconfigure(this.tabSizeCompartment, EditorState.tabSize.of(this.tabSize() ?? 2));\n });\n effect(() => {\n const view = this.editorViewSig();\n if (!view || !this.keymapExtrasCompartment)\n return;\n const keymap = this.cm.view?.keymap;\n const commands = this.cm.commands;\n if (!keymap || !commands)\n return;\n this.reconfigure(this.keymapExtrasCompartment, keymap.of(this.indentWithTab() ? [commands.indentWithTab] : []));\n });\n effect(() => {\n const view = this.editorViewSig();\n if (!view || !this.lineNumbersCompartment)\n return;\n const lineNumbers = this.cm.view?.lineNumbers;\n if (!lineNumbers)\n return;\n this.reconfigure(this.lineNumbersCompartment, this.lineNumbers() ? lineNumbers() : []);\n });\n }\n async initializeEditor() {\n const hostEl = this.host()?.nativeElement;\n if (!hostEl)\n return;\n await this.loadCodeMirrorModules();\n this.createCompartments();\n const keymaps = this.buildKeymaps();\n const viewMod = this.cm.view;\n const stateMod = this.cm.state;\n const languageMod = this.cm.language;\n const autoMod = this.cm.autocomplete;\n const commandsMod = this.cm.commands;\n const searchMod = this.cm.search;\n const lintMod = this.cm.lint;\n if (!viewMod || !stateMod || !languageMod || !autoMod || !commandsMod || !searchMod || !lintMod)\n return;\n const languageExt = await this.resolveLanguageExtension(this.language());\n const themeExt = await this.resolveThemeExtension();\n const placeholderExt = viewMod.placeholder(this.placeholder() ?? '');\n const editableExt = viewMod.EditorView.editable.of(!this.readOnly());\n const wrappingExt = this.lineWrapping() ? viewMod.EditorView.lineWrapping : [];\n const tabSizeExt = stateMod.EditorState.tabSize.of(this.tabSize() ?? 2);\n const lineNumbersExt = this.lineNumbers() ? viewMod.lineNumbers() : [];\n const autoCompleteExt = autoMod.autocompletion({\n override: this.buildCustomCompletionSources(),\n });\n const baseExtensions = [\n this.lineNumbersCompartment.of(lineNumbersExt),\n viewMod.highlightActiveLine(),\n viewMod.highlightActiveLineGutter(),\n viewMod.drawSelection(),\n viewMod.dropCursor(),\n viewMod.rectangularSelection(),\n viewMod.crosshairCursor(),\n viewMod.highlightSpecialChars(),\n languageMod.syntaxHighlighting(languageMod.defaultHighlightStyle, { fallback: true }),\n languageMod.bracketMatching(),\n languageMod.foldGutter(),\n commandsMod.history(),\n searchMod.highlightSelectionMatches(),\n viewMod.keymap.of(keymaps),\n autoCompleteExt,\n this.languageCompartment.of(languageExt),\n this.readOnlyCompartment.of(editableExt),\n this.themeCompartment.of(themeExt),\n this.placeholderCompartment.of(placeholderExt),\n this.wrappingCompartment.of(wrappingExt),\n this.tabSizeCompartment.of(tabSizeExt),\n this.keymapExtrasCompartment.of(viewMod.keymap.of(this.indentWithTab() ? [commandsMod.indentWithTab] : [])),\n ...this.extensions(),\n ];\n const updateListener = viewMod.EditorView.updateListener.of((vu) => {\n if (vu.docChanged) {\n const text = vu.state.doc.toString();\n // this.writeValue(text);\n this.value = text;\n }\n });\n const state = stateMod.EditorState.create({\n doc: this.value ?? '',\n extensions: [...baseExtensions, updateListener],\n });\n const view = new viewMod.EditorView({ state, parent: hostEl });\n // Update listener for external changes (selection, viewport, etc.) if needed later\n view.dispatch({ effects: [] });\n this.editorViewSig.set(view);\n this.destroyRef.onDestroy(() => {\n view.destroy();\n this.editorViewSig.set(null);\n });\n if (this.focusOnReady()) {\n view.focus();\n }\n this.ready.emit();\n }\n reconfigure(comp, ext) {\n const view = this.editorViewSig();\n if (!view || !comp)\n return;\n view.dispatch({ effects: comp.reconfigure(ext) });\n }\n /**\n * Handles Ctrl/Cmd+S on the host. If formatOnSave is enabled, attempts\n * to format the document first, then emits the saved text.\n */\n async onSaveShortcut(event) {\n event.preventDefault();\n const view = this.editorViewSig();\n const current = view?.state.doc.toString() ?? this.value ?? '';\n const payload = current;\n if (this.formatOnSave()) {\n await this.format(true);\n }\n this.save.emit(payload);\n }\n async loadCodeMirrorModules() {\n const [viewMod, stateMod, langMod, autoMod, cmdMod, searchMod, lintMod] = await Promise.all([\n import('@codemirror/view'),\n import('@codemirror/state'),\n import('@codemirror/language'),\n import('@codemirror/autocomplete'),\n import('@codemirror/commands'),\n import('@codemirror/search'),\n import('@codemirror/lint'),\n ]);\n this.cm.view = viewMod;\n this.cm.state = stateMod;\n this.cm.language = langMod;\n this.cm.autocomplete = autoMod;\n this.cm.commands = cmdMod;\n this.cm.search = searchMod;\n this.cm.lint = lintMod;\n }\n createCompartments() {\n const stateMod = this.cm.state;\n if (!stateMod)\n return;\n this.languageCompartment = new stateMod.Compartment();\n this.readOnlyCompartment = new stateMod.Compartment();\n this.themeCompartment = new stateMod.Compartment();\n this.placeholderCompartment = new stateMod.Compartment();\n this.wrappingCompartment = new stateMod.Compartment();\n this.tabSizeCompartment = new stateMod.Compartment();\n this.keymapExtrasCompartment = new stateMod.Compartment();\n this.lineNumbersCompartment = new stateMod.Compartment();\n }\n buildKeymaps() {\n const cmdMod = this.cm.commands;\n const searchMod = this.cm.search;\n const autoMod = this.cm.autocomplete;\n const lintMod = this.cm.lint;\n if (!cmdMod || !searchMod || !autoMod || !lintMod)\n return [];\n return [\n ...cmdMod.defaultKeymap,\n ...cmdMod.historyKeymap,\n ...searchMod.searchKeymap,\n ...autoMod.completionKeymap,\n ...lintMod.lintKeymap,\n ];\n }\n // Attempts to format code using Prettier (browser-only). Returns formatted text or null on failure/unsupported.\n async tryFormatWithPrettier(text, lang) {\n if (!this.isBrowser())\n return null;\n try {\n const prettier = await import('prettier/standalone');\n let parser = null;\n const plugins = [];\n switch (lang) {\n case 'javascript':\n case 'js': {\n const [babel, estree] = await Promise.all([\n import('prettier/plugins/babel'),\n import('prettier/plugins/estree'),\n ]);\n plugins.push(babel, estree);\n parser = 'babel';\n break;\n }\n case 'typescript':\n case 'ts': {\n const [typescript, estree] = await Promise.all([\n import('prettier/plugins/typescript'),\n import('prettier/plugins/estree'),\n ]);\n plugins.push(typescript, estree);\n parser = 'typescript';\n break;\n }\n case 'json': {\n const [babel, estree] = await Promise.all([\n import('prettier/plugins/babel'),\n import('prettier/plugins/estree'),\n ]);\n plugins.push(babel, estree);\n parser = 'json';\n break;\n }\n case 'html': {\n const html = await import('prettier/plugins/html');\n plugins.push(html);\n parser = 'html';\n break;\n }\n case 'css': {\n const postcss = await import('prettier/plugins/postcss');\n plugins.push(postcss);\n parser = 'css';\n break;\n }\n case 'markdown': {\n const markdown = await import('prettier/plugins/markdown');\n plugins.push(markdown);\n parser = 'markdown';\n break;\n }\n default:\n return null;\n }\n if (!parser)\n return null;\n const formatted = await prettier.format(text, {\n parser,\n plugins,\n });\n return formatted;\n }\n catch {\n return null;\n }\n }\n async resolveLanguageExtension(lang) {\n switch (lang) {\n case 'javascript':\n case 'js': {\n const m = await import('@codemirror/lang-javascript');\n return m.javascript();\n }\n case 'typescript':\n case 'ts': {\n const m = await import('@codemirror/lang-javascript');\n return m.javascript({ typescript: true });\n }\n case 'json': {\n const m = await import('@codemirror/lang-json');\n return m.json();\n }\n case 'html': {\n const m = await import('@codemirror/lang-html');\n return m.html();\n }\n case 'css': {\n const m = await import('@codemirror/lang-css');\n return m.css();\n }\n case 'scss':\n case 'sass': {\n const m = await import('@codemirror/lang-sass');\n return m.sass();\n }\n case 'sql': {\n const m = await import('@codemirror/lang-sql');\n return m.sql();\n }\n case 'xml': {\n const m = await import('@codemirror/lang-xml');\n return m.xml();\n }\n case 'markdown': {\n const m = await import('@codemirror/lang-markdown');\n return m.markdown();\n }\n default:\n return [];\n }\n }\n async resolveThemeExtension() {\n const { EditorView } = await import('@codemirror/view');\n const darkMode = this.platformService.themeMode() === 'dark';\n // const surfaceVar = 'rgb(var(--ax-sys-color-surface)) !important';\n if (darkMode) {\n try {\n const { oneDark } = await import('@codemirror/theme-one-dark');\n return [\n oneDark,\n EditorView.theme({\n '&': { backgroundColor: 'transparent !important' },\n '.cm-gutters': {},\n }, { dark: true }),\n ];\n }\n catch {\n return EditorView.theme({\n '&': { backgroundColor: 'transparent !important' },\n '.cm-gutters': {},\n }, { dark: true });\n }\n }\n return EditorView.theme({\n '&': { backgroundColor: 'transparent !important' },\n '.cm-gutters': {},\n }, { dark: false });\n }\n buildCustomCompletionSources() {\n const provided = this.customCompletions();\n if (!provided)\n return undefined;\n if (typeof provided === 'function') {\n return [provided];\n }\n // Treat array as a static completion list\n const staticSource = (context) => {\n const from = context.pos;\n return { from, options: provided };\n };\n return [staticSource];\n }\n // Public API\n /** Programmatically focus the editor. */\n focus() {\n const view = this.editorViewSig();\n if (view)\n view.focus();\n }\n /** Select all text in the current document. */\n selectAll() {\n const view = this.editorViewSig();\n if (!view)\n return;\n const length = view.state.doc.length;\n view.dispatch({ selection: { anchor: 0, head: length } });\n }\n // Formats the current document with Prettier (if available for the active language).\n // Returns the formatted text or null if unchanged/unsupported.\n async format(affect = true) {\n const view = this.editorViewSig();\n if (!view)\n return null;\n const source = view.state.doc.toString();\n if (!source)\n return null;\n const formatted = await this.tryFormatWithPrettier(source, this.language());\n if (!formatted || formatted === source)\n return null;\n if (affect) {\n view.dispatch({ changes: { from: 0, to: view.state.doc.length, insert: formatted } });\n }\n return formatted;\n }\n /** Returns the total number of characters in the current document. */\n getTotalCharacters() {\n const view = this.editorViewSig();\n if (view)\n return view.state.doc.length ?? 0;\n const text = this.value ?? '';\n return text.length;\n }\n /** Returns the total number of lines in the current document. */\n getTotalLines() {\n const view = this.editorViewSig();\n if (view) {\n const doc = view.state.doc;\n return typeof doc?.lines === 'number' ? doc.lines : doc.toString().split(/\\r?\\n/).length;\n }\n const text = this.value ?? '';\n return text ? text.split(/\\r?\\n/).length : 1;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXCodeEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.2.0\", version: \"20.3.4\", type: AXCodeEditorComponent, isStandalone: true, selector: \"ax-code-editor\", inputs: { language: { classPropertyName: \"language\", publicName: \"language\", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: \"readOnly\", publicName: \"readOnly\", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: true, isRequired: false, transformFunction: null }, lineNumbers: { classPropertyName: \"lineNumbers\", publicName: \"lineNumbers\", isSignal: true, isRequired: false, transformFunction: null }, lineWrapping: { classPropertyName: \"lineWrapping\", publicName: \"lineWrapping\", isSignal: true, isRequired: false, transformFunction: null }, tabSize: { classPropertyName: \"tabSize\", publicName: \"tabSize\", isSignal: true, isRequired: false, transformFunction: null }, indentWithTab: { classPropertyName: \"indentWithTab\", publicName: \"indentWithTab\", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: \"height\", publicName: \"height\", isSignal: true, isRequired: false, transformFunction: null }, minHeight: { classPropertyName: \"minHeight\", publicName: \"minHeight\", isSignal: true, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: \"maxHeight\", publicName: \"maxHeight\", isSignal: true, isRequired: false, transformFunction: null }, extensions: { classPropertyName: \"extensions\", publicName: \"extensions\", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: \"ariaLabel\", publicName: \"ariaLabel\", isSignal: true, isRequired: false, transformFunction: null }, focusOnReady: { classPropertyName: \"focusOnReady\", publicName: \"focusOnReady\", isSignal: true, isRequired: false, transformFunction: null }, formatOnSave: { classPropertyName: \"formatOnSave\", publicName: \"formatOnSave\", isSignal: true, isRequired: false, transformFunction: null }, customCompletions: { classPropertyName: \"customCompletions\", publicName: \"customCompletions\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { ready: \"ready\", save: \"save\" }, host: { listeners: { \"keydown.control.s\": \"onSaveShortcut($event)\" }, classAttribute: \"ax-code-editor block\" }, providers: [\n { provide: AXValuableComponent, useExisting: AXCodeEditorComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXCodeEditorComponent),\n multi: true,\n },\n { provide: AXComponent, useExisting: AXCodeEditorComponent },\n ], viewQueries: [{ propertyName: \"host\", first: true, predicate: [\"host\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `\n <div\n #host\n class=\"cm-editor\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-readonly]=\"readOnly() ? 'true' : 'false'\"\n [attr.data-placeholder]=\"placeholder() ?? null\"\n [style.height]=\"height() ?? null\"\n [style.minHeight]=\"minHeight() ?? null\"\n [style.maxHeight]=\"maxHeight() ?? null\"\n ></div>\n `, isInline: true, styles: [\":host{display:block;width:100%;transition:none}.cm-editor{width:100%;max-width:100%;box-sizing:border-box}.cm-editor.cm-focused{outline:none}\\n\"] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXCodeEditorComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-code-editor', host: {\n '(keydown.control.s)': 'onSaveShortcut($event)',\n class: 'ax-code-editor block',\n }, providers: [\n { provide: AXValuableComponent, useExisting: AXCodeEditorComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXCodeEditorComponent),\n multi: true,\n },\n { provide: AXComponent, useExisting: AXCodeEditorComponent },\n ], template: `\n <div\n #host\n class=\"cm-editor\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-readonly]=\"readOnly() ? 'true' : 'false'\"\n [attr.data-placeholder]=\"placeholder() ?? null\"\n [style.height]=\"height() ?? null\"\n [style.minHeight]=\"minHeight() ?? null\"\n [style.maxHeight]=\"maxHeight() ?? null\"\n ></div>\n `, styles: [\":host{display:block;width:100%;transition:none}.cm-editor{width:100%;max-width:100%;box-sizing:border-box}.cm-editor.cm-focused{outline:none}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb2RlLWVkaXRvci9zcmMvbGliL2NvZGUtZWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUVWLFdBQVcsRUFDWCxlQUFlLEVBQ2YsUUFBUSxFQUNSLE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFrRm5ELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxnQkFBd0I7SUErRWpFO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUEvRVYsbUJBQW1CO1FBQ25CLDZCQUE2QjtRQUM3QixtREFBbUQ7UUFDbkQsYUFBUSxHQUFHLEtBQUssQ0FBZ0MsWUFBWSxvREFBQyxDQUFDO1FBQzlELDZEQUE2RDtRQUM3RCxhQUFRLEdBQUcsS0FBSyxDQUFVLEtBQUssb0RBQUMsQ0FBQztRQUNqQyx5REFBeUQ7UUFDekQsZ0JBQVcsR0FBRyxLQUFLLENBQVMsRUFBRSx1REFBQyxDQUFDO1FBQ2hDLHNEQUFzRDtRQUN0RCxnQkFBVyxHQUFHLEtBQUssQ0FBVSxJQUFJLHVEQUFDLENBQUM7UUFDbkMsc0NBQXNDO1FBQ3RDLGlCQUFZLEdBQUcsS0FBSyxDQUFVLEtBQUssd0RBQUMsQ0FB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bnRlbnQiOlsiaW1wb3J0IHsgQVhDb21wb25lbnQsIEFYVmFsdWFibGVDb21wb25lbnQsIE1YVmFsdWVDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhQbGF0Zm9ybSB9IGZyb20gJ0BhY29yZXgvY29yZS9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIFBMQVRGT1JNX0lELFxuICBhZnRlck5leHRSZW5kZXIsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8vIFR5cGUtb25seSBhbGlhc2VzIGZvciBDb2RlTWlycm9yIHR5cGVzICh0cmVlLXNoYWtlIGZyaWVuZGx5KVxudHlwZSBBWENvZGVFZGl0b3JFZGl0b3JWaWV3TGlrZSA9IGltcG9ydCgnQGNvZGVtaXJyb3IvdmlldycpLkVkaXRvclZpZXc7XG50eXBlIEFYQ29kZUVkaXRvcktleUJpbmRpbmdMaWtlID0gaW1wb3J0KCdAY29kZW1pcnJvci92aWV3JykuS2V5QmluZGluZztcbmV4cG9ydCB0eXBlIEFYQ29kZUVkaXRvckV4dGVuc2lvbkxpa2UgPSBpbXBvcnQoJ0Bjb2RlbWlycm9yL3N0YXRlJykuRXh0ZW5zaW9uO1xudHlwZSBBWENvZGVFZGl0b3JDb21wYXJ0bWVudExpa2UgPSBpbXBvcnQoJ0Bjb2RlbWlycm9yL3N0YXRlJykuQ29tcGFydG1lbnQ7XG5leHBvcnQgdHlwZSBBWENvZGVFZGl0b3JDb21wbGV0aW9uTGlrZSA9IGltcG9ydCgnQGNvZGVtaXJyb3IvYXV0b2NvbXBsZXRlJykuQ29tcGxldGlvbjtcbmV4cG9ydCB0eXBlIEFYQ29kZUVkaXRvckNvbXBsZXRpb25Tb3VyY2VMaWtlID0gaW1wb3J0KCdAY29kZW1pcnJvci9hdXRvY29tcGxldGUnKS5Db21wbGV0aW9uU291cmNlO1xudHlwZSBBWENvZGVFZGl0b3JDb21wbGV0aW9uQ29udGV4dExpa2UgPSBpbXBvcnQoJ0Bjb2RlbWlycm9yL2F1dG9jb21wbGV0ZScpLkNvbXBsZXRpb25Db250ZXh0O1xuXG50eXBlIEFYQ29kZUVkaXRvclZpZXdNb2R1bGUgPSB0eXBlb2YgaW1wb3J0KCdAY29kZW1pcnJvci92aWV3Jyk7XG50eXBlIEFYQ29kZUVkaXRvclN0YXRlTW9kdWxlID0gdHlwZW9mIGltcG9ydCgnQGNvZGVtaXJyb3Ivc3RhdGUnKTtcbnR5cGUgQVhDb2RlRWRpdG9yTGFuZ3VhZ2VNb2R1bGUgPSB0eXBlb2YgaW1wb3J0KCdAY29kZW1pcnJvci9sYW5ndWFnZScpO1xudHlwZSBBWENvZGVFZGl0b3JBdXRvY29tcGxldGVNb2R1bGUgPSB0eXBlb2YgaW1wb3J0KCdAY29kZW1pcnJvci9hdXRvY29tcGxldGUnKTtcbnR5cGUgQVhDb2RlRWRpdG9yQ29tbWFuZHNNb2R1bGUgPSB0eXBlb2YgaW1wb3J0KCdAY29kZW1pcnJvci9jb21tYW5kcycpO1xudHlwZSBBWENvZGVFZGl0b3JTZWFyY2hNb2R1bGUgPSB0eXBlb2YgaW1wb3J0KCdAY29kZW1pcnJvci9zZWFyY2gnKTtcbnR5cGUgQVhDb2RlRWRpdG9yTGludE1vZHVsZSA9IHR5cGVvZiBpbXBvcnQoJ0Bjb2RlbWlycm9yL2xpbnQnKTtcblxuLyoqXG4gKiBTdXBwb3J0ZWQgc3ludGF4IGhpZ2hsaWdodGluZyBtb2RlcyBmb3IgdGhlIGVkaXRvci5cbiAqL1xuZXhwb3J0IHR5cGUgQVhDb2RlRWRpdG9yU3VwcG9ydGVkTGFuZ3VhZ2UgPVxuICB8ICdqYXZhc2NyaXB0J1xuICB8ICdqcydcbiAgfCAndHlwZXNjcmlwdCdcbiAgfCAndHMnXG4gIHwgJ2pzb24nXG4gIHwgJ2h0bWwnXG4gIHwgJ2NzcydcbiAgfCAnc2NzcydcbiAgfCAnc2FzcydcbiAgfCAnc3FsJ1xuICB8ICd4bWwnXG4gIHwgJ21hcmtkb3duJ1xuICB8ICd0ZXh0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY29kZS1lZGl0b3InLFxuICBob3N0OiB7XG4gICAgJyhrZXlkb3duLmNvbnRyb2wucyknOiAnb25TYXZlU2hvcnRjdXQoJGV2ZW50KScsXG4gICAgY2xhc3M6ICdheC1jb2RlLWVkaXRvciBibG9jaycsXG4gIH0sXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgICAgfVxuICAgICAgLmNtLWVkaXRvciB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICB9XG4gICAgICAuY20tZWRpdG9yLmNtLWZvY3VzZWQge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogQVhWYWx1YWJsZUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYQ29kZUVkaXRvckNvbXBvbmVudCB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQVhDb2RlRWRpdG9yQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYQ29kZUVkaXRvckNvbXBvbmVudCB9LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgICNob3N0XG4gICAgICBjbGFzcz1cImNtLWVkaXRvclwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCgpID8/IG51bGxcIlxuICAgICAgW2F0dHIuYXJpYS1yZWFkb25seV09XCJyZWFkT25seSgpID8gJ3RydWUnIDogJ2ZhbHNlJ1wiXG4gICAgICBbYXR0ci5kYXRhLXBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKCkgPz8gbnVsbFwiXG4gICAgICBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodCgpID8/IG51bGxcIlxuICAgICAgW3N0eWxlLm1pbkhlaWdodF09XCJtaW5IZWlnaHQoKSA/PyBudWxsXCJcbiAgICAgIFtzdHlsZS5tYXhIZWlnaHRdPVwibWF4SGVpZ2h0KCkgPz8gbnVsbFwiXG4gICAgPjwvZGl2PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBBWENvZGVFZGl0b3JDb21wb25lbnQgZXh0ZW5kcyBNWFZhbHVlQ29tcG9uZW50PHN0cmluZz4ge1xuICAvLyBJbnB1dHMgKHNpZ25hbHMpXG4gIC8vIHZhbHVlID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIC8qKiBBY3RpdmUgbGFuZ3VhZ2UgbW9kZS4gRGVmYXVsdDogJ2phdmFzY3JpcHQnLiAqL1xuICBsYW5ndWFnZSA9IGlucHV0PEFYQ29kZUVkaXRvclN1cHBvcnRlZExhbmd1YWdlPignamF2YXNjcmlwdCcpO1xuICAvKiogV2hlbiB0cnVlLCB0aGUgZWRpdG9yIGJlY29tZXMgcmVhZG9ubHkgKG5vbi1lZGl0YWJsZSkuICovXG4gIHJlYWRPbmx5ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICAvKiogUGxhY2Vob2xkZXIgdGV4dCBzaG93biB3aGVuIHRoZSBkb2N1bWVudCBpcyBlbXB0eS4gKi9cbiAgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgLyoqIFRvZ2dsZSByZW5kZXJpbmcgb2YgbGluZSBudW1iZXJzIGluIHRoZSBndXR0ZXIuICovXG4gIGxpbmVOdW1iZXJzID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIC8qKiBTb2Z0LXdyYXAgbG9uZyBsaW5lcyB3aGVuIHRydWUuICovXG4gIGxpbmVXcmFwcGluZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgLyoqIFRhYiBzaXplIChzcGFjZXMgcGVyIGluZGVudCBsZXZlbCkuICovXG4gIHRhYlNpemUgPSBpbnB1dDxudW1iZXI+KDIpO1xuICAvKiogV2hlbiB0cnVlLCB0aGUgVGFiIGtleSBpbmRlbnRzIGluc3RlYWQgb2YgbW92aW5nIGZvY3VzLiAqL1xuICBpbmRlbnRXaXRoVGFiID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIC8qKiBGaXhlZCBoZWlnaHQgZm9yIHRoZSBlZGl0b3IgKGUuZy4sICczMjBweCcpLiAqL1xuICBoZWlnaHQgPSBpbnB1dDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgLyoqIE1pbmltdW0gaGVpZ2h0IGZvciB0aGUgZWRpdG9yLiAqL1xuICBtaW5IZWlnaHQgPSBpbnB1dDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgLyoqIE1heGltdW0gaGVpZ2h0IGZvciB0aGUgZWRpdG9yLiAqL1xuICBtYXhIZWlnaHQgPSBpbnB1dDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgLy8gVGhlbWUgZm9sbG93cyBwbGF0Zm9ybSB0aGVtZSBtb2RlOyBubyBpbnB1dFxuICAvKiogQWRkaXRpb25hbCBDb2RlTWlycm9yIGV4dGVuc2lvbnMgdG8gYXBwbHkuIFJlY29uZmlndXJlcyBhdCBydW50aW1lLiAqL1xuICBleHRlbnNpb25zID0gaW5wdXQ8UmVhZG9ubHlBcnJheTxBWENvZGVFZGl0b3JFeHRlbnNpb25MaWtlPj4oW10pO1xuICAvKiogQVJJQSBsYWJlbCBmb3IgYWNjZXNzaWJpbGl0eS4gKi9cbiAgYXJpYUxhYmVsID0gaW5wdXQ8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIC8qKiBGb2N1cyB0aGUgZWRpdG9yIGFmdGVyIGZpcnN0IHJlbmRlci4gKi9cbiAgZm9jdXNPblJlYWR5ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICAvKiogSWYgdHJ1ZSwgZm9ybWF0IHRoZSBkb2N1bWVudCB2aWEgUHJldHRpZXIgYmVmb3JlIGVtaXR0aW5nIHNhdmUuICovXG4gIGZvcm1hdE9uU2F2ZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAvKipcbiAgICogQ3VzdG9tIGF1dG9jb21wbGV0aW9uIG9wdGlvbnM6IGVpdGhlciBhIHN0YXRpYyBhcnJheSBvZiBDb21wbGV0aW9uIGl0ZW1zXG4gICAqIG9yIGEgQ29kZU1pcnJvciBDb21wbGV0aW9uU291cmNlIGZ1bmN0aW9uLlxuICAgKi9cbiAgY3VzdG9tQ29tcGxldGlvbnMgPSBpbnB1dDxSZWFkb25seUFycmF5PEFYQ29kZUVkaXRvckNvbXBsZXRpb25MaWtlPiB8IEFYQ29kZUVkaXRvckNvbXBsZXRpb25Tb3VyY2VMaWtlIHwgbnVsbD4obnVsbCk7XG5cbiAgLy8gT3V0cHV0cyAoc2lnbmFscylcbiAgLy8gdmFsdWVDaGFuZ2UgPSBvdXRwdXQ8c3RyaW5nPigpO1xuICAvKiogRW1pdHMgd2hlbiB0aGUgZWRpdG9yIGlzIGZ1bGx5IGluaXRpYWxpemVkIGFuZCByZWFkeS4gKi9cbiAgcmVhZHkgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgLyoqIEVtaXRzIHdoZW4gdGhlIHVzZXIgdHJpZ2dlcnMgc2F2ZSAoQ3RybC9DbWQrUykuIFBheWxvYWQgaXMgdGhlIGN1cnJlbnQgdGV4dC4gKi9cbiAgc2F2ZSA9IG91dHB1dDxzdHJpbmc+KCk7XG5cbiAgLy8gVmlldyBjb250YWluZXJcbiAgaG9zdCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj4oJ2hvc3QnKTtcblxuICAvLyBSdW50aW1lIHN0YXRlXG4gIHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIHByaXZhdGUgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJpdmF0ZSBwbGF0Zm9ybVNlcnZpY2UgPSBpbmplY3QoQVhQbGF0Zm9ybSk7XG5cbiAgcHJpdmF0ZSBlZGl0b3JWaWV3U2lnID0gc2lnbmFsPEFYQ29kZUVkaXRvckVkaXRvclZpZXdMaWtlIHwgbnVsbD4obnVsbCk7XG5cbiAgLy8gQ29tcGFydG1lbnRzIHRvIHJlY29uZmlndXJlIGVkaXRvciB3aXRob3V0IHJlY3JlYXRpbmcgaXRcbiAgcHJpdmF0ZSBsYW5ndWFnZUNvbXBhcnRtZW50OiBBWENvZGVFZGl0b3JDb21wYXJ0bWVudExpa2UgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSByZWFkT25seUNvbXBhcnRtZW50OiBBWENvZGVFZGl0b3JDb21wYXJ0bWVudExpa2UgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSB0aGVtZUNvbXBhcnRtZW50OiBBWENvZGVFZGl0b3JDb21wYXJ0bWVudExpa2UgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBwbGFjZWhvbGRlckNvbXBhcnRtZW50OiBBWENvZGVFZGl0b3JDb21wYXJ0bWVudExpa2UgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSB3cmFwcGluZ0NvbXBhcnRtZW50OiBBWENvZGVFZGl0b3JDb21wYXJ0bWVudExpa2UgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBrZXltYXBFeHRyYXNDb21wYXJ0bWVudDogQVhDb2RlRWRpdG9yQ29tcGFydG1lbnRMaWtlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgdGFiU2l6ZUNvbXBhcnRtZW50OiBBWENvZGVFZGl0b3JDb21wYXJ0bWVudExpa2UgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBsaW5lTnVtYmVyc0NvbXBhcnRtZW50OiBBWENvZGVFZGl0b3JDb21wYXJ0bWVudExpa2UgfCBudWxsID0gbnVsbDtcblxuICAvLyBDYWNoZWQgQ29kZU1pcnJvciBtb2R1bGVzIGFmdGVyIGluaXRpYWxpemF0aW9uXG4gIHByaXZhdGUgY206IHtcbiAgICB2aWV3OiBBWENvZGVFZGl0b3JWaWV3TW9kdWxlIHwgbnVsbDtcbiAgICBzdGF0ZTogQVhDb2RlRWRpdG9yU3RhdGVNb2R1bGUgfCBudWxsO1xuICAgIGxhbmd1YWdlOiBBWENvZGVFZGl0b3JMYW5ndWFnZU1vZHVsZSB8IG51bGw7XG4gICAgYXV0b2NvbXBsZXRlOiBBWENvZGVFZGl0b3JBdXRvY29tcGxldGVNb2R1bGUgfCBudWxsO1xuICAgIGNvbW1hbmRzOiBBWENvZGVFZGl0b3JDb21tYW5kc01vZHVsZSB8IG51bGw7XG4gICAgc2VhcmNoOiBBWENvZGVFZGl0b3JTZWFyY2hNb2R1bGUgfCBudWxsO1xuICAgIGxpbnQ6IEFYQ29kZUVkaXRvckxpbnRNb2R1bGUgfCBudWxsO1xuICB9ID0geyB2aWV3OiBudWxsLCBzdGF0ZTogbnVsbCwgbGFuZ3VhZ2U6IG51bGwsIGF1dG9jb21wbGV0ZTogbnVsbCwgY29tbWFuZHM6IG51bGwsIHNlYXJjaDogbnVsbCwgbGludDogbnVsbCB9O1xuXG4gIHByaXZhdGUgaXNCcm93c2VyID0gY29tcHV0ZWQoKCkgPT4gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmlzQnJvd3NlcigpKSByZXR1cm47XG4gICAgICB0aGlzLmluaXRpYWxpemVFZGl0b3IoKTtcbiAgICB9KTtcblxuICAgIC8vIEtlZXAgbW9kZWwgaW4gc3luYyB3aGVuIGV4dGVybmFsIHZhbHVlIGNoYW5nZXNcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgdmlldyA9IHRoaXMuZWRpdG9yVmlld1NpZygpO1xuICAgICAgaWYgKCF2aWV3KSByZXR1cm47XG4gICAgICBjb25zdCBuZXdEb2MgPSB0aGlzLnZhbHVlID8/ICcnO1xuICAgICAgY29uc3QgY3VycmVudCA9IHZpZXcuc3RhdGUuZG9jLnRvU3RyaW5nKCk7XG4gICAgICBpZiAobmV3RG9jICE9PSBjdXJyZW50KSB7XG4gICAgICAgIHZpZXcuZGlzcGF0Y2goe1xuICAgICAgICAgIGNoYW5nZXM6IHsgZnJvbTogMCwgdG86IHZpZXcuc3RhdGUuZG9jLmxlbmd0aCwgaW5zZXJ0OiBuZXdEb2MgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBSZWFjdCB0byBkeW5hbWljIGNvbmZpZ3VyYXRpb24gY2hhbmdlc1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB2aWV3ID0gdGhpcy5lZGl0b3JWaWV3U2lnKCk7XG4gICAgICBpZiAoIXZpZXcgfHwgIXRoaXMubGFuZ3VhZ2VDb21wYXJ0bWVudCkgcmV0dXJuO1xuICAgICAgY29uc3QgbGFuZyA9IHRoaXMubGFuZ3VhZ2UoKTtcbiAgICAgIHRoaXMucmVzb2x2ZUxhbmd1YWdlRXh0ZW5zaW9uKGxhbmcpLnRoZW4oKGV4dCkgPT4ge1xuICAgICAgICBpZiAoIXZpZXcgfHwgIXRoaXMubGFuZ3VhZ2VDb21wYXJ0bWVudCkgcmV0dXJuO1xuICAgICAgICB2aWV3LmRpc3BhdGNoKHsgZWZmZWN0czogdGhpcy5sYW5ndWFnZUNvbXBhcnRtZW50LnJlY29uZmlndXJlKGV4dCkgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB2aWV3ID0gdGhpcy5lZGl0b3JWaWV3U2lnKCk7XG4gICAgICBpZiAoIXZpZXcgfHwgIXRoaXMucmVhZE9ubHlDb21wYXJ0bWVudCkgcmV0dXJuO1xuICAgICAgY29uc3QgZWRpdGFibGUgPSAhdGhpcy5yZWFkT25seSgpO1xuICAgICAgaW1wb3J0KCdAY29kZW1pcnJvci92aWV3JykudGhlbigoeyBFZGl0b3JWaWV3IH0pID0+IHtcbiAgICAgICAgaWYgKCF2aWV3IHx8ICF0aGlzLnJlYWRPbmx5Q29tcGFydG1lbnQpIHJldHVybjtcbiAgICAgICAgdmlldy5kaXNwYXRjaCh7IGVmZmVjdHM6IHRoaXMucmVhZE9ubHlDb21wYXJ0bWVudC5yZWNvbmZpZ3VyZShFZGl0b3JWaWV3LmVkaXRhYmxlLm9mKGVkaXRhYmxlKSkgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB2aWV3ID0gdGhpcy5lZGl0b3JWaWV3U2lnKCk7XG4gICAgICAvLyBFc3RhYmxpc2ggcmVhY3RpdmUgZGVwZW5kZW5jeSBvbiBwbGF0Zm9ybSB0aGVtZVxuICAgICAgLy8gQ3JlYXRlIGEgcmVhY3RpdmUgZGVwZW5kZW5jeSB0byBwbGF0Zm9ybSB0aGVtZVxuICAgICAgdm9pZCB0aGlzLnBsYXRmb3JtU2VydmljZS50aGVtZU1vZGUoKTtcbiAgICAgIGlmICghdmlldyB8fCAhdGhpcy50aGVtZUNvbXBhcnRtZW50KSByZXR1cm47XG4gICAgICB0aGlzLnJlc29sdmVUaGVtZUV4dGVuc2lvbigpLnRoZW4oKHRoZW1lRXh0KSA9PiB7XG4gICAgICAgIGlmICghdmlldyB8fCAhdGhpcy50aGVtZUNvbXBhcnRtZW50KSByZXR1cm47XG4gICAgICAgIHZpZXcuZGlzcGF0Y2goeyBlZmZlY3RzOiB0aGlzLnRoZW1lQ29tcGFydG1lbnQucmVjb25maWd1cmUodGhlbWVFeHQpIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgdGhpcy5wbGFjZWhvbGRlcigpO1xuICAgICAgY29uc3QgdmlldyA9IHRoaXMuZWRpdG9yVmlld1NpZygpO1xuICAgICAgaWYgKCF2aWV3IHx8ICF0aGlzLnBsYWNlaG9sZGVyQ29tcGFydG1lbnQpIHJldHVybjtcbiAgICAgIGltcG9ydCgnQGNvZGVtaXJyb3IvdmlldycpLnRoZW4oKHsgcGxhY2Vob2xkZXIgfSkgPT4ge1xuICAgICAgICBpZiAoIXZpZXcgfHwgIXRoaXMucGxhY2Vob2xkZXJDb21wYXJ0bWVudCkgcmV0dXJuO1xuICAgICAgICB2aWV3LmRpc3BhdGNoKHsgZWZmZWN0czogdGhpcy5wbGFjZWhvbGRlckNvbXBhcnRtZW50LnJlY29uZmlndXJlKHBsYWNlaG9sZGVyKHRoaXMucGxhY2Vob2xkZXIoKSA/PyAnJykpIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgdmlldyA9IHRoaXMuZWRpdG9yVmlld1NpZygpO1xuICAgICAgaWYgKCF2aWV3IHx8ICF0aGlzLndyYXBwaW5nQ29tcGFydG1lbnQpIHJldHVybjtcbiAgICAgIGNvbnN0IEVkaXRvclZpZXcgPSB0aGlzLmNtLnZpZXc/LkVkaXRvclZpZXc7XG4gICAgICBpZiAoIUVkaXRvclZpZXcpIHJldHVybjtcbiAgICAgIGNvbnN0IG5leHRFeHQgPSB0aGlzLmxpbmVXcmFwcGluZygpID8gRWRpdG9yVmlldy5saW5lV3JhcHBpbmcgOiBbXTtcbiAgICAgIHRoaXMucmVjb25maWd1cmUodGhpcy53cmFwcGluZ0NvbXBhcnRtZW50LCBuZXh0RXh0KTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB2aWV3ID0gdGhpcy5lZGl0b3JWaWV3U2lnKCk7XG4gICAgICBpZiAoIXZpZXcgfHwgIXRoaXMudGFiU2l6ZUNvbXBhcnRtZW50KSByZXR1cm47XG4gICAgICBjb25zdCBFZGl0b3JTdGF0ZSA9IHRoaXMuY20uc3RhdGU/LkVkaXRvclN0YXRlO1xuICAgICAgaWYgKCFFZGl0b3JTdGF0ZSkgcmV0dXJuO1xuICAgICAgdGhpcy5yZWNvbmZpZ3VyZSh0aGlzLnRhYlNpemVDb21wYXJ0bWVudCwgRWRpdG9yU3RhdGUudGFiU2l6ZS5vZih0aGlzLnRhYlNpemUoKSA/PyAyKSk7XG4gICAgfSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgdmlldyA9IHRoaXMuZWRpdG9yVmlld1NpZygpO1xuICAgICAgaWYgKCF2aWV3IHx8ICF0aGlzLmtleW1hcEV4dHJhc0NvbXBhcnRtZW50KSByZXR1cm47XG4gICAgICBjb25zdCBrZXltYXAgPSB0aGlzLmNtLnZpZXc/LmtleW1hcDtcbiAgICAgIGNvbnN0IGNvbW1hbmRzID0gdGhpcy5jbS5jb21tYW5kcztcbiAgICAgIGlmICgha2V5bWFwIHx8ICFjb21tYW5kcykgcmV0dXJuO1xuICAgICAgdGhpcy5yZWNvbmZpZ3VyZSh0aGlzLmtleW1hcEV4dHJhc0NvbXBhcnRtZW50LCBrZXltYXAub2YodGhpcy5pbmRlbnRXaXRoVGFiKCkgPyBbY29tbWFuZHMuaW5kZW50V2l0aFRhYl0gOiBbXSkpO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHZpZXcgPSB0aGlzLmVkaXRvclZpZXdTaWcoKTtcbiAgICAgIGlmICghdmlldyB8fCAhdGhpcy5saW5lTnVtYmVyc0NvbXBhcnRtZW50KSByZXR1cm47XG4gICAgICBjb25zdCBsaW5lTnVtYmVycyA9IHRoaXMuY20udmlldz8ubGluZU51bWJlcnM7XG4gICAgICBpZiAoIWxpbmVOdW1iZXJzKSByZXR1cm47XG4gICAgICB0aGlzLnJlY29uZmlndXJlKHRoaXMubGluZU51bWJlcnNDb21wYXJ0bWVudCwgdGhpcy5saW5lTnVtYmVycygpID8gbGluZU51bWJlcnMoKSA6IFtdKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaW5pdGlhbGl6ZUVkaXRvcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBob3N0RWwgPSB0aGlzLmhvc3QoKT8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoIWhvc3RFbCkgcmV0dXJuO1xuXG4gICAgYXdhaXQgdGhpcy5sb2FkQ29kZU1pcnJvck1vZHVsZXMoKTtcblxuICAgIHRoaXMuY3JlYXRlQ29tcGFydG1lbnRzKCk7XG5cbiAgICBjb25zdCBrZXltYXBzID0gdGhpcy5idWlsZEtleW1hcHMoKTtcblxuICAgIGNvbnN0IHZpZXdNb2QgPSB0aGlzLmNtLnZpZXc7XG4gICAgY29uc3Qgc3RhdGVNb2QgPSB0aGlzLmNtLnN0YXRlO1xuICAgIGNvbnN0IGxhbmd1YWdlTW9kID0gdGhpcy5jbS5sYW5ndWFnZTtcbiAgICBjb25zdCBhdXRvTW9kID0gdGhpcy5jbS5hdXRvY29tcGxldGU7XG4gICAgY29uc3QgY29tbWFuZHNNb2QgPSB0aGlzLmNtLmNvbW1hbmRzO1xuICAgIGNvbnN0IHNlYXJjaE1vZCA9IHRoaXMuY20uc2VhcmNoO1xuICAgIGNvbnN0IGxpbnRNb2QgPSB0aGlzLmNtLmxpbnQ7XG4gICAgaWYgKCF2aWV3TW9kIHx8ICFzdGF0ZU1vZCB8fCAhbGFuZ3VhZ2VNb2QgfHwgIWF1dG9Nb2QgfHwgIWNvbW1hbmRzTW9kIHx8ICFzZWFyY2hNb2QgfHwgIWxpbnRNb2QpIHJldHVybjtcbiAgICBjb25zdCBsYW5ndWFnZUV4dCA9IGF3YWl0IHRoaXMucmVzb2x2ZUxhbmd1YWdlRXh0ZW5zaW9uKHRoaXMubGFuZ3VhZ2UoKSk7XG4gICAgY29uc3QgdGhlbWVFeHQgPSBhd2FpdCB0aGlzLnJlc29sdmVUaGVtZUV4dGVuc2lvbigpO1xuICAgIGNvbnN0IHBsYWNlaG9sZGVyRXh0ID0gdmlld01vZC5wbGFjZWhvbGRlcih0aGlzLnBsYWNlaG9sZGVyKCkgPz8gJycpO1xuICAgIGNvbnN0IGVkaXRhYmxlRXh0ID0gdmlld01vZC5FZGl0b3JWaWV3LmVkaXRhYmxlLm9mKCF0aGlzLnJlYWRPbmx5KCkpO1xuICAgIGNvbnN0IHdyYXBwaW5nRXh0ID0gdGhpcy5saW5lV3JhcHBpbmcoKSA/IHZpZXdNb2QuRWRpdG9yVmlldy5saW5lV3JhcHBpbmcgOiBbXTtcbiAgICBjb25zdCB0YWJTaXplRXh0ID0gc3RhdGVNb2QuRWRpdG9yU3RhdGUudGFiU2l6ZS5vZih0aGlzLnRhYlNpemUoKSA/PyAyKTtcbiAgICBjb25zdCBsaW5lTnVtYmVyc0V4dCA9IHRoaXMubGluZU51bWJlcnMoKSA/IHZpZXdNb2QubGluZU51bWJlcnMoKSA6IFtdO1xuXG4gICAgY29uc3QgYXV0b0NvbXBsZXRlRXh0ID0gYXV0b01vZC5hdXRvY29tcGxldGlvbih7XG4gICAgICBvdmVycmlkZTogdGhpcy5idWlsZEN1c3RvbUNvbXBsZXRpb25Tb3VyY2VzKCksXG4gICAgfSk7XG5cbiAgICBjb25zdCBiYXNlRXh0ZW5zaW9uczogUmVhZG9ubHlBcnJheTxBWENvZGVFZGl0b3JFeHRlbnNpb25MaWtlPiA9IFtcbiAgICAgIHRoaXMubGluZU51bWJlcnNDb21wYXJ0bWVudC5vZihsaW5lTnVtYmVyc0V4dCksXG4gICAgICB2aWV3TW9kLmhpZ2hsaWdodEFjdGl2ZUxpbmUoKSxcbiAgICAgIHZpZXdNb2QuaGlnaGxpZ2h0QWN0aXZlTGluZUd1dHRlcigpLFxuICAgICAgdmlld01vZC5kcmF3U2VsZWN0aW9uKCksXG4gICAgICB2aWV3TW9kLmRyb3BDdXJzb3IoKSxcbiAgICAgIHZpZXdNb2QucmVjdGFuZ3VsYXJTZWxlY3Rpb24oKSxcbiAgICAgIHZpZXdNb2QuY3Jvc3NoYWlyQ3Vyc29yKCksXG4gICAgICB2aWV3TW9kLmhpZ2hsaWdodFNwZWNpYWxDaGFycygpLFxuICAgICAgbGFuZ3VhZ2VNb2Quc3ludGF4SGlnaGxpZ2h0aW5nKGxhbmd1YWdlTW9kLmRlZmF1bHRIaWdobGlnaHRTdHlsZSwgeyBmYWxsYmFjazogdHJ1ZSB9KSxcbiAgICAgIGxhbmd1YWdlTW9kLmJyYWNrZXRNYXRjaGluZygpLFxuICAgICAgbGFuZ3VhZ2VNb2QuZm9sZEd1dHRlcigpLFxuICAgICAgY29tbWFuZHNNb2QuaGlzdG9yeSgpLFxuICAgICAgc2VhcmNoTW9kLmhpZ2hsaWdodFNlbGVjdGlvbk1hdGNoZXMoKSxcbiAgICAgIHZpZXdNb2Qua2V5bWFwLm9mKGtleW1hcHMpLFxuICAgICAgYXV0b0NvbXBsZXRlRXh0LFxuICAgICAgdGhpcy5sYW5ndWFnZUNvbXBhcnRtZW50Lm9mKGxhbmd1YWdlRXh0KSxcbiAgICAgIHRoaXMucmVhZE9ubHlDb21wYXJ0bWVudC5vZihlZGl0YWJsZUV4dCksXG4gICAgICB0aGlzLnRoZW1lQ29tcGFydG1lbnQub2YodGhlbWVFeHQpLFxuICAgICAgdGhpcy5wbGFjZWhvbGRlckNvbXBhcnRtZW50Lm9mKHBsYWNlaG9sZGVyRXh0KSxcbiAgICAgIHRoaXMud3JhcHBpbmdDb21wYXJ0bWVudC5vZih3cmFwcGluZ0V4dCksXG4gICAgICB0aGlzLnRhYlNpemVDb21wYXJ0bWVudC5vZih0YWJTaXplRXh0KSxcbiAgICAgIHRoaXMua2V5bWFwRXh0cmFzQ29tcGFydG1lbnQub2Yodmlld01vZC5rZXltYXAub2YodGhpcy5pbmRlbnRXaXRoVGFiKCkgPyBbY29tbWFuZHNNb2QuaW5kZW50V2l0aFRhYl0gOiBbXSkpLFxuICAgICAgLi4udGhpcy5leHRlbnNpb25zKCksXG4gICAgXTtcblxuICAgIGNvbnN0IHVwZGF0ZUxpc3RlbmVyID0gdmlld01vZC5FZGl0b3JWaWV3LnVwZGF0ZUxpc3RlbmVyLm9mKCh2dSkgPT4ge1xuICAgICAgaWYgKHZ1LmRvY0NoYW5nZWQpIHtcbiAgICAgICAgY29uc3QgdGV4dCA9IHZ1LnN0YXRlLmRvYy50b1N0cmluZygpO1xuICAgICAgICAvLyB0aGlzLndyaXRlVmFsdWUodGV4dCk7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0ZXh0O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3RhdGUgPSBzdGF0ZU1vZC5FZGl0b3JTdGF0ZS5jcmVhdGUoe1xuICAgICAgZG9jOiB0aGlzLnZhbHVlID8/ICcnLFxuICAgICAgZXh0ZW5zaW9uczogWy4uLmJhc2VFeHRlbnNpb25zLCB1cGRhdGVMaXN0ZW5lcl0sXG4gICAgfSk7XG5cbiAgICBjb25zdCB2aWV3ID0gbmV3IHZpZXdNb2QuRWRpdG9yVmlldyh7IHN0YXRlLCBwYXJlbnQ6IGhvc3RFbCB9KTtcblxuICAgIC8vIFVwZGF0ZSBsaXN0ZW5lciBmb3IgZXh0ZXJuYWwgY2hhbmdlcyAoc2VsZWN0aW9uLCB2aWV3cG9ydCwgZXRjLikgaWYgbmVlZGVkIGxhdGVyXG4gICAgdmlldy5kaXNwYXRjaCh7IGVmZmVjdHM6IFtdIH0pO1xuXG4gICAgdGhpcy5lZGl0b3JWaWV3U2lnLnNldCh2aWV3KTtcblxuICAgIHRoaXMuZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgdmlldy5kZXN0cm95KCk7XG4gICAgICB0aGlzLmVkaXRvclZpZXdTaWcuc2V0KG51bGwpO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuZm9jdXNPblJlYWR5KCkpIHtcbiAgICAgIHZpZXcuZm9jdXMoKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlYWR5LmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb25maWd1cmUoY29tcDogQVhDb2RlRWRpdG9yQ29tcGFydG1lbnRMaWtlIHwgbnVsbCwgZXh0OiBBWENvZGVFZGl0b3JFeHRlbnNpb25MaWtlKTogdm9pZCB7XG4gICAgY29uc3QgdmlldyA9IHRoaXMuZWRpdG9yVmlld1NpZygpO1xuICAgIGlmICghdmlldyB8fCAhY29tcCkgcmV0dXJuO1xuICAgIHZpZXcuZGlzcGF0Y2goeyBlZmZlY3RzOiBjb21wLnJlY29uZmlndXJlKGV4dCkgfSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBDdHJsL0NtZCtTIG9uIHRoZSBob3N0LiBJZiBmb3JtYXRPblNhdmUgaXMgZW5hYmxlZCwgYXR0ZW1wdHNcbiAgICogdG8gZm9ybWF0IHRoZSBkb2N1bWVudCBmaXJzdCwgdGhlbiBlbWl0cyB0aGUgc2F2ZWQgdGV4dC5cbiAgICovXG4gIGFzeW5jIG9uU2F2ZVNob3J0Y3V0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCB2aWV3ID0gdGhpcy5lZGl0b3JWaWV3U2lnKCk7XG4gICAgY29uc3QgY3VycmVudCA9IHZpZXc/LnN0YXRlLmRvYy50b1N0cmluZygpID8/IHRoaXMudmFsdWUgPz8gJyc7XG4gICAgY29uc3QgcGF5bG9hZCA9IGN1cnJlbnQ7XG4gICAgaWYgKHRoaXMuZm9ybWF0T25TYXZlKCkpIHtcbiAgICAgIGF3YWl0IHRoaXMuZm9ybWF0KHRydWUpO1xuICAgIH1cbiAgICB0aGlzLnNhdmUuZW1pdChwYXlsb2FkKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZENvZGVNaXJyb3JNb2R1bGVzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IFt2aWV3TW9kLCBzdGF0ZU1vZCwgbGFuZ01vZCwgYXV0b01vZCwgY21kTW9kLCBzZWFyY2hNb2QsIGxpbnRNb2RdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgaW1wb3J0KCdAY29kZW1pcnJvci92aWV3JyksXG4gICAgICBpbXBvcnQoJ0Bjb2RlbWlycm9yL3N0YXRlJyksXG4gICAgICBpbXBvcnQoJ0Bjb2RlbWlycm9yL2xhbmd1YWdlJyksXG4gICAgICBpbXBvcnQoJ0Bjb2RlbWlycm9yL2F1dG9jb21wbGV0ZScpLFxuICAgICAgaW1wb3J0KCdAY29kZW1pcnJvci9jb21tYW5kcycpLFxuICAgICAgaW1wb3J0KCdAY29kZW1pcnJvci9zZWFyY2gnKSxcbiAgICAgIGltcG9ydCgnQGNvZGVtaXJyb3IvbGludCcpLFxuICAgIF0pO1xuICAgIHRoaXMuY20udmlldyA9IHZpZXdNb2Q7XG4gICAgdGhpcy5jbS5zdGF0ZSA9IHN0YXRlTW9kO1xuICAgIHRoaXMuY20ubGFuZ3VhZ2UgPSBsYW5nTW9kO1xuICAgIHRoaXMuY20uYXV0b2NvbXBsZXRlID0gYXV0b01vZDtcbiAgICB0aGlzLmNtLmNvbW1hbmRzID0gY21kTW9kO1xuICAgIHRoaXMuY20uc2VhcmNoID0gc2VhcmNoTW9kO1xuICAgIHRoaXMuY20ubGludCA9IGxpbnRNb2Q7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNvbXBhcnRtZW50cygpOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZU1vZCA9IHRoaXMuY20uc3RhdGU7XG4gICAgaWYgKCFzdGF0ZU1vZCkgcmV0dXJuO1xuICAgIHRoaXMubGFuZ3VhZ2VDb21wYXJ0bWVudCA9IG5ldyBzdGF0ZU1vZC5Db21wYXJ0bWVudCgpO1xuICAgIHRoaXMucmVhZE9ubHlDb21wYXJ0bWVudCA9IG5ldyBzdGF0ZU1vZC5Db21wYXJ0bWVudCgpO1xuICAgIHRoaXMudGhlbWVDb21wYXJ0bWVudCA9IG5ldyBzdGF0ZU1vZC5Db21wYXJ0bWVudCgpO1xuICAgIHRoaXMucGxhY2Vob2xkZXJDb21wYXJ0bWVudCA9IG5ldyBzdGF0ZU1vZC5Db21wYXJ0bWVudCgpO1xuICAgIHRoaXMud3JhcHBpbmdDb21wYXJ0bWVudCA9IG5ldyBzdGF0ZU1vZC5Db21wYXJ0bWVudCgpO1xuICAgIHRoaXMudGFiU2l6ZUNvbXBhcnRtZW50ID0gbmV3IHN0YXRlTW9kLkNvbXBhcnRtZW50KCk7XG4gICAgdGhpcy5rZXltYXBFeHRyYXNDb21wYXJ0bWVudCA9IG5ldyBzdGF0ZU1vZC5Db21wYXJ0bWVudCgpO1xuICAgIHRoaXMubGluZU51bWJlcnNDb21wYXJ0bWVudCA9IG5ldyBzdGF0ZU1vZC5Db21wYXJ0bWVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEtleW1hcHMoKTogUmVhZG9ubHlBcnJheTxBWENvZGVFZGl0b3JLZXlCaW5kaW5nTGlrZT4ge1xuICAgIGNvbnN0IGNtZE1vZCA9IHRoaXMuY20uY29tbWFuZHM7XG4gICAgY29uc3Qgc2VhcmNoTW9kID0gdGhpcy5jbS5zZWFyY2g7XG4gICAgY29uc3QgYXV0b01vZCA9IHRoaXMuY20uYXV0b2NvbXBsZXRlO1xuICAgIGNvbnN0IGxpbnRNb2QgPSB0aGlzLmNtLmxpbnQ7XG4gICAgaWYgKCFjbWRNb2QgfHwgIXNlYXJjaE1vZCB8fCAhYXV0b01vZCB8fCAhbGludE1vZCkgcmV0dXJuIFtdO1xuICAgIHJldHVybiBbXG4gICAgICAuLi5jbWRNb2QuZGVmYXVsdEtleW1hcCxcbiAgICAgIC4uLmNtZE1vZC5oaXN0b3J5S2V5bWFwLFxuICAgICAgLi4uc2VhcmNoTW9kLnNlYXJjaEtleW1hcCxcbiAgICAgIC4uLmF1dG9Nb2QuY29tcGxldGlvbktleW1hcCxcbiAgICAgIC4uLmxpbnRNb2QubGludEtleW1hcCxcbiAgICBdO1xuICB9XG5cbiAgLy8gQXR0ZW1wdHMgdG8gZm9ybWF0IGNvZGUgdXNpbmcgUHJldHRpZXIgKGJyb3dzZXItb25seSkuIFJldHVybnMgZm9ybWF0dGVkIHRleHQgb3IgbnVsbCBvbiBmYWlsdXJlL3Vuc3VwcG9ydGVkLlxuICBwcml2YXRlIGFzeW5jIHRyeUZvcm1hdFdpdGhQcmV0dGllcih0ZXh0OiBzdHJpbmcsIGxhbmc6IEFYQ29kZUVkaXRvclN1cHBvcnRlZExhbmd1YWdlKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgaWYgKCF0aGlzLmlzQnJvd3NlcigpKSByZXR1cm4gbnVsbDtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcHJldHRpZXIgPSBhd2FpdCBpbXBvcnQoJ3ByZXR0aWVyL3N0YW5kYWxvbmUnKTtcbiAgICAgIGxldCBwYXJzZXI6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgICAgY29uc3QgcGx1Z2luczogYW55W10gPSBbXTtcblxuICAgICAgc3dpdGNoIChsYW5nKSB7XG4gICAgICAgIGNhc2UgJ2phdmFzY3JpcHQnOlxuICAgICAgICBjYXNlICdqcyc6IHtcbiAgICAgICAgICBjb25zdCBbYmFiZWwsIGVzdHJlZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICBpbXBvcnQoJ3ByZXR0aWVyL3BsdWdpbnMvYmFiZWwnKSxcbiAgICAgICAgICAgIGltcG9ydCgncHJldHRpZXIvcGx1Z2lucy9lc3RyZWUnKSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgICBwbHVnaW5zLnB1c2goYmFiZWwsIGVzdHJlZSk7XG4gICAgICAgICAgcGFyc2VyID0gJ2JhYmVsJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICd0eXBlc2NyaXB0JzpcbiAgICAgICAgY2FzZSAndHMnOiB7XG4gICAgICAgICAgY29uc3QgW3R5cGVzY3JpcHQsIGVzdHJlZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICBpbXBvcnQoJ3ByZXR0aWVyL3BsdWdpbnMvdHlwZXNjcmlwdCcpLFxuICAgICAgICAgICAgaW1wb3J0KCdwcmV0dGllci9wbHVnaW5zL2VzdHJlZScpLFxuICAgICAgICAgIF0pO1xuICAgICAgICAgIHBsdWdpbnMucHVzaCh0eXBlc2NyaXB0LCBlc3RyZWUpO1xuICAgICAgICAgIHBhcnNlciA9ICd0eXBlc2NyaXB0JztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdqc29uJzoge1xuICAgICAgICAgIGNvbnN0IFtiYWJlbCwgZXN0cmVlXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgIGltcG9ydCgncHJldHRpZXIvcGx1Z2lucy9iYWJlbCcpLFxuICAgICAgICAgICAgaW1wb3J0KCdwcmV0dGllci9wbHVnaW5zL2VzdHJlZScpLFxuICAgICAgICAgIF0pO1xuICAgICAgICAgIHBsdWdpbnMucHVzaChiYWJlbCwgZXN0cmVlKTtcbiAgICAgICAgICBwYXJzZXIgPSAnanNvbic7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnaHRtbCc6IHtcbiAgICAgICAgICBjb25zdCBodG1sID0gYXdhaXQgaW1wb3J0KCdwcmV0dGllci9wbHVnaW5zL2h0bWwnKTtcbiAgICAgICAgICBwbHVnaW5zLnB1c2goaHRtbCk7XG4gICAgICAgICAgcGFyc2VyID0gJ2h0bWwnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2Nzcyc6IHtcbiAgICAgICAgICBjb25zdCBwb3N0Y3NzID0gYXdhaXQgaW1wb3J0KCdwcmV0dGllci9wbHVnaW5zL3Bvc3Rjc3MnKTtcbiAgICAgICAgICBwbHVnaW5zLnB1c2gocG9zdGNzcyk7XG4gICAgICAgICAgcGFyc2VyID0gJ2Nzcyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnbWFya2Rvd24nOiB7XG4gICAgICAgICAgY29uc3QgbWFya2Rvd24gPSBhd2FpdCBpbXBvcnQoJ3ByZXR0aWVyL3BsdWdpbnMvbWFya2Rvd24nKTtcbiAgICAgICAgICBwbHVnaW5zLnB1c2gobWFya2Rvd24pO1xuICAgICAgICAgIHBhcnNlciA9ICdtYXJrZG93bic7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKCFwYXJzZXIpIHJldHVybiBudWxsO1xuICAgICAgY29uc3QgZm9ybWF0dGVkID0gYXdhaXQgcHJldHRpZXIuZm9ybWF0KHRleHQsIHtcbiAgICAgICAgcGFyc2VyLFxuICAgICAgICBwbHVnaW5zLFxuICAgICAgfSBhcyBhbnkpO1xuICAgICAgcmV0dXJuIGZvcm1hdHRlZDtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzb2x2ZUxhbmd1YWdlRXh0ZW5zaW9uKGxhbmc6IEFYQ29kZUVkaXRvclN1cHBvcnRlZExhbmd1YWdlKTogUHJvbWlzZTxBWENvZGVFZGl0b3JFeHRlbnNpb25MaWtlPiB7XG4gICAgc3dpdGNoIChsYW5nKSB7XG4gICAgICBjYXNlICdqYXZhc2NyaXB0JzpcbiAgICAgIGNhc2UgJ2pzJzoge1xuICAgICAgICBjb25zdCBtID0gYXdhaXQgaW1wb3J0KCdAY29kZW1pcnJvci9sYW5nLWphdmFzY3JpcHQnKTtcbiAgICAgICAgcmV0dXJuIG0uamF2YXNjcmlwdCgpO1xuICAgICAgfVxuICAgICAgY2FzZSAndHlwZXNjcmlwdCc6XG4gICAgICBjYXNlICd0cyc6IHtcbiAgICAgICAgY29uc3QgbSA9IGF3YWl0IGltcG9ydCgnQGNvZGVtaXJyb3IvbGFuZy1qYXZhc2NyaXB0Jyk7XG4gICAgICAgIHJldHVybiBtLmphdmFzY3JpcHQoeyB0eXBlc2NyaXB0OiB0cnVlIH0pO1xuICAgICAgfVxuICAgICAgY2FzZSAnanNvbic6IHtcbiAgICAgICAgY29uc3QgbSA9IGF3YWl0IGltcG9ydCgnQGNvZGVtaXJyb3IvbGFuZy1qc29uJyk7XG4gICAgICAgIHJldHVybiBtLmpzb24oKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2h0bWwnOiB7XG4gICAgICAgIGNvbnN0IG0gPSBhd2FpdCBpbXBvcnQoJ0Bjb2RlbWlycm9yL2xhbmctaHRtbCcpO1xuICAgICAgICByZXR1cm4gbS5odG1sKCk7XG4gICAgICB9XG4gICAgICBjYXNlICdjc3MnOiB7XG4gICAgICAgIGNvbnN0IG0gPSBhd2FpdCBpbXBvcnQoJ0Bjb2RlbWlycm9yL2xhbmctY3NzJyk7XG4gICAgICAgIHJldHVybiBtLmNzcygpO1xuICAgICAgfVxuICAgICAgY2FzZSAnc2Nzcyc6XG4gICAgICBjYXNlICdzYXNzJzoge1xuICAgICAgICBjb25zdCBtID0gYXdhaXQgaW1wb3J0KCdAY29kZW1pcnJvci9sYW5nLXNhc3MnKTtcbiAgICAgICAgcmV0dXJuIG0uc2FzcygpO1xuICAgICAgfVxuICAgICAgY2FzZSAnc3FsJzoge1xuICAgICAgICBjb25zdCBtID0gYXdhaXQgaW1wb3J0KCdAY29kZW1pcnJvci9sYW5nLXNxbCcpO1xuICAgICAgICByZXR1cm4gbS5zcWwoKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3htbCc6IHtcbiAgICAgICAgY29uc3QgbSA9IGF3YWl0IGltcG9ydCgnQGNvZGVtaXJyb3IvbGFuZy14bWwnKTtcbiAgICAgICAgcmV0dXJuIG0ueG1sKCk7XG4gICAgICB9XG4gICAgICBjYXNlICdtYXJrZG93bic6IHtcbiAgICAgICAgY29uc3QgbSA9IGF3YWl0IGltcG9ydCgnQGNvZGVtaXJyb3IvbGFuZy1tYXJrZG93bicpO1xuICAgICAgICByZXR1cm4gbS5tYXJrZG93bigpO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzb2x2ZVRoZW1lRXh0ZW5zaW9uKCk6IFByb21pc2U8QVhDb2RlRWRpdG9yRXh0ZW5zaW9uTGlrZT4ge1xuICAgIGNvbnN0IHsgRWRpdG9yVmlldyB9ID0gYXdhaXQgaW1wb3J0KCdAY29kZW1pcnJvci92aWV3Jyk7XG4gICAgY29uc3QgZGFya01vZGUgPSB0aGlzLnBsYXRmb3JtU2VydmljZS50aGVtZU1vZGUoKSA9PT0gJ2RhcmsnO1xuICAgIC8vIGNvbnN0IHN1cmZhY2VWYXIgPSAncmdiKHZhcigtLWF4LXN5cy1jb2xvci1zdXJmYWNlKSkgIWltcG9ydGFudCc7XG4gICAgaWYgKGRhcmtNb2RlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB7IG9uZURhcmsgfSA9IGF3YWl0IGltcG9ydCgnQGNvZGVtaXJyb3IvdGhlbWUtb25lLWRhcmsnKTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBvbmVEYXJrLFxuICAgICAgICAgIEVkaXRvclZpZXcudGhlbWUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICcmJzogeyBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCAhaW1wb3J0YW50JyB9LFxuICAgICAgICAgICAgICAnLmNtLWd1dHRlcnMnOiB7fSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGRhcms6IHRydWUgfSxcbiAgICAgICAgICApLFxuICAgICAgICBdO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBFZGl0b3JWaWV3LnRoZW1lKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgICcmJzogeyBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCAhaW1wb3J0YW50JyB9LFxuICAgICAgICAgICAgJy5jbS1ndXR0ZXJzJzoge30sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IGRhcms6IHRydWUgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIEVkaXRvclZpZXcudGhlbWUoXG4gICAgICB7XG4gICAgICAgICcmJzogeyBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCAhaW1wb3J0YW50JyB9LFxuICAgICAgICAnLmNtLWd1dHRlcnMnOiB7fSxcbiAgICAgIH0sXG4gICAgICB7IGRhcms6IGZhbHNlIH0sXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDdXN0b21Db21wbGV0aW9uU291cmNlcygpOiBSZWFkb25seUFycmF5PEFYQ29kZUVkaXRvckNvbXBsZXRpb25Tb3VyY2VMaWtlPiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgcHJvdmlkZWQgPSB0aGlzLmN1c3RvbUNvbXBsZXRpb25zKCk7XG4gICAgaWYgKCFwcm92aWRlZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAodHlwZW9mIHByb3ZpZGVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gW3Byb3ZpZGVkIGFzIEFYQ29kZUVkaXRvckNvbXBsZXRpb25Tb3VyY2VMaWtlXTtcbiAgICB9XG4gICAgLy8gVHJlYXQgYXJyYXkgYXMgYSBzdGF0aWMgY29tcGxldGlvbiBsaXN0XG4gICAgY29uc3Qgc3RhdGljU291cmNlOiBBWENvZGVFZGl0b3JDb21wbGV0aW9uU291cmNlTGlrZSA9IChjb250ZXh0OiBBWENvZGVFZGl0b3JDb21wbGV0aW9uQ29udGV4dExpa2UpID0+IHtcbiAgICAgIGNvbnN0IGZyb20gPSBjb250ZXh0LnBvcztcbiAgICAgIHJldHVybiB7IGZyb20sIG9wdGlvbnM6IHByb3ZpZGVkIGFzIFJlYWRvbmx5QXJyYXk8QVhDb2RlRWRpdG9yQ29tcGxldGlvbkxpa2U+IH07XG4gICAgfTtcbiAgICByZXR1cm4gW3N0YXRpY1NvdXJjZV07XG4gIH1cblxuICAvLyBQdWJsaWMgQVBJXG4gIC8qKiBQcm9ncmFtbWF0aWNhbGx5IGZvY3VzIHRoZSBlZGl0b3IuICovXG4gIHB1YmxpYyBvdmVycmlkZSBmb2N1cygpOiB2b2lkIHtcbiAgICBjb25zdCB2aWV3ID0gdGhpcy5lZGl0b3JWaWV3U2lnKCk7XG4gICAgaWYgKHZpZXcpIHZpZXcuZm9jdXMoKTtcbiAgfVxuXG4gIC8qKiBTZWxlY3QgYWxsIHRleHQgaW4gdGhlIGN1cnJlbnQgZG9jdW1lbnQuICovXG4gIHB1YmxpYyBzZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgY29uc3QgdmlldyA9IHRoaXMuZWRpdG9yVmlld1NpZygpO1xuICAgIGlmICghdmlldykgcmV0dXJuO1xuICAgIGNvbnN0IGxlbmd0aCA9IHZpZXcuc3RhdGUuZG9jLmxlbmd0aDtcbiAgICB2aWV3LmRpc3BhdGNoKHsgc2VsZWN0aW9uOiB7IGFuY2hvcjogMCwgaGVhZDogbGVuZ3RoIH0gfSk7XG4gIH1cblxuICAvLyBGb3JtYXRzIHRoZSBjdXJyZW50IGRvY3VtZW50IHdpdGggUHJldHRpZXIgKGlmIGF2YWlsYWJsZSBmb3IgdGhlIGFjdGl2ZSBsYW5ndWFnZSkuXG4gIC8vIFJldHVybnMgdGhlIGZvcm1hdHRlZCB0ZXh0IG9yIG51bGwgaWYgdW5jaGFuZ2VkL3Vuc3VwcG9ydGVkLlxuICBwdWJsaWMgYXN5bmMgZm9ybWF0KGFmZmVjdCA9IHRydWUpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICBjb25zdCB2aWV3ID0gdGhpcy5lZGl0b3JWaWV3U2lnKCk7XG4gICAgaWYgKCF2aWV3KSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBzb3VyY2UgPSB2aWV3LnN0YXRlLmRvYy50b1N0cmluZygpO1xuICAgIGlmICghc291cmNlKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBmb3JtYXR0ZWQgPSBhd2FpdCB0aGlzLnRyeUZvcm1hdFdpdGhQcmV0dGllcihzb3VyY2UsIHRoaXMubGFuZ3VhZ2UoKSk7XG4gICAgaWYgKCFmb3JtYXR0ZWQgfHwgZm9ybWF0dGVkID09PSBzb3VyY2UpIHJldHVybiBudWxsO1xuICAgIGlmIChhZmZlY3QpIHtcbiAgICAgIHZpZXcuZGlzcGF0Y2goeyBjaGFuZ2VzOiB7IGZyb206IDAsIHRvOiB2aWV3LnN0YXRlLmRvYy5sZW5ndGgsIGluc2VydDogZm9ybWF0dGVkIH0gfSk7XG4gICAgfVxuICAgIHJldHVybiBmb3JtYXR0ZWQ7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhlIGN1cnJlbnQgZG9jdW1lbnQuICovXG4gIHB1YmxpYyBnZXRUb3RhbENoYXJhY3RlcnMoKTogbnVtYmVyIHtcbiAgICBjb25zdCB2aWV3ID0gdGhpcy5lZGl0b3JWaWV3U2lnKCk7XG4gICAgaWYgKHZpZXcpIHJldHVybiB2aWV3LnN0YXRlLmRvYy5sZW5ndGggPz8gMDtcbiAgICBjb25zdCB0ZXh0ID0gdGhpcy52YWx1ZSA/PyAnJztcbiAgICByZXR1cm4gdGV4dC5sZW5ndGg7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGxpbmVzIGluIHRoZSBjdXJyZW50IGRvY3VtZW50LiAqL1xuICBwdWJsaWMgZ2V0VG90YWxMaW5lcygpOiBudW1iZXIge1xuICAgIGNvbnN0IHZpZXcgPSB0aGlzLmVkaXRvclZpZXdTaWcoKTtcbiAgICBpZiAodmlldykge1xuICAgICAgY29uc3QgZG9jOiBhbnkgPSB2aWV3LnN0YXRlLmRvYztcbiAgICAgIHJldHVybiB0eXBlb2YgZG9jPy5saW5lcyA9PT0gJ251bWJlcicgPyBkb2MubGluZXMgOiBkb2MudG9TdHJpbmcoKS5zcGxpdCgvXFxyP1xcbi8pLmxlbmd0aDtcbiAgICB9XG4gICAgY29uc3QgdGV4dCA9IHRoaXMudmFsdWUgPz8gJyc7XG4gICAgcmV0dXJuIHRleHQgPyB0ZXh0LnNwbGl0KC9cXHI/XFxuLykubGVuZ3RoIDogMTtcbiAgfVxufVxuIl19","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXCodeEditorComponent } from './code-editor.component';\nimport * as i0 from \"@angular/core\";\nexport class AXCodeEditorModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXCodeEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.4\", ngImport: i0, type: AXCodeEditorModule, imports: [CommonModule, AXCodeEditorComponent], exports: [AXCodeEditorComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXCodeEditorModule, imports: [CommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXCodeEditorModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, AXCodeEditorComponent],\n exports: [AXCodeEditorComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1lZGl0b3IubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb2RlLWVkaXRvci9zcmMvbGliL2NvZGUtZWRpdG9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFNaEUsTUFBTSxPQUFPLGtCQUFrQjs4R0FBbEIsa0JBQWtCOytHQUFsQixrQkFBa0IsWUFIbkIsWUFBWSxFQUFFLHFCQUFxQixhQUNuQyxxQkFBcUI7K0dBRXBCLGtCQUFrQixZQUhuQixZQUFZOzsyRkFHWCxrQkFBa0I7a0JBSjlCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLHFCQUFxQixDQUFDO29CQUM5QyxPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQ29kZUVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4vY29kZS1lZGl0b3IuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQVhDb2RlRWRpdG9yQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW0FYQ29kZUVkaXRvckNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYQ29kZUVkaXRvck1vZHVsZSB7fVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtY29kZS1lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvZGUtZWRpdG9yL3NyYy9hY29yZXgtY29tcG9uZW50cy1jb2RlLWVkaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}