@pega/angular-sdk-components 24.1.10 → 24.2.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/esm2022/lib/_bridge/angular-pconnect.mjs +3 -3
  2. package/esm2022/lib/_bridge/component-mapper/component-mapper.component.mjs +6 -13
  3. package/esm2022/lib/_components/designSystemExtension/alert/alert.component.mjs +3 -3
  4. package/esm2022/lib/_components/designSystemExtension/alert-banner/alert-banner.component.mjs +4 -4
  5. package/esm2022/lib/_components/designSystemExtension/banner/banner.component.mjs +3 -3
  6. package/esm2022/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.mjs +4 -4
  7. package/esm2022/lib/_components/designSystemExtension/field-group/field-group.component.mjs +3 -3
  8. package/esm2022/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.mjs +5 -6
  9. package/esm2022/lib/_components/designSystemExtension/material-details/material-details.component.mjs +3 -3
  10. package/esm2022/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.mjs +13 -6
  11. package/esm2022/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.mjs +3 -3
  12. package/esm2022/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.mjs +3 -3
  13. package/esm2022/lib/_components/designSystemExtension/material-utility/material-utility.component.mjs +3 -3
  14. package/esm2022/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.mjs +4 -4
  15. package/esm2022/lib/_components/designSystemExtension/operator/operator.component.mjs +9 -7
  16. package/esm2022/lib/_components/designSystemExtension/pulse/pulse.component.mjs +9 -9
  17. package/esm2022/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.mjs +3 -3
  18. package/esm2022/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.mjs +3 -3
  19. package/esm2022/lib/_components/field/auto-complete/auto-complete.component.mjs +23 -13
  20. package/esm2022/lib/_components/field/cancel-alert/cancel-alert.component.mjs +3 -3
  21. package/esm2022/lib/_components/field/check-box/check-box.component.mjs +12 -10
  22. package/esm2022/lib/_components/field/currency/currency.component.mjs +39 -21
  23. package/esm2022/lib/_components/field/date/date.component.mjs +19 -39
  24. package/esm2022/lib/_components/field/date-time/date-time.component.mjs +32 -17
  25. package/esm2022/lib/_components/field/decimal/decimal.component.mjs +43 -23
  26. package/esm2022/lib/_components/field/dropdown/dropdown.component.mjs +133 -25
  27. package/esm2022/lib/_components/field/email/email.component.mjs +22 -7
  28. package/esm2022/lib/_components/field/group/group.component.mjs +6 -6
  29. package/esm2022/lib/_components/field/integer/integer.component.mjs +20 -7
  30. package/esm2022/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.mjs +8 -7
  31. package/esm2022/lib/_components/field/multiselect/multiselect.component.mjs +13 -6
  32. package/esm2022/lib/_components/field/percentage/percentage.component.mjs +39 -23
  33. package/esm2022/lib/_components/field/phone/phone.component.mjs +17 -29
  34. package/esm2022/lib/_components/field/radio-buttons/radio-buttons.component.mjs +10 -12
  35. package/esm2022/lib/_components/field/rich-text/rich-text.component.mjs +17 -11
  36. package/esm2022/lib/_components/field/scalar-list/scalar-list.component.mjs +7 -8
  37. package/esm2022/lib/_components/field/semantic-link/semantic-link.component.mjs +3 -3
  38. package/esm2022/lib/_components/field/text/text.component.mjs +12 -8
  39. package/esm2022/lib/_components/field/text-area/text-area.component.mjs +21 -9
  40. package/esm2022/lib/_components/field/text-content/text-content.component.mjs +3 -3
  41. package/esm2022/lib/_components/field/text-input/text-input.component.mjs +20 -7
  42. package/esm2022/lib/_components/field/time/time.component.mjs +31 -10
  43. package/esm2022/lib/_components/field/url/url.component.mjs +20 -7
  44. package/esm2022/lib/_components/field/user-reference/user-reference.component.mjs +102 -23
  45. package/esm2022/lib/_components/infra/Containers/flow-container/flow-container.component.mjs +18 -44
  46. package/esm2022/lib/_components/infra/Containers/flow-container/helpers.mjs +3 -3
  47. package/esm2022/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.mjs +3 -3
  48. package/esm2022/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.mjs +5 -12
  49. package/esm2022/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.mjs +4 -4
  50. package/esm2022/lib/_components/infra/Containers/view-container/helper.mjs +22 -0
  51. package/esm2022/lib/_components/infra/Containers/view-container/view-container.component.mjs +9 -16
  52. package/esm2022/lib/_components/infra/action-buttons/action-buttons.component.mjs +5 -5
  53. package/esm2022/lib/_components/infra/assignment/assignment.component.mjs +73 -49
  54. package/esm2022/lib/_components/infra/assignment-card/assignment-card.component.mjs +5 -5
  55. package/esm2022/lib/_components/infra/dashboard-filter/dashboard-filter.component.mjs +3 -3
  56. package/esm2022/lib/_components/infra/defer-load/defer-load.component.mjs +10 -8
  57. package/esm2022/lib/_components/infra/error-boundary/error-boundary.component.mjs +3 -3
  58. package/esm2022/lib/_components/infra/multi-step/multi-step.component.mjs +3 -3
  59. package/esm2022/lib/_components/infra/navbar/navbar.component.mjs +5 -5
  60. package/esm2022/lib/_components/infra/reference/reference.component.mjs +74 -81
  61. package/esm2022/lib/_components/infra/region/region.component.mjs +3 -3
  62. package/esm2022/lib/_components/infra/root-container/root-container.component.mjs +25 -30
  63. package/esm2022/lib/_components/infra/stages/stages.component.mjs +5 -5
  64. package/esm2022/lib/_components/infra/view/view.component.mjs +22 -7
  65. package/esm2022/lib/_components/template/app-shell/app-shell.component.mjs +20 -4
  66. package/esm2022/lib/_components/template/banner-page/banner-page.component.mjs +3 -3
  67. package/esm2022/lib/_components/template/base/details-template-base.mjs +56 -0
  68. package/esm2022/lib/_components/template/base/form-template-base.mjs +16 -0
  69. package/esm2022/lib/_components/template/case-summary/case-summary.component.mjs +4 -4
  70. package/esm2022/lib/_components/template/case-view/case-view.component.mjs +11 -16
  71. package/esm2022/lib/_components/template/confirmation/confirmation.component.mjs +6 -6
  72. package/esm2022/lib/_components/template/data-reference/data-reference.component.mjs +13 -8
  73. package/esm2022/lib/_components/template/default-form/default-form.component.mjs +37 -25
  74. package/esm2022/lib/_components/template/details/details.component.mjs +12 -39
  75. package/esm2022/lib/_components/template/details-narrow-wide/details-narrow-wide.component.mjs +11 -38
  76. package/esm2022/lib/_components/template/details-one-column/details-one-column.component.mjs +12 -41
  77. package/esm2022/lib/_components/template/details-sub-tabs/details-sub-tabs.component.mjs +13 -40
  78. package/esm2022/lib/_components/template/details-three-column/details-three-column.component.mjs +12 -41
  79. package/esm2022/lib/_components/template/details-two-column/details-two-column.component.mjs +13 -42
  80. package/esm2022/lib/_components/template/details-wide-narrow/details-wide-narrow.component.mjs +12 -41
  81. package/esm2022/lib/_components/template/dynamic-tabs/dynamic-tabs.component.mjs +8 -7
  82. package/esm2022/lib/_components/template/field-group-list/field-group-list.component.mjs +3 -3
  83. package/esm2022/lib/_components/template/field-group-template/field-group-template.component.mjs +49 -42
  84. package/esm2022/lib/_components/template/field-value-list/field-value-list.component.mjs +5 -5
  85. package/esm2022/lib/_components/template/inline-dashboard/inline-dashboard.component.mjs +3 -3
  86. package/esm2022/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.mjs +5 -5
  87. package/esm2022/lib/_components/template/list-page/list-page.component.mjs +3 -3
  88. package/esm2022/lib/_components/template/list-view/list-view.component.mjs +24 -9
  89. package/esm2022/lib/_components/template/list-view/listViewHelpers.mjs +3 -3
  90. package/esm2022/lib/_components/template/list-view/utils.mjs +1 -1
  91. package/esm2022/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.mjs +3 -3
  92. package/esm2022/lib/_components/template/narrow-wide-form/narrow-wide-form.component.mjs +4 -4
  93. package/esm2022/lib/_components/template/one-column/one-column.component.mjs +6 -5
  94. package/esm2022/lib/_components/template/one-column-page/one-column-page.component.mjs +3 -3
  95. package/esm2022/lib/_components/template/one-column-tab/one-column-tab.component.mjs +4 -4
  96. package/esm2022/lib/_components/template/page/page.component.mjs +4 -4
  97. package/esm2022/lib/_components/template/promoted-filters/promoted-filters.component.mjs +4 -4
  98. package/esm2022/lib/_components/template/repeating-structures/repeating-structures.component.mjs +4 -4
  99. package/esm2022/lib/_components/template/simple-table/simple-table.component.mjs +3 -3
  100. package/esm2022/lib/_components/template/simple-table-manual/helpers.mjs +10 -9
  101. package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +61 -29
  102. package/esm2022/lib/_components/template/simple-table-select/simple-table-select.component.mjs +5 -5
  103. package/esm2022/lib/_components/template/single-reference-readonly/single-reference-readonly.component.mjs +3 -3
  104. package/esm2022/lib/_components/template/sub-tabs/sub-tabs.component.mjs +4 -4
  105. package/esm2022/lib/_components/template/three-column/three-column.component.mjs +6 -5
  106. package/esm2022/lib/_components/template/three-column-page/three-column-page.component.mjs +3 -3
  107. package/esm2022/lib/_components/template/two-column/two-column.component.mjs +6 -5
  108. package/esm2022/lib/_components/template/two-column-page/two-column-page.component.mjs +3 -3
  109. package/esm2022/lib/_components/template/two-column-tab/two-column-tab.component.mjs +4 -4
  110. package/esm2022/lib/_components/template/utils.mjs +17 -1
  111. package/esm2022/lib/_components/template/wide-narrow-form/wide-narrow-form.component.mjs +6 -5
  112. package/esm2022/lib/_components/template/wide-narrow-page/wide-narrow-page.component.mjs +4 -4
  113. package/esm2022/lib/_components/template/wss-nav-bar/wss-nav-bar.component.mjs +5 -5
  114. package/esm2022/lib/_components/widget/app-announcement/app-announcement.component.mjs +3 -3
  115. package/esm2022/lib/_components/widget/attachment/attachment.component.mjs +6 -8
  116. package/esm2022/lib/_components/widget/case-history/case-history.component.mjs +3 -3
  117. package/esm2022/lib/_components/widget/feed-container/feed-container.component.mjs +5 -5
  118. package/esm2022/lib/_components/widget/file-utility/file-utility.component.mjs +4 -4
  119. package/esm2022/lib/_components/widget/list-utility/list-utility.component.mjs +3 -3
  120. package/esm2022/lib/_components/widget/quick-create/quick-create.component.mjs +3 -3
  121. package/esm2022/lib/_components/widget/todo/todo.component.mjs +79 -63
  122. package/esm2022/lib/_components/widget/utility/utility.component.mjs +3 -3
  123. package/esm2022/lib/_directives/thousand-seperator.directive.mjs +4 -4
  124. package/esm2022/lib/_helpers/createstage-utils.mjs +15 -0
  125. package/esm2022/lib/_helpers/field-group-utils.mjs +3 -3
  126. package/esm2022/lib/_helpers/filter-utils.mjs +1 -2
  127. package/esm2022/lib/_helpers/formatters/boolean.mjs +2 -2
  128. package/esm2022/lib/_helpers/formatters/common.mjs +3 -2
  129. package/esm2022/lib/_helpers/formatters/currency.mjs +2 -2
  130. package/esm2022/lib/_helpers/formatters/date.mjs +5 -5
  131. package/esm2022/lib/_helpers/formatters/format-utils.mjs +10 -2
  132. package/esm2022/lib/_helpers/formatters/index.mjs +30 -16
  133. package/esm2022/lib/_helpers/template-utils.mjs +3 -3
  134. package/esm2022/lib/_helpers/utils.mjs +44 -18
  135. package/esm2022/lib/_messages/error-messages.service.mjs +4 -4
  136. package/esm2022/lib/_messages/progress-spinner.service.mjs +3 -3
  137. package/esm2022/lib/_messages/update-worklist.service.mjs +3 -3
  138. package/esm2022/lib/_services/banner.service.mjs +35 -0
  139. package/esm2022/lib/_services/case.service.mjs +3 -3
  140. package/esm2022/lib/_services/datapage.service.mjs +3 -3
  141. package/esm2022/lib/_services/endpoints.mjs +1 -2
  142. package/esm2022/lib/_services/server-config.service.mjs +3 -3
  143. package/esm2022/public-api.mjs +16 -12
  144. package/fesm2022/pega-angular-sdk-components.mjs +1988 -1666
  145. package/fesm2022/pega-angular-sdk-components.mjs.map +1 -1
  146. package/lib/_components/designSystemExtension/banner/banner.component.d.ts +0 -1
  147. package/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.d.ts +0 -1
  148. package/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.d.ts +1 -1
  149. package/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.d.ts +2 -1
  150. package/lib/_components/designSystemExtension/operator/operator.component.d.ts +2 -3
  151. package/lib/_components/designSystemExtension/pulse/pulse.component.d.ts +2 -3
  152. package/lib/_components/field/auto-complete/auto-complete.component.d.ts +8 -3
  153. package/lib/_components/field/cancel-alert/cancel-alert.component.d.ts +0 -1
  154. package/lib/_components/field/check-box/check-box.component.d.ts +2 -3
  155. package/lib/_components/field/currency/currency.component.d.ts +6 -4
  156. package/lib/_components/field/date/date.component.d.ts +17 -7
  157. package/lib/_components/field/date-time/date-time.component.d.ts +10 -3
  158. package/lib/_components/field/decimal/decimal.component.d.ts +4 -4
  159. package/lib/_components/field/dropdown/dropdown.component.d.ts +14 -3
  160. package/lib/_components/field/email/email.component.d.ts +2 -1
  161. package/lib/_components/field/group/group.component.d.ts +0 -1
  162. package/lib/_components/field/integer/integer.component.d.ts +2 -1
  163. package/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.d.ts +1 -2
  164. package/lib/_components/field/multiselect/multiselect.component.d.ts +3 -3
  165. package/lib/_components/field/percentage/percentage.component.d.ts +6 -3
  166. package/lib/_components/field/phone/phone.component.d.ts +3 -8
  167. package/lib/_components/field/radio-buttons/radio-buttons.component.d.ts +2 -2
  168. package/lib/_components/field/rich-text/rich-text.component.d.ts +3 -2
  169. package/lib/_components/field/scalar-list/scalar-list.component.d.ts +0 -1
  170. package/lib/_components/field/semantic-link/semantic-link.component.d.ts +0 -1
  171. package/lib/_components/field/text/text.component.d.ts +3 -2
  172. package/lib/_components/field/text-area/text-area.component.d.ts +2 -1
  173. package/lib/_components/field/text-content/text-content.component.d.ts +0 -1
  174. package/lib/_components/field/text-input/text-input.component.d.ts +2 -1
  175. package/lib/_components/field/time/time.component.d.ts +3 -1
  176. package/lib/_components/field/url/url.component.d.ts +2 -1
  177. package/lib/_components/field/user-reference/user-reference.component.d.ts +7 -1
  178. package/lib/_components/infra/Containers/flow-container/flow-container.component.d.ts +0 -2
  179. package/lib/_components/infra/Containers/flow-container/helpers.d.ts +1 -0
  180. package/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.d.ts +0 -1
  181. package/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.d.ts +1 -4
  182. package/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.d.ts +0 -1
  183. package/lib/_components/infra/Containers/view-container/helper.d.ts +2 -0
  184. package/lib/_components/infra/Containers/view-container/view-container.component.d.ts +0 -1
  185. package/lib/_components/infra/action-buttons/action-buttons.component.d.ts +1 -1
  186. package/lib/_components/infra/assignment/assignment.component.d.ts +6 -4
  187. package/lib/_components/infra/assignment-card/assignment-card.component.d.ts +0 -1
  188. package/lib/_components/infra/dashboard-filter/dashboard-filter.component.d.ts +0 -1
  189. package/lib/_components/infra/defer-load/defer-load.component.d.ts +3 -3
  190. package/lib/_components/infra/error-boundary/error-boundary.component.d.ts +1 -1
  191. package/lib/_components/infra/multi-step/multi-step.component.d.ts +0 -1
  192. package/lib/_components/infra/navbar/navbar.component.d.ts +2 -3
  193. package/lib/_components/infra/reference/reference.component.d.ts +23 -3
  194. package/lib/_components/infra/region/region.component.d.ts +0 -1
  195. package/lib/_components/infra/root-container/root-container.component.d.ts +3 -2
  196. package/lib/_components/infra/stages/stages.component.d.ts +0 -1
  197. package/lib/_components/infra/view/view.component.d.ts +1 -1
  198. package/lib/_components/template/app-shell/app-shell.component.d.ts +0 -1
  199. package/lib/_components/template/banner-page/banner-page.component.d.ts +0 -1
  200. package/lib/_components/template/base/details-template-base.d.ts +21 -0
  201. package/lib/_components/template/base/form-template-base.d.ts +10 -0
  202. package/lib/_components/template/case-summary/case-summary.component.d.ts +0 -1
  203. package/lib/_components/template/case-view/case-view.component.d.ts +1 -3
  204. package/lib/_components/template/confirmation/confirmation.component.d.ts +0 -1
  205. package/lib/_components/template/data-reference/data-reference.component.d.ts +0 -1
  206. package/lib/_components/template/default-form/default-form.component.d.ts +8 -7
  207. package/lib/_components/template/details/details.component.d.ts +3 -12
  208. package/lib/_components/template/details-narrow-wide/details-narrow-wide.component.d.ts +3 -12
  209. package/lib/_components/template/details-one-column/details-one-column.component.d.ts +3 -14
  210. package/lib/_components/template/details-sub-tabs/details-sub-tabs.component.d.ts +3 -14
  211. package/lib/_components/template/details-three-column/details-three-column.component.d.ts +3 -14
  212. package/lib/_components/template/details-two-column/details-two-column.component.d.ts +3 -14
  213. package/lib/_components/template/details-wide-narrow/details-wide-narrow.component.d.ts +3 -14
  214. package/lib/_components/template/dynamic-tabs/dynamic-tabs.component.d.ts +1 -1
  215. package/lib/_components/template/field-group-template/field-group-template.component.d.ts +12 -9
  216. package/lib/_components/template/inline-dashboard/inline-dashboard.component.d.ts +0 -1
  217. package/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.d.ts +0 -1
  218. package/lib/_components/template/list-page/list-page.component.d.ts +0 -1
  219. package/lib/_components/template/list-view/list-view.component.d.ts +7 -3
  220. package/lib/_components/template/list-view/listViewHelpers.d.ts +1 -1
  221. package/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.d.ts +0 -1
  222. package/lib/_components/template/narrow-wide-form/narrow-wide-form.component.d.ts +0 -1
  223. package/lib/_components/template/one-column/one-column.component.d.ts +2 -2
  224. package/lib/_components/template/one-column-page/one-column-page.component.d.ts +0 -1
  225. package/lib/_components/template/one-column-tab/one-column-tab.component.d.ts +0 -1
  226. package/lib/_components/template/page/page.component.d.ts +0 -1
  227. package/lib/_components/template/promoted-filters/promoted-filters.component.d.ts +0 -1
  228. package/lib/_components/template/repeating-structures/repeating-structures.component.d.ts +0 -1
  229. package/lib/_components/template/simple-table/simple-table.component.d.ts +0 -1
  230. package/lib/_components/template/simple-table-manual/helpers.d.ts +4 -3
  231. package/lib/_components/template/simple-table-manual/simple-table-manual.component.d.ts +10 -3
  232. package/lib/_components/template/simple-table-select/simple-table-select.component.d.ts +0 -1
  233. package/lib/_components/template/single-reference-readonly/single-reference-readonly.component.d.ts +0 -1
  234. package/lib/_components/template/sub-tabs/sub-tabs.component.d.ts +0 -1
  235. package/lib/_components/template/three-column/three-column.component.d.ts +2 -2
  236. package/lib/_components/template/three-column-page/three-column-page.component.d.ts +0 -1
  237. package/lib/_components/template/two-column/two-column.component.d.ts +2 -2
  238. package/lib/_components/template/two-column-page/two-column-page.component.d.ts +0 -1
  239. package/lib/_components/template/two-column-tab/two-column-tab.component.d.ts +0 -1
  240. package/lib/_components/template/utils.d.ts +7 -0
  241. package/lib/_components/template/wide-narrow-form/wide-narrow-form.component.d.ts +2 -2
  242. package/lib/_components/template/wide-narrow-page/wide-narrow-page.component.d.ts +1 -2
  243. package/lib/_components/template/wss-nav-bar/wss-nav-bar.component.d.ts +3 -4
  244. package/lib/_components/widget/app-announcement/app-announcement.component.d.ts +0 -1
  245. package/lib/_components/widget/attachment/attachment.component.d.ts +3 -4
  246. package/lib/_components/widget/case-history/case-history.component.d.ts +0 -1
  247. package/lib/_components/widget/feed-container/feed-container.component.d.ts +2 -3
  248. package/lib/_components/widget/file-utility/file-utility.component.d.ts +1 -2
  249. package/lib/_components/widget/quick-create/quick-create.component.d.ts +0 -1
  250. package/lib/_components/widget/todo/todo.component.d.ts +10 -14
  251. package/lib/_components/widget/utility/utility.component.d.ts +0 -1
  252. package/lib/_helpers/common.d.ts +1 -1
  253. package/lib/_helpers/createstage-utils.d.ts +1 -0
  254. package/lib/_helpers/formatters/boolean.d.ts +1 -2
  255. package/lib/_helpers/formatters/common.d.ts +2 -2
  256. package/lib/_helpers/formatters/currency.d.ts +1 -2
  257. package/lib/_helpers/formatters/date.d.ts +1 -2
  258. package/lib/_helpers/formatters/index.d.ts +1 -2
  259. package/lib/_helpers/utils.d.ts +8 -0
  260. package/lib/_messages/error-messages.service.d.ts +1 -1
  261. package/lib/_services/banner.service.d.ts +8 -0
  262. package/lib/_services/endpoints.d.ts +0 -1
  263. package/lib/doc/KeyReleaseUpdates.md +23 -6
  264. package/package.json +3 -3
  265. package/public-api.d.ts +15 -11
  266. package/esm2022/lib/_messages/get-login-status.service.mjs +0 -26
  267. package/esm2022/lib/_messages/oauth-response.service.mjs +0 -30
  268. package/esm2022/lib/_messages/reset-pconnect.service.mjs +0 -31
  269. package/lib/_messages/get-login-status.service.d.ts +0 -10
  270. package/lib/_messages/oauth-response.service.d.ts +0 -14
  271. package/lib/_messages/reset-pconnect.service.d.ts +0 -15
@@ -82,7 +82,7 @@ export class WssNavBarComponent {
82
82
  // const oData = this.pConn$.getDataObject();
83
83
  this.portalLogoImage$ = this.utils.getSDKStaticContentUrl().concat('assets/pzpega-logo-mark.svg');
84
84
  this.portalOperator$ = PCore.getEnvironmentInfo().getOperatorName();
85
- this.portalOperatorInitials$ = this.utils.getInitials(this.portalOperator$);
85
+ this.portalOperatorInitials$ = this.utils.getInitials(this.portalOperator$ ?? '');
86
86
  this.showAppName$ = this.configProps$.showAppName;
87
87
  this.portalApp$ = PCore.getEnvironmentInfo().getApplicationLabel();
88
88
  });
@@ -117,10 +117,10 @@ export class WssNavBarComponent {
117
117
  window.location.reload();
118
118
  });
119
119
  }
120
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WssNavBarComponent, deps: [{ token: i1.AngularPConnectService }, { token: i0.ChangeDetectorRef }, { token: i2.ProgressSpinnerService }, { token: i0.NgZone }, { token: i3.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
121
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: WssNavBarComponent, isStandalone: true, selector: "app-wss-nav-bar", inputs: { pConn$: "pConn$", appName$: "appName$", pages$: "pages$", caseTypes$: "caseTypes$", homePage: "homePage" }, providers: [Utils], ngImport: i0, template: "<mat-toolbar style=\"margin-bottom: 5px; background-color: #262626\">\n <mat-toolbar-row mat-icon-button>\n <div class=\"psdk-nav-header\" (click)=\"navPanelButtonClick(homePage)\">\n <div>\n <img src=\"{{ portalLogoImage$ }}\" class=\"psdk-nav-logo\" />\n </div>\n <div class=\"psdk-nav-portal-info\">\n <div class=\"psdk-nav-portal-app\">{{ portalApp$ }}</div>\n </div>\n </div>\n\n <div *ngFor=\"let page of navPages$\">\n <div class=\"flex-box mat-list-item\" style=\"cursor: pointer\" (click)=\"navPanelButtonClick(page)\">\n <div mat-button class=\"psdk-nav-button-span\">{{ page.pyLabel }}</div>\n </div>\n </div>\n\n <span class=\"spacer\"></span>\n\n <mat-list>\n <mat-list-item [matMenuTriggerFor]=\"menu\" class=\"psdk-profile-list-item\">\n <div class=\"flex-box\">\n <div class=\"psdk-nav-oper-avatar\">{{ portalOperatorInitials$ }}</div>\n </div>\n </mat-list-item>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item>Profile</button>\n <button mat-menu-item (click)=\"navPanelLogoutClick()\">{{ localizedVal('Log off', localeCategory) }}</button>\n </mat-menu>\n </mat-list>\n </mat-toolbar-row>\n</mat-toolbar>\n", styles: [".psdk-nav-divider{border-bottom:.0625rem solid var(--app-divider-color);width:100%;align-items:center}.psdk-nav-header{display:flex;padding-top:.625rem;cursor:pointer;padding-right:1rem;align-items:center}.psdk-nav-header:hover{background-color:var(--app-neutral-color)}.psdk-nav-logo{width:3.75rem;padding:.625rem;margin-right:1.25rem}.psdk-nav-svg-icon{filter:var(--app-white-color-filter);width:1.6rem;padding-right:.625rem}.psdk-nav-portal-name{font-size:.875rem}.psdk-nav-portal-app{font-size:1.5rem;color:var(--app-nav-color)}.psdk-appshell-nav{z-index:3;position:fixed;display:flex;flex-direction:column;justify-content:flex-start;background:var(--app-nav-bg);width:var(--app-nav-width);height:100%;color:var(--app-nav-color);overflow-y:auto;overflow-x:hidden;white-space:nowrap;will-change:width}.psdk-appshell-nav:hover{width:var(--app-nav-width-expanded)}.psdk-appshell-topnav{display:flex;flex-direction:column;justify-content:flex-start;background:var(--app-nav-bg);width:var(--app-nav-width);height:15%;color:var(--app-nav-color);overflow:hidden;white-space:nowrap;will-change:width}.psdk-appshell-middlenav{display:flex;flex-direction:column;justify-content:space-between;background:var(--app-nav-bg);width:var(--app-nav-width);height:50%;color:var(--app-nav-color);overflow:hidden;white-space:nowrap;will-change:width}.psdk-nav-ul-middle{display:block;list-style-type:none;margin:0rem;padding-inline-start:30px}.psdk-nav-li-middle{box-sizing:border-box;text-align:left}.psdk-icon{padding:0rem .125rem;min-width:unset}.psdk-nav-button-span{padding:0 1rem;color:var(--app-nav-color)}.psdk-nav-button-span:hover{background-color:var(--app-neutral-color)}.psdk-nav-oper-avatar{margin:0rem;padding:0rem;min-width:2.5rem;min-height:2.5rem;max-width:2.5rem;max-height:2.5rem;border-radius:50%;justify-content:center;align-items:center;text-align:center;display:inline-flex;background:var(--app-neutral-color);color:var(--app-form-color);font-weight:400;font-size:1rem}mat-list{padding:0}.psdk-profile-list-item{padding-left:24px}mat-list-item{padding:20px 0 20px 30px;cursor:pointer!important;height:auto!important}mat-list-item .flex-box{display:flex;align-items:center;width:100%;text-align:left}.spacer{flex:1 1 auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i5.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i7.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i7.MatToolbarRow, selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }] }); }
120
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WssNavBarComponent, deps: [{ token: i1.AngularPConnectService }, { token: i0.ChangeDetectorRef }, { token: i2.ProgressSpinnerService }, { token: i0.NgZone }, { token: i3.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
121
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: WssNavBarComponent, isStandalone: true, selector: "app-wss-nav-bar", inputs: { pConn$: "pConn$", appName$: "appName$", pages$: "pages$", caseTypes$: "caseTypes$", homePage: "homePage" }, providers: [Utils], ngImport: i0, template: "<mat-toolbar style=\"margin-bottom: 5px; background-color: #262626\">\n <mat-toolbar-row mat-icon-button>\n <div class=\"psdk-nav-header\" (click)=\"navPanelButtonClick(homePage)\">\n <div>\n <img src=\"{{ portalLogoImage$ }}\" class=\"psdk-nav-logo\" />\n </div>\n <div class=\"psdk-nav-portal-info\">\n <div class=\"psdk-nav-portal-app\">{{ portalApp$ }}</div>\n </div>\n </div>\n\n <div *ngFor=\"let page of navPages$\">\n <div class=\"flex-box mat-list-item\" style=\"cursor: pointer\" (click)=\"navPanelButtonClick(page)\">\n <div mat-button class=\"psdk-nav-button-span\">{{ page.pyLabel }}</div>\n </div>\n </div>\n\n <span class=\"spacer\"></span>\n\n <mat-list>\n <mat-list-item [matMenuTriggerFor]=\"menu\" class=\"psdk-profile-list-item\">\n <div class=\"flex-box\">\n <div class=\"psdk-nav-oper-avatar\">{{ portalOperatorInitials$ }}</div>\n </div>\n </mat-list-item>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item>Profile</button>\n <button mat-menu-item (click)=\"navPanelLogoutClick()\">{{ localizedVal('Log off', localeCategory) }}</button>\n </mat-menu>\n </mat-list>\n </mat-toolbar-row>\n</mat-toolbar>\n", styles: [".psdk-nav-divider{border-bottom:.0625rem solid var(--app-divider-color);width:100%;align-items:center}.psdk-nav-header{display:flex;padding-top:.625rem;cursor:pointer;padding-right:1rem;align-items:center}.psdk-nav-header:hover{background-color:var(--app-neutral-color)}.psdk-nav-logo{width:3.75rem;padding:.625rem;margin-right:1.25rem}.psdk-nav-svg-icon{filter:var(--app-white-color-filter);width:1.6rem;padding-right:.625rem}.psdk-nav-portal-name{font-size:.875rem}.psdk-nav-portal-app{font-size:1.5rem;color:var(--app-nav-color)}.psdk-appshell-nav{z-index:3;position:fixed;display:flex;flex-direction:column;justify-content:flex-start;background:var(--app-nav-bg);width:var(--app-nav-width);height:100%;color:var(--app-nav-color);overflow-y:auto;overflow-x:hidden;white-space:nowrap;will-change:width}.psdk-appshell-nav:hover{width:var(--app-nav-width-expanded)}.psdk-appshell-topnav{display:flex;flex-direction:column;justify-content:flex-start;background:var(--app-nav-bg);width:var(--app-nav-width);height:15%;color:var(--app-nav-color);overflow:hidden;white-space:nowrap;will-change:width}.psdk-appshell-middlenav{display:flex;flex-direction:column;justify-content:space-between;background:var(--app-nav-bg);width:var(--app-nav-width);height:50%;color:var(--app-nav-color);overflow:hidden;white-space:nowrap;will-change:width}.psdk-nav-ul-middle{display:block;list-style-type:none;margin:0rem;padding-inline-start:30px}.psdk-nav-li-middle{box-sizing:border-box;text-align:left}.psdk-icon{padding:0rem .125rem;min-width:unset}.psdk-nav-button-span{padding:0 1rem;color:var(--app-nav-color)}.psdk-nav-button-span:hover{background-color:var(--app-neutral-color)}.psdk-nav-oper-avatar{margin:0rem;padding:0rem;min-width:2.5rem;min-height:2.5rem;max-width:2.5rem;max-height:2.5rem;border-radius:50%;justify-content:center;align-items:center;text-align:center;display:inline-flex;background:var(--app-neutral-color);color:var(--app-form-color);font-weight:400;font-size:1rem}mat-list{padding:0}.psdk-profile-list-item{padding-left:24px}mat-list-item{padding:20px 0 20px 30px;cursor:pointer!important;height:auto!important}mat-list-item .flex-box{display:flex;align-items:center;width:100%;text-align:left}.spacer{flex:1 1 auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i5.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i7.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i7.MatToolbarRow, selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }] }); }
122
122
  }
123
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WssNavBarComponent, decorators: [{
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WssNavBarComponent, decorators: [{
124
124
  type: Component,
125
125
  args: [{ selector: 'app-wss-nav-bar', providers: [Utils], standalone: true, imports: [CommonModule, MatListModule, MatMenuModule, MatIconModule, MatToolbarModule], template: "<mat-toolbar style=\"margin-bottom: 5px; background-color: #262626\">\n <mat-toolbar-row mat-icon-button>\n <div class=\"psdk-nav-header\" (click)=\"navPanelButtonClick(homePage)\">\n <div>\n <img src=\"{{ portalLogoImage$ }}\" class=\"psdk-nav-logo\" />\n </div>\n <div class=\"psdk-nav-portal-info\">\n <div class=\"psdk-nav-portal-app\">{{ portalApp$ }}</div>\n </div>\n </div>\n\n <div *ngFor=\"let page of navPages$\">\n <div class=\"flex-box mat-list-item\" style=\"cursor: pointer\" (click)=\"navPanelButtonClick(page)\">\n <div mat-button class=\"psdk-nav-button-span\">{{ page.pyLabel }}</div>\n </div>\n </div>\n\n <span class=\"spacer\"></span>\n\n <mat-list>\n <mat-list-item [matMenuTriggerFor]=\"menu\" class=\"psdk-profile-list-item\">\n <div class=\"flex-box\">\n <div class=\"psdk-nav-oper-avatar\">{{ portalOperatorInitials$ }}</div>\n </div>\n </mat-list-item>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item>Profile</button>\n <button mat-menu-item (click)=\"navPanelLogoutClick()\">{{ localizedVal('Log off', localeCategory) }}</button>\n </mat-menu>\n </mat-list>\n </mat-toolbar-row>\n</mat-toolbar>\n", styles: [".psdk-nav-divider{border-bottom:.0625rem solid var(--app-divider-color);width:100%;align-items:center}.psdk-nav-header{display:flex;padding-top:.625rem;cursor:pointer;padding-right:1rem;align-items:center}.psdk-nav-header:hover{background-color:var(--app-neutral-color)}.psdk-nav-logo{width:3.75rem;padding:.625rem;margin-right:1.25rem}.psdk-nav-svg-icon{filter:var(--app-white-color-filter);width:1.6rem;padding-right:.625rem}.psdk-nav-portal-name{font-size:.875rem}.psdk-nav-portal-app{font-size:1.5rem;color:var(--app-nav-color)}.psdk-appshell-nav{z-index:3;position:fixed;display:flex;flex-direction:column;justify-content:flex-start;background:var(--app-nav-bg);width:var(--app-nav-width);height:100%;color:var(--app-nav-color);overflow-y:auto;overflow-x:hidden;white-space:nowrap;will-change:width}.psdk-appshell-nav:hover{width:var(--app-nav-width-expanded)}.psdk-appshell-topnav{display:flex;flex-direction:column;justify-content:flex-start;background:var(--app-nav-bg);width:var(--app-nav-width);height:15%;color:var(--app-nav-color);overflow:hidden;white-space:nowrap;will-change:width}.psdk-appshell-middlenav{display:flex;flex-direction:column;justify-content:space-between;background:var(--app-nav-bg);width:var(--app-nav-width);height:50%;color:var(--app-nav-color);overflow:hidden;white-space:nowrap;will-change:width}.psdk-nav-ul-middle{display:block;list-style-type:none;margin:0rem;padding-inline-start:30px}.psdk-nav-li-middle{box-sizing:border-box;text-align:left}.psdk-icon{padding:0rem .125rem;min-width:unset}.psdk-nav-button-span{padding:0 1rem;color:var(--app-nav-color)}.psdk-nav-button-span:hover{background-color:var(--app-neutral-color)}.psdk-nav-oper-avatar{margin:0rem;padding:0rem;min-width:2.5rem;min-height:2.5rem;max-width:2.5rem;max-height:2.5rem;border-radius:50%;justify-content:center;align-items:center;text-align:center;display:inline-flex;background:var(--app-neutral-color);color:var(--app-form-color);font-weight:400;font-size:1rem}mat-list{padding:0}.psdk-profile-list-item{padding-left:24px}mat-list-item{padding:20px 0 20px 30px;cursor:pointer!important;height:auto!important}mat-list-item .flex-box{display:flex;align-items:center;width:100%;text-align:left}.spacer{flex:1 1 auto}\n"] }]
126
126
  }], ctorParameters: () => [{ type: i1.AngularPConnectService }, { type: i0.ChangeDetectorRef }, { type: i2.ProgressSpinnerService }, { type: i0.NgZone }, { type: i3.Utils }], propDecorators: { pConn$: [{
@@ -134,4 +134,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
134
134
  }], homePage: [{
135
135
  type: Input
136
136
  }] } });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3NzLW5hdi1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL3RlbXBsYXRlL3dzcy1uYXYtYmFyL3dzcy1uYXYtYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS93c3MtbmF2LWJhci93c3MtbmF2LWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxLQUFLLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUc3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7QUFlaEQsTUFBTSxPQUFPLGtCQUFrQjtJQThCN0IsWUFDVSxlQUF1QyxFQUN2QyxLQUF3QixFQUN4QixTQUFpQyxFQUNqQyxNQUFjLEVBQ2QsS0FBWTtRQUpaLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQUN2QyxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUF3QjtRQUNqQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FB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LCt1RURWWSxZQUFZLDJKQUFFLGFBQWEsdVJBQUUsYUFBYSw2dkJBQUUsYUFBYSw4QkFBRSxnQkFBZ0I7OzRGQUUxRSxrQkFBa0I7a0JBUjlCLFNBQVM7K0JBQ0UsaUJBQWlCLGFBR2hCLENBQUMsS0FBSyxDQUFDLGNBQ04sSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixDQUFDO3lNQUc3RSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRUb29sYmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbGJhcic7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWVzc2FnZXMvcHJvZ3Jlc3Mtc3Bpbm5lci5zZXJ2aWNlJztcbmltcG9ydCB7IGxvZ291dCB9IGZyb20gJ0BwZWdhL2F1dGgvbGliL3Nkay1hdXRoLW1hbmFnZXInO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9faGVscGVycy91dGlscyc7XG5cbmludGVyZmFjZSBXc3NOYXZCYXJQcm9wcyB7XG4gIC8vIElmIGFueSwgZW50ZXIgYWRkaXRpb25hbCBwcm9wcyB0aGF0IG9ubHkgZXhpc3Qgb24gdGhpcyBjb21wb25lbnRcbiAgc2hvd0FwcE5hbWU6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC13c3MtbmF2LWJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi93c3MtbmF2LWJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dzcy1uYXYtYmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1V0aWxzXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0TGlzdE1vZHVsZSwgTWF0TWVudU1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0VG9vbGJhck1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgV3NzTmF2QmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcbiAgQElucHV0KCkgYXBwTmFtZSQ6IHN0cmluZztcbiAgQElucHV0KCkgcGFnZXMkOiBhbnlbXTtcbiAgQElucHV0KCkgY2FzZVR5cGVzJDogYW55W107XG4gIEBJbnB1dCgpIGhvbWVQYWdlOiBhbnk7XG5cbiAgLy8gRm9yIGludGVyYWN0aW9uIHdpdGggQW5ndWxhclBDb25uZWN0XG4gIGFuZ3VsYXJQQ29ubmVjdERhdGE6IEFuZ3VsYXJQQ29ubmVjdERhdGEgPSB7fTtcbiAgY29uZmlnUHJvcHMkOiBXc3NOYXZCYXJQcm9wcztcblxuICBuYXZQYWdlcyQ6IGFueVtdO1xuICBuYXZFeHBhbmRDb2xsYXBzZSQ6IHN0cmluZztcbiAgYlNob3dDYXNlVHlwZXMkID0gZmFsc2U7XG5cbiAgcG9ydGFsQXBwJCA9ICcnO1xuICBwb3J0YWxMb2dvSW1hZ2UkOiBzdHJpbmc7XG4gIHNob3dBcHBOYW1lJCA9IGZhbHNlO1xuXG4gIHBvcnRhbE9wZXJhdG9yJDogc3RyaW5nO1xuICBwb3J0YWxPcGVyYXRvckluaXRpYWxzJDogc3RyaW5nO1xuXG4gIGFjdGlvbnNBUEk6IGFueTtcbiAgY3JlYXRlV29yazogYW55O1xuICBzaG93UGFnZTogYW55O1xuICBsb2dvdXQ6IGFueTtcblxuICBuYXZJY29uJDogc3RyaW5nO1xuICBsb2NhbGl6ZWRWYWwgPSBQQ29yZS5nZXRMb2NhbGVVdGlscygpLmdldExvY2FsZVZhbHVlO1xuICBsb2NhbGVDYXRlZ29yeSA9ICdBcHBTaGVsbCc7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcHNTZXJ2aWNlOiBQcm9ncmVzc1NwaW5uZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSB1dGlsczogVXRpbHNcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEZpcnN0IHRoaW5nIGluIGluaXRpYWxpemF0aW9uIGlzIHJlZ2lzdGVyaW5nIGFuZCBzdWJzY3JpYmluZyB0byB0aGUgQW5ndWxhclBDb25uZWN0IHNlcnZpY2VcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5yZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudCh0aGlzLCB0aGlzLm9uU3RhdGVDaGFuZ2UpO1xuXG4gICAgdGhpcy5uYXZJY29uJCA9IHRoaXMudXRpbHMuZ2V0U0RLU3RhdGljQ29udGVudFVybCgpLmNvbmNhdCgnYXNzZXRzL3B6cGVnYS1sb2dvLW1hcmsuc3ZnJyk7XG5cbiAgICAvLyB0aGlzIGlzIGEgZHVtbXkgXCJnZXRcIiwgYmVjYXVzZSByaWdodCBub3cgaW1hZ2VzIGFyZSBpbiBodHRwIGFuZCB0aGUgbWFpbiBzY3JlZW4gaXMgaHR0cHNcbiAgICAvLyBzbyB0aGUgaW1hZ2VzIGRvbid0IGxvYWQgYXV0b21hdGljYWxseS4gIFRoaXMgY2FsbCwgbWFrZXMgYW4gaW5pdGlhbCBoaXQgdGhhdCBhbGxvd3MgdGhlXG4gICAgLy8gcmVzdCBvZiB0aGUgaW1hZ2VzIHRvIHNob3cgdXBcbiAgICB0aGlzLmxvYWRJbWFnZSh0aGlzLm5hdkljb24kKTtcblxuICAgIHRoaXMuaW5pdENvbXBvbmVudCgpO1xuICB9XG5cbiAgLy8gbmdPbkRlc3Ryb3lcbiAgLy8gIHVuc3Vic2NyaWJlIGZyb20gU3RvcmVcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cbiAgfVxuXG4gIGxvYWRJbWFnZShzcmM6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIHJlc29sdmUoc3JjKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxiYWNrIHBhc3NlZCB3aGVuIHN1YnNjcmliaW5nIHRvIHN0b3JlIGNoYW5nZVxuICBvblN0YXRlQ2hhbmdlKCkge1xuICAgIC8vIFNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGJyaWRnZSB0byBzZWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlIGl0c2VsZiAocmUtcmVuZGVyKVxuICAgIGNvbnN0IGJVcGRhdGVTZWxmID0gdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuXG4gICAgLy8gTk9URTogY2FuIGNhbGwgYW5ndWxhclBDb25uZWN0LmdldFN0YXRlIHdpdGggb3B0aW9uYWwgYXJncyBmb3IgZGV0YWlsZWQgbG9nZ2luZzogYkxvZ01zZyBhbmQgY29tcG9uZW50IG9iamVjdFxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0LmdldFN0YXRlKCk7XG5cbiAgICBpZiAoYlVwZGF0ZVNlbGYpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVNlbGYoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0Q29tcG9uZW50KCk7XG4gIH1cblxuICBpbml0Q29tcG9uZW50KCkge1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLm5hdkljb24kID0gdGhpcy51dGlscy5nZXRTREtTdGF0aWNDb250ZW50VXJsKCkuY29uY2F0KCdhc3NldHMvcHpwZWdhLWxvZ28tbWFyay5zdmcnKTtcbiAgICAgIHRoaXMubmF2RXhwYW5kQ29sbGFwc2UkID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYygncGx1cycsIHRoaXMudXRpbHMuZ2V0U0RLU3RhdGljQ29udGVudFVybCgpKTtcblxuICAgICAgLy8gVGhlbiwgY29udGludWUgb24gd2l0aCBvdGhlciBpbml0aWFsaXphdGlvblxuXG4gICAgICAvLyBtYWtpbmcgYSBjb3B5LCBzbyBjYW4gYWRkIGluZm9cbiAgICAgIHRoaXMubmF2UGFnZXMkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnBhZ2VzJCkpO1xuXG4gICAgICB0aGlzLm5hdlBhZ2VzJC5mb3JFYWNoKHBhZ2UgPT4ge1xuICAgICAgICBwYWdlLmljb25OYW1lID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYyhwYWdlLnB4UGFnZVZpZXdJY29uLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5hY3Rpb25zQVBJID0gdGhpcy5wQ29ubiQuZ2V0QWN0aW9uc0FwaSgpO1xuICAgICAgdGhpcy5jcmVhdGVXb3JrID0gdGhpcy5hY3Rpb25zQVBJLmNyZWF0ZVdvcmsuYmluZCh0aGlzLmFjdGlvbnNBUEkpO1xuICAgICAgdGhpcy5zaG93UGFnZSA9IHRoaXMuYWN0aW9uc0FQSS5zaG93UGFnZS5iaW5kKHRoaXMuYWN0aW9uc0FQSSk7XG4gICAgICB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKSBhcyBXc3NOYXZCYXJQcm9wcztcbiAgICAgIHRoaXMubG9nb3V0ID0gdGhpcy5hY3Rpb25zQVBJLmxvZ291dC5iaW5kKHRoaXMuYWN0aW9uc0FQSSk7XG5cbiAgICAgIC8vIGNvbnN0IG9EYXRhID0gdGhpcy5wQ29ubiQuZ2V0RGF0YU9iamVjdCgpO1xuXG4gICAgICB0aGlzLnBvcnRhbExvZ29JbWFnZSQgPSB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKS5jb25jYXQoJ2Fzc2V0cy9wenBlZ2EtbG9nby1tYXJrLnN2ZycpO1xuICAgICAgdGhpcy5wb3J0YWxPcGVyYXRvciQgPSBQQ29yZS5nZXRFbnZpcm9ubWVudEluZm8oKS5nZXRPcGVyYXRvck5hbWUoKTtcbiAgICAgIHRoaXMucG9ydGFsT3BlcmF0b3JJbml0aWFscyQgPSB0aGlzLnV0aWxzLmdldEluaXRpYWxzKHRoaXMucG9ydGFsT3BlcmF0b3IkKTtcbiAgICAgIHRoaXMuc2hvd0FwcE5hbWUkID0gdGhpcy5jb25maWdQcm9wcyQuc2hvd0FwcE5hbWU7XG5cbiAgICAgIHRoaXMucG9ydGFsQXBwJCA9IFBDb3JlLmdldEVudmlyb25tZW50SW5mbygpLmdldEFwcGxpY2F0aW9uTGFiZWwoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5hdlBhbmVsQnV0dG9uQ2xpY2sob1BhZ2VEYXRhOiBhbnkpIHtcbiAgICBjb25zdCB7IHB5Q2xhc3NOYW1lLCBweVJ1bGVOYW1lIH0gPSBvUGFnZURhdGE7XG5cbiAgICB0aGlzLnNob3dQYWdlKHB5UnVsZU5hbWUsIHB5Q2xhc3NOYW1lKTtcbiAgfVxuXG4gIG5hdlBhbmVsQ3JlYXRlQnV0dG9uQ2xpY2soKSB7XG4gICAgaWYgKHRoaXMubmF2RXhwYW5kQ29sbGFwc2UkLmluZGV4T2YoJ3BsdXMnKSA+IDApIHtcbiAgICAgIHRoaXMubmF2RXhwYW5kQ29sbGFwc2UkID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYygndGltZXMnLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG4gICAgICB0aGlzLmJTaG93Q2FzZVR5cGVzJCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmF2RXhwYW5kQ29sbGFwc2UkID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYygncGx1cycsIHRoaXMudXRpbHMuZ2V0U0RLU3RhdGljQ29udGVudFVybCgpKTtcbiAgICAgIHRoaXMuYlNob3dDYXNlVHlwZXMkID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmF2UGFuZWxDcmVhdGVDYXNlVHlwZShzQ2FzZVR5cGU6IHN0cmluZywgc0Zsb3dUeXBlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZSh0cnVlKTtcbiAgICB0aGlzLm5hdlBhbmVsQ3JlYXRlQnV0dG9uQ2xpY2soKTtcblxuICAgIGNvbnN0IGFjdGlvbkluZm8gPSB7XG4gICAgICBjb250YWluZXJOYW1lOiAncHJpbWFyeScsXG4gICAgICBmbG93VHlwZTogc0Zsb3dUeXBlIHx8ICdweVN0YXJ0Q2FzZSdcbiAgICB9O1xuICAgIHRoaXMuY3JlYXRlV29yayhzQ2FzZVR5cGUsIGFjdGlvbkluZm8pO1xuICB9XG5cbiAgbmF2UGFuZWxMb2dvdXRDbGljaygpIHtcbiAgICBsb2dvdXQoKS50aGVuKCgpID0+IHtcbiAgICAgIC8vIFJlbG9hZCB0aGUgcGFnZSB0byBraWNrIG9mZiB0aGUgbG9naW5cbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPG1hdC10b29sYmFyIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjMjYyNjI2XCI+XG4gIDxtYXQtdG9vbGJhci1yb3cgbWF0LWljb24tYnV0dG9uPlxuICAgIDxkaXYgY2xhc3M9XCJwc2RrLW5hdi1oZWFkZXJcIiAoY2xpY2spPVwibmF2UGFuZWxCdXR0b25DbGljayhob21lUGFnZSlcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxpbWcgc3JjPVwie3sgcG9ydGFsTG9nb0ltYWdlJCB9fVwiIGNsYXNzPVwicHNkay1uYXYtbG9nb1wiIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLW5hdi1wb3J0YWwtaW5mb1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay1uYXYtcG9ydGFsLWFwcFwiPnt7IHBvcnRhbEFwcCQgfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgcGFnZSBvZiBuYXZQYWdlcyRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWJveCBtYXQtbGlzdC1pdGVtXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIiAoY2xpY2spPVwibmF2UGFuZWxCdXR0b25DbGljayhwYWdlKVwiPlxuICAgICAgICA8ZGl2IG1hdC1idXR0b24gY2xhc3M9XCJwc2RrLW5hdi1idXR0b24tc3BhblwiPnt7IHBhZ2UucHlMYWJlbCB9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8c3BhbiBjbGFzcz1cInNwYWNlclwiPjwvc3Bhbj5cblxuICAgIDxtYXQtbGlzdD5cbiAgICAgIDxtYXQtbGlzdC1pdGVtIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgY2xhc3M9XCJwc2RrLXByb2ZpbGUtbGlzdC1pdGVtXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWJveFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLW5hdi1vcGVyLWF2YXRhclwiPnt7IHBvcnRhbE9wZXJhdG9ySW5pdGlhbHMkIH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtbGlzdC1pdGVtPlxuICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0+UHJvZmlsZTwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm5hdlBhbmVsTG9nb3V0Q2xpY2soKVwiPnt7IGxvY2FsaXplZFZhbCgnTG9nIG9mZicsIGxvY2FsZUNhdGVnb3J5KSB9fTwvYnV0dG9uPlxuICAgICAgPC9tYXQtbWVudT5cbiAgICA8L21hdC1saXN0PlxuICA8L21hdC10b29sYmFyLXJvdz5cbjwvbWF0LXRvb2xiYXI+XG4iXX0=
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3NzLW5hdi1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL3RlbXBsYXRlL3dzcy1uYXYtYmFyL3dzcy1uYXYtYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS93c3MtbmF2LWJhci93c3MtbmF2LWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxLQUFLLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUc3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7QUFlaEQsTUFBTSxPQUFPLGtCQUFrQjtJQThCN0IsWUFDVSxlQUF1QyxFQUN2QyxLQUF3QixFQUN4QixTQUFpQyxFQUNqQyxNQUFjLEVBQ2QsS0FBWTtRQUpaLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQUN2QyxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUF3QjtRQUNqQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FB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QnBCLGd2Q0FnQ0EsK3VFRFZZLFlBQVksMkpBQUUsYUFBYSx1UkFBRSxhQUFhLDZ2QkFBRSxhQUFhLDhCQUFFLGdCQUFnQjs7NEZBRTFFLGtCQUFrQjtrQkFSOUIsU0FBUzsrQkFDRSxpQkFBaUIsYUFHaEIsQ0FBQyxLQUFLLENBQUMsY0FDTixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLENBQUM7eU1BRzdFLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgTmdab25lLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdExpc3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdFRvb2xiYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sYmFyJztcbmltcG9ydCB7IEFuZ3VsYXJQQ29ubmVjdERhdGEsIEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2FuZ3VsYXItcGNvbm5lY3QnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NTcGlubmVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXNzYWdlcy9wcm9ncmVzcy1zcGlubmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgbG9nb3V0IH0gZnJvbSAnQHBlZ2EvYXV0aC9saWIvc2RrLWF1dGgtbWFuYWdlcic7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uL19oZWxwZXJzL3V0aWxzJztcblxuaW50ZXJmYWNlIFdzc05hdkJhclByb3BzIHtcbiAgLy8gSWYgYW55LCBlbnRlciBhZGRpdGlvbmFsIHByb3BzIHRoYXQgb25seSBleGlzdCBvbiB0aGlzIGNvbXBvbmVudFxuICBzaG93QXBwTmFtZTogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXdzcy1uYXYtYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dzcy1uYXYtYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd3NzLW5hdi1iYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbVXRpbHNdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRMaXN0TW9kdWxlLCBNYXRNZW51TW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRUb29sYmFyTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBXc3NOYXZCYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuICBASW5wdXQoKSBhcHBOYW1lJDogc3RyaW5nO1xuICBASW5wdXQoKSBwYWdlcyQ6IGFueVtdO1xuICBASW5wdXQoKSBjYXNlVHlwZXMkOiBhbnlbXTtcbiAgQElucHV0KCkgaG9tZVBhZ2U6IGFueTtcblxuICAvLyBGb3IgaW50ZXJhY3Rpb24gd2l0aCBBbmd1bGFyUENvbm5lY3RcbiAgYW5ndWxhclBDb25uZWN0RGF0YTogQW5ndWxhclBDb25uZWN0RGF0YSA9IHt9O1xuICBjb25maWdQcm9wcyQ6IFdzc05hdkJhclByb3BzO1xuXG4gIG5hdlBhZ2VzJDogYW55W107XG4gIG5hdkV4cGFuZENvbGxhcHNlJDogc3RyaW5nO1xuICBiU2hvd0Nhc2VUeXBlcyQgPSBmYWxzZTtcblxuICBwb3J0YWxBcHAkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcbiAgcG9ydGFsTG9nb0ltYWdlJDogc3RyaW5nO1xuICBzaG93QXBwTmFtZSQgPSBmYWxzZTtcblxuICBwb3J0YWxPcGVyYXRvciQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcG9ydGFsT3BlcmF0b3JJbml0aWFscyQ6IHN0cmluZztcblxuICBhY3Rpb25zQVBJOiBhbnk7XG4gIGNyZWF0ZVdvcms6IGFueTtcbiAgc2hvd1BhZ2U6IGFueTtcbiAgbG9nb3V0OiBhbnk7XG5cbiAgbmF2SWNvbiQ6IHN0cmluZztcbiAgbG9jYWxpemVkVmFsID0gUENvcmUuZ2V0TG9jYWxlVXRpbHMoKS5nZXRMb2NhbGVWYWx1ZTtcbiAgbG9jYWxlQ2F0ZWdvcnkgPSAnQXBwU2hlbGwnO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFuZ3VsYXJQQ29ubmVjdDogQW5ndWxhclBDb25uZWN0U2VydmljZSxcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHBzU2VydmljZTogUHJvZ3Jlc3NTcGlubmVyU2VydmljZSxcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgdXRpbHM6IFV0aWxzXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBGaXJzdCB0aGluZyBpbiBpbml0aWFsaXphdGlvbiBpcyByZWdpc3RlcmluZyBhbmQgc3Vic2NyaWJpbmcgdG8gdGhlIEFuZ3VsYXJQQ29ubmVjdCBzZXJ2aWNlXG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhID0gdGhpcy5hbmd1bGFyUENvbm5lY3QucmVnaXN0ZXJBbmRTdWJzY3JpYmVDb21wb25lbnQodGhpcywgdGhpcy5vblN0YXRlQ2hhbmdlKTtcblxuICAgIHRoaXMubmF2SWNvbiQgPSB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKS5jb25jYXQoJ2Fzc2V0cy9wenBlZ2EtbG9nby1tYXJrLnN2ZycpO1xuXG4gICAgLy8gdGhpcyBpcyBhIGR1bW15IFwiZ2V0XCIsIGJlY2F1c2UgcmlnaHQgbm93IGltYWdlcyBhcmUgaW4gaHR0cCBhbmQgdGhlIG1haW4gc2NyZWVuIGlzIGh0dHBzXG4gICAgLy8gc28gdGhlIGltYWdlcyBkb24ndCBsb2FkIGF1dG9tYXRpY2FsbHkuICBUaGlzIGNhbGwsIG1ha2VzIGFuIGluaXRpYWwgaGl0IHRoYXQgYWxsb3dzIHRoZVxuICAgIC8vIHJlc3Qgb2YgdGhlIGltYWdlcyB0byBzaG93IHVwXG4gICAgdGhpcy5sb2FkSW1hZ2UodGhpcy5uYXZJY29uJCk7XG5cbiAgICB0aGlzLmluaXRDb21wb25lbnQoKTtcbiAgfVxuXG4gIC8vIG5nT25EZXN0cm95XG4gIC8vICB1bnN1YnNjcmliZSBmcm9tIFN0b3JlXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbikge1xuICAgICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4oKTtcbiAgICB9XG4gIH1cblxuICBsb2FkSW1hZ2Uoc3JjOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICByZXNvbHZlKHNyYyk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBDYWxsYmFjayBwYXNzZWQgd2hlbiBzdWJzY3JpYmluZyB0byBzdG9yZSBjaGFuZ2VcbiAgb25TdGF0ZUNoYW5nZSgpIHtcbiAgICAvLyBTaG91bGQgYWx3YXlzIGNoZWNrIHRoZSBicmlkZ2UgdG8gc2VlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgICBjb25zdCBiVXBkYXRlU2VsZiA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcblxuICAgIC8vIE5PVEU6IGNhbiBjYWxsIGFuZ3VsYXJQQ29ubmVjdC5nZXRTdGF0ZSB3aXRoIG9wdGlvbmFsIGFyZ3MgZm9yIGRldGFpbGVkIGxvZ2dpbmc6IGJMb2dNc2cgYW5kIGNvbXBvbmVudCBvYmplY3RcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5nZXRTdGF0ZSgpO1xuXG4gICAgaWYgKGJVcGRhdGVTZWxmKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVTZWxmKCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdENvbXBvbmVudCgpO1xuICB9XG5cbiAgaW5pdENvbXBvbmVudCgpIHtcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5uYXZJY29uJCA9IHRoaXMudXRpbHMuZ2V0U0RLU3RhdGljQ29udGVudFVybCgpLmNvbmNhdCgnYXNzZXRzL3B6cGVnYS1sb2dvLW1hcmsuc3ZnJyk7XG4gICAgICB0aGlzLm5hdkV4cGFuZENvbGxhcHNlJCA9IHRoaXMudXRpbHMuZ2V0SW1hZ2VTcmMoJ3BsdXMnLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG5cbiAgICAgIC8vIFRoZW4sIGNvbnRpbnVlIG9uIHdpdGggb3RoZXIgaW5pdGlhbGl6YXRpb25cblxuICAgICAgLy8gbWFraW5nIGEgY29weSwgc28gY2FuIGFkZCBpbmZvXG4gICAgICB0aGlzLm5hdlBhZ2VzJCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5wYWdlcyQpKTtcblxuICAgICAgdGhpcy5uYXZQYWdlcyQuZm9yRWFjaChwYWdlID0+IHtcbiAgICAgICAgcGFnZS5pY29uTmFtZSA9IHRoaXMudXRpbHMuZ2V0SW1hZ2VTcmMocGFnZS5weFBhZ2VWaWV3SWNvbiwgdGhpcy51dGlscy5nZXRTREtTdGF0aWNDb250ZW50VXJsKCkpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuYWN0aW9uc0FQSSA9IHRoaXMucENvbm4kLmdldEFjdGlvbnNBcGkoKTtcbiAgICAgIHRoaXMuY3JlYXRlV29yayA9IHRoaXMuYWN0aW9uc0FQSS5jcmVhdGVXb3JrLmJpbmQodGhpcy5hY3Rpb25zQVBJKTtcbiAgICAgIHRoaXMuc2hvd1BhZ2UgPSB0aGlzLmFjdGlvbnNBUEkuc2hvd1BhZ2UuYmluZCh0aGlzLmFjdGlvbnNBUEkpO1xuICAgICAgdGhpcy5jb25maWdQcm9wcyQgPSB0aGlzLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSkgYXMgV3NzTmF2QmFyUHJvcHM7XG4gICAgICB0aGlzLmxvZ291dCA9IHRoaXMuYWN0aW9uc0FQSS5sb2dvdXQuYmluZCh0aGlzLmFjdGlvbnNBUEkpO1xuXG4gICAgICAvLyBjb25zdCBvRGF0YSA9IHRoaXMucENvbm4kLmdldERhdGFPYmplY3QoKTtcblxuICAgICAgdGhpcy5wb3J0YWxMb2dvSW1hZ2UkID0gdGhpcy51dGlscy5nZXRTREtTdGF0aWNDb250ZW50VXJsKCkuY29uY2F0KCdhc3NldHMvcHpwZWdhLWxvZ28tbWFyay5zdmcnKTtcbiAgICAgIHRoaXMucG9ydGFsT3BlcmF0b3IkID0gUENvcmUuZ2V0RW52aXJvbm1lbnRJbmZvKCkuZ2V0T3BlcmF0b3JOYW1lKCk7XG4gICAgICB0aGlzLnBvcnRhbE9wZXJhdG9ySW5pdGlhbHMkID0gdGhpcy51dGlscy5nZXRJbml0aWFscyh0aGlzLnBvcnRhbE9wZXJhdG9yJCA/PyAnJyk7XG4gICAgICB0aGlzLnNob3dBcHBOYW1lJCA9IHRoaXMuY29uZmlnUHJvcHMkLnNob3dBcHBOYW1lO1xuXG4gICAgICB0aGlzLnBvcnRhbEFwcCQgPSBQQ29yZS5nZXRFbnZpcm9ubWVudEluZm8oKS5nZXRBcHBsaWNhdGlvbkxhYmVsKCk7XG4gICAgfSk7XG4gIH1cblxuICBuYXZQYW5lbEJ1dHRvbkNsaWNrKG9QYWdlRGF0YTogYW55KSB7XG4gICAgY29uc3QgeyBweUNsYXNzTmFtZSwgcHlSdWxlTmFtZSB9ID0gb1BhZ2VEYXRhO1xuXG4gICAgdGhpcy5zaG93UGFnZShweVJ1bGVOYW1lLCBweUNsYXNzTmFtZSk7XG4gIH1cblxuICBuYXZQYW5lbENyZWF0ZUJ1dHRvbkNsaWNrKCkge1xuICAgIGlmICh0aGlzLm5hdkV4cGFuZENvbGxhcHNlJC5pbmRleE9mKCdwbHVzJykgPiAwKSB7XG4gICAgICB0aGlzLm5hdkV4cGFuZENvbGxhcHNlJCA9IHRoaXMudXRpbHMuZ2V0SW1hZ2VTcmMoJ3RpbWVzJywgdGhpcy51dGlscy5nZXRTREtTdGF0aWNDb250ZW50VXJsKCkpO1xuICAgICAgdGhpcy5iU2hvd0Nhc2VUeXBlcyQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5hdkV4cGFuZENvbGxhcHNlJCA9IHRoaXMudXRpbHMuZ2V0SW1hZ2VTcmMoJ3BsdXMnLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG4gICAgICB0aGlzLmJTaG93Q2FzZVR5cGVzJCA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5hdlBhbmVsQ3JlYXRlQ2FzZVR5cGUoc0Nhc2VUeXBlOiBzdHJpbmcsIHNGbG93VHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UodHJ1ZSk7XG4gICAgdGhpcy5uYXZQYW5lbENyZWF0ZUJ1dHRvbkNsaWNrKCk7XG5cbiAgICBjb25zdCBhY3Rpb25JbmZvID0ge1xuICAgICAgY29udGFpbmVyTmFtZTogJ3ByaW1hcnknLFxuICAgICAgZmxvd1R5cGU6IHNGbG93VHlwZSB8fCAncHlTdGFydENhc2UnXG4gICAgfTtcbiAgICB0aGlzLmNyZWF0ZVdvcmsoc0Nhc2VUeXBlLCBhY3Rpb25JbmZvKTtcbiAgfVxuXG4gIG5hdlBhbmVsTG9nb3V0Q2xpY2soKSB7XG4gICAgbG9nb3V0KCkudGhlbigoKSA9PiB7XG4gICAgICAvLyBSZWxvYWQgdGhlIHBhZ2UgdG8ga2ljayBvZmYgdGhlIGxvZ2luXG4gICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxtYXQtdG9vbGJhciBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDVweDsgYmFja2dyb3VuZC1jb2xvcjogIzI2MjYyNlwiPlxuICA8bWF0LXRvb2xiYXItcm93IG1hdC1pY29uLWJ1dHRvbj5cbiAgICA8ZGl2IGNsYXNzPVwicHNkay1uYXYtaGVhZGVyXCIgKGNsaWNrKT1cIm5hdlBhbmVsQnV0dG9uQ2xpY2soaG9tZVBhZ2UpXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8aW1nIHNyYz1cInt7IHBvcnRhbExvZ29JbWFnZSQgfX1cIiBjbGFzcz1cInBzZGstbmF2LWxvZ29cIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicHNkay1uYXYtcG9ydGFsLWluZm9cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstbmF2LXBvcnRhbC1hcHBcIj57eyBwb3J0YWxBcHAkIH19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgbmF2UGFnZXMkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ib3ggbWF0LWxpc3QtaXRlbVwiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCIgKGNsaWNrKT1cIm5hdlBhbmVsQnV0dG9uQ2xpY2socGFnZSlcIj5cbiAgICAgICAgPGRpdiBtYXQtYnV0dG9uIGNsYXNzPVwicHNkay1uYXYtYnV0dG9uLXNwYW5cIj57eyBwYWdlLnB5TGFiZWwgfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPHNwYW4gY2xhc3M9XCJzcGFjZXJcIj48L3NwYW4+XG5cbiAgICA8bWF0LWxpc3Q+XG4gICAgICA8bWF0LWxpc3QtaXRlbSBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIGNsYXNzPVwicHNkay1wcm9maWxlLWxpc3QtaXRlbVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ib3hcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay1uYXYtb3Blci1hdmF0YXJcIj57eyBwb3J0YWxPcGVyYXRvckluaXRpYWxzJCB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LWxpc3QtaXRlbT5cbiAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtPlByb2ZpbGU8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJuYXZQYW5lbExvZ291dENsaWNrKClcIj57eyBsb2NhbGl6ZWRWYWwoJ0xvZyBvZmYnLCBsb2NhbGVDYXRlZ29yeSkgfX08L2J1dHRvbj5cbiAgICAgIDwvbWF0LW1lbnU+XG4gICAgPC9tYXQtbGlzdD5cbiAgPC9tYXQtdG9vbGJhci1yb3c+XG48L21hdC10b29sYmFyPlxuIl19
@@ -12,10 +12,10 @@ export class AppAnnouncementComponent {
12
12
  this.details$ = datasource.source.map(item => item.name);
13
13
  }
14
14
  }
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppAnnouncementComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
16
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AppAnnouncementComponent, isStandalone: true, selector: "app-app-announcement", inputs: { pConn$: "pConn$" }, ngImport: i0, template: "<article class=\"psdk-announcement\">\n <h2>{{ configProps$.header }}</h2>\n <div>\n <p>{{ configProps$.description }}</p>\n <div>\n <h3>{{ configProps$.label }}</h3>\n <ul>\n <li *ngFor=\"let detail of details$\">{{ detail }}</li>\n </ul>\n </div>\n </div>\n <a *ngIf=\"configProps$.whatsnewlink != ''\" mat-raised-button color=\"primary\" [href]=\"configProps$.whatsnewlink\">See what's new</a>\n</article>\n", styles: ["h2{font-size:1.2rem;margin-block-start:0rem}h3{font-size:1.1rem}ul{padding-inline-start:20px}.psdk-announcement{background-color:var(--app-form-color);padding:1rem;margin:1rem 0;border-radius:.6125rem;border-left:6px solid;border-left-color:var(--app-primary-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }] }); }
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppAnnouncementComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
16
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AppAnnouncementComponent, isStandalone: true, selector: "app-app-announcement", inputs: { pConn$: "pConn$" }, ngImport: i0, template: "<article class=\"psdk-announcement\">\n <h2>{{ configProps$.header }}</h2>\n <div>\n <p>{{ configProps$.description }}</p>\n <div>\n <h3>{{ configProps$.label }}</h3>\n <ul>\n <li *ngFor=\"let detail of details$\">{{ detail }}</li>\n </ul>\n </div>\n </div>\n <a *ngIf=\"configProps$.whatsnewlink != ''\" mat-raised-button color=\"primary\" [href]=\"configProps$.whatsnewlink\">See what's new</a>\n</article>\n", styles: ["h2{font-size:1.2rem;margin-block-start:0rem}h3{font-size:1.1rem}ul{padding-inline-start:20px}.psdk-announcement{background-color:var(--app-form-color);padding:1rem;margin:1rem 0;border-radius:.6125rem;border-left:6px solid;border-left-color:var(--app-primary-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }] }); }
17
17
  }
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppAnnouncementComponent, decorators: [{
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppAnnouncementComponent, decorators: [{
19
19
  type: Component,
20
20
  args: [{ selector: 'app-app-announcement', standalone: true, imports: [CommonModule, MatButtonModule], template: "<article class=\"psdk-announcement\">\n <h2>{{ configProps$.header }}</h2>\n <div>\n <p>{{ configProps$.description }}</p>\n <div>\n <h3>{{ configProps$.label }}</h3>\n <ul>\n <li *ngFor=\"let detail of details$\">{{ detail }}</li>\n </ul>\n </div>\n </div>\n <a *ngIf=\"configProps$.whatsnewlink != ''\" mat-raised-button color=\"primary\" [href]=\"configProps$.whatsnewlink\">See what's new</a>\n</article>\n", styles: ["h2{font-size:1.2rem;margin-block-start:0rem}h3{font-size:1.1rem}ul{padding-inline-start:20px}.psdk-announcement{background-color:var(--app-form-color);padding:1rem;margin:1rem 0;border-radius:.6125rem;border-left:6px solid;border-left-color:var(--app-primary-color)}\n"] }]
21
21
  }], propDecorators: { pConn$: [{
@@ -216,7 +216,7 @@ export class AttachmentComponent {
216
216
  this.updateAttachmentState(this.pConn$, this.getAttachmentKey(this.valueRef), [...currentAttachmentList, ...attachmentsList]);
217
217
  if (file.inProgress) {
218
218
  // @ts-ignore - 3rd parameter "responseEncoding" should be optional
219
- PCore.getAttachmentUtils().cancelRequest(file.ID, pConn.getContextName());
219
+ PCore.getAttachmentUtils().cancelRequest(file.ID, this.pConn$.getContextName());
220
220
  }
221
221
  }
222
222
  this.filesWithError = this.filesWithError?.filter(f => f.ID !== file.ID);
@@ -257,8 +257,7 @@ export class AttachmentComponent {
257
257
  messages: [
258
258
  {
259
259
  type: 'error',
260
- // @ts-ignore - Type '{ type: string; message: string; }' is not assignable to type 'MessagesConfigObject'.
261
- message: pConn.getLocalizedValue('Error with one or more files', '', '')
260
+ message: this.pConn$.getLocalizedValue('Error with one or more files', '', '')
262
261
  }
263
262
  ],
264
263
  property: fieldName,
@@ -314,7 +313,6 @@ export class AttachmentComponent {
314
313
  messages: [
315
314
  {
316
315
  type: 'error',
317
- // @ts-ignore - Type '{ type: string; message: string; }' is not assignable to type 'MessagesConfigObject'.
318
316
  message: this.pConn$.getLocalizedValue('Error with one or more files', '', '')
319
317
  }
320
318
  ],
@@ -378,10 +376,10 @@ export class AttachmentComponent {
378
376
  }
379
377
  PCore.getPubSubUtils().unsubscribe(PCore.getConstants().PUB_SUB_EVENTS.CASE_EVENTS.ASSIGNMENT_SUBMISSION, this.caseID);
380
378
  }
381
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AttachmentComponent, deps: [{ token: i1.AngularPConnectService }, { token: i2.Utils }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
382
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AttachmentComponent, isStandalone: true, selector: "app-attachment", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["uploader"], descendants: true }], ngImport: i0, template: "<div class=\"file-upload-container\" *ngIf=\"bVisible$\">\n <span class=\"attachment-label\" [ngClass]=\"{ 'file-label': bRequired$ }\">{{ label$ }}</span>\n <div *ngIf=\"(files.length === 0 && !allowMultiple$) || allowMultiple$\">\n <div\n style=\"margin-bottom: 10px\"\n id=\"attachment-container\"\n [ngClass]=\"validateMessage ? 'psdk-modal-file-selector-error' : 'psdk-modal-file-selector'\"\n >\n <div [hidden]=\"true\" id=\"attachment-ID\">\n {{ valueRef }}\n </div>\n <input hidden type=\"file\" [required]=\"bRequired$\" #uploader [id]=\"valueRef\" [multiple]=\"allowMultiple$\" (change)=\"onFileAdded($event)\" />\n <button mat-stroked-button color=\"primary\" [disabled]=\"bDisabled$\" (click)=\"uploader.click()\">\n {{\n allowMultiple$\n ? uploadMultipleFilesLabel === 'file_upload_text_multiple'\n ? 'Choose files'\n : uploadMultipleFilesLabel\n : uploadSingleFileLabel === 'file_upload_text_one'\n ? 'Choose a file'\n : uploadSingleFileLabel\n }}\n </button>\n </div>\n </div>\n <span *ngIf=\"validateMessage\" class=\"file-error\">{{ validateMessage }}</span>\n <div *ngIf=\"files && files.length > 0\">\n <div *ngFor=\"let file of files\">\n <div class=\"psdk-attachment-card\">\n <div className=\"psdk-utility-card-icon\">\n <img *ngIf=\"!file.inProgress\" class=\"psdk-attachment-card-svg-icon\" src=\"{{ srcImg }}\" />\n <mat-spinner *ngIf=\"file.inProgress\" class=\"progress-spinner\" diameter=\"40\"></mat-spinner>\n </div>\n <div class=\"psdk-attachment-card-main\">\n <div class=\"psdk-attachment-card-main-primary-label\">{{ file.props.name }}</div>\n <div *ngIf=\"file.props.meta\" [ngStyle]=\"{ color: file.props.error ? 'red' : null }\">{{ file.props.meta }}</div>\n </div>\n <div class=\"psdk-attachment-action\">\n <button id=\"delete-attachment\" *ngIf=\"file.ID\" class=\"psdk-utility-button\" (click)=\"deleteFile(file)\">\n <img class=\"psdk-utility-card-action-svg-icon\" src=\"{{ deleteIcon }}\" />\n </button>\n <div *ngIf=\"!file.ID\">\n <button id=\"setting-button\" mat-icon-button [matMenuTriggerFor]=\"actionMenu\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #actionMenu=\"matMenu\">\n <button mat-menu-item (click)=\"downloadFile(file.responseProps ? file.responseProps : {})\">Download</button>\n <button mat-menu-item (click)=\"deleteFile(file)\">Delete</button>\n </mat-menu>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".progress-spinner{text-align:center;position:absolute;left:45%}.psdk-modal-file-selector{border:1px dashed var(--app-neutral-dark-color);width:100%;padding:.3rem;text-align:center;position:relative}.psdk-modal-file-selector-error{border:1px dashed var(--app-error-light-color);width:100%;padding:.3rem;text-align:center;position:relative}.psdk-modal-file-selector{border:1px dashed var(--app-neutral-dark-color);padding:.5rem;text-align:center;position:relative}.label-required:after{display:inline;content:\" *\";vertical-align:top;color:var(--app-neutral-dark-color)}.file-error{color:var(--app-error-light-color)}.psdk-modal-file-selector-error{border:1px dashed var(--app-error-light-color);padding:.5rem;text-align:center;position:relative}.psdk-full-width{width:100%}.psdk-label-readonly{opacity:54%;font-size:.8rem;font-weight:400}.psdk-data-readonly{padding-top:.625rem;width:100%}.psdk-attachment-list{border:1px solid var(--app-neutral-color)}::ng-deep .mat-mdc-form-field-infix{width:auto}.psdk-attachment-card{display:flex;align-items:center;border:.0625rem solid rgb(207,207,207);border-radius:.25rem;padding:.25rem 0rem .25rem .25rem;min-height:3rem;margin-bottom:.5rem}.psdk-attachment-card-main-primary-label{font-weight:500;text-overflow:ellipsis;overflow:hidden;white-space:normal}.psdk-attachment-card-main{flex-grow:2;margin-left:5px}.psdk-attachment-action{flex-grow:1;text-align:right}.psdk-attachment-card-svg-icon{width:2.5rem}.psdk-utility-button{background:none;border:none;margin-right:.5rem;cursor:pointer}.psdk-utility-card-action-svg-icon{width:1.4rem;display:inline-block}.file-div{border:1px dashed var(--app-neutral-dark-color);width:100%;padding:.5rem;text-align:center;position:relative}.file-div-error{border:1px dashed var(--app-error-light-color);width:100%;padding:.5rem;text-align:center;position:relative}.attachment-label{display:block;margin-bottom:10px}.file-label:after{display:inline;content:\" *\";vertical-align:top;color:var(--app-neutral-dark-color)}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i3.NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => i3.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i3.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(() => i3.NgStyle), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatProgressSpinnerModule) }, { kind: "component", type: i0.forwardRef(() => i4.MatProgressSpinner), selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatMenuModule) }, { kind: "component", type: i0.forwardRef(() => i5.MatMenu), selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i0.forwardRef(() => i5.MatMenuItem), selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i0.forwardRef(() => i5.MatMenuTrigger), selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatIconModule) }, { kind: "component", type: i0.forwardRef(() => i6.MatIcon), selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatButtonModule) }, { kind: "component", type: i0.forwardRef(() => i7.MatButton), selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i0.forwardRef(() => i7.MatIconButton), selector: "button[mat-icon-button]", exportAs: ["matButton"] }] }); }
379
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AttachmentComponent, deps: [{ token: i1.AngularPConnectService }, { token: i2.Utils }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
380
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AttachmentComponent, isStandalone: true, selector: "app-attachment", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["uploader"], descendants: true }], ngImport: i0, template: "<div class=\"file-upload-container\" *ngIf=\"bVisible$\">\n <span class=\"attachment-label\" [ngClass]=\"{ 'file-label': bRequired$ }\">{{ label$ }}</span>\n <div *ngIf=\"(files.length === 0 && !allowMultiple$) || allowMultiple$\">\n <div\n style=\"margin-bottom: 10px\"\n id=\"attachment-container\"\n [ngClass]=\"validateMessage ? 'psdk-modal-file-selector-error' : 'psdk-modal-file-selector'\"\n >\n <div [hidden]=\"true\" id=\"attachment-ID\">\n {{ valueRef }}\n </div>\n <input hidden type=\"file\" [required]=\"bRequired$\" #uploader [id]=\"valueRef\" [multiple]=\"allowMultiple$\" (change)=\"onFileAdded($event)\" />\n <button mat-stroked-button color=\"primary\" [disabled]=\"bDisabled$\" (click)=\"uploader.click()\">\n {{\n allowMultiple$\n ? uploadMultipleFilesLabel === 'file_upload_text_multiple'\n ? 'Choose files'\n : uploadMultipleFilesLabel\n : uploadSingleFileLabel === 'file_upload_text_one'\n ? 'Choose a file'\n : uploadSingleFileLabel\n }}\n </button>\n </div>\n </div>\n <span *ngIf=\"validateMessage\" class=\"file-error\">{{ validateMessage }}</span>\n <div *ngIf=\"files && files.length > 0\">\n <div *ngFor=\"let file of files\">\n <div class=\"psdk-attachment-card\">\n <div className=\"psdk-utility-card-icon\">\n <img *ngIf=\"!file.inProgress\" class=\"psdk-attachment-card-svg-icon\" src=\"{{ srcImg }}\" />\n <mat-spinner *ngIf=\"file.inProgress\" class=\"progress-spinner\" diameter=\"40\"></mat-spinner>\n </div>\n <div class=\"psdk-attachment-card-main\">\n <div class=\"psdk-attachment-card-main-primary-label\">{{ file.props.name }}</div>\n <div *ngIf=\"file.props.meta\" [ngStyle]=\"{ color: file.props.error ? 'red' : null }\">{{ file.props.meta }}</div>\n </div>\n <div class=\"psdk-attachment-action\">\n <button id=\"delete-attachment\" *ngIf=\"file.ID\" class=\"psdk-utility-button\" (click)=\"deleteFile(file)\">\n <img class=\"psdk-utility-card-action-svg-icon\" src=\"{{ deleteIcon }}\" />\n </button>\n <div *ngIf=\"!file.ID\">\n <button id=\"setting-button\" mat-icon-button [matMenuTriggerFor]=\"actionMenu\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #actionMenu=\"matMenu\">\n <button mat-menu-item (click)=\"downloadFile(file.responseProps ? file.responseProps : {})\">Download</button>\n <button mat-menu-item (click)=\"deleteFile(file)\">Delete</button>\n </mat-menu>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".progress-spinner{text-align:center;position:absolute;left:45%}.psdk-modal-file-selector{border:1px dashed var(--app-neutral-dark-color);width:100%;padding:.3rem;text-align:center;position:relative}.psdk-modal-file-selector-error{border:1px dashed var(--app-error-light-color);width:100%;padding:.3rem;text-align:center;position:relative}.psdk-modal-file-selector{border:1px dashed var(--app-neutral-dark-color);padding:.5rem;text-align:center;position:relative}.label-required:after{display:inline;content:\" *\";vertical-align:top;color:var(--app-neutral-dark-color)}.file-error{color:var(--app-error-light-color)}.psdk-modal-file-selector-error{border:1px dashed var(--app-error-light-color);padding:.5rem;text-align:center;position:relative}.psdk-full-width{width:100%}.psdk-label-readonly{opacity:54%;font-size:.8rem;font-weight:400}.psdk-data-readonly{padding-top:.625rem;width:100%}.psdk-attachment-list{border:1px solid var(--app-neutral-color)}::ng-deep .mat-mdc-form-field-infix{width:auto}.psdk-attachment-card{display:flex;align-items:center;border:.0625rem solid rgb(207,207,207);border-radius:.25rem;padding:.25rem 0rem .25rem .25rem;min-height:3rem;margin-bottom:.5rem}.psdk-attachment-card-main-primary-label{font-weight:500;text-overflow:ellipsis;overflow:hidden;white-space:normal}.psdk-attachment-card-main{flex-grow:2;margin-left:5px}.psdk-attachment-action{flex-grow:1;text-align:right}.psdk-attachment-card-svg-icon{width:2.5rem}.psdk-utility-button{background:none;border:none;margin-right:.5rem;cursor:pointer}.psdk-utility-card-action-svg-icon{width:1.4rem;display:inline-block}.file-div{border:1px dashed var(--app-neutral-dark-color);width:100%;padding:.5rem;text-align:center;position:relative}.file-div-error{border:1px dashed var(--app-error-light-color);width:100%;padding:.5rem;text-align:center;position:relative}.attachment-label{display:block;margin-bottom:10px}.file-label:after{display:inline;content:\" *\";vertical-align:top;color:var(--app-neutral-dark-color)}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i3.NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => i3.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i3.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(() => i3.NgStyle), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatProgressSpinnerModule) }, { kind: "component", type: i0.forwardRef(() => i4.MatProgressSpinner), selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatMenuModule) }, { kind: "component", type: i0.forwardRef(() => i5.MatMenu), selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i0.forwardRef(() => i5.MatMenuItem), selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i0.forwardRef(() => i5.MatMenuTrigger), selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatIconModule) }, { kind: "component", type: i0.forwardRef(() => i6.MatIcon), selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatButtonModule) }, { kind: "component", type: i0.forwardRef(() => i7.MatButton), selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i0.forwardRef(() => i7.MatIconButton), selector: "button[mat-icon-button]", exportAs: ["matButton"] }] }); }
383
381
  }
384
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AttachmentComponent, decorators: [{
382
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AttachmentComponent, decorators: [{
385
383
  type: Component,
386
384
  args: [{ selector: 'app-attachment', standalone: true, imports: [CommonModule, MatProgressSpinnerModule, MatMenuModule, MatIconModule, MatButtonModule, forwardRef(() => ComponentMapperComponent)], template: "<div class=\"file-upload-container\" *ngIf=\"bVisible$\">\n <span class=\"attachment-label\" [ngClass]=\"{ 'file-label': bRequired$ }\">{{ label$ }}</span>\n <div *ngIf=\"(files.length === 0 && !allowMultiple$) || allowMultiple$\">\n <div\n style=\"margin-bottom: 10px\"\n id=\"attachment-container\"\n [ngClass]=\"validateMessage ? 'psdk-modal-file-selector-error' : 'psdk-modal-file-selector'\"\n >\n <div [hidden]=\"true\" id=\"attachment-ID\">\n {{ valueRef }}\n </div>\n <input hidden type=\"file\" [required]=\"bRequired$\" #uploader [id]=\"valueRef\" [multiple]=\"allowMultiple$\" (change)=\"onFileAdded($event)\" />\n <button mat-stroked-button color=\"primary\" [disabled]=\"bDisabled$\" (click)=\"uploader.click()\">\n {{\n allowMultiple$\n ? uploadMultipleFilesLabel === 'file_upload_text_multiple'\n ? 'Choose files'\n : uploadMultipleFilesLabel\n : uploadSingleFileLabel === 'file_upload_text_one'\n ? 'Choose a file'\n : uploadSingleFileLabel\n }}\n </button>\n </div>\n </div>\n <span *ngIf=\"validateMessage\" class=\"file-error\">{{ validateMessage }}</span>\n <div *ngIf=\"files && files.length > 0\">\n <div *ngFor=\"let file of files\">\n <div class=\"psdk-attachment-card\">\n <div className=\"psdk-utility-card-icon\">\n <img *ngIf=\"!file.inProgress\" class=\"psdk-attachment-card-svg-icon\" src=\"{{ srcImg }}\" />\n <mat-spinner *ngIf=\"file.inProgress\" class=\"progress-spinner\" diameter=\"40\"></mat-spinner>\n </div>\n <div class=\"psdk-attachment-card-main\">\n <div class=\"psdk-attachment-card-main-primary-label\">{{ file.props.name }}</div>\n <div *ngIf=\"file.props.meta\" [ngStyle]=\"{ color: file.props.error ? 'red' : null }\">{{ file.props.meta }}</div>\n </div>\n <div class=\"psdk-attachment-action\">\n <button id=\"delete-attachment\" *ngIf=\"file.ID\" class=\"psdk-utility-button\" (click)=\"deleteFile(file)\">\n <img class=\"psdk-utility-card-action-svg-icon\" src=\"{{ deleteIcon }}\" />\n </button>\n <div *ngIf=\"!file.ID\">\n <button id=\"setting-button\" mat-icon-button [matMenuTriggerFor]=\"actionMenu\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #actionMenu=\"matMenu\">\n <button mat-menu-item (click)=\"downloadFile(file.responseProps ? file.responseProps : {})\">Download</button>\n <button mat-menu-item (click)=\"deleteFile(file)\">Delete</button>\n </mat-menu>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".progress-spinner{text-align:center;position:absolute;left:45%}.psdk-modal-file-selector{border:1px dashed var(--app-neutral-dark-color);width:100%;padding:.3rem;text-align:center;position:relative}.psdk-modal-file-selector-error{border:1px dashed var(--app-error-light-color);width:100%;padding:.3rem;text-align:center;position:relative}.psdk-modal-file-selector{border:1px dashed var(--app-neutral-dark-color);padding:.5rem;text-align:center;position:relative}.label-required:after{display:inline;content:\" *\";vertical-align:top;color:var(--app-neutral-dark-color)}.file-error{color:var(--app-error-light-color)}.psdk-modal-file-selector-error{border:1px dashed var(--app-error-light-color);padding:.5rem;text-align:center;position:relative}.psdk-full-width{width:100%}.psdk-label-readonly{opacity:54%;font-size:.8rem;font-weight:400}.psdk-data-readonly{padding-top:.625rem;width:100%}.psdk-attachment-list{border:1px solid var(--app-neutral-color)}::ng-deep .mat-mdc-form-field-infix{width:auto}.psdk-attachment-card{display:flex;align-items:center;border:.0625rem solid rgb(207,207,207);border-radius:.25rem;padding:.25rem 0rem .25rem .25rem;min-height:3rem;margin-bottom:.5rem}.psdk-attachment-card-main-primary-label{font-weight:500;text-overflow:ellipsis;overflow:hidden;white-space:normal}.psdk-attachment-card-main{flex-grow:2;margin-left:5px}.psdk-attachment-action{flex-grow:1;text-align:right}.psdk-attachment-card-svg-icon{width:2.5rem}.psdk-utility-button{background:none;border:none;margin-right:.5rem;cursor:pointer}.psdk-utility-card-action-svg-icon{width:1.4rem;display:inline-block}.file-div{border:1px dashed var(--app-neutral-dark-color);width:100%;padding:.5rem;text-align:center;position:relative}.file-div-error{border:1px dashed var(--app-error-light-color);width:100%;padding:.5rem;text-align:center;position:relative}.attachment-label{display:block;margin-bottom:10px}.file-label:after{display:inline;content:\" *\";vertical-align:top;color:var(--app-neutral-dark-color)}\n"] }]
387
385
  }], ctorParameters: () => [{ type: i1.AngularPConnectService }, { type: i2.Utils }, { type: i0.NgZone }], propDecorators: { pConn$: [{
@@ -392,4 +390,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
392
390
  type: ViewChild,
393
391
  args: ['uploader', { static: false }]
394
392
  }] } });
395
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L2F0dGFjaG1lbnQvYXR0YWNobWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L2F0dGFjaG1lbnQvYXR0YWNobWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBVSxVQUFVLEVBQWEsU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBRS9HLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLFFBQVEsTUFBTSxZQUFZLENBQUM7QUFHbEMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOERBQThELENBQUM7Ozs7Ozs7OztBQWlCeEcsTUFBTSxPQUFPLG1CQUFtQjtJQW9DOUIsWUFDVSxlQUF1QyxFQUN2QyxLQUFZLEVBQ1osTUFBYztRQUZkLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQUN2QyxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1osV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQW5DeEIsdUNBQXVDO1FBQ3ZDLHdCQUFtQixHQUF3QixFQUFFLENBQUM7UUFHOUMsV0FBTSxH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dCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgTmdab25lLCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcbmltcG9ydCBkb3dubG9hZCBmcm9tICdkb3dubG9hZGpzJztcbmltcG9ydCB7IEFuZ3VsYXJQQ29ubmVjdERhdGEsIEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2FuZ3VsYXItcGNvbm5lY3QnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9faGVscGVycy91dGlscyc7XG5pbXBvcnQgeyBDb21wb25lbnRNYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2NvbXBvbmVudC1tYXBwZXIvY29tcG9uZW50LW1hcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUENvbm5GaWVsZFByb3BzIH0gZnJvbSAnLi4vLi4vLi4vX3R5cGVzL1BDb25uUHJvcHMuaW50ZXJmYWNlJztcblxuaW50ZXJmYWNlIEF0dGFjaG1lbnRQcm9wcyBleHRlbmRzIE9taXQ8UENvbm5GaWVsZFByb3BzLCAndmFsdWUnPiB7XG4gIC8vIElmIGFueSwgZW50ZXIgYWRkaXRpb25hbCBwcm9wcyB0aGF0IG9ubHkgZXhpc3Qgb24gdGhpcyBjb21wb25lbnRcbiAgdmFsdWU6IGFueTtcbiAgZXh0ZW5zaW9uczogYW55O1xuICBhbGxvd011bHRpcGxlOiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYXR0YWNobWVudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdHRhY2htZW50LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXR0YWNobWVudC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsIE1hdE1lbnVNb2R1bGUsIE1hdEljb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBBdHRhY2htZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcbiAgQElucHV0KCkgZm9ybUdyb3VwJDogRm9ybUdyb3VwO1xuXG4gIC8vIEZvciBpbnRlcmFjdGlvbiB3aXRoIEFuZ3VsYXJQQ29ubmVjdFxuICBhbmd1bGFyUENvbm5lY3REYXRhOiBBbmd1bGFyUENvbm5lY3REYXRhID0ge307XG4gIEBWaWV3Q2hpbGQoJ3VwbG9hZGVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGZpbGVJbnB1dDogRWxlbWVudFJlZjtcblxuICBsYWJlbCQgPSAnJztcbiAgdmFsdWUkOiBhbnk7XG4gIGJSZXF1aXJlZCQgPSBmYWxzZTtcbiAgYlJlYWRvbmx5JCA9IGZhbHNlO1xuICBiRGlzYWJsZWQkID0gZmFsc2U7XG4gIGJWaXNpYmxlJCA9IHRydWU7XG4gIGJMb2FkaW5nJCA9IGZhbHNlO1xuICBiU2hvd1NlbGVjdG9yJCA9IHRydWU7XG4gIGF0dF9jYXRlZ29yeU5hbWU6IHN0cmluZztcbiAgZmlsZVRlbXA6IGFueSA9IHt9O1xuICBjYXNlSUQ6IGFueTtcbiAgYWxsb3dNdWx0aXBsZSQgPSBmYWxzZTtcbiAgZXh0ZW5zaW9ucyQgPSAnJztcbiAgc3RhdHVzID0gJyc7XG4gIHZhbGlkYXRlTWVzc2FnZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyc7XG4gIHZhbHVlUmVmOiBzdHJpbmc7XG4gIGltYWdlUGF0aCQ6IHN0cmluZztcbiAgbG9jYWxpemVkVmFsID0gUENvcmUuZ2V0TG9jYWxlVXRpbHMoKS5nZXRMb2NhbGVWYWx1ZTtcbiAgbG9jYWxlQ2F0ZWdvcnkgPSAnQ29zbW9zRmllbGRzJztcbiAgdXBsb2FkTXVsdGlwbGVGaWxlc0xhYmVsID0gdGhpcy5sb2NhbGl6ZWRWYWwoJ2ZpbGVfdXBsb2FkX3RleHRfbXVsdGlwbGUnLCB0aGlzLmxvY2FsZUNhdGVnb3J5KTtcbiAgdXBsb2FkU2luZ2xlRmlsZUxhYmVsID0gdGhpcy5sb2NhbGl6ZWRWYWwoJ2ZpbGVfdXBsb2FkX3RleHRfb25lJywgdGhpcy5sb2NhbGVDYXRlZ29yeSk7XG4gIGZpbGVzV2l0aEVycm9yOiBhbnkgPSBbXTtcbiAgZmlsZXM6IGFueSA9IFtdO1xuICBjYXRlZ29yeU5hbWU6IHN0cmluZztcbiAgZGlzcGxheU1vZGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgc3JjSW1nOiBhbnk7XG4gIGRlbGV0ZUljb246IHN0cmluZztcbiAgdGVtcEZpbGVzVG9CZVVwbG9hZGVkOiBhbnlbXTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbmd1bGFyUENvbm5lY3Q6IEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1dGlsczogVXRpbHMsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gLy8gRmlyc3QgdGhpbmcgaW4gaW5pdGlhbGl6YXRpb24gaXMgcmVnaXN0ZXJpbmcgYW5kIHN1YnNjcmliaW5nIHRvIHRoZSBBbmd1bGFyUENvbm5lY3Qgc2VydmljZVxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YSA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50KHRoaXMsIHRoaXMub25TdGF0ZUNoYW5nZSk7XG4gICAgdGhpcy5jYXNlSUQgPSBQQ29yZS5nZXRTdG9yZVZhbHVlKCcucHlJRCcsICdjYXNlSW5mby5jb250ZW50JywgdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSk7XG4gICAgdGhpcy5zcmNJbWcgPSB0aGlzLnV0aWxzLmdldEltYWdlU3JjKCdkb2N1bWVudC1kb2MnLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG4gICAgdGhpcy5kZWxldGVJY29uID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYygndHJhc2gnLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG4gICAgdGhpcy5jaGVja0FuZFVwZGF0ZSgpO1xuICAgIHRoaXMuZ2V0QXR0YWNobWVudHMoKTtcbiAgfVxuXG4gIGdldEF0dGFjaG1lbnRzKCkge1xuICAgIGxldCB0ZW1wVXBsb2FkZWRGaWxlcyA9IHRoaXMuZ2V0Q3VycmVudEF0dGFjaG1lbnRzTGlzdCh0aGlzLmdldEF0dGFjaG1lbnRLZXkodGhpcy52YWx1ZVJlZiksIHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCkpO1xuICAgIHRlbXBVcGxvYWRlZEZpbGVzID0gdGVtcFVwbG9hZGVkRmlsZXMuZmlsdGVyKGYgPT4gZi5sYWJlbCA9PT0gdGhpcy52YWx1ZVJlZiAmJiBmLmRlbGV0ZSAhPT0gdHJ1ZSk7XG4gICAgdGhpcy5maWxlcz8ubWFwKGYgPT4ge1xuICAgICAgcmV0dXJuIGYucmVzcG9uc2VQcm9wcz8ucHpJbnNLZXkgJiYgIWYucmVzcG9uc2VQcm9wcy5wekluc0tleS5pbmNsdWRlcygndGVtcCcpXG4gICAgICAgID8ge1xuICAgICAgICAgICAgLi4uZixcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgIC4uLmYucHJvcHMsXG4gICAgICAgICAgICAgIG9uRGVsZXRlOiAoKSA9PiB0aGlzLmRlbGV0ZUZpbGUoZilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDogeyAuLi5mIH07XG4gICAgfSk7XG4gICAgdGhpcy5maWxlcyA9IFsuLi50aGlzLmZpbGVzLCAuLi50ZW1wVXBsb2FkZWRGaWxlc107XG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5zdWJzY3JpYmUoXG4gICAgICBQQ29yZS5nZXRDb25zdGFudHMoKS5QVUJfU1VCX0VWRU5UUy5DQVNFX0VWRU5UUy5BU1NJR05NRU5UX1NVQk1JU1NJT04sXG4gICAgICB0aGlzLnJlc2V0QXR0YWNobWVudFN0b3JlZFN0YXRlLmJpbmQodGhpcyksXG4gICAgICB0aGlzLmNhc2VJRFxuICAgICk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkudW5zdWJzY3JpYmUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuUFVCX1NVQl9FVkVOVFMuQ0FTRV9FVkVOVFMuQVNTSUdOTUVOVF9TVUJNSVNTSU9OLCB0aGlzLmNhc2VJRCk7XG4gICAgfTtcbiAgfVxuXG4gIGNoZWNrQW5kVXBkYXRlKCkge1xuICAgIC8vIFNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGJyaWRnZSB0byBzZWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGRcbiAgICAvLyB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIGlmIChiVXBkYXRlU2VsZikge1xuICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2FsbGJhY2sgcGFzc2VkIHdoZW4gc3Vic2NyaWJpbmcgdG8gc3RvcmUgY2hhbmdlXG4gIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgdGhpcy5jaGVja0FuZFVwZGF0ZSgpO1xuICB9XG5cbiAgdXBkYXRlU2VsZigpIHtcbiAgICBjb25zdCBjb25maWdQcm9wczogQXR0YWNobWVudFByb3BzID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpIGFzIEF0dGFjaG1lbnRQcm9wcztcbiAgICBjb25zdCBzdGF0ZVByb3BzOiBhbnkgPSB0aGlzLnBDb25uJC5nZXRTdGF0ZVByb3BzKCk7XG4gICAgY29uc3QgeyB2YWx1ZSwgbGFiZWwsIGV4dGVuc2lvbnMsIGRpc3BsYXlNb2RlIH0gPSBjb25maWdQcm9wcztcblxuICAgIGlmIChjb25maWdQcm9wcy5yZXF1aXJlZCAhPSBudWxsKSB7XG4gICAgICB0aGlzLmJSZXF1aXJlZCQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZShjb25maWdQcm9wcy5yZXF1aXJlZCk7XG4gICAgfVxuICAgIGlmIChjb25maWdQcm9wcy52aXNpYmlsaXR5ICE9IG51bGwpIHtcbiAgICAgIHRoaXMuYlZpc2libGUkID0gdGhpcy51dGlscy5nZXRCb29sZWFuVmFsdWUoY29uZmlnUHJvcHMudmlzaWJpbGl0eSk7XG4gICAgfVxuXG4gICAgLy8gZGlzYWJsZWRcbiAgICBpZiAoY29uZmlnUHJvcHMuZGlzYWJsZWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmJEaXNhYmxlZCQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZShjb25maWdQcm9wcy5kaXNhYmxlZCk7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ1Byb3BzLnJlYWRPbmx5ICE9IG51bGwpIHtcbiAgICAgIHRoaXMuYlJlYWRvbmx5JCA9IHRoaXMudXRpbHMuZ2V0Qm9vbGVhblZhbHVlKGNvbmZpZ1Byb3BzLnJlYWRPbmx5KTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnUHJvcHMuYWxsb3dNdWx0aXBsZSAhPSBudWxsKSB7XG4gICAgICB0aGlzLmFsbG93TXVsdGlwbGUkID0gdGhpcy51dGlscy5nZXRCb29sZWFuVmFsdWUoY29uZmlnUHJvcHMuYWxsb3dNdWx0aXBsZSk7XG4gICAgfVxuXG4gICAgdGhpcy5sYWJlbCQgPSBsYWJlbDtcbiAgICB0aGlzLnZhbHVlJCA9IHZhbHVlO1xuICAgIHRoaXMuc3RhdHVzID0gc3RhdGVQcm9wcy5zdGF0dXM7XG5cbiAgICB0aGlzLnZhbGlkYXRlTWVzc2FnZSA9IHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS52YWxpZGF0ZU1lc3NhZ2U7XG4gICAgdGhpcy5leHRlbnNpb25zJCA9IGV4dGVuc2lvbnM7XG4gICAgdGhpcy52YWx1ZVJlZiA9ICh0aGlzLnBDb25uJC5nZXRTdGF0ZVByb3BzKCkgYXMgYW55KS52YWx1ZTtcbiAgICB0aGlzLnZhbHVlUmVmID0gdGhpcy52YWx1ZVJlZi5zdGFydHNXaXRoKCcuJykgPyB0aGlzLnZhbHVlUmVmLnN1YnN0cmluZygxKSA6IHRoaXMudmFsdWVSZWY7XG4gICAgdGhpcy5kaXNwbGF5TW9kZSA9IGRpc3BsYXlNb2RlO1xuICAgIC8qIHRoaXMgaXMgYSB0ZW1wb3JhcnkgZml4IGJlY2F1c2UgcmVxdWlyZWQgaXMgc3VwcG9zZWQgdG8gYmUgcGFzc2VkIGFzIGEgYm9vbGVhbiBhbmQgTk9UIGFzIGEgc3RyaW5nICovXG4gICAgbGV0IHsgcmVxdWlyZWQsIGRpc2FibGVkIH0gPSBjb25maWdQcm9wcztcbiAgICBbcmVxdWlyZWQsIGRpc2FibGVkXSA9IFtyZXF1aXJlZCwgZGlzYWJsZWRdLm1hcChwcm9wID0+IHByb3AgPT09IHRydWUgfHwgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJyAmJiBwcm9wID09PSAndHJ1ZScpKTtcblxuICAgIHRoaXMuY2F0ZWdvcnlOYW1lID0gJyc7XG4gICAgaWYgKHZhbHVlICYmIHZhbHVlLnB5Q2F0ZWdvcnlOYW1lKSB7XG4gICAgICB0aGlzLmNhdGVnb3J5TmFtZSA9IHZhbHVlLnB5Q2F0ZWdvcnlOYW1lO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZT8ucHhSZXN1bHRzICYmICt2YWx1ZS5weUNvdW50ID4gMCkge1xuICAgICAgdGhpcy5maWxlcyA9IHZhbHVlLnB4UmVzdWx0cy5tYXAoZiA9PiB0aGlzLmJ1aWxkRmlsZVByb3BzRnJvbVJlc3BvbnNlKGYpKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZUF0dGFjaG1lbnRzKCk7XG4gIH1cblxuICBidWlsZEZpbGVQcm9wc0Zyb21SZXNwb25zZShyZXNwT2JqKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIG1ldGE6IGAke3Jlc3BPYmoucHlDYXRlZ29yeU5hbWV9LCAke3Jlc3BPYmoucHhDcmVhdGVPcGVyYXRvcn1gLFxuICAgICAgICBuYW1lOiByZXNwT2JqLnB5QXR0YWNoTmFtZSxcbiAgICAgICAgaWNvbjogdGhpcy51dGlscy5nZXRJY29uRnJvbUZpbGVUeXBlKHJlc3BPYmoucHlNaW1lRmlsZUV4dGVuc2lvbilcbiAgICAgIH0sXG4gICAgICByZXNwb25zZVByb3BzOiB7XG4gICAgICAgIC4uLnJlc3BPYmpcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgdXBkYXRlQXR0YWNobWVudHMoKSB7XG4gICAgaWYgKHRoaXMuZmlsZXMubGVuZ3RoID4gMCAmJiB0aGlzLmRpc3BsYXlNb2RlICE9PSAnRElTUExBWV9PTkxZJykge1xuICAgICAgY29uc3QgY3VycmVudEF0dGFjaG1lbnRMaXN0ID0gdGhpcy5nZXRDdXJyZW50QXR0YWNobWVudHNMaXN0KHRoaXMuZ2V0QXR0YWNobWVudEtleSh0aGlzLnZhbHVlUmVmKSwgdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSk7XG4gICAgICAvLyBibG9jayBkdXBsaWNhdGUgZmlsZXMgdG8gcmVkdXggc3RvcmUgd2hlbiBhZGRlZCAxIGFmdGVyIGFub3RoZXIgdG8gcHJldmVudCBtdWx0aXBsZSBkdXBsaWNhdGVzIGJlaW5nIGFkZGVkIHRvIHRoZSBjYXNlIG9uIHN1Ym1pdFxuICAgICAgY29uc3QgdGVtcEZpbGVzID0gdGhpcy5maWxlcy5maWx0ZXIoZiA9PiBjdXJyZW50QXR0YWNobWVudExpc3QuZmluZEluZGV4KGZyID0+IGZyLklEID09PSBmLklEKSA9PT0gLTEgJiYgIWYuaW5Qcm9ncmVzcyAmJiBmLnJlc3BvbnNlUHJvcHMpO1xuICAgICAgY29uc3QgdXBkYXRlZEF0dExpc3QgPSBbLi4uY3VycmVudEF0dGFjaG1lbnRMaXN0LCAuLi50ZW1wRmlsZXNdO1xuICAgICAgdGhpcy51cGRhdGVBdHRhY2htZW50U3RhdGUodGhpcy5wQ29ubiQsIHRoaXMuZ2V0QXR0YWNobWVudEtleSh0aGlzLnZhbHVlUmVmKSwgdXBkYXRlZEF0dExpc3QpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0QXR0YWNobWVudFN0b3JlZFN0YXRlKCkge1xuICAgIFBDb3JlLmdldFN0YXRlVXRpbHMoKS51cGRhdGVTdGF0ZSh0aGlzLnBDb25uJD8uZ2V0Q29udGV4dE5hbWUoKSwgdGhpcy5nZXRBdHRhY2htZW50S2V5KHRoaXMudmFsdWVSZWYpLCB1bmRlZmluZWQsIHtcbiAgICAgIHBhZ2VSZWZlcmVuY2U6ICdjb250ZXh0X2RhdGEnLFxuICAgICAgaXNBcnJheURlZXBNZXJnZTogZmFsc2VcbiAgICB9KTtcbiAgfVxuXG4gIGRvd25sb2FkRmlsZShmaWxlT2JqOiBhbnkpIHtcbiAgICBQQ29yZS5nZXRBdHRhY2htZW50VXRpbHMoKVxuICAgICAgLy8gQHRzLWlnbm9yZSAtIDNyZCBwYXJhbWV0ZXIgXCJyZXNwb25zZUVuY29kaW5nXCIgc2hvdWxkIGJlIG9wdGlvbmFsXG4gICAgICAuZG93bmxvYWRBdHRhY2htZW50KGZpbGVPYmoucHpJbnNLZXksIHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCkpXG4gICAgICAudGhlbigoY29udGVudDogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbGVPYmoucHlBdHRhY2hOYW1lLnNwbGl0KCcuJykucG9wKCk7XG4gICAgICAgIHRoaXMuZmlsZURvd25sb2FkKGNvbnRlbnQuZGF0YSwgZmlsZU9iai5weUZpbGVOYW1lLCBleHRlbnNpb24pO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGZpbGVEb3dubG9hZCA9IChkYXRhLCBmaWxlTmFtZSwgZXh0KSA9PiB7XG4gICAgY29uc3QgZmlsZSA9IGV4dCA/IGAke2ZpbGVOYW1lfS4ke2V4dH1gIDogZmlsZU5hbWU7XG4gICAgZG93bmxvYWQoYXRvYihkYXRhKSwgZmlsZSk7XG4gIH07XG5cbiAgZ2V0QXR0YWNobWVudEtleSA9IChuYW1lID0gJycpID0+IChuYW1lID8gYGF0dGFjaG1lbnRzTGlzdC4ke25hbWV9YCA6ICdhdHRhY2htZW50c0xpc3QnKTtcblxuICBnZXRDdXJyZW50QXR0YWNobWVudHNMaXN0KGtleSwgY29udGV4dCkge1xuICAgIHJldHVybiBQQ29yZS5nZXRTdG9yZVZhbHVlKGAuJHtrZXl9YCwgJ2NvbnRleHRfZGF0YScsIGNvbnRleHQpIHx8IFtdO1xuICB9XG5cbiAgdmFsaWRhdGVNYXhTaXplKGZpbGVPYmosIG1heFNpemVJbk1CKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZmlsZVNpemUgPSAoZmlsZU9iai5zaXplIC8gMTA0ODU3NikudG9GaXhlZCgyKTtcbiAgICByZXR1cm4gcGFyc2VGbG9hdChmaWxlU2l6ZSkgPCBwYXJzZUZsb2F0KG1heFNpemVJbk1CKTtcbiAgfVxuXG4gIHZhbGlkYXRlRmlsZUV4dGVuc2lvbiA9IChmaWxlT2JqLCBhbGxvd2VkRXh0ZW5zaW9ucykgPT4ge1xuICAgIGlmICghYWxsb3dlZEV4dGVuc2lvbnMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBhbGxvd2VkRXh0ZW5zaW9uTGlzdCA9IGFsbG93ZWRFeHRlbnNpb25zXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnNwbGl0KCcsJylcbiAgICAgIC5tYXAoaXRlbSA9PiBpdGVtLnJlcGxhY2VBbGwoJy4nLCAnJykudHJpbSgpKTtcbiAgICBjb25zdCBleHRlbnNpb24gPSBmaWxlT2JqLm5hbWUuc3BsaXQoJy4nKS5wb3AoKS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBhbGxvd2VkRXh0ZW5zaW9uTGlzdC5pbmNsdWRlcyhleHRlbnNpb24pO1xuICB9O1xuXG4gIHVwZGF0ZUF0dGFjaG1lbnRTdGF0ZShwQ29ubiwga2V5LCBhdHRhY2htZW50cykge1xuICAgIFBDb3JlLmdldFN0YXRlVXRpbHMoKS51cGRhdGVTdGF0ZSh0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpLCBrZXksIGF0dGFjaG1lbnRzLCB7XG4gICAgICBwYWdlUmVmZXJlbmNlOiAnY29udGV4dF9kYXRhJyxcbiAgICAgIGlzQXJyYXlEZWVwTWVyZ2U6IGZhbHNlXG4gICAgfSk7XG4gIH1cblxuICBkZWxldGVGaWxlKGZpbGUpIHtcbiAgICBjb25zdCBhdHRhY2htZW50c0xpc3Q6IGFueVtdID0gW107XG4gICAgbGV0IGN1cnJlbnRBdHRhY2htZW50TGlzdCA9IHRoaXMuZ2V0Q3VycmVudEF0dGFjaG1lbnRzTGlzdCh0aGlzLmdldEF0dGFjaG1lbnRLZXkodGhpcy52YWx1ZVJlZiksIHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCkpO1xuXG4gICAgLy8gSWYgZmlsZSB0byBiZSBkZWxldGVkIGlzIHRoZSBvbmUgYWRkZWQgaW4gcHJldmlvdXMgc3RhZ2UgaS5lLiBmb3Igd2hpY2ggYSBmaWxlIGluc3RhbmNlIGlzIGNyZWF0ZWQgaW4gc2VydmVyXG4gICAgLy8gbm8gbmVlZCB0byBmaWx0ZXIgY3VycmVudEF0dGFjaG1lbnRMaXN0IGFzIHdlIHdpbGwgZ2V0IGFub3RoZXIgZW50cnkgb2YgZmlsZSBpbiByZWR1eCB3aXRoIGRlbGV0ZSAmIGxhYmVsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuc2FmZS1vcHRpb25hbC1jaGFpbmluZ1xuICAgIGlmICh0aGlzLnZhbHVlJCAmJiB0aGlzLnZhbHVlJD8ucHhSZXN1bHRzICYmICt0aGlzLnZhbHVlJD8ucHlDb3VudCA+IDAgJiYgZmlsZS5yZXNwb25zZVByb3BzICYmIGZpbGU/LnJlc3BvbnNlUHJvcHM/LnB6SW5zS2V5ICE9PSAndGVtcCcpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRBdHRhY2htZW50cyA9IHRoaXMuZmlsZXMubWFwKGYgPT4ge1xuICAgICAgICBpZiAoZi5yZXNwb25zZVByb3BzICYmIGYucmVzcG9uc2VQcm9wcy5wekluc0tleSA9PT0gZmlsZS5yZXNwb25zZVByb3BzLnB6SW5zS2V5KSB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4uZiwgZGVsZXRlOiB0cnVlLCBsYWJlbDogdGhpcy52YWx1ZVJlZiB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIHVwZGF0aW5nIHRoZSByZWR1eCBzdG9yZSB0byBoZWxwIGZvcm0taGFuZGxlciBpbiBwYXNzaW5nIHRoZSBkYXRhIHRvIGRlbGV0ZSB0aGUgZmlsZSBmcm9tIHNlcnZlclxuICAgICAgdGhpcy51cGRhdGVBdHRhY2htZW50U3RhdGUodGhpcy5wQ29ubiQsIHRoaXMuZ2V0QXR0YWNobWVudEtleSh0aGlzLnZhbHVlUmVmKSwgWy4uLnVwZGF0ZWRBdHRhY2htZW50c10pO1xuICAgICAgY29uc3QgbmV3bHlBZGRlZEZpbGVzID0gdGhpcy5maWxlcy5maWx0ZXIoZiA9PiAhIWYuSUQpO1xuICAgICAgY29uc3QgZmlsZXNQb3N0RGVsZXRlID0gdGhpcy5maWxlcy5maWx0ZXIoXG4gICAgICAgIGYgPT4gZi5yZXNwb25zZVByb3BzPy5wekluc0tleSAhPT0gJ3RlbXAnICYmIGYucmVzcG9uc2VQcm9wcz8ucHpJbnNLZXkgIT09IGZpbGUucmVzcG9uc2VQcm9wcz8ucHpJbnNLZXlcbiAgICAgICk7XG4gICAgICB0aGlzLmZpbGVzID0gWy4uLmZpbGVzUG9zdERlbGV0ZSwgLi4ubmV3bHlBZGRlZEZpbGVzXTtcbiAgICB9IC8vICBpZiB0aGUgZmlsZSBiZWluZyBkZWxldGVkIGlzIHRoZSBhZGRlZCBpbiB0aGlzIHN0YWdlICBpLmUuIHdob3NlIGRhdGEgaXMgbm90IHlldCBjcmVhdGVkIGluIHNlcnZlclxuICAgIGVsc2Uge1xuICAgICAgLy8gZmlsdGVyIG5ld2x5IGFkZGVkIGZpbGVzIGluIHRoaXMgc3RhZ2UsIGxhdGVyIHRoZSB1cGRhdGVkIGN1cnJlbnQgc3RhZ2UgZmlsZXMgd2lsbCBiZSBhZGRlZCB0byByZWR1eCBvbmNlIGZpbGVzIHN0YXRlIGlzIHVwZGF0ZWRcbiAgICAgIGN1cnJlbnRBdHRhY2htZW50TGlzdCA9IGN1cnJlbnRBdHRhY2htZW50TGlzdC5maWx0ZXIoZiA9PiBmLklEICE9PSBmaWxlLklEKTtcbiAgICAgIHRoaXMuZmlsZXMgPSB0aGlzLmZpbGVzLmZpbHRlcihmID0+IGYuSUQgIT09IGZpbGUuSUQpO1xuXG4gICAgICB0aGlzLnVwZGF0ZUF0dGFjaG1lbnRTdGF0ZSh0aGlzLnBDb25uJCwgdGhpcy5nZXRBdHRhY2htZW50S2V5KHRoaXMudmFsdWVSZWYpLCBbLi4uY3VycmVudEF0dGFjaG1lbnRMaXN0LCAuLi5hdHRhY2htZW50c0xpc3RdKTtcbiAgICAgIGlmIChmaWxlLmluUHJvZ3Jlc3MpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZSAtIDNyZCBwYXJhbWV0ZXIgXCJyZXNwb25zZUVuY29kaW5nXCIgc2hvdWxkIGJlIG9wdGlvbmFsXG4gICAgICAgIFBDb3JlLmdldEF0dGFjaG1lbnRVdGlscygpLmNhbmNlbFJlcXVlc3QoZmlsZS5JRCwgcENvbm4uZ2V0Q29udGV4dE5hbWUoKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5maWxlc1dpdGhFcnJvciA9IHRoaXMuZmlsZXNXaXRoRXJyb3I/LmZpbHRlcihmID0+IGYuSUQgIT09IGZpbGUuSUQpO1xuICAgIGlmICh0aGlzLmZpbGVzV2l0aEVycm9yLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5jbGVhckZpZWxkRXJyb3JNZXNzYWdlcygpO1xuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC1leHByZXNzaW9uc1xuICAgIHRoaXMuZmlsZUlucHV0ICYmIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPyBudWxsIDogJyc7XG4gIH1cblxuICBvbkZpbGVBZGRlZChldmVudCkge1xuICAgIGxldCBhZGRlZEZpbGVzID0gQXJyYXkuZnJvbShldmVudC50YXJnZXQuZmlsZXMpO1xuICAgIGFkZGVkRmlsZXMgPSB0aGlzLmFsbG93TXVsdGlwbGUkID8gYWRkZWRGaWxlcyA6IFthZGRlZEZpbGVzWzBdXTtcbiAgICBjb25zdCBtYXhBdHRhY2htZW50U2l6ZSA9IFBDb3JlLmdldEVudmlyb25tZW50SW5mbygpLmdldE1heEF0dGFjaG1lbnRTaXplKCkgfHwgJzUnO1xuICAgIHRoaXMudGVtcEZpbGVzVG9CZVVwbG9hZGVkID0gW1xuICAgICAgLi4uYWRkZWRGaWxlcy5tYXAoKGY6IGFueSwgaW5kZXgpID0+IHtcbiAgICAgICAgZi5JRCA9IGAke25ldyBEYXRlKCkuZ2V0VGltZSgpfUkke2luZGV4fWA7XG4gICAgICAgIGYuaW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgIGYucHJvcHMgPSB7XG4gICAgICAgICAgdHlwZTogZi50eXBlLFxuICAgICAgICAgIG5hbWU6IGYubmFtZSxcbiAgICAgICAgICBpY29uOiB0aGlzLnV0aWxzLmdldEljb25Gcm9tRmlsZVR5cGUoZi50eXBlKSxcbiAgICAgICAgICBvbkRlbGV0ZTogKCkgPT4gdGhpcy5kZWxldGVGaWxlKGYpXG4gICAgICAgIH07XG4gICAgICAgIGlmICghdGhpcy52YWxpZGF0ZU1heFNpemUoZiwgbWF4QXR0YWNobWVudFNpemUpKSB7XG4gICAgICAgICAgZi5wcm9wcy5lcnJvciA9IHRydWU7XG4gICAgICAgICAgZi5pblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgZi5wcm9wcy5tZXRhID0gdGhpcy5wQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoYEZpbGUgaXMgdG9vIGJpZy4gTWF4IGFsbG93ZWQgc2l6ZSBpcyAke21heEF0dGFjaG1lbnRTaXplfU1CLmAsICcnLCAnJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMudmFsaWRhdGVGaWxlRXh0ZW5zaW9uKGYsIHRoaXMuZXh0ZW5zaW9ucyQpKSB7XG4gICAgICAgICAgZi5wcm9wcy5lcnJvciA9IHRydWU7XG4gICAgICAgICAgZi5pblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgZi5wcm9wcy5tZXRhID0gYCR7dGhpcy5wQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoXG4gICAgICAgICAgICAnRmlsZSBoYXMgaW52YWxpZCBleHRlbnNpb24uIEFsbG93ZWQgZXh0ZW5zaW9ucyBhcmU6JyxcbiAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgJydcbiAgICAgICAgICApfSAke3RoaXMuZXh0ZW5zaW9ucyQucmVwbGFjZUFsbCgnLicsICcnKX1gO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmLnByb3BzLmVycm9yKSB7XG4gICAgICAgICAgY29uc3QgZmllbGROYW1lID0gKHRoaXMucENvbm4kLmdldFN0YXRlUHJvcHMoKSBhcyBhbnkpLnZhbHVlO1xuICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuICAgICAgICAgIFBDb3JlLmdldE1lc3NhZ2VNYW5hZ2VyKCkuYWRkTWVzc2FnZXMoe1xuICAgICAgICAgICAgbWVzc2FnZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSAtIFR5cGUgJ3sgdHlwZTogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmc7IH0nIGlzIG5vdCBhc3NpZ25hYmxlIHRvIHR5cGUgJ01lc3NhZ2VzQ29uZmlnT2JqZWN0Jy5cbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBwQ29ubi5nZXRMb2NhbGl6ZWRWYWx1ZSgnRXJyb3Igd2l0aCBvbmUgb3IgbW9yZSBmaWxlcycsICcnLCAnJylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHByb3BlcnR5OiBmaWVsZE5hbWUsXG4gICAgICAgICAgICBwYWdlUmVmZXJlbmNlOiB0aGlzLnBDb25uJC5nZXRQYWdlUmVmZXJlbmNlKCksXG4gICAgICAgICAgICBjb250ZXh0XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGY7XG4gICAgICB9KVxuICAgIF07XG4gICAgY29uc3QgdGVtcEZpbGVzV2l0aEVycm9yID0gdGhpcy50ZW1wRmlsZXNUb0JlVXBsb2FkZWQuZmlsdGVyKGYgPT4gZi5wcm9wcy5lcnJvcik7XG4gICAgaWYgKHRlbXBGaWxlc1dpdGhFcnJvci5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmZpbGVzV2l0aEVycm9yID0gdGVtcEZpbGVzV2l0aEVycm9yO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuYWxsb3dNdWx0aXBsZSQpIHtcbiAgICAgIHRoaXMuZmlsZXMgPSBbLi4udGhpcy50ZW1wRmlsZXNUb0JlVXBsb2FkZWRdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbGVzID0gWy4uLnRoaXMuZmlsZXMsIC4uLnRoaXMudGVtcEZpbGVzVG9CZVVwbG9hZGVkXTtcbiAgICB9XG4gICAgdGhpcy51cGxvYWRGaWxlcygpO1xuICB9XG5cbiAgY2xlYXJGaWVsZEVycm9yTWVzc2FnZXMoKSB7XG4gICAgY29uc3QgZmllbGROYW1lID0gKHRoaXMucENvbm4kLmdldFN0YXRlUHJvcHMoKSBhcyBhbnkpLnZhbHVlO1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuICAgIFBDb3JlLmdldE1lc3NhZ2VNYW5hZ2VyKCkuY2xlYXJNZXNzYWdlcyh7XG4gICAgICB0eXBlOiBQQ29yZS5nZXRDb25zdGFudHMoKS5NRVNTQUdFUy5NRVNTQUdFU19UWVBFX0VSUk9SLFxuICAgICAgcHJvcGVydHk6IGZpZWxkTmFtZSxcbiAgICAgIHBhZ2VSZWZlcmVuY2U6IHRoaXMucENvbm4kLmdldFBhZ2VSZWZlcmVuY2UoKSxcbiAgICAgIGNvbnRleHRcbiAgICB9KTtcbiAgfVxuXG4gIG9uVXBsb2FkUHJvZ3Jlc3MoKSB7fVxuXG4gIGVycm9ySGFuZGxlcihpc0ZldGNoQ2FuY2VsZWQsIGF0dGFjaGVkRmlsZSkge1xuICAgIHJldHVybiBlcnJvciA9PiB7XG4gICAgICBpZiAoIWlzRmV0Y2hDYW5jZWxlZChlcnJvcikpIHtcbiAgICAgICAgbGV0IHVwbG9hZEZhaWxNc2cgPSB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnU29tZXRoaW5nIHdlbnQgd3JvbmcnLCAnJywgJycpO1xuICAgICAgICBpZiAoZXJyb3IucmVzcG9uc2UgJiYgZXJyb3IucmVzcG9uc2UuZGF0YSAmJiBlcnJvci5yZXNwb25zZS5kYXRhLmVycm9yRGV0YWlscykge1xuICAgICAgICAgIHVwbG9hZEZhaWxNc2cgPSB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZShlcnJvci5yZXNwb25zZS5kYXRhLmVycm9yRGV0YWlsc1swXS5sb2NhbGl6ZWRWYWx1ZSwgJycsICcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZmlsZXMubWFwKGYgPT4ge1xuICAgICAgICAgIGlmIChmLklEID09PSBhdHRhY2hlZEZpbGUuSUQpIHtcbiAgICAgICAgICAgIGYucHJvcHMubWV0YSA9IHVwbG9hZEZhaWxNc2c7XG4gICAgICAgICAgICBmLnByb3BzLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIGYucHJvcHMub25EZWxldGUgPSAoKSA9PiB0aGlzLmRlbGV0ZUZpbGUoZik7XG4gICAgICAgICAgICBmLnByb3BzLmljb24gPSB0aGlzLnV0aWxzLmdldEljb25Gcm9tRmlsZVR5cGUoZi50eXBlKTtcbiAgICAgICAgICAgIGYucHJvcHMubmFtZSA9IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdVbmFibGUgdG8gdXBsb2FkIGZpbGUnLCAnJywgJycpO1xuICAgICAgICAgICAgZi5pblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSAodGhpcy5wQ29ubiQuZ2V0U3RhdGVQcm9wcygpIGFzIGFueSkudmFsdWU7XG4gICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICAgICAgICAgIC8vIHNldCBlcnJvcnMgdG8gcHJvcGVydHkgdG8gYmxvY2sgc3VibWl0IGV2ZW4gb24gZXJyb3JzIGluIGZpbGUgdXBsb2FkXG4gICAgICAgICAgICBQQ29yZS5nZXRNZXNzYWdlTWFuYWdlcigpLmFkZE1lc3NhZ2VzKHtcbiAgICAgICAgICAgICAgbWVzc2FnZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSAtIFR5cGUgJ3sgdHlwZTogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmc7IH0nIGlzIG5vdCBhc3NpZ25hYmxlIHRvIHR5cGUgJ01lc3NhZ2VzQ29uZmlnT2JqZWN0Jy5cbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdFcnJvciB3aXRoIG9uZSBvciBtb3JlIGZpbGVzJywgJycsICcnKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcHJvcGVydHk6IGZpZWxkTmFtZSxcbiAgICAgICAgICAgICAgcGFnZVJlZmVyZW5jZTogdGhpcy5wQ29ubiQuZ2V0UGFnZVJlZmVyZW5jZSgpLFxuICAgICAgICAgICAgICBjb250ZXh0XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGRlbGV0ZSBmLnByb3BzLnByb2dyZXNzO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZjtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9O1xuICB9XG5cbiAgdXBsb2FkRmlsZXMoKSB7XG4gICAgY29uc3QgZmlsZXNUb0JlVXBsb2FkZWQgPSB0aGlzLmZpbGVzXG4gICAgICAuZmlsdGVyKGUgPT4ge1xuICAgICAgICBjb25zdCBpc0ZpbGVVcGxvYWRlZCA9IGUucHJvcHMgJiYgZS5wcm9wcy5wcm9ncmVzcyA9PT0gMTAwO1xuICAgICAgICBjb25zdCBmaWxlSGFzRXJyb3IgPSBlLnByb3BzICYmIGUucHJvcHMuZXJyb3I7XG4gICAgICAgIGNvbnN0IGlzRmlsZVVwbG9hZGVkaW5MYXN0U3RlcCA9IGUucmVzcG9uc2VQcm9wcyAmJiBlLnJlc3BvbnNlUHJvcHMucHpJbnNLZXk7XG4gICAgICAgIHJldHVybiAhaXNGaWxlVXBsb2FkZWQgJiYgIWZpbGVIYXNFcnJvciAmJiAhaXNGaWxlVXBsb2FkZWRpbkxhc3RTdGVwO1xuICAgICAgfSlcbiAgICAgIC5tYXAoZiA9PlxuICAgICAgICB3aW5kb3cuUENvcmUuZ2V0QXR0YWNobWVudFV0aWxzKCkudXBsb2FkQXR0YWNobWVudChcbiAgICAgICAgICBmLFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25VcGxvYWRQcm9ncmVzcygpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgaXNGZXRjaENhbmNlbGVkID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlcihpc0ZldGNoQ2FuY2VsZWQsIGYpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKVxuICAgICAgICApXG4gICAgICApO1xuICAgIFByb21pc2UuYWxsU2V0dGxlZChmaWxlc1RvQmVVcGxvYWRlZClcbiAgICAgIC50aGVuKChmaWxlUmVzcG9uc2VzOiBhbnkpID0+IHtcbiAgICAgICAgZmlsZVJlc3BvbnNlcyA9IGZpbGVSZXNwb25zZXMuZmlsdGVyKGZyID0+IGZyLnN0YXR1cyAhPT0gJ3JlamVjdGVkJyk7IC8vIGluIGNhc2Ugb2YgZGVsZXRpbmcgYW4gaW4gcHJvZ3Jlc3MgZmlsZSwgcHJvbWlzZSBnZXRzIGNhbmNlbGxlZCBidXQgc3RpbGwgZW50ZXJzIHRoZW4gYmxvY2tcbiAgICAgICAgaWYgKGZpbGVSZXNwb25zZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuZmlsZXMuZm9yRWFjaChmID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gZmlsZVJlc3BvbnNlcy5maW5kSW5kZXgoKGZyOiBhbnkpID0+IGZyLnZhbHVlLmNsaWVudEZpbGVJRCA9PT0gZi5JRCk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICBmLnByb3BzLm1ldGEgPSB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnVXBsb2FkZWQgc3VjY2Vzc2Z1bGx5JywgJycsICcnKTtcbiAgICAgICAgICAgICAgZi5wcm9wcy5wcm9ncmVzcyA9IDEwMDtcbiAgICAgICAgICAgICAgZi5pblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgICAgIGYuaGFuZGxlID0gZmlsZVJlc3BvbnNlc1tpbmRleF0udmFsdWUuSUQ7XG4gICAgICAgICAgICAgIGYubGFiZWwgPSB0aGlzLnZhbHVlUmVmO1xuICAgICAgICAgICAgICBmLmNhdGVnb3J5ID0gdGhpcy5jYXRlZ29yeU5hbWU7XG4gICAgICAgICAgICAgIGYucmVzcG9uc2VQcm9wcyA9IHtcbiAgICAgICAgICAgICAgICBwekluc0tleTogJ3RlbXAnLFxuICAgICAgICAgICAgICAgIHB5QXR0YWNoTmFtZTogZi5wcm9wcy5uYW1lXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy51cGRhdGVBdHRhY2htZW50cygpO1xuICAgICAgICAgIGlmICh0aGlzLmZpbGVzV2l0aEVycm9yPy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJGaWVsZEVycm9yTWVzc2FnZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbikge1xuICAgICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4oKTtcbiAgICB9XG5cbiAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnVuc3Vic2NyaWJlKFBDb3JlLmdldENvbnN0YW50cygpLlBVQl9TVUJfRVZFTlRTLkNBU0VfRVZFTlRTLkFTU0lHTk1FTlRfU1VCTUlTU0lPTiwgdGhpcy5jYXNlSUQpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmlsZS11cGxvYWQtY29udGFpbmVyXCIgKm5nSWY9XCJiVmlzaWJsZSRcIj5cbiAgPHNwYW4gY2xhc3M9XCJhdHRhY2htZW50LWxhYmVsXCIgW25nQ2xhc3NdPVwieyAnZmlsZS1sYWJlbCc6IGJSZXF1aXJlZCQgfVwiPnt7IGxhYmVsJCB9fTwvc3Bhbj5cbiAgPGRpdiAqbmdJZj1cIihmaWxlcy5sZW5ndGggPT09IDAgJiYgIWFsbG93TXVsdGlwbGUkKSB8fCBhbGxvd011bHRpcGxlJFwiPlxuICAgIDxkaXZcbiAgICAgIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMTBweFwiXG4gICAgICBpZD1cImF0dGFjaG1lbnQtY29udGFpbmVyXCJcbiAgICAgIFtuZ0NsYXNzXT1cInZhbGlkYXRlTWVzc2FnZSA/ICdwc2RrLW1vZGFsLWZpbGUtc2VsZWN0b3ItZXJyb3InIDogJ3BzZGstbW9kYWwtZmlsZS1zZWxlY3RvcidcIlxuICAgID5cbiAgICAgIDxkaXYgW2hpZGRlbl09XCJ0cnVlXCIgaWQ9XCJhdHRhY2htZW50LUlEXCI+XG4gICAgICAgIHt7IHZhbHVlUmVmIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpbnB1dCBoaWRkZW4gdHlwZT1cImZpbGVcIiBbcmVxdWlyZWRdPVwiYlJlcXVpcmVkJFwiICN1cGxvYWRlciBbaWRdPVwidmFsdWVSZWZcIiBbbXVsdGlwbGVdPVwiYWxsb3dNdWx0aXBsZSRcIiAoY2hhbmdlKT1cIm9uRmlsZUFkZGVkKCRldmVudClcIiAvPlxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImJEaXNhYmxlZCRcIiAoY2xpY2spPVwidXBsb2FkZXIuY2xpY2soKVwiPlxuICAgICAgICB7e1xuICAgICAgICAgIGFsbG93TXVsdGlwbGUkXG4gICAgICAgICAgICA/IHVwbG9hZE11bHRpcGxlRmlsZXNMYWJlbCA9PT0gJ2ZpbGVfdXBsb2FkX3RleHRfbXVsdGlwbGUnXG4gICAgICAgICAgICAgID8gJ0Nob29zZSBmaWxlcydcbiAgICAgICAgICAgICAgOiB1cGxvYWRNdWx0aXBsZUZpbGVzTGFiZWxcbiAgICAgICAgICAgIDogdXBsb2FkU2luZ2xlRmlsZUxhYmVsID09PSAnZmlsZV91cGxvYWRfdGV4dF9vbmUnXG4gICAgICAgICAgICAgID8gJ0Nob29zZSBhIGZpbGUnXG4gICAgICAgICAgICAgIDogdXBsb2FkU2luZ2xlRmlsZUxhYmVsXG4gICAgICAgIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxzcGFuICpuZ0lmPVwidmFsaWRhdGVNZXNzYWdlXCIgY2xhc3M9XCJmaWxlLWVycm9yXCI+e3sgdmFsaWRhdGVNZXNzYWdlIH19PC9zcGFuPlxuICA8ZGl2ICpuZ0lmPVwiZmlsZXMgJiYgZmlsZXMubGVuZ3RoID4gMFwiPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZXNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLWF0dGFjaG1lbnQtY2FyZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzZGstdXRpbGl0eS1jYXJkLWljb25cIj5cbiAgICAgICAgICA8aW1nICpuZ0lmPVwiIWZpbGUuaW5Qcm9ncmVzc1wiIGNsYXNzPVwicHNkay1hdHRhY2htZW50LWNhcmQtc3ZnLWljb25cIiBzcmM9XCJ7eyBzcmNJbWcgfX1cIiAvPlxuICAgICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImZpbGUuaW5Qcm9ncmVzc1wiIGNsYXNzPVwicHJvZ3Jlc3Mtc3Bpbm5lclwiIGRpYW1ldGVyPVwiNDBcIj48L21hdC1zcGlubmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstYXR0YWNobWVudC1jYXJkLW1haW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay1hdHRhY2htZW50LWNhcmQtbWFpbi1wcmltYXJ5LWxhYmVsXCI+e3sgZmlsZS5wcm9wcy5uYW1lIH19PC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImZpbGUucHJvcHMubWV0YVwiIFtuZ1N0eWxlXT1cInsgY29sb3I6IGZpbGUucHJvcHMuZXJyb3IgPyAncmVkJyA6IG51bGwgfVwiPnt7IGZpbGUucHJvcHMubWV0YSB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstYXR0YWNobWVudC1hY3Rpb25cIj5cbiAgICAgICAgICA8YnV0dG9uIGlkPVwiZGVsZXRlLWF0dGFjaG1lbnRcIiAqbmdJZj1cImZpbGUuSURcIiBjbGFzcz1cInBzZGstdXRpbGl0eS1idXR0b25cIiAoY2xpY2spPVwiZGVsZXRlRmlsZShmaWxlKVwiPlxuICAgICAgICAgICAgPGltZyBjbGFzcz1cInBzZGstdXRpbGl0eS1jYXJkLWFjdGlvbi1zdmctaWNvblwiIHNyYz1cInt7IGRlbGV0ZUljb24gfX1cIiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZmlsZS5JRFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBpZD1cInNldHRpbmctYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJhY3Rpb25NZW51XCI+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8bWF0LW1lbnUgI2FjdGlvbk1lbnU9XCJtYXRNZW51XCI+XG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZG93bmxvYWRGaWxlKGZpbGUucmVzcG9uc2VQcm9wcyA/IGZpbGUucmVzcG9uc2VQcm9wcyA6IHt9KVwiPkRvd25sb2FkPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZGVsZXRlRmlsZShmaWxlKVwiPkRlbGV0ZTwvYnV0dG9uPlxuICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
393
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L2F0dGFjaG1lbnQvYXR0YWNobWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L2F0dGFjaG1lbnQvYXR0YWNobWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBVSxVQUFVLEVBQWEsU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBRS9HLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLFFBQVEsTUFBTSxZQUFZLENBQUM7QUFHbEMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOERBQThELENBQUM7Ozs7Ozs7OztBQWlCeEcsTUFBTSxPQUFPLG1CQUFtQjtJQW9DOUIsWUFDVSxlQUF1QyxFQUN2QyxLQUFZLEVBQ1osTUFBYztRQUZkLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQUN2QyxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1osV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQW5DeEIsdUNBQXVDO1FBQ3ZDLHdCQUFtQixHQUF3QixFQUFFLENBQUM7UUFHOUMsV0FBTSxH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b25lbnQsIE9uSW5pdCwgSW5wdXQsIE5nWm9uZSwgZm9yd2FyZFJlZiwgT25EZXN0cm95LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgZG93bmxvYWQgZnJvbSAnZG93bmxvYWRqcyc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvdXRpbHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFBDb25uRmllbGRQcm9wcyB9IGZyb20gJy4uLy4uLy4uL190eXBlcy9QQ29ublByb3BzLmludGVyZmFjZSc7XG5cbmludGVyZmFjZSBBdHRhY2htZW50UHJvcHMgZXh0ZW5kcyBPbWl0PFBDb25uRmllbGRQcm9wcywgJ3ZhbHVlJz4ge1xuICAvLyBJZiBhbnksIGVudGVyIGFkZGl0aW9uYWwgcHJvcHMgdGhhdCBvbmx5IGV4aXN0IG9uIHRoaXMgY29tcG9uZW50XG4gIHZhbHVlOiBhbnk7XG4gIGV4dGVuc2lvbnM6IGFueTtcbiAgYWxsb3dNdWx0aXBsZTogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWF0dGFjaG1lbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXR0YWNobWVudC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2F0dGFjaG1lbnQuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLCBNYXRNZW51TW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIGZvcndhcmRSZWYoKCkgPT4gQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50KV1cbn0pXG5leHBvcnQgY2xhc3MgQXR0YWNobWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcblxuICAvLyBGb3IgaW50ZXJhY3Rpb24gd2l0aCBBbmd1bGFyUENvbm5lY3RcbiAgYW5ndWxhclBDb25uZWN0RGF0YTogQW5ndWxhclBDb25uZWN0RGF0YSA9IHt9O1xuICBAVmlld0NoaWxkKCd1cGxvYWRlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBmaWxlSW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgbGFiZWwkID0gJyc7XG4gIHZhbHVlJDogYW55O1xuICBiUmVxdWlyZWQkID0gZmFsc2U7XG4gIGJSZWFkb25seSQgPSBmYWxzZTtcbiAgYkRpc2FibGVkJCA9IGZhbHNlO1xuICBiVmlzaWJsZSQgPSB0cnVlO1xuICBiTG9hZGluZyQgPSBmYWxzZTtcbiAgYlNob3dTZWxlY3RvciQgPSB0cnVlO1xuICBhdHRfY2F0ZWdvcnlOYW1lOiBzdHJpbmc7XG4gIGZpbGVUZW1wOiBhbnkgPSB7fTtcbiAgY2FzZUlEOiBhbnk7XG4gIGFsbG93TXVsdGlwbGUkID0gZmFsc2U7XG4gIGV4dGVuc2lvbnMkID0gJyc7XG4gIHN0YXR1cyA9ICcnO1xuICB2YWxpZGF0ZU1lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xuICB2YWx1ZVJlZjogc3RyaW5nO1xuICBpbWFnZVBhdGgkOiBzdHJpbmc7XG4gIGxvY2FsaXplZFZhbCA9IFBDb3JlLmdldExvY2FsZVV0aWxzKCkuZ2V0TG9jYWxlVmFsdWU7XG4gIGxvY2FsZUNhdGVnb3J5ID0gJ0Nvc21vc0ZpZWxkcyc7XG4gIHVwbG9hZE11bHRpcGxlRmlsZXNMYWJlbCA9IHRoaXMubG9jYWxpemVkVmFsKCdmaWxlX3VwbG9hZF90ZXh0X211bHRpcGxlJywgdGhpcy5sb2NhbGVDYXRlZ29yeSk7XG4gIHVwbG9hZFNpbmdsZUZpbGVMYWJlbCA9IHRoaXMubG9jYWxpemVkVmFsKCdmaWxlX3VwbG9hZF90ZXh0X29uZScsIHRoaXMubG9jYWxlQ2F0ZWdvcnkpO1xuICBmaWxlc1dpdGhFcnJvcjogYW55ID0gW107XG4gIGZpbGVzOiBhbnkgPSBbXTtcbiAgY2F0ZWdvcnlOYW1lOiBzdHJpbmc7XG4gIGRpc3BsYXlNb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHNyY0ltZzogYW55O1xuICBkZWxldGVJY29uOiBzdHJpbmc7XG4gIHRlbXBGaWxlc1RvQmVVcGxvYWRlZDogYW55W107XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbHM6IFV0aWxzLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIC8vIEZpcnN0IHRoaW5nIGluIGluaXRpYWxpemF0aW9uIGlzIHJlZ2lzdGVyaW5nIGFuZCBzdWJzY3JpYmluZyB0byB0aGUgQW5ndWxhclBDb25uZWN0IHNlcnZpY2VcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5yZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudCh0aGlzLCB0aGlzLm9uU3RhdGVDaGFuZ2UpO1xuICAgIHRoaXMuY2FzZUlEID0gUENvcmUuZ2V0U3RvcmVWYWx1ZSgnLnB5SUQnLCAnY2FzZUluZm8uY29udGVudCcsIHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCkpO1xuICAgIHRoaXMuc3JjSW1nID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYygnZG9jdW1lbnQtZG9jJywgdGhpcy51dGlscy5nZXRTREtTdGF0aWNDb250ZW50VXJsKCkpO1xuICAgIHRoaXMuZGVsZXRlSWNvbiA9IHRoaXMudXRpbHMuZ2V0SW1hZ2VTcmMoJ3RyYXNoJywgdGhpcy51dGlscy5nZXRTREtTdGF0aWNDb250ZW50VXJsKCkpO1xuICAgIHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcbiAgICB0aGlzLmdldEF0dGFjaG1lbnRzKCk7XG4gIH1cblxuICBnZXRBdHRhY2htZW50cygpIHtcbiAgICBsZXQgdGVtcFVwbG9hZGVkRmlsZXMgPSB0aGlzLmdldEN1cnJlbnRBdHRhY2htZW50c0xpc3QodGhpcy5nZXRBdHRhY2htZW50S2V5KHRoaXMudmFsdWVSZWYpLCB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpKTtcbiAgICB0ZW1wVXBsb2FkZWRGaWxlcyA9IHRlbXBVcGxvYWRlZEZpbGVzLmZpbHRlcihmID0+IGYubGFiZWwgPT09IHRoaXMudmFsdWVSZWYgJiYgZi5kZWxldGUgIT09IHRydWUpO1xuICAgIHRoaXMuZmlsZXM/Lm1hcChmID0+IHtcbiAgICAgIHJldHVybiBmLnJlc3BvbnNlUHJvcHM/LnB6SW5zS2V5ICYmICFmLnJlc3BvbnNlUHJvcHMucHpJbnNLZXkuaW5jbHVkZXMoJ3RlbXAnKVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIC4uLmYsXG4gICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAuLi5mLnByb3BzLFxuICAgICAgICAgICAgICBvbkRlbGV0ZTogKCkgPT4gdGhpcy5kZWxldGVGaWxlKGYpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICA6IHsgLi4uZiB9O1xuICAgIH0pO1xuICAgIHRoaXMuZmlsZXMgPSBbLi4udGhpcy5maWxlcywgLi4udGVtcFVwbG9hZGVkRmlsZXNdO1xuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkuc3Vic2NyaWJlKFxuICAgICAgUENvcmUuZ2V0Q29uc3RhbnRzKCkuUFVCX1NVQl9FVkVOVFMuQ0FTRV9FVkVOVFMuQVNTSUdOTUVOVF9TVUJNSVNTSU9OLFxuICAgICAgdGhpcy5yZXNldEF0dGFjaG1lbnRTdG9yZWRTdGF0ZS5iaW5kKHRoaXMpLFxuICAgICAgdGhpcy5jYXNlSURcbiAgICApO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnVuc3Vic2NyaWJlKFBDb3JlLmdldENvbnN0YW50cygpLlBVQl9TVUJfRVZFTlRTLkNBU0VfRVZFTlRTLkFTU0lHTk1FTlRfU1VCTUlTU0lPTiwgdGhpcy5jYXNlSUQpO1xuICAgIH07XG4gIH1cblxuICBjaGVja0FuZFVwZGF0ZSgpIHtcbiAgICAvLyBTaG91bGQgYWx3YXlzIGNoZWNrIHRoZSBicmlkZ2UgdG8gc2VlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkXG4gICAgLy8gdXBkYXRlIGl0c2VsZiAocmUtcmVuZGVyKVxuICAgIGNvbnN0IGJVcGRhdGVTZWxmID0gdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuXG4gICAgLy8gT05MWSBjYWxsIHVwZGF0ZVNlbGYgd2hlbiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGVcbiAgICBpZiAoYlVwZGF0ZVNlbGYpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENhbGxiYWNrIHBhc3NlZCB3aGVuIHN1YnNjcmliaW5nIHRvIHN0b3JlIGNoYW5nZVxuICBvblN0YXRlQ2hhbmdlKCkge1xuICAgIHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcbiAgfVxuXG4gIHVwZGF0ZVNlbGYoKSB7XG4gICAgY29uc3QgY29uZmlnUHJvcHM6IEF0dGFjaG1lbnRQcm9wcyA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKSBhcyBBdHRhY2htZW50UHJvcHM7XG4gICAgY29uc3Qgc3RhdGVQcm9wcyA9IHRoaXMucENvbm4kLmdldFN0YXRlUHJvcHMoKTtcbiAgICBjb25zdCB7IHZhbHVlLCBsYWJlbCwgZXh0ZW5zaW9ucywgZGlzcGxheU1vZGUgfSA9IGNvbmZpZ1Byb3BzO1xuXG4gICAgaWYgKGNvbmZpZ1Byb3BzLnJlcXVpcmVkICE9IG51bGwpIHtcbiAgICAgIHRoaXMuYlJlcXVpcmVkJCA9IHRoaXMudXRpbHMuZ2V0Qm9vbGVhblZhbHVlKGNvbmZpZ1Byb3BzLnJlcXVpcmVkKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZ1Byb3BzLnZpc2liaWxpdHkgIT0gbnVsbCkge1xuICAgICAgdGhpcy5iVmlzaWJsZSQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZShjb25maWdQcm9wcy52aXNpYmlsaXR5KTtcbiAgICB9XG5cbiAgICAvLyBkaXNhYmxlZFxuICAgIGlmIChjb25maWdQcm9wcy5kaXNhYmxlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuYkRpc2FibGVkJCA9IHRoaXMudXRpbHMuZ2V0Qm9vbGVhblZhbHVlKGNvbmZpZ1Byb3BzLmRpc2FibGVkKTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnUHJvcHMucmVhZE9ubHkgIT0gbnVsbCkge1xuICAgICAgdGhpcy5iUmVhZG9ubHkkID0gdGhpcy51dGlscy5nZXRCb29sZWFuVmFsdWUoY29uZmlnUHJvcHMucmVhZE9ubHkpO1xuICAgIH1cblxuICAgIGlmIChjb25maWdQcm9wcy5hbGxvd011bHRpcGxlICE9IG51bGwpIHtcbiAgICAgIHRoaXMuYWxsb3dNdWx0aXBsZSQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZShjb25maWdQcm9wcy5hbGxvd011bHRpcGxlKTtcbiAgICB9XG5cbiAgICB0aGlzLmxhYmVsJCA9IGxhYmVsO1xuICAgIHRoaXMudmFsdWUkID0gdmFsdWU7XG4gICAgdGhpcy5zdGF0dXMgPSBzdGF0ZVByb3BzLnN0YXR1cztcblxuICAgIHRoaXMudmFsaWRhdGVNZXNzYWdlID0gdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnZhbGlkYXRlTWVzc2FnZTtcbiAgICB0aGlzLmV4dGVuc2lvbnMkID0gZXh0ZW5zaW9ucztcbiAgICB0aGlzLnZhbHVlUmVmID0gdGhpcy5wQ29ubiQuZ2V0U3RhdGVQcm9wcygpLnZhbHVlO1xuICAgIHRoaXMudmFsdWVSZWYgPSB0aGlzLnZhbHVlUmVmLnN0YXJ0c1dpdGgoJy4nKSA/IHRoaXMudmFsdWVSZWYuc3Vic3RyaW5nKDEpIDogdGhpcy52YWx1ZVJlZjtcbiAgICB0aGlzLmRpc3BsYXlNb2RlID0gZGlzcGxheU1vZGU7XG4gICAgLyogdGhpcyBpcyBhIHRlbXBvcmFyeSBmaXggYmVjYXVzZSByZXF1aXJlZCBpcyBzdXBwb3NlZCB0byBiZSBwYXNzZWQgYXMgYSBib29sZWFuIGFuZCBOT1QgYXMgYSBzdHJpbmcgKi9cbiAgICBsZXQgeyByZXF1aXJlZCwgZGlzYWJsZWQgfSA9IGNvbmZpZ1Byb3BzO1xuICAgIFtyZXF1aXJlZCwgZGlzYWJsZWRdID0gW3JlcXVpcmVkLCBkaXNhYmxlZF0ubWFwKHByb3AgPT4gcHJvcCA9PT0gdHJ1ZSB8fCAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnICYmIHByb3AgPT09ICd0cnVlJykpO1xuXG4gICAgdGhpcy5jYXRlZ29yeU5hbWUgPSAnJztcbiAgICBpZiAodmFsdWUgJiYgdmFsdWUucHlDYXRlZ29yeU5hbWUpIHtcbiAgICAgIHRoaXMuY2F0ZWdvcnlOYW1lID0gdmFsdWUucHlDYXRlZ29yeU5hbWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlPy5weFJlc3VsdHMgJiYgK3ZhbHVlLnB5Q291bnQgPiAwKSB7XG4gICAgICB0aGlzLmZpbGVzID0gdmFsdWUucHhSZXN1bHRzLm1hcChmID0+IHRoaXMuYnVpbGRGaWxlUHJvcHNGcm9tUmVzcG9uc2UoZikpO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlQXR0YWNobWVudHMoKTtcbiAgfVxuXG4gIGJ1aWxkRmlsZVByb3BzRnJvbVJlc3BvbnNlKHJlc3BPYmopIHtcbiAgICByZXR1cm4ge1xuICAgICAgcHJvcHM6IHtcbiAgICAgICAgbWV0YTogYCR7cmVzcE9iai5weUNhdGVnb3J5TmFtZX0sICR7cmVzcE9iai5weENyZWF0ZU9wZXJhdG9yfWAsXG4gICAgICAgIG5hbWU6IHJlc3BPYmoucHlBdHRhY2hOYW1lLFxuICAgICAgICBpY29uOiB0aGlzLnV0aWxzLmdldEljb25Gcm9tRmlsZVR5cGUocmVzcE9iai5weU1pbWVGaWxlRXh0ZW5zaW9uKVxuICAgICAgfSxcbiAgICAgIHJlc3BvbnNlUHJvcHM6IHtcbiAgICAgICAgLi4ucmVzcE9ialxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICB1cGRhdGVBdHRhY2htZW50cygpIHtcbiAgICBpZiAodGhpcy5maWxlcy5sZW5ndGggPiAwICYmIHRoaXMuZGlzcGxheU1vZGUgIT09ICdESVNQTEFZX09OTFknKSB7XG4gICAgICBjb25zdCBjdXJyZW50QXR0YWNobWVudExpc3QgPSB0aGlzLmdldEN1cnJlbnRBdHRhY2htZW50c0xpc3QodGhpcy5nZXRBdHRhY2htZW50S2V5KHRoaXMudmFsdWVSZWYpLCB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpKTtcbiAgICAgIC8vIGJsb2NrIGR1cGxpY2F0ZSBmaWxlcyB0byByZWR1eCBzdG9yZSB3aGVuIGFkZGVkIDEgYWZ0ZXIgYW5vdGhlciB0byBwcmV2ZW50IG11bHRpcGxlIGR1cGxpY2F0ZXMgYmVpbmcgYWRkZWQgdG8gdGhlIGNhc2Ugb24gc3VibWl0XG4gICAgICBjb25zdCB0ZW1wRmlsZXMgPSB0aGlzLmZpbGVzLmZpbHRlcihmID0+IGN1cnJlbnRBdHRhY2htZW50TGlzdC5maW5kSW5kZXgoZnIgPT4gZnIuSUQgPT09IGYuSUQpID09PSAtMSAmJiAhZi5pblByb2dyZXNzICYmIGYucmVzcG9uc2VQcm9wcyk7XG4gICAgICBjb25zdCB1cGRhdGVkQXR0TGlzdCA9IFsuLi5jdXJyZW50QXR0YWNobWVudExpc3QsIC4uLnRlbXBGaWxlc107XG4gICAgICB0aGlzLnVwZGF0ZUF0dGFjaG1lbnRTdGF0ZSh0aGlzLnBDb25uJCwgdGhpcy5nZXRBdHRhY2htZW50S2V5KHRoaXMudmFsdWVSZWYpLCB1cGRhdGVkQXR0TGlzdCk7XG4gICAgfVxuICB9XG5cbiAgcmVzZXRBdHRhY2htZW50U3RvcmVkU3RhdGUoKSB7XG4gICAgUENvcmUuZ2V0U3RhdGVVdGlscygpLnVwZGF0ZVN0YXRlKHRoaXMucENvbm4kPy5nZXRDb250ZXh0TmFtZSgpLCB0aGlzLmdldEF0dGFjaG1lbnRLZXkodGhpcy52YWx1ZVJlZiksIHVuZGVmaW5lZCwge1xuICAgICAgcGFnZVJlZmVyZW5jZTogJ2NvbnRleHRfZGF0YScsXG4gICAgICBpc0FycmF5RGVlcE1lcmdlOiBmYWxzZVxuICAgIH0pO1xuICB9XG5cbiAgZG93bmxvYWRGaWxlKGZpbGVPYmo6IGFueSkge1xuICAgIFBDb3JlLmdldEF0dGFjaG1lbnRVdGlscygpXG4gICAgICAvLyBAdHMtaWdub3JlIC0gM3JkIHBhcmFtZXRlciBcInJlc3BvbnNlRW5jb2RpbmdcIiBzaG91bGQgYmUgb3B0aW9uYWxcbiAgICAgIC5kb3dubG9hZEF0dGFjaG1lbnQoZmlsZU9iai5wekluc0tleSwgdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSlcbiAgICAgIC50aGVuKChjb250ZW50OiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gZmlsZU9iai5weUF0dGFjaE5hbWUuc3BsaXQoJy4nKS5wb3AoKTtcbiAgICAgICAgdGhpcy5maWxlRG93bmxvYWQoY29udGVudC5kYXRhLCBmaWxlT2JqLnB5RmlsZU5hbWUsIGV4dGVuc2lvbik7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZmlsZURvd25sb2FkID0gKGRhdGEsIGZpbGVOYW1lLCBleHQpID0+IHtcbiAgICBjb25zdCBmaWxlID0gZXh0ID8gYCR7ZmlsZU5hbWV9LiR7ZXh0fWAgOiBmaWxlTmFtZTtcbiAgICBkb3dubG9hZChhdG9iKGRhdGEpLCBmaWxlKTtcbiAgfTtcblxuICBnZXRBdHRhY2htZW50S2V5ID0gKG5hbWUgPSAnJykgPT4gKG5hbWUgPyBgYXR0YWNobWVudHNMaXN0LiR7bmFtZX1gIDogJ2F0dGFjaG1lbnRzTGlzdCcpO1xuXG4gIGdldEN1cnJlbnRBdHRhY2htZW50c0xpc3Qoa2V5LCBjb250ZXh0KSB7XG4gICAgcmV0dXJuIFBDb3JlLmdldFN0b3JlVmFsdWUoYC4ke2tleX1gLCAnY29udGV4dF9kYXRhJywgY29udGV4dCkgfHwgW107XG4gIH1cblxuICB2YWxpZGF0ZU1heFNpemUoZmlsZU9iaiwgbWF4U2l6ZUluTUIpOiBib29sZWFuIHtcbiAgICBjb25zdCBmaWxlU2l6ZSA9IChmaWxlT2JqLnNpemUgLyAxMDQ4NTc2KS50b0ZpeGVkKDIpO1xuICAgIHJldHVybiBwYXJzZUZsb2F0KGZpbGVTaXplKSA8IHBhcnNlRmxvYXQobWF4U2l6ZUluTUIpO1xuICB9XG5cbiAgdmFsaWRhdGVGaWxlRXh0ZW5zaW9uID0gKGZpbGVPYmosIGFsbG93ZWRFeHRlbnNpb25zKSA9PiB7XG4gICAgaWYgKCFhbGxvd2VkRXh0ZW5zaW9ucykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGFsbG93ZWRFeHRlbnNpb25MaXN0ID0gYWxsb3dlZEV4dGVuc2lvbnNcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAuc3BsaXQoJywnKVxuICAgICAgLm1hcChpdGVtID0+IGl0ZW0ucmVwbGFjZUFsbCgnLicsICcnKS50cmltKCkpO1xuICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbGVPYmoubmFtZS5zcGxpdCgnLicpLnBvcCgpLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIGFsbG93ZWRFeHRlbnNpb25MaXN0LmluY2x1ZGVzKGV4dGVuc2lvbik7XG4gIH07XG5cbiAgdXBkYXRlQXR0YWNobWVudFN0YXRlKHBDb25uLCBrZXksIGF0dGFjaG1lbnRzKSB7XG4gICAgUENvcmUuZ2V0U3RhdGVVdGlscygpLnVwZGF0ZVN0YXRlKHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCksIGtleSwgYXR0YWNobWVudHMsIHtcbiAgICAgIHBhZ2VSZWZlcmVuY2U6ICdjb250ZXh0X2RhdGEnLFxuICAgICAgaXNBcnJheURlZXBNZXJnZTogZmFsc2VcbiAgICB9KTtcbiAgfVxuXG4gIGRlbGV0ZUZpbGUoZmlsZSkge1xuICAgIGNvbnN0IGF0dGFjaG1lbnRzTGlzdDogYW55W10gPSBbXTtcbiAgICBsZXQgY3VycmVudEF0dGFjaG1lbnRMaXN0ID0gdGhpcy5nZXRDdXJyZW50QXR0YWNobWVudHNMaXN0KHRoaXMuZ2V0QXR0YWNobWVudEtleSh0aGlzLnZhbHVlUmVmKSwgdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSk7XG5cbiAgICAvLyBJZiBmaWxlIHRvIGJlIGRlbGV0ZWQgaXMgdGhlIG9uZSBhZGRlZCBpbiBwcmV2aW91cyBzdGFnZSBpLmUuIGZvciB3aGljaCBhIGZpbGUgaW5zdGFuY2UgaXMgY3JlYXRlZCBpbiBzZXJ2ZXJcbiAgICAvLyBubyBuZWVkIHRvIGZpbHRlciBjdXJyZW50QXR0YWNobWVudExpc3QgYXMgd2Ugd2lsbCBnZXQgYW5vdGhlciBlbnRyeSBvZiBmaWxlIGluIHJlZHV4IHdpdGggZGVsZXRlICYgbGFiZWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5zYWZlLW9wdGlvbmFsLWNoYWluaW5nXG4gICAgaWYgKHRoaXMudmFsdWUkICYmIHRoaXMudmFsdWUkPy5weFJlc3VsdHMgJiYgK3RoaXMudmFsdWUkPy5weUNvdW50ID4gMCAmJiBmaWxlLnJlc3BvbnNlUHJvcHMgJiYgZmlsZT8ucmVzcG9uc2VQcm9wcz8ucHpJbnNLZXkgIT09ICd0ZW1wJykge1xuICAgICAgY29uc3QgdXBkYXRlZEF0dGFjaG1lbnRzID0gdGhpcy5maWxlcy5tYXAoZiA9PiB7XG4gICAgICAgIGlmIChmLnJlc3BvbnNlUHJvcHMgJiYgZi5yZXNwb25zZVByb3BzLnB6SW5zS2V5ID09PSBmaWxlLnJlc3BvbnNlUHJvcHMucHpJbnNLZXkpIHtcbiAgICAgICAgICByZXR1cm4geyAuLi5mLCBkZWxldGU6IHRydWUsIGxhYmVsOiB0aGlzLnZhbHVlUmVmIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGY7XG4gICAgICB9KTtcblxuICAgICAgLy8gdXBkYXRpbmcgdGhlIHJlZHV4IHN0b3JlIHRvIGhlbHAgZm9ybS1oYW5kbGVyIGluIHBhc3NpbmcgdGhlIGRhdGEgdG8gZGVsZXRlIHRoZSBmaWxlIGZyb20gc2VydmVyXG4gICAgICB0aGlzLnVwZGF0ZUF0dGFjaG1lbnRTdGF0ZSh0aGlzLnBDb25uJCwgdGhpcy5nZXRBdHRhY2htZW50S2V5KHRoaXMudmFsdWVSZWYpLCBbLi4udXBkYXRlZEF0dGFjaG1lbnRzXSk7XG4gICAgICBjb25zdCBuZXdseUFkZGVkRmlsZXMgPSB0aGlzLmZpbGVzLmZpbHRlcihmID0+ICEhZi5JRCk7XG4gICAgICBjb25zdCBmaWxlc1Bvc3REZWxldGUgPSB0aGlzLmZpbGVzLmZpbHRlcihcbiAgICAgICAgZiA9PiBmLnJlc3BvbnNlUHJvcHM/LnB6SW5zS2V5ICE9PSAndGVtcCcgJiYgZi5yZXNwb25zZVByb3BzPy5wekluc0tleSAhPT0gZmlsZS5yZXNwb25zZVByb3BzPy5wekluc0tleVxuICAgICAgKTtcbiAgICAgIHRoaXMuZmlsZXMgPSBbLi4uZmlsZXNQb3N0RGVsZXRlLCAuLi5uZXdseUFkZGVkRmlsZXNdO1xuICAgIH0gLy8gIGlmIHRoZSBmaWxlIGJlaW5nIGRlbGV0ZWQgaXMgdGhlIGFkZGVkIGluIHRoaXMgc3RhZ2UgIGkuZS4gd2hvc2UgZGF0YSBpcyBub3QgeWV0IGNyZWF0ZWQgaW4gc2VydmVyXG4gICAgZWxzZSB7XG4gICAgICAvLyBmaWx0ZXIgbmV3bHkgYWRkZWQgZmlsZXMgaW4gdGhpcyBzdGFnZSwgbGF0ZXIgdGhlIHVwZGF0ZWQgY3VycmVudCBzdGFnZSBmaWxlcyB3aWxsIGJlIGFkZGVkIHRvIHJlZHV4IG9uY2UgZmlsZXMgc3RhdGUgaXMgdXBkYXRlZFxuICAgICAgY3VycmVudEF0dGFjaG1lbnRMaXN0ID0gY3VycmVudEF0dGFjaG1lbnRMaXN0LmZpbHRlcihmID0+IGYuSUQgIT09IGZpbGUuSUQpO1xuICAgICAgdGhpcy5maWxlcyA9IHRoaXMuZmlsZXMuZmlsdGVyKGYgPT4gZi5JRCAhPT0gZmlsZS5JRCk7XG5cbiAgICAgIHRoaXMudXBkYXRlQXR0YWNobWVudFN0YXRlKHRoaXMucENvbm4kLCB0aGlzLmdldEF0dGFjaG1lbnRLZXkodGhpcy52YWx1ZVJlZiksIFsuLi5jdXJyZW50QXR0YWNobWVudExpc3QsIC4uLmF0dGFjaG1lbnRzTGlzdF0pO1xuICAgICAgaWYgKGZpbGUuaW5Qcm9ncmVzcykge1xuICAgICAgICAvLyBAdHMtaWdub3JlIC0gM3JkIHBhcmFtZXRlciBcInJlc3BvbnNlRW5jb2RpbmdcIiBzaG91bGQgYmUgb3B0aW9uYWxcbiAgICAgICAgUENvcmUuZ2V0QXR0YWNobWVudFV0aWxzKCkuY2FuY2VsUmVxdWVzdChmaWxlLklELCB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmZpbGVzV2l0aEVycm9yID0gdGhpcy5maWxlc1dpdGhFcnJvcj8uZmlsdGVyKGYgPT4gZi5JRCAhPT0gZmlsZS5JRCk7XG4gICAgaWYgKHRoaXMuZmlsZXNXaXRoRXJyb3IubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmNsZWFyRmllbGRFcnJvck1lc3NhZ2VzKCk7XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLWV4cHJlc3Npb25zXG4gICAgdGhpcy5maWxlSW5wdXQgJiYgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA/IG51bGwgOiAnJztcbiAgfVxuXG4gIG9uRmlsZUFkZGVkKGV2ZW50KSB7XG4gICAgbGV0IGFkZGVkRmlsZXMgPSBBcnJheS5mcm9tKGV2ZW50LnRhcmdldC5maWxlcyk7XG4gICAgYWRkZWRGaWxlcyA9IHRoaXMuYWxsb3dNdWx0aXBsZSQgPyBhZGRlZEZpbGVzIDogW2FkZGVkRmlsZXNbMF1dO1xuICAgIGNvbnN0IG1heEF0dGFjaG1lbnRTaXplID0gUENvcmUuZ2V0RW52aXJvbm1lbnRJbmZvKCkuZ2V0TWF4QXR0YWNobWVudFNpemUoKSB8fCAnNSc7XG4gICAgdGhpcy50ZW1wRmlsZXNUb0JlVXBsb2FkZWQgPSBbXG4gICAgICAuLi5hZGRlZEZpbGVzLm1hcCgoZjogYW55LCBpbmRleCkgPT4ge1xuICAgICAgICBmLklEID0gYCR7bmV3IERhdGUoKS5nZXRUaW1lKCl9SSR7aW5kZXh9YDtcbiAgICAgICAgZi5pblByb2dyZXNzID0gdHJ1ZTtcbiAgICAgICAgZi5wcm9wcyA9IHtcbiAgICAgICAgICB0eXBlOiBmLnR5cGUsXG4gICAgICAgICAgbmFtZTogZi5uYW1lLFxuICAgICAgICAgIGljb246IHRoaXMudXRpbHMuZ2V0SWNvbkZyb21GaWxlVHlwZShmLnR5cGUpLFxuICAgICAgICAgIG9uRGVsZXRlOiAoKSA9PiB0aGlzLmRlbGV0ZUZpbGUoZilcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlTWF4U2l6ZShmLCBtYXhBdHRhY2htZW50U2l6ZSkpIHtcbiAgICAgICAgICBmLnByb3BzLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICBmLmluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICBmLnByb3BzLm1ldGEgPSB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZShgRmlsZSBpcyB0b28gYmlnLiBNYXggYWxsb3dlZCBzaXplIGlzICR7bWF4QXR0YWNobWVudFNpemV9TUIuYCwgJycsICcnKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy52YWxpZGF0ZUZpbGVFeHRlbnNpb24oZiwgdGhpcy5leHRlbnNpb25zJCkpIHtcbiAgICAgICAgICBmLnByb3BzLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICBmLmluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICBmLnByb3BzLm1ldGEgPSBgJHt0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZShcbiAgICAgICAgICAgICdGaWxlIGhhcyBpbnZhbGlkIGV4dGVuc2lvbi4gQWxsb3dlZCBleHRlbnNpb25zIGFyZTonLFxuICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAnJ1xuICAgICAgICAgICl9ICR7dGhpcy5leHRlbnNpb25zJC5yZXBsYWNlQWxsKCcuJywgJycpfWA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGYucHJvcHMuZXJyb3IpIHtcbiAgICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSB0aGlzLnBDb25uJC5nZXRTdGF0ZVByb3BzKCkudmFsdWU7XG4gICAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCk7XG4gICAgICAgICAgUENvcmUuZ2V0TWVzc2FnZU1hbmFnZXIoKS5hZGRNZXNzYWdlcyh7XG4gICAgICAgICAgICBtZXNzYWdlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnRXJyb3Igd2l0aCBvbmUgb3IgbW9yZSBmaWxlcycsICcnLCAnJylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHByb3BlcnR5OiBmaWVsZE5hbWUsXG4gICAgICAgICAgICBwYWdlUmVmZXJlbmNlOiB0aGlzLnBDb25uJC5nZXRQYWdlUmVmZXJlbmNlKCksXG4gICAgICAgICAgICBjb250ZXh0XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGY7XG4gICAgICB9KVxuICAgIF07XG4gICAgY29uc3QgdGVtcEZpbGVzV2l0aEVycm9yID0gdGhpcy50ZW1wRmlsZXNUb0JlVXBsb2FkZWQuZmlsdGVyKGYgPT4gZi5wcm9wcy5lcnJvcik7XG4gICAgaWYgKHRlbXBGaWxlc1dpdGhFcnJvci5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmZpbGVzV2l0aEVycm9yID0gdGVtcEZpbGVzV2l0aEVycm9yO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuYWxsb3dNdWx0aXBsZSQpIHtcbiAgICAgIHRoaXMuZmlsZXMgPSBbLi4udGhpcy50ZW1wRmlsZXNUb0JlVXBsb2FkZWRdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbGVzID0gWy4uLnRoaXMuZmlsZXMsIC4uLnRoaXMudGVtcEZpbGVzVG9CZVVwbG9hZGVkXTtcbiAgICB9XG4gICAgdGhpcy51cGxvYWRGaWxlcygpO1xuICB9XG5cbiAgY2xlYXJGaWVsZEVycm9yTWVzc2FnZXMoKSB7XG4gICAgY29uc3QgZmllbGROYW1lID0gdGhpcy5wQ29ubiQuZ2V0U3RhdGVQcm9wcygpLnZhbHVlO1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuICAgIFBDb3JlLmdldE1lc3NhZ2VNYW5hZ2VyKCkuY2xlYXJNZXNzYWdlcyh7XG4gICAgICB0eXBlOiBQQ29yZS5nZXRDb25zdGFudHMoKS5NRVNTQUdFUy5NRVNTQUdFU19UWVBFX0VSUk9SLFxuICAgICAgcHJvcGVydHk6IGZpZWxkTmFtZSxcbiAgICAgIHBhZ2VSZWZlcmVuY2U6IHRoaXMucENvbm4kLmdldFBhZ2VSZWZlcmVuY2UoKSxcbiAgICAgIGNvbnRleHRcbiAgICB9KTtcbiAgfVxuXG4gIG9uVXBsb2FkUHJvZ3Jlc3MoKSB7fVxuXG4gIGVycm9ySGFuZGxlcihpc0ZldGNoQ2FuY2VsZWQsIGF0dGFjaGVkRmlsZSkge1xuICAgIHJldHVybiBlcnJvciA9PiB7XG4gICAgICBpZiAoIWlzRmV0Y2hDYW5jZWxlZChlcnJvcikpIHtcbiAgICAgICAgbGV0IHVwbG9hZEZhaWxNc2cgPSB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnU29tZXRoaW5nIHdlbnQgd3JvbmcnLCAnJywgJycpO1xuICAgICAgICBpZiAoZXJyb3IucmVzcG9uc2UgJiYgZXJyb3IucmVzcG9uc2UuZGF0YSAmJiBlcnJvci5yZXNwb25zZS5kYXRhLmVycm9yRGV0YWlscykge1xuICAgICAgICAgIHVwbG9hZEZhaWxNc2cgPSB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZShlcnJvci5yZXNwb25zZS5kYXRhLmVycm9yRGV0YWlsc1swXS5sb2NhbGl6ZWRWYWx1ZSwgJycsICcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZmlsZXMubWFwKGYgPT4ge1xuICAgICAgICAgIGlmIChmLklEID09PSBhdHRhY2hlZEZpbGUuSUQpIHtcbiAgICAgICAgICAgIGYucHJvcHMubWV0YSA9IHVwbG9hZEZhaWxNc2c7XG4gICAgICAgICAgICBmLnByb3BzLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIGYucHJvcHMub25EZWxldGUgPSAoKSA9PiB0aGlzLmRlbGV0ZUZpbGUoZik7XG4gICAgICAgICAgICBmLnByb3BzLmljb24gPSB0aGlzLnV0aWxzLmdldEljb25Gcm9tRmlsZVR5cGUoZi50eXBlKTtcbiAgICAgICAgICAgIGYucHJvcHMubmFtZSA9IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdVbmFibGUgdG8gdXBsb2FkIGZpbGUnLCAnJywgJycpO1xuICAgICAgICAgICAgZi5pblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSB0aGlzLnBDb25uJC5nZXRTdGF0ZVByb3BzKCkudmFsdWU7XG4gICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICAgICAgICAgIC8vIHNldCBlcnJvcnMgdG8gcHJvcGVydHkgdG8gYmxvY2sgc3VibWl0IGV2ZW4gb24gZXJyb3JzIGluIGZpbGUgdXBsb2FkXG4gICAgICAgICAgICBQQ29yZS5nZXRNZXNzYWdlTWFuYWdlcigpLmFkZE1lc3NhZ2VzKHtcbiAgICAgICAgICAgICAgbWVzc2FnZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5wQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ0Vycm9yIHdpdGggb25lIG9yIG1vcmUgZmlsZXMnLCAnJywgJycpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBwcm9wZXJ0eTogZmllbGROYW1lLFxuICAgICAgICAgICAgICBwYWdlUmVmZXJlbmNlOiB0aGlzLnBDb25uJC5nZXRQYWdlUmVmZXJlbmNlKCksXG4gICAgICAgICAgICAgIGNvbnRleHRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZGVsZXRlIGYucHJvcHMucHJvZ3Jlc3M7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRocm93IGVycm9yO1xuICAgIH07XG4gIH1cblxuICB1cGxvYWRGaWxlcygpIHtcbiAgICBjb25zdCBmaWxlc1RvQmVVcGxvYWRlZCA9IHRoaXMuZmlsZXNcbiAgICAgIC5maWx0ZXIoZSA9PiB7XG4gICAgICAgIGNvbnN0IGlzRmlsZVVwbG9hZGVkID0gZS5wcm9wcyAmJiBlLnByb3BzLnByb2dyZXNzID09PSAxMDA7XG4gICAgICAgIGNvbnN0IGZpbGVIYXNFcnJvciA9IGUucHJvcHMgJiYgZS5wcm9wcy5lcnJvcjtcbiAgICAgICAgY29uc3QgaXNGaWxlVXBsb2FkZWRpbkxhc3RTdGVwID0gZS5yZXNwb25zZVByb3BzICYmIGUucmVzcG9uc2VQcm9wcy5wekluc0tleTtcbiAgICAgICAgcmV0dXJuICFpc0ZpbGVVcGxvYWRlZCAmJiAhZmlsZUhhc0Vycm9yICYmICFpc0ZpbGVVcGxvYWRlZGluTGFzdFN0ZXA7XG4gICAgICB9KVxuICAgICAgLm1hcChmID0+XG4gICAgICAgIHdpbmRvdy5QQ29yZS5nZXRBdHRhY2htZW50VXRpbHMoKS51cGxvYWRBdHRhY2htZW50KFxuICAgICAgICAgIGYsXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vblVwbG9hZFByb2dyZXNzKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBpc0ZldGNoQ2FuY2VsZWQgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyKGlzRmV0Y2hDYW5jZWxlZCwgZik7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgUHJvbWlzZS5hbGxTZXR0bGVkKGZpbGVzVG9CZVVwbG9hZGVkKVxuICAgICAgLnRoZW4oKGZpbGVSZXNwb25zZXM6IGFueSkgPT4ge1xuICAgICAgICBmaWxlUmVzcG9uc2VzID0gZmlsZVJlc3BvbnNlcy5maWx0ZXIoZnIgPT4gZnIuc3RhdHVzICE9PSAncmVqZWN0ZWQnKTsgLy8gaW4gY2FzZSBvZiBkZWxldGluZyBhbiBpbiBwcm9ncmVzcyBmaWxlLCBwcm9taXNlIGdldHMgY2FuY2VsbGVkIGJ1dCBzdGlsbCBlbnRlcnMgdGhlbiBibG9ja1xuICAgICAgICBpZiAoZmlsZVJlc3BvbnNlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5maWxlcy5mb3JFYWNoKGYgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBmaWxlUmVzcG9uc2VzLmZpbmRJbmRleCgoZnI6IGFueSkgPT4gZnIudmFsdWUuY2xpZW50RmlsZUlEID09PSBmLklEKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgIGYucHJvcHMubWV0YSA9IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdVcGxvYWRlZCBzdWNjZXNzZnVsbHknLCAnJywgJycpO1xuICAgICAgICAgICAgICBmLnByb3BzLnByb2dyZXNzID0gMTAwO1xuICAgICAgICAgICAgICBmLmluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgICAgZi5oYW5kbGUgPSBmaWxlUmVzcG9uc2VzW2luZGV4XS52YWx1ZS5JRDtcbiAgICAgICAgICAgICAgZi5sYWJlbCA9IHRoaXMudmFsdWVSZWY7XG4gICAgICAgICAgICAgIGYuY2F0ZWdvcnkgPSB0aGlzLmNhdGVnb3J5TmFtZTtcbiAgICAgICAgICAgICAgZi5yZXNwb25zZVByb3BzID0ge1xuICAgICAgICAgICAgICAgIHB6SW5zS2V5OiAndGVtcCcsXG4gICAgICAgICAgICAgICAgcHlBdHRhY2hOYW1lOiBmLnByb3BzLm5hbWVcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUF0dGFjaG1lbnRzKCk7XG4gICAgICAgICAgaWYgKHRoaXMuZmlsZXNXaXRoRXJyb3I/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5jbGVhckZpZWxkRXJyb3JNZXNzYWdlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cblxuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkudW5zdWJzY3JpYmUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuUFVCX1NVQl9FVkVOVFMuQ0FTRV9FVkVOVFMuQVNTSUdOTUVOVF9TVUJNSVNTSU9OLCB0aGlzLmNhc2VJRCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmaWxlLXVwbG9hZC1jb250YWluZXJcIiAqbmdJZj1cImJWaXNpYmxlJFwiPlxuICA8c3BhbiBjbGFzcz1cImF0dGFjaG1lbnQtbGFiZWxcIiBbbmdDbGFzc109XCJ7ICdmaWxlLWxhYmVsJzogYlJlcXVpcmVkJCB9XCI+e3sgbGFiZWwkIH19PC9zcGFuPlxuICA8ZGl2ICpuZ0lmPVwiKGZpbGVzLmxlbmd0aCA9PT0gMCAmJiAhYWxsb3dNdWx0aXBsZSQpIHx8IGFsbG93TXVsdGlwbGUkXCI+XG4gICAgPGRpdlxuICAgICAgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAxMHB4XCJcbiAgICAgIGlkPVwiYXR0YWNobWVudC1jb250YWluZXJcIlxuICAgICAgW25nQ2xhc3NdPVwidmFsaWRhdGVNZXNzYWdlID8gJ3BzZGstbW9kYWwtZmlsZS1zZWxlY3Rvci1lcnJvcicgOiAncHNkay1tb2RhbC1maWxlLXNlbGVjdG9yJ1wiXG4gICAgPlxuICAgICAgPGRpdiBbaGlkZGVuXT1cInRydWVcIiBpZD1cImF0dGFjaG1lbnQtSURcIj5cbiAgICAgICAge3sgdmFsdWVSZWYgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGlucHV0IGhpZGRlbiB0eXBlPVwiZmlsZVwiIFtyZXF1aXJlZF09XCJiUmVxdWlyZWQkXCIgI3VwbG9hZGVyIFtpZF09XCJ2YWx1ZVJlZlwiIFttdWx0aXBsZV09XCJhbGxvd011bHRpcGxlJFwiIChjaGFuZ2UpPVwib25GaWxlQWRkZWQoJGV2ZW50KVwiIC8+XG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiYkRpc2FibGVkJFwiIChjbGljayk9XCJ1cGxvYWRlci5jbGljaygpXCI+XG4gICAgICAgIHt7XG4gICAgICAgICAgYWxsb3dNdWx0aXBsZSRcbiAgICAgICAgICAgID8gdXBsb2FkTXVsdGlwbGVGaWxlc0xhYmVsID09PSAnZmlsZV91cGxvYWRfdGV4dF9tdWx0aXBsZSdcbiAgICAgICAgICAgICAgPyAnQ2hvb3NlIGZpbGVzJ1xuICAgICAgICAgICAgICA6IHVwbG9hZE11bHRpcGxlRmlsZXNMYWJlbFxuICAgICAgICAgICAgOiB1cGxvYWRTaW5nbGVGaWxlTGFiZWwgPT09ICdmaWxlX3VwbG9hZF90ZXh0X29uZSdcbiAgICAgICAgICAgICAgPyAnQ2hvb3NlIGEgZmlsZSdcbiAgICAgICAgICAgICAgOiB1cGxvYWRTaW5nbGVGaWxlTGFiZWxcbiAgICAgICAgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPHNwYW4gKm5nSWY9XCJ2YWxpZGF0ZU1lc3NhZ2VcIiBjbGFzcz1cImZpbGUtZXJyb3JcIj57eyB2YWxpZGF0ZU1lc3NhZ2UgfX08L3NwYW4+XG4gIDxkaXYgKm5nSWY9XCJmaWxlcyAmJiBmaWxlcy5sZW5ndGggPiAwXCI+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgZmlsZSBvZiBmaWxlc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInBzZGstYXR0YWNobWVudC1jYXJkXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHNkay11dGlsaXR5LWNhcmQtaWNvblwiPlxuICAgICAgICAgIDxpbWcgKm5nSWY9XCIhZmlsZS5pblByb2dyZXNzXCIgY2xhc3M9XCJwc2RrLWF0dGFjaG1lbnQtY2FyZC1zdmctaWNvblwiIHNyYz1cInt7IHNyY0ltZyB9fVwiIC8+XG4gICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiZmlsZS5pblByb2dyZXNzXCIgY2xhc3M9XCJwcm9ncmVzcy1zcGlubmVyXCIgZGlhbWV0ZXI9XCI0MFwiPjwvbWF0LXNwaW5uZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay1hdHRhY2htZW50LWNhcmQtbWFpblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLWF0dGFjaG1lbnQtY2FyZC1tYWluLXByaW1hcnktbGFiZWxcIj57eyBmaWxlLnByb3BzLm5hbWUgfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsZS5wcm9wcy5tZXRhXCIgW25nU3R5bGVdPVwieyBjb2xvcjogZmlsZS5wcm9wcy5lcnJvciA/ICdyZWQnIDogbnVsbCB9XCI+e3sgZmlsZS5wcm9wcy5tZXRhIH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay1hdHRhY2htZW50LWFjdGlvblwiPlxuICAgICAgICAgIDxidXR0b24gaWQ9XCJkZWxldGUtYXR0YWNobWVudFwiICpuZ0lmPVwiZmlsZS5JRFwiIGNsYXNzPVwicHNkay11dGlsaXR5LWJ1dHRvblwiIChjbGljayk9XCJkZWxldGVGaWxlKGZpbGUpXCI+XG4gICAgICAgICAgICA8aW1nIGNsYXNzPVwicHNkay11dGlsaXR5LWNhcmQtYWN0aW9uLXN2Zy1pY29uXCIgc3JjPVwie3sgZGVsZXRlSWNvbiB9fVwiIC8+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFmaWxlLklEXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGlkPVwic2V0dGluZy1idXR0b25cIiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImFjdGlvbk1lbnVcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPm1vcmVfdmVydDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxtYXQtbWVudSAjYWN0aW9uTWVudT1cIm1hdE1lbnVcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJkb3dubG9hZEZpbGUoZmlsZS5yZXNwb25zZVByb3BzID8gZmlsZS5yZXNwb25zZVByb3BzIDoge30pXCI+RG93bmxvYWQ8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJkZWxldGVGaWxlKGZpbGUpXCI+RGVsZXRlPC9idXR0b24+XG4gICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -68,10 +68,10 @@ export class CaseHistoryComponent {
68
68
  return field.fieldName;
69
69
  });
70
70
  }
71
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CaseHistoryComponent, deps: [{ token: i1.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
72
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CaseHistoryComponent, isStandalone: true, selector: "app-case-history", inputs: { pConn$: "pConn$" }, ngImport: i0, template: "<div>\n <h2 class=\"psdk-case-history-title\">{{ configProps$.label }}</h2>\n <table mat-table [dataSource]=\"repeatList$\">\n <ng-container *ngFor=\"let dCol of fields$\" [matColumnDef]=\"dCol.fieldName\">\n <th mat-header-cell *matHeaderCellDef>{{ dCol.label }}</th>\n <td mat-cell *matCellDef=\"let element\">{{ element[dCol.fieldName] }}</td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns$\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns$\"></tr>\n </table>\n</div>\n", styles: ["table{width:100%}.mat-mdc-row .mat-mdc-cell{text-align:left}.psdk-search{padding-left:.625rem}.psdk-icon-search{vertical-align:sub;padding:0rem .125rem;min-width:unset;width:1.1rem}.psdk-case-history-title{margin-left:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i3.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i3.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i3.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i3.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i3.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i3.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }] }); }
71
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaseHistoryComponent, deps: [{ token: i1.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
72
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CaseHistoryComponent, isStandalone: true, selector: "app-case-history", inputs: { pConn$: "pConn$" }, ngImport: i0, template: "<div>\n <h2 class=\"psdk-case-history-title\">{{ configProps$.label }}</h2>\n <table mat-table [dataSource]=\"repeatList$\">\n <ng-container *ngFor=\"let dCol of fields$\" [matColumnDef]=\"dCol.fieldName\">\n <th mat-header-cell *matHeaderCellDef>{{ dCol.label }}</th>\n <td mat-cell *matCellDef=\"let element\">{{ element[dCol.fieldName] }}</td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns$\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns$\"></tr>\n </table>\n</div>\n", styles: ["table{width:100%}.mat-mdc-row .mat-mdc-cell{text-align:left}.psdk-search{padding-left:.625rem}.psdk-icon-search{vertical-align:sub;padding:0rem .125rem;min-width:unset;width:1.1rem}.psdk-case-history-title{margin-left:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i3.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i3.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i3.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i3.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i3.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i3.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }] }); }
73
73
  }
74
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CaseHistoryComponent, decorators: [{
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaseHistoryComponent, decorators: [{
75
75
  type: Component,
76
76
  args: [{ selector: 'app-case-history', standalone: true, imports: [CommonModule, MatTableModule], template: "<div>\n <h2 class=\"psdk-case-history-title\">{{ configProps$.label }}</h2>\n <table mat-table [dataSource]=\"repeatList$\">\n <ng-container *ngFor=\"let dCol of fields$\" [matColumnDef]=\"dCol.fieldName\">\n <th mat-header-cell *matHeaderCellDef>{{ dCol.label }}</th>\n <td mat-cell *matCellDef=\"let element\">{{ element[dCol.fieldName] }}</td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns$\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns$\"></tr>\n </table>\n</div>\n", styles: ["table{width:100%}.mat-mdc-row .mat-mdc-cell{text-align:left}.psdk-search{padding-left:.625rem}.psdk-icon-search{vertical-align:sub;padding:0rem .125rem;min-width:unset;width:1.1rem}.psdk-case-history-title{margin-left:.5rem}\n"] }]
77
77
  }], ctorParameters: () => [{ type: i1.Utils }], propDecorators: { pConn$: [{