@pega/angular-sdk-components 23.1.10 → 24.2.10

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 (238) hide show
  1. package/esm2022/lib/_bridge/angular-pconnect.mjs +18 -6
  2. package/esm2022/lib/_bridge/component-mapper/component-mapper.component.mjs +6 -13
  3. package/esm2022/lib/_bridge/helpers/sdk-pega-component-map.mjs +3 -1
  4. package/esm2022/lib/_bridge/helpers/sdk_component_map.mjs +1 -1
  5. package/esm2022/lib/_components/designSystemExtension/alert/alert.component.mjs +4 -4
  6. package/esm2022/lib/_components/designSystemExtension/alert-banner/alert-banner.component.mjs +4 -4
  7. package/esm2022/lib/_components/designSystemExtension/banner/banner.component.mjs +4 -4
  8. package/esm2022/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.mjs +5 -5
  9. package/esm2022/lib/_components/designSystemExtension/field-group/field-group.component.mjs +3 -3
  10. package/esm2022/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.mjs +9 -6
  11. package/esm2022/lib/_components/designSystemExtension/material-details/material-details.component.mjs +5 -5
  12. package/esm2022/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.mjs +10 -7
  13. package/esm2022/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.mjs +5 -5
  14. package/esm2022/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.mjs +4 -4
  15. package/esm2022/lib/_components/designSystemExtension/material-utility/material-utility.component.mjs +5 -5
  16. package/esm2022/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.mjs +5 -5
  17. package/esm2022/lib/_components/designSystemExtension/operator/operator.component.mjs +16 -9
  18. package/esm2022/lib/_components/designSystemExtension/pulse/pulse.component.mjs +9 -9
  19. package/esm2022/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.mjs +4 -4
  20. package/esm2022/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.mjs +3 -3
  21. package/esm2022/lib/_components/field/auto-complete/auto-complete.component.mjs +14 -12
  22. package/esm2022/lib/_components/field/cancel-alert/cancel-alert.component.mjs +5 -7
  23. package/esm2022/lib/_components/field/check-box/check-box.component.mjs +111 -45
  24. package/esm2022/lib/_components/field/currency/currency.component.mjs +48 -18
  25. package/esm2022/lib/_components/field/date/date.component.mjs +21 -41
  26. package/esm2022/lib/_components/field/date-time/date-time.component.mjs +26 -45
  27. package/esm2022/lib/_components/field/decimal/decimal.component.mjs +41 -11
  28. package/esm2022/lib/_components/field/dropdown/dropdown.component.mjs +126 -31
  29. package/esm2022/lib/_components/field/email/email.component.mjs +15 -8
  30. package/esm2022/lib/_components/field/group/group.component.mjs +11 -8
  31. package/esm2022/lib/_components/field/integer/integer.component.mjs +15 -10
  32. package/esm2022/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.mjs +3 -3
  33. package/esm2022/lib/_components/field/multiselect/multiselect.component.mjs +314 -0
  34. package/esm2022/lib/_components/field/multiselect/utils.mjs +187 -0
  35. package/esm2022/lib/_components/field/percentage/percentage.component.mjs +41 -14
  36. package/esm2022/lib/_components/field/phone/phone.component.mjs +12 -19
  37. package/esm2022/lib/_components/field/radio-buttons/radio-buttons.component.mjs +12 -19
  38. package/esm2022/lib/_components/field/rich-text/rich-text.component.mjs +10 -11
  39. package/esm2022/lib/_components/field/scalar-list/scalar-list.component.mjs +9 -9
  40. package/esm2022/lib/_components/field/semantic-link/semantic-link.component.mjs +5 -5
  41. package/esm2022/lib/_components/field/text/text.component.mjs +7 -5
  42. package/esm2022/lib/_components/field/text-area/text-area.component.mjs +15 -13
  43. package/esm2022/lib/_components/field/text-content/text-content.component.mjs +5 -5
  44. package/esm2022/lib/_components/field/text-input/text-input.component.mjs +15 -10
  45. package/esm2022/lib/_components/field/time/time.component.mjs +23 -12
  46. package/esm2022/lib/_components/field/url/url.component.mjs +17 -10
  47. package/esm2022/lib/_components/field/user-reference/user-reference.component.mjs +69 -37
  48. package/esm2022/lib/_components/infra/Containers/base-components/flow-container-base.component.mjs +18 -0
  49. package/esm2022/lib/_components/infra/Containers/base-components/helper.mjs +71 -0
  50. package/esm2022/lib/_components/infra/Containers/flow-container/flow-container.component.mjs +40 -41
  51. package/esm2022/lib/_components/infra/Containers/flow-container/helpers.mjs +1 -1
  52. package/esm2022/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.mjs +3 -3
  53. package/esm2022/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.mjs +41 -13
  54. package/esm2022/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.mjs +4 -4
  55. package/esm2022/lib/_components/infra/Containers/view-container/helper.mjs +22 -0
  56. package/esm2022/lib/_components/infra/Containers/view-container/view-container.component.mjs +10 -18
  57. package/esm2022/lib/_components/infra/action-buttons/action-buttons.component.mjs +3 -3
  58. package/esm2022/lib/_components/infra/assignment/assignment.component.mjs +35 -40
  59. package/esm2022/lib/_components/infra/assignment-card/assignment-card.component.mjs +4 -4
  60. package/esm2022/lib/_components/infra/dashboard-filter/dashboard-filter.component.mjs +5 -6
  61. package/esm2022/lib/_components/infra/defer-load/defer-load.component.mjs +13 -16
  62. package/esm2022/lib/_components/infra/error-boundary/error-boundary.component.mjs +3 -3
  63. package/esm2022/lib/_components/infra/multi-step/multi-step.component.mjs +6 -6
  64. package/esm2022/lib/_components/infra/navbar/navbar.component.mjs +12 -8
  65. package/esm2022/lib/_components/infra/reference/reference.component.mjs +5 -5
  66. package/esm2022/lib/_components/infra/region/region.component.mjs +4 -4
  67. package/esm2022/lib/_components/infra/root-container/root-container.component.mjs +5 -5
  68. package/esm2022/lib/_components/infra/stages/stages.component.mjs +6 -6
  69. package/esm2022/lib/_components/infra/view/view.component.mjs +24 -9
  70. package/esm2022/lib/_components/template/app-shell/app-shell.component.mjs +21 -5
  71. package/esm2022/lib/_components/template/banner-page/banner-page.component.mjs +5 -5
  72. package/esm2022/lib/_components/template/base/details-template-base.mjs +56 -0
  73. package/esm2022/lib/_components/template/base/form-template-base.mjs +13 -0
  74. package/esm2022/lib/_components/template/case-summary/case-summary.component.mjs +38 -9
  75. package/esm2022/lib/_components/template/case-view/case-view.component.mjs +12 -23
  76. package/esm2022/lib/_components/template/confirmation/confirmation.component.mjs +6 -6
  77. package/esm2022/lib/_components/template/data-reference/data-reference.component.mjs +15 -12
  78. package/esm2022/lib/_components/template/default-form/default-form.component.mjs +9 -21
  79. package/esm2022/lib/_components/template/details/details.component.mjs +12 -39
  80. package/esm2022/lib/_components/template/details-narrow-wide/details-narrow-wide.component.mjs +11 -38
  81. package/esm2022/lib/_components/template/details-one-column/details-one-column.component.mjs +12 -41
  82. package/esm2022/lib/_components/template/details-sub-tabs/details-sub-tabs.component.mjs +13 -40
  83. package/esm2022/lib/_components/template/details-three-column/details-three-column.component.mjs +12 -41
  84. package/esm2022/lib/_components/template/details-two-column/details-two-column.component.mjs +13 -42
  85. package/esm2022/lib/_components/template/details-wide-narrow/details-wide-narrow.component.mjs +12 -41
  86. package/esm2022/lib/_components/template/dynamic-tabs/dynamic-tabs.component.mjs +9 -9
  87. package/esm2022/lib/_components/template/field-group-list/field-group-list.component.mjs +4 -4
  88. package/esm2022/lib/_components/template/field-group-template/field-group-template.component.mjs +9 -21
  89. package/esm2022/lib/_components/template/field-value-list/field-value-list.component.mjs +10 -5
  90. package/esm2022/lib/_components/template/inline-dashboard/inline-dashboard.component.mjs +4 -4
  91. package/esm2022/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.mjs +6 -6
  92. package/esm2022/lib/_components/template/list-page/list-page.component.mjs +4 -4
  93. package/esm2022/lib/_components/template/list-view/DefaultViewMeta.mjs +1 -1
  94. package/esm2022/lib/_components/template/list-view/list-view.component.mjs +54 -35
  95. package/esm2022/lib/_components/template/list-view/listViewHelpers.mjs +2 -3
  96. package/esm2022/lib/_components/template/list-view/utils.mjs +1 -1
  97. package/esm2022/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.mjs +5 -5
  98. package/esm2022/lib/_components/template/narrow-wide-form/narrow-wide-form.component.mjs +4 -4
  99. package/esm2022/lib/_components/template/one-column/one-column.component.mjs +6 -5
  100. package/esm2022/lib/_components/template/one-column-page/one-column-page.component.mjs +4 -4
  101. package/esm2022/lib/_components/template/one-column-tab/one-column-tab.component.mjs +4 -4
  102. package/esm2022/lib/_components/template/page/page.component.mjs +5 -5
  103. package/esm2022/lib/_components/template/promoted-filters/promoted-filters.component.mjs +5 -5
  104. package/esm2022/lib/_components/template/repeating-structures/repeating-structures.component.mjs +5 -6
  105. package/esm2022/lib/_components/template/simple-table/simple-table.component.mjs +5 -7
  106. package/esm2022/lib/_components/template/simple-table-manual/helpers.mjs +3 -3
  107. package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +51 -32
  108. package/esm2022/lib/_components/template/simple-table-select/simple-table-select.component.mjs +8 -10
  109. package/esm2022/lib/_components/template/single-reference-readonly/single-reference-readonly.component.mjs +4 -4
  110. package/esm2022/lib/_components/template/sub-tabs/sub-tabs.component.mjs +5 -5
  111. package/esm2022/lib/_components/template/three-column/three-column.component.mjs +6 -5
  112. package/esm2022/lib/_components/template/three-column-page/three-column-page.component.mjs +4 -4
  113. package/esm2022/lib/_components/template/two-column/two-column.component.mjs +6 -5
  114. package/esm2022/lib/_components/template/two-column-page/two-column-page.component.mjs +5 -5
  115. package/esm2022/lib/_components/template/two-column-tab/two-column-tab.component.mjs +4 -4
  116. package/esm2022/lib/_components/template/utils.mjs +1 -1
  117. package/esm2022/lib/_components/template/wide-narrow-form/wide-narrow-form.component.mjs +6 -5
  118. package/esm2022/lib/_components/template/wide-narrow-page/wide-narrow-page.component.mjs +5 -5
  119. package/esm2022/lib/_components/template/wss-nav-bar/wss-nav-bar.component.mjs +9 -7
  120. package/esm2022/lib/_components/widget/app-announcement/app-announcement.component.mjs +4 -4
  121. package/esm2022/lib/_components/widget/attachment/attachment.component.mjs +229 -424
  122. package/esm2022/lib/_components/widget/case-history/case-history.component.mjs +6 -7
  123. package/esm2022/lib/_components/widget/feed-container/feed-container.component.mjs +6 -10
  124. package/esm2022/lib/_components/widget/file-utility/file-utility.component.mjs +18 -22
  125. package/esm2022/lib/_components/widget/list-utility/list-utility.component.mjs +6 -6
  126. package/esm2022/lib/_components/widget/quick-create/quick-create.component.mjs +5 -5
  127. package/esm2022/lib/_components/widget/todo/todo.component.mjs +79 -64
  128. package/esm2022/lib/_components/widget/utility/utility.component.mjs +5 -5
  129. package/esm2022/lib/_directives/thousand-seperator.directive.mjs +5 -5
  130. package/esm2022/lib/_helpers/case-utils.mjs +1 -1
  131. package/esm2022/lib/_helpers/createstage-utils.mjs +15 -0
  132. package/esm2022/lib/_helpers/currency-utils.mjs +1 -1
  133. package/esm2022/lib/_helpers/event-util.mjs +1 -1
  134. package/esm2022/lib/_helpers/field-group-utils.mjs +3 -3
  135. package/esm2022/lib/_helpers/filter-utils.mjs +1 -2
  136. package/esm2022/lib/_helpers/formatters/boolean.mjs +1 -1
  137. package/esm2022/lib/_helpers/formatters/common.mjs +3 -5
  138. package/esm2022/lib/_helpers/formatters/currency.mjs +2 -2
  139. package/esm2022/lib/_helpers/formatters/date.mjs +4 -4
  140. package/esm2022/lib/_helpers/formatters/format-utils.mjs +3 -3
  141. package/esm2022/lib/_helpers/formatters/index.mjs +17 -3
  142. package/esm2022/lib/_helpers/instructions-utils.mjs +36 -0
  143. package/esm2022/lib/_helpers/tab-utils.mjs +1 -1
  144. package/esm2022/lib/_helpers/template-utils.mjs +4 -4
  145. package/esm2022/lib/_helpers/utils.mjs +6 -6
  146. package/esm2022/lib/_messages/error-messages.service.mjs +4 -4
  147. package/esm2022/lib/_messages/progress-spinner.service.mjs +3 -3
  148. package/esm2022/lib/_messages/update-worklist.service.mjs +3 -3
  149. package/esm2022/lib/_services/case.service.mjs +4 -4
  150. package/esm2022/lib/_services/datapage.service.mjs +5 -5
  151. package/esm2022/lib/_services/endpoints.mjs +1 -2
  152. package/esm2022/lib/_services/server-config.service.mjs +3 -3
  153. package/esm2022/public-api.mjs +6 -4
  154. package/fesm2022/pega-angular-sdk-components.mjs +2722 -2143
  155. package/fesm2022/pega-angular-sdk-components.mjs.map +1 -1
  156. package/lib/_bridge/angular-pconnect.d.ts +2 -0
  157. package/lib/_bridge/helpers/sdk-pega-component-map.d.ts +2 -0
  158. package/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.d.ts +2 -0
  159. package/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.d.ts +1 -1
  160. package/lib/_components/designSystemExtension/operator/operator.component.d.ts +2 -1
  161. package/lib/_components/designSystemExtension/pulse/pulse.component.d.ts +2 -2
  162. package/lib/_components/field/auto-complete/auto-complete.component.d.ts +3 -2
  163. package/lib/_components/field/check-box/check-box.component.d.ts +18 -0
  164. package/lib/_components/field/currency/currency.component.d.ts +10 -5
  165. package/lib/_components/field/date/date.component.d.ts +17 -6
  166. package/lib/_components/field/date-time/date-time.component.d.ts +10 -3
  167. package/lib/_components/field/decimal/decimal.component.d.ts +9 -1
  168. package/lib/_components/field/dropdown/dropdown.component.d.ts +13 -2
  169. package/lib/_components/field/email/email.component.d.ts +2 -0
  170. package/lib/_components/field/integer/integer.component.d.ts +3 -1
  171. package/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.d.ts +1 -1
  172. package/lib/_components/field/multiselect/multiselect.component.d.ts +65 -0
  173. package/lib/_components/field/multiselect/utils.d.ts +8 -0
  174. package/lib/_components/field/percentage/percentage.component.d.ts +11 -1
  175. package/lib/_components/field/phone/phone.component.d.ts +3 -1
  176. package/lib/_components/field/radio-buttons/radio-buttons.component.d.ts +2 -1
  177. package/lib/_components/field/rich-text/rich-text.component.d.ts +2 -0
  178. package/lib/_components/field/text/text.component.d.ts +3 -1
  179. package/lib/_components/field/text-area/text-area.component.d.ts +3 -1
  180. package/lib/_components/field/text-input/text-input.component.d.ts +3 -1
  181. package/lib/_components/field/time/time.component.d.ts +5 -1
  182. package/lib/_components/field/url/url.component.d.ts +4 -1
  183. package/lib/_components/field/user-reference/user-reference.component.d.ts +16 -4
  184. package/lib/_components/infra/Containers/base-components/flow-container-base.component.d.ts +8 -0
  185. package/lib/_components/infra/Containers/base-components/helper.d.ts +1 -0
  186. package/lib/_components/infra/Containers/flow-container/flow-container.component.d.ts +6 -7
  187. package/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.d.ts +3 -2
  188. package/lib/_components/infra/Containers/view-container/helper.d.ts +2 -0
  189. package/lib/_components/infra/action-buttons/action-buttons.component.d.ts +1 -1
  190. package/lib/_components/infra/assignment/assignment.component.d.ts +2 -2
  191. package/lib/_components/infra/defer-load/defer-load.component.d.ts +2 -2
  192. package/lib/_components/infra/error-boundary/error-boundary.component.d.ts +1 -1
  193. package/lib/_components/infra/navbar/navbar.component.d.ts +4 -2
  194. package/lib/_components/infra/view/view.component.d.ts +1 -0
  195. package/lib/_components/template/base/details-template-base.d.ts +22 -0
  196. package/lib/_components/template/base/form-template-base.d.ts +8 -0
  197. package/lib/_components/template/case-summary/case-summary.component.d.ts +2 -0
  198. package/lib/_components/template/case-view/case-view.component.d.ts +1 -2
  199. package/lib/_components/template/default-form/default-form.component.d.ts +2 -5
  200. package/lib/_components/template/details/details.component.d.ts +3 -11
  201. package/lib/_components/template/details-narrow-wide/details-narrow-wide.component.d.ts +3 -11
  202. package/lib/_components/template/details-one-column/details-one-column.component.d.ts +3 -13
  203. package/lib/_components/template/details-sub-tabs/details-sub-tabs.component.d.ts +3 -13
  204. package/lib/_components/template/details-three-column/details-three-column.component.d.ts +3 -13
  205. package/lib/_components/template/details-two-column/details-two-column.component.d.ts +3 -13
  206. package/lib/_components/template/details-wide-narrow/details-wide-narrow.component.d.ts +3 -13
  207. package/lib/_components/template/dynamic-tabs/dynamic-tabs.component.d.ts +1 -0
  208. package/lib/_components/template/field-value-list/field-value-list.component.d.ts +2 -1
  209. package/lib/_components/template/list-view/list-view.component.d.ts +12 -3
  210. package/lib/_components/template/list-view/listViewHelpers.d.ts +1 -1
  211. package/lib/_components/template/one-column/one-column.component.d.ts +2 -1
  212. package/lib/_components/template/simple-table-manual/helpers.d.ts +2 -2
  213. package/lib/_components/template/simple-table-manual/simple-table-manual.component.d.ts +4 -0
  214. package/lib/_components/template/three-column/three-column.component.d.ts +2 -1
  215. package/lib/_components/template/two-column/two-column.component.d.ts +2 -1
  216. package/lib/_components/template/wide-narrow-form/wide-narrow-form.component.d.ts +2 -1
  217. package/lib/_components/template/wide-narrow-page/wide-narrow-page.component.d.ts +1 -1
  218. package/lib/_components/template/wss-nav-bar/wss-nav-bar.component.d.ts +4 -2
  219. package/lib/_components/widget/attachment/attachment.component.d.ts +30 -54
  220. package/lib/_components/widget/feed-container/feed-container.component.d.ts +2 -2
  221. package/lib/_components/widget/file-utility/file-utility.component.d.ts +2 -2
  222. package/lib/_components/widget/todo/todo.component.d.ts +8 -10
  223. package/lib/_helpers/createstage-utils.d.ts +1 -0
  224. package/lib/_helpers/field-group-utils.d.ts +1 -1
  225. package/lib/_helpers/filter-utils.d.ts +1 -1
  226. package/lib/_helpers/formatters/common.d.ts +1 -1
  227. package/lib/_helpers/instructions-utils.d.ts +4 -0
  228. package/lib/_messages/error-messages.service.d.ts +1 -1
  229. package/lib/_services/endpoints.d.ts +0 -1
  230. package/lib/doc/KeyReleaseUpdates.md +35 -1
  231. package/package.json +3 -3
  232. package/public-api.d.ts +5 -3
  233. package/esm2022/lib/_messages/get-login-status.service.mjs +0 -26
  234. package/esm2022/lib/_messages/oauth-response.service.mjs +0 -30
  235. package/esm2022/lib/_messages/reset-pconnect.service.mjs +0 -31
  236. package/lib/_messages/get-login-status.service.d.ts +0 -10
  237. package/lib/_messages/oauth-response.service.d.ts +0 -14
  238. package/lib/_messages/reset-pconnect.service.d.ts +0 -15
@@ -1,11 +1,10 @@
1
1
  import { getContext, readContextResponse } from './utils';
2
- export function useInit(props) {
2
+ export function init(props) {
3
3
  const { referenceList, pConn$, personalizationId, parameters, compositeKeys, isSearchable, allowBulkActions, ref, showDynamicFields, isDataObject, xRayUid, cosmosTableRef } = props;
4
4
  let { editing, selectionMode } = props;
5
5
  const runtimeParams = PCore.getRuntimeParamsAPI().getRuntimeParams();
6
6
  let selectionCountThreshold;
7
7
  // promise to fetch metadata
8
- // @ts-ignore - 3rd parameter "associationFilter" should be optional for getDataViewMetadata method
9
8
  const metaDataPromise = PCore.getAnalyticsUtils().getDataViewMetadata(referenceList, showDynamicFields);
10
9
  const promisesArray = [metaDataPromise];
11
10
  // promise to fetch report configured columns
@@ -58,4 +57,4 @@ export function useInit(props) {
58
57
  });
59
58
  });
60
59
  }
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdFZpZXdIZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL3RlbXBsYXRlL2xpc3Qtdmlldy9saXN0Vmlld0hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUsxRCxNQUFNLFVBQVUsT0FBTyxDQUFDLEtBQUs7SUFDM0IsTUFBTSxFQUNKLGFBQWEsRUFDYixNQUFNLEVBQ04saUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixhQUFhLEVBQ2IsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixHQUFHLEVBQ0gsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixPQUFPLEVBQ1AsY0FBYyxFQUNmLEdBQUcsS0FBSyxDQUFDO0lBQ1YsSUFBSSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFdkMsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixFQUFFLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUVyRSxJQUFJLHVCQUF1QixDQUFDO0lBRTVCLDRCQUE0QjtJQUM1QixtR0FBbUc7SUFDbkcsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUMsbUJBQW1CLENBQUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFFeEcsTUFBTSxhQUFhLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUV4Qyw2Q0FBNkM7SUFDN0MsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLENBQUMsaUJBQWlCLEVBQUU7U0FDbkQsc0JBQXNCLENBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDckUsS0FBSyxDQUFDLEdBQUcsRUFBRTtRQUNWLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUNyQixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsYUFBYSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRXpDLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxFQUFDLFFBQVEsRUFBQyxFQUFFO1FBQ3hDLE1BQU0sRUFDSixJQUFJLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFDdEIsR0FBRyxRQUFRLENBQUM7UUFDYixJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ2hCLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxtREFBbUQ7YUFDckU7WUFFRCxNQUFNLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxHQUFHLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztZQUMzRSxJQUFJLGdCQUFnQixJQUFJLFdBQVcsRUFBRTtnQkFDbkMsa0RBQWtEO2dCQUNsRCxhQUFhLEdBQUcsY0FBYyxDQUFDO2FBQ2hDO1lBQ0QsSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUU7Z0JBQ25ELHVCQUF1QixHQUFHLEdBQUcsQ0FBQyxDQUFDLG9GQUFvRjthQUNwSDtTQUNGO1FBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQyxDQUFDO0lBRUYsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDakYsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoQyxPQUFPLFVBQVUsQ0FBQztRQUNoQixXQUFXLEVBQUUsYUFBYTtRQUMxQixNQUFNLEVBQUUsaUJBQWlCO1FBQ3pCLGFBQWEsRUFBRSxVQUFVLElBQUksYUFBYTtRQUMxQyxhQUFhO1FBQ2IsTUFBTTtRQUNOLGFBQWE7UUFDYixZQUFZO1FBQ1osV0FBVyxFQUFFLElBQUk7UUFDakIsT0FBTztLQUNSLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFDLE9BQU8sRUFBQyxFQUFFO1FBQ3RCLE9BQU8sbUJBQW1CLENBQUMsT0FBTyxFQUFFO1lBQ2xDLEdBQUcsS0FBSztZQUNSLE9BQU87WUFDUCx1QkFBdUI7WUFDdkIsR0FBRztZQUNILGFBQWE7WUFDYixPQUFPO1lBQ1AsY0FBYztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldENvbnRleHQsIHJlYWRDb250ZXh0UmVzcG9uc2UgfSBmcm9tICcuL3V0aWxzJztcblxuLy8gUmVtb3ZlIHRoaXMgYW5kIHVzZSBcInJlYWxcIiBQQ29yZSB0eXBlIG9uY2UgLmQudHMgaXMgZml4ZWQgKGN1cnJlbnRseSBzaG93cyAxIGVycm9yKVxuZGVjbGFyZSBjb25zdCBQQ29yZTogYW55O1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlSW5pdChwcm9wcykge1xuICBjb25zdCB7XG4gICAgcmVmZXJlbmNlTGlzdCxcbiAgICBwQ29ubiQsXG4gICAgcGVyc29uYWxpemF0aW9uSWQsXG4gICAgcGFyYW1ldGVycyxcbiAgICBjb21wb3NpdGVLZXlzLFxuICAgIGlzU2VhcmNoYWJsZSxcbiAgICBhbGxvd0J1bGtBY3Rpb25zLFxuICAgIHJlZixcbiAgICBzaG93RHluYW1pY0ZpZWxkcyxcbiAgICBpc0RhdGFPYmplY3QsXG4gICAgeFJheVVpZCxcbiAgICBjb3Ntb3NUYWJsZVJlZlxuICB9ID0gcHJvcHM7XG4gIGxldCB7IGVkaXRpbmcsIHNlbGVjdGlvbk1vZGUgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHJ1bnRpbWVQYXJhbXMgPSBQQ29yZS5nZXRSdW50aW1lUGFyYW1zQVBJKCkuZ2V0UnVudGltZVBhcmFtcygpO1xuXG4gIGxldCBzZWxlY3Rpb25Db3VudFRocmVzaG9sZDtcblxuICAvLyBwcm9taXNlIHRvIGZldGNoIG1ldGFkYXRhXG4gIC8vIEB0cy1pZ25vcmUgLSAzcmQgcGFyYW1ldGVyIFwiYXNzb2NpYXRpb25GaWx0ZXJcIiBzaG91bGQgYmUgb3B0aW9uYWwgZm9yIGdldERhdGFWaWV3TWV0YWRhdGEgbWV0aG9kXG4gIGNvbnN0IG1ldGFEYXRhUHJvbWlzZSA9IFBDb3JlLmdldEFuYWx5dGljc1V0aWxzKCkuZ2V0RGF0YVZpZXdNZXRhZGF0YShyZWZlcmVuY2VMaXN0LCBzaG93RHluYW1pY0ZpZWxkcyk7XG5cbiAgY29uc3QgcHJvbWlzZXNBcnJheSA9IFttZXRhRGF0YVByb21pc2VdO1xuXG4gIC8vIHByb21pc2UgdG8gZmV0Y2ggcmVwb3J0IGNvbmZpZ3VyZWQgY29sdW1uc1xuICBjb25zdCByZXBvcnRDb2x1bW5zUHJvbWlzZSA9IFBDb3JlLmdldEFuYWx5dGljc1V0aWxzKClcbiAgICAuZ2V0RmllbGRzRm9yRGF0YVNvdXJjZShyZWZlcmVuY2VMaXN0LCBmYWxzZSwgcENvbm4kLmdldENvbnRleHROYW1lKCkpXG4gICAgLmNhdGNoKCgpID0+IHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICBkYXRhOiB7IGRhdGE6IFtdIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICBwcm9taXNlc0FycmF5LnB1c2gocmVwb3J0Q29sdW1uc1Byb21pc2UpO1xuXG4gIGNvbnN0IGZldGNoRWRpdERldGFpbHMgPSBhc3luYyBtZXRhZGF0YSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgZGF0YTogeyBpc1F1ZXJ5YWJsZSB9XG4gICAgfSA9IG1ldGFkYXRhO1xuICAgIGlmICghaXNEYXRhT2JqZWN0KSB7XG4gICAgICBpZiAoIWlzUXVlcnlhYmxlKSB7XG4gICAgICAgIGVkaXRpbmcgPSBmYWxzZTsgLyogRm9yY2UgZWRpdGluZyB0byBmYWxzZSBpZiBEUCBpcyBub24gcXVlcnlhYmxlICovXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgTVVMVElfT05fSE9WRVIsIE1VTFRJIH0gPSBQQ29yZS5nZXRDb25zdGFudHMoKS5MSVNUX1NFTEVDVElPTl9NT0RFO1xuICAgICAgaWYgKGFsbG93QnVsa0FjdGlvbnMgJiYgaXNRdWVyeWFibGUpIHtcbiAgICAgICAgLyoqIGVuYWJsZSBidWxrIGFjdGlvbnMgb25seSBpZiBEUCBpcyBxdWVyeWFibGUgKi9cbiAgICAgICAgc2VsZWN0aW9uTW9kZSA9IE1VTFRJX09OX0hPVkVSO1xuICAgICAgfVxuICAgICAgaWYgKFtNVUxUSV9PTl9IT1ZFUiwgTVVMVEldLmluY2x1ZGVzKHNlbGVjdGlvbk1vZGUpKSB7XG4gICAgICAgIHNlbGVjdGlvbkNvdW50VGhyZXNob2xkID0gMjUwOyAvLyBSZXN1bHRzIGNvdW50IHNob3VsZCBub3QgYmUgZ3JlYXRlciB0aGFuIHRocmVzaG9sZCB0byBkaXNwbGF5IFNlbGVjdEFsbCBjaGVja2JveC5cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9O1xuXG4gIGNvbnN0IGVkaXRQcm9taXNlID0gbWV0YURhdGFQcm9taXNlLnRoZW4obWV0YWRhdGEgPT4gZmV0Y2hFZGl0RGV0YWlscyhtZXRhZGF0YSkpO1xuICBwcm9taXNlc0FycmF5LnB1c2goZWRpdFByb21pc2UpO1xuICByZXR1cm4gZ2V0Q29udGV4dCh7XG4gICAgdGFibGVTb3VyY2U6IHJlZmVyZW5jZUxpc3QsXG4gICAgTGlzdElkOiBwZXJzb25hbGl6YXRpb25JZCxcbiAgICBydW50aW1lUGFyYW1zOiBwYXJhbWV0ZXJzID8/IHJ1bnRpbWVQYXJhbXMsXG4gICAgcHJvbWlzZXNBcnJheSxcbiAgICBwQ29ubiQsXG4gICAgY29tcG9zaXRlS2V5cyxcbiAgICBpc1NlYXJjaGFibGUsXG4gICAgaXNDYWNoZWFibGU6IHRydWUsXG4gICAgeFJheVVpZFxuICB9KS50aGVuKGFzeW5jIGNvbnRleHQgPT4ge1xuICAgIHJldHVybiByZWFkQ29udGV4dFJlc3BvbnNlKGNvbnRleHQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgZWRpdGluZyxcbiAgICAgIHNlbGVjdGlvbkNvdW50VGhyZXNob2xkLFxuICAgICAgcmVmLFxuICAgICAgc2VsZWN0aW9uTW9kZSxcbiAgICAgIHhSYXlVaWQsXG4gICAgICBjb3Ntb3NUYWJsZVJlZlxuICAgIH0pO1xuICB9KTtcbn1cbiJdfQ==
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdFZpZXdIZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL3RlbXBsYXRlL2xpc3Qtdmlldy9saXN0Vmlld0hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUsxRCxNQUFNLFVBQVUsSUFBSSxDQUFDLEtBQUs7SUFDeEIsTUFBTSxFQUNKLGFBQWEsRUFDYixNQUFNLEVBQ04saUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixhQUFhLEVBQ2IsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixHQUFHLEVBQ0gsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixPQUFPLEVBQ1AsY0FBYyxFQUNmLEdBQUcsS0FBSyxDQUFDO0lBQ1YsSUFBSSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFdkMsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixFQUFFLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUVyRSxJQUFJLHVCQUF1QixDQUFDO0lBRTVCLDRCQUE0QjtJQUM1QixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUV4RyxNQUFNLGFBQWEsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBRXhDLDZDQUE2QztJQUM3QyxNQUFNLG9CQUFvQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtTQUNuRCxzQkFBc0IsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUNyRSxLQUFLLENBQUMsR0FBRyxFQUFFO1FBQ1YsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQ3JCLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxhQUFhLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFekMsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLEVBQUMsUUFBUSxFQUFDLEVBQUU7UUFDeEMsTUFBTSxFQUNKLElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUN0QixHQUFHLFFBQVEsQ0FBQztRQUNiLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2pCLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxtREFBbUQ7WUFDdEUsQ0FBQztZQUVELE1BQU0sRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLEdBQUcsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDO1lBQzNFLElBQUksZ0JBQWdCLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ3BDLGtEQUFrRDtnQkFDbEQsYUFBYSxHQUFHLGNBQWMsQ0FBQztZQUNqQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztnQkFDcEQsdUJBQXVCLEdBQUcsR0FBRyxDQUFDLENBQUMsb0ZBQW9GO1lBQ3JILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQyxDQUFDO0lBRUYsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDakYsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoQyxPQUFPLFVBQVUsQ0FBQztRQUNoQixXQUFXLEVBQUUsYUFBYTtRQUMxQixNQUFNLEVBQUUsaUJBQWlCO1FBQ3pCLGFBQWEsRUFBRSxVQUFVLElBQUksYUFBYTtRQUMxQyxhQUFhO1FBQ2IsTUFBTTtRQUNOLGFBQWE7UUFDYixZQUFZO1FBQ1osV0FBVyxFQUFFLElBQUk7UUFDakIsT0FBTztLQUNSLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFDLE9BQU8sRUFBQyxFQUFFO1FBQ3RCLE9BQU8sbUJBQW1CLENBQUMsT0FBTyxFQUFFO1lBQ2xDLEdBQUcsS0FBSztZQUNSLE9BQU87WUFDUCx1QkFBdUI7WUFDdkIsR0FBRztZQUNILGFBQWE7WUFDYixPQUFPO1lBQ1AsY0FBYztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldENvbnRleHQsIHJlYWRDb250ZXh0UmVzcG9uc2UgfSBmcm9tICcuL3V0aWxzJztcblxuLy8gUmVtb3ZlIHRoaXMgYW5kIHVzZSBcInJlYWxcIiBQQ29yZSB0eXBlIG9uY2UgLmQudHMgaXMgZml4ZWQgKGN1cnJlbnRseSBzaG93cyAxIGVycm9yKVxuZGVjbGFyZSBjb25zdCBQQ29yZTogYW55O1xuXG5leHBvcnQgZnVuY3Rpb24gaW5pdChwcm9wcykge1xuICBjb25zdCB7XG4gICAgcmVmZXJlbmNlTGlzdCxcbiAgICBwQ29ubiQsXG4gICAgcGVyc29uYWxpemF0aW9uSWQsXG4gICAgcGFyYW1ldGVycyxcbiAgICBjb21wb3NpdGVLZXlzLFxuICAgIGlzU2VhcmNoYWJsZSxcbiAgICBhbGxvd0J1bGtBY3Rpb25zLFxuICAgIHJlZixcbiAgICBzaG93RHluYW1pY0ZpZWxkcyxcbiAgICBpc0RhdGFPYmplY3QsXG4gICAgeFJheVVpZCxcbiAgICBjb3Ntb3NUYWJsZVJlZlxuICB9ID0gcHJvcHM7XG4gIGxldCB7IGVkaXRpbmcsIHNlbGVjdGlvbk1vZGUgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHJ1bnRpbWVQYXJhbXMgPSBQQ29yZS5nZXRSdW50aW1lUGFyYW1zQVBJKCkuZ2V0UnVudGltZVBhcmFtcygpO1xuXG4gIGxldCBzZWxlY3Rpb25Db3VudFRocmVzaG9sZDtcblxuICAvLyBwcm9taXNlIHRvIGZldGNoIG1ldGFkYXRhXG4gIGNvbnN0IG1ldGFEYXRhUHJvbWlzZSA9IFBDb3JlLmdldEFuYWx5dGljc1V0aWxzKCkuZ2V0RGF0YVZpZXdNZXRhZGF0YShyZWZlcmVuY2VMaXN0LCBzaG93RHluYW1pY0ZpZWxkcyk7XG5cbiAgY29uc3QgcHJvbWlzZXNBcnJheSA9IFttZXRhRGF0YVByb21pc2VdO1xuXG4gIC8vIHByb21pc2UgdG8gZmV0Y2ggcmVwb3J0IGNvbmZpZ3VyZWQgY29sdW1uc1xuICBjb25zdCByZXBvcnRDb2x1bW5zUHJvbWlzZSA9IFBDb3JlLmdldEFuYWx5dGljc1V0aWxzKClcbiAgICAuZ2V0RmllbGRzRm9yRGF0YVNvdXJjZShyZWZlcmVuY2VMaXN0LCBmYWxzZSwgcENvbm4kLmdldENvbnRleHROYW1lKCkpXG4gICAgLmNhdGNoKCgpID0+IHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICBkYXRhOiB7IGRhdGE6IFtdIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICBwcm9taXNlc0FycmF5LnB1c2gocmVwb3J0Q29sdW1uc1Byb21pc2UpO1xuXG4gIGNvbnN0IGZldGNoRWRpdERldGFpbHMgPSBhc3luYyBtZXRhZGF0YSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgZGF0YTogeyBpc1F1ZXJ5YWJsZSB9XG4gICAgfSA9IG1ldGFkYXRhO1xuICAgIGlmICghaXNEYXRhT2JqZWN0KSB7XG4gICAgICBpZiAoIWlzUXVlcnlhYmxlKSB7XG4gICAgICAgIGVkaXRpbmcgPSBmYWxzZTsgLyogRm9yY2UgZWRpdGluZyB0byBmYWxzZSBpZiBEUCBpcyBub24gcXVlcnlhYmxlICovXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgTVVMVElfT05fSE9WRVIsIE1VTFRJIH0gPSBQQ29yZS5nZXRDb25zdGFudHMoKS5MSVNUX1NFTEVDVElPTl9NT0RFO1xuICAgICAgaWYgKGFsbG93QnVsa0FjdGlvbnMgJiYgaXNRdWVyeWFibGUpIHtcbiAgICAgICAgLyoqIGVuYWJsZSBidWxrIGFjdGlvbnMgb25seSBpZiBEUCBpcyBxdWVyeWFibGUgKi9cbiAgICAgICAgc2VsZWN0aW9uTW9kZSA9IE1VTFRJX09OX0hPVkVSO1xuICAgICAgfVxuICAgICAgaWYgKFtNVUxUSV9PTl9IT1ZFUiwgTVVMVEldLmluY2x1ZGVzKHNlbGVjdGlvbk1vZGUpKSB7XG4gICAgICAgIHNlbGVjdGlvbkNvdW50VGhyZXNob2xkID0gMjUwOyAvLyBSZXN1bHRzIGNvdW50IHNob3VsZCBub3QgYmUgZ3JlYXRlciB0aGFuIHRocmVzaG9sZCB0byBkaXNwbGF5IFNlbGVjdEFsbCBjaGVja2JveC5cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9O1xuXG4gIGNvbnN0IGVkaXRQcm9taXNlID0gbWV0YURhdGFQcm9taXNlLnRoZW4obWV0YWRhdGEgPT4gZmV0Y2hFZGl0RGV0YWlscyhtZXRhZGF0YSkpO1xuICBwcm9taXNlc0FycmF5LnB1c2goZWRpdFByb21pc2UpO1xuICByZXR1cm4gZ2V0Q29udGV4dCh7XG4gICAgdGFibGVTb3VyY2U6IHJlZmVyZW5jZUxpc3QsXG4gICAgTGlzdElkOiBwZXJzb25hbGl6YXRpb25JZCxcbiAgICBydW50aW1lUGFyYW1zOiBwYXJhbWV0ZXJzID8/IHJ1bnRpbWVQYXJhbXMsXG4gICAgcHJvbWlzZXNBcnJheSxcbiAgICBwQ29ubiQsXG4gICAgY29tcG9zaXRlS2V5cyxcbiAgICBpc1NlYXJjaGFibGUsXG4gICAgaXNDYWNoZWFibGU6IHRydWUsXG4gICAgeFJheVVpZFxuICB9KS50aGVuKGFzeW5jIGNvbnRleHQgPT4ge1xuICAgIHJldHVybiByZWFkQ29udGV4dFJlc3BvbnNlKGNvbnRleHQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgZWRpdGluZyxcbiAgICAgIHNlbGVjdGlvbkNvdW50VGhyZXNob2xkLFxuICAgICAgcmVmLFxuICAgICAgc2VsZWN0aW9uTW9kZSxcbiAgICAgIHhSYXlVaWQsXG4gICAgICBjb3Ntb3NUYWJsZVJlZlxuICAgIH0pO1xuICB9KTtcbn1cbiJdfQ==
@@ -659,4 +659,4 @@ export const readContextResponse = async (context, params) => {
659
659
  params.listContext = { meta, presets: presetArray, apiContext: { ...apiContext } };
660
660
  return params.listContext;
661
661
  };
662
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvdGVtcGxhdGUvbGlzdC12aWV3L3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBS3ZELE1BQU0sY0FBYyxHQUFHLGVBQWUsQ0FBQztBQUN2QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUM7QUFDbkIsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDO0FBRXhCLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUM3QixVQUFVLEVBQUUsWUFBWTtJQUN4QixPQUFPLEVBQUUsU0FBUztJQUNsQixRQUFRLEVBQUUsVUFBVTtDQUNyQixDQUFDO0FBRUYsTUFBTSxPQUFPO0lBR1g7UUFDRSxJQUFJLENBQUMsZ0NBQWdDLEdBQUcsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxnQ0FBZ0MsR0FBRyxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsZUFBZSxDQUFDLDJCQUEyQixHQUFHLEVBQUUsRUFBRSwyQkFBMkIsR0FBRyxFQUFFO1FBQ2hGLElBQUksQ0FBQyxnQ0FBZ0MsR0FBRztZQUN0QyxHQUFHLElBQUksQ0FBQyxnQ0FBZ0M7WUFDeEMsR0FBRywyQkFBMkI7U0FDL0IsQ0FBQztRQUNGLElB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QXdCLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFN0YsTUFBTSxXQUFXLEdBQUcsa0JBQWtCLENBQ3BDLGdCQUFnQixFQUFFLGdHQUFnRztRQUNsSCxZQUFZLEVBQ1osY0FBYyxFQUNkLGdCQUFnQixFQUNoQixPQUFPLEVBQ1AsaUJBQWlCLENBQ2xCLENBQUM7UUFFRixJQUFJLFdBQVcsRUFBRTtZQUNmLHNCQUFzQixDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM5QyxtQkFBbUIsQ0FBQyxDQUFDLEdBQUcsWUFBWSxFQUFFLEdBQUcsV0FBVyxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQzFFO1FBRUQsTUFBTSxFQUFFLGlCQUFpQixFQUFFLEdBQUcsT0FBTyxDQUFDO1FBRXRDLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLEdBQUcsWUFBWSxFQUFFLEdBQUcsV0FBVyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUNqRixNQUFNLGdCQUFnQixHQUFHLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEYsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLFdBQVcsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQzlFLENBQUMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDO0lBQ3pCLE1BQU0sQ0FBQyxXQUFXLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsRUFBRSxHQUFHLFVBQVUsRUFBRSxFQUFFLENBQUM7SUFDbkYsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDO0FBQzVCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldERlZmF1bHRWaWV3TWV0YSB9IGZyb20gJy4vRGVmYXVsdFZpZXdNZXRhJztcblxuLy8gUmVtb3ZlIHRoaXMgYW5kIHVzZSBcInJlYWxcIiBQQ29yZSB0eXBlIG9uY2UgLmQudHMgaXMgZml4ZWQgKGN1cnJlbnRseSBzaG93cyA1IGVycm9ycylcbmRlY2xhcmUgY29uc3QgUENvcmU6IGFueTtcblxuY29uc3QgVVNFUl9SRUZFUkVOQ0UgPSAnVXNlclJlZmVyZW5jZSc7XG5jb25zdCBQQUdFID0gJyFQISc7XG5jb25zdCBQQUdFTElTVCA9ICchUEwhJztcblxuZXhwb3J0IGNvbnN0IGZvcm1hdENvbnN0YW50cyA9IHtcbiAgV29ya1N0YXR1czogJ1dvcmtTdGF0dXMnLFxuICBJbnRlZ2VyOiAnSW50ZWdlcicsXG4gIFdvcmtMaW5rOiAnV29ya0xpbmsnXG59O1xuXG5jbGFzcyBEYXRhQXBpIHtcbiAgbWFwcGVkUHJvcGVydHlUb09yaWdpbmFsUHJvcGVydHk6IGFueTtcbiAgb3JpZ2luYWxQcm9wZXJ0eVRvTWFwcGVkUHJvcGVydHk6IGFueTtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5vcmlnaW5hbFByb3BlcnR5VG9NYXBwZWRQcm9wZXJ0eSA9IHt9O1xuICAgIHRoaXMubWFwcGVkUHJvcGVydHlUb09yaWdpbmFsUHJvcGVydHkgPSB7fTtcbiAgICB0aGlzLnNldFByb3BlcnR5TWFwcyA9IHRoaXMuc2V0UHJvcGVydHlNYXBzLmJpbmQodGhpcyk7XG4gICAgdGhpcy5nZXRNYXBwZWRQcm9wZXJ0eSA9IHRoaXMuZ2V0TWFwcGVkUHJvcGVydHkuYmluZCh0aGlzKTtcbiAgICB0aGlzLmdldE9yaWdpbmFsUHJvcGVydHkgPSB0aGlzLmdldE9yaWdpbmFsUHJvcGVydHkuYmluZCh0aGlzKTtcbiAgfVxuXG4gIHNldFByb3BlcnR5TWFwcyhvcmlnaW5hbFRvTWFwcGVkUHJvcGVydHlPYmogPSB7fSwgbWFwcGVkVG9PcmlnaW5hbFByb3BlcnR5T2JqID0ge30pIHtcbiAgICB0aGlzLm9yaWdpbmFsUHJvcGVydHlUb01hcHBlZFByb3BlcnR5ID0ge1xuICAgICAgLi4udGhpcy5vcmlnaW5hbFByb3BlcnR5VG9NYXBwZWRQcm9wZXJ0eSxcbiAgICAgIC4uLm9yaWdpbmFsVG9NYXBwZWRQcm9wZXJ0eU9ialxuICAgIH07XG4gICAgdGhpcy5tYXBwZWRQcm9wZXJ0eVRvT3JpZ2luYWxQcm9wZXJ0eSA9IHtcbiAgICAgIC4uLnRoaXMubWFwcGVkUHJvcGVydHlUb09yaWdpbmFsUHJvcGVydHksXG4gICAgICAuLi5tYXBwZWRUb09yaWdpbmFsUHJvcGVydHlPYmpcbiAgICB9O1xuICB9XG5cbiAgZ2V0TWFwcGVkUHJvcGVydHkocHJvcGVydHlOYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMub3JpZ2luYWxQcm9wZXJ0eVRvTWFwcGVkUHJvcGVydHlbcHJvcGVydHlOYW1lXSA/PyBwcm9wZXJ0eU5hbWU7XG4gIH1cblxuICBnZXRPcmlnaW5hbFByb3BlcnR5KHByb3BlcnR5TmFtZSkge1xuICAgIHJldHVybiB0aGlzLm1hcHBlZFByb3BlcnR5VG9PcmlnaW5hbFByb3BlcnR5W3Byb3BlcnR5TmFtZV0gPz8gcHJvcGVydHlOYW1lO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDb250ZXh0KGNvbXBvbmVudENvbmZpZykge1xuICBjb25zdCB7XG4gICAgcHJvbWlzZXNBcnJheSA9IFtdIC8vIGFycmF5IG9mIHByb21pc2VzIHdoaWNoIGNhbiBiZSBpbnZva2VkIHBhcmFsZWxseSxcbiAgfSA9IGNvbXBvbmVudENvbmZpZztcbiAgY29uc3QgcHJvbWlzZXNSZXNwb25zZUFycmF5ID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXNBcnJheSk7XG4gIGNvbnN0IGRhdGFBcGkgPSBuZXcgRGF0YUFwaSgpO1xuICByZXR1cm4ge1xuICAgIHByb21pc2VzUmVzcG9uc2VBcnJheSxcbiAgICBzZXRQcm9wZXJ0eU1hcHM6IGRhdGFBcGkuc2V0UHJvcGVydHlNYXBzLFxuICAgIGdldE1hcHBlZFByb3BlcnR5OiBkYXRhQXBpLmdldE1hcHBlZFByb3BlcnR5LFxuICAgIGdldE9yaWdpbmFsUHJvcGVydHk6IGRhdGFBcGkuZ2V0T3JpZ2luYWxQcm9wZXJ0eVxuICB9O1xufVxuXG4vKipcbiAqIFtnZXRGaWVsZE5hbWVGcm9tRW1iZWRkZWRGaWVsZE5hbWVdXG4gKiBEZXNjcmlwdGlvbiAgICAtICAgICAgICAgICAgICAgY29udmVydGluZyBlbWJlZGRlZEZpZWxkIG5hbWUgc3RhcnRpbmcgd2l0aCAhUCEgb3IgIVBMISB0byBub3JtYWwgZmllbGRcbiAqIEBpZ25vcmVcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eU5hbWUgICBFbWJlZGRlZEZpZWxkIG5hbWUgc3RhcnRpbmcgd2l0aCAhUCEgb3IgIVBMIVxuICogQHJldHVybnMge3N0cmluZ30gICAgICAgICAgICAgIHJldHVybnMgY29udmVydGVkIHN0cmluZyB3aXRob3V0ICFQISBvciAhUEwhIGFuZCA6XG4gKlxuICogQGV4YW1wbGUgPGNhcHRpb24+RXhhbXBsZSBmb3IgZ2V0RmllbGROYW1lRnJvbUVtYmVkZGVkRmllbGROYW1lIDwvY2FwdGlvbj5cbiAqIGdldEZpZWxkTmFtZUZyb21FbWJlZGRlZEZpZWxkTmFtZSgnIVAhT3JnYW5pc2F0aW9uOk5hbWUnKSByZXR1cm4gJ09yZ2FuaXNhdGlvbi5OYW1lJ1xuICogZ2V0RmllbGROYW1lRnJvbUVtYmVkZGVkRmllbGROYW1lKCchUEwhRW1wbG95ZWVzOk5hbWUnKSByZXR1cm4gJ0VtcGxveWVlcy5OYW1lJ1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmllbGROYW1lRnJvbUVtYmVkZGVkRmllbGROYW1lKHByb3BlcnR5TmFtZSkge1xuICBsZXQgdmFsdWUgPSBwcm9wZXJ0eU5hbWU7XG4gIGlmICh2YWx1ZS5zdGFydHNXaXRoKFBBR0UpIHx8IHZhbHVlLnN0YXJ0c1dpdGgoUEFHRUxJU1QpKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5zdWJzdHJpbmcodmFsdWUubGFzdEluZGV4T2YoJyEnKSArIDEpO1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvOi9nLCAnLicpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBbdXBkYXRlTWV0YUVtYmVkZGVkRmllbGRJRF1cbiAqIERlc2NyaXB0aW9uICAgIC0gICAgICAgICAgIElmIHRoZSBmaWVsZElEIGluIG1ldGEgc3RhcnRzIHdpdGggJyFQIScgb3IgJyFQTCEnIGFuZCBjb250YWlucyAnOicgdGhlbiByZXBsYWNlIHRoZW0gd2l0aCAuKGRvdClcbiAqIEBpZ25vcmVcbiAqIEBwYXJhbSB7QXJyYXl9IG1ldGFGaWVsZHMgIEZpZWxkcyBtZXRhZGF0YSBBcnJheS4gQ29udGFpbnMgbWV0YWRhdGEgb2YgYWxsIHRoZSBmaWVsZHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVNZXRhRW1iZWRkZWRGaWVsZElEKG1ldGFGaWVsZHMpIHtcbiAgcmV0dXJuIG1ldGFGaWVsZHMuZm9yRWFjaChtZXRhRmllbGQgPT4ge1xuICAgIGlmIChtZXRhRmllbGQuZmllbGRJRD8uc3RhcnRzV2l0aChQQUdFKSB8fCBtZXRhRmllbGQuZmllbGRJRD8uc3RhcnRzV2l0aChQQUdFTElTVCkpIHtcbiAgICAgIG1ldGFGaWVsZC5maWVsZElEID0gZ2V0RmllbGROYW1lRnJvbUVtYmVkZGVkRmllbGROYW1lKG1ldGFGaWVsZC5maWVsZElEKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgY29uc3QgaXNFbWJlZGRlZEZpZWxkID0gZmllbGQgPT4ge1xuICBpZiAoZmllbGQ/LnN0YXJ0c1dpdGgoJ0AnKSkge1xuICAgIGZpZWxkID0gZmllbGQuc3Vic3RyaW5nKGZpZWxkLmluZGV4T2YoJyAnKSArIDEpO1xuICAgIGlmIChmaWVsZFswXSA9PT0gJy4nKSBmaWVsZCA9IGZpZWxkLnN1YnN0cmluZygxKTtcbiAgfVxuICByZXR1cm4gZmllbGQ/LmluZGV4T2YoJy4nKSA+IDA7XG59O1xuXG4vKipcbiAqIFtpc1BhZ2VMaXN0UHJvcGVydHldXG4gKiBEZXNjcmlwdGlvbiAgICAtICAgICAgICBjaGVja2luZyBpZiBwcm9wZXJ0eU5hbWUgaXMgcGFnZUxpc3Qgb3Igbm90XG4gKiBAaWdub3JlXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcGVydHlOYW1lICAgUHJvcGVydHlOYW1lXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gIHRydWUgaWYgcHJvcGVydHkgaXMgcGFnZUxpc3QgZWxzZSBmYWxzZVxuICpcbiAqIEBleGFtcGxlIDxjYXB0aW9uPkV4YW1wbGUgZm9yIGlzUGFnZUxpc3RQcm9wZXJ0eSA8L2NhcHRpb24+XG4gKiBpc1BhZ2VMaXN0UHJvcGVydHkoJyFQTCFFbXBsb3llZXMuTmFtZScpIHJldHVybiB0cnVlXG4gKiBpc1BhZ2VMaXN0UHJvcGVydHkoJyFQIUVtcGxveWVlcy5OYW1lJykgcmV0dXJuIGZhbHNlXG4gKiBpc1BhZ2VMaXN0UHJvcGVydHkoJ05hbWUnKSByZXR1cm4gZmFsc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGFnZUxpc3RQcm9wZXJ0eShwcm9wZXJ0eU5hbWUpIHtcbiAgcmV0dXJuIHByb3BlcnR5TmFtZS5zdGFydHNXaXRoKFBBR0VMSVNUKTtcbn1cblxuZXhwb3J0IGNvbnN0IGlzUGFnZUxpc3RJblBhdGggPSAocHJvcGVydHlOYW1lLCBjdXJyZW50Q2xhc3NJRCkgPT4ge1xuICBpZiAoIXByb3BlcnR5TmFtZS5pbmNsdWRlcygnLicpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IFtmaXJzdCwgLi4ucmVzdF0gPSBwcm9wZXJ0eU5hbWUuc3BsaXQoJy4nKTtcbiAgY29uc3QgbWV0YWRhdGEgPSBQQ29yZS5nZXRNZXRhZGF0YVV0aWxzKCkuZ2V0UHJvcGVydHlNZXRhZGF0YShmaXJzdCwgY3VycmVudENsYXNzSUQpO1xuICBpZiAobWV0YWRhdGE/LnR5cGUgPT09ICdQYWdlIExpc3QnKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGlzUGFnZUxpc3RJblBhdGgocmVzdC5qb2luKCcuJyksIG1ldGFkYXRhPy5wYWdlQ2xhc3MpO1xufTtcblxuLyoqXG4gKiBbZ2V0RW1iZWRkZWRGaWVsZE5hbWVdXG4gKiBEZXNjcmlwdGlvbiAgICAtICAgICAgICAgICAgICAgY29udmVydGluZyBub3JtYWwgZmllbGQgbmFtZSB0byBlbWJlZGRlZCBmaWVsZCBzdGFydGluZyB3aXRoICFQISBvciAhUEwhXG4gKiBAaWdub3JlXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcGVydHlOYW1lICAgRmllbGQgbmFtZVxuICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzSUQgICAgICAgIGNsYXNzSUQgb2YgZGF0YXBhZ2VcbiAqIEByZXR1cm5zIHtzdHJpbmd9ICAgICAgICAgICAgICByZXR1cm5zIGNvbnZlcnRlZCBzdHJpbmcgd2l0aCAhUCEgb3IgIVBMISBhbmQgOlxuICpcbiAqIEBleGFtcGxlIDxjYXB0aW9uPkV4YW1wbGUgZm9yIGdldEVtYmVkZGVkRmllbGROYW1lIDwvY2FwdGlvbj5cbiAqIEZvciBwYWdlIHByb3BlcnR5LCBnZXRFbWJlZGRlZEZpZWxkTmFtZSgnT3JnYW5pc2F0aW9uLk5hbWUnKSByZXR1cm4gJyFQIU9yZ2FuaXNhdGlvbjpOYW1lJ1xuICogRm9yIHBhZ2VMaXN0IHByb3BlcnR5LCBnZXRFbWJlZGRlZEZpZWxkTmFtZSgnRW1wbG95ZWVzLk5hbWUnKSByZXR1cm4gJyFQTCFFbXBsb3llZXM6TmFtZSdcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW1iZWRkZWRGaWVsZE5hbWUocHJvcGVydHlOYW1lLCBjbGFzc0lEKSB7XG4gIGxldCB2YWx1ZSA9IHByb3BlcnR5TmFtZTtcbiAgaWYgKGlzUGFnZUxpc3RJblBhdGgodmFsdWUsIGNsYXNzSUQpKSB7XG4gICAgdmFsdWUgPSBgIVBMISR7dmFsdWUucmVwbGFjZSgvXFwuL2csICc6Jyl9YDtcbiAgfSBlbHNlIHtcbiAgICB2YWx1ZSA9IGAhUCEke3ZhbHVlLnJlcGxhY2UoL1xcLi9nLCAnOicpfWA7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vKipcbiAqIFtwcmVwYXJlUHJvcGVydHlNYXBzXVxuICogRGVzY3JpcHRpb24gICAgLSAgICAgICAgcHJlcGFyaW5nIG1hcHMgZm9yIHByb3BlcnR5IG5hbWVzIGFuZCBzZXQgaXQgaW4gZGF0YUFwaSBjb250ZXh0XG4gKiBAaWdub3JlXG4gKiBAcGFyYW0ge0FycmF5fSBmaWVsZHMgICBmaWVsZHMgYXJyYXlcbiAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc0lEICBjbGFzc0lEIG9mIGRhdGFwYWdlXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGV4dCAgZGF0YUFwaSBjb250ZXh0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiBwYWdlTGlzdFByb3BlcnR5IGlzIHByZXNlbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVQcm9wZXJ0eU1hcHMoZmllbGRzLCBjbGFzc0lELCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgc2V0UHJvcGVydHlNYXBzIH0gPSBjb250ZXh0O1xuICBjb25zdCBtYXBzID0gZmllbGRzLnJlZHVjZShcbiAgICAoYWNjLCBmaWVsZCkgPT4ge1xuICAgICAgbGV0IHsgdmFsdWUgfSA9IGZpZWxkLmNvbmZpZztcbiAgICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCdAJykpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5zdWJzdHJpbmcodmFsdWUuaW5kZXhPZignICcpICsgMSk7XG4gICAgICAgIGlmICh2YWx1ZVswXSA9PT0gJy4nKSB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygxKTtcbiAgICAgIH1cbiAgICAgIGxldCBuYW1lID0gdmFsdWU7XG4gICAgICAvLyBQcmVwYXJpbmcgbmFtZSBmb3IgZW1iZWRkZWQgcHJvcGVydHlcbiAgICAgIGlmIChpc0VtYmVkZGVkRmllbGQobmFtZSkpIHtcbiAgICAgICAgbmFtZSA9IGdldEVtYmVkZGVkRmllbGROYW1lKG5hbWUsIGNsYXNzSUQpO1xuICAgICAgfVxuICAgICAgaWYgKGlzUGFnZUxpc3RQcm9wZXJ0eShuYW1lKSAmJiAhYWNjWzJdKSB7XG4gICAgICAgIGFjY1syXSA9IHRydWU7XG4gICAgICB9XG4gICAgICBhY2NbMF1bdmFsdWVdID0gbmFtZTtcbiAgICAgIGFjY1sxXVtuYW1lXSA9IHZhbHVlO1xuXG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sXG4gICAgW3t9LCB7fSwgZmFsc2VdXG4gICk7XG4gIHNldFByb3BlcnR5TWFwcyhtYXBzWzBdLCBtYXBzWzFdKTtcbiAgcmV0dXJuIG1hcHNbMl07XG59XG5cbi8qKlxuICogW2dldENvbmZpZ0VtYmVkZGVkRmllbGRzTWV0YV1cbiAqIERlc2NyaXB0aW9uICAgIC0gICAgICAgICAgIEdldCB0aGUgbWV0YWRhdGEgZm9yIGNvbmZpZ3VyZWQgZW1iZWRkZWQgZmllbGRzXG4gKiBAaWdub3JlXG4gKiBAcGFyYW0ge1NldH0gY29uZmlnRmllbGRzICBTZXQgb2YgY29uZmlnIGZpZWxkc1xuICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzSUQgICAgY2xhc0lEIG9mIGRhdGFwYWdlXG4gKiBAcmV0dXJucyB7QXJyYXl9ICAgICAgICAgICBNZXRhZGF0YSBvZiBjb25maWd1cmVkIGVtYmVkZGVkIGZpZWxkc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlnRW1iZWRkZWRGaWVsZHNNZXRhKGNvbmZpZ0ZpZWxkcywgY2xhc3NJRCkge1xuICBjb25zdCBjb25maWdFbWJlZGRlZEZpZWxkc01ldGE6IGFueVtdID0gW107XG4gIGNvbmZpZ0ZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICBsZXQgdmFsdWUgPSBmaWVsZDtcbiAgICBpZiAoaXNFbWJlZGRlZEZpZWxkKHZhbHVlKSkge1xuICAgICAgLy8gY29udmVyc2lvbiBQYWdlLlBhZ2VMaXN0W10ucHJvcGVydHkgPT4gUGFnZS5QYWdlTGlzdC5wcm9wZXJ0eVxuICAgICAgaWYgKHZhbHVlLmluY2x1ZGVzKCdbJykpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5zdWJzdHJpbmcoMCwgdmFsdWUuaW5kZXhPZignWycpKSArIHZhbHVlLnN1YnN0cmluZyh2YWx1ZS5pbmRleE9mKCddJykgKyAxKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1ldGEgPSBQQ29yZS5nZXRNZXRhZGF0YVV0aWxzKCkuZ2V0RW1iZWRkZWRQcm9wZXJ0eU1ldGFkYXRhKHZhbHVlLCBjbGFzc0lEKTtcbiAgICAgIG1ldGEuZmllbGRJRCA9IGZpZWxkO1xuICAgICAgY29uZmlnRW1iZWRkZWRGaWVsZHNNZXRhLnB1c2gobWV0YSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGNvbmZpZ0VtYmVkZGVkRmllbGRzTWV0YTtcbn1cblxuLyoqXG4gKiBbbWVyZ2VDb25maWdFbWJlZGRlZEZpZWxkc01ldGFdXG4gKiBEZXNjcmlwdGlvbiAgICAtICAgICAgICAgICBHZXQgdGhlIG1ldGFkYXRhIGZvciBjb25maWd1cmVkIGVtYmVkZGVkIGZpZWxkc1xuICogQGlnbm9yZVxuICogQHBhcmFtIHtBcnJheX0gY29uZmlnRW1iZWRkZWRGaWVsZHNNZXRhICBjb25maWcgZmllbGRzIG1ldGFkYXRhLlxuICogQHBhcmFtIHtBcnJheX0gbWV0YUZpZWxkcyAgRmllbGRzIG1ldGFkYXRhIEFycmF5LiBDb250YWlucyBtZXRhZGF0YSBvZiBhbGwgdGhlIGZpZWxkc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VDb25maWdFbWJlZGRlZEZpZWxkc01ldGEoY29uZmlnRW1iZWRkZWRGaWVsZHNNZXRhLCBtZXRhRmllbGRzKSB7XG4gIGNvbnN0IG1lcmdlZE1ldGFGaWVsZHMgPSBbLi4ubWV0YUZpZWxkc107XG4gIGNvbmZpZ0VtYmVkZGVkRmllbGRzTWV0YS5mb3JFYWNoKGNvbmZpZ0ZpZWxkTWV0YSA9PiB7XG4gICAgY29uc3QgZmllbGRNZXRhID0gbWV0YUZpZWxkcy5maW5kKG1ldGFGaWVsZCA9PiBtZXRhRmllbGQuZmllbGRJRCA9PT0gY29uZmlnRmllbGRNZXRhLmZpZWxkSUQpO1xuICAgIGlmICghZmllbGRNZXRhKSBtZXJnZWRNZXRhRmllbGRzLnB1c2goY29uZmlnRmllbGRNZXRhKTtcbiAgfSk7XG4gIHJldHVybiBtZXJnZWRNZXRhRmllbGRzO1xufVxuXG5jb25zdCBvbGRUb05ld0ZpZWxkVHlwZU1hcHBpbmcgPSB7XG4gICdEYXRlIFRpbWUnOiAnRGF0ZSAmIHRpbWUnLFxuICBEYXRlOiAnRGF0ZSBvbmx5J1xufTtcblxuLyoqXG4gKiBbdXBkYXRlRmllbGRUeXBlXVxuICogRGVzY3JpcHRpb24gICAgLSAgICAgICAgICAgVXBkYXRlcyB0aGUgZmllbGQgdHlwZSBpZiBpdHMgY2hhbmdlZCBpbiB0aGUgbmV3IGltcGxlbWVudGF0aW9uLiBTdWNoIG1hcHBpbmcgaXMgbWFpbnRhaW5lZCBpbiBvbGRUb05ld0ZpZWxkVHlwZU1hcHBpbmcuXG4gKiBAaWdub3JlXG4gKiBAcGFyYW0ge0FycmF5fSBtZXRhRmllbGRzICBGaWVsZHMgbWV0YWRhdGEgQXJyYXkuIENvbnRhaW5zIG1ldGFkYXRhIG9mIGFsbCB0aGUgZmllbGRzLlxuICovXG5mdW5jdGlvbiB1cGRhdGVGaWVsZFR5cGUobWV0YUZpZWxkcykge1xuICBtZXRhRmllbGRzLmZvckVhY2gobWV0YUZpZWxkID0+IHtcbiAgICBpZiAobWV0YUZpZWxkLnR5cGUpIG1ldGFGaWVsZC50eXBlID0gb2xkVG9OZXdGaWVsZFR5cGVNYXBwaW5nW21ldGFGaWVsZC50eXBlXSB8fCBtZXRhRmllbGQudHlwZTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldFByZXNldE1ldGFBdHRyaWJ1dGUoYXR0cmlidXRlKSB7XG4gIGNvbnN0IHtcbiAgICB0eXBlLFxuICAgIGNvbmZpZzogeyBsYWJlbCwgdmFsdWUgfVxuICB9ID0gYXR0cmlidXRlO1xuICByZXR1cm4ge1xuICAgIHR5cGUsXG4gICAgbmFtZTogdmFsdWUuc3RhcnRzV2l0aCgnQCcpID8gdmFsdWUuc3Vic3RyaW5nKDQpIDogdmFsdWUsXG4gICAgbGFiZWw6IGxhYmVsLnN0YXJ0c1dpdGgoJ0AnKSA/IGxhYmVsLnN1YnN0cmluZygzKSA6IGxhYmVsXG4gIH07XG59XG5cbi8qKlxuICogW2dlbmVyYXRlVmlld01ldGFEYXRhXVxuICogRGVzY3JpcHRpb24gLSBSZXR1cm5zIGEgbGlzdCBvZiAgbWV0YW9iamVjdHMgb2YgdGhlIGZpZWxkcyBwcm92aWRlZC5cbiAqIEBpZ25vcmVcbiAqIEBwYXJhbSAgIHtBcnJheX0gICByYXdGaWVsZHMgICAgICAgICBMaXN0IG9mIGZpZWxkcyB0byB1cGRhdGUgbWV0YSBmb3JcbiAqIEBwYXJhbSAgIHtzdHJpbmd9ICBjbGFzc0lEICAgICAgICAgIENsYXNzIElEIGZyb20gdGhlIHJlc3BvbnNlXG4gKiBAcmV0dXJucyB7QXJyYXl9ICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIGZpZWxkcyB3aXRoIHVwZGF0ZWQgbWV0YSBvYmplY3RzLlxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZVZpZXdNZXRhRGF0YShyYXdGaWVsZHMsIGNsYXNzSUQsIHNob3dGaWVsZCkge1xuICByZXR1cm4gcmF3RmllbGRzLm1hcChpdGVtID0+IGdldERlZmF1bHRWaWV3TWV0YShpdGVtLCBjbGFzc0lELCBzaG93RmllbGQpKTtcbn1cblxuLyoqXG4gKiBbZ2V0Q29uZmlnRmllbGRzXVxuICogRGVzY3JpcHRpb24gLSBSZXR1cm5zIGxpc3Qgb2YgY29uZmlnIGZpZWxkcyB3aXRoIHByaW1hcnkgZmllbGRzIG1ldGEgdXBkYXRlZC5cbiAqIEBpZ25vcmVcbiAqIEBwYXJhbSAgIHtBcnJheX0gICBjb25maWdGaWVsZHMgICAgICBMaXN0IG9mIEF1dGhvcmVkIGZpZWxkc1xuICogQHBhcmFtICAge0FycmF5fSAgIHByaW1hcnlGaWVsZHMgICAgIExpc3Qgb2YgUHJpbWFyeSBGaWVsZHNcbiAqIEBwYXJhbSAgIHtBcnJheX0gICBtZXRhRmllbGRzICAgICAgICBNZXRhZGF0YSBvZiBhbGwgZmllbGRzXG4gKiBAcGFyYW0gICB7c3RyaW5nfSAgY2xhc3NJRCAgICAgICAgICAgQ2xhc3MgSUQgZnJvbSB0aGUgcmVzcG9uc2VcbiAqIEByZXR1cm5zIHtBcnJheX0gICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIGFsbCBmaWVsZHMgd2l0aCB0aGVpciBtZXRhIHVwZGF0ZWQuXG4gKi9cbmZ1bmN0aW9uIGdldENvbmZpZ0ZpZWxkcyhjb25maWdGaWVsZHMsIHByaW1hcnlGaWVsZHMsIG1ldGFGaWVsZHMsIGNsYXNzSUQpIHtcbiAgY29uc3QgcHJlc2V0Q29uZmlnRmllbGRzID0gY29uZmlnRmllbGRzO1xuICBjb25zdCBwcmltYXJ5RmllbGRzVmlld0luZGV4ID0gcHJlc2V0Q29uZmlnRmllbGRzLmZpbmRJbmRleChmaWVsZCA9PiBmaWVsZC5jb25maWcudmFsdWUgPT09ICdweVByaW1hcnlGaWVsZHMnKTtcbiAgaWYgKCFwcmltYXJ5RmllbGRzIHx8ICFwcmltYXJ5RmllbGRzLmxlbmd0aCkge1xuICAgIGlmIChwcmltYXJ5RmllbGRzVmlld0luZGV4IDwgMCkgcmV0dXJuIHByZXNldENvbmZpZ0ZpZWxkcztcblxuICAgIHByZXNldENvbmZpZ0ZpZWxkcy5zcGxpY2UocHJpbWFyeUZpZWxkc1ZpZXdJbmRleCwgMSk7XG5cbiAgICByZXR1cm4gcHJlc2V0Q29uZmlnRmllbGRzO1xuICB9XG5cbiAgaWYgKHByaW1hcnlGaWVsZHNWaWV3SW5kZXggPiAtMSkge1xuICAgIC8vIGxpc3Qgb2YgdW5jb21tb24gZmllbGRzIC0gbm9uIG92ZXJsYXAgb2YgcHJpbWFyeSBmaWVsZHMgZ3JvdXBlZCB2aWV3IGFuZCBpbmRlcGVuZGVudCBlbnRpdHkgY29sdW1ucyBvZiBwcmltYXJ5IHR5cGVcbiAgICBjb25zdCB1bmNvbW1vbkZpZWxkc0xpc3QgPSBwcmltYXJ5RmllbGRzLmZpbHRlcihcbiAgICAgIHByaW1hcnlGaWVsZCA9PiAhcHJlc2V0Q29uZmlnRmllbGRzLnNvbWUocHJlc2V0Q29uZmlnRmllbGQgPT4gcHJlc2V0Q29uZmlnRmllbGQuY29uZmlnLnZhbHVlLnNwbGl0KCcuJylbMV0gPT09IHByaW1hcnlGaWVsZClcbiAgICApO1xuICAgIGNvbnN0IHVuY29tbW9uRmllbGRzUmF3TWV0YTogYW55W10gPSBbXTtcbiAgICB1bmNvbW1vbkZpZWxkc0xpc3QuZm9yRWFjaCh1bmNvbW1vbkZpZWxkID0+IHtcbiAgICAgIGNvbnN0IHVuY29tbW9uRmllbGRNZXRhID0gbWV0YUZpZWxkcy5maW5kKG1ldGFGaWVsZCA9PiBtZXRhRmllbGQuZmllbGRJRCA9PT0gdW5jb21tb25GaWVsZCk7XG4gICAgICBpZiAodW5jb21tb25GaWVsZE1ldGEpIHVuY29tbW9uRmllbGRzUmF3TWV0YS5wdXNoKHVuY29tbW9uRmllbGRNZXRhKTtcbiAgICB9KTtcbiAgICBjb25zdCB1bmNvbW1vbkZpZWxkc0NvbmZpZ01ldGEgPSBnZW5lcmF0ZVZpZXdNZXRhRGF0YSh1bmNvbW1vbkZpZWxkc1Jhd01ldGEsIGNsYXNzSUQsIHRydWUpO1xuXG4gICAgcHJlc2V0Q29uZmlnRmllbGRzLnNwbGljZShwcmltYXJ5RmllbGRzVmlld0luZGV4LCAxLCAuLi51bmNvbW1vbkZpZWxkc0NvbmZpZ01ldGEpO1xuICB9XG4gIHJldHVybiBwcmVzZXRDb25maWdGaWVsZHM7XG59XG5cbi8qKlxuICogW2dldFRhYmxlQ29uZmlnRnJvbVByZXNldE1ldGFdXG4gKiBEZXNjcmlwdGlvbiAtIEdldCB0aGUgdGFibGUgY29uZmlnIGZyb20gdGhlIHByZXNldHMgbWV0YS5cbiAqIEBpZ25vcmVcbiAqIEBwYXJhbSAgIHtvYmplY3R9ICAgIHByZXNldE1ldGEgICAgICAgICAgUHJlc2V0cyBtZXRhXG4gKiBAcGFyYW0gICB7Ym9vbGVhbn0gICBpc01ldGFXaXRoUHJlc2V0cyAgIHRydWUgaWYgbWV0YSBoYXMgcHJlc2V0cyBlbHNlIGZhbHNlXG4gKiBAcGFyYW0gICB7RnVuY3Rpb259ICBnZXRQQ29ubmVjdCAgICAgICAgIENhbGxiYWNrIHRvIGdldCB0aGUgUENvbm5lY3Qgb2JqZWN0XG4gKiBAcGFyYW0gICB7c3RyaW5nfSAgICBjbGFzc0lEICAgICAgICAgICAgIENsYXNzIElEIGZyb20gdGhlIHJlc3BvbnNlXG4gKiBAcGFyYW0gICB7QXJyYXl9ICAgICBwcmltYXJ5RmllbGRzICAgICAgIExpc3Qgb2YgUHJpbWFyeSBGaWVsZHNcbiAqIEBwYXJhbSAgIHtBcnJheX0gICAgIG1ldGFGaWVsZHMgICAgICAgICAgTGlzdCBvZiBhbGwgbWV0YWZpZWxkc1xuICogQHJldHVybnMge29iamVjdH0gICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSBjb25maWcgb2JqZWN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUYWJsZUNvbmZpZ0Zyb21QcmVzZXRNZXRhKHByZXNldE1ldGEsIGlzTWV0YVdpdGhQcmVzZXRzLCBwQ29ubiQsIGNsYXNzSUQsIHByaW1hcnlGaWVsZHMsIG1ldGFGaWVsZHMpIHtcbiAgbGV0IHByZXNldElkO1xuICBsZXQgcHJlc2V0TmFtZTtcbiAgbGV0IGNhcmRIZWFkZXI7XG4gIGxldCBzZWNvbmRhcnlUZXh0O1xuICBsZXQgdGltZWxpbmVEYXRlO1xuICBsZXQgdGltZWxpbmVUaXRsZTtcbiAgbGV0IHRpbWVsaW5lU3RhdHVzO1xuICBsZXQgdGltZWxpbmVJY29uO1xuICBsZXQgeyBmaWx0ZXJFeHByZXNzaW9uIH0gPSBwQ29ubiQuZ2V0UmF3TWV0YWRhdGEoKS5jb25maWc7XG4gIGxldCBmaWVsZHNNZXRhO1xuICBsZXQgY29uZmlnRmllbGRzO1xuICBpZiAoaXNNZXRhV2l0aFByZXNldHMpIHtcbiAgICBwcmVzZXRJZCA9IHByZXNldE1ldGEuaWQ7XG4gICAgcHJlc2V0TmFtZSA9IHByZXNldE1ldGEubGFiZWw7XG4gICAgY2FyZEhlYWRlciA9IHByZXNldE1ldGEuY2FyZEhlYWRlciAmJiBnZXRQcmVzZXRNZXRhQXR0cmlidXRlKHByZXNldE1ldGEuY2FyZEhlYWRlcik7XG4gICAgc2Vjb25kYXJ5VGV4dCA9IHByZXNldE1ldGEuc2Vjb25kYXJ5VGV4dCAmJiBnZXRQcmVzZXRNZXRhQXR0cmlidXRlKHByZXNldE1ldGEuc2Vjb25kYXJ5VGV4dCk7XG4gICAgdGltZWxpbmVEYXRlID0gcHJlc2V0TWV0YS50aW1lbGluZURhdGUgJiYgZ2V0UHJlc2V0TWV0YUF0dHJpYnV0ZShwcmVzZXRNZXRhLnRpbWVsaW5lRGF0ZSk7XG4gICAgdGltZWxpbmVUaXRsZSA9IHByZXNldE1ldGEudGltZWxpbmVUaXRsZSAmJiBnZXRQcmVzZXRNZXRhQXR0cmlidXRlKHByZXNldE1ldGEudGltZWxpbmVUaXRsZSk7XG4gICAgdGltZWxpbmVTdGF0dXMgPSBwcmVzZXRNZXRhLnRpbWVsaW5lU3RhdHVzICYmIGdldFByZXNldE1ldGFBdHRyaWJ1dGUocHJlc2V0TWV0YS50aW1lbGluZVN0YXR1cyk7XG4gICAgdGltZWxpbmVJY29uID0gcHJlc2V0TWV0YS50aW1lbGluZUljb24gJiYgZ2V0UHJlc2V0TWV0YUF0dHJpYnV0ZShwcmVzZXRNZXRhLnRpbWVsaW5lSWNvbik7XG4gICAgZmlsdGVyRXhwcmVzc2lvbiA9IHByZXNldE1ldGEuY29uZmlnLmZpbHRlckV4cHJlc3Npb247XG4gICAgW2ZpZWxkc01ldGFdID0gcHJlc2V0TWV0YS5jaGlsZHJlbjtcbiAgICBpZiAoXG4gICAgICBwcmVzZXRNZXRhLnRpbWVsaW5lVGl0bGUgJiZcbiAgICAgICFmaWVsZHNNZXRhLmNoaWxkcmVuLmZpbmQoZmllbGRNZXRhID0+IHtcbiAgICAgICAgcmV0dXJuIGZpZWxkTWV0YT8uY29uZmlnPy52YWx1ZSA9PT0gcHJlc2V0TWV0YS50aW1lbGluZVRpdGxlPy5jb25maWc/LnZhbHVlO1xuICAgICAgfSlcbiAgICApIHtcbiAgICAgIGNvbnN0IHsgdHlwZSwgY29uZmlnIH0gPSBwcmVzZXRNZXRhLnRpbWVsaW5lVGl0bGU7XG4gICAgICBmaWVsZHNNZXRhLmNoaWxkcmVuLnB1c2goeyB0eXBlLCBjb25maWc6IHsgLi4uY29uZmlnLCBzaG93OiBmYWxzZSB9IH0pO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBwcmVzZXRNZXRhLnRpbWVsaW5lRGF0ZSAmJlxuICAgICAgIWZpZWxkc01ldGEuY2hpbGRyZW4uZmluZChmaWVsZE1ldGEgPT4ge1xuICAgICAgICByZXR1cm4gZmllbGRNZXRhPy5jb25maWc/LnZhbHVlID09PSBwcmVzZXRNZXRhLnRpbWVsaW5lRGF0ZT8uY29uZmlnPy52YWx1ZTtcbiAgICAgIH0pXG4gICAgKSB7XG4gICAgICBjb25zdCB7IHR5cGUsIGNvbmZpZyB9ID0gcHJlc2V0TWV0YS50aW1lbGluZURhdGU7XG4gICAgICBmaWVsZHNNZXRhLmNoaWxkcmVuLnB1c2goeyB0eXBlLCBjb25maWc6IHsgLi4uY29uZmlnLCBzaG93OiBmYWxzZSB9IH0pO1xuICAgIH1cbiAgICBjb25maWdGaWVsZHMgPSBnZXRDb25maWdGaWVsZHMoZmllbGRzTWV0YS5jaGlsZHJlbiwgcHJpbWFyeUZpZWxkcywgbWV0YUZpZWxkcywgY2xhc3NJRCk7XG4gIH0gZWxzZSB7XG4gICAgZmllbGRzTWV0YSA9IHByZXNldE1ldGEucHJvcHM7XG4gICAgY29uZmlnRmllbGRzID0gZ2V0Q29uZmlnRmllbGRzKFxuICAgICAgZmllbGRzTWV0YVxuICAgICAgICAuZ2V0UENvbm5lY3QoKVxuICAgICAgICAuZ2V0Q2hpbGRyZW4oKVxuICAgICAgICA/Lm1hcChjaGlsZCA9PiB7XG4gICAgICAgICAgcmV0dXJuIGNoaWxkLmdldFBDb25uZWN0KCkuZ2V0UmF3TWV0YWRhdGEoKTtcbiAgICAgICAgfSksXG4gICAgICBwcmltYXJ5RmllbGRzLFxuICAgICAgbWV0YUZpZWxkcyxcbiAgICAgIGNsYXNzSURcbiAgICApO1xuICB9XG4gIHJldHVybiB7XG4gICAgcHJlc2V0SWQsXG4gICAgcHJlc2V0TmFtZSxcbiAgICBjYXJkSGVhZGVyLFxuICAgIHNlY29uZGFyeVRleHQsXG4gICAgdGltZWxpbmVEYXRlLFxuICAgIHRpbWVsaW5lVGl0bGUsXG4gICAgdGltZWxpbmVTdGF0dXMsXG4gICAgdGltZWxpbmVJY29uLFxuICAgIGZpbHRlckV4cHJlc3Npb24sXG4gICAgZmllbGRzTWV0YSxcbiAgICBjb25maWdGaWVsZHNcbiAgfTtcbn1cblxuLyoqXG4gKiBbZ2V0UmVwb3J0Q29sdW1uc11cbiAqIERlc2NyaXB0aW9uIC0gUmV0dXJucyBhIHNldCBvZiBjb2x1bW5zIGZyb20gdGhlIHJlcG9ydCByZXNwb25zZS5cbiAqIEBpZ25vcmVcbiAqIEBwYXJhbSAgIHtvYmplY3R9IHJlc3BvbnNlIC1cbiAqIEByZXR1cm5zIHtTZXR9IFNldCBvZiBjb2x1bW5zIGZyb20gdGhlIHJlcG9ydCByZXNwb25zZVxuICovXG5mdW5jdGlvbiBnZXRSZXBvcnRDb2x1bW5zKHJlc3BvbnNlKSB7XG4gIGNvbnN0IHtcbiAgICBkYXRhOiB7IGRhdGE6IHJlcG9ydENvbHVtbnMgfVxuICB9ID0gcmVzcG9uc2U7XG4gIGNvbnN0IHJlcG9ydENvbHVtbnNTZXQgPSBuZXcgU2V0KCk7XG4gIHJlcG9ydENvbHVtbnM/LmZvckVhY2goaXRlbSA9PiB7XG4gICAgbGV0IHZhbCA9IGl0ZW0ucHlGaWVsZE5hbWU7XG4gICAgLy8gUmVtb3ZlICcuJyBmcm9tIGluZGV4IDAgb25seSwgaWYgJy4nIGlzIHByZXNlbnRcbiAgICBpZiAodmFsWzBdID09PSAnLicpIHtcbiAgICAgIHZhbCA9IHZhbC5zdWJzdHJpbmcoMSk7XG4gICAgfVxuICAgIHJlcG9ydENvbHVtbnNTZXQuYWRkKHZhbCk7XG4gIH0pO1xuICByZXR1cm4gcmVwb3J0Q29sdW1uc1NldDtcbn1cblxuLyoqXG4gKiBbZ2V0Q29uZmlnRmllbGRWYWx1ZV1cbiAqIERlc2NyaXRwaW9uIC0gUmV0dXJucyBhIHZhbGlkIHZhbHVlIGZvciBhIGNvbmZpZ3VyYXRpb24gZmllbGQuIFJlbW92ZSBhbnkgYW5ub3RhdGlvbnMgYW5kIGFsc28gXCIuXCJcbiAqIEBpZ25vcmVcbiAqIEBwYXJhbSAgIHtvYmplY3R9IGNvbmZpZ1xuICogICAgICAgICAgICAgICAgICAgY29uZmlnLnZhbHVlIC0gUmF3IHZhbHVlXG4gKiBAcmV0dXJucyB7c3RyaW5nfSB2YWx1ZSAtIFZhbHVlIHdpdGggb3V0IGFueSBhbm5vdGF0aW9ucyBvciBcIi5cIlxuICovXG5mdW5jdGlvbiBnZXRDb25maWdGaWVsZFZhbHVlKGNvbmZpZykge1xuICBsZXQgeyB2YWx1ZSB9ID0gY29uZmlnO1xuICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnQCcpKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5zdWJzdHJpbmcodmFsdWUuaW5kZXhPZignICcpICsgMSk7XG4gICAgaWYgKHZhbHVlWzBdID09PSAnLicpIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDEpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBbcHJlcGFyZUNvbmZpZ0ZpZWxkc11cbiAqIERlc2NyaXB0aW9uIC0gUHJlcGFyZXMgYSBzZXQgb2YgY29uZmlndXJhdGlvbiBmaWVsZHMgYW5kIHB1c2hlcyBlYWNoIGNvbmZpZyB0eXBlIHRvIGEgc2V0IHVzaW5nIHRoZSBjYWxsYmFjayBwYXJhbWV0ZXIuXG4gKiBAaWdub3JlXG4gKiBAcGFyYW0gICB7b2JqZWN0fSAgICBjb25maWdGaWVsZHMgICAgICAgICAgTGlzdCBvZiBBdXRob3JlZCBmaWVsZHNcbiAqIEBwYXJhbSAgIHtGdW5jdGlvbn0gIHB1c2hUb0NvbXBvbmVudHNMaXN0IENhbGxiYWNrIHRvIHB1c2ggdGhlIGZpZWxkIHR5cGUgdG8gYSBzZXQuXG4gKiBAcmV0dXJucyB7U2V0fSAgICAgICBjb25maWdGaWVsZFNldFxuICovXG5mdW5jdGlvbiBwcmVwYXJlQ29uZmlnRmllbGRzKGNvbmZpZ0ZpZWxkcywgcHVzaFRvQ29tcG9uZW50c0xpc3QpIHtcbiAgY29uc3QgY29uZmlnRmllbGRTZXQgPSBuZXcgU2V0KCk7XG4gIGNvbmZpZ0ZpZWxkcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgIHB1c2hUb0NvbXBvbmVudHNMaXN0KGl0ZW0udHlwZSk7XG4gICAgY29uc3QgdmFsID0gZ2V0Q29uZmlnRmllbGRWYWx1ZShpdGVtLmNvbmZpZyk7XG4gICAgY29uZmlnRmllbGRTZXQuYWRkKHZhbCk7XG4gIH0pO1xuICByZXR1cm4gY29uZmlnRmllbGRTZXQ7XG59XG5cbi8qKlxuICogW2ZpbmRBdXRob3JlZEZpZWxkXVxuICogRGVzY3JpcHRpb24gLSBGaW5kcyBhbiBhdXRob3JlZCBmaWVsZCBmcm9tIHloZSBsaXN0IG9mIGNvbmZpZyBmaWVsZHMuXG4gKiBAaWdub3JlXG4gKiBAcGFyYW0gICB7QXJyYXl9ICAgY29uZmlnRmllbGRzIExpc3Qgb2YgQXV0aG9yZWQgZmllbGRzXG4gKiBAcGFyYW0gICB7c3RyaW5nfSAgZmllbGRJRCAgICAgIEZpbHRlclxuICogQHJldHVybnMge29iamVjdH0gICAgICAgICAgICAgIGNvbmZpZyB3aXRoIGl0cyBmaWVsZCB2YWx1ZSBlcXVhbCB0byBmaWVsZElELCB3aGljaCBtZWFucyBhbiBhdXRob3JlZCBmaWVsZFxuICovXG5mdW5jdGlvbiBmaW5kQXV0aG9yZWRGaWVsZChjb25maWdGaWVsZHMsIGZpZWxkSUQpIHtcbiAgcmV0dXJuIGNvbmZpZ0ZpZWxkcy5maW5kKGNvbmZpZ0ZpZWxkID0+IHtcbiAgICBjb25zdCB2YWwgPSBnZXRDb25maWdGaWVsZFZhbHVlKGNvbmZpZ0ZpZWxkLmNvbmZpZyk7XG4gICAgcmV0dXJuIHZhbCA9PT0gZmllbGRJRDtcbiAgfSk7XG59XG5cbi8qKlxuICogW2ZpbmRBbmRVcGRhdGVBdXRob3JlZEZpZWxkQ29uZmlnXVxuICogRGVzY3JpcHRpb24gLSBGaW5kIHRoZSBhdXRob3JlZCBmaWVsZCwgYW5kIHVwZGF0ZSBpdHMgY29uZmlnLlxuICogQGlnbm9yZVxuICogQHBhcmFtICAge0FycmF5fSAgIGNvbmZpZ0ZpZWxkcyBMaXN0IG9mIEF1dGhvcmVkIGZpZWxkc1xuICogQHBhcmFtICAge29iamVjdH0gIGl0ZW0gICAgICAgIEZpZWxkIGl0ZW0gdG8gY29weSBkaXNwbGF5QXMgYW5kIGNhdGVnb3J5IGluZm9ybWF0aW9uXG4gKiBAcGFyYW0gICB7c3RyaW5nfSAgY2xhc3NJZCAgICAgY2xhc3NJRCBmcm9tIHRoZSByZXNwb25zZVxuICovXG5mdW5jdGlvbiBmaW5kQW5kVXBkYXRlQXV0aG9yZWRGaWVsZENvbmZpZyhjb25maWdGaWVsZHMsIGl0ZW0sIGNsYXNzSWQpIHtcbiAgY29uc3QgYXV0aG9yZWRGaWVsZCA9IGZpbmRBdXRob3JlZEZpZWxkKGNvbmZpZ0ZpZWxkcywgaXRlbS5maWVsZElEKTtcbiAgaWYgKGF1dGhvcmVkRmllbGQ/LmNvbmZpZykge1xuICAgIGlmIChpdGVtLmRpc3BsYXlBcykge1xuICAgICAgYXV0aG9yZWRGaWVsZC5jb25maWcuZGlzcGxheUFzID0gaXRlbS5kaXNwbGF5QXM7XG4gICAgfVxuICAgIGF1dGhvcmVkRmllbGQuY29uZmlnLmNsYXNzSUQgPSBpdGVtLmNsYXNzSUQgPz8gY2xhc3NJZDtcblxuICAgIGlmIChhdXRob3JlZEZpZWxkLnR5cGUgPT09IFVTRVJfUkVGRVJFTkNFKSB7XG4gICAgICBhdXRob3JlZEZpZWxkLmNvbmZpZy5hc3NvY2lhdGlvbklEID0gaXRlbS5hc3NvY2lhdGlvbklEIHx8IGl0ZW0uZmllbGRJRDtcbiAgICB9XG4gICAgYXV0aG9yZWRGaWVsZC5jb25maWcuY2F0ZWdvcnkgPSBpdGVtLmNhdGVnb3J5O1xuICAgIC8vIEZpZWxkVHlwZSBpZGVudGlmaWVzIHdoZXRoZXIgdGhlIGZpZWxkIGlzIGNvbmZpZ3VyZWQgYXMgcGlja0xpc3RcbiAgICBhdXRob3JlZEZpZWxkLmNvbmZpZy5maWVsZFR5cGUgPSBpdGVtLmZpZWxkVHlwZTtcbiAgICAvLyB0eXBlIGRlZmluZWQgb24gdGhlIHByb3BlcnR5IHJ1bGUsXG4gICAgLy8gdXNlZCBmb3IgdGhlIHBpY2tsaXN0IGZpZWxkIHRvIGFzc2lnbiB0aGUgYXBwcm9wcmlhdGUgdHlwZVxuICAgIGF1dGhvcmVkRmllbGQuY29uZmlnLnByb3BlcnR5VHlwZSA9IGl0ZW0uZGF0YVR5cGUgfHwgaXRlbS50eXBlO1xuICB9XG59XG5cbi8qKlxuICogW2lzQW5FeHRyYUZpZWxkXVxuICogRGVzY3JpcHRpb24gLSBSZXR1cm5zIHRydWUgaWYgdGhlIGZpZWxkIGlzIGFuIGV4dHJhIGZpZWxkLiBFeHRyYSBmaWVsZCBpcyB0aGUgb25lIHdoaWNoIGlzIG5vdCBhdXRob3JlZCBidXQgcGFydCBvZiB0aGUgcmVwb3J0LlxuICogQGlnbm9yZVxuICogQHBhcmFtICAge0FycmF5fSAgIGNvbmZpZ0ZpZWxkcyAgICAgIExpc3Qgb2YgQXV0aG9yZWQgZmllbGRzXG4gKiBAcGFyYW0gICB7U2V0fSAgICAgY29uZmlnRmllbGRTZXQgICAgU2V0IGlmIEF1dGhvcmVkIGZpbGVkIHZhbHVlc1xuICogQHBhcmFtICAge1NldH0gICAgIHJlcG9ydENvbHVtbnNTZXQgU2V0IG9mIGNvbHVtbnMgZnJvbSB0aGUgcmVwb3J0XG4gKiBAcGFyYW0gICB7b2JqZWN0fSAgaXRlbSAgICAgICAgICAgICBDb25maWcgZmllbGQgaXRlbVxuICogQHBhcmFtICAge3N0cmluZ30gIGNsYXNzSWQgICAgICAgICAgQ2xhc3MgSUQgZnJvbSB0aGUgcmVzcG9uc2VcbiAqIEBwYXJhbSAgIHtib29sZWFufSBzaG93RHluYW1pY0ZpZWxkcyBGbGFnIGluZGljYXRpbmcgd2hldGhlciBmaWVsZHMgYXJlIGZldGNoZWQgZHluYW1pY2FsbHkgYXQgcnVudGltZVxuICogQHJldHVybnMge2Jvb2xlYW59ICAgICAgICAgICAgICAgICAgdHJ1ZSBJZiB0aGUgZmllbGQgaXMgYW4gZXh0cmEgZmllbGQgZWxzZSBmYWxzZS5cbiAqL1xuZnVuY3Rpb24gaXNBbkV4dHJhRmllbGQoY29uZmlnRmllbGRzLCBjb25maWdGaWVsZFNldCwgcmVwb3J0Q29sdW1uc1NldCwgaXRlbSwgY2xhc3NJZCwgc2hvd0R5bmFtaWNGaWVsZHMpIHtcbiAgLy8gSXMgdGhlIGZpZWxkIGFscmVhZHkgcHJlc2VudCBpbiBhdXRob3JpbmcgbWV0YWRhdGE/XG4gIC8vIE11dGF0ZXMgY29uZmlnIGZpZWxkcyB0byBjb3B5IGRpc3BsYXlBcyBhbmQgY2F0ZWdvcnkgaW5mb3JtYXRpb25cbiAgaWYgKGNvbmZpZ0ZpZWxkU2V0LmhhcyhpdGVtLmZpZWxkSUQpKSB7XG4gICAgZmluZEFuZFVwZGF0ZUF1dGhvcmVkRmllbGRDb25maWcoY29uZmlnRmllbGRzLCBpdGVtLCBjbGFzc0lkKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBJZiBmaWVsZCBpcyBub3QgYXV0aG9yZWQgYW5kIG5vdCBwYXJ0IG9mIHJlcG9ydCBjb2x1bW5zIHRoZW4gZGlzY2FyZCBpdFxuICByZXR1cm4gc2hvd0R5bmFtaWNGaWVsZHMgfHwgISFyZXBvcnRDb2x1bW5zU2V0LmhhcyhpdGVtLmZpZWxkSUQpO1xufVxuXG4vKipcbiAqIFtwcmVwYXJlRXh0cmFGaWVsZHNdXG4gKiBEZXNjcmlwdGlvbiAtIFJldHVybnMgYSBsaXN0IG9mIGV4dHJhIGZpZWxkcyB3aXRoIHRoZWlyIG1ldGEgdXBkYXRlZC5cbiAqIEBpZ25vcmVcbiAqIEBwYXJhbSAgIHtBcnJheX0gICBtZXRhRmllbGRzICAgICAgIExpc3Qgb2YgZmllbGRzXG4gKiBAcGFyYW0gICB7QXJyYXl9ICAgY29uZmlnRmllbGRzICAgICAgTGlzdCBvZiBBdXRob3JlZCBmaWVsZHNcbiAqIEBwYXJhbSAgIHtTZXR9ICAgICBjb25maWdGaWVsZFNldCAgICBTZXQgaWYgQXV0aG9yZWQgZmlsZWQgdmFsdWVzXG4gKiBAcGFyYW0gICB7U2V0fSAgICAgcmVwb3J0Q29sdW1uc1NldCBTZXQgb2YgY29sdW1ucyBmcm9tIHRoZSByZXBvcnRcbiAqIEBwYXJhbSAgIHtzdHJpbmd9ICBjbGFzc0lEICAgICAgICAgIENsYXNzIElEIGZyb20gdGhlIHJlc3BvbnNlXG4gKiBAcGFyYW0gICB7Ym9vbGVhbn0gc2hvd0R5bmFtaWNGaWVsZHMgRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgZmllbGRzIGFyZSBmZXRjaGVkIGR5bmFtaWNhbGx5IGF0IHJ1bnRpbWVcbiAqIEByZXR1cm5zIHtBcnJheX0gICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgZXh0cmEgZmllbGRzIHdpdGggdGhlaXIgbWV0YSB1cGRhdGVkLlxuICovXG5mdW5jdGlvbiBwcmVwYXJlRXh0cmFGaWVsZHMobWV0YUZpZWxkcywgY29uZmlnRmllbGRzLCBjb25maWdGaWVsZFNldCwgcmVwb3J0Q29sdW1uc1NldCwgY2xhc3NJRCwgc2hvd0R5bmFtaWNGaWVsZHMpIHtcbiAgLy8gRmlsdGVyIGFsbCB0aGUgZXh0cmEgZmllbGRzXG4gIGNvbnN0IGV4dHJhRmlsZWRzID0gbWV0YUZpZWxkcy5maWx0ZXIoaXRlbSA9PiB7XG4gICAgcmV0dXJuIGlzQW5FeHRyYUZpZWxkKGNvbmZpZ0ZpZWxkcywgY29uZmlnRmllbGRTZXQsIHJlcG9ydENvbHVtbnNTZXQsIGl0ZW0sIGNsYXNzSUQsIHNob3dEeW5hbWljRmllbGRzKTtcbiAgfSk7XG4gIHJldHVybiBnZW5lcmF0ZVZpZXdNZXRhRGF0YShleHRyYUZpbGVkcywgY2xhc3NJRCwgZmFsc2UpO1xuICAvLyBVcGRhdGUgdGhlIG1ldGEgb2JqZWN0IG9mIGVhY2ggb2YgdGhlIGV4dHJhIGZpZWxkcy5cbn1cblxuY29uc3QgQXNzaWduRGFzaE9iamVjdHMgPSBbJ0Fzc2lnbi1Xb3JrbGlzdCcsICdBc3NpZ24tV29ya0Jhc2tldCddO1xuXG5mdW5jdGlvbiBwb3B1bGF0ZVJlbmRlcmluZ09wdGlvbnMobmFtZSwgY29uZmlnLCBmaWVsZCkge1xuICBjb25zdCBzaG91bGREaXNwbGF5QXNTZW1hbnRpY0xpbmsgPSAnZGlzcGxheUFzTGluaycgaW4gZmllbGQuY29uZmlnICYmIGZpZWxkLmNvbmZpZy5kaXNwbGF5QXNMaW5rO1xuICBpZiAoc2hvdWxkRGlzcGxheUFzU2VtYW50aWNMaW5rKSB7XG4gICAgY29uZmlnLmN1c3RvbU9iamVjdC5pc0Fzc2lnbm1lbnRMaW5rID0gQXNzaWduRGFzaE9iamVjdHMuaW5jbHVkZXMoZmllbGQuY29uZmlnLmNsYXNzSUQpO1xuICAgIGlmIChmaWVsZC5jb25maWcudmFsdWUuc3RhcnRzV2l0aCgnQENBJykpIHtcbiAgICAgIGNvbmZpZy5jdXN0b21PYmplY3QuaXNBc3NvY2lhdGlvbiA9IHRydWU7XG4gICAgfVxuICAgIGNvbmZpZy5jZWxsUmVuZGVyZXIgPSBmb3JtYXRDb25zdGFudHMuV29ya0xpbms7XG4gIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3B5U3RhdHVzV29yaycgfHwgbmFtZSA9PT0gJ3B5QXNzaWdubWVudFN0YXR1cycpIHtcbiAgICBjb25maWcuY2VsbFJlbmRlcmVyID0gZm9ybWF0Q29uc3RhbnRzLldvcmtTdGF0dXM7XG4gIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3B4VXJnZW5jeVdvcmsnKSB7XG4gICAgY29uZmlnLmNlbGxSZW5kZXJlciA9IGZvcm1hdENvbnN0YW50cy5JbnRlZ2VyO1xuICB9XG59XG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGl6ZUNvbHVtbnMoZmllbGRzOiBhbnlbXSA9IFtdLCBnZXRNYXBwZWRQcm9wZXJ0eTogYW55ID0gbnVsbCkge1xuICByZXR1cm4gZmllbGRzLm1hcCgoZmllbGQsIG9yaWdpbmFsQ29sSW5kZXgpID0+IHtcbiAgICBsZXQgbmFtZSA9IGZpZWxkLmNvbmZpZy52YWx1ZTtcblxuICAgIGlmIChuYW1lLnN0YXJ0c1dpdGgoJ0AnKSkge1xuICAgICAgbmFtZSA9IG5hbWUuc3Vic3RyaW5nKG5hbWUuaW5kZXhPZignICcpICsgMSk7XG4gICAgICBpZiAobmFtZVswXSA9PT0gJy4nKSBuYW1lID0gbmFtZS5zdWJzdHJpbmcoMSk7XG4gICAgfVxuICAgIG5hbWUgPSBnZXRNYXBwZWRQcm9wZXJ0eT8uKG5hbWUpID8/IG5hbWU7XG5cbiAgICBsZXQgbGFiZWwgPSBmaWVsZC5jb25maWcubGFiZWwgfHwgZmllbGQuY29uZmlnLmNhcHRpb247XG4gICAgY29uc3QgeyBzaG93ID0gdHJ1ZSwgZGlzcGxheUFzIH0gPSBmaWVsZC5jb25maWc7XG4gICAgaWYgKGxhYmVsLnN0YXJ0c1dpdGgoJ0AnKSkge1xuICAgICAgbGFiZWwgPSBsYWJlbC5zdWJzdHJpbmcoMyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgbmFtZSxcbiAgICAgIGxhYmVsLFxuICAgICAgc2hvdyxcbiAgICAgIGNsYXNzSUQ6IGZpZWxkLmNvbmZpZy5jbGFzc0lELFxuICAgICAgaWQ6IGZpZWxkLmlkIHx8IG5hbWUgfHwgb3JpZ2luYWxDb2xJbmRleCxcbiAgICAgIGRpc3BsYXlBcyxcbiAgICAgIGFzc29jaWF0aW9uSUQ6IGZpZWxkLmNvbmZpZy5hc3NvY2lhdGlvbklELFxuICAgICAgLi4uKGZpZWxkLmNvbmZpZy5jbGFzc0lEICYmIHsgY2F0ZWdvcnk6IGZpZWxkLmNvbmZpZy5jYXRlZ29yeSB9KSxcbiAgICAgIGN1c3RvbU9iamVjdDoge30sXG4gICAgICBmaWVsZFR5cGU6IGZpZWxkLmNvbmZpZy5maWVsZFR5cGUsXG4gICAgICBtZXRhOiB7XG4gICAgICAgIC4uLmZpZWxkXG4gICAgICB9XG4gICAgfTtcblxuICAgIHBvcHVsYXRlUmVuZGVyaW5nT3B0aW9ucyhuYW1lLCBjb25maWcsIGZpZWxkKTtcblxuICAgIHJldHVybiBjb25maWc7XG4gIH0pO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0SXRlbUtleSA9IGZpZWxkcyA9PiB7XG4gIGxldCBpdGVtS2V5O1xuICBpZiAoZmllbGRzLmZpbmRJbmRleChmaWVsZCA9PiBmaWVsZC5pZCA9PT0gJ3B5R1VJRCcpID4gLTEpIHtcbiAgICBpdGVtS2V5ID0gJ3B5R1VJRCc7XG4gIH0gZWxzZSB7XG4gICAgaXRlbUtleSA9ICdwekluc0tleSc7XG4gIH1cbiAgcmV0dXJuIGl0ZW1LZXk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZVBhdGNoUXVlcnlGaWVsZHMoZmllbGRzLCBpc0RhdGFPYmplY3QgPSBmYWxzZSwgY2xhc3NJRCA9ICcnKSB7XG4gIGNvbnN0IHF1ZXJ5RmllbGRzOiBhbnlbXSA9IFtdO1xuICBmaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgY29uc3QgcGF0Y2hGaWVsZHM6IGFueVtdID0gW107XG4gICAgaWYgKGZpZWxkLmNlbGxSZW5kZXJlciA9PT0gJ1dvcmtMaW5rJykge1xuICAgICAgaWYgKGZpZWxkLmN1c3RvbU9iamVjdCAmJiBmaWVsZC5jdXN0b21PYmplY3QuaXNBc3NpZ25tZW50TGluaykge1xuICAgICAgICBjb25zdCBhc3NvY2lhdGlvbk5hbWUgPSBmaWVsZC5uYW1lLmluY2x1ZGVzKCc6JykgPyBgJHtmaWVsZC5uYW1lLnNwbGl0KCc6JylbMF19OmAgOiAnJztcbiAgICAgICAgcGF0Y2hGaWVsZHMucHVzaChgJHthc3NvY2lhdGlvbk5hbWV9cHpJbnNLZXlgKTtcbiAgICAgICAgcGF0Y2hGaWVsZHMucHVzaChgJHthc3NvY2lhdGlvbk5hbWV9cHhSZWZPYmplY3RDbGFzc2ApO1xuICAgICAgfSBlbHNlIGlmIChmaWVsZC5jdXN0b21PYmplY3QgJiYgZmllbGQuY3VzdG9tT2JqZWN0LmlzQXNzb2NpYXRpb24pIHtcbiAgICAgICAgY29uc3QgYXNzb2NpYXRpb25DYXRlZ29yeSA9IGZpZWxkLm5hbWUuc3BsaXQoJzonKVswXTtcbiAgICAgICAgcGF0Y2hGaWVsZHMucHVzaChgJHthc3NvY2lhdGlvbkNhdGVnb3J5fTpweUlEYCk7XG4gICAgICAgIHBhdGNoRmllbGRzLnB1c2goYCR7YXNzb2NpYXRpb25DYXRlZ29yeX06cHpJbnNLZXlgKTtcbiAgICAgICAgcGF0Y2hGaWVsZHMucHVzaChgJHthc3NvY2lhdGlvbkNhdGVnb3J5fTpweE9iakNsYXNzYCk7XG4gICAgICB9IGVsc2UgaWYgKGlzRGF0YU9iamVjdCkge1xuICAgICAgICBjb25zdCBkYXRhVmlld05hbWUgPSBQQ29yZS5nZXREYXRhVHlwZVV0aWxzKCkuZ2V0U2F2YWJsZURhdGFQYWdlKGNsYXNzSUQpO1xuICAgICAgICBjb25zdCBkYXRhUGFnZUtleXMgPSBQQ29yZS5nZXREYXRhVHlwZVV0aWxzKCkuZ2V0RGF0YVBhZ2VLZXlzKGRhdGFWaWV3TmFtZSk7XG4gICAgICAgIGRhdGFQYWdlS2V5cz8uZm9yRWFjaChpdGVtID0+IChpdGVtLmlzQWx0ZXJuYXRlS2V5U3RvcmFnZSA/IHBhdGNoRmllbGRzLnB1c2goaXRlbS5saW5rZWRGaWVsZCkgOiBwYXRjaEZpZWxkcy5wdXNoKGl0ZW0ua2V5TmFtZSkpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhdGNoRmllbGRzLnB1c2goJ3B5SUQnKTtcbiAgICAgICAgcGF0Y2hGaWVsZHMucHVzaCgncHpJbnNLZXknKTtcbiAgICAgICAgcGF0Y2hGaWVsZHMucHVzaCgncHhPYmpDbGFzcycpO1xuICAgICAgfVxuICAgIH1cbiAgICBwYXRjaEZpZWxkcy5mb3JFYWNoKGsgPT4ge1xuICAgICAgaWYgKCFxdWVyeUZpZWxkcy5maW5kKHEgPT4gcSA9PT0gaykpIHtcbiAgICAgICAgcXVlcnlGaWVsZHMucHVzaChrKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHF1ZXJ5RmllbGRzO1xufVxuXG4vKipcbiAqIFVwZGF0ZSB0aGUgcmVuZGVyZXIgdHlwZSBmb3IgdGhlIHByb3BlcnRpZXMgb2YgdHlwZSBQYWdlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlUGFnZUZpZWxkc0NvbmZpZyhjb25maWdGaWVsZHMsIHBhcmVudENsYXNzSUQpIHtcbiAgcmV0dXJuIGNvbmZpZ0ZpZWxkcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHR5cGUsXG4gICAgICBjb25maWc6IHsgdmFsdWUgfVxuICAgIH0gPSBpdGVtO1xuICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IFBDb3JlLmdldEFubm90YXRpb25VdGlscygpLmdldFByb3BlcnR5TmFtZSh2YWx1ZSk7XG4gICAgaWYgKGlzRW1iZWRkZWRGaWVsZCh2YWx1ZSkgJiYgIWlzUGFnZUxpc3RJblBhdGgocHJvcGVydHlOYW1lLCBwYXJlbnRDbGFzc0lEKSkge1xuICAgICAgaXRlbS5jb25maWcuY29tcG9uZW50VHlwZSA9IHR5cGU7XG4gICAgICBpdGVtLnR5cGUgPSAnUGFnZVByb3BlcnR5UmVuZGVyZXInO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBjb25zdCByZWFkQ29udGV4dFJlc3BvbnNlID0gYXN5bmMgKGNvbnRleHQsIHBhcmFtcykgPT4ge1xuICBjb25zdCB7IHBDb25uJCwgYXBpQ29udGV4dCwgY2hpbGRyZW4sIHNob3dEeW5hbWljRmllbGRzLCByZWZlcmVuY2VMaXN0LCBpc0RhdGFPYmplY3QgfSA9IHBhcmFtcztcbiAgLy8gbGV0IHsgbGlzdENvbnRleHQgfSA9IHBhcmFtcztcbiAgY29uc3QgeyBwcm9taXNlc1Jlc3BvbnNlQXJyYXksIGFwaUNvbnRleHQ6IG90aGVyQ29udGV4dCB9ID0gY29udGV4dDtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNvbmFyanMvbm8tdW51c2VkLWNvbGxlY3Rpb25cbiAgY29uc3QgbGlzdE9mQ29tcG9uZW50czogYW55W10gPSBbXTtcbiAgY29uc3Qge1xuICAgIGRhdGE6IHsgZmllbGRzOiBtZXRhRmllbGRzLCBjbGFzc0lELCBpc1F1ZXJ5YWJsZSB9XG4gIH0gPSBwcm9taXNlc1Jlc3BvbnNlQXJyYXlbMF07XG4gIGxldCB7XG4gICAgZGF0YTogeyBwcmltYXJ5RmllbGRzIH1cbiAgfSA9IHByb21pc2VzUmVzcG9uc2VBcnJheVswXTtcbiAgLy8gV2hlbiBsaXN0IGlzIGNvbmZpZ3VyZWQgd2l0aCBJbmNsdWRlIGFsbCBjbGFzcyBmaWVsZHMgY29uZmlndXJhdGlvbiwgcHJvdmlkZSBzdXBwb3J0IGZvciBQcmltYXJ5IGZpZWxkcyBjb2x1bW5cbiAgaWYgKHNob3dEeW5hbWljRmllbGRzKSB7XG4gICAgY29uc3Qgc291cmNlTWV0YWRhdGEgPSBQQ29yZS5nZXRNZXRhZGF0YVV0aWxzKCkuZ2V0RGF0YVBhZ2VNZXRhZGF0YShyZWZlcmVuY2VMaXN0KTtcbiAgICBpZiAoc291cmNlTWV0YWRhdGE/LnByaW1hcnlGaWVsZHMpIHtcbiAgICAgIHByaW1hcnlGaWVsZHMgPSBzb3VyY2VNZXRhZGF0YS5wcmltYXJ5RmllbGRzO1xuICAgIH1cbiAgICAvLyB1cGRhdGluZyBtZXRhRGF0YSBmaWVsZElEIHRvIG5vcm1hbCBwcm9wZXJ0eSBpZiBpdCBoYXMgZmllbGRJRCBzdGFydHMgd2l0aCAhUCEgb3IgIVBMIVxuICAgIHVwZGF0ZU1ldGFFbWJlZGRlZEZpZWxkSUQobWV0YUZpZWxkcyk7XG4gIH1cbiAgdXBkYXRlRmllbGRUeXBlKG1ldGFGaWVsZHMpO1xuXG4gIGlmIChpc0RhdGFPYmplY3QpIHtcbiAgICBjb25zdCBjb21wb3NpdGVLZXlzOiBhbnlbXSA9IFtdO1xuICAgIGNvbnN0IGRhdGFWaWV3TmFtZSA9IFBDb3JlLmdldERhdGFUeXBlVXRpbHMoKS5nZXRTYXZhYmxlRGF0YVBhZ2UoY2xhc3NJRCk7XG4gICAgY29uc3QgZGF0YVBhZ2VLZXlzID0gUENvcmUuZ2V0RGF0YVR5cGVVdGlscygpLmdldERhdGFQYWdlS2V5cyhkYXRhVmlld05hbWUpO1xuICAgIGRhdGFQYWdlS2V5cz8uZm9yRWFjaChpdGVtID0+IChpdGVtLmlzQWx0ZXJuYXRlS2V5U3RvcmFnZSA/IGNvbXBvc2l0ZUtleXMucHVzaChpdGVtLmxpbmtlZEZpZWxkKSA6IGNvbXBvc2l0ZUtleXMucHVzaChpdGVtLmtleU5hbWUpKSk7XG4gICAgaWYgKGNvbXBvc2l0ZUtleXMubGVuZ3RoICYmIG90aGVyQ29udGV4dCkge1xuICAgICAgb3RoZXJDb250ZXh0LnNldENvbXBvc2l0ZUtleXMoY29tcG9zaXRlS2V5cyk7XG4gICAgfVxuICAgIGlmIChvdGhlckNvbnRleHQpIHtcbiAgICAgIG90aGVyQ29udGV4dC5mZXRjaFJvd0FjdGlvbkRldGFpbHMgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHByZXNldEFycmF5ID0gW107XG4gIGNvbnN0IHJhd01ldGFkYXRhID0gcENvbm4kLmdldFJhd01ldGFkYXRhKCkuY29uZmlnO1xuICBjb25zdCByYXdQcmVzZXRzID0gcmF3TWV0YWRhdGEucHJlc2V0cztcbiAgY29uc3QgaXNNZXRhV2l0aFByZXNldHMgPSByYXdQcmVzZXRzICYmIHJhd1ByZXNldHMubGVuZ3RoICE9PSAwO1xuICBjb25zdCBjaGlsZHJlbkl0ZXJhdG9yID0gaXNNZXRhV2l0aFByZXNldHMgPyByYXdQcmVzZXRzIDogY2hpbGRyZW47XG4gIGNvbnN0IHJlc29sdmVkUHJlc2V0cyA9IHBDb25uJC5nZXRDb25maWdQcm9wcygpLnByZXNldHM7XG4gIGxldCBmaWVsZHM7XG4gIGxldCB0YWJsZUNvbmZpZztcbiAgY2hpbGRyZW5JdGVyYXRvcj8uZm9yRWFjaCgocHJlc2V0TWV0YSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCB7IGNvbmZpZ0ZpZWxkcyB9ID0gZ2V0VGFibGVDb25maWdGcm9tUHJlc2V0TWV0YShcbiAgICAgIHsgLi4ucHJlc2V0TWV0YSwgbGFiZWw6IHJlc29sdmVkUHJlc2V0c1tpbmRleF0ubGFiZWwgfSxcbiAgICAgIGlzTWV0YVdpdGhQcmVzZXRzLFxuICAgICAgcENvbm4kLFxuICAgICAgY2xhc3NJRCxcbiAgICAgIHByaW1hcnlGaWVsZHMsXG4gICAgICBtZXRhRmllbGRzXG4gICAgKTtcbiAgICBjb25zdCBwdXNoVG9Db21wb25lbnRzTGlzdCA9IGZpZWxkVHlwZSA9PiB7XG4gICAgICBsaXN0T2ZDb21wb25lbnRzLnB1c2goZmllbGRUeXBlKTtcbiAgICB9O1xuICAgIC8vIHJlYWQgcmVwb3J0IGNvbHVtbnMgcmVzcG9uc2UgLSBpbiBjYXNlIG9mIG5vbnF1ZXJ5YWJsZSBpZ25vcmUgdGhlIHJlc3BvbnNlIGFuZCByZWx5IG9ubHkgb24gdGhlIGZpZWxkcyBjb25maWd1cmVkIGF0IGF1dGhvaW5nIHRpbWUgaW4gcHJlc2V0c1xuICAgIGNvbnN0IHJlcG9ydENvbHVtbnNTZXQgPSBpc1F1ZXJ5YWJsZSA/IGdldFJlcG9ydENvbHVtbnMocHJvbWlzZXNSZXNwb25zZUFycmF5WzFdKSA6IG5ldyBTZXQoKTtcblxuICAgIGNvbnN0IGNvbmZpZ0ZpZWxkU2V0ID0gcHJlcGFyZUNvbmZpZ0ZpZWxkcyhjb25maWdGaWVsZHMsIHB1c2hUb0NvbXBvbmVudHNMaXN0KTtcblxuICAgIC8vIEZJWE1FICNFbWJlZGRlZFByb3BlcnR5UGF0Y2hcbiAgICAvLyBUT0RPOiBSZW1vdmUgdGhpcyBtZXJnZSBsb2dpYyB3aGVuIHRoZSBtZXRhZGF0YSByZXNwb25zZSBpbmNsdWRlcyBhbGwgb3B0aW1pemVkIGVtYmVkZGVkIHBhZ2UgYW5kIHBhZ2VsaXN0c1xuICAgIC8vIG1lcmdpbmcgY29uZmlndXJlZCBlbWJlZGRlZCBwcm9wZXJ0aWVzIHdpdGggbWV0YWRhdGEgc28gdGhhdCB3aGlsZSBwcmVwYXJpbmcgZXh0cmEgZmllbGRzLCBjb25maWcgZmllbGRzIGNhbiBnZXQgb3RoZXIgcHJvcGVydGllcyBmcm9tIG1ldGEoZWc6IGNhdGVnb3J5LCBkaXNwbGF5QXNMaW5rKVxuICAgIC8vIGdldCBjb25maWd1cmVkIGVtYmVkZGVkIHByb3BlcnRpZXMgbWV0YWRhdGEgYW5kIGdldCBuZXcgbWVyZ2VkTWV0YUZpZWxkc1xuICAgIGNvbnN0IGNvbmZpZ0VtYmVkZGVkRmllbGRzTWV0YSA9IGdldENvbmZpZ0VtYmVkZGVkRmllbGRzTWV0YShjb25maWdGaWVsZFNldCwgY2xhc3NJRCk7XG4gICAgY29uc3QgbWVyZ2VkTWV0YUZpZWxkcyA9IG1lcmdlQ29uZmlnRW1iZWRkZWRGaWVsZHNNZXRhKGNvbmZpZ0VtYmVkZGVkRmllbGRzTWV0YSwgbWV0YUZpZWxkcyk7XG5cbiAgICBjb25zdCBleHRyYUZpZWxkcyA9IHByZXBhcmVFeHRyYUZpZWxkcyhcbiAgICAgIG1lcmdlZE1ldGFGaWVsZHMsIC8vIHBhc3NpbmcgbmV3IG1lcmdlZCBtZXRhIGZpZWxkcyB3aGljaCBoYXMgbWV0YSBvZiBjb25maWd1cmVkIGVtYmVkZGVkIGZpZWxkcyBvZiBjdXJyZW50IHByZXNldFxuICAgICAgY29uZmlnRmllbGRzLFxuICAgICAgY29uZmlnRmllbGRTZXQsXG4gICAgICByZXBvcnRDb2x1bW5zU2V0LFxuICAgICAgY2xhc3NJRCxcbiAgICAgIHNob3dEeW5hbWljRmllbGRzXG4gICAgKTtcblxuICAgIGlmIChpc1F1ZXJ5YWJsZSkge1xuICAgICAgdXBkYXRlUGFnZUZpZWxkc0NvbmZpZyhjb25maWdGaWVsZHMsIGNsYXNzSUQpO1xuICAgICAgcHJlcGFyZVByb3BlcnR5TWFwcyhbLi4uY29uZmlnRmllbGRzLCAuLi5leHRyYUZpZWxkc10sIGNsYXNzSUQsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIGNvbnN0IHsgZ2V0TWFwcGVkUHJvcGVydHkgfSA9IGNvbnRleHQ7XG5cbiAgICBmaWVsZHMgPSBpbml0aWFsaXplQ29sdW1ucyhbLi4uY29uZmlnRmllbGRzLCAuLi5leHRyYUZpZWxkc10sIGdldE1hcHBlZFByb3BlcnR5KTtcbiAgICBjb25zdCBwYXRjaFF1ZXJ5RmllbGRzID0gcHJlcGFyZVBhdGNoUXVlcnlGaWVsZHMoZmllbGRzLCBpc0RhdGFPYmplY3QsIGNsYXNzSUQpO1xuICAgIGNvbnN0IGl0ZW1LZXkgPSBnZXRJdGVtS2V5KGZpZWxkcyk7XG4gICAgdGFibGVDb25maWcgPSB7IGZpZWxkRGVmczogZmllbGRzLCBwYXRjaFF1ZXJ5RmllbGRzLCBpdGVtS2V5LCBpc1F1ZXJ5YWJsZSB9O1xuICB9KTtcbiAgY29uc3QgbWV0YSA9IHRhYmxlQ29uZmlnO1xuICBwYXJhbXMubGlzdENvbnRleHQgPSB7IG1ldGEsIHByZXNldHM6IHByZXNldEFycmF5LCBhcGlDb250ZXh0OiB7IC4uLmFwaUNvbnRleHQgfSB9O1xuICByZXR1cm4gcGFyYW1zLmxpc3RDb250ZXh0O1xufTtcbiJdfQ==
662
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvdGVtcGxhdGUvbGlzdC12aWV3L3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBS3ZELE1BQU0sY0FBYyxHQUFHLGVBQWUsQ0FBQztBQUN2QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUM7QUFDbkIsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDO0FBRXhCLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUM3QixVQUFVLEVBQUUsWUFBWTtJQUN4QixPQUFPLEVBQUUsU0FBUztJQUNsQixRQUFRLEVBQUUsVUFBVTtDQUNyQixDQUFDO0FBRUYsTUFBTSxPQUFPO0lBR1g7UUFDRSxJQUFJLENBQUMsZ0NBQWdDLEdBQUcsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxnQ0FBZ0MsR0FBRyxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsZUFBZSxDQUFDLDJCQUEyQixHQUFHLEVBQUUsRUFBRSwyQkFBMkIsR0FBRyxFQUFFO1FBQ2hGLElBQUksQ0FBQyxnQ0FBZ0MsR0FBRztZQUN0QyxHQUFHLElBQUksQ0FBQyxnQ0FBZ0M7WUFDeEMsR0FBRywyQkFBMkI7U0FDL0IsQ0FBQztRQUNGLElB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QXVCLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRixNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsV0FBVyxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDOUUsQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLElBQUksR0FBRyxXQUFXLENBQUM7SUFDekIsTUFBTSxDQUFDLFdBQVcsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxFQUFFLEdBQUcsVUFBVSxFQUFFLEVBQUUsQ0FBQztJQUNuRixPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUM7QUFDNUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0RGVmYXVsdFZpZXdNZXRhIH0gZnJvbSAnLi9EZWZhdWx0Vmlld01ldGEnO1xuXG4vLyBSZW1vdmUgdGhpcyBhbmQgdXNlIFwicmVhbFwiIFBDb3JlIHR5cGUgb25jZSAuZC50cyBpcyBmaXhlZCAoY3VycmVudGx5IHNob3dzIDUgZXJyb3JzKVxuZGVjbGFyZSBjb25zdCBQQ29yZTogYW55O1xuXG5jb25zdCBVU0VSX1JFRkVSRU5DRSA9ICdVc2VyUmVmZXJlbmNlJztcbmNvbnN0IFBBR0UgPSAnIVAhJztcbmNvbnN0IFBBR0VMSVNUID0gJyFQTCEnO1xuXG5leHBvcnQgY29uc3QgZm9ybWF0Q29uc3RhbnRzID0ge1xuICBXb3JrU3RhdHVzOiAnV29ya1N0YXR1cycsXG4gIEludGVnZXI6ICdJbnRlZ2VyJyxcbiAgV29ya0xpbms6ICdXb3JrTGluaydcbn07XG5cbmNsYXNzIERhdGFBcGkge1xuICBtYXBwZWRQcm9wZXJ0eVRvT3JpZ2luYWxQcm9wZXJ0eTogYW55O1xuICBvcmlnaW5hbFByb3BlcnR5VG9NYXBwZWRQcm9wZXJ0eTogYW55O1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm9yaWdpbmFsUHJvcGVydHlUb01hcHBlZFByb3BlcnR5ID0ge307XG4gICAgdGhpcy5tYXBwZWRQcm9wZXJ0eVRvT3JpZ2luYWxQcm9wZXJ0eSA9IHt9O1xuICAgIHRoaXMuc2V0UHJvcGVydHlNYXBzID0gdGhpcy5zZXRQcm9wZXJ0eU1hcHMuYmluZCh0aGlzKTtcbiAgICB0aGlzLmdldE1hcHBlZFByb3BlcnR5ID0gdGhpcy5nZXRNYXBwZWRQcm9wZXJ0eS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuZ2V0T3JpZ2luYWxQcm9wZXJ0eSA9IHRoaXMuZ2V0T3JpZ2luYWxQcm9wZXJ0eS5iaW5kKHRoaXMpO1xuICB9XG5cbiAgc2V0UHJvcGVydHlNYXBzKG9yaWdpbmFsVG9NYXBwZWRQcm9wZXJ0eU9iaiA9IHt9LCBtYXBwZWRUb09yaWdpbmFsUHJvcGVydHlPYmogPSB7fSkge1xuICAgIHRoaXMub3JpZ2luYWxQcm9wZXJ0eVRvTWFwcGVkUHJvcGVydHkgPSB7XG4gICAgICAuLi50aGlzLm9yaWdpbmFsUHJvcGVydHlUb01hcHBlZFByb3BlcnR5LFxuICAgICAgLi4ub3JpZ2luYWxUb01hcHBlZFByb3BlcnR5T2JqXG4gICAgfTtcbiAgICB0aGlzLm1hcHBlZFByb3BlcnR5VG9PcmlnaW5hbFByb3BlcnR5ID0ge1xuICAgICAgLi4udGhpcy5tYXBwZWRQcm9wZXJ0eVRvT3JpZ2luYWxQcm9wZXJ0eSxcbiAgICAgIC4uLm1hcHBlZFRvT3JpZ2luYWxQcm9wZXJ0eU9ialxuICAgIH07XG4gIH1cblxuICBnZXRNYXBwZWRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5vcmlnaW5hbFByb3BlcnR5VG9NYXBwZWRQcm9wZXJ0eVtwcm9wZXJ0eU5hbWVdID8/IHByb3BlcnR5TmFtZTtcbiAgfVxuXG4gIGdldE9yaWdpbmFsUHJvcGVydHkocHJvcGVydHlOYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwcGVkUHJvcGVydHlUb09yaWdpbmFsUHJvcGVydHlbcHJvcGVydHlOYW1lXSA/PyBwcm9wZXJ0eU5hbWU7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldENvbnRleHQoY29tcG9uZW50Q29uZmlnKSB7XG4gIGNvbnN0IHtcbiAgICBwcm9taXNlc0FycmF5ID0gW10gLy8gYXJyYXkgb2YgcHJvbWlzZXMgd2hpY2ggY2FuIGJlIGludm9rZWQgcGFyYWxlbGx5LFxuICB9ID0gY29tcG9uZW50Q29uZmlnO1xuICBjb25zdCBwcm9taXNlc1Jlc3BvbnNlQXJyYXkgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlc0FycmF5KTtcbiAgY29uc3QgZGF0YUFwaSA9IG5ldyBEYXRhQXBpKCk7XG4gIHJldHVybiB7XG4gICAgcHJvbWlzZXNSZXNwb25zZUFycmF5LFxuICAgIHNldFByb3BlcnR5TWFwczogZGF0YUFwaS5zZXRQcm9wZXJ0eU1hcHMsXG4gICAgZ2V0TWFwcGVkUHJvcGVydHk6IGRhdGFBcGkuZ2V0TWFwcGVkUHJvcGVydHksXG4gICAgZ2V0T3JpZ2luYWxQcm9wZXJ0eTogZGF0YUFwaS5nZXRPcmlnaW5hbFByb3BlcnR5XG4gIH07XG59XG5cbi8qKlxuICogW2dldEZpZWxkTmFtZUZyb21FbWJlZGRlZEZpZWxkTmFtZV1cbiAqIERlc2NyaXB0aW9uICAgIC0gICAgICAgICAgICAgICBjb252ZXJ0aW5nIGVtYmVkZGVkRmllbGQgbmFtZSBzdGFydGluZyB3aXRoICFQISBvciAhUEwhIHRvIG5vcm1hbCBmaWVsZFxuICogQGlnbm9yZVxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5TmFtZSAgIEVtYmVkZGVkRmllbGQgbmFtZSBzdGFydGluZyB3aXRoICFQISBvciAhUEwhXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAgICAgICAgICAgICAgcmV0dXJucyBjb252ZXJ0ZWQgc3RyaW5nIHdpdGhvdXQgIVAhIG9yICFQTCEgYW5kIDpcbiAqXG4gKiBAZXhhbXBsZSA8Y2FwdGlvbj5FeGFtcGxlIGZvciBnZXRGaWVsZE5hbWVGcm9tRW1iZWRkZWRGaWVsZE5hbWUgPC9jYXB0aW9uPlxuICogZ2V0RmllbGROYW1lRnJvbUVtYmVkZGVkRmllbGROYW1lKCchUCFPcmdhbmlzYXRpb246TmFtZScpIHJldHVybiAnT3JnYW5pc2F0aW9uLk5hbWUnXG4gKiBnZXRGaWVsZE5hbWVGcm9tRW1iZWRkZWRGaWVsZE5hbWUoJyFQTCFFbXBsb3llZXM6TmFtZScpIHJldHVybiAnRW1wbG95ZWVzLk5hbWUnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWVsZE5hbWVGcm9tRW1iZWRkZWRGaWVsZE5hbWUocHJvcGVydHlOYW1lKSB7XG4gIGxldCB2YWx1ZSA9IHByb3BlcnR5TmFtZTtcbiAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoUEFHRSkgfHwgdmFsdWUuc3RhcnRzV2l0aChQQUdFTElTVCkpIHtcbiAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZyh2YWx1ZS5sYXN0SW5kZXhPZignIScpICsgMSk7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC86L2csICcuJyk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vKipcbiAqIFt1cGRhdGVNZXRhRW1iZWRkZWRGaWVsZElEXVxuICogRGVzY3JpcHRpb24gICAgLSAgICAgICAgICAgSWYgdGhlIGZpZWxkSUQgaW4gbWV0YSBzdGFydHMgd2l0aCAnIVAhJyBvciAnIVBMIScgYW5kIGNvbnRhaW5zICc6JyB0aGVuIHJlcGxhY2UgdGhlbSB3aXRoIC4oZG90KVxuICogQGlnbm9yZVxuICogQHBhcmFtIHtBcnJheX0gbWV0YUZpZWxkcyAgRmllbGRzIG1ldGFkYXRhIEFycmF5LiBDb250YWlucyBtZXRhZGF0YSBvZiBhbGwgdGhlIGZpZWxkcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZU1ldGFFbWJlZGRlZEZpZWxkSUQobWV0YUZpZWxkcykge1xuICByZXR1cm4gbWV0YUZpZWxkcy5mb3JFYWNoKG1ldGFGaWVsZCA9PiB7XG4gICAgaWYgKG1ldGFGaWVsZC5maWVsZElEPy5zdGFydHNXaXRoKFBBR0UpIHx8IG1ldGFGaWVsZC5maWVsZElEPy5zdGFydHNXaXRoKFBBR0VMSVNUKSkge1xuICAgICAgbWV0YUZpZWxkLmZpZWxkSUQgPSBnZXRGaWVsZE5hbWVGcm9tRW1iZWRkZWRGaWVsZE5hbWUobWV0YUZpZWxkLmZpZWxkSUQpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBjb25zdCBpc0VtYmVkZGVkRmllbGQgPSBmaWVsZCA9PiB7XG4gIGlmIChmaWVsZD8uc3RhcnRzV2l0aCgnQCcpKSB7XG4gICAgZmllbGQgPSBmaWVsZC5zdWJzdHJpbmcoZmllbGQuaW5kZXhPZignICcpICsgMSk7XG4gICAgaWYgKGZpZWxkWzBdID09PSAnLicpIGZpZWxkID0gZmllbGQuc3Vic3RyaW5nKDEpO1xuICB9XG4gIHJldHVybiBmaWVsZD8uaW5kZXhPZignLicpID4gMDtcbn07XG5cbi8qKlxuICogW2lzUGFnZUxpc3RQcm9wZXJ0eV1cbiAqIERlc2NyaXB0aW9uICAgIC0gICAgICAgIGNoZWNraW5nIGlmIHByb3BlcnR5TmFtZSBpcyBwYWdlTGlzdCBvciBub3RcbiAqIEBpZ25vcmVcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eU5hbWUgICBQcm9wZXJ0eU5hbWVcbiAqIEByZXR1cm5zIHtib29sZWFufSAgdHJ1ZSBpZiBwcm9wZXJ0eSBpcyBwYWdlTGlzdCBlbHNlIGZhbHNlXG4gKlxuICogQGV4YW1wbGUgPGNhcHRpb24+RXhhbXBsZSBmb3IgaXNQYWdlTGlzdFByb3BlcnR5IDwvY2FwdGlvbj5cbiAqIGlzUGFnZUxpc3RQcm9wZXJ0eSgnIVBMIUVtcGxveWVlcy5OYW1lJykgcmV0dXJuIHRydWVcbiAqIGlzUGFnZUxpc3RQcm9wZXJ0eSgnIVAhRW1wbG95ZWVzLk5hbWUnKSByZXR1cm4gZmFsc2VcbiAqIGlzUGFnZUxpc3RQcm9wZXJ0eSgnTmFtZScpIHJldHVybiBmYWxzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQYWdlTGlzdFByb3BlcnR5KHByb3BlcnR5TmFtZSkge1xuICByZXR1cm4gcHJvcGVydHlOYW1lLnN0YXJ0c1dpdGgoUEFHRUxJU1QpO1xufVxuXG5leHBvcnQgY29uc3QgaXNQYWdlTGlzdEluUGF0aCA9IChwcm9wZXJ0eU5hbWUsIGN1cnJlbnRDbGFzc0lEKSA9PiB7XG4gIGlmICghcHJvcGVydHlOYW1lLmluY2x1ZGVzKCcuJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgW2ZpcnN0LCAuLi5yZXN0XSA9IHByb3BlcnR5TmFtZS5zcGxpdCgnLicpO1xuICBjb25zdCBtZXRhZGF0YSA9IFBDb3JlLmdldE1ldGFkYXRhVXRpbHMoKS5nZXRQcm9wZXJ0eU1ldGFkYXRhKGZpcnN0LCBjdXJyZW50Q2xhc3NJRCk7XG4gIGlmIChtZXRhZGF0YT8udHlwZSA9PT0gJ1BhZ2UgTGlzdCcpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gaXNQYWdlTGlzdEluUGF0aChyZXN0LmpvaW4oJy4nKSwgbWV0YWRhdGE/LnBhZ2VDbGFzcyk7XG59O1xuXG4vKipcbiAqIFtnZXRFbWJlZGRlZEZpZWxkTmFtZV1cbiAqIERlc2NyaXB0aW9uICAgIC0gICAgICAgICAgICAgICBjb252ZXJ0aW5nIG5vcm1hbCBmaWVsZCBuYW1lIHRvIGVtYmVkZGVkIGZpZWxkIHN0YXJ0aW5nIHdpdGggIVAhIG9yICFQTCFcbiAqIEBpZ25vcmVcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eU5hbWUgICBGaWVsZCBuYW1lXG4gKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NJRCAgICAgICAgY2xhc3NJRCBvZiBkYXRhcGFnZVxuICogQHJldHVybnMge3N0cmluZ30gICAgICAgICAgICAgIHJldHVybnMgY29udmVydGVkIHN0cmluZyB3aXRoICFQISBvciAhUEwhIGFuZCA6XG4gKlxuICogQGV4YW1wbGUgPGNhcHRpb24+RXhhbXBsZSBmb3IgZ2V0RW1iZWRkZWRGaWVsZE5hbWUgPC9jYXB0aW9uPlxuICogRm9yIHBhZ2UgcHJvcGVydHksIGdldEVtYmVkZGVkRmllbGROYW1lKCdPcmdhbmlzYXRpb24uTmFtZScpIHJldHVybiAnIVAhT3JnYW5pc2F0aW9uOk5hbWUnXG4gKiBGb3IgcGFnZUxpc3QgcHJvcGVydHksIGdldEVtYmVkZGVkRmllbGROYW1lKCdFbXBsb3llZXMuTmFtZScpIHJldHVybiAnIVBMIUVtcGxveWVlczpOYW1lJ1xuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbWJlZGRlZEZpZWxkTmFtZShwcm9wZXJ0eU5hbWUsIGNsYXNzSUQpIHtcbiAgbGV0IHZhbHVlID0gcHJvcGVydHlOYW1lO1xuICBpZiAoaXNQYWdlTGlzdEluUGF0aCh2YWx1ZSwgY2xhc3NJRCkpIHtcbiAgICB2YWx1ZSA9IGAhUEwhJHt2YWx1ZS5yZXBsYWNlKC9cXC4vZywgJzonKX1gO1xuICB9IGVsc2Uge1xuICAgIHZhbHVlID0gYCFQISR7dmFsdWUucmVwbGFjZSgvXFwuL2csICc6Jyl9YDtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbi8qKlxuICogW3ByZXBhcmVQcm9wZXJ0eU1hcHNdXG4gKiBEZXNjcmlwdGlvbiAgICAtICAgICAgICBwcmVwYXJpbmcgbWFwcyBmb3IgcHJvcGVydHkgbmFtZXMgYW5kIHNldCBpdCBpbiBkYXRhQXBpIGNvbnRleHRcbiAqIEBpZ25vcmVcbiAqIEBwYXJhbSB7QXJyYXl9IGZpZWxkcyAgIGZpZWxkcyBhcnJheVxuICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzSUQgIGNsYXNzSUQgb2YgZGF0YXBhZ2VcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZXh0ICBkYXRhQXBpIGNvbnRleHRcbiAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHBhZ2VMaXN0UHJvcGVydHkgaXMgcHJlc2VudFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZVByb3BlcnR5TWFwcyhmaWVsZHMsIGNsYXNzSUQsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBzZXRQcm9wZXJ0eU1hcHMgfSA9IGNvbnRleHQ7XG4gIGNvbnN0IG1hcHMgPSBmaWVsZHMucmVkdWNlKFxuICAgIChhY2MsIGZpZWxkKSA9PiB7XG4gICAgICBsZXQgeyB2YWx1ZSB9ID0gZmllbGQuY29uZmlnO1xuICAgICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJ0AnKSkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZyh2YWx1ZS5pbmRleE9mKCcgJykgKyAxKTtcbiAgICAgICAgaWYgKHZhbHVlWzBdID09PSAnLicpIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDEpO1xuICAgICAgfVxuICAgICAgbGV0IG5hbWUgPSB2YWx1ZTtcbiAgICAgIC8vIFByZXBhcmluZyBuYW1lIGZvciBlbWJlZGRlZCBwcm9wZXJ0eVxuICAgICAgaWYgKGlzRW1iZWRkZWRGaWVsZChuYW1lKSkge1xuICAgICAgICBuYW1lID0gZ2V0RW1iZWRkZWRGaWVsZE5hbWUobmFtZSwgY2xhc3NJRCk7XG4gICAgICB9XG4gICAgICBpZiAoaXNQYWdlTGlzdFByb3BlcnR5KG5hbWUpICYmICFhY2NbMl0pIHtcbiAgICAgICAgYWNjWzJdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGFjY1swXVt2YWx1ZV0gPSBuYW1lO1xuICAgICAgYWNjWzFdW25hbWVdID0gdmFsdWU7XG5cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSxcbiAgICBbe30sIHt9LCBmYWxzZV1cbiAgKTtcbiAgc2V0UHJvcGVydHlNYXBzKG1hcHNbMF0sIG1hcHNbMV0pO1xuICByZXR1cm4gbWFwc1syXTtcbn1cblxuLyoqXG4gKiBbZ2V0Q29uZmlnRW1iZWRkZWRGaWVsZHNNZXRhXVxuICogRGVzY3JpcHRpb24gICAgLSAgICAgICAgICAgR2V0IHRoZSBtZXRhZGF0YSBmb3IgY29uZmlndXJlZCBlbWJlZGRlZCBmaWVsZHNcbiAqIEBpZ25vcmVcbiAqIEBwYXJhbSB7U2V0fSBjb25maWdGaWVsZHMgIFNldCBvZiBjb25maWcgZmllbGRzXG4gKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NJRCAgICBjbGFzSUQgb2YgZGF0YXBhZ2VcbiAqIEByZXR1cm5zIHtBcnJheX0gICAgICAgICAgIE1ldGFkYXRhIG9mIGNvbmZpZ3VyZWQgZW1iZWRkZWQgZmllbGRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWdFbWJlZGRlZEZpZWxkc01ldGEoY29uZmlnRmllbGRzLCBjbGFzc0lEKSB7XG4gIGNvbnN0IGNvbmZpZ0VtYmVkZGVkRmllbGRzTWV0YTogYW55W10gPSBbXTtcbiAgY29uZmlnRmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgIGxldCB2YWx1ZSA9IGZpZWxkO1xuICAgIGlmIChpc0VtYmVkZGVkRmllbGQodmFsdWUpKSB7XG4gICAgICAvLyBjb252ZXJzaW9uIFBhZ2UuUGFnZUxpc3RbXS5wcm9wZXJ0eSA9PiBQYWdlLlBhZ2VMaXN0LnByb3BlcnR5XG4gICAgICBpZiAodmFsdWUuaW5jbHVkZXMoJ1snKSkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCB2YWx1ZS5pbmRleE9mKCdbJykpICsgdmFsdWUuc3Vic3RyaW5nKHZhbHVlLmluZGV4T2YoJ10nKSArIDEpO1xuICAgICAgfVxuICAgICAgY29uc3QgbWV0YSA9IFBDb3JlLmdldE1ldGFkYXRhVXRpbHMoKS5nZXRFbWJlZGRlZFByb3BlcnR5TWV0YWRhdGEodmFsdWUsIGNsYXNzSUQpO1xuICAgICAgbWV0YS5maWVsZElEID0gZmllbGQ7XG4gICAgICBjb25maWdFbWJlZGRlZEZpZWxkc01ldGEucHVzaChtZXRhKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY29uZmlnRW1iZWRkZWRGaWVsZHNNZXRhO1xufVxuXG4vKipcbiAqIFttZXJnZUNvbmZpZ0VtYmVkZGVkRmllbGRzTWV0YV1cbiAqIERlc2NyaXB0aW9uICAgIC0gICAgICAgICAgIEdldCB0aGUgbWV0YWRhdGEgZm9yIGNvbmZpZ3VyZWQgZW1iZWRkZWQgZmllbGRzXG4gKiBAaWdub3JlXG4gKiBAcGFyYW0ge0FycmF5fSBjb25maWdFbWJlZGRlZEZpZWxkc01ldGEgIGNvbmZpZyBmaWVsZHMgbWV0YWRhdGEuXG4gKiBAcGFyYW0ge0FycmF5fSBtZXRhRmllbGRzICBGaWVsZHMgbWV0YWRhdGEgQXJyYXkuIENvbnRhaW5zIG1ldGFkYXRhIG9mIGFsbCB0aGUgZmllbGRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUNvbmZpZ0VtYmVkZGVkRmllbGRzTWV0YShjb25maWdFbWJlZGRlZEZpZWxkc01ldGEsIG1ldGFGaWVsZHMpIHtcbiAgY29uc3QgbWVyZ2VkTWV0YUZpZWxkcyA9IFsuLi5tZXRhRmllbGRzXTtcbiAgY29uZmlnRW1iZWRkZWRGaWVsZHNNZXRhLmZvckVhY2goY29uZmlnRmllbGRNZXRhID0+IHtcbiAgICBjb25zdCBmaWVsZE1ldGEgPSBtZXRhRmllbGRzLmZpbmQobWV0YUZpZWxkID0+IG1ldGFGaWVsZC5maWVsZElEID09PSBjb25maWdGaWVsZE1ldGEuZmllbGRJRCk7XG4gICAgaWYgKCFmaWVsZE1ldGEpIG1lcmdlZE1ldGFGaWVsZHMucHVzaChjb25maWdGaWVsZE1ldGEpO1xuICB9KTtcbiAgcmV0dXJuIG1lcmdlZE1ldGFGaWVsZHM7XG59XG5cbmNvbnN0IG9sZFRvTmV3RmllbGRUeXBlTWFwcGluZyA9IHtcbiAgJ0RhdGUgVGltZSc6ICdEYXRlICYgdGltZScsXG4gIERhdGU6ICdEYXRlIG9ubHknXG59O1xuXG4vKipcbiAqIFt1cGRhdGVGaWVsZFR5cGVdXG4gKiBEZXNjcmlwdGlvbiAgICAtICAgICAgICAgICBVcGRhdGVzIHRoZSBmaWVsZCB0eXBlIGlmIGl0cyBjaGFuZ2VkIGluIHRoZSBuZXcgaW1wbGVtZW50YXRpb24uIFN1Y2ggbWFwcGluZyBpcyBtYWludGFpbmVkIGluIG9sZFRvTmV3RmllbGRUeXBlTWFwcGluZy5cbiAqIEBpZ25vcmVcbiAqIEBwYXJhbSB7QXJyYXl9IG1ldGFGaWVsZHMgIEZpZWxkcyBtZXRhZGF0YSBBcnJheS4gQ29udGFpbnMgbWV0YWRhdGEgb2YgYWxsIHRoZSBmaWVsZHMuXG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZUZpZWxkVHlwZShtZXRhRmllbGRzKSB7XG4gIG1ldGFGaWVsZHMuZm9yRWFjaChtZXRhRmllbGQgPT4ge1xuICAgIGlmIChtZXRhRmllbGQudHlwZSkgbWV0YUZpZWxkLnR5cGUgPSBvbGRUb05ld0ZpZWxkVHlwZU1hcHBpbmdbbWV0YUZpZWxkLnR5cGVdIHx8IG1ldGFGaWVsZC50eXBlO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0UHJlc2V0TWV0YUF0dHJpYnV0ZShhdHRyaWJ1dGUpIHtcbiAgY29uc3Qge1xuICAgIHR5cGUsXG4gICAgY29uZmlnOiB7IGxhYmVsLCB2YWx1ZSB9XG4gIH0gPSBhdHRyaWJ1dGU7XG4gIHJldHVybiB7XG4gICAgdHlwZSxcbiAgICBuYW1lOiB2YWx1ZS5zdGFydHNXaXRoKCdAJykgPyB2YWx1ZS5zdWJzdHJpbmcoNCkgOiB2YWx1ZSxcbiAgICBsYWJlbDogbGFiZWwuc3RhcnRzV2l0aCgnQCcpID8gbGFiZWwuc3Vic3RyaW5nKDMpIDogbGFiZWxcbiAgfTtcbn1cblxuLyoqXG4gKiBbZ2VuZXJhdGVWaWV3TWV0YURhdGFdXG4gKiBEZXNjcmlwdGlvbiAtIFJldHVybnMgYSBsaXN0IG9mICBtZXRhb2JqZWN0cyBvZiB0aGUgZmllbGRzIHByb3ZpZGVkLlxuICogQGlnbm9yZVxuICogQHBhcmFtICAge0FycmF5fSAgIHJhd0ZpZWxkcyAgICAgICAgIExpc3Qgb2YgZmllbGRzIHRvIHVwZGF0ZSBtZXRhIGZvclxuICogQHBhcmFtICAge3N0cmluZ30gIGNsYXNzSUQgICAgICAgICAgQ2xhc3MgSUQgZnJvbSB0aGUgcmVzcG9uc2VcbiAqIEByZXR1cm5zIHtBcnJheX0gICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgZmllbGRzIHdpdGggdXBkYXRlZCBtZXRhIG9iamVjdHMuXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlVmlld01ldGFEYXRhKHJhd0ZpZWxkcywgY2xhc3NJRCwgc2hvd0ZpZWxkKSB7XG4gIHJldHVybiByYXdGaWVsZHMubWFwKGl0ZW0gPT4gZ2V0RGVmYXVsdFZpZXdNZXRhKGl0ZW0sIGNsYXNzSUQsIHNob3dGaWVsZCkpO1xufVxuXG4vKipcbiAqIFtnZXRDb25maWdGaWVsZHNdXG4gKiBEZXNjcmlwdGlvbiAtIFJldHVybnMgbGlzdCBvZiBjb25maWcgZmllbGRzIHdpdGggcHJpbWFyeSBmaWVsZHMgbWV0YSB1cGRhdGVkLlxuICogQGlnbm9yZVxuICogQHBhcmFtICAge0FycmF5fSAgIGNvbmZpZ0ZpZWxkcyAgICAgIExpc3Qgb2YgQXV0aG9yZWQgZmllbGRzXG4gKiBAcGFyYW0gICB7QXJyYXl9ICAgcHJpbWFyeUZpZWxkcyAgICAgTGlzdCBvZiBQcmltYXJ5IEZpZWxkc1xuICogQHBhcmFtICAge0FycmF5fSAgIG1ldGFGaWVsZHMgICAgICAgIE1ldGFkYXRhIG9mIGFsbCBmaWVsZHNcbiAqIEBwYXJhbSAgIHtzdHJpbmd9ICBjbGFzc0lEICAgICAgICAgICBDbGFzcyBJRCBmcm9tIHRoZSByZXNwb25zZVxuICogQHJldHVybnMge0FycmF5fSAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgYWxsIGZpZWxkcyB3aXRoIHRoZWlyIG1ldGEgdXBkYXRlZC5cbiAqL1xuZnVuY3Rpb24gZ2V0Q29uZmlnRmllbGRzKGNvbmZpZ0ZpZWxkcywgcHJpbWFyeUZpZWxkcywgbWV0YUZpZWxkcywgY2xhc3NJRCkge1xuICBjb25zdCBwcmVzZXRDb25maWdGaWVsZHMgPSBjb25maWdGaWVsZHM7XG4gIGNvbnN0IHByaW1hcnlGaWVsZHNWaWV3SW5kZXggPSBwcmVzZXRDb25maWdGaWVsZHMuZmluZEluZGV4KGZpZWxkID0+IGZpZWxkLmNvbmZpZy52YWx1ZSA9PT0gJ3B5UHJpbWFyeUZpZWxkcycpO1xuICBpZiAoIXByaW1hcnlGaWVsZHMgfHwgIXByaW1hcnlGaWVsZHMubGVuZ3RoKSB7XG4gICAgaWYgKHByaW1hcnlGaWVsZHNWaWV3SW5kZXggPCAwKSByZXR1cm4gcHJlc2V0Q29uZmlnRmllbGRzO1xuXG4gICAgcHJlc2V0Q29uZmlnRmllbGRzLnNwbGljZShwcmltYXJ5RmllbGRzVmlld0luZGV4LCAxKTtcblxuICAgIHJldHVybiBwcmVzZXRDb25maWdGaWVsZHM7XG4gIH1cblxuICBpZiAocHJpbWFyeUZpZWxkc1ZpZXdJbmRleCA+IC0xKSB7XG4gICAgLy8gbGlzdCBvZiB1bmNvbW1vbiBmaWVsZHMgLSBub24gb3ZlcmxhcCBvZiBwcmltYXJ5IGZpZWxkcyBncm91cGVkIHZpZXcgYW5kIGluZGVwZW5kZW50IGVudGl0eSBjb2x1bW5zIG9mIHByaW1hcnkgdHlwZVxuICAgIGNvbnN0IHVuY29tbW9uRmllbGRzTGlzdCA9IHByaW1hcnlGaWVsZHMuZmlsdGVyKFxuICAgICAgcHJpbWFyeUZpZWxkID0+ICFwcmVzZXRDb25maWdGaWVsZHMuc29tZShwcmVzZXRDb25maWdGaWVsZCA9PiBwcmVzZXRDb25maWdGaWVsZC5jb25maWcudmFsdWUuc3BsaXQoJy4nKVsxXSA9PT0gcHJpbWFyeUZpZWxkKVxuICAgICk7XG4gICAgY29uc3QgdW5jb21tb25GaWVsZHNSYXdNZXRhOiBhbnlbXSA9IFtdO1xuICAgIHVuY29tbW9uRmllbGRzTGlzdC5mb3JFYWNoKHVuY29tbW9uRmllbGQgPT4ge1xuICAgICAgY29uc3QgdW5jb21tb25GaWVsZE1ldGEgPSBtZXRhRmllbGRzLmZpbmQobWV0YUZpZWxkID0+IG1ldGFGaWVsZC5maWVsZElEID09PSB1bmNvbW1vbkZpZWxkKTtcbiAgICAgIGlmICh1bmNvbW1vbkZpZWxkTWV0YSkgdW5jb21tb25GaWVsZHNSYXdNZXRhLnB1c2godW5jb21tb25GaWVsZE1ldGEpO1xuICAgIH0pO1xuICAgIGNvbnN0IHVuY29tbW9uRmllbGRzQ29uZmlnTWV0YSA9IGdlbmVyYXRlVmlld01ldGFEYXRhKHVuY29tbW9uRmllbGRzUmF3TWV0YSwgY2xhc3NJRCwgdHJ1ZSk7XG5cbiAgICBwcmVzZXRDb25maWdGaWVsZHMuc3BsaWNlKHByaW1hcnlGaWVsZHNWaWV3SW5kZXgsIDEsIC4uLnVuY29tbW9uRmllbGRzQ29uZmlnTWV0YSk7XG4gIH1cbiAgcmV0dXJuIHByZXNldENvbmZpZ0ZpZWxkcztcbn1cblxuLyoqXG4gKiBbZ2V0VGFibGVDb25maWdGcm9tUHJlc2V0TWV0YV1cbiAqIERlc2NyaXB0aW9uIC0gR2V0IHRoZSB0YWJsZSBjb25maWcgZnJvbSB0aGUgcHJlc2V0cyBtZXRhLlxuICogQGlnbm9yZVxuICogQHBhcmFtICAge29iamVjdH0gICAgcHJlc2V0TWV0YSAgICAgICAgICBQcmVzZXRzIG1ldGFcbiAqIEBwYXJhbSAgIHtib29sZWFufSAgIGlzTWV0YVdpdGhQcmVzZXRzICAgdHJ1ZSBpZiBtZXRhIGhhcyBwcmVzZXRzIGVsc2UgZmFsc2VcbiAqIEBwYXJhbSAgIHtGdW5jdGlvbn0gIGdldFBDb25uZWN0ICAgICAgICAgQ2FsbGJhY2sgdG8gZ2V0IHRoZSBQQ29ubmVjdCBvYmplY3RcbiAqIEBwYXJhbSAgIHtzdHJpbmd9ICAgIGNsYXNzSUQgICAgICAgICAgICAgQ2xhc3MgSUQgZnJvbSB0aGUgcmVzcG9uc2VcbiAqIEBwYXJhbSAgIHtBcnJheX0gICAgIHByaW1hcnlGaWVsZHMgICAgICAgTGlzdCBvZiBQcmltYXJ5IEZpZWxkc1xuICogQHBhcmFtICAge0FycmF5fSAgICAgbWV0YUZpZWxkcyAgICAgICAgICBMaXN0IG9mIGFsbCBtZXRhZmllbGRzXG4gKiBAcmV0dXJucyB7b2JqZWN0fSAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlIGNvbmZpZyBvYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRhYmxlQ29uZmlnRnJvbVByZXNldE1ldGEocHJlc2V0TWV0YSwgaXNNZXRhV2l0aFByZXNldHMsIHBDb25uJCwgY2xhc3NJRCwgcHJpbWFyeUZpZWxkcywgbWV0YUZpZWxkcykge1xuICBsZXQgcHJlc2V0SWQ7XG4gIGxldCBwcmVzZXROYW1lO1xuICBsZXQgY2FyZEhlYWRlcjtcbiAgbGV0IHNlY29uZGFyeVRleHQ7XG4gIGxldCB0aW1lbGluZURhdGU7XG4gIGxldCB0aW1lbGluZVRpdGxlO1xuICBsZXQgdGltZWxpbmVTdGF0dXM7XG4gIGxldCB0aW1lbGluZUljb247XG4gIGxldCB7IGZpbHRlckV4cHJlc3Npb24gfSA9IHBDb25uJC5nZXRSYXdNZXRhZGF0YSgpLmNvbmZpZztcbiAgbGV0IGZpZWxkc01ldGE7XG4gIGxldCBjb25maWdGaWVsZHM7XG4gIGlmIChpc01ldGFXaXRoUHJlc2V0cykge1xuICAgIHByZXNldElkID0gcHJlc2V0TWV0YS5pZDtcbiAgICBwcmVzZXROYW1lID0gcHJlc2V0TWV0YS5sYWJlbDtcbiAgICBjYXJkSGVhZGVyID0gcHJlc2V0TWV0YS5jYXJkSGVhZGVyICYmIGdldFByZXNldE1ldGFBdHRyaWJ1dGUocHJlc2V0TWV0YS5jYXJkSGVhZGVyKTtcbiAgICBzZWNvbmRhcnlUZXh0ID0gcHJlc2V0TWV0YS5zZWNvbmRhcnlUZXh0ICYmIGdldFByZXNldE1ldGFBdHRyaWJ1dGUocHJlc2V0TWV0YS5zZWNvbmRhcnlUZXh0KTtcbiAgICB0aW1lbGluZURhdGUgPSBwcmVzZXRNZXRhLnRpbWVsaW5lRGF0ZSAmJiBnZXRQcmVzZXRNZXRhQXR0cmlidXRlKHByZXNldE1ldGEudGltZWxpbmVEYXRlKTtcbiAgICB0aW1lbGluZVRpdGxlID0gcHJlc2V0TWV0YS50aW1lbGluZVRpdGxlICYmIGdldFByZXNldE1ldGFBdHRyaWJ1dGUocHJlc2V0TWV0YS50aW1lbGluZVRpdGxlKTtcbiAgICB0aW1lbGluZVN0YXR1cyA9IHByZXNldE1ldGEudGltZWxpbmVTdGF0dXMgJiYgZ2V0UHJlc2V0TWV0YUF0dHJpYnV0ZShwcmVzZXRNZXRhLnRpbWVsaW5lU3RhdHVzKTtcbiAgICB0aW1lbGluZUljb24gPSBwcmVzZXRNZXRhLnRpbWVsaW5lSWNvbiAmJiBnZXRQcmVzZXRNZXRhQXR0cmlidXRlKHByZXNldE1ldGEudGltZWxpbmVJY29uKTtcbiAgICBmaWx0ZXJFeHByZXNzaW9uID0gcHJlc2V0TWV0YS5jb25maWcuZmlsdGVyRXhwcmVzc2lvbjtcbiAgICBbZmllbGRzTWV0YV0gPSBwcmVzZXRNZXRhLmNoaWxkcmVuO1xuICAgIGlmIChcbiAgICAgIHByZXNldE1ldGEudGltZWxpbmVUaXRsZSAmJlxuICAgICAgIWZpZWxkc01ldGEuY2hpbGRyZW4uZmluZChmaWVsZE1ldGEgPT4ge1xuICAgICAgICByZXR1cm4gZmllbGRNZXRhPy5jb25maWc/LnZhbHVlID09PSBwcmVzZXRNZXRhLnRpbWVsaW5lVGl0bGU/LmNvbmZpZz8udmFsdWU7XG4gICAgICB9KVxuICAgICkge1xuICAgICAgY29uc3QgeyB0eXBlLCBjb25maWcgfSA9IHByZXNldE1ldGEudGltZWxpbmVUaXRsZTtcbiAgICAgIGZpZWxkc01ldGEuY2hpbGRyZW4ucHVzaCh7IHR5cGUsIGNvbmZpZzogeyAuLi5jb25maWcsIHNob3c6IGZhbHNlIH0gfSk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHByZXNldE1ldGEudGltZWxpbmVEYXRlICYmXG4gICAgICAhZmllbGRzTWV0YS5jaGlsZHJlbi5maW5kKGZpZWxkTWV0YSA9PiB7XG4gICAgICAgIHJldHVybiBmaWVsZE1ldGE/LmNvbmZpZz8udmFsdWUgPT09IHByZXNldE1ldGEudGltZWxpbmVEYXRlPy5jb25maWc/LnZhbHVlO1xuICAgICAgfSlcbiAgICApIHtcbiAgICAgIGNvbnN0IHsgdHlwZSwgY29uZmlnIH0gPSBwcmVzZXRNZXRhLnRpbWVsaW5lRGF0ZTtcbiAgICAgIGZpZWxkc01ldGEuY2hpbGRyZW4ucHVzaCh7IHR5cGUsIGNvbmZpZzogeyAuLi5jb25maWcsIHNob3c6IGZhbHNlIH0gfSk7XG4gICAgfVxuICAgIGNvbmZpZ0ZpZWxkcyA9IGdldENvbmZpZ0ZpZWxkcyhmaWVsZHNNZXRhLmNoaWxkcmVuLCBwcmltYXJ5RmllbGRzLCBtZXRhRmllbGRzLCBjbGFzc0lEKTtcbiAgfSBlbHNlIHtcbiAgICBmaWVsZHNNZXRhID0gcHJlc2V0TWV0YS5wcm9wcztcbiAgICBjb25maWdGaWVsZHMgPSBnZXRDb25maWdGaWVsZHMoXG4gICAgICBmaWVsZHNNZXRhXG4gICAgICAgIC5nZXRQQ29ubmVjdCgpXG4gICAgICAgIC5nZXRDaGlsZHJlbigpXG4gICAgICAgID8ubWFwKGNoaWxkID0+IHtcbiAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0UENvbm5lY3QoKS5nZXRSYXdNZXRhZGF0YSgpO1xuICAgICAgICB9KSxcbiAgICAgIHByaW1hcnlGaWVsZHMsXG4gICAgICBtZXRhRmllbGRzLFxuICAgICAgY2xhc3NJRFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBwcmVzZXRJZCxcbiAgICBwcmVzZXROYW1lLFxuICAgIGNhcmRIZWFkZXIsXG4gICAgc2Vjb25kYXJ5VGV4dCxcbiAgICB0aW1lbGluZURhdGUsXG4gICAgdGltZWxpbmVUaXRsZSxcbiAgICB0aW1lbGluZVN0YXR1cyxcbiAgICB0aW1lbGluZUljb24sXG4gICAgZmlsdGVyRXhwcmVzc2lvbixcbiAgICBmaWVsZHNNZXRhLFxuICAgIGNvbmZpZ0ZpZWxkc1xuICB9O1xufVxuXG4vKipcbiAqIFtnZXRSZXBvcnRDb2x1bW5zXVxuICogRGVzY3JpcHRpb24gLSBSZXR1cm5zIGEgc2V0IG9mIGNvbHVtbnMgZnJvbSB0aGUgcmVwb3J0IHJlc3BvbnNlLlxuICogQGlnbm9yZVxuICogQHBhcmFtICAge29iamVjdH0gcmVzcG9uc2UgLVxuICogQHJldHVybnMge1NldH0gU2V0IG9mIGNvbHVtbnMgZnJvbSB0aGUgcmVwb3J0IHJlc3BvbnNlXG4gKi9cbmZ1bmN0aW9uIGdldFJlcG9ydENvbHVtbnMocmVzcG9uc2UpIHtcbiAgY29uc3Qge1xuICAgIGRhdGE6IHsgZGF0YTogcmVwb3J0Q29sdW1ucyB9XG4gIH0gPSByZXNwb25zZTtcbiAgY29uc3QgcmVwb3J0Q29sdW1uc1NldCA9IG5ldyBTZXQoKTtcbiAgcmVwb3J0Q29sdW1ucz8uZm9yRWFjaChpdGVtID0+IHtcbiAgICBsZXQgdmFsID0gaXRlbS5weUZpZWxkTmFtZTtcbiAgICAvLyBSZW1vdmUgJy4nIGZyb20gaW5kZXggMCBvbmx5LCBpZiAnLicgaXMgcHJlc2VudFxuICAgIGlmICh2YWxbMF0gPT09ICcuJykge1xuICAgICAgdmFsID0gdmFsLnN1YnN0cmluZygxKTtcbiAgICB9XG4gICAgcmVwb3J0Q29sdW1uc1NldC5hZGQodmFsKTtcbiAgfSk7XG4gIHJldHVybiByZXBvcnRDb2x1bW5zU2V0O1xufVxuXG4vKipcbiAqIFtnZXRDb25maWdGaWVsZFZhbHVlXVxuICogRGVzY3JpdHBpb24gLSBSZXR1cm5zIGEgdmFsaWQgdmFsdWUgZm9yIGEgY29uZmlndXJhdGlvbiBmaWVsZC4gUmVtb3ZlIGFueSBhbm5vdGF0aW9ucyBhbmQgYWxzbyBcIi5cIlxuICogQGlnbm9yZVxuICogQHBhcmFtICAge29iamVjdH0gY29uZmlnXG4gKiAgICAgICAgICAgICAgICAgICBjb25maWcudmFsdWUgLSBSYXcgdmFsdWVcbiAqIEByZXR1cm5zIHtzdHJpbmd9IHZhbHVlIC0gVmFsdWUgd2l0aCBvdXQgYW55IGFubm90YXRpb25zIG9yIFwiLlwiXG4gKi9cbmZ1bmN0aW9uIGdldENvbmZpZ0ZpZWxkVmFsdWUoY29uZmlnKSB7XG4gIGxldCB7IHZhbHVlIH0gPSBjb25maWc7XG4gIGlmICh2YWx1ZS5zdGFydHNXaXRoKCdAJykpIHtcbiAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZyh2YWx1ZS5pbmRleE9mKCcgJykgKyAxKTtcbiAgICBpZiAodmFsdWVbMF0gPT09ICcuJykgdmFsdWUgPSB2YWx1ZS5zdWJzdHJpbmcoMSk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vKipcbiAqIFtwcmVwYXJlQ29uZmlnRmllbGRzXVxuICogRGVzY3JpcHRpb24gLSBQcmVwYXJlcyBhIHNldCBvZiBjb25maWd1cmF0aW9uIGZpZWxkcyBhbmQgcHVzaGVzIGVhY2ggY29uZmlnIHR5cGUgdG8gYSBzZXQgdXNpbmcgdGhlIGNhbGxiYWNrIHBhcmFtZXRlci5cbiAqIEBpZ25vcmVcbiAqIEBwYXJhbSAgIHtvYmplY3R9ICAgIGNvbmZpZ0ZpZWxkcyAgICAgICAgICBMaXN0IG9mIEF1dGhvcmVkIGZpZWxkc1xuICogQHBhcmFtICAge0Z1bmN0aW9ufSAgcHVzaFRvQ29tcG9uZW50c0xpc3QgQ2FsbGJhY2sgdG8gcHVzaCB0aGUgZmllbGQgdHlwZSB0byBhIHNldC5cbiAqIEByZXR1cm5zIHtTZXR9ICAgICAgIGNvbmZpZ0ZpZWxkU2V0XG4gKi9cbmZ1bmN0aW9uIHByZXBhcmVDb25maWdGaWVsZHMoY29uZmlnRmllbGRzLCBwdXNoVG9Db21wb25lbnRzTGlzdCkge1xuICBjb25zdCBjb25maWdGaWVsZFNldCA9IG5ldyBTZXQoKTtcbiAgY29uZmlnRmllbGRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgcHVzaFRvQ29tcG9uZW50c0xpc3QoaXRlbS50eXBlKTtcbiAgICBjb25zdCB2YWwgPSBnZXRDb25maWdGaWVsZFZhbHVlKGl0ZW0uY29uZmlnKTtcbiAgICBjb25maWdGaWVsZFNldC5hZGQodmFsKTtcbiAgfSk7XG4gIHJldHVybiBjb25maWdGaWVsZFNldDtcbn1cblxuLyoqXG4gKiBbZmluZEF1dGhvcmVkRmllbGRdXG4gKiBEZXNjcmlwdGlvbiAtIEZpbmRzIGFuIGF1dGhvcmVkIGZpZWxkIGZyb20geWhlIGxpc3Qgb2YgY29uZmlnIGZpZWxkcy5cbiAqIEBpZ25vcmVcbiAqIEBwYXJhbSAgIHtBcnJheX0gICBjb25maWdGaWVsZHMgTGlzdCBvZiBBdXRob3JlZCBmaWVsZHNcbiAqIEBwYXJhbSAgIHtzdHJpbmd9ICBmaWVsZElEICAgICAgRmlsdGVyXG4gKiBAcmV0dXJucyB7b2JqZWN0fSAgICAgICAgICAgICAgY29uZmlnIHdpdGggaXRzIGZpZWxkIHZhbHVlIGVxdWFsIHRvIGZpZWxkSUQsIHdoaWNoIG1lYW5zIGFuIGF1dGhvcmVkIGZpZWxkXG4gKi9cbmZ1bmN0aW9uIGZpbmRBdXRob3JlZEZpZWxkKGNvbmZpZ0ZpZWxkcywgZmllbGRJRCkge1xuICByZXR1cm4gY29uZmlnRmllbGRzLmZpbmQoY29uZmlnRmllbGQgPT4ge1xuICAgIGNvbnN0IHZhbCA9IGdldENvbmZpZ0ZpZWxkVmFsdWUoY29uZmlnRmllbGQuY29uZmlnKTtcbiAgICByZXR1cm4gdmFsID09PSBmaWVsZElEO1xuICB9KTtcbn1cblxuLyoqXG4gKiBbZmluZEFuZFVwZGF0ZUF1dGhvcmVkRmllbGRDb25maWddXG4gKiBEZXNjcmlwdGlvbiAtIEZpbmQgdGhlIGF1dGhvcmVkIGZpZWxkLCBhbmQgdXBkYXRlIGl0cyBjb25maWcuXG4gKiBAaWdub3JlXG4gKiBAcGFyYW0gICB7QXJyYXl9ICAgY29uZmlnRmllbGRzIExpc3Qgb2YgQXV0aG9yZWQgZmllbGRzXG4gKiBAcGFyYW0gICB7b2JqZWN0fSAgaXRlbSAgICAgICAgRmllbGQgaXRlbSB0byBjb3B5IGRpc3BsYXlBcyBhbmQgY2F0ZWdvcnkgaW5mb3JtYXRpb25cbiAqIEBwYXJhbSAgIHtzdHJpbmd9ICBjbGFzc0lkICAgICBjbGFzc0lEIGZyb20gdGhlIHJlc3BvbnNlXG4gKi9cbmZ1bmN0aW9uIGZpbmRBbmRVcGRhdGVBdXRob3JlZEZpZWxkQ29uZmlnKGNvbmZpZ0ZpZWxkcywgaXRlbSwgY2xhc3NJZCkge1xuICBjb25zdCBhdXRob3JlZEZpZWxkID0gZmluZEF1dGhvcmVkRmllbGQoY29uZmlnRmllbGRzLCBpdGVtLmZpZWxkSUQpO1xuICBpZiAoYXV0aG9yZWRGaWVsZD8uY29uZmlnKSB7XG4gICAgaWYgKGl0ZW0uZGlzcGxheUFzKSB7XG4gICAgICBhdXRob3JlZEZpZWxkLmNvbmZpZy5kaXNwbGF5QXMgPSBpdGVtLmRpc3BsYXlBcztcbiAgICB9XG4gICAgYXV0aG9yZWRGaWVsZC5jb25maWcuY2xhc3NJRCA9IGl0ZW0uY2xhc3NJRCA/PyBjbGFzc0lkO1xuXG4gICAgaWYgKGF1dGhvcmVkRmllbGQudHlwZSA9PT0gVVNFUl9SRUZFUkVOQ0UpIHtcbiAgICAgIGF1dGhvcmVkRmllbGQuY29uZmlnLmFzc29jaWF0aW9uSUQgPSBpdGVtLmFzc29jaWF0aW9uSUQgfHwgaXRlbS5maWVsZElEO1xuICAgIH1cbiAgICBhdXRob3JlZEZpZWxkLmNvbmZpZy5jYXRlZ29yeSA9IGl0ZW0uY2F0ZWdvcnk7XG4gICAgLy8gRmllbGRUeXBlIGlkZW50aWZpZXMgd2hldGhlciB0aGUgZmllbGQgaXMgY29uZmlndXJlZCBhcyBwaWNrTGlzdFxuICAgIGF1dGhvcmVkRmllbGQuY29uZmlnLmZpZWxkVHlwZSA9IGl0ZW0uZmllbGRUeXBlO1xuICAgIC8vIHR5cGUgZGVmaW5lZCBvbiB0aGUgcHJvcGVydHkgcnVsZSxcbiAgICAvLyB1c2VkIGZvciB0aGUgcGlja2xpc3QgZmllbGQgdG8gYXNzaWduIHRoZSBhcHByb3ByaWF0ZSB0eXBlXG4gICAgYXV0aG9yZWRGaWVsZC5jb25maWcucHJvcGVydHlUeXBlID0gaXRlbS5kYXRhVHlwZSB8fCBpdGVtLnR5cGU7XG4gIH1cbn1cblxuLyoqXG4gKiBbaXNBbkV4dHJhRmllbGRdXG4gKiBEZXNjcmlwdGlvbiAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgZmllbGQgaXMgYW4gZXh0cmEgZmllbGQuIEV4dHJhIGZpZWxkIGlzIHRoZSBvbmUgd2hpY2ggaXMgbm90IGF1dGhvcmVkIGJ1dCBwYXJ0IG9mIHRoZSByZXBvcnQuXG4gKiBAaWdub3JlXG4gKiBAcGFyYW0gICB7QXJyYXl9ICAgY29uZmlnRmllbGRzICAgICAgTGlzdCBvZiBBdXRob3JlZCBmaWVsZHNcbiAqIEBwYXJhbSAgIHtTZXR9ICAgICBjb25maWdGaWVsZFNldCAgICBTZXQgaWYgQXV0aG9yZWQgZmlsZWQgdmFsdWVzXG4gKiBAcGFyYW0gICB7U2V0fSAgICAgcmVwb3J0Q29sdW1uc1NldCBTZXQgb2YgY29sdW1ucyBmcm9tIHRoZSByZXBvcnRcbiAqIEBwYXJhbSAgIHtvYmplY3R9ICBpdGVtICAgICAgICAgICAgIENvbmZpZyBmaWVsZCBpdGVtXG4gKiBAcGFyYW0gICB7c3RyaW5nfSAgY2xhc3NJZCAgICAgICAgICBDbGFzcyBJRCBmcm9tIHRoZSByZXNwb25zZVxuICogQHBhcmFtICAge2Jvb2xlYW59IHNob3dEeW5hbWljRmllbGRzIEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIGZpZWxkcyBhcmUgZmV0Y2hlZCBkeW5hbWljYWxseSBhdCBydW50aW1lXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gICAgICAgICAgICAgICAgICB0cnVlIElmIHRoZSBmaWVsZCBpcyBhbiBleHRyYSBmaWVsZCBlbHNlIGZhbHNlLlxuICovXG5mdW5jdGlvbiBpc0FuRXh0cmFGaWVsZChjb25maWdGaWVsZHMsIGNvbmZpZ0ZpZWxkU2V0LCByZXBvcnRDb2x1bW5zU2V0LCBpdGVtLCBjbGFzc0lkLCBzaG93RHluYW1pY0ZpZWxkcykge1xuICAvLyBJcyB0aGUgZmllbGQgYWxyZWFkeSBwcmVzZW50IGluIGF1dGhvcmluZyBtZXRhZGF0YT9cbiAgLy8gTXV0YXRlcyBjb25maWcgZmllbGRzIHRvIGNvcHkgZGlzcGxheUFzIGFuZCBjYXRlZ29yeSBpbmZvcm1hdGlvblxuICBpZiAoY29uZmlnRmllbGRTZXQuaGFzKGl0ZW0uZmllbGRJRCkpIHtcbiAgICBmaW5kQW5kVXBkYXRlQXV0aG9yZWRGaWVsZENvbmZpZyhjb25maWdGaWVsZHMsIGl0ZW0sIGNsYXNzSWQpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIElmIGZpZWxkIGlzIG5vdCBhdXRob3JlZCBhbmQgbm90IHBhcnQgb2YgcmVwb3J0IGNvbHVtbnMgdGhlbiBkaXNjYXJkIGl0XG4gIHJldHVybiBzaG93RHluYW1pY0ZpZWxkcyB8fCAhIXJlcG9ydENvbHVtbnNTZXQuaGFzKGl0ZW0uZmllbGRJRCk7XG59XG5cbi8qKlxuICogW3ByZXBhcmVFeHRyYUZpZWxkc11cbiAqIERlc2NyaXB0aW9uIC0gUmV0dXJucyBhIGxpc3Qgb2YgZXh0cmEgZmllbGRzIHdpdGggdGhlaXIgbWV0YSB1cGRhdGVkLlxuICogQGlnbm9yZVxuICogQHBhcmFtICAge0FycmF5fSAgIG1ldGFGaWVsZHMgICAgICAgTGlzdCBvZiBmaWVsZHNcbiAqIEBwYXJhbSAgIHtBcnJheX0gICBjb25maWdGaWVsZHMgICAgICBMaXN0IG9mIEF1dGhvcmVkIGZpZWxkc1xuICogQHBhcmFtICAge1NldH0gICAgIGNvbmZpZ0ZpZWxkU2V0ICAgIFNldCBpZiBBdXRob3JlZCBmaWxlZCB2YWx1ZXNcbiAqIEBwYXJhbSAgIHtTZXR9ICAgICByZXBvcnRDb2x1bW5zU2V0IFNldCBvZiBjb2x1bW5zIGZyb20gdGhlIHJlcG9ydFxuICogQHBhcmFtICAge3N0cmluZ30gIGNsYXNzSUQgICAgICAgICAgQ2xhc3MgSUQgZnJvbSB0aGUgcmVzcG9uc2VcbiAqIEBwYXJhbSAgIHtib29sZWFufSBzaG93RHluYW1pY0ZpZWxkcyBGbGFnIGluZGljYXRpbmcgd2hldGhlciBmaWVsZHMgYXJlIGZldGNoZWQgZHluYW1pY2FsbHkgYXQgcnVudGltZVxuICogQHJldHVybnMge0FycmF5fSAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBleHRyYSBmaWVsZHMgd2l0aCB0aGVpciBtZXRhIHVwZGF0ZWQuXG4gKi9cbmZ1bmN0aW9uIHByZXBhcmVFeHRyYUZpZWxkcyhtZXRhRmllbGRzLCBjb25maWdGaWVsZHMsIGNvbmZpZ0ZpZWxkU2V0LCByZXBvcnRDb2x1bW5zU2V0LCBjbGFzc0lELCBzaG93RHluYW1pY0ZpZWxkcykge1xuICAvLyBGaWx0ZXIgYWxsIHRoZSBleHRyYSBmaWVsZHNcbiAgY29uc3QgZXh0cmFGaWxlZHMgPSBtZXRhRmllbGRzLmZpbHRlcihpdGVtID0+IHtcbiAgICByZXR1cm4gaXNBbkV4dHJhRmllbGQoY29uZmlnRmllbGRzLCBjb25maWdGaWVsZFNldCwgcmVwb3J0Q29sdW1uc1NldCwgaXRlbSwgY2xhc3NJRCwgc2hvd0R5bmFtaWNGaWVsZHMpO1xuICB9KTtcbiAgcmV0dXJuIGdlbmVyYXRlVmlld01ldGFEYXRhKGV4dHJhRmlsZWRzLCBjbGFzc0lELCBmYWxzZSk7XG4gIC8vIFVwZGF0ZSB0aGUgbWV0YSBvYmplY3Qgb2YgZWFjaCBvZiB0aGUgZXh0cmEgZmllbGRzLlxufVxuXG5jb25zdCBBc3NpZ25EYXNoT2JqZWN0cyA9IFsnQXNzaWduLVdvcmtsaXN0JywgJ0Fzc2lnbi1Xb3JrQmFza2V0J107XG5cbmZ1bmN0aW9uIHBvcHVsYXRlUmVuZGVyaW5nT3B0aW9ucyhuYW1lLCBjb25maWcsIGZpZWxkKSB7XG4gIGNvbnN0IHNob3VsZERpc3BsYXlBc1NlbWFudGljTGluayA9ICdkaXNwbGF5QXNMaW5rJyBpbiBmaWVsZC5jb25maWcgJiYgZmllbGQuY29uZmlnLmRpc3BsYXlBc0xpbms7XG4gIGlmIChzaG91bGREaXNwbGF5QXNTZW1hbnRpY0xpbmspIHtcbiAgICBjb25maWcuY3VzdG9tT2JqZWN0LmlzQXNzaWdubWVudExpbmsgPSBBc3NpZ25EYXNoT2JqZWN0cy5pbmNsdWRlcyhmaWVsZC5jb25maWcuY2xhc3NJRCk7XG4gICAgaWYgKGZpZWxkLmNvbmZpZy52YWx1ZS5zdGFydHNXaXRoKCdAQ0EnKSkge1xuICAgICAgY29uZmlnLmN1c3RvbU9iamVjdC5pc0Fzc29jaWF0aW9uID0gdHJ1ZTtcbiAgICB9XG4gICAgY29uZmlnLmNlbGxSZW5kZXJlciA9IGZvcm1hdENvbnN0YW50cy5Xb3JrTGluaztcbiAgfSBlbHNlIGlmIChuYW1lID09PSAncHlTdGF0dXNXb3JrJyB8fCBuYW1lID09PSAncHlBc3NpZ25tZW50U3RhdHVzJykge1xuICAgIGNvbmZpZy5jZWxsUmVuZGVyZXIgPSBmb3JtYXRDb25zdGFudHMuV29ya1N0YXR1cztcbiAgfSBlbHNlIGlmIChuYW1lID09PSAncHhVcmdlbmN5V29yaycpIHtcbiAgICBjb25maWcuY2VsbFJlbmRlcmVyID0gZm9ybWF0Q29uc3RhbnRzLkludGVnZXI7XG4gIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplQ29sdW1ucyhmaWVsZHM6IGFueVtdID0gW10sIGdldE1hcHBlZFByb3BlcnR5OiBhbnkgPSBudWxsKSB7XG4gIHJldHVybiBmaWVsZHMubWFwKChmaWVsZCwgb3JpZ2luYWxDb2xJbmRleCkgPT4ge1xuICAgIGxldCBuYW1lID0gZmllbGQuY29uZmlnLnZhbHVlO1xuXG4gICAgaWYgKG5hbWUuc3RhcnRzV2l0aCgnQCcpKSB7XG4gICAgICBuYW1lID0gbmFtZS5zdWJzdHJpbmcobmFtZS5pbmRleE9mKCcgJykgKyAxKTtcbiAgICAgIGlmIChuYW1lWzBdID09PSAnLicpIG5hbWUgPSBuYW1lLnN1YnN0cmluZygxKTtcbiAgICB9XG4gICAgbmFtZSA9IGdldE1hcHBlZFByb3BlcnR5Py4obmFtZSkgPz8gbmFtZTtcblxuICAgIGxldCBsYWJlbCA9IGZpZWxkLmNvbmZpZy5sYWJlbCB8fCBmaWVsZC5jb25maWcuY2FwdGlvbjtcbiAgICBjb25zdCB7IHNob3cgPSB0cnVlLCBkaXNwbGF5QXMgfSA9IGZpZWxkLmNvbmZpZztcbiAgICBpZiAobGFiZWwuc3RhcnRzV2l0aCgnQCcpKSB7XG4gICAgICBsYWJlbCA9IGxhYmVsLnN1YnN0cmluZygzKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICBuYW1lLFxuICAgICAgbGFiZWwsXG4gICAgICBzaG93LFxuICAgICAgY2xhc3NJRDogZmllbGQuY29uZmlnLmNsYXNzSUQsXG4gICAgICBpZDogZmllbGQuaWQgfHwgbmFtZSB8fCBvcmlnaW5hbENvbEluZGV4LFxuICAgICAgZGlzcGxheUFzLFxuICAgICAgYXNzb2NpYXRpb25JRDogZmllbGQuY29uZmlnLmFzc29jaWF0aW9uSUQsXG4gICAgICAuLi4oZmllbGQuY29uZmlnLmNsYXNzSUQgJiYgeyBjYXRlZ29yeTogZmllbGQuY29uZmlnLmNhdGVnb3J5IH0pLFxuICAgICAgY3VzdG9tT2JqZWN0OiB7fSxcbiAgICAgIGZpZWxkVHlwZTogZmllbGQuY29uZmlnLmZpZWxkVHlwZSxcbiAgICAgIG1ldGE6IHtcbiAgICAgICAgLi4uZmllbGRcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcG9wdWxhdGVSZW5kZXJpbmdPcHRpb25zKG5hbWUsIGNvbmZpZywgZmllbGQpO1xuXG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRJdGVtS2V5ID0gZmllbGRzID0+IHtcbiAgbGV0IGl0ZW1LZXk7XG4gIGlmIChmaWVsZHMuZmluZEluZGV4KGZpZWxkID0+IGZpZWxkLmlkID09PSAncHlHVUlEJykgPiAtMSkge1xuICAgIGl0ZW1LZXkgPSAncHlHVUlEJztcbiAgfSBlbHNlIHtcbiAgICBpdGVtS2V5ID0gJ3B6SW5zS2V5JztcbiAgfVxuICByZXR1cm4gaXRlbUtleTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlUGF0Y2hRdWVyeUZpZWxkcyhmaWVsZHMsIGlzRGF0YU9iamVjdCA9IGZhbHNlLCBjbGFzc0lEID0gJycpIHtcbiAgY29uc3QgcXVlcnlGaWVsZHM6IGFueVtdID0gW107XG4gIGZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICBjb25zdCBwYXRjaEZpZWxkczogYW55W10gPSBbXTtcbiAgICBpZiAoZmllbGQuY2VsbFJlbmRlcmVyID09PSAnV29ya0xpbmsnKSB7XG4gICAgICBpZiAoZmllbGQuY3VzdG9tT2JqZWN0ICYmIGZpZWxkLmN1c3RvbU9iamVjdC5pc0Fzc2lnbm1lbnRMaW5rKSB7XG4gICAgICAgIGNvbnN0IGFzc29jaWF0aW9uTmFtZSA9IGZpZWxkLm5hbWUuaW5jbHVkZXMoJzonKSA/IGAke2ZpZWxkLm5hbWUuc3BsaXQoJzonKVswXX06YCA6ICcnO1xuICAgICAgICBwYXRjaEZpZWxkcy5wdXNoKGAke2Fzc29jaWF0aW9uTmFtZX1wekluc0tleWApO1xuICAgICAgICBwYXRjaEZpZWxkcy5wdXNoKGAke2Fzc29jaWF0aW9uTmFtZX1weFJlZk9iamVjdENsYXNzYCk7XG4gICAgICB9IGVsc2UgaWYgKGZpZWxkLmN1c3RvbU9iamVjdCAmJiBmaWVsZC5jdXN0b21PYmplY3QuaXNBc3NvY2lhdGlvbikge1xuICAgICAgICBjb25zdCBhc3NvY2lhdGlvbkNhdGVnb3J5ID0gZmllbGQubmFtZS5zcGxpdCgnOicpWzBdO1xuICAgICAgICBwYXRjaEZpZWxkcy5wdXNoKGAke2Fzc29jaWF0aW9uQ2F0ZWdvcnl9OnB5SURgKTtcbiAgICAgICAgcGF0Y2hGaWVsZHMucHVzaChgJHthc3NvY2lhdGlvbkNhdGVnb3J5fTpwekluc0tleWApO1xuICAgICAgICBwYXRjaEZpZWxkcy5wdXNoKGAke2Fzc29jaWF0aW9uQ2F0ZWdvcnl9OnB4T2JqQ2xhc3NgKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNEYXRhT2JqZWN0KSB7XG4gICAgICAgIGNvbnN0IGRhdGFWaWV3TmFtZSA9IFBDb3JlLmdldERhdGFUeXBlVXRpbHMoKS5nZXRTYXZhYmxlRGF0YVBhZ2UoY2xhc3NJRCk7XG4gICAgICAgIGNvbnN0IGRhdGFQYWdlS2V5cyA9IFBDb3JlLmdldERhdGFUeXBlVXRpbHMoKS5nZXREYXRhUGFnZUtleXMoZGF0YVZpZXdOYW1lKTtcbiAgICAgICAgZGF0YVBhZ2VLZXlzPy5mb3JFYWNoKGl0ZW0gPT4gKGl0ZW0uaXNBbHRlcm5hdGVLZXlTdG9yYWdlID8gcGF0Y2hGaWVsZHMucHVzaChpdGVtLmxpbmtlZEZpZWxkKSA6IHBhdGNoRmllbGRzLnB1c2goaXRlbS5rZXlOYW1lKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGF0Y2hGaWVsZHMucHVzaCgncHlJRCcpO1xuICAgICAgICBwYXRjaEZpZWxkcy5wdXNoKCdwekluc0tleScpO1xuICAgICAgICBwYXRjaEZpZWxkcy5wdXNoKCdweE9iakNsYXNzJyk7XG4gICAgICB9XG4gICAgfVxuICAgIHBhdGNoRmllbGRzLmZvckVhY2goayA9PiB7XG4gICAgICBpZiAoIXF1ZXJ5RmllbGRzLmZpbmQocSA9PiBxID09PSBrKSkge1xuICAgICAgICBxdWVyeUZpZWxkcy5wdXNoKGspO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gcXVlcnlGaWVsZHM7XG59XG5cbi8qKlxuICogVXBkYXRlIHRoZSByZW5kZXJlciB0eXBlIGZvciB0aGUgcHJvcGVydGllcyBvZiB0eXBlIFBhZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVQYWdlRmllbGRzQ29uZmlnKGNvbmZpZ0ZpZWxkcywgcGFyZW50Q2xhc3NJRCkge1xuICByZXR1cm4gY29uZmlnRmllbGRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgdHlwZSxcbiAgICAgIGNvbmZpZzogeyB2YWx1ZSB9XG4gICAgfSA9IGl0ZW07XG4gICAgY29uc3QgcHJvcGVydHlOYW1lID0gUENvcmUuZ2V0QW5ub3RhdGlvblV0aWxzKCkuZ2V0UHJvcGVydHlOYW1lKHZhbHVlKTtcbiAgICBpZiAoaXNFbWJlZGRlZEZpZWxkKHZhbHVlKSAmJiAhaXNQYWdlTGlzdEluUGF0aChwcm9wZXJ0eU5hbWUsIHBhcmVudENsYXNzSUQpKSB7XG4gICAgICBpdGVtLmNvbmZpZy5jb21wb25lbnRUeXBlID0gdHlwZTtcbiAgICAgIGl0ZW0udHlwZSA9ICdQYWdlUHJvcGVydHlSZW5kZXJlcic7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGNvbnN0IHJlYWRDb250ZXh0UmVzcG9uc2UgPSBhc3luYyAoY29udGV4dCwgcGFyYW1zKSA9PiB7XG4gIGNvbnN0IHsgcENvbm4kLCBhcGlDb250ZXh0LCBjaGlsZHJlbiwgc2hvd0R5bmFtaWNGaWVsZHMsIHJlZmVyZW5jZUxpc3QsIGlzRGF0YU9iamVjdCB9ID0gcGFyYW1zO1xuICAvLyBsZXQgeyBsaXN0Q29udGV4dCB9ID0gcGFyYW1zO1xuICBjb25zdCB7IHByb21pc2VzUmVzcG9uc2VBcnJheSwgYXBpQ29udGV4dDogb3RoZXJDb250ZXh0IH0gPSBjb250ZXh0O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc29uYXJqcy9uby11bnVzZWQtY29sbGVjdGlvblxuICBjb25zdCBsaXN0T2ZDb21wb25lbnRzOiBhbnlbXSA9IFtdO1xuICBjb25zdCB7XG4gICAgZGF0YTogeyBmaWVsZHM6IG1ldGFGaWVsZHMsIGNsYXNzSUQsIGlzUXVlcnlhYmxlIH1cbiAgfSA9IHByb21pc2VzUmVzcG9uc2VBcnJheVswXTtcbiAgbGV0IHtcbiAgICBkYXRhOiB7IHByaW1hcnlGaWVsZHMgfVxuICB9ID0gcHJvbWlzZXNSZXNwb25zZUFycmF5WzBdO1xuICAvLyBXaGVuIGxpc3QgaXMgY29uZmlndXJlZCB3aXRoIEluY2x1ZGUgYWxsIGNsYXNzIGZpZWxkcyBjb25maWd1cmF0aW9uLCBwcm92aWRlIHN1cHBvcnQgZm9yIFByaW1hcnkgZmllbGRzIGNvbHVtblxuICBpZiAoc2hvd0R5bmFtaWNGaWVsZHMpIHtcbiAgICBjb25zdCBzb3VyY2VNZXRhZGF0YSA9IFBDb3JlLmdldE1ldGFkYXRhVXRpbHMoKS5nZXREYXRhUGFnZU1ldGFkYXRhKHJlZmVyZW5jZUxpc3QpO1xuICAgIGlmIChzb3VyY2VNZXRhZGF0YT8ucHJpbWFyeUZpZWxkcykge1xuICAgICAgcHJpbWFyeUZpZWxkcyA9IHNvdXJjZU1ldGFkYXRhLnByaW1hcnlGaWVsZHM7XG4gICAgfVxuICAgIC8vIHVwZGF0aW5nIG1ldGFEYXRhIGZpZWxkSUQgdG8gbm9ybWFsIHByb3BlcnR5IGlmIGl0IGhhcyBmaWVsZElEIHN0YXJ0cyB3aXRoICFQISBvciAhUEwhXG4gICAgdXBkYXRlTWV0YUVtYmVkZGVkRmllbGRJRChtZXRhRmllbGRzKTtcbiAgfVxuICB1cGRhdGVGaWVsZFR5cGUobWV0YUZpZWxkcyk7XG5cbiAgaWYgKGlzRGF0YU9iamVjdCkge1xuICAgIGNvbnN0IGNvbXBvc2l0ZUtleXM6IGFueVtdID0gW107XG4gICAgY29uc3QgZGF0YVZpZXdOYW1lID0gUENvcmUuZ2V0RGF0YVR5cGVVdGlscygpLmdldFNhdmFibGVEYXRhUGFnZShjbGFzc0lEKTtcbiAgICBjb25zdCBkYXRhUGFnZUtleXMgPSBQQ29yZS5nZXREYXRhVHlwZVV0aWxzKCkuZ2V0RGF0YVBhZ2VLZXlzKGRhdGFWaWV3TmFtZSk7XG4gICAgZGF0YVBhZ2VLZXlzPy5mb3JFYWNoKGl0ZW0gPT4gKGl0ZW0uaXNBbHRlcm5hdGVLZXlTdG9yYWdlID8gY29tcG9zaXRlS2V5cy5wdXNoKGl0ZW0ubGlua2VkRmllbGQpIDogY29tcG9zaXRlS2V5cy5wdXNoKGl0ZW0ua2V5TmFtZSkpKTtcbiAgICBpZiAoY29tcG9zaXRlS2V5cy5sZW5ndGggJiYgb3RoZXJDb250ZXh0KSB7XG4gICAgICBvdGhlckNvbnRleHQuc2V0Q29tcG9zaXRlS2V5cyhjb21wb3NpdGVLZXlzKTtcbiAgICB9XG4gICAgaWYgKG90aGVyQ29udGV4dCkge1xuICAgICAgb3RoZXJDb250ZXh0LmZldGNoUm93QWN0aW9uRGV0YWlscyA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcHJlc2V0QXJyYXkgPSBbXTtcbiAgY29uc3QgcmF3TWV0YWRhdGEgPSBwQ29ubiQuZ2V0UmF3TWV0YWRhdGEoKS5jb25maWc7XG4gIGNvbnN0IHJhd1ByZXNldHMgPSByYXdNZXRhZGF0YS5wcmVzZXRzO1xuICBjb25zdCBpc01ldGFXaXRoUHJlc2V0cyA9IHJhd1ByZXNldHMgJiYgcmF3UHJlc2V0cy5sZW5ndGggIT09IDA7XG4gIGNvbnN0IGNoaWxkcmVuSXRlcmF0b3IgPSBpc01ldGFXaXRoUHJlc2V0cyA/IHJhd1ByZXNldHMgOiBjaGlsZHJlbjtcbiAgY29uc3QgcmVzb2x2ZWRQcmVzZXRzID0gcENvbm4kLmdldENvbmZpZ1Byb3BzKCkucHJlc2V0cztcbiAgbGV0IGZpZWxkcztcbiAgbGV0IHRhYmxlQ29uZmlnO1xuICBjaGlsZHJlbkl0ZXJhdG9yPy5mb3JFYWNoKChwcmVzZXRNZXRhLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHsgY29uZmlnRmllbGRzIH0gPSBnZXRUYWJsZUNvbmZpZ0Zyb21QcmVzZXRNZXRhKFxuICAgICAgeyAuLi5wcmVzZXRNZXRhLCBsYWJlbDogcmVzb2x2ZWRQcmVzZXRzW2luZGV4XS5sYWJlbCB9LFxuICAgICAgaXNNZXRhV2l0aFByZXNldHMsXG4gICAgICBwQ29ubiQsXG4gICAgICBjbGFzc0lELFxuICAgICAgcHJpbWFyeUZpZWxkcyxcbiAgICAgIG1ldGFGaWVsZHNcbiAgICApO1xuICAgIGNvbnN0IHB1c2hUb0NvbXBvbmVudHNMaXN0ID0gZmllbGRUeXBlID0+IHtcbiAgICAgIGxpc3RPZkNvbXBvbmVudHMucHVzaChmaWVsZFR5cGUpO1xuICAgIH07XG4gICAgLy8gcmVhZCByZXBvcnQgY29sdW1ucyByZXNwb25zZSAtIGluIGNhc2Ugb2Ygbm9ucXVlcnlhYmxlIGlnbm9yZSB0aGUgcmVzcG9uc2UgYW5kIHJlbHkgb25seSBvbiB0aGUgZmllbGRzIGNvbmZpZ3VyZWQgYXQgYXV0aG9pbmcgdGltZSBpbiBwcmVzZXRzXG4gICAgY29uc3QgcmVwb3J0Q29sdW1uc1NldCA9IGlzUXVlcnlhYmxlID8gZ2V0UmVwb3J0Q29sdW1ucyhwcm9taXNlc1Jlc3BvbnNlQXJyYXlbMV0pIDogbmV3IFNldCgpO1xuXG4gICAgY29uc3QgY29uZmlnRmllbGRTZXQgPSBwcmVwYXJlQ29uZmlnRmllbGRzKGNvbmZpZ0ZpZWxkcywgcHVzaFRvQ29tcG9uZW50c0xpc3QpO1xuXG4gICAgLy8gRklYTUUgI0VtYmVkZGVkUHJvcGVydHlQYXRjaFxuICAgIC8vIFRPRE86IFJlbW92ZSB0aGlzIG1lcmdlIGxvZ2ljIHdoZW4gdGhlIG1ldGFkYXRhIHJlc3BvbnNlIGluY2x1ZGVzIGFsbCBvcHRpbWl6ZWQgZW1iZWRkZWQgcGFnZSBhbmQgcGFnZWxpc3RzXG4gICAgLy8gbWVyZ2luZyBjb25maWd1cmVkIGVtYmVkZGVkIHByb3BlcnRpZXMgd2l0aCBtZXRhZGF0YSBzbyB0aGF0IHdoaWxlIHByZXBhcmluZyBleHRyYSBmaWVsZHMsIGNvbmZpZyBmaWVsZHMgY2FuIGdldCBvdGhlciBwcm9wZXJ0aWVzIGZyb20gbWV0YShlZzogY2F0ZWdvcnksIGRpc3BsYXlBc0xpbmspXG4gICAgLy8gZ2V0IGNvbmZpZ3VyZWQgZW1iZWRkZWQgcHJvcGVydGllcyBtZXRhZGF0YSBhbmQgZ2V0IG5ldyBtZXJnZWRNZXRhRmllbGRzXG4gICAgY29uc3QgY29uZmlnRW1iZWRkZWRGaWVsZHNNZXRhID0gZ2V0Q29uZmlnRW1iZWRkZWRGaWVsZHNNZXRhKGNvbmZpZ0ZpZWxkU2V0LCBjbGFzc0lEKTtcbiAgICBjb25zdCBtZXJnZWRNZXRhRmllbGRzID0gbWVyZ2VDb25maWdFbWJlZGRlZEZpZWxkc01ldGEoY29uZmlnRW1iZWRkZWRGaWVsZHNNZXRhLCBtZXRhRmllbGRzKTtcblxuICAgIGNvbnN0IGV4dHJhRmllbGRzID0gcHJlcGFyZUV4dHJhRmllbGRzKFxuICAgICAgbWVyZ2VkTWV0YUZpZWxkcywgLy8gcGFzc2luZyBuZXcgbWVyZ2VkIG1ldGEgZmllbGRzIHdoaWNoIGhhcyBtZXRhIG9mIGNvbmZpZ3VyZWQgZW1iZWRkZWQgZmllbGRzIG9mIGN1cnJlbnQgcHJlc2V0XG4gICAgICBjb25maWdGaWVsZHMsXG4gICAgICBjb25maWdGaWVsZFNldCxcbiAgICAgIHJlcG9ydENvbHVtbnNTZXQsXG4gICAgICBjbGFzc0lELFxuICAgICAgc2hvd0R5bmFtaWNGaWVsZHNcbiAgICApO1xuXG4gICAgaWYgKGlzUXVlcnlhYmxlKSB7XG4gICAgICB1cGRhdGVQYWdlRmllbGRzQ29uZmlnKGNvbmZpZ0ZpZWxkcywgY2xhc3NJRCk7XG4gICAgICBwcmVwYXJlUHJvcGVydHlNYXBzKFsuLi5jb25maWdGaWVsZHMsIC4uLmV4dHJhRmllbGRzXSwgY2xhc3NJRCwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBnZXRNYXBwZWRQcm9wZXJ0eSB9ID0gY29udGV4dDtcblxuICAgIGZpZWxkcyA9IGluaXRpYWxpemVDb2x1bW5zKFsuLi5jb25maWdGaWVsZHMsIC4uLmV4dHJhRmllbGRzXSwgZ2V0TWFwcGVkUHJvcGVydHkpO1xuICAgIGNvbnN0IHBhdGNoUXVlcnlGaWVsZHMgPSBwcmVwYXJlUGF0Y2hRdWVyeUZpZWxkcyhmaWVsZHMsIGlzRGF0YU9iamVjdCwgY2xhc3NJRCk7XG4gICAgY29uc3QgaXRlbUtleSA9IGdldEl0ZW1LZXkoZmllbGRzKTtcbiAgICB0YWJsZUNvbmZpZyA9IHsgZmllbGREZWZzOiBmaWVsZHMsIHBhdGNoUXVlcnlGaWVsZHMsIGl0ZW1LZXksIGlzUXVlcnlhYmxlIH07XG4gIH0pO1xuICBjb25zdCBtZXRhID0gdGFibGVDb25maWc7XG4gIHBhcmFtcy5saXN0Q29udGV4dCA9IHsgbWV0YSwgcHJlc2V0czogcHJlc2V0QXJyYXksIGFwaUNvbnRleHQ6IHsgLi4uYXBpQ29udGV4dCB9IH07XG4gIHJldHVybiBwYXJhbXMubGlzdENvbnRleHQ7XG59O1xuIl19
@@ -30,15 +30,15 @@ export class MultiReferenceReadonlyComponent {
30
30
  this.configProps$ = this.pConn$.getConfigProps();
31
31
  this.label = this.configProps$.label;
32
32
  }
33
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultiReferenceReadonlyComponent, deps: [{ token: i1.AngularPConnectService }], target: i0.ɵɵFactoryTarget.Component }); }
34
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MultiReferenceReadonlyComponent, isStandalone: true, selector: "app-multi-reference-readonly", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, ngImport: i0, template: "<div>\n <h3 style=\"font-weight: bold; margin: 0\">{{ label }}</h3>\n <component-mapper name=\"SimpleTable\" [props]=\"{ pConn$ }\"></component-mapper>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: MultiReferenceReadonlyComponent, deps: [{ token: i1.AngularPConnectService }], target: i0.ɵɵFactoryTarget.Component }); }
34
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: MultiReferenceReadonlyComponent, isStandalone: true, selector: "app-multi-reference-readonly", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, ngImport: i0, template: "<div>\n <h3 style=\"font-weight: bold; margin: 0\">{{ label }}</h3>\n <component-mapper name=\"SimpleTable\" [props]=\"{ pConn$ }\"></component-mapper>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
35
35
  }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultiReferenceReadonlyComponent, decorators: [{
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: MultiReferenceReadonlyComponent, decorators: [{
37
37
  type: Component,
38
38
  args: [{ selector: 'app-multi-reference-readonly', standalone: true, imports: [forwardRef(() => ComponentMapperComponent)], template: "<div>\n <h3 style=\"font-weight: bold; margin: 0\">{{ label }}</h3>\n <component-mapper name=\"SimpleTable\" [props]=\"{ pConn$ }\"></component-mapper>\n</div>\n" }]
39
- }], ctorParameters: function () { return [{ type: i1.AngularPConnectService }]; }, propDecorators: { pConn$: [{
39
+ }], ctorParameters: () => [{ type: i1.AngularPConnectService }], propDecorators: { pConn$: [{
40
40
  type: Input
41
41
  }], formGroup$: [{
42
42
  type: Input
43
43
  }] } });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktcmVmZXJlbmNlLXJlYWRvbmx5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9tdWx0aS1yZWZlcmVuY2UtcmVhZG9ubHkvbXVsdGktcmVmZXJlbmNlLXJlYWRvbmx5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9tdWx0aS1yZWZlcmVuY2UtcmVhZG9ubHkvbXVsdGktcmVmZXJlbmNlLXJlYWRvbmx5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUdoRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7O0FBY3hHLE1BQU0sT0FBTywrQkFBK0I7SUFRMUMsWUFBb0IsZUFBdUM7UUFBdkMsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBSjNELHdCQUFtQixHQUF3QixFQUFFLENBQUM7SUFJZ0IsQ0FBQztJQUUvRCxRQUFRO1FBQ04sOEZBQThGO1FBQzlGLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLDZCQUE2QixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxFQUFFO1lBQzFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUMxQztJQUNILENBQUM7SUFFRCxhQUFhO1FBQ1gsZ0VBQWdFO1FBQ2hFLDRCQUE0QjtRQUM1QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JFLHdEQUF3RDtRQUN4RCxJQUFJLFdBQVcsRUFBRTtZQUNmLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBaUMsQ0FBQztRQUNoRixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO0lBQ3ZDLENBQUM7K0dBbkNVLCtCQUErQjttR0FBL0IsK0JBQStCLGdKQ2pCNUMscUtBSUEsNkZEVzZCLHdCQUF3Qjs7NEZBRXhDLCtCQUErQjtrQkFQM0MsU0FBUzsrQkFDRSw4QkFBOEIsY0FHNUIsSUFBSSxXQUNQLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUM7NkdBRzVDLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFuZ3VsYXJQQ29ubmVjdERhdGEsIEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2FuZ3VsYXItcGNvbm5lY3QnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcblxuaW50ZXJmYWNlIE11bHRpUmVmZXJlbmNlUmVhZE9ubHlQcm9wcyB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGhpZGVMYWJlbDogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW11bHRpLXJlZmVyZW5jZS1yZWFkb25seScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tdWx0aS1yZWZlcmVuY2UtcmVhZG9ubHkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tdWx0aS1yZWZlcmVuY2UtcmVhZG9ubHkuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW2ZvcndhcmRSZWYoKCkgPT4gQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50KV1cbn0pXG5leHBvcnQgY2xhc3MgTXVsdGlSZWZlcmVuY2VSZWFkb25seUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcblxuICBhbmd1bGFyUENvbm5lY3REYXRhOiBBbmd1bGFyUENvbm5lY3REYXRhID0ge307XG4gIGNvbmZpZ1Byb3BzJDogTXVsdGlSZWZlcmVuY2VSZWFkT25seVByb3BzO1xuICBsYWJlbDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEZpcnN0IHRoaW5nIGluIGluaXRpYWxpemF0aW9uIGlzIHJlZ2lzdGVyaW5nIGFuZCBzdWJzY3JpYmluZyB0byB0aGUgQW5ndWxhclBDb25uZWN0IHNlcnZpY2VcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5yZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudCh0aGlzLCB0aGlzLm9uU3RhdGVDaGFuZ2UpO1xuICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cbiAgfVxuXG4gIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgLy8gU2hvdWxkIGFsd2F5cyBjaGVjayB0aGUgYnJpZGdlIHRvIHNlZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZFxuICAgIC8vIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgICBjb25zdCBiVXBkYXRlU2VsZiA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIGlmIChiVXBkYXRlU2VsZikge1xuICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlU2VsZigpIHtcbiAgICB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkgYXMgTXVsdGlSZWZlcmVuY2VSZWFkT25seVByb3BzO1xuICAgIHRoaXMubGFiZWwgPSB0aGlzLmNvbmZpZ1Byb3BzJC5sYWJlbDtcbiAgfVxufVxuIiwiPGRpdj5cbiAgPGgzIHN0eWxlPVwiZm9udC13ZWlnaHQ6IGJvbGQ7IG1hcmdpbjogMFwiPnt7IGxhYmVsIH19PC9oMz5cbiAgPGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIlNpbXBsZVRhYmxlXCIgW3Byb3BzXT1cInsgcENvbm4kIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG48L2Rpdj5cbiJdfQ==
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktcmVmZXJlbmNlLXJlYWRvbmx5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9tdWx0aS1yZWZlcmVuY2UtcmVhZG9ubHkvbXVsdGktcmVmZXJlbmNlLXJlYWRvbmx5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9tdWx0aS1yZWZlcmVuY2UtcmVhZG9ubHkvbXVsdGktcmVmZXJlbmNlLXJlYWRvbmx5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUdoRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7O0FBY3hHLE1BQU0sT0FBTywrQkFBK0I7SUFRMUMsWUFBb0IsZUFBdUM7UUFBdkMsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBSjNELHdCQUFtQixHQUF3QixFQUFFLENBQUM7SUFJZ0IsQ0FBQztJQUUvRCxRQUFRO1FBQ04sOEZBQThGO1FBQzlGLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLDZCQUE2QixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLGdFQUFnRTtRQUNoRSw0QkFBNEI7UUFDNUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRSx3REFBd0Q7UUFDeEQsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBaUMsQ0FBQztRQUNoRixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO0lBQ3ZDLENBQUM7K0dBbkNVLCtCQUErQjttR0FBL0IsK0JBQStCLGdKQ2pCNUMscUtBSUEsOEVEVzZCLHdCQUF3Qjs7NEZBRXhDLCtCQUErQjtrQkFQM0MsU0FBUzsrQkFDRSw4QkFBOEIsY0FHNUIsSUFBSSxXQUNQLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUM7MkZBRzVDLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFuZ3VsYXJQQ29ubmVjdERhdGEsIEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2FuZ3VsYXItcGNvbm5lY3QnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcblxuaW50ZXJmYWNlIE11bHRpUmVmZXJlbmNlUmVhZE9ubHlQcm9wcyB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGhpZGVMYWJlbDogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW11bHRpLXJlZmVyZW5jZS1yZWFkb25seScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tdWx0aS1yZWZlcmVuY2UtcmVhZG9ubHkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tdWx0aS1yZWZlcmVuY2UtcmVhZG9ubHkuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW2ZvcndhcmRSZWYoKCkgPT4gQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50KV1cbn0pXG5leHBvcnQgY2xhc3MgTXVsdGlSZWZlcmVuY2VSZWFkb25seUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcblxuICBhbmd1bGFyUENvbm5lY3REYXRhOiBBbmd1bGFyUENvbm5lY3REYXRhID0ge307XG4gIGNvbmZpZ1Byb3BzJDogTXVsdGlSZWZlcmVuY2VSZWFkT25seVByb3BzO1xuICBsYWJlbDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEZpcnN0IHRoaW5nIGluIGluaXRpYWxpemF0aW9uIGlzIHJlZ2lzdGVyaW5nIGFuZCBzdWJzY3JpYmluZyB0byB0aGUgQW5ndWxhclBDb25uZWN0IHNlcnZpY2VcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5yZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudCh0aGlzLCB0aGlzLm9uU3RhdGVDaGFuZ2UpO1xuICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cbiAgfVxuXG4gIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgLy8gU2hvdWxkIGFsd2F5cyBjaGVjayB0aGUgYnJpZGdlIHRvIHNlZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZFxuICAgIC8vIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgICBjb25zdCBiVXBkYXRlU2VsZiA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIGlmIChiVXBkYXRlU2VsZikge1xuICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlU2VsZigpIHtcbiAgICB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkgYXMgTXVsdGlSZWZlcmVuY2VSZWFkT25seVByb3BzO1xuICAgIHRoaXMubGFiZWwgPSB0aGlzLmNvbmZpZ1Byb3BzJC5sYWJlbDtcbiAgfVxufVxuIiwiPGRpdj5cbiAgPGgzIHN0eWxlPVwiZm9udC13ZWlnaHQ6IGJvbGQ7IG1hcmdpbjogMFwiPnt7IGxhYmVsIH19PC9oMz5cbiAgPGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIlNpbXBsZVRhYmxlXCIgW3Byb3BzXT1cInsgcENvbm4kIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG48L2Rpdj5cbiJdfQ==
@@ -16,10 +16,10 @@ export class NarrowWideFormComponent {
16
16
  updateSelf() {
17
17
  this.arChildren$ = this.pConn$.getChildren();
18
18
  }
19
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NarrowWideFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
20
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NarrowWideFormComponent, isStandalone: true, selector: "app-narrow-wide-form", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"psdk-narrow-wide-column\">\n <div *ngFor=\"let kid of arChildren$\">\n <div class=\"psdk-narrow-column\" *ngIf=\"kid.getPConnect().getRawMetadata()['name'].toLowerCase() === 'left'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n <div class=\"psdk-wide-column\" *ngIf=\"kid.getPConnect().getRawMetadata()['name'].toLowerCase() === 'right'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n <div class=\"psdk-narrow-column\" *ngIf=\"kid.getPConnect().getRawMetadata()['name'].toLowerCase() === 'a'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n <div class=\"psdk-wide-column\" *ngIf=\"kid.getPConnect().getRawMetadata()['name'].toLowerCase() === 'b'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n </div>\n</div>\n", styles: ["*{box-sizing:border-box}.psdk-narrow-wide-column{display:flow-root;height:100%}.psdk-narrow-column{float:left;min-width:30%;padding:0rem .3125rem}.psdk-wide-column{float:left;width:70%;padding:0rem .3125rem}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: NarrowWideFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
20
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: NarrowWideFormComponent, isStandalone: true, selector: "app-narrow-wide-form", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"psdk-narrow-wide-column\">\n <div *ngFor=\"let kid of arChildren$\">\n <div class=\"psdk-narrow-column\" *ngIf=\"kid.getPConnect().getRawMetadata()['name'].toLowerCase() === 'left'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n <div class=\"psdk-wide-column\" *ngIf=\"kid.getPConnect().getRawMetadata()['name'].toLowerCase() === 'right'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n <div class=\"psdk-narrow-column\" *ngIf=\"kid.getPConnect().getRawMetadata()['name'].toLowerCase() === 'a'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n <div class=\"psdk-wide-column\" *ngIf=\"kid.getPConnect().getRawMetadata()['name'].toLowerCase() === 'b'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n </div>\n</div>\n", styles: ["*{box-sizing:border-box}.psdk-narrow-wide-column{display:flow-root;height:100%}.psdk-narrow-column{float:left;min-width:30%;padding:0rem .3125rem}.psdk-wide-column{float:left;width:70%;padding:0rem .3125rem}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i1.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
21
21
  }
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NarrowWideFormComponent, decorators: [{
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: NarrowWideFormComponent, decorators: [{
23
23
  type: Component,
24
24
  args: [{ selector: 'app-narrow-wide-form', standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)], template: "<div class=\"psdk-narrow-wide-column\">\n <div *ngFor=\"let kid of arChildren$\">\n <div class=\"psdk-narrow-column\" *ngIf=\"kid.getPConnect().getRawMetadata()['name'].toLowerCase() === 'left'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n <div class=\"psdk-wide-column\" *ngIf=\"kid.getPConnect().getRawMetadata()['name'].toLowerCase() === 'right'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n <div class=\"psdk-narrow-column\" *ngIf=\"kid.getPConnect().getRawMetadata()['name'].toLowerCase() === 'a'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n <div class=\"psdk-wide-column\" *ngIf=\"kid.getPConnect().getRawMetadata()['name'].toLowerCase() === 'b'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n </div>\n</div>\n", styles: ["*{box-sizing:border-box}.psdk-narrow-wide-column{display:flow-root;height:100%}.psdk-narrow-column{float:left;min-width:30%;padding:0rem .3125rem}.psdk-wide-column{float:left;width:70%;padding:0rem .3125rem}\n"] }]
25
25
  }], propDecorators: { pConn$: [{
@@ -27,4 +27,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27
27
  }], formGroup$: [{
28
28
  type: Input
29
29
  }] } });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFycm93LXdpZGUtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvdGVtcGxhdGUvbmFycm93LXdpZGUtZm9ybS9uYXJyb3ctd2lkZS1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9uYXJyb3ctd2lkZS1mb3JtL25hcnJvdy13aWRlLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsVUFBVSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOERBQThELENBQUM7OztBQVN4RyxNQUFNLE9BQU8sdUJBQXVCO0lBTWxDLFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBRTNCLElBQUksTUFBTSxDQUFDLGFBQWEsSUFBSSxNQUFNLENBQUMsYUFBYSxLQUFLLE1BQU0sQ0FBQyxZQUFZLEVBQUU7WUFDeEUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFXLENBQUM7SUFDeEQsQ0FBQzsrR0FwQlUsdUJBQXVCO21HQUF2Qix1QkFBdUIsNkpDWnBDLG1qQ0FnQkEsNlNETlksWUFBWSxxWEFBbUIsd0JBQXdCOzs0RkFFdEQsdUJBQXVCO2tCQVBuQyxTQUFTOytCQUNFLHNCQUFzQixjQUdwQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUM7OEJBRzFELE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBmb3J3YXJkUmVmLCBTaW1wbGVDaGFuZ2VzLCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21wb25lbnRNYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2NvbXBvbmVudC1tYXBwZXIvY29tcG9uZW50LW1hcHBlci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbmFycm93LXdpZGUtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9uYXJyb3ctd2lkZS1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbmFycm93LXdpZGUtZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBmb3J3YXJkUmVmKCgpID0+IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCldXG59KVxuZXhwb3J0IGNsYXNzIE5hcnJvd1dpZGVGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcbiAgQElucHV0KCkgZm9ybUdyb3VwJDogRm9ybUdyb3VwO1xuXG4gIGFyQ2hpbGRyZW4kOiBhbnlbXTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCB7IHBDb25uJCB9ID0gY2hhbmdlcztcblxuICAgIGlmIChwQ29ubiQucHJldmlvdXNWYWx1ZSAmJiBwQ29ubiQucHJldmlvdXNWYWx1ZSAhPT0gcENvbm4kLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlU2VsZigpIHtcbiAgICB0aGlzLmFyQ2hpbGRyZW4kID0gdGhpcy5wQ29ubiQuZ2V0Q2hpbGRyZW4oKSBhcyBhbnlbXTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInBzZGstbmFycm93LXdpZGUtY29sdW1uXCI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IGtpZCBvZiBhckNoaWxkcmVuJFwiPlxuICAgIDxkaXYgY2xhc3M9XCJwc2RrLW5hcnJvdy1jb2x1bW5cIiAqbmdJZj1cImtpZC5nZXRQQ29ubmVjdCgpLmdldFJhd01ldGFkYXRhKClbJ25hbWUnXS50b0xvd2VyQ2FzZSgpID09PSAnbGVmdCdcIj5cbiAgICAgIDxjb21wb25lbnQtbWFwcGVyIG5hbWU9XCJSZWdpb25cIiBbcHJvcHNdPVwieyBwQ29ubiQ6IGtpZC5nZXRQQ29ubmVjdCgpLCBmb3JtR3JvdXAkIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInBzZGstd2lkZS1jb2x1bW5cIiAqbmdJZj1cImtpZC5nZXRQQ29ubmVjdCgpLmdldFJhd01ldGFkYXRhKClbJ25hbWUnXS50b0xvd2VyQ2FzZSgpID09PSAncmlnaHQnXCI+XG4gICAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiUmVnaW9uXCIgW3Byb3BzXT1cInsgcENvbm4kOiBraWQuZ2V0UENvbm5lY3QoKSwgZm9ybUdyb3VwJCB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwc2RrLW5hcnJvdy1jb2x1bW5cIiAqbmdJZj1cImtpZC5nZXRQQ29ubmVjdCgpLmdldFJhd01ldGFkYXRhKClbJ25hbWUnXS50b0xvd2VyQ2FzZSgpID09PSAnYSdcIj5cbiAgICAgIDxjb21wb25lbnQtbWFwcGVyIG5hbWU9XCJSZWdpb25cIiBbcHJvcHNdPVwieyBwQ29ubiQ6IGtpZC5nZXRQQ29ubmVjdCgpLCBmb3JtR3JvdXAkIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInBzZGstd2lkZS1jb2x1bW5cIiAqbmdJZj1cImtpZC5nZXRQQ29ubmVjdCgpLmdldFJhd01ldGFkYXRhKClbJ25hbWUnXS50b0xvd2VyQ2FzZSgpID09PSAnYidcIj5cbiAgICAgIDxjb21wb25lbnQtbWFwcGVyIG5hbWU9XCJSZWdpb25cIiBbcHJvcHNdPVwieyBwQ29ubiQ6IGtpZC5nZXRQQ29ubmVjdCgpLCBmb3JtR3JvdXAkIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFycm93LXdpZGUtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvdGVtcGxhdGUvbmFycm93LXdpZGUtZm9ybS9uYXJyb3ctd2lkZS1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9uYXJyb3ctd2lkZS1mb3JtL25hcnJvdy13aWRlLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsVUFBVSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOERBQThELENBQUM7OztBQVN4RyxNQUFNLE9BQU8sdUJBQXVCO0lBTWxDLFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBRTNCLElBQUksTUFBTSxDQUFDLGFBQWEsSUFBSSxNQUFNLENBQUMsYUFBYSxLQUFLLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN6RSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQy9DLENBQUM7K0dBcEJVLHVCQUF1QjttR0FBdkIsdUJBQXVCLDZKQ1pwQyxtakNBZ0JBLDhSRE5ZLFlBQVksK1RBQW1CLHdCQUF3Qjs7NEZBRXRELHVCQUF1QjtrQkFQbkMsU0FBUzsrQkFDRSxzQkFBc0IsY0FHcEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDOzhCQUcxRCxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgZm9yd2FyZFJlZiwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW5hcnJvdy13aWRlLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vbmFycm93LXdpZGUtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25hcnJvdy13aWRlLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBOYXJyb3dXaWRlRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcblxuICBhckNoaWxkcmVuJDogYW55W107XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgeyBwQ29ubiQgfSA9IGNoYW5nZXM7XG5cbiAgICBpZiAocENvbm4kLnByZXZpb3VzVmFsdWUgJiYgcENvbm4kLnByZXZpb3VzVmFsdWUgIT09IHBDb25uJC5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVNlbGYoKSB7XG4gICAgdGhpcy5hckNoaWxkcmVuJCA9IHRoaXMucENvbm4kLmdldENoaWxkcmVuKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwc2RrLW5hcnJvdy13aWRlLWNvbHVtblwiPlxuICA8ZGl2ICpuZ0Zvcj1cImxldCBraWQgb2YgYXJDaGlsZHJlbiRcIj5cbiAgICA8ZGl2IGNsYXNzPVwicHNkay1uYXJyb3ctY29sdW1uXCIgKm5nSWY9XCJraWQuZ2V0UENvbm5lY3QoKS5nZXRSYXdNZXRhZGF0YSgpWyduYW1lJ10udG9Mb3dlckNhc2UoKSA9PT0gJ2xlZnQnXCI+XG4gICAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiUmVnaW9uXCIgW3Byb3BzXT1cInsgcENvbm4kOiBraWQuZ2V0UENvbm5lY3QoKSwgZm9ybUdyb3VwJCB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwc2RrLXdpZGUtY29sdW1uXCIgKm5nSWY9XCJraWQuZ2V0UENvbm5lY3QoKS5nZXRSYXdNZXRhZGF0YSgpWyduYW1lJ10udG9Mb3dlckNhc2UoKSA9PT0gJ3JpZ2h0J1wiPlxuICAgICAgPGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIlJlZ2lvblwiIFtwcm9wc109XCJ7IHBDb25uJDoga2lkLmdldFBDb25uZWN0KCksIGZvcm1Hcm91cCQgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicHNkay1uYXJyb3ctY29sdW1uXCIgKm5nSWY9XCJraWQuZ2V0UENvbm5lY3QoKS5nZXRSYXdNZXRhZGF0YSgpWyduYW1lJ10udG9Mb3dlckNhc2UoKSA9PT0gJ2EnXCI+XG4gICAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiUmVnaW9uXCIgW3Byb3BzXT1cInsgcENvbm4kOiBraWQuZ2V0UENvbm5lY3QoKSwgZm9ybUdyb3VwJCB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwc2RrLXdpZGUtY29sdW1uXCIgKm5nSWY9XCJraWQuZ2V0UENvbm5lY3QoKS5nZXRSYXdNZXRhZGF0YSgpWyduYW1lJ10udG9Mb3dlckNhc2UoKSA9PT0gJ2InXCI+XG4gICAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiUmVnaW9uXCIgW3Byb3BzXT1cInsgcENvbm4kOiBraWQuZ2V0UENvbm5lY3QoKSwgZm9ybUdyb3VwJCB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,9 +1,10 @@
1
1
  import { Component, Input, forwardRef } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component';
4
+ import { FormTemplateBase } from '../base/form-template-base';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "@angular/common";
6
- export class OneColumnComponent {
7
+ export class OneColumnComponent extends FormTemplateBase {
7
8
  ngOnInit() {
8
9
  this.updateSelf();
9
10
  }
@@ -16,10 +17,10 @@ export class OneColumnComponent {
16
17
  updateSelf() {
17
18
  this.arChildren$ = this.pConn$.getChildren();
18
19
  }
19
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OneColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
20
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OneColumnComponent, isStandalone: true, selector: "app-one-column", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, usesOnChanges: true, ngImport: i0, template: "<div *ngFor=\"let kid of arChildren$\">\n <div *ngIf=\"kid.getPConnect().getRawMetadata()['type'] === 'Region' && kid.getPConnect().getRawMetadata()['name'] === 'A'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n <div *ngIf=\"kid.getPConnect().getRawMetadata()['type'] === 'View'\">\n <component-mapper name=\"View\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n <div *ngIf=\"kid.getPConnect().getRawMetadata()['type'] === 'CaseCreateStage'\">\n <component-mapper name=\"CaseCreateStage\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n</div>\n", styles: ["*{box-sizing:border-box}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: OneColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: OneColumnComponent, isStandalone: true, selector: "app-one-column", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div *ngFor=\"let kid of arChildren$\">\n <div *ngIf=\"kid.getPConnect().getRawMetadata()['type'] === 'Region' && kid.getPConnect().getRawMetadata()['name'] === 'A'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n <div *ngIf=\"kid.getPConnect().getRawMetadata()['type'] === 'View'\">\n <component-mapper name=\"View\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n <div *ngIf=\"kid.getPConnect().getRawMetadata()['type'] === 'CaseCreateStage'\">\n <component-mapper name=\"CaseCreateStage\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n</div>\n", styles: ["*{box-sizing:border-box}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i1.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i1.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
21
22
  }
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OneColumnComponent, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: OneColumnComponent, decorators: [{
23
24
  type: Component,
24
25
  args: [{ selector: 'app-one-column', standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)], template: "<div *ngFor=\"let kid of arChildren$\">\n <div *ngIf=\"kid.getPConnect().getRawMetadata()['type'] === 'Region' && kid.getPConnect().getRawMetadata()['name'] === 'A'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n <div *ngIf=\"kid.getPConnect().getRawMetadata()['type'] === 'View'\">\n <component-mapper name=\"View\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n <div *ngIf=\"kid.getPConnect().getRawMetadata()['type'] === 'CaseCreateStage'\">\n <component-mapper name=\"CaseCreateStage\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n</div>\n", styles: ["*{box-sizing:border-box}\n"] }]
25
26
  }], propDecorators: { pConn$: [{
@@ -27,4 +28,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27
28
  }], formGroup$: [{
28
29
  type: Input
29
30
  }] } });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lLWNvbHVtbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvdGVtcGxhdGUvb25lLWNvbHVtbi9vbmUtY29sdW1uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9vbmUtY29sdW1uL29uZS1jb2x1bW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsVUFBVSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOERBQThELENBQUM7OztBQVN4RyxNQUFNLE9BQU8sa0JBQWtCO0lBTTdCLFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBRTNCLElBQUksTUFBTSxDQUFDLGFBQWEsSUFBSSxNQUFNLENBQUMsYUFBYSxLQUFLLE1BQU0sQ0FBQyxZQUFZLEVBQUU7WUFDeEUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFXLENBQUM7SUFDeEQsQ0FBQzsrR0FwQlUsa0JBQWtCO21HQUFsQixrQkFBa0IsdUpDWi9CLHlzQkFXQSxzSEREWSxZQUFZLHFYQUFtQix3QkFBd0I7OzRGQUV0RCxrQkFBa0I7a0JBUDlCLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBR2QsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDOzhCQUcxRCxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgZm9yd2FyZFJlZiwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW9uZS1jb2x1bW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vb25lLWNvbHVtbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL29uZS1jb2x1bW4uY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBPbmVDb2x1bW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuICBASW5wdXQoKSBmb3JtR3JvdXAkOiBGb3JtR3JvdXA7XG5cbiAgYXJDaGlsZHJlbiQ6IGFueVtdO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHsgcENvbm4kIH0gPSBjaGFuZ2VzO1xuXG4gICAgaWYgKHBDb25uJC5wcmV2aW91c1ZhbHVlICYmIHBDb25uJC5wcmV2aW91c1ZhbHVlICE9PSBwQ29ubiQuY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVTZWxmKCkge1xuICAgIHRoaXMuYXJDaGlsZHJlbiQgPSB0aGlzLnBDb25uJC5nZXRDaGlsZHJlbigpIGFzIGFueVtdO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0Zvcj1cImxldCBraWQgb2YgYXJDaGlsZHJlbiRcIj5cbiAgPGRpdiAqbmdJZj1cImtpZC5nZXRQQ29ubmVjdCgpLmdldFJhd01ldGFkYXRhKClbJ3R5cGUnXSA9PT0gJ1JlZ2lvbicgJiYga2lkLmdldFBDb25uZWN0KCkuZ2V0UmF3TWV0YWRhdGEoKVsnbmFtZSddID09PSAnQSdcIj5cbiAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiUmVnaW9uXCIgW3Byb3BzXT1cInsgcENvbm4kOiBraWQuZ2V0UENvbm5lY3QoKSwgZm9ybUdyb3VwJCB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImtpZC5nZXRQQ29ubmVjdCgpLmdldFJhd01ldGFkYXRhKClbJ3R5cGUnXSA9PT0gJ1ZpZXcnXCI+XG4gICAgPGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIlZpZXdcIiBbcHJvcHNdPVwieyBwQ29ubiQ6IGtpZC5nZXRQQ29ubmVjdCgpLCBmb3JtR3JvdXAkIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwia2lkLmdldFBDb25uZWN0KCkuZ2V0UmF3TWV0YWRhdGEoKVsndHlwZSddID09PSAnQ2FzZUNyZWF0ZVN0YWdlJ1wiPlxuICAgIDxjb21wb25lbnQtbWFwcGVyIG5hbWU9XCJDYXNlQ3JlYXRlU3RhZ2VcIiBbcHJvcHNdPVwieyBwQ29ubiQ6IGtpZC5nZXRQQ29ubmVjdCgpLCBmb3JtR3JvdXAkIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lLWNvbHVtbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvdGVtcGxhdGUvb25lLWNvbHVtbi9vbmUtY29sdW1uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9vbmUtY29sdW1uL29uZS1jb2x1bW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsVUFBVSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDeEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQVM5RCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsZ0JBQWdCO0lBTXRELFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBRTNCLElBQUksTUFBTSxDQUFDLGFBQWEsSUFBSSxNQUFNLENBQUMsYUFBYSxLQUFLLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN6RSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQy9DLENBQUM7K0dBcEJVLGtCQUFrQjttR0FBbEIsa0JBQWtCLDhLQ2IvQix5c0JBV0EsdUdEQVksWUFBWSwrVEFBbUIsd0JBQXdCOzs0RkFFdEQsa0JBQWtCO2tCQVA5QixTQUFTOytCQUNFLGdCQUFnQixjQUdkLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQzs4QkFHakQsTUFBTTtzQkFBdkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBmb3J3YXJkUmVmLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21wb25lbnRNYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2NvbXBvbmVudC1tYXBwZXIvY29tcG9uZW50LW1hcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybVRlbXBsYXRlQmFzZSB9IGZyb20gJy4uL2Jhc2UvZm9ybS10ZW1wbGF0ZS1iYXNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW9uZS1jb2x1bW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vb25lLWNvbHVtbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL29uZS1jb2x1bW4uY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBPbmVDb2x1bW5Db21wb25lbnQgZXh0ZW5kcyBGb3JtVGVtcGxhdGVCYXNlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBvdmVycmlkZSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcbiAgQElucHV0KCkgZm9ybUdyb3VwJDogRm9ybUdyb3VwO1xuXG4gIGFyQ2hpbGRyZW4kOiBhbnlbXTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCB7IHBDb25uJCB9ID0gY2hhbmdlcztcblxuICAgIGlmIChwQ29ubiQucHJldmlvdXNWYWx1ZSAmJiBwQ29ubiQucHJldmlvdXNWYWx1ZSAhPT0gcENvbm4kLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlU2VsZigpIHtcbiAgICB0aGlzLmFyQ2hpbGRyZW4kID0gdGhpcy5wQ29ubiQuZ2V0Q2hpbGRyZW4oKTtcbiAgfVxufVxuIiwiPGRpdiAqbmdGb3I9XCJsZXQga2lkIG9mIGFyQ2hpbGRyZW4kXCI+XG4gIDxkaXYgKm5nSWY9XCJraWQuZ2V0UENvbm5lY3QoKS5nZXRSYXdNZXRhZGF0YSgpWyd0eXBlJ10gPT09ICdSZWdpb24nICYmIGtpZC5nZXRQQ29ubmVjdCgpLmdldFJhd01ldGFkYXRhKClbJ25hbWUnXSA9PT0gJ0EnXCI+XG4gICAgPGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIlJlZ2lvblwiIFtwcm9wc109XCJ7IHBDb25uJDoga2lkLmdldFBDb25uZWN0KCksIGZvcm1Hcm91cCQgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJraWQuZ2V0UENvbm5lY3QoKS5nZXRSYXdNZXRhZGF0YSgpWyd0eXBlJ10gPT09ICdWaWV3J1wiPlxuICAgIDxjb21wb25lbnQtbWFwcGVyIG5hbWU9XCJWaWV3XCIgW3Byb3BzXT1cInsgcENvbm4kOiBraWQuZ2V0UENvbm5lY3QoKSwgZm9ybUdyb3VwJCB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImtpZC5nZXRQQ29ubmVjdCgpLmdldFJhd01ldGFkYXRhKClbJ3R5cGUnXSA9PT0gJ0Nhc2VDcmVhdGVTdGFnZSdcIj5cbiAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiQ2FzZUNyZWF0ZVN0YWdlXCIgW3Byb3BzXT1cInsgcENvbm4kOiBraWQuZ2V0UENvbm5lY3QoKSwgZm9ybUdyb3VwJCB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -2,10 +2,10 @@ import { Component, Input, forwardRef } from '@angular/core';
2
2
  import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component';
3
3
  import * as i0 from "@angular/core";
4
4
  export class OneColumnPageComponent {
5
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OneColumnPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OneColumnPageComponent, isStandalone: true, selector: "app-one-column-page", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, ngImport: i0, template: "<component-mapper name=\"OneColumn\" [props]=\"{ formGroup$, pConn$ }\"></component-mapper>\n", styles: [""], dependencies: [{ kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: OneColumnPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: OneColumnPageComponent, isStandalone: true, selector: "app-one-column-page", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, ngImport: i0, template: "<component-mapper name=\"OneColumn\" [props]=\"{ formGroup$, pConn$ }\"></component-mapper>\n", styles: [""], dependencies: [{ kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
7
7
  }
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OneColumnPageComponent, decorators: [{
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: OneColumnPageComponent, decorators: [{
9
9
  type: Component,
10
10
  args: [{ selector: 'app-one-column-page', standalone: true, imports: [forwardRef(() => ComponentMapperComponent)], template: "<component-mapper name=\"OneColumn\" [props]=\"{ formGroup$, pConn$ }\"></component-mapper>\n" }]
11
11
  }], propDecorators: { pConn$: [{
@@ -13,4 +13,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
13
13
  }], formGroup$: [{
14
14
  type: Input
15
15
  }] } });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lLWNvbHVtbi1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9vbmUtY29sdW1uLXBhZ2Uvb25lLWNvbHVtbi1wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9vbmUtY29sdW1uLXBhZ2Uvb25lLWNvbHVtbi1wYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7QUFTeEcsTUFBTSxPQUFPLHNCQUFzQjsrR0FBdEIsc0JBQXNCO21HQUF0QixzQkFBc0IsdUlDWG5DLCtGQUNBLDZGRFE2Qix3QkFBd0I7OzRGQUV4QyxzQkFBc0I7a0JBUGxDLFNBQVM7K0JBQ0UscUJBQXFCLGNBR25CLElBQUksV0FDUCxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDOzhCQUc1QyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1vbmUtY29sdW1uLXBhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vb25lLWNvbHVtbi1wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb25lLWNvbHVtbi1wYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtmb3J3YXJkUmVmKCgpID0+IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCldXG59KVxuZXhwb3J0IGNsYXNzIE9uZUNvbHVtblBhZ2VDb21wb25lbnQge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcbiAgQElucHV0KCkgZm9ybUdyb3VwJDogRm9ybUdyb3VwO1xufVxuIiwiPGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIk9uZUNvbHVtblwiIFtwcm9wc109XCJ7IGZvcm1Hcm91cCQsIHBDb25uJCB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuIl19
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lLWNvbHVtbi1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9vbmUtY29sdW1uLXBhZ2Uvb25lLWNvbHVtbi1wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9vbmUtY29sdW1uLXBhZ2Uvb25lLWNvbHVtbi1wYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7QUFTeEcsTUFBTSxPQUFPLHNCQUFzQjsrR0FBdEIsc0JBQXNCO21HQUF0QixzQkFBc0IsdUlDWG5DLCtGQUNBLDhFRFE2Qix3QkFBd0I7OzRGQUV4QyxzQkFBc0I7a0JBUGxDLFNBQVM7K0JBQ0UscUJBQXFCLGNBR25CLElBQUksV0FDUCxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDOzhCQUc1QyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1vbmUtY29sdW1uLXBhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vb25lLWNvbHVtbi1wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb25lLWNvbHVtbi1wYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtmb3J3YXJkUmVmKCgpID0+IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCldXG59KVxuZXhwb3J0IGNsYXNzIE9uZUNvbHVtblBhZ2VDb21wb25lbnQge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcbiAgQElucHV0KCkgZm9ybUdyb3VwJDogRm9ybUdyb3VwO1xufVxuIiwiPGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIk9uZUNvbHVtblwiIFtwcm9wc109XCJ7IGZvcm1Hcm91cCQsIHBDb25uJCB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuIl19