aril 2.0.1-dev.5 → 2.0.2

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 (343) hide show
  1. package/esm2022/boot/config/apps/src/apps.service.mjs +4 -4
  2. package/esm2022/boot/config/apps/src/auth.guard.mjs +4 -4
  3. package/esm2022/boot/config/apps/src/custom-reuse-outlet.component.mjs +4 -4
  4. package/esm2022/boot/config/apps/src/custom-route-reuse-strategy.class.mjs +4 -4
  5. package/esm2022/boot/config/apps/src/nav-link-context-menu.service.mjs +4 -4
  6. package/esm2022/boot/config/apps/src/nav-link.directive.mjs +4 -4
  7. package/esm2022/boot/config/apps/src/nav.service.mjs +4 -4
  8. package/esm2022/boot/config/apps/src/route-close.service.mjs +4 -4
  9. package/esm2022/boot/config/apps/src/showdowDOMWrapper.mjs +4 -4
  10. package/esm2022/boot/config/apps/src/tab-aware-url-serializer.mjs +4 -4
  11. package/esm2022/boot/host/src/app.component.mjs +4 -4
  12. package/esm2022/boot/mfe/src/app.component.mjs +11 -6
  13. package/esm2022/boot/mfe/src/isolated-location-strategy.mjs +4 -4
  14. package/esm2022/boot/pages/src/forbidden.component.mjs +4 -4
  15. package/esm2022/boot/pages/src/notFound.component.mjs +4 -4
  16. package/esm2022/http/src/httpBackend.mjs +4 -4
  17. package/esm2022/i18n/src/i18n.module.mjs +5 -5
  18. package/esm2022/i18n/src/loader.mjs +4 -4
  19. package/esm2022/selection/src/selection-group.service.mjs +4 -4
  20. package/esm2022/theme/layout/app/expandableMenu/expandable-menu.component.mjs +4 -4
  21. package/esm2022/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.mjs +4 -4
  22. package/esm2022/theme/layout/app/favorite-pages/favorite-pages.service.mjs +4 -4
  23. package/esm2022/theme/layout/app/favorite-pages/modals/add-edit-favorite-modal/add-edit-favorite-modal.component.mjs +4 -4
  24. package/esm2022/theme/layout/app/general-search/general-search.component.mjs +4 -4
  25. package/esm2022/theme/layout/app/history/history-sidebar.component.mjs +4 -4
  26. package/esm2022/theme/layout/app/history/history.service.mjs +4 -4
  27. package/esm2022/theme/layout/app/layout/app.layout.component.mjs +4 -4
  28. package/esm2022/theme/layout/app/layout/mfe.layout.component.mjs +4 -4
  29. package/esm2022/theme/layout/app/notifications/notifications-sidebar.component.mjs +4 -4
  30. package/esm2022/theme/layout/app/profileSidebar/app.profilesidebar.component.mjs +4 -4
  31. package/esm2022/theme/layout/app/profileSidebar/modals/change-password-modal/change-password-modal.component.mjs +4 -4
  32. package/esm2022/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.mjs +4 -4
  33. package/esm2022/theme/layout/app/profileSidebar/profile.service.mjs +4 -4
  34. package/esm2022/theme/layout/app/site-map/site-map-sidebar.component.mjs +4 -4
  35. package/esm2022/theme/layout/app/static-sidebar/static-sidebar.component.mjs +4 -4
  36. package/esm2022/theme/layout/app/topbar/app.topbar.component.mjs +4 -4
  37. package/esm2022/theme/layout/service/app.layout.service.mjs +4 -4
  38. package/esm2022/theme/layout/service/app.menu.service.mjs +4 -4
  39. package/esm2022/theme/layout/service/breadcrumb-publisher.service.mjs +4 -4
  40. package/esm2022/theme/layout/service/breadcrumb.service.mjs +4 -4
  41. package/esm2022/theme/layout/service/notifications.service.mjs +4 -4
  42. package/esm2022/theme/layout/service/search.service.mjs +4 -4
  43. package/esm2022/theme/layout/service/tab-session.service.mjs +4 -4
  44. package/esm2022/ui/autoComplete/src/auto-complete.component.mjs +4 -4
  45. package/esm2022/ui/badge/src/badge.component.mjs +4 -4
  46. package/esm2022/ui/button/src/button.component.mjs +4 -4
  47. package/esm2022/ui/calendar/src/calendar.component.mjs +4 -4
  48. package/esm2022/ui/charts/src/highCharts/gauge/solid-gauge.component.mjs +4 -4
  49. package/esm2022/ui/charts/src/highCharts/line/line-chart-datetime-axis.component.mjs +4 -4
  50. package/esm2022/ui/checkbox/src/check-box.component.mjs +4 -4
  51. package/esm2022/ui/checkbox/src/tri-state-checkbox.component.mjs +4 -4
  52. package/esm2022/ui/chip/src/chip.component.mjs +4 -4
  53. package/esm2022/ui/collapse-reorder-list/src/collapse-reorder-list.component.mjs +4 -4
  54. package/esm2022/ui/dxField/src/dx-field.component.mjs +4 -4
  55. package/esm2022/ui/editor/src/aril-editor.component.mjs +4 -4
  56. package/esm2022/ui/field/src/field.component.mjs +4 -4
  57. package/esm2022/ui/fileUpload/src/file-upload.component.mjs +4 -4
  58. package/esm2022/ui/form/index.mjs +5 -5
  59. package/esm2022/ui/form/src/form-submit-button.component.mjs +4 -4
  60. package/esm2022/ui/form/src/form.component.mjs +4 -4
  61. package/esm2022/ui/img-viewer/src/img-viewer.component.mjs +4 -4
  62. package/esm2022/ui/json-diff-comparison/src/json-diff.component.mjs +4 -4
  63. package/esm2022/ui/lib/src/form/form-error-message.component.mjs +4 -4
  64. package/esm2022/ui/lib/src/form/form-error-message.directive.mjs +4 -4
  65. package/esm2022/ui/lib/src/grid/enum-color-picker.pipe.mjs +4 -4
  66. package/esm2022/ui/lib/src/grid/flex-grid.directive.mjs +4 -4
  67. package/esm2022/ui/lib/src/input/dx-input-error-message.pipe.mjs +4 -4
  68. package/esm2022/ui/lib/src/input/input-error-message.pipe.mjs +4 -4
  69. package/esm2022/ui/lib/src/input/value-accessor.directive.mjs +4 -4
  70. package/esm2022/ui/loader/src/loader.component.mjs +4 -4
  71. package/esm2022/ui/mask/src/mask.component.mjs +4 -4
  72. package/esm2022/ui/multiSelect/src/multi-select.component.mjs +4 -4
  73. package/esm2022/ui/number/src/number.component.mjs +4 -4
  74. package/esm2022/ui/operation-types-dialog/src/operation-types-dialog.component.mjs +4 -4
  75. package/esm2022/ui/panel/src/panel.component.mjs +4 -4
  76. package/esm2022/ui/password/src/password.component.mjs +4 -4
  77. package/esm2022/ui/pdf-viewer/src/pdf-viewer.component.mjs +4 -4
  78. package/esm2022/ui/progressbar/src/progressbar.component.mjs +4 -4
  79. package/esm2022/ui/radioButton/src/radio-button.component.mjs +4 -4
  80. package/esm2022/ui/relativeDateSelector/src/relative-date-selector.component.mjs +4 -4
  81. package/esm2022/ui/selectBox/src/select-box.component.mjs +4 -4
  82. package/esm2022/ui/switch/src/switch.component.mjs +4 -4
  83. package/esm2022/ui/table/index.mjs +5 -5
  84. package/esm2022/ui/table/src/export-overlay-panel.component.mjs +4 -4
  85. package/esm2022/ui/table/src/table-column.component.mjs +4 -4
  86. package/esm2022/ui/table/src/table.component.mjs +4 -4
  87. package/esm2022/ui/table-expand/index.mjs +5 -5
  88. package/esm2022/ui/table-expand/src/table-column.component.mjs +4 -4
  89. package/esm2022/ui/table-expand/src/table-expand-area.component.mjs +4 -4
  90. package/esm2022/ui/table-expand/src/table.component.mjs +4 -4
  91. package/esm2022/ui/tag/src/tag.component.mjs +4 -4
  92. package/esm2022/ui/tagBox/src/tag-box.component.mjs +4 -4
  93. package/esm2022/ui/text/src/text.component.mjs +4 -4
  94. package/esm2022/ui/textArea/src/text-area.component.mjs +4 -4
  95. package/esm2022/ui/toggle-button/src/toggle-button.component.mjs +4 -4
  96. package/esm2022/ui/translate-input/src/aril-lang-modal/aril-lang-modal.component.mjs +4 -4
  97. package/esm2022/ui/translate-input/src/aril-translate-input.component.mjs +4 -4
  98. package/esm2022/ui/tree/src/tree.component.mjs +4 -4
  99. package/esm2022/ui/treeSelect/src/treeSelect.component.mjs +4 -4
  100. package/esm2022/ui/value/src/value.component.mjs +4 -4
  101. package/esm2022/ui-business/assetPicker/src/asset-picker.component.mjs +4 -4
  102. package/esm2022/ui-business/detailed-overlay-panel/src/detailed-overlay-panel.component.mjs +4 -4
  103. package/esm2022/ui-business/enumPicker/src/enum-picker.component.mjs +4 -4
  104. package/esm2022/ui-business/image-viewer/src/aril-image-viewer.component.mjs +4 -4
  105. package/esm2022/ui-business/multiple-ref-value/src/multiple-ref-value.component.mjs +4 -4
  106. package/esm2022/ui-business/notification-templates-dialog/src/notification-templates-dialog.component.mjs +4 -4
  107. package/esm2022/ui-business/pdf-preview-modal/src/pdf-preview-modal.component.mjs +4 -4
  108. package/esm2022/ui-business/ref-value/src/ref-value.component.mjs +4 -4
  109. package/esm2022/ui-business/rolePicker/src/role-picker.component.mjs +4 -4
  110. package/esm2022/ui-business/trace-drawer/src/app-log.service.mjs +4 -4
  111. package/esm2022/ui-business/trace-drawer/src/trace-drawer.component.mjs +4 -4
  112. package/esm2022/ui-business/trace-drawer/src/trace-log.service.mjs +4 -4
  113. package/esm2022/ui-business/trace-id/src/trace-id.component.mjs +4 -4
  114. package/esm2022/ui-business/userPicker/src/user-picker.component.mjs +4 -4
  115. package/esm2022/util/activity/src/activity.service.mjs +4 -4
  116. package/esm2022/util/block/src/block.mjs +4 -4
  117. package/esm2022/util/directives/src/detail-page-customization/detail-page-customization.directive.mjs +4 -4
  118. package/esm2022/util/directives/src/dialog-component/plugin-dialog.component.mjs +4 -4
  119. package/esm2022/util/directives/src/dialog-service/plugin-dialog.service.mjs +4 -4
  120. package/esm2022/util/lib/src/module-router.mjs +4 -4
  121. package/esm2022/util/pipes/src/distance-to-now.pipe.mjs +4 -4
  122. package/esm2022/util/pipes/src/get-column-by-field.pipe.mjs +4 -4
  123. package/esm2022/util/pipes/src/parse.pipe.mjs +4 -4
  124. package/esm2022/util/pipes/src/round-number.pipe.mjs +4 -4
  125. package/esm2022/util/pipes/src/safe.pipe.mjs +4 -4
  126. package/esm2022/util/pipes/src/translate-json/translate-json.pipe.mjs +4 -4
  127. package/esm2022/util/pub-sub/src/pub-sub.service.mjs +4 -4
  128. package/esm2022/util/sync-active-tab-route/src/sync-active-tab-route.directive.mjs +4 -4
  129. package/fesm2022/{aril-app.component-MjG_tPEe.mjs → aril-app.component-Bl9p6jXU.mjs} +11 -6
  130. package/fesm2022/aril-app.component-Bl9p6jXU.mjs.map +1 -0
  131. package/fesm2022/aril-boot-base.mjs +1 -1
  132. package/fesm2022/aril-boot-base.mjs.map +1 -1
  133. package/fesm2022/aril-boot-bridge.mjs.map +1 -1
  134. package/fesm2022/aril-boot-config-api.mjs.map +1 -1
  135. package/fesm2022/aril-boot-config-apps.mjs +31 -31
  136. package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
  137. package/fesm2022/aril-boot-config-plugins.mjs +1 -1
  138. package/fesm2022/aril-boot-config-plugins.mjs.map +1 -1
  139. package/fesm2022/aril-boot-config-translate.mjs.map +1 -1
  140. package/fesm2022/aril-boot-host.mjs +4 -4
  141. package/fesm2022/aril-boot-host.mjs.map +1 -1
  142. package/fesm2022/{aril-boot-mfe-app.component-DtspQ3J8.mjs → aril-boot-mfe-app.component-DovYRbZO.mjs} +12 -7
  143. package/fesm2022/aril-boot-mfe-app.component-DovYRbZO.mjs.map +1 -0
  144. package/fesm2022/{aril-boot-mfe-aril-boot-mfe-lovoFcgw.mjs → aril-boot-mfe-aril-boot-mfe-D9YM2exR.mjs} +7 -7
  145. package/fesm2022/{aril-boot-mfe-aril-boot-mfe-lovoFcgw.mjs.map → aril-boot-mfe-aril-boot-mfe-D9YM2exR.mjs.map} +1 -1
  146. package/fesm2022/aril-boot-mfe.mjs +1 -1
  147. package/fesm2022/aril-boot-pages.mjs +6 -6
  148. package/fesm2022/aril-boot-pages.mjs.map +1 -1
  149. package/fesm2022/aril-http.mjs +3 -3
  150. package/fesm2022/aril-http.mjs.map +1 -1
  151. package/fesm2022/aril-i18n.mjs +7 -7
  152. package/fesm2022/aril-i18n.mjs.map +1 -1
  153. package/fesm2022/aril-keycloak.mjs.map +1 -1
  154. package/fesm2022/aril-provider.mjs +1 -1
  155. package/fesm2022/aril-provider.mjs.map +1 -1
  156. package/fesm2022/aril-selection.mjs +3 -3
  157. package/fesm2022/aril-selection.mjs.map +1 -1
  158. package/fesm2022/aril-theme-layout.mjs +74 -74
  159. package/fesm2022/aril-theme-layout.mjs.map +1 -1
  160. package/fesm2022/aril-ui-autoComplete.mjs +6 -6
  161. package/fesm2022/aril-ui-autoComplete.mjs.map +1 -1
  162. package/fesm2022/aril-ui-badge.mjs +4 -4
  163. package/fesm2022/aril-ui-badge.mjs.map +1 -1
  164. package/fesm2022/aril-ui-business-assetPicker.mjs +5 -5
  165. package/fesm2022/aril-ui-business-assetPicker.mjs.map +1 -1
  166. package/fesm2022/aril-ui-business-detailed-overlay-panel.mjs +5 -5
  167. package/fesm2022/aril-ui-business-detailed-overlay-panel.mjs.map +1 -1
  168. package/fesm2022/aril-ui-business-enumPicker.mjs +5 -5
  169. package/fesm2022/aril-ui-business-enumPicker.mjs.map +1 -1
  170. package/fesm2022/aril-ui-business-image-viewer.mjs +3 -3
  171. package/fesm2022/aril-ui-business-image-viewer.mjs.map +1 -1
  172. package/fesm2022/aril-ui-business-multiple-ref-value.mjs +4 -4
  173. package/fesm2022/aril-ui-business-multiple-ref-value.mjs.map +1 -1
  174. package/fesm2022/aril-ui-business-notification-templates-dialog.mjs +3 -3
  175. package/fesm2022/aril-ui-business-notification-templates-dialog.mjs.map +1 -1
  176. package/fesm2022/aril-ui-business-pdf-preview-modal.mjs +3 -3
  177. package/fesm2022/aril-ui-business-pdf-preview-modal.mjs.map +1 -1
  178. package/fesm2022/aril-ui-business-ref-value.mjs +4 -4
  179. package/fesm2022/aril-ui-business-ref-value.mjs.map +1 -1
  180. package/fesm2022/aril-ui-business-rolePicker.mjs +4 -4
  181. package/fesm2022/aril-ui-business-rolePicker.mjs.map +1 -1
  182. package/fesm2022/aril-ui-business-trace-drawer.mjs +10 -10
  183. package/fesm2022/aril-ui-business-trace-drawer.mjs.map +1 -1
  184. package/fesm2022/aril-ui-business-trace-id.mjs +4 -4
  185. package/fesm2022/aril-ui-business-trace-id.mjs.map +1 -1
  186. package/fesm2022/aril-ui-business-userPicker.mjs +3 -3
  187. package/fesm2022/aril-ui-business-userPicker.mjs.map +1 -1
  188. package/fesm2022/aril-ui-button.mjs +4 -4
  189. package/fesm2022/aril-ui-button.mjs.map +1 -1
  190. package/fesm2022/aril-ui-calendar.mjs +3 -3
  191. package/fesm2022/aril-ui-calendar.mjs.map +1 -1
  192. package/fesm2022/aril-ui-charts.mjs +6 -6
  193. package/fesm2022/aril-ui-charts.mjs.map +1 -1
  194. package/fesm2022/aril-ui-checkbox.mjs +6 -6
  195. package/fesm2022/aril-ui-checkbox.mjs.map +1 -1
  196. package/fesm2022/aril-ui-chip.mjs +4 -4
  197. package/fesm2022/aril-ui-chip.mjs.map +1 -1
  198. package/fesm2022/aril-ui-collapse-reorder-list.mjs +4 -4
  199. package/fesm2022/aril-ui-collapse-reorder-list.mjs.map +1 -1
  200. package/fesm2022/aril-ui-dxField.mjs +4 -4
  201. package/fesm2022/aril-ui-dxField.mjs.map +1 -1
  202. package/fesm2022/aril-ui-editor.mjs +4 -4
  203. package/fesm2022/aril-ui-editor.mjs.map +1 -1
  204. package/fesm2022/aril-ui-field.mjs +4 -4
  205. package/fesm2022/aril-ui-field.mjs.map +1 -1
  206. package/fesm2022/aril-ui-fileUpload.mjs +4 -4
  207. package/fesm2022/aril-ui-fileUpload.mjs.map +1 -1
  208. package/fesm2022/aril-ui-form.mjs +11 -11
  209. package/fesm2022/aril-ui-form.mjs.map +1 -1
  210. package/fesm2022/aril-ui-img-viewer.mjs +3 -3
  211. package/fesm2022/aril-ui-img-viewer.mjs.map +1 -1
  212. package/fesm2022/aril-ui-json-diff-comparison.mjs +4 -4
  213. package/fesm2022/aril-ui-json-diff-comparison.mjs.map +1 -1
  214. package/fesm2022/aril-ui-lib.mjs +22 -22
  215. package/fesm2022/aril-ui-lib.mjs.map +1 -1
  216. package/fesm2022/aril-ui-loader.mjs +3 -3
  217. package/fesm2022/aril-ui-loader.mjs.map +1 -1
  218. package/fesm2022/aril-ui-mask.mjs +3 -3
  219. package/fesm2022/aril-ui-mask.mjs.map +1 -1
  220. package/fesm2022/aril-ui-multiSelect.mjs +3 -3
  221. package/fesm2022/aril-ui-multiSelect.mjs.map +1 -1
  222. package/fesm2022/aril-ui-number.mjs +3 -3
  223. package/fesm2022/aril-ui-number.mjs.map +1 -1
  224. package/fesm2022/aril-ui-operation-types-dialog.mjs +3 -3
  225. package/fesm2022/aril-ui-operation-types-dialog.mjs.map +1 -1
  226. package/fesm2022/aril-ui-panel.mjs +4 -4
  227. package/fesm2022/aril-ui-panel.mjs.map +1 -1
  228. package/fesm2022/aril-ui-password.mjs +3 -3
  229. package/fesm2022/aril-ui-password.mjs.map +1 -1
  230. package/fesm2022/aril-ui-pdf-viewer.mjs +3 -3
  231. package/fesm2022/aril-ui-pdf-viewer.mjs.map +1 -1
  232. package/fesm2022/aril-ui-progressbar.mjs +3 -3
  233. package/fesm2022/aril-ui-progressbar.mjs.map +1 -1
  234. package/fesm2022/aril-ui-radioButton.mjs +3 -3
  235. package/fesm2022/aril-ui-radioButton.mjs.map +1 -1
  236. package/fesm2022/aril-ui-relativeDateSelector.mjs +4 -4
  237. package/fesm2022/aril-ui-relativeDateSelector.mjs.map +1 -1
  238. package/fesm2022/aril-ui-selectBox.mjs +5 -5
  239. package/fesm2022/aril-ui-selectBox.mjs.map +1 -1
  240. package/fesm2022/aril-ui-switch.mjs +3 -3
  241. package/fesm2022/aril-ui-switch.mjs.map +1 -1
  242. package/fesm2022/aril-ui-table-expand.mjs +14 -14
  243. package/fesm2022/aril-ui-table-expand.mjs.map +1 -1
  244. package/fesm2022/aril-ui-table.mjs +15 -15
  245. package/fesm2022/aril-ui-table.mjs.map +1 -1
  246. package/fesm2022/aril-ui-tag.mjs +3 -3
  247. package/fesm2022/aril-ui-tag.mjs.map +1 -1
  248. package/fesm2022/aril-ui-tagBox.mjs +5 -5
  249. package/fesm2022/aril-ui-tagBox.mjs.map +1 -1
  250. package/fesm2022/aril-ui-text.mjs +3 -3
  251. package/fesm2022/aril-ui-text.mjs.map +1 -1
  252. package/fesm2022/aril-ui-textArea.mjs +3 -3
  253. package/fesm2022/aril-ui-textArea.mjs.map +1 -1
  254. package/fesm2022/aril-ui-toggle-button.mjs +4 -4
  255. package/fesm2022/aril-ui-toggle-button.mjs.map +1 -1
  256. package/fesm2022/aril-ui-translate-input.mjs +6 -6
  257. package/fesm2022/aril-ui-translate-input.mjs.map +1 -1
  258. package/fesm2022/aril-ui-tree.mjs +4 -4
  259. package/fesm2022/aril-ui-tree.mjs.map +1 -1
  260. package/fesm2022/aril-ui-treeSelect.mjs +4 -4
  261. package/fesm2022/aril-ui-treeSelect.mjs.map +1 -1
  262. package/fesm2022/aril-ui-value.mjs +5 -5
  263. package/fesm2022/aril-ui-value.mjs.map +1 -1
  264. package/fesm2022/aril-util-activity.mjs +3 -3
  265. package/fesm2022/aril-util-activity.mjs.map +1 -1
  266. package/fesm2022/aril-util-block.mjs +3 -3
  267. package/fesm2022/aril-util-block.mjs.map +1 -1
  268. package/fesm2022/aril-util-directives.mjs +10 -10
  269. package/fesm2022/aril-util-directives.mjs.map +1 -1
  270. package/fesm2022/aril-util-lib.mjs +3 -3
  271. package/fesm2022/aril-util-lib.mjs.map +1 -1
  272. package/fesm2022/aril-util-pipes.mjs +18 -18
  273. package/fesm2022/aril-util-pipes.mjs.map +1 -1
  274. package/fesm2022/aril-util-primitive-extensions.mjs.map +1 -1
  275. package/fesm2022/aril-util-pub-sub.mjs +3 -3
  276. package/fesm2022/aril-util-pub-sub.mjs.map +1 -1
  277. package/fesm2022/aril-util-sync-active-tab-route.mjs +4 -4
  278. package/fesm2022/aril-util-sync-active-tab-route.mjs.map +1 -1
  279. package/fesm2022/aril.mjs +9 -9
  280. package/fesm2022/aril.mjs.map +1 -1
  281. package/package.json +160 -160
  282. package/scripts/mf-shared.js +47 -47
  283. package/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.d.ts +16 -0
  284. package/theme/layout/app/history/history-sidebar.component.d.ts +16 -0
  285. package/theme/layout/app/notifications/notifications-sidebar.component.d.ts +16 -0
  286. package/theme/layout/app/site-map/site-map-sidebar.component.d.ts +16 -0
  287. package/theme/layout/service/tab-session.service.ts +138 -138
  288. package/ui/autoComplete/src/auto-complete.component.d.ts +8 -8
  289. package/ui/badge/src/badge.component.d.ts +9 -9
  290. package/ui/button/src/button.component.d.ts +12 -12
  291. package/ui/calendar/src/calendar.component.d.ts +22 -22
  292. package/ui/charts/src/highCharts/gauge/solid-gauge.component.d.ts +3 -3
  293. package/ui/charts/src/highCharts/line/line-chart-datetime-axis.component.d.ts +5 -5
  294. package/ui/checkbox/src/check-box.component.d.ts +3 -3
  295. package/ui/checkbox/src/tri-state-checkbox.component.d.ts +2 -2
  296. package/ui/chip/src/chip.component.d.ts +7 -7
  297. package/ui/collapse-reorder-list/src/collapse-reorder-list.component.d.ts +4 -4
  298. package/ui/dxField/src/dx-field.component.d.ts +5 -5
  299. package/ui/editor/src/aril-editor.component.d.ts +3 -3
  300. package/ui/field/src/field.component.d.ts +9 -9
  301. package/ui/fileUpload/src/file-upload.component.d.ts +14 -14
  302. package/ui/form/src/form-submit-button.component.d.ts +1 -1
  303. package/ui/form/src/form.component.d.ts +1 -1
  304. package/ui/img-viewer/src/img-viewer.component.d.ts +1 -1
  305. package/ui/lib/src/form/form-error-message.directive.d.ts +1 -1
  306. package/ui/mask/src/mask.component.d.ts +6 -6
  307. package/ui/multiSelect/src/multi-select.component.d.ts +13 -13
  308. package/ui/number/src/number.component.d.ts +15 -15
  309. package/ui/panel/src/panel.component.d.ts +6 -6
  310. package/ui/password/src/password.component.d.ts +4 -4
  311. package/ui/pdf-viewer/src/pdf-viewer.component.d.ts +12 -12
  312. package/ui/progressbar/src/progressbar.component.d.ts +3 -3
  313. package/ui/radioButton/src/radio-button.component.d.ts +3 -3
  314. package/ui/selectBox/src/select-box.component.d.ts +9 -9
  315. package/ui/switch/src/switch.component.d.ts +1 -1
  316. package/ui/table/src/export-overlay-panel.component.d.ts +2 -2
  317. package/ui/table/src/table-column.component.d.ts +11 -11
  318. package/ui/table/src/table.component.d.ts +35 -35
  319. package/ui/table-expand/src/table-column.component.d.ts +6 -6
  320. package/ui/table-expand/src/table.component.d.ts +20 -20
  321. package/ui/tag/src/tag.component.d.ts +4 -6
  322. package/ui/tagBox/src/tag-box.component.d.ts +7 -7
  323. package/ui/text/src/text.component.d.ts +5 -5
  324. package/ui/textArea/src/text-area.component.d.ts +5 -5
  325. package/ui/toggle-button/src/toggle-button.component.d.ts +1 -1
  326. package/ui/translate-input/src/aril-translate-input.component.d.ts +2 -2
  327. package/ui/tree/src/tree.component.d.ts +8 -8
  328. package/ui/treeSelect/src/treeSelect.component.d.ts +12 -12
  329. package/ui/value/src/value.component.d.ts +15 -15
  330. package/ui-business/assetPicker/src/asset-picker.component.d.ts +11 -11
  331. package/ui-business/detailed-overlay-panel/src/detailed-overlay-panel.component.d.ts +3 -6
  332. package/ui-business/enumPicker/src/enum-picker.component.d.ts +23 -23
  333. package/ui-business/image-viewer/src/aril-image-viewer.component.d.ts +8 -8
  334. package/ui-business/multiple-ref-value/src/multiple-ref-value.component.d.ts +2 -5
  335. package/ui-business/ref-value/src/ref-value.component.d.ts +5 -5
  336. package/ui-business/rolePicker/src/role-picker.component.d.ts +6 -6
  337. package/ui-business/trace-drawer/src/trace-drawer.component.d.ts +8 -8
  338. package/ui-business/trace-id/src/trace-id.component.d.ts +6 -6
  339. package/ui-business/userPicker/src/user-picker.component.d.ts +3 -3
  340. package/util/block/src/block.d.ts +2 -2
  341. package/util/lib/src/types.d.ts +16 -0
  342. package/fesm2022/aril-app.component-MjG_tPEe.mjs.map +0 -1
  343. package/fesm2022/aril-boot-mfe-app.component-DtspQ3J8.mjs.map +0 -1
@@ -363,14 +363,14 @@ export class ExpandableMenuComponent {
363
363
  this.sidebarExpanded = false;
364
364
  }
365
365
  }
366
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ExpandableMenuComponent, deps: [{ token: i1.TranslateJsonPipe }, { token: i2.Router }, { token: i3.KeycloakService }, { token: i4.TranslocoService }, { token: i5.LayoutService }, { token: i6.HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }
367
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ExpandableMenuComponent, isStandalone: true, selector: "app-expandable-menu", host: { listeners: { "window:resize": "onResize()" } }, providers: [TranslateJsonPipe], ngImport: i0, template: "<div class=\"new-layout-sidebar\" >\r\n\t<!-- Main sidebar (first level) -->\r\n\t<div class=\"main-sidebar\" style=\"position: relative;\">\r\n\t\t<div class=\"main-sidebar-content\">\r\n\t\t\t<ul class=\"main-menu\">\r\n\t\t\t\t@for(item of getMenuItems(); track item; let i = $index){\r\n\t\t\t\t\t@if(!item.separator){\r\n\t\t\t\t\t\t<li\r\n\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(item) || isHaveSelectedChildItem(item)}\"\r\n\t\t\t\t\t\t(click)=\"selectMainItem($event, i, item)\"\r\n\t\t\t\t\t\t(auxclick)=\"onMenuAuxClick($event, item)\"\r\n\t\t\t\t\t\t(mousedown)=\"onMenuMousedown($event)\"\r\n\t\t\t\t\t\t[pTooltip]=\"(item.label && activeLang() ? item.label[activeLang()!] || '' : '')\"\r\n\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t<div class=\"main-menu-item\">\r\n\t\t\t\t\t\t\t<i [ngClass]=\"item.icon\" class=\"menu-icon\"></i>\r\n\t\t\t\t\t\t\t<!-- <small class=\"menu-label\">{{ item.label && activeLang() ? item.label[activeLang()!] || '' : '' }}</small> -->\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</ul>\r\n\t\t</div>\r\n\t</div>\r\n\t\t @if(selectedMainMenuItem && selectedMainMenuItem.items && selectedMainMenuItem.items.length > 0){\r\n\r\n\t\t\t <div class=\"sidebar-toggle-container\">\r\n\t\t\t\t <button class=\"sidebar-circle-toggle-btn\" (click)=\"toggleSidebar()\">\r\n\t\t\t\t\t <i class=\"pi\" [ngClass]=\"sidebarExpanded ? 'pi-angle-left' : 'pi-angle-right'\"></i>\r\n\t\t\t\t </button>\r\n\t\t\t </div>\r\n\t\t }\r\n\r\n\t<!-- Secondary sidebar (second level) -->\r\n\t<div class=\"secondary-sidebar\" [ngClass]=\"{'expanded': sidebarExpanded}\">\r\n\t\t<div class=\"secondary-content-wrapper\" style=\"position: relative;\">\r\n\t\t\t<!-- Secondary sidebar content -->\r\n\t\t\t<div class=\"secondary-sidebar-content\">\r\n\t\t\t\t@if(selectedMainMenuItem){\r\n\t\t\t\t\t<ul class=\"secondary-menu\">\r\n\t\t\t\t\t\t@for(subItem of selectedMainMenuItem.items; track subItem; let i = $index){\r\n\t\t\t\t\t\t\t\t<!-- Action menu item -->\r\n\t\t\t\t\t\t\t\t@if(subItem.action) {\r\n\t\t\t\t\t\t\t\t\t<li class=\"secondary-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(subItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t<a class=\"secondary-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(subItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(subItem.label, activeLang(), 'secondary') ? (subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(subItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"submenu-icon pi pi-spin pi-spinner\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i [ngClass]=\"subItem.icon\" class=\"submenu-icon\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"submenu-label\">{{ subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<!-- Regular menu item -->\r\n\t\t\t\t\t\t\t\t<li class=\"secondary-menu-item\" [ngClass]=\"{'active': isActiveRoute(subItem)}\">\r\n\t\t\t\t\t\t\t\t\t<a [attr.href]=\"subItem.routerLink ? getHashHref(subItem.routerLink) : null\"\r\n\t\t\t\t\t\t\t\t\t\t[arilNavLink]=\"{ tabId: '', navLink: subItem.routerLink || '', navName: getLocalText(subItem.label), icon: subItem.icon }\"\r\n\t\t\t\t\t\t\t\t\t\t(click)=\"onMenuClick($event, subItem)\"\r\n\t\t\t\t\t\t\t\t\t\t(auxclick)=\"onMenuAuxClick($event, subItem)\"\r\n\t\t\t\t\t\t\t\t\t\t(mousedown)=\"onMenuMousedown($event)\"\r\n\t\t\t\t\t\t\t\t\t\tclass=\"secondary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(subItem.label, activeLang(), 'secondary') ? (subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t<i [ngClass]=\"subItem.icon\" class=\"submenu-icon\"></i>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"submenu-label\">{{ subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t<!-- Always render submenu if it exists -->\r\n\t\t\t\t\t\t\t\t\t @if(subItem.items && subItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t <ul class=\"tertiary-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t@for(childItem of subItem.items; track childItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<!-- Action item at tertiary level -->\r\n\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.action) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"tertiary-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(childItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"tertiary-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(childItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(childItem.label, activeLang(), 'tertiary') ? (childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(childItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\"><i class=\"pi pi-spin pi-spinner\"></i> {{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\">{{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"tertiary-menu-item\" [ngClass]=\"{'active': isActiveRoute(childItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a [attr.href]=\"childItem.routerLink ? getHashHref(childItem.routerLink) : null\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[arilNavLink]=\"{ tabId: '', navLink: childItem.routerLink || '', navName: getLocalText(childItem.label), icon: childItem.icon }\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"onMenuClick($event, childItem)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(auxclick)=\"onMenuAuxClick($event, childItem)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(mousedown)=\"onMenuMousedown($event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"tertiary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(childItem.label, activeLang(), 'tertiary') ? (childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\">{{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- Always render deeper levels if they exist, also visible by default -->\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.items && childItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ul class=\"nested-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@for(nestedItem of childItem.items; track nestedItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(nestedItem.action) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"nested-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(nestedItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"nested-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(nestedItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(nestedItem.label, activeLang(), 'nested') ? (nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(nestedItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\"><i class=\"pi pi-spin pi-spinner\"></i> {{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\">{{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-item\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(nestedItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a [attr.href]=\"nestedItem.routerLink ? getHashHref(nestedItem.routerLink) : null\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[arilNavLink]=\"{ tabId: '', navLink: nestedItem.routerLink || '', navName: getLocalText(nestedItem.label), icon: nestedItem.icon }\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"onMenuClick($event, nestedItem)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(auxclick)=\"onMenuAuxClick($event, nestedItem)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(mousedown)=\"onMenuMousedown($event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(nestedItem.label, activeLang(), 'nested') ? (nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\">{{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t </ul>\r\n\t\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</ul>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: NavLinkDirective, selector: "[arilNavLink]", inputs: ["arilNavLink"] }] }); }
366
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExpandableMenuComponent, deps: [{ token: i1.TranslateJsonPipe }, { token: i2.Router }, { token: i3.KeycloakService }, { token: i4.TranslocoService }, { token: i5.LayoutService }, { token: i6.HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }
367
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ExpandableMenuComponent, isStandalone: true, selector: "app-expandable-menu", host: { listeners: { "window:resize": "onResize()" } }, providers: [TranslateJsonPipe], ngImport: i0, template: "<div class=\"new-layout-sidebar\" >\r\n\t<!-- Main sidebar (first level) -->\r\n\t<div class=\"main-sidebar\" style=\"position: relative;\">\r\n\t\t<div class=\"main-sidebar-content\">\r\n\t\t\t<ul class=\"main-menu\">\r\n\t\t\t\t@for(item of getMenuItems(); track item; let i = $index){\r\n\t\t\t\t\t@if(!item.separator){\r\n\t\t\t\t\t\t<li\r\n\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(item) || isHaveSelectedChildItem(item)}\"\r\n\t\t\t\t\t\t(click)=\"selectMainItem($event, i, item)\"\r\n\t\t\t\t\t\t(auxclick)=\"onMenuAuxClick($event, item)\"\r\n\t\t\t\t\t\t(mousedown)=\"onMenuMousedown($event)\"\r\n\t\t\t\t\t\t[pTooltip]=\"(item.label && activeLang() ? item.label[activeLang()!] || '' : '')\"\r\n\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t<div class=\"main-menu-item\">\r\n\t\t\t\t\t\t\t<i [ngClass]=\"item.icon\" class=\"menu-icon\"></i>\r\n\t\t\t\t\t\t\t<!-- <small class=\"menu-label\">{{ item.label && activeLang() ? item.label[activeLang()!] || '' : '' }}</small> -->\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</ul>\r\n\t\t</div>\r\n\t</div>\r\n\t\t @if(selectedMainMenuItem && selectedMainMenuItem.items && selectedMainMenuItem.items.length > 0){\r\n\r\n\t\t\t <div class=\"sidebar-toggle-container\">\r\n\t\t\t\t <button class=\"sidebar-circle-toggle-btn\" (click)=\"toggleSidebar()\">\r\n\t\t\t\t\t <i class=\"pi\" [ngClass]=\"sidebarExpanded ? 'pi-angle-left' : 'pi-angle-right'\"></i>\r\n\t\t\t\t </button>\r\n\t\t\t </div>\r\n\t\t }\r\n\r\n\t<!-- Secondary sidebar (second level) -->\r\n\t<div class=\"secondary-sidebar\" [ngClass]=\"{'expanded': sidebarExpanded}\">\r\n\t\t<div class=\"secondary-content-wrapper\" style=\"position: relative;\">\r\n\t\t\t<!-- Secondary sidebar content -->\r\n\t\t\t<div class=\"secondary-sidebar-content\">\r\n\t\t\t\t@if(selectedMainMenuItem){\r\n\t\t\t\t\t<ul class=\"secondary-menu\">\r\n\t\t\t\t\t\t@for(subItem of selectedMainMenuItem.items; track subItem; let i = $index){\r\n\t\t\t\t\t\t\t\t<!-- Action menu item -->\r\n\t\t\t\t\t\t\t\t@if(subItem.action) {\r\n\t\t\t\t\t\t\t\t\t<li class=\"secondary-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(subItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t<a class=\"secondary-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(subItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(subItem.label, activeLang(), 'secondary') ? (subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(subItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"submenu-icon pi pi-spin pi-spinner\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i [ngClass]=\"subItem.icon\" class=\"submenu-icon\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"submenu-label\">{{ subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<!-- Regular menu item -->\r\n\t\t\t\t\t\t\t\t<li class=\"secondary-menu-item\" [ngClass]=\"{'active': isActiveRoute(subItem)}\">\r\n\t\t\t\t\t\t\t\t\t<a [attr.href]=\"subItem.routerLink ? getHashHref(subItem.routerLink) : null\"\r\n\t\t\t\t\t\t\t\t\t\t[arilNavLink]=\"{ tabId: '', navLink: subItem.routerLink || '', navName: getLocalText(subItem.label), icon: subItem.icon }\"\r\n\t\t\t\t\t\t\t\t\t\t(click)=\"onMenuClick($event, subItem)\"\r\n\t\t\t\t\t\t\t\t\t\t(auxclick)=\"onMenuAuxClick($event, subItem)\"\r\n\t\t\t\t\t\t\t\t\t\t(mousedown)=\"onMenuMousedown($event)\"\r\n\t\t\t\t\t\t\t\t\t\tclass=\"secondary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(subItem.label, activeLang(), 'secondary') ? (subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t<i [ngClass]=\"subItem.icon\" class=\"submenu-icon\"></i>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"submenu-label\">{{ subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t<!-- Always render submenu if it exists -->\r\n\t\t\t\t\t\t\t\t\t @if(subItem.items && subItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t <ul class=\"tertiary-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t@for(childItem of subItem.items; track childItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<!-- Action item at tertiary level -->\r\n\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.action) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"tertiary-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(childItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"tertiary-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(childItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(childItem.label, activeLang(), 'tertiary') ? (childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(childItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\"><i class=\"pi pi-spin pi-spinner\"></i> {{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\">{{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"tertiary-menu-item\" [ngClass]=\"{'active': isActiveRoute(childItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a [attr.href]=\"childItem.routerLink ? getHashHref(childItem.routerLink) : null\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[arilNavLink]=\"{ tabId: '', navLink: childItem.routerLink || '', navName: getLocalText(childItem.label), icon: childItem.icon }\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"onMenuClick($event, childItem)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(auxclick)=\"onMenuAuxClick($event, childItem)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(mousedown)=\"onMenuMousedown($event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"tertiary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(childItem.label, activeLang(), 'tertiary') ? (childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\">{{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- Always render deeper levels if they exist, also visible by default -->\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.items && childItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ul class=\"nested-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@for(nestedItem of childItem.items; track nestedItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(nestedItem.action) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"nested-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(nestedItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"nested-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(nestedItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(nestedItem.label, activeLang(), 'nested') ? (nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(nestedItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\"><i class=\"pi pi-spin pi-spinner\"></i> {{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\">{{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-item\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(nestedItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a [attr.href]=\"nestedItem.routerLink ? getHashHref(nestedItem.routerLink) : null\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[arilNavLink]=\"{ tabId: '', navLink: nestedItem.routerLink || '', navName: getLocalText(nestedItem.label), icon: nestedItem.icon }\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"onMenuClick($event, nestedItem)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(auxclick)=\"onMenuAuxClick($event, nestedItem)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(mousedown)=\"onMenuMousedown($event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(nestedItem.label, activeLang(), 'nested') ? (nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\">{{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t </ul>\r\n\t\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</ul>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t\r\n</div>\r\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: NavLinkDirective, selector: "[arilNavLink]", inputs: ["arilNavLink"] }] }); }
368
368
  }
369
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ExpandableMenuComponent, decorators: [{
369
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExpandableMenuComponent, decorators: [{
370
370
  type: Component,
371
371
  args: [{ standalone: true, selector: 'app-expandable-menu', imports: [NgClass, TooltipModule, NavLinkDirective], providers: [TranslateJsonPipe], template: "<div class=\"new-layout-sidebar\" >\r\n\t<!-- Main sidebar (first level) -->\r\n\t<div class=\"main-sidebar\" style=\"position: relative;\">\r\n\t\t<div class=\"main-sidebar-content\">\r\n\t\t\t<ul class=\"main-menu\">\r\n\t\t\t\t@for(item of getMenuItems(); track item; let i = $index){\r\n\t\t\t\t\t@if(!item.separator){\r\n\t\t\t\t\t\t<li\r\n\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(item) || isHaveSelectedChildItem(item)}\"\r\n\t\t\t\t\t\t(click)=\"selectMainItem($event, i, item)\"\r\n\t\t\t\t\t\t(auxclick)=\"onMenuAuxClick($event, item)\"\r\n\t\t\t\t\t\t(mousedown)=\"onMenuMousedown($event)\"\r\n\t\t\t\t\t\t[pTooltip]=\"(item.label && activeLang() ? item.label[activeLang()!] || '' : '')\"\r\n\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t<div class=\"main-menu-item\">\r\n\t\t\t\t\t\t\t<i [ngClass]=\"item.icon\" class=\"menu-icon\"></i>\r\n\t\t\t\t\t\t\t<!-- <small class=\"menu-label\">{{ item.label && activeLang() ? item.label[activeLang()!] || '' : '' }}</small> -->\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</ul>\r\n\t\t</div>\r\n\t</div>\r\n\t\t @if(selectedMainMenuItem && selectedMainMenuItem.items && selectedMainMenuItem.items.length > 0){\r\n\r\n\t\t\t <div class=\"sidebar-toggle-container\">\r\n\t\t\t\t <button class=\"sidebar-circle-toggle-btn\" (click)=\"toggleSidebar()\">\r\n\t\t\t\t\t <i class=\"pi\" [ngClass]=\"sidebarExpanded ? 'pi-angle-left' : 'pi-angle-right'\"></i>\r\n\t\t\t\t </button>\r\n\t\t\t </div>\r\n\t\t }\r\n\r\n\t<!-- Secondary sidebar (second level) -->\r\n\t<div class=\"secondary-sidebar\" [ngClass]=\"{'expanded': sidebarExpanded}\">\r\n\t\t<div class=\"secondary-content-wrapper\" style=\"position: relative;\">\r\n\t\t\t<!-- Secondary sidebar content -->\r\n\t\t\t<div class=\"secondary-sidebar-content\">\r\n\t\t\t\t@if(selectedMainMenuItem){\r\n\t\t\t\t\t<ul class=\"secondary-menu\">\r\n\t\t\t\t\t\t@for(subItem of selectedMainMenuItem.items; track subItem; let i = $index){\r\n\t\t\t\t\t\t\t\t<!-- Action menu item -->\r\n\t\t\t\t\t\t\t\t@if(subItem.action) {\r\n\t\t\t\t\t\t\t\t\t<li class=\"secondary-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(subItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t<a class=\"secondary-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(subItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(subItem.label, activeLang(), 'secondary') ? (subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(subItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"submenu-icon pi pi-spin pi-spinner\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i [ngClass]=\"subItem.icon\" class=\"submenu-icon\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"submenu-label\">{{ subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<!-- Regular menu item -->\r\n\t\t\t\t\t\t\t\t<li class=\"secondary-menu-item\" [ngClass]=\"{'active': isActiveRoute(subItem)}\">\r\n\t\t\t\t\t\t\t\t\t<a [attr.href]=\"subItem.routerLink ? getHashHref(subItem.routerLink) : null\"\r\n\t\t\t\t\t\t\t\t\t\t[arilNavLink]=\"{ tabId: '', navLink: subItem.routerLink || '', navName: getLocalText(subItem.label), icon: subItem.icon }\"\r\n\t\t\t\t\t\t\t\t\t\t(click)=\"onMenuClick($event, subItem)\"\r\n\t\t\t\t\t\t\t\t\t\t(auxclick)=\"onMenuAuxClick($event, subItem)\"\r\n\t\t\t\t\t\t\t\t\t\t(mousedown)=\"onMenuMousedown($event)\"\r\n\t\t\t\t\t\t\t\t\t\tclass=\"secondary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(subItem.label, activeLang(), 'secondary') ? (subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t<i [ngClass]=\"subItem.icon\" class=\"submenu-icon\"></i>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"submenu-label\">{{ subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t<!-- Always render submenu if it exists -->\r\n\t\t\t\t\t\t\t\t\t @if(subItem.items && subItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t <ul class=\"tertiary-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t@for(childItem of subItem.items; track childItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<!-- Action item at tertiary level -->\r\n\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.action) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"tertiary-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(childItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"tertiary-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(childItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(childItem.label, activeLang(), 'tertiary') ? (childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(childItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\"><i class=\"pi pi-spin pi-spinner\"></i> {{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\">{{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"tertiary-menu-item\" [ngClass]=\"{'active': isActiveRoute(childItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a [attr.href]=\"childItem.routerLink ? getHashHref(childItem.routerLink) : null\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[arilNavLink]=\"{ tabId: '', navLink: childItem.routerLink || '', navName: getLocalText(childItem.label), icon: childItem.icon }\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"onMenuClick($event, childItem)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(auxclick)=\"onMenuAuxClick($event, childItem)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(mousedown)=\"onMenuMousedown($event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"tertiary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(childItem.label, activeLang(), 'tertiary') ? (childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\">{{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- Always render deeper levels if they exist, also visible by default -->\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.items && childItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ul class=\"nested-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@for(nestedItem of childItem.items; track nestedItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(nestedItem.action) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"nested-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(nestedItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"nested-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(nestedItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(nestedItem.label, activeLang(), 'nested') ? (nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(nestedItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\"><i class=\"pi pi-spin pi-spinner\"></i> {{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\">{{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-item\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(nestedItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a [attr.href]=\"nestedItem.routerLink ? getHashHref(nestedItem.routerLink) : null\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[arilNavLink]=\"{ tabId: '', navLink: nestedItem.routerLink || '', navName: getLocalText(nestedItem.label), icon: nestedItem.icon }\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"onMenuClick($event, nestedItem)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(auxclick)=\"onMenuAuxClick($event, nestedItem)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(mousedown)=\"onMenuMousedown($event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(nestedItem.label, activeLang(), 'nested') ? (nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\">{{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t </ul>\r\n\t\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</ul>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t\r\n</div>\r\n" }]
372
372
  }], ctorParameters: () => [{ type: i1.TranslateJsonPipe }, { type: i2.Router }, { type: i3.KeycloakService }, { type: i4.TranslocoService }, { type: i5.LayoutService }, { type: i6.HttpClient }], propDecorators: { onResize: [{
373
373
  type: HostListener,
374
374
  args: ['window:resize']
375
375
  }] } });
376
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kYWJsZS1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdGhlbWUvbGF5b3V0L2FwcC9leHBhbmRhYmxlTWVudS9leHBhbmRhYmxlLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2V4cGFuZGFibGVNZW51L2V4cGFuZGFibGUtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQTZCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBRXhELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUloRCxPQUFPLEVBQWdCLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFXLGdCQUFnQixFQUFFLFVBQVUsRUFBa0IsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7O0FBV3BELE1BQU0sT0FBTyx1QkFBdUI7SUFVbkMsSUFBSSxlQUFlO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsd0JBQXdCLENBQUM7SUFDMUQsQ0FBQztJQUVELElBQUksZUFBZSxDQUFDLEtBQWM7UUFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FB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Q2pDLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzlCLENBQUM7SUFDRixDQUFDOzhHQXRaVyx1QkFBdUI7a0dBQXZCLHVCQUF1QiwwSEFGeEIsQ0FBQyxpQkFBaUIsQ0FBQywwQkN2Qi9CLHVsVUF1SkEsNENEbElXLE9BQU8sbUZBQUUsYUFBYSxzWEFBRSxnQkFBZ0I7OzJGQUl0Qyx1QkFBdUI7a0JBUG5DLFNBQVM7aUNBQ0csSUFBSSxZQUNOLHFCQUFxQixXQUN0QixDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLENBQUMsYUFFeEMsQ0FBQyxpQkFBaUIsQ0FBQzs2TkFzTzlCLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3ksIE9uSW5pdCwgU2lnbmFsLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcbmltcG9ydCB7IEtleWNsb2FrU2VydmljZSB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZpbHRlciB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgYnJpZGdlIH0gZnJvbSAnYXJpbC9ib290L2JyaWRnZSc7XHJcbmltcG9ydCB7IE5hdkl0ZW0sIE5hdkxpbmtEaXJlY3RpdmUsIE5hdlNlcnZpY2UsIFBsdWdpbk1lbnVJdGVtIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcHBzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlSnNvblBpcGUgfSBmcm9tICdhcmlsL3V0aWwvcGlwZXMnO1xyXG5cclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXBwLmxheW91dC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0c2VsZWN0b3I6ICdhcHAtZXhwYW5kYWJsZS1tZW51JyxcclxuXHRpbXBvcnRzOiBbTmdDbGFzcywgVG9vbHRpcE1vZHVsZSwgTmF2TGlua0RpcmVjdGl2ZV0sXHJcblx0dGVtcGxhdGVVcmw6ICdleHBhbmRhYmxlLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHByb3ZpZGVyczogW1RyYW5zbGF0ZUpzb25QaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXhwYW5kYWJsZU1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblx0YWN0aXZlTGFuZzogU2lnbmFsPHN0cmluZz47XHJcblx0b3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHRyb3V0ZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG5cdHVzZXJuYW1lOiBzdHJpbmc7XHJcblxyXG5cdGNhY2hlZE1lbnVJdGVtczogUGx1Z2luTWVudUl0ZW1bXSA9IFtdO1xyXG5cclxuXHRzZWxlY3RlZE1haW5NZW51SXRlbTogUGx1Z2luTWVudUl0ZW0gfCBudWxsID0gbnVsbDtcclxuXHJcblx0Z2V0IHNpZGViYXJFeHBhbmRlZCgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkO1xyXG5cdH1cclxuXHJcblx0c2V0IHNpZGViYXJFeHBhbmRlZCh2YWx1ZTogYm9vbGVhbikge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCh2YWx1ZSk7XHJcblx0fVxyXG5cclxuXHR0b29sdGlwVGV4dCA9IHtcclxuXHRcdHRvZ2dsZUJ1dHRvbjoge1xyXG5cdFx0XHRleHBhbmRlZDoge1xyXG5cdFx0XHRcdHRyOiAnTWVuw7x5w7wgR2l6bGUnLFxyXG5cdFx0XHRcdGVuOiAnSGlkZSBNZW51J1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRjb2xsYXBzZWQ6IHtcclxuXHRcdFx0XHR0cjogJ01lbsO8ecO8IEfDtnN0ZXInLFxyXG5cdFx0XHRcdGVuOiAnU2hvdyBNZW51J1xyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0bG9ja0J1dHRvbjoge1xyXG5cdFx0XHRsb2NrZWQ6IHtcclxuXHRcdFx0XHR0cjogJ090b21hdGlrIEthcGFubWF5xLEgQcOnJyxcclxuXHRcdFx0XHRlbjogJ0VuYWJsZSBBdXRvLUNsb3NlJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHR1bmxvY2tlZDoge1xyXG5cdFx0XHRcdHRyOiAnTWVuw7x5w7wgS2lsaXRsZScsXHJcblx0XHRcdFx0ZW46ICdMb2NrIE1lbnUnXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9O1xyXG5cclxuXHRwcml2YXRlIHJlYWRvbmx5IE1BWF9MRU5HVEggPSB7XHJcblx0XHRtYWluOiA4LFxyXG5cdFx0c2Vjb25kYXJ5OiAyMCxcclxuXHRcdHRlcnRpYXJ5OiAyMFxyXG5cdH07XHJcblxyXG5cdGFjdGlvbkxvYWRpbmdJdGVtcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG5cdHByaXZhdGUgYWN0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHRwcml2YXRlIHJlYWRvbmx5IG5hdlNlcnZpY2UgPSBpbmplY3QoTmF2U2VydmljZSk7XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSB0cmFuc2xhdGVKc29uUGlwZTogVHJhbnNsYXRlSnNvblBpcGUsXHJcblx0XHRwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG5cdFx0cHJpdmF0ZSBrZXljbG9hazogS2V5Y2xvYWtTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50XHJcblx0KSB7XHJcblx0XHR0aGlzLmFjdGl2ZUxhbmcgPSB0b1NpZ25hbCh0aGlzLnRyYW5zbG9jb1NlcnZpY2UubGFuZ0NoYW5nZXMkLCB7IGluaXRpYWxWYWx1ZTogJ3RyJyB9KTtcclxuXHRcdHRoaXMudXNlcm5hbWUgPSB0aGlzLmtleWNsb2FrLmdldFVzZXJuYW1lKCkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCk7XHJcblx0fVxyXG5cclxuXHQvLyBHZXR0ZXIgZm9yIGxheW91dCBzZXJ2aWNlIHN0YXRlc1xyXG5cdGdldCBzZWxlY3RlZE1haW5JdGVtKCk6IG51bWJlciB8IG51bGwge1xyXG5cdFx0cmV0dXJuIHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5zZWxlY3RlZE1haW5JdGVtO1xyXG5cdH1cclxuXHJcblx0Z2V0IHNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkO1xyXG5cdH1cclxuXHJcblx0Ly8gQ2hlY2sgaWYgdGV4dCBpcyB0cnVuY2F0ZWQgYW5kIG5lZWRzIHRvb2x0aXBcclxuXHRpc1RleHRUcnVuY2F0ZWQoXHJcblx0XHRsYWJlbDogYW55LFxyXG5cdFx0bGFuZzogc3RyaW5nIHwgbnVsbCxcclxuXHRcdG1lbnVUeXBlOiAnbWFpbicgfCAnc2Vjb25kYXJ5JyB8ICd0ZXJ0aWFyeScgfCAnbmVzdGVkJyA9ICdzZWNvbmRhcnknXHJcblx0KTogYm9vbGVhbiB7XHJcblx0XHRpZiAoIWxhYmVsIHx8ICFsYW5nIHx8ICFsYWJlbFtsYW5nXSkgcmV0dXJuIGZhbHNlO1xyXG5cclxuXHRcdGNvbnN0IHRleHQgPSBsYWJlbFtsYW5nXTtcclxuXHRcdGNvbnN0IHRleHRMZW5ndGggPSB0ZXh0Lmxlbmd0aDtcclxuXHRcdGNvbnN0IG1heExlbmd0aCA9IG1lbnVUeXBlID09PSAnbmVzdGVkJyA/IHRoaXMuTUFYX0xFTkdUSC50ZXJ0aWFyeSA6IHRoaXMuTUFYX0xFTkdUSFttZW51VHlwZV07XHJcblx0XHRyZXR1cm4gdGV4dExlbmd0aCA+IG1heExlbmd0aDtcclxuXHR9XHJcblxyXG5cdC8vIFJlY3Vyc2l2ZWx5IGNoZWNrIGlmIGEgbWVudSBpdGVtIG9yIGl0cyBjaGlsZHJlbiBtYXRjaCB0aGUgY3VycmVudCByb3V0ZVxyXG5cdGlzQWN0aXZlUm91dGUobWVudUl0ZW06IFBsdWdpbk1lbnVJdGVtKTogYm9vbGVhbiB7XHJcblx0XHRpZiAoIW1lbnVJdGVtIHx8ICFtZW51SXRlbS5yb3V0ZXJMaW5rKSByZXR1cm4gZmFsc2U7XHJcblxyXG5cdFx0Ly8gR2V0IGN1cnJlbnQgVVJMIHBhdGggYWZ0ZXIgdGhlIGhhc2hcclxuXHRcdGNvbnN0IGN1cnJlbnRVcmwgPSB0aGlzLnJvdXRlci51cmw7XHJcblx0XHRjb25zdCBoYXNoVXJsID0gY3VycmVudFVybC5pbmRleE9mKCcjJykgPiAtMSA/IGN1cnJlbnRVcmwuc3BsaXQoJyMnKVsxXSA6IGN1cnJlbnRVcmw7XHJcblxyXG5cdFx0Ly8gQ2hlY2sgZm9yIGV4YWN0IG1hdGNoIGZpcnN0XHJcblx0XHRpZiAoaGFzaFVybCA9PT0gbWVudUl0ZW0ucm91dGVyTGluayB8fCBoYXNoVXJsID09PSAnLycgKyBtZW51SXRlbS5yb3V0ZXJMaW5rKSB7XHJcblx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIENoZWNrIGlmIGN1cnJlbnQgVVJMIHN0YXJ0cyB3aXRoIHRoZSByb3V0ZXJMaW5rIChoYW5kbGVzIGNoaWxkIHJvdXRlcylcclxuXHRcdGlmIChcclxuXHRcdFx0bWVudUl0ZW0ucm91dGVyTGluayAhPT0gJy8nICYmXHJcblx0XHRcdChoYXNoVXJsLnN0YXJ0c1dpdGgobWVudUl0ZW0ucm91dGVyTGluayArICcvJykgfHwgaGFzaFVybC5zdGFydHNXaXRoKCcvJyArIG1lbnVJdGVtLnJvdXRlckxpbmsgKyAnLycpKVxyXG5cdFx0KSB7XHJcblx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIENoZWNrIGNoaWxkIGl0ZW1zIGlmIHRoZXkgZXhpc3RcclxuXHRcdGlmIChtZW51SXRlbS5pdGVtcyAmJiBtZW51SXRlbS5pdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdHJldHVybiBtZW51SXRlbS5pdGVtcy5zb21lKChjaGlsZEl0ZW0pID0+IHRoaXMuaXNBY3RpdmVSb3V0ZShjaGlsZEl0ZW0pKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gZmFsc2U7XHJcblx0fVxyXG5cclxuXHRuZ09uSW5pdCgpIHtcclxuXHRcdHRoaXMudXBkYXRlTWVudUl0ZW1zKCk7XHJcblx0XHR0aGlzLmluaXRpYWxpemVNZW51KCk7XHJcblx0XHR0aGlzLnVwZGF0ZUFjdGl2ZU1lbnVGcm9tQ3VycmVudFJvdXRlKCk7XHJcblxyXG5cdFx0Ly8gU3Vic2NyaWJlIHRvIHJvdXRlIGNoYW5nZXMgdG8gaGFuZGxlIHNlY29uZGFyeSBzaWRlYmFyIGNsb3NpbmdcclxuXHRcdHRoaXMucm91dGVyU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZXIuZXZlbnRzXHJcblx0XHRcdC5waXBlKGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXHJcblx0XHRcdC5zdWJzY3JpYmUoKCkgPT4ge1xyXG5cdFx0XHRcdC8vIFVwZGF0ZSBhY3RpdmUgbWVudSBiYXNlZCBvbiB0aGUgbmV3IHJvdXRlXHJcblx0XHRcdFx0dGhpcy51cGRhdGVBY3RpdmVNZW51RnJvbUN1cnJlbnRSb3V0ZSgpO1xyXG5cdFx0XHR9KTtcclxuXHJcblx0XHQvLyBTdWJzY3JpYmUgdG8gb3ZlcmxheSBtZW51IG9wZW4gbm90aWZpY2F0aW9uc1xyXG5cdFx0dGhpcy5vdmVybGF5TWVudU9wZW5TdWJzY3JpcHRpb24gPSB0aGlzLmxheW91dFNlcnZpY2Uub3ZlcmxheU9wZW4kLnN1YnNjcmliZSgoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSkge1xyXG5cdFx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zZXRTZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQodHJ1ZSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHRpZiAodGhpcy5vdmVybGF5TWVudU9wZW5TdWJzY3JpcHRpb24pIHtcclxuXHRcdFx0dGhpcy5vdmVybGF5TWVudU9wZW5TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24pIHtcclxuXHRcdFx0dGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLmFjdGlvblN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuXHR9XHJcblxyXG5cdC8vIEluaXRpYWxpemUgdGhlIG1lbnUgd2l0aCBwcm9wZXIgYWN0aXZlIHN0YXRlXHJcblx0aW5pdGlhbGl6ZU1lbnUoKSB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2VsZWN0ZWRNYWluSXRlbShudWxsKTtcclxuXHRcdHRoaXMuc2VsZWN0ZWRNYWluTWVudUl0ZW0gPSBudWxsO1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlY29uZGFyeVNpZGViYXJFeHBhbmRlZChmYWxzZSk7XHJcblx0XHR0aGlzLnVwZGF0ZU1lbnVJdGVtcygpO1xyXG5cdH1cclxuXHJcblx0dXBkYXRlTWVudUZyb21Sb290S2V5KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuXHRcdHRoaXMudXBkYXRlTWVudUl0ZW1zKCk7XHJcblx0XHRjb25zdCBtZW51SXRlbXMgPSB0aGlzLmdldE1lbnVJdGVtcygpO1xyXG5cclxuXHRcdGlmIChpbmRleCA+PSAwICYmIGluZGV4IDwgbWVudUl0ZW1zLmxlbmd0aCkge1xyXG5cdFx0XHRjb25zdCBpdGVtID0gbWVudUl0ZW1zW2luZGV4XTtcclxuXHRcdFx0aWYgKCFpdGVtLnNlcGFyYXRvcikge1xyXG5cdFx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zZXRTZWxlY3RlZE1haW5JdGVtKGluZGV4KTtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkTWFpbk1lbnVJdGVtID0gaXRlbTtcclxuXHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkKHRydWUpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR1cGRhdGVNZW51SXRlbXMoKTogdm9pZCB7XHJcblx0XHR0aGlzLmNhY2hlZE1lbnVJdGVtcyA9IGJyaWRnZS5ob3N0TWVudUl0ZW1zKCk7XHJcblx0fVxyXG5cclxuXHRnZXRNZW51SXRlbXMoKTogUGx1Z2luTWVudUl0ZW1bXSB7XHJcblx0XHRyZXR1cm4gdGhpcy5jYWNoZWRNZW51SXRlbXM7XHJcblx0fVxyXG5cclxuXHRzZWxlY3RNYWluSXRlbShldmVudDogTW91c2VFdmVudCwgaW5kZXg6IG51bWJlciwgaXRlbTogUGx1Z2luTWVudUl0ZW0pOiB2b2lkIHtcclxuXHRcdC8vIEhhbmRsZSBhY3Rpb24gaXRlbXMgYXQgdG9wIGxldmVsXHJcblx0XHRpZiAoaXRlbS5hY3Rpb24gJiYgKCFpdGVtLml0ZW1zIHx8IGl0ZW0uaXRlbXMubGVuZ3RoID09PSAwKSkge1xyXG5cdFx0XHR0aGlzLm9uQWN0aW9uSXRlbUNsaWNrKGl0ZW0pO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGl0ZW0ucm91dGVyTGluayAmJiAoIWl0ZW0uaXRlbXMgfHwgaXRlbS5pdGVtcy5sZW5ndGggPT09IDApKSB7XHJcblx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zZXRTZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQoZmFsc2UpO1xyXG5cdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2VsZWN0ZWRNYWluSXRlbShpbmRleCk7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRNYWluTWVudUl0ZW0gPSBpdGVtO1xyXG5cdFx0XHR0aGlzLmRpc3BhdGNoTmF2aWdhdGlvbihldmVudCwge1xyXG5cdFx0XHRcdHRhYklkOiAnJyxcclxuXHRcdFx0XHRuYXZMaW5rOiBpdGVtLnJvdXRlckxpbmssXHJcblx0XHRcdFx0bmF2TmFtZTogdGhpcy5nZXRMb2NhbFRleHQoaXRlbS5sYWJlbCksXHJcblx0XHRcdFx0aWNvbjogaXRlbS5pY29uXHJcblx0XHRcdH0pO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gSGFuZGxlIHJlZ3VsYXIgbWVudSBpdGVtcyB3aXRoIHN1Ym1lbnVcclxuXHRcdGlmICh0aGlzLnNlbGVjdGVkTWFpbkl0ZW0gPT09IGluZGV4KSB7XHJcblx0XHRcdHRoaXMubGF5b3V0U2VydmljZS50b2dnbGVTZWNvbmRhcnlTaWRlYmFyKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2VsZWN0ZWRNYWluSXRlbShpbmRleCk7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRNYWluTWVudUl0ZW0gPSBpdGVtO1xyXG5cclxuXHRcdFx0aWYgKGl0ZW0uaXRlbXMgJiYgaXRlbS5pdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCh0cnVlKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkKGZhbHNlKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEZvciBtb2JpbGUgZGV2aWNlcywgZW5zdXJlIHRoZSBtZW51IHN0YXlzIG9wZW5cclxuXHRcdGlmICh0aGlzLmlzTW9iaWxlKCkpIHtcclxuXHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLnN0YXRpY01lbnVNb2JpbGVBY3RpdmUgPSB0cnVlO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dG9nZ2xlU2Vjb25kYXJ5U2lkZWJhcigpOiB2b2lkIHtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS50b2dnbGVTZWNvbmRhcnlTaWRlYmFyKCk7XHJcblx0fVxyXG5cclxuXHRpc01vYmlsZSgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2UuaXNNb2JpbGUoKTtcclxuXHR9XHJcblxyXG5cdC8vIExpc3RlbiBmb3IgcmVzaXplIGV2ZW50cyAtIG5vdyBoYW5kbGVkIG1vcmUgZWZmaWNpZW50bHkgYnkgbGF5b3V0IHNlcnZpY2VcclxuXHRASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcclxuXHRvblJlc2l6ZSgpIHtcclxuXHRcdGlmICghdGhpcy5pc01vYmlsZSgpICYmIHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5zdGF0aWNNZW51TW9iaWxlQWN0aXZlKSB7XHJcblx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5jbG9zZU1vYmlsZU1lbnUoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHVwZGF0ZUFjdGl2ZU1lbnVGcm9tQ3VycmVudFJvdXRlKCk6IHZvaWQge1xyXG5cdFx0Y29uc3QgbWVudUl0ZW1zID0gdGhpcy5nZXRNZW51SXRlbXMoKTtcclxuXHJcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG1lbnVJdGVtcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRjb25zdCBtZW51SXRlbSA9IG1lbnVJdGVtc1tpXTtcclxuXHRcdFx0aWYgKHRoaXMuaXNBY3RpdmVSb3V0ZShtZW51SXRlbSkpIHtcclxuXHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2VsZWN0ZWRNYWluSXRlbShpKTtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkTWFpbk1lbnVJdGVtID0gbWVudUl0ZW07XHJcblxyXG5cdFx0XHRcdGlmIChtZW51SXRlbS5pdGVtcyAmJiBtZW51SXRlbS5pdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRpZiAoIXRoaXMuaXNNb2JpbGUoKSAmJiAhdGhpcy5zZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQgJiYgIXRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5zdGF0aWNNZW51TW9iaWxlQWN0aXZlKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zZXRTZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQodHJ1ZSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zZXRTZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQoZmFsc2UpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGlzSGF2ZVNlbGVjdGVkQ2hpbGRJdGVtKGl0ZW06IFBsdWdpbk1lbnVJdGVtKTogYm9vbGVhbiB7XHJcblx0XHRpZiAoIWl0ZW0gfHwgIWl0ZW0uaXRlbXMgfHwgaXRlbS5pdGVtcy5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZTtcclxuXHJcblx0XHRmb3IgKGNvbnN0IGNoaWxkIG9mIGl0ZW0uaXRlbXMpIHtcclxuXHRcdFx0aWYgKHRoaXMuaXNBY3RpdmVSb3V0ZShjaGlsZCkpIHtcclxuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKGNoaWxkLml0ZW1zICYmIGNoaWxkLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRpZiAodGhpcy5pc0hhdmVTZWxlY3RlZENoaWxkSXRlbShjaGlsZCkpIHtcclxuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBmYWxzZTtcclxuXHR9XHJcblxyXG5cdGdldExvY2FsVGV4dCh0ZXh0OiBhbnkpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMudHJhbnNsYXRlSnNvblBpcGUudHJhbnNmb3JtKHRleHQpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSGFzaCBzdHJhdGVneSBpw6dpbiByb3V0ZXJMaW5rJ2kgYCNgLXByZWZpeCdsaSBocmVmJ2Ugw6dldmlyaXIuIHJvdXRlckxpbmsgY29uZmlnJ3RlXHJcblx0ICogbGVhZGluZyBzbGFzaCBpw6dlcmViaWxpciAow7Zybi4gYW5hc2F5ZmEgacOnaW4gYCcvJ2ApOyBuYWl2ZSBgJyMvJyArIHJvdXRlckxpbmtgXHJcblx0ICogY29uY2F0ZW5hdGlvbiBgIy8vYCDDvHJldGlyZGkg4oCUIHNhxJ8gdMSxayBcImxpbmtpIGtvcHlhbGFcIiBVWCdpbmRlIGJ1IMOnaXJraW4gZ8O2csO8bsO8ci5cclxuXHQgKi9cclxuXHRnZXRIYXNoSHJlZihyb3V0ZXJMaW5rOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogc3RyaW5nIHtcclxuXHRcdGlmICghcm91dGVyTGluaykgcmV0dXJuICcjJztcclxuXHRcdHJldHVybiByb3V0ZXJMaW5rLnN0YXJ0c1dpdGgoJy8nKSA/ICcjJyArIHJvdXRlckxpbmsgOiAnIy8nICsgcm91dGVyTGluaztcclxuXHR9XHJcblxyXG5cdGdldEFjdGlvbkl0ZW1LZXkoaXRlbTogUGx1Z2luTWVudUl0ZW0pOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIGl0ZW0uYWN0aW9uPy51cmwgKyAnfCcgKyBpdGVtLmFjdGlvbj8uc3VjY2Vzc1JvdXRlO1xyXG5cdH1cclxuXHJcblx0aXNBY3Rpb25Mb2FkaW5nKGl0ZW06IFBsdWdpbk1lbnVJdGVtKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5hY3Rpb25Mb2FkaW5nSXRlbXMuaGFzKHRoaXMuZ2V0QWN0aW9uSXRlbUtleShpdGVtKSk7XHJcblx0fVxyXG5cclxuXHRvbkFjdGlvbkl0ZW1DbGljayhpdGVtOiBQbHVnaW5NZW51SXRlbSwgZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xyXG5cdFx0aWYgKGV2ZW50KSB7XHJcblx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICghaXRlbS5hY3Rpb24gfHwgdGhpcy5pc0FjdGlvbkxvYWRpbmcoaXRlbSkpIHJldHVybjtcclxuXHJcblx0XHQvLyBDYW5jZWwgYW55IHByZXZpb3VzIGFjdGlvbiByZXF1ZXN0XHJcblx0XHR0aGlzLmFjdGlvblN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuXHJcblx0XHRjb25zdCBrZXkgPSB0aGlzLmdldEFjdGlvbkl0ZW1LZXkoaXRlbSk7XHJcblx0XHR0aGlzLmFjdGlvbkxvYWRpbmdJdGVtcy5hZGQoa2V5KTtcclxuXHJcblx0XHRjb25zdCByZXF1ZXN0JCA9XHJcblx0XHRcdGl0ZW0uYWN0aW9uLm1ldGhvZCA9PT0gJ0dFVCdcclxuXHRcdFx0XHQ/IHRoaXMuaHR0cC5nZXQoaXRlbS5hY3Rpb24udXJsKVxyXG5cdFx0XHRcdDogdGhpcy5odHRwLnBvc3QoaXRlbS5hY3Rpb24udXJsLCBpdGVtLmFjdGlvbi5ib2R5ID8/IHt9KTtcclxuXHJcblx0XHR0aGlzLmFjdGlvblN1YnNjcmlwdGlvbiA9IHJlcXVlc3QkLnN1YnNjcmliZSh7XHJcblx0XHRcdG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5hY3Rpb25Mb2FkaW5nSXRlbXMuZGVsZXRlKGtleSk7XHJcblx0XHRcdFx0Y29uc3Qgcm91dGUgPSB0aGlzLmJ1aWxkU3VjY2Vzc1JvdXRlKGl0ZW0uYWN0aW9uISwgcmVzcG9uc2UpO1xyXG5cdFx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFtyb3V0ZV0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuYWN0aW9uTG9hZGluZ0l0ZW1zLmRlbGV0ZShrZXkpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYnVpbGRTdWNjZXNzUm91dGUoYWN0aW9uOiBQbHVnaW5NZW51SXRlbVsnYWN0aW9uJ10sIHJlc3BvbnNlOiBhbnkpOiBzdHJpbmcge1xyXG5cdFx0aWYgKCFhY3Rpb24/LnN1Y2Nlc3NSb3V0ZVJlc3BvbnNlS2V5KSByZXR1cm4gYWN0aW9uPy5zdWNjZXNzUm91dGUgPz8gJy8nO1xyXG5cclxuXHRcdGNvbnN0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZUJ5UGF0aChyZXNwb25zZSwgYWN0aW9uLnN1Y2Nlc3NSb3V0ZVJlc3BvbnNlS2V5KTtcclxuXHRcdGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSByZXR1cm4gYWN0aW9uLnN1Y2Nlc3NSb3V0ZTtcclxuXHJcblx0XHRyZXR1cm4gYCR7YWN0aW9uLnN1Y2Nlc3NSb3V0ZX0vJHt2YWx1ZX1gO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXRWYWx1ZUJ5UGF0aChvYmo6IGFueSwgcGF0aDogc3RyaW5nKTogYW55IHtcclxuXHRcdGlmICghb2JqIHx8ICFwYXRoKSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuXHRcdHJldHVybiBwYXRoLnNwbGl0KCcuJykucmVkdWNlKChjdXJyZW50LCBrZXkpID0+IHtcclxuXHRcdFx0aWYgKGN1cnJlbnQgPT09IHVuZGVmaW5lZCB8fCBjdXJyZW50ID09PSBudWxsKSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuXHRcdFx0Ly8gSGFuZGxlIGFycmF5IGFjY2VzcyBsaWtlICdyZXN1bHRbMF0nXHJcblx0XHRcdGNvbnN0IGFycmF5TWF0Y2ggPSBrZXkubWF0Y2goL14oLis/KVxcWyhcXGQrKVxcXSQvKTtcclxuXHRcdFx0aWYgKGFycmF5TWF0Y2gpIHtcclxuXHRcdFx0XHRjb25zdCBhcnJheUtleSA9IGFycmF5TWF0Y2hbMV07XHJcblx0XHRcdFx0Y29uc3QgaW5kZXggPSBwYXJzZUludChhcnJheU1hdGNoWzJdLCAxMCk7XHJcblx0XHRcdFx0cmV0dXJuIGN1cnJlbnRbYXJyYXlLZXldPy5baW5kZXhdO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRyZXR1cm4gY3VycmVudFtrZXldO1xyXG5cdFx0fSwgb2JqKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENocm9tZS1saWtlIG1lbsO8IGNsaWNrIGRhdnJhbsSxxZ/EsSAoc2Vjb25kYXJ5L3RlcnRpYXJ5L25lc3RlZCBzZXZpeWVsZXJpIGnDp2luKTpcclxuXHQgKiAtIE5vcm1hbCBjbGljayDihpIgYWt0aWYgdGFiJ2RhIG5hdmlnYXRlXHJcblx0ICogLSBDdHJsL0NtZCArIENsaWNrIOKGkiBhcmthIHBsYW5kYSB5ZW5pIHRhYlxyXG5cdCAqIC0gQ3RybC9DbWQgKyBTaGlmdCArIENsaWNrIOKGkiDDtm4gcGxhbmRhIHllbmkgdGFiXHJcblx0ICovXHJcblx0b25NZW51Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IFBsdWdpbk1lbnVJdGVtKTogdm9pZCB7XHJcblx0XHRpZiAoIWl0ZW0ucm91dGVyTGluaykgcmV0dXJuO1xyXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHRcdHRoaXMuZGlzcGF0Y2hOYXZpZ2F0aW9uKGV2ZW50LCB7XHJcblx0XHRcdHRhYklkOiAnJyxcclxuXHRcdFx0bmF2TGluazogaXRlbS5yb3V0ZXJMaW5rLFxyXG5cdFx0XHRuYXZOYW1lOiB0aGlzLmdldExvY2FsVGV4dChpdGVtLmxhYmVsKSxcclxuXHRcdFx0aWNvbjogaXRlbS5pY29uXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKiBNaWRkbGUgY2xpY2sgKGJ1dHRvbiAxKSDihpIgYXJrYSBwbGFuZGEgeWVuaSB0YWIuICovXHJcblx0b25NZW51QXV4Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IFBsdWdpbk1lbnVJdGVtKTogdm9pZCB7XHJcblx0XHRpZiAoZXZlbnQuYnV0dG9uICE9PSAxIHx8ICFpdGVtLnJvdXRlckxpbmspIHJldHVybjtcclxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHR0aGlzLm5hdlNlcnZpY2Uub3BlbkluQmFja2dyb3VuZFRhYih7XHJcblx0XHRcdHRhYklkOiAnJyxcclxuXHRcdFx0bmF2TGluazogaXRlbS5yb3V0ZXJMaW5rLFxyXG5cdFx0XHRuYXZOYW1lOiB0aGlzLmdldExvY2FsVGV4dChpdGVtLmxhYmVsKSxcclxuXHRcdFx0aWNvbjogaXRlbS5pY29uXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKiBNaWRkbGUgY2xpY2sgZGVmYXVsdCBzY3JvbGwgZGF2cmFuxLHFn8SxbsSxIGVuZ2VsbGUuICovXHJcblx0b25NZW51TW91c2Vkb3duKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcblx0XHRpZiAoZXZlbnQuYnV0dG9uID09PSAxKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBkaXNwYXRjaE5hdmlnYXRpb24oZXZlbnQ6IE1vdXNlRXZlbnQsIG5hdkl0ZW06IE5hdkl0ZW0pOiB2b2lkIHtcclxuXHRcdGlmIChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpIHtcclxuXHRcdFx0aWYgKGV2ZW50LnNoaWZ0S2V5KSB7XHJcblx0XHRcdFx0dGhpcy5uYXZTZXJ2aWNlLm9wZW5Jbk5ld1RhYkFuZEZvY3VzKG5hdkl0ZW0pO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMubmF2U2VydmljZS5vcGVuSW5CYWNrZ3JvdW5kVGFiKG5hdkl0ZW0pO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLm5hdlNlcnZpY2UubmF2aWdhdGVJbkN1cnJlbnRUYWIobmF2SXRlbSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR0b2dnbGVTaWRlYmFyKCkge1xyXG5cdFx0Ly8gRcSfZXIgc2XDp2lsaSBiaXIgYW5hIG1lbsO8IMO2xJ9lc2kgdmFyc2EgdmUgYWx0IG1lbsO8bGVyaSB2YXJzYSB0b2dnbGUgeWFwYWJpbGlyaXpcclxuXHRcdGlmICh0aGlzLnNlbGVjdGVkTWFpbk1lbnVJdGVtICYmIHRoaXMuc2VsZWN0ZWRNYWluTWVudUl0ZW0uaXRlbXMgJiYgdGhpcy5zZWxlY3RlZE1haW5NZW51SXRlbS5pdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdHRoaXMuc2lkZWJhckV4cGFuZGVkID0gIXRoaXMuc2lkZWJhckV4cGFuZGVkO1xyXG5cdFx0fSBlbHNlIGlmICh0aGlzLnNpZGViYXJFeHBhbmRlZCkge1xyXG5cdFx0XHR0aGlzLnNpZGViYXJFeHBhbmRlZCA9IGZhbHNlO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibmV3LWxheW91dC1zaWRlYmFyXCIgPlxyXG5cdDwhLS0gTWFpbiBzaWRlYmFyIChmaXJzdCBsZXZlbCkgLS0+XHJcblx0PGRpdiBjbGFzcz1cIm1haW4tc2lkZWJhclwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1wiPlxyXG5cdFx0PGRpdiBjbGFzcz1cIm1haW4tc2lkZWJhci1jb250ZW50XCI+XHJcblx0XHRcdDx1bCBjbGFzcz1cIm1haW4tbWVudVwiPlxyXG5cdFx0XHRcdEBmb3IoaXRlbSBvZiBnZXRNZW51SXRlbXMoKTsgdHJhY2sgaXRlbTsgbGV0IGkgPSAkaW5kZXgpe1xyXG5cdFx0XHRcdFx0QGlmKCFpdGVtLnNlcGFyYXRvcil7XHJcblx0XHRcdFx0XHRcdDxsaVxyXG5cdFx0XHRcdFx0XHRbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGlzQWN0aXZlUm91dGUoaXRlbSkgfHwgaXNIYXZlU2VsZWN0ZWRDaGlsZEl0ZW0oaXRlbSl9XCJcclxuXHRcdFx0XHRcdFx0KGNsaWNrKT1cInNlbGVjdE1haW5JdGVtKCRldmVudCwgaSwgaXRlbSlcIlxyXG5cdFx0XHRcdFx0XHQoYXV4Y2xpY2spPVwib25NZW51QXV4Q2xpY2soJGV2ZW50LCBpdGVtKVwiXHJcblx0XHRcdFx0XHRcdChtb3VzZWRvd24pPVwib25NZW51TW91c2Vkb3duKCRldmVudClcIlxyXG5cdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiKGl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gaXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnKVwiXHJcblx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJtYWluLW1lbnUtaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpIFtuZ0NsYXNzXT1cIml0ZW0uaWNvblwiIGNsYXNzPVwibWVudS1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdDwhLS0gPHNtYWxsIGNsYXNzPVwibWVudS1sYWJlbFwiPnt7IGl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gaXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zbWFsbD4gLS0+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdDwvdWw+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuXHRcdCBAaWYoc2VsZWN0ZWRNYWluTWVudUl0ZW0gJiYgc2VsZWN0ZWRNYWluTWVudUl0ZW0uaXRlbXMgJiYgc2VsZWN0ZWRNYWluTWVudUl0ZW0uaXRlbXMubGVuZ3RoID4gMCl7XHJcblxyXG5cdFx0XHQgPGRpdiBjbGFzcz1cInNpZGViYXItdG9nZ2xlLWNvbnRhaW5lclwiPlxyXG5cdFx0XHRcdCA8YnV0dG9uIGNsYXNzPVwic2lkZWJhci1jaXJjbGUtdG9nZ2xlLWJ0blwiIChjbGljayk9XCJ0b2dnbGVTaWRlYmFyKClcIj5cclxuXHRcdFx0XHRcdCA8aSBjbGFzcz1cInBpXCIgW25nQ2xhc3NdPVwic2lkZWJhckV4cGFuZGVkID8gJ3BpLWFuZ2xlLWxlZnQnIDogJ3BpLWFuZ2xlLXJpZ2h0J1wiPjwvaT5cclxuXHRcdFx0XHQgPC9idXR0b24+XHJcblx0XHRcdCA8L2Rpdj5cclxuXHRcdCB9XHJcblxyXG5cdDwhLS0gU2Vjb25kYXJ5IHNpZGViYXIgKHNlY29uZCBsZXZlbCkgLS0+XHJcblx0PGRpdiBjbGFzcz1cInNlY29uZGFyeS1zaWRlYmFyXCIgW25nQ2xhc3NdPVwieydleHBhbmRlZCc6IHNpZGViYXJFeHBhbmRlZH1cIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJzZWNvbmRhcnktY29udGVudC13cmFwcGVyXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XHJcblx0XHRcdDwhLS0gU2Vjb25kYXJ5IHNpZGViYXIgY29udGVudCAtLT5cclxuXHRcdFx0PGRpdiBjbGFzcz1cInNlY29uZGFyeS1zaWRlYmFyLWNvbnRlbnRcIj5cclxuXHRcdFx0XHRAaWYoc2VsZWN0ZWRNYWluTWVudUl0ZW0pe1xyXG5cdFx0XHRcdFx0PHVsIGNsYXNzPVwic2Vjb25kYXJ5LW1lbnVcIj5cclxuXHRcdFx0XHRcdFx0QGZvcihzdWJJdGVtIG9mIHNlbGVjdGVkTWFpbk1lbnVJdGVtLml0ZW1zOyB0cmFjayBzdWJJdGVtOyBsZXQgaSA9ICRpbmRleCl7XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIEFjdGlvbiBtZW51IGl0ZW0gLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRAaWYoc3ViSXRlbS5hY3Rpb24pIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0PGxpIGNsYXNzPVwic2Vjb25kYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aW9uLWxvYWRpbmcnOiBpc0FjdGlvbkxvYWRpbmcoc3ViSXRlbSl9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGEgY2xhc3M9XCJzZWNvbmRhcnktbWVudS1saW5rIGlzLWFjdGlvblwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2spPVwib25BY3Rpb25JdGVtQ2xpY2soc3ViSXRlbSwgJGV2ZW50KVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKHN1Ykl0ZW0ubGFiZWwsIGFjdGl2ZUxhbmcoKSwgJ3NlY29uZGFyeScpID8gKHN1Ykl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gc3ViSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnKSA6ICcnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYoaXNBY3Rpb25Mb2FkaW5nKHN1Ykl0ZW0pKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJzdWJtZW51LWljb24gcGkgcGktc3BpbiBwaS1zcGlubmVyXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxpIFtuZ0NsYXNzXT1cInN1Ykl0ZW0uaWNvblwiIGNsYXNzPVwic3VibWVudS1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJzdWJtZW51LWxhYmVsXCI+e3sgc3ViSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBzdWJJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2xpPlxyXG5cdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIFJlZ3VsYXIgbWVudSBpdGVtIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGxpIGNsYXNzPVwic2Vjb25kYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNBY3RpdmVSb3V0ZShzdWJJdGVtKX1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGEgW2F0dHIuaHJlZl09XCJzdWJJdGVtLnJvdXRlckxpbmsgPyBnZXRIYXNoSHJlZihzdWJJdGVtLnJvdXRlckxpbmspIDogbnVsbFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0W2FyaWxOYXZMaW5rXT1cInsgdGFiSWQ6ICcnLCBuYXZMaW5rOiBzdWJJdGVtLnJvdXRlckxpbmsgfHwgJycsIG5hdk5hbWU6IGdldExvY2FsVGV4dChzdWJJdGVtLmxhYmVsKSwgaWNvbjogc3ViSXRlbS5pY29uIH1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJvbk1lbnVDbGljaygkZXZlbnQsIHN1Ykl0ZW0pXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoYXV4Y2xpY2spPVwib25NZW51QXV4Q2xpY2soJGV2ZW50LCBzdWJJdGVtKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0KG1vdXNlZG93bik9XCJvbk1lbnVNb3VzZWRvd24oJGV2ZW50KVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzZWNvbmRhcnktbWVudS1saW5rXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKHN1Ykl0ZW0ubGFiZWwsIGFjdGl2ZUxhbmcoKSwgJ3NlY29uZGFyeScpID8gKHN1Ykl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gc3ViSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnKSA6ICcnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxpIFtuZ0NsYXNzXT1cInN1Ykl0ZW0uaWNvblwiIGNsYXNzPVwic3VibWVudS1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwic3VibWVudS1sYWJlbFwiPnt7IHN1Ykl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gc3ViSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gQWx3YXlzIHJlbmRlciBzdWJtZW51IGlmIGl0IGV4aXN0cyAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0IEBpZihzdWJJdGVtLml0ZW1zICYmIHN1Ykl0ZW0uaXRlbXMubGVuZ3RoID4gMCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0IDx1bCBjbGFzcz1cInRlcnRpYXJ5LW1lbnUgYWx3YXlzLW9wZW5cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBmb3IoY2hpbGRJdGVtIG9mIHN1Ykl0ZW0uaXRlbXM7IHRyYWNrIGNoaWxkSXRlbTsgbGV0IGkgPSAkaW5kZXgpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIEFjdGlvbiBpdGVtIGF0IHRlcnRpYXJ5IGxldmVsIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYoY2hpbGRJdGVtLmFjdGlvbikge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsaSBjbGFzcz1cInRlcnRpYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aW9uLWxvYWRpbmcnOiBpc0FjdGlvbkxvYWRpbmcoY2hpbGRJdGVtKX1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhIGNsYXNzPVwidGVydGlhcnktbWVudS1saW5rIGlzLWFjdGlvblwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJvbkFjdGlvbkl0ZW1DbGljayhjaGlsZEl0ZW0sICRldmVudClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKGNoaWxkSXRlbS5sYWJlbCwgYWN0aXZlTGFuZygpLCAndGVydGlhcnknKSA/IChjaGlsZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gY2hpbGRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycpIDogJydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYoaXNBY3Rpb25Mb2FkaW5nKGNoaWxkSXRlbSkpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidGVydGlhcnktbGFiZWxcIj48aSBjbGFzcz1cInBpIHBpLXNwaW4gcGktc3Bpbm5lclwiPjwvaT4ge3sgY2hpbGRJdGVtLmxhYmVsICYmIGFjdGl2ZUxhbmcoKSA/IGNoaWxkSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInRlcnRpYXJ5LWxhYmVsXCI+e3sgY2hpbGRJdGVtLmxhYmVsICYmIGFjdGl2ZUxhbmcoKSA/IGNoaWxkSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsaSBjbGFzcz1cInRlcnRpYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNBY3RpdmVSb3V0ZShjaGlsZEl0ZW0pfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhIFthdHRyLmhyZWZdPVwiY2hpbGRJdGVtLnJvdXRlckxpbmsgPyBnZXRIYXNoSHJlZihjaGlsZEl0ZW0ucm91dGVyTGluaykgOiBudWxsXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFthcmlsTmF2TGlua109XCJ7IHRhYklkOiAnJywgbmF2TGluazogY2hpbGRJdGVtLnJvdXRlckxpbmsgfHwgJycsIG5hdk5hbWU6IGdldExvY2FsVGV4dChjaGlsZEl0ZW0ubGFiZWwpLCBpY29uOiBjaGlsZEl0ZW0uaWNvbiB9XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJvbk1lbnVDbGljaygkZXZlbnQsIGNoaWxkSXRlbSlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGF1eGNsaWNrKT1cIm9uTWVudUF1eENsaWNrKCRldmVudCwgY2hpbGRJdGVtKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobW91c2Vkb3duKT1cIm9uTWVudU1vdXNlZG93bigkZXZlbnQpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwidGVydGlhcnktbWVudS1saW5rXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCIhaXNNb2JpbGUoKSAmJiBpc1RleHRUcnVuY2F0ZWQoY2hpbGRJdGVtLmxhYmVsLCBhY3RpdmVMYW5nKCksICd0ZXJ0aWFyeScpID8gKGNoaWxkSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBjaGlsZEl0ZW0ubGFiZWxbYWN0aXZlTGFuZygpIV0gfHwgJycgOiAnJykgOiAnJ1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJ0ZXJ0aWFyeS1sYWJlbFwiPnt7IGNoaWxkSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBjaGlsZEl0ZW0ubGFiZWxbYWN0aXZlTGFuZygpIV0gfHwgJycgOiAnJyB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSBBbHdheXMgcmVuZGVyIGRlZXBlciBsZXZlbHMgaWYgdGhleSBleGlzdCwgYWxzbyB2aXNpYmxlIGJ5IGRlZmF1bHQgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmKGNoaWxkSXRlbS5pdGVtcyAmJiBjaGlsZEl0ZW0uaXRlbXMubGVuZ3RoID4gMCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dWwgY2xhc3M9XCJuZXN0ZWQtbWVudSBhbHdheXMtb3BlblwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAZm9yKG5lc3RlZEl0ZW0gb2YgY2hpbGRJdGVtLml0ZW1zOyB0cmFjayBuZXN0ZWRJdGVtOyBsZXQgaSA9ICRpbmRleCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmKG5lc3RlZEl0ZW0uYWN0aW9uKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bGkgY2xhc3M9XCJuZXN0ZWQtbWVudS1pdGVtXCIgW25nQ2xhc3NdPVwieydhY3Rpb24tbG9hZGluZyc6IGlzQWN0aW9uTG9hZGluZyhuZXN0ZWRJdGVtKX1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGEgY2xhc3M9XCJuZXN0ZWQtbWVudS1saW5rIGlzLWFjdGlvblwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cIm9uQWN0aW9uSXRlbUNsaWNrKG5lc3RlZEl0ZW0sICRldmVudClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCIhaXNNb2JpbGUoKSAmJiBpc1RleHRUcnVuY2F0ZWQobmVzdGVkSXRlbS5sYWJlbCwgYWN0aXZlTGFuZygpLCAnbmVzdGVkJykgPyAobmVzdGVkSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBuZXN0ZWRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycpIDogJydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmKGlzQWN0aW9uTG9hZGluZyhuZXN0ZWRJdGVtKSl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm5lc3RlZC1sYWJlbFwiPjxpIGNsYXNzPVwicGkgcGktc3BpbiBwaS1zcGlubmVyXCI+PC9pPiB7eyBuZXN0ZWRJdGVtLmxhYmVsICYmIGFjdGl2ZUxhbmcoKSA/IG5lc3RlZEl0ZW0ubGFiZWxbYWN0aXZlTGFuZygpIV0gfHwgJycgOiAnJyB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibmVzdGVkLWxhYmVsXCI+e3sgbmVzdGVkSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBuZXN0ZWRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2xpPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsaVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJuZXN0ZWQtbWVudS1pdGVtXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNBY3RpdmVSb3V0ZShuZXN0ZWRJdGVtKX1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhIFthdHRyLmhyZWZdPVwibmVzdGVkSXRlbS5yb3V0ZXJMaW5rID8gZ2V0SGFzaEhyZWYobmVzdGVkSXRlbS5yb3V0ZXJMaW5rKSA6IG51bGxcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbYXJpbE5hdkxpbmtdPVwieyB0YWJJZDogJycsIG5hdkxpbms6IG5lc3RlZEl0ZW0ucm91dGVyTGluayB8fCAnJywgbmF2TmFtZTogZ2V0TG9jYWxUZXh0KG5lc3RlZEl0ZW0ubGFiZWwpLCBpY29uOiBuZXN0ZWRJdGVtLmljb24gfVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJvbk1lbnVDbGljaygkZXZlbnQsIG5lc3RlZEl0ZW0pXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGF1eGNsaWNrKT1cIm9uTWVudUF1eENsaWNrKCRldmVudCwgbmVzdGVkSXRlbSlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobW91c2Vkb3duKT1cIm9uTWVudU1vdXNlZG93bigkZXZlbnQpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJuZXN0ZWQtbWVudS1saW5rXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cIiFpc01vYmlsZSgpICYmIGlzVGV4dFRydW5jYXRlZChuZXN0ZWRJdGVtLmxhYmVsLCBhY3RpdmVMYW5nKCksICduZXN0ZWQnKSA/IChuZXN0ZWRJdGVtLmxhYmVsICYmIGFjdGl2ZUxhbmcoKSA/IG5lc3RlZEl0ZW0ubGFiZWxbYWN0aXZlTGFuZygpIV0gfHwgJycgOiAnJykgOiAnJ1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibmVzdGVkLWxhYmVsXCI+e3sgbmVzdGVkSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBuZXN0ZWRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdWw+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2xpPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0IDwvdWw+XHJcblx0XHRcdFx0XHRcdFx0XHRcdCB9XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2xpPlxyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQ8L3VsPlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuXHRcclxuPC9kaXY+XHJcbiJdfQ==
376
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kYWJsZS1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdGhlbWUvbGF5b3V0L2FwcC9leHBhbmRhYmxlTWVudS9leHBhbmRhYmxlLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2V4cGFuZGFibGVNZW51L2V4cGFuZGFibGUtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQTZCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBRXhELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUloRCxPQUFPLEVBQWdCLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFXLGdCQUFnQixFQUFFLFVBQVUsRUFBa0IsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7O0FBV3BELE1BQU0sT0FBTyx1QkFBdUI7SUFVbkMsSUFBSSxlQUFlO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsd0JBQXdCLENBQUM7SUFDMUQsQ0FBQztJQUVELElBQUksZUFBZSxDQUFDLEtBQWM7UUFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FB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Q2pDLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzlCLENBQUM7SUFDRixDQUFDOytHQXRaVyx1QkFBdUI7bUdBQXZCLHVCQUF1QiwwSEFGeEIsQ0FBQyxpQkFBaUIsQ0FBQywwQkN2Qi9CLHVsVUF1SkEsNENEbElXLE9BQU8sbUZBQUUsYUFBYSxzWEFBRSxnQkFBZ0I7OzRGQUl0Qyx1QkFBdUI7a0JBUG5DLFNBQVM7aUNBQ0csSUFBSSxZQUNOLHFCQUFxQixXQUN0QixDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLENBQUMsYUFFeEMsQ0FBQyxpQkFBaUIsQ0FBQzs2TkFzTzlCLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3ksIE9uSW5pdCwgU2lnbmFsLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcbmltcG9ydCB7IEtleWNsb2FrU2VydmljZSB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZpbHRlciB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgYnJpZGdlIH0gZnJvbSAnYXJpbC9ib290L2JyaWRnZSc7XHJcbmltcG9ydCB7IE5hdkl0ZW0sIE5hdkxpbmtEaXJlY3RpdmUsIE5hdlNlcnZpY2UsIFBsdWdpbk1lbnVJdGVtIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcHBzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlSnNvblBpcGUgfSBmcm9tICdhcmlsL3V0aWwvcGlwZXMnO1xyXG5cclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXBwLmxheW91dC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0c2VsZWN0b3I6ICdhcHAtZXhwYW5kYWJsZS1tZW51JyxcclxuXHRpbXBvcnRzOiBbTmdDbGFzcywgVG9vbHRpcE1vZHVsZSwgTmF2TGlua0RpcmVjdGl2ZV0sXHJcblx0dGVtcGxhdGVVcmw6ICdleHBhbmRhYmxlLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHByb3ZpZGVyczogW1RyYW5zbGF0ZUpzb25QaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXhwYW5kYWJsZU1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblx0YWN0aXZlTGFuZzogU2lnbmFsPHN0cmluZz47XHJcblx0b3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHRyb3V0ZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG5cdHVzZXJuYW1lOiBzdHJpbmc7XHJcblxyXG5cdGNhY2hlZE1lbnVJdGVtczogUGx1Z2luTWVudUl0ZW1bXSA9IFtdO1xyXG5cclxuXHRzZWxlY3RlZE1haW5NZW51SXRlbTogUGx1Z2luTWVudUl0ZW0gfCBudWxsID0gbnVsbDtcclxuXHJcblx0Z2V0IHNpZGViYXJFeHBhbmRlZCgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkO1xyXG5cdH1cclxuXHJcblx0c2V0IHNpZGViYXJFeHBhbmRlZCh2YWx1ZTogYm9vbGVhbikge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCh2YWx1ZSk7XHJcblx0fVxyXG5cclxuXHR0b29sdGlwVGV4dCA9IHtcclxuXHRcdHRvZ2dsZUJ1dHRvbjoge1xyXG5cdFx0XHRleHBhbmRlZDoge1xyXG5cdFx0XHRcdHRyOiAnTWVuw7x5w7wgR2l6bGUnLFxyXG5cdFx0XHRcdGVuOiAnSGlkZSBNZW51J1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRjb2xsYXBzZWQ6IHtcclxuXHRcdFx0XHR0cjogJ01lbsO8ecO8IEfDtnN0ZXInLFxyXG5cdFx0XHRcdGVuOiAnU2hvdyBNZW51J1xyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0bG9ja0J1dHRvbjoge1xyXG5cdFx0XHRsb2NrZWQ6IHtcclxuXHRcdFx0XHR0cjogJ090b21hdGlrIEthcGFubWF5xLEgQcOnJyxcclxuXHRcdFx0XHRlbjogJ0VuYWJsZSBBdXRvLUNsb3NlJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHR1bmxvY2tlZDoge1xyXG5cdFx0XHRcdHRyOiAnTWVuw7x5w7wgS2lsaXRsZScsXHJcblx0XHRcdFx0ZW46ICdMb2NrIE1lbnUnXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9O1xyXG5cclxuXHRwcml2YXRlIHJlYWRvbmx5IE1BWF9MRU5HVEggPSB7XHJcblx0XHRtYWluOiA4LFxyXG5cdFx0c2Vjb25kYXJ5OiAyMCxcclxuXHRcdHRlcnRpYXJ5OiAyMFxyXG5cdH07XHJcblxyXG5cdGFjdGlvbkxvYWRpbmdJdGVtcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG5cdHByaXZhdGUgYWN0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHRwcml2YXRlIHJlYWRvbmx5IG5hdlNlcnZpY2UgPSBpbmplY3QoTmF2U2VydmljZSk7XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSB0cmFuc2xhdGVKc29uUGlwZTogVHJhbnNsYXRlSnNvblBpcGUsXHJcblx0XHRwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG5cdFx0cHJpdmF0ZSBrZXljbG9hazogS2V5Y2xvYWtTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50XHJcblx0KSB7XHJcblx0XHR0aGlzLmFjdGl2ZUxhbmcgPSB0b1NpZ25hbCh0aGlzLnRyYW5zbG9jb1NlcnZpY2UubGFuZ0NoYW5nZXMkLCB7IGluaXRpYWxWYWx1ZTogJ3RyJyB9KTtcclxuXHRcdHRoaXMudXNlcm5hbWUgPSB0aGlzLmtleWNsb2FrLmdldFVzZXJuYW1lKCkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCk7XHJcblx0fVxyXG5cclxuXHQvLyBHZXR0ZXIgZm9yIGxheW91dCBzZXJ2aWNlIHN0YXRlc1xyXG5cdGdldCBzZWxlY3RlZE1haW5JdGVtKCk6IG51bWJlciB8IG51bGwge1xyXG5cdFx0cmV0dXJuIHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5zZWxlY3RlZE1haW5JdGVtO1xyXG5cdH1cclxuXHJcblx0Z2V0IHNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkO1xyXG5cdH1cclxuXHJcblx0Ly8gQ2hlY2sgaWYgdGV4dCBpcyB0cnVuY2F0ZWQgYW5kIG5lZWRzIHRvb2x0aXBcclxuXHRpc1RleHRUcnVuY2F0ZWQoXHJcblx0XHRsYWJlbDogYW55LFxyXG5cdFx0bGFuZzogc3RyaW5nIHwgbnVsbCxcclxuXHRcdG1lbnVUeXBlOiAnbWFpbicgfCAnc2Vjb25kYXJ5JyB8ICd0ZXJ0aWFyeScgfCAnbmVzdGVkJyA9ICdzZWNvbmRhcnknXHJcblx0KTogYm9vbGVhbiB7XHJcblx0XHRpZiAoIWxhYmVsIHx8ICFsYW5nIHx8ICFsYWJlbFtsYW5nXSkgcmV0dXJuIGZhbHNlO1xyXG5cclxuXHRcdGNvbnN0IHRleHQgPSBsYWJlbFtsYW5nXTtcclxuXHRcdGNvbnN0IHRleHRMZW5ndGggPSB0ZXh0Lmxlbmd0aDtcclxuXHRcdGNvbnN0IG1heExlbmd0aCA9IG1lbnVUeXBlID09PSAnbmVzdGVkJyA/IHRoaXMuTUFYX0xFTkdUSC50ZXJ0aWFyeSA6IHRoaXMuTUFYX0xFTkdUSFttZW51VHlwZV07XHJcblx0XHRyZXR1cm4gdGV4dExlbmd0aCA+IG1heExlbmd0aDtcclxuXHR9XHJcblxyXG5cdC8vIFJlY3Vyc2l2ZWx5IGNoZWNrIGlmIGEgbWVudSBpdGVtIG9yIGl0cyBjaGlsZHJlbiBtYXRjaCB0aGUgY3VycmVudCByb3V0ZVxyXG5cdGlzQWN0aXZlUm91dGUobWVudUl0ZW06IFBsdWdpbk1lbnVJdGVtKTogYm9vbGVhbiB7XHJcblx0XHRpZiAoIW1lbnVJdGVtIHx8ICFtZW51SXRlbS5yb3V0ZXJMaW5rKSByZXR1cm4gZmFsc2U7XHJcblxyXG5cdFx0Ly8gR2V0IGN1cnJlbnQgVVJMIHBhdGggYWZ0ZXIgdGhlIGhhc2hcclxuXHRcdGNvbnN0IGN1cnJlbnRVcmwgPSB0aGlzLnJvdXRlci51cmw7XHJcblx0XHRjb25zdCBoYXNoVXJsID0gY3VycmVudFVybC5pbmRleE9mKCcjJykgPiAtMSA/IGN1cnJlbnRVcmwuc3BsaXQoJyMnKVsxXSA6IGN1cnJlbnRVcmw7XHJcblxyXG5cdFx0Ly8gQ2hlY2sgZm9yIGV4YWN0IG1hdGNoIGZpcnN0XHJcblx0XHRpZiAoaGFzaFVybCA9PT0gbWVudUl0ZW0ucm91dGVyTGluayB8fCBoYXNoVXJsID09PSAnLycgKyBtZW51SXRlbS5yb3V0ZXJMaW5rKSB7XHJcblx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIENoZWNrIGlmIGN1cnJlbnQgVVJMIHN0YXJ0cyB3aXRoIHRoZSByb3V0ZXJMaW5rIChoYW5kbGVzIGNoaWxkIHJvdXRlcylcclxuXHRcdGlmIChcclxuXHRcdFx0bWVudUl0ZW0ucm91dGVyTGluayAhPT0gJy8nICYmXHJcblx0XHRcdChoYXNoVXJsLnN0YXJ0c1dpdGgobWVudUl0ZW0ucm91dGVyTGluayArICcvJykgfHwgaGFzaFVybC5zdGFydHNXaXRoKCcvJyArIG1lbnVJdGVtLnJvdXRlckxpbmsgKyAnLycpKVxyXG5cdFx0KSB7XHJcblx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIENoZWNrIGNoaWxkIGl0ZW1zIGlmIHRoZXkgZXhpc3RcclxuXHRcdGlmIChtZW51SXRlbS5pdGVtcyAmJiBtZW51SXRlbS5pdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdHJldHVybiBtZW51SXRlbS5pdGVtcy5zb21lKChjaGlsZEl0ZW0pID0+IHRoaXMuaXNBY3RpdmVSb3V0ZShjaGlsZEl0ZW0pKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gZmFsc2U7XHJcblx0fVxyXG5cclxuXHRuZ09uSW5pdCgpIHtcclxuXHRcdHRoaXMudXBkYXRlTWVudUl0ZW1zKCk7XHJcblx0XHR0aGlzLmluaXRpYWxpemVNZW51KCk7XHJcblx0XHR0aGlzLnVwZGF0ZUFjdGl2ZU1lbnVGcm9tQ3VycmVudFJvdXRlKCk7XHJcblxyXG5cdFx0Ly8gU3Vic2NyaWJlIHRvIHJvdXRlIGNoYW5nZXMgdG8gaGFuZGxlIHNlY29uZGFyeSBzaWRlYmFyIGNsb3NpbmdcclxuXHRcdHRoaXMucm91dGVyU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZXIuZXZlbnRzXHJcblx0XHRcdC5waXBlKGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXHJcblx0XHRcdC5zdWJzY3JpYmUoKCkgPT4ge1xyXG5cdFx0XHRcdC8vIFVwZGF0ZSBhY3RpdmUgbWVudSBiYXNlZCBvbiB0aGUgbmV3IHJvdXRlXHJcblx0XHRcdFx0dGhpcy51cGRhdGVBY3RpdmVNZW51RnJvbUN1cnJlbnRSb3V0ZSgpO1xyXG5cdFx0XHR9KTtcclxuXHJcblx0XHQvLyBTdWJzY3JpYmUgdG8gb3ZlcmxheSBtZW51IG9wZW4gbm90aWZpY2F0aW9uc1xyXG5cdFx0dGhpcy5vdmVybGF5TWVudU9wZW5TdWJzY3JpcHRpb24gPSB0aGlzLmxheW91dFNlcnZpY2Uub3ZlcmxheU9wZW4kLnN1YnNjcmliZSgoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSkge1xyXG5cdFx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zZXRTZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQodHJ1ZSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHRpZiAodGhpcy5vdmVybGF5TWVudU9wZW5TdWJzY3JpcHRpb24pIHtcclxuXHRcdFx0dGhpcy5vdmVybGF5TWVudU9wZW5TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24pIHtcclxuXHRcdFx0dGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLmFjdGlvblN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuXHR9XHJcblxyXG5cdC8vIEluaXRpYWxpemUgdGhlIG1lbnUgd2l0aCBwcm9wZXIgYWN0aXZlIHN0YXRlXHJcblx0aW5pdGlhbGl6ZU1lbnUoKSB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2VsZWN0ZWRNYWluSXRlbShudWxsKTtcclxuXHRcdHRoaXMuc2VsZWN0ZWRNYWluTWVudUl0ZW0gPSBudWxsO1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlY29uZGFyeVNpZGViYXJFeHBhbmRlZChmYWxzZSk7XHJcblx0XHR0aGlzLnVwZGF0ZU1lbnVJdGVtcygpO1xyXG5cdH1cclxuXHJcblx0dXBkYXRlTWVudUZyb21Sb290S2V5KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuXHRcdHRoaXMudXBkYXRlTWVudUl0ZW1zKCk7XHJcblx0XHRjb25zdCBtZW51SXRlbXMgPSB0aGlzLmdldE1lbnVJdGVtcygpO1xyXG5cclxuXHRcdGlmIChpbmRleCA+PSAwICYmIGluZGV4IDwgbWVudUl0ZW1zLmxlbmd0aCkge1xyXG5cdFx0XHRjb25zdCBpdGVtID0gbWVudUl0ZW1zW2luZGV4XTtcclxuXHRcdFx0aWYgKCFpdGVtLnNlcGFyYXRvcikge1xyXG5cdFx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zZXRTZWxlY3RlZE1haW5JdGVtKGluZGV4KTtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkTWFpbk1lbnVJdGVtID0gaXRlbTtcclxuXHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkKHRydWUpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR1cGRhdGVNZW51SXRlbXMoKTogdm9pZCB7XHJcblx0XHR0aGlzLmNhY2hlZE1lbnVJdGVtcyA9IGJyaWRnZS5ob3N0TWVudUl0ZW1zKCk7XHJcblx0fVxyXG5cclxuXHRnZXRNZW51SXRlbXMoKTogUGx1Z2luTWVudUl0ZW1bXSB7XHJcblx0XHRyZXR1cm4gdGhpcy5jYWNoZWRNZW51SXRlbXM7XHJcblx0fVxyXG5cclxuXHRzZWxlY3RNYWluSXRlbShldmVudDogTW91c2VFdmVudCwgaW5kZXg6IG51bWJlciwgaXRlbTogUGx1Z2luTWVudUl0ZW0pOiB2b2lkIHtcclxuXHRcdC8vIEhhbmRsZSBhY3Rpb24gaXRlbXMgYXQgdG9wIGxldmVsXHJcblx0XHRpZiAoaXRlbS5hY3Rpb24gJiYgKCFpdGVtLml0ZW1zIHx8IGl0ZW0uaXRlbXMubGVuZ3RoID09PSAwKSkge1xyXG5cdFx0XHR0aGlzLm9uQWN0aW9uSXRlbUNsaWNrKGl0ZW0pO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGl0ZW0ucm91dGVyTGluayAmJiAoIWl0ZW0uaXRlbXMgfHwgaXRlbS5pdGVtcy5sZW5ndGggPT09IDApKSB7XHJcblx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zZXRTZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQoZmFsc2UpO1xyXG5cdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2VsZWN0ZWRNYWluSXRlbShpbmRleCk7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRNYWluTWVudUl0ZW0gPSBpdGVtO1xyXG5cdFx0XHR0aGlzLmRpc3BhdGNoTmF2aWdhdGlvbihldmVudCwge1xyXG5cdFx0XHRcdHRhYklkOiAnJyxcclxuXHRcdFx0XHRuYXZMaW5rOiBpdGVtLnJvdXRlckxpbmssXHJcblx0XHRcdFx0bmF2TmFtZTogdGhpcy5nZXRMb2NhbFRleHQoaXRlbS5sYWJlbCksXHJcblx0XHRcdFx0aWNvbjogaXRlbS5pY29uXHJcblx0XHRcdH0pO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gSGFuZGxlIHJlZ3VsYXIgbWVudSBpdGVtcyB3aXRoIHN1Ym1lbnVcclxuXHRcdGlmICh0aGlzLnNlbGVjdGVkTWFpbkl0ZW0gPT09IGluZGV4KSB7XHJcblx0XHRcdHRoaXMubGF5b3V0U2VydmljZS50b2dnbGVTZWNvbmRhcnlTaWRlYmFyKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2VsZWN0ZWRNYWluSXRlbShpbmRleCk7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRNYWluTWVudUl0ZW0gPSBpdGVtO1xyXG5cclxuXHRcdFx0aWYgKGl0ZW0uaXRlbXMgJiYgaXRlbS5pdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNldFNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCh0cnVlKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkKGZhbHNlKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEZvciBtb2JpbGUgZGV2aWNlcywgZW5zdXJlIHRoZSBtZW51IHN0YXlzIG9wZW5cclxuXHRcdGlmICh0aGlzLmlzTW9iaWxlKCkpIHtcclxuXHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLnN0YXRpY01lbnVNb2JpbGVBY3RpdmUgPSB0cnVlO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dG9nZ2xlU2Vjb25kYXJ5U2lkZWJhcigpOiB2b2lkIHtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS50b2dnbGVTZWNvbmRhcnlTaWRlYmFyKCk7XHJcblx0fVxyXG5cclxuXHRpc01vYmlsZSgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2UuaXNNb2JpbGUoKTtcclxuXHR9XHJcblxyXG5cdC8vIExpc3RlbiBmb3IgcmVzaXplIGV2ZW50cyAtIG5vdyBoYW5kbGVkIG1vcmUgZWZmaWNpZW50bHkgYnkgbGF5b3V0IHNlcnZpY2VcclxuXHRASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcclxuXHRvblJlc2l6ZSgpIHtcclxuXHRcdGlmICghdGhpcy5pc01vYmlsZSgpICYmIHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5zdGF0aWNNZW51TW9iaWxlQWN0aXZlKSB7XHJcblx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5jbG9zZU1vYmlsZU1lbnUoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHVwZGF0ZUFjdGl2ZU1lbnVGcm9tQ3VycmVudFJvdXRlKCk6IHZvaWQge1xyXG5cdFx0Y29uc3QgbWVudUl0ZW1zID0gdGhpcy5nZXRNZW51SXRlbXMoKTtcclxuXHJcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG1lbnVJdGVtcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRjb25zdCBtZW51SXRlbSA9IG1lbnVJdGVtc1tpXTtcclxuXHRcdFx0aWYgKHRoaXMuaXNBY3RpdmVSb3V0ZShtZW51SXRlbSkpIHtcclxuXHRcdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2V0U2VsZWN0ZWRNYWluSXRlbShpKTtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkTWFpbk1lbnVJdGVtID0gbWVudUl0ZW07XHJcblxyXG5cdFx0XHRcdGlmIChtZW51SXRlbS5pdGVtcyAmJiBtZW51SXRlbS5pdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRpZiAoIXRoaXMuaXNNb2JpbGUoKSAmJiAhdGhpcy5zZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQgJiYgIXRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5zdGF0aWNNZW51TW9iaWxlQWN0aXZlKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zZXRTZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQodHJ1ZSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5zZXRTZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQoZmFsc2UpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGlzSGF2ZVNlbGVjdGVkQ2hpbGRJdGVtKGl0ZW06IFBsdWdpbk1lbnVJdGVtKTogYm9vbGVhbiB7XHJcblx0XHRpZiAoIWl0ZW0gfHwgIWl0ZW0uaXRlbXMgfHwgaXRlbS5pdGVtcy5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZTtcclxuXHJcblx0XHRmb3IgKGNvbnN0IGNoaWxkIG9mIGl0ZW0uaXRlbXMpIHtcclxuXHRcdFx0aWYgKHRoaXMuaXNBY3RpdmVSb3V0ZShjaGlsZCkpIHtcclxuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKGNoaWxkLml0ZW1zICYmIGNoaWxkLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRpZiAodGhpcy5pc0hhdmVTZWxlY3RlZENoaWxkSXRlbShjaGlsZCkpIHtcclxuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBmYWxzZTtcclxuXHR9XHJcblxyXG5cdGdldExvY2FsVGV4dCh0ZXh0OiBhbnkpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMudHJhbnNsYXRlSnNvblBpcGUudHJhbnNmb3JtKHRleHQpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSGFzaCBzdHJhdGVneSBpw6dpbiByb3V0ZXJMaW5rJ2kgYCNgLXByZWZpeCdsaSBocmVmJ2Ugw6dldmlyaXIuIHJvdXRlckxpbmsgY29uZmlnJ3RlXHJcblx0ICogbGVhZGluZyBzbGFzaCBpw6dlcmViaWxpciAow7Zybi4gYW5hc2F5ZmEgacOnaW4gYCcvJ2ApOyBuYWl2ZSBgJyMvJyArIHJvdXRlckxpbmtgXHJcblx0ICogY29uY2F0ZW5hdGlvbiBgIy8vYCDDvHJldGlyZGkg4oCUIHNhxJ8gdMSxayBcImxpbmtpIGtvcHlhbGFcIiBVWCdpbmRlIGJ1IMOnaXJraW4gZ8O2csO8bsO8ci5cclxuXHQgKi9cclxuXHRnZXRIYXNoSHJlZihyb3V0ZXJMaW5rOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogc3RyaW5nIHtcclxuXHRcdGlmICghcm91dGVyTGluaykgcmV0dXJuICcjJztcclxuXHRcdHJldHVybiByb3V0ZXJMaW5rLnN0YXJ0c1dpdGgoJy8nKSA/ICcjJyArIHJvdXRlckxpbmsgOiAnIy8nICsgcm91dGVyTGluaztcclxuXHR9XHJcblxyXG5cdGdldEFjdGlvbkl0ZW1LZXkoaXRlbTogUGx1Z2luTWVudUl0ZW0pOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIGl0ZW0uYWN0aW9uPy51cmwgKyAnfCcgKyBpdGVtLmFjdGlvbj8uc3VjY2Vzc1JvdXRlO1xyXG5cdH1cclxuXHJcblx0aXNBY3Rpb25Mb2FkaW5nKGl0ZW06IFBsdWdpbk1lbnVJdGVtKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5hY3Rpb25Mb2FkaW5nSXRlbXMuaGFzKHRoaXMuZ2V0QWN0aW9uSXRlbUtleShpdGVtKSk7XHJcblx0fVxyXG5cclxuXHRvbkFjdGlvbkl0ZW1DbGljayhpdGVtOiBQbHVnaW5NZW51SXRlbSwgZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xyXG5cdFx0aWYgKGV2ZW50KSB7XHJcblx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICghaXRlbS5hY3Rpb24gfHwgdGhpcy5pc0FjdGlvbkxvYWRpbmcoaXRlbSkpIHJldHVybjtcclxuXHJcblx0XHQvLyBDYW5jZWwgYW55IHByZXZpb3VzIGFjdGlvbiByZXF1ZXN0XHJcblx0XHR0aGlzLmFjdGlvblN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuXHJcblx0XHRjb25zdCBrZXkgPSB0aGlzLmdldEFjdGlvbkl0ZW1LZXkoaXRlbSk7XHJcblx0XHR0aGlzLmFjdGlvbkxvYWRpbmdJdGVtcy5hZGQoa2V5KTtcclxuXHJcblx0XHRjb25zdCByZXF1ZXN0JCA9XHJcblx0XHRcdGl0ZW0uYWN0aW9uLm1ldGhvZCA9PT0gJ0dFVCdcclxuXHRcdFx0XHQ/IHRoaXMuaHR0cC5nZXQoaXRlbS5hY3Rpb24udXJsKVxyXG5cdFx0XHRcdDogdGhpcy5odHRwLnBvc3QoaXRlbS5hY3Rpb24udXJsLCBpdGVtLmFjdGlvbi5ib2R5ID8/IHt9KTtcclxuXHJcblx0XHR0aGlzLmFjdGlvblN1YnNjcmlwdGlvbiA9IHJlcXVlc3QkLnN1YnNjcmliZSh7XHJcblx0XHRcdG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5hY3Rpb25Mb2FkaW5nSXRlbXMuZGVsZXRlKGtleSk7XHJcblx0XHRcdFx0Y29uc3Qgcm91dGUgPSB0aGlzLmJ1aWxkU3VjY2Vzc1JvdXRlKGl0ZW0uYWN0aW9uISwgcmVzcG9uc2UpO1xyXG5cdFx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFtyb3V0ZV0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuYWN0aW9uTG9hZGluZ0l0ZW1zLmRlbGV0ZShrZXkpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYnVpbGRTdWNjZXNzUm91dGUoYWN0aW9uOiBQbHVnaW5NZW51SXRlbVsnYWN0aW9uJ10sIHJlc3BvbnNlOiBhbnkpOiBzdHJpbmcge1xyXG5cdFx0aWYgKCFhY3Rpb24/LnN1Y2Nlc3NSb3V0ZVJlc3BvbnNlS2V5KSByZXR1cm4gYWN0aW9uPy5zdWNjZXNzUm91dGUgPz8gJy8nO1xyXG5cclxuXHRcdGNvbnN0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZUJ5UGF0aChyZXNwb25zZSwgYWN0aW9uLnN1Y2Nlc3NSb3V0ZVJlc3BvbnNlS2V5KTtcclxuXHRcdGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSByZXR1cm4gYWN0aW9uLnN1Y2Nlc3NSb3V0ZTtcclxuXHJcblx0XHRyZXR1cm4gYCR7YWN0aW9uLnN1Y2Nlc3NSb3V0ZX0vJHt2YWx1ZX1gO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXRWYWx1ZUJ5UGF0aChvYmo6IGFueSwgcGF0aDogc3RyaW5nKTogYW55IHtcclxuXHRcdGlmICghb2JqIHx8ICFwYXRoKSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuXHRcdHJldHVybiBwYXRoLnNwbGl0KCcuJykucmVkdWNlKChjdXJyZW50LCBrZXkpID0+IHtcclxuXHRcdFx0aWYgKGN1cnJlbnQgPT09IHVuZGVmaW5lZCB8fCBjdXJyZW50ID09PSBudWxsKSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuXHRcdFx0Ly8gSGFuZGxlIGFycmF5IGFjY2VzcyBsaWtlICdyZXN1bHRbMF0nXHJcblx0XHRcdGNvbnN0IGFycmF5TWF0Y2ggPSBrZXkubWF0Y2goL14oLis/KVxcWyhcXGQrKVxcXSQvKTtcclxuXHRcdFx0aWYgKGFycmF5TWF0Y2gpIHtcclxuXHRcdFx0XHRjb25zdCBhcnJheUtleSA9IGFycmF5TWF0Y2hbMV07XHJcblx0XHRcdFx0Y29uc3QgaW5kZXggPSBwYXJzZUludChhcnJheU1hdGNoWzJdLCAxMCk7XHJcblx0XHRcdFx0cmV0dXJuIGN1cnJlbnRbYXJyYXlLZXldPy5baW5kZXhdO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRyZXR1cm4gY3VycmVudFtrZXldO1xyXG5cdFx0fSwgb2JqKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENocm9tZS1saWtlIG1lbsO8IGNsaWNrIGRhdnJhbsSxxZ/EsSAoc2Vjb25kYXJ5L3RlcnRpYXJ5L25lc3RlZCBzZXZpeWVsZXJpIGnDp2luKTpcclxuXHQgKiAtIE5vcm1hbCBjbGljayDihpIgYWt0aWYgdGFiJ2RhIG5hdmlnYXRlXHJcblx0ICogLSBDdHJsL0NtZCArIENsaWNrIOKGkiBhcmthIHBsYW5kYSB5ZW5pIHRhYlxyXG5cdCAqIC0gQ3RybC9DbWQgKyBTaGlmdCArIENsaWNrIOKGkiDDtm4gcGxhbmRhIHllbmkgdGFiXHJcblx0ICovXHJcblx0b25NZW51Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IFBsdWdpbk1lbnVJdGVtKTogdm9pZCB7XHJcblx0XHRpZiAoIWl0ZW0ucm91dGVyTGluaykgcmV0dXJuO1xyXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHRcdHRoaXMuZGlzcGF0Y2hOYXZpZ2F0aW9uKGV2ZW50LCB7XHJcblx0XHRcdHRhYklkOiAnJyxcclxuXHRcdFx0bmF2TGluazogaXRlbS5yb3V0ZXJMaW5rLFxyXG5cdFx0XHRuYXZOYW1lOiB0aGlzLmdldExvY2FsVGV4dChpdGVtLmxhYmVsKSxcclxuXHRcdFx0aWNvbjogaXRlbS5pY29uXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKiBNaWRkbGUgY2xpY2sgKGJ1dHRvbiAxKSDihpIgYXJrYSBwbGFuZGEgeWVuaSB0YWIuICovXHJcblx0b25NZW51QXV4Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IFBsdWdpbk1lbnVJdGVtKTogdm9pZCB7XHJcblx0XHRpZiAoZXZlbnQuYnV0dG9uICE9PSAxIHx8ICFpdGVtLnJvdXRlckxpbmspIHJldHVybjtcclxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHR0aGlzLm5hdlNlcnZpY2Uub3BlbkluQmFja2dyb3VuZFRhYih7XHJcblx0XHRcdHRhYklkOiAnJyxcclxuXHRcdFx0bmF2TGluazogaXRlbS5yb3V0ZXJMaW5rLFxyXG5cdFx0XHRuYXZOYW1lOiB0aGlzLmdldExvY2FsVGV4dChpdGVtLmxhYmVsKSxcclxuXHRcdFx0aWNvbjogaXRlbS5pY29uXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKiBNaWRkbGUgY2xpY2sgZGVmYXVsdCBzY3JvbGwgZGF2cmFuxLHFn8SxbsSxIGVuZ2VsbGUuICovXHJcblx0b25NZW51TW91c2Vkb3duKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcblx0XHRpZiAoZXZlbnQuYnV0dG9uID09PSAxKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBkaXNwYXRjaE5hdmlnYXRpb24oZXZlbnQ6IE1vdXNlRXZlbnQsIG5hdkl0ZW06IE5hdkl0ZW0pOiB2b2lkIHtcclxuXHRcdGlmIChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpIHtcclxuXHRcdFx0aWYgKGV2ZW50LnNoaWZ0S2V5KSB7XHJcblx0XHRcdFx0dGhpcy5uYXZTZXJ2aWNlLm9wZW5Jbk5ld1RhYkFuZEZvY3VzKG5hdkl0ZW0pO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMubmF2U2VydmljZS5vcGVuSW5CYWNrZ3JvdW5kVGFiKG5hdkl0ZW0pO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLm5hdlNlcnZpY2UubmF2aWdhdGVJbkN1cnJlbnRUYWIobmF2SXRlbSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR0b2dnbGVTaWRlYmFyKCkge1xyXG5cdFx0Ly8gRcSfZXIgc2XDp2lsaSBiaXIgYW5hIG1lbsO8IMO2xJ9lc2kgdmFyc2EgdmUgYWx0IG1lbsO8bGVyaSB2YXJzYSB0b2dnbGUgeWFwYWJpbGlyaXpcclxuXHRcdGlmICh0aGlzLnNlbGVjdGVkTWFpbk1lbnVJdGVtICYmIHRoaXMuc2VsZWN0ZWRNYWluTWVudUl0ZW0uaXRlbXMgJiYgdGhpcy5zZWxlY3RlZE1haW5NZW51SXRlbS5pdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdHRoaXMuc2lkZWJhckV4cGFuZGVkID0gIXRoaXMuc2lkZWJhckV4cGFuZGVkO1xyXG5cdFx0fSBlbHNlIGlmICh0aGlzLnNpZGViYXJFeHBhbmRlZCkge1xyXG5cdFx0XHR0aGlzLnNpZGViYXJFeHBhbmRlZCA9IGZhbHNlO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibmV3LWxheW91dC1zaWRlYmFyXCIgPlxyXG5cdDwhLS0gTWFpbiBzaWRlYmFyIChmaXJzdCBsZXZlbCkgLS0+XHJcblx0PGRpdiBjbGFzcz1cIm1haW4tc2lkZWJhclwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1wiPlxyXG5cdFx0PGRpdiBjbGFzcz1cIm1haW4tc2lkZWJhci1jb250ZW50XCI+XHJcblx0XHRcdDx1bCBjbGFzcz1cIm1haW4tbWVudVwiPlxyXG5cdFx0XHRcdEBmb3IoaXRlbSBvZiBnZXRNZW51SXRlbXMoKTsgdHJhY2sgaXRlbTsgbGV0IGkgPSAkaW5kZXgpe1xyXG5cdFx0XHRcdFx0QGlmKCFpdGVtLnNlcGFyYXRvcil7XHJcblx0XHRcdFx0XHRcdDxsaVxyXG5cdFx0XHRcdFx0XHRbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGlzQWN0aXZlUm91dGUoaXRlbSkgfHwgaXNIYXZlU2VsZWN0ZWRDaGlsZEl0ZW0oaXRlbSl9XCJcclxuXHRcdFx0XHRcdFx0KGNsaWNrKT1cInNlbGVjdE1haW5JdGVtKCRldmVudCwgaSwgaXRlbSlcIlxyXG5cdFx0XHRcdFx0XHQoYXV4Y2xpY2spPVwib25NZW51QXV4Q2xpY2soJGV2ZW50LCBpdGVtKVwiXHJcblx0XHRcdFx0XHRcdChtb3VzZWRvd24pPVwib25NZW51TW91c2Vkb3duKCRldmVudClcIlxyXG5cdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiKGl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gaXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnKVwiXHJcblx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJtYWluLW1lbnUtaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpIFtuZ0NsYXNzXT1cIml0ZW0uaWNvblwiIGNsYXNzPVwibWVudS1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdDwhLS0gPHNtYWxsIGNsYXNzPVwibWVudS1sYWJlbFwiPnt7IGl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gaXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zbWFsbD4gLS0+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdDwvdWw+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuXHRcdCBAaWYoc2VsZWN0ZWRNYWluTWVudUl0ZW0gJiYgc2VsZWN0ZWRNYWluTWVudUl0ZW0uaXRlbXMgJiYgc2VsZWN0ZWRNYWluTWVudUl0ZW0uaXRlbXMubGVuZ3RoID4gMCl7XHJcblxyXG5cdFx0XHQgPGRpdiBjbGFzcz1cInNpZGViYXItdG9nZ2xlLWNvbnRhaW5lclwiPlxyXG5cdFx0XHRcdCA8YnV0dG9uIGNsYXNzPVwic2lkZWJhci1jaXJjbGUtdG9nZ2xlLWJ0blwiIChjbGljayk9XCJ0b2dnbGVTaWRlYmFyKClcIj5cclxuXHRcdFx0XHRcdCA8aSBjbGFzcz1cInBpXCIgW25nQ2xhc3NdPVwic2lkZWJhckV4cGFuZGVkID8gJ3BpLWFuZ2xlLWxlZnQnIDogJ3BpLWFuZ2xlLXJpZ2h0J1wiPjwvaT5cclxuXHRcdFx0XHQgPC9idXR0b24+XHJcblx0XHRcdCA8L2Rpdj5cclxuXHRcdCB9XHJcblxyXG5cdDwhLS0gU2Vjb25kYXJ5IHNpZGViYXIgKHNlY29uZCBsZXZlbCkgLS0+XHJcblx0PGRpdiBjbGFzcz1cInNlY29uZGFyeS1zaWRlYmFyXCIgW25nQ2xhc3NdPVwieydleHBhbmRlZCc6IHNpZGViYXJFeHBhbmRlZH1cIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJzZWNvbmRhcnktY29udGVudC13cmFwcGVyXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XHJcblx0XHRcdDwhLS0gU2Vjb25kYXJ5IHNpZGViYXIgY29udGVudCAtLT5cclxuXHRcdFx0PGRpdiBjbGFzcz1cInNlY29uZGFyeS1zaWRlYmFyLWNvbnRlbnRcIj5cclxuXHRcdFx0XHRAaWYoc2VsZWN0ZWRNYWluTWVudUl0ZW0pe1xyXG5cdFx0XHRcdFx0PHVsIGNsYXNzPVwic2Vjb25kYXJ5LW1lbnVcIj5cclxuXHRcdFx0XHRcdFx0QGZvcihzdWJJdGVtIG9mIHNlbGVjdGVkTWFpbk1lbnVJdGVtLml0ZW1zOyB0cmFjayBzdWJJdGVtOyBsZXQgaSA9ICRpbmRleCl7XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIEFjdGlvbiBtZW51IGl0ZW0gLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRAaWYoc3ViSXRlbS5hY3Rpb24pIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0PGxpIGNsYXNzPVwic2Vjb25kYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aW9uLWxvYWRpbmcnOiBpc0FjdGlvbkxvYWRpbmcoc3ViSXRlbSl9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGEgY2xhc3M9XCJzZWNvbmRhcnktbWVudS1saW5rIGlzLWFjdGlvblwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2spPVwib25BY3Rpb25JdGVtQ2xpY2soc3ViSXRlbSwgJGV2ZW50KVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKHN1Ykl0ZW0ubGFiZWwsIGFjdGl2ZUxhbmcoKSwgJ3NlY29uZGFyeScpID8gKHN1Ykl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gc3ViSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnKSA6ICcnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYoaXNBY3Rpb25Mb2FkaW5nKHN1Ykl0ZW0pKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJzdWJtZW51LWljb24gcGkgcGktc3BpbiBwaS1zcGlubmVyXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxpIFtuZ0NsYXNzXT1cInN1Ykl0ZW0uaWNvblwiIGNsYXNzPVwic3VibWVudS1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJzdWJtZW51LWxhYmVsXCI+e3sgc3ViSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBzdWJJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2xpPlxyXG5cdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIFJlZ3VsYXIgbWVudSBpdGVtIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGxpIGNsYXNzPVwic2Vjb25kYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNBY3RpdmVSb3V0ZShzdWJJdGVtKX1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGEgW2F0dHIuaHJlZl09XCJzdWJJdGVtLnJvdXRlckxpbmsgPyBnZXRIYXNoSHJlZihzdWJJdGVtLnJvdXRlckxpbmspIDogbnVsbFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0W2FyaWxOYXZMaW5rXT1cInsgdGFiSWQ6ICcnLCBuYXZMaW5rOiBzdWJJdGVtLnJvdXRlckxpbmsgfHwgJycsIG5hdk5hbWU6IGdldExvY2FsVGV4dChzdWJJdGVtLmxhYmVsKSwgaWNvbjogc3ViSXRlbS5pY29uIH1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJvbk1lbnVDbGljaygkZXZlbnQsIHN1Ykl0ZW0pXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoYXV4Y2xpY2spPVwib25NZW51QXV4Q2xpY2soJGV2ZW50LCBzdWJJdGVtKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0KG1vdXNlZG93bik9XCJvbk1lbnVNb3VzZWRvd24oJGV2ZW50KVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzZWNvbmRhcnktbWVudS1saW5rXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKHN1Ykl0ZW0ubGFiZWwsIGFjdGl2ZUxhbmcoKSwgJ3NlY29uZGFyeScpID8gKHN1Ykl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gc3ViSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnKSA6ICcnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxpIFtuZ0NsYXNzXT1cInN1Ykl0ZW0uaWNvblwiIGNsYXNzPVwic3VibWVudS1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwic3VibWVudS1sYWJlbFwiPnt7IHN1Ykl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gc3ViSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gQWx3YXlzIHJlbmRlciBzdWJtZW51IGlmIGl0IGV4aXN0cyAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0IEBpZihzdWJJdGVtLml0ZW1zICYmIHN1Ykl0ZW0uaXRlbXMubGVuZ3RoID4gMCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0IDx1bCBjbGFzcz1cInRlcnRpYXJ5LW1lbnUgYWx3YXlzLW9wZW5cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBmb3IoY2hpbGRJdGVtIG9mIHN1Ykl0ZW0uaXRlbXM7IHRyYWNrIGNoaWxkSXRlbTsgbGV0IGkgPSAkaW5kZXgpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIEFjdGlvbiBpdGVtIGF0IHRlcnRpYXJ5IGxldmVsIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYoY2hpbGRJdGVtLmFjdGlvbikge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsaSBjbGFzcz1cInRlcnRpYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aW9uLWxvYWRpbmcnOiBpc0FjdGlvbkxvYWRpbmcoY2hpbGRJdGVtKX1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhIGNsYXNzPVwidGVydGlhcnktbWVudS1saW5rIGlzLWFjdGlvblwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJvbkFjdGlvbkl0ZW1DbGljayhjaGlsZEl0ZW0sICRldmVudClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKGNoaWxkSXRlbS5sYWJlbCwgYWN0aXZlTGFuZygpLCAndGVydGlhcnknKSA/IChjaGlsZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gY2hpbGRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycpIDogJydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYoaXNBY3Rpb25Mb2FkaW5nKGNoaWxkSXRlbSkpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidGVydGlhcnktbGFiZWxcIj48aSBjbGFzcz1cInBpIHBpLXNwaW4gcGktc3Bpbm5lclwiPjwvaT4ge3sgY2hpbGRJdGVtLmxhYmVsICYmIGFjdGl2ZUxhbmcoKSA/IGNoaWxkSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInRlcnRpYXJ5LWxhYmVsXCI+e3sgY2hpbGRJdGVtLmxhYmVsICYmIGFjdGl2ZUxhbmcoKSA/IGNoaWxkSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsaSBjbGFzcz1cInRlcnRpYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNBY3RpdmVSb3V0ZShjaGlsZEl0ZW0pfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhIFthdHRyLmhyZWZdPVwiY2hpbGRJdGVtLnJvdXRlckxpbmsgPyBnZXRIYXNoSHJlZihjaGlsZEl0ZW0ucm91dGVyTGluaykgOiBudWxsXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFthcmlsTmF2TGlua109XCJ7IHRhYklkOiAnJywgbmF2TGluazogY2hpbGRJdGVtLnJvdXRlckxpbmsgfHwgJycsIG5hdk5hbWU6IGdldExvY2FsVGV4dChjaGlsZEl0ZW0ubGFiZWwpLCBpY29uOiBjaGlsZEl0ZW0uaWNvbiB9XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJvbk1lbnVDbGljaygkZXZlbnQsIGNoaWxkSXRlbSlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGF1eGNsaWNrKT1cIm9uTWVudUF1eENsaWNrKCRldmVudCwgY2hpbGRJdGVtKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobW91c2Vkb3duKT1cIm9uTWVudU1vdXNlZG93bigkZXZlbnQpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwidGVydGlhcnktbWVudS1saW5rXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCIhaXNNb2JpbGUoKSAmJiBpc1RleHRUcnVuY2F0ZWQoY2hpbGRJdGVtLmxhYmVsLCBhY3RpdmVMYW5nKCksICd0ZXJ0aWFyeScpID8gKGNoaWxkSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBjaGlsZEl0ZW0ubGFiZWxbYWN0aXZlTGFuZygpIV0gfHwgJycgOiAnJykgOiAnJ1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJ0ZXJ0aWFyeS1sYWJlbFwiPnt7IGNoaWxkSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBjaGlsZEl0ZW0ubGFiZWxbYWN0aXZlTGFuZygpIV0gfHwgJycgOiAnJyB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSBBbHdheXMgcmVuZGVyIGRlZXBlciBsZXZlbHMgaWYgdGhleSBleGlzdCwgYWxzbyB2aXNpYmxlIGJ5IGRlZmF1bHQgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmKGNoaWxkSXRlbS5pdGVtcyAmJiBjaGlsZEl0ZW0uaXRlbXMubGVuZ3RoID4gMCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dWwgY2xhc3M9XCJuZXN0ZWQtbWVudSBhbHdheXMtb3BlblwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAZm9yKG5lc3RlZEl0ZW0gb2YgY2hpbGRJdGVtLml0ZW1zOyB0cmFjayBuZXN0ZWRJdGVtOyBsZXQgaSA9ICRpbmRleCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmKG5lc3RlZEl0ZW0uYWN0aW9uKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bGkgY2xhc3M9XCJuZXN0ZWQtbWVudS1pdGVtXCIgW25nQ2xhc3NdPVwieydhY3Rpb24tbG9hZGluZyc6IGlzQWN0aW9uTG9hZGluZyhuZXN0ZWRJdGVtKX1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGEgY2xhc3M9XCJuZXN0ZWQtbWVudS1saW5rIGlzLWFjdGlvblwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cIm9uQWN0aW9uSXRlbUNsaWNrKG5lc3RlZEl0ZW0sICRldmVudClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCIhaXNNb2JpbGUoKSAmJiBpc1RleHRUcnVuY2F0ZWQobmVzdGVkSXRlbS5sYWJlbCwgYWN0aXZlTGFuZygpLCAnbmVzdGVkJykgPyAobmVzdGVkSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBuZXN0ZWRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycpIDogJydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmKGlzQWN0aW9uTG9hZGluZyhuZXN0ZWRJdGVtKSl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm5lc3RlZC1sYWJlbFwiPjxpIGNsYXNzPVwicGkgcGktc3BpbiBwaS1zcGlubmVyXCI+PC9pPiB7eyBuZXN0ZWRJdGVtLmxhYmVsICYmIGFjdGl2ZUxhbmcoKSA/IG5lc3RlZEl0ZW0ubGFiZWxbYWN0aXZlTGFuZygpIV0gfHwgJycgOiAnJyB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibmVzdGVkLWxhYmVsXCI+e3sgbmVzdGVkSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBuZXN0ZWRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2xpPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsaVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJuZXN0ZWQtbWVudS1pdGVtXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNBY3RpdmVSb3V0ZShuZXN0ZWRJdGVtKX1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhIFthdHRyLmhyZWZdPVwibmVzdGVkSXRlbS5yb3V0ZXJMaW5rID8gZ2V0SGFzaEhyZWYobmVzdGVkSXRlbS5yb3V0ZXJMaW5rKSA6IG51bGxcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbYXJpbE5hdkxpbmtdPVwieyB0YWJJZDogJycsIG5hdkxpbms6IG5lc3RlZEl0ZW0ucm91dGVyTGluayB8fCAnJywgbmF2TmFtZTogZ2V0TG9jYWxUZXh0KG5lc3RlZEl0ZW0ubGFiZWwpLCBpY29uOiBuZXN0ZWRJdGVtLmljb24gfVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJvbk1lbnVDbGljaygkZXZlbnQsIG5lc3RlZEl0ZW0pXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGF1eGNsaWNrKT1cIm9uTWVudUF1eENsaWNrKCRldmVudCwgbmVzdGVkSXRlbSlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQobW91c2Vkb3duKT1cIm9uTWVudU1vdXNlZG93bigkZXZlbnQpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJuZXN0ZWQtbWVudS1saW5rXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cIiFpc01vYmlsZSgpICYmIGlzVGV4dFRydW5jYXRlZChuZXN0ZWRJdGVtLmxhYmVsLCBhY3RpdmVMYW5nKCksICduZXN0ZWQnKSA/IChuZXN0ZWRJdGVtLmxhYmVsICYmIGFjdGl2ZUxhbmcoKSA/IG5lc3RlZEl0ZW0ubGFiZWxbYWN0aXZlTGFuZygpIV0gfHwgJycgOiAnJykgOiAnJ1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibmVzdGVkLWxhYmVsXCI+e3sgbmVzdGVkSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBuZXN0ZWRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdWw+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2xpPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0IDwvdWw+XHJcblx0XHRcdFx0XHRcdFx0XHRcdCB9XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2xpPlxyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQ8L3VsPlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuXHRcclxuPC9kaXY+XHJcbiJdfQ==
@@ -197,10 +197,10 @@ export class FavoritePagesSidebarComponent {
197
197
  getFullUrl(url) {
198
198
  return this.favoritePagesService.getFullUrl(url);
199
199
  }
200
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FavoritePagesSidebarComponent, deps: [{ token: i1.LayoutService }, { token: i2.FavoritePagesService }, { token: i3.ConfirmationService }, { token: i3.MessageService }, { token: i4.DialogService }, { token: i5.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
201
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: FavoritePagesSidebarComponent, isStandalone: true, selector: "app-favorite-pages-sidebar", providers: [ConfirmationService, DialogService], 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-favorite-pages-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'favoritePages'\">\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\">\r\n\t\t\t\t<i class=\"pi pi-heart text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('favoritePages') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"favorite-pages-content\">\r\n\t\t@if (isCurrentPageFavorited()) {\r\n\t\t\t<div class=\"current-favorited-message\">\r\n\t\t\t\t<div class=\"message-content\">\r\n\t\t\t\t\t<i class=\"pi pi-check-circle text-green-500\"></i>\r\n\t\t\t\t\t<span>{{ t('currentPageFavorited') }}</span>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<div class=\"add-section\">\r\n\t\t\t@if (!isCurrentPageFavorited()) {\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\t[label]=\"t('addCurrentPage')\"\r\n\t\t\t\t\ticon=\"PLUS\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t(clickEvent)=\"addCurrentPageToFavorites()\">\r\n\t\t\t\t</aril-button>\r\n\t\t\t} @else {\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\t[label]=\"t('removeCurrentPage')\"\r\n\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\tcolor=\"danger\"\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t(clickEvent)=\"removeCurrentPageFromFavorites()\">\r\n\t\t\t\t</aril-button>\r\n\t\t\t}\r\n\t\t</div>\r\n\r\n\t\t@if (favoritePages().length > 0) {\r\n\t\t\t<div class=\"favorites-list\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"favorites-items\">\r\n\t\t\t\t\t\t@for (favorite of favoritePages(); track trackByFavoriteId($index, favorite)) {\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclass=\"favorite-item\"\r\n\t\t\t\t\t\t\t\t[class.default-item]=\"favorite.id < 0\"\r\n\t\t\t\t\t\t\t\t[arilNavLink]=\"{ tabId: '', navLink: favorite.url, navName: favorite.label }\"\r\n\t\t\t\t\t\t\t\t(click)=\"navigateToFavorite(favorite)\"\r\n\t\t\t\t\t\t\t\t[pTooltip]=\"getFullUrl(favorite.url)\"\r\n\t\t\t\t\t\t\t\ttooltipPosition=\"top\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-content\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-title\">\r\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-external-link text-primary mr-2\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"title-text\">{{ favorite.label }}</span>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t<div>\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.faPenToSquare\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"lg\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: var(--yellow-500)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"col-2 cursor-pointer\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"editFavorite(favorite, $event)\">\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<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faTrash\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"lg\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"col-2 cursor-pointer\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"deleteFavorite(favorite, $event)\">\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</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\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-heart empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noFavorites') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('startAddingFavorites') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\t\t<div>\r\n\t\t\t<p-paginator\r\n\t\t\t\t[first]=\"(currentPage() - 1) * pageSize()\"\r\n\t\t\t\t[rows]=\"pageSize()\"\r\n\t\t\t\t[totalRecords]=\"totalItems()\"\r\n\t\t\t\t[showCurrentPageReport]=\"true\"\r\n\t\t\t\t[currentPageReportTemplate]=\"t('paginatorTemplate')\"\r\n\t\t\t\t[showFirstLastIcon]=\"false\"\r\n\t\t\t\t[showPageLinks]=\"false\"\r\n\t\t\t\t(onPageChange)=\"onPageChange($event)\">\r\n\t\t\t</p-paginator>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<p-confirmDialog></p-confirmDialog>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-favorite-pages-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-favorite-pages-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem 1.5rem}:host ::ng-deep .layout-favorite-pages-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}.favorite-pages-content{display:flex;flex-direction:column;height:100%;background:var(--surface-0)}.current-favorited-message{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--green-50)}.current-favorited-message .message-content{display:flex;align-items:center;gap:.5rem;color:var(--green-700);font-size:.9rem;font-weight:500}.add-section{display:flex;align-items:center;gap:.5rem;padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.favorites-list{flex:1;overflow:hidden}.favorites-items{padding:.5rem}.favorite-item{background:var(--surface-0);border:1px solid var(--surface-border);border-radius:8px;margin-bottom:.5rem;cursor:pointer;transition:all .2s ease;position:relative;overflow:hidden;padding:.5rem .2rem}.favorite-item:hover{border-color:var(--primary-200);background:var(--primary-50);transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.favorite-item:hover .action-btn{opacity:1}.favorite-item:last-child{margin-bottom:0}.favorite-item.default-item{background:var(--blue-50);border-left:3px solid var(--blue-500)}.favorite-item.default-item:hover{background:var(--blue-100);border-color:var(--blue-300)}.favorite-item.default-item .title-text{font-weight:600;color:var(--blue-700)}.item-content{padding:.5rem .75rem}.item-header{display:flex;align-items:center;justify-content:space-between}.item-title{display:flex;align-items:center;flex:1;min-width:0}.item-title .title-text{font-weight:600;color:var(--text-color);font-size:1rem;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-content .empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-content .empty-title{font-size:1.1rem;font-weight:600;color:var(--text-color);margin-bottom:.5rem}.empty-content .empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}@media (max-width: 768px){.add-section{padding:.75rem}.add-section .button-label{font-size:.8rem}.item-content{padding:.5rem}.item-title .title-text{font-size:.85rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i6.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: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ScrollPanelModule }, { kind: "component", type: i7.ScrollPanel, selector: "p-scrollPanel", inputs: ["style", "styleClass", "step"] }, { kind: "ngmodule", type: ConfirmDialogModule }, { kind: "component", type: i8.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: PaginatorModule }, { kind: "component", type: i9.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "appendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "jumpToPageItemTemplate", "showPageLinks", "locale", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { kind: "ngmodule", type: DynamicDialogModule }, { 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: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i10.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i11.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: NavLinkDirective, selector: "[arilNavLink]", inputs: ["arilNavLink"] }] }); }
200
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FavoritePagesSidebarComponent, deps: [{ token: i1.LayoutService }, { token: i2.FavoritePagesService }, { token: i3.ConfirmationService }, { token: i3.MessageService }, { token: i4.DialogService }, { token: i5.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
201
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FavoritePagesSidebarComponent, isStandalone: true, selector: "app-favorite-pages-sidebar", providers: [ConfirmationService, DialogService], 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-favorite-pages-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'favoritePages'\">\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\">\r\n\t\t\t\t<i class=\"pi pi-heart text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('favoritePages') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"favorite-pages-content\">\r\n\t\t@if (isCurrentPageFavorited()) {\r\n\t\t\t<div class=\"current-favorited-message\">\r\n\t\t\t\t<div class=\"message-content\">\r\n\t\t\t\t\t<i class=\"pi pi-check-circle text-green-500\"></i>\r\n\t\t\t\t\t<span>{{ t('currentPageFavorited') }}</span>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<div class=\"add-section\">\r\n\t\t\t@if (!isCurrentPageFavorited()) {\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\t[label]=\"t('addCurrentPage')\"\r\n\t\t\t\t\ticon=\"PLUS\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t(clickEvent)=\"addCurrentPageToFavorites()\">\r\n\t\t\t\t</aril-button>\r\n\t\t\t} @else {\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\t[label]=\"t('removeCurrentPage')\"\r\n\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\tcolor=\"danger\"\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t(clickEvent)=\"removeCurrentPageFromFavorites()\">\r\n\t\t\t\t</aril-button>\r\n\t\t\t}\r\n\t\t</div>\r\n\r\n\t\t@if (favoritePages().length > 0) {\r\n\t\t\t<div class=\"favorites-list\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"favorites-items\">\r\n\t\t\t\t\t\t@for (favorite of favoritePages(); track trackByFavoriteId($index, favorite)) {\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclass=\"favorite-item\"\r\n\t\t\t\t\t\t\t\t[class.default-item]=\"favorite.id < 0\"\r\n\t\t\t\t\t\t\t\t[arilNavLink]=\"{ tabId: '', navLink: favorite.url, navName: favorite.label }\"\r\n\t\t\t\t\t\t\t\t(click)=\"navigateToFavorite(favorite)\"\r\n\t\t\t\t\t\t\t\t[pTooltip]=\"getFullUrl(favorite.url)\"\r\n\t\t\t\t\t\t\t\ttooltipPosition=\"top\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-content\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-title\">\r\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-external-link text-primary mr-2\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"title-text\">{{ favorite.label }}</span>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t<div>\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.faPenToSquare\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"lg\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: var(--yellow-500)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"col-2 cursor-pointer\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"editFavorite(favorite, $event)\">\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<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faTrash\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"lg\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"col-2 cursor-pointer\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"deleteFavorite(favorite, $event)\">\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</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\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-heart empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noFavorites') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('startAddingFavorites') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\t\t<div>\r\n\t\t\t<p-paginator\r\n\t\t\t\t[first]=\"(currentPage() - 1) * pageSize()\"\r\n\t\t\t\t[rows]=\"pageSize()\"\r\n\t\t\t\t[totalRecords]=\"totalItems()\"\r\n\t\t\t\t[showCurrentPageReport]=\"true\"\r\n\t\t\t\t[currentPageReportTemplate]=\"t('paginatorTemplate')\"\r\n\t\t\t\t[showFirstLastIcon]=\"false\"\r\n\t\t\t\t[showPageLinks]=\"false\"\r\n\t\t\t\t(onPageChange)=\"onPageChange($event)\">\r\n\t\t\t</p-paginator>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<p-confirmDialog></p-confirmDialog>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-favorite-pages-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-favorite-pages-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem 1.5rem}:host ::ng-deep .layout-favorite-pages-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}.favorite-pages-content{display:flex;flex-direction:column;height:100%;background:var(--surface-0)}.current-favorited-message{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--green-50)}.current-favorited-message .message-content{display:flex;align-items:center;gap:.5rem;color:var(--green-700);font-size:.9rem;font-weight:500}.add-section{display:flex;align-items:center;gap:.5rem;padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.favorites-list{flex:1;overflow:hidden}.favorites-items{padding:.5rem}.favorite-item{background:var(--surface-0);border:1px solid var(--surface-border);border-radius:8px;margin-bottom:.5rem;cursor:pointer;transition:all .2s ease;position:relative;overflow:hidden;padding:.5rem .2rem}.favorite-item:hover{border-color:var(--primary-200);background:var(--primary-50);transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.favorite-item:hover .action-btn{opacity:1}.favorite-item:last-child{margin-bottom:0}.favorite-item.default-item{background:var(--blue-50);border-left:3px solid var(--blue-500)}.favorite-item.default-item:hover{background:var(--blue-100);border-color:var(--blue-300)}.favorite-item.default-item .title-text{font-weight:600;color:var(--blue-700)}.item-content{padding:.5rem .75rem}.item-header{display:flex;align-items:center;justify-content:space-between}.item-title{display:flex;align-items:center;flex:1;min-width:0}.item-title .title-text{font-weight:600;color:var(--text-color);font-size:1rem;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-content .empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-content .empty-title{font-size:1.1rem;font-weight:600;color:var(--text-color);margin-bottom:.5rem}.empty-content .empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}@media (max-width: 768px){.add-section{padding:.75rem}.add-section .button-label{font-size:.8rem}.item-content{padding:.5rem}.item-title .title-text{font-size:.85rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i6.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: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ScrollPanelModule }, { kind: "component", type: i7.ScrollPanel, selector: "p-scrollPanel", inputs: ["style", "styleClass", "step"] }, { kind: "ngmodule", type: ConfirmDialogModule }, { kind: "component", type: i8.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: PaginatorModule }, { kind: "component", type: i9.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "appendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "jumpToPageItemTemplate", "showPageLinks", "locale", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { kind: "ngmodule", type: DynamicDialogModule }, { 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: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i10.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i11.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: NavLinkDirective, selector: "[arilNavLink]", inputs: ["arilNavLink"] }] }); }
202
202
  }
203
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FavoritePagesSidebarComponent, decorators: [{
203
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FavoritePagesSidebarComponent, decorators: [{
204
204
  type: Component,
205
205
  args: [{ standalone: true, selector: 'app-favorite-pages-sidebar', imports: [
206
206
  CommonModule,
@@ -216,4 +216,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
216
216
  NavLinkDirective
217
217
  ], providers: [ConfirmationService, DialogService], 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-favorite-pages-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'favoritePages'\">\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\">\r\n\t\t\t\t<i class=\"pi pi-heart text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('favoritePages') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"favorite-pages-content\">\r\n\t\t@if (isCurrentPageFavorited()) {\r\n\t\t\t<div class=\"current-favorited-message\">\r\n\t\t\t\t<div class=\"message-content\">\r\n\t\t\t\t\t<i class=\"pi pi-check-circle text-green-500\"></i>\r\n\t\t\t\t\t<span>{{ t('currentPageFavorited') }}</span>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<div class=\"add-section\">\r\n\t\t\t@if (!isCurrentPageFavorited()) {\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\t[label]=\"t('addCurrentPage')\"\r\n\t\t\t\t\ticon=\"PLUS\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t(clickEvent)=\"addCurrentPageToFavorites()\">\r\n\t\t\t\t</aril-button>\r\n\t\t\t} @else {\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\t[label]=\"t('removeCurrentPage')\"\r\n\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\tcolor=\"danger\"\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t(clickEvent)=\"removeCurrentPageFromFavorites()\">\r\n\t\t\t\t</aril-button>\r\n\t\t\t}\r\n\t\t</div>\r\n\r\n\t\t@if (favoritePages().length > 0) {\r\n\t\t\t<div class=\"favorites-list\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"favorites-items\">\r\n\t\t\t\t\t\t@for (favorite of favoritePages(); track trackByFavoriteId($index, favorite)) {\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclass=\"favorite-item\"\r\n\t\t\t\t\t\t\t\t[class.default-item]=\"favorite.id < 0\"\r\n\t\t\t\t\t\t\t\t[arilNavLink]=\"{ tabId: '', navLink: favorite.url, navName: favorite.label }\"\r\n\t\t\t\t\t\t\t\t(click)=\"navigateToFavorite(favorite)\"\r\n\t\t\t\t\t\t\t\t[pTooltip]=\"getFullUrl(favorite.url)\"\r\n\t\t\t\t\t\t\t\ttooltipPosition=\"top\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-content\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-title\">\r\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-external-link text-primary mr-2\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"title-text\">{{ favorite.label }}</span>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t<div>\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.faPenToSquare\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"lg\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: var(--yellow-500)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"col-2 cursor-pointer\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"editFavorite(favorite, $event)\">\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<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faTrash\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"lg\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"col-2 cursor-pointer\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"deleteFavorite(favorite, $event)\">\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</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\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-heart empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noFavorites') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('startAddingFavorites') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\t\t<div>\r\n\t\t\t<p-paginator\r\n\t\t\t\t[first]=\"(currentPage() - 1) * pageSize()\"\r\n\t\t\t\t[rows]=\"pageSize()\"\r\n\t\t\t\t[totalRecords]=\"totalItems()\"\r\n\t\t\t\t[showCurrentPageReport]=\"true\"\r\n\t\t\t\t[currentPageReportTemplate]=\"t('paginatorTemplate')\"\r\n\t\t\t\t[showFirstLastIcon]=\"false\"\r\n\t\t\t\t[showPageLinks]=\"false\"\r\n\t\t\t\t(onPageChange)=\"onPageChange($event)\">\r\n\t\t\t</p-paginator>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<p-confirmDialog></p-confirmDialog>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-favorite-pages-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-favorite-pages-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem 1.5rem}:host ::ng-deep .layout-favorite-pages-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}.favorite-pages-content{display:flex;flex-direction:column;height:100%;background:var(--surface-0)}.current-favorited-message{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--green-50)}.current-favorited-message .message-content{display:flex;align-items:center;gap:.5rem;color:var(--green-700);font-size:.9rem;font-weight:500}.add-section{display:flex;align-items:center;gap:.5rem;padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.favorites-list{flex:1;overflow:hidden}.favorites-items{padding:.5rem}.favorite-item{background:var(--surface-0);border:1px solid var(--surface-border);border-radius:8px;margin-bottom:.5rem;cursor:pointer;transition:all .2s ease;position:relative;overflow:hidden;padding:.5rem .2rem}.favorite-item:hover{border-color:var(--primary-200);background:var(--primary-50);transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.favorite-item:hover .action-btn{opacity:1}.favorite-item:last-child{margin-bottom:0}.favorite-item.default-item{background:var(--blue-50);border-left:3px solid var(--blue-500)}.favorite-item.default-item:hover{background:var(--blue-100);border-color:var(--blue-300)}.favorite-item.default-item .title-text{font-weight:600;color:var(--blue-700)}.item-content{padding:.5rem .75rem}.item-header{display:flex;align-items:center;justify-content:space-between}.item-title{display:flex;align-items:center;flex:1;min-width:0}.item-title .title-text{font-weight:600;color:var(--text-color);font-size:1rem;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-content .empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-content .empty-title{font-size:1.1rem;font-weight:600;color:var(--text-color);margin-bottom:.5rem}.empty-content .empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}@media (max-width: 768px){.add-section{padding:.75rem}.add-section .button-label{font-size:.8rem}.item-content{padding:.5rem}.item-title .title-text{font-size:.85rem}}\n"] }]
218
218
  }], ctorParameters: () => [{ type: i1.LayoutService }, { type: i2.FavoritePagesService }, { type: i3.ConfirmationService }, { type: i3.MessageService }, { type: i4.DialogService }, { type: i5.TranslocoService }] });
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmF2b3JpdGUtcGFnZXMtc2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvZmF2b3JpdGUtcGFnZXMvZmF2b3JpdGUtcGFnZXMtc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvZmF2b3JpdGUtcGFnZXMvZmF2b3JpdGUtcGFnZXMtc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFrQixNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFaEQsT0FBTyxFQUFFLGVBQWUsRUFBb0IsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUUs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QUMsR0FBVztRQUNyQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEQsQ0FBQzs4R0F0TlcsNkJBQTZCO2tHQUE3Qiw2QkFBNkIseUVBRjlCLENBQUMsbUJBQW1CLEVBQUUsYUFBYSxDQUFDLDBCQzFDaEQsdXhJQStHQSxpbEZEbkZFLFlBQVksOEJBQ1osYUFBYSxtZEFDYixpQkFBaUIsK0lBQ2pCLG1CQUFtQixvbUJBQ25CLGVBQWUscWhCQUNmLG1CQUFtQiwrQkFDbkIsZUFBZSw2TkFDZixlQUFlLGdPQUNmLGFBQWEsc1hBQ2IsaUJBQWlCLG9TQUNqQixnQkFBZ0I7OzJGQU1MLDZCQUE2QjtrQkFwQnpDLFNBQVM7aUNBQ0csSUFBSSxZQUNOLDRCQUE0QixXQUM3Qjt3QkFDUixZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLGdCQUFnQjtxQkFDaEIsYUFHVSxDQUFDLG1CQUFtQixFQUFFLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBlZmZlY3QsIHNpZ25hbCwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcblxyXG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgQ29uZmlybURpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY29uZmlybWRpYWxvZyc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UsIER5bmFtaWNEaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBQYWdpbmF0b3JNb2R1bGUgfSBmcm9tICdwcmltZW5nL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IFNjcm9sbFBhbmVsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9zY3JvbGxwYW5lbCc7XHJcbmltcG9ydCB7IFNpZGViYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL3NpZGViYXInO1xyXG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb01vZHVsZSwgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuaW1wb3J0IHsgU3ViamVjdCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBOYXZMaW5rRGlyZWN0aXZlIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcHBzJztcclxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnYXJpbC91aS9idXR0b24nO1xyXG5cclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXBwLmxheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmF2b3JpdGVQYWdlUmVzcG9uc2VEVE8sIEZhdm9yaXRlUGFnZXNTZXJ2aWNlIH0gZnJvbSAnLi9mYXZvcml0ZS1wYWdlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWRkRWRpdEZhdm9yaXRlTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL21vZGFscy9hZGQtZWRpdC1mYXZvcml0ZS1tb2RhbC9hZGQtZWRpdC1mYXZvcml0ZS1tb2RhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb250QXdlc29tZU1vZHVsZSB9IGZyb20gJ0Bmb3J0YXdlc29tZS9hbmd1bGFyLWZvbnRhd2Vzb21lJztcclxuaW1wb3J0IHsgc29saWRJY29ucyB9IGZyb20gJ2FyaWwvdXRpbC9saWInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FwcC1mYXZvcml0ZS1wYWdlcy1zaWRlYmFyJyxcclxuXHRpbXBvcnRzOiBbXHJcblx0XHRDb21tb25Nb2R1bGUsXHJcblx0XHRTaWRlYmFyTW9kdWxlLFxyXG5cdFx0U2Nyb2xsUGFuZWxNb2R1bGUsXHJcblx0XHRDb25maXJtRGlhbG9nTW9kdWxlLFxyXG5cdFx0UGFnaW5hdG9yTW9kdWxlLFxyXG5cdFx0RHluYW1pY0RpYWxvZ01vZHVsZSxcclxuXHRcdEJ1dHRvbkNvbXBvbmVudCxcclxuXHRcdFRyYW5zbG9jb01vZHVsZSxcclxuXHRcdFRvb2x0aXBNb2R1bGUsXHJcblx0XHRGb250QXdlc29tZU1vZHVsZSxcclxuXHRcdE5hdkxpbmtEaXJlY3RpdmVcclxuXHRdLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9mYXZvcml0ZS1wYWdlcy1zaWRlYmFyLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9mYXZvcml0ZS1wYWdlcy1zaWRlYmFyLmNvbXBvbmVudC5zY3NzJ10sXHJcblx0cHJvdmlkZXJzOiBbQ29uZmlybWF0aW9uU2VydmljZSwgRGlhbG9nU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEZhdm9yaXRlUGFnZXNTaWRlYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHRmYXZvcml0ZVBhZ2VzID0gc2lnbmFsPEZhdm9yaXRlUGFnZVJlc3BvbnNlRFRPW10+KFtdKTtcclxuXHRpc0N1cnJlbnRQYWdlRmF2b3JpdGVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuXHRzb2xpZEljb25zID0gc29saWRJY29ucztcclxuXHRjdXJyZW50UGFnZSA9IHNpZ25hbDxudW1iZXI+KDEpO1xyXG5cdHBhZ2VTaXplID0gc2lnbmFsPG51bWJlcj4oMTApO1xyXG5cdHRvdGFsSXRlbXMgPSBzaWduYWw8bnVtYmVyPigwKTtcclxuXHR0b3RhbFBhZ2VzID0gc2lnbmFsPG51bWJlcj4oMCk7XHJcblx0YWxsRmF2b3JpdGVQYWdlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZmF2b3JpdGVQYWdlc1NlcnZpY2UuYWxsRmF2b3JpdGVQYWdlcygpKTtcclxuXHJcblx0cHJpdmF0ZSBzdWJqZWN0cyA9IHtcclxuXHRcdGxvYWRBbGxGYXZvcml0ZXM6IG5ldyBTdWJqZWN0PHZvaWQ+KCksXHJcblx0XHRkZWxldGVGYXZvcml0ZTogbmV3IFN1YmplY3Q8bnVtYmVyPigpXHJcblx0fTtcclxuXHJcblx0bG9hZEFsbEZhdm9yaXRlc1NlcnZpY2UgPSB0b1NpZ25hbChcclxuXHRcdHRoaXMuc3ViamVjdHMubG9hZEFsbEZhdm9yaXRlcy5waXBlKFxyXG5cdFx0XHRzd2l0Y2hNYXAoKCkgPT5cclxuXHRcdFx0XHR0aGlzLmZhdm9yaXRlUGFnZXNTZXJ2aWNlLmZpbHRlckZhdm9yaXRlUGFnZXMoe1xyXG5cdFx0XHRcdFx0cGFnZVNpemU6IDEwMDAsXHJcblx0XHRcdFx0XHRwYWdlTnVtYmVyOiAxXHJcblx0XHRcdFx0fSlcclxuXHRcdFx0KVxyXG5cdFx0KVxyXG5cdCk7XHJcblxyXG5cdGRlbGV0ZUZhdm9yaXRlU2VydmljZSA9IHRvU2lnbmFsKFxyXG5cdFx0dGhpcy5zdWJqZWN0cy5kZWxldGVGYXZvcml0ZS5waXBlKHN3aXRjaE1hcCgoaWQpID0+IHRoaXMuZmF2b3JpdGVQYWdlc1NlcnZpY2UuZGVsZXRlRmF2b3JpdGVQYWdlKGlkKSkpXHJcblx0KTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwdWJsaWMgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuXHRcdHByaXZhdGUgZmF2b3JpdGVQYWdlc1NlcnZpY2U6IEZhdm9yaXRlUGFnZXNTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcblx0XHRwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcblx0XHRwcml2YXRlIHRyYW5zbG9jb1NlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2VcclxuXHQpIHtcclxuXHRcdHRoaXMuaW5pdGlhbGl6ZUVmZmVjdHMoKTtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5sb2FkRmF2b3JpdGVQYWdlcygpO1xyXG5cdFx0dGhpcy5jaGVja0N1cnJlbnRQYWdlU3RhdHVzKCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGluaXRpYWxpemVFZmZlY3RzKCk6IHZvaWQge1xyXG5cdFx0ZWZmZWN0KFxyXG5cdFx0XHQoKSA9PiB7XHJcblx0XHRcdFx0Y29uc3Qgc2VydmljZSA9IHRoaXMubG9hZEFsbEZhdm9yaXRlc1NlcnZpY2UoKTtcclxuXHRcdFx0XHRpZiAoc2VydmljZT8ucmVzcG9uc2UpIHtcclxuXHRcdFx0XHRcdHRoaXMuZmF2b3JpdGVQYWdlc1NlcnZpY2UuYWxsRmF2b3JpdGVQYWdlcy5zZXQoc2VydmljZS5yZXNwb25zZS5yZXN1bHQpO1xyXG5cdFx0XHRcdFx0dGhpcy50b3RhbEl0ZW1zLnNldChzZXJ2aWNlLnJlc3BvbnNlLnJlc3VsdC5sZW5ndGgpO1xyXG5cdFx0XHRcdFx0dGhpcy51cGRhdGVDbGllbnRTaWRlUGFnaW5hdGlvbigpO1xyXG5cdFx0XHRcdFx0dGhpcy5jaGVja0N1cnJlbnRQYWdlU3RhdHVzKCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cclxuXHRcdCk7XHJcblxyXG5cdFx0ZWZmZWN0KFxyXG5cdFx0XHQoKSA9PiB7XHJcblx0XHRcdFx0Y29uc3Qgc2VydmljZSA9IHRoaXMuZGVsZXRlRmF2b3JpdGVTZXJ2aWNlKCk7XHJcblx0XHRcdFx0aWYgKHNlcnZpY2U/LnJlc3BvbnNlKSB7XHJcblx0XHRcdFx0XHR0aGlzLmxvYWRGYXZvcml0ZVBhZ2VzKCk7XHJcblx0XHRcdFx0XHR0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcblx0XHRcdFx0XHRcdHNldmVyaXR5OiAnc3VjY2VzcycsXHJcblx0XHRcdFx0XHRcdHN1bW1hcnk6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ2Zhdm9yaXRlUGFnZXMuc3VjY2VzcycpLFxyXG5cdFx0XHRcdFx0XHRkZXRhaWw6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ2Zhdm9yaXRlUGFnZXMuZGVsZXRlZFN1Y2Nlc3NmdWxseScpLFxyXG5cdFx0XHRcdFx0XHRrZXk6ICd0b2FzdC1yb290J1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuZmF2b3JpdGVQYWdlc1NpZGViYXJWaXNpYmxlO1xyXG5cdH1cclxuXHJcblx0c2V0IHZpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5mYXZvcml0ZVBhZ2VzU2lkZWJhclZpc2libGUgPSB2YWx1ZTtcclxuXHRcdGlmICh2YWx1ZSkge1xyXG5cdFx0XHR0aGlzLmNoZWNrQ3VycmVudFBhZ2VTdGF0dXMoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgbG9hZEZhdm9yaXRlUGFnZXMoKTogdm9pZCB7XHJcblx0XHR0aGlzLnN1YmplY3RzLmxvYWRBbGxGYXZvcml0ZXMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSB1cGRhdGVDbGllbnRTaWRlUGFnaW5hdGlvbigpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGFsbEZhdm9yaXRlcyA9IHRoaXMuYWxsRmF2b3JpdGVQYWdlcygpO1xyXG5cdFx0Y29uc3QgdG90YWxJdGVtcyA9IGFsbEZhdm9yaXRlcy5sZW5ndGg7XHJcblx0XHRjb25zdCBwYWdlU2l6ZSA9IHRoaXMucGFnZVNpemUoKTtcclxuXHRcdGNvbnN0IGN1cnJlbnRQYWdlID0gdGhpcy5jdXJyZW50UGFnZSgpO1xyXG5cclxuXHRcdGNvbnN0IHRvdGFsUGFnZXMgPSBNYXRoLmNlaWwodG90YWxJdGVtcyAvIHBhZ2VTaXplKTtcclxuXHRcdHRoaXMudG90YWxQYWdlcy5zZXQodG90YWxQYWdlcyk7XHJcblxyXG5cdFx0Y29uc3Qgc3RhcnRJbmRleCA9IChjdXJyZW50UGFnZSAtIDEpICogcGFnZVNpemU7XHJcblx0XHRjb25zdCBlbmRJbmRleCA9IE1hdGgubWluKHN0YXJ0SW5kZXggKyBwYWdlU2l6ZSwgdG90YWxJdGVtcyk7XHJcblxyXG5cdFx0Y29uc3QgY3VycmVudFBhZ2VEYXRhID0gYWxsRmF2b3JpdGVzLnNsaWNlKHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcclxuXHRcdHRoaXMuZmF2b3JpdGVQYWdlcy5zZXQoY3VycmVudFBhZ2VEYXRhKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgY2hlY2tDdXJyZW50UGFnZVN0YXR1cygpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGN1cnJlbnRQYXRoID0gdGhpcy5mYXZvcml0ZVBhZ2VzU2VydmljZS5nZXRDdXJyZW50Um91dGVQYXRoKCk7XHJcblx0XHRjb25zdCBhbGxGYXZvcml0ZXMgPSB0aGlzLmFsbEZhdm9yaXRlUGFnZXMoKTtcclxuXHRcdGNvbnN0IGlzRm91bmQgPSBhbGxGYXZvcml0ZXMuc29tZSgoZmF2KSA9PiBmYXYudXJsID09PSBjdXJyZW50UGF0aCk7XHJcblxyXG5cdFx0dGhpcy5pc0N1cnJlbnRQYWdlRmF2b3JpdGVkLnNldChpc0ZvdW5kKTtcclxuXHR9XHJcblxyXG5cdGFkZEN1cnJlbnRQYWdlVG9GYXZvcml0ZXMoKTogdm9pZCB7XHJcblx0XHRjb25zdCBjdXJyZW50UGF0aCA9IHRoaXMuZmF2b3JpdGVQYWdlc1NlcnZpY2UuZ2V0Q3VycmVudFJvdXRlUGF0aCgpO1xyXG5cclxuXHRcdGNvbnN0IHJlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKEFkZEVkaXRGYXZvcml0ZU1vZGFsQ29tcG9uZW50LCB7XHJcblx0XHRcdGhlYWRlcjogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnZmF2b3JpdGVQYWdlcy5hZGRUb0Zhdm9yaXRlcycpLFxyXG5cdFx0XHR3aWR0aDogJzUwMHB4JyxcclxuXHRcdFx0bW9kYWw6IHRydWUsXHJcblx0XHRcdGNsb3NhYmxlOiB0cnVlLFxyXG5cdFx0XHRkYXRhOiB7XHJcblx0XHRcdFx0bW9kZTogJ2FkZCcsXHJcblx0XHRcdFx0dXJsOiBjdXJyZW50UGF0aFxyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHRyZWYub25DbG9zZS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG5cdFx0XHRpZiAocmVzdWx0Py5zdGF0dXMgPT09ICdzdWNjZXNzJykge1xyXG5cdFx0XHRcdHRoaXMubG9hZEZhdm9yaXRlUGFnZXMoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRyZW1vdmVDdXJyZW50UGFnZUZyb21GYXZvcml0ZXMoKTogdm9pZCB7XHJcblx0XHRjb25zdCBjdXJyZW50UGF0aCA9IHRoaXMuZmF2b3JpdGVQYWdlc1NlcnZpY2UuZ2V0Q3VycmVudFJvdXRlUGF0aCgpO1xyXG5cdFx0Y29uc3QgZmF2b3JpdGVzID0gdGhpcy5mYXZvcml0ZVBhZ2VzKCk7XHJcblx0XHRjb25zdCBjdXJyZW50RmF2b3JpdGUgPSBmYXZvcml0ZXMuZmluZCgoZmF2KSA9PiBmYXYudXJsID09PSBjdXJyZW50UGF0aCk7XHJcblxyXG5cdFx0aWYgKGN1cnJlbnRGYXZvcml0ZSkge1xyXG5cdFx0XHR0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XHJcblx0XHRcdFx0bWVzc2FnZTogYCcke2N1cnJlbnRGYXZvcml0ZS5sYWJlbH0nIGAgKyB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdmYXZvcml0ZVBhZ2VzLmNvbmZpcm1EZWxldGUnKSxcclxuXHRcdFx0XHRoZWFkZXI6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ2Zhdm9yaXRlUGFnZXMuZGVsZXRlQ29uZmlybVRpdGxlJyksXHJcblx0XHRcdFx0aWNvbjogJ3BpIHBpLWluZm8tY2lyY2xlJyxcclxuXHRcdFx0XHRhY2NlcHRMYWJlbDogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnYWNjZXB0QnV0dG9uTGFiZWwnKSxcclxuXHRcdFx0XHRyZWplY3RMYWJlbDogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgncmVqZWN0QnV0dG9uTGFiZWwnKSxcclxuXHRcdFx0XHRhY2NlcHRCdXR0b25TdHlsZUNsYXNzOiAncC1idXR0b24tc3VjY2VzcycsXHJcblx0XHRcdFx0cmVqZWN0QnV0dG9uU3R5bGVDbGFzczogJ3AtYnV0dG9uLWRhbmdlcicsXHJcblx0XHRcdFx0YWNjZXB0OiAoKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLnN1YmplY3RzLmRlbGV0ZUZhdm9yaXRlLm5leHQoY3VycmVudEZhdm9yaXRlLmlkKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0ZWRpdEZhdm9yaXRlKGZhdm9yaXRlOiBGYXZvcml0ZVBhZ2VSZXNwb25zZURUTywgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcblx0XHRjb25zdCByZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihBZGRFZGl0RmF2b3JpdGVNb2RhbENvbXBvbmVudCwge1xyXG5cdFx0XHRoZWFkZXI6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ2Zhdm9yaXRlUGFnZXMuZWRpdEZhdm9yaXRlJyksXHJcblx0XHRcdHdpZHRoOiAnNTAwcHgnLFxyXG5cdFx0XHRtb2RhbDogdHJ1ZSxcclxuXHRcdFx0Y2xvc2FibGU6IHRydWUsXHJcblx0XHRcdGRhdGE6IHtcclxuXHRcdFx0XHRtb2RlOiAnZWRpdCcsXHJcblx0XHRcdFx0ZmF2b3JpdGU6IGZhdm9yaXRlXHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdHJlZi5vbkNsb3NlLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcblx0XHRcdGlmIChyZXN1bHQ/LnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKSB7XHJcblx0XHRcdFx0dGhpcy5sb2FkRmF2b3JpdGVQYWdlcygpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGRlbGV0ZUZhdm9yaXRlKGZhdm9yaXRlOiBGYXZvcml0ZVBhZ2VSZXNwb25zZURUTywgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcblx0XHR0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XHJcblx0XHRcdHRhcmdldDogZXZlbnQudGFyZ2V0IGFzIEV2ZW50VGFyZ2V0LFxyXG5cdFx0XHRtZXNzYWdlOiBgJyR7ZmF2b3JpdGUubGFiZWx9JyBgICsgdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnZmF2b3JpdGVQYWdlcy5jb25maXJtRGVsZXRlJyksXHJcblx0XHRcdGhlYWRlcjogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnZmF2b3JpdGVQYWdlcy5kZWxldGVDb25maXJtVGl0bGUnKSxcclxuXHRcdFx0aWNvbjogJ3BpIHBpLWluZm8tY2lyY2xlJyxcclxuXHRcdFx0YWNjZXB0TGFiZWw6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ2FjY2VwdEJ1dHRvbkxhYmVsJyksXHJcblx0XHRcdHJlamVjdExhYmVsOiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdyZWplY3RCdXR0b25MYWJlbCcpLFxyXG5cdFx0XHRhY2NlcHRCdXR0b25TdHlsZUNsYXNzOiAncC1idXR0b24tc3VjY2VzcycsXHJcblx0XHRcdHJlamVjdEJ1dHRvblN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi1kYW5nZXInLFxyXG5cdFx0XHRhY2NlcHQ6ICgpID0+IHtcclxuXHRcdFx0XHR0aGlzLnN1YmplY3RzLmRlbGV0ZUZhdm9yaXRlLm5leHQoZmF2b3JpdGUuaWQpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdG5hdmlnYXRlVG9GYXZvcml0ZShmYXZvcml0ZTogRmF2b3JpdGVQYWdlUmVzcG9uc2VEVE8pOiB2b2lkIHtcclxuXHRcdHRoaXMuZmF2b3JpdGVQYWdlc1NlcnZpY2UubmF2aWdhdGVUb0Zhdm9yaXRlUGFnZShmYXZvcml0ZSk7XHJcblx0XHR0aGlzLnZpc2libGUgPSBmYWxzZTtcclxuXHR9XHJcblxyXG5cdHRyYWNrQnlGYXZvcml0ZUlkKGluZGV4OiBudW1iZXIsIGZhdm9yaXRlOiBGYXZvcml0ZVBhZ2VSZXNwb25zZURUTyk6IG51bWJlciB7XHJcblx0XHRyZXR1cm4gZmF2b3JpdGUuaWQ7XHJcblx0fVxyXG5cclxuXHRvblBhZ2VDaGFuZ2UoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG5cdFx0dGhpcy5jdXJyZW50UGFnZS5zZXQoZXZlbnQucGFnZSArIDEpO1xyXG5cdFx0dGhpcy5wYWdlU2l6ZS5zZXQoZXZlbnQucm93cyk7XHJcblx0XHR0aGlzLnVwZGF0ZUNsaWVudFNpZGVQYWdpbmF0aW9uKCk7IC8vIFVwZGF0ZSBwYWdpbmF0aW9uIGNsaWVudC1zaWRlLCBubyBBUEkgY2FsbFxyXG5cdH1cclxuXHJcblx0Z2V0RnVsbFVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gdGhpcy5mYXZvcml0ZVBhZ2VzU2VydmljZS5nZXRGdWxsVXJsKHVybCk7XHJcblx0fVxyXG5cclxuXHJcbn1cclxuIiwiPHAtc2lkZWJhclxyXG5cdFsodmlzaWJsZSldPVwidmlzaWJsZVwiXHJcblx0cG9zaXRpb249XCJyaWdodFwiXHJcblx0W3RyYW5zaXRpb25PcHRpb25zXT1cIicuM3MgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSknXCJcclxuXHRzdHlsZUNsYXNzPVwibGF5b3V0LWZhdm9yaXRlLXBhZ2VzLXNpZGViYXIgdy1mdWxsIHNtOnctMzByZW1cIlxyXG5cdCp0cmFuc2xvY289XCJsZXQgdDsgcmVhZDogJ2Zhdm9yaXRlUGFnZXMnXCI+XHJcblx0PG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHctZnVsbFwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuXHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWhlYXJ0IHRleHQtcHJpbWFyeSB0ZXh0LXhsXCI+PC9pPlxyXG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtbGdcIj57eyB0KCdmYXZvcml0ZVBhZ2VzJykgfX08L3NwYW4+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0PC9uZy10ZW1wbGF0ZT5cclxuXHJcblx0PGRpdiBjbGFzcz1cImZhdm9yaXRlLXBhZ2VzLWNvbnRlbnRcIj5cclxuXHRcdEBpZiAoaXNDdXJyZW50UGFnZUZhdm9yaXRlZCgpKSB7XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJjdXJyZW50LWZhdm9yaXRlZC1tZXNzYWdlXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cIm1lc3NhZ2UtY29udGVudFwiPlxyXG5cdFx0XHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1jaGVjay1jaXJjbGUgdGV4dC1ncmVlbi01MDBcIj48L2k+XHJcblx0XHRcdFx0XHQ8c3Bhbj57eyB0KCdjdXJyZW50UGFnZUZhdm9yaXRlZCcpIH19PC9zcGFuPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdH1cclxuXHJcblx0XHQ8ZGl2IGNsYXNzPVwiYWRkLXNlY3Rpb25cIj5cclxuXHRcdFx0QGlmICghaXNDdXJyZW50UGFnZUZhdm9yaXRlZCgpKSB7XHJcblx0XHRcdFx0PGFyaWwtYnV0dG9uXHJcblx0XHRcdFx0XHRbbGFiZWxdPVwidCgnYWRkQ3VycmVudFBhZ2UnKVwiXHJcblx0XHRcdFx0XHRpY29uPVwiUExVU1wiXHJcblx0XHRcdFx0XHRjb2xvcj1cInByaW1hcnlcIlxyXG5cdFx0XHRcdFx0c2l6ZT1cInNtXCJcclxuXHRcdFx0XHRcdChjbGlja0V2ZW50KT1cImFkZEN1cnJlbnRQYWdlVG9GYXZvcml0ZXMoKVwiPlxyXG5cdFx0XHRcdDwvYXJpbC1idXR0b24+XHJcblx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdDxhcmlsLWJ1dHRvblxyXG5cdFx0XHRcdFx0W2xhYmVsXT1cInQoJ3JlbW92ZUN1cnJlbnRQYWdlJylcIlxyXG5cdFx0XHRcdFx0aWNvbj1cIlRJTUVTXCJcclxuXHRcdFx0XHRcdGNvbG9yPVwiZGFuZ2VyXCJcclxuXHRcdFx0XHRcdHNpemU9XCJzbVwiXHJcblx0XHRcdFx0XHQoY2xpY2tFdmVudCk9XCJyZW1vdmVDdXJyZW50UGFnZUZyb21GYXZvcml0ZXMoKVwiPlxyXG5cdFx0XHRcdDwvYXJpbC1idXR0b24+XHJcblx0XHRcdH1cclxuXHRcdDwvZGl2PlxyXG5cclxuXHRcdEBpZiAoZmF2b3JpdGVQYWdlcygpLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0PGRpdiBjbGFzcz1cImZhdm9yaXRlcy1saXN0XCI+XHJcblx0XHRcdFx0PHAtc2Nyb2xsUGFuZWwgW3N0eWxlXT1cInsgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScgfVwiPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZhdm9yaXRlcy1pdGVtc1wiPlxyXG5cdFx0XHRcdFx0XHRAZm9yIChmYXZvcml0ZSBvZiBmYXZvcml0ZVBhZ2VzKCk7IHRyYWNrIHRyYWNrQnlGYXZvcml0ZUlkKCRpbmRleCwgZmF2b3JpdGUpKSB7XHJcblx0XHRcdFx0XHRcdFx0PGRpdlxyXG5cdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJmYXZvcml0ZS1pdGVtXCJcclxuXHRcdFx0XHRcdFx0XHRcdFtjbGFzcy5kZWZhdWx0LWl0ZW1dPVwiZmF2b3JpdGUuaWQgPCAwXCJcclxuXHRcdFx0XHRcdFx0XHRcdFthcmlsTmF2TGlua109XCJ7IHRhYklkOiAnJywgbmF2TGluazogZmF2b3JpdGUudXJsLCBuYXZOYW1lOiBmYXZvcml0ZS5sYWJlbCB9XCJcclxuXHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJuYXZpZ2F0ZVRvRmF2b3JpdGUoZmF2b3JpdGUpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCJnZXRGdWxsVXJsKGZhdm9yaXRlLnVybClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaXRlbS1jb250ZW50XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpdGVtLWhlYWRlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpdGVtLXRpdGxlXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWV4dGVybmFsLWxpbmsgdGV4dC1wcmltYXJ5IG1yLTJcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInRpdGxlLXRleHRcIj57eyBmYXZvcml0ZS5sYWJlbCB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGZhLWljb25cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W2ljb25dPVwic29saWRJY29ucy5mYVBlblRvU3F1YXJlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2l6ZT1cImxnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3R5bGU9XCJjb2xvcjogdmFyKC0teWVsbG93LTUwMClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cImNvbC0yIGN1cnNvci1wb2ludGVyXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cImVkaXRGYXZvcml0ZShmYXZvcml0ZSwgJGV2ZW50KVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9mYS1pY29uPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGZhLWljb25cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W2ljb25dPVwic29saWRJY29ucy5mYVRyYXNoXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2l6ZT1cImxnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3R5bGU9XCJjb2xvcjogdmFyKC0tcmVkLTUwMClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cImNvbC0yIGN1cnNvci1wb2ludGVyXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cImRlbGV0ZUZhdm9yaXRlKGZhdm9yaXRlLCAkZXZlbnQpXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2ZhLWljb24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvcC1zY3JvbGxQYW5lbD5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHR9IEBlbHNlIHtcclxuXHRcdFx0PGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImVtcHR5LWNvbnRlbnRcIj5cclxuXHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktaGVhcnQgZW1wdHktaWNvblwiPjwvaT5cclxuXHRcdFx0XHRcdDxoMyBjbGFzcz1cImVtcHR5LXRpdGxlXCI+e3sgdCgnbm9GYXZvcml0ZXMnKSB9fTwvaDM+XHJcblx0XHRcdFx0XHQ8cCBjbGFzcz1cImVtcHR5LW1lc3NhZ2VcIj57eyB0KCdzdGFydEFkZGluZ0Zhdm9yaXRlcycpIH19PC9wPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdH1cclxuXHRcdDxkaXY+XHJcblx0XHRcdDxwLXBhZ2luYXRvclxyXG5cdFx0XHRcdFtmaXJzdF09XCIoY3VycmVudFBhZ2UoKSAtIDEpICogcGFnZVNpemUoKVwiXHJcblx0XHRcdFx0W3Jvd3NdPVwicGFnZVNpemUoKVwiXHJcblx0XHRcdFx0W3RvdGFsUmVjb3Jkc109XCJ0b3RhbEl0ZW1zKClcIlxyXG5cdFx0XHRcdFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiXHJcblx0XHRcdFx0W2N1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGVdPVwidCgncGFnaW5hdG9yVGVtcGxhdGUnKVwiXHJcblx0XHRcdFx0W3Nob3dGaXJzdExhc3RJY29uXT1cImZhbHNlXCJcclxuXHRcdFx0XHRbc2hvd1BhZ2VMaW5rc109XCJmYWxzZVwiXHJcblx0XHRcdFx0KG9uUGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiPlxyXG5cdFx0XHQ8L3AtcGFnaW5hdG9yPlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblxyXG5cdDxwLWNvbmZpcm1EaWFsb2c+PC9wLWNvbmZpcm1EaWFsb2c+XHJcbjwvcC1zaWRlYmFyPlxyXG4iXX0=
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmF2b3JpdGUtcGFnZXMtc2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvZmF2b3JpdGUtcGFnZXMvZmF2b3JpdGUtcGFnZXMtc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvZmF2b3JpdGUtcGFnZXMvZmF2b3JpdGUtcGFnZXMtc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFrQixNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFaEQsT0FBTyxFQUFFLGVBQWUsRUFBb0IsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUUs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QUMsR0FBVztRQUNyQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEQsQ0FBQzsrR0F0TlcsNkJBQTZCO21HQUE3Qiw2QkFBNkIseUVBRjlCLENBQUMsbUJBQW1CLEVBQUUsYUFBYSxDQUFDLDBCQzFDaEQsdXhJQStHQSxpbEZEbkZFLFlBQVksOEJBQ1osYUFBYSxtZEFDYixpQkFBaUIsK0lBQ2pCLG1CQUFtQixvbUJBQ25CLGVBQWUscWhCQUNmLG1CQUFtQiwrQkFDbkIsZUFBZSw2TkFDZixlQUFlLGdPQUNmLGFBQWEsc1hBQ2IsaUJBQWlCLG9TQUNqQixnQkFBZ0I7OzRGQU1MLDZCQUE2QjtrQkFwQnpDLFNBQVM7aUNBQ0csSUFBSSxZQUNOLDRCQUE0QixXQUM3Qjt3QkFDUixZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLGdCQUFnQjtxQkFDaEIsYUFHVSxDQUFDLG1CQUFtQixFQUFFLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBlZmZlY3QsIHNpZ25hbCwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcblxyXG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgQ29uZmlybURpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY29uZmlybWRpYWxvZyc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UsIER5bmFtaWNEaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBQYWdpbmF0b3JNb2R1bGUgfSBmcm9tICdwcmltZW5nL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IFNjcm9sbFBhbmVsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9zY3JvbGxwYW5lbCc7XHJcbmltcG9ydCB7IFNpZGViYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL3NpZGViYXInO1xyXG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb01vZHVsZSwgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuaW1wb3J0IHsgU3ViamVjdCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBOYXZMaW5rRGlyZWN0aXZlIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcHBzJztcclxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnYXJpbC91aS9idXR0b24nO1xyXG5cclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXBwLmxheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmF2b3JpdGVQYWdlUmVzcG9uc2VEVE8sIEZhdm9yaXRlUGFnZXNTZXJ2aWNlIH0gZnJvbSAnLi9mYXZvcml0ZS1wYWdlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWRkRWRpdEZhdm9yaXRlTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL21vZGFscy9hZGQtZWRpdC1mYXZvcml0ZS1tb2RhbC9hZGQtZWRpdC1mYXZvcml0ZS1tb2RhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb250QXdlc29tZU1vZHVsZSB9IGZyb20gJ0Bmb3J0YXdlc29tZS9hbmd1bGFyLWZvbnRhd2Vzb21lJztcclxuaW1wb3J0IHsgc29saWRJY29ucyB9IGZyb20gJ2FyaWwvdXRpbC9saWInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FwcC1mYXZvcml0ZS1wYWdlcy1zaWRlYmFyJyxcclxuXHRpbXBvcnRzOiBbXHJcblx0XHRDb21tb25Nb2R1bGUsXHJcblx0XHRTaWRlYmFyTW9kdWxlLFxyXG5cdFx0U2Nyb2xsUGFuZWxNb2R1bGUsXHJcblx0XHRDb25maXJtRGlhbG9nTW9kdWxlLFxyXG5cdFx0UGFnaW5hdG9yTW9kdWxlLFxyXG5cdFx0RHluYW1pY0RpYWxvZ01vZHVsZSxcclxuXHRcdEJ1dHRvbkNvbXBvbmVudCxcclxuXHRcdFRyYW5zbG9jb01vZHVsZSxcclxuXHRcdFRvb2x0aXBNb2R1bGUsXHJcblx0XHRGb250QXdlc29tZU1vZHVsZSxcclxuXHRcdE5hdkxpbmtEaXJlY3RpdmVcclxuXHRdLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9mYXZvcml0ZS1wYWdlcy1zaWRlYmFyLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9mYXZvcml0ZS1wYWdlcy1zaWRlYmFyLmNvbXBvbmVudC5zY3NzJ10sXHJcblx0cHJvdmlkZXJzOiBbQ29uZmlybWF0aW9uU2VydmljZSwgRGlhbG9nU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEZhdm9yaXRlUGFnZXNTaWRlYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHRmYXZvcml0ZVBhZ2VzID0gc2lnbmFsPEZhdm9yaXRlUGFnZVJlc3BvbnNlRFRPW10+KFtdKTtcclxuXHRpc0N1cnJlbnRQYWdlRmF2b3JpdGVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuXHRzb2xpZEljb25zID0gc29saWRJY29ucztcclxuXHRjdXJyZW50UGFnZSA9IHNpZ25hbDxudW1iZXI+KDEpO1xyXG5cdHBhZ2VTaXplID0gc2lnbmFsPG51bWJlcj4oMTApO1xyXG5cdHRvdGFsSXRlbXMgPSBzaWduYWw8bnVtYmVyPigwKTtcclxuXHR0b3RhbFBhZ2VzID0gc2lnbmFsPG51bWJlcj4oMCk7XHJcblx0YWxsRmF2b3JpdGVQYWdlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZmF2b3JpdGVQYWdlc1NlcnZpY2UuYWxsRmF2b3JpdGVQYWdlcygpKTtcclxuXHJcblx0cHJpdmF0ZSBzdWJqZWN0cyA9IHtcclxuXHRcdGxvYWRBbGxGYXZvcml0ZXM6IG5ldyBTdWJqZWN0PHZvaWQ+KCksXHJcblx0XHRkZWxldGVGYXZvcml0ZTogbmV3IFN1YmplY3Q8bnVtYmVyPigpXHJcblx0fTtcclxuXHJcblx0bG9hZEFsbEZhdm9yaXRlc1NlcnZpY2UgPSB0b1NpZ25hbChcclxuXHRcdHRoaXMuc3ViamVjdHMubG9hZEFsbEZhdm9yaXRlcy5waXBlKFxyXG5cdFx0XHRzd2l0Y2hNYXAoKCkgPT5cclxuXHRcdFx0XHR0aGlzLmZhdm9yaXRlUGFnZXNTZXJ2aWNlLmZpbHRlckZhdm9yaXRlUGFnZXMoe1xyXG5cdFx0XHRcdFx0cGFnZVNpemU6IDEwMDAsXHJcblx0XHRcdFx0XHRwYWdlTnVtYmVyOiAxXHJcblx0XHRcdFx0fSlcclxuXHRcdFx0KVxyXG5cdFx0KVxyXG5cdCk7XHJcblxyXG5cdGRlbGV0ZUZhdm9yaXRlU2VydmljZSA9IHRvU2lnbmFsKFxyXG5cdFx0dGhpcy5zdWJqZWN0cy5kZWxldGVGYXZvcml0ZS5waXBlKHN3aXRjaE1hcCgoaWQpID0+IHRoaXMuZmF2b3JpdGVQYWdlc1NlcnZpY2UuZGVsZXRlRmF2b3JpdGVQYWdlKGlkKSkpXHJcblx0KTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwdWJsaWMgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuXHRcdHByaXZhdGUgZmF2b3JpdGVQYWdlc1NlcnZpY2U6IEZhdm9yaXRlUGFnZXNTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcblx0XHRwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcblx0XHRwcml2YXRlIHRyYW5zbG9jb1NlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2VcclxuXHQpIHtcclxuXHRcdHRoaXMuaW5pdGlhbGl6ZUVmZmVjdHMoKTtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5sb2FkRmF2b3JpdGVQYWdlcygpO1xyXG5cdFx0dGhpcy5jaGVja0N1cnJlbnRQYWdlU3RhdHVzKCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGluaXRpYWxpemVFZmZlY3RzKCk6IHZvaWQge1xyXG5cdFx0ZWZmZWN0KFxyXG5cdFx0XHQoKSA9PiB7XHJcblx0XHRcdFx0Y29uc3Qgc2VydmljZSA9IHRoaXMubG9hZEFsbEZhdm9yaXRlc1NlcnZpY2UoKTtcclxuXHRcdFx0XHRpZiAoc2VydmljZT8ucmVzcG9uc2UpIHtcclxuXHRcdFx0XHRcdHRoaXMuZmF2b3JpdGVQYWdlc1NlcnZpY2UuYWxsRmF2b3JpdGVQYWdlcy5zZXQoc2VydmljZS5yZXNwb25zZS5yZXN1bHQpO1xyXG5cdFx0XHRcdFx0dGhpcy50b3RhbEl0ZW1zLnNldChzZXJ2aWNlLnJlc3BvbnNlLnJlc3VsdC5sZW5ndGgpO1xyXG5cdFx0XHRcdFx0dGhpcy51cGRhdGVDbGllbnRTaWRlUGFnaW5hdGlvbigpO1xyXG5cdFx0XHRcdFx0dGhpcy5jaGVja0N1cnJlbnRQYWdlU3RhdHVzKCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cclxuXHRcdCk7XHJcblxyXG5cdFx0ZWZmZWN0KFxyXG5cdFx0XHQoKSA9PiB7XHJcblx0XHRcdFx0Y29uc3Qgc2VydmljZSA9IHRoaXMuZGVsZXRlRmF2b3JpdGVTZXJ2aWNlKCk7XHJcblx0XHRcdFx0aWYgKHNlcnZpY2U/LnJlc3BvbnNlKSB7XHJcblx0XHRcdFx0XHR0aGlzLmxvYWRGYXZvcml0ZVBhZ2VzKCk7XHJcblx0XHRcdFx0XHR0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcblx0XHRcdFx0XHRcdHNldmVyaXR5OiAnc3VjY2VzcycsXHJcblx0XHRcdFx0XHRcdHN1bW1hcnk6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ2Zhdm9yaXRlUGFnZXMuc3VjY2VzcycpLFxyXG5cdFx0XHRcdFx0XHRkZXRhaWw6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ2Zhdm9yaXRlUGFnZXMuZGVsZXRlZFN1Y2Nlc3NmdWxseScpLFxyXG5cdFx0XHRcdFx0XHRrZXk6ICd0b2FzdC1yb290J1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuZmF2b3JpdGVQYWdlc1NpZGViYXJWaXNpYmxlO1xyXG5cdH1cclxuXHJcblx0c2V0IHZpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5mYXZvcml0ZVBhZ2VzU2lkZWJhclZpc2libGUgPSB2YWx1ZTtcclxuXHRcdGlmICh2YWx1ZSkge1xyXG5cdFx0XHR0aGlzLmNoZWNrQ3VycmVudFBhZ2VTdGF0dXMoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgbG9hZEZhdm9yaXRlUGFnZXMoKTogdm9pZCB7XHJcblx0XHR0aGlzLnN1YmplY3RzLmxvYWRBbGxGYXZvcml0ZXMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSB1cGRhdGVDbGllbnRTaWRlUGFnaW5hdGlvbigpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGFsbEZhdm9yaXRlcyA9IHRoaXMuYWxsRmF2b3JpdGVQYWdlcygpO1xyXG5cdFx0Y29uc3QgdG90YWxJdGVtcyA9IGFsbEZhdm9yaXRlcy5sZW5ndGg7XHJcblx0XHRjb25zdCBwYWdlU2l6ZSA9IHRoaXMucGFnZVNpemUoKTtcclxuXHRcdGNvbnN0IGN1cnJlbnRQYWdlID0gdGhpcy5jdXJyZW50UGFnZSgpO1xyXG5cclxuXHRcdGNvbnN0IHRvdGFsUGFnZXMgPSBNYXRoLmNlaWwodG90YWxJdGVtcyAvIHBhZ2VTaXplKTtcclxuXHRcdHRoaXMudG90YWxQYWdlcy5zZXQodG90YWxQYWdlcyk7XHJcblxyXG5cdFx0Y29uc3Qgc3RhcnRJbmRleCA9IChjdXJyZW50UGFnZSAtIDEpICogcGFnZVNpemU7XHJcblx0XHRjb25zdCBlbmRJbmRleCA9IE1hdGgubWluKHN0YXJ0SW5kZXggKyBwYWdlU2l6ZSwgdG90YWxJdGVtcyk7XHJcblxyXG5cdFx0Y29uc3QgY3VycmVudFBhZ2VEYXRhID0gYWxsRmF2b3JpdGVzLnNsaWNlKHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcclxuXHRcdHRoaXMuZmF2b3JpdGVQYWdlcy5zZXQoY3VycmVudFBhZ2VEYXRhKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgY2hlY2tDdXJyZW50UGFnZVN0YXR1cygpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGN1cnJlbnRQYXRoID0gdGhpcy5mYXZvcml0ZVBhZ2VzU2VydmljZS5nZXRDdXJyZW50Um91dGVQYXRoKCk7XHJcblx0XHRjb25zdCBhbGxGYXZvcml0ZXMgPSB0aGlzLmFsbEZhdm9yaXRlUGFnZXMoKTtcclxuXHRcdGNvbnN0IGlzRm91bmQgPSBhbGxGYXZvcml0ZXMuc29tZSgoZmF2KSA9PiBmYXYudXJsID09PSBjdXJyZW50UGF0aCk7XHJcblxyXG5cdFx0dGhpcy5pc0N1cnJlbnRQYWdlRmF2b3JpdGVkLnNldChpc0ZvdW5kKTtcclxuXHR9XHJcblxyXG5cdGFkZEN1cnJlbnRQYWdlVG9GYXZvcml0ZXMoKTogdm9pZCB7XHJcblx0XHRjb25zdCBjdXJyZW50UGF0aCA9IHRoaXMuZmF2b3JpdGVQYWdlc1NlcnZpY2UuZ2V0Q3VycmVudFJvdXRlUGF0aCgpO1xyXG5cclxuXHRcdGNvbnN0IHJlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKEFkZEVkaXRGYXZvcml0ZU1vZGFsQ29tcG9uZW50LCB7XHJcblx0XHRcdGhlYWRlcjogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnZmF2b3JpdGVQYWdlcy5hZGRUb0Zhdm9yaXRlcycpLFxyXG5cdFx0XHR3aWR0aDogJzUwMHB4JyxcclxuXHRcdFx0bW9kYWw6IHRydWUsXHJcblx0XHRcdGNsb3NhYmxlOiB0cnVlLFxyXG5cdFx0XHRkYXRhOiB7XHJcblx0XHRcdFx0bW9kZTogJ2FkZCcsXHJcblx0XHRcdFx0dXJsOiBjdXJyZW50UGF0aFxyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHRyZWYub25DbG9zZS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG5cdFx0XHRpZiAocmVzdWx0Py5zdGF0dXMgPT09ICdzdWNjZXNzJykge1xyXG5cdFx0XHRcdHRoaXMubG9hZEZhdm9yaXRlUGFnZXMoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRyZW1vdmVDdXJyZW50UGFnZUZyb21GYXZvcml0ZXMoKTogdm9pZCB7XHJcblx0XHRjb25zdCBjdXJyZW50UGF0aCA9IHRoaXMuZmF2b3JpdGVQYWdlc1NlcnZpY2UuZ2V0Q3VycmVudFJvdXRlUGF0aCgpO1xyXG5cdFx0Y29uc3QgZmF2b3JpdGVzID0gdGhpcy5mYXZvcml0ZVBhZ2VzKCk7XHJcblx0XHRjb25zdCBjdXJyZW50RmF2b3JpdGUgPSBmYXZvcml0ZXMuZmluZCgoZmF2KSA9PiBmYXYudXJsID09PSBjdXJyZW50UGF0aCk7XHJcblxyXG5cdFx0aWYgKGN1cnJlbnRGYXZvcml0ZSkge1xyXG5cdFx0XHR0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XHJcblx0XHRcdFx0bWVzc2FnZTogYCcke2N1cnJlbnRGYXZvcml0ZS5sYWJlbH0nIGAgKyB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdmYXZvcml0ZVBhZ2VzLmNvbmZpcm1EZWxldGUnKSxcclxuXHRcdFx0XHRoZWFkZXI6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ2Zhdm9yaXRlUGFnZXMuZGVsZXRlQ29uZmlybVRpdGxlJyksXHJcblx0XHRcdFx0aWNvbjogJ3BpIHBpLWluZm8tY2lyY2xlJyxcclxuXHRcdFx0XHRhY2NlcHRMYWJlbDogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnYWNjZXB0QnV0dG9uTGFiZWwnKSxcclxuXHRcdFx0XHRyZWplY3RMYWJlbDogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgncmVqZWN0QnV0dG9uTGFiZWwnKSxcclxuXHRcdFx0XHRhY2NlcHRCdXR0b25TdHlsZUNsYXNzOiAncC1idXR0b24tc3VjY2VzcycsXHJcblx0XHRcdFx0cmVqZWN0QnV0dG9uU3R5bGVDbGFzczogJ3AtYnV0dG9uLWRhbmdlcicsXHJcblx0XHRcdFx0YWNjZXB0OiAoKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLnN1YmplY3RzLmRlbGV0ZUZhdm9yaXRlLm5leHQoY3VycmVudEZhdm9yaXRlLmlkKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0ZWRpdEZhdm9yaXRlKGZhdm9yaXRlOiBGYXZvcml0ZVBhZ2VSZXNwb25zZURUTywgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcblx0XHRjb25zdCByZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihBZGRFZGl0RmF2b3JpdGVNb2RhbENvbXBvbmVudCwge1xyXG5cdFx0XHRoZWFkZXI6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ2Zhdm9yaXRlUGFnZXMuZWRpdEZhdm9yaXRlJyksXHJcblx0XHRcdHdpZHRoOiAnNTAwcHgnLFxyXG5cdFx0XHRtb2RhbDogdHJ1ZSxcclxuXHRcdFx0Y2xvc2FibGU6IHRydWUsXHJcblx0XHRcdGRhdGE6IHtcclxuXHRcdFx0XHRtb2RlOiAnZWRpdCcsXHJcblx0XHRcdFx0ZmF2b3JpdGU6IGZhdm9yaXRlXHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdHJlZi5vbkNsb3NlLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcblx0XHRcdGlmIChyZXN1bHQ/LnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKSB7XHJcblx0XHRcdFx0dGhpcy5sb2FkRmF2b3JpdGVQYWdlcygpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGRlbGV0ZUZhdm9yaXRlKGZhdm9yaXRlOiBGYXZvcml0ZVBhZ2VSZXNwb25zZURUTywgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcblx0XHR0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XHJcblx0XHRcdHRhcmdldDogZXZlbnQudGFyZ2V0IGFzIEV2ZW50VGFyZ2V0LFxyXG5cdFx0XHRtZXNzYWdlOiBgJyR7ZmF2b3JpdGUubGFiZWx9JyBgICsgdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnZmF2b3JpdGVQYWdlcy5jb25maXJtRGVsZXRlJyksXHJcblx0XHRcdGhlYWRlcjogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnZmF2b3JpdGVQYWdlcy5kZWxldGVDb25maXJtVGl0bGUnKSxcclxuXHRcdFx0aWNvbjogJ3BpIHBpLWluZm8tY2lyY2xlJyxcclxuXHRcdFx0YWNjZXB0TGFiZWw6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ2FjY2VwdEJ1dHRvbkxhYmVsJyksXHJcblx0XHRcdHJlamVjdExhYmVsOiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdyZWplY3RCdXR0b25MYWJlbCcpLFxyXG5cdFx0XHRhY2NlcHRCdXR0b25TdHlsZUNsYXNzOiAncC1idXR0b24tc3VjY2VzcycsXHJcblx0XHRcdHJlamVjdEJ1dHRvblN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi1kYW5nZXInLFxyXG5cdFx0XHRhY2NlcHQ6ICgpID0+IHtcclxuXHRcdFx0XHR0aGlzLnN1YmplY3RzLmRlbGV0ZUZhdm9yaXRlLm5leHQoZmF2b3JpdGUuaWQpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdG5hdmlnYXRlVG9GYXZvcml0ZShmYXZvcml0ZTogRmF2b3JpdGVQYWdlUmVzcG9uc2VEVE8pOiB2b2lkIHtcclxuXHRcdHRoaXMuZmF2b3JpdGVQYWdlc1NlcnZpY2UubmF2aWdhdGVUb0Zhdm9yaXRlUGFnZShmYXZvcml0ZSk7XHJcblx0XHR0aGlzLnZpc2libGUgPSBmYWxzZTtcclxuXHR9XHJcblxyXG5cdHRyYWNrQnlGYXZvcml0ZUlkKGluZGV4OiBudW1iZXIsIGZhdm9yaXRlOiBGYXZvcml0ZVBhZ2VSZXNwb25zZURUTyk6IG51bWJlciB7XHJcblx0XHRyZXR1cm4gZmF2b3JpdGUuaWQ7XHJcblx0fVxyXG5cclxuXHRvblBhZ2VDaGFuZ2UoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG5cdFx0dGhpcy5jdXJyZW50UGFnZS5zZXQoZXZlbnQucGFnZSArIDEpO1xyXG5cdFx0dGhpcy5wYWdlU2l6ZS5zZXQoZXZlbnQucm93cyk7XHJcblx0XHR0aGlzLnVwZGF0ZUNsaWVudFNpZGVQYWdpbmF0aW9uKCk7IC8vIFVwZGF0ZSBwYWdpbmF0aW9uIGNsaWVudC1zaWRlLCBubyBBUEkgY2FsbFxyXG5cdH1cclxuXHJcblx0Z2V0RnVsbFVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gdGhpcy5mYXZvcml0ZVBhZ2VzU2VydmljZS5nZXRGdWxsVXJsKHVybCk7XHJcblx0fVxyXG5cclxuXHJcbn1cclxuIiwiPHAtc2lkZWJhclxyXG5cdFsodmlzaWJsZSldPVwidmlzaWJsZVwiXHJcblx0cG9zaXRpb249XCJyaWdodFwiXHJcblx0W3RyYW5zaXRpb25PcHRpb25zXT1cIicuM3MgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSknXCJcclxuXHRzdHlsZUNsYXNzPVwibGF5b3V0LWZhdm9yaXRlLXBhZ2VzLXNpZGViYXIgdy1mdWxsIHNtOnctMzByZW1cIlxyXG5cdCp0cmFuc2xvY289XCJsZXQgdDsgcmVhZDogJ2Zhdm9yaXRlUGFnZXMnXCI+XHJcblx0PG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHctZnVsbFwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuXHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWhlYXJ0IHRleHQtcHJpbWFyeSB0ZXh0LXhsXCI+PC9pPlxyXG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtbGdcIj57eyB0KCdmYXZvcml0ZVBhZ2VzJykgfX08L3NwYW4+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0PC9uZy10ZW1wbGF0ZT5cclxuXHJcblx0PGRpdiBjbGFzcz1cImZhdm9yaXRlLXBhZ2VzLWNvbnRlbnRcIj5cclxuXHRcdEBpZiAoaXNDdXJyZW50UGFnZUZhdm9yaXRlZCgpKSB7XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJjdXJyZW50LWZhdm9yaXRlZC1tZXNzYWdlXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cIm1lc3NhZ2UtY29udGVudFwiPlxyXG5cdFx0XHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1jaGVjay1jaXJjbGUgdGV4dC1ncmVlbi01MDBcIj48L2k+XHJcblx0XHRcdFx0XHQ8c3Bhbj57eyB0KCdjdXJyZW50UGFnZUZhdm9yaXRlZCcpIH19PC9zcGFuPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdH1cclxuXHJcblx0XHQ8ZGl2IGNsYXNzPVwiYWRkLXNlY3Rpb25cIj5cclxuXHRcdFx0QGlmICghaXNDdXJyZW50UGFnZUZhdm9yaXRlZCgpKSB7XHJcblx0XHRcdFx0PGFyaWwtYnV0dG9uXHJcblx0XHRcdFx0XHRbbGFiZWxdPVwidCgnYWRkQ3VycmVudFBhZ2UnKVwiXHJcblx0XHRcdFx0XHRpY29uPVwiUExVU1wiXHJcblx0XHRcdFx0XHRjb2xvcj1cInByaW1hcnlcIlxyXG5cdFx0XHRcdFx0c2l6ZT1cInNtXCJcclxuXHRcdFx0XHRcdChjbGlja0V2ZW50KT1cImFkZEN1cnJlbnRQYWdlVG9GYXZvcml0ZXMoKVwiPlxyXG5cdFx0XHRcdDwvYXJpbC1idXR0b24+XHJcblx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdDxhcmlsLWJ1dHRvblxyXG5cdFx0XHRcdFx0W2xhYmVsXT1cInQoJ3JlbW92ZUN1cnJlbnRQYWdlJylcIlxyXG5cdFx0XHRcdFx0aWNvbj1cIlRJTUVTXCJcclxuXHRcdFx0XHRcdGNvbG9yPVwiZGFuZ2VyXCJcclxuXHRcdFx0XHRcdHNpemU9XCJzbVwiXHJcblx0XHRcdFx0XHQoY2xpY2tFdmVudCk9XCJyZW1vdmVDdXJyZW50UGFnZUZyb21GYXZvcml0ZXMoKVwiPlxyXG5cdFx0XHRcdDwvYXJpbC1idXR0b24+XHJcblx0XHRcdH1cclxuXHRcdDwvZGl2PlxyXG5cclxuXHRcdEBpZiAoZmF2b3JpdGVQYWdlcygpLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0PGRpdiBjbGFzcz1cImZhdm9yaXRlcy1saXN0XCI+XHJcblx0XHRcdFx0PHAtc2Nyb2xsUGFuZWwgW3N0eWxlXT1cInsgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScgfVwiPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZhdm9yaXRlcy1pdGVtc1wiPlxyXG5cdFx0XHRcdFx0XHRAZm9yIChmYXZvcml0ZSBvZiBmYXZvcml0ZVBhZ2VzKCk7IHRyYWNrIHRyYWNrQnlGYXZvcml0ZUlkKCRpbmRleCwgZmF2b3JpdGUpKSB7XHJcblx0XHRcdFx0XHRcdFx0PGRpdlxyXG5cdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJmYXZvcml0ZS1pdGVtXCJcclxuXHRcdFx0XHRcdFx0XHRcdFtjbGFzcy5kZWZhdWx0LWl0ZW1dPVwiZmF2b3JpdGUuaWQgPCAwXCJcclxuXHRcdFx0XHRcdFx0XHRcdFthcmlsTmF2TGlua109XCJ7IHRhYklkOiAnJywgbmF2TGluazogZmF2b3JpdGUudXJsLCBuYXZOYW1lOiBmYXZvcml0ZS5sYWJlbCB9XCJcclxuXHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJuYXZpZ2F0ZVRvRmF2b3JpdGUoZmF2b3JpdGUpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCJnZXRGdWxsVXJsKGZhdm9yaXRlLnVybClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaXRlbS1jb250ZW50XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpdGVtLWhlYWRlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpdGVtLXRpdGxlXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWV4dGVybmFsLWxpbmsgdGV4dC1wcmltYXJ5IG1yLTJcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInRpdGxlLXRleHRcIj57eyBmYXZvcml0ZS5sYWJlbCB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGZhLWljb25cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W2ljb25dPVwic29saWRJY29ucy5mYVBlblRvU3F1YXJlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2l6ZT1cImxnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3R5bGU9XCJjb2xvcjogdmFyKC0teWVsbG93LTUwMClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cImNvbC0yIGN1cnNvci1wb2ludGVyXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cImVkaXRGYXZvcml0ZShmYXZvcml0ZSwgJGV2ZW50KVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9mYS1pY29uPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGZhLWljb25cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W2ljb25dPVwic29saWRJY29ucy5mYVRyYXNoXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2l6ZT1cImxnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3R5bGU9XCJjb2xvcjogdmFyKC0tcmVkLTUwMClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cImNvbC0yIGN1cnNvci1wb2ludGVyXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cImRlbGV0ZUZhdm9yaXRlKGZhdm9yaXRlLCAkZXZlbnQpXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2ZhLWljb24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvcC1zY3JvbGxQYW5lbD5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHR9IEBlbHNlIHtcclxuXHRcdFx0PGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImVtcHR5LWNvbnRlbnRcIj5cclxuXHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktaGVhcnQgZW1wdHktaWNvblwiPjwvaT5cclxuXHRcdFx0XHRcdDxoMyBjbGFzcz1cImVtcHR5LXRpdGxlXCI+e3sgdCgnbm9GYXZvcml0ZXMnKSB9fTwvaDM+XHJcblx0XHRcdFx0XHQ8cCBjbGFzcz1cImVtcHR5LW1lc3NhZ2VcIj57eyB0KCdzdGFydEFkZGluZ0Zhdm9yaXRlcycpIH19PC9wPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdH1cclxuXHRcdDxkaXY+XHJcblx0XHRcdDxwLXBhZ2luYXRvclxyXG5cdFx0XHRcdFtmaXJzdF09XCIoY3VycmVudFBhZ2UoKSAtIDEpICogcGFnZVNpemUoKVwiXHJcblx0XHRcdFx0W3Jvd3NdPVwicGFnZVNpemUoKVwiXHJcblx0XHRcdFx0W3RvdGFsUmVjb3Jkc109XCJ0b3RhbEl0ZW1zKClcIlxyXG5cdFx0XHRcdFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiXHJcblx0XHRcdFx0W2N1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGVdPVwidCgncGFnaW5hdG9yVGVtcGxhdGUnKVwiXHJcblx0XHRcdFx0W3Nob3dGaXJzdExhc3RJY29uXT1cImZhbHNlXCJcclxuXHRcdFx0XHRbc2hvd1BhZ2VMaW5rc109XCJmYWxzZVwiXHJcblx0XHRcdFx0KG9uUGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiPlxyXG5cdFx0XHQ8L3AtcGFnaW5hdG9yPlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblxyXG5cdDxwLWNvbmZpcm1EaWFsb2c+PC9wLWNvbmZpcm1EaWFsb2c+XHJcbjwvcC1zaWRlYmFyPlxyXG4iXX0=