aril 1.2.37 → 1.2.38

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 (398) hide show
  1. package/boot/config/api/src/api.service.d.ts +2 -1
  2. package/esm2022/boot/config/api/src/api.service.mjs +24 -7
  3. package/esm2022/boot/config/apps/src/apps.service.mjs +4 -4
  4. package/esm2022/boot/config/apps/src/auth.guard.mjs +4 -4
  5. package/esm2022/boot/config/apps/src/showdowDOMWrapper.mjs +4 -4
  6. package/esm2022/boot/host/src/app.component.mjs +4 -4
  7. package/esm2022/boot/host/src/bootstrap.mjs +13 -4
  8. package/esm2022/boot/mfe/src/app.component.mjs +4 -4
  9. package/esm2022/boot/pages/src/forbidden.component.mjs +4 -4
  10. package/esm2022/boot/pages/src/notFound.component.mjs +4 -4
  11. package/esm2022/http/src/httpBackend.mjs +4 -4
  12. package/esm2022/i18n/src/i18n.module.mjs +5 -5
  13. package/esm2022/i18n/src/loader.mjs +4 -4
  14. package/esm2022/permission/aril-permission.mjs +5 -0
  15. package/esm2022/permission/index.mjs +4 -0
  16. package/esm2022/permission/src/constants.mjs +4 -0
  17. package/esm2022/permission/src/has-permission.directive.mjs +49 -0
  18. package/esm2022/permission/src/permission.service.mjs +57 -0
  19. package/esm2022/provider/src/index.mjs +2 -1
  20. package/esm2022/provider/src/prodiveHost.mjs +3 -2
  21. package/esm2022/provider/src/provideHostPermissions.mjs +43 -0
  22. package/esm2022/theme/layout/app/breadcrumb/app.breadcrumb.component.mjs +4 -4
  23. package/esm2022/theme/layout/app/environment-banner/environment-banner.component.mjs +4 -4
  24. package/esm2022/theme/layout/app/expandableMenu/expandable-menu.component.mjs +4 -4
  25. package/esm2022/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.mjs +4 -4
  26. package/esm2022/theme/layout/app/favorite-pages/favorite-pages.service.mjs +4 -4
  27. package/esm2022/theme/layout/app/favorite-pages/modals/add-edit-favorite-modal/add-edit-favorite-modal.component.mjs +4 -4
  28. package/esm2022/theme/layout/app/general-search/general-search.component.mjs +4 -4
  29. package/esm2022/theme/layout/app/history/history-sidebar.component.mjs +4 -4
  30. package/esm2022/theme/layout/app/history/history.service.mjs +4 -4
  31. package/esm2022/theme/layout/app/layout/app.layout.component.mjs +4 -4
  32. package/esm2022/theme/layout/app/layout/mfe.layout.component.mjs +4 -4
  33. package/esm2022/theme/layout/app/notifications/notifications-sidebar.component.mjs +4 -4
  34. package/esm2022/theme/layout/app/profileSidebar/app.profilesidebar.component.mjs +4 -4
  35. package/esm2022/theme/layout/app/profileSidebar/modals/change-password-modal/change-password-modal.component.mjs +4 -4
  36. package/esm2022/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.mjs +4 -4
  37. package/esm2022/theme/layout/app/profileSidebar/profile.service.mjs +4 -4
  38. package/esm2022/theme/layout/app/site-map/site-map-sidebar.component.mjs +4 -4
  39. package/esm2022/theme/layout/app/static-sidebar/static-sidebar.component.mjs +4 -4
  40. package/esm2022/theme/layout/app/topbar/app.topbar.component.mjs +4 -4
  41. package/esm2022/theme/layout/service/app.layout.service.mjs +4 -4
  42. package/esm2022/theme/layout/service/app.menu.service.mjs +4 -4
  43. package/esm2022/theme/layout/service/breadcrumb.service.mjs +4 -4
  44. package/esm2022/theme/layout/service/notifications.service.mjs +4 -4
  45. package/esm2022/theme/layout/service/search.service.mjs +4 -4
  46. package/esm2022/theme/layout/service/selection-group.service.mjs +4 -4
  47. package/esm2022/ui/autoComplete/src/auto-complete.component.mjs +4 -4
  48. package/esm2022/ui/badge/src/badge.component.mjs +4 -4
  49. package/esm2022/ui/button/src/button.component.mjs +4 -4
  50. package/esm2022/ui/button/src/split-button.component.mjs +4 -4
  51. package/esm2022/ui/calendar/src/calendar.component.mjs +4 -4
  52. package/esm2022/ui/charts/src/amCharts/column/column-chart.component.mjs +4 -4
  53. package/esm2022/ui/charts/src/amCharts/line/line-chart.component.mjs +4 -4
  54. package/esm2022/ui/charts/src/amCharts/pie/pie-chart.component.mjs +4 -4
  55. package/esm2022/ui/charts/src/highCharts/area/area-chart.component.mjs +4 -4
  56. package/esm2022/ui/charts/src/highCharts/bar/bar-chart.component.mjs +4 -4
  57. package/esm2022/ui/charts/src/highCharts/column/column-chart.component.mjs +4 -4
  58. package/esm2022/ui/charts/src/highCharts/gauge/solid-gauge.component.mjs +4 -4
  59. package/esm2022/ui/charts/src/highCharts/heatmap/heatMap-chart.component.mjs +4 -4
  60. package/esm2022/ui/charts/src/highCharts/line/line-chart-datetime-axis.component.mjs +4 -4
  61. package/esm2022/ui/charts/src/highCharts/line/line-chart-series.component.mjs +4 -4
  62. package/esm2022/ui/charts/src/highCharts/line/line-chart.component.mjs +4 -4
  63. package/esm2022/ui/charts/src/highCharts/pie/pie-chart.component.mjs +4 -4
  64. package/esm2022/ui/checkbox/src/check-box.component.mjs +4 -4
  65. package/esm2022/ui/checkbox/src/tri-state-checkbox.component.mjs +4 -4
  66. package/esm2022/ui/chip/src/chip.component.mjs +4 -4
  67. package/esm2022/ui/collapse-reorder-list/src/collapse-reorder-list.component.mjs +4 -4
  68. package/esm2022/ui/dxEditor/src/dx-editor.component.mjs +4 -4
  69. package/esm2022/ui/dxField/src/dx-field.component.mjs +4 -4
  70. package/esm2022/ui/editor/src/aril-editor.component.mjs +4 -4
  71. package/esm2022/ui/field/src/field.component.mjs +4 -4
  72. package/esm2022/ui/fileUpload/src/file-upload.component.mjs +4 -4
  73. package/esm2022/ui/form/index.mjs +5 -5
  74. package/esm2022/ui/form/src/form-submit-button.component.mjs +4 -4
  75. package/esm2022/ui/form/src/form.component.mjs +4 -4
  76. package/esm2022/ui/img-viewer/src/img-viewer.component.mjs +4 -4
  77. package/esm2022/ui/json-diff-comparison/src/json-diff.component.mjs +4 -4
  78. package/esm2022/ui/lib/src/form/form-error-message.component.mjs +4 -4
  79. package/esm2022/ui/lib/src/form/form-error-message.directive.mjs +4 -4
  80. package/esm2022/ui/lib/src/grid/enum-color-picker.pipe.mjs +4 -4
  81. package/esm2022/ui/lib/src/grid/flex-grid.directive.mjs +4 -4
  82. package/esm2022/ui/lib/src/input/common-input-validators.service.mjs +4 -4
  83. package/esm2022/ui/lib/src/input/dx-input-error-message.pipe.mjs +4 -4
  84. package/esm2022/ui/lib/src/input/input-disabled.directive.mjs +4 -4
  85. package/esm2022/ui/lib/src/input/input-error-message.pipe.mjs +4 -4
  86. package/esm2022/ui/lib/src/input/value-accessor.directive.mjs +4 -4
  87. package/esm2022/ui/lib/src/tooltip/tooltip-on-overflow.directive.mjs +4 -4
  88. package/esm2022/ui/loader/src/loader.component.mjs +4 -4
  89. package/esm2022/ui/mask/src/mask.component.mjs +4 -4
  90. package/esm2022/ui/multiSelect/src/multi-select.component.mjs +4 -4
  91. package/esm2022/ui/number/src/number.component.mjs +4 -4
  92. package/esm2022/ui/operation-types-dialog/src/operation-types-dialog.component.mjs +4 -4
  93. package/esm2022/ui/overlayPanel/src/overlay-panel.component.mjs +4 -4
  94. package/esm2022/ui/panel/src/panel.component.mjs +4 -4
  95. package/esm2022/ui/password/src/password.component.mjs +4 -4
  96. package/esm2022/ui/pdf-viewer/src/pdf-viewer.component.mjs +4 -4
  97. package/esm2022/ui/progressbar/src/progressbar.component.mjs +4 -4
  98. package/esm2022/ui/radioButton/src/radio-button.component.mjs +4 -4
  99. package/esm2022/ui/relativeDateSelector/src/relative-date-selector.component.mjs +4 -4
  100. package/esm2022/ui/selectBox/src/select-box.component.mjs +4 -4
  101. package/esm2022/ui/switch/src/switch.component.mjs +4 -4
  102. package/esm2022/ui/table/index.mjs +5 -5
  103. package/esm2022/ui/table/src/export-overlay-panel.component.mjs +4 -4
  104. package/esm2022/ui/table/src/table-column.component.mjs +4 -4
  105. package/esm2022/ui/table/src/table.component.mjs +4 -4
  106. package/esm2022/ui/table-expand/index.mjs +5 -5
  107. package/esm2022/ui/table-expand/src/table-column.component.mjs +4 -4
  108. package/esm2022/ui/table-expand/src/table-expand-area.component.mjs +4 -4
  109. package/esm2022/ui/table-expand/src/table.component.mjs +4 -4
  110. package/esm2022/ui/tag/src/tag.component.mjs +4 -4
  111. package/esm2022/ui/tagBox/src/tag-box.component.mjs +4 -4
  112. package/esm2022/ui/text/src/text.component.mjs +4 -4
  113. package/esm2022/ui/textArea/src/text-area.component.mjs +4 -4
  114. package/esm2022/ui/toggle-button/src/toggle-button.component.mjs +4 -4
  115. package/esm2022/ui/tooltip/src/tooltip-component.mjs +4 -4
  116. package/esm2022/ui/translate-input/src/aril-lang-modal/aril-lang-modal.component.mjs +4 -4
  117. package/esm2022/ui/translate-input/src/aril-translate-input.component.mjs +4 -4
  118. package/esm2022/ui/tree/src/tree.component.mjs +4 -4
  119. package/esm2022/ui/treeSelect/src/treeSelect.component.mjs +4 -4
  120. package/esm2022/ui/treeTable/src/tree-table.component.mjs +4 -4
  121. package/esm2022/ui/value/src/value.component.mjs +4 -4
  122. package/esm2022/ui-business/assetPicker/src/asset-picker.component.mjs +4 -4
  123. package/esm2022/ui-business/detailed-overlay-panel/src/detailed-overlay-panel.component.mjs +4 -4
  124. package/esm2022/ui-business/enumPicker/src/enum-picker.component.mjs +4 -4
  125. package/esm2022/ui-business/image-viewer/src/aril-image-viewer.component.mjs +4 -4
  126. package/esm2022/ui-business/multiAssetPicker/src/multi-asset-picker.component.mjs +4 -4
  127. package/esm2022/ui-business/multiple-ref-value/src/multiple-ref-value.component.mjs +4 -4
  128. package/esm2022/ui-business/notification-templates-dialog/src/notification-templates-dialog.component.mjs +4 -4
  129. package/esm2022/ui-business/pdf-preview-modal/src/pdf-preview-modal.component.mjs +4 -4
  130. package/esm2022/ui-business/ref-value/src/ref-value.component.mjs +4 -4
  131. package/esm2022/ui-business/rolePicker/src/role-picker.component.mjs +4 -4
  132. package/esm2022/ui-business/trace-drawer/src/app-log.service.mjs +4 -4
  133. package/esm2022/ui-business/trace-drawer/src/trace-drawer.component.mjs +4 -4
  134. package/esm2022/ui-business/trace-drawer/src/trace-log.service.mjs +4 -4
  135. package/esm2022/ui-business/trace-id/src/trace-id.component.mjs +4 -4
  136. package/esm2022/ui-business/userPicker/src/user-picker.component.mjs +4 -4
  137. package/esm2022/util/activity/src/activity.service.mjs +4 -4
  138. package/esm2022/util/block/src/block.mjs +7 -7
  139. package/esm2022/util/directives/src/detail-page-customization/detail-page-customization.directive.mjs +4 -4
  140. package/esm2022/util/directives/src/dialog-component/plugin-dialog.component.mjs +4 -4
  141. package/esm2022/util/directives/src/dialog-service/plugin-dialog.service.mjs +4 -4
  142. package/esm2022/util/lib/src/module-router.mjs +4 -4
  143. package/esm2022/util/pipes/src/distance-to-now.pipe.mjs +4 -4
  144. package/esm2022/util/pipes/src/get-column-by-field.pipe.mjs +4 -4
  145. package/esm2022/util/pipes/src/parse.pipe.mjs +4 -4
  146. package/esm2022/util/pipes/src/round-number.pipe.mjs +4 -4
  147. package/esm2022/util/pipes/src/safe.pipe.mjs +4 -4
  148. package/esm2022/util/pipes/src/translate-json/translate-json.pipe.mjs +4 -4
  149. package/esm2022/util/pub-sub/src/pub-sub.service.mjs +4 -4
  150. package/esm2022/util/sync-active-tab-route/src/sync-active-tab-route.directive.mjs +4 -4
  151. package/esm2022/util/unwrap/src/unwrap-tag.directive.mjs +4 -4
  152. package/fesm2022/{aril-app.component-CwZZhJcO.mjs → aril-app.component-BUjucZ0J.mjs} +5 -4
  153. package/fesm2022/{aril-app.component-CwZZhJcO.mjs.map → aril-app.component-BUjucZ0J.mjs.map} +1 -1
  154. package/fesm2022/aril-boot-base.mjs +1 -1
  155. package/fesm2022/aril-boot-base.mjs.map +1 -1
  156. package/fesm2022/aril-boot-bridge.mjs.map +1 -1
  157. package/fesm2022/aril-boot-config-api.mjs +24 -7
  158. package/fesm2022/aril-boot-config-api.mjs.map +1 -1
  159. package/fesm2022/aril-boot-config-apps.mjs +10 -10
  160. package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
  161. package/fesm2022/aril-boot-config-plugins.mjs +1 -1
  162. package/fesm2022/aril-boot-config-plugins.mjs.map +1 -1
  163. package/fesm2022/aril-boot-config-translate.mjs.map +1 -1
  164. package/fesm2022/aril-boot-host.mjs +16 -7
  165. package/fesm2022/aril-boot-host.mjs.map +1 -1
  166. package/fesm2022/{aril-boot-mfe-app.component-DwYgUUdL.mjs → aril-boot-mfe-app.component-D1w8I2ug.mjs} +5 -5
  167. package/fesm2022/{aril-boot-mfe-app.component-DwYgUUdL.mjs.map → aril-boot-mfe-app.component-D1w8I2ug.mjs.map} +1 -1
  168. package/fesm2022/{aril-boot-mfe-aril-boot-mfe-hJkkFa_a.mjs → aril-boot-mfe-aril-boot-mfe-JHrhKvhU.mjs} +4 -4
  169. package/fesm2022/{aril-boot-mfe-aril-boot-mfe-hJkkFa_a.mjs.map → aril-boot-mfe-aril-boot-mfe-JHrhKvhU.mjs.map} +1 -1
  170. package/fesm2022/aril-boot-mfe.mjs +1 -1
  171. package/fesm2022/aril-boot-pages.mjs +6 -6
  172. package/fesm2022/aril-boot-pages.mjs.map +1 -1
  173. package/fesm2022/aril-http.mjs +3 -3
  174. package/fesm2022/aril-http.mjs.map +1 -1
  175. package/fesm2022/aril-i18n.mjs +7 -7
  176. package/fesm2022/aril-i18n.mjs.map +1 -1
  177. package/fesm2022/aril-keycloak.mjs.map +1 -1
  178. package/fesm2022/aril-permission.mjs +114 -0
  179. package/fesm2022/aril-permission.mjs.map +1 -0
  180. package/fesm2022/aril-provider.mjs +45 -3
  181. package/fesm2022/aril-provider.mjs.map +1 -1
  182. package/fesm2022/aril-theme-layout.mjs +75 -75
  183. package/fesm2022/aril-theme-layout.mjs.map +1 -1
  184. package/fesm2022/aril-ui-autoComplete.mjs +6 -6
  185. package/fesm2022/aril-ui-autoComplete.mjs.map +1 -1
  186. package/fesm2022/aril-ui-badge.mjs +4 -4
  187. package/fesm2022/aril-ui-badge.mjs.map +1 -1
  188. package/fesm2022/aril-ui-business-assetPicker.mjs +5 -5
  189. package/fesm2022/aril-ui-business-assetPicker.mjs.map +1 -1
  190. package/fesm2022/aril-ui-business-detailed-overlay-panel.mjs +5 -5
  191. package/fesm2022/aril-ui-business-detailed-overlay-panel.mjs.map +1 -1
  192. package/fesm2022/aril-ui-business-enumPicker.mjs +5 -5
  193. package/fesm2022/aril-ui-business-enumPicker.mjs.map +1 -1
  194. package/fesm2022/aril-ui-business-image-viewer.mjs +3 -3
  195. package/fesm2022/aril-ui-business-image-viewer.mjs.map +1 -1
  196. package/fesm2022/aril-ui-business-multiAssetPicker.mjs +4 -4
  197. package/fesm2022/aril-ui-business-multiAssetPicker.mjs.map +1 -1
  198. package/fesm2022/aril-ui-business-multiple-ref-value.mjs +4 -4
  199. package/fesm2022/aril-ui-business-multiple-ref-value.mjs.map +1 -1
  200. package/fesm2022/aril-ui-business-notification-templates-dialog.mjs +3 -3
  201. package/fesm2022/aril-ui-business-notification-templates-dialog.mjs.map +1 -1
  202. package/fesm2022/aril-ui-business-pdf-preview-modal.mjs +3 -3
  203. package/fesm2022/aril-ui-business-pdf-preview-modal.mjs.map +1 -1
  204. package/fesm2022/aril-ui-business-ref-value.mjs +4 -4
  205. package/fesm2022/aril-ui-business-ref-value.mjs.map +1 -1
  206. package/fesm2022/aril-ui-business-rolePicker.mjs +4 -4
  207. package/fesm2022/aril-ui-business-rolePicker.mjs.map +1 -1
  208. package/fesm2022/aril-ui-business-trace-drawer.mjs +10 -10
  209. package/fesm2022/aril-ui-business-trace-drawer.mjs.map +1 -1
  210. package/fesm2022/aril-ui-business-trace-id.mjs +4 -4
  211. package/fesm2022/aril-ui-business-trace-id.mjs.map +1 -1
  212. package/fesm2022/aril-ui-business-userPicker.mjs +3 -3
  213. package/fesm2022/aril-ui-business-userPicker.mjs.map +1 -1
  214. package/fesm2022/aril-ui-button.mjs +7 -7
  215. package/fesm2022/aril-ui-button.mjs.map +1 -1
  216. package/fesm2022/aril-ui-calendar.mjs +3 -3
  217. package/fesm2022/aril-ui-calendar.mjs.map +1 -1
  218. package/fesm2022/aril-ui-charts.mjs +37 -37
  219. package/fesm2022/aril-ui-charts.mjs.map +1 -1
  220. package/fesm2022/aril-ui-checkbox.mjs +6 -6
  221. package/fesm2022/aril-ui-checkbox.mjs.map +1 -1
  222. package/fesm2022/aril-ui-chip.mjs +4 -4
  223. package/fesm2022/aril-ui-chip.mjs.map +1 -1
  224. package/fesm2022/aril-ui-collapse-reorder-list.mjs +4 -4
  225. package/fesm2022/aril-ui-collapse-reorder-list.mjs.map +1 -1
  226. package/fesm2022/aril-ui-dxEditor.mjs +4 -4
  227. package/fesm2022/aril-ui-dxEditor.mjs.map +1 -1
  228. package/fesm2022/aril-ui-dxField.mjs +4 -4
  229. package/fesm2022/aril-ui-dxField.mjs.map +1 -1
  230. package/fesm2022/aril-ui-editor.mjs +4 -4
  231. package/fesm2022/aril-ui-editor.mjs.map +1 -1
  232. package/fesm2022/aril-ui-field.mjs +4 -4
  233. package/fesm2022/aril-ui-field.mjs.map +1 -1
  234. package/fesm2022/aril-ui-fileUpload.mjs +4 -4
  235. package/fesm2022/aril-ui-fileUpload.mjs.map +1 -1
  236. package/fesm2022/aril-ui-form.mjs +11 -11
  237. package/fesm2022/aril-ui-form.mjs.map +1 -1
  238. package/fesm2022/aril-ui-img-viewer.mjs +3 -3
  239. package/fesm2022/aril-ui-img-viewer.mjs.map +1 -1
  240. package/fesm2022/aril-ui-json-diff-comparison.mjs +4 -4
  241. package/fesm2022/aril-ui-json-diff-comparison.mjs.map +1 -1
  242. package/fesm2022/aril-ui-lib.mjs +31 -31
  243. package/fesm2022/aril-ui-lib.mjs.map +1 -1
  244. package/fesm2022/aril-ui-loader.mjs +3 -3
  245. package/fesm2022/aril-ui-loader.mjs.map +1 -1
  246. package/fesm2022/aril-ui-mask.mjs +3 -3
  247. package/fesm2022/aril-ui-mask.mjs.map +1 -1
  248. package/fesm2022/aril-ui-multiSelect.mjs +3 -3
  249. package/fesm2022/aril-ui-multiSelect.mjs.map +1 -1
  250. package/fesm2022/aril-ui-number.mjs +3 -3
  251. package/fesm2022/aril-ui-number.mjs.map +1 -1
  252. package/fesm2022/aril-ui-operation-types-dialog.mjs +3 -3
  253. package/fesm2022/aril-ui-operation-types-dialog.mjs.map +1 -1
  254. package/fesm2022/aril-ui-overlayPanel.mjs +4 -4
  255. package/fesm2022/aril-ui-overlayPanel.mjs.map +1 -1
  256. package/fesm2022/aril-ui-panel.mjs +4 -4
  257. package/fesm2022/aril-ui-panel.mjs.map +1 -1
  258. package/fesm2022/aril-ui-password.mjs +3 -3
  259. package/fesm2022/aril-ui-password.mjs.map +1 -1
  260. package/fesm2022/aril-ui-pdf-viewer.mjs +3 -3
  261. package/fesm2022/aril-ui-pdf-viewer.mjs.map +1 -1
  262. package/fesm2022/aril-ui-progressbar.mjs +3 -3
  263. package/fesm2022/aril-ui-progressbar.mjs.map +1 -1
  264. package/fesm2022/aril-ui-radioButton.mjs +3 -3
  265. package/fesm2022/aril-ui-radioButton.mjs.map +1 -1
  266. package/fesm2022/aril-ui-relativeDateSelector.mjs +4 -4
  267. package/fesm2022/aril-ui-relativeDateSelector.mjs.map +1 -1
  268. package/fesm2022/aril-ui-selectBox.mjs +5 -5
  269. package/fesm2022/aril-ui-selectBox.mjs.map +1 -1
  270. package/fesm2022/aril-ui-switch.mjs +3 -3
  271. package/fesm2022/aril-ui-switch.mjs.map +1 -1
  272. package/fesm2022/aril-ui-table-expand.mjs +14 -14
  273. package/fesm2022/aril-ui-table-expand.mjs.map +1 -1
  274. package/fesm2022/aril-ui-table.mjs +15 -15
  275. package/fesm2022/aril-ui-table.mjs.map +1 -1
  276. package/fesm2022/aril-ui-tag.mjs +3 -3
  277. package/fesm2022/aril-ui-tag.mjs.map +1 -1
  278. package/fesm2022/aril-ui-tagBox.mjs +5 -5
  279. package/fesm2022/aril-ui-tagBox.mjs.map +1 -1
  280. package/fesm2022/aril-ui-text.mjs +3 -3
  281. package/fesm2022/aril-ui-text.mjs.map +1 -1
  282. package/fesm2022/aril-ui-textArea.mjs +3 -3
  283. package/fesm2022/aril-ui-textArea.mjs.map +1 -1
  284. package/fesm2022/aril-ui-toggle-button.mjs +4 -4
  285. package/fesm2022/aril-ui-toggle-button.mjs.map +1 -1
  286. package/fesm2022/aril-ui-tooltip.mjs +3 -3
  287. package/fesm2022/aril-ui-tooltip.mjs.map +1 -1
  288. package/fesm2022/aril-ui-translate-input.mjs +6 -6
  289. package/fesm2022/aril-ui-translate-input.mjs.map +1 -1
  290. package/fesm2022/aril-ui-tree.mjs +4 -4
  291. package/fesm2022/aril-ui-tree.mjs.map +1 -1
  292. package/fesm2022/aril-ui-treeSelect.mjs +4 -4
  293. package/fesm2022/aril-ui-treeSelect.mjs.map +1 -1
  294. package/fesm2022/aril-ui-treeTable.mjs +4 -4
  295. package/fesm2022/aril-ui-treeTable.mjs.map +1 -1
  296. package/fesm2022/aril-ui-value.mjs +5 -5
  297. package/fesm2022/aril-ui-value.mjs.map +1 -1
  298. package/fesm2022/aril-util-activity.mjs +3 -3
  299. package/fesm2022/aril-util-activity.mjs.map +1 -1
  300. package/fesm2022/aril-util-block.mjs +6 -6
  301. package/fesm2022/aril-util-block.mjs.map +1 -1
  302. package/fesm2022/aril-util-directives.mjs +10 -10
  303. package/fesm2022/aril-util-directives.mjs.map +1 -1
  304. package/fesm2022/aril-util-lib.mjs +3 -3
  305. package/fesm2022/aril-util-lib.mjs.map +1 -1
  306. package/fesm2022/aril-util-pipes.mjs +18 -18
  307. package/fesm2022/aril-util-pipes.mjs.map +1 -1
  308. package/fesm2022/aril-util-primitive-extensions.mjs.map +1 -1
  309. package/fesm2022/aril-util-pub-sub.mjs +3 -3
  310. package/fesm2022/aril-util-pub-sub.mjs.map +1 -1
  311. package/fesm2022/aril-util-sync-active-tab-route.mjs +4 -4
  312. package/fesm2022/aril-util-sync-active-tab-route.mjs.map +1 -1
  313. package/fesm2022/aril-util-unwrap.mjs +3 -3
  314. package/fesm2022/aril-util-unwrap.mjs.map +1 -1
  315. package/fesm2022/aril.mjs +18 -9
  316. package/fesm2022/aril.mjs.map +1 -1
  317. package/package.json +127 -121
  318. package/permission/index.d.ts +3 -0
  319. package/permission/src/constants.d.ts +1 -0
  320. package/permission/src/has-permission.directive.d.ts +16 -0
  321. package/permission/src/permission.service.d.ts +15 -0
  322. package/provider/src/index.d.ts +1 -0
  323. package/provider/src/provideHostPermissions.d.ts +6 -0
  324. package/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.d.ts +0 -16
  325. package/theme/layout/app/history/history-sidebar.component.d.ts +0 -16
  326. package/theme/layout/app/notifications/notifications-sidebar.component.d.ts +0 -16
  327. package/theme/layout/app/site-map/site-map-sidebar.component.d.ts +0 -16
  328. package/ui/autoComplete/src/auto-complete.component.d.ts +8 -8
  329. package/ui/badge/src/badge.component.d.ts +9 -9
  330. package/ui/button/src/button.component.d.ts +12 -12
  331. package/ui/button/src/split-button.component.d.ts +1 -1
  332. package/ui/calendar/src/calendar.component.d.ts +22 -22
  333. package/ui/charts/src/amCharts/column/column-chart.component.d.ts +4 -4
  334. package/ui/charts/src/amCharts/line/line-chart.component.d.ts +5 -5
  335. package/ui/charts/src/amCharts/pie/pie-chart.component.d.ts +4 -4
  336. package/ui/charts/src/highCharts/area/area-chart.component.d.ts +3 -3
  337. package/ui/charts/src/highCharts/bar/bar-chart.component.d.ts +7 -7
  338. package/ui/charts/src/highCharts/column/column-chart.component.d.ts +9 -9
  339. package/ui/charts/src/highCharts/gauge/solid-gauge.component.d.ts +3 -3
  340. package/ui/charts/src/highCharts/heatmap/heatMap-chart.component.d.ts +4 -4
  341. package/ui/charts/src/highCharts/line/line-chart-datetime-axis.component.d.ts +5 -5
  342. package/ui/charts/src/highCharts/line/line-chart-series.component.d.ts +4 -4
  343. package/ui/charts/src/highCharts/line/line-chart.component.d.ts +4 -4
  344. package/ui/charts/src/highCharts/pie/pie-chart.component.d.ts +7 -7
  345. package/ui/checkbox/src/check-box.component.d.ts +3 -3
  346. package/ui/checkbox/src/tri-state-checkbox.component.d.ts +2 -2
  347. package/ui/chip/src/chip.component.d.ts +7 -7
  348. package/ui/collapse-reorder-list/src/collapse-reorder-list.component.d.ts +4 -4
  349. package/ui/dxEditor/src/dx-editor.component.d.ts +5 -5
  350. package/ui/dxField/src/dx-field.component.d.ts +5 -5
  351. package/ui/editor/src/aril-editor.component.d.ts +3 -3
  352. package/ui/field/src/field.component.d.ts +9 -9
  353. package/ui/fileUpload/src/file-upload.component.d.ts +14 -14
  354. package/ui/form/src/form-submit-button.component.d.ts +1 -1
  355. package/ui/form/src/form.component.d.ts +1 -1
  356. package/ui/img-viewer/src/img-viewer.component.d.ts +1 -1
  357. package/ui/lib/src/form/form-error-message.directive.d.ts +1 -1
  358. package/ui/lib/src/tooltip/tooltip-on-overflow.directive.d.ts +1 -1
  359. package/ui/mask/src/mask.component.d.ts +6 -6
  360. package/ui/multiSelect/src/multi-select.component.d.ts +13 -13
  361. package/ui/number/src/number.component.d.ts +15 -15
  362. package/ui/overlayPanel/src/overlay-panel.component.d.ts +1 -1
  363. package/ui/panel/src/panel.component.d.ts +6 -6
  364. package/ui/password/src/password.component.d.ts +4 -4
  365. package/ui/pdf-viewer/src/pdf-viewer.component.d.ts +12 -12
  366. package/ui/progressbar/src/progressbar.component.d.ts +3 -3
  367. package/ui/radioButton/src/radio-button.component.d.ts +3 -3
  368. package/ui/selectBox/src/select-box.component.d.ts +10 -10
  369. package/ui/switch/src/switch.component.d.ts +1 -1
  370. package/ui/table/src/export-overlay-panel.component.d.ts +2 -2
  371. package/ui/table/src/table-column.component.d.ts +11 -11
  372. package/ui/table/src/table.component.d.ts +35 -35
  373. package/ui/table-expand/src/table-column.component.d.ts +6 -6
  374. package/ui/table-expand/src/table.component.d.ts +20 -20
  375. package/ui/tag/src/tag.component.d.ts +6 -4
  376. package/ui/tagBox/src/tag-box.component.d.ts +7 -7
  377. package/ui/text/src/text.component.d.ts +5 -5
  378. package/ui/textArea/src/text-area.component.d.ts +5 -5
  379. package/ui/toggle-button/src/toggle-button.component.d.ts +1 -1
  380. package/ui/tooltip/src/tooltip-component.d.ts +8 -8
  381. package/ui/translate-input/src/aril-translate-input.component.d.ts +2 -2
  382. package/ui/tree/src/tree.component.d.ts +8 -8
  383. package/ui/treeSelect/src/treeSelect.component.d.ts +12 -12
  384. package/ui/treeTable/src/tree-table.component.d.ts +5 -5
  385. package/ui/value/src/value.component.d.ts +15 -15
  386. package/ui-business/assetPicker/src/asset-picker.component.d.ts +11 -11
  387. package/ui-business/detailed-overlay-panel/src/detailed-overlay-panel.component.d.ts +6 -3
  388. package/ui-business/enumPicker/src/enum-picker.component.d.ts +24 -24
  389. package/ui-business/image-viewer/src/aril-image-viewer.component.d.ts +8 -8
  390. package/ui-business/multiAssetPicker/src/multi-asset-picker.component.d.ts +15 -15
  391. package/ui-business/multiple-ref-value/src/multiple-ref-value.component.d.ts +5 -2
  392. package/ui-business/ref-value/src/ref-value.component.d.ts +5 -5
  393. package/ui-business/rolePicker/src/role-picker.component.d.ts +7 -7
  394. package/ui-business/trace-drawer/src/trace-drawer.component.d.ts +8 -8
  395. package/ui-business/trace-id/src/trace-id.component.d.ts +6 -6
  396. package/ui-business/userPicker/src/user-picker.component.d.ts +3 -3
  397. package/util/block/src/block.d.ts +4 -4
  398. package/util/lib/src/types.d.ts +0 -16
@@ -123,10 +123,10 @@ export class AppLayoutComponent {
123
123
  this.menuOutsideClickListener();
124
124
  }
125
125
  }
126
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppLayoutComponent, deps: [{ token: i1.AppMenuService }, { token: i2.LayoutService }, { token: i0.Renderer2 }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component }); }
127
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: AppLayoutComponent, isStandalone: true, selector: "app-layout", viewQueries: [{ propertyName: "expandableMenuComponent", first: true, predicate: ExpandableMenuComponent, descendants: true }, { propertyName: "staticSidebarComponent", first: true, predicate: StaticSidebarComponent, descendants: true }, { propertyName: "appTopbar", first: true, predicate: AppTopbarComponent, descendants: true }], ngImport: i0, template: "<div class=\"layout-container\" [ngClass]=\"containerClass\">\r\n\t<app-environment-banner />\r\n\t@if (layoutService.shouldShowStaticSidebar()) {\r\n\t\t<app-static-sidebar />\r\n\t} @else if (layoutService.shouldShowExpandableMenu()) {\r\n\t\t<app-expandable-menu />\r\n\t}\r\n\t<div class=\"layout-content-wrapper\">\r\n\t\t<app-topbar />\r\n\t\t<div class=\"layout-content\">\r\n\t\t\t<router-outlet />\r\n\t\t</div>\r\n\t</div>\r\n\t<app-profilemenu />\r\n\t<app-history-sidebar />\r\n\t<app-site-map-sidebar />\r\n\t<app-favorite-pages-sidebar />\r\n\t<app-notifications-sidebar />\r\n\t<!--<app-config></app-config>-->\r\n\t<div class=\"layout-mask\" (click)=\"hideMenu()\"></div>\r\n</div>\r\n\r\n<p-toast key=\"toast-root\" />\r\n<p-dialog key=\"dialog-root\" />\r\n<p-messages key=\"messages-root\" />\r\n<p-confirmPopup key=\"confirmPopup-root\" />\r\n<p-confirmDialog key=\"confirmDialog-root\" />\r\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: ConfirmDialogModule }, { kind: "component", type: i4.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "ngmodule", type: ConfirmPopupModule }, { kind: "component", type: i5.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i6.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: MessagesModule }, { kind: "component", type: i7.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange", "onClose"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i8.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: AppTopbarComponent, selector: "app-topbar" }, { kind: "component", type: EnvironmentBannerComponent, selector: "app-environment-banner" }, { kind: "component", type: AppProfileSidebarComponent, selector: "app-profilemenu" }, { kind: "component", type: HistorySidebarComponent, selector: "app-history-sidebar" }, { kind: "component", type: SiteMapSidebarComponent, selector: "app-site-map-sidebar" }, { kind: "component", type: FavoritePagesSidebarComponent, selector: "app-favorite-pages-sidebar" }, { kind: "component", type: ExpandableMenuComponent, selector: "app-expandable-menu" }, { kind: "component", type: StaticSidebarComponent, selector: "app-static-sidebar" }, { kind: "component", type: NotificationsSidebarComponent, selector: "app-notifications-sidebar" }] }); }
126
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppLayoutComponent, deps: [{ token: i1.AppMenuService }, { token: i2.LayoutService }, { token: i0.Renderer2 }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component }); }
127
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: AppLayoutComponent, isStandalone: true, selector: "app-layout", viewQueries: [{ propertyName: "expandableMenuComponent", first: true, predicate: ExpandableMenuComponent, descendants: true }, { propertyName: "staticSidebarComponent", first: true, predicate: StaticSidebarComponent, descendants: true }, { propertyName: "appTopbar", first: true, predicate: AppTopbarComponent, descendants: true }], ngImport: i0, template: "<div class=\"layout-container\" [ngClass]=\"containerClass\">\r\n\t<app-environment-banner />\r\n\t@if (layoutService.shouldShowStaticSidebar()) {\r\n\t\t<app-static-sidebar />\r\n\t} @else if (layoutService.shouldShowExpandableMenu()) {\r\n\t\t<app-expandable-menu />\r\n\t}\r\n\t<div class=\"layout-content-wrapper\">\r\n\t\t<app-topbar />\r\n\t\t<div class=\"layout-content\">\r\n\t\t\t<router-outlet />\r\n\t\t</div>\r\n\t</div>\r\n\t<app-profilemenu />\r\n\t<app-history-sidebar />\r\n\t<app-site-map-sidebar />\r\n\t<app-favorite-pages-sidebar />\r\n\t<app-notifications-sidebar />\r\n\t<!--<app-config></app-config>-->\r\n\t<div class=\"layout-mask\" (click)=\"hideMenu()\"></div>\r\n</div>\r\n\r\n<p-toast key=\"toast-root\" />\r\n<p-dialog key=\"dialog-root\" />\r\n<p-messages key=\"messages-root\" />\r\n<p-confirmPopup key=\"confirmPopup-root\" />\r\n<p-confirmDialog key=\"confirmDialog-root\" />\r\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: ConfirmDialogModule }, { kind: "component", type: i4.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "ngmodule", type: ConfirmPopupModule }, { kind: "component", type: i5.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i6.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: MessagesModule }, { kind: "component", type: i7.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange", "onClose"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i8.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: AppTopbarComponent, selector: "app-topbar" }, { kind: "component", type: EnvironmentBannerComponent, selector: "app-environment-banner" }, { kind: "component", type: AppProfileSidebarComponent, selector: "app-profilemenu" }, { kind: "component", type: HistorySidebarComponent, selector: "app-history-sidebar" }, { kind: "component", type: SiteMapSidebarComponent, selector: "app-site-map-sidebar" }, { kind: "component", type: FavoritePagesSidebarComponent, selector: "app-favorite-pages-sidebar" }, { kind: "component", type: ExpandableMenuComponent, selector: "app-expandable-menu" }, { kind: "component", type: StaticSidebarComponent, selector: "app-static-sidebar" }, { kind: "component", type: NotificationsSidebarComponent, selector: "app-notifications-sidebar" }] }); }
128
128
  }
129
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppLayoutComponent, decorators: [{
129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppLayoutComponent, decorators: [{
130
130
  type: Component,
131
131
  args: [{ standalone: true, selector: 'app-layout', imports: [
132
132
  NgClass,
@@ -156,4 +156,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
156
156
  type: ViewChild,
157
157
  args: [AppTopbarComponent]
158
158
  }] } });
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmxheW91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvbGF5b3V0L2FwcC5sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2xheW91dC9hcHAubGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUF3QixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLGFBQWEsRUFBVSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsT0FBTyxFQUFnQixNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJNUMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDaEcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDNUYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDakYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDbkcs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O3dCQUMxQiwwQkFBMEI7d0JBQzFCLHVCQUF1Qjt3QkFDdkIsdUJBQXVCO3dCQUN2Qiw2QkFBNkI7d0JBQzdCLHVCQUF1Qjt3QkFDdkIsc0JBQXNCO3dCQUN0Qiw2QkFBNkI7cUJBQzdCOzRKQVFtQyx1QkFBdUI7c0JBQTFELFNBQVM7dUJBQUMsdUJBQXVCO2dCQUNDLHNCQUFzQjtzQkFBeEQsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBQ0YsU0FBUztzQkFBdkMsU0FBUzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIFJlbmRlcmVyMiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciwgUm91dGVyT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbmZpcm1kaWFsb2cnO1xyXG5pbXBvcnQgeyBDb25maXJtUG9wdXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbmZpcm1wb3B1cCc7XHJcbmltcG9ydCB7IERpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGlhbG9nJztcclxuaW1wb3J0IHsgTWVzc2FnZXNNb2R1bGUgfSBmcm9tICdwcmltZW5nL21lc3NhZ2VzJztcclxuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0JztcclxuXHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hcHAubGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBNZW51U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXBwLm1lbnUuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudmlyb25tZW50QmFubmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZW52aXJvbm1lbnQtYmFubmVyL2Vudmlyb25tZW50LWJhbm5lci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBcHBQcm9maWxlU2lkZWJhckNvbXBvbmVudCB9IGZyb20gJy4uL3Byb2ZpbGVTaWRlYmFyL2FwcC5wcm9maWxlc2lkZWJhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBIaXN0b3J5U2lkZWJhckNvbXBvbmVudCB9IGZyb20gJy4uL2hpc3RvcnkvaGlzdG9yeS1zaWRlYmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNpdGVNYXBTaWRlYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vc2l0ZS1tYXAvc2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGYXZvcml0ZVBhZ2VzU2lkZWJhckNvbXBvbmVudCB9IGZyb20gJy4uL2Zhdm9yaXRlLXBhZ2VzL2Zhdm9yaXRlLXBhZ2VzLXNpZGViYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXBwVG9wYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vdG9wYmFyL2FwcC50b3BiYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRXhwYW5kYWJsZU1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9leHBhbmRhYmxlTWVudS9leHBhbmRhYmxlLW1lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3RhdGljU2lkZWJhckNvbXBvbmVudCB9IGZyb20gJy4uL3N0YXRpYy1zaWRlYmFyL3N0YXRpYy1zaWRlYmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbnNTaWRlYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLXNpZGViYXIuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0c2VsZWN0b3I6ICdhcHAtbGF5b3V0JyxcclxuXHRpbXBvcnRzOiBbXHJcblx0XHROZ0NsYXNzLFxyXG5cdFx0Um91dGVyT3V0bGV0LFxyXG5cdFx0Q29uZmlybURpYWxvZ01vZHVsZSxcclxuXHRcdENvbmZpcm1Qb3B1cE1vZHVsZSxcclxuXHRcdERpYWxvZ01vZHVsZSxcclxuXHRcdE1lc3NhZ2VzTW9kdWxlLFxyXG5cdFx0VG9hc3RNb2R1bGUsXHJcblx0XHRBcHBUb3BiYXJDb21wb25lbnQsXHJcblx0XHRFbnZpcm9ubWVudEJhbm5lckNvbXBvbmVudCxcclxuXHRcdEFwcFByb2ZpbGVTaWRlYmFyQ29tcG9uZW50LFxyXG5cdFx0SGlzdG9yeVNpZGViYXJDb21wb25lbnQsXHJcblx0XHRTaXRlTWFwU2lkZWJhckNvbXBvbmVudCxcclxuXHRcdEZhdm9yaXRlUGFnZXNTaWRlYmFyQ29tcG9uZW50LFxyXG5cdFx0RXhwYW5kYWJsZU1lbnVDb21wb25lbnQsXHJcblx0XHRTdGF0aWNTaWRlYmFyQ29tcG9uZW50LFxyXG5cdFx0Tm90aWZpY2F0aW9uc1NpZGViYXJDb21wb25lbnRcclxuXHRdLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9hcHAubGF5b3V0LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwTGF5b3V0Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHRvdmVybGF5TWVudU9wZW5TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHRtZW51T3V0c2lkZUNsaWNrTGlzdGVuZXI6IGFueTtcclxuXHRtZW51U2Nyb2xsTGlzdGVuZXI6IGFueTtcclxuXHJcblx0QFZpZXdDaGlsZChFeHBhbmRhYmxlTWVudUNvbXBvbmVudCkgZXhwYW5kYWJsZU1lbnVDb21wb25lbnQhOiBFeHBhbmRhYmxlTWVudUNvbXBvbmVudDtcclxuXHRAVmlld0NoaWxkKFN0YXRpY1NpZGViYXJDb21wb25lbnQpIHN0YXRpY1NpZGViYXJDb21wb25lbnQhOiBTdGF0aWNTaWRlYmFyQ29tcG9uZW50O1xyXG5cdEBWaWV3Q2hpbGQoQXBwVG9wYmFyQ29tcG9uZW50KSBhcHBUb3BiYXIhOiBBcHBUb3BiYXJDb21wb25lbnQ7XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSBtZW51U2VydmljZTogQXBwTWVudVNlcnZpY2UsXHJcblx0XHRwdWJsaWMgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuXHRcdHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG5cdFx0cHVibGljIHJvdXRlcjogUm91dGVyXHJcblx0KSB7XHJcblx0XHR0aGlzLm92ZXJsYXlNZW51T3BlblN1YnNjcmlwdGlvbiA9IHRoaXMubGF5b3V0U2VydmljZS5vdmVybGF5T3BlbiQuc3Vic2NyaWJlKCgpID0+IHtcclxuXHRcdFx0aWYgKCF0aGlzLm1lbnVPdXRzaWRlQ2xpY2tMaXN0ZW5lcikge1xyXG5cdFx0XHRcdHRoaXMubWVudU91dHNpZGVDbGlja0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2NsaWNrJywgKGV2ZW50KSA9PiB7XHJcblx0XHRcdFx0XHRjb25zdCBpc091dHNpZGVDbGlja2VkID0gIShcclxuXHRcdFx0XHRcdFx0dGhpcy5hcHBUb3BiYXIubWVudUJ1dHRvbi5uYXRpdmVFbGVtZW50LmlzU2FtZU5vZGUoZXZlbnQudGFyZ2V0KSB8fFxyXG5cdFx0XHRcdFx0XHR0aGlzLmFwcFRvcGJhci5tZW51QnV0dG9uLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSB8fFxyXG5cdFx0XHRcdFx0XHQodGhpcy5leHBhbmRhYmxlTWVudUNvbXBvbmVudCAmJiB0aGlzLmlzRWxlbWVudEluc2lkZShldmVudC50YXJnZXQsICdhcHAtZXhwYW5kYWJsZS1tZW51JykpIHx8XHJcblx0XHRcdFx0XHRcdCh0aGlzLnN0YXRpY1NpZGViYXJDb21wb25lbnQgJiYgdGhpcy5pc0VsZW1lbnRJbnNpZGUoZXZlbnQudGFyZ2V0LCAnYXBwLXN0YXRpYy1zaWRlYmFyJykpXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0aWYgKGlzT3V0c2lkZUNsaWNrZWQpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5oaWRlTWVudSgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAodGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLnN0YXRpY01lbnVNb2JpbGVBY3RpdmUpIHtcclxuXHRcdFx0XHR0aGlzLmJsb2NrQm9keVNjcm9sbCgpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLnJvdXRlci5ldmVudHMucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG5cdFx0XHRpZiAoIXRoaXMubGF5b3V0U2VydmljZS5tZmVBcHBJdGVtQ2xpY2tlZCgpKSB0aGlzLmhpZGVNZW51KCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGJsb2NrQm9keVNjcm9sbCgpOiB2b2lkIHtcclxuXHRcdGlmIChkb2N1bWVudC5ib2R5LmNsYXNzTGlzdCkge1xyXG5cdFx0XHRkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ2Jsb2NrZWQtc2Nyb2xsJyk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSArPSAnIGJsb2NrZWQtc2Nyb2xsJztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHVuYmxvY2tCb2R5U2Nyb2xsKCk6IHZvaWQge1xyXG5cdFx0aWYgKGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0KSB7XHJcblx0XHRcdGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnYmxvY2tlZC1zY3JvbGwnKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gZG9jdW1lbnQuYm9keS5jbGFzc05hbWUucmVwbGFjZShcclxuXHRcdFx0XHRuZXcgUmVnRXhwKCcoXnxcXFxcYiknICsgJ2Jsb2NrZWQtc2Nyb2xsJy5zcGxpdCgnICcpLmpvaW4oJ3wnKSArICcoXFxcXGJ8JCknLCAnZ2knKSxcclxuXHRcdFx0XHQnICdcclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vIEhlbHBlciBtZXRob2QgdG8gY2hlY2sgaWYgZWxlbWVudCBpcyBpbnNpZGUgYSBzcGVjaWZpYyBjb21wb25lbnRcclxuXHRwcml2YXRlIGlzRWxlbWVudEluc2lkZShlbGVtZW50OiBhbnksIHNlbGVjdG9yOiBzdHJpbmcpOiBib29sZWFuIHtcclxuXHRcdGlmICghZWxlbWVudCkgcmV0dXJuIGZhbHNlO1xyXG5cdFx0XHJcblx0XHRsZXQgY3VycmVudEVsZW1lbnQgPSBlbGVtZW50O1xyXG5cdFx0d2hpbGUgKGN1cnJlbnRFbGVtZW50ICYmIGN1cnJlbnRFbGVtZW50ICE9PSBkb2N1bWVudCkge1xyXG5cdFx0XHRpZiAoY3VycmVudEVsZW1lbnQudGFnTmFtZSAmJiBjdXJyZW50RWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHNlbGVjdG9yKSB7XHJcblx0XHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHRcdH1cclxuXHRcdFx0Y3VycmVudEVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGZhbHNlO1xyXG5cdH1cclxuXHJcblx0aGlkZU1lbnUoKSB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSA9IGZhbHNlO1xyXG5cdFx0dGhpcy5tZW51U2VydmljZS5yZXNldCgpO1xyXG5cclxuXHRcdGlmICh0aGlzLm1lbnVPdXRzaWRlQ2xpY2tMaXN0ZW5lcikge1xyXG5cdFx0XHR0aGlzLm1lbnVPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpO1xyXG5cdFx0XHR0aGlzLm1lbnVPdXRzaWRlQ2xpY2tMaXN0ZW5lciA9IG51bGw7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMubWVudVNjcm9sbExpc3RlbmVyKSB7XHJcblx0XHRcdHRoaXMubWVudVNjcm9sbExpc3RlbmVyKCk7XHJcblx0XHRcdHRoaXMubWVudVNjcm9sbExpc3RlbmVyID0gbnVsbDtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLnVuYmxvY2tCb2R5U2Nyb2xsKCk7XHJcblx0fVxyXG5cclxuXHRnZXQgY29udGFpbmVyQ2xhc3MoKSB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHQnbGF5b3V0LWxpZ2h0JzogdGhpcy5sYXlvdXRTZXJ2aWNlLmNvbmZpZygpLmNvbG9yU2NoZW1lID09PSAnbGlnaHQnLFxyXG5cdFx0XHQnbGF5b3V0LWRpbSc6IHRoaXMubGF5b3V0U2VydmljZS5jb25maWcoKS5jb2xvclNjaGVtZSA9PT0gJ2RpbScsXHJcblx0XHRcdCdsYXlvdXQtZGFyayc6IHRoaXMubGF5b3V0U2VydmljZS5jb25maWcoKS5jb2xvclNjaGVtZSA9PT0gJ2RhcmsnLFxyXG5cdFx0XHQnbGF5b3V0LWNvbG9yc2NoZW1lLW1lbnUnOiB0aGlzLmxheW91dFNlcnZpY2UuY29uZmlnKCkubWVudVRoZW1lID09PSAnY29sb3JTY2hlbWUnLFxyXG5cdFx0XHQnbGF5b3V0LXByaW1hcnljb2xvci1tZW51JzogdGhpcy5sYXlvdXRTZXJ2aWNlLmNvbmZpZygpLm1lbnVUaGVtZSA9PT0gJ3ByaW1hcnlDb2xvcicsXHJcblx0XHRcdCdsYXlvdXQtdHJhbnNwYXJlbnQtbWVudSc6IHRoaXMubGF5b3V0U2VydmljZS5jb25maWcoKS5tZW51VGhlbWUgPT09ICd0cmFuc3BhcmVudCcsXHJcblx0XHRcdCdsYXlvdXQtc3RhdGljJzogdGhpcy5sYXlvdXRTZXJ2aWNlLmNvbmZpZygpLm1lbnVNb2RlID09PSAnc3RhdGljJyxcclxuXHRcdFx0J2xheW91dC1leHBhbmRhYmxlJzogdGhpcy5sYXlvdXRTZXJ2aWNlLmNvbmZpZygpLm1lbnVNb2RlID09PSAnZXhwYW5kYWJsZScsXHJcblx0XHRcdCdsYXlvdXQtc3RhdGljLWluYWN0aXZlJzogXHJcblx0XHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLmNvbmZpZygpLm1lbnVNb2RlID09PSAnc3RhdGljJyAmJiBcclxuXHRcdFx0XHQhdGhpcy5sYXlvdXRTZXJ2aWNlLnNob3VsZFNob3dTdGF0aWNTaWRlYmFyKCksXHJcblx0XHRcdCdsYXlvdXQtc3RhdGljLWNvbGxhcHNlZCc6IFxyXG5cdFx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5jb25maWcoKS5tZW51TW9kZSA9PT0gJ3N0YXRpYycgJiYgXHJcblx0XHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLmlzU3RhdGljU2lkZWJhckNvbGxhcHNlZCgpLFxyXG5cdFx0XHQnbGF5b3V0LW1vYmlsZS1hY3RpdmUnOiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSxcclxuXHRcdFx0J3AtaW5wdXQtZmlsbGVkJzogdGhpcy5sYXlvdXRTZXJ2aWNlLmNvbmZpZygpLmlucHV0U3R5bGUgPT09ICdmaWxsZWQnLFxyXG5cdFx0XHQncC1yaXBwbGUtZGlzYWJsZWQnOiAhdGhpcy5sYXlvdXRTZXJ2aWNlLmNvbmZpZygpLnJpcHBsZSxcclxuXHRcdFx0J25ldy1zaWRlYmFyLWxheW91dCc6IHRoaXMubGF5b3V0U2VydmljZS5jb25maWcoKS5tZW51TW9kZSA9PT0gJ2V4cGFuZGFibGUnLFxyXG5cdFx0XHQnc2Vjb25kYXJ5LWV4cGFuZGVkJzogdGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLnNlY29uZGFyeVNpZGViYXJFeHBhbmRlZFxyXG5cdFx0fTtcclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0aWYgKHRoaXMub3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uKSB7XHJcblx0XHRcdHRoaXMub3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMubWVudU91dHNpZGVDbGlja0xpc3RlbmVyKSB7XHJcblx0XHRcdHRoaXMubWVudU91dHNpZGVDbGlja0xpc3RlbmVyKCk7XHJcblx0XHR9XHJcblx0fVxyXG59IiwiPGRpdiBjbGFzcz1cImxheW91dC1jb250YWluZXJcIiBbbmdDbGFzc109XCJjb250YWluZXJDbGFzc1wiPlxyXG5cdDxhcHAtZW52aXJvbm1lbnQtYmFubmVyIC8+XHJcblx0QGlmIChsYXlvdXRTZXJ2aWNlLnNob3VsZFNob3dTdGF0aWNTaWRlYmFyKCkpIHtcclxuXHRcdDxhcHAtc3RhdGljLXNpZGViYXIgLz5cclxuXHR9IEBlbHNlIGlmIChsYXlvdXRTZXJ2aWNlLnNob3VsZFNob3dFeHBhbmRhYmxlTWVudSgpKSB7XHJcblx0XHQ8YXBwLWV4cGFuZGFibGUtbWVudSAvPlxyXG5cdH1cclxuXHQ8ZGl2IGNsYXNzPVwibGF5b3V0LWNvbnRlbnQtd3JhcHBlclwiPlxyXG5cdFx0PGFwcC10b3BiYXIgLz5cclxuXHRcdDxkaXYgY2xhc3M9XCJsYXlvdXQtY29udGVudFwiPlxyXG5cdFx0XHQ8cm91dGVyLW91dGxldCAvPlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblx0PGFwcC1wcm9maWxlbWVudSAvPlxyXG5cdDxhcHAtaGlzdG9yeS1zaWRlYmFyIC8+XHJcblx0PGFwcC1zaXRlLW1hcC1zaWRlYmFyIC8+XHJcblx0PGFwcC1mYXZvcml0ZS1wYWdlcy1zaWRlYmFyIC8+XHJcblx0PGFwcC1ub3RpZmljYXRpb25zLXNpZGViYXIgLz5cclxuXHQ8IS0tPGFwcC1jb25maWc+PC9hcHAtY29uZmlnPi0tPlxyXG5cdDxkaXYgY2xhc3M9XCJsYXlvdXQtbWFza1wiIChjbGljayk9XCJoaWRlTWVudSgpXCI+PC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPHAtdG9hc3Qga2V5PVwidG9hc3Qtcm9vdFwiIC8+XHJcbjxwLWRpYWxvZyBrZXk9XCJkaWFsb2ctcm9vdFwiIC8+XHJcbjxwLW1lc3NhZ2VzIGtleT1cIm1lc3NhZ2VzLXJvb3RcIiAvPlxyXG48cC1jb25maXJtUG9wdXAga2V5PVwiY29uZmlybVBvcHVwLXJvb3RcIiAvPlxyXG48cC1jb25maXJtRGlhbG9nIGtleT1cImNvbmZpcm1EaWFsb2ctcm9vdFwiIC8+XHJcbiJdfQ==
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmxheW91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvbGF5b3V0L2FwcC5sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2xheW91dC9hcHAubGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUF3QixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLGFBQWEsRUFBVSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsT0FBTyxFQUFnQixNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJNUMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDaEcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDNUYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDakYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDbkcs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O3dCQUMxQiwwQkFBMEI7d0JBQzFCLHVCQUF1Qjt3QkFDdkIsdUJBQXVCO3dCQUN2Qiw2QkFBNkI7d0JBQzdCLHVCQUF1Qjt3QkFDdkIsc0JBQXNCO3dCQUN0Qiw2QkFBNkI7cUJBQzdCOzRKQVFtQyx1QkFBdUI7c0JBQTFELFNBQVM7dUJBQUMsdUJBQXVCO2dCQUNDLHNCQUFzQjtzQkFBeEQsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBQ0YsU0FBUztzQkFBdkMsU0FBUzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIFJlbmRlcmVyMiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciwgUm91dGVyT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbmZpcm1kaWFsb2cnO1xyXG5pbXBvcnQgeyBDb25maXJtUG9wdXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbmZpcm1wb3B1cCc7XHJcbmltcG9ydCB7IERpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGlhbG9nJztcclxuaW1wb3J0IHsgTWVzc2FnZXNNb2R1bGUgfSBmcm9tICdwcmltZW5nL21lc3NhZ2VzJztcclxuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0JztcclxuXHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hcHAubGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBNZW51U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXBwLm1lbnUuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudmlyb25tZW50QmFubmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZW52aXJvbm1lbnQtYmFubmVyL2Vudmlyb25tZW50LWJhbm5lci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBcHBQcm9maWxlU2lkZWJhckNvbXBvbmVudCB9IGZyb20gJy4uL3Byb2ZpbGVTaWRlYmFyL2FwcC5wcm9maWxlc2lkZWJhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBIaXN0b3J5U2lkZWJhckNvbXBvbmVudCB9IGZyb20gJy4uL2hpc3RvcnkvaGlzdG9yeS1zaWRlYmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNpdGVNYXBTaWRlYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vc2l0ZS1tYXAvc2l0ZS1tYXAtc2lkZWJhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGYXZvcml0ZVBhZ2VzU2lkZWJhckNvbXBvbmVudCB9IGZyb20gJy4uL2Zhdm9yaXRlLXBhZ2VzL2Zhdm9yaXRlLXBhZ2VzLXNpZGViYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXBwVG9wYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vdG9wYmFyL2FwcC50b3BiYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRXhwYW5kYWJsZU1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9leHBhbmRhYmxlTWVudS9leHBhbmRhYmxlLW1lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3RhdGljU2lkZWJhckNvbXBvbmVudCB9IGZyb20gJy4uL3N0YXRpYy1zaWRlYmFyL3N0YXRpYy1zaWRlYmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbnNTaWRlYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLXNpZGViYXIuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0c2VsZWN0b3I6ICdhcHAtbGF5b3V0JyxcclxuXHRpbXBvcnRzOiBbXHJcblx0XHROZ0NsYXNzLFxyXG5cdFx0Um91dGVyT3V0bGV0LFxyXG5cdFx0Q29uZmlybURpYWxvZ01vZHVsZSxcclxuXHRcdENvbmZpcm1Qb3B1cE1vZHVsZSxcclxuXHRcdERpYWxvZ01vZHVsZSxcclxuXHRcdE1lc3NhZ2VzTW9kdWxlLFxyXG5cdFx0VG9hc3RNb2R1bGUsXHJcblx0XHRBcHBUb3BiYXJDb21wb25lbnQsXHJcblx0XHRFbnZpcm9ubWVudEJhbm5lckNvbXBvbmVudCxcclxuXHRcdEFwcFByb2ZpbGVTaWRlYmFyQ29tcG9uZW50LFxyXG5cdFx0SGlzdG9yeVNpZGViYXJDb21wb25lbnQsXHJcblx0XHRTaXRlTWFwU2lkZWJhckNvbXBvbmVudCxcclxuXHRcdEZhdm9yaXRlUGFnZXNTaWRlYmFyQ29tcG9uZW50LFxyXG5cdFx0RXhwYW5kYWJsZU1lbnVDb21wb25lbnQsXHJcblx0XHRTdGF0aWNTaWRlYmFyQ29tcG9uZW50LFxyXG5cdFx0Tm90aWZpY2F0aW9uc1NpZGViYXJDb21wb25lbnRcclxuXHRdLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9hcHAubGF5b3V0LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwTGF5b3V0Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHRvdmVybGF5TWVudU9wZW5TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHRtZW51T3V0c2lkZUNsaWNrTGlzdGVuZXI6IGFueTtcclxuXHRtZW51U2Nyb2xsTGlzdGVuZXI6IGFueTtcclxuXHJcblx0QFZpZXdDaGlsZChFeHBhbmRhYmxlTWVudUNvbXBvbmVudCkgZXhwYW5kYWJsZU1lbnVDb21wb25lbnQhOiBFeHBhbmRhYmxlTWVudUNvbXBvbmVudDtcclxuXHRAVmlld0NoaWxkKFN0YXRpY1NpZGViYXJDb21wb25lbnQpIHN0YXRpY1NpZGViYXJDb21wb25lbnQhOiBTdGF0aWNTaWRlYmFyQ29tcG9uZW50O1xyXG5cdEBWaWV3Q2hpbGQoQXBwVG9wYmFyQ29tcG9uZW50KSBhcHBUb3BiYXIhOiBBcHBUb3BiYXJDb21wb25lbnQ7XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSBtZW51U2VydmljZTogQXBwTWVudVNlcnZpY2UsXHJcblx0XHRwdWJsaWMgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuXHRcdHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG5cdFx0cHVibGljIHJvdXRlcjogUm91dGVyXHJcblx0KSB7XHJcblx0XHR0aGlzLm92ZXJsYXlNZW51T3BlblN1YnNjcmlwdGlvbiA9IHRoaXMubGF5b3V0U2VydmljZS5vdmVybGF5T3BlbiQuc3Vic2NyaWJlKCgpID0+IHtcclxuXHRcdFx0aWYgKCF0aGlzLm1lbnVPdXRzaWRlQ2xpY2tMaXN0ZW5lcikge1xyXG5cdFx0XHRcdHRoaXMubWVudU91dHNpZGVDbGlja0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2NsaWNrJywgKGV2ZW50KSA9PiB7XHJcblx0XHRcdFx0XHRjb25zdCBpc091dHNpZGVDbGlja2VkID0gIShcclxuXHRcdFx0XHRcdFx0dGhpcy5hcHBUb3BiYXIubWVudUJ1dHRvbi5uYXRpdmVFbGVtZW50LmlzU2FtZU5vZGUoZXZlbnQudGFyZ2V0KSB8fFxyXG5cdFx0XHRcdFx0XHR0aGlzLmFwcFRvcGJhci5tZW51QnV0dG9uLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSB8fFxyXG5cdFx0XHRcdFx0XHQodGhpcy5leHBhbmRhYmxlTWVudUNvbXBvbmVudCAmJiB0aGlzLmlzRWxlbWVudEluc2lkZShldmVudC50YXJnZXQsICdhcHAtZXhwYW5kYWJsZS1tZW51JykpIHx8XHJcblx0XHRcdFx0XHRcdCh0aGlzLnN0YXRpY1NpZGViYXJDb21wb25lbnQgJiYgdGhpcy5pc0VsZW1lbnRJbnNpZGUoZXZlbnQudGFyZ2V0LCAnYXBwLXN0YXRpYy1zaWRlYmFyJykpXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0aWYgKGlzT3V0c2lkZUNsaWNrZWQpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5oaWRlTWVudSgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAodGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLnN0YXRpY01lbnVNb2JpbGVBY3RpdmUpIHtcclxuXHRcdFx0XHR0aGlzLmJsb2NrQm9keVNjcm9sbCgpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLnJvdXRlci5ldmVudHMucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG5cdFx0XHRpZiAoIXRoaXMubGF5b3V0U2VydmljZS5tZmVBcHBJdGVtQ2xpY2tlZCgpKSB0aGlzLmhpZGVNZW51KCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGJsb2NrQm9keVNjcm9sbCgpOiB2b2lkIHtcclxuXHRcdGlmIChkb2N1bWVudC5ib2R5LmNsYXNzTGlzdCkge1xyXG5cdFx0XHRkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ2Jsb2NrZWQtc2Nyb2xsJyk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSArPSAnIGJsb2NrZWQtc2Nyb2xsJztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHVuYmxvY2tCb2R5U2Nyb2xsKCk6IHZvaWQge1xyXG5cdFx0aWYgKGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0KSB7XHJcblx0XHRcdGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnYmxvY2tlZC1zY3JvbGwnKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gZG9jdW1lbnQuYm9keS5jbGFzc05hbWUucmVwbGFjZShcclxuXHRcdFx0XHRuZXcgUmVnRXhwKCcoXnxcXFxcYiknICsgJ2Jsb2NrZWQtc2Nyb2xsJy5zcGxpdCgnICcpLmpvaW4oJ3wnKSArICcoXFxcXGJ8JCknLCAnZ2knKSxcclxuXHRcdFx0XHQnICdcclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vIEhlbHBlciBtZXRob2QgdG8gY2hlY2sgaWYgZWxlbWVudCBpcyBpbnNpZGUgYSBzcGVjaWZpYyBjb21wb25lbnRcclxuXHRwcml2YXRlIGlzRWxlbWVudEluc2lkZShlbGVtZW50OiBhbnksIHNlbGVjdG9yOiBzdHJpbmcpOiBib29sZWFuIHtcclxuXHRcdGlmICghZWxlbWVudCkgcmV0dXJuIGZhbHNlO1xyXG5cdFx0XHJcblx0XHRsZXQgY3VycmVudEVsZW1lbnQgPSBlbGVtZW50O1xyXG5cdFx0d2hpbGUgKGN1cnJlbnRFbGVtZW50ICYmIGN1cnJlbnRFbGVtZW50ICE9PSBkb2N1bWVudCkge1xyXG5cdFx0XHRpZiAoY3VycmVudEVsZW1lbnQudGFnTmFtZSAmJiBjdXJyZW50RWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHNlbGVjdG9yKSB7XHJcblx0XHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHRcdH1cclxuXHRcdFx0Y3VycmVudEVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGZhbHNlO1xyXG5cdH1cclxuXHJcblx0aGlkZU1lbnUoKSB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSA9IGZhbHNlO1xyXG5cdFx0dGhpcy5tZW51U2VydmljZS5yZXNldCgpO1xyXG5cclxuXHRcdGlmICh0aGlzLm1lbnVPdXRzaWRlQ2xpY2tMaXN0ZW5lcikge1xyXG5cdFx0XHR0aGlzLm1lbnVPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpO1xyXG5cdFx0XHR0aGlzLm1lbnVPdXRzaWRlQ2xpY2tMaXN0ZW5lciA9IG51bGw7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMubWVudVNjcm9sbExpc3RlbmVyKSB7XHJcblx0XHRcdHRoaXMubWVudVNjcm9sbExpc3RlbmVyKCk7XHJcblx0XHRcdHRoaXMubWVudVNjcm9sbExpc3RlbmVyID0gbnVsbDtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLnVuYmxvY2tCb2R5U2Nyb2xsKCk7XHJcblx0fVxyXG5cclxuXHRnZXQgY29udGFpbmVyQ2xhc3MoKSB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHQnbGF5b3V0LWxpZ2h0JzogdGhpcy5sYXlvdXRTZXJ2aWNlLmNvbmZpZygpLmNvbG9yU2NoZW1lID09PSAnbGlnaHQnLFxyXG5cdFx0XHQnbGF5b3V0LWRpbSc6IHRoaXMubGF5b3V0U2VydmljZS5jb25maWcoKS5jb2xvclNjaGVtZSA9PT0gJ2RpbScsXHJcblx0XHRcdCdsYXlvdXQtZGFyayc6IHRoaXMubGF5b3V0U2VydmljZS5jb25maWcoKS5jb2xvclNjaGVtZSA9PT0gJ2RhcmsnLFxyXG5cdFx0XHQnbGF5b3V0LWNvbG9yc2NoZW1lLW1lbnUnOiB0aGlzLmxheW91dFNlcnZpY2UuY29uZmlnKCkubWVudVRoZW1lID09PSAnY29sb3JTY2hlbWUnLFxyXG5cdFx0XHQnbGF5b3V0LXByaW1hcnljb2xvci1tZW51JzogdGhpcy5sYXlvdXRTZXJ2aWNlLmNvbmZpZygpLm1lbnVUaGVtZSA9PT0gJ3ByaW1hcnlDb2xvcicsXHJcblx0XHRcdCdsYXlvdXQtdHJhbnNwYXJlbnQtbWVudSc6IHRoaXMubGF5b3V0U2VydmljZS5jb25maWcoKS5tZW51VGhlbWUgPT09ICd0cmFuc3BhcmVudCcsXHJcblx0XHRcdCdsYXlvdXQtc3RhdGljJzogdGhpcy5sYXlvdXRTZXJ2aWNlLmNvbmZpZygpLm1lbnVNb2RlID09PSAnc3RhdGljJyxcclxuXHRcdFx0J2xheW91dC1leHBhbmRhYmxlJzogdGhpcy5sYXlvdXRTZXJ2aWNlLmNvbmZpZygpLm1lbnVNb2RlID09PSAnZXhwYW5kYWJsZScsXHJcblx0XHRcdCdsYXlvdXQtc3RhdGljLWluYWN0aXZlJzogXHJcblx0XHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLmNvbmZpZygpLm1lbnVNb2RlID09PSAnc3RhdGljJyAmJiBcclxuXHRcdFx0XHQhdGhpcy5sYXlvdXRTZXJ2aWNlLnNob3VsZFNob3dTdGF0aWNTaWRlYmFyKCksXHJcblx0XHRcdCdsYXlvdXQtc3RhdGljLWNvbGxhcHNlZCc6IFxyXG5cdFx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5jb25maWcoKS5tZW51TW9kZSA9PT0gJ3N0YXRpYycgJiYgXHJcblx0XHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLmlzU3RhdGljU2lkZWJhckNvbGxhcHNlZCgpLFxyXG5cdFx0XHQnbGF5b3V0LW1vYmlsZS1hY3RpdmUnOiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSxcclxuXHRcdFx0J3AtaW5wdXQtZmlsbGVkJzogdGhpcy5sYXlvdXRTZXJ2aWNlLmNvbmZpZygpLmlucHV0U3R5bGUgPT09ICdmaWxsZWQnLFxyXG5cdFx0XHQncC1yaXBwbGUtZGlzYWJsZWQnOiAhdGhpcy5sYXlvdXRTZXJ2aWNlLmNvbmZpZygpLnJpcHBsZSxcclxuXHRcdFx0J25ldy1zaWRlYmFyLWxheW91dCc6IHRoaXMubGF5b3V0U2VydmljZS5jb25maWcoKS5tZW51TW9kZSA9PT0gJ2V4cGFuZGFibGUnLFxyXG5cdFx0XHQnc2Vjb25kYXJ5LWV4cGFuZGVkJzogdGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLnNlY29uZGFyeVNpZGViYXJFeHBhbmRlZFxyXG5cdFx0fTtcclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0aWYgKHRoaXMub3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uKSB7XHJcblx0XHRcdHRoaXMub3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMubWVudU91dHNpZGVDbGlja0xpc3RlbmVyKSB7XHJcblx0XHRcdHRoaXMubWVudU91dHNpZGVDbGlja0xpc3RlbmVyKCk7XHJcblx0XHR9XHJcblx0fVxyXG59IiwiPGRpdiBjbGFzcz1cImxheW91dC1jb250YWluZXJcIiBbbmdDbGFzc109XCJjb250YWluZXJDbGFzc1wiPlxyXG5cdDxhcHAtZW52aXJvbm1lbnQtYmFubmVyIC8+XHJcblx0QGlmIChsYXlvdXRTZXJ2aWNlLnNob3VsZFNob3dTdGF0aWNTaWRlYmFyKCkpIHtcclxuXHRcdDxhcHAtc3RhdGljLXNpZGViYXIgLz5cclxuXHR9IEBlbHNlIGlmIChsYXlvdXRTZXJ2aWNlLnNob3VsZFNob3dFeHBhbmRhYmxlTWVudSgpKSB7XHJcblx0XHQ8YXBwLWV4cGFuZGFibGUtbWVudSAvPlxyXG5cdH1cclxuXHQ8ZGl2IGNsYXNzPVwibGF5b3V0LWNvbnRlbnQtd3JhcHBlclwiPlxyXG5cdFx0PGFwcC10b3BiYXIgLz5cclxuXHRcdDxkaXYgY2xhc3M9XCJsYXlvdXQtY29udGVudFwiPlxyXG5cdFx0XHQ8cm91dGVyLW91dGxldCAvPlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblx0PGFwcC1wcm9maWxlbWVudSAvPlxyXG5cdDxhcHAtaGlzdG9yeS1zaWRlYmFyIC8+XHJcblx0PGFwcC1zaXRlLW1hcC1zaWRlYmFyIC8+XHJcblx0PGFwcC1mYXZvcml0ZS1wYWdlcy1zaWRlYmFyIC8+XHJcblx0PGFwcC1ub3RpZmljYXRpb25zLXNpZGViYXIgLz5cclxuXHQ8IS0tPGFwcC1jb25maWc+PC9hcHAtY29uZmlnPi0tPlxyXG5cdDxkaXYgY2xhc3M9XCJsYXlvdXQtbWFza1wiIChjbGljayk9XCJoaWRlTWVudSgpXCI+PC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPHAtdG9hc3Qga2V5PVwidG9hc3Qtcm9vdFwiIC8+XHJcbjxwLWRpYWxvZyBrZXk9XCJkaWFsb2ctcm9vdFwiIC8+XHJcbjxwLW1lc3NhZ2VzIGtleT1cIm1lc3NhZ2VzLXJvb3RcIiAvPlxyXG48cC1jb25maXJtUG9wdXAga2V5PVwiY29uZmlybVBvcHVwLXJvb3RcIiAvPlxyXG48cC1jb25maXJtRGlhbG9nIGtleT1cImNvbmZpcm1EaWFsb2ctcm9vdFwiIC8+XHJcbiJdfQ==
@@ -27,8 +27,8 @@ export class MFELayoutComponent {
27
27
  return true;
28
28
  })), { initialValue: true });
29
29
  }
30
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MFELayoutComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
31
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: MFELayoutComponent, isStandalone: true, selector: "mfe-layout", ngImport: i0, template: `
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: MFELayoutComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
31
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: MFELayoutComponent, isStandalone: true, selector: "mfe-layout", ngImport: i0, template: `
32
32
  <app-breadcrumb class="topbar-breadcrumb"></app-breadcrumb>
33
33
  @if (!loading()) {
34
34
  <router-outlet />
@@ -41,7 +41,7 @@ export class MFELayoutComponent {
41
41
  <p-confirmDialog key="confirmDialog-root"></p-confirmDialog>
42
42
  `, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: ConfirmDialogModule }, { kind: "component", type: i2.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "ngmodule", type: ConfirmPopupModule }, { kind: "component", type: i3.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i4.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: MessagesModule }, { kind: "component", type: i5.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange", "onClose"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i6.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: AppBreadcrumbComponent, selector: "app-breadcrumb" }] }); }
43
43
  }
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MFELayoutComponent, decorators: [{
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: MFELayoutComponent, decorators: [{
45
45
  type: Component,
46
46
  args: [{
47
47
  standalone: true,
@@ -61,4 +61,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
61
61
  imports: [RouterOutlet, ConfirmDialogModule, ConfirmPopupModule, DialogModule, MessagesModule, ToastModule, AppBreadcrumbComponent]
62
62
  }]
63
63
  }], ctorParameters: () => [{ type: i1.Router }] });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWZlLmxheW91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvbGF5b3V0L21mZS5sYXlvdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFDTixnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGVBQWUsRUFDZixpQkFBaUIsRUFFakIsWUFBWSxFQUNaLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0IsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7O0FBbUJoRixNQUFNLE9BQU8sa0JBQWtCO0lBRzlCLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2pDLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3RCLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2IsSUFDQyxLQUFLLFlBQVksYUFBYTtnQkFDOUIsS0FBSyxZQUFZLGdCQUFnQjtnQkFDakMsS0FBSyxZQUFZLGVBQWU7Z0JBQ2hDLEtBQUssWUFBWSxpQkFBaUI7Z0JBRWxDLE9BQU8sS0FBSyxDQUFDO1lBRWQsT0FBTyxJQUFJLENBQUM7UUFDYixDQUFDLENBQUMsQ0FDRixFQUNELEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUN0QixDQUFDO0lBQ0YsQ0FBQzsrR0FwQlcsa0JBQWtCO21HQUFsQixrQkFBa0Isc0VBZHBCOzs7Ozs7Ozs7OztFQVdULDREQUNTLFlBQVksMEpBQUUsbUJBQW1CLG9tQkFBRSxrQkFBa0IseVBBQUUsWUFBWSx1dUJBQUUsY0FBYywyUkFBRSxXQUFXLHdXQUFFLHNCQUFzQjs7NEZBRXRILGtCQUFrQjtrQkFqQjlCLFNBQVM7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxZQUFZO29CQUN0QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7O0VBV1Q7b0JBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixDQUFDO2lCQUNuSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5pbXBvcnQge1xyXG5cdE5hdmlnYXRpb25DYW5jZWwsXHJcblx0TmF2aWdhdGlvbkVuZCxcclxuXHROYXZpZ2F0aW9uRXJyb3IsXHJcblx0TmF2aWdhdGlvblNraXBwZWQsXHJcblx0Um91dGVyLFxyXG5cdFJvdXRlck91dGxldFxyXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBDb25maXJtRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jb25maXJtZGlhbG9nJztcclxuaW1wb3J0IHsgQ29uZmlybVBvcHVwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jb25maXJtcG9wdXAnO1xyXG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1lc3NhZ2VzTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9tZXNzYWdlcyc7XHJcbmltcG9ydCB7IFRvYXN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XHJcblxyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXBwQnJlYWRjcnVtYkNvbXBvbmVudCB9IGZyb20gJy4uL2JyZWFkY3J1bWIvYXBwLmJyZWFkY3J1bWIuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0c2VsZWN0b3I6ICdtZmUtbGF5b3V0JyxcclxuXHR0ZW1wbGF0ZTogYFxyXG5cdCA8YXBwLWJyZWFkY3J1bWIgY2xhc3M9XCJ0b3BiYXItYnJlYWRjcnVtYlwiPjwvYXBwLWJyZWFkY3J1bWI+XHJcblx0XHRAaWYgKCFsb2FkaW5nKCkpIHtcclxuXHRcdFx0PHJvdXRlci1vdXRsZXQgLz5cclxuXHRcdH1cclxuXHJcblx0XHQ8cC10b2FzdCBrZXk9XCJ0b2FzdC1yb290XCI+PC9wLXRvYXN0PlxyXG5cdFx0PHAtZGlhbG9nIGtleT1cImRpYWxvZy1yb290XCI+PC9wLWRpYWxvZz5cclxuXHRcdDxwLW1lc3NhZ2VzIGtleT1cIm1lc3NhZ2VzLXJvb3RcIj48L3AtbWVzc2FnZXM+XHJcblx0XHQ8cC1jb25maXJtUG9wdXAga2V5PVwiY29uZmlybVBvcHVwLXJvb3RcIj48L3AtY29uZmlybVBvcHVwPlxyXG5cdFx0PHAtY29uZmlybURpYWxvZyBrZXk9XCJjb25maXJtRGlhbG9nLXJvb3RcIj48L3AtY29uZmlybURpYWxvZz5cclxuXHRgLFxyXG5cdGltcG9ydHM6IFtSb3V0ZXJPdXRsZXQsIENvbmZpcm1EaWFsb2dNb2R1bGUsIENvbmZpcm1Qb3B1cE1vZHVsZSwgRGlhbG9nTW9kdWxlLCBNZXNzYWdlc01vZHVsZSwgVG9hc3RNb2R1bGUsIEFwcEJyZWFkY3J1bWJDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNRkVMYXlvdXRDb21wb25lbnQge1xyXG5cdGxvYWRpbmc6IFNpZ25hbDxib29sZWFuPjtcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xyXG5cdFx0dGhpcy5sb2FkaW5nID0gdG9TaWduYWwoXHJcblx0XHR0aGlzLnJvdXRlci5ldmVudHMucGlwZShcclxuXHRcdFx0bWFwKChldmVudCkgPT4ge1xyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCB8fFxyXG5cdFx0XHRcdFx0ZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uQ2FuY2VsIHx8XHJcblx0XHRcdFx0XHRldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FcnJvciB8fFxyXG5cdFx0XHRcdFx0ZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU2tpcHBlZFxyXG5cdFx0XHRcdClcclxuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcclxuXHJcblx0XHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHRcdH0pXHJcblx0XHQpLFxyXG5cdFx0eyBpbml0aWFsVmFsdWU6IHRydWUgfVxyXG5cdCk7XHJcblx0fVxyXG5cclxufSJdfQ==
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWZlLmxheW91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvbGF5b3V0L21mZS5sYXlvdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFDTixnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGVBQWUsRUFDZixpQkFBaUIsRUFFakIsWUFBWSxFQUNaLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0IsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7O0FBbUJoRixNQUFNLE9BQU8sa0JBQWtCO0lBRzlCLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2pDLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3RCLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2IsSUFDQyxLQUFLLFlBQVksYUFBYTtnQkFDOUIsS0FBSyxZQUFZLGdCQUFnQjtnQkFDakMsS0FBSyxZQUFZLGVBQWU7Z0JBQ2hDLEtBQUssWUFBWSxpQkFBaUI7Z0JBRWxDLE9BQU8sS0FBSyxDQUFDO1lBRWQsT0FBTyxJQUFJLENBQUM7UUFDYixDQUFDLENBQUMsQ0FDRixFQUNELEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUN0QixDQUFDO0lBQ0YsQ0FBQzs4R0FwQlcsa0JBQWtCO2tHQUFsQixrQkFBa0Isc0VBZHBCOzs7Ozs7Ozs7OztFQVdULDREQUNTLFlBQVksMEpBQUUsbUJBQW1CLG9tQkFBRSxrQkFBa0IseVBBQUUsWUFBWSx1dUJBQUUsY0FBYywyUkFBRSxXQUFXLHdXQUFFLHNCQUFzQjs7MkZBRXRILGtCQUFrQjtrQkFqQjlCLFNBQVM7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxZQUFZO29CQUN0QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7O0VBV1Q7b0JBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixDQUFDO2lCQUNuSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5pbXBvcnQge1xyXG5cdE5hdmlnYXRpb25DYW5jZWwsXHJcblx0TmF2aWdhdGlvbkVuZCxcclxuXHROYXZpZ2F0aW9uRXJyb3IsXHJcblx0TmF2aWdhdGlvblNraXBwZWQsXHJcblx0Um91dGVyLFxyXG5cdFJvdXRlck91dGxldFxyXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBDb25maXJtRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jb25maXJtZGlhbG9nJztcclxuaW1wb3J0IHsgQ29uZmlybVBvcHVwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jb25maXJtcG9wdXAnO1xyXG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1lc3NhZ2VzTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9tZXNzYWdlcyc7XHJcbmltcG9ydCB7IFRvYXN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XHJcblxyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXBwQnJlYWRjcnVtYkNvbXBvbmVudCB9IGZyb20gJy4uL2JyZWFkY3J1bWIvYXBwLmJyZWFkY3J1bWIuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0c2VsZWN0b3I6ICdtZmUtbGF5b3V0JyxcclxuXHR0ZW1wbGF0ZTogYFxyXG5cdCA8YXBwLWJyZWFkY3J1bWIgY2xhc3M9XCJ0b3BiYXItYnJlYWRjcnVtYlwiPjwvYXBwLWJyZWFkY3J1bWI+XHJcblx0XHRAaWYgKCFsb2FkaW5nKCkpIHtcclxuXHRcdFx0PHJvdXRlci1vdXRsZXQgLz5cclxuXHRcdH1cclxuXHJcblx0XHQ8cC10b2FzdCBrZXk9XCJ0b2FzdC1yb290XCI+PC9wLXRvYXN0PlxyXG5cdFx0PHAtZGlhbG9nIGtleT1cImRpYWxvZy1yb290XCI+PC9wLWRpYWxvZz5cclxuXHRcdDxwLW1lc3NhZ2VzIGtleT1cIm1lc3NhZ2VzLXJvb3RcIj48L3AtbWVzc2FnZXM+XHJcblx0XHQ8cC1jb25maXJtUG9wdXAga2V5PVwiY29uZmlybVBvcHVwLXJvb3RcIj48L3AtY29uZmlybVBvcHVwPlxyXG5cdFx0PHAtY29uZmlybURpYWxvZyBrZXk9XCJjb25maXJtRGlhbG9nLXJvb3RcIj48L3AtY29uZmlybURpYWxvZz5cclxuXHRgLFxyXG5cdGltcG9ydHM6IFtSb3V0ZXJPdXRsZXQsIENvbmZpcm1EaWFsb2dNb2R1bGUsIENvbmZpcm1Qb3B1cE1vZHVsZSwgRGlhbG9nTW9kdWxlLCBNZXNzYWdlc01vZHVsZSwgVG9hc3RNb2R1bGUsIEFwcEJyZWFkY3J1bWJDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNRkVMYXlvdXRDb21wb25lbnQge1xyXG5cdGxvYWRpbmc6IFNpZ25hbDxib29sZWFuPjtcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xyXG5cdFx0dGhpcy5sb2FkaW5nID0gdG9TaWduYWwoXHJcblx0XHR0aGlzLnJvdXRlci5ldmVudHMucGlwZShcclxuXHRcdFx0bWFwKChldmVudCkgPT4ge1xyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCB8fFxyXG5cdFx0XHRcdFx0ZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uQ2FuY2VsIHx8XHJcblx0XHRcdFx0XHRldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FcnJvciB8fFxyXG5cdFx0XHRcdFx0ZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU2tpcHBlZFxyXG5cdFx0XHRcdClcclxuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcclxuXHJcblx0XHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHRcdH0pXHJcblx0XHQpLFxyXG5cdFx0eyBpbml0aWFsVmFsdWU6IHRydWUgfVxyXG5cdCk7XHJcblx0fVxyXG5cclxufSJdfQ==
@@ -267,10 +267,10 @@ export class NotificationsSidebarComponent {
267
267
  this.router.navigate(['mng/control-management/sms-email-audit']);
268
268
  this.visible = false;
269
269
  }
270
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotificationsSidebarComponent, deps: [{ token: i1.LayoutService }, { token: i2.NotificationsService }, { token: i3.TranslocoService }, { token: i4.Router }, { token: i5.KeycloakService }], target: i0.ɵɵFactoryTarget.Component }); }
271
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: NotificationsSidebarComponent, isStandalone: true, selector: "app-notifications-sidebar", ngImport: i0, template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-notifications-sidebar w-full sm:w-30rem\"\r\n\t(onShow)=\"onSidebarShow()\"\r\n\t*transloco=\"let t; read: 'notifications'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t<i class=\"pi pi-bell text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('title') }}</span>\r\n\t\t\t\t@if (unreadCount > 0) {\r\n\t\t\t\t\t<span class=\"unread-count-chip\">{{ unreadCount }}</span>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t\t<div class=\"flex align-items-center gap-2 header-actions\">\r\n\t\t\t\t<span class=\"only-unread-label\">{{ t('onlyUnread') }}</span>\r\n\t\t\t\t<aril-switch [ngModel]=\"onlyUnread()\" (ngModelChange)=\"onOnlyUnreadChange($event)\"></aril-switch>\r\n\t\t\t\t<i class=\"pi pi-ellipsis-v header-menu-icon\" (click)=\"toggleMenu($event, headerMenu)\"></i>\r\n\t\t\t\t<p-menu #headerMenu [popup]=\"true\" [model]=\"menuItems\" appendTo=\"body\"></p-menu>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"notifications-content\">\r\n\t\t@if (notifications().length > 0) {\r\n\t\t\t<div class=\"notifications-list\">\r\n\t\t\t\t<div class=\"notifications-items\">\r\n\t\t\t\t\t@for (notification of notifications(); track notification.id) {\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclass=\"notification-item\"\r\n\t\t\t\t\t\t\t[class.unread-item]=\"!notification.read\"\r\n\t\t\t\t\t\t\t[class.navigable]=\"isNavigable(notification)\"\r\n\t\t\t\t\t\t\t(click)=\"openNotification(notification)\">\r\n\t\t\t\t\t\t\t<div class=\"notification-icon\" [ngClass]=\"getNotificationIconClass(notification)\">\r\n\t\t\t\t\t\t\t\t<fa-icon [icon]=\"getNotificationIcon(notification)\" />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"item-body\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t<p class=\"item-title\">{{ getNotificationTitle(notification) }}</p>\r\n\t\t\t\t\t\t\t\t\t<span class=\"item-time\">{{ formatNotificationDate(notification.sendingDate) }}</span>\r\n\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"item-actions\">\r\n\t\t\t\t\t\t\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faCircle\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"unread-dot\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('markAsRead')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"markNotificationAsRead(notification); $event.stopPropagation()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mark-read-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('markAsRead')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"markNotificationAsRead(notification); $event.stopPropagation()\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-check\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t@if (getNotificationContent(notification)) {\r\n\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.EMAIL) {\r\n\t\t\t\t\t\t\t\t\t\t<div [innerHTML]=\"notification.content | safe: 'html'\" class=\"item-preview html-preview\"></div>\r\n\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t<p class=\"item-preview\">{{ getNotificationContent(notification) }}</p>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t@if (notification.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM) {\r\n\t\t\t\t\t\t\t\t\t<span class=\"nav-chip\">{{ t('goToTaskDetail') }} <i class=\"pi pi-arrow-right\"></i></span>\r\n\t\t\t\t\t\t\t\t} @else if (notification.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB) {\r\n\t\t\t\t\t\t\t\t\t<span class=\"nav-chip\">{{ t('goToBulkOperations') }} <i class=\"pi pi-arrow-right\"></i></span>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t\t@if (remainingCount() > 0) {\r\n\t\t\t\t\t\t<div class=\"show-more\">\r\n\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t[label]=\"t('showMore', { count: remainingCount() })\"\r\n\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\t\t[loading]=\"loading\"\r\n\t\t\t\t\t\t\t\t(clickEvent)=\"showMore()\">\r\n\t\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t} @else if (!loading) {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-bell empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noNotifications') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('noNotificationsDescription') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-notifications-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem 1.5rem}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header .p-sidebar-close{color:var(--primary-color-text)}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header .p-sidebar-close:enabled:hover{background:#ffffff26;color:var(--primary-color-text)}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch{transform:scale(.8)}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch .p-inputswitch-slider{background:#ffffff4d}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch.p-inputswitch-checked .p-inputswitch-slider{background:var(--green-500)}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch.p-inputswitch-checked:not(.p-disabled):hover .p-inputswitch-slider{background:var(--green-600)}:host ::ng-deep .layout-notifications-sidebar .header-actions .only-unread-label{font-size:.78rem;font-weight:500}:host ::ng-deep .item-preview.html-preview *{font-family:inherit!important;font-size:inherit!important;font-weight:inherit!important;font-style:inherit!important;color:inherit!important;line-height:inherit!important;letter-spacing:inherit!important;text-align:left!important;margin:0!important;padding:0!important;border:none!important;background:transparent!important;display:inline!important}:host ::ng-deep .item-preview.html-preview p:after,:host ::ng-deep .item-preview.html-preview div:after,:host ::ng-deep .item-preview.html-preview li:after{content:\" \"}:host ::ng-deep .item-preview.html-preview img,:host ::ng-deep .item-preview.html-preview table,:host ::ng-deep .item-preview.html-preview hr,:host ::ng-deep .item-preview.html-preview br{display:none!important}.notifications-content{display:flex;flex-direction:column;height:100%;background:var(--surface-ground)}.unread-count-chip{background:#ffffff40;border-radius:999px;font-size:.72rem!important;font-weight:600!important;padding:.1rem .55rem}.header-menu-icon{cursor:pointer;font-size:1.1rem;padding:.25rem;color:var(--primary-color-text);border-radius:6px;transition:background-color .15s ease}.header-menu-icon:hover{background:#ffffff26}.notifications-list{flex:1;overflow-y:auto}.notifications-items{display:flex;flex-direction:column;gap:.625rem;padding:.75rem}.notification-item{display:flex;gap:.75rem;padding:.875rem 1rem .875rem calc(1rem + 4px);background:var(--surface-card);border:1px solid var(--surface-border);border-radius:8px;transition:background-color .2s ease,border-color .2s ease}.notification-item:hover{background:var(--surface-hover)}.notification-item:hover .unread-dot{display:none}.notification-item:hover .mark-read-action{display:flex}.notification-item.navigable{cursor:pointer}.notification-item.unread-item{border-left-width:5px;border-left-color:var(--primary-color);padding-left:1rem}.notification-item.unread-item .item-title{font-weight:600;color:var(--text-color)}.notification-icon{width:2.25rem;height:2.25rem;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}.notification-icon fa-icon{font-size:.9rem}.notification-icon.todo{background:var(--purple-100);color:var(--purple-600)}.notification-icon.batch{background:var(--orange-100);color:var(--orange-600)}.notification-icon.sms{background:var(--green-100);color:var(--green-600)}.notification-icon.email-unread{background:var(--blue-100);color:var(--blue-600)}.notification-icon.email-read{background:var(--surface-200);color:var(--text-color-secondary)}.item-body{flex:1;min-width:0}.item-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.3rem;min-height:1.5rem}.item-title{flex:1;min-width:0;margin:0;font-size:.875rem;font-weight:500;color:var(--text-color-secondary);line-height:1.4;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.item-time{font-size:.72rem;color:var(--text-color-secondary);white-space:nowrap}.item-actions{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;flex-shrink:0}.unread-dot{color:var(--primary-color);font-size:.5rem;cursor:pointer;opacity:.85}.unread-dot:hover{opacity:1}.mark-read-action{display:none;width:1.5rem;height:1.5rem;border-radius:6px;border:1px solid var(--surface-border);background:var(--surface-card);color:var(--text-color-secondary);align-items:center;justify-content:center;cursor:pointer;padding:0}.mark-read-action:hover{color:var(--primary-color);border-color:var(--primary-color)}.mark-read-action i{font-size:.7rem}.item-preview{margin:0;font-size:.8rem;color:var(--text-color-secondary);line-height:1.5;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;word-break:break-word;white-space:normal}.nav-chip{display:inline-flex;align-items:center;gap:.3rem;margin-top:.4rem;font-size:.75rem;font-weight:600;color:var(--primary-color)}.nav-chip i{font-size:.65rem}.notification-item.navigable:hover .nav-chip{text-decoration:underline}.show-more{display:flex;justify-content:center;padding:.25rem 0 .5rem}.empty-state{display:flex;align-items:center;justify-content:center;flex:1;padding:2rem}.empty-state .empty-content{text-align:center}.empty-state .empty-content .empty-icon{font-size:4rem;color:var(--text-color-secondary);opacity:.3;margin-bottom:1rem}.empty-state .empty-content .empty-title{font-size:1.25rem;font-weight:600;color:var(--text-color);margin-bottom:.5rem}.empty-state .empty-content .empty-message{color:var(--text-color-secondary);margin:0}@media (max-width: 768px){.layout-notifications-sidebar ::ng-deep .p-sidebar{width:100%!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i8.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i9.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: MenuModule }, { kind: "component", type: i10.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "directive", type: i11.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "component", type: SwitchComponent, selector: "aril-switch[ngModel], aril-switch[formControl], aril-switch[formControlName]", inputs: ["tabindex"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i3.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i12.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "pipe", type: SafePipe, name: "safe" }] }); }
270
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NotificationsSidebarComponent, deps: [{ token: i1.LayoutService }, { token: i2.NotificationsService }, { token: i3.TranslocoService }, { token: i4.Router }, { token: i5.KeycloakService }], target: i0.ɵɵFactoryTarget.Component }); }
271
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: NotificationsSidebarComponent, isStandalone: true, selector: "app-notifications-sidebar", ngImport: i0, template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-notifications-sidebar w-full sm:w-30rem\"\r\n\t(onShow)=\"onSidebarShow()\"\r\n\t*transloco=\"let t; read: 'notifications'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t<i class=\"pi pi-bell text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('title') }}</span>\r\n\t\t\t\t@if (unreadCount > 0) {\r\n\t\t\t\t\t<span class=\"unread-count-chip\">{{ unreadCount }}</span>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t\t<div class=\"flex align-items-center gap-2 header-actions\">\r\n\t\t\t\t<span class=\"only-unread-label\">{{ t('onlyUnread') }}</span>\r\n\t\t\t\t<aril-switch [ngModel]=\"onlyUnread()\" (ngModelChange)=\"onOnlyUnreadChange($event)\"></aril-switch>\r\n\t\t\t\t<i class=\"pi pi-ellipsis-v header-menu-icon\" (click)=\"toggleMenu($event, headerMenu)\"></i>\r\n\t\t\t\t<p-menu #headerMenu [popup]=\"true\" [model]=\"menuItems\" appendTo=\"body\"></p-menu>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"notifications-content\">\r\n\t\t@if (notifications().length > 0) {\r\n\t\t\t<div class=\"notifications-list\">\r\n\t\t\t\t<div class=\"notifications-items\">\r\n\t\t\t\t\t@for (notification of notifications(); track notification.id) {\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclass=\"notification-item\"\r\n\t\t\t\t\t\t\t[class.unread-item]=\"!notification.read\"\r\n\t\t\t\t\t\t\t[class.navigable]=\"isNavigable(notification)\"\r\n\t\t\t\t\t\t\t(click)=\"openNotification(notification)\">\r\n\t\t\t\t\t\t\t<div class=\"notification-icon\" [ngClass]=\"getNotificationIconClass(notification)\">\r\n\t\t\t\t\t\t\t\t<fa-icon [icon]=\"getNotificationIcon(notification)\" />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"item-body\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t<p class=\"item-title\">{{ getNotificationTitle(notification) }}</p>\r\n\t\t\t\t\t\t\t\t\t<span class=\"item-time\">{{ formatNotificationDate(notification.sendingDate) }}</span>\r\n\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"item-actions\">\r\n\t\t\t\t\t\t\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faCircle\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"unread-dot\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('markAsRead')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"markNotificationAsRead(notification); $event.stopPropagation()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mark-read-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('markAsRead')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"markNotificationAsRead(notification); $event.stopPropagation()\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-check\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t@if (getNotificationContent(notification)) {\r\n\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.EMAIL) {\r\n\t\t\t\t\t\t\t\t\t\t<div [innerHTML]=\"notification.content | safe: 'html'\" class=\"item-preview html-preview\"></div>\r\n\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t<p class=\"item-preview\">{{ getNotificationContent(notification) }}</p>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t@if (notification.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM) {\r\n\t\t\t\t\t\t\t\t\t<span class=\"nav-chip\">{{ t('goToTaskDetail') }} <i class=\"pi pi-arrow-right\"></i></span>\r\n\t\t\t\t\t\t\t\t} @else if (notification.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB) {\r\n\t\t\t\t\t\t\t\t\t<span class=\"nav-chip\">{{ t('goToBulkOperations') }} <i class=\"pi pi-arrow-right\"></i></span>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t\t@if (remainingCount() > 0) {\r\n\t\t\t\t\t\t<div class=\"show-more\">\r\n\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t[label]=\"t('showMore', { count: remainingCount() })\"\r\n\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\t\t[loading]=\"loading\"\r\n\t\t\t\t\t\t\t\t(clickEvent)=\"showMore()\">\r\n\t\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t} @else if (!loading) {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-bell empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noNotifications') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('noNotificationsDescription') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-notifications-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem 1.5rem}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header .p-sidebar-close{color:var(--primary-color-text)}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header .p-sidebar-close:enabled:hover{background:#ffffff26;color:var(--primary-color-text)}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch{transform:scale(.8)}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch .p-inputswitch-slider{background:#ffffff4d}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch.p-inputswitch-checked .p-inputswitch-slider{background:var(--green-500)}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch.p-inputswitch-checked:not(.p-disabled):hover .p-inputswitch-slider{background:var(--green-600)}:host ::ng-deep .layout-notifications-sidebar .header-actions .only-unread-label{font-size:.78rem;font-weight:500}:host ::ng-deep .item-preview.html-preview *{font-family:inherit!important;font-size:inherit!important;font-weight:inherit!important;font-style:inherit!important;color:inherit!important;line-height:inherit!important;letter-spacing:inherit!important;text-align:left!important;margin:0!important;padding:0!important;border:none!important;background:transparent!important;display:inline!important}:host ::ng-deep .item-preview.html-preview p:after,:host ::ng-deep .item-preview.html-preview div:after,:host ::ng-deep .item-preview.html-preview li:after{content:\" \"}:host ::ng-deep .item-preview.html-preview img,:host ::ng-deep .item-preview.html-preview table,:host ::ng-deep .item-preview.html-preview hr,:host ::ng-deep .item-preview.html-preview br{display:none!important}.notifications-content{display:flex;flex-direction:column;height:100%;background:var(--surface-ground)}.unread-count-chip{background:#ffffff40;border-radius:999px;font-size:.72rem!important;font-weight:600!important;padding:.1rem .55rem}.header-menu-icon{cursor:pointer;font-size:1.1rem;padding:.25rem;color:var(--primary-color-text);border-radius:6px;transition:background-color .15s ease}.header-menu-icon:hover{background:#ffffff26}.notifications-list{flex:1;overflow-y:auto}.notifications-items{display:flex;flex-direction:column;gap:.625rem;padding:.75rem}.notification-item{display:flex;gap:.75rem;padding:.875rem 1rem .875rem calc(1rem + 4px);background:var(--surface-card);border:1px solid var(--surface-border);border-radius:8px;transition:background-color .2s ease,border-color .2s ease}.notification-item:hover{background:var(--surface-hover)}.notification-item:hover .unread-dot{display:none}.notification-item:hover .mark-read-action{display:flex}.notification-item.navigable{cursor:pointer}.notification-item.unread-item{border-left-width:5px;border-left-color:var(--primary-color);padding-left:1rem}.notification-item.unread-item .item-title{font-weight:600;color:var(--text-color)}.notification-icon{width:2.25rem;height:2.25rem;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}.notification-icon fa-icon{font-size:.9rem}.notification-icon.todo{background:var(--purple-100);color:var(--purple-600)}.notification-icon.batch{background:var(--orange-100);color:var(--orange-600)}.notification-icon.sms{background:var(--green-100);color:var(--green-600)}.notification-icon.email-unread{background:var(--blue-100);color:var(--blue-600)}.notification-icon.email-read{background:var(--surface-200);color:var(--text-color-secondary)}.item-body{flex:1;min-width:0}.item-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.3rem;min-height:1.5rem}.item-title{flex:1;min-width:0;margin:0;font-size:.875rem;font-weight:500;color:var(--text-color-secondary);line-height:1.4;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.item-time{font-size:.72rem;color:var(--text-color-secondary);white-space:nowrap}.item-actions{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;flex-shrink:0}.unread-dot{color:var(--primary-color);font-size:.5rem;cursor:pointer;opacity:.85}.unread-dot:hover{opacity:1}.mark-read-action{display:none;width:1.5rem;height:1.5rem;border-radius:6px;border:1px solid var(--surface-border);background:var(--surface-card);color:var(--text-color-secondary);align-items:center;justify-content:center;cursor:pointer;padding:0}.mark-read-action:hover{color:var(--primary-color);border-color:var(--primary-color)}.mark-read-action i{font-size:.7rem}.item-preview{margin:0;font-size:.8rem;color:var(--text-color-secondary);line-height:1.5;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;word-break:break-word;white-space:normal}.nav-chip{display:inline-flex;align-items:center;gap:.3rem;margin-top:.4rem;font-size:.75rem;font-weight:600;color:var(--primary-color)}.nav-chip i{font-size:.65rem}.notification-item.navigable:hover .nav-chip{text-decoration:underline}.show-more{display:flex;justify-content:center;padding:.25rem 0 .5rem}.empty-state{display:flex;align-items:center;justify-content:center;flex:1;padding:2rem}.empty-state .empty-content{text-align:center}.empty-state .empty-content .empty-icon{font-size:4rem;color:var(--text-color-secondary);opacity:.3;margin-bottom:1rem}.empty-state .empty-content .empty-title{font-size:1.25rem;font-weight:600;color:var(--text-color);margin-bottom:.5rem}.empty-state .empty-content .empty-message{color:var(--text-color-secondary);margin:0}@media (max-width: 768px){.layout-notifications-sidebar ::ng-deep .p-sidebar{width:100%!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i8.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i9.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: MenuModule }, { kind: "component", type: i10.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "directive", type: i11.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "component", type: SwitchComponent, selector: "aril-switch[ngModel], aril-switch[formControl], aril-switch[formControlName]", inputs: ["tabindex"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i3.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i12.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "pipe", type: SafePipe, name: "safe" }] }); }
272
272
  }
273
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotificationsSidebarComponent, decorators: [{
273
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NotificationsSidebarComponent, decorators: [{
274
274
  type: Component,
275
275
  args: [{ standalone: true, selector: 'app-notifications-sidebar', imports: [
276
276
  CommonModule,
@@ -285,4 +285,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
285
285
  SafePipe
286
286
  ], template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-notifications-sidebar w-full sm:w-30rem\"\r\n\t(onShow)=\"onSidebarShow()\"\r\n\t*transloco=\"let t; read: 'notifications'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t<i class=\"pi pi-bell text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('title') }}</span>\r\n\t\t\t\t@if (unreadCount > 0) {\r\n\t\t\t\t\t<span class=\"unread-count-chip\">{{ unreadCount }}</span>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t\t<div class=\"flex align-items-center gap-2 header-actions\">\r\n\t\t\t\t<span class=\"only-unread-label\">{{ t('onlyUnread') }}</span>\r\n\t\t\t\t<aril-switch [ngModel]=\"onlyUnread()\" (ngModelChange)=\"onOnlyUnreadChange($event)\"></aril-switch>\r\n\t\t\t\t<i class=\"pi pi-ellipsis-v header-menu-icon\" (click)=\"toggleMenu($event, headerMenu)\"></i>\r\n\t\t\t\t<p-menu #headerMenu [popup]=\"true\" [model]=\"menuItems\" appendTo=\"body\"></p-menu>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"notifications-content\">\r\n\t\t@if (notifications().length > 0) {\r\n\t\t\t<div class=\"notifications-list\">\r\n\t\t\t\t<div class=\"notifications-items\">\r\n\t\t\t\t\t@for (notification of notifications(); track notification.id) {\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclass=\"notification-item\"\r\n\t\t\t\t\t\t\t[class.unread-item]=\"!notification.read\"\r\n\t\t\t\t\t\t\t[class.navigable]=\"isNavigable(notification)\"\r\n\t\t\t\t\t\t\t(click)=\"openNotification(notification)\">\r\n\t\t\t\t\t\t\t<div class=\"notification-icon\" [ngClass]=\"getNotificationIconClass(notification)\">\r\n\t\t\t\t\t\t\t\t<fa-icon [icon]=\"getNotificationIcon(notification)\" />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"item-body\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t<p class=\"item-title\">{{ getNotificationTitle(notification) }}</p>\r\n\t\t\t\t\t\t\t\t\t<span class=\"item-time\">{{ formatNotificationDate(notification.sendingDate) }}</span>\r\n\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"item-actions\">\r\n\t\t\t\t\t\t\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faCircle\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"unread-dot\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('markAsRead')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"markNotificationAsRead(notification); $event.stopPropagation()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mark-read-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('markAsRead')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"markNotificationAsRead(notification); $event.stopPropagation()\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-check\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t@if (getNotificationContent(notification)) {\r\n\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.EMAIL) {\r\n\t\t\t\t\t\t\t\t\t\t<div [innerHTML]=\"notification.content | safe: 'html'\" class=\"item-preview html-preview\"></div>\r\n\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t<p class=\"item-preview\">{{ getNotificationContent(notification) }}</p>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t@if (notification.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM) {\r\n\t\t\t\t\t\t\t\t\t<span class=\"nav-chip\">{{ t('goToTaskDetail') }} <i class=\"pi pi-arrow-right\"></i></span>\r\n\t\t\t\t\t\t\t\t} @else if (notification.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB) {\r\n\t\t\t\t\t\t\t\t\t<span class=\"nav-chip\">{{ t('goToBulkOperations') }} <i class=\"pi pi-arrow-right\"></i></span>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t\t@if (remainingCount() > 0) {\r\n\t\t\t\t\t\t<div class=\"show-more\">\r\n\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t[label]=\"t('showMore', { count: remainingCount() })\"\r\n\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\t\t[loading]=\"loading\"\r\n\t\t\t\t\t\t\t\t(clickEvent)=\"showMore()\">\r\n\t\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t} @else if (!loading) {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-bell empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noNotifications') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('noNotificationsDescription') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-notifications-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem 1.5rem}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header .p-sidebar-close{color:var(--primary-color-text)}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header .p-sidebar-close:enabled:hover{background:#ffffff26;color:var(--primary-color-text)}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch{transform:scale(.8)}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch .p-inputswitch-slider{background:#ffffff4d}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch.p-inputswitch-checked .p-inputswitch-slider{background:var(--green-500)}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch.p-inputswitch-checked:not(.p-disabled):hover .p-inputswitch-slider{background:var(--green-600)}:host ::ng-deep .layout-notifications-sidebar .header-actions .only-unread-label{font-size:.78rem;font-weight:500}:host ::ng-deep .item-preview.html-preview *{font-family:inherit!important;font-size:inherit!important;font-weight:inherit!important;font-style:inherit!important;color:inherit!important;line-height:inherit!important;letter-spacing:inherit!important;text-align:left!important;margin:0!important;padding:0!important;border:none!important;background:transparent!important;display:inline!important}:host ::ng-deep .item-preview.html-preview p:after,:host ::ng-deep .item-preview.html-preview div:after,:host ::ng-deep .item-preview.html-preview li:after{content:\" \"}:host ::ng-deep .item-preview.html-preview img,:host ::ng-deep .item-preview.html-preview table,:host ::ng-deep .item-preview.html-preview hr,:host ::ng-deep .item-preview.html-preview br{display:none!important}.notifications-content{display:flex;flex-direction:column;height:100%;background:var(--surface-ground)}.unread-count-chip{background:#ffffff40;border-radius:999px;font-size:.72rem!important;font-weight:600!important;padding:.1rem .55rem}.header-menu-icon{cursor:pointer;font-size:1.1rem;padding:.25rem;color:var(--primary-color-text);border-radius:6px;transition:background-color .15s ease}.header-menu-icon:hover{background:#ffffff26}.notifications-list{flex:1;overflow-y:auto}.notifications-items{display:flex;flex-direction:column;gap:.625rem;padding:.75rem}.notification-item{display:flex;gap:.75rem;padding:.875rem 1rem .875rem calc(1rem + 4px);background:var(--surface-card);border:1px solid var(--surface-border);border-radius:8px;transition:background-color .2s ease,border-color .2s ease}.notification-item:hover{background:var(--surface-hover)}.notification-item:hover .unread-dot{display:none}.notification-item:hover .mark-read-action{display:flex}.notification-item.navigable{cursor:pointer}.notification-item.unread-item{border-left-width:5px;border-left-color:var(--primary-color);padding-left:1rem}.notification-item.unread-item .item-title{font-weight:600;color:var(--text-color)}.notification-icon{width:2.25rem;height:2.25rem;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}.notification-icon fa-icon{font-size:.9rem}.notification-icon.todo{background:var(--purple-100);color:var(--purple-600)}.notification-icon.batch{background:var(--orange-100);color:var(--orange-600)}.notification-icon.sms{background:var(--green-100);color:var(--green-600)}.notification-icon.email-unread{background:var(--blue-100);color:var(--blue-600)}.notification-icon.email-read{background:var(--surface-200);color:var(--text-color-secondary)}.item-body{flex:1;min-width:0}.item-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.3rem;min-height:1.5rem}.item-title{flex:1;min-width:0;margin:0;font-size:.875rem;font-weight:500;color:var(--text-color-secondary);line-height:1.4;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.item-time{font-size:.72rem;color:var(--text-color-secondary);white-space:nowrap}.item-actions{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;flex-shrink:0}.unread-dot{color:var(--primary-color);font-size:.5rem;cursor:pointer;opacity:.85}.unread-dot:hover{opacity:1}.mark-read-action{display:none;width:1.5rem;height:1.5rem;border-radius:6px;border:1px solid var(--surface-border);background:var(--surface-card);color:var(--text-color-secondary);align-items:center;justify-content:center;cursor:pointer;padding:0}.mark-read-action:hover{color:var(--primary-color);border-color:var(--primary-color)}.mark-read-action i{font-size:.7rem}.item-preview{margin:0;font-size:.8rem;color:var(--text-color-secondary);line-height:1.5;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;word-break:break-word;white-space:normal}.nav-chip{display:inline-flex;align-items:center;gap:.3rem;margin-top:.4rem;font-size:.75rem;font-weight:600;color:var(--primary-color)}.nav-chip i{font-size:.65rem}.notification-item.navigable:hover .nav-chip{text-decoration:underline}.show-more{display:flex;justify-content:center;padding:.25rem 0 .5rem}.empty-state{display:flex;align-items:center;justify-content:center;flex:1;padding:2rem}.empty-state .empty-content{text-align:center}.empty-state .empty-content .empty-icon{font-size:4rem;color:var(--text-color-secondary);opacity:.3;margin-bottom:1rem}.empty-state .empty-content .empty-title{font-size:1.25rem;font-weight:600;color:var(--text-color);margin-bottom:.5rem}.empty-state .empty-content .empty-message{color:var(--text-color-secondary);margin:0}@media (max-width: 768px){.layout-notifications-sidebar ::ng-deep .p-sidebar{width:100%!important}}\n"] }]
287
287
  }], ctorParameters: () => [{ type: i1.LayoutService }, { type: i2.NotificationsService }, { type: i3.TranslocoService }, { type: i4.Router }, { type: i5.KeycloakService }] });
288
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy1zaWRlYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdGhlbWUvbGF5b3V0L2FwcC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLXNpZGViYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJN0MsT0FBTyxFQUFRLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR2hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFFdEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9B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LE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRW5ELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxRSxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUUxRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUU3QyxJQUFJLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUN0RSxDQUFDO2FBQU0sSUFBSSxXQUFXLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLCtCQUErQixFQUFFLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDakcsQ0FBQzthQUFNLElBQUksU0FBUyxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQzNCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyw2QkFBNkIsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzdGLENBQUM7YUFBTSxJQUFJLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsNEJBQTRCLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMzRixDQUFDO2FBQU0sSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLDZCQUE2QixFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDN0YsQ0FBQzthQUFNLENBQUM7WUFDUCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsOEJBQThCLEVBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUMvRixDQUFDO0lBQ0YsQ0FBQztJQUVELDBCQUEwQjtRQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLHdDQUF3QyxDQUFDLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDOytHQTVTVyw2QkFBNkI7bUdBQTdCLDZCQUE2QixxRkM3QzFDLHE4SkFzR0Esc3pMRHZFRSxZQUFZLDRIQUNaLFdBQVcsOFZBQ1gsYUFBYSxtZEFDYixVQUFVLG9xQkFDVixlQUFlLDhOQUNmLGVBQWUsOElBQ2YsZUFBZSxnT0FDZixhQUFhLDhCQUNiLGlCQUFpQiwrUkFDakIsUUFBUTs7NEZBS0csNkJBQTZCO2tCQWxCekMsU0FBUztpQ0FDRyxJQUFJLFlBQ04sMkJBQTJCLFdBQzVCO3dCQUNSLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxhQUFhO3dCQUNiLFVBQVU7d0JBQ1YsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLFFBQVE7cUJBQ1IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgY29tcHV0ZWQsIGVmZmVjdCwgc2lnbmFsLCB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IE1lbnUsIE1lbnVNb2R1bGUgfSBmcm9tICdwcmltZW5nL21lbnUnO1xyXG5pbXBvcnQgeyBTaWRlYmFyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9zaWRlYmFyJztcclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XHJcblxyXG5pbXBvcnQgeyBJY29uUHJvcCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mb250YXdlc29tZS1zdmctY29yZSc7XHJcbmltcG9ydCB7IEZvbnRBd2Vzb21lTW9kdWxlIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xyXG5pbXBvcnQgeyBUcmFuc2xvY29Nb2R1bGUsIFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcbmltcG9ydCB7IEtleWNsb2FrU2VydmljZSB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBtYXAsIG1lcmdlTWFwLCBTdWJqZWN0LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvYnV0dG9uJztcclxuaW1wb3J0IHsgU3dpdGNoQ29tcG9uZW50IH0gZnJvbSAnYXJpbC91aS9zd2l0Y2gnO1xyXG5pbXBvcnQgeyByZWd1bGFySWNvbnMsIHNvbGlkSWNvbnMgfSBmcm9tICdhcmlsL3V0aWwvbGliJztcclxuaW1wb3J0IHsgU2FmZVBpcGUgfSBmcm9tICdhcmlsL3V0aWwvcGlwZXMnO1xyXG5cclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXBwLmxheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWN0aXZpdHlUeXBlc0VudW0sIERldGFpbE5vdGlmaWNhdGlvblR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vc2VydmljZS9pbnRlcmZhY2VzL2VudW0nO1xyXG5pbXBvcnQgeyBTbXNFbWFpbEF1ZGl0UmVzcG9uc2VEVE8gfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2ludGVyZmFjZXMvaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9ub3RpZmljYXRpb25zLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FwcC1ub3RpZmljYXRpb25zLXNpZGViYXInLFxyXG5cdGltcG9ydHM6IFtcclxuXHRcdENvbW1vbk1vZHVsZSxcclxuXHRcdEZvcm1zTW9kdWxlLFxyXG5cdFx0U2lkZWJhck1vZHVsZSxcclxuXHRcdE1lbnVNb2R1bGUsXHJcblx0XHRCdXR0b25Db21wb25lbnQsXHJcblx0XHRTd2l0Y2hDb21wb25lbnQsXHJcblx0XHRUcmFuc2xvY29Nb2R1bGUsXHJcblx0XHRUb29sdGlwTW9kdWxlLFxyXG5cdFx0Rm9udEF3ZXNvbWVNb2R1bGUsXHJcblx0XHRTYWZlUGlwZVxyXG5cdF0sXHJcblx0dGVtcGxhdGVVcmw6ICcuL25vdGlmaWNhdGlvbnMtc2lkZWJhci5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vbm90aWZpY2F0aW9ucy1zaWRlYmFyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbnNTaWRlYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHRwcml2YXRlIHJlYWRvbmx5IHBhZ2VTaXplID0gMTA7XHJcblxyXG5cdG5vdGlmaWNhdGlvbnMgPSBzaWduYWw8U21zRW1haWxBdWRpdFJlc3BvbnNlRFRPW10+KFtdKTtcclxuXHR0b3RhbFJlY29yZHMgPSBzaWduYWwoMCk7XHJcblx0b25seVVucmVhZCA9IHNpZ25hbCh0cnVlKTtcclxuXHRwYWdlTnVtYmVyID0gc2lnbmFsKDEpO1xyXG5cclxuXHRyZW1haW5pbmdDb3VudCA9IGNvbXB1dGVkKCgpID0+IE1hdGgubWF4KHRoaXMudG90YWxSZWNvcmRzKCkgLSB0aGlzLm5vdGlmaWNhdGlvbnMoKS5sZW5ndGgsIDApKTtcclxuXHJcblx0bWVudUl0ZW1zOiBNZW51SXRlbVtdID0gW107XHJcblxyXG5cdEFjdGl2aXR5VHlwZXNFbnVtID0gQWN0aXZpdHlUeXBlc0VudW07XHJcblx0RGV0YWlsTm90aWZpY2F0aW9uVHlwZUVudW0gPSBEZXRhaWxOb3RpZmljYXRpb25UeXBlRW51bTtcclxuXHJcblx0cmVndWxhckljb25zID0gcmVndWxhckljb25zO1xyXG5cdHNvbGlkSWNvbnMgPSBzb2xpZEljb25zO1xyXG5cclxuXHRvbmVNb250aEFnbyA9IG5ldyBEYXRlKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gMzAgKiAyNCAqIDYwICogNjAgKiAxMDAwKTtcclxuXHJcblx0cHJpdmF0ZSBzdWJqZWN0cyA9IHtcclxuXHRcdG1hcmtBc1JlYWQ6IG5ldyBTdWJqZWN0PHN0cmluZz4oKSxcclxuXHRcdG1hcmtBbGxBc1JlYWQ6IG5ldyBTdWJqZWN0PHZvaWQ+KCksXHJcblx0XHRsb2FkTm90aWZpY2F0aW9uczogbmV3IFN1YmplY3Q8dm9pZD4oKVxyXG5cdH07XHJcblxyXG5cdG1hcmtBc1JlYWRTZXJ2aWNlID0gdG9TaWduYWwoXHJcblx0XHR0aGlzLnN1YmplY3RzLm1hcmtBc1JlYWQucGlwZShcclxuXHRcdFx0bWVyZ2VNYXAoKGlkKSA9PiB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLm1hcmtBc1JlYWROb3RpZmljYXRpb24oaWQpLnBpcGUobWFwKChyZXN1bHQpID0+ICh7IHJlc3VsdCwgaWQgfSkpKSlcclxuXHRcdClcclxuXHQpO1xyXG5cclxuXHRtYXJrQWxsQXNSZWFkU2VydmljZSA9IHRvU2lnbmFsKFxyXG5cdFx0dGhpcy5zdWJqZWN0cy5tYXJrQWxsQXNSZWFkLnBpcGUoXHJcblx0XHRcdHN3aXRjaE1hcCgoKSA9PlxyXG5cdFx0XHRcdHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UubWFya0FsbEFzUmVhZE5vdGlmaWNhdGlvbih7XHJcblx0XHRcdFx0XHR0b0xpc3Q6IFt0aGlzLmdldFVzZXJNYWlsLCAuLi50aGlzLmdldFVzZXJQaG9uZXNdLFxyXG5cdFx0XHRcdFx0ZW5kRGF0ZTogbmV3IERhdGUoKS5kYXRlVG9Mb25nKCd0aW1lJykgfHwgMFxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdClcclxuXHRcdClcclxuXHQpO1xyXG5cclxuXHRsb2FkTm90aWZpY2F0aW9uc1NlcnZpY2UgPSB0b1NpZ25hbChcclxuXHRcdHRoaXMuc3ViamVjdHMubG9hZE5vdGlmaWNhdGlvbnMucGlwZShcclxuXHRcdFx0c3dpdGNoTWFwKCgpID0+XHJcblx0XHRcdFx0dGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5nZXROb3RpZmljYXRpb25zKHtcclxuXHRcdFx0XHRcdHBhZ2VyOiB7XHJcblx0XHRcdFx0XHRcdHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLFxyXG5cdFx0XHRcdFx0XHRwYWdlTnVtYmVyOiB0aGlzLnBhZ2VOdW1iZXIoKVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdHN0YXJ0RGF0ZTogdGhpcy5vbmVNb250aEFnby5kYXRlVG9Mb25nKCd0aW1lJykgfHwgMCxcclxuXHRcdFx0XHRcdGVuZERhdGU6IG5ldyBEYXRlKCkuZGF0ZVRvTG9uZygndGltZScpIHx8IDAsXHJcblx0XHRcdFx0XHQuLi4odGhpcy5vbmx5VW5yZWFkKCkgPyB7IHJlYWQ6IGZhbHNlIH0gOiB7fSksXHJcblx0XHRcdFx0XHR0b0xpc3Q6IFt0aGlzLmdldFVzZXJNYWlsLCAuLi50aGlzLmdldFVzZXJQaG9uZXNdXHJcblx0XHRcdFx0fSlcclxuXHRcdFx0KVxyXG5cdFx0KVxyXG5cdCk7XHJcblxyXG5cdGdldCBnZXRVc2VyUGhvbmVzKCk6IHN0cmluZ1tdIHtcclxuXHRcdGNvbnN0IHBob25lcyA9IHRoaXMua2V5Y2xvYWsuZ2V0S2V5Y2xvYWtJbnN0YW5jZSgpLnByb2ZpbGU/LmF0dHJpYnV0ZXM/LlsncGhvbmUnXTtcclxuXHRcdGlmIChwaG9uZXMgJiYgQXJyYXkuaXNBcnJheShwaG9uZXMpKSB7XHJcblx0XHRcdHJldHVybiBwaG9uZXM7XHJcblx0XHR9IGVsc2UgaWYgKHBob25lcyAmJiB0eXBlb2YgcGhvbmVzID09PSAnc3RyaW5nJykge1xyXG5cdFx0XHRyZXR1cm4gW3Bob25lc107XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gW107XHJcblx0fVxyXG5cclxuXHRnZXQgZ2V0VXNlck1haWwoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5rZXljbG9hay5nZXRLZXljbG9ha0luc3RhbmNlKCkucHJvZmlsZT8uZW1haWwgYXMgc3RyaW5nO1xyXG5cdH1cclxuXHJcblx0Z2V0IHVucmVhZENvdW50KCk6IG51bWJlciB7XHJcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLmdldFVucmVhZE5vdGlmaWNhdGlvbkNvdW50KCk7XHJcblx0fVxyXG5cclxuXHRnZXQgbG9hZGluZygpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiAhIXRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2Uuc3RhdGVzLmdldE5vdGlmaWNhdGlvbnM/LndhaXRpbmdGb3JSZXNwb25zZTtcclxuXHR9XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHVibGljIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IG5vdGlmaWNhdGlvbnNTZXJ2aWNlOiBOb3RpZmljYXRpb25zU2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IGtleWNsb2FrOiBLZXljbG9ha1NlcnZpY2VcclxuXHQpIHtcclxuXHRcdHRoaXMuaW5pdGlhbGl6ZUVmZmVjdHMoKTtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5zdWJqZWN0cy5sb2FkTm90aWZpY2F0aW9ucy5uZXh0KCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGluaXRpYWxpemVFZmZlY3RzKCk6IHZvaWQge1xyXG5cdFx0ZWZmZWN0KFxyXG5cdFx0XHQoKSA9PiB7XHJcblx0XHRcdFx0Y29uc3Qgc2VydmljZSA9IHRoaXMubG9hZE5vdGlmaWNhdGlvbnNTZXJ2aWNlKCk7XHJcblx0XHRcdFx0aWYgKHNlcnZpY2U/LnJlc3BvbnNlKSB7XHJcblx0XHRcdFx0XHRjb25zdCByZXN1bHQgPSBzZXJ2aWNlLnJlc3BvbnNlLnJlc3VsdCB8fCBbXTtcclxuXHRcdFx0XHRcdGNvbnN0IGlzRmlyc3RQYWdlID0gdW50cmFja2VkKHRoaXMucGFnZU51bWJlcikgPT09IDE7XHJcblx0XHRcdFx0XHR0aGlzLm5vdGlmaWNhdGlvbnMudXBkYXRlKChjdXJyZW50KSA9PlxyXG5cdFx0XHRcdFx0XHRpc0ZpcnN0UGFnZSA/IHJlc3VsdCA6IFsuLi5jdXJyZW50LCAuLi5yZXN1bHQuZmlsdGVyKChpdGVtKSA9PiAhY3VycmVudC5zb21lKChleGlzdGluZykgPT4gZXhpc3RpbmcuaWQgPT09IGl0ZW0uaWQpKV1cclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR0aGlzLnRvdGFsUmVjb3Jkcy5zZXQoc2VydmljZS5yZXNwb25zZS5yZXN1bHRJbmZvLnRvdGFsSXRlbSB8fCAwKTtcclxuXHRcdFx0XHRcdGlmICh1bnRyYWNrZWQodGhpcy5vbmx5VW5yZWFkKSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0VW5yZWFkTm90aWZpY2F0aW9uQ291bnQoc2VydmljZS5yZXNwb25zZS5yZXN1bHRJbmZvLnRvdGFsSXRlbSB8fCAwKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxyXG5cdFx0KTtcclxuXHRcdGVmZmVjdChcclxuXHRcdFx0KCkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IG1hcmtlZCA9IHRoaXMubWFya0FzUmVhZFNlcnZpY2UoKTtcclxuXHRcdFx0XHRpZiAobWFya2VkPy5yZXN1bHQ/LnJlc3BvbnNlKSB7XHJcblx0XHRcdFx0XHR0aGlzLmFwcGx5TWFya2VkQXNSZWFkKG1hcmtlZC5pZCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cclxuXHRcdCk7XHJcblx0XHRlZmZlY3QoXHJcblx0XHRcdCgpID0+IHtcclxuXHRcdFx0XHRjb25zdCBzZXJ2aWNlID0gdGhpcy5tYXJrQWxsQXNSZWFkU2VydmljZSgpO1xyXG5cdFx0XHRcdGlmIChzZXJ2aWNlPy5yZXNwb25zZSkge1xyXG5cdFx0XHRcdFx0dGhpcy5hcHBseUFsbE1hcmtlZEFzUmVhZCgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBhcHBseU1hcmtlZEFzUmVhZChpZDogc3RyaW5nKTogdm9pZCB7XHJcblx0XHRpZiAodW50cmFja2VkKHRoaXMub25seVVucmVhZCkpIHtcclxuXHRcdFx0dGhpcy5ub3RpZmljYXRpb25zLnVwZGF0ZSgoaXRlbXMpID0+IGl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5pZCAhPT0gaWQpKTtcclxuXHRcdFx0dGhpcy50b3RhbFJlY29yZHMudXBkYXRlKCh0b3RhbCkgPT4gTWF0aC5tYXgodG90YWwgLSAxLCAwKSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLm5vdGlmaWNhdGlvbnMudXBkYXRlKChpdGVtcykgPT4gaXRlbXMubWFwKChpdGVtKSA9PiAoaXRlbS5pZCA9PT0gaWQgPyB7IC4uLml0ZW0sIHJlYWQ6IHRydWUgfSA6IGl0ZW0pKSk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0VW5yZWFkTm90aWZpY2F0aW9uQ291bnQoTWF0aC5tYXgodGhpcy5sYXlvdXRTZXJ2aWNlLmdldFVucmVhZE5vdGlmaWNhdGlvbkNvdW50KCkgLSAxLCAwKSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGFwcGx5QWxsTWFya2VkQXNSZWFkKCk6IHZvaWQge1xyXG5cdFx0aWYgKHVudHJhY2tlZCh0aGlzLm9ubHlVbnJlYWQpKSB7XHJcblx0XHRcdHRoaXMubm90aWZpY2F0aW9ucy5zZXQoW10pO1xyXG5cdFx0XHR0aGlzLnRvdGFsUmVjb3Jkcy5zZXQoMCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLm5vdGlmaWNhdGlvbnMudXBkYXRlKChpdGVtcykgPT4gaXRlbXMubWFwKChpdGVtKSA9PiAoaXRlbS5yZWFkID8gaXRlbSA6IHsgLi4uaXRlbSwgcmVhZDogdHJ1ZSB9KSkpO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFVucmVhZE5vdGlmaWNhdGlvbkNvdW50KDApO1xyXG5cdH1cclxuXHJcblx0Z2V0IHZpc2libGUoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLm5vdGlmaWNhdGlvbnNTaWRlYmFyVmlzaWJsZTtcclxuXHR9XHJcblxyXG5cdHNldCB2aXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUubm90aWZpY2F0aW9uc1NpZGViYXJWaXNpYmxlID0gdmFsdWU7XHJcblx0fVxyXG5cclxuXHRvbk9ubHlVbnJlYWRDaGFuZ2UodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcclxuXHRcdHRoaXMub25seVVucmVhZC5zZXQodmFsdWUpO1xyXG5cdFx0dGhpcy5wYWdlTnVtYmVyLnNldCgxKTtcclxuXHRcdHRoaXMubm90aWZpY2F0aW9ucy5zZXQoW10pO1xyXG5cdFx0dGhpcy5zdWJqZWN0cy5sb2FkTm90aWZpY2F0aW9ucy5uZXh0KCk7XHJcblx0fVxyXG5cclxuXHRvblNpZGViYXJTaG93KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5wYWdlTnVtYmVyLnNldCgxKTtcclxuXHRcdHRoaXMuc3ViamVjdHMubG9hZE5vdGlmaWNhdGlvbnMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0c2hvd01vcmUoKTogdm9pZCB7XHJcblx0XHR0aGlzLnBhZ2VOdW1iZXIuc2V0KE1hdGguZmxvb3IodGhpcy5ub3RpZmljYXRpb25zKCkubGVuZ3RoIC8gdGhpcy5wYWdlU2l6ZSkgKyAxKTtcclxuXHRcdHRoaXMuc3ViamVjdHMubG9hZE5vdGlmaWNhdGlvbnMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0dG9nZ2xlTWVudShldmVudDogRXZlbnQsIG1lbnU6IE1lbnUpOiB2b2lkIHtcclxuXHRcdHRoaXMubWVudUl0ZW1zID0gW1xyXG5cdFx0XHQuLi4odGhpcy51bnJlYWRDb3VudCA+IDAgP1xyXG5cdFx0XHRcdFtcclxuXHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0bGFiZWw6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ25vdGlmaWNhdGlvbnMubWFya0FsbEFzUmVhZCcpLFxyXG5cdFx0XHRcdFx0XHRpY29uOiAncGkgcGktY2hlY2stY2lyY2xlJyxcclxuXHRcdFx0XHRcdFx0Y29tbWFuZDogKCkgPT4gdGhpcy5zdWJqZWN0cy5tYXJrQWxsQXNSZWFkLm5leHQoKVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdF1cclxuXHRcdFx0Olx0W10pLFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0bGFiZWw6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ25vdGlmaWNhdGlvbnMuYWxsTm90aWZpY2F0aW9uc1BhZ2UnKSxcclxuXHRcdFx0XHRpY29uOiAncGkgcGktZXh0ZXJuYWwtbGluaycsXHJcblx0XHRcdFx0Y29tbWFuZDogKCkgPT4gdGhpcy5uYXZpZ2F0ZVRvQWxsTm90aWZpY2F0aW9ucygpXHJcblx0XHRcdH1cclxuXHRcdF07XHJcblx0XHRtZW51LnRvZ2dsZShldmVudCk7XHJcblx0fVxyXG5cclxuXHRtYXJrTm90aWZpY2F0aW9uQXNSZWFkKG5vdGlmaWNhdGlvbjogU21zRW1haWxBdWRpdFJlc3BvbnNlRFRPKTogdm9pZCB7XHJcblx0XHRpZiAoIW5vdGlmaWNhdGlvbi5yZWFkKSB7XHJcblx0XHRcdHRoaXMuc3ViamVjdHMubWFya0FzUmVhZC5uZXh0KG5vdGlmaWNhdGlvbi5pZCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRvcGVuTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbjogU21zRW1haWxBdWRpdFJlc3BvbnNlRFRPKTogdm9pZCB7XHJcblx0XHRjb25zdCBpc1RvZG8gPSBub3RpZmljYXRpb24uZGV0YWlsTm90aWZpY2F0aW9uVHlwZSA9PT0gRGV0YWlsTm90aWZpY2F0aW9uVHlwZUVudW0uVE9ET19JVEVNO1xyXG5cdFx0Y29uc3QgaXNCYXRjaCA9IG5vdGlmaWNhdGlvbi5kZXRhaWxOb3RpZmljYXRpb25UeXBlID09PSBEZXRhaWxOb3RpZmljYXRpb25UeXBlRW51bS5CQVRDSF9KT0I7XHJcblx0XHRpZiAoIWlzVG9kbyAmJiAhaXNCYXRjaCkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLm1hcmtOb3RpZmljYXRpb25Bc1JlYWQobm90aWZpY2F0aW9uKTtcclxuXHRcdHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG5cdFx0Y29uc3Qgcm91dGUgPSBpc1RvZG8gPyBgbW5nL3RvZG8tdGFza3MvZGV0YWlsLyR7bm90aWZpY2F0aW9uLnJlZmVyZW5jZUlkfWAgOiBgbW5nL2J1bGstb3BlcmF0aW9ucy8ke25vdGlmaWNhdGlvbi5yZWZlcmVuY2VJZH1gO1xyXG5cdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoW3JvdXRlXSk7XHJcblx0fVxyXG5cclxuXHRpc05hdmlnYWJsZShub3RpZmljYXRpb246IFNtc0VtYWlsQXVkaXRSZXNwb25zZURUTyk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0bm90aWZpY2F0aW9uLmRldGFpbE5vdGlmaWNhdGlvblR5cGUgPT09IERldGFpbE5vdGlmaWNhdGlvblR5cGVFbnVtLlRPRE9fSVRFTSB8fFxyXG5cdFx0XHRub3RpZmljYXRpb24uZGV0YWlsTm90aWZpY2F0aW9uVHlwZSA9PT0gRGV0YWlsTm90aWZpY2F0aW9uVHlwZUVudW0uQkFUQ0hfSk9CXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0Z2V0Tm90aWZpY2F0aW9uSWNvbihub3RpZmljYXRpb246IFNtc0VtYWlsQXVkaXRSZXNwb25zZURUTyk6IEljb25Qcm9wIHtcclxuXHRcdGlmIChub3RpZmljYXRpb24uZGV0YWlsTm90aWZpY2F0aW9uVHlwZSA9PT0gRGV0YWlsTm90aWZpY2F0aW9uVHlwZUVudW0uVE9ET19JVEVNKSB7XHJcblx0XHRcdHJldHVybiBzb2xpZEljb25zLmZhTGlzdENoZWNrO1xyXG5cdFx0fVxyXG5cdFx0aWYgKG5vdGlmaWNhdGlvbi5kZXRhaWxOb3RpZmljYXRpb25UeXBlID09PSBEZXRhaWxOb3RpZmljYXRpb25UeXBlRW51bS5CQVRDSF9KT0IpIHtcclxuXHRcdFx0cmV0dXJuIHNvbGlkSWNvbnMuZmFHZWFyO1xyXG5cdFx0fVxyXG5cdFx0aWYgKG5vdGlmaWNhdGlvbi50eXBlID09PSBBY3Rpdml0eVR5cGVzRW51bS5TTVMpIHtcclxuXHRcdFx0cmV0dXJuIHJlZ3VsYXJJY29ucy5mYU1lc3NhZ2U7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbm90aWZpY2F0aW9uLnJlYWQgPyByZWd1bGFySWNvbnMuZmFFbnZlbG9wZU9wZW4gOiByZWd1bGFySWNvbnMuZmFFbnZlbG9wZTtcclxuXHR9XHJcblxyXG5cdGdldE5vdGlmaWNhdGlvbkljb25DbGFzcyhub3RpZmljYXRpb246IFNtc0VtYWlsQXVkaXRSZXNwb25zZURUTyk6IHN0cmluZyB7XHJcblx0XHRpZiAobm90aWZpY2F0aW9uLmRldGFpbE5vdGlmaWNhdGlvblR5cGUgPT09IERldGFpbE5vdGlmaWNhdGlvblR5cGVFbnVtLlRPRE9fSVRFTSkge1xyXG5cdFx0XHRyZXR1cm4gJ3RvZG8nO1xyXG5cdFx0fVxyXG5cdFx0aWYgKG5vdGlmaWNhdGlvbi5kZXRhaWxOb3RpZmljYXRpb25UeXBlID09PSBEZXRhaWxOb3RpZmljYXRpb25UeXBlRW51bS5CQVRDSF9KT0IpIHtcclxuXHRcdFx0cmV0dXJuICdiYXRjaCc7XHJcblx0XHR9XHJcblx0XHRpZiAobm90aWZpY2F0aW9uLnR5cGUgPT09IEFjdGl2aXR5VHlwZXNFbnVtLlNNUykge1xyXG5cdFx0XHRyZXR1cm4gJ3Ntcyc7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbm90aWZpY2F0aW9uLnJlYWQgPyAnZW1haWwtcmVhZCcgOiAnZW1haWwtdW5yZWFkJztcclxuXHR9XHJcblxyXG5cdGdldE5vdGlmaWNhdGlvblRpdGxlKG5vdGlmaWNhdGlvbjogU21zRW1haWxBdWRpdFJlc3BvbnNlRFRPKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBub3RpZmljYXRpb24udGVtcGxhdGVUaXRsZSB8fCBub3RpZmljYXRpb24udGVtcGxhdGVDb2RlIHx8ICcnO1xyXG5cdH1cclxuXHJcblx0Z2V0Tm90aWZpY2F0aW9uQ29udGVudChub3RpZmljYXRpb246IFNtc0VtYWlsQXVkaXRSZXNwb25zZURUTyk6IHN0cmluZyB7XHJcblx0XHRjb25zdCB0cnVuY2F0ZWQgPVxyXG5cdFx0XHRub3RpZmljYXRpb24uY29udGVudD8ubGVuZ3RoISA+IDIwMCA/IG5vdGlmaWNhdGlvbi5jb250ZW50Py5zdWJzdHJpbmcoMCwgMjAwKSArICcuLi4nIDogbm90aWZpY2F0aW9uLmNvbnRlbnQ7XHJcblx0XHRyZXR1cm4gdHJ1bmNhdGVkIHx8ICcnO1xyXG5cdH1cclxuXHJcblx0Zm9ybWF0Tm90aWZpY2F0aW9uRGF0ZShzdGFydERhdGU6IG51bWJlciB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcblx0XHRpZiAoIXN0YXJ0RGF0ZSkge1xyXG5cdFx0XHRyZXR1cm4gJyc7XHJcblx0XHR9XHJcblx0XHRjb25zdCBkYXRlU3RyID0gc3RhcnREYXRlLnRvU3RyaW5nKCk7XHJcblx0XHRjb25zdCB5ZWFyID0gcGFyc2VJbnQoZGF0ZVN0ci5zdWJzdHJpbmcoMCwgNCkpO1xyXG5cdFx0Y29uc3QgbW9udGggPSBwYXJzZUludChkYXRlU3RyLnN1YnN0cmluZyg0LCA2KSkgLSAxO1xyXG5cdFx0Y29uc3QgZGF5ID0gcGFyc2VJbnQoZGF0ZVN0ci5zdWJzdHJpbmcoNiwgOCkpO1xyXG5cdFx0Y29uc3QgaG91ciA9IHBhcnNlSW50KGRhdGVTdHIuc3Vic3RyaW5nKDgsIDEwKSk7XHJcblx0XHRjb25zdCBtaW51dGUgPSBwYXJzZUludChkYXRlU3RyLnN1YnN0cmluZygxMCwgMTIpKTtcclxuXHRcdGNvbnN0IHNlY29uZCA9IHBhcnNlSW50KGRhdGVTdHIuc3Vic3RyaW5nKDEyLCAxNCkpO1xyXG5cclxuXHRcdGNvbnN0IG5vdGlmaWNhdGlvbkRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCk7XHJcblx0XHRjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG5cdFx0Y29uc3QgZGlmZk1zID0gbm93LmdldFRpbWUoKSAtIG5vdGlmaWNhdGlvbkRhdGUuZ2V0VGltZSgpO1xyXG5cclxuXHRcdGNvbnN0IGRpZmZNaW51dGVzID0gTWF0aC5mbG9vcihkaWZmTXMgLyAoMTAwMCAqIDYwKSk7XHJcblx0XHRjb25zdCBkaWZmSG91cnMgPSBNYXRoLmZsb29yKGRpZmZNcyAvICgxMDAwICogNjAgKiA2MCkpO1xyXG5cdFx0Y29uc3QgZGlmZkRheXMgPSBNYXRoLmZsb29yKGRpZmZNcyAvICgxMDAwICogNjAgKiA2MCAqIDI0KSk7XHJcblx0XHRjb25zdCBkaWZmV2Vla3MgPSBNYXRoLmZsb29yKGRpZmZEYXlzIC8gNyk7XHJcblx0XHRjb25zdCBkaWZmTW9udGhzID0gTWF0aC5mbG9vcihkaWZmRGF5cyAvIDMwKTtcclxuXHJcblx0XHRpZiAoZGlmZk1pbnV0ZXMgPCAxKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdub3RpZmljYXRpb25zLnRpbWUuanVzdE5vdycpO1xyXG5cdFx0fSBlbHNlIGlmIChkaWZmTWludXRlcyA8IDYwKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdub3RpZmljYXRpb25zLnRpbWUubWludXRlc0FnbycsIHsgY291bnQ6IGRpZmZNaW51dGVzIH0pO1xyXG5cdFx0fSBlbHNlIGlmIChkaWZmSG91cnMgPCAyNCkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnbm90aWZpY2F0aW9ucy50aW1lLmhvdXJzQWdvJywgeyBjb3VudDogZGlmZkhvdXJzIH0pO1xyXG5cdFx0fSBlbHNlIGlmIChkaWZmRGF5cyA8IDcpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ25vdGlmaWNhdGlvbnMudGltZS5kYXlzQWdvJywgeyBjb3VudDogZGlmZkRheXMgfSk7XHJcblx0XHR9IGVsc2UgaWYgKGRpZmZXZWVrcyA8IDQpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ25vdGlmaWNhdGlvbnMudGltZS53ZWVrc0FnbycsIHsgY291bnQ6IGRpZmZXZWVrcyB9KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJldHVybiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdub3RpZmljYXRpb25zLnRpbWUubW9udGhzQWdvJywgeyBjb3VudDogZGlmZk1vbnRocyB9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5hdmlnYXRlVG9BbGxOb3RpZmljYXRpb25zKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoWydtbmcvY29udHJvbC1tYW5hZ2VtZW50L3Ntcy1lbWFpbC1hdWRpdCddKTtcclxuXHRcdHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG5cdH1cclxufVxyXG4iLCI8cC1zaWRlYmFyXHJcblx0Wyh2aXNpYmxlKV09XCJ2aXNpYmxlXCJcclxuXHRwb3NpdGlvbj1cInJpZ2h0XCJcclxuXHRbdHJhbnNpdGlvbk9wdGlvbnNdPVwiJy4zcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSdcIlxyXG5cdHN0eWxlQ2xhc3M9XCJsYXlvdXQtbm90aWZpY2F0aW9ucy1zaWRlYmFyIHctZnVsbCBzbTp3LTMwcmVtXCJcclxuXHQob25TaG93KT1cIm9uU2lkZWJhclNob3coKVwiXHJcblx0KnRyYW5zbG9jbz1cImxldCB0OyByZWFkOiAnbm90aWZpY2F0aW9ucydcIj5cclxuXHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gdy1mdWxsXCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG5cdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktYmVsbCB0ZXh0LXhsXCI+PC9pPlxyXG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtbGdcIj57eyB0KCd0aXRsZScpIH19PC9zcGFuPlxyXG5cdFx0XHRcdEBpZiAodW5yZWFkQ291bnQgPiAwKSB7XHJcblx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInVucmVhZC1jb3VudC1jaGlwXCI+e3sgdW5yZWFkQ291bnQgfX08L3NwYW4+XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIGhlYWRlci1hY3Rpb25zXCI+XHJcblx0XHRcdFx0PHNwYW4gY2xhc3M9XCJvbmx5LXVucmVhZC1sYWJlbFwiPnt7IHQoJ29ubHlVbnJlYWQnKSB9fTwvc3Bhbj5cclxuXHRcdFx0XHQ8YXJpbC1zd2l0Y2ggW25nTW9kZWxdPVwib25seVVucmVhZCgpXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25Pbmx5VW5yZWFkQ2hhbmdlKCRldmVudClcIj48L2FyaWwtc3dpdGNoPlxyXG5cdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktZWxsaXBzaXMtdiBoZWFkZXItbWVudS1pY29uXCIgKGNsaWNrKT1cInRvZ2dsZU1lbnUoJGV2ZW50LCBoZWFkZXJNZW51KVwiPjwvaT5cclxuXHRcdFx0XHQ8cC1tZW51ICNoZWFkZXJNZW51IFtwb3B1cF09XCJ0cnVlXCIgW21vZGVsXT1cIm1lbnVJdGVtc1wiIGFwcGVuZFRvPVwiYm9keVwiPjwvcC1tZW51PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcblxyXG5cdDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb25zLWNvbnRlbnRcIj5cclxuXHRcdEBpZiAobm90aWZpY2F0aW9ucygpLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0PGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvbnMtbGlzdFwiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb25zLWl0ZW1zXCI+XHJcblx0XHRcdFx0XHRAZm9yIChub3RpZmljYXRpb24gb2Ygbm90aWZpY2F0aW9ucygpOyB0cmFjayBub3RpZmljYXRpb24uaWQpIHtcclxuXHRcdFx0XHRcdFx0PGRpdlxyXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwibm90aWZpY2F0aW9uLWl0ZW1cIlxyXG5cdFx0XHRcdFx0XHRcdFtjbGFzcy51bnJlYWQtaXRlbV09XCIhbm90aWZpY2F0aW9uLnJlYWRcIlxyXG5cdFx0XHRcdFx0XHRcdFtjbGFzcy5uYXZpZ2FibGVdPVwiaXNOYXZpZ2FibGUobm90aWZpY2F0aW9uKVwiXHJcblx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cIm9wZW5Ob3RpZmljYXRpb24obm90aWZpY2F0aW9uKVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb24taWNvblwiIFtuZ0NsYXNzXT1cImdldE5vdGlmaWNhdGlvbkljb25DbGFzcyhub3RpZmljYXRpb24pXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZmEtaWNvbiBbaWNvbl09XCJnZXROb3RpZmljYXRpb25JY29uKG5vdGlmaWNhdGlvbilcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpdGVtLWJvZHlcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpdGVtLWhlYWRlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cIml0ZW0tdGl0bGVcIj57eyBnZXROb3RpZmljYXRpb25UaXRsZShub3RpZmljYXRpb24pIH19PC9wPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIml0ZW0tdGltZVwiPnt7IGZvcm1hdE5vdGlmaWNhdGlvbkRhdGUobm90aWZpY2F0aW9uLnNlbmRpbmdEYXRlKSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0QGlmICghbm90aWZpY2F0aW9uLnJlYWQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIml0ZW0tYWN0aW9uc1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGZhLWljb25cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W2ljb25dPVwic29saWRJY29ucy5mYUNpcmNsZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwidW5yZWFkLWRvdFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCJ0KCdtYXJrQXNSZWFkJylcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJsZWZ0XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cIm1hcmtOb3RpZmljYXRpb25Bc1JlYWQobm90aWZpY2F0aW9uKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2ZhLWljb24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YnV0dG9uXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9XCJidXR0b25cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cIm1hcmstcmVhZC1hY3Rpb25cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwidCgnbWFya0FzUmVhZCcpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwibGVmdFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJtYXJrTm90aWZpY2F0aW9uQXNSZWFkKG5vdGlmaWNhdGlvbik7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWNoZWNrXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9idXR0b24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdEBpZiAoZ2V0Tm90aWZpY2F0aW9uQ29udGVudChub3RpZmljYXRpb24pKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdEBpZiAobm90aWZpY2F0aW9uLnR5cGUgPT09IEFjdGl2aXR5VHlwZXNFbnVtLkVNQUlMKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBbaW5uZXJIVE1MXT1cIm5vdGlmaWNhdGlvbi5jb250ZW50IHwgc2FmZTogJ2h0bWwnXCIgY2xhc3M9XCJpdGVtLXByZXZpZXcgaHRtbC1wcmV2aWV3XCI+PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwiaXRlbS1wcmV2aWV3XCI+e3sgZ2V0Tm90aWZpY2F0aW9uQ29udGVudChub3RpZmljYXRpb24pIH19PC9wPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRAaWYgKG5vdGlmaWNhdGlvbi5kZXRhaWxOb3RpZmljYXRpb25UeXBlID09PSBEZXRhaWxOb3RpZmljYXRpb25UeXBlRW51bS5UT0RPX0lURU0pIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJuYXYtY2hpcFwiPnt7IHQoJ2dvVG9UYXNrRGV0YWlsJykgfX0gPGkgY2xhc3M9XCJwaSBwaS1hcnJvdy1yaWdodFwiPjwvaT48L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHR9IEBlbHNlIGlmIChub3RpZmljYXRpb24uZGV0YWlsTm90aWZpY2F0aW9uVHlwZSA9PT0gRGV0YWlsTm90aWZpY2F0aW9uVHlwZUVudW0uQkFUQ0hfSk9CKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibmF2LWNoaXBcIj57eyB0KCdnb1RvQnVsa09wZXJhdGlvbnMnKSB9fSA8aSBjbGFzcz1cInBpIHBpLWFycm93LXJpZ2h0XCI+PC9pPjwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRAaWYgKHJlbWFpbmluZ0NvdW50KCkgPiAwKSB7XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJzaG93LW1vcmVcIj5cclxuXHRcdFx0XHRcdFx0XHQ8YXJpbC1idXR0b25cclxuXHRcdFx0XHRcdFx0XHRcdFtsYWJlbF09XCJ0KCdzaG93TW9yZScsIHsgY291bnQ6IHJlbWFpbmluZ0NvdW50KCkgfSlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0Y29sb3I9XCJwcmltYXJ5XCJcclxuXHRcdFx0XHRcdFx0XHRcdHNpemU9XCJzbVwiXHJcblx0XHRcdFx0XHRcdFx0XHRbb3V0bGluZWRdPVwidHJ1ZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuXHRcdFx0XHRcdFx0XHRcdChjbGlja0V2ZW50KT1cInNob3dNb3JlKClcIj5cclxuXHRcdFx0XHRcdFx0XHQ8L2FyaWwtYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHR9IEBlbHNlIGlmICghbG9hZGluZykge1xyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGVcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZW1wdHktY29udGVudFwiPlxyXG5cdFx0XHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1iZWxsIGVtcHR5LWljb25cIj48L2k+XHJcblx0XHRcdFx0XHQ8aDMgY2xhc3M9XCJlbXB0eS10aXRsZVwiPnt7IHQoJ25vTm90aWZpY2F0aW9ucycpIH19PC9oMz5cclxuXHRcdFx0XHRcdDxwIGNsYXNzPVwiZW1wdHktbWVzc2FnZVwiPnt7IHQoJ25vTm90aWZpY2F0aW9uc0Rlc2NyaXB0aW9uJykgfX08L3A+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0fVxyXG5cdDwvZGl2PlxyXG48L3Atc2lkZWJhcj5cclxuIl19
288
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy1zaWRlYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdGhlbWUvbGF5b3V0L2FwcC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLXNpZGViYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJN0MsT0FBTyxFQUFRLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR2hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFFdEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9B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LE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRW5ELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxRSxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUUxRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUU3QyxJQUFJLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUN0RSxDQUFDO2FBQU0sSUFBSSxXQUFXLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLCtCQUErQixFQUFFLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDakcsQ0FBQzthQUFNLElBQUksU0FBUyxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQzNCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyw2QkFBNkIsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzdGLENBQUM7YUFBTSxJQUFJLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsNEJBQTRCLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMzRixDQUFDO2FBQU0sSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLDZCQUE2QixFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDN0YsQ0FBQzthQUFNLENBQUM7WUFDUCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsOEJBQThCLEVBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUMvRixDQUFDO0lBQ0YsQ0FBQztJQUVELDBCQUEwQjtRQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLHdDQUF3QyxDQUFDLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDOzhHQTVTVyw2QkFBNkI7a0dBQTdCLDZCQUE2QixxRkM3QzFDLHE4SkFzR0Esc3pMRHZFRSxZQUFZLDRIQUNaLFdBQVcsOFZBQ1gsYUFBYSxtZEFDYixVQUFVLG9xQkFDVixlQUFlLDhOQUNmLGVBQWUsOElBQ2YsZUFBZSxnT0FDZixhQUFhLDhCQUNiLGlCQUFpQiwrUkFDakIsUUFBUTs7MkZBS0csNkJBQTZCO2tCQWxCekMsU0FBUztpQ0FDRyxJQUFJLFlBQ04sMkJBQTJCLFdBQzVCO3dCQUNSLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxhQUFhO3dCQUNiLFVBQVU7d0JBQ1YsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLFFBQVE7cUJBQ1IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgY29tcHV0ZWQsIGVmZmVjdCwgc2lnbmFsLCB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IE1lbnUsIE1lbnVNb2R1bGUgfSBmcm9tICdwcmltZW5nL21lbnUnO1xyXG5pbXBvcnQgeyBTaWRlYmFyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9zaWRlYmFyJztcclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XHJcblxyXG5pbXBvcnQgeyBJY29uUHJvcCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mb250YXdlc29tZS1zdmctY29yZSc7XHJcbmltcG9ydCB7IEZvbnRBd2Vzb21lTW9kdWxlIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xyXG5pbXBvcnQgeyBUcmFuc2xvY29Nb2R1bGUsIFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcbmltcG9ydCB7IEtleWNsb2FrU2VydmljZSB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBtYXAsIG1lcmdlTWFwLCBTdWJqZWN0LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvYnV0dG9uJztcclxuaW1wb3J0IHsgU3dpdGNoQ29tcG9uZW50IH0gZnJvbSAnYXJpbC91aS9zd2l0Y2gnO1xyXG5pbXBvcnQgeyByZWd1bGFySWNvbnMsIHNvbGlkSWNvbnMgfSBmcm9tICdhcmlsL3V0aWwvbGliJztcclxuaW1wb3J0IHsgU2FmZVBpcGUgfSBmcm9tICdhcmlsL3V0aWwvcGlwZXMnO1xyXG5cclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXBwLmxheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWN0aXZpdHlUeXBlc0VudW0sIERldGFpbE5vdGlmaWNhdGlvblR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vc2VydmljZS9pbnRlcmZhY2VzL2VudW0nO1xyXG5pbXBvcnQgeyBTbXNFbWFpbEF1ZGl0UmVzcG9uc2VEVE8gfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2ludGVyZmFjZXMvaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9ub3RpZmljYXRpb25zLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FwcC1ub3RpZmljYXRpb25zLXNpZGViYXInLFxyXG5cdGltcG9ydHM6IFtcclxuXHRcdENvbW1vbk1vZHVsZSxcclxuXHRcdEZvcm1zTW9kdWxlLFxyXG5cdFx0U2lkZWJhck1vZHVsZSxcclxuXHRcdE1lbnVNb2R1bGUsXHJcblx0XHRCdXR0b25Db21wb25lbnQsXHJcblx0XHRTd2l0Y2hDb21wb25lbnQsXHJcblx0XHRUcmFuc2xvY29Nb2R1bGUsXHJcblx0XHRUb29sdGlwTW9kdWxlLFxyXG5cdFx0Rm9udEF3ZXNvbWVNb2R1bGUsXHJcblx0XHRTYWZlUGlwZVxyXG5cdF0sXHJcblx0dGVtcGxhdGVVcmw6ICcuL25vdGlmaWNhdGlvbnMtc2lkZWJhci5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vbm90aWZpY2F0aW9ucy1zaWRlYmFyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbnNTaWRlYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHRwcml2YXRlIHJlYWRvbmx5IHBhZ2VTaXplID0gMTA7XHJcblxyXG5cdG5vdGlmaWNhdGlvbnMgPSBzaWduYWw8U21zRW1haWxBdWRpdFJlc3BvbnNlRFRPW10+KFtdKTtcclxuXHR0b3RhbFJlY29yZHMgPSBzaWduYWwoMCk7XHJcblx0b25seVVucmVhZCA9IHNpZ25hbCh0cnVlKTtcclxuXHRwYWdlTnVtYmVyID0gc2lnbmFsKDEpO1xyXG5cclxuXHRyZW1haW5pbmdDb3VudCA9IGNvbXB1dGVkKCgpID0+IE1hdGgubWF4KHRoaXMudG90YWxSZWNvcmRzKCkgLSB0aGlzLm5vdGlmaWNhdGlvbnMoKS5sZW5ndGgsIDApKTtcclxuXHJcblx0bWVudUl0ZW1zOiBNZW51SXRlbVtdID0gW107XHJcblxyXG5cdEFjdGl2aXR5VHlwZXNFbnVtID0gQWN0aXZpdHlUeXBlc0VudW07XHJcblx0RGV0YWlsTm90aWZpY2F0aW9uVHlwZUVudW0gPSBEZXRhaWxOb3RpZmljYXRpb25UeXBlRW51bTtcclxuXHJcblx0cmVndWxhckljb25zID0gcmVndWxhckljb25zO1xyXG5cdHNvbGlkSWNvbnMgPSBzb2xpZEljb25zO1xyXG5cclxuXHRvbmVNb250aEFnbyA9IG5ldyBEYXRlKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gMzAgKiAyNCAqIDYwICogNjAgKiAxMDAwKTtcclxuXHJcblx0cHJpdmF0ZSBzdWJqZWN0cyA9IHtcclxuXHRcdG1hcmtBc1JlYWQ6IG5ldyBTdWJqZWN0PHN0cmluZz4oKSxcclxuXHRcdG1hcmtBbGxBc1JlYWQ6IG5ldyBTdWJqZWN0PHZvaWQ+KCksXHJcblx0XHRsb2FkTm90aWZpY2F0aW9uczogbmV3IFN1YmplY3Q8dm9pZD4oKVxyXG5cdH07XHJcblxyXG5cdG1hcmtBc1JlYWRTZXJ2aWNlID0gdG9TaWduYWwoXHJcblx0XHR0aGlzLnN1YmplY3RzLm1hcmtBc1JlYWQucGlwZShcclxuXHRcdFx0bWVyZ2VNYXAoKGlkKSA9PiB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLm1hcmtBc1JlYWROb3RpZmljYXRpb24oaWQpLnBpcGUobWFwKChyZXN1bHQpID0+ICh7IHJlc3VsdCwgaWQgfSkpKSlcclxuXHRcdClcclxuXHQpO1xyXG5cclxuXHRtYXJrQWxsQXNSZWFkU2VydmljZSA9IHRvU2lnbmFsKFxyXG5cdFx0dGhpcy5zdWJqZWN0cy5tYXJrQWxsQXNSZWFkLnBpcGUoXHJcblx0XHRcdHN3aXRjaE1hcCgoKSA9PlxyXG5cdFx0XHRcdHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UubWFya0FsbEFzUmVhZE5vdGlmaWNhdGlvbih7XHJcblx0XHRcdFx0XHR0b0xpc3Q6IFt0aGlzLmdldFVzZXJNYWlsLCAuLi50aGlzLmdldFVzZXJQaG9uZXNdLFxyXG5cdFx0XHRcdFx0ZW5kRGF0ZTogbmV3IERhdGUoKS5kYXRlVG9Mb25nKCd0aW1lJykgfHwgMFxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdClcclxuXHRcdClcclxuXHQpO1xyXG5cclxuXHRsb2FkTm90aWZpY2F0aW9uc1NlcnZpY2UgPSB0b1NpZ25hbChcclxuXHRcdHRoaXMuc3ViamVjdHMubG9hZE5vdGlmaWNhdGlvbnMucGlwZShcclxuXHRcdFx0c3dpdGNoTWFwKCgpID0+XHJcblx0XHRcdFx0dGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5nZXROb3RpZmljYXRpb25zKHtcclxuXHRcdFx0XHRcdHBhZ2VyOiB7XHJcblx0XHRcdFx0XHRcdHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLFxyXG5cdFx0XHRcdFx0XHRwYWdlTnVtYmVyOiB0aGlzLnBhZ2VOdW1iZXIoKVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdHN0YXJ0RGF0ZTogdGhpcy5vbmVNb250aEFnby5kYXRlVG9Mb25nKCd0aW1lJykgfHwgMCxcclxuXHRcdFx0XHRcdGVuZERhdGU6IG5ldyBEYXRlKCkuZGF0ZVRvTG9uZygndGltZScpIHx8IDAsXHJcblx0XHRcdFx0XHQuLi4odGhpcy5vbmx5VW5yZWFkKCkgPyB7IHJlYWQ6IGZhbHNlIH0gOiB7fSksXHJcblx0XHRcdFx0XHR0b0xpc3Q6IFt0aGlzLmdldFVzZXJNYWlsLCAuLi50aGlzLmdldFVzZXJQaG9uZXNdXHJcblx0XHRcdFx0fSlcclxuXHRcdFx0KVxyXG5cdFx0KVxyXG5cdCk7XHJcblxyXG5cdGdldCBnZXRVc2VyUGhvbmVzKCk6IHN0cmluZ1tdIHtcclxuXHRcdGNvbnN0IHBob25lcyA9IHRoaXMua2V5Y2xvYWsuZ2V0S2V5Y2xvYWtJbnN0YW5jZSgpLnByb2ZpbGU/LmF0dHJpYnV0ZXM/LlsncGhvbmUnXTtcclxuXHRcdGlmIChwaG9uZXMgJiYgQXJyYXkuaXNBcnJheShwaG9uZXMpKSB7XHJcblx0XHRcdHJldHVybiBwaG9uZXM7XHJcblx0XHR9IGVsc2UgaWYgKHBob25lcyAmJiB0eXBlb2YgcGhvbmVzID09PSAnc3RyaW5nJykge1xyXG5cdFx0XHRyZXR1cm4gW3Bob25lc107XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gW107XHJcblx0fVxyXG5cclxuXHRnZXQgZ2V0VXNlck1haWwoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5rZXljbG9hay5nZXRLZXljbG9ha0luc3RhbmNlKCkucHJvZmlsZT8uZW1haWwgYXMgc3RyaW5nO1xyXG5cdH1cclxuXHJcblx0Z2V0IHVucmVhZENvdW50KCk6IG51bWJlciB7XHJcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLmdldFVucmVhZE5vdGlmaWNhdGlvbkNvdW50KCk7XHJcblx0fVxyXG5cclxuXHRnZXQgbG9hZGluZygpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiAhIXRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2Uuc3RhdGVzLmdldE5vdGlmaWNhdGlvbnM/LndhaXRpbmdGb3JSZXNwb25zZTtcclxuXHR9XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHVibGljIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IG5vdGlmaWNhdGlvbnNTZXJ2aWNlOiBOb3RpZmljYXRpb25zU2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IGtleWNsb2FrOiBLZXljbG9ha1NlcnZpY2VcclxuXHQpIHtcclxuXHRcdHRoaXMuaW5pdGlhbGl6ZUVmZmVjdHMoKTtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5zdWJqZWN0cy5sb2FkTm90aWZpY2F0aW9ucy5uZXh0KCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGluaXRpYWxpemVFZmZlY3RzKCk6IHZvaWQge1xyXG5cdFx0ZWZmZWN0KFxyXG5cdFx0XHQoKSA9PiB7XHJcblx0XHRcdFx0Y29uc3Qgc2VydmljZSA9IHRoaXMubG9hZE5vdGlmaWNhdGlvbnNTZXJ2aWNlKCk7XHJcblx0XHRcdFx0aWYgKHNlcnZpY2U/LnJlc3BvbnNlKSB7XHJcblx0XHRcdFx0XHRjb25zdCByZXN1bHQgPSBzZXJ2aWNlLnJlc3BvbnNlLnJlc3VsdCB8fCBbXTtcclxuXHRcdFx0XHRcdGNvbnN0IGlzRmlyc3RQYWdlID0gdW50cmFja2VkKHRoaXMucGFnZU51bWJlcikgPT09IDE7XHJcblx0XHRcdFx0XHR0aGlzLm5vdGlmaWNhdGlvbnMudXBkYXRlKChjdXJyZW50KSA9PlxyXG5cdFx0XHRcdFx0XHRpc0ZpcnN0UGFnZSA/IHJlc3VsdCA6IFsuLi5jdXJyZW50LCAuLi5yZXN1bHQuZmlsdGVyKChpdGVtKSA9PiAhY3VycmVudC5zb21lKChleGlzdGluZykgPT4gZXhpc3RpbmcuaWQgPT09IGl0ZW0uaWQpKV1cclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR0aGlzLnRvdGFsUmVjb3Jkcy5zZXQoc2VydmljZS5yZXNwb25zZS5yZXN1bHRJbmZvLnRvdGFsSXRlbSB8fCAwKTtcclxuXHRcdFx0XHRcdGlmICh1bnRyYWNrZWQodGhpcy5vbmx5VW5yZWFkKSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0VW5yZWFkTm90aWZpY2F0aW9uQ291bnQoc2VydmljZS5yZXNwb25zZS5yZXN1bHRJbmZvLnRvdGFsSXRlbSB8fCAwKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxyXG5cdFx0KTtcclxuXHRcdGVmZmVjdChcclxuXHRcdFx0KCkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IG1hcmtlZCA9IHRoaXMubWFya0FzUmVhZFNlcnZpY2UoKTtcclxuXHRcdFx0XHRpZiAobWFya2VkPy5yZXN1bHQ/LnJlc3BvbnNlKSB7XHJcblx0XHRcdFx0XHR0aGlzLmFwcGx5TWFya2VkQXNSZWFkKG1hcmtlZC5pZCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cclxuXHRcdCk7XHJcblx0XHRlZmZlY3QoXHJcblx0XHRcdCgpID0+IHtcclxuXHRcdFx0XHRjb25zdCBzZXJ2aWNlID0gdGhpcy5tYXJrQWxsQXNSZWFkU2VydmljZSgpO1xyXG5cdFx0XHRcdGlmIChzZXJ2aWNlPy5yZXNwb25zZSkge1xyXG5cdFx0XHRcdFx0dGhpcy5hcHBseUFsbE1hcmtlZEFzUmVhZCgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBhcHBseU1hcmtlZEFzUmVhZChpZDogc3RyaW5nKTogdm9pZCB7XHJcblx0XHRpZiAodW50cmFja2VkKHRoaXMub25seVVucmVhZCkpIHtcclxuXHRcdFx0dGhpcy5ub3RpZmljYXRpb25zLnVwZGF0ZSgoaXRlbXMpID0+IGl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5pZCAhPT0gaWQpKTtcclxuXHRcdFx0dGhpcy50b3RhbFJlY29yZHMudXBkYXRlKCh0b3RhbCkgPT4gTWF0aC5tYXgodG90YWwgLSAxLCAwKSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLm5vdGlmaWNhdGlvbnMudXBkYXRlKChpdGVtcykgPT4gaXRlbXMubWFwKChpdGVtKSA9PiAoaXRlbS5pZCA9PT0gaWQgPyB7IC4uLml0ZW0sIHJlYWQ6IHRydWUgfSA6IGl0ZW0pKSk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0VW5yZWFkTm90aWZpY2F0aW9uQ291bnQoTWF0aC5tYXgodGhpcy5sYXlvdXRTZXJ2aWNlLmdldFVucmVhZE5vdGlmaWNhdGlvbkNvdW50KCkgLSAxLCAwKSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGFwcGx5QWxsTWFya2VkQXNSZWFkKCk6IHZvaWQge1xyXG5cdFx0aWYgKHVudHJhY2tlZCh0aGlzLm9ubHlVbnJlYWQpKSB7XHJcblx0XHRcdHRoaXMubm90aWZpY2F0aW9ucy5zZXQoW10pO1xyXG5cdFx0XHR0aGlzLnRvdGFsUmVjb3Jkcy5zZXQoMCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLm5vdGlmaWNhdGlvbnMudXBkYXRlKChpdGVtcykgPT4gaXRlbXMubWFwKChpdGVtKSA9PiAoaXRlbS5yZWFkID8gaXRlbSA6IHsgLi4uaXRlbSwgcmVhZDogdHJ1ZSB9KSkpO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFVucmVhZE5vdGlmaWNhdGlvbkNvdW50KDApO1xyXG5cdH1cclxuXHJcblx0Z2V0IHZpc2libGUoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLm5vdGlmaWNhdGlvbnNTaWRlYmFyVmlzaWJsZTtcclxuXHR9XHJcblxyXG5cdHNldCB2aXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUubm90aWZpY2F0aW9uc1NpZGViYXJWaXNpYmxlID0gdmFsdWU7XHJcblx0fVxyXG5cclxuXHRvbk9ubHlVbnJlYWRDaGFuZ2UodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcclxuXHRcdHRoaXMub25seVVucmVhZC5zZXQodmFsdWUpO1xyXG5cdFx0dGhpcy5wYWdlTnVtYmVyLnNldCgxKTtcclxuXHRcdHRoaXMubm90aWZpY2F0aW9ucy5zZXQoW10pO1xyXG5cdFx0dGhpcy5zdWJqZWN0cy5sb2FkTm90aWZpY2F0aW9ucy5uZXh0KCk7XHJcblx0fVxyXG5cclxuXHRvblNpZGViYXJTaG93KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5wYWdlTnVtYmVyLnNldCgxKTtcclxuXHRcdHRoaXMuc3ViamVjdHMubG9hZE5vdGlmaWNhdGlvbnMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0c2hvd01vcmUoKTogdm9pZCB7XHJcblx0XHR0aGlzLnBhZ2VOdW1iZXIuc2V0KE1hdGguZmxvb3IodGhpcy5ub3RpZmljYXRpb25zKCkubGVuZ3RoIC8gdGhpcy5wYWdlU2l6ZSkgKyAxKTtcclxuXHRcdHRoaXMuc3ViamVjdHMubG9hZE5vdGlmaWNhdGlvbnMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0dG9nZ2xlTWVudShldmVudDogRXZlbnQsIG1lbnU6IE1lbnUpOiB2b2lkIHtcclxuXHRcdHRoaXMubWVudUl0ZW1zID0gW1xyXG5cdFx0XHQuLi4odGhpcy51bnJlYWRDb3VudCA+IDAgP1xyXG5cdFx0XHRcdFtcclxuXHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0bGFiZWw6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ25vdGlmaWNhdGlvbnMubWFya0FsbEFzUmVhZCcpLFxyXG5cdFx0XHRcdFx0XHRpY29uOiAncGkgcGktY2hlY2stY2lyY2xlJyxcclxuXHRcdFx0XHRcdFx0Y29tbWFuZDogKCkgPT4gdGhpcy5zdWJqZWN0cy5tYXJrQWxsQXNSZWFkLm5leHQoKVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdF1cclxuXHRcdFx0Olx0W10pLFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0bGFiZWw6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ25vdGlmaWNhdGlvbnMuYWxsTm90aWZpY2F0aW9uc1BhZ2UnKSxcclxuXHRcdFx0XHRpY29uOiAncGkgcGktZXh0ZXJuYWwtbGluaycsXHJcblx0XHRcdFx0Y29tbWFuZDogKCkgPT4gdGhpcy5uYXZpZ2F0ZVRvQWxsTm90aWZpY2F0aW9ucygpXHJcblx0XHRcdH1cclxuXHRcdF07XHJcblx0XHRtZW51LnRvZ2dsZShldmVudCk7XHJcblx0fVxyXG5cclxuXHRtYXJrTm90aWZpY2F0aW9uQXNSZWFkKG5vdGlmaWNhdGlvbjogU21zRW1haWxBdWRpdFJlc3BvbnNlRFRPKTogdm9pZCB7XHJcblx0XHRpZiAoIW5vdGlmaWNhdGlvbi5yZWFkKSB7XHJcblx0XHRcdHRoaXMuc3ViamVjdHMubWFya0FzUmVhZC5uZXh0KG5vdGlmaWNhdGlvbi5pZCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRvcGVuTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbjogU21zRW1haWxBdWRpdFJlc3BvbnNlRFRPKTogdm9pZCB7XHJcblx0XHRjb25zdCBpc1RvZG8gPSBub3RpZmljYXRpb24uZGV0YWlsTm90aWZpY2F0aW9uVHlwZSA9PT0gRGV0YWlsTm90aWZpY2F0aW9uVHlwZUVudW0uVE9ET19JVEVNO1xyXG5cdFx0Y29uc3QgaXNCYXRjaCA9IG5vdGlmaWNhdGlvbi5kZXRhaWxOb3RpZmljYXRpb25UeXBlID09PSBEZXRhaWxOb3RpZmljYXRpb25UeXBlRW51bS5CQVRDSF9KT0I7XHJcblx0XHRpZiAoIWlzVG9kbyAmJiAhaXNCYXRjaCkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLm1hcmtOb3RpZmljYXRpb25Bc1JlYWQobm90aWZpY2F0aW9uKTtcclxuXHRcdHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG5cdFx0Y29uc3Qgcm91dGUgPSBpc1RvZG8gPyBgbW5nL3RvZG8tdGFza3MvZGV0YWlsLyR7bm90aWZpY2F0aW9uLnJlZmVyZW5jZUlkfWAgOiBgbW5nL2J1bGstb3BlcmF0aW9ucy8ke25vdGlmaWNhdGlvbi5yZWZlcmVuY2VJZH1gO1xyXG5cdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoW3JvdXRlXSk7XHJcblx0fVxyXG5cclxuXHRpc05hdmlnYWJsZShub3RpZmljYXRpb246IFNtc0VtYWlsQXVkaXRSZXNwb25zZURUTyk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0bm90aWZpY2F0aW9uLmRldGFpbE5vdGlmaWNhdGlvblR5cGUgPT09IERldGFpbE5vdGlmaWNhdGlvblR5cGVFbnVtLlRPRE9fSVRFTSB8fFxyXG5cdFx0XHRub3RpZmljYXRpb24uZGV0YWlsTm90aWZpY2F0aW9uVHlwZSA9PT0gRGV0YWlsTm90aWZpY2F0aW9uVHlwZUVudW0uQkFUQ0hfSk9CXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0Z2V0Tm90aWZpY2F0aW9uSWNvbihub3RpZmljYXRpb246IFNtc0VtYWlsQXVkaXRSZXNwb25zZURUTyk6IEljb25Qcm9wIHtcclxuXHRcdGlmIChub3RpZmljYXRpb24uZGV0YWlsTm90aWZpY2F0aW9uVHlwZSA9PT0gRGV0YWlsTm90aWZpY2F0aW9uVHlwZUVudW0uVE9ET19JVEVNKSB7XHJcblx0XHRcdHJldHVybiBzb2xpZEljb25zLmZhTGlzdENoZWNrO1xyXG5cdFx0fVxyXG5cdFx0aWYgKG5vdGlmaWNhdGlvbi5kZXRhaWxOb3RpZmljYXRpb25UeXBlID09PSBEZXRhaWxOb3RpZmljYXRpb25UeXBlRW51bS5CQVRDSF9KT0IpIHtcclxuXHRcdFx0cmV0dXJuIHNvbGlkSWNvbnMuZmFHZWFyO1xyXG5cdFx0fVxyXG5cdFx0aWYgKG5vdGlmaWNhdGlvbi50eXBlID09PSBBY3Rpdml0eVR5cGVzRW51bS5TTVMpIHtcclxuXHRcdFx0cmV0dXJuIHJlZ3VsYXJJY29ucy5mYU1lc3NhZ2U7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbm90aWZpY2F0aW9uLnJlYWQgPyByZWd1bGFySWNvbnMuZmFFbnZlbG9wZU9wZW4gOiByZWd1bGFySWNvbnMuZmFFbnZlbG9wZTtcclxuXHR9XHJcblxyXG5cdGdldE5vdGlmaWNhdGlvbkljb25DbGFzcyhub3RpZmljYXRpb246IFNtc0VtYWlsQXVkaXRSZXNwb25zZURUTyk6IHN0cmluZyB7XHJcblx0XHRpZiAobm90aWZpY2F0aW9uLmRldGFpbE5vdGlmaWNhdGlvblR5cGUgPT09IERldGFpbE5vdGlmaWNhdGlvblR5cGVFbnVtLlRPRE9fSVRFTSkge1xyXG5cdFx0XHRyZXR1cm4gJ3RvZG8nO1xyXG5cdFx0fVxyXG5cdFx0aWYgKG5vdGlmaWNhdGlvbi5kZXRhaWxOb3RpZmljYXRpb25UeXBlID09PSBEZXRhaWxOb3RpZmljYXRpb25UeXBlRW51bS5CQVRDSF9KT0IpIHtcclxuXHRcdFx0cmV0dXJuICdiYXRjaCc7XHJcblx0XHR9XHJcblx0XHRpZiAobm90aWZpY2F0aW9uLnR5cGUgPT09IEFjdGl2aXR5VHlwZXNFbnVtLlNNUykge1xyXG5cdFx0XHRyZXR1cm4gJ3Ntcyc7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbm90aWZpY2F0aW9uLnJlYWQgPyAnZW1haWwtcmVhZCcgOiAnZW1haWwtdW5yZWFkJztcclxuXHR9XHJcblxyXG5cdGdldE5vdGlmaWNhdGlvblRpdGxlKG5vdGlmaWNhdGlvbjogU21zRW1haWxBdWRpdFJlc3BvbnNlRFRPKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBub3RpZmljYXRpb24udGVtcGxhdGVUaXRsZSB8fCBub3RpZmljYXRpb24udGVtcGxhdGVDb2RlIHx8ICcnO1xyXG5cdH1cclxuXHJcblx0Z2V0Tm90aWZpY2F0aW9uQ29udGVudChub3RpZmljYXRpb246IFNtc0VtYWlsQXVkaXRSZXNwb25zZURUTyk6IHN0cmluZyB7XHJcblx0XHRjb25zdCB0cnVuY2F0ZWQgPVxyXG5cdFx0XHRub3RpZmljYXRpb24uY29udGVudD8ubGVuZ3RoISA+IDIwMCA/IG5vdGlmaWNhdGlvbi5jb250ZW50Py5zdWJzdHJpbmcoMCwgMjAwKSArICcuLi4nIDogbm90aWZpY2F0aW9uLmNvbnRlbnQ7XHJcblx0XHRyZXR1cm4gdHJ1bmNhdGVkIHx8ICcnO1xyXG5cdH1cclxuXHJcblx0Zm9ybWF0Tm90aWZpY2F0aW9uRGF0ZShzdGFydERhdGU6IG51bWJlciB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcblx0XHRpZiAoIXN0YXJ0RGF0ZSkge1xyXG5cdFx0XHRyZXR1cm4gJyc7XHJcblx0XHR9XHJcblx0XHRjb25zdCBkYXRlU3RyID0gc3RhcnREYXRlLnRvU3RyaW5nKCk7XHJcblx0XHRjb25zdCB5ZWFyID0gcGFyc2VJbnQoZGF0ZVN0ci5zdWJzdHJpbmcoMCwgNCkpO1xyXG5cdFx0Y29uc3QgbW9udGggPSBwYXJzZUludChkYXRlU3RyLnN1YnN0cmluZyg0LCA2KSkgLSAxO1xyXG5cdFx0Y29uc3QgZGF5ID0gcGFyc2VJbnQoZGF0ZVN0ci5zdWJzdHJpbmcoNiwgOCkpO1xyXG5cdFx0Y29uc3QgaG91ciA9IHBhcnNlSW50KGRhdGVTdHIuc3Vic3RyaW5nKDgsIDEwKSk7XHJcblx0XHRjb25zdCBtaW51dGUgPSBwYXJzZUludChkYXRlU3RyLnN1YnN0cmluZygxMCwgMTIpKTtcclxuXHRcdGNvbnN0IHNlY29uZCA9IHBhcnNlSW50KGRhdGVTdHIuc3Vic3RyaW5nKDEyLCAxNCkpO1xyXG5cclxuXHRcdGNvbnN0IG5vdGlmaWNhdGlvbkRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCk7XHJcblx0XHRjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG5cdFx0Y29uc3QgZGlmZk1zID0gbm93LmdldFRpbWUoKSAtIG5vdGlmaWNhdGlvbkRhdGUuZ2V0VGltZSgpO1xyXG5cclxuXHRcdGNvbnN0IGRpZmZNaW51dGVzID0gTWF0aC5mbG9vcihkaWZmTXMgLyAoMTAwMCAqIDYwKSk7XHJcblx0XHRjb25zdCBkaWZmSG91cnMgPSBNYXRoLmZsb29yKGRpZmZNcyAvICgxMDAwICogNjAgKiA2MCkpO1xyXG5cdFx0Y29uc3QgZGlmZkRheXMgPSBNYXRoLmZsb29yKGRpZmZNcyAvICgxMDAwICogNjAgKiA2MCAqIDI0KSk7XHJcblx0XHRjb25zdCBkaWZmV2Vla3MgPSBNYXRoLmZsb29yKGRpZmZEYXlzIC8gNyk7XHJcblx0XHRjb25zdCBkaWZmTW9udGhzID0gTWF0aC5mbG9vcihkaWZmRGF5cyAvIDMwKTtcclxuXHJcblx0XHRpZiAoZGlmZk1pbnV0ZXMgPCAxKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdub3RpZmljYXRpb25zLnRpbWUuanVzdE5vdycpO1xyXG5cdFx0fSBlbHNlIGlmIChkaWZmTWludXRlcyA8IDYwKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdub3RpZmljYXRpb25zLnRpbWUubWludXRlc0FnbycsIHsgY291bnQ6IGRpZmZNaW51dGVzIH0pO1xyXG5cdFx0fSBlbHNlIGlmIChkaWZmSG91cnMgPCAyNCkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnbm90aWZpY2F0aW9ucy50aW1lLmhvdXJzQWdvJywgeyBjb3VudDogZGlmZkhvdXJzIH0pO1xyXG5cdFx0fSBlbHNlIGlmIChkaWZmRGF5cyA8IDcpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ25vdGlmaWNhdGlvbnMudGltZS5kYXlzQWdvJywgeyBjb3VudDogZGlmZkRheXMgfSk7XHJcblx0XHR9IGVsc2UgaWYgKGRpZmZXZWVrcyA8IDQpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ25vdGlmaWNhdGlvbnMudGltZS53ZWVrc0FnbycsIHsgY291bnQ6IGRpZmZXZWVrcyB9KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJldHVybiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdub3RpZmljYXRpb25zLnRpbWUubW9udGhzQWdvJywgeyBjb3VudDogZGlmZk1vbnRocyB9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5hdmlnYXRlVG9BbGxOb3RpZmljYXRpb25zKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoWydtbmcvY29udHJvbC1tYW5hZ2VtZW50L3Ntcy1lbWFpbC1hdWRpdCddKTtcclxuXHRcdHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG5cdH1cclxufVxyXG4iLCI8cC1zaWRlYmFyXHJcblx0Wyh2aXNpYmxlKV09XCJ2aXNpYmxlXCJcclxuXHRwb3NpdGlvbj1cInJpZ2h0XCJcclxuXHRbdHJhbnNpdGlvbk9wdGlvbnNdPVwiJy4zcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSdcIlxyXG5cdHN0eWxlQ2xhc3M9XCJsYXlvdXQtbm90aWZpY2F0aW9ucy1zaWRlYmFyIHctZnVsbCBzbTp3LTMwcmVtXCJcclxuXHQob25TaG93KT1cIm9uU2lkZWJhclNob3coKVwiXHJcblx0KnRyYW5zbG9jbz1cImxldCB0OyByZWFkOiAnbm90aWZpY2F0aW9ucydcIj5cclxuXHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gdy1mdWxsXCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG5cdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktYmVsbCB0ZXh0LXhsXCI+PC9pPlxyXG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtbGdcIj57eyB0KCd0aXRsZScpIH19PC9zcGFuPlxyXG5cdFx0XHRcdEBpZiAodW5yZWFkQ291bnQgPiAwKSB7XHJcblx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInVucmVhZC1jb3VudC1jaGlwXCI+e3sgdW5yZWFkQ291bnQgfX08L3NwYW4+XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIGhlYWRlci1hY3Rpb25zXCI+XHJcblx0XHRcdFx0PHNwYW4gY2xhc3M9XCJvbmx5LXVucmVhZC1sYWJlbFwiPnt7IHQoJ29ubHlVbnJlYWQnKSB9fTwvc3Bhbj5cclxuXHRcdFx0XHQ8YXJpbC1zd2l0Y2ggW25nTW9kZWxdPVwib25seVVucmVhZCgpXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25Pbmx5VW5yZWFkQ2hhbmdlKCRldmVudClcIj48L2FyaWwtc3dpdGNoPlxyXG5cdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktZWxsaXBzaXMtdiBoZWFkZXItbWVudS1pY29uXCIgKGNsaWNrKT1cInRvZ2dsZU1lbnUoJGV2ZW50LCBoZWFkZXJNZW51KVwiPjwvaT5cclxuXHRcdFx0XHQ8cC1tZW51ICNoZWFkZXJNZW51IFtwb3B1cF09XCJ0cnVlXCIgW21vZGVsXT1cIm1lbnVJdGVtc1wiIGFwcGVuZFRvPVwiYm9keVwiPjwvcC1tZW51PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcblxyXG5cdDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb25zLWNvbnRlbnRcIj5cclxuXHRcdEBpZiAobm90aWZpY2F0aW9ucygpLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0PGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvbnMtbGlzdFwiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb25zLWl0ZW1zXCI+XHJcblx0XHRcdFx0XHRAZm9yIChub3RpZmljYXRpb24gb2Ygbm90aWZpY2F0aW9ucygpOyB0cmFjayBub3RpZmljYXRpb24uaWQpIHtcclxuXHRcdFx0XHRcdFx0PGRpdlxyXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwibm90aWZpY2F0aW9uLWl0ZW1cIlxyXG5cdFx0XHRcdFx0XHRcdFtjbGFzcy51bnJlYWQtaXRlbV09XCIhbm90aWZpY2F0aW9uLnJlYWRcIlxyXG5cdFx0XHRcdFx0XHRcdFtjbGFzcy5uYXZpZ2FibGVdPVwiaXNOYXZpZ2FibGUobm90aWZpY2F0aW9uKVwiXHJcblx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cIm9wZW5Ob3RpZmljYXRpb24obm90aWZpY2F0aW9uKVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb24taWNvblwiIFtuZ0NsYXNzXT1cImdldE5vdGlmaWNhdGlvbkljb25DbGFzcyhub3RpZmljYXRpb24pXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZmEtaWNvbiBbaWNvbl09XCJnZXROb3RpZmljYXRpb25JY29uKG5vdGlmaWNhdGlvbilcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpdGVtLWJvZHlcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpdGVtLWhlYWRlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cIml0ZW0tdGl0bGVcIj57eyBnZXROb3RpZmljYXRpb25UaXRsZShub3RpZmljYXRpb24pIH19PC9wPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIml0ZW0tdGltZVwiPnt7IGZvcm1hdE5vdGlmaWNhdGlvbkRhdGUobm90aWZpY2F0aW9uLnNlbmRpbmdEYXRlKSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0QGlmICghbm90aWZpY2F0aW9uLnJlYWQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIml0ZW0tYWN0aW9uc1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGZhLWljb25cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W2ljb25dPVwic29saWRJY29ucy5mYUNpcmNsZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwidW5yZWFkLWRvdFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCJ0KCdtYXJrQXNSZWFkJylcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJsZWZ0XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cIm1hcmtOb3RpZmljYXRpb25Bc1JlYWQobm90aWZpY2F0aW9uKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2ZhLWljb24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YnV0dG9uXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9XCJidXR0b25cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cIm1hcmstcmVhZC1hY3Rpb25cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwidCgnbWFya0FzUmVhZCcpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwibGVmdFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJtYXJrTm90aWZpY2F0aW9uQXNSZWFkKG5vdGlmaWNhdGlvbik7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWNoZWNrXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9idXR0b24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdEBpZiAoZ2V0Tm90aWZpY2F0aW9uQ29udGVudChub3RpZmljYXRpb24pKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdEBpZiAobm90aWZpY2F0aW9uLnR5cGUgPT09IEFjdGl2aXR5VHlwZXNFbnVtLkVNQUlMKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBbaW5uZXJIVE1MXT1cIm5vdGlmaWNhdGlvbi5jb250ZW50IHwgc2FmZTogJ2h0bWwnXCIgY2xhc3M9XCJpdGVtLXByZXZpZXcgaHRtbC1wcmV2aWV3XCI+PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwiaXRlbS1wcmV2aWV3XCI+e3sgZ2V0Tm90aWZpY2F0aW9uQ29udGVudChub3RpZmljYXRpb24pIH19PC9wPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRAaWYgKG5vdGlmaWNhdGlvbi5kZXRhaWxOb3RpZmljYXRpb25UeXBlID09PSBEZXRhaWxOb3RpZmljYXRpb25UeXBlRW51bS5UT0RPX0lURU0pIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJuYXYtY2hpcFwiPnt7IHQoJ2dvVG9UYXNrRGV0YWlsJykgfX0gPGkgY2xhc3M9XCJwaSBwaS1hcnJvdy1yaWdodFwiPjwvaT48L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHR9IEBlbHNlIGlmIChub3RpZmljYXRpb24uZGV0YWlsTm90aWZpY2F0aW9uVHlwZSA9PT0gRGV0YWlsTm90aWZpY2F0aW9uVHlwZUVudW0uQkFUQ0hfSk9CKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibmF2LWNoaXBcIj57eyB0KCdnb1RvQnVsa09wZXJhdGlvbnMnKSB9fSA8aSBjbGFzcz1cInBpIHBpLWFycm93LXJpZ2h0XCI+PC9pPjwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRAaWYgKHJlbWFpbmluZ0NvdW50KCkgPiAwKSB7XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJzaG93LW1vcmVcIj5cclxuXHRcdFx0XHRcdFx0XHQ8YXJpbC1idXR0b25cclxuXHRcdFx0XHRcdFx0XHRcdFtsYWJlbF09XCJ0KCdzaG93TW9yZScsIHsgY291bnQ6IHJlbWFpbmluZ0NvdW50KCkgfSlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0Y29sb3I9XCJwcmltYXJ5XCJcclxuXHRcdFx0XHRcdFx0XHRcdHNpemU9XCJzbVwiXHJcblx0XHRcdFx0XHRcdFx0XHRbb3V0bGluZWRdPVwidHJ1ZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuXHRcdFx0XHRcdFx0XHRcdChjbGlja0V2ZW50KT1cInNob3dNb3JlKClcIj5cclxuXHRcdFx0XHRcdFx0XHQ8L2FyaWwtYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHR9IEBlbHNlIGlmICghbG9hZGluZykge1xyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGVcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZW1wdHktY29udGVudFwiPlxyXG5cdFx0XHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1iZWxsIGVtcHR5LWljb25cIj48L2k+XHJcblx0XHRcdFx0XHQ8aDMgY2xhc3M9XCJlbXB0eS10aXRsZVwiPnt7IHQoJ25vTm90aWZpY2F0aW9ucycpIH19PC9oMz5cclxuXHRcdFx0XHRcdDxwIGNsYXNzPVwiZW1wdHktbWVzc2FnZVwiPnt7IHQoJ25vTm90aWZpY2F0aW9uc0Rlc2NyaXB0aW9uJykgfX08L3A+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0fVxyXG5cdDwvZGl2PlxyXG48L3Atc2lkZWJhcj5cclxuIl19