@openziti/ziti-console-lib 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (563) hide show
  1. package/assets/styles/global.scss +70 -0
  2. package/fesm2022/openziti-ziti-console-lib.mjs +2136 -1327
  3. package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
  4. package/index.d.ts +5689 -6
  5. package/index.d.ts.map +1 -0
  6. package/package.json +10 -12
  7. package/esm2022/lib/ZAC_VERSION.mjs +0 -4
  8. package/esm2022/lib/app.initializer.mjs +0 -24
  9. package/esm2022/lib/default-app-config.mjs +0 -5
  10. package/esm2022/lib/features/card/card.component.mjs +0 -34
  11. package/esm2022/lib/features/card-list/card-list.component.mjs +0 -55
  12. package/esm2022/lib/features/config-editor/config-editor.component.mjs +0 -337
  13. package/esm2022/lib/features/confirm/confirm.component.mjs +0 -77
  14. package/esm2022/lib/features/creation-summary-dialog/creation-summary-dialog.component.mjs +0 -93
  15. package/esm2022/lib/features/custom-tags/custom-tags.component.mjs +0 -111
  16. package/esm2022/lib/features/data-table/cells/table-cell-menu/table-cell-menu.component.mjs +0 -46
  17. package/esm2022/lib/features/data-table/cells/table-cell-name/table-cell-name.component.mjs +0 -49
  18. package/esm2022/lib/features/data-table/cells/table-cell-select/table-cell-select.component.mjs +0 -58
  19. package/esm2022/lib/features/data-table/cells/table-cell-token/table-cell-token.component.mjs +0 -123
  20. package/esm2022/lib/features/data-table/column-headers/table-column-default/table-column-default.component.mjs +0 -268
  21. package/esm2022/lib/features/data-table/column-headers/table-column-filter/table-column-filter.component.mjs +0 -93
  22. package/esm2022/lib/features/data-table/column-headers/table-column-menu/table-column-menu.component.mjs +0 -37
  23. package/esm2022/lib/features/data-table/column-headers/table-column-select/table-column-select.component.mjs +0 -33
  24. package/esm2022/lib/features/data-table/data-table-filter.service.mjs +0 -138
  25. package/esm2022/lib/features/data-table/data-table.component.mjs +0 -918
  26. package/esm2022/lib/features/data-table/data-table.service.mjs +0 -98
  27. package/esm2022/lib/features/data-table/table-filter-bar/filter-bar.component.mjs +0 -108
  28. package/esm2022/lib/features/data-table/table-hidden-columns-bar/hidden-columns-bar.component.mjs +0 -26
  29. package/esm2022/lib/features/data-table/tooltips/os-tooltip.component.mjs +0 -29
  30. package/esm2022/lib/features/data-table/tooltips/sdk-tooltip.component.mjs +0 -34
  31. package/esm2022/lib/features/dynamic-widgets/boolean/boolean-toggle-input.component.mjs +0 -72
  32. package/esm2022/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.mjs +0 -134
  33. package/esm2022/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.mjs +0 -189
  34. package/esm2022/lib/features/dynamic-widgets/forwarding-config/forwarding-config.service.mjs +0 -50
  35. package/esm2022/lib/features/dynamic-widgets/number/number-input.component.mjs +0 -95
  36. package/esm2022/lib/features/dynamic-widgets/object/object.component.mjs +0 -121
  37. package/esm2022/lib/features/dynamic-widgets/password/password-input.component.mjs +0 -83
  38. package/esm2022/lib/features/dynamic-widgets/port-ranges/port-ranges.component.mjs +0 -100
  39. package/esm2022/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.mjs +0 -201
  40. package/esm2022/lib/features/dynamic-widgets/selector/selector-input.component.mjs +0 -166
  41. package/esm2022/lib/features/dynamic-widgets/string/string-input.component.mjs +0 -108
  42. package/esm2022/lib/features/dynamic-widgets/text-list/text-list-input.component.mjs +0 -126
  43. package/esm2022/lib/features/extendable/extendable.component.mjs +0 -55
  44. package/esm2022/lib/features/extendable/extensions-noop.service.mjs +0 -52
  45. package/esm2022/lib/features/header-bar/header-bar.component.mjs +0 -105
  46. package/esm2022/lib/features/json-view/json-view.component.mjs +0 -212
  47. package/esm2022/lib/features/list-page-features/list-page-form/list-page-form.component.mjs +0 -138
  48. package/esm2022/lib/features/list-page-features/list-page-header/list-page-header.component.mjs +0 -66
  49. package/esm2022/lib/features/loading-indicator/loading-indicator.component.mjs +0 -29
  50. package/esm2022/lib/features/login/login-dialog.component.mjs +0 -121
  51. package/esm2022/lib/features/messaging/growler.component.mjs +0 -62
  52. package/esm2022/lib/features/messaging/growler.model.mjs +0 -24
  53. package/esm2022/lib/features/messaging/growler.module.mjs +0 -34
  54. package/esm2022/lib/features/messaging/growler.service.mjs +0 -71
  55. package/esm2022/lib/features/messaging/logger.service.mjs +0 -174
  56. package/esm2022/lib/features/multi-action-button/multi-action-button.component.mjs +0 -30
  57. package/esm2022/lib/features/no-items/no-items.component.mjs +0 -46
  58. package/esm2022/lib/features/overrides/overrides.component.mjs +0 -118
  59. package/esm2022/lib/features/overrides/overrides.service.mjs +0 -114
  60. package/esm2022/lib/features/preview-list/preview-list.component.mjs +0 -151
  61. package/esm2022/lib/features/preview-selections/preview-selections.component.mjs +0 -114
  62. package/esm2022/lib/features/progress-meter/progress-meter.component.mjs +0 -43
  63. package/esm2022/lib/features/progress-wizard/progress-wizard.component.mjs +0 -90
  64. package/esm2022/lib/features/projectable-forms/api-session/api-session-form.component.mjs +0 -143
  65. package/esm2022/lib/features/projectable-forms/api-session/api-session-form.service.mjs +0 -118
  66. package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.component.mjs +0 -337
  67. package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.service.mjs +0 -114
  68. package/esm2022/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.mjs +0 -399
  69. package/esm2022/lib/features/projectable-forms/certificate-authority/certificate-authority-form.service.mjs +0 -95
  70. package/esm2022/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.mjs +0 -217
  71. package/esm2022/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.service.mjs +0 -54
  72. package/esm2022/lib/features/projectable-forms/config-type/config-type-form.component.mjs +0 -244
  73. package/esm2022/lib/features/projectable-forms/config-type/config-type-form.service.mjs +0 -92
  74. package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +0 -275
  75. package/esm2022/lib/features/projectable-forms/configuration/configuration.service.mjs +0 -137
  76. package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +0 -231
  77. package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.service.mjs +0 -118
  78. package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.mjs +0 -277
  79. package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.mjs +0 -188
  80. package/esm2022/lib/features/projectable-forms/form-field-container/form-field-container.component.mjs +0 -101
  81. package/esm2022/lib/features/projectable-forms/form-field-toggle/form-field-toggle.component.mjs +0 -54
  82. package/esm2022/lib/features/projectable-forms/form-header/form-header.component.mjs +0 -135
  83. package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +0 -471
  84. package/esm2022/lib/features/projectable-forms/identity/identity-form.service.mjs +0 -131
  85. package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.mjs +0 -533
  86. package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.service.mjs +0 -79
  87. package/esm2022/lib/features/projectable-forms/posture-check/posture-check-form.component.mjs +0 -437
  88. package/esm2022/lib/features/projectable-forms/posture-check/posture-check-form.service.mjs +0 -81
  89. package/esm2022/lib/features/projectable-forms/projectable-form.class.mjs +0 -315
  90. package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +0 -330
  91. package/esm2022/lib/features/projectable-forms/service/service-form.service.mjs +0 -591
  92. package/esm2022/lib/features/projectable-forms/service/simple-service/simple-service.component.mjs +0 -1036
  93. package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.mjs +0 -275
  94. package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.mjs +0 -172
  95. package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.component.mjs +0 -279
  96. package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.service.mjs +0 -230
  97. package/esm2022/lib/features/projectable-forms/session/session-form.component.mjs +0 -213
  98. package/esm2022/lib/features/projectable-forms/session/session-form.service.mjs +0 -84
  99. package/esm2022/lib/features/projectable-forms/terminator/terminator-form.component.mjs +0 -244
  100. package/esm2022/lib/features/projectable-forms/terminator/terminator-form.service.mjs +0 -130
  101. package/esm2022/lib/features/projectable-forms/transit-router/transit-router-form.component.mjs +0 -224
  102. package/esm2022/lib/features/projectable-forms/transit-router/transit-router-form.service.mjs +0 -118
  103. package/esm2022/lib/features/qr-code/qr-code.component.mjs +0 -166
  104. package/esm2022/lib/features/quick-add/quick-add.component.mjs +0 -50
  105. package/esm2022/lib/features/reset-enrollment/reset-enrollment.component.mjs +0 -86
  106. package/esm2022/lib/features/reset-enrollment/reset-enrollment.service.mjs +0 -61
  107. package/esm2022/lib/features/side-modal/side-modal.component.mjs +0 -45
  108. package/esm2022/lib/features/side-navigator/side-navigator.component.mjs +0 -127
  109. package/esm2022/lib/features/sidebars/side-navbar/side-navbar.component.mjs +0 -54
  110. package/esm2022/lib/features/tag-selector/tag-selector.component.mjs +0 -291
  111. package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.component.mjs +0 -586
  112. package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.helper.mjs +0 -373
  113. package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.component.mjs +0 -1706
  114. package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.helper.mjs +0 -591
  115. package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.treenodeprocessor.mjs +0 -883
  116. package/esm2022/lib/features/visualizer/visualizer-service.class.mjs +0 -32
  117. package/esm2022/lib/models/api-session.mjs +0 -7
  118. package/esm2022/lib/models/auth-policy.mjs +0 -31
  119. package/esm2022/lib/models/certificate-authority.mjs +0 -16
  120. package/esm2022/lib/models/config-type.mjs +0 -10
  121. package/esm2022/lib/models/config.mjs +0 -10
  122. package/esm2022/lib/models/edge-router-policy.mjs +0 -11
  123. package/esm2022/lib/models/edge-router.mjs +0 -13
  124. package/esm2022/lib/models/identity.mjs +0 -34
  125. package/esm2022/lib/models/jwt-signer.mjs +0 -20
  126. package/esm2022/lib/models/posture-check.mjs +0 -29
  127. package/esm2022/lib/models/service-edge-router-policy.mjs +0 -11
  128. package/esm2022/lib/models/service-policy.mjs +0 -13
  129. package/esm2022/lib/models/service.mjs +0 -12
  130. package/esm2022/lib/models/session.mjs +0 -7
  131. package/esm2022/lib/models/terminator.mjs +0 -14
  132. package/esm2022/lib/pages/api-sessions/api-sessions-page.component.mjs +0 -112
  133. package/esm2022/lib/pages/api-sessions/api-sessions-page.service.mjs +0 -235
  134. package/esm2022/lib/pages/attributes/attributes.component.mjs +0 -104
  135. package/esm2022/lib/pages/auth-policies/auth-policies-page.component.mjs +0 -120
  136. package/esm2022/lib/pages/auth-policies/auth-policies-page.service.mjs +0 -215
  137. package/esm2022/lib/pages/callback/callback.component.mjs +0 -155
  138. package/esm2022/lib/pages/certificate-authorities/certificate-authorities-page.component.mjs +0 -119
  139. package/esm2022/lib/pages/certificate-authorities/certificate-authorities-page.service.mjs +0 -240
  140. package/esm2022/lib/pages/config-types/config-types-page.component.mjs +0 -130
  141. package/esm2022/lib/pages/config-types/config-types-page.service.mjs +0 -134
  142. package/esm2022/lib/pages/configurations/configurations-page.component.mjs +0 -134
  143. package/esm2022/lib/pages/configurations/configurations-page.service.mjs +0 -251
  144. package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.component.mjs +0 -128
  145. package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.service.mjs +0 -407
  146. package/esm2022/lib/pages/edge-routers/edge-routers-page.component.mjs +0 -136
  147. package/esm2022/lib/pages/edge-routers/edge-routers-page.service.mjs +0 -354
  148. package/esm2022/lib/pages/geolocate/geolocate.component.mjs +0 -130
  149. package/esm2022/lib/pages/identities/identities-page.component.mjs +0 -221
  150. package/esm2022/lib/pages/identities/identities-page.service.mjs +0 -591
  151. package/esm2022/lib/pages/jwt-signers/jwt-signers-page.component.mjs +0 -160
  152. package/esm2022/lib/pages/jwt-signers/jwt-signers-page.service.mjs +0 -177
  153. package/esm2022/lib/pages/posture-checks/posture-checks-page.component.mjs +0 -103
  154. package/esm2022/lib/pages/posture-checks/posture-checks-page.service.mjs +0 -200
  155. package/esm2022/lib/pages/profile/profile.component.mjs +0 -58
  156. package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.mjs +0 -122
  157. package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.mjs +0 -367
  158. package/esm2022/lib/pages/service-policies/service-policies-page.component.mjs +0 -124
  159. package/esm2022/lib/pages/service-policies/service-policies-page.service.mjs +0 -446
  160. package/esm2022/lib/pages/services/services-page.component.mjs +0 -218
  161. package/esm2022/lib/pages/services/services-page.service.mjs +0 -378
  162. package/esm2022/lib/pages/sessions/sessions-page.component.mjs +0 -112
  163. package/esm2022/lib/pages/sessions/sessions-page.service.mjs +0 -228
  164. package/esm2022/lib/pages/settings/settings.component.mjs +0 -61
  165. package/esm2022/lib/pages/terminators/terminators-page.component.mjs +0 -97
  166. package/esm2022/lib/pages/terminators/terminators-page.service.mjs +0 -235
  167. package/esm2022/lib/pages/transit-routers/transit-routers-page.component.mjs +0 -129
  168. package/esm2022/lib/pages/transit-routers/transit-routers-page.service.mjs +0 -248
  169. package/esm2022/lib/safe.pipe.mjs +0 -18
  170. package/esm2022/lib/services/auth.service.mjs +0 -94
  171. package/esm2022/lib/services/console-events.service.mjs +0 -20
  172. package/esm2022/lib/services/csv-download.service.mjs +0 -91
  173. package/esm2022/lib/services/deactivate-guard.service.mjs +0 -17
  174. package/esm2022/lib/services/login-service.class.mjs +0 -47
  175. package/esm2022/lib/services/node-data.service.mjs +0 -397
  176. package/esm2022/lib/services/noop-login.service.mjs +0 -41
  177. package/esm2022/lib/services/schema.service.mjs +0 -807
  178. package/esm2022/lib/services/settings-service.class.mjs +0 -120
  179. package/esm2022/lib/services/settings.service.mjs +0 -203
  180. package/esm2022/lib/services/tab-name.service.mjs +0 -76
  181. package/esm2022/lib/services/validation.service.mjs +0 -156
  182. package/esm2022/lib/services/ziti-controller-data.service.mjs +0 -340
  183. package/esm2022/lib/services/ziti-data.service.mjs +0 -100
  184. package/esm2022/lib/services/ziti-domain-controller.service.mjs +0 -3
  185. package/esm2022/lib/shared/list-page-component.class.mjs +0 -186
  186. package/esm2022/lib/shared/list-page-service.class.mjs +0 -244
  187. package/esm2022/lib/urls.mjs +0 -34
  188. package/esm2022/lib/zac-routing.module.mjs +0 -34
  189. package/esm2022/lib/ziti-console-lib.module.mjs +0 -538
  190. package/esm2022/lib/ziti-console.constants.mjs +0 -20
  191. package/esm2022/openziti-ziti-console-lib.mjs +0 -5
  192. package/esm2022/public-api.mjs +0 -130
  193. package/lib/ZAC_VERSION.d.ts +0 -4
  194. package/lib/ZAC_VERSION.d.ts.map +0 -1
  195. package/lib/app.initializer.d.ts +0 -3
  196. package/lib/app.initializer.d.ts.map +0 -1
  197. package/lib/default-app-config.d.ts +0 -9
  198. package/lib/default-app-config.d.ts.map +0 -1
  199. package/lib/features/card/card.component.d.ts +0 -13
  200. package/lib/features/card/card.component.d.ts.map +0 -1
  201. package/lib/features/card-list/card-list.component.d.ts +0 -27
  202. package/lib/features/card-list/card-list.component.d.ts.map +0 -1
  203. package/lib/features/config-editor/config-editor.component.d.ts +0 -50
  204. package/lib/features/config-editor/config-editor.component.d.ts.map +0 -1
  205. package/lib/features/confirm/confirm.component.d.ts +0 -34
  206. package/lib/features/confirm/confirm.component.d.ts.map +0 -1
  207. package/lib/features/creation-summary-dialog/creation-summary-dialog.component.d.ts +0 -32
  208. package/lib/features/creation-summary-dialog/creation-summary-dialog.component.d.ts.map +0 -1
  209. package/lib/features/custom-tags/custom-tags.component.d.ts +0 -37
  210. package/lib/features/custom-tags/custom-tags.component.d.ts.map +0 -1
  211. package/lib/features/data-table/cells/table-cell-menu/table-cell-menu.component.d.ts +0 -16
  212. package/lib/features/data-table/cells/table-cell-menu/table-cell-menu.component.d.ts.map +0 -1
  213. package/lib/features/data-table/cells/table-cell-name/table-cell-name.component.d.ts +0 -20
  214. package/lib/features/data-table/cells/table-cell-name/table-cell-name.component.d.ts.map +0 -1
  215. package/lib/features/data-table/cells/table-cell-select/table-cell-select.component.d.ts +0 -15
  216. package/lib/features/data-table/cells/table-cell-select/table-cell-select.component.d.ts.map +0 -1
  217. package/lib/features/data-table/cells/table-cell-token/table-cell-token.component.d.ts +0 -22
  218. package/lib/features/data-table/cells/table-cell-token/table-cell-token.component.d.ts.map +0 -1
  219. package/lib/features/data-table/column-headers/table-column-default/table-column-default.component.d.ts +0 -52
  220. package/lib/features/data-table/column-headers/table-column-default/table-column-default.component.d.ts.map +0 -1
  221. package/lib/features/data-table/column-headers/table-column-filter/table-column-filter.component.d.ts +0 -27
  222. package/lib/features/data-table/column-headers/table-column-filter/table-column-filter.component.d.ts.map +0 -1
  223. package/lib/features/data-table/column-headers/table-column-menu/table-column-menu.component.d.ts +0 -19
  224. package/lib/features/data-table/column-headers/table-column-menu/table-column-menu.component.d.ts.map +0 -1
  225. package/lib/features/data-table/column-headers/table-column-select/table-column-select.component.d.ts +0 -15
  226. package/lib/features/data-table/column-headers/table-column-select/table-column-select.component.d.ts.map +0 -1
  227. package/lib/features/data-table/data-table-filter.service.d.ts +0 -37
  228. package/lib/features/data-table/data-table-filter.service.d.ts.map +0 -1
  229. package/lib/features/data-table/data-table.component.d.ts +0 -164
  230. package/lib/features/data-table/data-table.component.d.ts.map +0 -1
  231. package/lib/features/data-table/data-table.service.d.ts +0 -20
  232. package/lib/features/data-table/data-table.service.d.ts.map +0 -1
  233. package/lib/features/data-table/table-filter-bar/filter-bar.component.d.ts +0 -25
  234. package/lib/features/data-table/table-filter-bar/filter-bar.component.d.ts.map +0 -1
  235. package/lib/features/data-table/table-hidden-columns-bar/hidden-columns-bar.component.d.ts +0 -10
  236. package/lib/features/data-table/table-hidden-columns-bar/hidden-columns-bar.component.d.ts.map +0 -1
  237. package/lib/features/data-table/tooltips/os-tooltip.component.d.ts +0 -15
  238. package/lib/features/data-table/tooltips/os-tooltip.component.d.ts.map +0 -1
  239. package/lib/features/data-table/tooltips/sdk-tooltip.component.d.ts +0 -15
  240. package/lib/features/data-table/tooltips/sdk-tooltip.component.d.ts.map +0 -1
  241. package/lib/features/dynamic-widgets/boolean/boolean-toggle-input.component.d.ts +0 -19
  242. package/lib/features/dynamic-widgets/boolean/boolean-toggle-input.component.d.ts.map +0 -1
  243. package/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.d.ts +0 -28
  244. package/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.d.ts.map +0 -1
  245. package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.d.ts +0 -50
  246. package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.d.ts.map +0 -1
  247. package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.service.d.ts +0 -14
  248. package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.service.d.ts.map +0 -1
  249. package/lib/features/dynamic-widgets/number/number-input.component.d.ts +0 -23
  250. package/lib/features/dynamic-widgets/number/number-input.component.d.ts.map +0 -1
  251. package/lib/features/dynamic-widgets/object/object.component.d.ts +0 -26
  252. package/lib/features/dynamic-widgets/object/object.component.d.ts.map +0 -1
  253. package/lib/features/dynamic-widgets/password/password-input.component.d.ts +0 -24
  254. package/lib/features/dynamic-widgets/password/password-input.component.d.ts.map +0 -1
  255. package/lib/features/dynamic-widgets/port-ranges/port-ranges.component.d.ts +0 -22
  256. package/lib/features/dynamic-widgets/port-ranges/port-ranges.component.d.ts.map +0 -1
  257. package/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.d.ts +0 -60
  258. package/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.d.ts.map +0 -1
  259. package/lib/features/dynamic-widgets/selector/selector-input.component.d.ts +0 -30
  260. package/lib/features/dynamic-widgets/selector/selector-input.component.d.ts.map +0 -1
  261. package/lib/features/dynamic-widgets/string/string-input.component.d.ts +0 -27
  262. package/lib/features/dynamic-widgets/string/string-input.component.d.ts.map +0 -1
  263. package/lib/features/dynamic-widgets/text-list/text-list-input.component.d.ts +0 -26
  264. package/lib/features/dynamic-widgets/text-list/text-list-input.component.d.ts.map +0 -1
  265. package/lib/features/extendable/extendable.component.d.ts +0 -15
  266. package/lib/features/extendable/extendable.component.d.ts.map +0 -1
  267. package/lib/features/extendable/extensions-noop.service.d.ts +0 -35
  268. package/lib/features/extendable/extensions-noop.service.d.ts.map +0 -1
  269. package/lib/features/header-bar/header-bar.component.d.ts +0 -29
  270. package/lib/features/header-bar/header-bar.component.d.ts.map +0 -1
  271. package/lib/features/json-view/json-view.component.d.ts +0 -40
  272. package/lib/features/json-view/json-view.component.d.ts.map +0 -1
  273. package/lib/features/list-page-features/list-page-form/list-page-form.component.d.ts +0 -35
  274. package/lib/features/list-page-features/list-page-form/list-page-form.component.d.ts.map +0 -1
  275. package/lib/features/list-page-features/list-page-header/list-page-header.component.d.ts +0 -14
  276. package/lib/features/list-page-features/list-page-header/list-page-header.component.d.ts.map +0 -1
  277. package/lib/features/loading-indicator/loading-indicator.component.d.ts +0 -11
  278. package/lib/features/loading-indicator/loading-indicator.component.d.ts.map +0 -1
  279. package/lib/features/login/login-dialog.component.d.ts +0 -30
  280. package/lib/features/login/login-dialog.component.d.ts.map +0 -1
  281. package/lib/features/messaging/growler.component.d.ts +0 -19
  282. package/lib/features/messaging/growler.component.d.ts.map +0 -1
  283. package/lib/features/messaging/growler.model.d.ts +0 -8
  284. package/lib/features/messaging/growler.model.d.ts.map +0 -1
  285. package/lib/features/messaging/growler.module.d.ts +0 -10
  286. package/lib/features/messaging/growler.module.d.ts.map +0 -1
  287. package/lib/features/messaging/growler.service.d.ts +0 -18
  288. package/lib/features/messaging/growler.service.d.ts.map +0 -1
  289. package/lib/features/messaging/logger.service.d.ts +0 -27
  290. package/lib/features/messaging/logger.service.d.ts.map +0 -1
  291. package/lib/features/multi-action-button/multi-action-button.component.d.ts +0 -13
  292. package/lib/features/multi-action-button/multi-action-button.component.d.ts.map +0 -1
  293. package/lib/features/no-items/no-items.component.d.ts +0 -19
  294. package/lib/features/no-items/no-items.component.d.ts.map +0 -1
  295. package/lib/features/overrides/overrides.component.d.ts +0 -33
  296. package/lib/features/overrides/overrides.component.d.ts.map +0 -1
  297. package/lib/features/overrides/overrides.service.d.ts +0 -18
  298. package/lib/features/overrides/overrides.service.d.ts.map +0 -1
  299. package/lib/features/preview-list/preview-list.component.d.ts +0 -34
  300. package/lib/features/preview-list/preview-list.component.d.ts.map +0 -1
  301. package/lib/features/preview-selections/preview-selections.component.d.ts +0 -39
  302. package/lib/features/preview-selections/preview-selections.component.d.ts.map +0 -1
  303. package/lib/features/progress-meter/progress-meter.component.d.ts +0 -19
  304. package/lib/features/progress-meter/progress-meter.component.d.ts.map +0 -1
  305. package/lib/features/progress-wizard/progress-wizard.component.d.ts +0 -31
  306. package/lib/features/progress-wizard/progress-wizard.component.d.ts.map +0 -1
  307. package/lib/features/projectable-forms/api-session/api-session-form.component.d.ts +0 -50
  308. package/lib/features/projectable-forms/api-session/api-session-form.component.d.ts.map +0 -1
  309. package/lib/features/projectable-forms/api-session/api-session-form.service.d.ts +0 -27
  310. package/lib/features/projectable-forms/api-session/api-session-form.service.d.ts.map +0 -1
  311. package/lib/features/projectable-forms/auth-policy/auth-policy-form.component.d.ts +0 -74
  312. package/lib/features/projectable-forms/auth-policy/auth-policy-form.component.d.ts.map +0 -1
  313. package/lib/features/projectable-forms/auth-policy/auth-policy-form.service.d.ts +0 -38
  314. package/lib/features/projectable-forms/auth-policy/auth-policy-form.service.d.ts.map +0 -1
  315. package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.d.ts +0 -80
  316. package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.d.ts.map +0 -1
  317. package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.service.d.ts +0 -37
  318. package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.service.d.ts.map +0 -1
  319. package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.d.ts +0 -62
  320. package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.d.ts.map +0 -1
  321. package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.service.d.ts +0 -28
  322. package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.service.d.ts.map +0 -1
  323. package/lib/features/projectable-forms/config-type/config-type-form.component.d.ts +0 -63
  324. package/lib/features/projectable-forms/config-type/config-type-form.component.d.ts.map +0 -1
  325. package/lib/features/projectable-forms/config-type/config-type-form.service.d.ts +0 -27
  326. package/lib/features/projectable-forms/config-type/config-type-form.service.d.ts.map +0 -1
  327. package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts +0 -62
  328. package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts.map +0 -1
  329. package/lib/features/projectable-forms/configuration/configuration.service.d.ts +0 -33
  330. package/lib/features/projectable-forms/configuration/configuration.service.d.ts.map +0 -1
  331. package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts +0 -53
  332. package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts.map +0 -1
  333. package/lib/features/projectable-forms/edge-router/edge-router-form.service.d.ts +0 -29
  334. package/lib/features/projectable-forms/edge-router/edge-router-form.service.d.ts.map +0 -1
  335. package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts +0 -54
  336. package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts.map +0 -1
  337. package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.d.ts +0 -40
  338. package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.d.ts.map +0 -1
  339. package/lib/features/projectable-forms/form-field-container/form-field-container.component.d.ts +0 -29
  340. package/lib/features/projectable-forms/form-field-container/form-field-container.component.d.ts.map +0 -1
  341. package/lib/features/projectable-forms/form-field-toggle/form-field-toggle.component.d.ts +0 -15
  342. package/lib/features/projectable-forms/form-field-toggle/form-field-toggle.component.d.ts.map +0 -1
  343. package/lib/features/projectable-forms/form-header/form-header.component.d.ts +0 -38
  344. package/lib/features/projectable-forms/form-header/form-header.component.d.ts.map +0 -1
  345. package/lib/features/projectable-forms/identity/identity-form.component.d.ts +0 -93
  346. package/lib/features/projectable-forms/identity/identity-form.component.d.ts.map +0 -1
  347. package/lib/features/projectable-forms/identity/identity-form.service.d.ts +0 -20
  348. package/lib/features/projectable-forms/identity/identity-form.service.d.ts.map +0 -1
  349. package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts +0 -97
  350. package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts.map +0 -1
  351. package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.service.d.ts +0 -21
  352. package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.service.d.ts.map +0 -1
  353. package/lib/features/projectable-forms/posture-check/posture-check-form.component.d.ts +0 -134
  354. package/lib/features/projectable-forms/posture-check/posture-check-form.component.d.ts.map +0 -1
  355. package/lib/features/projectable-forms/posture-check/posture-check-form.service.d.ts +0 -23
  356. package/lib/features/projectable-forms/posture-check/posture-check-form.service.d.ts.map +0 -1
  357. package/lib/features/projectable-forms/projectable-form.class.d.ts +0 -92
  358. package/lib/features/projectable-forms/projectable-form.class.d.ts.map +0 -1
  359. package/lib/features/projectable-forms/service/service-form.component.d.ts +0 -70
  360. package/lib/features/projectable-forms/service/service-form.component.d.ts.map +0 -1
  361. package/lib/features/projectable-forms/service/service-form.service.d.ts +0 -123
  362. package/lib/features/projectable-forms/service/service-form.service.d.ts.map +0 -1
  363. package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts +0 -173
  364. package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts.map +0 -1
  365. package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts +0 -53
  366. package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts.map +0 -1
  367. package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.d.ts +0 -38
  368. package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.d.ts.map +0 -1
  369. package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts +0 -55
  370. package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts.map +0 -1
  371. package/lib/features/projectable-forms/service-policy/service-policy-form.service.d.ts +0 -48
  372. package/lib/features/projectable-forms/service-policy/service-policy-form.service.d.ts.map +0 -1
  373. package/lib/features/projectable-forms/session/session-form.component.d.ts +0 -63
  374. package/lib/features/projectable-forms/session/session-form.component.d.ts.map +0 -1
  375. package/lib/features/projectable-forms/session/session-form.service.d.ts +0 -23
  376. package/lib/features/projectable-forms/session/session-form.service.d.ts.map +0 -1
  377. package/lib/features/projectable-forms/terminator/terminator-form.component.d.ts +0 -58
  378. package/lib/features/projectable-forms/terminator/terminator-form.component.d.ts.map +0 -1
  379. package/lib/features/projectable-forms/terminator/terminator-form.service.d.ts +0 -33
  380. package/lib/features/projectable-forms/terminator/terminator-form.service.d.ts.map +0 -1
  381. package/lib/features/projectable-forms/transit-router/transit-router-form.component.d.ts +0 -50
  382. package/lib/features/projectable-forms/transit-router/transit-router-form.component.d.ts.map +0 -1
  383. package/lib/features/projectable-forms/transit-router/transit-router-form.service.d.ts +0 -27
  384. package/lib/features/projectable-forms/transit-router/transit-router-form.service.d.ts.map +0 -1
  385. package/lib/features/qr-code/qr-code.component.d.ts +0 -45
  386. package/lib/features/qr-code/qr-code.component.d.ts.map +0 -1
  387. package/lib/features/quick-add/quick-add.component.d.ts +0 -15
  388. package/lib/features/quick-add/quick-add.component.d.ts.map +0 -1
  389. package/lib/features/reset-enrollment/reset-enrollment.component.d.ts +0 -27
  390. package/lib/features/reset-enrollment/reset-enrollment.component.d.ts.map +0 -1
  391. package/lib/features/reset-enrollment/reset-enrollment.service.d.ts +0 -13
  392. package/lib/features/reset-enrollment/reset-enrollment.service.d.ts.map +0 -1
  393. package/lib/features/side-modal/side-modal.component.d.ts +0 -15
  394. package/lib/features/side-modal/side-modal.component.d.ts.map +0 -1
  395. package/lib/features/side-navigator/side-navigator.component.d.ts +0 -33
  396. package/lib/features/side-navigator/side-navigator.component.d.ts.map +0 -1
  397. package/lib/features/sidebars/side-navbar/side-navbar.component.d.ts +0 -16
  398. package/lib/features/sidebars/side-navbar/side-navbar.component.d.ts.map +0 -1
  399. package/lib/features/tag-selector/tag-selector.component.d.ts +0 -59
  400. package/lib/features/tag-selector/tag-selector.component.d.ts.map +0 -1
  401. package/lib/features/visualizer/identity-service-path/identity-service-path.component.d.ts +0 -54
  402. package/lib/features/visualizer/identity-service-path/identity-service-path.component.d.ts.map +0 -1
  403. package/lib/features/visualizer/identity-service-path/identity-service-path.helper.d.ts +0 -21
  404. package/lib/features/visualizer/identity-service-path/identity-service-path.helper.d.ts.map +0 -1
  405. package/lib/features/visualizer/network-visualizer/network-visualizer.component.d.ts +0 -146
  406. package/lib/features/visualizer/network-visualizer/network-visualizer.component.d.ts.map +0 -1
  407. package/lib/features/visualizer/network-visualizer/network-visualizer.helper.d.ts +0 -172
  408. package/lib/features/visualizer/network-visualizer/network-visualizer.helper.d.ts.map +0 -1
  409. package/lib/features/visualizer/network-visualizer/network-visualizer.treenodeprocessor.d.ts +0 -35
  410. package/lib/features/visualizer/network-visualizer/network-visualizer.treenodeprocessor.d.ts.map +0 -1
  411. package/lib/features/visualizer/visualizer-service.class.d.ts +0 -10
  412. package/lib/features/visualizer/visualizer-service.class.d.ts.map +0 -1
  413. package/lib/models/api-session.d.ts +0 -18
  414. package/lib/models/api-session.d.ts.map +0 -1
  415. package/lib/models/auth-policy.d.ts +0 -8
  416. package/lib/models/auth-policy.d.ts.map +0 -1
  417. package/lib/models/certificate-authority.d.ts +0 -14
  418. package/lib/models/certificate-authority.d.ts.map +0 -1
  419. package/lib/models/config-type.d.ts +0 -7
  420. package/lib/models/config-type.d.ts.map +0 -1
  421. package/lib/models/config.d.ts +0 -7
  422. package/lib/models/config.d.ts.map +0 -1
  423. package/lib/models/edge-router-policy.d.ts +0 -8
  424. package/lib/models/edge-router-policy.d.ts.map +0 -1
  425. package/lib/models/edge-router.d.ts +0 -10
  426. package/lib/models/edge-router.d.ts.map +0 -1
  427. package/lib/models/identity.d.ts +0 -16
  428. package/lib/models/identity.d.ts.map +0 -1
  429. package/lib/models/jwt-signer.d.ts +0 -17
  430. package/lib/models/jwt-signer.d.ts.map +0 -1
  431. package/lib/models/posture-check.d.ts +0 -17
  432. package/lib/models/posture-check.d.ts.map +0 -1
  433. package/lib/models/service-edge-router-policy.d.ts +0 -8
  434. package/lib/models/service-edge-router-policy.d.ts.map +0 -1
  435. package/lib/models/service-policy.d.ts +0 -10
  436. package/lib/models/service-policy.d.ts.map +0 -1
  437. package/lib/models/service.d.ts +0 -9
  438. package/lib/models/service.d.ts.map +0 -1
  439. package/lib/models/session.d.ts +0 -17
  440. package/lib/models/session.d.ts.map +0 -1
  441. package/lib/models/terminator.d.ts +0 -11
  442. package/lib/models/terminator.d.ts.map +0 -1
  443. package/lib/pages/api-sessions/api-sessions-page.component.d.ts +0 -30
  444. package/lib/pages/api-sessions/api-sessions-page.component.d.ts.map +0 -1
  445. package/lib/pages/api-sessions/api-sessions-page.service.d.ts +0 -31
  446. package/lib/pages/api-sessions/api-sessions-page.service.d.ts.map +0 -1
  447. package/lib/pages/attributes/attributes.component.d.ts +0 -31
  448. package/lib/pages/attributes/attributes.component.d.ts.map +0 -1
  449. package/lib/pages/auth-policies/auth-policies-page.component.d.ts +0 -29
  450. package/lib/pages/auth-policies/auth-policies-page.component.d.ts.map +0 -1
  451. package/lib/pages/auth-policies/auth-policies-page.service.d.ts +0 -34
  452. package/lib/pages/auth-policies/auth-policies-page.service.d.ts.map +0 -1
  453. package/lib/pages/callback/callback.component.d.ts +0 -22
  454. package/lib/pages/callback/callback.component.d.ts.map +0 -1
  455. package/lib/pages/certificate-authorities/certificate-authorities-page.component.d.ts +0 -30
  456. package/lib/pages/certificate-authorities/certificate-authorities-page.component.d.ts.map +0 -1
  457. package/lib/pages/certificate-authorities/certificate-authorities-page.service.d.ts +0 -35
  458. package/lib/pages/certificate-authorities/certificate-authorities-page.service.d.ts.map +0 -1
  459. package/lib/pages/config-types/config-types-page.component.d.ts +0 -31
  460. package/lib/pages/config-types/config-types-page.component.d.ts.map +0 -1
  461. package/lib/pages/config-types/config-types-page.service.d.ts +0 -29
  462. package/lib/pages/config-types/config-types-page.service.d.ts.map +0 -1
  463. package/lib/pages/configurations/configurations-page.component.d.ts +0 -30
  464. package/lib/pages/configurations/configurations-page.component.d.ts.map +0 -1
  465. package/lib/pages/configurations/configurations-page.service.d.ts +0 -80
  466. package/lib/pages/configurations/configurations-page.service.d.ts.map +0 -1
  467. package/lib/pages/edge-router-policies/edge-router-policies-page.component.d.ts +0 -33
  468. package/lib/pages/edge-router-policies/edge-router-policies-page.component.d.ts.map +0 -1
  469. package/lib/pages/edge-router-policies/edge-router-policies-page.service.d.ts +0 -63
  470. package/lib/pages/edge-router-policies/edge-router-policies-page.service.d.ts.map +0 -1
  471. package/lib/pages/edge-routers/edge-routers-page.component.d.ts +0 -36
  472. package/lib/pages/edge-routers/edge-routers-page.component.d.ts.map +0 -1
  473. package/lib/pages/edge-routers/edge-routers-page.service.d.ts +0 -51
  474. package/lib/pages/edge-routers/edge-routers-page.service.d.ts.map +0 -1
  475. package/lib/pages/geolocate/geolocate.component.d.ts +0 -32
  476. package/lib/pages/geolocate/geolocate.component.d.ts.map +0 -1
  477. package/lib/pages/identities/identities-page.component.d.ts +0 -40
  478. package/lib/pages/identities/identities-page.component.d.ts.map +0 -1
  479. package/lib/pages/identities/identities-page.service.d.ts +0 -64
  480. package/lib/pages/identities/identities-page.service.d.ts.map +0 -1
  481. package/lib/pages/jwt-signers/jwt-signers-page.component.d.ts +0 -34
  482. package/lib/pages/jwt-signers/jwt-signers-page.component.d.ts.map +0 -1
  483. package/lib/pages/jwt-signers/jwt-signers-page.service.d.ts +0 -31
  484. package/lib/pages/jwt-signers/jwt-signers-page.service.d.ts.map +0 -1
  485. package/lib/pages/posture-checks/posture-checks-page.component.d.ts +0 -29
  486. package/lib/pages/posture-checks/posture-checks-page.component.d.ts.map +0 -1
  487. package/lib/pages/posture-checks/posture-checks-page.service.d.ts +0 -28
  488. package/lib/pages/posture-checks/posture-checks-page.service.d.ts.map +0 -1
  489. package/lib/pages/profile/profile.component.d.ts +0 -17
  490. package/lib/pages/profile/profile.component.d.ts.map +0 -1
  491. package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.d.ts +0 -33
  492. package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.d.ts.map +0 -1
  493. package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.d.ts +0 -57
  494. package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.d.ts.map +0 -1
  495. package/lib/pages/service-policies/service-policies-page.component.d.ts +0 -34
  496. package/lib/pages/service-policies/service-policies-page.component.d.ts.map +0 -1
  497. package/lib/pages/service-policies/service-policies-page.service.d.ts +0 -63
  498. package/lib/pages/service-policies/service-policies-page.service.d.ts.map +0 -1
  499. package/lib/pages/services/services-page.component.d.ts +0 -42
  500. package/lib/pages/services/services-page.component.d.ts.map +0 -1
  501. package/lib/pages/services/services-page.service.d.ts +0 -69
  502. package/lib/pages/services/services-page.service.d.ts.map +0 -1
  503. package/lib/pages/sessions/sessions-page.component.d.ts +0 -30
  504. package/lib/pages/sessions/sessions-page.component.d.ts.map +0 -1
  505. package/lib/pages/sessions/sessions-page.service.d.ts +0 -30
  506. package/lib/pages/sessions/sessions-page.service.d.ts.map +0 -1
  507. package/lib/pages/settings/settings.component.d.ts +0 -23
  508. package/lib/pages/settings/settings.component.d.ts.map +0 -1
  509. package/lib/pages/terminators/terminators-page.component.d.ts +0 -29
  510. package/lib/pages/terminators/terminators-page.component.d.ts.map +0 -1
  511. package/lib/pages/terminators/terminators-page.service.d.ts +0 -32
  512. package/lib/pages/terminators/terminators-page.service.d.ts.map +0 -1
  513. package/lib/pages/transit-routers/transit-routers-page.component.d.ts +0 -35
  514. package/lib/pages/transit-routers/transit-routers-page.component.d.ts.map +0 -1
  515. package/lib/pages/transit-routers/transit-routers-page.service.d.ts +0 -50
  516. package/lib/pages/transit-routers/transit-routers-page.service.d.ts.map +0 -1
  517. package/lib/safe.pipe.d.ts +0 -11
  518. package/lib/safe.pipe.d.ts.map +0 -1
  519. package/lib/services/auth.service.d.ts +0 -21
  520. package/lib/services/auth.service.d.ts.map +0 -1
  521. package/lib/services/console-events.service.d.ts +0 -12
  522. package/lib/services/console-events.service.d.ts.map +0 -1
  523. package/lib/services/csv-download.service.d.ts +0 -11
  524. package/lib/services/csv-download.service.d.ts.map +0 -1
  525. package/lib/services/deactivate-guard.service.d.ts +0 -14
  526. package/lib/services/deactivate-guard.service.d.ts.map +0 -1
  527. package/lib/services/login-service.class.d.ts +0 -30
  528. package/lib/services/login-service.class.d.ts.map +0 -1
  529. package/lib/services/node-data.service.d.ts +0 -38
  530. package/lib/services/node-data.service.d.ts.map +0 -1
  531. package/lib/services/noop-login.service.d.ts +0 -22
  532. package/lib/services/noop-login.service.d.ts.map +0 -1
  533. package/lib/services/schema.service.d.ts +0 -63
  534. package/lib/services/schema.service.d.ts.map +0 -1
  535. package/lib/services/settings-service.class.d.ts +0 -36
  536. package/lib/services/settings-service.class.d.ts.map +0 -1
  537. package/lib/services/settings.service.d.ts +0 -20
  538. package/lib/services/settings.service.d.ts.map +0 -1
  539. package/lib/services/tab-name.service.d.ts +0 -20
  540. package/lib/services/tab-name.service.d.ts.map +0 -1
  541. package/lib/services/validation.service.d.ts +0 -20
  542. package/lib/services/validation.service.d.ts.map +0 -1
  543. package/lib/services/ziti-controller-data.service.d.ts +0 -36
  544. package/lib/services/ziti-controller-data.service.d.ts.map +0 -1
  545. package/lib/services/ziti-data.service.d.ts +0 -49
  546. package/lib/services/ziti-data.service.d.ts.map +0 -1
  547. package/lib/services/ziti-domain-controller.service.d.ts +0 -13
  548. package/lib/services/ziti-domain-controller.service.d.ts.map +0 -1
  549. package/lib/shared/list-page-component.class.d.ts +0 -57
  550. package/lib/shared/list-page-component.class.d.ts.map +0 -1
  551. package/lib/shared/list-page-service.class.d.ts +0 -81
  552. package/lib/shared/list-page-service.class.d.ts.map +0 -1
  553. package/lib/urls.d.ts +0 -34
  554. package/lib/urls.d.ts.map +0 -1
  555. package/lib/zac-routing.module.d.ts +0 -8
  556. package/lib/zac-routing.module.d.ts.map +0 -1
  557. package/lib/ziti-console-lib.module.d.ts +0 -121
  558. package/lib/ziti-console-lib.module.d.ts.map +0 -1
  559. package/lib/ziti-console.constants.d.ts +0 -5
  560. package/lib/ziti-console.constants.d.ts.map +0 -1
  561. package/openziti-ziti-console-lib.d.ts.map +0 -1
  562. package/public-api.d.ts +0 -127
  563. package/public-api.d.ts.map +0 -1
@@ -1,275 +0,0 @@
1
- /*
2
- Copyright NetFoundry Inc.
3
-
4
- Licensed under the Apache License, Version 2.0 (the "License");
5
- you may not use this file except in compliance with the License.
6
- You may obtain a copy of the License at
7
-
8
- https://www.apache.org/licenses/LICENSE-2.0
9
-
10
- Unless required by applicable law or agreed to in writing, software
11
- distributed under the License is distributed on an "AS IS" BASIS,
12
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- See the License for the specific language governing permissions and
14
- limitations under the License.
15
- */
16
- import { Component, EventEmitter, Inject, Input, Output, ViewChild, } from '@angular/core';
17
- import { ProjectableForm } from "../projectable-form.class";
18
- import { SHAREDZ_EXTENSION } from "../../extendable/extensions-noop.service";
19
- import { ConfigEditorComponent } from "../../config-editor/config-editor.component";
20
- import { cloneDeep, isEmpty } from 'lodash';
21
- import { GrowlerModel } from "../../messaging/growler.model";
22
- import { SETTINGS_SERVICE } from "../../../services/settings.service";
23
- import { ZITI_DATA_SERVICE } from "../../../services/ziti-data.service";
24
- import { Config } from "../../../models/config";
25
- import * as i0 from "@angular/core";
26
- import * as i1 from "./configuration.service";
27
- import * as i2 from "../../../services/schema.service";
28
- import * as i3 from "../../messaging/growler.service";
29
- import * as i4 from "@angular/router";
30
- import * as i5 from "@angular/common";
31
- import * as i6 from "@angular/forms";
32
- import * as i7 from "../form-header/form-header.component";
33
- import * as i8 from "../form-field-container/form-field-container.component";
34
- import * as i9 from "../../loading-indicator/loading-indicator.component";
35
- import * as i10 from "../form-field-toggle/form-field-toggle.component";
36
- import * as i11 from "../../json-view/json-view.component";
37
- import * as i12 from "../../custom-tags/custom-tags.component";
38
- import * as i13 from "../../config-editor/config-editor.component";
39
- import * as i14 from "../../../services/settings.service";
40
- import * as i15 from "../../../services/ziti-data.service";
41
- export class ConfigurationFormComponent extends ProjectableForm {
42
- constructor(svc, schemaSvc, growlerService, extService, settingsService, zitiService, router, route, location) {
43
- super(growlerService, extService, zitiService, router, route, location, settingsService);
44
- this.svc = svc;
45
- this.schemaSvc = schemaSvc;
46
- this.settingsService = settingsService;
47
- this.zitiService = zitiService;
48
- this.router = router;
49
- this.route = route;
50
- this.errors = {};
51
- this.close = new EventEmitter();
52
- this.options = [];
53
- this.isEditing = !isEmpty(this.formData.id);
54
- this.formView = 'simple';
55
- this.formDataInvalid = false;
56
- this.editMode = false;
57
- this.items = [];
58
- this.selectedSchema = '';
59
- this.associatedServices = [];
60
- this.associatedServiceNames = [];
61
- this.servicesLoading = false;
62
- this.settings = {};
63
- this.selectedConfigTypeId = '';
64
- this.entityType = 'configs';
65
- this.entityClass = Config;
66
- this._apiData = {};
67
- }
68
- ngOnInit() {
69
- this.svc.configJsonView = false;
70
- super.ngOnInit();
71
- this.settingsService.settingsChange.subscribe((results) => {
72
- this.settings = results;
73
- });
74
- }
75
- entityUpdated() {
76
- if (isEmpty(this.formData?.data)) {
77
- this.formData.data = {};
78
- }
79
- if (isEmpty(this.formData?.configTypeId)) {
80
- this.formData.configTypeId = '';
81
- }
82
- this.selectedConfigTypeId = this.formData.configTypeId;
83
- this.initData = cloneDeep(this.formData);
84
- this.svc.configJsonView = false;
85
- //this.getAssociatedServices();
86
- this.svc.getConfigTypes()
87
- .then(configTypes => {
88
- this.options = configTypes.sort();
89
- this.getSchema();
90
- });
91
- this.isEditing = !isEmpty(this.formData.id);
92
- if (this.configTypeEmpty) {
93
- this.formData.configTypeId = '';
94
- }
95
- }
96
- getAssociatedServices() {
97
- this.svc.getAssociatedServices(this.formData.id).then((result) => {
98
- this.associatedServices = result.associatedServices;
99
- this.associatedServiceNames = result.associatedServiceNames;
100
- });
101
- }
102
- ngOnDestroy() {
103
- this.clearForm();
104
- }
105
- get configTypeEmpty() {
106
- return isEmpty(this.formData.configTypeId);
107
- }
108
- headerActionRequested(event) {
109
- switch (event.name) {
110
- case 'save':
111
- this.save(event);
112
- break;
113
- case 'close':
114
- this.returnToListPage();
115
- break;
116
- case 'toggle-view':
117
- this.formView = event.data;
118
- break;
119
- }
120
- }
121
- apiActionRequested(action) {
122
- switch (action.id) {
123
- case 'cli':
124
- this.copyCLICommand();
125
- break;
126
- case 'curl':
127
- this.copyCURLCommand();
128
- break;
129
- }
130
- }
131
- copyCLICommand() {
132
- const command = `ziti edge ${this.formData.id ? 'update' : 'create'} config ${this.formData.id ? `'${this.formData.id}'` : ''} ${this.formData.id ? '--name' : ''} '${this.formData.name}' --data '${JSON.stringify(this.formData.data)}' --tags-json '${JSON.stringify(this.formData.tags)}'`;
133
- navigator.clipboard.writeText(command);
134
- const growlerData = new GrowlerModel('success', 'Success', `Text Copied`, `CLI command copied to clipboard`);
135
- this.growlerService.show(growlerData);
136
- }
137
- copyCURLCommand() {
138
- const command = `curl '${this.apiCallURL}' \\
139
- ${this.formData.id ? '--request PATCH \\' : '\\'}
140
- -H 'accept: application/json' \\
141
- -H 'content-type: application/json' \\
142
- -H 'zt-session: ${this.settings.session.id}' \\
143
- --data-raw '${JSON.stringify(this.apiData)}'`;
144
- navigator.clipboard.writeText(command);
145
- const growlerData = new GrowlerModel('success', 'Success', `Text Copied`, `CURL command copied to clipboard`);
146
- this.growlerService.show(growlerData);
147
- }
148
- clear() {
149
- this.formData.configTypeId = '';
150
- this.clearForm();
151
- }
152
- clearForm() {
153
- this.items.forEach((item) => {
154
- if (item?.component)
155
- item.component.destroy();
156
- });
157
- this.errors = {};
158
- this.items = [];
159
- this.formData = {};
160
- if (this.subscription)
161
- this.subscription.unsubscribe();
162
- }
163
- async save(event) {
164
- this.errors = {};
165
- this.isLoading = true;
166
- try {
167
- this.configEditor.getConfigDataFromForm();
168
- }
169
- catch (err) {
170
- const growlerData = new GrowlerModel('error', 'Error', `Error Getting Config Data`, 'Error getting configuration data from from.');
171
- this.growlerService.show(growlerData);
172
- throw err;
173
- }
174
- if (!this.validate()) {
175
- this.isLoading = false;
176
- return;
177
- }
178
- const configId = await this.svc.save(this.formData).then((result) => {
179
- if (!isEmpty(result?.id)) {
180
- this.formData = result;
181
- this.initData = this.formData;
182
- }
183
- return result?.id;
184
- }).finally(() => {
185
- this.isLoading = false;
186
- });
187
- if (configId) {
188
- this.initData = this.formData;
189
- this._dataChange = false;
190
- if (this.isModal) {
191
- this.closeModal(true, true);
192
- }
193
- else {
194
- this.returnToListPage();
195
- }
196
- }
197
- ;
198
- }
199
- validate() {
200
- this.errors = {};
201
- if (!this.configEditor.validateConfig(this.selectedSchema, true)) {
202
- return false;
203
- }
204
- if (isEmpty(this.formData.name)) {
205
- this.errors['name'] = true;
206
- }
207
- if (isEmpty(this.formData.configTypeId)) {
208
- this.errors['configTypeId'] = true;
209
- }
210
- if (!isEmpty(this.errors)) {
211
- const growlerData = new GrowlerModel('error', 'Error', `Error Validating Config`, 'The entered configuration is invalid. Please update missing/invalid fields and try again.');
212
- this.growlerService.show(growlerData);
213
- }
214
- return isEmpty(this.errors);
215
- }
216
- get saveButtonTooltip() {
217
- if (this.formDataInvalid) {
218
- return 'Config data is invalid. Please update and try again.';
219
- }
220
- else {
221
- return 'Complete and attach config definition, or remove before saving';
222
- }
223
- }
224
- getSchema() {
225
- if (this.selectedConfigTypeId !== this.formData.configTypeId) {
226
- this.selectedConfigTypeId = this.formData.configTypeId;
227
- this.formData.data = {};
228
- }
229
- this.svc.getSchema(this.formData.configTypeId).then((result) => {
230
- this.selectedSchema = result;
231
- });
232
- }
233
- get apiCallURL() {
234
- return this.settings.selectedEdgeController + '/edge/management/v1/configs' + (this.formData.id ? `/${this.formData.id}` : '');
235
- }
236
- get apiData() {
237
- const data = {
238
- name: this.formData?.name || '',
239
- configTypeId: this.formData?.configTypeId || '',
240
- data: this.formData?.data || {},
241
- tags: this.formData?.tags
242
- };
243
- this._apiData = data;
244
- return this._apiData;
245
- }
246
- set apiData(data) {
247
- this._apiData = data;
248
- }
249
- dataChanged(event) {
250
- this._apiData = cloneDeep(this.apiData);
251
- }
252
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfigurationFormComponent, deps: [{ token: i1.ConfigurationService }, { token: i2.SchemaService }, { token: i3.GrowlerService }, { token: SHAREDZ_EXTENSION }, { token: SETTINGS_SERVICE }, { token: ZITI_DATA_SERVICE }, { token: i4.Router }, { token: i4.ActivatedRoute }, { token: i5.Location }], target: i0.ɵɵFactoryTarget.Component }); }
253
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ConfigurationFormComponent, selector: "lib-configuration", inputs: { errors: "errors" }, outputs: { close: "close" }, viewQueries: [{ propertyName: "configEditor", first: true, predicate: ["configEditor"], descendants: true, read: ConfigEditorComponent }], usesInheritance: true, ngImport: i0, template: "<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n tabindex=\"0\"\n [class.projectable-form-hidden]=\"!dataInit\"\n>\n <lib-form-header\n [data]=\"formData\"\n [title]=\"(formData.id ? 'Edit Config' : 'Create Config')\"\n [moreActions]=\"formData.moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n [saveDisabled]=\"svc.saveDisabled || formDataInvalid\"\n [saveTooltip]=\"saveButtonTooltip\"\n [class.is-scrolled]=\"isScrolled\"\n ></lib-form-header>\n <div class=\"config-form-container projectable-form-container\" #formContainer>\n <div class=\"projectable-form-main-column form-group-row\" [hidden]=\"formView !== 'simple'\">\n <div class=\"form-group-column three-fifths\">\n <lib-form-field-container [title]=\"'Config Name'\" [label]=\"'Required'\">\n <input\n id=\"ConfigName\"\n type=\"text\"\n maxlength=\"500\"\n placeholder=\"Name this config\"\n [ngClass]=\"{error: errors['name']}\"\n [(ngModel)]=\"formData.name\"\n (keyup)=\"apiData()\"\n >\n </lib-form-field-container>\n <lib-form-field-container [showHeader]=\"false\">\n <div class=\"config-title-row\">\n <span class=\"form-field-title\">Configuration Data</span>\n <div class=\"form-header-toggle-container\">\n <span\n class=\"toggle-option-text\"\n [ngClass]=\"{'toggle-option-selected': !svc.configJsonView}\"\n (click)=\"svc.toggleJSONView()\"\n >\n FORM\n </span>\n <div class=\"form-header-toggle\" (click)=\"svc.toggleJSONView()\">\n <div\n class=\"form-toggle-switch\"\n [ngClass]=\"{'toggle-left': !svc.configJsonView, 'toggle-right': svc.configJsonView}\"\n >\n <div class=\"form-toggle-indicator\"></div>\n <div class=\"form-toggle-indicator\"></div>\n </div>\n </div>\n <span\n class=\"toggle-option-text\"\n [ngClass]=\"{'toggle-option-selected': svc.configJsonView}\"\n (click)=\"svc.toggleJSONView()\"\n >\n JSON\n </span>\n </div>\n </div>\n <div class=\"form-field-input-group\">\n <div class=\"config-title-row\">\n <span class=\"form-field-title\">{{isEditing ? 'Config Type' : 'Select a Config Type'}}</span>\n </div>\n <select\n id=\"ConfigTypes\"\n class=\"config-type-select\"\n [(ngModel)]=\"formData.configTypeId\"\n (change)=\"getSchema()\"\n [ngClass]=\"{disabled: isEditing, error: errors['configTypeId']}\"\n >\n <option value=\"\">Select A Type...</option>\n <option *ngFor=\"let config of options\"\n [value]=\"config.id\">{{config.name}}\n </option>\n </select>\n <lib-config-editor\n [hidden]=\"configTypeEmpty\"\n [schema]=\"selectedSchema\"\n [(configData)]=\"formData.data\"\n [showJsonView]=\"svc.configJsonView\"\n [(configErrors)]=\"errors\"\n (configDataChange)=\"dataChanged($event)\"\n #configEditor\n ></lib-config-editor>\n </div>\n </lib-form-field-container>\n <lib-form-field-toggle [(toggleOn)]=\"showMore\" (toggleOnChange)=\"showMoreChanged($event)\" style=\"margin: 0px 10px\"></lib-form-field-toggle>\n <div [hidden]=\"!showMore\" class=\"form-group-column\">\n <lib-form-field-container\n [title]=\"'Custom Tags'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n *ngIf=\"!hideTags\"\n >\n <lib-custom-tags [(tags)]=\"formData.tags\"></lib-custom-tags>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column two-fifths\">\n <lib-form-field-container\n [title]=\"'API Calls'\"\n [label]=\"''\"\n [headerActions]=\"apiOptions\"\n (actionRequested)=\"apiActionRequested($event)\"\n >\n <div class=\"form-row\">\n <input class=\"form-field-input\" [value]=\"apiCallURL\" readonly/>\n <div class=\"url-copy icon-copy copy-text\" (click)=\"copyToClipboard(apiCallURL)\"></div>\n </div>\n <lib-json-view *ngIf=\"formData\" [(data)]=\"_apiData\" [readOnly]=\"true\" [showCopy]=\"true\"></lib-json-view>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column\" *ngIf=\"formView === 'raw'\">\n <lib-json-view *ngIf=\"formData\" [(data)]=\"formData\"></lib-json-view>\n </div>\n </div>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading || !dataInit\" [isLoading]=\"isLoading || !dataInit\"></lib-loading-indicator>\n", styles: [".config-form-container{display:flex;flex-direction:column;height:100%;width:100%;align-items:center;gap:var(--gapXL)}.config-type-select.disabled{opacity:.7;pointer-events:none}.form-group-column.three-fifths{width:calc(60% - .9375rem);min-width:34.375rem;max-width:43.75rem}.form-group-column.two-fifths{max-width:43.75rem}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.FormHeaderComponent, selector: "lib-form-header", inputs: ["data", "badges", "title", "moreActions", "formView", "saveDisabled", "saveTooltip", "actionButtonText", "moreActionsText", "showHeaderToggle", "showHeaderButton", "multiActions"], outputs: ["formViewChange", "actionRequested", "multiActionRequested"] }, { kind: "component", type: i8.FormFieldContainerComponent, selector: "lib-form-field-container", inputs: ["title", "title2", "titleIcon", "layout", "helpText", "helpText2", "label", "count", "action", "actionLabel", "class", "contentStyle", "contentClass", "showHeader", "showToggle", "headerActions", "headerToggle"], outputs: ["actionRequested", "headerToggleChange"] }, { kind: "component", type: i9.LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }, { kind: "component", type: i10.FormFieldToggleComponent, selector: "lib-form-field-toggle", inputs: ["label", "orientation", "labelOn", "labelOff", "toggleOn"], outputs: ["toggleOnChange"] }, { kind: "component", type: i11.JsonViewComponent, selector: "lib-json-view", inputs: ["data", "schema", "readOnly", "jsonInvalid", "showCopy", "showLineNumbers"], outputs: ["dataChange", "jsonChange", "jsonInvalidChange"] }, { kind: "component", type: i12.CustomTagsComponent, selector: "lib-custom-tags", inputs: ["tags"], outputs: ["tagsChange"] }, { kind: "component", type: i13.ConfigEditorComponent, selector: "lib-config-editor", inputs: ["configErrors", "configData", "showJsonView", "schema"], outputs: ["configErrorsChange", "configDataChange"] }] }); }
254
- }
255
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfigurationFormComponent, decorators: [{
256
- type: Component,
257
- args: [{ selector: 'lib-configuration', template: "<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n tabindex=\"0\"\n [class.projectable-form-hidden]=\"!dataInit\"\n>\n <lib-form-header\n [data]=\"formData\"\n [title]=\"(formData.id ? 'Edit Config' : 'Create Config')\"\n [moreActions]=\"formData.moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n [saveDisabled]=\"svc.saveDisabled || formDataInvalid\"\n [saveTooltip]=\"saveButtonTooltip\"\n [class.is-scrolled]=\"isScrolled\"\n ></lib-form-header>\n <div class=\"config-form-container projectable-form-container\" #formContainer>\n <div class=\"projectable-form-main-column form-group-row\" [hidden]=\"formView !== 'simple'\">\n <div class=\"form-group-column three-fifths\">\n <lib-form-field-container [title]=\"'Config Name'\" [label]=\"'Required'\">\n <input\n id=\"ConfigName\"\n type=\"text\"\n maxlength=\"500\"\n placeholder=\"Name this config\"\n [ngClass]=\"{error: errors['name']}\"\n [(ngModel)]=\"formData.name\"\n (keyup)=\"apiData()\"\n >\n </lib-form-field-container>\n <lib-form-field-container [showHeader]=\"false\">\n <div class=\"config-title-row\">\n <span class=\"form-field-title\">Configuration Data</span>\n <div class=\"form-header-toggle-container\">\n <span\n class=\"toggle-option-text\"\n [ngClass]=\"{'toggle-option-selected': !svc.configJsonView}\"\n (click)=\"svc.toggleJSONView()\"\n >\n FORM\n </span>\n <div class=\"form-header-toggle\" (click)=\"svc.toggleJSONView()\">\n <div\n class=\"form-toggle-switch\"\n [ngClass]=\"{'toggle-left': !svc.configJsonView, 'toggle-right': svc.configJsonView}\"\n >\n <div class=\"form-toggle-indicator\"></div>\n <div class=\"form-toggle-indicator\"></div>\n </div>\n </div>\n <span\n class=\"toggle-option-text\"\n [ngClass]=\"{'toggle-option-selected': svc.configJsonView}\"\n (click)=\"svc.toggleJSONView()\"\n >\n JSON\n </span>\n </div>\n </div>\n <div class=\"form-field-input-group\">\n <div class=\"config-title-row\">\n <span class=\"form-field-title\">{{isEditing ? 'Config Type' : 'Select a Config Type'}}</span>\n </div>\n <select\n id=\"ConfigTypes\"\n class=\"config-type-select\"\n [(ngModel)]=\"formData.configTypeId\"\n (change)=\"getSchema()\"\n [ngClass]=\"{disabled: isEditing, error: errors['configTypeId']}\"\n >\n <option value=\"\">Select A Type...</option>\n <option *ngFor=\"let config of options\"\n [value]=\"config.id\">{{config.name}}\n </option>\n </select>\n <lib-config-editor\n [hidden]=\"configTypeEmpty\"\n [schema]=\"selectedSchema\"\n [(configData)]=\"formData.data\"\n [showJsonView]=\"svc.configJsonView\"\n [(configErrors)]=\"errors\"\n (configDataChange)=\"dataChanged($event)\"\n #configEditor\n ></lib-config-editor>\n </div>\n </lib-form-field-container>\n <lib-form-field-toggle [(toggleOn)]=\"showMore\" (toggleOnChange)=\"showMoreChanged($event)\" style=\"margin: 0px 10px\"></lib-form-field-toggle>\n <div [hidden]=\"!showMore\" class=\"form-group-column\">\n <lib-form-field-container\n [title]=\"'Custom Tags'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n *ngIf=\"!hideTags\"\n >\n <lib-custom-tags [(tags)]=\"formData.tags\"></lib-custom-tags>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column two-fifths\">\n <lib-form-field-container\n [title]=\"'API Calls'\"\n [label]=\"''\"\n [headerActions]=\"apiOptions\"\n (actionRequested)=\"apiActionRequested($event)\"\n >\n <div class=\"form-row\">\n <input class=\"form-field-input\" [value]=\"apiCallURL\" readonly/>\n <div class=\"url-copy icon-copy copy-text\" (click)=\"copyToClipboard(apiCallURL)\"></div>\n </div>\n <lib-json-view *ngIf=\"formData\" [(data)]=\"_apiData\" [readOnly]=\"true\" [showCopy]=\"true\"></lib-json-view>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column\" *ngIf=\"formView === 'raw'\">\n <lib-json-view *ngIf=\"formData\" [(data)]=\"formData\"></lib-json-view>\n </div>\n </div>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading || !dataInit\" [isLoading]=\"isLoading || !dataInit\"></lib-loading-indicator>\n", styles: [".config-form-container{display:flex;flex-direction:column;height:100%;width:100%;align-items:center;gap:var(--gapXL)}.config-type-select.disabled{opacity:.7;pointer-events:none}.form-group-column.three-fifths{width:calc(60% - .9375rem);min-width:34.375rem;max-width:43.75rem}.form-group-column.two-fifths{max-width:43.75rem}\n"] }]
258
- }], ctorParameters: function () { return [{ type: i1.ConfigurationService }, { type: i2.SchemaService }, { type: i3.GrowlerService }, { type: undefined, decorators: [{
259
- type: Inject,
260
- args: [SHAREDZ_EXTENSION]
261
- }] }, { type: i14.SettingsService, decorators: [{
262
- type: Inject,
263
- args: [SETTINGS_SERVICE]
264
- }] }, { type: i15.ZitiDataService, decorators: [{
265
- type: Inject,
266
- args: [ZITI_DATA_SERVICE]
267
- }] }, { type: i4.Router }, { type: i4.ActivatedRoute }, { type: i5.Location }]; }, propDecorators: { errors: [{
268
- type: Input
269
- }], close: [{
270
- type: Output
271
- }], configEditor: [{
272
- type: ViewChild,
273
- args: ["configEditor", { read: ConfigEditorComponent }]
274
- }] } });
275
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9wcm9qZWN0YWJsZS1mb3Jtcy9jb25maWd1cmF0aW9uL2NvbmZpZ3VyYXRpb24tZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcHJvamVjdGFibGUtZm9ybXMvY29uZmlndXJhdGlvbi9jb25maWd1cmF0aW9uLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFBRSxNQUFNLEVBQ3BCLEtBQUssRUFFRyxNQUFNLEVBQ2QsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUUxRCxPQUFPLEVBQW1CLGlCQUFpQixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDN0YsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFFbEYsT0FBTyxFQUFDLFNBQVMsRUFBUyxPQUFPLEVBQVEsTUFBTSxRQUFRLENBQUM7QUFDeEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sRUFBQyxnQkFBZ0IsRUFBa0IsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRixPQUFPLEVBQUMsaUJBQWlCLEVBQWtCLE1BQU0scUNBQXFDLENBQUM7QUFFdkYsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQVE5QyxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsZUFBZTtJQXNCM0Qs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QU07c0JBQXZCLEtBQUs7Z0JBQ0ksS0FBSztzQkFBZCxNQUFNO2dCQWtCbUQsWUFBWTtzQkFBckUsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LCBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29uZmlndXJhdGlvblNlcnZpY2V9IGZyb20gXCIuL2NvbmZpZ3VyYXRpb24uc2VydmljZVwiO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge1NjaGVtYVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9zY2hlbWEuc2VydmljZVwiO1xuaW1wb3J0IHtQcm9qZWN0YWJsZUZvcm19IGZyb20gXCIuLi9wcm9qZWN0YWJsZS1mb3JtLmNsYXNzXCI7XG5pbXBvcnQge0dyb3dsZXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vbWVzc2FnaW5nL2dyb3dsZXIuc2VydmljZVwiO1xuaW1wb3J0IHtFeHRlbnNpb25TZXJ2aWNlLCBTSEFSRURaX0VYVEVOU0lPTn0gZnJvbSBcIi4uLy4uL2V4dGVuZGFibGUvZXh0ZW5zaW9ucy1ub29wLnNlcnZpY2VcIjtcbmltcG9ydCB7Q29uZmlnRWRpdG9yQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vY29uZmlnLWVkaXRvci9jb25maWctZWRpdG9yLmNvbXBvbmVudFwiO1xuXG5pbXBvcnQge2Nsb25lRGVlcCwgZGVmZXIsIGlzRW1wdHksIHVuc2V0fSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtHcm93bGVyTW9kZWx9IGZyb20gXCIuLi8uLi9tZXNzYWdpbmcvZ3Jvd2xlci5tb2RlbFwiO1xuaW1wb3J0IHtTRVRUSU5HU19TRVJWSUNFLCBTZXR0aW5nc1NlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlXCI7XG5pbXBvcnQge1pJVElfREFUQV9TRVJWSUNFLCBaaXRpRGF0YVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy96aXRpLWRhdGEuc2VydmljZVwiO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQge0NvbmZpZ30gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9jb25maWdcIjtcbmltcG9ydCB7TG9jYXRpb259IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItY29uZmlndXJhdGlvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpZ3VyYXRpb24tZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29uZmlndXJhdGlvbi1mb3JtLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvbkZvcm1Db21wb25lbnQgZXh0ZW5kcyBQcm9qZWN0YWJsZUZvcm0gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoKSBvdmVycmlkZSBlcnJvcnM6IGFueSA9IHt9O1xuICAgIEBPdXRwdXQoKSBjbG9zZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgb3B0aW9uczogYW55W10gPSBbXTtcbiAgICBpc0VkaXRpbmcgPSAhaXNFbXB0eSh0aGlzLmZvcm1EYXRhLmlkKTtcbiAgICBmb3JtVmlldyA9ICdzaW1wbGUnO1xuICAgIGZvcm1EYXRhSW52YWxpZCA9IGZhbHNlO1xuICAgIGVkaXRNb2RlID0gZmFsc2U7XG4gICAgaXRlbXM6IGFueSA9IFtdO1xuICAgIHNlbGVjdGVkU2NoZW1hOiBhbnkgPSAnJztcbiAgICBhc3NvY2lhdGVkU2VydmljZXMgPSBbXTtcbiAgICBhc3NvY2lhdGVkU2VydmljZU5hbWVzID0gW107XG4gICAgc2VydmljZXNMb2FkaW5nID0gZmFsc2U7XG4gICAgc2V0dGluZ3M6IGFueSA9IHt9O1xuICAgIHNlbGVjdGVkQ29uZmlnVHlwZUlkID0gJyc7XG5cbiAgICBvdmVycmlkZSBlbnRpdHlUeXBlID0gJ2NvbmZpZ3MnO1xuICAgIG92ZXJyaWRlIGVudGl0eUNsYXNzID0gQ29uZmlnO1xuXG4gICAgQFZpZXdDaGlsZChcImNvbmZpZ0VkaXRvclwiLCB7cmVhZDogQ29uZmlnRWRpdG9yQ29tcG9uZW50fSkgY29uZmlnRWRpdG9yITogQ29uZmlnRWRpdG9yQ29tcG9uZW50O1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgc3ZjOiBDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBzY2hlbWFTdmM6IFNjaGVtYVNlcnZpY2UsXG4gICAgICAgIGdyb3dsZXJTZXJ2aWNlOiBHcm93bGVyU2VydmljZSxcbiAgICAgICAgQEluamVjdChTSEFSRURaX0VYVEVOU0lPTikgZXh0U2VydmljZTogRXh0ZW5zaW9uU2VydmljZSxcbiAgICAgICAgQEluamVjdChTRVRUSU5HU19TRVJWSUNFKSBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2V0dGluZ3NTZXJ2aWNlOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoWklUSV9EQVRBX1NFUlZJQ0UpIG92ZXJyaWRlIHppdGlTZXJ2aWNlOiBaaXRpRGF0YVNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBvdmVycmlkZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJvdGVjdGVkIG92ZXJyaWRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgbG9jYXRpb246IExvY2F0aW9uXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGdyb3dsZXJTZXJ2aWNlLCBleHRTZXJ2aWNlLCB6aXRpU2VydmljZSwgcm91dGVyLCByb3V0ZSwgbG9jYXRpb24sIHNldHRpbmdzU2VydmljZSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3ZjLmNvbmZpZ0pzb25WaWV3ID0gZmFsc2U7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzQ2hhbmdlLnN1YnNjcmliZSgocmVzdWx0czphbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MgPSByZXN1bHRzO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBlbnRpdHlVcGRhdGVkKCkge1xuICAgICAgICBpZiAoaXNFbXB0eSh0aGlzLmZvcm1EYXRhPy5kYXRhKSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtRGF0YS5kYXRhID0ge307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRW1wdHkodGhpcy5mb3JtRGF0YT8uY29uZmlnVHlwZUlkKSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtRGF0YS5jb25maWdUeXBlSWQgPSAnJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkQ29uZmlnVHlwZUlkID0gdGhpcy5mb3JtRGF0YS5jb25maWdUeXBlSWQ7XG4gICAgICAgIHRoaXMuaW5pdERhdGEgPSBjbG9uZURlZXAodGhpcy5mb3JtRGF0YSk7XG4gICAgICAgIHRoaXMuc3ZjLmNvbmZpZ0pzb25WaWV3ID0gZmFsc2U7XG4gICAgICAgIC8vdGhpcy5nZXRBc3NvY2lhdGVkU2VydmljZXMoKTtcbiAgICAgICAgdGhpcy5zdmMuZ2V0Q29uZmlnVHlwZXMoKVxuICAgICAgICAgICAgLnRoZW4oY29uZmlnVHlwZXMgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IGNvbmZpZ1R5cGVzLnNvcnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFNjaGVtYSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaXNFZGl0aW5nID0gIWlzRW1wdHkodGhpcy5mb3JtRGF0YS5pZCk7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ1R5cGVFbXB0eSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtRGF0YS5jb25maWdUeXBlSWQgPSAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEFzc29jaWF0ZWRTZXJ2aWNlcygpIHtcbiAgICAgICAgdGhpcy5zdmMuZ2V0QXNzb2NpYXRlZFNlcnZpY2VzKHRoaXMuZm9ybURhdGEuaWQpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkU2VydmljZXMgPSByZXN1bHQuYXNzb2NpYXRlZFNlcnZpY2VzO1xuICAgICAgICAgICAgdGhpcy5hc3NvY2lhdGVkU2VydmljZU5hbWVzID0gcmVzdWx0LmFzc29jaWF0ZWRTZXJ2aWNlTmFtZXM7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsZWFyRm9ybSgpO1xuICAgIH1cblxuICAgIGdldCBjb25maWdUeXBlRW1wdHkoKSB7XG4gICAgICAgIHJldHVybiBpc0VtcHR5KHRoaXMuZm9ybURhdGEuY29uZmlnVHlwZUlkKTtcbiAgICB9XG5cbiAgICBoZWFkZXJBY3Rpb25SZXF1ZXN0ZWQoZXZlbnQpIHtcbiAgICAgICAgc3dpdGNoKGV2ZW50Lm5hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NhdmUnOlxuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjbG9zZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5yZXR1cm5Ub0xpc3RQYWdlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd0b2dnbGUtdmlldyc6XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtVmlldyA9IGV2ZW50LmRhdGE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhcGlBY3Rpb25SZXF1ZXN0ZWQoYWN0aW9uKSB7XG4gICAgICAgIHN3aXRjaCAoYWN0aW9uLmlkKSB7XG4gICAgICAgICAgICBjYXNlICdjbGknOlxuICAgICAgICAgICAgICAgIHRoaXMuY29weUNMSUNvbW1hbmQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2N1cmwnOlxuICAgICAgICAgICAgICAgIHRoaXMuY29weUNVUkxDb21tYW5kKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb3B5Q0xJQ29tbWFuZCgpIHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9IGB6aXRpIGVkZ2UgJHt0aGlzLmZvcm1EYXRhLmlkID8gJ3VwZGF0ZScgOiAnY3JlYXRlJ30gY29uZmlnICR7dGhpcy5mb3JtRGF0YS5pZCA/IGAnJHt0aGlzLmZvcm1EYXRhLmlkfSdgIDogJyd9ICR7dGhpcy5mb3JtRGF0YS5pZCA/ICctLW5hbWUnIDogJyd9ICcke3RoaXMuZm9ybURhdGEubmFtZX0nIC0tZGF0YSAnJHtKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm1EYXRhLmRhdGEpfScgLS10YWdzLWpzb24gJyR7SlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtRGF0YS50YWdzKX0nYDtcblxuICAgICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChjb21tYW5kKTtcbiAgICAgICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAgICAgJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgJ1N1Y2Nlc3MnLFxuICAgICAgICAgICAgYFRleHQgQ29waWVkYCxcbiAgICAgICAgICAgIGBDTEkgY29tbWFuZCBjb3BpZWQgdG8gY2xpcGJvYXJkYCxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgICB9XG5cbiAgICBjb3B5Q1VSTENvbW1hbmQoKSB7XG4gICAgICAgIGNvbnN0IGNvbW1hbmQgPSBgY3VybCAnJHt0aGlzLmFwaUNhbGxVUkx9JyBcXFxcXG4gICAgJHt0aGlzLmZvcm1EYXRhLmlkID8gJy0tcmVxdWVzdCBQQVRDSCBcXFxcJyA6ICdcXFxcJ31cbiAgICAtSCAnYWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uJyBcXFxcXG4gICAgLUggJ2NvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vanNvbicgXFxcXFxuICAgIC1IICd6dC1zZXNzaW9uOiAke3RoaXMuc2V0dGluZ3Muc2Vzc2lvbi5pZH0nIFxcXFxcbiAgICAtLWRhdGEtcmF3ICcke0pTT04uc3RyaW5naWZ5KHRoaXMuYXBpRGF0YSl9J2A7XG5cbiAgICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoY29tbWFuZCk7XG4gICAgICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgICAgICdzdWNjZXNzJyxcbiAgICAgICAgICAgICdTdWNjZXNzJyxcbiAgICAgICAgICAgIGBUZXh0IENvcGllZGAsXG4gICAgICAgICAgICBgQ1VSTCBjb21tYW5kIGNvcGllZCB0byBjbGlwYm9hcmRgLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGNsZWFyKCkge1xuICAgICAgICB0aGlzLmZvcm1EYXRhLmNvbmZpZ1R5cGVJZCA9ICcnO1xuICAgICAgICB0aGlzLmNsZWFyRm9ybSgpO1xuICAgIH1cblxuICAgIGNsZWFyRm9ybSgpIHtcbiAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtPy5jb21wb25lbnQpIGl0ZW0uY29tcG9uZW50LmRlc3Ryb3koKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZXJyb3JzID0ge307XG4gICAgICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy5mb3JtRGF0YSA9IHt9O1xuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgc2F2ZShldmVudD86IGFueSkge1xuICAgICAgICB0aGlzLmVycm9ycyA9IHt9O1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZ0VkaXRvci5nZXRDb25maWdEYXRhRnJvbUZvcm0oKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKXtcbiAgICAgICAgICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICAgICAgICdFcnJvcicsXG4gICAgICAgICAgICAgICAgYEVycm9yIEdldHRpbmcgQ29uZmlnIERhdGFgLFxuICAgICAgICAgICAgICAgICdFcnJvciBnZXR0aW5nIGNvbmZpZ3VyYXRpb24gZGF0YSBmcm9tIGZyb20uJyxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy52YWxpZGF0ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbmZpZ0lkID0gYXdhaXQgdGhpcy5zdmMuc2F2ZSh0aGlzLmZvcm1EYXRhKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGlmICghaXNFbXB0eShyZXN1bHQ/LmlkKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybURhdGEgPSByZXN1bHQ7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0RGF0YSA9IHRoaXMuZm9ybURhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0Py5pZDtcbiAgICAgICAgfSkuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGNvbmZpZ0lkKSB7XG4gICAgICAgICAgICB0aGlzLmluaXREYXRhID0gdGhpcy5mb3JtRGF0YTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFDaGFuZ2UgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzTW9kYWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlTW9kYWwodHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucmV0dXJuVG9MaXN0UGFnZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhbGlkYXRlKCkge1xuICAgICAgICB0aGlzLmVycm9ycyA9IHt9O1xuXG4gICAgICAgIGlmICghdGhpcy5jb25maWdFZGl0b3IudmFsaWRhdGVDb25maWcodGhpcy5zZWxlY3RlZFNjaGVtYSwgdHJ1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNFbXB0eSh0aGlzLmZvcm1EYXRhLm5hbWUpKSB7XG4gICAgICAgICAgICB0aGlzLmVycm9yc1snbmFtZSddID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNFbXB0eSh0aGlzLmZvcm1EYXRhLmNvbmZpZ1R5cGVJZCkpIHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JzWydjb25maWdUeXBlSWQnXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0VtcHR5KHRoaXMuZXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ0Vycm9yJyxcbiAgICAgICAgICAgICAgICBgRXJyb3IgVmFsaWRhdGluZyBDb25maWdgLFxuICAgICAgICAgICAgICAgICdUaGUgZW50ZXJlZCBjb25maWd1cmF0aW9uIGlzIGludmFsaWQuIFBsZWFzZSB1cGRhdGUgbWlzc2luZy9pbnZhbGlkIGZpZWxkcyBhbmQgdHJ5IGFnYWluLicsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNFbXB0eSh0aGlzLmVycm9ycyk7XG4gICAgfVxuICAgIGdldCBzYXZlQnV0dG9uVG9vbHRpcCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybURhdGFJbnZhbGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gJ0NvbmZpZyBkYXRhIGlzIGludmFsaWQuIFBsZWFzZSB1cGRhdGUgYW5kIHRyeSBhZ2Fpbi4nXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gJ0NvbXBsZXRlIGFuZCBhdHRhY2ggY29uZmlnIGRlZmluaXRpb24sIG9yIHJlbW92ZSBiZWZvcmUgc2F2aW5nJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFNjaGVtYSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb25maWdUeXBlSWQgIT09IHRoaXMuZm9ybURhdGEuY29uZmlnVHlwZUlkKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29uZmlnVHlwZUlkID0gdGhpcy5mb3JtRGF0YS5jb25maWdUeXBlSWQ7XG4gICAgICAgICAgICB0aGlzLmZvcm1EYXRhLmRhdGEgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN2Yy5nZXRTY2hlbWEodGhpcy5mb3JtRGF0YS5jb25maWdUeXBlSWQpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFNjaGVtYSA9IHJlc3VsdDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0IGFwaUNhbGxVUkwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldHRpbmdzLnNlbGVjdGVkRWRnZUNvbnRyb2xsZXIgKyAnL2VkZ2UvbWFuYWdlbWVudC92MS9jb25maWdzJyArICh0aGlzLmZvcm1EYXRhLmlkID8gYC8ke3RoaXMuZm9ybURhdGEuaWR9YCA6ICcnKTtcbiAgICB9XG5cbiAgICBnZXQgYXBpRGF0YSgpOiBhbnkge1xuICAgICAgICBjb25zdCBkYXRhOiBhbnkgPSB7XG4gICAgICAgICAgICBuYW1lOiB0aGlzLmZvcm1EYXRhPy5uYW1lIHx8ICcnLFxuICAgICAgICAgICAgY29uZmlnVHlwZUlkOiB0aGlzLmZvcm1EYXRhPy5jb25maWdUeXBlSWQgfHwgJycsXG4gICAgICAgICAgICBkYXRhOiB0aGlzLmZvcm1EYXRhPy5kYXRhIHx8IHt9LFxuICAgICAgICAgICAgdGFnczogdGhpcy5mb3JtRGF0YT8udGFnc1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9hcGlEYXRhID0gZGF0YTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwaURhdGE7XG4gICAgfVxuXG4gICAgX2FwaURhdGE6IGFueSA9IHt9O1xuICAgIHNldCBhcGlEYXRhKGRhdGEpIHtcbiAgICAgICAgdGhpcy5fYXBpRGF0YSA9IGRhdGE7XG4gICAgfVxuXG4gICAgZGF0YUNoYW5nZWQoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5fYXBpRGF0YSA9IGNsb25lRGVlcCh0aGlzLmFwaURhdGEpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwcm9qZWN0YWJsZS1mb3JtLXdyYXBwZXJcIlxuICAgICAoa2V5dXAuZW50ZXIpPVwic2F2ZSgkZXZlbnQpXCJcbiAgICAgKGtleXVwLmVzY2FwZSk9XCJjbG9zZU1vZGFsKGZhbHNlKVwiXG4gICAgIHRhYmluZGV4PVwiMFwiXG4gICAgIFtjbGFzcy5wcm9qZWN0YWJsZS1mb3JtLWhpZGRlbl09XCIhZGF0YUluaXRcIlxuPlxuICAgIDxsaWItZm9ybS1oZWFkZXJcbiAgICAgICAgICAgIFtkYXRhXT1cImZvcm1EYXRhXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCIoZm9ybURhdGEuaWQgPyAnRWRpdCBDb25maWcnIDogJ0NyZWF0ZSBDb25maWcnKVwiXG4gICAgICAgICAgICBbbW9yZUFjdGlvbnNdPVwiZm9ybURhdGEubW9yZUFjdGlvbnNcIlxuICAgICAgICAgICAgKGFjdGlvblJlcXVlc3RlZCk9XCJoZWFkZXJBY3Rpb25SZXF1ZXN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbKGZvcm1WaWV3KV09XCJmb3JtVmlld1wiXG4gICAgICAgICAgICBbc2F2ZURpc2FibGVkXT1cInN2Yy5zYXZlRGlzYWJsZWQgfHwgZm9ybURhdGFJbnZhbGlkXCJcbiAgICAgICAgICAgIFtzYXZlVG9vbHRpcF09XCJzYXZlQnV0dG9uVG9vbHRpcFwiXG4gICAgICAgICAgICBbY2xhc3MuaXMtc2Nyb2xsZWRdPVwiaXNTY3JvbGxlZFwiXG4gICAgPjwvbGliLWZvcm0taGVhZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJjb25maWctZm9ybS1jb250YWluZXIgcHJvamVjdGFibGUtZm9ybS1jb250YWluZXJcIiAjZm9ybUNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInByb2plY3RhYmxlLWZvcm0tbWFpbi1jb2x1bW4gZm9ybS1ncm91cC1yb3dcIiBbaGlkZGVuXT1cImZvcm1WaWV3ICE9PSAnc2ltcGxlJ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtY29sdW1uIHRocmVlLWZpZnRoc1wiPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXIgW3RpdGxlXT1cIidDb25maWcgTmFtZSdcIiBbbGFiZWxdPVwiJ1JlcXVpcmVkJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiQ29uZmlnTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCI1MDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJOYW1lIHRoaXMgY29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntlcnJvcjogZXJyb3JzWyduYW1lJ119XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9ybURhdGEubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXApPVwiYXBpRGF0YSgpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXIgW3Nob3dIZWFkZXJdPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZy10aXRsZS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1maWVsZC10aXRsZVwiPkNvbmZpZ3VyYXRpb24gRGF0YTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWhlYWRlci10b2dnbGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLW9wdGlvbi10ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsndG9nZ2xlLW9wdGlvbi1zZWxlY3RlZCc6ICFzdmMuY29uZmlnSnNvblZpZXd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzdmMudG9nZ2xlSlNPTlZpZXcoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGT1JNXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWhlYWRlci10b2dnbGVcIiAoY2xpY2spPVwic3ZjLnRvZ2dsZUpTT05WaWV3KClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS10b2dnbGUtc3dpdGNoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3RvZ2dsZS1sZWZ0JzogIXN2Yy5jb25maWdKc29uVmlldywgJ3RvZ2dsZS1yaWdodCc6IHN2Yy5jb25maWdKc29uVmlld31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS10b2dnbGUtaW5kaWNhdG9yXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS10b2dnbGUtaW5kaWNhdG9yXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1vcHRpb24tdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3RvZ2dsZS1vcHRpb24tc2VsZWN0ZWQnOiBzdmMuY29uZmlnSnNvblZpZXd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzdmMudG9nZ2xlSlNPTlZpZXcoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09OXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZC1pbnB1dC1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZy10aXRsZS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvcm0tZmllbGQtdGl0bGVcIj57e2lzRWRpdGluZyA/ICdDb25maWcgVHlwZScgOiAnU2VsZWN0IGEgQ29uZmlnIFR5cGUnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJDb25maWdUeXBlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29uZmlnLXR5cGUtc2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JtRGF0YS5jb25maWdUeXBlSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImdldFNjaGVtYSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2Rpc2FibGVkOiBpc0VkaXRpbmcsIGVycm9yOiBlcnJvcnNbJ2NvbmZpZ1R5cGVJZCddfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdCBBIFR5cGUuLi48L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjb25maWcgb2Ygb3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY29uZmlnLmlkXCI+e3tjb25maWcubmFtZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItY29uZmlnLWVkaXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cImNvbmZpZ1R5cGVFbXB0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwic2VsZWN0ZWRTY2hlbWFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGNvbmZpZ0RhdGEpXT1cImZvcm1EYXRhLmRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0pzb25WaWV3XT1cInN2Yy5jb25maWdKc29uVmlld1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoY29uZmlnRXJyb3JzKV09XCJlcnJvcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZmlnRGF0YUNoYW5nZSk9XCJkYXRhQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2NvbmZpZ0VkaXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbGliLWNvbmZpZy1lZGl0b3I+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC10b2dnbGUgWyh0b2dnbGVPbildPVwic2hvd01vcmVcIiAodG9nZ2xlT25DaGFuZ2UpPVwic2hvd01vcmVDaGFuZ2VkKCRldmVudClcIiBzdHlsZT1cIm1hcmdpbjogMHB4IDEwcHhcIj48L2xpYi1mb3JtLWZpZWxkLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICA8ZGl2IFtoaWRkZW5dPVwiIXNob3dNb3JlXCIgY2xhc3M9XCJmb3JtLWdyb3VwLWNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidDdXN0b20gVGFncydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInT1BUSU9OQUwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtYWR2YW5jZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWhpZGVUYWdzXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1jdXN0b20tdGFncyBbKHRhZ3MpXT1cImZvcm1EYXRhLnRhZ3NcIj48L2xpYi1jdXN0b20tdGFncz5cbiAgICAgICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwLWNvbHVtbiB0d28tZmlmdGhzXCI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBUEkgQ2FsbHMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGVhZGVyQWN0aW9uc109XCJhcGlPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChhY3Rpb25SZXF1ZXN0ZWQpPVwiYXBpQWN0aW9uUmVxdWVzdGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWZpZWxkLWlucHV0XCIgW3ZhbHVlXT1cImFwaUNhbGxVUkxcIiByZWFkb25seS8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXJsLWNvcHkgaWNvbi1jb3B5IGNvcHktdGV4dFwiIChjbGljayk9XCJjb3B5VG9DbGlwYm9hcmQoYXBpQ2FsbFVSTClcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItanNvbi12aWV3ICpuZ0lmPVwiZm9ybURhdGFcIiBbKGRhdGEpXT1cIl9hcGlEYXRhXCIgW3JlYWRPbmx5XT1cInRydWVcIiBbc2hvd0NvcHldPVwidHJ1ZVwiPjwvbGliLWpzb24tdmlldz5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtY29sdW1uXCIgKm5nSWY9XCJmb3JtVmlldyA9PT0gJ3JhdydcIj5cbiAgICAgICAgICAgIDxsaWItanNvbi12aWV3ICpuZ0lmPVwiZm9ybURhdGFcIiBbKGRhdGEpXT1cImZvcm1EYXRhXCI+PC9saWItanNvbi12aWV3PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGxpYi1sb2FkaW5nLWluZGljYXRvciAqbmdJZj1cImlzTG9hZGluZyB8fCAhZGF0YUluaXRcIiBbaXNMb2FkaW5nXT1cImlzTG9hZGluZyB8fCAhZGF0YUluaXRcIj48L2xpYi1sb2FkaW5nLWluZGljYXRvcj5cbiJdfQ==
@@ -1,137 +0,0 @@
1
- import { Injectable, Inject } from '@angular/core';
2
- import { ZITI_DATA_SERVICE } from "../../../services/ziti-data.service";
3
- import { Resolver } from "@stoplight/json-ref-resolver";
4
- import { isEmpty, keys } from "lodash";
5
- import { GrowlerModel } from "../../messaging/growler.model";
6
- import { Config } from "../../../models/config";
7
- import { SHAREDZ_EXTENSION } from "../../extendable/extensions-noop.service";
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "../../../services/schema.service";
10
- import * as i2 from "../../messaging/growler.service";
11
- import * as i3 from "../../../services/validation.service";
12
- import * as i4 from "../../../services/ziti-data.service";
13
- export class ConfigurationService {
14
- constructor(dataService, extService, schemaSvc, growlerService, validationService) {
15
- this.dataService = dataService;
16
- this.extService = extService;
17
- this.schemaSvc = schemaSvc;
18
- this.growlerService = growlerService;
19
- this.validationService = validationService;
20
- this.configTypes = [];
21
- this.items = [];
22
- this.errors = [];
23
- this.saveDisabled = false;
24
- this.configJsonView = false;
25
- this.configDataLabel = 'Configuration Form';
26
- }
27
- async getSchema(schemaType) {
28
- if (!schemaType)
29
- return Promise.resolve();
30
- for (let idx = 0; idx < this.configTypes.length; idx++) {
31
- if (this.configTypes[idx].id === schemaType)
32
- return this.configTypes[idx].schema;
33
- }
34
- }
35
- getConfigTypes() {
36
- const paging = {
37
- filter: "",
38
- noSearch: false,
39
- order: "asc",
40
- page: 1,
41
- searchOn: "name",
42
- sort: "name",
43
- total: 50
44
- };
45
- return this.dataService.get('config-types', paging, [])
46
- .then(async (body) => {
47
- if (body.error)
48
- throw body.error;
49
- this.configTypes = [];
50
- const promises = [];
51
- const resolver = new Resolver();
52
- body.data.map((row) => {
53
- const schema = row.schema;
54
- promises.push(resolver.resolve(schema, {}).then(s => {
55
- row.schema = s.result;
56
- this.configTypes.push(row);
57
- }));
58
- });
59
- return Promise.all(promises).then(() => this.configTypes);
60
- });
61
- }
62
- getAssociatedServices(configId) {
63
- return this.dataService.getSubdata('configs', configId, 'services').then((result) => {
64
- const associatedServices = result.data;
65
- const associatedServiceNames = associatedServices.map((svc) => {
66
- return svc.name;
67
- });
68
- return { associatedServices, associatedServiceNames };
69
- });
70
- }
71
- toggleJSONView() {
72
- this.configJsonView = !this.configJsonView;
73
- this.configDataLabel = this.configJsonView ? 'JSON Configuration' : 'Configuration Form';
74
- if (this.configJsonView) {
75
- //this.configSubscriptions.unsubscribe();
76
- }
77
- }
78
- save(formData) {
79
- const isUpdate = !isEmpty(formData.id);
80
- const data = this.getConfigDataModel(formData, isUpdate);
81
- let prom;
82
- if (isUpdate) {
83
- prom = this.dataService.patch('configs', data, formData.id, true);
84
- }
85
- else {
86
- prom = this.dataService.post('configs', data, true);
87
- }
88
- return prom.then(async (result) => {
89
- const id = isUpdate ? formData.id : (result?.data?.id || result?.id);
90
- let config = await this.dataService.getSubdata('configs', id, '').then((svcData) => {
91
- return svcData.data;
92
- });
93
- return this.extService.formDataSaved(config).then((formSavedResult) => {
94
- if (!formSavedResult) {
95
- return config;
96
- }
97
- const growlerData = new GrowlerModel('success', 'Success', `Config ${isUpdate ? 'Updated' : 'Created'}`, `Successfully ${isUpdate ? 'updated' : 'created'} Config: ${formData.name}`);
98
- this.growlerService.show(growlerData);
99
- return config;
100
- }).catch((result) => {
101
- return false;
102
- });
103
- }).catch((resp) => {
104
- const errorMessage = this.dataService.getErrorMessage(resp);
105
- const growlerData = new GrowlerModel('error', 'Error', `Error ${isUpdate ? 'Updating' : 'Creating'} Config`, errorMessage);
106
- this.growlerService.show(growlerData);
107
- throw resp;
108
- });
109
- }
110
- getConfigDataModel(formData, isUpdate) {
111
- const saveModel = new Config();
112
- const modelProperties = keys(saveModel);
113
- modelProperties.forEach((prop) => {
114
- switch (prop) {
115
- default:
116
- saveModel[prop] = formData[prop];
117
- }
118
- });
119
- saveModel.data = this.validationService.redefineObject(saveModel.data);
120
- return saveModel;
121
- }
122
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfigurationService, deps: [{ token: ZITI_DATA_SERVICE }, { token: SHAREDZ_EXTENSION }, { token: i1.SchemaService }, { token: i2.GrowlerService }, { token: i3.ValidationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
123
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfigurationService, providedIn: 'root' }); }
124
- }
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfigurationService, decorators: [{
126
- type: Injectable,
127
- args: [{
128
- providedIn: 'root'
129
- }]
130
- }], ctorParameters: function () { return [{ type: i4.ZitiDataService, decorators: [{
131
- type: Inject,
132
- args: [ZITI_DATA_SERVICE]
133
- }] }, { type: undefined, decorators: [{
134
- type: Inject,
135
- args: [SHAREDZ_EXTENSION]
136
- }] }, { type: i1.SchemaService }, { type: i2.GrowlerService }, { type: i3.ValidationService }]; } });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL3Byb2plY3RhYmxlLWZvcm1zL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxpQkFBaUIsRUFBa0IsTUFBTSxxQ0FBcUMsQ0FBQztBQUN2RixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFFdEQsT0FBTyxFQUFtQixPQUFPLEVBQVMsSUFBSSxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzlELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDOUMsT0FBTyxFQUFtQixpQkFBaUIsRUFBQyxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7QUFPN0YsTUFBTSxPQUFPLG9CQUFvQjtJQVM3QixZQUN1QyxXQUE0QixFQUM3QixVQUE0QixFQUN0RCxTQUF3QixFQUN4QixjQUE4QixFQUM5QixpQkFBb0M7UUFKVCxnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDN0IsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDdEQsY0FBUyxHQUFULFNBQVMsQ0FBZTtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQWJ4QyxnQkFBVyxHQUFVLEVBQUUsQ0FBQztRQUVoQyxVQUFLLEdBQVUsRUFBRSxDQUFDO1FBQ2xCLFdBQU0sR0FBVSxFQUFFLENBQUM7UUFDbkIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsbUJBQWMsR0FB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QWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM3QixRQUFPLElBQUksRUFBRTtnQkFDVDtvQkFDSSxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3hDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxTQUFTLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZFLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7K0dBN0hRLG9CQUFvQixrQkFVakIsaUJBQWlCLGFBQ2pCLGlCQUFpQjttSEFYcEIsb0JBQW9CLGNBRmpCLE1BQU07OzRGQUVULG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQVdRLE1BQU07MkJBQUMsaUJBQWlCOzswQkFDeEIsTUFBTTsyQkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIEluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1pJVElfREFUQV9TRVJWSUNFLCBaaXRpRGF0YVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy96aXRpLWRhdGEuc2VydmljZVwiO1xuaW1wb3J0IHtSZXNvbHZlcn0gZnJvbSBcIkBzdG9wbGlnaHQvanNvbi1yZWYtcmVzb2x2ZXJcIjtcbmltcG9ydCB7U2NoZW1hU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3NjaGVtYS5zZXJ2aWNlXCI7XG5pbXBvcnQge2RlZmVyLCBpc0Jvb2xlYW4sIGlzRW1wdHksIGlzTmlsLCBrZXlzfSBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQge0dyb3dsZXJNb2RlbH0gZnJvbSBcIi4uLy4uL21lc3NhZ2luZy9ncm93bGVyLm1vZGVsXCI7XG5pbXBvcnQge0dyb3dsZXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vbWVzc2FnaW5nL2dyb3dsZXIuc2VydmljZVwiO1xuaW1wb3J0IHtDb25maWd9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvY29uZmlnXCI7XG5pbXBvcnQge0V4dGVuc2lvblNlcnZpY2UsIFNIQVJFRFpfRVhURU5TSU9OfSBmcm9tIFwiLi4vLi4vZXh0ZW5kYWJsZS9leHRlbnNpb25zLW5vb3Auc2VydmljZVwiO1xuaW1wb3J0IHtTRVJWSUNFX0VYVEVOU0lPTl9TRVJWSUNFfSBmcm9tIFwiLi4vc2VydmljZS9zZXJ2aWNlLWZvcm0uc2VydmljZVwiO1xuaW1wb3J0IHtWYWxpZGF0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3ZhbGlkYXRpb24uc2VydmljZVwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcbiAgICBwcml2YXRlIGNvbmZpZ1R5cGVzOiBhbnlbXSA9IFtdO1xuXG4gICAgaXRlbXM6IGFueVtdID0gW107XG4gICAgZXJyb3JzOiBhbnlbXSA9IFtdO1xuICAgIHNhdmVEaXNhYmxlZCA9IGZhbHNlO1xuICAgIGNvbmZpZ0pzb25WaWV3ID0gZmFsc2U7XG4gICAgY29uZmlnRGF0YUxhYmVsID0gJ0NvbmZpZ3VyYXRpb24gRm9ybSc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChaSVRJX0RBVEFfU0VSVklDRSkgcHJpdmF0ZSBkYXRhU2VydmljZTogWml0aURhdGFTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFNIQVJFRFpfRVhURU5TSU9OKXByaXZhdGUgZXh0U2VydmljZTogRXh0ZW5zaW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBzY2hlbWFTdmM6IFNjaGVtYVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZ3Jvd2xlclNlcnZpY2U6IEdyb3dsZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHZhbGlkYXRpb25TZXJ2aWNlOiBWYWxpZGF0aW9uU2VydmljZVxuICAgICkge1xuICAgIH1cblxuICAgIGFzeW5jIGdldFNjaGVtYShzY2hlbWFUeXBlOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBpZiAoIXNjaGVtYVR5cGUpIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgZm9yIChsZXQgaWR4ID0gMDsgaWR4IDwgdGhpcy5jb25maWdUeXBlcy5sZW5ndGg7IGlkeCsrKSB7XG4gICAgICAgICAgICBpZih0aGlzLmNvbmZpZ1R5cGVzW2lkeF0uaWQgPT09IHNjaGVtYVR5cGUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnVHlwZXNbaWR4XS5zY2hlbWE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRDb25maWdUeXBlcygpIHtcbiAgICAgICAgY29uc3QgcGFnaW5nID0ge1xuICAgICAgICAgICAgZmlsdGVyOiBcIlwiLFxuICAgICAgICAgICAgbm9TZWFyY2g6IGZhbHNlLFxuICAgICAgICAgICAgb3JkZXI6IFwiYXNjXCIsXG4gICAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICAgICAgc2VhcmNoT246IFwibmFtZVwiLFxuICAgICAgICAgICAgc29ydDogXCJuYW1lXCIsXG4gICAgICAgICAgICB0b3RhbDogNTBcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuZ2V0KCdjb25maWctdHlwZXMnLCBwYWdpbmcsIFtdKVxuICAgICAgICAudGhlbihhc3luYyAoYm9keTogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoYm9keS5lcnJvcikgdGhyb3cgYm9keS5lcnJvcjtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnVHlwZXMgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IHByb21pc2VzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZXIgPSBuZXcgUmVzb2x2ZXIoKTtcbiAgICAgICAgICAgIGJvZHkuZGF0YS5tYXAoIChyb3c6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjaGVtYSA9IHJvdy5zY2hlbWE7XG4gICAgICAgICAgICAgICAgcHJvbWlzZXMucHVzaChyZXNvbHZlci5yZXNvbHZlKHNjaGVtYSwge30pLnRoZW4ocyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJvdy5zY2hlbWEgPSBzLnJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWdUeXBlcy5wdXNoKHJvdyk7XG4gICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcykudGhlbigoKSA9PiB0aGlzLmNvbmZpZ1R5cGVzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0QXNzb2NpYXRlZFNlcnZpY2VzKGNvbmZpZ0lkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmdldFN1YmRhdGEoJ2NvbmZpZ3MnLCBjb25maWdJZCwgJ3NlcnZpY2VzJykudGhlbigocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFzc29jaWF0ZWRTZXJ2aWNlcyA9IHJlc3VsdC5kYXRhO1xuICAgICAgICAgICAgY29uc3QgYXNzb2NpYXRlZFNlcnZpY2VOYW1lcyA9IGFzc29jaWF0ZWRTZXJ2aWNlcy5tYXAoKHN2YykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdmMubmFtZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHthc3NvY2lhdGVkU2VydmljZXMsIGFzc29jaWF0ZWRTZXJ2aWNlTmFtZXN9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0b2dnbGVKU09OVmlldygpIHtcbiAgICAgICAgdGhpcy5jb25maWdKc29uVmlldyA9ICF0aGlzLmNvbmZpZ0pzb25WaWV3O1xuICAgICAgICB0aGlzLmNvbmZpZ0RhdGFMYWJlbCA9IHRoaXMuY29uZmlnSnNvblZpZXcgPyAnSlNPTiBDb25maWd1cmF0aW9uJyA6ICdDb25maWd1cmF0aW9uIEZvcm0nO1xuICAgICAgICBpZiAodGhpcy5jb25maWdKc29uVmlldykge1xuICAgICAgICAgICAgLy90aGlzLmNvbmZpZ1N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNhdmUoZm9ybURhdGEpIHtcbiAgICAgICAgY29uc3QgaXNVcGRhdGUgPSAhaXNFbXB0eShmb3JtRGF0YS5pZCk7XG4gICAgICAgIGNvbnN0IGRhdGE6IGFueSA9IHRoaXMuZ2V0Q29uZmlnRGF0YU1vZGVsKGZvcm1EYXRhLCBpc1VwZGF0ZSk7XG4gICAgICAgIGxldCBwcm9tO1xuICAgICAgICBpZiAoaXNVcGRhdGUpIHtcbiAgICAgICAgICAgIHByb20gPSB0aGlzLmRhdGFTZXJ2aWNlLnBhdGNoKCdjb25maWdzJywgZGF0YSwgZm9ybURhdGEuaWQsIHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJvbSA9IHRoaXMuZGF0YVNlcnZpY2UucG9zdCgnY29uZmlncycsIGRhdGEsIHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHByb20udGhlbihhc3luYyAocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0gaXNVcGRhdGUgPyBmb3JtRGF0YS5pZCA6IChyZXN1bHQ/LmRhdGE/LmlkIHx8IHJlc3VsdD8uaWQpO1xuICAgICAgICAgICAgbGV0IGNvbmZpZyA9IGF3YWl0IHRoaXMuZGF0YVNlcnZpY2UuZ2V0U3ViZGF0YSgnY29uZmlncycsIGlkLCAnJykudGhlbigoc3ZjRGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdmNEYXRhLmRhdGE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmV4dFNlcnZpY2UuZm9ybURhdGFTYXZlZChjb25maWcpLnRoZW4oKGZvcm1TYXZlZFJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFmb3JtU2F2ZWRSZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAgICAgICAgICAgICAnc3VjY2VzcycsXG4gICAgICAgICAgICAgICAgICAgICdTdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgYENvbmZpZyAke2lzVXBkYXRlID8gJ1VwZGF0ZWQnIDogJ0NyZWF0ZWQnfWAsXG4gICAgICAgICAgICAgICAgICAgIGBTdWNjZXNzZnVsbHkgJHtpc1VwZGF0ZSA/ICd1cGRhdGVkJyA6ICdjcmVhdGVkJ30gQ29uZmlnOiAke2Zvcm1EYXRhLm5hbWV9YCxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3Jvd2xlclNlcnZpY2Uuc2hvdyhncm93bGVyRGF0YSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICAgICAgICAgIH0pLmNhdGNoKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkuY2F0Y2goKHJlc3ApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHRoaXMuZGF0YVNlcnZpY2UuZ2V0RXJyb3JNZXNzYWdlKHJlc3ApO1xuICAgICAgICAgICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ0Vycm9yJyxcbiAgICAgICAgICAgICAgICBgRXJyb3IgJHtpc1VwZGF0ZSA/ICdVcGRhdGluZycgOiAnQ3JlYXRpbmcnfSBDb25maWdgLFxuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICAgICAgICAgICAgdGhyb3cgcmVzcDtcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBnZXRDb25maWdEYXRhTW9kZWwoZm9ybURhdGEsIGlzVXBkYXRlKSB7XG4gICAgICAgIGNvbnN0IHNhdmVNb2RlbCA9IG5ldyBDb25maWcoKTtcbiAgICAgICAgY29uc3QgbW9kZWxQcm9wZXJ0aWVzID0ga2V5cyhzYXZlTW9kZWwpO1xuICAgICAgICBtb2RlbFByb3BlcnRpZXMuZm9yRWFjaCgocHJvcCkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoKHByb3ApIHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBzYXZlTW9kZWxbcHJvcF0gPSBmb3JtRGF0YVtwcm9wXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHNhdmVNb2RlbC5kYXRhID0gdGhpcy52YWxpZGF0aW9uU2VydmljZS5yZWRlZmluZU9iamVjdChzYXZlTW9kZWwuZGF0YSk7XG4gICAgICAgIHJldHVybiBzYXZlTW9kZWw7XG4gICAgfVxufVxuIl19