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
@@ -81,11 +81,11 @@ export class MicroAppService {
81
81
  }
82
82
  return permittedRoles.some((role) => this.userRoles.includes(role));
83
83
  }
84
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: MicroAppService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
85
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: MicroAppService, providedIn: 'root' }); }
84
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MicroAppService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
85
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MicroAppService, providedIn: 'root' }); }
86
86
  }
87
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: MicroAppService, decorators: [{
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MicroAppService, decorators: [{
88
88
  type: Injectable,
89
89
  args: [{ providedIn: 'root' }]
90
90
  }] });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9ib290L2NvbmZpZy9hcHBzL3NyYy9hcHBzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBRU4sVUFBVSxFQUNWLE1BQU0sNkNBQTZDLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBYyxVQUFVLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQVFoRSxNQUFNLE9BQU8sZUFBZTtJQUQ1QjtRQUVrQixXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLGFBQVEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFNUMsY0FBUyxHQUFhLEVBQUUsQ0FBQztLQW1GakM7SUFqRkEsSUFBSSxDQUFDLFVBQXNCLEVBQUUsT0FBZTtRQUMzQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDOUMsT0FBTyxVQUFVO2FBQ2Ys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S0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO2dCQUNoQyxZQUFZLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRXBFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDNUQsT0FBTyxHQUFHLENBQUM7Z0JBQ1osQ0FBQztZQUNGLENBQUM7WUFFRCxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3ZCLE9BQU8sR0FBRyxDQUFDO1FBQ1osQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVPLGFBQWEsQ0FBQyxjQUF5QjtRQUM5QyxJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzdCLE9BQU8sSUFBSSxDQUFDO1FBQ2IsQ0FBQztRQUNELE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDOzhHQXRGVyxlQUFlO2tIQUFmLGVBQWUsY0FERixNQUFNOzsyRkFDbkIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQge1xyXG5cdFdlYkNvbXBvbmVudFdyYXBwZXJPcHRpb25zLFxyXG5cdHN0YXJ0c1dpdGhcclxufSBmcm9tICdAYW5ndWxhci1hcmNoaXRlY3RzL21vZHVsZS1mZWRlcmF0aW9uLXRvb2xzJztcclxuaW1wb3J0IHsgS2V5Y2xvYWtTZXJ2aWNlIH0gZnJvbSAna2V5Y2xvYWstYW5ndWxhcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGNhdGNoRXJyb3IsIG1hcCwgb2YgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IEZvcmJpZGRlbkNvbXBvbmVudCwgTm90Rm91bmRDb21wb25lbnQgfSBmcm9tICdhcmlsL2Jvb3QvcGFnZXMnO1xyXG5cclxuaW1wb3J0IHsgQXV0aEd1YXJkIH0gZnJvbSAnLi9hdXRoLmd1YXJkJztcclxuaW1wb3J0IHsgQXJpbFdlYkNvbXBvbmVudFdyYXBwZXIgfSBmcm9tICcuL2N1c3RvbS1yZXVzZS1vdXRsZXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXBwc0RUTywgRXh0ZW5zaW9uQ29uZmlnLCBQbHVnaW5Db25maWcsIFBsdWdpbk1lbnVJdGVtIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgc2V0Um91dGVQZXJtaXNzaW9ucyB9IGZyb20gJy4vcm91dGUtcGVybWlzc2lvbnMnO1xyXG5pbXBvcnQgeyBTaGFkb3dET01XcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9zaG93ZG93RE9NV3JhcHBlcic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1pY3JvQXBwSW5pdFJlc3VsdCB7XHJcblx0bWVudUl0ZW1zOiBQbHVnaW5NZW51SXRlbVtdO1xyXG5cdHBsdWdpbnM6IFJlY29yZDxzdHJpbmcsIEV4dGVuc2lvbkNvbmZpZz47XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBNaWNyb0FwcFNlcnZpY2Uge1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcblx0cHJpdmF0ZSByZWFkb25seSBrZXljbG9hayA9IGluamVjdChLZXljbG9ha1NlcnZpY2UpO1xyXG5cclxuXHRwcml2YXRlIHVzZXJSb2xlczogc3RyaW5nW10gPSBbXTtcclxuXHJcblx0aW5pdChodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBob3N0QVBJOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE1pY3JvQXBwSW5pdFJlc3VsdD4ge1xyXG5cdFx0dGhpcy51c2VyUm9sZXMgPSB0aGlzLmtleWNsb2FrLmdldFVzZXJSb2xlcygpO1xyXG5cdFx0cmV0dXJuIGh0dHBDbGllbnRcclxuXHRcdFx0LmdldDxBcHBzRFRPPihpc0Rldk1vZGUoKSA/ICcuL2Fzc2V0cy9sb2NhbC1jb25maWdzL2FwcC5sb2NhbC5qc29uJyA6IGhvc3RBUEkgKyAnL3VpLXNpZGViYXItY29uZmlncycpXHJcblx0XHRcdC5waXBlKFxyXG5cdFx0XHRcdG1hcCgoYXBwcykgPT4ge1xyXG5cdFx0XHRcdFx0c2V0Um91dGVQZXJtaXNzaW9ucyhhcHBzLm1lbnVJdGVtcywgYXBwcy5yb3V0ZVBlcm1pc3Npb25zKTtcclxuXHRcdFx0XHRcdGNvbnN0IHJvdXRlcyA9IHRoaXMuYnVpbGRSb3V0ZXMoWy4uLmFwcHMubW9kdWxlcywgLi4uYXBwcy5wbHVnaW5zXSk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5yb3V0ZXIucmVzZXRDb25maWcoW1xyXG5cdFx0XHRcdFx0XHQuLi50aGlzLnJvdXRlci5jb25maWcsXHJcblx0XHRcdFx0XHRcdC4uLnJvdXRlcyxcclxuXHRcdFx0XHRcdFx0eyBwYXRoOiAnZm9yYmlkZGVuJywgY29tcG9uZW50OiBGb3JiaWRkZW5Db21wb25lbnQgfSxcclxuXHRcdFx0XHRcdFx0eyBwYXRoOiAnKionLCBjb21wb25lbnQ6IE5vdEZvdW5kQ29tcG9uZW50IH1cclxuXHRcdFx0XHRcdF0pO1xyXG5cclxuXHRcdFx0XHRcdGNvbnN0IGZpbHRlcmVkTWVudUl0ZW1zID0gdGhpcy5maWx0ZXJNZW51SXRlbXNCeVJvbGUoYXBwcy5tZW51SXRlbXMpO1xyXG5cdFx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdFx0bWVudUl0ZW1zOiBbXHJcblx0XHRcdFx0XHRcdFx0eyByb290OiB0cnVlLCBsYWJlbDogeyB0cjogJ0FuYXNheWZhJywgZW46ICdIb21lJyB9LCBpY29uOiAncGkgcGktZncgcGktaG9tZScsIHJvdXRlckxpbms6ICcvJyB9IGFzIFBsdWdpbk1lbnVJdGVtLFxyXG5cdFx0XHRcdFx0XHRcdC4uLmZpbHRlcmVkTWVudUl0ZW1zXHJcblx0XHRcdFx0XHRcdF0sXHJcblx0XHRcdFx0XHRcdHBsdWdpbnM6IGFwcHMuZXh0ZW5zaW9ucyB8fCB7fVxyXG5cdFx0XHRcdFx0fTtcclxuXHRcdFx0XHR9KSxcclxuXHRcdFx0XHRjYXRjaEVycm9yKChlcnIpID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdFcnJvciBNaWNybyBBcHBzIExvYWRpbmcnLCBlcnIpO1xyXG5cdFx0XHRcdFx0cmV0dXJuIG9mPE1pY3JvQXBwSW5pdFJlc3VsdD4oeyBtZW51SXRlbXM6IFtdLCBwbHVnaW5zOiB7fSB9KTtcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHQpO1xyXG5cdH1cclxuXHJcblx0YnVpbGRSb3V0ZXMob3B0aW9uczogUGx1Z2luQ29uZmlnW10pOiBSb3V0ZXMge1xyXG5cdFx0Y29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBvcHRpb25zLm1hcCgob3B0KSA9PiB7XHJcblx0XHRcdGlmICghb3B0LnJlbW90ZU5hbWUpIHtcclxuXHRcdFx0XHQvLyBgcmVtb3RlTmFtZWAgYm/Fn3NhIFN0cmF0ZWd5IGBnZXRSb3V0ZUtleWAgZG/En3J1IHRhYiBrZXkgw7xyZXRlbWl5b3Ig4oaSIHRhYiBpem9sYXN5b251XHJcblx0XHRcdFx0Ly8gc2lsZW50IGvEsXLEsWzEsXlvcmR1LiBGYWlsLWZhc3Q6IGNvbmZpZyBoYXRhc8SxbsSxIGJvb3QtdGltZSdkYSB5YWthbGEsIHJ1bnRpbWUnZGFcclxuXHRcdFx0XHQvLyBrdWxsYW7EsWPEsSBib8WfIHRhYidsYXIgZ8O2cm1lc2luLlxyXG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihcclxuXHRcdFx0XHRcdGBbTWljcm9BcHBTZXJ2aWNlLmJ1aWxkUm91dGVzXSBQbHVnaW5Db25maWcucmVtb3RlTmFtZSBla3Npay4gYCArXHJcblx0XHRcdFx0XHRgUm91dGUgb2x1xZ90dXJ1bGFtYXog4oCUIGNvbmZpZyBrb250cm9sIGV0OiAke0pTT04uc3RyaW5naWZ5KG9wdCl9YFxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRtYXRjaGVyOiBzdGFydHNXaXRoKG9wdC5yZW1vdGVOYW1lKSxcclxuXHRcdFx0XHRjb21wb25lbnQ6IG9wdC5zaGFkb3dEb21QYXNzaXZlID8gQXJpbFdlYkNvbXBvbmVudFdyYXBwZXIgOiBTaGFkb3dET01XcmFwcGVyQ29tcG9uZW50LFxyXG5cdFx0XHRcdGRhdGE6IG9wdCBhcyBXZWJDb21wb25lbnRXcmFwcGVyT3B0aW9ucyxcclxuXHRcdFx0XHRjYW5BY3RpdmF0ZTogW0F1dGhHdWFyZF1cclxuXHRcdFx0fTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdHJldHVybiByb3V0ZXM7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGZpbHRlck1lbnVJdGVtc0J5Um9sZShpdGVtczogUGx1Z2luTWVudUl0ZW1bXSk6IFBsdWdpbk1lbnVJdGVtW10ge1xyXG5cdFx0cmV0dXJuIGl0ZW1zLnJlZHVjZTxQbHVnaW5NZW51SXRlbVtdPigoYWNjLCBpdGVtKSA9PiB7XHJcblx0XHRcdGlmICghdGhpcy5oYXNQZXJtaXNzaW9uKGl0ZW0ucGVybWl0dGVkUm9sZXMpKSB7XHJcblx0XHRcdFx0cmV0dXJuIGFjYztcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Y29uc3QgZmlsdGVyZWRJdGVtID0geyAuLi5pdGVtIH07XHJcblxyXG5cdFx0XHRpZiAoZmlsdGVyZWRJdGVtLml0ZW1zPy5sZW5ndGgpIHtcclxuXHRcdFx0XHRmaWx0ZXJlZEl0ZW0uaXRlbXMgPSB0aGlzLmZpbHRlck1lbnVJdGVtc0J5Um9sZShmaWx0ZXJlZEl0ZW0uaXRlbXMpO1xyXG5cclxuXHRcdFx0XHRpZiAoIWZpbHRlcmVkSXRlbS5pdGVtcy5sZW5ndGggJiYgIWZpbHRlcmVkSXRlbS5yb3V0ZXJMaW5rKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gYWNjO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0YWNjLnB1c2goZmlsdGVyZWRJdGVtKTtcclxuXHRcdFx0cmV0dXJuIGFjYztcclxuXHRcdH0sIFtdKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgaGFzUGVybWlzc2lvbihwZXJtaXR0ZWRSb2xlcz86IHN0cmluZ1tdKTogYm9vbGVhbiB7XHJcblx0XHRpZiAoIXBlcm1pdHRlZFJvbGVzPy5sZW5ndGgpIHtcclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcGVybWl0dGVkUm9sZXMuc29tZSgocm9sZSkgPT4gdGhpcy51c2VyUm9sZXMuaW5jbHVkZXMocm9sZSkpO1xyXG5cdH1cclxufVxyXG4iXX0=
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9ib290L2NvbmZpZy9hcHBzL3NyYy9hcHBzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBRU4sVUFBVSxFQUNWLE1BQU0sNkNBQTZDLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBYyxVQUFVLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQVFoRSxNQUFNLE9BQU8sZUFBZTtJQUQ1QjtRQUVrQixXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLGFBQVEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFNUMsY0FBUyxHQUFhLEVBQUUsQ0FBQztLQW1GakM7SUFqRkEsSUFBSSxDQUFDLFVBQXNCLEVBQUUsT0FBZTtRQUMzQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDOUMsT0FBTyxVQUFVO2FBQ2Ys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S0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO2dCQUNoQyxZQUFZLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRXBFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDNUQsT0FBTyxHQUFHLENBQUM7Z0JBQ1osQ0FBQztZQUNGLENBQUM7WUFFRCxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3ZCLE9BQU8sR0FBRyxDQUFDO1FBQ1osQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVPLGFBQWEsQ0FBQyxjQUF5QjtRQUM5QyxJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzdCLE9BQU8sSUFBSSxDQUFDO1FBQ2IsQ0FBQztRQUNELE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDOytHQXRGVyxlQUFlO21IQUFmLGVBQWUsY0FERixNQUFNOzs0RkFDbkIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQge1xyXG5cdFdlYkNvbXBvbmVudFdyYXBwZXJPcHRpb25zLFxyXG5cdHN0YXJ0c1dpdGhcclxufSBmcm9tICdAYW5ndWxhci1hcmNoaXRlY3RzL21vZHVsZS1mZWRlcmF0aW9uLXRvb2xzJztcclxuaW1wb3J0IHsgS2V5Y2xvYWtTZXJ2aWNlIH0gZnJvbSAna2V5Y2xvYWstYW5ndWxhcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGNhdGNoRXJyb3IsIG1hcCwgb2YgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IEZvcmJpZGRlbkNvbXBvbmVudCwgTm90Rm91bmRDb21wb25lbnQgfSBmcm9tICdhcmlsL2Jvb3QvcGFnZXMnO1xyXG5cclxuaW1wb3J0IHsgQXV0aEd1YXJkIH0gZnJvbSAnLi9hdXRoLmd1YXJkJztcclxuaW1wb3J0IHsgQXJpbFdlYkNvbXBvbmVudFdyYXBwZXIgfSBmcm9tICcuL2N1c3RvbS1yZXVzZS1vdXRsZXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXBwc0RUTywgRXh0ZW5zaW9uQ29uZmlnLCBQbHVnaW5Db25maWcsIFBsdWdpbk1lbnVJdGVtIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgc2V0Um91dGVQZXJtaXNzaW9ucyB9IGZyb20gJy4vcm91dGUtcGVybWlzc2lvbnMnO1xyXG5pbXBvcnQgeyBTaGFkb3dET01XcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9zaG93ZG93RE9NV3JhcHBlcic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1pY3JvQXBwSW5pdFJlc3VsdCB7XHJcblx0bWVudUl0ZW1zOiBQbHVnaW5NZW51SXRlbVtdO1xyXG5cdHBsdWdpbnM6IFJlY29yZDxzdHJpbmcsIEV4dGVuc2lvbkNvbmZpZz47XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBNaWNyb0FwcFNlcnZpY2Uge1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcblx0cHJpdmF0ZSByZWFkb25seSBrZXljbG9hayA9IGluamVjdChLZXljbG9ha1NlcnZpY2UpO1xyXG5cclxuXHRwcml2YXRlIHVzZXJSb2xlczogc3RyaW5nW10gPSBbXTtcclxuXHJcblx0aW5pdChodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBob3N0QVBJOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE1pY3JvQXBwSW5pdFJlc3VsdD4ge1xyXG5cdFx0dGhpcy51c2VyUm9sZXMgPSB0aGlzLmtleWNsb2FrLmdldFVzZXJSb2xlcygpO1xyXG5cdFx0cmV0dXJuIGh0dHBDbGllbnRcclxuXHRcdFx0LmdldDxBcHBzRFRPPihpc0Rldk1vZGUoKSA/ICcuL2Fzc2V0cy9sb2NhbC1jb25maWdzL2FwcC5sb2NhbC5qc29uJyA6IGhvc3RBUEkgKyAnL3VpLXNpZGViYXItY29uZmlncycpXHJcblx0XHRcdC5waXBlKFxyXG5cdFx0XHRcdG1hcCgoYXBwcykgPT4ge1xyXG5cdFx0XHRcdFx0c2V0Um91dGVQZXJtaXNzaW9ucyhhcHBzLm1lbnVJdGVtcywgYXBwcy5yb3V0ZVBlcm1pc3Npb25zKTtcclxuXHRcdFx0XHRcdGNvbnN0IHJvdXRlcyA9IHRoaXMuYnVpbGRSb3V0ZXMoWy4uLmFwcHMubW9kdWxlcywgLi4uYXBwcy5wbHVnaW5zXSk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5yb3V0ZXIucmVzZXRDb25maWcoW1xyXG5cdFx0XHRcdFx0XHQuLi50aGlzLnJvdXRlci5jb25maWcsXHJcblx0XHRcdFx0XHRcdC4uLnJvdXRlcyxcclxuXHRcdFx0XHRcdFx0eyBwYXRoOiAnZm9yYmlkZGVuJywgY29tcG9uZW50OiBGb3JiaWRkZW5Db21wb25lbnQgfSxcclxuXHRcdFx0XHRcdFx0eyBwYXRoOiAnKionLCBjb21wb25lbnQ6IE5vdEZvdW5kQ29tcG9uZW50IH1cclxuXHRcdFx0XHRcdF0pO1xyXG5cclxuXHRcdFx0XHRcdGNvbnN0IGZpbHRlcmVkTWVudUl0ZW1zID0gdGhpcy5maWx0ZXJNZW51SXRlbXNCeVJvbGUoYXBwcy5tZW51SXRlbXMpO1xyXG5cdFx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdFx0bWVudUl0ZW1zOiBbXHJcblx0XHRcdFx0XHRcdFx0eyByb290OiB0cnVlLCBsYWJlbDogeyB0cjogJ0FuYXNheWZhJywgZW46ICdIb21lJyB9LCBpY29uOiAncGkgcGktZncgcGktaG9tZScsIHJvdXRlckxpbms6ICcvJyB9IGFzIFBsdWdpbk1lbnVJdGVtLFxyXG5cdFx0XHRcdFx0XHRcdC4uLmZpbHRlcmVkTWVudUl0ZW1zXHJcblx0XHRcdFx0XHRcdF0sXHJcblx0XHRcdFx0XHRcdHBsdWdpbnM6IGFwcHMuZXh0ZW5zaW9ucyB8fCB7fVxyXG5cdFx0XHRcdFx0fTtcclxuXHRcdFx0XHR9KSxcclxuXHRcdFx0XHRjYXRjaEVycm9yKChlcnIpID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdFcnJvciBNaWNybyBBcHBzIExvYWRpbmcnLCBlcnIpO1xyXG5cdFx0XHRcdFx0cmV0dXJuIG9mPE1pY3JvQXBwSW5pdFJlc3VsdD4oeyBtZW51SXRlbXM6IFtdLCBwbHVnaW5zOiB7fSB9KTtcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHQpO1xyXG5cdH1cclxuXHJcblx0YnVpbGRSb3V0ZXMob3B0aW9uczogUGx1Z2luQ29uZmlnW10pOiBSb3V0ZXMge1xyXG5cdFx0Y29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBvcHRpb25zLm1hcCgob3B0KSA9PiB7XHJcblx0XHRcdGlmICghb3B0LnJlbW90ZU5hbWUpIHtcclxuXHRcdFx0XHQvLyBgcmVtb3RlTmFtZWAgYm/Fn3NhIFN0cmF0ZWd5IGBnZXRSb3V0ZUtleWAgZG/En3J1IHRhYiBrZXkgw7xyZXRlbWl5b3Ig4oaSIHRhYiBpem9sYXN5b251XHJcblx0XHRcdFx0Ly8gc2lsZW50IGvEsXLEsWzEsXlvcmR1LiBGYWlsLWZhc3Q6IGNvbmZpZyBoYXRhc8SxbsSxIGJvb3QtdGltZSdkYSB5YWthbGEsIHJ1bnRpbWUnZGFcclxuXHRcdFx0XHQvLyBrdWxsYW7EsWPEsSBib8WfIHRhYidsYXIgZ8O2cm1lc2luLlxyXG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihcclxuXHRcdFx0XHRcdGBbTWljcm9BcHBTZXJ2aWNlLmJ1aWxkUm91dGVzXSBQbHVnaW5Db25maWcucmVtb3RlTmFtZSBla3Npay4gYCArXHJcblx0XHRcdFx0XHRgUm91dGUgb2x1xZ90dXJ1bGFtYXog4oCUIGNvbmZpZyBrb250cm9sIGV0OiAke0pTT04uc3RyaW5naWZ5KG9wdCl9YFxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRtYXRjaGVyOiBzdGFydHNXaXRoKG9wdC5yZW1vdGVOYW1lKSxcclxuXHRcdFx0XHRjb21wb25lbnQ6IG9wdC5zaGFkb3dEb21QYXNzaXZlID8gQXJpbFdlYkNvbXBvbmVudFdyYXBwZXIgOiBTaGFkb3dET01XcmFwcGVyQ29tcG9uZW50LFxyXG5cdFx0XHRcdGRhdGE6IG9wdCBhcyBXZWJDb21wb25lbnRXcmFwcGVyT3B0aW9ucyxcclxuXHRcdFx0XHRjYW5BY3RpdmF0ZTogW0F1dGhHdWFyZF1cclxuXHRcdFx0fTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdHJldHVybiByb3V0ZXM7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGZpbHRlck1lbnVJdGVtc0J5Um9sZShpdGVtczogUGx1Z2luTWVudUl0ZW1bXSk6IFBsdWdpbk1lbnVJdGVtW10ge1xyXG5cdFx0cmV0dXJuIGl0ZW1zLnJlZHVjZTxQbHVnaW5NZW51SXRlbVtdPigoYWNjLCBpdGVtKSA9PiB7XHJcblx0XHRcdGlmICghdGhpcy5oYXNQZXJtaXNzaW9uKGl0ZW0ucGVybWl0dGVkUm9sZXMpKSB7XHJcblx0XHRcdFx0cmV0dXJuIGFjYztcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Y29uc3QgZmlsdGVyZWRJdGVtID0geyAuLi5pdGVtIH07XHJcblxyXG5cdFx0XHRpZiAoZmlsdGVyZWRJdGVtLml0ZW1zPy5sZW5ndGgpIHtcclxuXHRcdFx0XHRmaWx0ZXJlZEl0ZW0uaXRlbXMgPSB0aGlzLmZpbHRlck1lbnVJdGVtc0J5Um9sZShmaWx0ZXJlZEl0ZW0uaXRlbXMpO1xyXG5cclxuXHRcdFx0XHRpZiAoIWZpbHRlcmVkSXRlbS5pdGVtcy5sZW5ndGggJiYgIWZpbHRlcmVkSXRlbS5yb3V0ZXJMaW5rKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gYWNjO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0YWNjLnB1c2goZmlsdGVyZWRJdGVtKTtcclxuXHRcdFx0cmV0dXJuIGFjYztcclxuXHRcdH0sIFtdKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgaGFzUGVybWlzc2lvbihwZXJtaXR0ZWRSb2xlcz86IHN0cmluZ1tdKTogYm9vbGVhbiB7XHJcblx0XHRpZiAoIXBlcm1pdHRlZFJvbGVzPy5sZW5ndGgpIHtcclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcGVybWl0dGVkUm9sZXMuc29tZSgocm9sZSkgPT4gdGhpcy51c2VyUm9sZXMuaW5jbHVkZXMocm9sZSkpO1xyXG5cdH1cclxufVxyXG4iXX0=
@@ -20,11 +20,11 @@ export class AuthGuard extends KeycloakAuthGuard {
20
20
  }
21
21
  return this.authenticated;
22
22
  }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AuthGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
24
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AuthGuard, providedIn: 'root' }); }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
24
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthGuard, providedIn: 'root' }); }
25
25
  }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AuthGuard, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthGuard, decorators: [{
27
27
  type: Injectable,
28
28
  args: [{ providedIn: 'root' }]
29
29
  }], ctorParameters: () => [] });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9jb25maWcvYXBwcy9zcmMvYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQTBCLE1BQU0sRUFBZ0MsTUFBTSxpQkFBaUIsQ0FBQztBQUUvRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBRzFELE1BQU0sT0FBTyxTQUFVLFNBQVEsaUJBQWlCO0lBQy9DO1FBQ0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRVEsS0FBSyxDQUFDLGVBQWUsQ0FDN0IsS0FBNkIsRUFDN0IsS0FBMEI7UUFFMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXRELElBQUksY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzVCLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ2xELENBQUM7UUFDRixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzNCLENBQUM7OEdBdkJXLFNBQVM7a0hBQVQsU0FBUyxjQURJLE1BQU07OzJGQUNuQixTQUFTO2tCQURyQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXIsIFJvdXRlclN0YXRlU25hcHNob3QsIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgS2V5Y2xvYWtBdXRoR3VhcmQsIEtleWNsb2FrU2VydmljZSB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5cclxuaW1wb3J0IHsgZ2V0Um91dGVQZXJtaXNzaW9ucyB9IGZyb20gJy4vcm91dGUtcGVybWlzc2lvbnMnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEF1dGhHdWFyZCBleHRlbmRzIEtleWNsb2FrQXV0aEd1YXJkIHtcclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdHN1cGVyKGluamVjdChSb3V0ZXIpLCBpbmplY3QoS2V5Y2xvYWtTZXJ2aWNlKSk7XHJcblx0fVxyXG5cclxuXHRvdmVycmlkZSBhc3luYyBpc0FjY2Vzc0FsbG93ZWQoXHJcblx0XHRyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuXHRcdHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XHJcblx0KTogUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4ge1xyXG5cdFx0aWYgKCF0aGlzLmF1dGhlbnRpY2F0ZWQpIHtcclxuXHRcdFx0YXdhaXQgdGhpcy5rZXljbG9ha0FuZ3VsYXIubG9naW4oeyByZWRpcmVjdFVyaTogd2luZG93LmxvY2F0aW9uLmhyZWYgfSk7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgcGVybWl0dGVkUm9sZXMgPSBnZXRSb3V0ZVBlcm1pc3Npb25zKHN0YXRlLnVybCk7XHJcblxyXG5cdFx0aWYgKHBlcm1pdHRlZFJvbGVzPy5sZW5ndGgpIHtcclxuXHRcdFx0Y29uc3QgaGFzUm9sZSA9IHBlcm1pdHRlZFJvbGVzLnNvbWUoKHJvbGUpID0+IHRoaXMucm9sZXMuaW5jbHVkZXMocm9sZSkpO1xyXG5cdFx0XHRpZiAoIWhhc1JvbGUpIHtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbJy9mb3JiaWRkZW4nXSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdGhpcy5hdXRoZW50aWNhdGVkO1xyXG5cdH1cclxufVxyXG4iXX0=
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9jb25maWcvYXBwcy9zcmMvYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQTBCLE1BQU0sRUFBZ0MsTUFBTSxpQkFBaUIsQ0FBQztBQUUvRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBRzFELE1BQU0sT0FBTyxTQUFVLFNBQVEsaUJBQWlCO0lBQy9DO1FBQ0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRVEsS0FBSyxDQUFDLGVBQWUsQ0FDN0IsS0FBNkIsRUFDN0IsS0FBMEI7UUFFMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXRELElBQUksY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzVCLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ2xELENBQUM7UUFDRixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzNCLENBQUM7K0dBdkJXLFNBQVM7bUhBQVQsU0FBUyxjQURJLE1BQU07OzRGQUNuQixTQUFTO2tCQURyQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXIsIFJvdXRlclN0YXRlU25hcHNob3QsIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgS2V5Y2xvYWtBdXRoR3VhcmQsIEtleWNsb2FrU2VydmljZSB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5cclxuaW1wb3J0IHsgZ2V0Um91dGVQZXJtaXNzaW9ucyB9IGZyb20gJy4vcm91dGUtcGVybWlzc2lvbnMnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEF1dGhHdWFyZCBleHRlbmRzIEtleWNsb2FrQXV0aEd1YXJkIHtcclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdHN1cGVyKGluamVjdChSb3V0ZXIpLCBpbmplY3QoS2V5Y2xvYWtTZXJ2aWNlKSk7XHJcblx0fVxyXG5cclxuXHRvdmVycmlkZSBhc3luYyBpc0FjY2Vzc0FsbG93ZWQoXHJcblx0XHRyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuXHRcdHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XHJcblx0KTogUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4ge1xyXG5cdFx0aWYgKCF0aGlzLmF1dGhlbnRpY2F0ZWQpIHtcclxuXHRcdFx0YXdhaXQgdGhpcy5rZXljbG9ha0FuZ3VsYXIubG9naW4oeyByZWRpcmVjdFVyaTogd2luZG93LmxvY2F0aW9uLmhyZWYgfSk7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgcGVybWl0dGVkUm9sZXMgPSBnZXRSb3V0ZVBlcm1pc3Npb25zKHN0YXRlLnVybCk7XHJcblxyXG5cdFx0aWYgKHBlcm1pdHRlZFJvbGVzPy5sZW5ndGgpIHtcclxuXHRcdFx0Y29uc3QgaGFzUm9sZSA9IHBlcm1pdHRlZFJvbGVzLnNvbWUoKHJvbGUpID0+IHRoaXMucm9sZXMuaW5jbHVkZXMocm9sZSkpO1xyXG5cdFx0XHRpZiAoIWhhc1JvbGUpIHtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbJy9mb3JiaWRkZW4nXSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdGhpcy5hdXRoZW50aWNhdGVkO1xyXG5cdH1cclxufVxyXG4iXX0=
@@ -184,10 +184,10 @@ export class ArilWebComponentWrapper {
184
184
  this.routeSub = undefined;
185
185
  this.isDestroyed = true;
186
186
  }
187
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ArilWebComponentWrapper, deps: [{ token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
188
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: ArilWebComponentWrapper, selector: "mft-wc-wrapper", inputs: { options: "options", props: "props", events: "events" }, viewQueries: [{ propertyName: "vc", first: true, predicate: ["vc"], descendants: true, read: ElementRef, static: true }], usesOnChanges: true, ngImport: i0, template: '<div #vc></div>', isInline: true }); }
187
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ArilWebComponentWrapper, deps: [{ token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
188
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ArilWebComponentWrapper, selector: "mft-wc-wrapper", inputs: { options: "options", props: "props", events: "events" }, viewQueries: [{ propertyName: "vc", first: true, predicate: ["vc"], descendants: true, read: ElementRef, static: true }], usesOnChanges: true, ngImport: i0, template: '<div #vc></div>', isInline: true }); }
189
189
  }
190
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ArilWebComponentWrapper, decorators: [{
190
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ArilWebComponentWrapper, decorators: [{
191
191
  type: Component,
192
192
  args: [{
193
193
  // eslint-disable-next-line @angular-eslint/component-selector
@@ -204,4 +204,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
204
204
  }], events: [{
205
205
  type: Input
206
206
  }] } });
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXJldXNlLW91dGxldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2Jvb3QvY29uZmlnL2FwcHMvc3JjL2N1c3RvbS1yZXVzZS1vdXRsZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFJTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUVMLGdCQUFnQixHQUNqQixNQUFNLCtDQUErQyxDQUFDOzs7QUFXdkQsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBTyx1QkFBdUI7SUFxQmxDLFlBQW9CLEtBQXFCO1FBQXJCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBWmpDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQzVCLDZGQUE2RjtRQUM3RixxQ0FBcUM7UUFDN0IscUJBQWdCLEdBQW9ELEVBQUUsQ0FBQztRQUUvRSwwREFBMEQ7UUFDMUQsa0dBQWtHO1FBQ2xHLHlGQUF5RjtRQUN6RixtREFBbUQ7UUFDbkQsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsaUJBQVksR0FBRyxLQUFLLENBQUM7SUFFdUIsQ0FBQztJQUU3QyxRQUFRO1FBQ04sa0RBQWtEO1FBQ2xELHdHQUF3RztRQUN4RyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7WUFDdkUseUVBQXlFO1lBQ3pFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNSLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTztR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RSxtRkFBbUY7UUFDbkYsc0ZBQXNGO1FBQ3RGLDhFQUE4RTtRQUM5RSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztRQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDOzhHQTVNVSx1QkFBdUI7a0dBQXZCLHVCQUF1Qiw2TEFDVCxVQUFVLGdFQUp6QixpQkFBaUI7OzJGQUdoQix1QkFBdUI7a0JBTm5DLFNBQVM7bUJBQUM7b0JBQ1QsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixRQUFRLEVBQUUsaUJBQWlCO2lCQUM1QjttRkFJQyxFQUFFO3NCQURELFNBQVM7dUJBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUcxQyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQge1xyXG4gIExvYWRSZW1vdGVNb2R1bGVPcHRpb25zLFxyXG4gIGxvYWRSZW1vdGVNb2R1bGUsXHJcbn0gZnJvbSAnQGFuZ3VsYXItYXJjaGl0ZWN0cy9tb2R1bGUtZmVkZXJhdGlvbi1ydW50aW1lJztcclxuXHJcbmV4cG9ydCB0eXBlIFdlYkNvbXBvbmVudFdyYXBwZXJPcHRpb25zID0gTG9hZFJlbW90ZU1vZHVsZU9wdGlvbnMgJiB7XHJcbiAgZWxlbWVudE5hbWU6IHN0cmluZztcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdtZnQtd2Mtd3JhcHBlcicsXHJcbiAgdGVtcGxhdGU6ICc8ZGl2ICN2Yz48L2Rpdj4nLFxyXG59KVxyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1jbGFzcy1zdWZmaXhcclxuZXhwb3J0IGNsYXNzIEFyaWxXZWJDb21wb25lbnRXcmFwcGVyIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZCgndmMnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHZjPzogRWxlbWVudFJlZjtcclxuXHJcbiAgQElucHV0KCkgb3B0aW9ucz86IFdlYkNvbXBvbmVudFdyYXBwZXJPcHRpb25zO1xyXG4gIEBJbnB1dCgpIHByb3BzPzogeyBbcHJvcDogc3RyaW5nXTogdW5rbm93biB9O1xyXG4gIEBJbnB1dCgpIGV2ZW50cz86IHsgW2V2ZW50OiBzdHJpbmddOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkIH07XHJcblxyXG4gIGVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcclxuICBwcml2YXRlIGlzRGVzdHJveWVkID0gZmFsc2U7XHJcbiAgLy8gc2V0dXBFdmVudHMgdGFyYWbEsW5kYW4gYmHEn2xhbmFuIGxpc3RlbmVyJ2xhcsSxIGl6bGVyaXog4oCUIG5nT25EZXN0cm95L3llbmlkZW4gYmluZCBzxLFyYXPEsW5kYVxyXG4gIC8vIGRvxJ9ydSDFn2VraWxkZSBrYWxkxLFyxLFsbWFsYXLEsSBpw6dpbi5cclxuICBwcml2YXRlIHJlZ2lzdGVyZWRFdmVudHM6IHsgbmFtZTogc3RyaW5nOyBoYW5kbGVyOiAoZTogRXZlbnQpID0+IHZvaWQgfVtdID0gW107XHJcbiAgcHJpdmF0ZSByb3V0ZVN1Yj86IHsgdW5zdWJzY3JpYmUoKTogdm9pZCB9O1xyXG4gIC8vIFJvdXRlIHJldXNlIHN0cmF0ZWppc2kgaWxlIHdyYXBwZXIgYXJhc8SxbmRha2kgc8O2emxlxZ9tZTpcclxuICAvLyAtIGBuZWVkc1Jlc3RvcmVgOiBzdHJhdGVneSByZXRyaWV2ZSBzxLFyYXPEsW5kYSBzZXQgZWRlcjsgbmdBZnRlclZpZXdJbml0IGVsZW1lbnQnaSB2aWV3J2EgZWtsZXIuXHJcbiAgLy8gLSBgcHJvcHNVcGRhdGVkYDogcmVzdG9yZSBzb25yYXPEsSBwb3B1bGF0ZVByb3BzIMOnYcSfcsSxc8SxbsSxbiBuZ09uQ2hhbmdlcyBpbGUgw6dha8SxxZ9tYXPEsW7EsVxyXG4gIC8vICAgZW5nZWxsZW1layBpw6dpbiBrdWxsYW7EsWzEsXIgKGlkZW1wb3RlbmN5IGZsYWcpLlxyXG4gIG5lZWRzUmVzdG9yZSA9IGZhbHNlO1xyXG4gIHByb3BzVXBkYXRlZCA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyBDb21wb25lbnQgdGVrcmFyIGVrbGVuZGnEn2luZGUgKHJldXNlIGR1cnVtdW5kYSlcclxuICAgIC8vIEVsZW1lbnQgcmVzdG9yZSBpxZ9sZW1pbmkgZGVuZSAodmlldyBoYXrEsXIgb2xtYXlhYmlsaXIsIG8gZHVydW1kYSBuZ0FmdGVyVmlld0luaXQndGUgdGVrcmFyIGRlbmVuZWNlaylcclxuICAgIGlmICh0aGlzLmVsZW1lbnQpIHtcclxuICAgICAgY29uc29sZS5sb2coJ1tBcmlsV0NdIG5nT25Jbml0OiBFbGVtZW50IG1ldmN1dCwgcmVzdG9yZSBkZW5lbml5b3IuLi4nKTtcclxuICAgICAgLy8gc2V0VGltZW91dCBpbGUgYmlyIHNvbnJha2kgdGljayd0ZSBkZW5lICh2aWV3IGhlbsO8eiBoYXrEsXIgb2xtYXlhYmlsaXIpXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVzdG9yZUVsZW1lbnQoKTtcclxuICAgICAgfSwgMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5lbGVtZW50IHx8IHRoaXMuaXNEZXN0cm95ZWQpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLnBvcHVsYXRlUHJvcHMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcG9wdWxhdGVQcm9wcygpIHtcclxuICAgIGlmICghdGhpcy5lbGVtZW50IHx8ICF0aGlzLnByb3BzKSByZXR1cm47XHJcblxyXG4gICAgLy8gQ3VzdG9tIGVsZW1lbnQnZSBkaW5hbWlrIHByb3Agc2V0IGVkaXlvcnV6OyBIVE1MRWxlbWVudCBidW51biBpw6dpbiBpbmRleCBzaWduYXR1cmVcclxuICAgIC8vIHRhxZ/EsW3EsXlvciwgYnUgecO8emRlbiBSZWNvcmQgY2FzdCdpIGlsZSB5YXrEsXlvcnV6LlxyXG4gICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5lbGVtZW50IGFzIEhUTUxFbGVtZW50ICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XHJcbiAgICBmb3IgKGNvbnN0IHByb3AgaW4gdGhpcy5wcm9wcykge1xyXG4gICAgICB0YXJnZXRbcHJvcF0gPSB0aGlzLnByb3BzW3Byb3BdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cEV2ZW50cygpIHtcclxuICAgIGlmICghdGhpcy5lbGVtZW50KSByZXR1cm47XHJcbiAgICAvLyDEsGRlbXBvdGVudDogw7ZuY2UgZXNraSBsaXN0ZW5lcidsYXLEsSBrYWxkxLFyLCBzb25yYSB5ZW5pbGVyaW5pIGJhxJ9sYS5cclxuICAgIHRoaXMudGVhcmRvd25FdmVudHMoKTtcclxuICAgIGlmICghdGhpcy5ldmVudHMpIHJldHVybjtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGV2ZW50IGluIHRoaXMuZXZlbnRzKSB7XHJcbiAgICAgIGNvbnN0IGhhbmRsZXIgPSB0aGlzLmV2ZW50c1tldmVudF07XHJcbiAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyKTtcclxuICAgICAgdGhpcy5yZWdpc3RlcmVkRXZlbnRzLnB1c2goeyBuYW1lOiBldmVudCwgaGFuZGxlciB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdGVhcmRvd25FdmVudHMoKSB7XHJcbiAgICBpZiAoIXRoaXMuZWxlbWVudCkge1xyXG4gICAgICB0aGlzLnJlZ2lzdGVyZWRFdmVudHMgPSBbXTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCB7IG5hbWUsIGhhbmRsZXIgfSBvZiB0aGlzLnJlZ2lzdGVyZWRFdmVudHMpIHtcclxuICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIobmFtZSwgaGFuZGxlcik7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlZ2lzdGVyZWRFdmVudHMgPSBbXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzdG9yZUVsZW1lbnQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZWxlbWVudCkge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ3Jlc3RvcmVFbGVtZW50OiBlbGVtZW50IHlvaycpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLnZjPy5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIGNvbnNvbGUud2FybigncmVzdG9yZUVsZW1lbnQ6IHZjLm5hdGl2ZUVsZW1lbnQgeW9rLCB0ZWtyYXIgZGVuZW5lY2VrJyk7XHJcbiAgICAgIC8vIFZpZXcgaGVuw7x6IGhhesSxciBkZcSfaWxzZSwgYmlyIHNvbnJha2kgbGlmZWN5Y2xlIGhvb2sndGEgdGVrcmFyIGRlbmVcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEhpZGRlbiBjb250YWluZXInZGFuIGVsZW1lbnQnaSBhbFxyXG4gICAgY29uc3QgaGlkZGVuQ29udGFpbmVyID0gdGhpcy5nZXRIaWRkZW5Db250YWluZXIoKTtcclxuICAgIFxyXG4gICAgaWYgKGhpZGRlbkNvbnRhaW5lci5jb250YWlucyh0aGlzLmVsZW1lbnQpKSB7XHJcbiAgICAgIC8vIEVsZW1lbnQgaGlkZGVuIGNvbnRhaW5lcidkYSwgZ2VyaSBhbFxyXG4gICAgICBoaWRkZW5Db250YWluZXIucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KTtcclxuICAgICAgdGhpcy52Yy5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCk7XHJcbiAgICAgIHRoaXMucG9wdWxhdGVQcm9wcygpO1xyXG4gICAgICBjb25zb2xlLmxvZygnV2ViIGNvbXBvbmVudCBoaWRkZW4gY29udGFpbmVyXFwnZGFuIGdlcmkgYWzEsW5kxLEgdmUgRE9NXFwnYSBla2xlbmRpJyk7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnZjLm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGhpcy5lbGVtZW50KSkge1xyXG4gICAgICAvLyBFbGVtZW50IGJhxZ9rYSBiaXIgeWVyZGV5c2UgdmV5YSBoacOnYmlyIHllcmRlIGRlxJ9pbHNlLCBkaXJla3QgZWtsZVxyXG4gICAgICBpZiAodGhpcy5lbGVtZW50LnBhcmVudE5vZGUpIHtcclxuICAgICAgICB0aGlzLmVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudmMubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpO1xyXG4gICAgICB0aGlzLnBvcHVsYXRlUHJvcHMoKTtcclxuICAgICAgY29uc29sZS5sb2coJ1dlYiBjb21wb25lbnQgRE9NXFwnYSBnZXJpIGVrbGVuZGknKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIEVsZW1lbnQgemF0ZW4gRE9NJ2RhLCBzYWRlY2UgcHJvcHMnbGFyxLEgZ8O8bmNlbGxlXHJcbiAgICAgIHRoaXMucG9wdWxhdGVQcm9wcygpO1xyXG4gICAgICBjb25zb2xlLmxvZygnV2ViIGNvbXBvbmVudCB6YXRlbiBET01cXCdkYSwgcHJvcHMgZ8O8bmNlbGxlbmRpJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEhpZGRlbkNvbnRhaW5lcigpOiBIVE1MRWxlbWVudCB7XHJcbiAgICBjb25zdCBzbG90ID0gZ2xvYmFsVGhpcyBhcyB0eXBlb2YgZ2xvYmFsVGhpcyAmIHsgX19hcmlsV2ViQ29tcG9uZW50SGlkZGVuQ29udGFpbmVyPzogSFRNTEVsZW1lbnQgfTtcclxuICAgIGxldCBjb250YWluZXIgPSBzbG90Ll9fYXJpbFdlYkNvbXBvbmVudEhpZGRlbkNvbnRhaW5lcjtcclxuICAgIGlmICghY29udGFpbmVyKSB7XHJcbiAgICAgIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICBjb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgY29udGFpbmVyLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcclxuICAgICAgY29udGFpbmVyLnN0eWxlLmxlZnQgPSAnLTk5OTlweCc7XHJcbiAgICAgIGNvbnRhaW5lci5zdHlsZS50b3AgPSAnLTk5OTlweCc7XHJcbiAgICAgIGNvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcclxuICAgICAgc2xvdC5fX2FyaWxXZWJDb21wb25lbnRIaWRkZW5Db250YWluZXIgPSBjb250YWluZXI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29udGFpbmVyO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9XHJcbiAgICAgIHRoaXMub3B0aW9ucyA/PyAodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhIGFzIFdlYkNvbXBvbmVudFdyYXBwZXJPcHRpb25zKTtcclxuXHJcbiAgICBpZiAoIW9wdGlvbnMpIHtcclxuICAgICAgY29uc29sZS53YXJuKCdXZWIgY29tcG9uZW50IG9wdGlvbnMgYnVsdW5hbWFkxLEnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEXEn2VyIGVsZW1lbnQgemF0ZW4gdmFyc2EgKHJldXNlIGR1cnVtdW5kYSksIHJlc3RvcmUgacWfbGVtaSBuZ0FmdGVyVmlld0luaXQndGUgeWFwxLFsYWNha1xyXG4gICAgaWYgKHRoaXMuZWxlbWVudCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgYXdhaXQgbG9hZFJlbW90ZU1vZHVsZShvcHRpb25zKTtcclxuXHJcbiAgICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQob3B0aW9ucy5lbGVtZW50TmFtZSk7XHJcblxyXG4gICAgICAvLyBUYWIgaXpvbGFzeW9udSBpw6dpbiB0YWIga2ltbGnEn2luaSBlbGVtZW50J2UgYXR0cmlidXRlIG9sYXJhayB5YXouIE1GRSBib290c3RyYXAudHNcclxuICAgICAgLy8gYGNvbm5lY3RlZENhbGxiYWNrYCd0ZSBidSBhdHRyaWJ1dGUndSBva3V5dXAga2VuZGluZSBhaXQgeWVuaSBiaXIgQW5ndWxhciBBcHBsaWNhdGlvblxyXG4gICAgICAvLyB5YXJhdMSxciDihpIgaGVyIHRhYiBrZW5kaSBJbmplY3RvciArIFJvdXRlcifEsW5hIHNhaGlwIG9sdXIuIFN1YnNjcmliZSBpbGUgc29ucmFraVxyXG4gICAgICAvLyBgX3RhYmAgZGXEn2nFn2ltbGVyaW5pIGRlIHlha2FsYSAoZmlyc3RDaGVja0ZvclJvdXRlIHJlcGxhY2VVcmwgc29ucmFzxLEpLlxyXG4gICAgICB0aGlzLnJvdXRlU3ViID0gdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xyXG4gICAgICAgIGNvbnN0IHRhYklkID0gKHBhcmFtc1snX3RhYiddIGFzIHN0cmluZyB8IHVuZGVmaW5lZCkgPz8gJyc7XHJcbiAgICAgICAgaWYgKHRhYklkICYmIHRoaXMuZWxlbWVudCAmJiB0aGlzLmVsZW1lbnQuZ2V0QXR0cmlidXRlKCdhcmlsLXRhYi1pZCcpICE9PSB0YWJJZCkge1xyXG4gICAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpbC10YWItaWQnLCB0YWJJZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMucG9wdWxhdGVQcm9wcygpO1xyXG4gICAgICB0aGlzLnNldHVwRXZlbnRzKCk7XHJcblxyXG4gICAgICBpZiAodGhpcy52Yz8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgIHRoaXMudmMubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdXZWIgY29tcG9uZW50IHnDvGtsZW5pcmtlbiBoYXRhOicsIGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIFZpZXcgaGF6xLFyIG9sZHXEn3VuZGEsIGXEn2VyIGVsZW1lbnQgdmFyc2EgKHJldXNlIGR1cnVtdW5kYSkgcmVzdG9yZSBldFxyXG4gICAgaWYgKHRoaXMuZWxlbWVudCkge1xyXG4gICAgICBjb25zb2xlLmxvZygnbmdBZnRlclZpZXdJbml0OiBFbGVtZW50IG1ldmN1dCwgcmVzdG9yZSBkZW5lbml5b3IuLi4nKTtcclxuXHJcbiAgICAgIC8vIFN0cmF0ZWd5IGBuZWVkc1Jlc3RvcmVgIGZsYWcnaSBzZXQgZXRtacWfc2U6IGVsZW1lbnQgaGlkZGVuIGNvbnRhaW5lcidkYW4gw6fEsWthcsSxbG3EscWfXHJcbiAgICAgIC8vIGFtYSB2aWV3IGhlbsO8eiBoYXrEsXIgb2xtYWTEscSfxLEgacOnaW4gdmlldydhIGVrbGVuZW1lbWnFny4gxZ5pbWRpIGVrbGUuXHJcbiAgICAgIGlmICh0aGlzLm5lZWRzUmVzdG9yZSkge1xyXG4gICAgICAgIHRoaXMubmVlZHNSZXN0b3JlID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMudmM/Lm5hdGl2ZUVsZW1lbnQgJiYgIXRoaXMudmMubmF0aXZlRWxlbWVudC5jb250YWlucyh0aGlzLmVsZW1lbnQpKSB7XHJcbiAgICAgICAgICB0aGlzLnZjLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KTtcclxuICAgICAgICAgIHRoaXMucG9wdWxhdGVQcm9wcygpO1xyXG4gICAgICAgICAgdGhpcy5wcm9wc1VwZGF0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ1dlYiBjb21wb25lbnQgZWxlbWVudCBjb21wb25lbnQgdmlld1xcJ2EgZWtsZW5kaSAobmdBZnRlclZpZXdJbml0KScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICghdGhpcy5wcm9wc1VwZGF0ZWQpIHtcclxuICAgICAgICAvLyBOb3JtYWwgcmVzdG9yZSBpxZ9sZW1pIChlxJ9lciBwcm9wcyBnw7xuY2VsbGVubWVtacWfc2UpXHJcbiAgICAgICAgdGhpcy5yZXN0b3JlRWxlbWVudCgpO1xyXG4gICAgICAgIHRoaXMucHJvcHNVcGRhdGVkID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBFbGVtZW50IHphdGVuIHZpZXcnZGEsIHNhZGVjZSBwcm9wcydsYXLEsSBnw7xuY2VsbGVcclxuICAgICAgICB0aGlzLnBvcHVsYXRlUHJvcHMoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAvLyBSb3V0ZSByZXVzZSBzdHJhdGVqaXNpIGt1bGxhbsSxbGTEscSfxLFuZGEsIGNvbXBvbmVudCBkZXN0cm95IGVkaWxtZXpcclxuICAgIC8vIFJvdXRlIHJldXNlIHN0cmF0ZWppc2kgc3RvcmUoKSBtZXRvZHVuZGEgZWxlbWVudCdpIGhpZGRlbiBjb250YWluZXInYSB0YcWfxLF5YWNhay5cclxuICAgIC8vIFlpbmUgZGUgZ2Vyw6dla3RlbiBkZXN0cm95IGVkaWxkacSfaW1peiBzZW5hcnlvbGFyZGEgKGZhcmtsxLEgcmVtb3RlLCB0YWIgY2xlYW51cCB2cy4pXHJcbiAgICAvLyBldmVudCBsaXN0ZW5lcidsYXLEsSArIHF1ZXJ5UGFyYW1zIHN1YnNjcmlwdGlvbiBzxLF6ZMSxcm1hbWFrIGnDp2luIGthbGTEsXLEsXLEsXouXHJcbiAgICB0aGlzLnRlYXJkb3duRXZlbnRzKCk7XHJcbiAgICB0aGlzLnJvdXRlU3ViPy51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5yb3V0ZVN1YiA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuaXNEZXN0cm95ZWQgPSB0cnVlO1xyXG4gIH1cclxufVxyXG4iXX0=
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXJldXNlLW91dGxldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2Jvb3QvY29uZmlnL2FwcHMvc3JjL2N1c3RvbS1yZXVzZS1vdXRsZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFJTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUVMLGdCQUFnQixHQUNqQixNQUFNLCtDQUErQyxDQUFDOzs7QUFXdkQsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBTyx1QkFBdUI7SUFxQmxDLFlBQW9CLEtBQXFCO1FBQXJCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBWmpDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQzVCLDZGQUE2RjtRQUM3RixxQ0FBcUM7UUFDN0IscUJBQWdCLEdBQW9ELEVBQUUsQ0FBQztRQUUvRSwwREFBMEQ7UUFDMUQsa0dBQWtHO1FBQ2xHLHlGQUF5RjtRQUN6RixtREFBbUQ7UUFDbkQsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsaUJBQVksR0FBRyxLQUFLLENBQUM7SUFFdUIsQ0FBQztJQUU3QyxRQUFRO1FBQ04sa0RBQWtEO1FBQ2xELHdHQUF3RztRQUN4RyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7WUFDdkUseUVBQXlFO1lBQ3pFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNSLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTztRQUU5QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFFekMscUZBQXFGO1FBQ3JGLG9EQUFvRDtRQUNwRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBZ0QsQ0FBQztRQUNyRSxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM5QixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUMxQixzRUFBc0U7UUFDdEUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU87UUFFekIsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO0lBRU8sY0FBYztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7WUFDM0IsT0FBTztRQUNULENBQUM7UUFDRCxLQUFLLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUM7WUFDNUMsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxhQUFhLEVBQUUsQ0FBQztZQUM1QixPQUFPLENBQUMsSUFBSSxDQUFDLHdEQUF3RCxDQUFDLENBQUM7WUFDdkUsc0VBQXNFO1lBQ3RFLE9BQU87UUFDVCxDQUFDO1FBRUQsb0NBQW9DO1FBQ3BDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRWxELElBQUksZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMzQyx1Q0FBdUM7WUFDdkMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDO1FBQ25GLENBQUM7YUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3pELG9FQUFvRTtZQUNwRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEQsQ0FBQztZQUNELElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUNuRCxDQUFDO2FBQU0sQ0FBQztZQUNOLG1EQUFtRDtZQUNuRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7SUFDSCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLFVBQXFGLENBQUM7UUFDbkcsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLGlDQUFpQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLFNBQVMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztZQUNqQyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7WUFDdEMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1lBQ2pDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQztZQUNoQyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7WUFDdEMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLGlDQUFpQyxHQUFHLFNBQVMsQ0FBQztRQUNyRCxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELEtBQUssQ0FBQyxrQkFBa0I7UUFDdEIsTUFBTSxPQUFPLEdBQ1gsSUFBSSxDQUFDLE9BQU8sSUFBSyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFtQyxDQUFDO1FBRTNFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0NBQWtDLENBQUMsQ0FBQztZQUNqRCxPQUFPO1FBQ1QsQ0FBQztRQUVELDBGQUEwRjtRQUMxRixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE1BQU0sZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUUzRCxxRkFBcUY7WUFDckYsd0ZBQXdGO1lBQ3hGLGtGQUFrRjtZQUNsRiwwRUFBMEU7WUFDMUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDMUQsTUFBTSxLQUFLLEdBQUksTUFBTSxDQUFDLE1BQU0sQ0FBd0IsSUFBSSxFQUFFLENBQUM7Z0JBQzNELElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUM7b0JBQ2hGLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDbEQsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUVuQixJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbEQsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxRCxDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYix3RUFBd0U7UUFDeEUsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO1lBRXJFLHNGQUFzRjtZQUN0RixxRUFBcUU7WUFDckUsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO2dCQUMxQixJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO29CQUM1RSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNoRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO29CQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLG1FQUFtRSxDQUFDLENBQUM7Z0JBQ25GLENBQUM7WUFDSCxDQUFDO2lCQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzlCLHNEQUFzRDtnQkFDdEQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUMzQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sb0RBQW9EO2dCQUNwRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULG9FQUFvRTtRQUNwRSxtRkFBbUY7UUFDbkYsc0ZBQXNGO1FBQ3RGLDhFQUE4RTtRQUM5RSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztRQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDOytHQTVNVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qiw2TEFDVCxVQUFVLGdFQUp6QixpQkFBaUI7OzRGQUdoQix1QkFBdUI7a0JBTm5DLFNBQVM7bUJBQUM7b0JBQ1QsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixRQUFRLEVBQUUsaUJBQWlCO2lCQUM1QjttRkFJQyxFQUFFO3NCQURELFNBQVM7dUJBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUcxQyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQge1xyXG4gIExvYWRSZW1vdGVNb2R1bGVPcHRpb25zLFxyXG4gIGxvYWRSZW1vdGVNb2R1bGUsXHJcbn0gZnJvbSAnQGFuZ3VsYXItYXJjaGl0ZWN0cy9tb2R1bGUtZmVkZXJhdGlvbi1ydW50aW1lJztcclxuXHJcbmV4cG9ydCB0eXBlIFdlYkNvbXBvbmVudFdyYXBwZXJPcHRpb25zID0gTG9hZFJlbW90ZU1vZHVsZU9wdGlvbnMgJiB7XHJcbiAgZWxlbWVudE5hbWU6IHN0cmluZztcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdtZnQtd2Mtd3JhcHBlcicsXHJcbiAgdGVtcGxhdGU6ICc8ZGl2ICN2Yz48L2Rpdj4nLFxyXG59KVxyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1jbGFzcy1zdWZmaXhcclxuZXhwb3J0IGNsYXNzIEFyaWxXZWJDb21wb25lbnRXcmFwcGVyIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZCgndmMnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHZjPzogRWxlbWVudFJlZjtcclxuXHJcbiAgQElucHV0KCkgb3B0aW9ucz86IFdlYkNvbXBvbmVudFdyYXBwZXJPcHRpb25zO1xyXG4gIEBJbnB1dCgpIHByb3BzPzogeyBbcHJvcDogc3RyaW5nXTogdW5rbm93biB9O1xyXG4gIEBJbnB1dCgpIGV2ZW50cz86IHsgW2V2ZW50OiBzdHJpbmddOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkIH07XHJcblxyXG4gIGVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcclxuICBwcml2YXRlIGlzRGVzdHJveWVkID0gZmFsc2U7XHJcbiAgLy8gc2V0dXBFdmVudHMgdGFyYWbEsW5kYW4gYmHEn2xhbmFuIGxpc3RlbmVyJ2xhcsSxIGl6bGVyaXog4oCUIG5nT25EZXN0cm95L3llbmlkZW4gYmluZCBzxLFyYXPEsW5kYVxyXG4gIC8vIGRvxJ9ydSDFn2VraWxkZSBrYWxkxLFyxLFsbWFsYXLEsSBpw6dpbi5cclxuICBwcml2YXRlIHJlZ2lzdGVyZWRFdmVudHM6IHsgbmFtZTogc3RyaW5nOyBoYW5kbGVyOiAoZTogRXZlbnQpID0+IHZvaWQgfVtdID0gW107XHJcbiAgcHJpdmF0ZSByb3V0ZVN1Yj86IHsgdW5zdWJzY3JpYmUoKTogdm9pZCB9O1xyXG4gIC8vIFJvdXRlIHJldXNlIHN0cmF0ZWppc2kgaWxlIHdyYXBwZXIgYXJhc8SxbmRha2kgc8O2emxlxZ9tZTpcclxuICAvLyAtIGBuZWVkc1Jlc3RvcmVgOiBzdHJhdGVneSByZXRyaWV2ZSBzxLFyYXPEsW5kYSBzZXQgZWRlcjsgbmdBZnRlclZpZXdJbml0IGVsZW1lbnQnaSB2aWV3J2EgZWtsZXIuXHJcbiAgLy8gLSBgcHJvcHNVcGRhdGVkYDogcmVzdG9yZSBzb25yYXPEsSBwb3B1bGF0ZVByb3BzIMOnYcSfcsSxc8SxbsSxbiBuZ09uQ2hhbmdlcyBpbGUgw6dha8SxxZ9tYXPEsW7EsVxyXG4gIC8vICAgZW5nZWxsZW1layBpw6dpbiBrdWxsYW7EsWzEsXIgKGlkZW1wb3RlbmN5IGZsYWcpLlxyXG4gIG5lZWRzUmVzdG9yZSA9IGZhbHNlO1xyXG4gIHByb3BzVXBkYXRlZCA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyBDb21wb25lbnQgdGVrcmFyIGVrbGVuZGnEn2luZGUgKHJldXNlIGR1cnVtdW5kYSlcclxuICAgIC8vIEVsZW1lbnQgcmVzdG9yZSBpxZ9sZW1pbmkgZGVuZSAodmlldyBoYXrEsXIgb2xtYXlhYmlsaXIsIG8gZHVydW1kYSBuZ0FmdGVyVmlld0luaXQndGUgdGVrcmFyIGRlbmVuZWNlaylcclxuICAgIGlmICh0aGlzLmVsZW1lbnQpIHtcclxuICAgICAgY29uc29sZS5sb2coJ1tBcmlsV0NdIG5nT25Jbml0OiBFbGVtZW50IG1ldmN1dCwgcmVzdG9yZSBkZW5lbml5b3IuLi4nKTtcclxuICAgICAgLy8gc2V0VGltZW91dCBpbGUgYmlyIHNvbnJha2kgdGljayd0ZSBkZW5lICh2aWV3IGhlbsO8eiBoYXrEsXIgb2xtYXlhYmlsaXIpXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVzdG9yZUVsZW1lbnQoKTtcclxuICAgICAgfSwgMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5lbGVtZW50IHx8IHRoaXMuaXNEZXN0cm95ZWQpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLnBvcHVsYXRlUHJvcHMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcG9wdWxhdGVQcm9wcygpIHtcclxuICAgIGlmICghdGhpcy5lbGVtZW50IHx8ICF0aGlzLnByb3BzKSByZXR1cm47XHJcblxyXG4gICAgLy8gQ3VzdG9tIGVsZW1lbnQnZSBkaW5hbWlrIHByb3Agc2V0IGVkaXlvcnV6OyBIVE1MRWxlbWVudCBidW51biBpw6dpbiBpbmRleCBzaWduYXR1cmVcclxuICAgIC8vIHRhxZ/EsW3EsXlvciwgYnUgecO8emRlbiBSZWNvcmQgY2FzdCdpIGlsZSB5YXrEsXlvcnV6LlxyXG4gICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5lbGVtZW50IGFzIEhUTUxFbGVtZW50ICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XHJcbiAgICBmb3IgKGNvbnN0IHByb3AgaW4gdGhpcy5wcm9wcykge1xyXG4gICAgICB0YXJnZXRbcHJvcF0gPSB0aGlzLnByb3BzW3Byb3BdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cEV2ZW50cygpIHtcclxuICAgIGlmICghdGhpcy5lbGVtZW50KSByZXR1cm47XHJcbiAgICAvLyDEsGRlbXBvdGVudDogw7ZuY2UgZXNraSBsaXN0ZW5lcidsYXLEsSBrYWxkxLFyLCBzb25yYSB5ZW5pbGVyaW5pIGJhxJ9sYS5cclxuICAgIHRoaXMudGVhcmRvd25FdmVudHMoKTtcclxuICAgIGlmICghdGhpcy5ldmVudHMpIHJldHVybjtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGV2ZW50IGluIHRoaXMuZXZlbnRzKSB7XHJcbiAgICAgIGNvbnN0IGhhbmRsZXIgPSB0aGlzLmV2ZW50c1tldmVudF07XHJcbiAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyKTtcclxuICAgICAgdGhpcy5yZWdpc3RlcmVkRXZlbnRzLnB1c2goeyBuYW1lOiBldmVudCwgaGFuZGxlciB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdGVhcmRvd25FdmVudHMoKSB7XHJcbiAgICBpZiAoIXRoaXMuZWxlbWVudCkge1xyXG4gICAgICB0aGlzLnJlZ2lzdGVyZWRFdmVudHMgPSBbXTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCB7IG5hbWUsIGhhbmRsZXIgfSBvZiB0aGlzLnJlZ2lzdGVyZWRFdmVudHMpIHtcclxuICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIobmFtZSwgaGFuZGxlcik7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlZ2lzdGVyZWRFdmVudHMgPSBbXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzdG9yZUVsZW1lbnQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZWxlbWVudCkge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ3Jlc3RvcmVFbGVtZW50OiBlbGVtZW50IHlvaycpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLnZjPy5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIGNvbnNvbGUud2FybigncmVzdG9yZUVsZW1lbnQ6IHZjLm5hdGl2ZUVsZW1lbnQgeW9rLCB0ZWtyYXIgZGVuZW5lY2VrJyk7XHJcbiAgICAgIC8vIFZpZXcgaGVuw7x6IGhhesSxciBkZcSfaWxzZSwgYmlyIHNvbnJha2kgbGlmZWN5Y2xlIGhvb2sndGEgdGVrcmFyIGRlbmVcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEhpZGRlbiBjb250YWluZXInZGFuIGVsZW1lbnQnaSBhbFxyXG4gICAgY29uc3QgaGlkZGVuQ29udGFpbmVyID0gdGhpcy5nZXRIaWRkZW5Db250YWluZXIoKTtcclxuICAgIFxyXG4gICAgaWYgKGhpZGRlbkNvbnRhaW5lci5jb250YWlucyh0aGlzLmVsZW1lbnQpKSB7XHJcbiAgICAgIC8vIEVsZW1lbnQgaGlkZGVuIGNvbnRhaW5lcidkYSwgZ2VyaSBhbFxyXG4gICAgICBoaWRkZW5Db250YWluZXIucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KTtcclxuICAgICAgdGhpcy52Yy5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCk7XHJcbiAgICAgIHRoaXMucG9wdWxhdGVQcm9wcygpO1xyXG4gICAgICBjb25zb2xlLmxvZygnV2ViIGNvbXBvbmVudCBoaWRkZW4gY29udGFpbmVyXFwnZGFuIGdlcmkgYWzEsW5kxLEgdmUgRE9NXFwnYSBla2xlbmRpJyk7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnZjLm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGhpcy5lbGVtZW50KSkge1xyXG4gICAgICAvLyBFbGVtZW50IGJhxZ9rYSBiaXIgeWVyZGV5c2UgdmV5YSBoacOnYmlyIHllcmRlIGRlxJ9pbHNlLCBkaXJla3QgZWtsZVxyXG4gICAgICBpZiAodGhpcy5lbGVtZW50LnBhcmVudE5vZGUpIHtcclxuICAgICAgICB0aGlzLmVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudmMubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpO1xyXG4gICAgICB0aGlzLnBvcHVsYXRlUHJvcHMoKTtcclxuICAgICAgY29uc29sZS5sb2coJ1dlYiBjb21wb25lbnQgRE9NXFwnYSBnZXJpIGVrbGVuZGknKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIEVsZW1lbnQgemF0ZW4gRE9NJ2RhLCBzYWRlY2UgcHJvcHMnbGFyxLEgZ8O8bmNlbGxlXHJcbiAgICAgIHRoaXMucG9wdWxhdGVQcm9wcygpO1xyXG4gICAgICBjb25zb2xlLmxvZygnV2ViIGNvbXBvbmVudCB6YXRlbiBET01cXCdkYSwgcHJvcHMgZ8O8bmNlbGxlbmRpJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEhpZGRlbkNvbnRhaW5lcigpOiBIVE1MRWxlbWVudCB7XHJcbiAgICBjb25zdCBzbG90ID0gZ2xvYmFsVGhpcyBhcyB0eXBlb2YgZ2xvYmFsVGhpcyAmIHsgX19hcmlsV2ViQ29tcG9uZW50SGlkZGVuQ29udGFpbmVyPzogSFRNTEVsZW1lbnQgfTtcclxuICAgIGxldCBjb250YWluZXIgPSBzbG90Ll9fYXJpbFdlYkNvbXBvbmVudEhpZGRlbkNvbnRhaW5lcjtcclxuICAgIGlmICghY29udGFpbmVyKSB7XHJcbiAgICAgIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICBjb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgY29udGFpbmVyLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcclxuICAgICAgY29udGFpbmVyLnN0eWxlLmxlZnQgPSAnLTk5OTlweCc7XHJcbiAgICAgIGNvbnRhaW5lci5zdHlsZS50b3AgPSAnLTk5OTlweCc7XHJcbiAgICAgIGNvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcclxuICAgICAgc2xvdC5fX2FyaWxXZWJDb21wb25lbnRIaWRkZW5Db250YWluZXIgPSBjb250YWluZXI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29udGFpbmVyO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9XHJcbiAgICAgIHRoaXMub3B0aW9ucyA/PyAodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhIGFzIFdlYkNvbXBvbmVudFdyYXBwZXJPcHRpb25zKTtcclxuXHJcbiAgICBpZiAoIW9wdGlvbnMpIHtcclxuICAgICAgY29uc29sZS53YXJuKCdXZWIgY29tcG9uZW50IG9wdGlvbnMgYnVsdW5hbWFkxLEnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEXEn2VyIGVsZW1lbnQgemF0ZW4gdmFyc2EgKHJldXNlIGR1cnVtdW5kYSksIHJlc3RvcmUgacWfbGVtaSBuZ0FmdGVyVmlld0luaXQndGUgeWFwxLFsYWNha1xyXG4gICAgaWYgKHRoaXMuZWxlbWVudCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgYXdhaXQgbG9hZFJlbW90ZU1vZHVsZShvcHRpb25zKTtcclxuXHJcbiAgICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQob3B0aW9ucy5lbGVtZW50TmFtZSk7XHJcblxyXG4gICAgICAvLyBUYWIgaXpvbGFzeW9udSBpw6dpbiB0YWIga2ltbGnEn2luaSBlbGVtZW50J2UgYXR0cmlidXRlIG9sYXJhayB5YXouIE1GRSBib290c3RyYXAudHNcclxuICAgICAgLy8gYGNvbm5lY3RlZENhbGxiYWNrYCd0ZSBidSBhdHRyaWJ1dGUndSBva3V5dXAga2VuZGluZSBhaXQgeWVuaSBiaXIgQW5ndWxhciBBcHBsaWNhdGlvblxyXG4gICAgICAvLyB5YXJhdMSxciDihpIgaGVyIHRhYiBrZW5kaSBJbmplY3RvciArIFJvdXRlcifEsW5hIHNhaGlwIG9sdXIuIFN1YnNjcmliZSBpbGUgc29ucmFraVxyXG4gICAgICAvLyBgX3RhYmAgZGXEn2nFn2ltbGVyaW5pIGRlIHlha2FsYSAoZmlyc3RDaGVja0ZvclJvdXRlIHJlcGxhY2VVcmwgc29ucmFzxLEpLlxyXG4gICAgICB0aGlzLnJvdXRlU3ViID0gdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xyXG4gICAgICAgIGNvbnN0IHRhYklkID0gKHBhcmFtc1snX3RhYiddIGFzIHN0cmluZyB8IHVuZGVmaW5lZCkgPz8gJyc7XHJcbiAgICAgICAgaWYgKHRhYklkICYmIHRoaXMuZWxlbWVudCAmJiB0aGlzLmVsZW1lbnQuZ2V0QXR0cmlidXRlKCdhcmlsLXRhYi1pZCcpICE9PSB0YWJJZCkge1xyXG4gICAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpbC10YWItaWQnLCB0YWJJZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMucG9wdWxhdGVQcm9wcygpO1xyXG4gICAgICB0aGlzLnNldHVwRXZlbnRzKCk7XHJcblxyXG4gICAgICBpZiAodGhpcy52Yz8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgIHRoaXMudmMubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdXZWIgY29tcG9uZW50IHnDvGtsZW5pcmtlbiBoYXRhOicsIGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIFZpZXcgaGF6xLFyIG9sZHXEn3VuZGEsIGXEn2VyIGVsZW1lbnQgdmFyc2EgKHJldXNlIGR1cnVtdW5kYSkgcmVzdG9yZSBldFxyXG4gICAgaWYgKHRoaXMuZWxlbWVudCkge1xyXG4gICAgICBjb25zb2xlLmxvZygnbmdBZnRlclZpZXdJbml0OiBFbGVtZW50IG1ldmN1dCwgcmVzdG9yZSBkZW5lbml5b3IuLi4nKTtcclxuXHJcbiAgICAgIC8vIFN0cmF0ZWd5IGBuZWVkc1Jlc3RvcmVgIGZsYWcnaSBzZXQgZXRtacWfc2U6IGVsZW1lbnQgaGlkZGVuIGNvbnRhaW5lcidkYW4gw6fEsWthcsSxbG3EscWfXHJcbiAgICAgIC8vIGFtYSB2aWV3IGhlbsO8eiBoYXrEsXIgb2xtYWTEscSfxLEgacOnaW4gdmlldydhIGVrbGVuZW1lbWnFny4gxZ5pbWRpIGVrbGUuXHJcbiAgICAgIGlmICh0aGlzLm5lZWRzUmVzdG9yZSkge1xyXG4gICAgICAgIHRoaXMubmVlZHNSZXN0b3JlID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMudmM/Lm5hdGl2ZUVsZW1lbnQgJiYgIXRoaXMudmMubmF0aXZlRWxlbWVudC5jb250YWlucyh0aGlzLmVsZW1lbnQpKSB7XHJcbiAgICAgICAgICB0aGlzLnZjLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KTtcclxuICAgICAgICAgIHRoaXMucG9wdWxhdGVQcm9wcygpO1xyXG4gICAgICAgICAgdGhpcy5wcm9wc1VwZGF0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ1dlYiBjb21wb25lbnQgZWxlbWVudCBjb21wb25lbnQgdmlld1xcJ2EgZWtsZW5kaSAobmdBZnRlclZpZXdJbml0KScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICghdGhpcy5wcm9wc1VwZGF0ZWQpIHtcclxuICAgICAgICAvLyBOb3JtYWwgcmVzdG9yZSBpxZ9sZW1pIChlxJ9lciBwcm9wcyBnw7xuY2VsbGVubWVtacWfc2UpXHJcbiAgICAgICAgdGhpcy5yZXN0b3JlRWxlbWVudCgpO1xyXG4gICAgICAgIHRoaXMucHJvcHNVcGRhdGVkID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBFbGVtZW50IHphdGVuIHZpZXcnZGEsIHNhZGVjZSBwcm9wcydsYXLEsSBnw7xuY2VsbGVcclxuICAgICAgICB0aGlzLnBvcHVsYXRlUHJvcHMoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAvLyBSb3V0ZSByZXVzZSBzdHJhdGVqaXNpIGt1bGxhbsSxbGTEscSfxLFuZGEsIGNvbXBvbmVudCBkZXN0cm95IGVkaWxtZXpcclxuICAgIC8vIFJvdXRlIHJldXNlIHN0cmF0ZWppc2kgc3RvcmUoKSBtZXRvZHVuZGEgZWxlbWVudCdpIGhpZGRlbiBjb250YWluZXInYSB0YcWfxLF5YWNhay5cclxuICAgIC8vIFlpbmUgZGUgZ2Vyw6dla3RlbiBkZXN0cm95IGVkaWxkacSfaW1peiBzZW5hcnlvbGFyZGEgKGZhcmtsxLEgcmVtb3RlLCB0YWIgY2xlYW51cCB2cy4pXHJcbiAgICAvLyBldmVudCBsaXN0ZW5lcidsYXLEsSArIHF1ZXJ5UGFyYW1zIHN1YnNjcmlwdGlvbiBzxLF6ZMSxcm1hbWFrIGnDp2luIGthbGTEsXLEsXLEsXouXHJcbiAgICB0aGlzLnRlYXJkb3duRXZlbnRzKCk7XHJcbiAgICB0aGlzLnJvdXRlU3ViPy51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5yb3V0ZVN1YiA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuaXNEZXN0cm95ZWQgPSB0cnVlO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -598,13 +598,13 @@ export class CustomRouteReuseStrategy {
598
598
  console.log(`[Strategy] shouldReuseRoute normal → ${shouldReuse}. future="${futureKey}"(${futureComp}) curr="${currKey}"(${currComp})`);
599
599
  return shouldReuse;
600
600
  }
601
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CustomRouteReuseStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
602
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CustomRouteReuseStrategy, providedIn: 'root' }); }
601
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomRouteReuseStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
602
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomRouteReuseStrategy, providedIn: 'root' }); }
603
603
  }
604
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CustomRouteReuseStrategy, decorators: [{
604
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomRouteReuseStrategy, decorators: [{
605
605
  type: Injectable,
606
606
  args: [{
607
607
  providedIn: 'root'
608
608
  }]
609
609
  }], ctorParameters: () => [] });
610
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXJvdXRlLXJldXNlLXN0cmF0ZWd5LmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9ib290L2NvbmZpZy9hcHBzL3NyYy9jdXN0b20tcm91dGUtcmV1c2Utc3RyYXRlZ3kuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixVQUFVLEVBQWMsVUFBVSxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUloRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUE2QjFEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Q0c7QUFJSCxNQUFNLE9BQU8sd0JBQXdCO0lBV3BDO1FBVkEsc0JBQWlCLEdBQXNCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2pFLGlCQUFZLEdBQXdDLEVBQUUsQ0FBQztRQUV2RDs7OztXQUlHO1FBQ0ssdUJBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQTRDLENBQUM7UUFHcEYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2hGLElBQUksQ0FBQyxHQUFHO2dCQUFFLE9BQU87WUFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsR0FBRyxpQkFBaUIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFNUIscUZBQXFGO1lBQ3JGLHlGQUF5RjtZQUN6RixtRkFBbUY7WUFD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QUksTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLElBQUksTUFBTSxDQUFDO1FBQzNGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxNQUFNLENBQUM7UUFDckYsT0FBTyxDQUFDLEdBQUcsQ0FDVix3Q0FBd0MsV0FBVyxhQUFhLFNBQVMsS0FBSyxVQUFVLFdBQVcsT0FBTyxLQUFLLFFBQVEsR0FBRyxDQUMxSCxDQUFDO1FBQ0YsT0FBTyxXQUFXLENBQUM7SUFDcEIsQ0FBQzs4R0ExakJXLHdCQUF3QjtrSEFBeEIsd0JBQXdCLGNBRnhCLE1BQU07OzJGQUVOLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYsIERlc3Ryb3lSZWYsIEVsZW1lbnRSZWYsIEluamVjdGFibGUsIE9uRGVzdHJveSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgRGV0YWNoZWRSb3V0ZUhhbmRsZSwgUm91dGVSZXVzZVN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IFBsdWdpbkNvbmZpZyB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFJvdXRlQ2xvc2VTZXJ2aWNlIH0gZnJvbSAnLi9yb3V0ZS1jbG9zZS5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBBbmd1bGFyIFJvdXRlciBgRGV0YWNoZWRSb3V0ZUhhbmRsZWAnxLEgcmVzbWkgb2xhcmFrIG9wYXF1ZSAoYHt9YCkgYmlyIHR5cGUuXHJcbiAqIEludGVybmFsIHNoYXBlJ2kgcHVibGljIEFQSSdkYSB5b2ssIGFtYSBiaXogcHJlc2VydmUvcmVzdG9yZSBpw6dpbiBjb21wb25lbnRSZWYnZVxyXG4gKiBlcmnFn21lbWl6IGdlcmVraXlvci4gQnUgecO8emRlbiBpbnRlcm5hbCB5YXDEsXnEsSBtaW5pbWFsIMWfZWtpbGRlIG1vZGVsbGl5b3J1ei5cclxuICovXHJcbnR5cGUgSW50ZXJuYWxEZXRhY2hlZFJvdXRlSGFuZGxlID0gRGV0YWNoZWRSb3V0ZUhhbmRsZSAmIHtcclxuXHRjb21wb25lbnRSZWY/OiBDb21wb25lbnRSZWY8dW5rbm93bj47XHJcbn07XHJcblxyXG4vKipcclxuICogQXJpbFdlYkNvbXBvbmVudFdyYXBwZXIgaW5zdGFuY2UnxLFuZGEgc3RyYXRlZ3knbmluIGfDtnpsZXllY2XEn2kgYWxhbmxhci5cclxuICogV3JhcHBlcidhIGRvxJ9ydWRhbiBiYcSfxLFtbMSxIG9sbWFtYWsgacOnaW4gZHVjay10eXBpbmcgaWxlIG1pbmltYWwgaW50ZXJmYWNlLlxyXG4gKiBgbmVlZHNSZXN0b3JlYCB2ZSBgcHJvcHNVcGRhdGVkYCBiYXlyYWtsYXLEsSB3cmFwcGVyIGlsZSBzdHJhdGVneSBhcmFzxLFuZGFraSBzw7Z6bGXFn21lOlxyXG4gKiBzdHJhdGVneSBgcmV0cmlldmVgIHPEsXJhc8SxbmRhIHNldCBlZGVyLCB3cmFwcGVyIGBuZ0FmdGVyVmlld0luaXRgJ3RlIHTDvGtldGlyLlxyXG4gKi9cclxudHlwZSBXcmFwcGVySW5zdGFuY2UgPSB7XHJcblx0ZWxlbWVudD86IEhUTUxFbGVtZW50O1xyXG5cdHZjPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcblx0cHJvcHNVcGRhdGVkPzogYm9vbGVhbjtcclxuXHRuZWVkc1Jlc3RvcmU/OiBib29sZWFuO1xyXG59O1xyXG5cclxuaW50ZXJmYWNlIFByZXNlcnZlZEN1c3RvbUVsIHtcclxuXHRlbDogSFRNTEVsZW1lbnQ7XHJcblx0cGxhY2Vob2xkZXI6IENvbW1lbnQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUYWItYmF6bMSxIG5hdmlnYXRpb24gacOnaW4gY3VzdG9tIGBSb3V0ZVJldXNlU3RyYXRlZ3lgLlxyXG4gKlxyXG4gKiAjIyBUYWIgaXpvbGFzeW9udSAoYF90YWJgIHF1ZXJ5IHBhcmFtKVxyXG4gKiBgTmF2U2VydmljZWAgaGVyIHRhYidhIHVuaXF1ZSBgdGFiSWRgIMO8cmV0aXIgdmUgVVJMJ2UgYD9fdGFiPTx0YWJJZD5gIHF1ZXJ5IHBhcmFtXHJcbiAqIGVrbGVyLiBTdHJhdGVneSBidSBwYXJhbSfEsSByb3V0ZSBrZXknaW4gcGFyw6dhc8SxIHlhcGFyOlxyXG4gKiAgLSBNYXRjaGVyICh3ZWIgY29tcG9uZW50KSByb3V0ZSdsYXI6IGBtZmU6JHtyZW1vdGVOYW1lfToke3RhYklkfWBcclxuICogIC0gTm9ybWFsIHJvdXRlJ2xhcjogYHBhdGhGcm9tUm9vdGAgKyB0w7xtIHF1ZXJ5UGFyYW1zICh6YXRlbiBgX3RhYmAgZGFoaWwpXHJcbiAqXHJcbiAqIFNvbnXDpzogYXluxLEgc2F5ZmFuxLFuIGlraSB0YWInaSBgc3RvcmVkUm91dGVzYCDDvHplcmluZGUgZmFya2zEsSBzbG90J2xhcmEgeWF6xLFsxLFyXHJcbiAqIOKGkiBiYcSfxLFtc8SxeiBjb21wb25lbnRSZWYnbGVyLCBiYcSfxLFtc8SxeiBzdGF0ZS4gYHNob3VsZFJldXNlUm91dGVgIG1hdGNoZXIga2FyxZ/EsWxhxZ90xLFybWFzxLFcclxuICogYHRhYklkYCBmYXJrxLFuxLEgZGEgZGlra2F0ZSBhbMSxciDigJQgdGFiIGRlxJ9pxZ9pbWluZGUgZnJlc2ggY29tcG9uZW50IG9sdcWfdXIuXHJcbiAqXHJcbiAqICMjIE1pbWFyaTogaWtpIGJhxJ/EsW1zxLF6IGluc3RhbmNlXHJcbiAqIEJ1IHN0cmF0ZWd5IGhlbSBgYXJpbC9ib290L2hvc3Qvc3JjL2Jvb3RzdHJhcC50c2AndGUgaGVtIGhlciBNRkUgcmVtb3RlJ3VudW5cclxuICogYGFyaWwvYm9vdC9tZmUvc3JjL2Jvb3RzdHJhcC50c2AnaW5kZSBwcm92aWRlciBvbGFyYWsgdmVyaWxpeW9yLiBDbGFzc1xyXG4gKiBgcHJvdmlkZWRJbjogJ3Jvb3QnYCBvbGR1xJ91IGnDp2luICoqaGVyIHJvb3QgaW5qZWN0b3InZGEgQVlSSSBpbnN0YW5jZSoqIHlhxZ9hci5cclxuICogxLBraSBpbnN0YW5jZSBiYcSfxLFtc8SxeiBgc3RvcmVkUm91dGVzYCBtYXAnaSB0dXRhciB2ZSBiaXJiaXJpbmRlbiBoYWJlcnNpemRpcjpcclxuICpcclxuICogLSAqKkhvc3QgaW5zdGFuY2UqKjogbWF0Y2hlciByb3V0ZSdsYXLEsSB5w7ZuZXRpcjsga2V5IGBtZmU6JHtyZW1vdGVOYW1lfToke3RhYklkfWAuXHJcbiAqICAgVGFiIGthcGFuxLFwIGBtZmU6d2RtOmFiYzEyM2Agc2lsaW5kacSfaW5kZSBlZmZlY3QgcmVtb3RlJ2EgYWl0IGAjMC93ZG0vLi4uYFxyXG4gKiAgIHByZWZpeCdsaSBWRSBgX3RhYj1hYmMxMjNgIGnDp2VyZW4gY2hpbGQga2V5J2xlcmkgZGUgdGVtaXpsZXIuXHJcbiAqIC0gKipNRkUgaW5zdGFuY2UqKiAoaGVyIHJlbW90ZSd1biBrZW5kaSBpw6dpbmRlKTogbm9ybWFsIHJvdXRlJ2xhciBpw6dpbiDDp2FsxLHFn8Sxci5cclxuICogICBRdWVyeSBwYXJhbXMgemF0ZW4gYGdldFJvdXRlS2V5YCDDp8Sxa3TEsXPEsW5hIGRhaGlsIG9sZHXEn3UgacOnaW4gdGFiIGl6b2xhc3lvbnVcclxuICogICBkb8SfYWwgb2xhcmFrIGdlbGlyIOKAlCBlayDDtnplbCBkYXZyYW7EscWfIGdlcmVrbWV6LlxyXG4gKlxyXG4gKiAjIyBQbHVnaW4gY3VzdG9tIGVsZW1lbnQgcHJlc2VydmF0aW9uXHJcbiAqIGBwcmVzZXJ2ZUN1c3RvbUVsZW1lbnRzSW5UcmVlYCBkZXRhY2hlZCB2aWV3J2Rha2kgYDxtZC1zZWFyY2g+YCBnaWJpIGN1c3RvbVxyXG4gKiBlbGVtZW50J2xlcmkgaGlkZGVuIGNvbnRhaW5lcidhIHRhxZ/EsXIg4oCUIGVsZW1lbnQgZG9jdW1lbnQndGFuIGF5csSxbG1heiwgQW5ndWxhclxyXG4gKiBFbGVtZW50cyBgZGlzY29ubmVjdGVkQ2FsbGJhY2tgIDEwbXMgZGVzdHJveSB0aW1lcifEsSB0ZXRpa2xlbm1leiwgcGx1Z2luXHJcbiAqIGNvbXBvbmVudFJlZidpIHZlIGRhaGlsaSBzdGF0ZSdpIChmb3JtIGlucHV0LCBzZWFyY2ggc29udcOnbGFyxLEpIGtvcnVudXIuXHJcbiAqXHJcbiAqICMjIEJpbGluZW4gc8SxbsSxcmxhbWFsYXJcclxuICogLSBgc2hvdWxkRGV0YWNoYCBtYXRjaGVyIHJvdXRlJ2xhciBpw6dpbiB0YWJJZCB5b2trZW4gZmFsc2UgZMO2bmVyICh0YWJzxLF6IG9ycGhhblxyXG4gKiAgIGhhbmRsZSBvbHXFn21hc8SxbiksIGRpxJ9lciBkdXJ1bWxhcmRhIGB0cnVlYCDigJQgdMO8bSBkZXRhY2hlZCByb3V0ZSdsYXIgY2FjaGUnbGVuaXIuXHJcbiAqICAgTWVtb3J5IGxlYWsnaSBzxLFuxLFybGFtYWsgacOnaW4gYE5hdlNlcnZpY2VgIHRhYiBzYXnEsXPEsW7EsSBgTUFYX1RBQlNgIGlsZSBrxLFzxLF0bGFyXHJcbiAqICAgdmUgc29uIHRhYiBrYXBhdMSxbGTEscSfxLFuZGEgZWZmZWN0IHJlbW90ZSd1biB0w7xtIGNoaWxkIGtleSdsZXJpbmkgdGVtaXpsZXIuIFlpbmUgZGVcclxuICogICB0YWIgacOnaW5kZSBhw6fEsWxhbiBkZXRhaWwvZWRpdCBnaWJpIHBhcmFtZXRyZWxpIGFsdCBzYXlmYWxhcsSxbiBoYW5kbGUnbGFyxLEsIHBhcmVudFxyXG4gKiAgIHRhYiBrYXBhbmFuYSBrYWRhciBzdG9yZWRSb3V0ZXMndGEga2FsxLFyLlxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VzdG9tUm91dGVSZXVzZVN0cmF0ZWd5IGltcGxlbWVudHMgUm91dGVSZXVzZVN0cmF0ZWd5LCBPbkRlc3Ryb3kge1xyXG5cdHJvdXRlQ2xvc2VTZXJ2aWNlOiBSb3V0ZUNsb3NlU2VydmljZSA9IGluamVjdChSb3V0ZUNsb3NlU2VydmljZSk7XHJcblx0c3RvcmVkUm91dGVzOiBSZWNvcmQ8c3RyaW5nLCBEZXRhY2hlZFJvdXRlSGFuZGxlPiA9IHt9O1xyXG5cclxuXHQvKipcclxuXHQgKiBgKGRldGFjaGVkVHJlZSBhcyBhbnkpLl9fYXJpbFByZXNlcnZlZEN1c3RvbUVscyA9IFsuLi5dYCBydW50aW1lIHByb3BlcnR5XHJcblx0ICogZWtsZW1layB5ZXJpbmUgaGFuZGxlJ8SxIGtleSBvbGFyYWsga3VsbGFuYW4gYmlyIFdlYWtNYXAgdHV0dXlvcnV6IOKAlFxyXG5cdCAqIHR5cGUtc2FmZSB2ZSBoYW5kbGUgR0MneWUgdcSfcmFkxLHEn8SxbmRhIGJlbGxlayBvdG9tYXRpayB0ZW1pemxlbmlyLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgcHJlc2VydmVkQ3VzdG9tRWxzID0gbmV3IFdlYWtNYXA8RGV0YWNoZWRSb3V0ZUhhbmRsZSwgUHJlc2VydmVkQ3VzdG9tRWxbXT4oKTtcclxuXHJcblx0Y29uc3RydWN0b3IoKSB7XHJcblx0XHR0aGlzLnJvdXRlQ2xvc2VTZXJ2aWNlLmRlbGV0ZVJvdXRlJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKGtleSkgPT4ge1xyXG5cdFx0XHRpZiAoIWtleSkgcmV0dXJuO1xyXG5cdFx0XHRjb25zb2xlLmxvZyhgW1N0cmF0ZWd5XSBjbGVhbnVwIHRldGlrbGVuZGkga2V5PVwiJHtrZXl9XCIgc3RvcmVkS2V5cz1bJHtPYmplY3Qua2V5cyh0aGlzLnN0b3JlZFJvdXRlcykuam9pbignLCcpfV1gKTtcclxuXHRcdFx0dGhpcy5wcm9jZXNzQ2xlYW51cEtleShrZXkpO1xyXG5cclxuXHRcdFx0Ly8gQ3Jvc3MtaW5qZWN0b3IgeWF5xLFuOiBgUm91dGVDbG9zZVNlcnZpY2VgIGBwcm92aWRlZEluOiAncm9vdCdgIG9sZHXEn3UgacOnaW4gaG9zdCB2ZVxyXG5cdFx0XHQvLyBoZXIgTUZFIHJlbW90ZSd1bmRhIEFZUkkgaW5zdGFuY2UgeWHFn2FyLiBIb3N0J3RhbiB0ZXRpa2xlbmVuIGNsZWFudXAgTUZFIHN0cmF0ZWd5J3NpbmlcclxuXHRcdFx0Ly8gb3RvbWF0aWsgdXlhbmTEsXJtYXouIFdpbmRvdyBldmVudCBpbGUgc2lueWFsIHlhecSxbmxhecSxcCBNRkUgc3RyYXRlZ3knc2luaW4ga2VuZGlcclxuXHRcdFx0Ly8gYHN0b3JlZFJvdXRlc2AndW51IHRlbWl6bGVtZXNpbmkgc2HEn2zEsXlvcnV6IChha3NpIHRha2RpcmRlIE1GRSdkZSBoaWRkZW4gY29udGFpbmVyJ2FcclxuXHRcdFx0Ly8gdGHFn8Sxbm3EscWfIHBsdWdpbiBlbGVtZW50J2xlcmkgb3JwaGFuIGthbMSxcikuXHJcblx0XHRcdGlmIChrZXkuc3RhcnRzV2l0aCgnbWZlOicpKSB7XHJcblx0XHRcdFx0Y29uc3QgcGFyc2VkID0gdGhpcy5wYXJzZU1hdGNoZXJLZXkoa2V5KTtcclxuXHRcdFx0XHRpZiAocGFyc2VkKSB7XHJcblx0XHRcdFx0XHR3aW5kb3cuZGlzcGF0Y2hFdmVudChcclxuXHRcdFx0XHRcdFx0bmV3IEN1c3RvbUV2ZW50KCdhcmlsOnJlbW90ZS1jbGVhbnVwJywge1xyXG5cdFx0XHRcdFx0XHRcdGRldGFpbDogeyByZW1vdGVOYW1lOiBwYXJzZWQucmVtb3RlTmFtZSwgdGFiSWQ6IHBhcnNlZC50YWJJZCB9XHJcblx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0Ly8gS2FyxZ/EsSB5w7ZuZGUgKGNyb3NzLWluamVjdG9yKTogaG9zdCBzdHJhdGVneSduaW4geWF5xLFubGFkxLHEn8SxIGBhcmlsOnJlbW90ZS1jbGVhbnVwYFxyXG5cdFx0Ly8gZXZlbnQnaW5pIGhlciBNRkUgc3RyYXRlZ3kgaW5zdGFuY2UnxLEgeWFrYWxhciwga2VuZGkgYHN0b3JlZFJvdXRlc2AndW5kYWtpIG8gcmVtb3RlJ2FcclxuXHRcdC8vICh2ZSB2YXJzYSBvIHRhYklkJ3llKSBhaXQga2V5J2xlcmkgdGVtaXpsZXIuIEhvc3Qgc3RyYXRlZ3kgZGUgYnUgbGlzdGVuZXInYSBzYWhpcFxyXG5cdFx0Ly8gYW1hIGtlbmRpIGAjMC8ke3JlbW90ZU5hbWV9Ly4uLmAga2V5J2xlcmkgb2xtYWTEscSfxLEgacOnaW4gbm8tb3Agw6dhbMSxxZ/EsXIgKGfDvHZlbmxpKS5cclxuXHRcdGNvbnN0IGNsZWFudXBIYW5kbGVyID0gKGU6IEV2ZW50KTogdm9pZCA9PiB7XHJcblx0XHRcdGNvbnN0IGRldGFpbCA9IChlIGFzIEN1c3RvbUV2ZW50PHsgcmVtb3RlTmFtZT86IHN0cmluZzsgdGFiSWQ/OiBzdHJpbmcgfCBudWxsIH0+KS5kZXRhaWw7XHJcblx0XHRcdGNvbnN0IHJlbW90ZU5hbWUgPSBkZXRhaWw/LnJlbW90ZU5hbWU7XHJcblx0XHRcdGlmICghcmVtb3RlTmFtZSkgcmV0dXJuO1xyXG5cdFx0XHRjb25zdCB0YWJJZCA9IGRldGFpbD8udGFiSWQgPz8gbnVsbDtcclxuXHRcdFx0Y29uc3QgcHJlZml4ID0gYCMwLyR7cmVtb3RlTmFtZX1gO1xyXG5cdFx0XHRjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5zdG9yZWRSb3V0ZXMpLmZpbHRlcigoaykgPT4ge1xyXG5cdFx0XHRcdGlmICghay5zdGFydHNXaXRoKHByZWZpeCkpIHJldHVybiBmYWxzZTtcclxuXHRcdFx0XHQvLyB0YWJJZCB2ZXJpbGRpeXNlIFNBREVDRSBvIHRhYidhIGFpdCBjaGlsZCBoYW5kbGUnbGFyxLEgdGVtaXpsZS4gQWtzaSB0YWtkaXJkZVxyXG5cdFx0XHRcdC8vIGF5bsSxIHJlbW90ZSd1biBiYcWfa2EgdGFiJ2xlcmluaW4gc3RhdGUnaSBkZSB5YW5sxLHFn2zEsWtsYSBzaWxpbmlyLlxyXG5cdFx0XHRcdGlmICh0YWJJZCAmJiAhay5pbmNsdWRlcyhgX3RhYj0ke3RhYklkfWApKSByZXR1cm4gZmFsc2U7XHJcblx0XHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHRcdH0pO1xyXG5cdFx0XHRpZiAoIWtleXMubGVuZ3RoKSByZXR1cm47XHJcblx0XHRcdGNvbnNvbGUubG9nKGBbU3RyYXRlZ3ldIGNyb3NzLWluamVjdG9yIGNsZWFudXAgcmVtb3RlTmFtZT1cIiR7cmVtb3RlTmFtZX1cIiB0YWJJZD1cIiR7dGFiSWQgPz8gJyonfVwiIGtleXM9WyR7a2V5cy5qb2luKCcsJyl9XWApO1xyXG5cdFx0XHRmb3IgKGNvbnN0IGsgb2Yga2V5cykge1xyXG5cdFx0XHRcdHRoaXMuY2xlYW51cFN0b3JlZEhhbmRsZSh0aGlzLnN0b3JlZFJvdXRlc1trXSk7XHJcblx0XHRcdFx0ZGVsZXRlIHRoaXMuc3RvcmVkUm91dGVzW2tdO1xyXG5cdFx0XHR9XHJcblx0XHR9O1xyXG5cdFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2FyaWw6cmVtb3RlLWNsZWFudXAnLCBjbGVhbnVwSGFuZGxlcik7XHJcblx0XHQvLyBTdHJhdGVneSBgcHJvdmlkZWRJbjogJ3Jvb3QnYCDihpIgcm9vdCBpbmplY3RvciBkZXN0cm95IGVkaWxkacSfaW5kZSBsaXN0ZW5lcifEsSBrYWxkxLFyLlxyXG5cdFx0Ly8gUHJhdGlrdGUgdXp1biDDtm3DvHJsw7wgYW1hIHRlc3Qgb3J0YW3EsSB2ZSBnZWxlY2VrdGVraSBpZnJhbWUgdmIuIG11bHRpLXdpbmRvd1xyXG5cdFx0Ly8gc2VuYXJ5b2xhcmRhIG9ycGhhbiBsaXN0ZW5lciBixLFyYWttYW1hayBpw6dpbiBkZWZlbnNpdmUuXHJcblx0XHRpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdhcmlsOnJlbW90ZS1jbGVhbnVwJywgY2xlYW51cEhhbmRsZXIpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEluamVjdG9yIGRlc3Ryb3kgZWRpbGRpxJ9pbmRlIOKAlCBoaWJyaXQgbW9kZGEgaGVyIHRhYifEsW4gY2hpbGQgYEVudmlyb25tZW50SW5qZWN0b3JgJ8SxIHRhYlxyXG5cdCAqIGthcGFuxLFuY2EgYGRlc3Ryb3koKWAgZWRpbGlyOyBidSBzdHJhdGVneSBgcHJvdmlkZWRJbjoncm9vdCdgIG9sZHXEn3VuZGFuIGNoaWxkIGluamVjdG9yJ2RhXHJcblx0ICogKHJvb3Qtc2NvcGUpIG1hdGVyaWFsaXplIG9sbXXFnyBpbnN0YW5jZSBkYSB5xLFrxLFsxLFyIOKAlCBgc3RvcmVkUm91dGVzYCd0YSBrYWxhbiBUw5xNIGRldGFjaGVkXHJcblx0ICogaGFuZGxlJ2xhcsSxIHRlbWl6bGVyLiBBa3NpIGhhbGRlIGBwcmVzZXJ2ZUN1c3RvbUVsZW1lbnRzSW5UcmVlYCBpbGUgaGlkZGVuIGNvbnRhaW5lcidhXHJcblx0ICogdGHFn8Sxbm3EscWfIHBsdWdpbiBjdXN0b20gZWxlbWVudCdsZXJpICjDtnJuLiBgPG1kLXNlYXJjaD5gKSBvcnBoYW4ga2FsxLFyIChtZW1vcnkgbGVhayk6IE1GRVxyXG5cdCAqIGludGVybmFsIHJvdXRlIGtleSdsZXJpIGBfdGFiYCB0YcWfxLFtYWTEscSfxLEgacOnaW4gYGFyaWw6cmVtb3RlLWNsZWFudXBgIGNyb3NzLWluamVjdG9yIHRlbWl6bGnEn2lcclxuXHQgKiBvbmxhcmEgdWxhxZ9hbWF6LiBJbmplY3Rvci1kZXN0cm95IGJhemzEsSBidSBzw7xww7xybWUgZ2FyYW50aWxpIHZlIGlkZW1wb3RlbnR0aXIuXHJcblx0ICovXHJcblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcblx0XHRjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5zdG9yZWRSb3V0ZXMpO1xyXG5cdFx0aWYgKGtleXMubGVuZ3RoKSBjb25zb2xlLmxvZyhgW1N0cmF0ZWd5XSBuZ09uRGVzdHJveSDihpIgJHtrZXlzLmxlbmd0aH0gc3RvcmVkIGhhbmRsZSB0ZW1pemxlbml5b3IgKHRhYiBrYXBhbmTEsSlgKTtcclxuXHRcdGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcclxuXHRcdFx0dGhpcy5jbGVhbnVwU3RvcmVkSGFuZGxlKHRoaXMuc3RvcmVkUm91dGVzW2tleV0pO1xyXG5cdFx0XHRkZWxldGUgdGhpcy5zdG9yZWRSb3V0ZXNba2V5XTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFZlcmlsZW4ga2V5IGnDp2luIGRpcmVjdCArIGNoaWxkIGNsZWFudXAgdXlndWxhci4gRWZmZWN0IGnDp2luZGVuIGF5csSxxZ90xLFyxLFsbcSxxZ8gaGVscGVyLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgcHJvY2Vzc0NsZWFudXBLZXkoa2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuXHRcdC8vIERvxJ9ydWRhbiBlxZ9sZcWfZW4ga2V5IHZhcnNhIG9udSBzaWwuXHJcblx0XHRpZiAodGhpcy5zdG9yZWRSb3V0ZXNba2V5XSkge1xyXG5cdFx0XHRjb25zb2xlLmxvZyhgW1N0cmF0ZWd5XSBjbGVhbnVwIOKGkiBkaXJlY3QgbWF0Y2ggXCIke2tleX1cImApO1xyXG5cdFx0XHR0aGlzLmNsZWFudXBTdG9yZWRIYW5kbGUodGhpcy5zdG9yZWRSb3V0ZXNba2V5XSk7XHJcblx0XHRcdGRlbGV0ZSB0aGlzLnN0b3JlZFJvdXRlc1trZXldO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIE1hdGNoZXIga2V5IHNpbGluZGnEn2luZGUgKGBtZmU6d2RtOmFiY2AgZ2liaSkgbyByZW1vdGUnYSBhaXQg4oCUIHZhcnNhIG8gdGFiJ2EgYWl0IOKAlFxyXG5cdFx0Ly8gaW50ZXJuYWwgcm91dGUgaGFuZGxlJ2xhcsSxbsSxIGRhIHRlbWl6bGUuIENvbnZlbnRpb246IG1hdGNoZXIga2V5XHJcblx0XHQvLyBgbWZlOiR7cmVtb3RlTmFtZX1gIHZleWEgYG1mZToke3JlbW90ZU5hbWV9OiR7dGFiSWR9YCwgbm9ybWFsIGtleSdsZXJcclxuXHRcdC8vIGAjMC8ke3JlbW90ZU5hbWV9Ly4uLj8uLi4mX3RhYj0ke3RhYklkfWAgZm9ybWF0xLFuZGEuXHJcblx0XHRpZiAoa2V5LnN0YXJ0c1dpdGgoJ21mZTonKSkge1xyXG5cdFx0XHRjb25zdCBwYXJzZWQgPSB0aGlzLnBhcnNlTWF0Y2hlcktleShrZXkpO1xyXG5cdFx0XHRpZiAoIXBhcnNlZCkgcmV0dXJuO1xyXG5cdFx0XHRjb25zdCB7IHJlbW90ZU5hbWUsIHRhYklkIH0gPSBwYXJzZWQ7XHJcblx0XHRcdGNvbnN0IHByZWZpeCA9IGAjMC8ke3JlbW90ZU5hbWV9YDtcclxuXHRcdFx0Zm9yIChjb25zdCBrIG9mIE9iamVjdC5rZXlzKHRoaXMuc3RvcmVkUm91dGVzKSkge1xyXG5cdFx0XHRcdGlmICghay5zdGFydHNXaXRoKHByZWZpeCkpIGNvbnRpbnVlO1xyXG5cdFx0XHRcdC8vIHRhYklkIHZlcmlsZGl5c2Ugc2FkZWNlIG8gdGFiJ2EgYWl0IGNoaWxkIGhhbmRsZSdsYXLEsSB0ZW1pemxlXHJcblx0XHRcdFx0aWYgKHRhYklkICYmICFrLmluY2x1ZGVzKGBfdGFiPSR7dGFiSWR9YCkpIGNvbnRpbnVlO1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKGBbU3RyYXRlZ3ldIGNsZWFudXAg4oaSIGNoaWxkIG1hdGNoIFwiJHtrfVwiYCk7XHJcblx0XHRcdFx0dGhpcy5jbGVhbnVwU3RvcmVkSGFuZGxlKHRoaXMuc3RvcmVkUm91dGVzW2tdKTtcclxuXHRcdFx0XHRkZWxldGUgdGhpcy5zdG9yZWRSb3V0ZXNba107XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIGBtZmU6JHtyZW1vdGVOYW1lfWAgdmV5YSBgbWZlOiR7cmVtb3RlTmFtZX06JHt0YWJJZH1gIGZvcm1hdMSxbmRha2kgbWF0Y2hlciBrZXknaSBwYXJzZSBlZGVyLlxyXG5cdCAqIHRhYklkIHlva3NhIGBudWxsYCBkw7ZuZXIgKGdlcml5ZSBkw7Zuw7xrIHV5dW1sdWx1azogbGVnYWN5IMOnYcSfcsSxbGFyIHRhYklkIHZlcm1leWViaWxpcikuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBwYXJzZU1hdGNoZXJLZXkoa2V5OiBzdHJpbmcpOiB7IHJlbW90ZU5hbWU6IHN0cmluZzsgdGFiSWQ6IHN0cmluZyB8IG51bGwgfSB8IG51bGwge1xyXG5cdFx0aWYgKCFrZXkuc3RhcnRzV2l0aCgnbWZlOicpKSByZXR1cm4gbnVsbDtcclxuXHRcdGNvbnN0IHRhaWwgPSBrZXkuc3Vic3RyaW5nKDQpO1xyXG5cdFx0Y29uc3QgY29sb25JZHggPSB0YWlsLmluZGV4T2YoJzonKTtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdHJlbW90ZU5hbWU6IGNvbG9uSWR4ID09PSAtMSA/IHRhaWwgOiB0YWlsLnN1YnN0cmluZygwLCBjb2xvbklkeCksXHJcblx0XHRcdHRhYklkOiBjb2xvbklkeCA9PT0gLTEgPyBudWxsIDogdGFpbC5zdWJzdHJpbmcoY29sb25JZHggKyAxKVxyXG5cdFx0fTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFN0b3JlZCBoYW5kbGUnxLEgdGFtYW1lbiB0ZW1pemxlOiBoaWRkZW4gY29udGFpbmVyJ2Rha2kgcHJlc2VydmVkIGVsZW1lbnQnbGVyaSAocGx1Z2luXHJcblx0ICogY3VzdG9tIGVsZW1lbnQnbGVyaSArIEFyaWxXZWJDb21wb25lbnRXcmFwcGVyJ8SxbiBgPGFwcC14eHg+YCBlbGVtZW50J2kpIERPTSdkYW4ga2FsZMSxcixcclxuXHQgKiBzb25yYSBBbmd1bGFyIGBjb21wb25lbnRSZWYuZGVzdHJveSgpYCBpbGUgdmlldyB0cmVlJ3NpbmkgZGVzdHJveSBldC5cclxuXHQgKlxyXG5cdCAqIGBjb21wb25lbnRSZWYuZGVzdHJveSgpYCB0ZWsgYmHFn8SxbmEgeWV0ZXJsaSBkZcSfaWw6IEFuZ3VsYXIgc2FkZWNlIHZpZXcgdHJlZSdzaW5pIGJpbGlyLFxyXG5cdCAqIGJpemltIGBwcmVzZXJ2ZUN1c3RvbUVsZW1lbnRzSW5UcmVlYCB2ZSBgcHJlc2VydmVXZWJDb21wb25lbnRFbGVtZW50YCBpbGUgaGlkZGVuXHJcblx0ICogY29udGFpbmVyJ2EgbWFudWVsIHRhxZ/EsW5hbiBlbGVtZW50J2xlcmRlbiBoYWJlcmkgeW9rdHVyIOKGkiBvbmxhciBvcnBoYW4ga2FsxLFyLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgY2xlYW51cFN0b3JlZEhhbmRsZShoYW5kbGU6IERldGFjaGVkUm91dGVIYW5kbGUgfCBudWxsIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcblx0XHRpZiAoIWhhbmRsZSkgcmV0dXJuOyAvLyBBbmd1bGFyIFJvdXRlcifEsW4gYHN0b3JlKHJvdXRlLCBudWxsKWAgaWxlIGLEsXJha3TEscSfxLEgb3JwaGFuIGtleSdsZXIgacOnaW4gZGVmZW5zaXZlIGd1YXJkLlxyXG5cdFx0Y29uc3QgaGlkZGVuQ29udGFpbmVyID0gdGhpcy5nZXRIaWRkZW5Db250YWluZXIoKTtcclxuXHJcblx0XHQvLyAxLiBwcmVzZXJ2ZUN1c3RvbUVsZW1lbnRzSW5UcmVlIGlsZSB0YcWfxLFuYW4gcGx1Z2luIGVsZW1lbnQnbGVyaSAow7Zybi4gPG1kLXNlYXJjaD4pXHJcblx0XHRjb25zdCBwcmVzZXJ2ZWQgPSB0aGlzLnByZXNlcnZlZEN1c3RvbUVscy5nZXQoaGFuZGxlKTtcclxuXHRcdGlmIChwcmVzZXJ2ZWQpIHtcclxuXHRcdFx0Zm9yIChjb25zdCB7IGVsIH0gb2YgcHJlc2VydmVkKSB7XHJcblx0XHRcdFx0aWYgKGhpZGRlbkNvbnRhaW5lci5jb250YWlucyhlbCkpIHtcclxuXHRcdFx0XHRcdGhpZGRlbkNvbnRhaW5lci5yZW1vdmVDaGlsZChlbCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMucHJlc2VydmVkQ3VzdG9tRWxzLmRlbGV0ZShoYW5kbGUpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIDIuIHByZXNlcnZlV2ViQ29tcG9uZW50RWxlbWVudCBpbGUgdGHFn8SxbmFuIHdyYXBwZXIgZWxlbWVudCdpICjDtnJuLiA8YXBwLXdkbT4pXHJcblx0XHRjb25zdCBjb21wb25lbnRSZWYgPSAoaGFuZGxlIGFzIEludGVybmFsRGV0YWNoZWRSb3V0ZUhhbmRsZSkuY29tcG9uZW50UmVmO1xyXG5cdFx0Y29uc3QgaW5zdGFuY2UgPSBjb21wb25lbnRSZWY/Lmluc3RhbmNlIGFzIFdyYXBwZXJJbnN0YW5jZSB8IHVuZGVmaW5lZDtcclxuXHRcdGlmIChpbnN0YW5jZT8uZWxlbWVudCkge1xyXG5cdFx0XHQvLyBGbGFnJ2kgdGVtaXpsZSBraSByZW1vdmVDaGlsZCBzb25yYXPEsSB0ZXRpa2xlbmVuIGRpc2Nvbm5lY3RlZENhbGxiYWNrIEFwcGxpY2F0aW9uJ8SxXHJcblx0XHRcdC8vIGdlcsOnZWt0ZW4gZGVzdHJveSBldHNpbiDigJQgYWtzaSBoYWxkZSBNRkVBcHBFbGVtZW50IG9ycGhhbiBrYWzEsXIgKG1lbW9yeSBsZWFrKS5cclxuXHRcdFx0ZGVsZXRlIChpbnN0YW5jZS5lbGVtZW50IGFzIEhUTUxFbGVtZW50ICYgeyBfX2FyaWxQcmVzZXJ2ZUR1cmluZ0RldGFjaD86IGJvb2xlYW4gfSkuX19hcmlsUHJlc2VydmVEdXJpbmdEZXRhY2g7XHJcblx0XHRcdGlmIChoaWRkZW5Db250YWluZXIuY29udGFpbnMoaW5zdGFuY2UuZWxlbWVudCkpIHtcclxuXHRcdFx0XHRoaWRkZW5Db250YWluZXIucmVtb3ZlQ2hpbGQoaW5zdGFuY2UuZWxlbWVudCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvLyAzLiBBbmd1bGFyIHZpZXcgdHJlZSdzaW5pIGRlc3Ryb3kgZXRcclxuXHRcdGNvbXBvbmVudFJlZj8uZGVzdHJveSgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTWF0Y2hlciAoTUZFKSByb3V0ZSdsYXIgacOnaW4gdGFiSWQgem9ydW5sdS4gYGdldFRhYklkRnJvbVJvdXRlYCBVUkwgcXVlcnlQYXJhbXMgK1xyXG5cdCAqIGhpc3Rvcnkuc3RhdGUnaSBva3VyLiBIacOnYmlyIGtheW5hayB0YWJJZCB2ZXJtZXpzZSAoaWxrIG5hdmlnYXRpb24gaW50ZXJpbSdpKSBkZXRhY2hcclxuXHQgKiBlZGlsbWV6OyBgZmlyc3RDaGVja0ZvclJvdXRlYCBgX3RhYmAgZWtsZXlpcCB5ZW5pZGVuIG5hdmlnYXRlIGVkZWNlay5cclxuXHQgKi9cclxuXHRzaG91bGREZXRhY2gocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBib29sZWFuIHtcclxuXHRcdGlmICh0aGlzLmlzTWF0Y2hlclJvdXRlKHJvdXRlKSAmJiAhdGhpcy5nZXRUYWJJZEZyb21Sb3V0ZShyb3V0ZSkpIHtcclxuXHRcdFx0Y29uc29sZS5sb2coYFtTdHJhdGVneV0gc2hvdWxkRGV0YWNoIGtleT1cIiR7dGhpcy5nZXRSb3V0ZUtleShyb3V0ZSl9XCIg4oaSIGZhbHNlIChtYXRjaGVyIHJvdXRlLCB0YWJJZCB5b2spYCk7XHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHJvdXRlS2V5ID0gdGhpcy5nZXRSb3V0ZUtleShyb3V0ZSk7XHJcblx0XHQvLyBBbmd1bGFyIGBvdXRsZXQuZGV0YWNoKClgLCBgc3RvcmUoKWAnZGFuIMOWTkNFIMOnYWzEscWfxLFwIHdyYXBwZXIgdmlldyfEsW7EsSBET00nZGFuIHPDtmtlciDihpJcclxuXHRcdC8vIGnDp2luZGVraSBNRkUgYDxhcHAteHh4PmAgZWxlbWVudCdpIGRpc2Nvbm5lY3Qgb2x1ciB2ZSBiYXLEsW5kxLFyZMSxxJ/EsSBpZnJhbWUgKMO2cm4uIFN1cGVyc2V0IGVtYmVkKVxyXG5cdFx0Ly8gcmVsb2FkIG9sdXAgYXV0aCBoYW5kc2hha2UnaW5pIGthbMSxY8SxIGtheWJlZGVyLiBCdSB5w7x6ZGVuIGVsZW1lbnQnaSBIw4JMw4IgYmHEn2zEsXlrZW4sIGRldGFjaCd0ZW5cclxuXHRcdC8vIMOWTkNFIGF0b21pYyBgbW92ZUJlZm9yZWAgaWxlIGhpZGRlbiBjb250YWluZXInYSBhbMSxeW9ydXogKGJrei4gcHJlc2VydmVMaXZlRWxlbWVudEJlZm9yZURldGFjaCkuXHJcblx0XHRpZiAodGhpcy5pc01hdGNoZXJSb3V0ZShyb3V0ZSkpIHtcclxuXHRcdFx0dGhpcy5wcmVzZXJ2ZUxpdmVFbGVtZW50QmVmb3JlRGV0YWNoKHJvdXRlKTtcclxuXHRcdH1cclxuXHRcdGNvbnNvbGUubG9nKGBbU3RyYXRlZ3ldIHNob3VsZERldGFjaCBrZXk9XCIke3JvdXRlS2V5fVwiIOKGkiB0cnVlYCk7XHJcblx0XHRyZXR1cm4gdHJ1ZTtcclxuXHR9XHJcblxyXG5cdHN0b3JlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBkZXRhY2hlZFRyZWU6IERldGFjaGVkUm91dGVIYW5kbGUpOiB2b2lkIHtcclxuXHRcdGNvbnN0IHJvdXRlS2V5ID0gdGhpcy5nZXRSb3V0ZUtleShyb3V0ZSk7XHJcblx0XHRjb25zb2xlLmxvZyhgW1N0cmF0ZWd5XSBzdG9yZSBrZXk9XCIke3JvdXRlS2V5fVwiIGhhbmRsZT1gLCAhIWRldGFjaGVkVHJlZSk7XHJcblx0XHRpZiAoIWRldGFjaGVkVHJlZSkge1xyXG5cdFx0XHRkZWxldGUgdGhpcy5zdG9yZWRSb3V0ZXNbcm91dGVLZXldO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRpZiAodGhpcy5pc01hdGNoZXJSb3V0ZShyb3V0ZSkgJiYgIXRoaXMuZ2V0VGFiSWRGcm9tUm91dGUocm91dGUpKSB7XHJcblx0XHRcdGNvbnNvbGUubG9nKGBbU3RyYXRlZ3ldIHN0b3JlIFNLSVAga2V5PVwiJHtyb3V0ZUtleX1cIiAobWF0Y2hlciByb3V0ZSwgdGFiSWQgeW9rKWApO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLnN0b3JlZFJvdXRlc1tyb3V0ZUtleV0gPSBkZXRhY2hlZFRyZWU7XHJcblx0XHR0aGlzLnByZXNlcnZlV2ViQ29tcG9uZW50RWxlbWVudChkZXRhY2hlZFRyZWUpO1xyXG5cdFx0dGhpcy5wcmVzZXJ2ZUN1c3RvbUVsZW1lbnRzSW5UcmVlKGRldGFjaGVkVHJlZSk7XHJcblx0fVxyXG5cclxuXHRzaG91bGRBdHRhY2gocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBib29sZWFuIHtcclxuXHRcdGlmICh0aGlzLmlzTWF0Y2hlclJvdXRlKHJvdXRlKSAmJiAhdGhpcy5nZXRUYWJJZEZyb21Sb3V0ZShyb3V0ZSkpIHtcclxuXHRcdFx0Y29uc29sZS5sb2coYFtTdHJhdGVneV0gc2hvdWxkQXR0YWNoIGtleT1cIiR7dGhpcy5nZXRSb3V0ZUtleShyb3V0ZSl9XCIg4oaSIGZhbHNlIChtYXRjaGVyIHJvdXRlLCB0YWJJZCB5b2spYCk7XHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHJvdXRlS2V5ID0gdGhpcy5nZXRSb3V0ZUtleShyb3V0ZSk7XHJcblx0XHRjb25zdCBzaG91bGRBdHRhY2ggPSAhIXRoaXMuc3RvcmVkUm91dGVzW3JvdXRlS2V5XTtcclxuXHRcdGNvbnNvbGUubG9nKGBbU3RyYXRlZ3ldIHNob3VsZEF0dGFjaCBrZXk9XCIke3JvdXRlS2V5fVwiIOKGkiAke3Nob3VsZEF0dGFjaH0gKHN0b3JlZEtleXM9WyR7T2JqZWN0LmtleXModGhpcy5zdG9yZWRSb3V0ZXMpLmpvaW4oJywnKX1dKWApO1xyXG5cdFx0cmV0dXJuIHNob3VsZEF0dGFjaDtcclxuXHR9XHJcblxyXG5cdHJldHJpZXZlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogRGV0YWNoZWRSb3V0ZUhhbmRsZSB8IG51bGwge1xyXG5cdFx0aWYgKHRoaXMuaXNNYXRjaGVyUm91dGUocm91dGUpICYmICF0aGlzLmdldFRhYklkRnJvbVJvdXRlKHJvdXRlKSkge1xyXG5cdFx0XHRyZXR1cm4gbnVsbDtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHJvdXRlS2V5ID0gdGhpcy5nZXRSb3V0ZUtleShyb3V0ZSk7XHJcblx0XHRjb25zdCBoYW5kbGUgPSB0aGlzLnN0b3JlZFJvdXRlc1tyb3V0ZUtleV07XHJcblx0XHRjb25zb2xlLmxvZyhgW1N0cmF0ZWd5XSByZXRyaWV2ZSBrZXk9XCIke3JvdXRlS2V5fVwiIOKGkiAke2hhbmRsZSA/ICdIQVMnIDogJ05VTEwnfWApO1xyXG5cdFx0aWYgKGhhbmRsZSkge1xyXG5cdFx0XHR0aGlzLnJlc3RvcmVXZWJDb21wb25lbnRFbGVtZW50KGhhbmRsZSk7XHJcblx0XHRcdHRoaXMucmVzdG9yZUN1c3RvbUVsZW1lbnRzSW5UcmVlKGhhbmRsZSk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gaGFuZGxlIHx8IG51bGw7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBXZWIgY29tcG9uZW50IGVsZW1lbnQnaW5pIGhpZGRlbiBjb250YWluZXInYSB0YcWfxLFyIChzdGF0ZSBrb3J1bm1hc8SxIGnDp2luKS5cclxuXHQgKlxyXG5cdCAqIEVsZW1lbnQnZSBgX19hcmlsUHJlc2VydmVEdXJpbmdEZXRhY2hgIGZsYWcnaSB5YXrEsWzEsXI6IGByZW1vdmVDaGlsZGAgKyBgYXBwZW5kQ2hpbGRgXHJcblx0ICogYXJhc8SxbmRhIE1GRSBjdXN0b20gZWxlbWVudCdpbiBgZGlzY29ubmVjdGVkQ2FsbGJhY2tgJ2kgdGV0aWtsZW5peW9yOyBmbGFnIG9yYWRha2lcclxuXHQgKiBkZXN0cm95IHRpbWVyJ8SxbsSxICoqZGV0ZXJtaW5pc3RpYyoqIMWfZWtpbGRlIGJ5cGFzcyBlZGVyLiBFc2tpZGVuIDUwbXMgaGFyZGNvZGVkIHRpbWVyXHJcblx0ICogeWFyxLHFnyBrb8WfdWx1IMO8cmV0aXlvcmR1ICh5YXZhxZ8gY2loYXpsYXJkYSBBcHBsaWNhdGlvbiBpc3RlbXNpeiBkZXN0cm95IG9sdXlvcmR1KS5cclxuXHQgKi9cclxuXHRwcml2YXRlIHByZXNlcnZlV2ViQ29tcG9uZW50RWxlbWVudChkZXRhY2hlZFRyZWU6IERldGFjaGVkUm91dGVIYW5kbGUpOiB2b2lkIHtcclxuXHRcdHRyeSB7XHJcblx0XHRcdGNvbnN0IGNvbXBvbmVudFJlZiA9IChkZXRhY2hlZFRyZWUgYXMgSW50ZXJuYWxEZXRhY2hlZFJvdXRlSGFuZGxlKS5jb21wb25lbnRSZWY7XHJcblx0XHRcdGlmICghY29tcG9uZW50UmVmKSByZXR1cm47XHJcblxyXG5cdFx0XHRjb25zdCBjb21wb25lbnRJbnN0YW5jZSA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBXcmFwcGVySW5zdGFuY2UgfCB1bmRlZmluZWQ7XHJcblx0XHRcdGlmICghY29tcG9uZW50SW5zdGFuY2U/LmVsZW1lbnQpIHJldHVybjtcclxuXHJcblx0XHRcdGNvbnN0IGVsZW1lbnQgPSBjb21wb25lbnRJbnN0YW5jZS5lbGVtZW50IGFzIEhUTUxFbGVtZW50ICYgeyBfX2FyaWxQcmVzZXJ2ZUR1cmluZ0RldGFjaD86IGJvb2xlYW4gfTtcclxuXHRcdFx0Y29uc3QgaGlkZGVuQ29udGFpbmVyID0gdGhpcy5nZXRIaWRkZW5Db250YWluZXIoKTtcclxuXHJcblx0XHRcdC8vIEZsYWcg4oCUIGZhbGxiYWNrIChtb3ZlQmVmb3JlIGRlc3Rla2xlbm1leWVuIHRhcmF5xLFjxLEpIHJlbW92ZUNoaWxkIHlhcHTEscSfxLFuZGEgZGlzY29ubmVjdGVkQ2FsbGJhY2tcclxuXHRcdFx0Ly8gYnVudSBva3V5dXAgZGVzdHJveSfEsSBhdGxhci4gbW92ZUJlZm9yZSB5b2x1bmRhIGNhbGxiYWNrIGhpw6cgdGV0aWtsZW5tZXogKGZsYWcgemFyYXJzxLF6IGthbMSxcikuXHJcblx0XHRcdGVsZW1lbnQuX19hcmlsUHJlc2VydmVEdXJpbmdEZXRhY2ggPSB0cnVlO1xyXG5cclxuXHRcdFx0Ly8gYHNob3VsZERldGFjaGAgw6dvxJ91IGR1cnVtZGEgZWxlbWVudCdpIGRldGFjaCd0ZW4gw5ZOQ0UgemF0ZW4gdGHFn8SxZMSxIOKGkiBidXJhZGEgbm8tb3AuXHJcblx0XHRcdGlmIChoaWRkZW5Db250YWluZXIuY29udGFpbnMoZWxlbWVudCkpIHJldHVybjtcclxuXHJcblx0XHRcdC8vIFRhxZ/EsW5tYWTEsXlzYSAow7ZyLiBzaG91bGREZXRhY2ggZWxlbWVudCdpIGJ1bGFtYWTEsSk6IGJ1IG5va3RhZGEgZWxlbWVudCBBbmd1bGFyIHRhcmFmxLFuZGFuXHJcblx0XHRcdC8vIHphdGVuIGRpc2Nvbm5lY3QgZWRpbG1pxZ8gb2xhYmlsaXI7IG1vdmVJbnRvIGJhxJ9sxLF5c2EgbW92ZUJlZm9yZSwgZGXEn2lsc2UgYXBwZW5kQ2hpbGQga3VsbGFuxLFyLlxyXG5cdFx0XHR0aGlzLm1vdmVJbnRvKGhpZGRlbkNvbnRhaW5lciwgZWxlbWVudCk7XHJcblx0XHRcdGNvbnNvbGUubG9nKCdXZWIgY29tcG9uZW50IGVsZW1lbnQgaGlkZGVuIGNvbnRhaW5lclxcJ2EgdGHFn8SxbmTEsSAoc3RhdGUga29ydW51eW9yKScpO1xyXG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcclxuXHRcdFx0Y29uc29sZS53YXJuKCdXZWIgY29tcG9uZW50IGVsZW1lbnQgcHJlc2VydmUgZWRpbGlya2VuIGhhdGE6JywgZXJyb3IpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogV2ViIGNvbXBvbmVudCBlbGVtZW50J2luaSBoaWRkZW4gY29udGFpbmVyJ2RhbiDDp8Sxa2FyIHZlIGNvbXBvbmVudCB2aWV3J2EgZWtsZW1leWkgZGVuZS5cclxuXHQgKlxyXG5cdCAqIGBfX2FyaWxQcmVzZXJ2ZUR1cmluZ0RldGFjaGAgZmxhZydpIHRlbWl6bGVuaXIg4oCUIGXEn2VyIGJ1IHJldHJpZXZlIHNvbnJhc8SxIGVsZW1lbnRcclxuXHQgKiBnZXLDp2VrIGFubGFtZGEgZGVzdHJveSBlZGlsaXJzZSBgZGlzY29ubmVjdGVkQ2FsbGJhY2tgIGZsYWcgeW9rIGthYnVsIGVkaXAgQXBwbGljYXRpb25cclxuXHQgKiBjbGVhbnVwJ8SxbsSxIHnDvHLDvHRlY2VrLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgcmVzdG9yZVdlYkNvbXBvbmVudEVsZW1lbnQoZGV0YWNoZWRUcmVlOiBEZXRhY2hlZFJvdXRlSGFuZGxlKTogdm9pZCB7XHJcblx0XHR0cnkge1xyXG5cdFx0XHRjb25zdCBjb21wb25lbnRSZWYgPSAoZGV0YWNoZWRUcmVlIGFzIEludGVybmFsRGV0YWNoZWRSb3V0ZUhhbmRsZSkuY29tcG9uZW50UmVmO1xyXG5cdFx0XHRpZiAoIWNvbXBvbmVudFJlZikgcmV0dXJuO1xyXG5cclxuXHRcdFx0Y29uc3QgY29tcG9uZW50SW5zdGFuY2UgPSBjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgV3JhcHBlckluc3RhbmNlIHwgdW5kZWZpbmVkO1xyXG5cdFx0XHRpZiAoIWNvbXBvbmVudEluc3RhbmNlPy5lbGVtZW50KSByZXR1cm47XHJcblxyXG5cdFx0XHRjb25zdCBlbGVtZW50ID0gY29tcG9uZW50SW5zdGFuY2UuZWxlbWVudCBhcyBIVE1MRWxlbWVudCAmIHsgX19hcmlsUHJlc2VydmVEdXJpbmdEZXRhY2g/OiBib29sZWFuIH07XHJcblx0XHRcdGNvbnN0IGhpZGRlbkNvbnRhaW5lciA9IHRoaXMuZ2V0SGlkZGVuQ29udGFpbmVyKCk7XHJcblxyXG5cdFx0XHRpZiAoIWhpZGRlbkNvbnRhaW5lci5jb250YWlucyhlbGVtZW50KSkgcmV0dXJuO1xyXG5cclxuXHRcdFx0Ly8gw5ZORU1MSTogZWxlbWVudCdpIGhpZGRlbiBjb250YWluZXInZGFuIEVSS0VOIMOnxLFrYXJtxLF5b3J1ei4gYHJldHJpZXZlYCwgQW5ndWxhclxyXG5cdFx0XHQvLyBgb3V0bGV0LmF0dGFjaCgpYCd0ZW4gw5ZOQ0Ugw6dhxJ9yxLFsxLFyIOKGkiB2YyBoZW7DvHogRE9NJ2EgYmHEn2zEsSBkZcSfaWxkaXIuIEVya2VuIHJlbW92ZUNoaWxkXHJcblx0XHRcdC8vIGVsZW1lbnQnaSBkaXNjb25uZWN0IGVkZXIgdmUgaWZyYW1lIHJlbG9hZCBvbHVyICh0YW0ga2HDp8SxbmTEscSfxLFtxLF6IMWfZXkpLiBCdW51biB5ZXJpbmVcclxuXHRcdFx0Ly8gZWxlbWVudCdpIGhpZGRlbiBjb250YWluZXInZGEgKGJhxJ9sxLEpIGLEsXJha8SxcCB2YyBiYcSfbGFuxLFuY2EgYXRvbWljIG1vdmVCZWZvcmUgaWxlXHJcblx0XHRcdC8vIGRvxJ9ydWRhbiBoaWRkZW4g4oaSIHZjIHRhxZ/EsXlvcnV6OyBpZnJhbWUgaGnDpyByZWxvYWQgb2xtYXouXHJcblx0XHRcdGNvbnN0IHRyeVJlc3RvcmUgPSAoKTogYm9vbGVhbiA9PiB7XHJcblx0XHRcdFx0Y29uc3QgdmNOYXRpdmUgPSBjb21wb25lbnRJbnN0YW5jZS52Yz8ubmF0aXZlRWxlbWVudDtcclxuXHRcdFx0XHRpZiAoIXZjTmF0aXZlIHx8ICF2Y05hdGl2ZS5pc0Nvbm5lY3RlZCkgcmV0dXJuIGZhbHNlO1xyXG5cdFx0XHRcdHRoaXMubW92ZUludG8odmNOYXRpdmUsIGVsZW1lbnQpO1xyXG5cdFx0XHRcdC8vIEZsYWcnaSBtb3ZlSW50byBTT05SQVNJIHNpbDogZmFsbGJhY2sgcmVtb3ZlQ2hpbGQgeWFwYXJzYSBkaXNjb25uZWN0ZWRDYWxsYmFjayBmbGFnJ2kgaMOibMOiIGfDtnJzw7xuLlxyXG5cdFx0XHRcdGRlbGV0ZSBlbGVtZW50Ll9fYXJpbFByZXNlcnZlRHVyaW5nRGV0YWNoO1xyXG5cdFx0XHRcdGNvbXBvbmVudEluc3RhbmNlLnByb3BzVXBkYXRlZCA9IGZhbHNlO1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdXZWIgY29tcG9uZW50IGVsZW1lbnQgY29tcG9uZW50IHZpZXdcXCdhIGVrbGVuZGkgKHJldHJpZXZlIHPEsXJhc8SxbmRhKScpO1xyXG5cdFx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0XHR9O1xyXG5cclxuXHRcdFx0Ly8gSGVtZW4gZGVuZSAodmMgZ2VuZWxkZSBiYcSfbMSxIGRlxJ9pbCkg4oaSIGRlxJ9pbHNlIG1pY3JvdGFzayd0ZSB0ZWtyYXIgZGVuZS4gYG91dGxldC5hdHRhY2goKWBcclxuXHRcdFx0Ly8gcmV0cmlldmUnZGVuIGhlbWVuIHNvbnJhIFNFTktST04gw6dhbMSxxZ/EsXI7IG1pY3JvdGFzayBnZcOnZXJsaSB0YXNrIGJpdGluY2UgKGF0dGFjaCB0YW1hbWxhbm3EscWfLFxyXG5cdFx0XHQvLyB2YyBiYcSfbMSxKSBhbWEgUEFJTlQndGVuIMOWTkNFIGtvxZ9hciDihpIgZWxlbWVudCB5ZXJpbmUgb3R1cnVyLCB0YWIgZ2XDp2nFn2luZGUgYm/Fny1mbGFzaCBvbG1hei5cclxuXHRcdFx0aWYgKHRyeVJlc3RvcmUoKSkgcmV0dXJuO1xyXG5cdFx0XHRxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XHJcblx0XHRcdFx0aWYgKHRyeVJlc3RvcmUoKSkgcmV0dXJuO1xyXG5cdFx0XHRcdC8vIFNvbiDDp2FyZTogdmMgaMOibMOiIGJhxJ9sxLEgZGXEn2lsLiBFbGVtZW50J2kgeWluZSBkZSB2Yyd5ZSB0YcWfxLEga2kgdGFiIGJvxZ8ga2FsbWFzxLFuXHJcblx0XHRcdFx0Ly8gKGF0dGFjaCB2aWV3J8SxIGJhxJ9sYXnEsW5jYSBnw7Zyw7xuw7xyIG9sdXIg4oCUIGlmcmFtZSByZWxvYWQgb2xhYmlsaXIgYW1hIGVza2kgZGF2cmFuxLHFnyBrb3J1bnVyKS5cclxuXHRcdFx0XHRjb25zdCB2Y05hdGl2ZSA9IGNvbXBvbmVudEluc3RhbmNlLnZjPy5uYXRpdmVFbGVtZW50O1xyXG5cdFx0XHRcdGlmICh2Y05hdGl2ZSkge1xyXG5cdFx0XHRcdFx0dGhpcy5tb3ZlSW50byh2Y05hdGl2ZSwgZWxlbWVudCk7XHJcblx0XHRcdFx0XHRkZWxldGUgZWxlbWVudC5fX2FyaWxQcmVzZXJ2ZUR1cmluZ0RldGFjaDtcclxuXHRcdFx0XHRcdGNvbXBvbmVudEluc3RhbmNlLnByb3BzVXBkYXRlZCA9IGZhbHNlO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRjb21wb25lbnRJbnN0YW5jZS5uZWVkc1Jlc3RvcmUgPSB0cnVlO1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ1dlYiBjb21wb25lbnQgZWxlbWVudCByZXN0b3JlIGVkaWxlY2VrICh2aWV3IGhhesSxciBkZcSfaWwsIG5nQWZ0ZXJWaWV3SW5pdFxcJ3RlIHRla3JhciBkZW5lbmVjZWspJyk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XHJcblx0XHRcdGNvbnNvbGUud2FybignV2ViIGNvbXBvbmVudCBlbGVtZW50IHJlc3RvcmUgZWRpbGlya2VuIGhhdGE6JywgZXJyb3IpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2xvYmFsIGhpZGRlbiBjb250YWluZXInxLEgb2x1xZ90dXJ1ciB2ZXlhIGTDtm5kw7xyw7xyXHJcblx0ICovXHJcblx0cHJpdmF0ZSBnZXRIaWRkZW5Db250YWluZXIoKTogSFRNTEVsZW1lbnQge1xyXG5cdFx0Y29uc3Qgc2xvdCA9IGdsb2JhbFRoaXMgYXMgdHlwZW9mIGdsb2JhbFRoaXMgJiB7IF9fYXJpbFdlYkNvbXBvbmVudEhpZGRlbkNvbnRhaW5lcj86IEhUTUxFbGVtZW50IH07XHJcblx0XHRsZXQgY29udGFpbmVyID0gc2xvdC5fX2FyaWxXZWJDb21wb25lbnRIaWRkZW5Db250YWluZXI7XHJcblx0XHRpZiAoIWNvbnRhaW5lcikge1xyXG5cdFx0XHRjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuXHRcdFx0Y29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcblx0XHRcdGNvbnRhaW5lci5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XHJcblx0XHRcdGNvbnRhaW5lci5zdHlsZS5sZWZ0ID0gJy05OTk5cHgnO1xyXG5cdFx0XHRjb250YWluZXIuc3R5bGUudG9wID0gJy05OTk5cHgnO1xyXG5cdFx0XHRjb250YWluZXIuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xyXG5cdFx0XHRkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRhaW5lcik7XHJcblx0XHRcdHNsb3QuX19hcmlsV2ViQ29tcG9uZW50SGlkZGVuQ29udGFpbmVyID0gY29udGFpbmVyO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGNvbnRhaW5lcjtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIGBlbGAnaSBgdGFyZ2V0YCfEsW4gc29uIMOnb2N1xJ91IG9sYWNhayDFn2VraWxkZSBUQcWeSVIuIGBtb3ZlQmVmb3JlYCAoYXRvbWljIG1vdmUpIGRlc3Rla2xlbml5b3IgdmVcclxuXHQgKiBoZXIgaWtpIGTDvMSfw7xtIGRlIGJhxJ9sxLF5c2Egb251IGt1bGxhbsSxcjogbmVzdGVkIGJyb3dzaW5nIGNvbnRleHQgKGlmcmFtZSkgcmVsb2FkIE9MTUFEQU4gdmUgY3VzdG9tXHJcblx0ICogZWxlbWVudCdpbiBjb25uZWN0ZWQvZGlzY29ubmVjdGVkIGNhbGxiYWNrJ2xlcmkgdGV0aWtsZW5tZWRlbiB0YcWfxLFyIOKGkiBpZnJhbWUtdGFiYW5sxLEgZW1iZWQnbGVyaW5cclxuXHQgKiAoU3VwZXJzZXQpIGF1dGggaGFuZHNoYWtlJ2kgKyBzY3JvbGwvZmlsdHJlIHN0YXRlJ2kga29ydW51ci4gRGVzdGVrbGVubWl5b3JzYSB2ZXlhIHRhxZ/EsW1hIGvEsXPEsXRsYXLEsVxyXG5cdCAqIGlobGFsIGVkaWxpcnNlIChkaXNjb25uZWN0ZWQgLyBjcm9zcy1kb2N1bWVudCkgcmVtb3ZlQ2hpbGQrYXBwZW5kQ2hpbGQnYSBkw7zFn2VyIChlc2tpIGRhdnJhbsSxxZ86IGlmcmFtZVxyXG5cdCAqIHJlbG9hZCBvbHVyIGFtYSBpxZ9sZW0gZ8O8dmVubGkgdGFtYW1sYW7EsXIpLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgbW92ZUludG8odGFyZ2V0OiBIVE1MRWxlbWVudCwgZWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XHJcblx0XHRjb25zdCBtb3ZlciA9IHRhcmdldCBhcyBIVE1MRWxlbWVudCAmIHsgbW92ZUJlZm9yZT86IChub2RlOiBOb2RlLCBjaGlsZDogTm9kZSB8IG51bGwpID0+IHZvaWQgfTtcclxuXHRcdGlmICh0eXBlb2YgbW92ZXIubW92ZUJlZm9yZSA9PT0gJ2Z1bmN0aW9uJyAmJiBlbC5pc0Nvbm5lY3RlZCAmJiB0YXJnZXQuaXNDb25uZWN0ZWQpIHtcclxuXHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRtb3Zlci5tb3ZlQmVmb3JlKGVsLCBudWxsKTtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH0gY2F0Y2gge1xyXG5cdFx0XHRcdC8vIG1vdmVCZWZvcmUga8Sxc8SxdGxhcsSxIGlobGFsIGVkaWxkaSDihpIgYcWfYcSfxLFkYWtpIGtsYXNpayB0YcWfxLFtYXlhIGTDvMWfLlxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRpZiAoZWwucGFyZW50Tm9kZSAmJiBlbC5wYXJlbnROb2RlICE9PSB0YXJnZXQpIHtcclxuXHRcdFx0ZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbCk7XHJcblx0XHR9XHJcblx0XHRpZiAoIXRhcmdldC5jb250YWlucyhlbCkpIHtcclxuXHRcdFx0dGFyZ2V0LmFwcGVuZENoaWxkKGVsKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIGBzaG91bGREZXRhY2hgIGnDp2luZGVuLCBBbmd1bGFyIGBvdXRsZXQuZGV0YWNoKClgIMOnYWzEscWfbWFkYW4gw5ZOQ0Ugw6dhxJ9yxLFsxLFyOiBjYW5sxLEgb3V0bGV0J3Rla2kgTUZFXHJcblx0ICogZWxlbWVudCdpbmkgYGFyaWwtdGFiLWlkYCBhdHRyaWJ1dGUndW5kYW4gYnVsdXAgYXRvbWljIGBtb3ZlQmVmb3JlYCBpbGUgaGlkZGVuIGNvbnRhaW5lcidhIHRhxZ/EsXIuXHJcblx0ICogQsO2eWxlY2UgQW5ndWxhciB3cmFwcGVyIHZpZXcnxLFuxLEgc8O2a3TDvMSfw7xuZGUgYDxhcHAteHh4PmAgZWxlbWVudCdpIHphdGVuIGfDvHZlbmxpL2JhxJ9sxLEga29udW1kYWTEsXIgdmVcclxuXHQgKiBiYXLEsW5kxLFyZMSxxJ/EsSBpZnJhbWUgcmVsb2FkIG9sbWF6LiBFbGVtZW50IGJ1bHVuYW1heiB5YSBkYSB6YXRlbiBoaWRkZW4gY29udGFpbmVyJ2RheXNhIG5vLW9wIOKGklxyXG5cdCAqIGBzdG9yZSgpYCBlc2tpIHlvbHV5bGEgZGV2cmV5ZSBnaXJlciAocmVncmVzeW9uIHlvaykuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBwcmVzZXJ2ZUxpdmVFbGVtZW50QmVmb3JlRGV0YWNoKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogdm9pZCB7XHJcblx0XHR0cnkge1xyXG5cdFx0XHRjb25zdCB0YWJJZCA9IHRoaXMuZ2V0VGFiSWRGcm9tUm91dGUocm91dGUpO1xyXG5cdFx0XHRpZiAoIXRhYklkKSByZXR1cm47XHJcblx0XHRcdGNvbnN0IGhpZGRlbkNvbnRhaW5lciA9IHRoaXMuZ2V0SGlkZGVuQ29udGFpbmVyKCk7XHJcblx0XHRcdGNvbnN0IGNhbmRpZGF0ZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbYXJpbC10YWItaWQ9XCIke3RhYklkfVwiXWApO1xyXG5cdFx0XHRmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBBcnJheS5mcm9tKGNhbmRpZGF0ZXMpKSB7XHJcblx0XHRcdFx0Y29uc3QgZWwgPSBjYW5kaWRhdGUgYXMgSFRNTEVsZW1lbnQgJiB7IF9fYXJpbFByZXNlcnZlRHVyaW5nRGV0YWNoPzogYm9vbGVhbiB9O1xyXG5cdFx0XHRcdGlmIChoaWRkZW5Db250YWluZXIuY29udGFpbnMoZWwpKSBjb250aW51ZTtcclxuXHRcdFx0XHQvLyBGYWxsYmFjayByZW1vdmVDaGlsZCB5b2x1bmRhIGRpc2Nvbm5lY3RlZENhbGxiYWNrJ2luIGRlc3Ryb3knxLEgYXRsYW1hc8SxIGnDp2luIGZsYWcnaSB0YcWfxLFtYWRhbiDDlk5DRSBzZXQgZXQuXHJcblx0XHRcdFx0ZWwuX19hcmlsUHJlc2VydmVEdXJpbmdEZXRhY2ggPSB0cnVlO1xyXG5cdFx0XHRcdHRoaXMubW92ZUludG8oaGlkZGVuQ29udGFpbmVyLCBlbCk7XHJcblx0XHRcdFx0Y29uc29sZS5sb2coYFtTdHJhdGVneV0gcHJlLWRldGFjaCBwcmVzZXJ2ZTogPCR7ZWwudGFnTmFtZS50b0xvd2VyQ2FzZSgpfT4gdGFiPVwiJHt0YWJJZH1cIiBoaWRkZW4gY29udGFpbmVyJ2EgdGHFn8SxbmTEsWApO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHRjb25zb2xlLndhcm4oJ1tTdHJhdGVneV0gcHJlLWRldGFjaCBwcmVzZXJ2ZSBoYXRhc8SxOicsIGVycm9yKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERldGFjaGVkIHJvdXRlIHZpZXcnxLEgacOnaW5kZWtpIHBsdWdpbi9NRkUgY3VzdG9tIGVsZW1lbnQnbGVyaW5pICh0YWcgYWTEsW5kYSBgLWBcclxuXHQgKiBidWx1bmFuIHZlIGBjdXN0b21FbGVtZW50c2AnYSBrYXnEsXRsxLEgb2xhbmxhcsSxKSBoaWRkZW4gY29udGFpbmVyJ2EgdGHFn8SxciB2ZVxyXG5cdCAqIHllcmxlcmluZSBiaXJlciBDb21tZW50IHBsYWNlaG9sZGVyIGLEsXJha8Sxci4gRWxlbWVudCBkb2N1bWVudCd0YW4gYXlyxLFsbWF6LFxyXG5cdCAqIEFuZ3VsYXIgRWxlbWVudHMgYGRpc2Nvbm5lY3RlZENhbGxiYWNrYCAxMG1zIGRlc3Ryb3kgdGltZXInxLEga2FuYXQgw6fEsXJwbWF6IOKAlFxyXG5cdCAqIGRvbGF5xLFzxLF5bGEgcGx1Z2luJ2luIGBDb21wb25lbnRSZWZgIHZlIGRhaGlsaSBzdGF0ZSdpIChmb3JtIGRlxJ9lcmxlcmksIHNlYXJjaFxyXG5cdCAqIHNvbnXDp2xhcsSxIHZzLikgc29ucmFraSByZXRyaWV2ZSdlIGthZGFyIGtvcnVudXIuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBwcmVzZXJ2ZUN1c3RvbUVsZW1lbnRzSW5UcmVlKGRldGFjaGVkVHJlZTogRGV0YWNoZWRSb3V0ZUhhbmRsZSk6IHZvaWQge1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0Y29uc3QgY29tcG9uZW50UmVmID0gKGRldGFjaGVkVHJlZSBhcyBJbnRlcm5hbERldGFjaGVkUm91dGVIYW5kbGUpLmNvbXBvbmVudFJlZjtcclxuXHRcdFx0Y29uc3Qgcm9vdEVsID0gY29tcG9uZW50UmVmPy5sb2NhdGlvbj8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcclxuXHRcdFx0aWYgKCFyb290RWwpIHJldHVybjtcclxuXHJcblx0XHRcdGNvbnN0IGhpZGRlbkNvbnRhaW5lciA9IHRoaXMuZ2V0SGlkZGVuQ29udGFpbmVyKCk7XHJcblx0XHRcdGNvbnN0IGFsbCA9IHJvb3RFbC5xdWVyeVNlbGVjdG9yQWxsKCcqJyk7XHJcblx0XHRcdGNvbnN0IHByZXNlcnZlZExpc3Q6IFByZXNlcnZlZEN1c3RvbUVsW10gPSBbXTtcclxuXHJcblx0XHRcdGZvciAoY29uc3QgZWwgb2YgQXJyYXkuZnJvbShhbGwpKSB7XHJcblx0XHRcdFx0Y29uc3QgdGFnID0gZWwudGFnTmFtZS50b0xvd2VyQ2FzZSgpO1xyXG5cdFx0XHRcdGlmICghdGFnLmluY2x1ZGVzKCctJykpIGNvbnRpbnVlO1xyXG5cdFx0XHRcdGlmICghd2luZG93LmN1c3RvbUVsZW1lbnRzPy5nZXQodGFnKSkgY29udGludWU7XHJcblxyXG5cdFx0XHRcdGNvbnN0IG5vZGUgPSBlbCBhcyBIVE1MRWxlbWVudDtcclxuXHRcdFx0XHRjb25zdCBwbGFjZWhvbGRlciA9IGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoYGFyaWwtcHJlc2VydmVkOiR7dGFnfWApO1xyXG5cdFx0XHRcdG5vZGUucGFyZW50Tm9kZT8uaW5zZXJ0QmVmb3JlKHBsYWNlaG9sZGVyLCBub2RlKTtcclxuXHRcdFx0XHRoaWRkZW5Db250YWluZXIuYXBwZW5kQ2hpbGQobm9kZSk7XHJcblx0XHRcdFx0cHJlc2VydmVkTGlzdC5wdXNoKHsgZWw6IG5vZGUsIHBsYWNlaG9sZGVyIH0pO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAocHJlc2VydmVkTGlzdC5sZW5ndGgpIHtcclxuXHRcdFx0XHR0aGlzLnByZXNlcnZlZEN1c3RvbUVscy5zZXQoZGV0YWNoZWRUcmVlLCBwcmVzZXJ2ZWRMaXN0KTtcclxuXHRcdFx0XHRjb25zb2xlLmxvZyhgW1N0cmF0ZWd5XSBwcmVzZXJ2ZUN1c3RvbUVsZW1lbnRzSW5UcmVlOiAke3ByZXNlcnZlZExpc3QubGVuZ3RofSBlbGVtZW50IHRhxZ/EsW5kxLFgKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcclxuXHRcdFx0Y29uc29sZS53YXJuKCdDdXN0b20gZWxlbWVudCBwcmVzZXJ2ZSBlZGlsaXJrZW4gaGF0YTonLCBlcnJvcik7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBwcmVzZXJ2ZUN1c3RvbUVsZW1lbnRzSW5UcmVlIGlsZSB0YcWfxLFuYW4gY3VzdG9tIGVsZW1lbnQnbGVyaSBvcmlqaW5hbFxyXG5cdCAqIHBsYWNlaG9sZGVyJ2xhcsSxbsSxbiB5ZXJpbmUgZ2VyaSBrb3lhci5cclxuXHQgKi9cclxuXHRwcml2YXRlIHJlc3RvcmVDdXN0b21FbGVtZW50c0luVHJlZShkZXRhY2hlZFRyZWU6IERldGFjaGVkUm91dGVIYW5kbGUpOiB2b2lkIHtcclxuXHRcdHRyeSB7XHJcblx0XHRcdGNvbnN0IHByZXNlcnZlZExpc3QgPSB0aGlzLnByZXNlcnZlZEN1c3RvbUVscy5nZXQoZGV0YWNoZWRUcmVlKTtcclxuXHRcdFx0aWYgKCFwcmVzZXJ2ZWRMaXN0Py5sZW5ndGgpIHJldHVybjtcclxuXHJcblx0XHRcdGZvciAoY29uc3QgeyBlbCwgcGxhY2Vob2xkZXIgfSBvZiBwcmVzZXJ2ZWRMaXN0KSB7XHJcblx0XHRcdFx0aWYgKHBsYWNlaG9sZGVyLnBhcmVudE5vZGUpIHtcclxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGVsLCBwbGFjZWhvbGRlcik7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdC8vIFBsYWNlaG9sZGVyIGHEn2HDp3RhbiBrb3BhcsSxbG3EscWfIOKAlCBwYXJlbnQgdmlldyB0YW1hbWVuIGRlc3Ryb3kgZWRpbG1pxZ8gb2xhYmlsaXJcclxuXHRcdFx0XHRcdC8vICjDtnJuLiByZW1vdGUgdGFiIGthcGFubcSxxZ8pLiBFbGVtZW50J2kgaGlkZGVuIGNvbnRhaW5lcidkYSBixLFyYWttYW1hayBpw6dpbiBjbGVhbnVwLlxyXG5cdFx0XHRcdFx0Y29uc29sZS53YXJuKCdbU3RyYXRlZ3ldIHJlc3RvcmU6IHBsYWNlaG9sZGVyIHBhcmVudCB5b2ssIGN1c3RvbSBlbGVtZW50IGNsZWFudXAgZWRpbGl5b3InLCBlbC50YWdOYW1lKTtcclxuXHRcdFx0XHRcdGlmIChlbC5wYXJlbnROb2RlID09PSB0aGlzLmdldEhpZGRlbkNvbnRhaW5lcigpKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuZ2V0SGlkZGVuQ29udGFpbmVyKCkucmVtb3ZlQ2hpbGQoZWwpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLnByZXNlcnZlZEN1c3RvbUVscy5kZWxldGUoZGV0YWNoZWRUcmVlKTtcclxuXHRcdFx0Y29uc29sZS5sb2coYFtTdHJhdGVneV0gcmVzdG9yZUN1c3RvbUVsZW1lbnRzSW5UcmVlOiAke3ByZXNlcnZlZExpc3QubGVuZ3RofSBlbGVtZW50IGdlcmkgeWVybGXFn3RpcmlsZGlgKTtcclxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XHJcblx0XHRcdGNvbnNvbGUud2FybignQ3VzdG9tIGVsZW1lbnQgcmVzdG9yZSBlZGlsaXJrZW4gaGF0YTonLCBlcnJvcik7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGlzTWF0Y2hlclJvdXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgbnVsbCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuICEhcm91dGU/LnJvdXRlQ29uZmlnPy5tYXRjaGVyO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXRSZW1vdGVOYW1lKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgbnVsbCk6IHN0cmluZyB8IG51bGwge1xyXG5cdFx0cmV0dXJuIChyb3V0ZT8ucm91dGVDb25maWc/LmRhdGEgYXMgUGx1Z2luQ29uZmlnIHwgdW5kZWZpbmVkKT8ucmVtb3RlTmFtZSA/PyBudWxsO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVVJMIGA/X3RhYj08dGFiSWQ+YCBxdWVyeSBwYXJhbSfEsW7EsSBva3Ug4oCUIGBOYXZTZXJ2aWNlYCBoZXIgdGFiIGnDp2luIHVuaXF1ZSBkZcSfZXIgw7xyZXRpci5cclxuXHQgKiBgSXNvbGF0ZWRMb2NhdGlvblN0cmF0ZWd5YCBzYXllc2luZGUgaG9zdCBSb3V0ZXInYSB0YWJzxLF6IG5hdmlnYXRpb24gZ2VsbWV6LCBzYWRlY2VcclxuXHQgKiBgdGFiU3RhdGUoe190YWJ9KWAnbMSxIHRhYiB0xLFrbGFtYWxhcsSxIGdlbGlyIOKGkiBgcm91dGUucXVlcnlQYXJhbXNbJ190YWInXWAgaGVyIHphbWFuIGRvbHUuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBnZXRUYWJJZEZyb21Sb3V0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IG51bGwpOiBzdHJpbmcgfCBudWxsIHtcclxuXHRcdGNvbnN0IHYgPSByb3V0ZT8ucXVlcnlQYXJhbXM/LlsnX3RhYiddO1xyXG5cdFx0cmV0dXJuIHR5cGVvZiB2ID09PSAnc3RyaW5nJyAmJiB2Lmxlbmd0aCA+IDAgPyB2IDogbnVsbDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJvdXRlIGtleSdpbmkgb2x1xZ90dXJ1ci4gTWF0Y2hlciAod2ViIGNvbXBvbmVudCkgcm91dGUnbGFyIGnDp2luIHJlbW90ZU5hbWUgKyB0YWJJZFxyXG5cdCAqIGJhemzEsSBrZXkga3VsbGFuxLFsxLFyIOKAlCBheW7EsSByZW1vdGUndW4gaGVyIHRhYidpIGF5csSxIE1GRSBjdXN0b20gZWxlbWVudCBpbnN0YW5jZSfEsW5hXHJcblx0ICogc2FoaXB0aXIgKGJhxJ/EsW1zxLF6IHN0YXRlKS5cclxuXHQgKlxyXG5cdCAqIE5vcm1hbCByb3V0ZSdsYXIgacOnaW4gYHBhdGhGcm9tUm9vdGAgw7x6ZXJpbmRlbiB0YW0geW9sIMO8cmV0aWxpciwgYXJkxLFuZGFuIHF1ZXJ5IHBhcmFtc1xyXG5cdCAqIGVrbGVuaXIgKHphdGVuIGBfdGFiYCBkYWhpbCkg4oCUIG5lc3RlZCBib8WfLXBhdGggKGBwYXRoOiAnJ2ApIGNoaWxkIHJvdXRlJ2xhcsSxbsSxbiBheW7EsSBgXCJcImBcclxuXHQgKiBrZXknaXlsZSDDp2FrxLHFn21hc8SxbsSxIGVuZ2VsbGVyIHZlIGF5bsSxIHBhdGgnaW4gaWtpIHRhYidpIGZhcmtsxLEga2V5IGFsxLFyLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgZ2V0Um91dGVLZXkocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBzdHJpbmcge1xyXG5cdFx0aWYgKHRoaXMuaXNNYXRjaGVyUm91dGUocm91dGUpKSB7XHJcblx0XHRcdGNvbnN0IHJlbW90ZU5hbWUgPSB0aGlzLmdldFJlbW90ZU5hbWUocm91dGUpO1xyXG5cdFx0XHRpZiAocmVtb3RlTmFtZSkge1xyXG5cdFx0XHRcdGNvbnN0IHRhYklkID0gdGhpcy5nZXRUYWJJZEZyb21Sb3V0ZShyb3V0ZSk7XHJcblx0XHRcdFx0cmV0dXJuIHRhYklkID8gYG1mZToke3JlbW90ZU5hbWV9OiR7dGFiSWR9YCA6IGBtZmU6JHtyZW1vdGVOYW1lfWA7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdC8vIFRhbSBwYXRoOiBrw7ZrIOKGkiBpbnRlcm1lZGlhdGUg4oaSIHNlbGYuIEJvxZ8gc2VnbWVudGxlcmkgaW5kZXggaWxlIGtvcnV5YXJhayBoaXllcmFyxZ9pXHJcblx0XHQvLyBwb3ppc3lvbnVudSBrZXknZSBkYWhpbCBlZGVyaXogKGthcmRlxZ8gZW1wdHktcGF0aCByb3V0ZSdsYXIgZmFya2zEsSBrZXkgYWzEsXIpLlxyXG5cdFx0Y29uc3QgZnVsbFBhdGggPSByb3V0ZS5wYXRoRnJvbVJvb3RcclxuXHRcdFx0Lm1hcCgociwgaSkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IHNlZyA9IHIudXJsLm1hcCgocykgPT4gcy5wYXRoKS5qb2luKCcvJyk7XHJcblx0XHRcdFx0cmV0dXJuIHNlZy5sZW5ndGggPiAwID8gc2VnIDogYCMke2l9YDtcclxuXHRcdFx0fSlcclxuXHRcdFx0LmpvaW4oJy8nKTtcclxuXHRcdGNvbnN0IHF1ZXJ5UGFyYW1zID0gdGhpcy5zZXJpYWxpemVRdWVyeVBhcmFtcyhyb3V0ZS5xdWVyeVBhcmFtcyk7XHJcblx0XHRjb25zdCBmcmFnbWVudCA9IHJvdXRlLmZyYWdtZW50ID8gJyMnICsgcm91dGUuZnJhZ21lbnQgOiAnJztcclxuXHJcblx0XHRyZXR1cm4gZnVsbFBhdGggKyBxdWVyeVBhcmFtcyArIGZyYWdtZW50O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUXVlcnkgcGFyYW0nbGFyxLEgVVJMLXNhZmUgxZ9la2lsZGUgc2VyaWxlxZ90aXJpci4gYFVSTFNlYXJjaFBhcmFtc2AgY29uc3RydWN0b3IndW5hXHJcblx0ICogZG/En3J1ZGFuIG9iamVjdCB2ZXJpcnNlayBhcnJheSBkZcSfZXJsZXIgYD9pZHM9MSwyLDNgIGdpYmkgdGVrIGtleSBvbGFyYWsgeWF6xLFsxLFyO1xyXG5cdCAqIEFuZ3VsYXIgUm91dGVyJ8SxbiBgP2lkcz0xJmlkcz0yJmlkcz0zYCBkYXZyYW7EscWfxLF5bGEgdXl1bXN1eiBvbGFiaWxpci4gYGFwcGVuZGAgaWxlXHJcblx0ICogaGVyIGFycmF5IGVsZW1hbsSxIGF5csSxIGVudHJ5IG9sdXIgdmUgbnVsbC91bmRlZmluZWQgZGXEn2VybGVyIGF0bGFuxLFyLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgc2VyaWFsaXplUXVlcnlQYXJhbXMocGFyYW1zOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90WydxdWVyeVBhcmFtcyddKTogc3RyaW5nIHtcclxuXHRcdC8vIGBzb3J0KClgIGlsZSBkZXRlcm1pbmlzbSDigJQgYXluxLEgc2F5ZmFuxLFuIGZhcmtsxLEgaW5zZXJ0aW9uLW9yZGVyJ2zEsSBxdWVyeVBhcmFtcyfEsVxyXG5cdFx0Ly8gKGRlZXAgbGluayBzaGFyZSwgc2VydmVyLXNpZGUgcmVuZGVyLCBKUy1nZW5lcmF0ZWQgVVJMJ2xlcikgYXluxLEgcm91dGUga2V5IMO8cmV0aXIuXHJcblx0XHQvLyBBa3NpIHRha2RpcmRlIGA/Yj0xJmE9MmAgdmUgYD9hPTImYj0xYCBpa2kgYXlyxLEgaGFuZGxlIG9sYXJhayBjYWNoZSdsZW5pciDihpIgdGFiXHJcblx0XHQvLyBpem9sYXN5b251IGF5bsSxIHNheWZhbsSxbiBpa2kgYXlyxLEgaW5zdGFuY2UnxLFuxLEgYcOnYXIuXHJcblx0XHRjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocGFyYW1zKS5zb3J0KCk7XHJcblx0XHRpZiAoIWtleXMubGVuZ3RoKSByZXR1cm4gJyc7XHJcblx0XHRjb25zdCBvdXQgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XHJcblx0XHRmb3IgKGNvbnN0IGsgb2Yga2V5cykge1xyXG5cdFx0XHRjb25zdCB2ID0gcGFyYW1zW2tdO1xyXG5cdFx0XHRpZiAodiA9PSBudWxsKSBjb250aW51ZTtcclxuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkodikpIHtcclxuXHRcdFx0XHR2LmZvckVhY2goKHZ2KSA9PiB2diAhPSBudWxsICYmIG91dC5hcHBlbmQoaywgU3RyaW5nKHZ2KSkpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdG91dC5hcHBlbmQoaywgU3RyaW5nKHYpKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0Y29uc3Qgc3RyID0gb3V0LnRvU3RyaW5nKCk7XHJcblx0XHRyZXR1cm4gc3RyID8gJz8nICsgc3RyIDogJyc7XHJcblx0fVxyXG5cclxuXHRzaG91bGRSZXVzZVJvdXRlKGZ1dHVyZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgY3VycjogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IGJvb2xlYW4ge1xyXG5cdFx0Y29uc3QgZnV0dXJlTWF0Y2hlciA9IHRoaXMuaXNNYXRjaGVyUm91dGUoZnV0dXJlKTtcclxuXHRcdGNvbnN0IGN1cnJNYXRjaGVyID0gdGhpcy5pc01hdGNoZXJSb3V0ZShjdXJyKTtcclxuXHJcblx0XHRpZiAoZnV0dXJlTWF0Y2hlciAmJiBjdXJyTWF0Y2hlcikge1xyXG5cdFx0XHRjb25zdCBmciA9IHRoaXMuZ2V0UmVtb3RlTmFtZShmdXR1cmUpO1xyXG5cdFx0XHRjb25zdCBjciA9IHRoaXMuZ2V0UmVtb3RlTmFtZShjdXJyKTtcclxuXHRcdFx0Y29uc3QgZnQgPSB0aGlzLmdldFRhYklkRnJvbVJvdXRlKGZ1dHVyZSk7XHJcblx0XHRcdGNvbnN0IGN0ID0gdGhpcy5nZXRUYWJJZEZyb21Sb3V0ZShjdXJyKTtcclxuXHRcdFx0Ly8gQXluxLEgcmVtb3RlIG9sc2EgYmlsZSBmYXJrbMSxIHRhYidsZXJzZSBmcmVzaCBjb21wb25lbnQgaW5zdGFudGlhdGUgZWRpbG1lbGkg4oCUXHJcblx0XHRcdC8vIGFrc2kgdGFrZGlyZGUgaWtpIHRhYiB0ZWsgY29tcG9uZW50UmVmJ2kgcGF5bGHFn8SxciB2ZSBzdGF0ZSBpem9sYXN5b251IGtheWJvbHVyLlxyXG5cdFx0XHRjb25zdCBzaG91bGRSZXVzZSA9ICEhZnIgJiYgZnIgPT09IGNyICYmIGZ0ID09PSBjdDtcclxuXHRcdFx0Y29uc29sZS5sb2coYFtTdHJhdGVneV0gc2hvdWxkUmV1c2VSb3V0ZSBtYXRjaGVyIOKGkiAke3Nob3VsZFJldXNlfS4gZnV0dXJlPSR7ZnJ9LyR7ZnR9IGN1cnI9JHtjcn0vJHtjdH1gKTtcclxuXHRcdFx0cmV0dXJuIHNob3VsZFJldXNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChmdXR1cmVNYXRjaGVyICE9PSBjdXJyTWF0Y2hlcikge1xyXG5cdFx0XHRjb25zb2xlLmxvZygnW1N0cmF0ZWd5XSBzaG91bGRSZXVzZVJvdXRlIG1peGVkIOKGkiBmYWxzZScpO1xyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3Qgc2hvdWxkUmV1c2UgPSBmdXR1cmUucm91dGVDb25maWcgPT09IGN1cnIucm91dGVDb25maWc7XHJcblx0XHRjb25zdCBmdXR1cmVLZXkgPSB0aGlzLmdldFJvdXRlS2V5KGZ1dHVyZSk7XHJcblx0XHRjb25zdCBjdXJyS2V5ID0gdGhpcy5nZXRSb3V0ZUtleShjdXJyKTtcclxuXHRcdGNvbnN0IGZ1dHVyZUNvbXAgPSBmdXR1cmUucm91dGVDb25maWc/LmNvbXBvbmVudD8ubmFtZSA/PyBmdXR1cmUuY29tcG9uZW50Py5uYW1lID8/ICdub25lJztcclxuXHRcdGNvbnN0IGN1cnJDb21wID0gY3Vyci5yb3V0ZUNvbmZpZz8uY29tcG9uZW50Py5uYW1lID8/IGN1cnIuY29tcG9uZW50Py5uYW1lID8/ICdub25lJztcclxuXHRcdGNvbnNvbGUubG9nKFxyXG5cdFx0XHRgW1N0cmF0ZWd5XSBzaG91bGRSZXVzZVJvdXRlIG5vcm1hbCDihpIgJHtzaG91bGRSZXVzZX0uIGZ1dHVyZT1cIiR7ZnV0dXJlS2V5fVwiKCR7ZnV0dXJlQ29tcH0pIGN1cnI9XCIke2N1cnJLZXl9XCIoJHtjdXJyQ29tcH0pYFxyXG5cdFx0KTtcclxuXHRcdHJldHVybiBzaG91bGRSZXVzZTtcclxuXHR9XHJcbn1cclxuIl19
610
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXJvdXRlLXJldXNlLXN0cmF0ZWd5LmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9ib290L2NvbmZpZy9hcHBzL3NyYy9jdXN0b20tcm91dGUtcmV1c2Utc3RyYXRlZ3kuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixVQUFVLEVBQWMsVUFBVSxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUloRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUE2QjFEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Q0c7QUFJSCxNQUFNLE9BQU8sd0JBQXdCO0lBV3BDO1FBVkEsc0JBQWlCLEdBQXNCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2pFLGlCQUFZLEdBQXdDLEVBQUUsQ0FBQztRQUV2RDs7OztXQUlHO1FBQ0ssdUJBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQTRDLENBQUM7UUFHcEYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2hGLElBQUksQ0FBQyxHQUFHO2dCQUFFLE9BQU87WUFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsR0FBRyxpQkFBaUIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFNUIscUZBQXFGO1lBQ3JGLHlGQUF5RjtZQUN6RixtRkFBbUY7WUFD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QUksTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLElBQUksTUFBTSxDQUFDO1FBQzNGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxNQUFNLENBQUM7UUFDckYsT0FBTyxDQUFDLEdBQUcsQ0FDVix3Q0FBd0MsV0FBVyxhQUFhLFNBQVMsS0FBSyxVQUFVLFdBQVcsT0FBTyxLQUFLLFFBQVEsR0FBRyxDQUMxSCxDQUFDO1FBQ0YsT0FBTyxXQUFXLENBQUM7SUFDcEIsQ0FBQzsrR0ExakJXLHdCQUF3QjttSEFBeEIsd0JBQXdCLGNBRnhCLE1BQU07OzRGQUVOLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYsIERlc3Ryb3lSZWYsIEVsZW1lbnRSZWYsIEluamVjdGFibGUsIE9uRGVzdHJveSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgRGV0YWNoZWRSb3V0ZUhhbmRsZSwgUm91dGVSZXVzZVN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IFBsdWdpbkNvbmZpZyB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFJvdXRlQ2xvc2VTZXJ2aWNlIH0gZnJvbSAnLi9yb3V0ZS1jbG9zZS5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBBbmd1bGFyIFJvdXRlciBgRGV0YWNoZWRSb3V0ZUhhbmRsZWAnxLEgcmVzbWkgb2xhcmFrIG9wYXF1ZSAoYHt9YCkgYmlyIHR5cGUuXHJcbiAqIEludGVybmFsIHNoYXBlJ2kgcHVibGljIEFQSSdkYSB5b2ssIGFtYSBiaXogcHJlc2VydmUvcmVzdG9yZSBpw6dpbiBjb21wb25lbnRSZWYnZVxyXG4gKiBlcmnFn21lbWl6IGdlcmVraXlvci4gQnUgecO8emRlbiBpbnRlcm5hbCB5YXDEsXnEsSBtaW5pbWFsIMWfZWtpbGRlIG1vZGVsbGl5b3J1ei5cclxuICovXHJcbnR5cGUgSW50ZXJuYWxEZXRhY2hlZFJvdXRlSGFuZGxlID0gRGV0YWNoZWRSb3V0ZUhhbmRsZSAmIHtcclxuXHRjb21wb25lbnRSZWY/OiBDb21wb25lbnRSZWY8dW5rbm93bj47XHJcbn07XHJcblxyXG4vKipcclxuICogQXJpbFdlYkNvbXBvbmVudFdyYXBwZXIgaW5zdGFuY2UnxLFuZGEgc3RyYXRlZ3knbmluIGfDtnpsZXllY2XEn2kgYWxhbmxhci5cclxuICogV3JhcHBlcidhIGRvxJ9ydWRhbiBiYcSfxLFtbMSxIG9sbWFtYWsgacOnaW4gZHVjay10eXBpbmcgaWxlIG1pbmltYWwgaW50ZXJmYWNlLlxyXG4gKiBgbmVlZHNSZXN0b3JlYCB2ZSBgcHJvcHNVcGRhdGVkYCBiYXlyYWtsYXLEsSB3cmFwcGVyIGlsZSBzdHJhdGVneSBhcmFzxLFuZGFraSBzw7Z6bGXFn21lOlxyXG4gKiBzdHJhdGVneSBgcmV0cmlldmVgIHPEsXJhc8SxbmRhIHNldCBlZGVyLCB3cmFwcGVyIGBuZ0FmdGVyVmlld0luaXRgJ3RlIHTDvGtldGlyLlxyXG4gKi9cclxudHlwZSBXcmFwcGVySW5zdGFuY2UgPSB7XHJcblx0ZWxlbWVudD86IEhUTUxFbGVtZW50O1xyXG5cdHZjPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcblx0cHJvcHNVcGRhdGVkPzogYm9vbGVhbjtcclxuXHRuZWVkc1Jlc3RvcmU/OiBib29sZWFuO1xyXG59O1xyXG5cclxuaW50ZXJmYWNlIFByZXNlcnZlZEN1c3RvbUVsIHtcclxuXHRlbDogSFRNTEVsZW1lbnQ7XHJcblx0cGxhY2Vob2xkZXI6IENvbW1lbnQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUYWItYmF6bMSxIG5hdmlnYXRpb24gacOnaW4gY3VzdG9tIGBSb3V0ZVJldXNlU3RyYXRlZ3lgLlxyXG4gKlxyXG4gKiAjIyBUYWIgaXpvbGFzeW9udSAoYF90YWJgIHF1ZXJ5IHBhcmFtKVxyXG4gKiBgTmF2U2VydmljZWAgaGVyIHRhYidhIHVuaXF1ZSBgdGFiSWRgIMO8cmV0aXIgdmUgVVJMJ2UgYD9fdGFiPTx0YWJJZD5gIHF1ZXJ5IHBhcmFtXHJcbiAqIGVrbGVyLiBTdHJhdGVneSBidSBwYXJhbSfEsSByb3V0ZSBrZXknaW4gcGFyw6dhc8SxIHlhcGFyOlxyXG4gKiAgLSBNYXRjaGVyICh3ZWIgY29tcG9uZW50KSByb3V0ZSdsYXI6IGBtZmU6JHtyZW1vdGVOYW1lfToke3RhYklkfWBcclxuICogIC0gTm9ybWFsIHJvdXRlJ2xhcjogYHBhdGhGcm9tUm9vdGAgKyB0w7xtIHF1ZXJ5UGFyYW1zICh6YXRlbiBgX3RhYmAgZGFoaWwpXHJcbiAqXHJcbiAqIFNvbnXDpzogYXluxLEgc2F5ZmFuxLFuIGlraSB0YWInaSBgc3RvcmVkUm91dGVzYCDDvHplcmluZGUgZmFya2zEsSBzbG90J2xhcmEgeWF6xLFsxLFyXHJcbiAqIOKGkiBiYcSfxLFtc8SxeiBjb21wb25lbnRSZWYnbGVyLCBiYcSfxLFtc8SxeiBzdGF0ZS4gYHNob3VsZFJldXNlUm91dGVgIG1hdGNoZXIga2FyxZ/EsWxhxZ90xLFybWFzxLFcclxuICogYHRhYklkYCBmYXJrxLFuxLEgZGEgZGlra2F0ZSBhbMSxciDigJQgdGFiIGRlxJ9pxZ9pbWluZGUgZnJlc2ggY29tcG9uZW50IG9sdcWfdXIuXHJcbiAqXHJcbiAqICMjIE1pbWFyaTogaWtpIGJhxJ/EsW1zxLF6IGluc3RhbmNlXHJcbiAqIEJ1IHN0cmF0ZWd5IGhlbSBgYXJpbC9ib290L2hvc3Qvc3JjL2Jvb3RzdHJhcC50c2AndGUgaGVtIGhlciBNRkUgcmVtb3RlJ3VudW5cclxuICogYGFyaWwvYm9vdC9tZmUvc3JjL2Jvb3RzdHJhcC50c2AnaW5kZSBwcm92aWRlciBvbGFyYWsgdmVyaWxpeW9yLiBDbGFzc1xyXG4gKiBgcHJvdmlkZWRJbjogJ3Jvb3QnYCBvbGR1xJ91IGnDp2luICoqaGVyIHJvb3QgaW5qZWN0b3InZGEgQVlSSSBpbnN0YW5jZSoqIHlhxZ9hci5cclxuICogxLBraSBpbnN0YW5jZSBiYcSfxLFtc8SxeiBgc3RvcmVkUm91dGVzYCBtYXAnaSB0dXRhciB2ZSBiaXJiaXJpbmRlbiBoYWJlcnNpemRpcjpcclxuICpcclxuICogLSAqKkhvc3QgaW5zdGFuY2UqKjogbWF0Y2hlciByb3V0ZSdsYXLEsSB5w7ZuZXRpcjsga2V5IGBtZmU6JHtyZW1vdGVOYW1lfToke3RhYklkfWAuXHJcbiAqICAgVGFiIGthcGFuxLFwIGBtZmU6d2RtOmFiYzEyM2Agc2lsaW5kacSfaW5kZSBlZmZlY3QgcmVtb3RlJ2EgYWl0IGAjMC93ZG0vLi4uYFxyXG4gKiAgIHByZWZpeCdsaSBWRSBgX3RhYj1hYmMxMjNgIGnDp2VyZW4gY2hpbGQga2V5J2xlcmkgZGUgdGVtaXpsZXIuXHJcbiAqIC0gKipNRkUgaW5zdGFuY2UqKiAoaGVyIHJlbW90ZSd1biBrZW5kaSBpw6dpbmRlKTogbm9ybWFsIHJvdXRlJ2xhciBpw6dpbiDDp2FsxLHFn8Sxci5cclxuICogICBRdWVyeSBwYXJhbXMgemF0ZW4gYGdldFJvdXRlS2V5YCDDp8Sxa3TEsXPEsW5hIGRhaGlsIG9sZHXEn3UgacOnaW4gdGFiIGl6b2xhc3lvbnVcclxuICogICBkb8SfYWwgb2xhcmFrIGdlbGlyIOKAlCBlayDDtnplbCBkYXZyYW7EscWfIGdlcmVrbWV6LlxyXG4gKlxyXG4gKiAjIyBQbHVnaW4gY3VzdG9tIGVsZW1lbnQgcHJlc2VydmF0aW9uXHJcbiAqIGBwcmVzZXJ2ZUN1c3RvbUVsZW1lbnRzSW5UcmVlYCBkZXRhY2hlZCB2aWV3J2Rha2kgYDxtZC1zZWFyY2g+YCBnaWJpIGN1c3RvbVxyXG4gKiBlbGVtZW50J2xlcmkgaGlkZGVuIGNvbnRhaW5lcidhIHRhxZ/EsXIg4oCUIGVsZW1lbnQgZG9jdW1lbnQndGFuIGF5csSxbG1heiwgQW5ndWxhclxyXG4gKiBFbGVtZW50cyBgZGlzY29ubmVjdGVkQ2FsbGJhY2tgIDEwbXMgZGVzdHJveSB0aW1lcifEsSB0ZXRpa2xlbm1leiwgcGx1Z2luXHJcbiAqIGNvbXBvbmVudFJlZidpIHZlIGRhaGlsaSBzdGF0ZSdpIChmb3JtIGlucHV0LCBzZWFyY2ggc29udcOnbGFyxLEpIGtvcnVudXIuXHJcbiAqXHJcbiAqICMjIEJpbGluZW4gc8SxbsSxcmxhbWFsYXJcclxuICogLSBgc2hvdWxkRGV0YWNoYCBtYXRjaGVyIHJvdXRlJ2xhciBpw6dpbiB0YWJJZCB5b2trZW4gZmFsc2UgZMO2bmVyICh0YWJzxLF6IG9ycGhhblxyXG4gKiAgIGhhbmRsZSBvbHXFn21hc8SxbiksIGRpxJ9lciBkdXJ1bWxhcmRhIGB0cnVlYCDigJQgdMO8bSBkZXRhY2hlZCByb3V0ZSdsYXIgY2FjaGUnbGVuaXIuXHJcbiAqICAgTWVtb3J5IGxlYWsnaSBzxLFuxLFybGFtYWsgacOnaW4gYE5hdlNlcnZpY2VgIHRhYiBzYXnEsXPEsW7EsSBgTUFYX1RBQlNgIGlsZSBrxLFzxLF0bGFyXHJcbiAqICAgdmUgc29uIHRhYiBrYXBhdMSxbGTEscSfxLFuZGEgZWZmZWN0IHJlbW90ZSd1biB0w7xtIGNoaWxkIGtleSdsZXJpbmkgdGVtaXpsZXIuIFlpbmUgZGVcclxuICogICB0YWIgacOnaW5kZSBhw6fEsWxhbiBkZXRhaWwvZWRpdCBnaWJpIHBhcmFtZXRyZWxpIGFsdCBzYXlmYWxhcsSxbiBoYW5kbGUnbGFyxLEsIHBhcmVudFxyXG4gKiAgIHRhYiBrYXBhbmFuYSBrYWRhciBzdG9yZWRSb3V0ZXMndGEga2FsxLFyLlxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VzdG9tUm91dGVSZXVzZVN0cmF0ZWd5IGltcGxlbWVudHMgUm91dGVSZXVzZVN0cmF0ZWd5LCBPbkRlc3Ryb3kge1xyXG5cdHJvdXRlQ2xvc2VTZXJ2aWNlOiBSb3V0ZUNsb3NlU2VydmljZSA9IGluamVjdChSb3V0ZUNsb3NlU2VydmljZSk7XHJcblx0c3RvcmVkUm91dGVzOiBSZWNvcmQ8c3RyaW5nLCBEZXRhY2hlZFJvdXRlSGFuZGxlPiA9IHt9O1xyXG5cclxuXHQvKipcclxuXHQgKiBgKGRldGFjaGVkVHJlZSBhcyBhbnkpLl9fYXJpbFByZXNlcnZlZEN1c3RvbUVscyA9IFsuLi5dYCBydW50aW1lIHByb3BlcnR5XHJcblx0ICogZWtsZW1layB5ZXJpbmUgaGFuZGxlJ8SxIGtleSBvbGFyYWsga3VsbGFuYW4gYmlyIFdlYWtNYXAgdHV0dXlvcnV6IOKAlFxyXG5cdCAqIHR5cGUtc2FmZSB2ZSBoYW5kbGUgR0MneWUgdcSfcmFkxLHEn8SxbmRhIGJlbGxlayBvdG9tYXRpayB0ZW1pemxlbmlyLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgcHJlc2VydmVkQ3VzdG9tRWxzID0gbmV3IFdlYWtNYXA8RGV0YWNoZWRSb3V0ZUhhbmRsZSwgUHJlc2VydmVkQ3VzdG9tRWxbXT4oKTtcclxuXHJcblx0Y29uc3RydWN0b3IoKSB7XHJcblx0XHR0aGlzLnJvdXRlQ2xvc2VTZXJ2aWNlLmRlbGV0ZVJvdXRlJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKGtleSkgPT4ge1xyXG5cdFx0XHRpZiAoIWtleSkgcmV0dXJuO1xyXG5cdFx0XHRjb25zb2xlLmxvZyhgW1N0cmF0ZWd5XSBjbGVhbnVwIHRldGlrbGVuZGkga2V5PVwiJHtrZXl9XCIgc3RvcmVkS2V5cz1bJHtPYmplY3Qua2V5cyh0aGlzLnN0b3JlZFJvdXRlcykuam9pbignLCcpfV1gKTtcclxuXHRcdFx0dGhpcy5wcm9jZXNzQ2xlYW51cEtleShrZXkpO1xyXG5cclxuXHRcdFx0Ly8gQ3Jvc3MtaW5qZWN0b3IgeWF5xLFuOiBgUm91dGVDbG9zZVNlcnZpY2VgIGBwcm92aWRlZEluOiAncm9vdCdgIG9sZHXEn3UgacOnaW4gaG9zdCB2ZVxyXG5cdFx0XHQvLyBoZXIgTUZFIHJlbW90ZSd1bmRhIEFZUkkgaW5zdGFuY2UgeWHFn2FyLiBIb3N0J3RhbiB0ZXRpa2xlbmVuIGNsZWFudXAgTUZFIHN0cmF0ZWd5J3NpbmlcclxuXHRcdFx0Ly8gb3RvbWF0aWsgdXlhbmTEsXJtYXouIFdpbmRvdyBldmVudCBpbGUgc2lueWFsIHlhecSxbmxhecSxcCBNRkUgc3RyYXRlZ3knc2luaW4ga2VuZGlcclxuXHRcdFx0Ly8gYHN0b3JlZFJvdXRlc2AndW51IHRlbWl6bGVtZXNpbmkgc2HEn2zEsXlvcnV6IChha3NpIHRha2RpcmRlIE1GRSdkZSBoaWRkZW4gY29udGFpbmVyJ2FcclxuXHRcdFx0Ly8gdGHFn8Sxbm3EscWfIHBsdWdpbiBlbGVtZW50J2xlcmkgb3JwaGFuIGthbMSxcikuXHJcblx0XHRcdGlmIChrZXkuc3RhcnRzV2l0aCgnbWZlOicpKSB7XHJcblx0XHRcdFx0Y29uc3QgcGFyc2VkID0gdGhpcy5wYXJzZU1hdGNoZXJLZXkoa2V5KTtcclxuXHRcdFx0XHRpZiAocGFyc2VkKSB7XHJcblx0XHRcdFx0XHR3aW5kb3cuZGlzcGF0Y2hFdmVudChcclxuXHRcdFx0XHRcdFx0bmV3IEN1c3RvbUV2ZW50KCdhcmlsOnJlbW90ZS1jbGVhbnVwJywge1xyXG5cdFx0XHRcdFx0XHRcdGRldGFpbDogeyByZW1vdGVOYW1lOiBwYXJzZWQucmVtb3RlTmFtZSwgdGFiSWQ6IHBhcnNlZC50YWJJZCB9XHJcblx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0Ly8gS2FyxZ/EsSB5w7ZuZGUgKGNyb3NzLWluamVjdG9yKTogaG9zdCBzdHJhdGVneSduaW4geWF5xLFubGFkxLHEn8SxIGBhcmlsOnJlbW90ZS1jbGVhbnVwYFxyXG5cdFx0Ly8gZXZlbnQnaW5pIGhlciBNRkUgc3RyYXRlZ3kgaW5zdGFuY2UnxLEgeWFrYWxhciwga2VuZGkgYHN0b3JlZFJvdXRlc2AndW5kYWtpIG8gcmVtb3RlJ2FcclxuXHRcdC8vICh2ZSB2YXJzYSBvIHRhYklkJ3llKSBhaXQga2V5J2xlcmkgdGVtaXpsZXIuIEhvc3Qgc3RyYXRlZ3kgZGUgYnUgbGlzdGVuZXInYSBzYWhpcFxyXG5cdFx0Ly8gYW1hIGtlbmRpIGAjMC8ke3JlbW90ZU5hbWV9Ly4uLmAga2V5J2xlcmkgb2xtYWTEscSfxLEgacOnaW4gbm8tb3Agw6dhbMSxxZ/EsXIgKGfDvHZlbmxpKS5cclxuXHRcdGNvbnN0IGNsZWFudXBIYW5kbGVyID0gKGU6IEV2ZW50KTogdm9pZCA9PiB7XHJcblx0XHRcdGNvbnN0IGRldGFpbCA9IChlIGFzIEN1c3RvbUV2ZW50PHsgcmVtb3RlTmFtZT86IHN0cmluZzsgdGFiSWQ/OiBzdHJpbmcgfCBudWxsIH0+KS5kZXRhaWw7XHJcblx0XHRcdGNvbnN0IHJlbW90ZU5hbWUgPSBkZXRhaWw/LnJlbW90ZU5hbWU7XHJcblx0XHRcdGlmICghcmVtb3RlTmFtZSkgcmV0dXJuO1xyXG5cdFx0XHRjb25zdCB0YWJJZCA9IGRldGFpbD8udGFiSWQgPz8gbnVsbDtcclxuXHRcdFx0Y29uc3QgcHJlZml4ID0gYCMwLyR7cmVtb3RlTmFtZX1gO1xyXG5cdFx0XHRjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5zdG9yZWRSb3V0ZXMpLmZpbHRlcigoaykgPT4ge1xyXG5cdFx0XHRcdGlmICghay5zdGFydHNXaXRoKHByZWZpeCkpIHJldHVybiBmYWxzZTtcclxuXHRcdFx0XHQvLyB0YWJJZCB2ZXJpbGRpeXNlIFNBREVDRSBvIHRhYidhIGFpdCBjaGlsZCBoYW5kbGUnbGFyxLEgdGVtaXpsZS4gQWtzaSB0YWtkaXJkZVxyXG5cdFx0XHRcdC8vIGF5bsSxIHJlbW90ZSd1biBiYcWfa2EgdGFiJ2xlcmluaW4gc3RhdGUnaSBkZSB5YW5sxLHFn2zEsWtsYSBzaWxpbmlyLlxyXG5cdFx0XHRcdGlmICh0YWJJZCAmJiAhay5pbmNsdWRlcyhgX3RhYj0ke3RhYklkfWApKSByZXR1cm4gZmFsc2U7XHJcblx0XHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHRcdH0pO1xyXG5cdFx0XHRpZiAoIWtleXMubGVuZ3RoKSByZXR1cm47XHJcblx0XHRcdGNvbnNvbGUubG9nKGBbU3RyYXRlZ3ldIGNyb3NzLWluamVjdG9yIGNsZWFudXAgcmVtb3RlTmFtZT1cIiR7cmVtb3RlTmFtZX1cIiB0YWJJZD1cIiR7dGFiSWQgPz8gJyonfVwiIGtleXM9WyR7a2V5cy5qb2luKCcsJyl9XWApO1xyXG5cdFx0XHRmb3IgKGNvbnN0IGsgb2Yga2V5cykge1xyXG5cdFx0XHRcdHRoaXMuY2xlYW51cFN0b3JlZEhhbmRsZSh0aGlzLnN0b3JlZFJvdXRlc1trXSk7XHJcblx0XHRcdFx0ZGVsZXRlIHRoaXMuc3RvcmVkUm91dGVzW2tdO1xyXG5cdFx0XHR9XHJcblx0XHR9O1xyXG5cdFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2FyaWw6cmVtb3RlLWNsZWFudXAnLCBjbGVhbnVwSGFuZGxlcik7XHJcblx0XHQvLyBTdHJhdGVneSBgcHJvdmlkZWRJbjogJ3Jvb3QnYCDihpIgcm9vdCBpbmplY3RvciBkZXN0cm95IGVkaWxkacSfaW5kZSBsaXN0ZW5lcifEsSBrYWxkxLFyLlxyXG5cdFx0Ly8gUHJhdGlrdGUgdXp1biDDtm3DvHJsw7wgYW1hIHRlc3Qgb3J0YW3EsSB2ZSBnZWxlY2VrdGVraSBpZnJhbWUgdmIuIG11bHRpLXdpbmRvd1xyXG5cdFx0Ly8gc2VuYXJ5b2xhcmRhIG9ycGhhbiBsaXN0ZW5lciBixLFyYWttYW1hayBpw6dpbiBkZWZlbnNpdmUuXHJcblx0XHRpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdhcmlsOnJlbW90ZS1jbGVhbnVwJywgY2xlYW51cEhhbmRsZXIpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEluamVjdG9yIGRlc3Ryb3kgZWRpbGRpxJ9pbmRlIOKAlCBoaWJyaXQgbW9kZGEgaGVyIHRhYifEsW4gY2hpbGQgYEVudmlyb25tZW50SW5qZWN0b3JgJ8SxIHRhYlxyXG5cdCAqIGthcGFuxLFuY2EgYGRlc3Ryb3koKWAgZWRpbGlyOyBidSBzdHJhdGVneSBgcHJvdmlkZWRJbjoncm9vdCdgIG9sZHXEn3VuZGFuIGNoaWxkIGluamVjdG9yJ2RhXHJcblx0ICogKHJvb3Qtc2NvcGUpIG1hdGVyaWFsaXplIG9sbXXFnyBpbnN0YW5jZSBkYSB5xLFrxLFsxLFyIOKAlCBgc3RvcmVkUm91dGVzYCd0YSBrYWxhbiBUw5xNIGRldGFjaGVkXHJcblx0ICogaGFuZGxlJ2xhcsSxIHRlbWl6bGVyLiBBa3NpIGhhbGRlIGBwcmVzZXJ2ZUN1c3RvbUVsZW1lbnRzSW5UcmVlYCBpbGUgaGlkZGVuIGNvbnRhaW5lcidhXHJcblx0ICogdGHFn8Sxbm3EscWfIHBsdWdpbiBjdXN0b20gZWxlbWVudCdsZXJpICjDtnJuLiBgPG1kLXNlYXJjaD5gKSBvcnBoYW4ga2FsxLFyIChtZW1vcnkgbGVhayk6IE1GRVxyXG5cdCAqIGludGVybmFsIHJvdXRlIGtleSdsZXJpIGBfdGFiYCB0YcWfxLFtYWTEscSfxLEgacOnaW4gYGFyaWw6cmVtb3RlLWNsZWFudXBgIGNyb3NzLWluamVjdG9yIHRlbWl6bGnEn2lcclxuXHQgKiBvbmxhcmEgdWxhxZ9hbWF6LiBJbmplY3Rvci1kZXN0cm95IGJhemzEsSBidSBzw7xww7xybWUgZ2FyYW50aWxpIHZlIGlkZW1wb3RlbnR0aXIuXHJcblx0ICovXHJcblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcblx0XHRjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5zdG9yZWRSb3V0ZXMpO1xyXG5cdFx0aWYgKGtleXMubGVuZ3RoKSBjb25zb2xlLmxvZyhgW1N0cmF0ZWd5XSBuZ09uRGVzdHJveSDihpIgJHtrZXlzLmxlbmd0aH0gc3RvcmVkIGhhbmRsZSB0ZW1pemxlbml5b3IgKHRhYiBrYXBhbmTEsSlgKTtcclxuXHRcdGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcclxuXHRcdFx0dGhpcy5jbGVhbnVwU3RvcmVkSGFuZGxlKHRoaXMuc3RvcmVkUm91dGVzW2tleV0pO1xyXG5cdFx0XHRkZWxldGUgdGhpcy5zdG9yZWRSb3V0ZXNba2V5XTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFZlcmlsZW4ga2V5IGnDp2luIGRpcmVjdCArIGNoaWxkIGNsZWFudXAgdXlndWxhci4gRWZmZWN0IGnDp2luZGVuIGF5csSxxZ90xLFyxLFsbcSxxZ8gaGVscGVyLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgcHJvY2Vzc0NsZWFudXBLZXkoa2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuXHRcdC8vIERvxJ9ydWRhbiBlxZ9sZcWfZW4ga2V5IHZhcnNhIG9udSBzaWwuXHJcblx0XHRpZiAodGhpcy5zdG9yZWRSb3V0ZXNba2V5XSkge1xyXG5cdFx0XHRjb25zb2xlLmxvZyhgW1N0cmF0ZWd5XSBjbGVhbnVwIOKGkiBkaXJlY3QgbWF0Y2ggXCIke2tleX1cImApO1xyXG5cdFx0XHR0aGlzLmNsZWFudXBTdG9yZWRIYW5kbGUodGhpcy5zdG9yZWRSb3V0ZXNba2V5XSk7XHJcblx0XHRcdGRlbGV0ZSB0aGlzLnN0b3JlZFJvdXRlc1trZXldO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIE1hdGNoZXIga2V5IHNpbGluZGnEn2luZGUgKGBtZmU6d2RtOmFiY2AgZ2liaSkgbyByZW1vdGUnYSBhaXQg4oCUIHZhcnNhIG8gdGFiJ2EgYWl0IOKAlFxyXG5cdFx0Ly8gaW50ZXJuYWwgcm91dGUgaGFuZGxlJ2xhcsSxbsSxIGRhIHRlbWl6bGUuIENvbnZlbnRpb246IG1hdGNoZXIga2V5XHJcblx0XHQvLyBgbWZlOiR7cmVtb3RlTmFtZX1gIHZleWEgYG1mZToke3JlbW90ZU5hbWV9OiR7dGFiSWR9YCwgbm9ybWFsIGtleSdsZXJcclxuXHRcdC8vIGAjMC8ke3JlbW90ZU5hbWV9Ly4uLj8uLi4mX3RhYj0ke3RhYklkfWAgZm9ybWF0xLFuZGEuXHJcblx0XHRpZiAoa2V5LnN0YXJ0c1dpdGgoJ21mZTonKSkge1xyXG5cdFx0XHRjb25zdCBwYXJzZWQgPSB0aGlzLnBhcnNlTWF0Y2hlcktleShrZXkpO1xyXG5cdFx0XHRpZiAoIXBhcnNlZCkgcmV0dXJuO1xyXG5cdFx0XHRjb25zdCB7IHJlbW90ZU5hbWUsIHRhYklkIH0gPSBwYXJzZWQ7XHJcblx0XHRcdGNvbnN0IHByZWZpeCA9IGAjMC8ke3JlbW90ZU5hbWV9YDtcclxuXHRcdFx0Zm9yIChjb25zdCBrIG9mIE9iamVjdC5rZXlzKHRoaXMuc3RvcmVkUm91dGVzKSkge1xyXG5cdFx0XHRcdGlmICghay5zdGFydHNXaXRoKHByZWZpeCkpIGNvbnRpbnVlO1xyXG5cdFx0XHRcdC8vIHRhYklkIHZlcmlsZGl5c2Ugc2FkZWNlIG8gdGFiJ2EgYWl0IGNoaWxkIGhhbmRsZSdsYXLEsSB0ZW1pemxlXHJcblx0XHRcdFx0aWYgKHRhYklkICYmICFrLmluY2x1ZGVzKGBfdGFiPSR7dGFiSWR9YCkpIGNvbnRpbnVlO1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKGBbU3RyYXRlZ3ldIGNsZWFudXAg4oaSIGNoaWxkIG1hdGNoIFwiJHtrfVwiYCk7XHJcblx0XHRcdFx0dGhpcy5jbGVhbnVwU3RvcmVkSGFuZGxlKHRoaXMuc3RvcmVkUm91dGVzW2tdKTtcclxuXHRcdFx0XHRkZWxldGUgdGhpcy5zdG9yZWRSb3V0ZXNba107XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIGBtZmU6JHtyZW1vdGVOYW1lfWAgdmV5YSBgbWZlOiR7cmVtb3RlTmFtZX06JHt0YWJJZH1gIGZvcm1hdMSxbmRha2kgbWF0Y2hlciBrZXknaSBwYXJzZSBlZGVyLlxyXG5cdCAqIHRhYklkIHlva3NhIGBudWxsYCBkw7ZuZXIgKGdlcml5ZSBkw7Zuw7xrIHV5dW1sdWx1azogbGVnYWN5IMOnYcSfcsSxbGFyIHRhYklkIHZlcm1leWViaWxpcikuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBwYXJzZU1hdGNoZXJLZXkoa2V5OiBzdHJpbmcpOiB7IHJlbW90ZU5hbWU6IHN0cmluZzsgdGFiSWQ6IHN0cmluZyB8IG51bGwgfSB8IG51bGwge1xyXG5cdFx0aWYgKCFrZXkuc3RhcnRzV2l0aCgnbWZlOicpKSByZXR1cm4gbnVsbDtcclxuXHRcdGNvbnN0IHRhaWwgPSBrZXkuc3Vic3RyaW5nKDQpO1xyXG5cdFx0Y29uc3QgY29sb25JZHggPSB0YWlsLmluZGV4T2YoJzonKTtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdHJlbW90ZU5hbWU6IGNvbG9uSWR4ID09PSAtMSA/IHRhaWwgOiB0YWlsLnN1YnN0cmluZygwLCBjb2xvbklkeCksXHJcblx0XHRcdHRhYklkOiBjb2xvbklkeCA9PT0gLTEgPyBudWxsIDogdGFpbC5zdWJzdHJpbmcoY29sb25JZHggKyAxKVxyXG5cdFx0fTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFN0b3JlZCBoYW5kbGUnxLEgdGFtYW1lbiB0ZW1pemxlOiBoaWRkZW4gY29udGFpbmVyJ2Rha2kgcHJlc2VydmVkIGVsZW1lbnQnbGVyaSAocGx1Z2luXHJcblx0ICogY3VzdG9tIGVsZW1lbnQnbGVyaSArIEFyaWxXZWJDb21wb25lbnRXcmFwcGVyJ8SxbiBgPGFwcC14eHg+YCBlbGVtZW50J2kpIERPTSdkYW4ga2FsZMSxcixcclxuXHQgKiBzb25yYSBBbmd1bGFyIGBjb21wb25lbnRSZWYuZGVzdHJveSgpYCBpbGUgdmlldyB0cmVlJ3NpbmkgZGVzdHJveSBldC5cclxuXHQgKlxyXG5cdCAqIGBjb21wb25lbnRSZWYuZGVzdHJveSgpYCB0ZWsgYmHFn8SxbmEgeWV0ZXJsaSBkZcSfaWw6IEFuZ3VsYXIgc2FkZWNlIHZpZXcgdHJlZSdzaW5pIGJpbGlyLFxyXG5cdCAqIGJpemltIGBwcmVzZXJ2ZUN1c3RvbUVsZW1lbnRzSW5UcmVlYCB2ZSBgcHJlc2VydmVXZWJDb21wb25lbnRFbGVtZW50YCBpbGUgaGlkZGVuXHJcblx0ICogY29udGFpbmVyJ2EgbWFudWVsIHRhxZ/EsW5hbiBlbGVtZW50J2xlcmRlbiBoYWJlcmkgeW9rdHVyIOKGkiBvbmxhciBvcnBoYW4ga2FsxLFyLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgY2xlYW51cFN0b3JlZEhhbmRsZShoYW5kbGU6IERldGFjaGVkUm91dGVIYW5kbGUgfCBudWxsIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcblx0XHRpZiAoIWhhbmRsZSkgcmV0dXJuOyAvLyBBbmd1bGFyIFJvdXRlcifEsW4gYHN0b3JlKHJvdXRlLCBudWxsKWAgaWxlIGLEsXJha3TEscSfxLEgb3JwaGFuIGtleSdsZXIgacOnaW4gZGVmZW5zaXZlIGd1YXJkLlxyXG5cdFx0Y29uc3QgaGlkZGVuQ29udGFpbmVyID0gdGhpcy5nZXRIaWRkZW5Db250YWluZXIoKTtcclxuXHJcblx0XHQvLyAxLiBwcmVzZXJ2ZUN1c3RvbUVsZW1lbnRzSW5UcmVlIGlsZSB0YcWfxLFuYW4gcGx1Z2luIGVsZW1lbnQnbGVyaSAow7Zybi4gPG1kLXNlYXJjaD4pXHJcblx0XHRjb25zdCBwcmVzZXJ2ZWQgPSB0aGlzLnByZXNlcnZlZEN1c3RvbUVscy5nZXQoaGFuZGxlKTtcclxuXHRcdGlmIChwcmVzZXJ2ZWQpIHtcclxuXHRcdFx0Zm9yIChjb25zdCB7IGVsIH0gb2YgcHJlc2VydmVkKSB7XHJcblx0XHRcdFx0aWYgKGhpZGRlbkNvbnRhaW5lci5jb250YWlucyhlbCkpIHtcclxuXHRcdFx0XHRcdGhpZGRlbkNvbnRhaW5lci5yZW1vdmVDaGlsZChlbCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMucHJlc2VydmVkQ3VzdG9tRWxzLmRlbGV0ZShoYW5kbGUpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIDIuIHByZXNlcnZlV2ViQ29tcG9uZW50RWxlbWVudCBpbGUgdGHFn8SxbmFuIHdyYXBwZXIgZWxlbWVudCdpICjDtnJuLiA8YXBwLXdkbT4pXHJcblx0XHRjb25zdCBjb21wb25lbnRSZWYgPSAoaGFuZGxlIGFzIEludGVybmFsRGV0YWNoZWRSb3V0ZUhhbmRsZSkuY29tcG9uZW50UmVmO1xyXG5cdFx0Y29uc3QgaW5zdGFuY2UgPSBjb21wb25lbnRSZWY/Lmluc3RhbmNlIGFzIFdyYXBwZXJJbnN0YW5jZSB8IHVuZGVmaW5lZDtcclxuXHRcdGlmIChpbnN0YW5jZT8uZWxlbWVudCkge1xyXG5cdFx0XHQvLyBGbGFnJ2kgdGVtaXpsZSBraSByZW1vdmVDaGlsZCBzb25yYXPEsSB0ZXRpa2xlbmVuIGRpc2Nvbm5lY3RlZENhbGxiYWNrIEFwcGxpY2F0aW9uJ8SxXHJcblx0XHRcdC8vIGdlcsOnZWt0ZW4gZGVzdHJveSBldHNpbiDigJQgYWtzaSBoYWxkZSBNRkVBcHBFbGVtZW50IG9ycGhhbiBrYWzEsXIgKG1lbW9yeSBsZWFrKS5cclxuXHRcdFx0ZGVsZXRlIChpbnN0YW5jZS5lbGVtZW50IGFzIEhUTUxFbGVtZW50ICYgeyBfX2FyaWxQcmVzZXJ2ZUR1cmluZ0RldGFjaD86IGJvb2xlYW4gfSkuX19hcmlsUHJlc2VydmVEdXJpbmdEZXRhY2g7XHJcblx0XHRcdGlmIChoaWRkZW5Db250YWluZXIuY29udGFpbnMoaW5zdGFuY2UuZWxlbWVudCkpIHtcclxuXHRcdFx0XHRoaWRkZW5Db250YWluZXIucmVtb3ZlQ2hpbGQoaW5zdGFuY2UuZWxlbWVudCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvLyAzLiBBbmd1bGFyIHZpZXcgdHJlZSdzaW5pIGRlc3Ryb3kgZXRcclxuXHRcdGNvbXBvbmVudFJlZj8uZGVzdHJveSgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTWF0Y2hlciAoTUZFKSByb3V0ZSdsYXIgacOnaW4gdGFiSWQgem9ydW5sdS4gYGdldFRhYklkRnJvbVJvdXRlYCBVUkwgcXVlcnlQYXJhbXMgK1xyXG5cdCAqIGhpc3Rvcnkuc3RhdGUnaSBva3VyLiBIacOnYmlyIGtheW5hayB0YWJJZCB2ZXJtZXpzZSAoaWxrIG5hdmlnYXRpb24gaW50ZXJpbSdpKSBkZXRhY2hcclxuXHQgKiBlZGlsbWV6OyBgZmlyc3RDaGVja0ZvclJvdXRlYCBgX3RhYmAgZWtsZXlpcCB5ZW5pZGVuIG5hdmlnYXRlIGVkZWNlay5cclxuXHQgKi9cclxuXHRzaG91bGREZXRhY2gocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBib29sZWFuIHtcclxuXHRcdGlmICh0aGlzLmlzTWF0Y2hlclJvdXRlKHJvdXRlKSAmJiAhdGhpcy5nZXRUYWJJZEZyb21Sb3V0ZShyb3V0ZSkpIHtcclxuXHRcdFx0Y29uc29sZS5sb2coYFtTdHJhdGVneV0gc2hvdWxkRGV0YWNoIGtleT1cIiR7dGhpcy5nZXRSb3V0ZUtleShyb3V0ZSl9XCIg4oaSIGZhbHNlIChtYXRjaGVyIHJvdXRlLCB0YWJJZCB5b2spYCk7XHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHJvdXRlS2V5ID0gdGhpcy5nZXRSb3V0ZUtleShyb3V0ZSk7XHJcblx0XHQvLyBBbmd1bGFyIGBvdXRsZXQuZGV0YWNoKClgLCBgc3RvcmUoKWAnZGFuIMOWTkNFIMOnYWzEscWfxLFwIHdyYXBwZXIgdmlldyfEsW7EsSBET00nZGFuIHPDtmtlciDihpJcclxuXHRcdC8vIGnDp2luZGVraSBNRkUgYDxhcHAteHh4PmAgZWxlbWVudCdpIGRpc2Nvbm5lY3Qgb2x1ciB2ZSBiYXLEsW5kxLFyZMSxxJ/EsSBpZnJhbWUgKMO2cm4uIFN1cGVyc2V0IGVtYmVkKVxyXG5cdFx0Ly8gcmVsb2FkIG9sdXAgYXV0aCBoYW5kc2hha2UnaW5pIGthbMSxY8SxIGtheWJlZGVyLiBCdSB5w7x6ZGVuIGVsZW1lbnQnaSBIw4JMw4IgYmHEn2zEsXlrZW4sIGRldGFjaCd0ZW5cclxuXHRcdC8vIMOWTkNFIGF0b21pYyBgbW92ZUJlZm9yZWAgaWxlIGhpZGRlbiBjb250YWluZXInYSBhbMSxeW9ydXogKGJrei4gcHJlc2VydmVMaXZlRWxlbWVudEJlZm9yZURldGFjaCkuXHJcblx0XHRpZiAodGhpcy5pc01hdGNoZXJSb3V0ZShyb3V0ZSkpIHtcclxuXHRcdFx0dGhpcy5wcmVzZXJ2ZUxpdmVFbGVtZW50QmVmb3JlRGV0YWNoKHJvdXRlKTtcclxuXHRcdH1cclxuXHRcdGNvbnNvbGUubG9nKGBbU3RyYXRlZ3ldIHNob3VsZERldGFjaCBrZXk9XCIke3JvdXRlS2V5fVwiIOKGkiB0cnVlYCk7XHJcblx0XHRyZXR1cm4gdHJ1ZTtcclxuXHR9XHJcblxyXG5cdHN0b3JlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBkZXRhY2hlZFRyZWU6IERldGFjaGVkUm91dGVIYW5kbGUpOiB2b2lkIHtcclxuXHRcdGNvbnN0IHJvdXRlS2V5ID0gdGhpcy5nZXRSb3V0ZUtleShyb3V0ZSk7XHJcblx0XHRjb25zb2xlLmxvZyhgW1N0cmF0ZWd5XSBzdG9yZSBrZXk9XCIke3JvdXRlS2V5fVwiIGhhbmRsZT1gLCAhIWRldGFjaGVkVHJlZSk7XHJcblx0XHRpZiAoIWRldGFjaGVkVHJlZSkge1xyXG5cdFx0XHRkZWxldGUgdGhpcy5zdG9yZWRSb3V0ZXNbcm91dGVLZXldO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRpZiAodGhpcy5pc01hdGNoZXJSb3V0ZShyb3V0ZSkgJiYgIXRoaXMuZ2V0VGFiSWRGcm9tUm91dGUocm91dGUpKSB7XHJcblx0XHRcdGNvbnNvbGUubG9nKGBbU3RyYXRlZ3ldIHN0b3JlIFNLSVAga2V5PVwiJHtyb3V0ZUtleX1cIiAobWF0Y2hlciByb3V0ZSwgdGFiSWQgeW9rKWApO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLnN0b3JlZFJvdXRlc1tyb3V0ZUtleV0gPSBkZXRhY2hlZFRyZWU7XHJcblx0XHR0aGlzLnByZXNlcnZlV2ViQ29tcG9uZW50RWxlbWVudChkZXRhY2hlZFRyZWUpO1xyXG5cdFx0dGhpcy5wcmVzZXJ2ZUN1c3RvbUVsZW1lbnRzSW5UcmVlKGRldGFjaGVkVHJlZSk7XHJcblx0fVxyXG5cclxuXHRzaG91bGRBdHRhY2gocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBib29sZWFuIHtcclxuXHRcdGlmICh0aGlzLmlzTWF0Y2hlclJvdXRlKHJvdXRlKSAmJiAhdGhpcy5nZXRUYWJJZEZyb21Sb3V0ZShyb3V0ZSkpIHtcclxuXHRcdFx0Y29uc29sZS5sb2coYFtTdHJhdGVneV0gc2hvdWxkQXR0YWNoIGtleT1cIiR7dGhpcy5nZXRSb3V0ZUtleShyb3V0ZSl9XCIg4oaSIGZhbHNlIChtYXRjaGVyIHJvdXRlLCB0YWJJZCB5b2spYCk7XHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHJvdXRlS2V5ID0gdGhpcy5nZXRSb3V0ZUtleShyb3V0ZSk7XHJcblx0XHRjb25zdCBzaG91bGRBdHRhY2ggPSAhIXRoaXMuc3RvcmVkUm91dGVzW3JvdXRlS2V5XTtcclxuXHRcdGNvbnNvbGUubG9nKGBbU3RyYXRlZ3ldIHNob3VsZEF0dGFjaCBrZXk9XCIke3JvdXRlS2V5fVwiIOKGkiAke3Nob3VsZEF0dGFjaH0gKHN0b3JlZEtleXM9WyR7T2JqZWN0LmtleXModGhpcy5zdG9yZWRSb3V0ZXMpLmpvaW4oJywnKX1dKWApO1xyXG5cdFx0cmV0dXJuIHNob3VsZEF0dGFjaDtcclxuXHR9XHJcblxyXG5cdHJldHJpZXZlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogRGV0YWNoZWRSb3V0ZUhhbmRsZSB8IG51bGwge1xyXG5cdFx0aWYgKHRoaXMuaXNNYXRjaGVyUm91dGUocm91dGUpICYmICF0aGlzLmdldFRhYklkRnJvbVJvdXRlKHJvdXRlKSkge1xyXG5cdFx0XHRyZXR1cm4gbnVsbDtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHJvdXRlS2V5ID0gdGhpcy5nZXRSb3V0ZUtleShyb3V0ZSk7XHJcblx0XHRjb25zdCBoYW5kbGUgPSB0aGlzLnN0b3JlZFJvdXRlc1tyb3V0ZUtleV07XHJcblx0XHRjb25zb2xlLmxvZyhgW1N0cmF0ZWd5XSByZXRyaWV2ZSBrZXk9XCIke3JvdXRlS2V5fVwiIOKGkiAke2hhbmRsZSA/ICdIQVMnIDogJ05VTEwnfWApO1xyXG5cdFx0aWYgKGhhbmRsZSkge1xyXG5cdFx0XHR0aGlzLnJlc3RvcmVXZWJDb21wb25lbnRFbGVtZW50KGhhbmRsZSk7XHJcblx0XHRcdHRoaXMucmVzdG9yZUN1c3RvbUVsZW1lbnRzSW5UcmVlKGhhbmRsZSk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gaGFuZGxlIHx8IG51bGw7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBXZWIgY29tcG9uZW50IGVsZW1lbnQnaW5pIGhpZGRlbiBjb250YWluZXInYSB0YcWfxLFyIChzdGF0ZSBrb3J1bm1hc8SxIGnDp2luKS5cclxuXHQgKlxyXG5cdCAqIEVsZW1lbnQnZSBgX19hcmlsUHJlc2VydmVEdXJpbmdEZXRhY2hgIGZsYWcnaSB5YXrEsWzEsXI6IGByZW1vdmVDaGlsZGAgKyBgYXBwZW5kQ2hpbGRgXHJcblx0ICogYXJhc8SxbmRhIE1GRSBjdXN0b20gZWxlbWVudCdpbiBgZGlzY29ubmVjdGVkQ2FsbGJhY2tgJ2kgdGV0aWtsZW5peW9yOyBmbGFnIG9yYWRha2lcclxuXHQgKiBkZXN0cm95IHRpbWVyJ8SxbsSxICoqZGV0ZXJtaW5pc3RpYyoqIMWfZWtpbGRlIGJ5cGFzcyBlZGVyLiBFc2tpZGVuIDUwbXMgaGFyZGNvZGVkIHRpbWVyXHJcblx0ICogeWFyxLHFnyBrb8WfdWx1IMO8cmV0aXlvcmR1ICh5YXZhxZ8gY2loYXpsYXJkYSBBcHBsaWNhdGlvbiBpc3RlbXNpeiBkZXN0cm95IG9sdXlvcmR1KS5cclxuXHQgKi9cclxuXHRwcml2YXRlIHByZXNlcnZlV2ViQ29tcG9uZW50RWxlbWVudChkZXRhY2hlZFRyZWU6IERldGFjaGVkUm91dGVIYW5kbGUpOiB2b2lkIHtcclxuXHRcdHRyeSB7XHJcblx0XHRcdGNvbnN0IGNvbXBvbmVudFJlZiA9IChkZXRhY2hlZFRyZWUgYXMgSW50ZXJuYWxEZXRhY2hlZFJvdXRlSGFuZGxlKS5jb21wb25lbnRSZWY7XHJcblx0XHRcdGlmICghY29tcG9uZW50UmVmKSByZXR1cm47XHJcblxyXG5cdFx0XHRjb25zdCBjb21wb25lbnRJbnN0YW5jZSA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBXcmFwcGVySW5zdGFuY2UgfCB1bmRlZmluZWQ7XHJcblx0XHRcdGlmICghY29tcG9uZW50SW5zdGFuY2U/LmVsZW1lbnQpIHJldHVybjtcclxuXHJcblx0XHRcdGNvbnN0IGVsZW1lbnQgPSBjb21wb25lbnRJbnN0YW5jZS5lbGVtZW50IGFzIEhUTUxFbGVtZW50ICYgeyBfX2FyaWxQcmVzZXJ2ZUR1cmluZ0RldGFjaD86IGJvb2xlYW4gfTtcclxuXHRcdFx0Y29uc3QgaGlkZGVuQ29udGFpbmVyID0gdGhpcy5nZXRIaWRkZW5Db250YWluZXIoKTtcclxuXHJcblx0XHRcdC8vIEZsYWcg4oCUIGZhbGxiYWNrIChtb3ZlQmVmb3JlIGRlc3Rla2xlbm1leWVuIHRhcmF5xLFjxLEpIHJlbW92ZUNoaWxkIHlhcHTEscSfxLFuZGEgZGlzY29ubmVjdGVkQ2FsbGJhY2tcclxuXHRcdFx0Ly8gYnVudSBva3V5dXAgZGVzdHJveSfEsSBhdGxhci4gbW92ZUJlZm9yZSB5b2x1bmRhIGNhbGxiYWNrIGhpw6cgdGV0aWtsZW5tZXogKGZsYWcgemFyYXJzxLF6IGthbMSxcikuXHJcblx0XHRcdGVsZW1lbnQuX19hcmlsUHJlc2VydmVEdXJpbmdEZXRhY2ggPSB0cnVlO1xyXG5cclxuXHRcdFx0Ly8gYHNob3VsZERldGFjaGAgw6dvxJ91IGR1cnVtZGEgZWxlbWVudCdpIGRldGFjaCd0ZW4gw5ZOQ0UgemF0ZW4gdGHFn8SxZMSxIOKGkiBidXJhZGEgbm8tb3AuXHJcblx0XHRcdGlmIChoaWRkZW5Db250YWluZXIuY29udGFpbnMoZWxlbWVudCkpIHJldHVybjtcclxuXHJcblx0XHRcdC8vIFRhxZ/EsW5tYWTEsXlzYSAow7ZyLiBzaG91bGREZXRhY2ggZWxlbWVudCdpIGJ1bGFtYWTEsSk6IGJ1IG5va3RhZGEgZWxlbWVudCBBbmd1bGFyIHRhcmFmxLFuZGFuXHJcblx0XHRcdC8vIHphdGVuIGRpc2Nvbm5lY3QgZWRpbG1pxZ8gb2xhYmlsaXI7IG1vdmVJbnRvIGJhxJ9sxLF5c2EgbW92ZUJlZm9yZSwgZGXEn2lsc2UgYXBwZW5kQ2hpbGQga3VsbGFuxLFyLlxyXG5cdFx0XHR0aGlzLm1vdmVJbnRvKGhpZGRlbkNvbnRhaW5lciwgZWxlbWVudCk7XHJcblx0XHRcdGNvbnNvbGUubG9nKCdXZWIgY29tcG9uZW50IGVsZW1lbnQgaGlkZGVuIGNvbnRhaW5lclxcJ2EgdGHFn8SxbmTEsSAoc3RhdGUga29ydW51eW9yKScpO1xyXG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcclxuXHRcdFx0Y29uc29sZS53YXJuKCdXZWIgY29tcG9uZW50IGVsZW1lbnQgcHJlc2VydmUgZWRpbGlya2VuIGhhdGE6JywgZXJyb3IpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogV2ViIGNvbXBvbmVudCBlbGVtZW50J2luaSBoaWRkZW4gY29udGFpbmVyJ2RhbiDDp8Sxa2FyIHZlIGNvbXBvbmVudCB2aWV3J2EgZWtsZW1leWkgZGVuZS5cclxuXHQgKlxyXG5cdCAqIGBfX2FyaWxQcmVzZXJ2ZUR1cmluZ0RldGFjaGAgZmxhZydpIHRlbWl6bGVuaXIg4oCUIGXEn2VyIGJ1IHJldHJpZXZlIHNvbnJhc8SxIGVsZW1lbnRcclxuXHQgKiBnZXLDp2VrIGFubGFtZGEgZGVzdHJveSBlZGlsaXJzZSBgZGlzY29ubmVjdGVkQ2FsbGJhY2tgIGZsYWcgeW9rIGthYnVsIGVkaXAgQXBwbGljYXRpb25cclxuXHQgKiBjbGVhbnVwJ8SxbsSxIHnDvHLDvHRlY2VrLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgcmVzdG9yZVdlYkNvbXBvbmVudEVsZW1lbnQoZGV0YWNoZWRUcmVlOiBEZXRhY2hlZFJvdXRlSGFuZGxlKTogdm9pZCB7XHJcblx0XHR0cnkge1xyXG5cdFx0XHRjb25zdCBjb21wb25lbnRSZWYgPSAoZGV0YWNoZWRUcmVlIGFzIEludGVybmFsRGV0YWNoZWRSb3V0ZUhhbmRsZSkuY29tcG9uZW50UmVmO1xyXG5cdFx0XHRpZiAoIWNvbXBvbmVudFJlZikgcmV0dXJuO1xyXG5cclxuXHRcdFx0Y29uc3QgY29tcG9uZW50SW5zdGFuY2UgPSBjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgV3JhcHBlckluc3RhbmNlIHwgdW5kZWZpbmVkO1xyXG5cdFx0XHRpZiAoIWNvbXBvbmVudEluc3RhbmNlPy5lbGVtZW50KSByZXR1cm47XHJcblxyXG5cdFx0XHRjb25zdCBlbGVtZW50ID0gY29tcG9uZW50SW5zdGFuY2UuZWxlbWVudCBhcyBIVE1MRWxlbWVudCAmIHsgX19hcmlsUHJlc2VydmVEdXJpbmdEZXRhY2g/OiBib29sZWFuIH07XHJcblx0XHRcdGNvbnN0IGhpZGRlbkNvbnRhaW5lciA9IHRoaXMuZ2V0SGlkZGVuQ29udGFpbmVyKCk7XHJcblxyXG5cdFx0XHRpZiAoIWhpZGRlbkNvbnRhaW5lci5jb250YWlucyhlbGVtZW50KSkgcmV0dXJuO1xyXG5cclxuXHRcdFx0Ly8gw5ZORU1MSTogZWxlbWVudCdpIGhpZGRlbiBjb250YWluZXInZGFuIEVSS0VOIMOnxLFrYXJtxLF5b3J1ei4gYHJldHJpZXZlYCwgQW5ndWxhclxyXG5cdFx0XHQvLyBgb3V0bGV0LmF0dGFjaCgpYCd0ZW4gw5ZOQ0Ugw6dhxJ9yxLFsxLFyIOKGkiB2YyBoZW7DvHogRE9NJ2EgYmHEn2zEsSBkZcSfaWxkaXIuIEVya2VuIHJlbW92ZUNoaWxkXHJcblx0XHRcdC8vIGVsZW1lbnQnaSBkaXNjb25uZWN0IGVkZXIgdmUgaWZyYW1lIHJlbG9hZCBvbHVyICh0YW0ga2HDp8SxbmTEscSfxLFtxLF6IMWfZXkpLiBCdW51biB5ZXJpbmVcclxuXHRcdFx0Ly8gZWxlbWVudCdpIGhpZGRlbiBjb250YWluZXInZGEgKGJhxJ9sxLEpIGLEsXJha8SxcCB2YyBiYcSfbGFuxLFuY2EgYXRvbWljIG1vdmVCZWZvcmUgaWxlXHJcblx0XHRcdC8vIGRvxJ9ydWRhbiBoaWRkZW4g4oaSIHZjIHRhxZ/EsXlvcnV6OyBpZnJhbWUgaGnDpyByZWxvYWQgb2xtYXouXHJcblx0XHRcdGNvbnN0IHRyeVJlc3RvcmUgPSAoKTogYm9vbGVhbiA9PiB7XHJcblx0XHRcdFx0Y29uc3QgdmNOYXRpdmUgPSBjb21wb25lbnRJbnN0YW5jZS52Yz8ubmF0aXZlRWxlbWVudDtcclxuXHRcdFx0XHRpZiAoIXZjTmF0aXZlIHx8ICF2Y05hdGl2ZS5pc0Nvbm5lY3RlZCkgcmV0dXJuIGZhbHNlO1xyXG5cdFx0XHRcdHRoaXMubW92ZUludG8odmNOYXRpdmUsIGVsZW1lbnQpO1xyXG5cdFx0XHRcdC8vIEZsYWcnaSBtb3ZlSW50byBTT05SQVNJIHNpbDogZmFsbGJhY2sgcmVtb3ZlQ2hpbGQgeWFwYXJzYSBkaXNjb25uZWN0ZWRDYWxsYmFjayBmbGFnJ2kgaMOibMOiIGfDtnJzw7xuLlxyXG5cdFx0XHRcdGRlbGV0ZSBlbGVtZW50Ll9fYXJpbFByZXNlcnZlRHVyaW5nRGV0YWNoO1xyXG5cdFx0XHRcdGNvbXBvbmVudEluc3RhbmNlLnByb3BzVXBkYXRlZCA9IGZhbHNlO1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdXZWIgY29tcG9uZW50IGVsZW1lbnQgY29tcG9uZW50IHZpZXdcXCdhIGVrbGVuZGkgKHJldHJpZXZlIHPEsXJhc8SxbmRhKScpO1xyXG5cdFx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0XHR9O1xyXG5cclxuXHRcdFx0Ly8gSGVtZW4gZGVuZSAodmMgZ2VuZWxkZSBiYcSfbMSxIGRlxJ9pbCkg4oaSIGRlxJ9pbHNlIG1pY3JvdGFzayd0ZSB0ZWtyYXIgZGVuZS4gYG91dGxldC5hdHRhY2goKWBcclxuXHRcdFx0Ly8gcmV0cmlldmUnZGVuIGhlbWVuIHNvbnJhIFNFTktST04gw6dhbMSxxZ/EsXI7IG1pY3JvdGFzayBnZcOnZXJsaSB0YXNrIGJpdGluY2UgKGF0dGFjaCB0YW1hbWxhbm3EscWfLFxyXG5cdFx0XHQvLyB2YyBiYcSfbMSxKSBhbWEgUEFJTlQndGVuIMOWTkNFIGtvxZ9hciDihpIgZWxlbWVudCB5ZXJpbmUgb3R1cnVyLCB0YWIgZ2XDp2nFn2luZGUgYm/Fny1mbGFzaCBvbG1hei5cclxuXHRcdFx0aWYgKHRyeVJlc3RvcmUoKSkgcmV0dXJuO1xyXG5cdFx0XHRxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XHJcblx0XHRcdFx0aWYgKHRyeVJlc3RvcmUoKSkgcmV0dXJuO1xyXG5cdFx0XHRcdC8vIFNvbiDDp2FyZTogdmMgaMOibMOiIGJhxJ9sxLEgZGXEn2lsLiBFbGVtZW50J2kgeWluZSBkZSB2Yyd5ZSB0YcWfxLEga2kgdGFiIGJvxZ8ga2FsbWFzxLFuXHJcblx0XHRcdFx0Ly8gKGF0dGFjaCB2aWV3J8SxIGJhxJ9sYXnEsW5jYSBnw7Zyw7xuw7xyIG9sdXIg4oCUIGlmcmFtZSByZWxvYWQgb2xhYmlsaXIgYW1hIGVza2kgZGF2cmFuxLHFnyBrb3J1bnVyKS5cclxuXHRcdFx0XHRjb25zdCB2Y05hdGl2ZSA9IGNvbXBvbmVudEluc3RhbmNlLnZjPy5uYXRpdmVFbGVtZW50O1xyXG5cdFx0XHRcdGlmICh2Y05hdGl2ZSkge1xyXG5cdFx0XHRcdFx0dGhpcy5tb3ZlSW50byh2Y05hdGl2ZSwgZWxlbWVudCk7XHJcblx0XHRcdFx0XHRkZWxldGUgZWxlbWVudC5fX2FyaWxQcmVzZXJ2ZUR1cmluZ0RldGFjaDtcclxuXHRcdFx0XHRcdGNvbXBvbmVudEluc3RhbmNlLnByb3BzVXBkYXRlZCA9IGZhbHNlO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRjb21wb25lbnRJbnN0YW5jZS5uZWVkc1Jlc3RvcmUgPSB0cnVlO1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ1dlYiBjb21wb25lbnQgZWxlbWVudCByZXN0b3JlIGVkaWxlY2VrICh2aWV3IGhhesSxciBkZcSfaWwsIG5nQWZ0ZXJWaWV3SW5pdFxcJ3RlIHRla3JhciBkZW5lbmVjZWspJyk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XHJcblx0XHRcdGNvbnNvbGUud2FybignV2ViIGNvbXBvbmVudCBlbGVtZW50IHJlc3RvcmUgZWRpbGlya2VuIGhhdGE6JywgZXJyb3IpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2xvYmFsIGhpZGRlbiBjb250YWluZXInxLEgb2x1xZ90dXJ1ciB2ZXlhIGTDtm5kw7xyw7xyXHJcblx0ICovXHJcblx0cHJpdmF0ZSBnZXRIaWRkZW5Db250YWluZXIoKTogSFRNTEVsZW1lbnQge1xyXG5cdFx0Y29uc3Qgc2xvdCA9IGdsb2JhbFRoaXMgYXMgdHlwZW9mIGdsb2JhbFRoaXMgJiB7IF9fYXJpbFdlYkNvbXBvbmVudEhpZGRlbkNvbnRhaW5lcj86IEhUTUxFbGVtZW50IH07XHJcblx0XHRsZXQgY29udGFpbmVyID0gc2xvdC5fX2FyaWxXZWJDb21wb25lbnRIaWRkZW5Db250YWluZXI7XHJcblx0XHRpZiAoIWNvbnRhaW5lcikge1xyXG5cdFx0XHRjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuXHRcdFx0Y29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcblx0XHRcdGNvbnRhaW5lci5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XHJcblx0XHRcdGNvbnRhaW5lci5zdHlsZS5sZWZ0ID0gJy05OTk5cHgnO1xyXG5cdFx0XHRjb250YWluZXIuc3R5bGUudG9wID0gJy05OTk5cHgnO1xyXG5cdFx0XHRjb250YWluZXIuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xyXG5cdFx0XHRkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRhaW5lcik7XHJcblx0XHRcdHNsb3QuX19hcmlsV2ViQ29tcG9uZW50SGlkZGVuQ29udGFpbmVyID0gY29udGFpbmVyO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGNvbnRhaW5lcjtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIGBlbGAnaSBgdGFyZ2V0YCfEsW4gc29uIMOnb2N1xJ91IG9sYWNhayDFn2VraWxkZSBUQcWeSVIuIGBtb3ZlQmVmb3JlYCAoYXRvbWljIG1vdmUpIGRlc3Rla2xlbml5b3IgdmVcclxuXHQgKiBoZXIgaWtpIGTDvMSfw7xtIGRlIGJhxJ9sxLF5c2Egb251IGt1bGxhbsSxcjogbmVzdGVkIGJyb3dzaW5nIGNvbnRleHQgKGlmcmFtZSkgcmVsb2FkIE9MTUFEQU4gdmUgY3VzdG9tXHJcblx0ICogZWxlbWVudCdpbiBjb25uZWN0ZWQvZGlzY29ubmVjdGVkIGNhbGxiYWNrJ2xlcmkgdGV0aWtsZW5tZWRlbiB0YcWfxLFyIOKGkiBpZnJhbWUtdGFiYW5sxLEgZW1iZWQnbGVyaW5cclxuXHQgKiAoU3VwZXJzZXQpIGF1dGggaGFuZHNoYWtlJ2kgKyBzY3JvbGwvZmlsdHJlIHN0YXRlJ2kga29ydW51ci4gRGVzdGVrbGVubWl5b3JzYSB2ZXlhIHRhxZ/EsW1hIGvEsXPEsXRsYXLEsVxyXG5cdCAqIGlobGFsIGVkaWxpcnNlIChkaXNjb25uZWN0ZWQgLyBjcm9zcy1kb2N1bWVudCkgcmVtb3ZlQ2hpbGQrYXBwZW5kQ2hpbGQnYSBkw7zFn2VyIChlc2tpIGRhdnJhbsSxxZ86IGlmcmFtZVxyXG5cdCAqIHJlbG9hZCBvbHVyIGFtYSBpxZ9sZW0gZ8O8dmVubGkgdGFtYW1sYW7EsXIpLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgbW92ZUludG8odGFyZ2V0OiBIVE1MRWxlbWVudCwgZWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XHJcblx0XHRjb25zdCBtb3ZlciA9IHRhcmdldCBhcyBIVE1MRWxlbWVudCAmIHsgbW92ZUJlZm9yZT86IChub2RlOiBOb2RlLCBjaGlsZDogTm9kZSB8IG51bGwpID0+IHZvaWQgfTtcclxuXHRcdGlmICh0eXBlb2YgbW92ZXIubW92ZUJlZm9yZSA9PT0gJ2Z1bmN0aW9uJyAmJiBlbC5pc0Nvbm5lY3RlZCAmJiB0YXJnZXQuaXNDb25uZWN0ZWQpIHtcclxuXHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRtb3Zlci5tb3ZlQmVmb3JlKGVsLCBudWxsKTtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH0gY2F0Y2gge1xyXG5cdFx0XHRcdC8vIG1vdmVCZWZvcmUga8Sxc8SxdGxhcsSxIGlobGFsIGVkaWxkaSDihpIgYcWfYcSfxLFkYWtpIGtsYXNpayB0YcWfxLFtYXlhIGTDvMWfLlxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRpZiAoZWwucGFyZW50Tm9kZSAmJiBlbC5wYXJlbnROb2RlICE9PSB0YXJnZXQpIHtcclxuXHRcdFx0ZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbCk7XHJcblx0XHR9XHJcblx0XHRpZiAoIXRhcmdldC5jb250YWlucyhlbCkpIHtcclxuXHRcdFx0dGFyZ2V0LmFwcGVuZENoaWxkKGVsKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIGBzaG91bGREZXRhY2hgIGnDp2luZGVuLCBBbmd1bGFyIGBvdXRsZXQuZGV0YWNoKClgIMOnYWzEscWfbWFkYW4gw5ZOQ0Ugw6dhxJ9yxLFsxLFyOiBjYW5sxLEgb3V0bGV0J3Rla2kgTUZFXHJcblx0ICogZWxlbWVudCdpbmkgYGFyaWwtdGFiLWlkYCBhdHRyaWJ1dGUndW5kYW4gYnVsdXAgYXRvbWljIGBtb3ZlQmVmb3JlYCBpbGUgaGlkZGVuIGNvbnRhaW5lcidhIHRhxZ/EsXIuXHJcblx0ICogQsO2eWxlY2UgQW5ndWxhciB3cmFwcGVyIHZpZXcnxLFuxLEgc8O2a3TDvMSfw7xuZGUgYDxhcHAteHh4PmAgZWxlbWVudCdpIHphdGVuIGfDvHZlbmxpL2JhxJ9sxLEga29udW1kYWTEsXIgdmVcclxuXHQgKiBiYXLEsW5kxLFyZMSxxJ/EsSBpZnJhbWUgcmVsb2FkIG9sbWF6LiBFbGVtZW50IGJ1bHVuYW1heiB5YSBkYSB6YXRlbiBoaWRkZW4gY29udGFpbmVyJ2RheXNhIG5vLW9wIOKGklxyXG5cdCAqIGBzdG9yZSgpYCBlc2tpIHlvbHV5bGEgZGV2cmV5ZSBnaXJlciAocmVncmVzeW9uIHlvaykuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBwcmVzZXJ2ZUxpdmVFbGVtZW50QmVmb3JlRGV0YWNoKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogdm9pZCB7XHJcblx0XHR0cnkge1xyXG5cdFx0XHRjb25zdCB0YWJJZCA9IHRoaXMuZ2V0VGFiSWRGcm9tUm91dGUocm91dGUpO1xyXG5cdFx0XHRpZiAoIXRhYklkKSByZXR1cm47XHJcblx0XHRcdGNvbnN0IGhpZGRlbkNvbnRhaW5lciA9IHRoaXMuZ2V0SGlkZGVuQ29udGFpbmVyKCk7XHJcblx0XHRcdGNvbnN0IGNhbmRpZGF0ZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbYXJpbC10YWItaWQ9XCIke3RhYklkfVwiXWApO1xyXG5cdFx0XHRmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBBcnJheS5mcm9tKGNhbmRpZGF0ZXMpKSB7XHJcblx0XHRcdFx0Y29uc3QgZWwgPSBjYW5kaWRhdGUgYXMgSFRNTEVsZW1lbnQgJiB7IF9fYXJpbFByZXNlcnZlRHVyaW5nRGV0YWNoPzogYm9vbGVhbiB9O1xyXG5cdFx0XHRcdGlmIChoaWRkZW5Db250YWluZXIuY29udGFpbnMoZWwpKSBjb250aW51ZTtcclxuXHRcdFx0XHQvLyBGYWxsYmFjayByZW1vdmVDaGlsZCB5b2x1bmRhIGRpc2Nvbm5lY3RlZENhbGxiYWNrJ2luIGRlc3Ryb3knxLEgYXRsYW1hc8SxIGnDp2luIGZsYWcnaSB0YcWfxLFtYWRhbiDDlk5DRSBzZXQgZXQuXHJcblx0XHRcdFx0ZWwuX19hcmlsUHJlc2VydmVEdXJpbmdEZXRhY2ggPSB0cnVlO1xyXG5cdFx0XHRcdHRoaXMubW92ZUludG8oaGlkZGVuQ29udGFpbmVyLCBlbCk7XHJcblx0XHRcdFx0Y29uc29sZS5sb2coYFtTdHJhdGVneV0gcHJlLWRldGFjaCBwcmVzZXJ2ZTogPCR7ZWwudGFnTmFtZS50b0xvd2VyQ2FzZSgpfT4gdGFiPVwiJHt0YWJJZH1cIiBoaWRkZW4gY29udGFpbmVyJ2EgdGHFn8SxbmTEsWApO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHRjb25zb2xlLndhcm4oJ1tTdHJhdGVneV0gcHJlLWRldGFjaCBwcmVzZXJ2ZSBoYXRhc8SxOicsIGVycm9yKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERldGFjaGVkIHJvdXRlIHZpZXcnxLEgacOnaW5kZWtpIHBsdWdpbi9NRkUgY3VzdG9tIGVsZW1lbnQnbGVyaW5pICh0YWcgYWTEsW5kYSBgLWBcclxuXHQgKiBidWx1bmFuIHZlIGBjdXN0b21FbGVtZW50c2AnYSBrYXnEsXRsxLEgb2xhbmxhcsSxKSBoaWRkZW4gY29udGFpbmVyJ2EgdGHFn8SxciB2ZVxyXG5cdCAqIHllcmxlcmluZSBiaXJlciBDb21tZW50IHBsYWNlaG9sZGVyIGLEsXJha8Sxci4gRWxlbWVudCBkb2N1bWVudCd0YW4gYXlyxLFsbWF6LFxyXG5cdCAqIEFuZ3VsYXIgRWxlbWVudHMgYGRpc2Nvbm5lY3RlZENhbGxiYWNrYCAxMG1zIGRlc3Ryb3kgdGltZXInxLEga2FuYXQgw6fEsXJwbWF6IOKAlFxyXG5cdCAqIGRvbGF5xLFzxLF5bGEgcGx1Z2luJ2luIGBDb21wb25lbnRSZWZgIHZlIGRhaGlsaSBzdGF0ZSdpIChmb3JtIGRlxJ9lcmxlcmksIHNlYXJjaFxyXG5cdCAqIHNvbnXDp2xhcsSxIHZzLikgc29ucmFraSByZXRyaWV2ZSdlIGthZGFyIGtvcnVudXIuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBwcmVzZXJ2ZUN1c3RvbUVsZW1lbnRzSW5UcmVlKGRldGFjaGVkVHJlZTogRGV0YWNoZWRSb3V0ZUhhbmRsZSk6IHZvaWQge1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0Y29uc3QgY29tcG9uZW50UmVmID0gKGRldGFjaGVkVHJlZSBhcyBJbnRlcm5hbERldGFjaGVkUm91dGVIYW5kbGUpLmNvbXBvbmVudFJlZjtcclxuXHRcdFx0Y29uc3Qgcm9vdEVsID0gY29tcG9uZW50UmVmPy5sb2NhdGlvbj8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcclxuXHRcdFx0aWYgKCFyb290RWwpIHJldHVybjtcclxuXHJcblx0XHRcdGNvbnN0IGhpZGRlbkNvbnRhaW5lciA9IHRoaXMuZ2V0SGlkZGVuQ29udGFpbmVyKCk7XHJcblx0XHRcdGNvbnN0IGFsbCA9IHJvb3RFbC5xdWVyeVNlbGVjdG9yQWxsKCcqJyk7XHJcblx0XHRcdGNvbnN0IHByZXNlcnZlZExpc3Q6IFByZXNlcnZlZEN1c3RvbUVsW10gPSBbXTtcclxuXHJcblx0XHRcdGZvciAoY29uc3QgZWwgb2YgQXJyYXkuZnJvbShhbGwpKSB7XHJcblx0XHRcdFx0Y29uc3QgdGFnID0gZWwudGFnTmFtZS50b0xvd2VyQ2FzZSgpO1xyXG5cdFx0XHRcdGlmICghdGFnLmluY2x1ZGVzKCctJykpIGNvbnRpbnVlO1xyXG5cdFx0XHRcdGlmICghd2luZG93LmN1c3RvbUVsZW1lbnRzPy5nZXQodGFnKSkgY29udGludWU7XHJcblxyXG5cdFx0XHRcdGNvbnN0IG5vZGUgPSBlbCBhcyBIVE1MRWxlbWVudDtcclxuXHRcdFx0XHRjb25zdCBwbGFjZWhvbGRlciA9IGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoYGFyaWwtcHJlc2VydmVkOiR7dGFnfWApO1xyXG5cdFx0XHRcdG5vZGUucGFyZW50Tm9kZT8uaW5zZXJ0QmVmb3JlKHBsYWNlaG9sZGVyLCBub2RlKTtcclxuXHRcdFx0XHRoaWRkZW5Db250YWluZXIuYXBwZW5kQ2hpbGQobm9kZSk7XHJcblx0XHRcdFx0cHJlc2VydmVkTGlzdC5wdXNoKHsgZWw6IG5vZGUsIHBsYWNlaG9sZGVyIH0pO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAocHJlc2VydmVkTGlzdC5sZW5ndGgpIHtcclxuXHRcdFx0XHR0aGlzLnByZXNlcnZlZEN1c3RvbUVscy5zZXQoZGV0YWNoZWRUcmVlLCBwcmVzZXJ2ZWRMaXN0KTtcclxuXHRcdFx0XHRjb25zb2xlLmxvZyhgW1N0cmF0ZWd5XSBwcmVzZXJ2ZUN1c3RvbUVsZW1lbnRzSW5UcmVlOiAke3ByZXNlcnZlZExpc3QubGVuZ3RofSBlbGVtZW50IHRhxZ/EsW5kxLFgKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcclxuXHRcdFx0Y29uc29sZS53YXJuKCdDdXN0b20gZWxlbWVudCBwcmVzZXJ2ZSBlZGlsaXJrZW4gaGF0YTonLCBlcnJvcik7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBwcmVzZXJ2ZUN1c3RvbUVsZW1lbnRzSW5UcmVlIGlsZSB0YcWfxLFuYW4gY3VzdG9tIGVsZW1lbnQnbGVyaSBvcmlqaW5hbFxyXG5cdCAqIHBsYWNlaG9sZGVyJ2xhcsSxbsSxbiB5ZXJpbmUgZ2VyaSBrb3lhci5cclxuXHQgKi9cclxuXHRwcml2YXRlIHJlc3RvcmVDdXN0b21FbGVtZW50c0luVHJlZShkZXRhY2hlZFRyZWU6IERldGFjaGVkUm91dGVIYW5kbGUpOiB2b2lkIHtcclxuXHRcdHRyeSB7XHJcblx0XHRcdGNvbnN0IHByZXNlcnZlZExpc3QgPSB0aGlzLnByZXNlcnZlZEN1c3RvbUVscy5nZXQoZGV0YWNoZWRUcmVlKTtcclxuXHRcdFx0aWYgKCFwcmVzZXJ2ZWRMaXN0Py5sZW5ndGgpIHJldHVybjtcclxuXHJcblx0XHRcdGZvciAoY29uc3QgeyBlbCwgcGxhY2Vob2xkZXIgfSBvZiBwcmVzZXJ2ZWRMaXN0KSB7XHJcblx0XHRcdFx0aWYgKHBsYWNlaG9sZGVyLnBhcmVudE5vZGUpIHtcclxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGVsLCBwbGFjZWhvbGRlcik7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdC8vIFBsYWNlaG9sZGVyIGHEn2HDp3RhbiBrb3BhcsSxbG3EscWfIOKAlCBwYXJlbnQgdmlldyB0YW1hbWVuIGRlc3Ryb3kgZWRpbG1pxZ8gb2xhYmlsaXJcclxuXHRcdFx0XHRcdC8vICjDtnJuLiByZW1vdGUgdGFiIGthcGFubcSxxZ8pLiBFbGVtZW50J2kgaGlkZGVuIGNvbnRhaW5lcidkYSBixLFyYWttYW1hayBpw6dpbiBjbGVhbnVwLlxyXG5cdFx0XHRcdFx0Y29uc29sZS53YXJuKCdbU3RyYXRlZ3ldIHJlc3RvcmU6IHBsYWNlaG9sZGVyIHBhcmVudCB5b2ssIGN1c3RvbSBlbGVtZW50IGNsZWFudXAgZWRpbGl5b3InLCBlbC50YWdOYW1lKTtcclxuXHRcdFx0XHRcdGlmIChlbC5wYXJlbnROb2RlID09PSB0aGlzLmdldEhpZGRlbkNvbnRhaW5lcigpKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuZ2V0SGlkZGVuQ29udGFpbmVyKCkucmVtb3ZlQ2hpbGQoZWwpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLnByZXNlcnZlZEN1c3RvbUVscy5kZWxldGUoZGV0YWNoZWRUcmVlKTtcclxuXHRcdFx0Y29uc29sZS5sb2coYFtTdHJhdGVneV0gcmVzdG9yZUN1c3RvbUVsZW1lbnRzSW5UcmVlOiAke3ByZXNlcnZlZExpc3QubGVuZ3RofSBlbGVtZW50IGdlcmkgeWVybGXFn3RpcmlsZGlgKTtcclxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XHJcblx0XHRcdGNvbnNvbGUud2FybignQ3VzdG9tIGVsZW1lbnQgcmVzdG9yZSBlZGlsaXJrZW4gaGF0YTonLCBlcnJvcik7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGlzTWF0Y2hlclJvdXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgbnVsbCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuICEhcm91dGU/LnJvdXRlQ29uZmlnPy5tYXRjaGVyO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXRSZW1vdGVOYW1lKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgbnVsbCk6IHN0cmluZyB8IG51bGwge1xyXG5cdFx0cmV0dXJuIChyb3V0ZT8ucm91dGVDb25maWc/LmRhdGEgYXMgUGx1Z2luQ29uZmlnIHwgdW5kZWZpbmVkKT8ucmVtb3RlTmFtZSA/PyBudWxsO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVVJMIGA/X3RhYj08dGFiSWQ+YCBxdWVyeSBwYXJhbSfEsW7EsSBva3Ug4oCUIGBOYXZTZXJ2aWNlYCBoZXIgdGFiIGnDp2luIHVuaXF1ZSBkZcSfZXIgw7xyZXRpci5cclxuXHQgKiBgSXNvbGF0ZWRMb2NhdGlvblN0cmF0ZWd5YCBzYXllc2luZGUgaG9zdCBSb3V0ZXInYSB0YWJzxLF6IG5hdmlnYXRpb24gZ2VsbWV6LCBzYWRlY2VcclxuXHQgKiBgdGFiU3RhdGUoe190YWJ9KWAnbMSxIHRhYiB0xLFrbGFtYWxhcsSxIGdlbGlyIOKGkiBgcm91dGUucXVlcnlQYXJhbXNbJ190YWInXWAgaGVyIHphbWFuIGRvbHUuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBnZXRUYWJJZEZyb21Sb3V0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IG51bGwpOiBzdHJpbmcgfCBudWxsIHtcclxuXHRcdGNvbnN0IHYgPSByb3V0ZT8ucXVlcnlQYXJhbXM/LlsnX3RhYiddO1xyXG5cdFx0cmV0dXJuIHR5cGVvZiB2ID09PSAnc3RyaW5nJyAmJiB2Lmxlbmd0aCA+IDAgPyB2IDogbnVsbDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJvdXRlIGtleSdpbmkgb2x1xZ90dXJ1ci4gTWF0Y2hlciAod2ViIGNvbXBvbmVudCkgcm91dGUnbGFyIGnDp2luIHJlbW90ZU5hbWUgKyB0YWJJZFxyXG5cdCAqIGJhemzEsSBrZXkga3VsbGFuxLFsxLFyIOKAlCBheW7EsSByZW1vdGUndW4gaGVyIHRhYidpIGF5csSxIE1GRSBjdXN0b20gZWxlbWVudCBpbnN0YW5jZSfEsW5hXHJcblx0ICogc2FoaXB0aXIgKGJhxJ/EsW1zxLF6IHN0YXRlKS5cclxuXHQgKlxyXG5cdCAqIE5vcm1hbCByb3V0ZSdsYXIgacOnaW4gYHBhdGhGcm9tUm9vdGAgw7x6ZXJpbmRlbiB0YW0geW9sIMO8cmV0aWxpciwgYXJkxLFuZGFuIHF1ZXJ5IHBhcmFtc1xyXG5cdCAqIGVrbGVuaXIgKHphdGVuIGBfdGFiYCBkYWhpbCkg4oCUIG5lc3RlZCBib8WfLXBhdGggKGBwYXRoOiAnJ2ApIGNoaWxkIHJvdXRlJ2xhcsSxbsSxbiBheW7EsSBgXCJcImBcclxuXHQgKiBrZXknaXlsZSDDp2FrxLHFn21hc8SxbsSxIGVuZ2VsbGVyIHZlIGF5bsSxIHBhdGgnaW4gaWtpIHRhYidpIGZhcmtsxLEga2V5IGFsxLFyLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgZ2V0Um91dGVLZXkocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBzdHJpbmcge1xyXG5cdFx0aWYgKHRoaXMuaXNNYXRjaGVyUm91dGUocm91dGUpKSB7XHJcblx0XHRcdGNvbnN0IHJlbW90ZU5hbWUgPSB0aGlzLmdldFJlbW90ZU5hbWUocm91dGUpO1xyXG5cdFx0XHRpZiAocmVtb3RlTmFtZSkge1xyXG5cdFx0XHRcdGNvbnN0IHRhYklkID0gdGhpcy5nZXRUYWJJZEZyb21Sb3V0ZShyb3V0ZSk7XHJcblx0XHRcdFx0cmV0dXJuIHRhYklkID8gYG1mZToke3JlbW90ZU5hbWV9OiR7dGFiSWR9YCA6IGBtZmU6JHtyZW1vdGVOYW1lfWA7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdC8vIFRhbSBwYXRoOiBrw7ZrIOKGkiBpbnRlcm1lZGlhdGUg4oaSIHNlbGYuIEJvxZ8gc2VnbWVudGxlcmkgaW5kZXggaWxlIGtvcnV5YXJhayBoaXllcmFyxZ9pXHJcblx0XHQvLyBwb3ppc3lvbnVudSBrZXknZSBkYWhpbCBlZGVyaXogKGthcmRlxZ8gZW1wdHktcGF0aCByb3V0ZSdsYXIgZmFya2zEsSBrZXkgYWzEsXIpLlxyXG5cdFx0Y29uc3QgZnVsbFBhdGggPSByb3V0ZS5wYXRoRnJvbVJvb3RcclxuXHRcdFx0Lm1hcCgociwgaSkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IHNlZyA9IHIudXJsLm1hcCgocykgPT4gcy5wYXRoKS5qb2luKCcvJyk7XHJcblx0XHRcdFx0cmV0dXJuIHNlZy5sZW5ndGggPiAwID8gc2VnIDogYCMke2l9YDtcclxuXHRcdFx0fSlcclxuXHRcdFx0LmpvaW4oJy8nKTtcclxuXHRcdGNvbnN0IHF1ZXJ5UGFyYW1zID0gdGhpcy5zZXJpYWxpemVRdWVyeVBhcmFtcyhyb3V0ZS5xdWVyeVBhcmFtcyk7XHJcblx0XHRjb25zdCBmcmFnbWVudCA9IHJvdXRlLmZyYWdtZW50ID8gJyMnICsgcm91dGUuZnJhZ21lbnQgOiAnJztcclxuXHJcblx0XHRyZXR1cm4gZnVsbFBhdGggKyBxdWVyeVBhcmFtcyArIGZyYWdtZW50O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUXVlcnkgcGFyYW0nbGFyxLEgVVJMLXNhZmUgxZ9la2lsZGUgc2VyaWxlxZ90aXJpci4gYFVSTFNlYXJjaFBhcmFtc2AgY29uc3RydWN0b3IndW5hXHJcblx0ICogZG/En3J1ZGFuIG9iamVjdCB2ZXJpcnNlayBhcnJheSBkZcSfZXJsZXIgYD9pZHM9MSwyLDNgIGdpYmkgdGVrIGtleSBvbGFyYWsgeWF6xLFsxLFyO1xyXG5cdCAqIEFuZ3VsYXIgUm91dGVyJ8SxbiBgP2lkcz0xJmlkcz0yJmlkcz0zYCBkYXZyYW7EscWfxLF5bGEgdXl1bXN1eiBvbGFiaWxpci4gYGFwcGVuZGAgaWxlXHJcblx0ICogaGVyIGFycmF5IGVsZW1hbsSxIGF5csSxIGVudHJ5IG9sdXIgdmUgbnVsbC91bmRlZmluZWQgZGXEn2VybGVyIGF0bGFuxLFyLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgc2VyaWFsaXplUXVlcnlQYXJhbXMocGFyYW1zOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90WydxdWVyeVBhcmFtcyddKTogc3RyaW5nIHtcclxuXHRcdC8vIGBzb3J0KClgIGlsZSBkZXRlcm1pbmlzbSDigJQgYXluxLEgc2F5ZmFuxLFuIGZhcmtsxLEgaW5zZXJ0aW9uLW9yZGVyJ2zEsSBxdWVyeVBhcmFtcyfEsVxyXG5cdFx0Ly8gKGRlZXAgbGluayBzaGFyZSwgc2VydmVyLXNpZGUgcmVuZGVyLCBKUy1nZW5lcmF0ZWQgVVJMJ2xlcikgYXluxLEgcm91dGUga2V5IMO8cmV0aXIuXHJcblx0XHQvLyBBa3NpIHRha2RpcmRlIGA/Yj0xJmE9MmAgdmUgYD9hPTImYj0xYCBpa2kgYXlyxLEgaGFuZGxlIG9sYXJhayBjYWNoZSdsZW5pciDihpIgdGFiXHJcblx0XHQvLyBpem9sYXN5b251IGF5bsSxIHNheWZhbsSxbiBpa2kgYXlyxLEgaW5zdGFuY2UnxLFuxLEgYcOnYXIuXHJcblx0XHRjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocGFyYW1zKS5zb3J0KCk7XHJcblx0XHRpZiAoIWtleXMubGVuZ3RoKSByZXR1cm4gJyc7XHJcblx0XHRjb25zdCBvdXQgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XHJcblx0XHRmb3IgKGNvbnN0IGsgb2Yga2V5cykge1xyXG5cdFx0XHRjb25zdCB2ID0gcGFyYW1zW2tdO1xyXG5cdFx0XHRpZiAodiA9PSBudWxsKSBjb250aW51ZTtcclxuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkodikpIHtcclxuXHRcdFx0XHR2LmZvckVhY2goKHZ2KSA9PiB2diAhPSBudWxsICYmIG91dC5hcHBlbmQoaywgU3RyaW5nKHZ2KSkpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdG91dC5hcHBlbmQoaywgU3RyaW5nKHYpKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0Y29uc3Qgc3RyID0gb3V0LnRvU3RyaW5nKCk7XHJcblx0XHRyZXR1cm4gc3RyID8gJz8nICsgc3RyIDogJyc7XHJcblx0fVxyXG5cclxuXHRzaG91bGRSZXVzZVJvdXRlKGZ1dHVyZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgY3VycjogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IGJvb2xlYW4ge1xyXG5cdFx0Y29uc3QgZnV0dXJlTWF0Y2hlciA9IHRoaXMuaXNNYXRjaGVyUm91dGUoZnV0dXJlKTtcclxuXHRcdGNvbnN0IGN1cnJNYXRjaGVyID0gdGhpcy5pc01hdGNoZXJSb3V0ZShjdXJyKTtcclxuXHJcblx0XHRpZiAoZnV0dXJlTWF0Y2hlciAmJiBjdXJyTWF0Y2hlcikge1xyXG5cdFx0XHRjb25zdCBmciA9IHRoaXMuZ2V0UmVtb3RlTmFtZShmdXR1cmUpO1xyXG5cdFx0XHRjb25zdCBjciA9IHRoaXMuZ2V0UmVtb3RlTmFtZShjdXJyKTtcclxuXHRcdFx0Y29uc3QgZnQgPSB0aGlzLmdldFRhYklkRnJvbVJvdXRlKGZ1dHVyZSk7XHJcblx0XHRcdGNvbnN0IGN0ID0gdGhpcy5nZXRUYWJJZEZyb21Sb3V0ZShjdXJyKTtcclxuXHRcdFx0Ly8gQXluxLEgcmVtb3RlIG9sc2EgYmlsZSBmYXJrbMSxIHRhYidsZXJzZSBmcmVzaCBjb21wb25lbnQgaW5zdGFudGlhdGUgZWRpbG1lbGkg4oCUXHJcblx0XHRcdC8vIGFrc2kgdGFrZGlyZGUgaWtpIHRhYiB0ZWsgY29tcG9uZW50UmVmJ2kgcGF5bGHFn8SxciB2ZSBzdGF0ZSBpem9sYXN5b251IGtheWJvbHVyLlxyXG5cdFx0XHRjb25zdCBzaG91bGRSZXVzZSA9ICEhZnIgJiYgZnIgPT09IGNyICYmIGZ0ID09PSBjdDtcclxuXHRcdFx0Y29uc29sZS5sb2coYFtTdHJhdGVneV0gc2hvdWxkUmV1c2VSb3V0ZSBtYXRjaGVyIOKGkiAke3Nob3VsZFJldXNlfS4gZnV0dXJlPSR7ZnJ9LyR7ZnR9IGN1cnI9JHtjcn0vJHtjdH1gKTtcclxuXHRcdFx0cmV0dXJuIHNob3VsZFJldXNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChmdXR1cmVNYXRjaGVyICE9PSBjdXJyTWF0Y2hlcikge1xyXG5cdFx0XHRjb25zb2xlLmxvZygnW1N0cmF0ZWd5XSBzaG91bGRSZXVzZVJvdXRlIG1peGVkIOKGkiBmYWxzZScpO1xyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3Qgc2hvdWxkUmV1c2UgPSBmdXR1cmUucm91dGVDb25maWcgPT09IGN1cnIucm91dGVDb25maWc7XHJcblx0XHRjb25zdCBmdXR1cmVLZXkgPSB0aGlzLmdldFJvdXRlS2V5KGZ1dHVyZSk7XHJcblx0XHRjb25zdCBjdXJyS2V5ID0gdGhpcy5nZXRSb3V0ZUtleShjdXJyKTtcclxuXHRcdGNvbnN0IGZ1dHVyZUNvbXAgPSBmdXR1cmUucm91dGVDb25maWc/LmNvbXBvbmVudD8ubmFtZSA/PyBmdXR1cmUuY29tcG9uZW50Py5uYW1lID8/ICdub25lJztcclxuXHRcdGNvbnN0IGN1cnJDb21wID0gY3Vyci5yb3V0ZUNvbmZpZz8uY29tcG9uZW50Py5uYW1lID8/IGN1cnIuY29tcG9uZW50Py5uYW1lID8/ICdub25lJztcclxuXHRcdGNvbnNvbGUubG9nKFxyXG5cdFx0XHRgW1N0cmF0ZWd5XSBzaG91bGRSZXVzZVJvdXRlIG5vcm1hbCDihpIgJHtzaG91bGRSZXVzZX0uIGZ1dHVyZT1cIiR7ZnV0dXJlS2V5fVwiKCR7ZnV0dXJlQ29tcH0pIGN1cnI9XCIke2N1cnJLZXl9XCIoJHtjdXJyQ29tcH0pYFxyXG5cdFx0KTtcclxuXHRcdHJldHVybiBzaG91bGRSZXVzZTtcclxuXHR9XHJcbn1cclxuIl19
@@ -95,11 +95,11 @@ export class NavLinkContextMenuService {
95
95
  ];
96
96
  this.cm.show(event);
97
97
  }
98
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NavLinkContextMenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
99
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NavLinkContextMenuService, providedIn: 'root' }); }
98
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NavLinkContextMenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
99
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NavLinkContextMenuService, providedIn: 'root' }); }
100
100
  }
101
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NavLinkContextMenuService, decorators: [{
101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NavLinkContextMenuService, decorators: [{
102
102
  type: Injectable,
103
103
  args: [{ providedIn: 'root' }]
104
104
  }] });
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWxpbmstY29udGV4dC1tZW51LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2Jvb3QvY29uZmlnL2FwcHMvc3JjL25hdi1saW5rLWNvbnRleHQtbWVudS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSW5ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXJELE9BQU8sRUFBVyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRXBEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxJQUFJLEdBQUcsOEJBQThCLENBQUM7QUFDNUMsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUM7QUFLeEM7Ozs7Ozs7Ozs7O0dBV0c7QUFFSCxNQUFNLE9BQU8seUJBQXlCO0lBRHRDO1FBRWtCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDckQsT0FBRSxHQUF1QixJQUFJLENBQUM7S0FvRXRDO0lBbEVBLFFBQVEsQ0FBQyxFQUFlO1FBQ3ZCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsZ0ZBQWdGO1FBQ2hGLGlFQUFpRTtRQUNqRSxNQUFNLFFBQVEsR0FBRyxVQUF1QyxDQUFDO1FBQ3pELFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3BFLHNGQUFzRjtRQUN0Riw2REFBNkQ7UUFDN0QsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxJQUFJLENBQUMsS0FBaUIsRUFBRSxPQUFnQjtRQUN2QyxrREFBa0Q7UUFDbEQsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztZQUMvQixPQUFPO1FBQ1IsQ0FBQztRQUNELG9EQUFvRDtRQUNwRCxNQUFNLFFBQVEsR0FBRyxVQUF1QyxDQUFDO1FBQ3pELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2QsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0YsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILG9CQUFvQixDQUFDLE9BQWdCO1FBQ3BDLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5QyxPQUFPO1FBQ1IsQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFHLFVBQXVDLENBQUM7UUFDekQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzNDLElBQUksV0FBVyxFQUFFLENBQUM7WUFDakIsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RCLENBQUM7SUFDRixDQUFDO0lBRU8sU0FBUyxDQUFDLEtBQWlCLEVBQUUsT0FBZ0I7UUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQUUsT0FBTztRQUNyQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQVcsRUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssR0FBRztZQUNmO2dCQUNDLEtBQUssRUFBRSxDQUFDLENBQUMsa0JBQWtCLENBQUM7Z0JBQzVCLElBQUksRUFBRSxtQkFBbUI7Z0JBQ3pCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQzthQUM1RDtZQUNEO2dCQUNDLEtBQUssRUFBRSxDQUFDLENBQUMsc0JBQXNCLENBQUM7Z0JBQ2hDLElBQUksRUFBRSxxQkFBcUI7Z0JBQzNCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQzthQUMzRDtZQUNEO2dCQUNDLEtBQUssRUFBRSxDQUFDLENBQUMsOEJBQThCLENBQUM7Z0JBQ3hDLElBQUksRUFBRSxhQUFhO2dCQUNuQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUM7YUFDNUQ7U0FDRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQzs4R0F0RVcseUJBQXlCO2tIQUF6Qix5QkFBeUIsY0FEWixNQUFNOzsyRkFDbkIseUJBQXlCO2tCQURyQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQ29udGV4dE1lbnUgfSBmcm9tICdwcmltZW5nL2NvbnRleHRtZW51JztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcblxyXG5pbXBvcnQgeyBOYXZJdGVtLCBOYXZTZXJ2aWNlIH0gZnJvbSAnLi9uYXYuc2VydmljZSc7XHJcblxyXG4vKipcclxuICogQ3Jvc3MtaW5qZWN0b3Igc2luZ2xldG9uIHNsb3QuIGBOYXZMaW5rQ29udGV4dE1lbnVTZXJ2aWNlYCBgcHJvdmlkZWRJbjogJ3Jvb3QnYCBvbGR1xJ91XHJcbiAqIGnDp2luIGhvc3QgdmUgaGVyIE1GRSByZW1vdGUndW5kYSBBWVJJIGluc3RhbmNlIHlhxZ9hciDigJQgYHJlZ2lzdGVyKGNtKWAgc2FkZWNlIGhvc3RcclxuICogc2hlbGwnZGUgw6dhxJ9yxLFsxLFyLCBNRkUnbGVyZGVuIGdlbGVuIGBvcGVuKC4uLilgIMOnYcSfcsSxbGFyxLEga2VuZGkgaW5zdGFuY2UnxLFuZGEgYGNtYFxyXG4gKiBidWxhbWF6LiBCdSB5w7x6ZGVuIHJlZ2lzdGVyIHPEsXJhc8SxbmRhIGhvc3QgaW5zdGFuY2UnxLEgZ2xvYmFsIHNsb3QnYSB5YXphcjsgTUZFXHJcbiAqIGluc3RhbmNlJ2xhcsSxIGBjbWAgbnVsbCBpc2UgYnUgc2xvdCDDvHplcmluZGVuIGhvc3QnYSBkZWxlZ2UgZWRlci5cclxuICpcclxuICogYGJyaWRnZWAgbW9kw7xsw7xuZGVraSBgX19hcmlsTWZlQnJpZGdlX19gIGlsZSBheW7EsSBwYXR0ZXJuLlxyXG4gKi9cclxuY29uc3QgU0xPVCA9ICdfX2FyaWxOYXZMaW5rQ29udGV4dE1lbnVPcGVuJztcclxuY29uc3QgQ09NTUFORF9TTE9UID0gJ19fYXJpbE5hdkNvbW1hbmQnO1xyXG50eXBlIEdsb2JhbE9wZW5GbiA9IChldmVudDogTW91c2VFdmVudCwgbmF2SXRlbTogTmF2SXRlbSkgPT4gdm9pZDtcclxudHlwZSBHbG9iYWxDb21tYW5kRm4gPSAobmF2SXRlbTogTmF2SXRlbSkgPT4gdm9pZDtcclxudHlwZSBHbG9iYWxTbG90SG9zdCA9IHsgW1NMT1RdPzogR2xvYmFsT3BlbkZuOyBbQ09NTUFORF9TTE9UXT86IEdsb2JhbENvbW1hbmRGbiB9O1xyXG5cclxuLyoqXHJcbiAqIFRhYiBuYXZpZ2FzeW9udSB5YXBhbiB0w7xtIGxpbmtsaSB5YXDEsWxhciBpw6dpbiBvcnRhayBzYcSfLXTEsWsgY29udGV4dCBtZW51IHNlcnZpc2kuXHJcbiAqIFRlayBiaXIgZ2xvYmFsIFByaW1lTkcgYENvbnRleHRNZW51YCBpbnN0YW5jZSfEsSBob3N0IHNoZWxsIChgQXBwTGF5b3V0Q29tcG9uZW50YClcclxuICogdGVtcGxhdGUnaW5kZSB5YcWfYXI7IGhlciBzYXlmYSBrZW5kaSBgQ29udGV4dE1lbnVgIGVuc3RhbnRpYXRlIGV0bWVrIHllcmluZSBidVxyXG4gKiBzZXJ2aWNlIMO8emVyaW5kZW4gYG9wZW4oZXZlbnQsIG5hdkl0ZW0pYCDDp2HEn8SxcsSxci5cclxuICpcclxuICogU2VydmlzIGhhbmdpIGxpbmsgdMSxa2xhbmTEsXlzYSBvbnVuIGBOYXZJdGVtYCdpeWxlIG1lbsO8IG1vZGVsaW5pIHllbmlkZW4gaW7Fn2EgZWRlclxyXG4gKiB2ZSBgY20uc2hvdyhldmVudClgIGlsZSBhw6dhciDigJQgdMO8bSB0w7xrZXRpY2lsZXIgacOnaW4gdGVrIHNvdXJjZS1vZi10cnV0aC5cclxuICpcclxuICogKipLYXnEsXQgc8O2emxlxZ9tZXNpKio6IHNoZWxsIG1vdW50IG9sdW5jYSBgcmVnaXN0ZXIoY20pYCDDp2HEn8SxcsSxci4gTUZFJ2xlcmRlbiBnZWxlblxyXG4gKiDDp2HEn3LEsWxhciBnbG9iYWwgc2xvdCDDvHplcmluZGVuIGhvc3QnYSBkZWxlZ2UgZWRpbGlyLlxyXG4gKi9cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIE5hdkxpbmtDb250ZXh0TWVudVNlcnZpY2Uge1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgbmF2U2VydmljZSA9IGluamVjdChOYXZTZXJ2aWNlKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IHRyYW5zbG9jb1NlcnZpY2UgPSBpbmplY3QoVHJhbnNsb2NvU2VydmljZSk7XHJcblx0cHJpdmF0ZSBjbTogQ29udGV4dE1lbnUgfCBudWxsID0gbnVsbDtcclxuXHJcblx0cmVnaXN0ZXIoY206IENvbnRleHRNZW51KTogdm9pZCB7XHJcblx0XHR0aGlzLmNtID0gY207XHJcblx0XHQvLyBNRkUnbGVyZGVuIGdlbGVuIG9wZW4gw6dhxJ9yxLFsYXLEsSBpw6dpbiBjcm9zcy1pbmplY3RvciBzbG90IGt1ciDigJQgYnUgaW5zdGFuY2UnxLFuXHJcblx0XHQvLyBgb3BlbkxvY2FsYCfEsW7EsSBzYXJtYWxheWFuIGJpciBmdW5jdGlvbiBnbG9iYWwgc2xvdCdhIHlhesSxbMSxci5cclxuXHRcdGNvbnN0IHNsb3RIb3N0ID0gZ2xvYmFsVGhpcyBhcyB1bmtub3duIGFzIEdsb2JhbFNsb3RIb3N0O1xyXG5cdFx0c2xvdEhvc3RbU0xPVF0gPSAoZXZlbnQsIG5hdkl0ZW0pID0+IHRoaXMub3BlbkxvY2FsKGV2ZW50LCBuYXZJdGVtKTtcclxuXHRcdC8vIFByb2dyYW1hdGlrIFwieWVuaSB0YWIgYcOnIHZlIGdlw6dcIiDigJQgTUZFJ2xlcmRlbiAoZXNraSBgd2luZG93Lm9wZW4oJyMnK3VybCwnX2JsYW5rJylgXHJcblx0XHQvLyB5ZXJpbmUpIGhvc3QgTmF2U2VydmljZSdlIGRlbGVnZSBpw6dpbiBjcm9zcy1pbmplY3RvciBzbG90LlxyXG5cdFx0c2xvdEhvc3RbQ09NTUFORF9TTE9UXSA9IChuYXZJdGVtKSA9PiB0aGlzLm5hdlNlcnZpY2Uub3BlbkluTmV3VGFiQW5kRm9jdXMobmF2SXRlbSk7XHJcblx0fVxyXG5cclxuXHRvcGVuKGV2ZW50OiBNb3VzZUV2ZW50LCBuYXZJdGVtOiBOYXZJdGVtKTogdm9pZCB7XHJcblx0XHQvLyBLZW5kaSBjbSdpbWl6IHZhcnNhIChob3N0IGluc3RhbmNlKSBkb8SfcnVkYW4gYcOnXHJcblx0XHRpZiAodGhpcy5jbSkge1xyXG5cdFx0XHR0aGlzLm9wZW5Mb2NhbChldmVudCwgbmF2SXRlbSk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdC8vIE1GRSBpbnN0YW5jZTogZ2xvYmFsIHNsb3Qgw7x6ZXJpbmRlbiBob3N0J2EgZGVsZWdlXHJcblx0XHRjb25zdCBzbG90SG9zdCA9IGdsb2JhbFRoaXMgYXMgdW5rbm93biBhcyBHbG9iYWxTbG90SG9zdDtcclxuXHRcdGNvbnN0IGhvc3RPcGVuID0gc2xvdEhvc3RbU0xPVF07XHJcblx0XHRpZiAoaG9zdE9wZW4pIHtcclxuXHRcdFx0aG9zdE9wZW4oZXZlbnQsIG5hdkl0ZW0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUHJvZ3JhbWF0aWsgXCJ5ZW5pIHRhYiBhw6cgdmUgZ2XDp1wiIOKAlCBNRkUgY29tcG9uZW50J2xlcmluZGVuIMOnYcSfcsSxbMSxciAoZXNraVxyXG5cdCAqIGB3aW5kb3cub3BlbignIycrdXJsLCdfYmxhbmsnKWAgeWVyaW5lKS4gSG9zdCBpbnN0YW5jZSd0YSAoYGNtYCBzZXQpIGRvxJ9ydWRhblxyXG5cdCAqIGBOYXZTZXJ2aWNlLm9wZW5Jbk5ld1RhYkFuZEZvY3VzYCd1IMOnYcSfxLFyxLFyOyBNRkUgaW5zdGFuY2UnxLFuZGEgYF9fYXJpbE5hdkNvbW1hbmRgXHJcblx0ICogZ2xvYmFsIHNsb3QndSDDvHplcmluZGVuIGhvc3QnYSBkZWxlZ2UgZWRlci4gSG9zdCBzaGVsbCBoZW7DvHogbW91bnQgb2xtYWTEsXlzYVxyXG5cdCAqIChzbG90IGJvxZ8pIHNlc3NpemNlIG5vLW9wIG9sdXIuXHJcblx0ICovXHJcblx0b3BlbkluTmV3VGFiQW5kRm9jdXMobmF2SXRlbTogTmF2SXRlbSk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuY20pIHtcclxuXHRcdFx0dGhpcy5uYXZTZXJ2aWNlLm9wZW5Jbk5ld1RhYkFuZEZvY3VzKG5hdkl0ZW0pO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRjb25zdCBzbG90SG9zdCA9IGdsb2JhbFRoaXMgYXMgdW5rbm93biBhcyBHbG9iYWxTbG90SG9zdDtcclxuXHRcdGNvbnN0IGhvc3RDb21tYW5kID0gc2xvdEhvc3RbQ09NTUFORF9TTE9UXTtcclxuXHRcdGlmIChob3N0Q29tbWFuZCkge1xyXG5cdFx0XHRob3N0Q29tbWFuZChuYXZJdGVtKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgb3BlbkxvY2FsKGV2ZW50OiBNb3VzZUV2ZW50LCBuYXZJdGVtOiBOYXZJdGVtKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuY20pIHJldHVybjtcclxuXHRcdGNvbnN0IHQgPSAoa2V5OiBzdHJpbmcpOiBzdHJpbmcgPT4gdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZShrZXkpO1xyXG5cdFx0dGhpcy5jbS5tb2RlbCA9IFtcclxuXHRcdFx0e1xyXG5cdFx0XHRcdGxhYmVsOiB0KCduYXZMaW5rLm9wZW5IZXJlJyksXHJcblx0XHRcdFx0aWNvbjogJ3BpIHBpLWFycm93LXJpZ2h0JyxcclxuXHRcdFx0XHRjb21tYW5kOiAoKSA9PiB0aGlzLm5hdlNlcnZpY2UubmF2aWdhdGVJbkN1cnJlbnRUYWIobmF2SXRlbSlcclxuXHRcdFx0fSxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdGxhYmVsOiB0KCduYXZMaW5rLm9wZW5Jbk5ld1RhYicpLFxyXG5cdFx0XHRcdGljb246ICdwaSBwaS1leHRlcm5hbC1saW5rJyxcclxuXHRcdFx0XHRjb21tYW5kOiAoKSA9PiB0aGlzLm5hdlNlcnZpY2Uub3BlbkluQmFja2dyb3VuZFRhYihuYXZJdGVtKVxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0bGFiZWw6IHQoJ25hdkxpbmsub3BlbkluTmV3VGFiQW5kRm9jdXMnKSxcclxuXHRcdFx0XHRpY29uOiAncGkgcGktY2xvbmUnLFxyXG5cdFx0XHRcdGNvbW1hbmQ6ICgpID0+IHRoaXMubmF2U2VydmljZS5vcGVuSW5OZXdUYWJBbmRGb2N1cyhuYXZJdGVtKVxyXG5cdFx0XHR9XHJcblx0XHRdO1xyXG5cdFx0dGhpcy5jbS5zaG93KGV2ZW50KTtcclxuXHR9XHJcbn1cclxuIl19
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWxpbmstY29udGV4dC1tZW51LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2Jvb3QvY29uZmlnL2FwcHMvc3JjL25hdi1saW5rLWNvbnRleHQtbWVudS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSW5ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXJELE9BQU8sRUFBVyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRXBEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxJQUFJLEdBQUcsOEJBQThCLENBQUM7QUFDNUMsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUM7QUFLeEM7Ozs7Ozs7Ozs7O0dBV0c7QUFFSCxNQUFNLE9BQU8seUJBQXlCO0lBRHRDO1FBRWtCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDckQsT0FBRSxHQUF1QixJQUFJLENBQUM7S0FvRXRDO0lBbEVBLFFBQVEsQ0FBQyxFQUFlO1FBQ3ZCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsZ0ZBQWdGO1FBQ2hGLGlFQUFpRTtRQUNqRSxNQUFNLFFBQVEsR0FBRyxVQUF1QyxDQUFDO1FBQ3pELFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3BFLHNGQUFzRjtRQUN0Riw2REFBNkQ7UUFDN0QsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxJQUFJLENBQUMsS0FBaUIsRUFBRSxPQUFnQjtRQUN2QyxrREFBa0Q7UUFDbEQsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztZQUMvQixPQUFPO1FBQ1IsQ0FBQztRQUNELG9EQUFvRDtRQUNwRCxNQUFNLFFBQVEsR0FBRyxVQUF1QyxDQUFDO1FBQ3pELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2QsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0YsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILG9CQUFvQixDQUFDLE9BQWdCO1FBQ3BDLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5QyxPQUFPO1FBQ1IsQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFHLFVBQXVDLENBQUM7UUFDekQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzNDLElBQUksV0FBVyxFQUFFLENBQUM7WUFDakIsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RCLENBQUM7SUFDRixDQUFDO0lBRU8sU0FBUyxDQUFDLEtBQWlCLEVBQUUsT0FBZ0I7UUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQUUsT0FBTztRQUNyQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQVcsRUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssR0FBRztZQUNmO2dCQUNDLEtBQUssRUFBRSxDQUFDLENBQUMsa0JBQWtCLENBQUM7Z0JBQzVCLElBQUksRUFBRSxtQkFBbUI7Z0JBQ3pCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQzthQUM1RDtZQUNEO2dCQUNDLEtBQUssRUFBRSxDQUFDLENBQUMsc0JBQXNCLENBQUM7Z0JBQ2hDLElBQUksRUFBRSxxQkFBcUI7Z0JBQzNCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQzthQUMzRDtZQUNEO2dCQUNDLEtBQUssRUFBRSxDQUFDLENBQUMsOEJBQThCLENBQUM7Z0JBQ3hDLElBQUksRUFBRSxhQUFhO2dCQUNuQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUM7YUFDNUQ7U0FDRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQzsrR0F0RVcseUJBQXlCO21IQUF6Qix5QkFBeUIsY0FEWixNQUFNOzs0RkFDbkIseUJBQXlCO2tCQURyQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQ29udGV4dE1lbnUgfSBmcm9tICdwcmltZW5nL2NvbnRleHRtZW51JztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcblxyXG5pbXBvcnQgeyBOYXZJdGVtLCBOYXZTZXJ2aWNlIH0gZnJvbSAnLi9uYXYuc2VydmljZSc7XHJcblxyXG4vKipcclxuICogQ3Jvc3MtaW5qZWN0b3Igc2luZ2xldG9uIHNsb3QuIGBOYXZMaW5rQ29udGV4dE1lbnVTZXJ2aWNlYCBgcHJvdmlkZWRJbjogJ3Jvb3QnYCBvbGR1xJ91XHJcbiAqIGnDp2luIGhvc3QgdmUgaGVyIE1GRSByZW1vdGUndW5kYSBBWVJJIGluc3RhbmNlIHlhxZ9hciDigJQgYHJlZ2lzdGVyKGNtKWAgc2FkZWNlIGhvc3RcclxuICogc2hlbGwnZGUgw6dhxJ9yxLFsxLFyLCBNRkUnbGVyZGVuIGdlbGVuIGBvcGVuKC4uLilgIMOnYcSfcsSxbGFyxLEga2VuZGkgaW5zdGFuY2UnxLFuZGEgYGNtYFxyXG4gKiBidWxhbWF6LiBCdSB5w7x6ZGVuIHJlZ2lzdGVyIHPEsXJhc8SxbmRhIGhvc3QgaW5zdGFuY2UnxLEgZ2xvYmFsIHNsb3QnYSB5YXphcjsgTUZFXHJcbiAqIGluc3RhbmNlJ2xhcsSxIGBjbWAgbnVsbCBpc2UgYnUgc2xvdCDDvHplcmluZGVuIGhvc3QnYSBkZWxlZ2UgZWRlci5cclxuICpcclxuICogYGJyaWRnZWAgbW9kw7xsw7xuZGVraSBgX19hcmlsTWZlQnJpZGdlX19gIGlsZSBheW7EsSBwYXR0ZXJuLlxyXG4gKi9cclxuY29uc3QgU0xPVCA9ICdfX2FyaWxOYXZMaW5rQ29udGV4dE1lbnVPcGVuJztcclxuY29uc3QgQ09NTUFORF9TTE9UID0gJ19fYXJpbE5hdkNvbW1hbmQnO1xyXG50eXBlIEdsb2JhbE9wZW5GbiA9IChldmVudDogTW91c2VFdmVudCwgbmF2SXRlbTogTmF2SXRlbSkgPT4gdm9pZDtcclxudHlwZSBHbG9iYWxDb21tYW5kRm4gPSAobmF2SXRlbTogTmF2SXRlbSkgPT4gdm9pZDtcclxudHlwZSBHbG9iYWxTbG90SG9zdCA9IHsgW1NMT1RdPzogR2xvYmFsT3BlbkZuOyBbQ09NTUFORF9TTE9UXT86IEdsb2JhbENvbW1hbmRGbiB9O1xyXG5cclxuLyoqXHJcbiAqIFRhYiBuYXZpZ2FzeW9udSB5YXBhbiB0w7xtIGxpbmtsaSB5YXDEsWxhciBpw6dpbiBvcnRhayBzYcSfLXTEsWsgY29udGV4dCBtZW51IHNlcnZpc2kuXHJcbiAqIFRlayBiaXIgZ2xvYmFsIFByaW1lTkcgYENvbnRleHRNZW51YCBpbnN0YW5jZSfEsSBob3N0IHNoZWxsIChgQXBwTGF5b3V0Q29tcG9uZW50YClcclxuICogdGVtcGxhdGUnaW5kZSB5YcWfYXI7IGhlciBzYXlmYSBrZW5kaSBgQ29udGV4dE1lbnVgIGVuc3RhbnRpYXRlIGV0bWVrIHllcmluZSBidVxyXG4gKiBzZXJ2aWNlIMO8emVyaW5kZW4gYG9wZW4oZXZlbnQsIG5hdkl0ZW0pYCDDp2HEn8SxcsSxci5cclxuICpcclxuICogU2VydmlzIGhhbmdpIGxpbmsgdMSxa2xhbmTEsXlzYSBvbnVuIGBOYXZJdGVtYCdpeWxlIG1lbsO8IG1vZGVsaW5pIHllbmlkZW4gaW7Fn2EgZWRlclxyXG4gKiB2ZSBgY20uc2hvdyhldmVudClgIGlsZSBhw6dhciDigJQgdMO8bSB0w7xrZXRpY2lsZXIgacOnaW4gdGVrIHNvdXJjZS1vZi10cnV0aC5cclxuICpcclxuICogKipLYXnEsXQgc8O2emxlxZ9tZXNpKio6IHNoZWxsIG1vdW50IG9sdW5jYSBgcmVnaXN0ZXIoY20pYCDDp2HEn8SxcsSxci4gTUZFJ2xlcmRlbiBnZWxlblxyXG4gKiDDp2HEn3LEsWxhciBnbG9iYWwgc2xvdCDDvHplcmluZGVuIGhvc3QnYSBkZWxlZ2UgZWRpbGlyLlxyXG4gKi9cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIE5hdkxpbmtDb250ZXh0TWVudVNlcnZpY2Uge1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgbmF2U2VydmljZSA9IGluamVjdChOYXZTZXJ2aWNlKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IHRyYW5zbG9jb1NlcnZpY2UgPSBpbmplY3QoVHJhbnNsb2NvU2VydmljZSk7XHJcblx0cHJpdmF0ZSBjbTogQ29udGV4dE1lbnUgfCBudWxsID0gbnVsbDtcclxuXHJcblx0cmVnaXN0ZXIoY206IENvbnRleHRNZW51KTogdm9pZCB7XHJcblx0XHR0aGlzLmNtID0gY207XHJcblx0XHQvLyBNRkUnbGVyZGVuIGdlbGVuIG9wZW4gw6dhxJ9yxLFsYXLEsSBpw6dpbiBjcm9zcy1pbmplY3RvciBzbG90IGt1ciDigJQgYnUgaW5zdGFuY2UnxLFuXHJcblx0XHQvLyBgb3BlbkxvY2FsYCfEsW7EsSBzYXJtYWxheWFuIGJpciBmdW5jdGlvbiBnbG9iYWwgc2xvdCdhIHlhesSxbMSxci5cclxuXHRcdGNvbnN0IHNsb3RIb3N0ID0gZ2xvYmFsVGhpcyBhcyB1bmtub3duIGFzIEdsb2JhbFNsb3RIb3N0O1xyXG5cdFx0c2xvdEhvc3RbU0xPVF0gPSAoZXZlbnQsIG5hdkl0ZW0pID0+IHRoaXMub3BlbkxvY2FsKGV2ZW50LCBuYXZJdGVtKTtcclxuXHRcdC8vIFByb2dyYW1hdGlrIFwieWVuaSB0YWIgYcOnIHZlIGdlw6dcIiDigJQgTUZFJ2xlcmRlbiAoZXNraSBgd2luZG93Lm9wZW4oJyMnK3VybCwnX2JsYW5rJylgXHJcblx0XHQvLyB5ZXJpbmUpIGhvc3QgTmF2U2VydmljZSdlIGRlbGVnZSBpw6dpbiBjcm9zcy1pbmplY3RvciBzbG90LlxyXG5cdFx0c2xvdEhvc3RbQ09NTUFORF9TTE9UXSA9IChuYXZJdGVtKSA9PiB0aGlzLm5hdlNlcnZpY2Uub3BlbkluTmV3VGFiQW5kRm9jdXMobmF2SXRlbSk7XHJcblx0fVxyXG5cclxuXHRvcGVuKGV2ZW50OiBNb3VzZUV2ZW50LCBuYXZJdGVtOiBOYXZJdGVtKTogdm9pZCB7XHJcblx0XHQvLyBLZW5kaSBjbSdpbWl6IHZhcnNhIChob3N0IGluc3RhbmNlKSBkb8SfcnVkYW4gYcOnXHJcblx0XHRpZiAodGhpcy5jbSkge1xyXG5cdFx0XHR0aGlzLm9wZW5Mb2NhbChldmVudCwgbmF2SXRlbSk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdC8vIE1GRSBpbnN0YW5jZTogZ2xvYmFsIHNsb3Qgw7x6ZXJpbmRlbiBob3N0J2EgZGVsZWdlXHJcblx0XHRjb25zdCBzbG90SG9zdCA9IGdsb2JhbFRoaXMgYXMgdW5rbm93biBhcyBHbG9iYWxTbG90SG9zdDtcclxuXHRcdGNvbnN0IGhvc3RPcGVuID0gc2xvdEhvc3RbU0xPVF07XHJcblx0XHRpZiAoaG9zdE9wZW4pIHtcclxuXHRcdFx0aG9zdE9wZW4oZXZlbnQsIG5hdkl0ZW0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUHJvZ3JhbWF0aWsgXCJ5ZW5pIHRhYiBhw6cgdmUgZ2XDp1wiIOKAlCBNRkUgY29tcG9uZW50J2xlcmluZGVuIMOnYcSfcsSxbMSxciAoZXNraVxyXG5cdCAqIGB3aW5kb3cub3BlbignIycrdXJsLCdfYmxhbmsnKWAgeWVyaW5lKS4gSG9zdCBpbnN0YW5jZSd0YSAoYGNtYCBzZXQpIGRvxJ9ydWRhblxyXG5cdCAqIGBOYXZTZXJ2aWNlLm9wZW5Jbk5ld1RhYkFuZEZvY3VzYCd1IMOnYcSfxLFyxLFyOyBNRkUgaW5zdGFuY2UnxLFuZGEgYF9fYXJpbE5hdkNvbW1hbmRgXHJcblx0ICogZ2xvYmFsIHNsb3QndSDDvHplcmluZGVuIGhvc3QnYSBkZWxlZ2UgZWRlci4gSG9zdCBzaGVsbCBoZW7DvHogbW91bnQgb2xtYWTEsXlzYVxyXG5cdCAqIChzbG90IGJvxZ8pIHNlc3NpemNlIG5vLW9wIG9sdXIuXHJcblx0ICovXHJcblx0b3BlbkluTmV3VGFiQW5kRm9jdXMobmF2SXRlbTogTmF2SXRlbSk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuY20pIHtcclxuXHRcdFx0dGhpcy5uYXZTZXJ2aWNlLm9wZW5Jbk5ld1RhYkFuZEZvY3VzKG5hdkl0ZW0pO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRjb25zdCBzbG90SG9zdCA9IGdsb2JhbFRoaXMgYXMgdW5rbm93biBhcyBHbG9iYWxTbG90SG9zdDtcclxuXHRcdGNvbnN0IGhvc3RDb21tYW5kID0gc2xvdEhvc3RbQ09NTUFORF9TTE9UXTtcclxuXHRcdGlmIChob3N0Q29tbWFuZCkge1xyXG5cdFx0XHRob3N0Q29tbWFuZChuYXZJdGVtKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgb3BlbkxvY2FsKGV2ZW50OiBNb3VzZUV2ZW50LCBuYXZJdGVtOiBOYXZJdGVtKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuY20pIHJldHVybjtcclxuXHRcdGNvbnN0IHQgPSAoa2V5OiBzdHJpbmcpOiBzdHJpbmcgPT4gdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZShrZXkpO1xyXG5cdFx0dGhpcy5jbS5tb2RlbCA9IFtcclxuXHRcdFx0e1xyXG5cdFx0XHRcdGxhYmVsOiB0KCduYXZMaW5rLm9wZW5IZXJlJyksXHJcblx0XHRcdFx0aWNvbjogJ3BpIHBpLWFycm93LXJpZ2h0JyxcclxuXHRcdFx0XHRjb21tYW5kOiAoKSA9PiB0aGlzLm5hdlNlcnZpY2UubmF2aWdhdGVJbkN1cnJlbnRUYWIobmF2SXRlbSlcclxuXHRcdFx0fSxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdGxhYmVsOiB0KCduYXZMaW5rLm9wZW5Jbk5ld1RhYicpLFxyXG5cdFx0XHRcdGljb246ICdwaSBwaS1leHRlcm5hbC1saW5rJyxcclxuXHRcdFx0XHRjb21tYW5kOiAoKSA9PiB0aGlzLm5hdlNlcnZpY2Uub3BlbkluQmFja2dyb3VuZFRhYihuYXZJdGVtKVxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0bGFiZWw6IHQoJ25hdkxpbmsub3BlbkluTmV3VGFiQW5kRm9jdXMnKSxcclxuXHRcdFx0XHRpY29uOiAncGkgcGktY2xvbmUnLFxyXG5cdFx0XHRcdGNvbW1hbmQ6ICgpID0+IHRoaXMubmF2U2VydmljZS5vcGVuSW5OZXdUYWJBbmRGb2N1cyhuYXZJdGVtKVxyXG5cdFx0XHR9XHJcblx0XHRdO1xyXG5cdFx0dGhpcy5jbS5zaG93KGV2ZW50KTtcclxuXHR9XHJcbn1cclxuIl19