aril 1.2.18 → 1.2.20
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.
- package/boot/config/apps/src/interfaces.d.ts +7 -1
- package/boot/config/apps/src/route-permissions.d.ts +2 -2
- package/esm2022/boot/config/api/src/interfaces.mjs +3 -2
- package/esm2022/boot/config/apps/src/apps.service.mjs +5 -5
- package/esm2022/boot/config/apps/src/auth.guard.mjs +4 -4
- package/esm2022/boot/config/apps/src/interfaces.mjs +2 -1
- package/esm2022/boot/config/apps/src/route-permissions.mjs +24 -6
- package/esm2022/boot/config/apps/src/showdowDOMWrapper.mjs +4 -4
- package/esm2022/boot/config/plugins/src/plugins.service.mjs +7 -5
- package/esm2022/boot/host/src/app.component.mjs +4 -4
- package/esm2022/boot/host/src/bootstrap.mjs +5 -3
- package/esm2022/boot/mfe/src/app.component.mjs +4 -4
- package/esm2022/boot/mfe/src/bootstrap.mjs +5 -3
- package/esm2022/boot/pages/src/forbidden.component.mjs +4 -4
- package/esm2022/boot/pages/src/notFound.component.mjs +4 -4
- package/esm2022/http/src/httpBackend.mjs +4 -4
- package/esm2022/i18n/src/i18n.module.mjs +5 -5
- package/esm2022/i18n/src/loader.mjs +4 -4
- package/esm2022/keycloak/src/auth.interceptor.mjs +5 -2
- package/esm2022/theme/layout/app/breadcrumb/app.breadcrumb.component.mjs +4 -4
- package/esm2022/theme/layout/app/expandableMenu/expandable-menu.component.mjs +4 -4
- package/esm2022/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.mjs +4 -4
- package/esm2022/theme/layout/app/favorite-pages/favorite-pages.service.mjs +4 -4
- package/esm2022/theme/layout/app/favorite-pages/modals/add-edit-favorite-modal/add-edit-favorite-modal.component.mjs +4 -4
- package/esm2022/theme/layout/app/general-search/general-search.component.mjs +4 -4
- package/esm2022/theme/layout/app/history/history-sidebar.component.mjs +4 -4
- package/esm2022/theme/layout/app/history/history.service.mjs +4 -4
- package/esm2022/theme/layout/app/layout/app.layout.component.mjs +4 -4
- package/esm2022/theme/layout/app/layout/mfe.layout.component.mjs +4 -4
- package/esm2022/theme/layout/app/notifications/notifications-sidebar.component.mjs +4 -4
- package/esm2022/theme/layout/app/profileSidebar/app.profilesidebar.component.mjs +4 -4
- package/esm2022/theme/layout/app/profileSidebar/modals/change-password-modal/change-password-modal.component.mjs +4 -4
- package/esm2022/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.mjs +4 -4
- package/esm2022/theme/layout/app/profileSidebar/profile.service.mjs +4 -4
- package/esm2022/theme/layout/app/site-map/site-map-sidebar.component.mjs +4 -4
- package/esm2022/theme/layout/app/static-sidebar/static-sidebar.component.mjs +4 -4
- package/esm2022/theme/layout/app/topbar/app.topbar.component.mjs +18 -6
- package/esm2022/theme/layout/service/app.layout.service.mjs +4 -4
- package/esm2022/theme/layout/service/app.menu.service.mjs +4 -4
- package/esm2022/theme/layout/service/breadcrumb.service.mjs +4 -4
- package/esm2022/theme/layout/service/notifications.service.mjs +4 -4
- package/esm2022/theme/layout/service/search.service.mjs +4 -4
- package/esm2022/theme/layout/service/selection-group.service.mjs +4 -4
- package/esm2022/ui/autoComplete/src/auto-complete.component.mjs +4 -4
- package/esm2022/ui/badge/src/badge.component.mjs +4 -4
- package/esm2022/ui/button/src/button.component.mjs +8 -5
- package/esm2022/ui/button/src/split-button.component.mjs +4 -4
- package/esm2022/ui/calendar/src/calendar.component.mjs +4 -4
- package/esm2022/ui/charts/src/amCharts/column/column-chart.component.mjs +4 -4
- package/esm2022/ui/charts/src/amCharts/line/line-chart.component.mjs +4 -4
- package/esm2022/ui/charts/src/amCharts/pie/pie-chart.component.mjs +4 -4
- package/esm2022/ui/charts/src/highCharts/area/area-chart.component.mjs +4 -4
- package/esm2022/ui/charts/src/highCharts/bar/bar-chart.component.mjs +4 -4
- package/esm2022/ui/charts/src/highCharts/column/column-chart.component.mjs +4 -4
- package/esm2022/ui/charts/src/highCharts/gauge/solid-gauge.component.mjs +4 -4
- package/esm2022/ui/charts/src/highCharts/heatmap/heatMap-chart.component.mjs +4 -4
- package/esm2022/ui/charts/src/highCharts/line/line-chart-datetime-axis.component.mjs +4 -4
- package/esm2022/ui/charts/src/highCharts/line/line-chart-series.component.mjs +4 -4
- package/esm2022/ui/charts/src/highCharts/line/line-chart.component.mjs +4 -4
- package/esm2022/ui/charts/src/highCharts/pie/pie-chart.component.mjs +4 -4
- package/esm2022/ui/checkbox/src/check-box.component.mjs +4 -4
- package/esm2022/ui/checkbox/src/tri-state-checkbox.component.mjs +4 -4
- package/esm2022/ui/chip/src/chip.component.mjs +4 -4
- package/esm2022/ui/collapse-reorder-list/src/collapse-reorder-list.component.mjs +4 -4
- package/esm2022/ui/dxEditor/src/dx-editor.component.mjs +4 -4
- package/esm2022/ui/dxField/src/dx-field.component.mjs +4 -4
- package/esm2022/ui/editor/src/aril-editor.component.mjs +4 -4
- package/esm2022/ui/field/src/field.component.mjs +4 -4
- package/esm2022/ui/fileUpload/src/file-upload.component.mjs +4 -4
- package/esm2022/ui/form/index.mjs +5 -5
- package/esm2022/ui/form/src/form-submit-button.component.mjs +4 -4
- package/esm2022/ui/form/src/form.component.mjs +4 -4
- package/esm2022/ui/img-viewer/src/img-viewer.component.mjs +4 -4
- package/esm2022/ui/json-diff-comparison/src/json-diff.component.mjs +4 -4
- package/esm2022/ui/lib/src/form/form-error-message.component.mjs +4 -4
- package/esm2022/ui/lib/src/form/form-error-message.directive.mjs +4 -4
- package/esm2022/ui/lib/src/grid/enum-color-picker.pipe.mjs +4 -4
- package/esm2022/ui/lib/src/grid/flex-grid.directive.mjs +4 -4
- package/esm2022/ui/lib/src/input/common-input-validators.service.mjs +4 -4
- package/esm2022/ui/lib/src/input/dx-input-error-message.pipe.mjs +4 -4
- package/esm2022/ui/lib/src/input/input-disabled.directive.mjs +4 -4
- package/esm2022/ui/lib/src/input/input-error-message.pipe.mjs +4 -4
- package/esm2022/ui/lib/src/input/value-accessor.directive.mjs +4 -4
- package/esm2022/ui/loader/src/loader.component.mjs +4 -4
- package/esm2022/ui/mask/src/mask.component.mjs +4 -4
- package/esm2022/ui/multiSelect/src/multi-select.component.mjs +4 -4
- package/esm2022/ui/number/src/number.component.mjs +4 -4
- package/esm2022/ui/operation-types-dialog/src/operation-types-dialog.component.mjs +4 -4
- package/esm2022/ui/overlayPanel/src/overlay-panel.component.mjs +4 -4
- package/esm2022/ui/panel/src/panel.component.mjs +4 -4
- package/esm2022/ui/password/src/password.component.mjs +4 -4
- package/esm2022/ui/pdf-viewer/src/pdf-viewer.component.mjs +4 -4
- package/esm2022/ui/progressbar/src/progressbar.component.mjs +4 -4
- package/esm2022/ui/radioButton/src/radio-button.component.mjs +4 -4
- package/esm2022/ui/relativeDateSelector/src/relative-date-selector.component.mjs +4 -4
- package/esm2022/ui/selectBox/src/select-box.component.mjs +4 -4
- package/esm2022/ui/switch/src/switch.component.mjs +4 -4
- package/esm2022/ui/table/index.mjs +5 -5
- package/esm2022/ui/table/src/export-overlay-panel.component.mjs +4 -4
- package/esm2022/ui/table/src/table-column.component.mjs +4 -4
- package/esm2022/ui/table/src/table.component.mjs +4 -4
- package/esm2022/ui/table-expand/index.mjs +5 -5
- package/esm2022/ui/table-expand/src/table-column.component.mjs +4 -4
- package/esm2022/ui/table-expand/src/table-expand-area.component.mjs +4 -4
- package/esm2022/ui/table-expand/src/table.component.mjs +4 -4
- package/esm2022/ui/tag/src/tag.component.mjs +4 -4
- package/esm2022/ui/tagBox/src/tag-box.component.mjs +4 -4
- package/esm2022/ui/text/src/text.component.mjs +4 -4
- package/esm2022/ui/textArea/src/text-area.component.mjs +4 -4
- package/esm2022/ui/toggle-button/src/toggle-button.component.mjs +4 -4
- package/esm2022/ui/tooltip/src/tooltip-component.mjs +4 -4
- package/esm2022/ui/translate-input/src/aril-lang-modal/aril-lang-modal.component.mjs +4 -4
- package/esm2022/ui/translate-input/src/aril-translate-input.component.mjs +4 -4
- package/esm2022/ui/tree/src/tree.component.mjs +4 -4
- package/esm2022/ui/treeSelect/src/treeSelect.component.mjs +4 -4
- package/esm2022/ui/treeTable/src/tree-table.component.mjs +4 -4
- package/esm2022/ui/value/src/value.component.mjs +4 -4
- package/esm2022/ui-business/assetPicker/src/asset-picker.component.mjs +4 -4
- package/esm2022/ui-business/detailed-overlay-panel/src/detailed-overlay-panel.component.mjs +4 -4
- package/esm2022/ui-business/enumPicker/src/enum-picker.component.mjs +4 -4
- package/esm2022/ui-business/image-viewer/src/aril-image-viewer.component.mjs +4 -4
- package/esm2022/ui-business/multiple-ref-value/src/multiple-ref-value.component.mjs +4 -4
- package/esm2022/ui-business/notification-templates-dialog/src/notification-templates-dialog.component.mjs +4 -4
- package/esm2022/ui-business/operation-types-dialog/src/operation-types-dialog.component.mjs +4 -4
- package/esm2022/ui-business/pdf-preview-modal/src/pdf-preview-modal.component.mjs +4 -4
- package/esm2022/ui-business/ref-value/src/ref-value.component.mjs +4 -4
- package/esm2022/ui-business/rolePicker/src/role-picker.component.mjs +4 -4
- package/esm2022/ui-business/trace-drawer/src/app-log.service.mjs +4 -4
- package/esm2022/ui-business/trace-drawer/src/trace-drawer.component.mjs +4 -4
- package/esm2022/ui-business/trace-drawer/src/trace-log.service.mjs +4 -4
- package/esm2022/ui-business/trace-id/src/trace-id.component.mjs +4 -4
- package/esm2022/ui-business/userPicker/src/user-picker.component.mjs +4 -4
- package/esm2022/util/activity/aril-util-activity.mjs +5 -0
- package/esm2022/util/activity/index.mjs +4 -0
- package/esm2022/util/activity/src/activity.constants.mjs +4 -0
- package/esm2022/util/activity/src/activity.service.mjs +198 -0
- package/esm2022/util/activity/src/activity.types.mjs +2 -0
- package/esm2022/util/block/src/block.mjs +7 -7
- package/esm2022/util/directives/src/detail-page-customization/detail-page-customization.directive.mjs +4 -4
- package/esm2022/util/directives/src/dialog-component/plugin-dialog.component.mjs +4 -4
- package/esm2022/util/directives/src/dialog-service/plugin-dialog.service.mjs +4 -4
- package/esm2022/util/lib/src/module-router.mjs +4 -4
- package/esm2022/util/pipes/src/distance-to-now.pipe.mjs +4 -4
- package/esm2022/util/pipes/src/get-column-by-field.pipe.mjs +4 -4
- package/esm2022/util/pipes/src/parse.pipe.mjs +4 -4
- package/esm2022/util/pipes/src/round-number.pipe.mjs +4 -4
- package/esm2022/util/pipes/src/safe.pipe.mjs +4 -4
- package/esm2022/util/pipes/src/translate-json/translate-json.pipe.mjs +4 -4
- package/esm2022/util/pub-sub/src/pub-sub.service.mjs +4 -4
- package/esm2022/util/sync-active-tab-route/src/sync-active-tab-route.directive.mjs +4 -4
- package/esm2022/util/unwrap/src/unwrap-tag.directive.mjs +4 -4
- package/fesm2022/{aril-app.component-wxP3y8dg.mjs → aril-app.component-CwZZhJcO.mjs} +5 -4
- package/fesm2022/{aril-app.component-wxP3y8dg.mjs.map → aril-app.component-CwZZhJcO.mjs.map} +1 -1
- package/fesm2022/aril-boot-base.mjs +1 -1
- package/fesm2022/aril-boot-base.mjs.map +1 -1
- package/fesm2022/aril-boot-bridge.mjs.map +1 -1
- package/fesm2022/aril-boot-config-api.mjs +3 -2
- package/fesm2022/aril-boot-config-api.mjs.map +1 -1
- package/fesm2022/aril-boot-config-apps.mjs +35 -16
- package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
- package/fesm2022/aril-boot-config-plugins.mjs +7 -5
- package/fesm2022/aril-boot-config-plugins.mjs.map +1 -1
- package/fesm2022/aril-boot-config-translate.mjs.map +1 -1
- package/fesm2022/aril-boot-host.mjs +8 -6
- package/fesm2022/aril-boot-host.mjs.map +1 -1
- package/fesm2022/{aril-boot-mfe-app.component-7IjAmjz0.mjs → aril-boot-mfe-app.component-DwYgUUdL.mjs} +6 -5
- package/fesm2022/{aril-boot-mfe-app.component-7IjAmjz0.mjs.map → aril-boot-mfe-app.component-DwYgUUdL.mjs.map} +1 -1
- package/fesm2022/{aril-boot-mfe-aril-boot-mfe-KXDpUyv7.mjs → aril-boot-mfe-aril-boot-mfe-hJkkFa_a.mjs} +8 -6
- package/fesm2022/{aril-boot-mfe-aril-boot-mfe-KXDpUyv7.mjs.map → aril-boot-mfe-aril-boot-mfe-hJkkFa_a.mjs.map} +1 -1
- package/fesm2022/aril-boot-mfe.mjs +2 -1
- package/fesm2022/aril-boot-mfe.mjs.map +1 -1
- package/fesm2022/aril-boot-pages.mjs +6 -6
- package/fesm2022/aril-boot-pages.mjs.map +1 -1
- package/fesm2022/aril-http.mjs +3 -3
- package/fesm2022/aril-http.mjs.map +1 -1
- package/fesm2022/aril-i18n.mjs +7 -7
- package/fesm2022/aril-i18n.mjs.map +1 -1
- package/fesm2022/aril-keycloak.mjs +4 -1
- package/fesm2022/aril-keycloak.mjs.map +1 -1
- package/fesm2022/aril-provider.mjs +1 -1
- package/fesm2022/aril-provider.mjs.map +1 -1
- package/fesm2022/aril-theme-layout.mjs +85 -74
- package/fesm2022/aril-theme-layout.mjs.map +1 -1
- package/fesm2022/aril-ui-autoComplete.mjs +6 -6
- package/fesm2022/aril-ui-autoComplete.mjs.map +1 -1
- package/fesm2022/aril-ui-badge.mjs +4 -4
- package/fesm2022/aril-ui-badge.mjs.map +1 -1
- package/fesm2022/aril-ui-business-assetPicker.mjs +5 -5
- package/fesm2022/aril-ui-business-assetPicker.mjs.map +1 -1
- package/fesm2022/aril-ui-business-detailed-overlay-panel.mjs +5 -5
- package/fesm2022/aril-ui-business-detailed-overlay-panel.mjs.map +1 -1
- package/fesm2022/aril-ui-business-enumPicker.mjs +5 -5
- package/fesm2022/aril-ui-business-enumPicker.mjs.map +1 -1
- package/fesm2022/aril-ui-business-image-viewer.mjs +3 -3
- package/fesm2022/aril-ui-business-image-viewer.mjs.map +1 -1
- package/fesm2022/aril-ui-business-multiple-ref-value.mjs +4 -4
- package/fesm2022/aril-ui-business-multiple-ref-value.mjs.map +1 -1
- package/fesm2022/aril-ui-business-notification-templates-dialog.mjs +3 -3
- package/fesm2022/aril-ui-business-notification-templates-dialog.mjs.map +1 -1
- package/fesm2022/aril-ui-business-operation-types-dialog.mjs +3 -3
- package/fesm2022/aril-ui-business-operation-types-dialog.mjs.map +1 -1
- package/fesm2022/aril-ui-business-pdf-preview-modal.mjs +3 -3
- package/fesm2022/aril-ui-business-pdf-preview-modal.mjs.map +1 -1
- package/fesm2022/aril-ui-business-ref-value.mjs +4 -4
- package/fesm2022/aril-ui-business-ref-value.mjs.map +1 -1
- package/fesm2022/aril-ui-business-rolePicker.mjs +4 -4
- package/fesm2022/aril-ui-business-rolePicker.mjs.map +1 -1
- package/fesm2022/aril-ui-business-trace-drawer.mjs +10 -10
- package/fesm2022/aril-ui-business-trace-drawer.mjs.map +1 -1
- package/fesm2022/aril-ui-business-trace-id.mjs +4 -4
- package/fesm2022/aril-ui-business-trace-id.mjs.map +1 -1
- package/fesm2022/aril-ui-business-userPicker.mjs +3 -3
- package/fesm2022/aril-ui-business-userPicker.mjs.map +1 -1
- package/fesm2022/aril-ui-button.mjs +10 -7
- package/fesm2022/aril-ui-button.mjs.map +1 -1
- package/fesm2022/aril-ui-calendar.mjs +3 -3
- package/fesm2022/aril-ui-calendar.mjs.map +1 -1
- package/fesm2022/aril-ui-charts.mjs +37 -37
- package/fesm2022/aril-ui-charts.mjs.map +1 -1
- package/fesm2022/aril-ui-checkbox.mjs +6 -6
- package/fesm2022/aril-ui-checkbox.mjs.map +1 -1
- package/fesm2022/aril-ui-chip.mjs +4 -4
- package/fesm2022/aril-ui-chip.mjs.map +1 -1
- package/fesm2022/aril-ui-collapse-reorder-list.mjs +4 -4
- package/fesm2022/aril-ui-collapse-reorder-list.mjs.map +1 -1
- package/fesm2022/aril-ui-dxEditor.mjs +4 -4
- package/fesm2022/aril-ui-dxEditor.mjs.map +1 -1
- package/fesm2022/aril-ui-dxField.mjs +4 -4
- package/fesm2022/aril-ui-dxField.mjs.map +1 -1
- package/fesm2022/aril-ui-editor.mjs +4 -4
- package/fesm2022/aril-ui-editor.mjs.map +1 -1
- package/fesm2022/aril-ui-field.mjs +4 -4
- package/fesm2022/aril-ui-field.mjs.map +1 -1
- package/fesm2022/aril-ui-fileUpload.mjs +4 -4
- package/fesm2022/aril-ui-fileUpload.mjs.map +1 -1
- package/fesm2022/aril-ui-form.mjs +11 -11
- package/fesm2022/aril-ui-form.mjs.map +1 -1
- package/fesm2022/aril-ui-img-viewer.mjs +3 -3
- package/fesm2022/aril-ui-img-viewer.mjs.map +1 -1
- package/fesm2022/aril-ui-json-diff-comparison.mjs +4 -4
- package/fesm2022/aril-ui-json-diff-comparison.mjs.map +1 -1
- package/fesm2022/aril-ui-lib.mjs +28 -28
- package/fesm2022/aril-ui-lib.mjs.map +1 -1
- package/fesm2022/aril-ui-loader.mjs +3 -3
- package/fesm2022/aril-ui-loader.mjs.map +1 -1
- package/fesm2022/aril-ui-mask.mjs +3 -3
- package/fesm2022/aril-ui-mask.mjs.map +1 -1
- package/fesm2022/aril-ui-multiSelect.mjs +3 -3
- package/fesm2022/aril-ui-multiSelect.mjs.map +1 -1
- package/fesm2022/aril-ui-number.mjs +3 -3
- package/fesm2022/aril-ui-number.mjs.map +1 -1
- package/fesm2022/aril-ui-operation-types-dialog.mjs +3 -3
- package/fesm2022/aril-ui-operation-types-dialog.mjs.map +1 -1
- package/fesm2022/aril-ui-overlayPanel.mjs +4 -4
- package/fesm2022/aril-ui-overlayPanel.mjs.map +1 -1
- package/fesm2022/aril-ui-panel.mjs +4 -4
- package/fesm2022/aril-ui-panel.mjs.map +1 -1
- package/fesm2022/aril-ui-password.mjs +3 -3
- package/fesm2022/aril-ui-password.mjs.map +1 -1
- package/fesm2022/aril-ui-pdf-viewer.mjs +3 -3
- package/fesm2022/aril-ui-pdf-viewer.mjs.map +1 -1
- package/fesm2022/aril-ui-progressbar.mjs +3 -3
- package/fesm2022/aril-ui-progressbar.mjs.map +1 -1
- package/fesm2022/aril-ui-radioButton.mjs +3 -3
- package/fesm2022/aril-ui-radioButton.mjs.map +1 -1
- package/fesm2022/aril-ui-relativeDateSelector.mjs +4 -4
- package/fesm2022/aril-ui-relativeDateSelector.mjs.map +1 -1
- package/fesm2022/aril-ui-selectBox.mjs +5 -5
- package/fesm2022/aril-ui-selectBox.mjs.map +1 -1
- package/fesm2022/aril-ui-switch.mjs +3 -3
- package/fesm2022/aril-ui-switch.mjs.map +1 -1
- package/fesm2022/aril-ui-table-expand.mjs +14 -14
- package/fesm2022/aril-ui-table-expand.mjs.map +1 -1
- package/fesm2022/aril-ui-table.mjs +15 -15
- package/fesm2022/aril-ui-table.mjs.map +1 -1
- package/fesm2022/aril-ui-tag.mjs +3 -3
- package/fesm2022/aril-ui-tag.mjs.map +1 -1
- package/fesm2022/aril-ui-tagBox.mjs +5 -5
- package/fesm2022/aril-ui-tagBox.mjs.map +1 -1
- package/fesm2022/aril-ui-text.mjs +3 -3
- package/fesm2022/aril-ui-text.mjs.map +1 -1
- package/fesm2022/aril-ui-textArea.mjs +3 -3
- package/fesm2022/aril-ui-textArea.mjs.map +1 -1
- package/fesm2022/aril-ui-toggle-button.mjs +4 -4
- package/fesm2022/aril-ui-toggle-button.mjs.map +1 -1
- package/fesm2022/aril-ui-tooltip.mjs +3 -3
- package/fesm2022/aril-ui-tooltip.mjs.map +1 -1
- package/fesm2022/aril-ui-translate-input.mjs +6 -6
- package/fesm2022/aril-ui-translate-input.mjs.map +1 -1
- package/fesm2022/aril-ui-tree.mjs +4 -4
- package/fesm2022/aril-ui-tree.mjs.map +1 -1
- package/fesm2022/aril-ui-treeSelect.mjs +4 -4
- package/fesm2022/aril-ui-treeSelect.mjs.map +1 -1
- package/fesm2022/aril-ui-treeTable.mjs +4 -4
- package/fesm2022/aril-ui-treeTable.mjs.map +1 -1
- package/fesm2022/aril-ui-value.mjs +5 -5
- package/fesm2022/aril-ui-value.mjs.map +1 -1
- package/fesm2022/aril-util-activity.mjs +208 -0
- package/fesm2022/aril-util-activity.mjs.map +1 -0
- package/fesm2022/aril-util-block.mjs +6 -6
- package/fesm2022/aril-util-block.mjs.map +1 -1
- package/fesm2022/aril-util-directives.mjs +10 -10
- package/fesm2022/aril-util-directives.mjs.map +1 -1
- package/fesm2022/aril-util-lib.mjs +3 -3
- package/fesm2022/aril-util-lib.mjs.map +1 -1
- package/fesm2022/aril-util-pipes.mjs +18 -18
- package/fesm2022/aril-util-pipes.mjs.map +1 -1
- package/fesm2022/aril-util-primitive-extensions.mjs.map +1 -1
- package/fesm2022/aril-util-pub-sub.mjs +3 -3
- package/fesm2022/aril-util-pub-sub.mjs.map +1 -1
- package/fesm2022/aril-util-sync-active-tab-route.mjs +4 -4
- package/fesm2022/aril-util-sync-active-tab-route.mjs.map +1 -1
- package/fesm2022/aril-util-unwrap.mjs +3 -3
- package/fesm2022/aril-util-unwrap.mjs.map +1 -1
- package/fesm2022/aril.mjs +13 -10
- package/fesm2022/aril.mjs.map +1 -1
- package/package.json +233 -227
- package/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.d.ts +16 -0
- package/theme/layout/app/history/history-sidebar.component.d.ts +16 -0
- package/theme/layout/app/notifications/notifications-sidebar.component.d.ts +16 -0
- package/theme/layout/app/site-map/site-map-sidebar.component.d.ts +16 -0
- package/theme/layout/app/topbar/app.topbar.component.d.ts +5 -0
- package/theme/layout/app/topbar/app.topbar.component.html +3 -0
- package/theme/layout/app/topbar/app.topbar.component.scss +31 -0
- package/theme/layout/app/topbar/app.topbar.component.ts +14 -1
- package/ui/autoComplete/src/auto-complete.component.d.ts +8 -8
- package/ui/badge/src/badge.component.d.ts +9 -9
- package/ui/button/src/button.component.d.ts +14 -12
- package/ui/button/src/split-button.component.d.ts +1 -1
- package/ui/calendar/src/calendar.component.d.ts +22 -22
- package/ui/charts/src/amCharts/column/column-chart.component.d.ts +4 -4
- package/ui/charts/src/amCharts/line/line-chart.component.d.ts +5 -5
- package/ui/charts/src/amCharts/pie/pie-chart.component.d.ts +4 -4
- package/ui/charts/src/highCharts/area/area-chart.component.d.ts +3 -3
- package/ui/charts/src/highCharts/bar/bar-chart.component.d.ts +7 -7
- package/ui/charts/src/highCharts/column/column-chart.component.d.ts +9 -9
- package/ui/charts/src/highCharts/gauge/solid-gauge.component.d.ts +3 -3
- package/ui/charts/src/highCharts/heatmap/heatMap-chart.component.d.ts +4 -4
- package/ui/charts/src/highCharts/line/line-chart-datetime-axis.component.d.ts +5 -5
- package/ui/charts/src/highCharts/line/line-chart-series.component.d.ts +4 -4
- package/ui/charts/src/highCharts/line/line-chart.component.d.ts +4 -4
- package/ui/charts/src/highCharts/pie/pie-chart.component.d.ts +7 -7
- package/ui/checkbox/src/check-box.component.d.ts +3 -3
- package/ui/checkbox/src/tri-state-checkbox.component.d.ts +2 -2
- package/ui/chip/src/chip.component.d.ts +7 -7
- package/ui/collapse-reorder-list/src/collapse-reorder-list.component.d.ts +4 -4
- package/ui/dxEditor/src/dx-editor.component.d.ts +5 -5
- package/ui/dxField/src/dx-field.component.d.ts +5 -5
- package/ui/editor/src/aril-editor.component.d.ts +3 -3
- package/ui/field/src/field.component.d.ts +9 -9
- package/ui/fileUpload/src/file-upload.component.d.ts +14 -14
- package/ui/form/src/form-submit-button.component.d.ts +1 -1
- package/ui/form/src/form.component.d.ts +1 -1
- package/ui/img-viewer/src/img-viewer.component.d.ts +1 -1
- package/ui/lib/src/form/form-error-message.directive.d.ts +1 -1
- package/ui/mask/src/mask.component.d.ts +6 -6
- package/ui/multiSelect/src/multi-select.component.d.ts +13 -13
- package/ui/number/src/number.component.d.ts +15 -15
- package/ui/overlayPanel/src/overlay-panel.component.d.ts +1 -1
- package/ui/panel/src/panel.component.d.ts +6 -6
- package/ui/password/src/password.component.d.ts +4 -4
- package/ui/pdf-viewer/src/pdf-viewer.component.d.ts +12 -12
- package/ui/progressbar/src/progressbar.component.d.ts +3 -3
- package/ui/radioButton/src/radio-button.component.d.ts +3 -3
- package/ui/selectBox/src/select-box.component.d.ts +10 -10
- package/ui/switch/src/switch.component.d.ts +1 -1
- package/ui/table/src/export-overlay-panel.component.d.ts +2 -2
- package/ui/table/src/table-column.component.d.ts +11 -11
- package/ui/table/src/table.component.d.ts +35 -35
- package/ui/table-expand/src/table-column.component.d.ts +6 -6
- package/ui/table-expand/src/table.component.d.ts +20 -20
- package/ui/tag/src/tag.component.d.ts +4 -6
- package/ui/tagBox/src/tag-box.component.d.ts +7 -7
- package/ui/text/src/text.component.d.ts +5 -5
- package/ui/textArea/src/text-area.component.d.ts +5 -5
- package/ui/toggle-button/src/toggle-button.component.d.ts +1 -1
- package/ui/tooltip/src/tooltip-component.d.ts +8 -8
- package/ui/translate-input/src/aril-translate-input.component.d.ts +2 -2
- package/ui/tree/src/tree.component.d.ts +8 -8
- package/ui/treeSelect/src/treeSelect.component.d.ts +12 -12
- package/ui/treeTable/src/tree-table.component.d.ts +5 -5
- package/ui/value/src/value.component.d.ts +15 -15
- package/ui-business/assetPicker/src/asset-picker.component.d.ts +11 -11
- package/ui-business/detailed-overlay-panel/src/detailed-overlay-panel.component.d.ts +3 -6
- package/ui-business/enumPicker/src/enum-picker.component.d.ts +23 -23
- package/ui-business/image-viewer/src/aril-image-viewer.component.d.ts +8 -8
- package/ui-business/multiple-ref-value/src/multiple-ref-value.component.d.ts +2 -5
- package/ui-business/ref-value/src/ref-value.component.d.ts +5 -5
- package/ui-business/rolePicker/src/role-picker.component.d.ts +6 -6
- package/ui-business/trace-drawer/src/trace-drawer.component.d.ts +8 -8
- package/ui-business/trace-id/src/trace-id.component.d.ts +6 -6
- package/ui-business/userPicker/src/user-picker.component.d.ts +3 -3
- package/util/activity/index.d.ts +3 -0
- package/util/activity/src/activity.constants.d.ts +3 -0
- package/util/activity/src/activity.service.d.ts +29 -0
- package/util/activity/src/activity.types.d.ts +13 -0
- package/util/block/src/block.d.ts +4 -4
- package/util/lib/src/types.d.ts +16 -0
|
@@ -23,13 +23,13 @@ export class TraceIdComponent {
|
|
|
23
23
|
return;
|
|
24
24
|
this.clickEvent.emit(this.traceId());
|
|
25
25
|
}
|
|
26
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
27
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.
|
|
26
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraceIdComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: TraceIdComponent, isStandalone: true, selector: "aril-trace-id", inputs: { traceId: { classPropertyName: "traceId", publicName: "traceId", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, iconLeft: { classPropertyName: "iconLeft", publicName: "iconLeft", isSignal: true, isRequired: false, transformFunction: null }, iconRight: { classPropertyName: "iconRight", publicName: "iconRight", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clickEvent: "clickEvent" }, ngImport: i0, template: "<button\r\n\ttype=\"button\"\r\n\tclass=\"aril-trace-id\"\r\n\t[class.aril-trace-id--md]=\"size() === 'md'\"\r\n\t[class.aril-trace-id--disabled]=\"disabled()\"\r\n\t[attr.aria-label]=\"traceId()\"\r\n\t[title]=\"traceId()\"\r\n\t(click)=\"onClick($event)\">\r\n\t<i class=\"pi {{ iconLeft() }}\"></i>\r\n\t<span class=\"aril-trace-id__text\">{{ displayText() }}</span>\r\n\t<i class=\"pi {{ iconRight() }}\"></i>\r\n</button>\r\n", styles: [".aril-trace-id{display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .55rem;font-size:.9rem;line-height:1.2;color:var(--primary-color, #1890ff);background:var(--primary-50, rgba(24, 144, 255, .08));border:1px solid transparent;border-radius:4px;cursor:pointer;transition:background .15s ease,border-color .15s ease}.aril-trace-id:hover{background:var(--primary-100, rgba(24, 144, 255, .15));border-color:var(--primary-200, rgba(24, 144, 255, .3))}.aril-trace-id:focus-visible{outline:2px solid var(--primary-color, #1890ff);outline-offset:1px}.aril-trace-id--md{padding:.35rem .75rem;font-size:1rem}.aril-trace-id--disabled{cursor:not-allowed;opacity:.6;pointer-events:none}.aril-trace-id .pi{font-size:.85rem}.aril-trace-id__text{white-space:nowrap}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28
28
|
}
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraceIdComponent, decorators: [{
|
|
30
30
|
type: Component,
|
|
31
31
|
args: [{ standalone: true, selector: 'aril-trace-id', imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\r\n\ttype=\"button\"\r\n\tclass=\"aril-trace-id\"\r\n\t[class.aril-trace-id--md]=\"size() === 'md'\"\r\n\t[class.aril-trace-id--disabled]=\"disabled()\"\r\n\t[attr.aria-label]=\"traceId()\"\r\n\t[title]=\"traceId()\"\r\n\t(click)=\"onClick($event)\">\r\n\t<i class=\"pi {{ iconLeft() }}\"></i>\r\n\t<span class=\"aril-trace-id__text\">{{ displayText() }}</span>\r\n\t<i class=\"pi {{ iconRight() }}\"></i>\r\n</button>\r\n", styles: [".aril-trace-id{display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .55rem;font-size:.9rem;line-height:1.2;color:var(--primary-color, #1890ff);background:var(--primary-50, rgba(24, 144, 255, .08));border:1px solid transparent;border-radius:4px;cursor:pointer;transition:background .15s ease,border-color .15s ease}.aril-trace-id:hover{background:var(--primary-100, rgba(24, 144, 255, .15));border-color:var(--primary-200, rgba(24, 144, 255, .3))}.aril-trace-id:focus-visible{outline:2px solid var(--primary-color, #1890ff);outline-offset:1px}.aril-trace-id--md{padding:.35rem .75rem;font-size:1rem}.aril-trace-id--disabled{cursor:not-allowed;opacity:.6;pointer-events:none}.aril-trace-id .pi{font-size:.85rem}.aril-trace-id__text{white-space:nowrap}\n"] }]
|
|
32
32
|
}], propDecorators: { clickEvent: [{
|
|
33
33
|
type: Output
|
|
34
34
|
}] } });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2UtaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS1idXNpbmVzcy90cmFjZS1pZC9zcmMvdHJhY2UtaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS1idXNpbmVzcy90cmFjZS1pZC9zcmMvdHJhY2UtaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBWTFHLE1BQU0sT0FBTyxnQkFBZ0I7SUFSN0I7UUFTQyxZQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ25DLFVBQUssR0FBRyxLQUFLLEVBQXNCLENBQUM7UUFDcEMsYUFBUSxHQUFHLEtBQUssQ0FBUyxZQUFZLENBQUMsQ0FBQztRQUN2QyxjQUFTLEdBQUcsS0FBSyxDQUFTLGtCQUFrQixDQUFDLENBQUM7UUFDOUMsU0FBSSxHQUFHLEtBQUssQ0FBTyxJQUFJLENBQUMsQ0FBQztRQUN6QixhQUFRLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRXZCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRS9CLGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM5QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDNUIsSUFBSSxNQUFNO2dCQUFFLE9BQU8sTUFBTSxDQUFDO1lBQzFCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDaEMsT0FBTyxFQUFFLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7S0FPSDtJQUxVLE9BQU8sQ0FBQyxLQUFpQjtRQUNsQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQUUsT0FBTztRQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDOytHQXJCVyxnQkFBZ0I7bUdBQWhCLGdCQUFnQiw0MkJDWjdCLGdiQVlBOzs0RkRBYSxnQkFBZ0I7a0JBUjVCLFNBQVM7aUNBQ0csSUFBSSxZQUNOLGVBQWUsV0FHaEIsRUFBRSxtQkFDTSx1QkFBdUIsQ0FBQyxNQUFNOzhCQVVyQyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxudHlwZSBTaXplID0gJ3NtJyB8ICdtZCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHNlbGVjdG9yOiAnYXJpbC10cmFjZS1pZCcsXHJcblx0dGVtcGxhdGVVcmw6ICcuL3RyYWNlLWlkLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi90cmFjZS1pZC5jb21wb25lbnQuc2NzcyddLFxyXG5cdGltcG9ydHM6IFtdLFxyXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmFjZUlkQ29tcG9uZW50IHtcclxuXHR0cmFjZUlkID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xyXG5cdGxhYmVsID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xyXG5cdGljb25MZWZ0ID0gaW5wdXQ8c3RyaW5nPigncGktc2l0ZW1hcCcpO1xyXG5cdGljb25SaWdodCA9IGlucHV0PHN0cmluZz4oJ3BpLWNoZXZyb24tcmlnaHQnKTtcclxuXHRzaXplID0gaW5wdXQ8U2l6ZT4oJ3NtJyk7XHJcblx0ZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblxyXG5cdEBPdXRwdXQoKSBjbGlja0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG5cdHByb3RlY3RlZCByZWFkb25seSBkaXNwbGF5VGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcclxuXHRcdGNvbnN0IGN1c3RvbSA9IHRoaXMubGFiZWwoKTtcclxuXHRcdGlmIChjdXN0b20pIHJldHVybiBjdXN0b207XHJcblx0XHRjb25zdCBpZCA9IHRoaXMudHJhY2VJZCgpID8/ICcnO1xyXG5cdFx0cmV0dXJuIGlkLmxlbmd0aCA+IDEwID8gaWQuc2xpY2UoMCwgOCkgKyAn4oCmJyA6IGlkO1xyXG5cdH0pO1xyXG5cclxuXHRwcm90ZWN0ZWQgb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblx0XHRpZiAodGhpcy5kaXNhYmxlZCgpKSByZXR1cm47XHJcblx0XHR0aGlzLmNsaWNrRXZlbnQuZW1pdCh0aGlzLnRyYWNlSWQoKSk7XHJcblx0fVxyXG59XHJcbiIsIjxidXR0b25cclxuXHR0eXBlPVwiYnV0dG9uXCJcclxuXHRjbGFzcz1cImFyaWwtdHJhY2UtaWRcIlxyXG5cdFtjbGFzcy5hcmlsLXRyYWNlLWlkLS1tZF09XCJzaXplKCkgPT09ICdtZCdcIlxyXG5cdFtjbGFzcy5hcmlsLXRyYWNlLWlkLS1kaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcclxuXHRbYXR0ci5hcmlhLWxhYmVsXT1cInRyYWNlSWQoKVwiXHJcblx0W3RpdGxlXT1cInRyYWNlSWQoKVwiXHJcblx0KGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiPlxyXG5cdDxpIGNsYXNzPVwicGkge3sgaWNvbkxlZnQoKSB9fVwiPjwvaT5cclxuXHQ8c3BhbiBjbGFzcz1cImFyaWwtdHJhY2UtaWRfX3RleHRcIj57eyBkaXNwbGF5VGV4dCgpIH19PC9zcGFuPlxyXG5cdDxpIGNsYXNzPVwicGkge3sgaWNvblJpZ2h0KCkgfX1cIj48L2k+XHJcbjwvYnV0dG9uPlxyXG4iXX0=
|
|
@@ -33,11 +33,11 @@ export class UserPickerComponent extends BaseInputComponent {
|
|
|
33
33
|
});
|
|
34
34
|
this.filteredSelectionItems = newFilteredGroupSuggestions;
|
|
35
35
|
}
|
|
36
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
37
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.
|
|
36
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UserPickerComponent, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: UserPickerComponent, isStandalone: true, selector: "aril-user-picker[ngModel], aril-user-picker[formControl], aril-user-picker[formControlName]", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, forceSelection: { classPropertyName: "forceSelection", publicName: "forceSelection", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, hostDirectives: [{ directive: i2.ValueAccessorDirective }], ngImport: i0, template: "<p-autoComplete\r\n\toptionLabel=\"text\"\r\n\t[placeholder]=\"placeholder()\"\r\n\t[multiple]=\"multiple()\"\r\n\t[forceSelection]=\"forceSelection()\"\r\n\t[delay]=\"400\"\r\n\t[suggestions]=\"filteredSelectionItems\"\r\n\t(completeMethod)=\"search($event)\"\r\n\t[formControl]=\"ngControl.control\"\r\n\t[autoHighlight]=\"true\"\r\n\t(ngModelChange)=\"ngControl.viewToModelUpdate($event)\"\r\n\tappendTo=\"body\"\r\n\t>\r\n\t<ng-template let-item pTemplate=\"item\">\r\n\t\t<div>\r\n\t\t\t<p><strong>{{ item.key }}</strong></p>\r\n\t\t\t<span class=\"opacity-50\">{{ item?.text }}</span>\r\n\t\t</div>\r\n\t</ng-template>\r\n</p-autoComplete>", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: AutoCompleteModule }, { kind: "component", type: i4.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "variant"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "directive", type: i5.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }] }); }
|
|
38
38
|
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UserPickerComponent, decorators: [{
|
|
40
40
|
type: Component,
|
|
41
41
|
args: [{ standalone: true, selector: 'aril-user-picker[ngModel], aril-user-picker[formControl], aril-user-picker[formControlName]', imports: [ReactiveFormsModule, AutoCompleteModule], hostDirectives: [ValueAccessorDirective], template: "<p-autoComplete\r\n\toptionLabel=\"text\"\r\n\t[placeholder]=\"placeholder()\"\r\n\t[multiple]=\"multiple()\"\r\n\t[forceSelection]=\"forceSelection()\"\r\n\t[delay]=\"400\"\r\n\t[suggestions]=\"filteredSelectionItems\"\r\n\t(completeMethod)=\"search($event)\"\r\n\t[formControl]=\"ngControl.control\"\r\n\t[autoHighlight]=\"true\"\r\n\t(ngModelChange)=\"ngControl.viewToModelUpdate($event)\"\r\n\tappendTo=\"body\"\r\n\t>\r\n\t<ng-template let-item pTemplate=\"item\">\r\n\t\t<div>\r\n\t\t\t<p><strong>{{ item.key }}</strong></p>\r\n\t\t\t<span class=\"opacity-50\">{{ item?.text }}</span>\r\n\t\t</div>\r\n\t</ng-template>\r\n</p-autoComplete>" }]
|
|
42
42
|
}], ctorParameters: () => [{ type: i1.HttpClient }] });
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS1idXNpbmVzcy91c2VyUGlja2VyL3NyYy91c2VyLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3VpLWJ1c2luZXNzL3VzZXJQaWNrZXIvc3JjL3VzZXItcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRCxPQUFPLEVBQUcsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHekUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7O0FBUzdDLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxrQkFBa0I7SUFTMUQsWUFBb0IsSUFBZ0I7UUFDbkMsS0FBSyxFQUFFLENBQUM7UUFEVyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBUnBDLGdCQUFXLEdBQUcsS0FBSyxDQUFTLFVBQVUsQ0FBQyxDQUFDO1FBQ3hDLG1CQUFjLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLGFBQVEsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFHakMsWUFBTyxHQUFHLE1BQU0sQ0FBZ0IsV0FBVyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzdFLG9CQUFlLEdBQUcsTUFBTSxDQUFTLGdDQUFnQyxDQUFDLENBQUM7SUFJbkUsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBVTtRQUN0QixNQUFNLFNBQVMsR0FBc0IsTUFBTSxjQUFjLENBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUN6RSxDQUFDO1FBRUYsTUFBTSwyQkFBMkIsR0FBcUIsRUFBRSxDQUFDO1FBRXpELFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFxQixFQUFFLEVBQUU7WUFDdkMsMkJBQTJCLENBQUMsSUFBSSxDQUFDO2dCQUNoQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ2xCLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUTtnQkFDMUMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO2FBQ1gsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsMkJBQTJCLENBQUM7SUFDM0QsQ0FBQzsrR0E3QlcsbUJBQW1CO21HQUFuQixtQkFBbUIsb3BCQ3JCaEMsdW9CQW1CaUIsMkNERE4sbUJBQW1CLHlUQUFFLGtCQUFrQjs7NEZBR3JDLG1CQUFtQjtrQkFQL0IsU0FBUztpQ0FDRyxJQUFJLFlBQ04sNkZBQTZGLFdBRTlGLENBQUMsbUJBQW1CLEVBQUUsa0JBQWtCLENBQUMsa0JBQ2xDLENBQUMsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7ICBBdXRvQ29tcGxldGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL2F1dG9jb21wbGV0ZSc7XHJcblxyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgQVBJX0NPTkZJR1MgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwaSc7XHJcbmltcG9ydCB7IEJhc2VJbnB1dENvbXBvbmVudCwgVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZSB9IGZyb20gJ2FyaWwvdWkvbGliJztcclxuXHJcbmltcG9ydCB7IFN1Z2dlc3Rpb25zRFRPLCBVc2VyUmVzcG9uc2VEVE8gfSBmcm9tICcuL2ludGVyZmFjZSc7XHJcbmltcG9ydCB7IEFwcHMgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FyaWwtdXNlci1waWNrZXJbbmdNb2RlbF0sIGFyaWwtdXNlci1waWNrZXJbZm9ybUNvbnRyb2xdLCBhcmlsLXVzZXItcGlja2VyW2Zvcm1Db250cm9sTmFtZV0nLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi91c2VyLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcblx0aW1wb3J0czogW1JlYWN0aXZlRm9ybXNNb2R1bGUsIEF1dG9Db21wbGV0ZU1vZHVsZV0sXHJcblx0aG9zdERpcmVjdGl2ZXM6IFtWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlclBpY2tlckNvbXBvbmVudCBleHRlbmRzIEJhc2VJbnB1dENvbXBvbmVudCB7XHJcblx0cGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCdBcmFtYS4uLicpO1xyXG5cdGZvcmNlU2VsZWN0aW9uID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdG11bHRpcGxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuXHRmaWx0ZXJlZFNlbGVjdGlvbkl0ZW1zITogU3VnZ2VzdGlvbnNEVE9bXTtcclxuXHRiYXNlVXJsID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KEFQSV9DT05GSUdTLmdldEV4dGVybmFsQXBwRW5kcG9pbnQoQXBwcy5NVykpO1xyXG5cdHVzZXJFbmRQb2ludFVybCA9IHNpZ25hbDxzdHJpbmc+KCcvdXNlci1tYW5hZ2VtZW50L3VzZXJzL3NlYXJjaC8nKTtcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7XHJcblx0XHRzdXBlcigpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgc2VhcmNoKGV2ZW50OiBhbnkpIHtcclxuXHRcdGNvbnN0IHVzZXJHcm91cDogVXNlclJlc3BvbnNlRFRPW10gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcclxuXHRcdFx0dGhpcy5odHRwLmdldDxhbnk+KHRoaXMuYmFzZVVybCgpICsgdGhpcy51c2VyRW5kUG9pbnRVcmwoKSArIGV2ZW50LnF1ZXJ5KVxyXG5cdFx0KTtcclxuXHJcblx0XHRjb25zdCBuZXdGaWx0ZXJlZEdyb3VwU3VnZ2VzdGlvbnM6IFN1Z2dlc3Rpb25zRFRPW10gPSBbXTtcclxuXHJcblx0XHR1c2VyR3JvdXAubWFwKChpdGVtOiBVc2VyUmVzcG9uc2VEVE8pID0+IHtcclxuXHRcdFx0bmV3RmlsdGVyZWRHcm91cFN1Z2dlc3Rpb25zLnB1c2goe1xyXG5cdFx0XHRcdGtleTogaXRlbS51c2VybmFtZSxcclxuXHRcdFx0XHR0ZXh0OiBpdGVtLmZpcnN0TmFtZSArICcgJyArIGl0ZW0ubGFzdE5hbWUsXHJcblx0XHRcdFx0aWQ6IGl0ZW0uaWRcclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLmZpbHRlcmVkU2VsZWN0aW9uSXRlbXMgPSBuZXdGaWx0ZXJlZEdyb3VwU3VnZ2VzdGlvbnM7XHJcblx0fVxyXG59IiwiPHAtYXV0b0NvbXBsZXRlXHJcblx0b3B0aW9uTGFiZWw9XCJ0ZXh0XCJcclxuXHRbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXHJcblx0W211bHRpcGxlXT1cIm11bHRpcGxlKClcIlxyXG5cdFtmb3JjZVNlbGVjdGlvbl09XCJmb3JjZVNlbGVjdGlvbigpXCJcclxuXHRbZGVsYXldPVwiNDAwXCJcclxuXHRbc3VnZ2VzdGlvbnNdPVwiZmlsdGVyZWRTZWxlY3Rpb25JdGVtc1wiXHJcblx0KGNvbXBsZXRlTWV0aG9kKT1cInNlYXJjaCgkZXZlbnQpXCJcclxuXHRbZm9ybUNvbnRyb2xdPVwibmdDb250cm9sLmNvbnRyb2xcIlxyXG5cdFthdXRvSGlnaGxpZ2h0XT1cInRydWVcIlxyXG5cdChuZ01vZGVsQ2hhbmdlKT1cIm5nQ29udHJvbC52aWV3VG9Nb2RlbFVwZGF0ZSgkZXZlbnQpXCJcclxuXHRhcHBlbmRUbz1cImJvZHlcIlxyXG5cdD5cclxuXHQ8bmctdGVtcGxhdGUgbGV0LWl0ZW0gcFRlbXBsYXRlPVwiaXRlbVwiPlxyXG5cdFx0PGRpdj5cclxuXHRcdFx0PHA+PHN0cm9uZz57eyBpdGVtLmtleSB9fTwvc3Ryb25nPjwvcD5cclxuXHRcdFx0PHNwYW4gY2xhc3M9XCJvcGFjaXR5LTUwXCI+e3sgaXRlbT8udGV4dCB9fTwvc3Bhbj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcbjwvcC1hdXRvQ29tcGxldGU+Il19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJpbC11dGlsLWFjdGl2aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91dGlsL2FjdGl2aXR5L2FyaWwtdXRpbC1hY3Rpdml0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './src/activity.service';
|
|
2
|
+
export * from './src/activity.types';
|
|
3
|
+
export * from './src/activity.constants';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3V0aWwvYWN0aXZpdHkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NyYy9hY3Rpdml0eS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvYWN0aXZpdHkudHlwZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hY3Rpdml0eS5jb25zdGFudHMnO1xyXG4iXX0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export const ACTIVITY_ENDPOINT_PATH = 'analytics/track';
|
|
2
|
+
export const ACTIVITY_SESSION_MARKER_PREFIX = 'aril.activity.session:';
|
|
3
|
+
export const LOGGER_SESSION_HEADER = 'x-aril-logger-session-id';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkuY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91dGlsL2FjdGl2aXR5L3NyYy9hY3Rpdml0eS5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsaUJBQWlCLENBQUM7QUFDeEQsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsd0JBQXdCLENBQUM7QUFDdkUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQUNUSVZJVFlfRU5EUE9JTlRfUEFUSCA9ICdhbmFseXRpY3MvdHJhY2snO1xyXG5leHBvcnQgY29uc3QgQUNUSVZJVFlfU0VTU0lPTl9NQVJLRVJfUFJFRklYID0gJ2FyaWwuYWN0aXZpdHkuc2Vzc2lvbjonO1xyXG5leHBvcnQgY29uc3QgTE9HR0VSX1NFU1NJT05fSEVBREVSID0gJ3gtYXJpbC1sb2dnZXItc2Vzc2lvbi1pZCc7XHJcbiJdfQ==
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { Location } from '@angular/common';
|
|
2
|
+
import { Injectable, inject } from '@angular/core';
|
|
3
|
+
import { NavigationEnd, Router } from '@angular/router';
|
|
4
|
+
import { KeycloakEventType, KeycloakService } from 'keycloak-angular';
|
|
5
|
+
import { filter } from 'rxjs/operators';
|
|
6
|
+
import { API_CONFIGS } from 'aril/boot/config/api';
|
|
7
|
+
import { Apps } from 'aril/boot/config/apps';
|
|
8
|
+
import { ACTIVITY_ENDPOINT_PATH, ACTIVITY_SESSION_MARKER_PREFIX, LOGGER_SESSION_HEADER } from './activity.constants';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
export class ActivityService {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.keycloak = inject(KeycloakService);
|
|
13
|
+
this.router = inject(Router);
|
|
14
|
+
this.location = inject(Location);
|
|
15
|
+
this.sessionId = null;
|
|
16
|
+
this.username = null;
|
|
17
|
+
this.previousPath = null;
|
|
18
|
+
this.started = false;
|
|
19
|
+
}
|
|
20
|
+
getSessionId() {
|
|
21
|
+
if (this.sessionId)
|
|
22
|
+
return this.sessionId;
|
|
23
|
+
const fresh = this.readSessionIdFromKeycloak();
|
|
24
|
+
if (fresh)
|
|
25
|
+
this.sessionId = fresh;
|
|
26
|
+
return fresh;
|
|
27
|
+
}
|
|
28
|
+
start(options = {}) {
|
|
29
|
+
if (this.started)
|
|
30
|
+
return;
|
|
31
|
+
this.started = true;
|
|
32
|
+
this.captureSessionContext();
|
|
33
|
+
this.subscribeKeycloakRefresh();
|
|
34
|
+
this.location.onUrlChange(() => this.maybeEmitPageView(this.location.path()));
|
|
35
|
+
if (options.shellMode) {
|
|
36
|
+
this.subscribeLifecycleEvents();
|
|
37
|
+
this.subscribeRouterEvents();
|
|
38
|
+
this.handleSessionStart();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
track(event, properties = {}, type = 'CUSTOM') {
|
|
42
|
+
if (!this.started)
|
|
43
|
+
return;
|
|
44
|
+
this.send({ type, event, properties });
|
|
45
|
+
}
|
|
46
|
+
readSessionIdFromKeycloak() {
|
|
47
|
+
const kc = this.keycloak.getKeycloakInstance();
|
|
48
|
+
return kc?.sessionId ?? kc?.tokenParsed?.session_state ?? kc?.tokenParsed?.sid ?? null;
|
|
49
|
+
}
|
|
50
|
+
captureSessionContext() {
|
|
51
|
+
this.sessionId = this.readSessionIdFromKeycloak();
|
|
52
|
+
this.username = this.keycloak.getUsername() ?? null;
|
|
53
|
+
}
|
|
54
|
+
subscribeKeycloakRefresh() {
|
|
55
|
+
this.keycloak.keycloakEvents$.subscribe((event) => {
|
|
56
|
+
if (event.type === KeycloakEventType.OnAuthRefreshSuccess) {
|
|
57
|
+
this.captureSessionContext();
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
subscribeLifecycleEvents() {
|
|
62
|
+
this.keycloak.keycloakEvents$.subscribe((event) => {
|
|
63
|
+
if (event.type === KeycloakEventType.OnAuthLogout) {
|
|
64
|
+
this.sendSessionEnd('logout');
|
|
65
|
+
}
|
|
66
|
+
else if (event.type === KeycloakEventType.OnAuthRefreshError) {
|
|
67
|
+
this.sendSessionEnd('refresh_failed');
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
subscribeRouterEvents() {
|
|
72
|
+
this.router.events.pipe(filter((e) => e instanceof NavigationEnd)).subscribe((event) => {
|
|
73
|
+
this.maybeEmitPageView(event.urlAfterRedirects);
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
maybeEmitPageView(currentUrl) {
|
|
77
|
+
if (currentUrl === this.previousPath)
|
|
78
|
+
return;
|
|
79
|
+
const slot = globalThis;
|
|
80
|
+
const lastUrl = slot['__arilActivityLastPageUrl'];
|
|
81
|
+
const lastAt = slot['__arilActivityLastPageAt'];
|
|
82
|
+
if (lastUrl === currentUrl && lastAt && Date.now() - lastAt < 1000) {
|
|
83
|
+
this.previousPath = currentUrl;
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const previous = this.previousPath;
|
|
87
|
+
this.previousPath = currentUrl;
|
|
88
|
+
slot['__arilActivityLastPageUrl'] = currentUrl;
|
|
89
|
+
slot['__arilActivityLastPageAt'] = Date.now();
|
|
90
|
+
this.send({
|
|
91
|
+
type: 'PAGE_VIEW',
|
|
92
|
+
event: '',
|
|
93
|
+
page: currentUrl,
|
|
94
|
+
referrer: previous ?? undefined,
|
|
95
|
+
properties: {}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
handleSessionStart() {
|
|
99
|
+
if (!this.sessionId)
|
|
100
|
+
return;
|
|
101
|
+
const currentKey = `${ACTIVITY_SESSION_MARKER_PREFIX}${this.sessionId}`;
|
|
102
|
+
let alreadyMarked = false;
|
|
103
|
+
try {
|
|
104
|
+
alreadyMarked = !!localStorage.getItem(currentKey);
|
|
105
|
+
this.purgeStaleSessionMarkers(currentKey);
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
/* swallow */
|
|
109
|
+
}
|
|
110
|
+
if (alreadyMarked)
|
|
111
|
+
return;
|
|
112
|
+
try {
|
|
113
|
+
localStorage.setItem(currentKey, Date.now().toString());
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
/* swallow */
|
|
117
|
+
}
|
|
118
|
+
this.send({
|
|
119
|
+
type: 'SESSION_START',
|
|
120
|
+
event: 'login',
|
|
121
|
+
properties: { userAgent: navigator.userAgent }
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
purgeStaleSessionMarkers(keepKey) {
|
|
125
|
+
const stale = [];
|
|
126
|
+
for (let i = 0; i < localStorage.length; i++) {
|
|
127
|
+
const key = localStorage.key(i);
|
|
128
|
+
if (key && key !== keepKey && key.startsWith(ACTIVITY_SESSION_MARKER_PREFIX)) {
|
|
129
|
+
stale.push(key);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
stale.forEach((k) => localStorage.removeItem(k));
|
|
133
|
+
}
|
|
134
|
+
sendSessionEnd(reason) {
|
|
135
|
+
if (!this.sessionId)
|
|
136
|
+
return;
|
|
137
|
+
const markerKey = `${ACTIVITY_SESSION_MARKER_PREFIX}${this.sessionId}`;
|
|
138
|
+
let durationMs = 0;
|
|
139
|
+
try {
|
|
140
|
+
const loginTimestamp = parseInt(localStorage.getItem(markerKey) ?? '0', 10);
|
|
141
|
+
durationMs = loginTimestamp ? Date.now() - loginTimestamp : 0;
|
|
142
|
+
localStorage.removeItem(markerKey);
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
/* swallow */
|
|
146
|
+
}
|
|
147
|
+
this.send({
|
|
148
|
+
type: 'SESSION_END',
|
|
149
|
+
event: reason,
|
|
150
|
+
properties: { durationMs }
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
toAbsoluteUrl(routerPath) {
|
|
154
|
+
if (routerPath.startsWith('http://') || routerPath.startsWith('https://'))
|
|
155
|
+
return routerPath;
|
|
156
|
+
return `${window.location.origin}/#${routerPath}`;
|
|
157
|
+
}
|
|
158
|
+
send(partial) {
|
|
159
|
+
if (!this.sessionId)
|
|
160
|
+
return;
|
|
161
|
+
const baseUrl = API_CONFIGS.getExternalAppEndpoint(Apps.EVENT_GATEWAY);
|
|
162
|
+
if (!baseUrl)
|
|
163
|
+
return;
|
|
164
|
+
const payload = {
|
|
165
|
+
type: partial.type,
|
|
166
|
+
sessionId: this.sessionId,
|
|
167
|
+
username: this.username ?? '',
|
|
168
|
+
event: partial.event,
|
|
169
|
+
page: this.toAbsoluteUrl(partial.page ?? this.location.path()),
|
|
170
|
+
ip: '',
|
|
171
|
+
referrer: partial.referrer ? this.toAbsoluteUrl(partial.referrer) : `${window.location.origin}/#`,
|
|
172
|
+
traceId: '',
|
|
173
|
+
clientTimestamp: Date.now(),
|
|
174
|
+
properties: partial.properties
|
|
175
|
+
};
|
|
176
|
+
const url = `${baseUrl.replace(/\/$/, '')}/${ACTIVITY_ENDPOINT_PATH}`;
|
|
177
|
+
this.keycloak
|
|
178
|
+
.getToken()
|
|
179
|
+
.then((token) => fetch(url, {
|
|
180
|
+
method: 'POST',
|
|
181
|
+
keepalive: true,
|
|
182
|
+
headers: {
|
|
183
|
+
'Content-Type': 'application/json',
|
|
184
|
+
[LOGGER_SESSION_HEADER]: this.sessionId,
|
|
185
|
+
...(token ? { Authorization: `Bearer ${token}` } : {})
|
|
186
|
+
},
|
|
187
|
+
body: JSON.stringify(payload)
|
|
188
|
+
}))
|
|
189
|
+
.catch(() => undefined);
|
|
190
|
+
}
|
|
191
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActivityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
192
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActivityService, providedIn: 'root' }); }
|
|
193
|
+
}
|
|
194
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActivityService, decorators: [{
|
|
195
|
+
type: Injectable,
|
|
196
|
+
args: [{ providedIn: 'root' }]
|
|
197
|
+
}] });
|
|
198
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdXRpbC9hY3Rpdml0eS9zcmMvYWN0aXZpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFN0MsT0FBTyxFQUNOLHNCQUFzQixFQUN0Qiw4QkFBOEIsRUFDOUIscUJBQXFCLEVBQ3JCLE1BQU0sc0JBQXNCLENBQUM7O0FBSTlCLE1BQU0sT0FBTyxlQUFlO0lBRDVCO1FBRWtCLGFBQVEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbkMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXJDLGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBQ2hDLGFBQVEsR0FBa0IsSUFBSSxDQUFDO1FBQy9CLGlCQUFZLEdBQWtCLElBQUksQ0FBQztRQUNuQyxZQUFPLEdBQUcsS0FBSyxDQUFDO0tBOEx4QjtJQTVMQSxZQUFZO1FBQ1gsSUFBSSxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUMxQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUMvQyxJQUFJLEtBQUs7WUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQyxPQUFPLEtBQUssQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBbUMsRUFBRTtRQUMxQyxJQUFJLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUVwQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFOUUsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDM0IsQ0FBQztJQUNGLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBYSxFQUFFLGFBQXNDLEVBQUUsRUFBRSxPQUEwQixRQUFRO1FBQ2hHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU87UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU8seUJBQXlCO1FBQ2hDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEVBRWhDLENBQUM7UUFDYixPQUFPLEVBQUUsRUFBRSxTQUFTLElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSxhQUFhLElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDO0lBQ3hGLENBQUM7SUFFTyxxQkFBcUI7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDO0lBQ3JELENBQUM7SUFFTyx3QkFBd0I7UUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDakQsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGlCQUFpQixDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQzNELElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQzlCLENBQUM7UUFDRixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFTyx3QkFBd0I7UUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDakQsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNuRCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9CLENBQUM7aUJBQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGlCQUFpQixDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQ2hFLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUN2QyxDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8scUJBQXFCO1FBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQXNCLEVBQUUsQ0FBQyxDQUFDLFlBQVksYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUMxRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8saUJBQWlCLENBQUMsVUFBa0I7UUFDM0MsSUFBSSxVQUFVLEtBQUssSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPO1FBRTdDLE1BQU0sSUFBSSxHQUFHLFVBQXFDLENBQUM7UUFDbkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUF1QixDQUFDO1FBQ3hFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBdUIsQ0FBQztRQUN0RSxJQUFJLE9BQU8sS0FBSyxVQUFVLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxNQUFNLEdBQUcsSUFBSSxFQUFFLENBQUM7WUFDcEUsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUM7WUFDL0IsT0FBTztRQUNSLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDO1FBQy9CLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLFVBQVUsQ0FBQztRQUMvQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFOUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNULElBQUksRUFBRSxXQUFXO1lBQ2pCLEtBQUssRUFBRSxFQUFFO1lBQ1QsSUFBSSxFQUFFLFVBQVU7WUFDaEIsUUFBUSxFQUFFLFFBQVEsSUFBSSxTQUFTO1lBQy9CLFVBQVUsRUFBRSxFQUFFO1NBQ2QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVPLGtCQUFrQjtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBQzVCLE1BQU0sVUFBVSxHQUFHLEdBQUcsOEJBQThCLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3hFLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUM7WUFDSixhQUFhLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUixhQUFhO1FBQ2QsQ0FBQztRQUNELElBQUksYUFBYTtZQUFFLE9BQU87UUFDMUIsSUFBSSxDQUFDO1lBQ0osWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDekQsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNSLGFBQWE7UUFDZCxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNULElBQUksRUFBRSxlQUFlO1lBQ3JCLEtBQUssRUFBRSxPQUFPO1lBQ2QsVUFBVSxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTLEVBQUU7U0FDOUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVPLHdCQUF3QixDQUFDLE9BQWU7UUFDL0MsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFDO1FBQzNCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDOUMsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoQyxJQUFJLEdBQUcsSUFBSSxHQUFHLEtBQUssT0FBTyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsRUFBRSxDQUFDO2dCQUM5RSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLENBQUM7UUFDRixDQUFDO1FBQ0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTyxjQUFjLENBQUMsTUFBbUM7UUFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUM1QixNQUFNLFNBQVMsR0FBRyxHQUFHLDhCQUE4QixHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN2RSxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDO1lBQ0osTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzVFLFVBQVUsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5RCxZQUFZLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUixhQUFhO1FBQ2QsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUM7WUFDVCxJQUFJLEVBQUUsYUFBYTtZQUNuQixLQUFLLEVBQUUsTUFBTTtZQUNiLFVBQVUsRUFBRSxFQUFFLFVBQVUsRUFBRTtTQUMxQixDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8sYUFBYSxDQUFDLFVBQWtCO1FBQ3ZDLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU8sVUFBVSxDQUFDO1FBQzdGLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRU8sSUFBSSxDQUFDLE9BTVo7UUFDQSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBRTVCLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBRXJCLE1BQU0sT0FBTyxHQUFrQjtZQUM5QixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7WUFDbEIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUU7WUFDN0IsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1lBQ3BCLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM5RCxFQUFFLEVBQUUsRUFBRTtZQUNOLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSTtZQUNqRyxPQUFPLEVBQUUsRUFBRTtZQUNYLGVBQWUsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQzNCLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtTQUM5QixDQUFDO1FBRUYsTUFBTSxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO1FBRXRFLElBQUksQ0FBQyxRQUFRO2FBQ1gsUUFBUSxFQUFFO2FBQ1YsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDZixLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1YsTUFBTSxFQUFFLE1BQU07WUFDZCxTQUFTLEVBQUUsSUFBSTtZQUNmLE9BQU8sRUFBRTtnQkFDUixjQUFjLEVBQUUsa0JBQWtCO2dCQUNsQyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVU7Z0JBQ3hDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLFVBQVUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2FBQ3REO1lBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO1NBQzdCLENBQUMsQ0FDRjthQUNBLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxQixDQUFDOytHQXJNVyxlQUFlO21IQUFmLGVBQWUsY0FERixNQUFNOzs0RkFDbkIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgS2V5Y2xvYWtFdmVudFR5cGUsIEtleWNsb2FrU2VydmljZSB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBBUElfQ09ORklHUyB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvYXBpJztcclxuaW1wb3J0IHsgQXBwcyB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvYXBwcyc7XHJcblxyXG5pbXBvcnQge1xyXG5cdEFDVElWSVRZX0VORFBPSU5UX1BBVEgsXHJcblx0QUNUSVZJVFlfU0VTU0lPTl9NQVJLRVJfUFJFRklYLFxyXG5cdExPR0dFUl9TRVNTSU9OX0hFQURFUlxyXG59IGZyb20gJy4vYWN0aXZpdHkuY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQWN0aXZpdHlFdmVudCwgQWN0aXZpdHlFdmVudFR5cGUgfSBmcm9tICcuL2FjdGl2aXR5LnR5cGVzJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBBY3Rpdml0eVNlcnZpY2Uge1xyXG5cdHByaXZhdGUgcmVhZG9ubHkga2V5Y2xvYWsgPSBpbmplY3QoS2V5Y2xvYWtTZXJ2aWNlKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgbG9jYXRpb24gPSBpbmplY3QoTG9jYXRpb24pO1xyXG5cclxuXHRwcml2YXRlIHNlc3Npb25JZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblx0cHJpdmF0ZSB1c2VybmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblx0cHJpdmF0ZSBwcmV2aW91c1BhdGg6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cdHByaXZhdGUgc3RhcnRlZCA9IGZhbHNlO1xyXG5cclxuXHRnZXRTZXNzaW9uSWQoKTogc3RyaW5nIHwgbnVsbCB7XHJcblx0XHRpZiAodGhpcy5zZXNzaW9uSWQpIHJldHVybiB0aGlzLnNlc3Npb25JZDtcclxuXHRcdGNvbnN0IGZyZXNoID0gdGhpcy5yZWFkU2Vzc2lvbklkRnJvbUtleWNsb2FrKCk7XHJcblx0XHRpZiAoZnJlc2gpIHRoaXMuc2Vzc2lvbklkID0gZnJlc2g7XHJcblx0XHRyZXR1cm4gZnJlc2g7XHJcblx0fVxyXG5cclxuXHRzdGFydChvcHRpb25zOiB7IHNoZWxsTW9kZT86IGJvb2xlYW4gfSA9IHt9KTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5zdGFydGVkKSByZXR1cm47XHJcblx0XHR0aGlzLnN0YXJ0ZWQgPSB0cnVlO1xyXG5cclxuXHRcdHRoaXMuY2FwdHVyZVNlc3Npb25Db250ZXh0KCk7XHJcblx0XHR0aGlzLnN1YnNjcmliZUtleWNsb2FrUmVmcmVzaCgpO1xyXG5cdFx0dGhpcy5sb2NhdGlvbi5vblVybENoYW5nZSgoKSA9PiB0aGlzLm1heWJlRW1pdFBhZ2VWaWV3KHRoaXMubG9jYXRpb24ucGF0aCgpKSk7XHJcblxyXG5cdFx0aWYgKG9wdGlvbnMuc2hlbGxNb2RlKSB7XHJcblx0XHRcdHRoaXMuc3Vic2NyaWJlTGlmZWN5Y2xlRXZlbnRzKCk7XHJcblx0XHRcdHRoaXMuc3Vic2NyaWJlUm91dGVyRXZlbnRzKCk7XHJcblx0XHRcdHRoaXMuaGFuZGxlU2Vzc2lvblN0YXJ0KCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR0cmFjayhldmVudDogc3RyaW5nLCBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9LCB0eXBlOiBBY3Rpdml0eUV2ZW50VHlwZSA9ICdDVVNUT00nKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuc3RhcnRlZCkgcmV0dXJuO1xyXG5cdFx0dGhpcy5zZW5kKHsgdHlwZSwgZXZlbnQsIHByb3BlcnRpZXMgfSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHJlYWRTZXNzaW9uSWRGcm9tS2V5Y2xvYWsoKTogc3RyaW5nIHwgbnVsbCB7XHJcblx0XHRjb25zdCBrYyA9IHRoaXMua2V5Y2xvYWsuZ2V0S2V5Y2xvYWtJbnN0YW5jZSgpIGFzXHJcblx0XHRcdHwgeyBzZXNzaW9uSWQ/OiBzdHJpbmc7IHRva2VuUGFyc2VkPzogeyBzZXNzaW9uX3N0YXRlPzogc3RyaW5nOyBzaWQ/OiBzdHJpbmcgfSB9XHJcblx0XHRcdHwgdW5kZWZpbmVkO1xyXG5cdFx0cmV0dXJuIGtjPy5zZXNzaW9uSWQgPz8ga2M/LnRva2VuUGFyc2VkPy5zZXNzaW9uX3N0YXRlID8/IGtjPy50b2tlblBhcnNlZD8uc2lkID8/IG51bGw7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNhcHR1cmVTZXNzaW9uQ29udGV4dCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuc2Vzc2lvbklkID0gdGhpcy5yZWFkU2Vzc2lvbklkRnJvbUtleWNsb2FrKCk7XHJcblx0XHR0aGlzLnVzZXJuYW1lID0gdGhpcy5rZXljbG9hay5nZXRVc2VybmFtZSgpID8/IG51bGw7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHN1YnNjcmliZUtleWNsb2FrUmVmcmVzaCgpOiB2b2lkIHtcclxuXHRcdHRoaXMua2V5Y2xvYWsua2V5Y2xvYWtFdmVudHMkLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuXHRcdFx0aWYgKGV2ZW50LnR5cGUgPT09IEtleWNsb2FrRXZlbnRUeXBlLk9uQXV0aFJlZnJlc2hTdWNjZXNzKSB7XHJcblx0XHRcdFx0dGhpcy5jYXB0dXJlU2Vzc2lvbkNvbnRleHQoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHN1YnNjcmliZUxpZmVjeWNsZUV2ZW50cygpOiB2b2lkIHtcclxuXHRcdHRoaXMua2V5Y2xvYWsua2V5Y2xvYWtFdmVudHMkLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuXHRcdFx0aWYgKGV2ZW50LnR5cGUgPT09IEtleWNsb2FrRXZlbnRUeXBlLk9uQXV0aExvZ291dCkge1xyXG5cdFx0XHRcdHRoaXMuc2VuZFNlc3Npb25FbmQoJ2xvZ291dCcpO1xyXG5cdFx0XHR9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09IEtleWNsb2FrRXZlbnRUeXBlLk9uQXV0aFJlZnJlc2hFcnJvcikge1xyXG5cdFx0XHRcdHRoaXMuc2VuZFNlc3Npb25FbmQoJ3JlZnJlc2hfZmFpbGVkJyk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBzdWJzY3JpYmVSb3V0ZXJFdmVudHMoKTogdm9pZCB7XHJcblx0XHR0aGlzLnJvdXRlci5ldmVudHMucGlwZShmaWx0ZXIoKGUpOiBlIGlzIE5hdmlnYXRpb25FbmQgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcblx0XHRcdHRoaXMubWF5YmVFbWl0UGFnZVZpZXcoZXZlbnQudXJsQWZ0ZXJSZWRpcmVjdHMpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIG1heWJlRW1pdFBhZ2VWaWV3KGN1cnJlbnRVcmw6IHN0cmluZyk6IHZvaWQge1xyXG5cdFx0aWYgKGN1cnJlbnRVcmwgPT09IHRoaXMucHJldmlvdXNQYXRoKSByZXR1cm47XHJcblxyXG5cdFx0Y29uc3Qgc2xvdCA9IGdsb2JhbFRoaXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XHJcblx0XHRjb25zdCBsYXN0VXJsID0gc2xvdFsnX19hcmlsQWN0aXZpdHlMYXN0UGFnZVVybCddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHRcdGNvbnN0IGxhc3RBdCA9IHNsb3RbJ19fYXJpbEFjdGl2aXR5TGFzdFBhZ2VBdCddIGFzIG51bWJlciB8IHVuZGVmaW5lZDtcclxuXHRcdGlmIChsYXN0VXJsID09PSBjdXJyZW50VXJsICYmIGxhc3RBdCAmJiBEYXRlLm5vdygpIC0gbGFzdEF0IDwgMTAwMCkge1xyXG5cdFx0XHR0aGlzLnByZXZpb3VzUGF0aCA9IGN1cnJlbnRVcmw7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBwcmV2aW91cyA9IHRoaXMucHJldmlvdXNQYXRoO1xyXG5cdFx0dGhpcy5wcmV2aW91c1BhdGggPSBjdXJyZW50VXJsO1xyXG5cdFx0c2xvdFsnX19hcmlsQWN0aXZpdHlMYXN0UGFnZVVybCddID0gY3VycmVudFVybDtcclxuXHRcdHNsb3RbJ19fYXJpbEFjdGl2aXR5TGFzdFBhZ2VBdCddID0gRGF0ZS5ub3coKTtcclxuXHJcblx0XHR0aGlzLnNlbmQoe1xyXG5cdFx0XHR0eXBlOiAnUEFHRV9WSUVXJyxcclxuXHRcdFx0ZXZlbnQ6ICcnLFxyXG5cdFx0XHRwYWdlOiBjdXJyZW50VXJsLFxyXG5cdFx0XHRyZWZlcnJlcjogcHJldmlvdXMgPz8gdW5kZWZpbmVkLFxyXG5cdFx0XHRwcm9wZXJ0aWVzOiB7fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGhhbmRsZVNlc3Npb25TdGFydCgpOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy5zZXNzaW9uSWQpIHJldHVybjtcclxuXHRcdGNvbnN0IGN1cnJlbnRLZXkgPSBgJHtBQ1RJVklUWV9TRVNTSU9OX01BUktFUl9QUkVGSVh9JHt0aGlzLnNlc3Npb25JZH1gO1xyXG5cdFx0bGV0IGFscmVhZHlNYXJrZWQgPSBmYWxzZTtcclxuXHRcdHRyeSB7XHJcblx0XHRcdGFscmVhZHlNYXJrZWQgPSAhIWxvY2FsU3RvcmFnZS5nZXRJdGVtKGN1cnJlbnRLZXkpO1xyXG5cdFx0XHR0aGlzLnB1cmdlU3RhbGVTZXNzaW9uTWFya2VycyhjdXJyZW50S2V5KTtcclxuXHRcdH0gY2F0Y2gge1xyXG5cdFx0XHQvKiBzd2FsbG93ICovXHJcblx0XHR9XHJcblx0XHRpZiAoYWxyZWFkeU1hcmtlZCkgcmV0dXJuO1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0bG9jYWxTdG9yYWdlLnNldEl0ZW0oY3VycmVudEtleSwgRGF0ZS5ub3coKS50b1N0cmluZygpKTtcclxuXHRcdH0gY2F0Y2gge1xyXG5cdFx0XHQvKiBzd2FsbG93ICovXHJcblx0XHR9XHJcblx0XHR0aGlzLnNlbmQoe1xyXG5cdFx0XHR0eXBlOiAnU0VTU0lPTl9TVEFSVCcsXHJcblx0XHRcdGV2ZW50OiAnbG9naW4nLFxyXG5cdFx0XHRwcm9wZXJ0aWVzOiB7IHVzZXJBZ2VudDogbmF2aWdhdG9yLnVzZXJBZ2VudCB9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgcHVyZ2VTdGFsZVNlc3Npb25NYXJrZXJzKGtlZXBLZXk6IHN0cmluZyk6IHZvaWQge1xyXG5cdFx0Y29uc3Qgc3RhbGU6IHN0cmluZ1tdID0gW107XHJcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGxvY2FsU3RvcmFnZS5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRjb25zdCBrZXkgPSBsb2NhbFN0b3JhZ2Uua2V5KGkpO1xyXG5cdFx0XHRpZiAoa2V5ICYmIGtleSAhPT0ga2VlcEtleSAmJiBrZXkuc3RhcnRzV2l0aChBQ1RJVklUWV9TRVNTSU9OX01BUktFUl9QUkVGSVgpKSB7XHJcblx0XHRcdFx0c3RhbGUucHVzaChrZXkpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRzdGFsZS5mb3JFYWNoKChrKSA9PiBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrKSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHNlbmRTZXNzaW9uRW5kKHJlYXNvbjogJ2xvZ291dCcgfCAncmVmcmVzaF9mYWlsZWQnKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuc2Vzc2lvbklkKSByZXR1cm47XHJcblx0XHRjb25zdCBtYXJrZXJLZXkgPSBgJHtBQ1RJVklUWV9TRVNTSU9OX01BUktFUl9QUkVGSVh9JHt0aGlzLnNlc3Npb25JZH1gO1xyXG5cdFx0bGV0IGR1cmF0aW9uTXMgPSAwO1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0Y29uc3QgbG9naW5UaW1lc3RhbXAgPSBwYXJzZUludChsb2NhbFN0b3JhZ2UuZ2V0SXRlbShtYXJrZXJLZXkpID8/ICcwJywgMTApO1xyXG5cdFx0XHRkdXJhdGlvbk1zID0gbG9naW5UaW1lc3RhbXAgPyBEYXRlLm5vdygpIC0gbG9naW5UaW1lc3RhbXAgOiAwO1xyXG5cdFx0XHRsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShtYXJrZXJLZXkpO1xyXG5cdFx0fSBjYXRjaCB7XHJcblx0XHRcdC8qIHN3YWxsb3cgKi9cclxuXHRcdH1cclxuXHRcdHRoaXMuc2VuZCh7XHJcblx0XHRcdHR5cGU6ICdTRVNTSU9OX0VORCcsXHJcblx0XHRcdGV2ZW50OiByZWFzb24sXHJcblx0XHRcdHByb3BlcnRpZXM6IHsgZHVyYXRpb25NcyB9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgdG9BYnNvbHV0ZVVybChyb3V0ZXJQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cdFx0aWYgKHJvdXRlclBhdGguc3RhcnRzV2l0aCgnaHR0cDovLycpIHx8IHJvdXRlclBhdGguc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSkgcmV0dXJuIHJvdXRlclBhdGg7XHJcblx0XHRyZXR1cm4gYCR7d2luZG93LmxvY2F0aW9uLm9yaWdpbn0vIyR7cm91dGVyUGF0aH1gO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBzZW5kKHBhcnRpYWw6IHtcclxuXHRcdHR5cGU6IEFjdGl2aXR5RXZlbnRUeXBlO1xyXG5cdFx0ZXZlbnQ6IHN0cmluZztcclxuXHRcdHBhZ2U/OiBzdHJpbmc7XHJcblx0XHRyZWZlcnJlcj86IHN0cmluZztcclxuXHRcdHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xyXG5cdH0pOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy5zZXNzaW9uSWQpIHJldHVybjtcclxuXHJcblx0XHRjb25zdCBiYXNlVXJsID0gQVBJX0NPTkZJR1MuZ2V0RXh0ZXJuYWxBcHBFbmRwb2ludChBcHBzLkVWRU5UX0dBVEVXQVkpO1xyXG5cdFx0aWYgKCFiYXNlVXJsKSByZXR1cm47XHJcblxyXG5cdFx0Y29uc3QgcGF5bG9hZDogQWN0aXZpdHlFdmVudCA9IHtcclxuXHRcdFx0dHlwZTogcGFydGlhbC50eXBlLFxyXG5cdFx0XHRzZXNzaW9uSWQ6IHRoaXMuc2Vzc2lvbklkLFxyXG5cdFx0XHR1c2VybmFtZTogdGhpcy51c2VybmFtZSA/PyAnJyxcclxuXHRcdFx0ZXZlbnQ6IHBhcnRpYWwuZXZlbnQsXHJcblx0XHRcdHBhZ2U6IHRoaXMudG9BYnNvbHV0ZVVybChwYXJ0aWFsLnBhZ2UgPz8gdGhpcy5sb2NhdGlvbi5wYXRoKCkpLFxyXG5cdFx0XHRpcDogJycsXHJcblx0XHRcdHJlZmVycmVyOiBwYXJ0aWFsLnJlZmVycmVyID8gdGhpcy50b0Fic29sdXRlVXJsKHBhcnRpYWwucmVmZXJyZXIpIDogYCR7d2luZG93LmxvY2F0aW9uLm9yaWdpbn0vI2AsXHJcblx0XHRcdHRyYWNlSWQ6ICcnLFxyXG5cdFx0XHRjbGllbnRUaW1lc3RhbXA6IERhdGUubm93KCksXHJcblx0XHRcdHByb3BlcnRpZXM6IHBhcnRpYWwucHJvcGVydGllc1xyXG5cdFx0fTtcclxuXHJcblx0XHRjb25zdCB1cmwgPSBgJHtiYXNlVXJsLnJlcGxhY2UoL1xcLyQvLCAnJyl9LyR7QUNUSVZJVFlfRU5EUE9JTlRfUEFUSH1gO1xyXG5cclxuXHRcdHRoaXMua2V5Y2xvYWtcclxuXHRcdFx0LmdldFRva2VuKClcclxuXHRcdFx0LnRoZW4oKHRva2VuKSA9PlxyXG5cdFx0XHRcdGZldGNoKHVybCwge1xyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRrZWVwYWxpdmU6IHRydWUsXHJcblx0XHRcdFx0XHRoZWFkZXJzOiB7XHJcblx0XHRcdFx0XHRcdCdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcblx0XHRcdFx0XHRcdFtMT0dHRVJfU0VTU0lPTl9IRUFERVJdOiB0aGlzLnNlc3Npb25JZCEsXHJcblx0XHRcdFx0XHRcdC4uLih0b2tlbiA/IHsgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAgfSA6IHt9KVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGJvZHk6IEpTT04uc3RyaW5naWZ5KHBheWxvYWQpXHJcblx0XHRcdFx0fSlcclxuXHRcdFx0KVxyXG5cdFx0XHQuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcclxuXHR9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3V0aWwvYWN0aXZpdHkvc3JjL2FjdGl2aXR5LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBBY3Rpdml0eUV2ZW50VHlwZSA9ICdTRVNTSU9OX1NUQVJUJyB8ICdTRVNTSU9OX0VORCcgfCAnUEFHRV9WSUVXJyB8ICdCVVRUT05fQ0xJQ0snIHwgJ0NVU1RPTSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2aXR5RXZlbnQge1xyXG5cdHR5cGU6IEFjdGl2aXR5RXZlbnRUeXBlO1xyXG5cdHNlc3Npb25JZDogc3RyaW5nO1xyXG5cdHVzZXJuYW1lOiBzdHJpbmc7XHJcblx0ZXZlbnQ6IHN0cmluZztcclxuXHRwYWdlOiBzdHJpbmc7XHJcblx0aXA6IHN0cmluZztcclxuXHRyZWZlcnJlcjogc3RyaW5nO1xyXG5cdHRyYWNlSWQ6IHN0cmluZztcclxuXHRjbGllbnRUaW1lc3RhbXA/OiBudW1iZXI7XHJcblx0cHJvcGVydGllczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XHJcbn1cclxuIl19
|
|
@@ -27,10 +27,10 @@ export class Block {
|
|
|
27
27
|
nativeElement = nativeElement.children[0];
|
|
28
28
|
return nativeElement;
|
|
29
29
|
}
|
|
30
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
31
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.
|
|
30
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: Block, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
31
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.12", type: Block, isStandalone: true, selector: "[arilBlock]", inputs: { arilBlock: { classPropertyName: "arilBlock", publicName: "arilBlock", isSignal: true, isRequired: true, transformFunction: null }, blockOptions: { classPropertyName: "blockOptions", publicName: "blockOptions", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
32
32
|
}
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: Block, decorators: [{
|
|
34
34
|
type: Directive,
|
|
35
35
|
args: [{
|
|
36
36
|
standalone: true,
|
|
@@ -51,14 +51,14 @@ export class BlockPage {
|
|
|
51
51
|
}
|
|
52
52
|
});
|
|
53
53
|
}
|
|
54
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
55
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.
|
|
54
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BlockPage, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
55
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.12", type: BlockPage, isStandalone: true, selector: "[arilBlockPage]", inputs: { arilBlockPage: { classPropertyName: "arilBlockPage", publicName: "arilBlockPage", isSignal: true, isRequired: true, transformFunction: null }, blockOptions: { classPropertyName: "blockOptions", publicName: "blockOptions", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
56
56
|
}
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BlockPage, decorators: [{
|
|
58
58
|
type: Directive,
|
|
59
59
|
args: [{
|
|
60
60
|
standalone: true,
|
|
61
61
|
selector: '[arilBlockPage]'
|
|
62
62
|
}]
|
|
63
63
|
}], ctorParameters: () => [] });
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3V0aWwvYmxvY2svc3JjL2Jsb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQWM1RixNQUFNLE9BQU8sS0FBSztJQUNqQixZQUFvQixPQUFtQjtRQUFuQixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBWXZDLGNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFXLENBQUM7UUFDdEMsaUJBQVksR0FBRyxLQUFLLENBQWUsRUFBRSxDQUFDLENBQUM7UUFHdkMsV0FBTSxHQUFHLE1BQU0sQ0FBYyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBZnhELE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDWCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO2dCQUNuQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO29CQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN0QixDQUFDO3FCQUFNLENBQUM7b0JBQ1AsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDeEIsQ0FBQztZQUNGLENBQUM7UUFDRixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFRRCxlQUFlO1FBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQW1CO1FBQzVCLElBQUksYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDMUMsT0FBTyxhQUFhLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVztZQUFFLGFBQWEsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlGLE9BQU8sYUFBYSxDQUFDO0lBQ3RCLENBQUM7K0dBNUJXLEtBQUs7bUdBQUwsS0FBSzs7NEZBQUwsS0FBSztrQkFKakIsU0FBUzttQkFBQztvQkFDVixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGFBQWE7aUJBQ3ZCOztBQW9DRCxNQUFNLE9BQU8sU0FBUztJQUNyQjtRQVlBLGtCQUFhLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVyxDQUFDO1FBQzFDLGlCQUFZLEdBQUcsS0FBSyxDQUFlLEVBQUUsQ0FBQyxDQUFDO1FBWnRDLE1BQU0sT0FBTyxHQUFHLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFFbEUsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNYLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7Z0JBQzFCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqQixDQUFDO2lCQUFNLENBQUM7Z0JBQ1AsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25CLENBQUM7UUFDRixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7K0dBWFcsU0FBUzttR0FBVCxTQUFTOzs0RkFBVCxTQUFTO2tCQUpyQixTQUFTO21CQUFDO29CQUNWLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsaUJBQWlCO2lCQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgZWZmZWN0LCBpbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5kZWNsYXJlIGNvbnN0IEtUQmxvY2tVSTogYW55O1xyXG5cclxuaW50ZXJmYWNlIEJsb2NrT3B0aW9ucyB7XHJcblx0ekluZGV4PzogbnVtYmVyO1xyXG5cdG92ZXJsYXlDbGFzcz86IHN0cmluZztcclxuXHRtZXNzYWdlPzogc3RyaW5nO1xyXG59XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHNlbGVjdG9yOiAnW2FyaWxCbG9ja10nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCbG9jayBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZikge1xyXG5cdFx0ZWZmZWN0KCgpID0+IHtcclxuXHRcdFx0aWYgKHRoaXMudGFyZ2V0KCkpIHtcclxuXHRcdFx0XHRpZiAodGhpcy5hcmlsQmxvY2soKSkge1xyXG5cdFx0XHRcdFx0dGhpcy5ibG9ja1VJLmJsb2NrKCk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHRoaXMuYmxvY2tVSS5yZWxlYXNlKCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGFyaWxCbG9jayA9IGlucHV0LnJlcXVpcmVkPGJvb2xlYW4+KCk7XHJcblx0YmxvY2tPcHRpb25zID0gaW5wdXQ8QmxvY2tPcHRpb25zPih7fSk7XHJcblxyXG5cdGJsb2NrVUk6IHR5cGVvZiBLVEJsb2NrVUk7XHJcblx0dGFyZ2V0ID0gc2lnbmFsPEhUTUxFbGVtZW50Pih0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCk7XHJcblxyXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuXHRcdHRoaXMudGFyZ2V0LnNldCh0aGlzLmdldFRhcmdldCh0aGlzLmVsZW1lbnQpKTtcclxuXHRcdHRoaXMuYmxvY2tVSSA9IG5ldyBLVEJsb2NrVUkodGhpcy50YXJnZXQoKSwgdGhpcy5ibG9ja09wdGlvbnMoKSk7XHJcblx0fVxyXG5cclxuXHRnZXRUYXJnZXQoZWxlbWVudDogRWxlbWVudFJlZik6IEhUTUxFbGVtZW50IHtcclxuXHRcdGxldCBuYXRpdmVFbGVtZW50ID0gZWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG5cdFx0d2hpbGUgKG5hdGl2ZUVsZW1lbnQgJiYgIW5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgpIG5hdGl2ZUVsZW1lbnQgPSBuYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdO1xyXG5cdFx0cmV0dXJuIG5hdGl2ZUVsZW1lbnQ7XHJcblx0fVxyXG59XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHNlbGVjdG9yOiAnW2FyaWxCbG9ja1BhZ2VdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQmxvY2tQYWdlIHtcclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdGNvbnN0IGJsb2NrVUkgPSBuZXcgS1RCbG9ja1VJKGRvY3VtZW50LmJvZHksIHRoaXMuYmxvY2tPcHRpb25zKCkpO1xyXG5cclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLmFyaWxCbG9ja1BhZ2UoKSkge1xyXG5cdFx0XHRcdGJsb2NrVUkuYmxvY2soKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRibG9ja1VJLnJlbGVhc2UoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRhcmlsQmxvY2tQYWdlID0gaW5wdXQucmVxdWlyZWQ8Ym9vbGVhbj4oKTtcclxuXHRibG9ja09wdGlvbnMgPSBpbnB1dDxCbG9ja09wdGlvbnM+KHt9KTtcclxufVxyXG4iXX0=
|
|
@@ -284,10 +284,10 @@ export class DetailPageCustomizationDirective {
|
|
|
284
284
|
this.detailComponent.mdInfoPluginProps.generalMenu = signal(mergedMenu);
|
|
285
285
|
}
|
|
286
286
|
}
|
|
287
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
288
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.
|
|
287
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DetailPageCustomizationDirective, deps: [{ token: DETAIL_COMPONENT }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
288
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: DetailPageCustomizationDirective, isStandalone: true, ngImport: i0 }); }
|
|
289
289
|
}
|
|
290
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
290
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DetailPageCustomizationDirective, decorators: [{
|
|
291
291
|
type: Directive,
|
|
292
292
|
args: [{
|
|
293
293
|
standalone: true
|
|
@@ -296,4 +296,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
296
296
|
type: Inject,
|
|
297
297
|
args: [DETAIL_COMPONENT]
|
|
298
298
|
}] }] });
|
|
299
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLXBhZ2UtY3VzdG9taXphdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3V0aWwvZGlyZWN0aXZlcy9zcmMvZGV0YWlsLXBhZ2UtY3VzdG9taXphdGlvbi9kZXRhaWwtcGFnZS1jdXN0b21pemF0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUl6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFMUMsT0FBTyxFQUNOLGdCQUFnQixFQUloQixxQkFBcUIsRUFFckIsTUFBTSxVQUFVLENBQUM7O0FBS2xCLE1BQU0sT0FBTyxnQ0FBZ0M7SUF1RDVDLFlBQXVELGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQXREdEUsVUFBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvQixXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLGtCQUFhLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxvQkFBb0I7UUFDbkUscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFN0QsK0RBQStEO1FBQ3ZELHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqQyxtQkFBYyxHQUFHLEdBQTZCLEVBQUU7WUFDdkQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxD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dCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcblxyXG5pbXBvcnQgeyBicmlkZ2UgfSBmcm9tICdhcmlsL2Jvb3QvYnJpZGdlJztcclxuXHJcbmltcG9ydCB7XHJcblx0REVUQUlMX0NPTVBPTkVOVCxcclxuXHREZXRhaWxDb21wb25lbnQsXHJcblx0RGV0YWlsQ29uZmlnLFxyXG5cdERldGFpbENvbmZpZ01lbnVJdGVtLFxyXG5cdFBMVUdJTl9ESUFMT0dfU0VSVklDRSxcclxuXHRUYWJDb25maWdcclxufSBmcm9tICcuL21vZGVscyc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuXHRzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZXRhaWxQYWdlQ3VzdG9taXphdGlvbkRpcmVjdGl2ZSB7XHJcblx0cHJpdmF0ZSByZWFkb25seSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XHJcblx0cHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoUExVR0lOX0RJQUxPR19TRVJWSUNFKTsgLy8gVXNlIHRva2VuIGluc3RlYWRcclxuXHRwcml2YXRlIHJlYWRvbmx5IHRyYW5zbG9jb1NlcnZpY2UgPSBpbmplY3QoVHJhbnNsb2NvU2VydmljZSk7XHJcblxyXG5cdC8vIEludGVybmFsIHNpZ25hbCB0byB0cmFjayB3aGVuIFRhYlZpZXcgYW5kIHRoZSBtZW51IGFyZSByZWFkeVxyXG5cdHByaXZhdGUgdmlld3NJbml0aWFsaXplZCA9IHNpZ25hbChmYWxzZSk7XHJcblx0cHJpdmF0ZSBjb25maWc6IERldGFpbENvbmZpZyB8IHVuZGVmaW5lZDtcclxuXHRwcml2YXRlIGdldFJvdXRlQ29uZmlnID0gKCk6IERldGFpbENvbmZpZyB8IHVuZGVmaW5lZCA9PiB7XHJcblx0XHRjb25zdCBjb25maWdzID0gYnJpZGdlLnJvdXRlQ29uZmlncygpO1xyXG5cdFx0aWYgKCFjb25maWdzKSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuXHRcdGNvbnN0IGN1cnJlbnRVcmwgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJz8nKVswXTtcclxuXHJcblx0XHRsZXQgYmVzdE1hdGNoOiB7IHBhdGg6IHN0cmluZzsgY29udGVudDogc3RyaW5nOyB2ZXJzaW9uOiBudW1iZXIgfSB8IHVuZGVmaW5lZDtcclxuXHJcblx0XHRmb3IgKGNvbnN0IGNvbmZpZyBvZiBjb25maWdzKSB7XHJcblx0XHRcdGlmICghY29uZmlnLnBhdGgpIGNvbnRpbnVlO1xyXG5cclxuXHRcdFx0Y29uc3QgdXJsVG9DaGVjayA9IGNvbmZpZy5wYXRoLnN0YXJ0c1dpdGgoJy8nKSA/IGNvbmZpZy5wYXRoIDogYC8ke2NvbmZpZy5wYXRofWA7XHJcblxyXG5cdFx0XHRpZiAoY3VycmVudFVybC5zdGFydHNXaXRoKHVybFRvQ2hlY2spKSB7XHJcblx0XHRcdFx0YmVzdE1hdGNoID0gY29uZmlnO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCFiZXN0TWF0Y2gpIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG5cdFx0dHJ5IHtcclxuXHRcdFx0cmV0dXJuIEpTT04ucGFyc2UoYmVzdE1hdGNoLmNvbnRlbnQpIGFzIERldGFpbENvbmZpZztcclxuXHRcdH0gY2F0Y2ggKGUpIHtcclxuXHRcdFx0Y29uc29sZS5lcnJvcignRmFpbGVkIHRvIHBhcnNlIHJvdXRlIGNvbmZpZyBjb250ZW50OicsIGUpO1xyXG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdHByaXZhdGUgZ2V0UHJvY2Vzc2VkVGFiczogU2lnbmFsPFRhYkNvbmZpZ1tdPiA9IGNvbXB1dGVkKCgpID0+IHtcclxuXHRcdGlmICghdGhpcy5jb25maWc/LnRhYnMpIHJldHVybiBbXTtcclxuXHJcblx0XHRjb25zdCBhY3RpdmVMYW5nID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKTtcclxuXHJcblx0XHRyZXR1cm4gdGhpcy5jb25maWcudGFic1xyXG5cdFx0XHQuZmlsdGVyKCh0YWIpID0+IHRhYi52aXNpYmxlICE9PSBmYWxzZSlcclxuXHRcdFx0Lm1hcCgodGFiKSA9PiAoe1xyXG5cdFx0XHRcdGlkOiB0YWIuaWQgPz8gbnVsbCxcclxuXHRcdFx0XHRpY29uOiB0YWIuaWNvbixcclxuXHRcdFx0XHRoZWFkZXI6IHRhYi5sYWJlbCA/IHRhYi5sYWJlbFthY3RpdmVMYW5nXSA6ICcnLFxyXG5cdFx0XHRcdHZpc2libGU6IHRhYi52aXNpYmxlLFxyXG5cdFx0XHRcdHBvc2l0aW9uOiB0YWIucG9zaXRpb24sXHJcblx0XHRcdFx0Y29tcG9uZW50czogdGFiLmNvbXBvbmVudHMgfHwgW11cclxuXHRcdFx0fSkpO1xyXG5cdH0pO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihASW5qZWN0KERFVEFJTF9DT01QT05FTlQpIHByaXZhdGUgcmVhZG9ubHkgZGV0YWlsQ29tcG9uZW50OiBEZXRhaWxDb21wb25lbnQpIHtcclxuXHRcdHRoaXMuY29uZmlnID0gdGhpcy5nZXRSb3V0ZUNvbmZpZygpO1xyXG5cdFx0ZWZmZWN0KFxyXG5cdFx0XHQob25DbGVhbnVwKSA9PiB7XHJcblx0XHRcdFx0aWYgKHRoaXMudmlld3NJbml0aWFsaXplZCgpKSByZXR1cm47XHJcblxyXG5cdFx0XHRcdC8vIFBvbGwgZXZlcnkgYW5pbWF0aW9uIGZyYW1lIHVudGlsIGJvdGggVGFiVmlldyBhbmQgdGhlIG1lbnUgaXMgcmVhZHlcclxuXHRcdFx0XHQvLyBUaGUgbWVudSBjYW4gYmUgZGlyZWN0bHkgZGVmaW5lZCBpbiB0aGUgY29tcG9uZW50IGZyb20gaW5pdCBzdGVwLCBvciBiZSBidWlsdCBkeW5hbWljYWxseSBhZnRlciB3YWl0aW5nIGZvciBhIG5ldHdvcmsgcmVzcG9uc2UuIFNvIHdlIG11c3Qgd2FpdCBmb3IgaXQgdG8gYmUgcmVhZHkuXHJcblx0XHRcdFx0Y29uc3QgY2hlY2tWaWV3cyA9ICgpID0+IHtcclxuXHRcdFx0XHRcdGlmICh0aGlzLmRldGFpbENvbXBvbmVudC50YWJWaWV3Py50YWJzICYmIHRoaXMuZGV0YWlsQ29tcG9uZW50Lm1kSW5mb1BsdWdpblByb3BzPy5nZW5lcmFsTWVudSgpPy5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy52aWV3c0luaXRpYWxpemVkLnNldCh0cnVlKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5vblZpZXdzUmVhZHkoKTtcclxuXHRcdFx0XHRcdH0gZWxzZSBpZiAoIXRoaXMudmlld3NJbml0aWFsaXplZCgpKSB7XHJcblx0XHRcdFx0XHRcdGZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2hlY2tWaWV3cyk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fTtcclxuXHJcblx0XHRcdFx0bGV0IGZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2hlY2tWaWV3cyk7XHJcblxyXG5cdFx0XHRcdG9uQ2xlYW51cCgoKSA9PiB7XHJcblx0XHRcdFx0XHRjYW5jZWxBbmltYXRpb25GcmFtZShmcmFtZUlkKTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSxcclxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBvblZpZXdzUmVhZHkoKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuY29uZmlnKSByZXR1cm47XHJcblxyXG5cdFx0Ly8gc3RlcCAxIC0gaGlkZSB0YWJzIGJhc2VkIG9uIGNvbmZpZ1xyXG5cdFx0aWYgKHRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYlZpZXc/LnRhYnMpIHtcclxuXHRcdFx0dGhpcy51cGRhdGVUYWJWaXNpYmlsaXR5KCk7XHJcblx0XHR9XHJcblx0XHQvLyBzdGVwIDIgLSBhcHBlbmQgY29uZmlnIHRhYnMgdG8gdGhlIHN0YXRpYyB0YWJzIChvbmx5IG5ldyBvbmVzLCBub3QgdGhvc2UgbWF0Y2hpbmcgc3RhdGljIHRhYnMpXHJcblx0XHRjb25zdCBhbGxDb25maWdUYWJzID0gdGhpcy5nZXRQcm9jZXNzZWRUYWJzKCk7XHJcblxyXG5cdFx0Ly8gR2V0IElEcyBvZiBleGlzdGluZyBzdGF0aWMgdGFic1xyXG5cdFx0Y29uc3Qgc3RhdGljVGFiSWRzID0gbmV3IFNldDxzdHJpbmcgfCBudW1iZXIgfCBudWxsPigpO1xyXG5cdFx0aWYgKHRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYlZpZXc/LnRhYnMpIHtcclxuXHRcdFx0dGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldy50YWJzLmZvckVhY2goKHRhYlBhbmVsKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgdGFiSWQgPSB0YWJQYW5lbD8uZWw/Lm5hdGl2ZUVsZW1lbnQ/LmlkO1xyXG5cdFx0XHRcdGlmICh0YWJJZCkge1xyXG5cdFx0XHRcdFx0c3RhdGljVGFiSWRzLmFkZCh0YWJJZCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBGaWx0ZXIgb3V0IGNvbmZpZyB0YWJzIHRoYXQgYXJlIG1lYW50IHRvICpyZW9yZGVyKiBleGlzdGluZyBzdGF0aWMgdGFicy5cclxuXHRcdC8vIEFueSB0YWIgd2hvc2UgaWQgbWF0Y2hlcyBhbiBleGlzdGluZyBzdGF0aWMgdGFiIGlkIGlzIGNvbnNpZGVyZWQgYSBcInJlb3JkZXJcIlxyXG5cdFx0Ly8gaW5zdHJ1Y3Rpb247IGV2ZXJ5dGhpbmcgZWxzZSAoaWQgPT09IG51bGwgT1IgYW4gaWQgdGhhdCBkb2Vzbid0IGV4aXN0IHlldClcclxuXHRcdC8vIGlzIHRyZWF0ZWQgYXMgYSBicmFuZCBuZXcgdGFiLlxyXG5cdFx0Y29uc3QgbmV3Q29uZmlnVGFicyA9IGFsbENvbmZpZ1RhYnMuZmlsdGVyKCh0YWIpID0+IHtcclxuXHRcdFx0Ly8gbmV3IHRhYiB3aGVuIGlkIGlzIG51bGwvdW5kZWZpbmVkXHJcblx0XHRcdGlmICghdGFiLmlkKSByZXR1cm4gdHJ1ZTtcclxuXHJcblx0XHRcdC8vIG5ldyB0YWIgd2hlbiBpZCBpcyBwcm92aWRlZCBidXQgZG9lc24ndCBtYXRjaCBhbnkgc3RhdGljIHRhYiBpZFxyXG5cdFx0XHRyZXR1cm4gIXN0YXRpY1RhYklkcy5oYXModGFiLmlkKTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdGlmIChuZXdDb25maWdUYWJzLmxlbmd0aCA+IDAgJiYgdGhpcy5kZXRhaWxDb21wb25lbnQuY29uZmlnVGFicykge1xyXG5cdFx0XHQodGhpcy5kZXRhaWxDb21wb25lbnQuY29uZmlnVGFicyBhcyBhbnkpLnNldChuZXdDb25maWdUYWJzKTtcclxuXHRcdH0gZWxzZSBpZiAobmV3Q29uZmlnVGFicy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdHRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYnMgPSBuZXdDb25maWdUYWJzO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIHVzaW5nIHNldFRpbWVvdXQgdG8gZW5zdXJlIHRhYlZpZXcgaXMgcmVhZHkgYXMgd2Ugd2FudCB0byB3b3JrIGRpcmVjdGx5IHdpdGggdGhlIGdlbmVyYXRlZCBlbGVtZW50c1xyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdC8vIHN0ZXAgMyAtIHJlb3JkZXIgdGFic1xyXG5cdFx0XHR0aGlzLnJlb3JkZXJUYWJzQnlQb3NpdGlvbigpO1xyXG5cdFx0XHQvLyBzdGVwIDQgLSBhY3RpdmF0ZSB0YWIgZnJvbSBVUkwgaWYgc3BlY2lmaWVkXHJcblx0XHRcdHRoaXMuYWN0aXZhdGVUYWJGcm9tVXJsKCk7XHJcblx0XHRcdC8vIHN0ZXAgNSAtIHVwZGF0ZSB0aGUgbWVudVxyXG5cdFx0XHRpZiAodGhpcy5jb25maWc/Lm1lbnUpIHtcclxuXHRcdFx0XHR0aGlzLnVwZGF0ZU1lbnUodGhpcy5jb25maWcubWVudSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSB1cGRhdGVUYWJWaXNpYmlsaXR5KCk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLmNvbmZpZz8udGFicykgcmV0dXJuO1xyXG5cclxuXHRcdC8vIEZpbmQgdGFicyBpbiBjb25maWcgdGhhdCBoYXZlIHZpc2libGU6IGZhbHNlXHJcblx0XHRjb25zdCBoaWRkZW5UYWJQb3NpdGlvbnMgPSB0aGlzLmNvbmZpZy50YWJzLmZpbHRlcigodGFiKSA9PiB0YWIudmlzaWJsZSA9PT0gZmFsc2UpLm1hcCgodGFiKSA9PiB0YWIucG9zaXRpb24pO1xyXG5cclxuXHRcdGhpZGRlblRhYlBvc2l0aW9ucy5mb3JFYWNoKChwb3NpdGlvbikgPT4ge1xyXG5cdFx0XHR0aGlzLmhpZGVUYWJCeVBvc2l0aW9uKHBvc2l0aW9uLCB0cnVlKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0aGlkZVRhYkJ5UG9zaXRpb24ocG9zaXRpb246IG51bWJlciwgaGlkZSA9IHRydWUpOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldz8udGFicykgcmV0dXJuO1xyXG5cclxuXHRcdGNvbnN0IHBhbmVsVG9IaWRlID0gdGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldy50YWJzW3Bvc2l0aW9uXTtcclxuXHRcdGNvbnN0IHRhYlRvSGlkZSA9IHRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYlZpZXcubGlzdD8uY2hpbGRyZW5bcG9zaXRpb25dIGFzIEhUTUxFbGVtZW50O1xyXG5cclxuXHRcdGlmICh0YWJUb0hpZGUgJiYgcGFuZWxUb0hpZGUpIHtcclxuXHRcdFx0cGFuZWxUb0hpZGUuZWwubmF0aXZlRWxlbWVudC5oaWRkZW4gPSBoaWRlO1xyXG5cdFx0XHR0YWJUb0hpZGUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlb3JkZXIgdGFicyBiYXNlZCBvbiBjb25maWcgcG9zaXRpb25zXHJcblx0ICogSXRlcmF0ZXMgb3ZlciB2aXNpYmxlIGNvbmZpZyB0YWJzIGFuZCByZWFycmFuZ2VzIGJvdGggc3RhdGljIGFuZCBjb25maWcgdGFic1xyXG5cdCAqL1xyXG5cdHByaXZhdGUgcmVvcmRlclRhYnNCeVBvc2l0aW9uKCk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLmRldGFpbENvbXBvbmVudC50YWJWaWV3Py50YWJzIHx8ICF0aGlzLmRldGFpbENvbXBvbmVudC50YWJWaWV3Py5saXN0KSByZXR1cm47XHJcblxyXG5cdFx0Y29uc3QgY29uZmlnVGFicyA9IHRoaXMuZ2V0UHJvY2Vzc2VkVGFicygpO1xyXG5cdFx0Y29uc3QgYWxsVGFicyA9IHRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYlZpZXcudGFicztcclxuXHRcdGNvbnN0IG5hdkxpc3QgPSB0aGlzLmRldGFpbENvbXBvbmVudC50YWJWaWV3Lmxpc3Q7XHJcblxyXG5cdFx0Y29uc3QgY29uZmlnVGFiTWFwID0gbmV3IE1hcDxzdHJpbmcgfCBudW1iZXIgfCBudWxsLCBUYWJDb25maWc+KCk7XHJcblx0XHRjb25maWdUYWJzLmZvckVhY2goKHRhYikgPT4ge1xyXG5cdFx0XHQvLyBPbmx5IHRyZWF0IHRhYnMgdGhhdCBib3RoOlxyXG5cdFx0XHQvLyAtIGhhdmUgYW4gaWRcclxuXHRcdFx0Ly8gLSBhbmQgaGF2ZSBhbiBleHBsaWNpdCBwb3NpdGlvblxyXG5cdFx0XHQvLyBhcyBcInJlb3JkZXIgaW5zdHJ1Y3Rpb25zXCIgZm9yIGV4aXN0aW5nIHN0YXRpYyB0YWJzLlxyXG5cdFx0XHQvLyBUYWJzIHdpdGhvdXQgYSBwb3NpdGlvbiAoZXZlbiBpZiB0aGV5IGhhdmUgYW4gaWQpIGFyZSBjb25zaWRlcmVkXHJcblx0XHRcdC8vIHJlZ3VsYXIvbmV3IHRhYnMgYW5kIHNob3VsZCBrZWVwIHRoZWlyIG5hdHVyYWwgb3JkZXIuXHJcblx0XHRcdGlmICh0YWIuaWQgJiYgdGFiLnBvc2l0aW9uKSB7XHJcblx0XHRcdFx0Y29uZmlnVGFiTWFwLnNldCh0YWIuaWQsIHRhYik7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdC8vIHNlcGFyYXRlIHN0YXRpYyBmcm9tIGNvbmZpZyB0YWJzXHJcblx0XHRjb25zdCBzdGF0aWNUYWJzOiBBcnJheTx7IHRhYjogYW55OyBpbmRleDogbnVtYmVyOyBpZDogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB9PiA9IFtdO1xyXG5cdFx0Y29uc3QgY29uZmlnVGFiSW5zdGFuY2VzOiBBcnJheTx7IHRhYjogYW55OyBpbmRleDogbnVtYmVyOyBjb25maWc6IFRhYkNvbmZpZyB9PiA9IFtdO1xyXG5cclxuXHRcdGFsbFRhYnMuZm9yRWFjaCgodGFiUGFuZWwsIGluZGV4KSA9PiB7XHJcblx0XHRcdGNvbnN0IHRhYklkID0gdGFiUGFuZWw/LmVsPy5uYXRpdmVFbGVtZW50Py5pZCB8fCBudWxsO1xyXG5cdFx0XHRjb25zdCBjb25maWdUYWIgPSB0YWJJZCA/IGNvbmZpZ1RhYk1hcC5nZXQodGFiSWQpIDogbnVsbDtcclxuXHJcblx0XHRcdGlmIChjb25maWdUYWIpIHtcclxuXHRcdFx0XHRjb25maWdUYWJJbnN0YW5jZXMucHVzaCh7IHRhYjogdGFiUGFuZWwsIGluZGV4LCBjb25maWc6IGNvbmZpZ1RhYiB9KTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRzdGF0aWNUYWJzLnB1c2goeyB0YWI6IHRhYlBhbmVsLCBpbmRleCwgaWQ6IHRhYklkIH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHRjb25zdCBwb3NpdGlvbk1hcCA9IG5ldyBNYXA8bnVtYmVyLCB7IHRhYjogYW55OyBpc0NvbmZpZzogYm9vbGVhbjsgaWQ6IHN0cmluZyB8IG51bWJlciB8IG51bGwgfT4oKTtcclxuXHJcblx0XHQvLyBwbGFjZSBjb25maWcgdGFicyBhdCB0aGVpciBzcGVjaWZpZWQgcG9zaXRpb25zXHJcblx0XHRjb25maWdUYWJJbnN0YW5jZXMuZm9yRWFjaCgoeyB0YWIsIGNvbmZpZyB9KSA9PiB7XHJcblx0XHRcdGlmIChjb25maWcucG9zaXRpb24gIT09IHVuZGVmaW5lZCAmJiBjb25maWcucG9zaXRpb24gIT09IG51bGwpIHtcclxuXHRcdFx0XHRwb3NpdGlvbk1hcC5zZXQoY29uZmlnLnBvc2l0aW9uLCB7IHRhYiwgaXNDb25maWc6IHRydWUsIGlkOiBjb25maWcuaWQgfSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdC8vIHBsYWNlIHN0YXRpYyB0YWJzIGF0IGF2YWlsYWJsZSBwb3NpdGlvbnMgKG1haW50YWluaW5nIHJlbGF0aXZlIG9yZGVyKVxyXG5cdFx0bGV0IHN0YXRpY0luZGV4ID0gMDtcclxuXHRcdGxldCBjdXJyZW50UG9zaXRpb24gPSAwO1xyXG5cclxuXHRcdHdoaWxlIChzdGF0aWNJbmRleCA8IHN0YXRpY1RhYnMubGVuZ3RoKSB7XHJcblx0XHRcdHdoaWxlIChwb3NpdGlvbk1hcC5oYXMoY3VycmVudFBvc2l0aW9uKSkge1xyXG5cdFx0XHRcdGN1cnJlbnRQb3NpdGlvbisrO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvLyBwbGFjZSBzdGF0aWMgdGFiIGF0IHRoaXMgcG9zaXRpb25cclxuXHRcdFx0Y29uc3Qgc3RhdGljVGFiID0gc3RhdGljVGFic1tzdGF0aWNJbmRleF07XHJcblx0XHRcdHBvc2l0aW9uTWFwLnNldChjdXJyZW50UG9zaXRpb24sIHsgdGFiOiBzdGF0aWNUYWIudGFiLCBpc0NvbmZpZzogZmFsc2UsIGlkOiBzdGF0aWNUYWIuaWQgfSk7XHJcblx0XHRcdHN0YXRpY0luZGV4Kys7XHJcblx0XHRcdGN1cnJlbnRQb3NpdGlvbisrO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIGJ1aWxkIG9yZGVyZWQgYXJyYXlcclxuXHRcdGNvbnN0IHNvcnRlZFBvc2l0aW9ucyA9IEFycmF5LmZyb20ocG9zaXRpb25NYXAua2V5cygpKS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XHJcblx0XHRjb25zdCByZW9yZGVyZWRUYWJzOiBhbnlbXSA9IFtdO1xyXG5cdFx0Y29uc3QgcmVvcmRlcmVkSGVhZGVyczogSFRNTEVsZW1lbnRbXSA9IFtdO1xyXG5cclxuXHRcdHNvcnRlZFBvc2l0aW9ucy5mb3JFYWNoKChwb3NpdGlvbikgPT4ge1xyXG5cdFx0XHRjb25zdCB0YWJJbmZvID0gcG9zaXRpb25NYXAuZ2V0KHBvc2l0aW9uKSE7XHJcblx0XHRcdHJlb3JkZXJlZFRhYnMucHVzaCh0YWJJbmZvLnRhYik7XHJcblxyXG5cdFx0XHRjb25zdCBvcmlnaW5hbEluZGV4ID0gYWxsVGFicy5pbmRleE9mKHRhYkluZm8udGFiKTtcclxuXHRcdFx0aWYgKG9yaWdpbmFsSW5kZXggIT09IC0xICYmIG5hdkxpc3QuY2hpbGRyZW5bb3JpZ2luYWxJbmRleF0pIHtcclxuXHRcdFx0XHRyZW9yZGVyZWRIZWFkZXJzLnB1c2gobmF2TGlzdC5jaGlsZHJlbltvcmlnaW5hbEluZGV4XSBhcyBIVE1MRWxlbWVudCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdC8vIHJlb3JkZXIgdGFicyBhcnJheVxyXG5cdFx0dGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldy50YWJzLmxlbmd0aCA9IDA7XHJcblx0XHRyZW9yZGVyZWRUYWJzLmZvckVhY2goKHRhYikgPT4gdGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldyEudGFicy5wdXNoKHRhYikpO1xyXG5cclxuXHRcdC8vIHJlb3JkZXIgZG9tIGhlYWRlcnNcclxuXHRcdHJlb3JkZXJlZEhlYWRlcnMuZm9yRWFjaCgoaGVhZGVyLCBuZXdJbmRleCkgPT4ge1xyXG5cdFx0XHRjb25zdCB0YXJnZXRIZWFkZXIgPSBuYXZMaXN0LmNoaWxkcmVuW25ld0luZGV4XTtcclxuXHRcdFx0aWYgKHRhcmdldEhlYWRlciAmJiB0YXJnZXRIZWFkZXIgIT09IGhlYWRlcikge1xyXG5cdFx0XHRcdG5hdkxpc3QuaW5zZXJ0QmVmb3JlKGhlYWRlciwgdGFyZ2V0SGVhZGVyKTtcclxuXHRcdFx0fSBlbHNlIGlmICghdGFyZ2V0SGVhZGVyKSB7XHJcblx0XHRcdFx0bmF2TGlzdC5hcHBlbmRDaGlsZChoZWFkZXIpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHQvLyByZW9yZGVyIGRvbSBwYW5lbHNcclxuXHRcdGNvbnN0IHBhbmVsc0NvbnRhaW5lciA9IGFsbFRhYnNbMF0/LmVsLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudDtcclxuXHRcdGlmIChwYW5lbHNDb250YWluZXIpIHtcclxuXHRcdFx0cmVvcmRlcmVkVGFicy5mb3JFYWNoKCh0YWJQYW5lbCwgbmV3SW5kZXgpID0+IHtcclxuXHRcdFx0XHRjb25zdCB0YXJnZXRQYW5lbCA9IHBhbmVsc0NvbnRhaW5lci5jaGlsZHJlbltuZXdJbmRleF07XHJcblx0XHRcdFx0aWYgKHRhcmdldFBhbmVsICYmIHRhcmdldFBhbmVsICE9PSB0YWJQYW5lbC5lbC5uYXRpdmVFbGVtZW50KSB7XHJcblx0XHRcdFx0XHRwYW5lbHNDb250YWluZXIuaW5zZXJ0QmVmb3JlKHRhYlBhbmVsLmVsLm5hdGl2ZUVsZW1lbnQsIHRhcmdldFBhbmVsKTtcclxuXHRcdFx0XHR9IGVsc2UgaWYgKCF0YXJnZXRQYW5lbCkge1xyXG5cdFx0XHRcdFx0cGFuZWxzQ29udGFpbmVyLmFwcGVuZENoaWxkKHRhYlBhbmVsLmVsLm5hdGl2ZUVsZW1lbnQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYlZpZXcuY2QpIHtcclxuXHRcdFx0dGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYWN0aXZhdGVUYWJGcm9tVXJsKCk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLmRldGFpbENvbXBvbmVudC50YWJWaWV3KSByZXR1cm47XHJcblxyXG5cdFx0Y29uc3QgYWN0aXZlVGFiUGFyYW0gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCdhY3RpdmVUYWInKTtcclxuXHRcdGlmIChhY3RpdmVUYWJQYXJhbSkge1xyXG5cdFx0XHRjb25zdCBhY3RpdmVUYWJJbmRleCA9IE51bWJlcihhY3RpdmVUYWJQYXJhbSk7XHJcblxyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0IWlzTmFOKGFjdGl2ZVRhYkluZGV4KSAmJlxyXG5cdFx0XHRcdGFjdGl2ZVRhYkluZGV4ID49IDAgJiZcclxuXHRcdFx0XHR0aGlzLmRldGFpbENvbXBvbmVudC50YWJWaWV3LnRhYnMgJiZcclxuXHRcdFx0XHRhY3RpdmVUYWJJbmRleCA8IHRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYlZpZXcudGFicy5sZW5ndGhcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0dGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldy5hY3RpdmVJbmRleCA9IGFjdGl2ZVRhYkluZGV4O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHVwZGF0ZU1lbnUobWVudUNvbmZpZzogRGV0YWlsQ29uZmlnTWVudUl0ZW1bXSkge1xyXG5cdFx0Y29uc3QgY29udGV4dCA9IHtcclxuXHRcdFx0cm91dGVyOiB0aGlzLnJvdXRlcixcclxuXHRcdFx0cm91dGU6IHRoaXMucm91dGUsXHJcblx0XHRcdGRpYWxvZ1NlcnZpY2U6IHRoaXMuZGlhbG9nU2VydmljZSxcclxuXHRcdFx0Y29tcG9uZW50OiB0aGlzLmRldGFpbENvbXBvbmVudFxyXG5cdFx0fTtcclxuXHJcblx0XHRjb25zdCBhY3RpdmVMYW5nID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKTtcclxuXHRcdGNvbnN0IGR5bmFtaWNNZW51OiBNZW51SXRlbVtdID0gbWVudUNvbmZpZy5tYXAoKG0pID0+ICh7XHJcblx0XHRcdGxhYmVsOiBtLmxhYmVsW2FjdGl2ZUxhbmddID8/ICcnLFxyXG5cdFx0XHRpY29uOiBtLmljb24sXHJcblx0XHRcdGNvbW1hbmQ6IChfZXZlbnQ6IGFueSkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IGNvbW1hbmRGbiA9IG5ldyBGdW5jdGlvbignY3R4JywgbS5jb21tYW5kKTtcclxuXHRcdFx0XHRjb21tYW5kRm4oY29udGV4dCkoY29udGV4dCk7XHJcblx0XHRcdH1cclxuXHRcdH0pKTtcclxuXHJcblx0XHQvLyBVcGRhdGUgdGhlIGV4aXN0aW5nIHNpZ25hbCBpbnN0ZWFkIG9mIHJlcGxhY2luZyBpdCB0byBlbnN1cmUgY2hhbmdlXHJcblx0XHQvLyBkZXRlY3Rpb24gcGlja3MgdXAgdGhlIG1lbnUgdXBkYXRlIGFmdGVyIGJyb3dzZXIgYmFjayBuYXZpZ2F0aW9uLlxyXG5cdFx0Y29uc3QgZ2VuZXJhbE1lbnVTaWduYWwgPSB0aGlzLmRldGFpbENvbXBvbmVudC5tZEluZm9QbHVnaW5Qcm9wcy5nZW5lcmFsTWVudSBhcyBhbnk7XHJcblx0XHRjb25zdCBleGlzdGluZ01lbnU6IE1lbnVJdGVtW10gPSBnZW5lcmFsTWVudVNpZ25hbCgpO1xyXG5cclxuXHRcdC8vIEF2b2lkIGR1cGxpY2F0aW5nIHByZXZpb3VzbHkgYWRkZWQgZHluYW1pYyBpdGVtcyAoaWRlbnRpZmllZCBieSBsYWJlbC9pY29uIG1hdGNoKVxyXG5cdFx0Y29uc3QgbWVyZ2VkTWVudSA9IFtcclxuXHRcdFx0Li4uZXhpc3RpbmdNZW51LmZpbHRlcigoaXRlbSkgPT4gIWR5bmFtaWNNZW51LnNvbWUoKGR5bikgPT4gZHluLmxhYmVsID09PSBpdGVtLmxhYmVsICYmIGR5bi5pY29uID09PSBpdGVtLmljb24pKSxcclxuXHRcdFx0Li4uZHluYW1pY01lbnVcclxuXHRcdF07XHJcblxyXG5cdFx0aWYgKGdlbmVyYWxNZW51U2lnbmFsPy5zZXQpIHtcclxuXHRcdFx0Z2VuZXJhbE1lbnVTaWduYWwuc2V0KG1lcmdlZE1lbnUpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5kZXRhaWxDb21wb25lbnQubWRJbmZvUGx1Z2luUHJvcHMuZ2VuZXJhbE1lbnUgPSBzaWduYWwobWVyZ2VkTWVudSk7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiJdfQ==
|
|
299
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLXBhZ2UtY3VzdG9taXphdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3V0aWwvZGlyZWN0aXZlcy9zcmMvZGV0YWlsLXBhZ2UtY3VzdG9taXphdGlvbi9kZXRhaWwtcGFnZS1jdXN0b21pemF0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUl6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFMUMsT0FBTyxFQUNOLGdCQUFnQixFQUloQixxQkFBcUIsRUFFckIsTUFBTSxVQUFVLENBQUM7O0FBS2xCLE1BQU0sT0FBTyxnQ0FBZ0M7SUF1RDVDLFlBQXVELGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQXREdEUsVUFBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvQixXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLGtCQUFhLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxvQkFBb0I7UUFDbkUscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFN0QsK0RBQStEO1FBQ3ZELHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqQyxtQkFBYyxHQUFHLEdBQTZCLEVBQUU7WUFDdkQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxD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dCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcblxyXG5pbXBvcnQgeyBicmlkZ2UgfSBmcm9tICdhcmlsL2Jvb3QvYnJpZGdlJztcclxuXHJcbmltcG9ydCB7XHJcblx0REVUQUlMX0NPTVBPTkVOVCxcclxuXHREZXRhaWxDb21wb25lbnQsXHJcblx0RGV0YWlsQ29uZmlnLFxyXG5cdERldGFpbENvbmZpZ01lbnVJdGVtLFxyXG5cdFBMVUdJTl9ESUFMT0dfU0VSVklDRSxcclxuXHRUYWJDb25maWdcclxufSBmcm9tICcuL21vZGVscyc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuXHRzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZXRhaWxQYWdlQ3VzdG9taXphdGlvbkRpcmVjdGl2ZSB7XHJcblx0cHJpdmF0ZSByZWFkb25seSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XHJcblx0cHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoUExVR0lOX0RJQUxPR19TRVJWSUNFKTsgLy8gVXNlIHRva2VuIGluc3RlYWRcclxuXHRwcml2YXRlIHJlYWRvbmx5IHRyYW5zbG9jb1NlcnZpY2UgPSBpbmplY3QoVHJhbnNsb2NvU2VydmljZSk7XHJcblxyXG5cdC8vIEludGVybmFsIHNpZ25hbCB0byB0cmFjayB3aGVuIFRhYlZpZXcgYW5kIHRoZSBtZW51IGFyZSByZWFkeVxyXG5cdHByaXZhdGUgdmlld3NJbml0aWFsaXplZCA9IHNpZ25hbChmYWxzZSk7XHJcblx0cHJpdmF0ZSBjb25maWc6IERldGFpbENvbmZpZyB8IHVuZGVmaW5lZDtcclxuXHRwcml2YXRlIGdldFJvdXRlQ29uZmlnID0gKCk6IERldGFpbENvbmZpZyB8IHVuZGVmaW5lZCA9PiB7XHJcblx0XHRjb25zdCBjb25maWdzID0gYnJpZGdlLnJvdXRlQ29uZmlncygpO1xyXG5cdFx0aWYgKCFjb25maWdzKSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuXHRcdGNvbnN0IGN1cnJlbnRVcmwgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJz8nKVswXTtcclxuXHJcblx0XHRsZXQgYmVzdE1hdGNoOiB7IHBhdGg6IHN0cmluZzsgY29udGVudDogc3RyaW5nOyB2ZXJzaW9uOiBudW1iZXIgfSB8IHVuZGVmaW5lZDtcclxuXHJcblx0XHRmb3IgKGNvbnN0IGNvbmZpZyBvZiBjb25maWdzKSB7XHJcblx0XHRcdGlmICghY29uZmlnLnBhdGgpIGNvbnRpbnVlO1xyXG5cclxuXHRcdFx0Y29uc3QgdXJsVG9DaGVjayA9IGNvbmZpZy5wYXRoLnN0YXJ0c1dpdGgoJy8nKSA/IGNvbmZpZy5wYXRoIDogYC8ke2NvbmZpZy5wYXRofWA7XHJcblxyXG5cdFx0XHRpZiAoY3VycmVudFVybC5zdGFydHNXaXRoKHVybFRvQ2hlY2spKSB7XHJcblx0XHRcdFx0YmVzdE1hdGNoID0gY29uZmlnO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCFiZXN0TWF0Y2gpIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG5cdFx0dHJ5IHtcclxuXHRcdFx0cmV0dXJuIEpTT04ucGFyc2UoYmVzdE1hdGNoLmNvbnRlbnQpIGFzIERldGFpbENvbmZpZztcclxuXHRcdH0gY2F0Y2ggKGUpIHtcclxuXHRcdFx0Y29uc29sZS5lcnJvcignRmFpbGVkIHRvIHBhcnNlIHJvdXRlIGNvbmZpZyBjb250ZW50OicsIGUpO1xyXG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdHByaXZhdGUgZ2V0UHJvY2Vzc2VkVGFiczogU2lnbmFsPFRhYkNvbmZpZ1tdPiA9IGNvbXB1dGVkKCgpID0+IHtcclxuXHRcdGlmICghdGhpcy5jb25maWc/LnRhYnMpIHJldHVybiBbXTtcclxuXHJcblx0XHRjb25zdCBhY3RpdmVMYW5nID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKTtcclxuXHJcblx0XHRyZXR1cm4gdGhpcy5jb25maWcudGFic1xyXG5cdFx0XHQuZmlsdGVyKCh0YWIpID0+IHRhYi52aXNpYmxlICE9PSBmYWxzZSlcclxuXHRcdFx0Lm1hcCgodGFiKSA9PiAoe1xyXG5cdFx0XHRcdGlkOiB0YWIuaWQgPz8gbnVsbCxcclxuXHRcdFx0XHRpY29uOiB0YWIuaWNvbixcclxuXHRcdFx0XHRoZWFkZXI6IHRhYi5sYWJlbCA/IHRhYi5sYWJlbFthY3RpdmVMYW5nXSA6ICcnLFxyXG5cdFx0XHRcdHZpc2libGU6IHRhYi52aXNpYmxlLFxyXG5cdFx0XHRcdHBvc2l0aW9uOiB0YWIucG9zaXRpb24sXHJcblx0XHRcdFx0Y29tcG9uZW50czogdGFiLmNvbXBvbmVudHMgfHwgW11cclxuXHRcdFx0fSkpO1xyXG5cdH0pO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihASW5qZWN0KERFVEFJTF9DT01QT05FTlQpIHByaXZhdGUgcmVhZG9ubHkgZGV0YWlsQ29tcG9uZW50OiBEZXRhaWxDb21wb25lbnQpIHtcclxuXHRcdHRoaXMuY29uZmlnID0gdGhpcy5nZXRSb3V0ZUNvbmZpZygpO1xyXG5cdFx0ZWZmZWN0KFxyXG5cdFx0XHQob25DbGVhbnVwKSA9PiB7XHJcblx0XHRcdFx0aWYgKHRoaXMudmlld3NJbml0aWFsaXplZCgpKSByZXR1cm47XHJcblxyXG5cdFx0XHRcdC8vIFBvbGwgZXZlcnkgYW5pbWF0aW9uIGZyYW1lIHVudGlsIGJvdGggVGFiVmlldyBhbmQgdGhlIG1lbnUgaXMgcmVhZHlcclxuXHRcdFx0XHQvLyBUaGUgbWVudSBjYW4gYmUgZGlyZWN0bHkgZGVmaW5lZCBpbiB0aGUgY29tcG9uZW50IGZyb20gaW5pdCBzdGVwLCBvciBiZSBidWlsdCBkeW5hbWljYWxseSBhZnRlciB3YWl0aW5nIGZvciBhIG5ldHdvcmsgcmVzcG9uc2UuIFNvIHdlIG11c3Qgd2FpdCBmb3IgaXQgdG8gYmUgcmVhZHkuXHJcblx0XHRcdFx0Y29uc3QgY2hlY2tWaWV3cyA9ICgpID0+IHtcclxuXHRcdFx0XHRcdGlmICh0aGlzLmRldGFpbENvbXBvbmVudC50YWJWaWV3Py50YWJzICYmIHRoaXMuZGV0YWlsQ29tcG9uZW50Lm1kSW5mb1BsdWdpblByb3BzPy5nZW5lcmFsTWVudSgpPy5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy52aWV3c0luaXRpYWxpemVkLnNldCh0cnVlKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5vblZpZXdzUmVhZHkoKTtcclxuXHRcdFx0XHRcdH0gZWxzZSBpZiAoIXRoaXMudmlld3NJbml0aWFsaXplZCgpKSB7XHJcblx0XHRcdFx0XHRcdGZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2hlY2tWaWV3cyk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fTtcclxuXHJcblx0XHRcdFx0bGV0IGZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2hlY2tWaWV3cyk7XHJcblxyXG5cdFx0XHRcdG9uQ2xlYW51cCgoKSA9PiB7XHJcblx0XHRcdFx0XHRjYW5jZWxBbmltYXRpb25GcmFtZShmcmFtZUlkKTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSxcclxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBvblZpZXdzUmVhZHkoKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuY29uZmlnKSByZXR1cm47XHJcblxyXG5cdFx0Ly8gc3RlcCAxIC0gaGlkZSB0YWJzIGJhc2VkIG9uIGNvbmZpZ1xyXG5cdFx0aWYgKHRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYlZpZXc/LnRhYnMpIHtcclxuXHRcdFx0dGhpcy51cGRhdGVUYWJWaXNpYmlsaXR5KCk7XHJcblx0XHR9XHJcblx0XHQvLyBzdGVwIDIgLSBhcHBlbmQgY29uZmlnIHRhYnMgdG8gdGhlIHN0YXRpYyB0YWJzIChvbmx5IG5ldyBvbmVzLCBub3QgdGhvc2UgbWF0Y2hpbmcgc3RhdGljIHRhYnMpXHJcblx0XHRjb25zdCBhbGxDb25maWdUYWJzID0gdGhpcy5nZXRQcm9jZXNzZWRUYWJzKCk7XHJcblxyXG5cdFx0Ly8gR2V0IElEcyBvZiBleGlzdGluZyBzdGF0aWMgdGFic1xyXG5cdFx0Y29uc3Qgc3RhdGljVGFiSWRzID0gbmV3IFNldDxzdHJpbmcgfCBudW1iZXIgfCBudWxsPigpO1xyXG5cdFx0aWYgKHRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYlZpZXc/LnRhYnMpIHtcclxuXHRcdFx0dGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldy50YWJzLmZvckVhY2goKHRhYlBhbmVsKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgdGFiSWQgPSB0YWJQYW5lbD8uZWw/Lm5hdGl2ZUVsZW1lbnQ/LmlkO1xyXG5cdFx0XHRcdGlmICh0YWJJZCkge1xyXG5cdFx0XHRcdFx0c3RhdGljVGFiSWRzLmFkZCh0YWJJZCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBGaWx0ZXIgb3V0IGNvbmZpZyB0YWJzIHRoYXQgYXJlIG1lYW50IHRvICpyZW9yZGVyKiBleGlzdGluZyBzdGF0aWMgdGFicy5cclxuXHRcdC8vIEFueSB0YWIgd2hvc2UgaWQgbWF0Y2hlcyBhbiBleGlzdGluZyBzdGF0aWMgdGFiIGlkIGlzIGNvbnNpZGVyZWQgYSBcInJlb3JkZXJcIlxyXG5cdFx0Ly8gaW5zdHJ1Y3Rpb247IGV2ZXJ5dGhpbmcgZWxzZSAoaWQgPT09IG51bGwgT1IgYW4gaWQgdGhhdCBkb2Vzbid0IGV4aXN0IHlldClcclxuXHRcdC8vIGlzIHRyZWF0ZWQgYXMgYSBicmFuZCBuZXcgdGFiLlxyXG5cdFx0Y29uc3QgbmV3Q29uZmlnVGFicyA9IGFsbENvbmZpZ1RhYnMuZmlsdGVyKCh0YWIpID0+IHtcclxuXHRcdFx0Ly8gbmV3IHRhYiB3aGVuIGlkIGlzIG51bGwvdW5kZWZpbmVkXHJcblx0XHRcdGlmICghdGFiLmlkKSByZXR1cm4gdHJ1ZTtcclxuXHJcblx0XHRcdC8vIG5ldyB0YWIgd2hlbiBpZCBpcyBwcm92aWRlZCBidXQgZG9lc24ndCBtYXRjaCBhbnkgc3RhdGljIHRhYiBpZFxyXG5cdFx0XHRyZXR1cm4gIXN0YXRpY1RhYklkcy5oYXModGFiLmlkKTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdGlmIChuZXdDb25maWdUYWJzLmxlbmd0aCA+IDAgJiYgdGhpcy5kZXRhaWxDb21wb25lbnQuY29uZmlnVGFicykge1xyXG5cdFx0XHQodGhpcy5kZXRhaWxDb21wb25lbnQuY29uZmlnVGFicyBhcyBhbnkpLnNldChuZXdDb25maWdUYWJzKTtcclxuXHRcdH0gZWxzZSBpZiAobmV3Q29uZmlnVGFicy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdHRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYnMgPSBuZXdDb25maWdUYWJzO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIHVzaW5nIHNldFRpbWVvdXQgdG8gZW5zdXJlIHRhYlZpZXcgaXMgcmVhZHkgYXMgd2Ugd2FudCB0byB3b3JrIGRpcmVjdGx5IHdpdGggdGhlIGdlbmVyYXRlZCBlbGVtZW50c1xyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdC8vIHN0ZXAgMyAtIHJlb3JkZXIgdGFic1xyXG5cdFx0XHR0aGlzLnJlb3JkZXJUYWJzQnlQb3NpdGlvbigpO1xyXG5cdFx0XHQvLyBzdGVwIDQgLSBhY3RpdmF0ZSB0YWIgZnJvbSBVUkwgaWYgc3BlY2lmaWVkXHJcblx0XHRcdHRoaXMuYWN0aXZhdGVUYWJGcm9tVXJsKCk7XHJcblx0XHRcdC8vIHN0ZXAgNSAtIHVwZGF0ZSB0aGUgbWVudVxyXG5cdFx0XHRpZiAodGhpcy5jb25maWc/Lm1lbnUpIHtcclxuXHRcdFx0XHR0aGlzLnVwZGF0ZU1lbnUodGhpcy5jb25maWcubWVudSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSB1cGRhdGVUYWJWaXNpYmlsaXR5KCk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLmNvbmZpZz8udGFicykgcmV0dXJuO1xyXG5cclxuXHRcdC8vIEZpbmQgdGFicyBpbiBjb25maWcgdGhhdCBoYXZlIHZpc2libGU6IGZhbHNlXHJcblx0XHRjb25zdCBoaWRkZW5UYWJQb3NpdGlvbnMgPSB0aGlzLmNvbmZpZy50YWJzLmZpbHRlcigodGFiKSA9PiB0YWIudmlzaWJsZSA9PT0gZmFsc2UpLm1hcCgodGFiKSA9PiB0YWIucG9zaXRpb24pO1xyXG5cclxuXHRcdGhpZGRlblRhYlBvc2l0aW9ucy5mb3JFYWNoKChwb3NpdGlvbikgPT4ge1xyXG5cdFx0XHR0aGlzLmhpZGVUYWJCeVBvc2l0aW9uKHBvc2l0aW9uLCB0cnVlKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0aGlkZVRhYkJ5UG9zaXRpb24ocG9zaXRpb246IG51bWJlciwgaGlkZSA9IHRydWUpOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldz8udGFicykgcmV0dXJuO1xyXG5cclxuXHRcdGNvbnN0IHBhbmVsVG9IaWRlID0gdGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldy50YWJzW3Bvc2l0aW9uXTtcclxuXHRcdGNvbnN0IHRhYlRvSGlkZSA9IHRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYlZpZXcubGlzdD8uY2hpbGRyZW5bcG9zaXRpb25dIGFzIEhUTUxFbGVtZW50O1xyXG5cclxuXHRcdGlmICh0YWJUb0hpZGUgJiYgcGFuZWxUb0hpZGUpIHtcclxuXHRcdFx0cGFuZWxUb0hpZGUuZWwubmF0aXZlRWxlbWVudC5oaWRkZW4gPSBoaWRlO1xyXG5cdFx0XHR0YWJUb0hpZGUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlb3JkZXIgdGFicyBiYXNlZCBvbiBjb25maWcgcG9zaXRpb25zXHJcblx0ICogSXRlcmF0ZXMgb3ZlciB2aXNpYmxlIGNvbmZpZyB0YWJzIGFuZCByZWFycmFuZ2VzIGJvdGggc3RhdGljIGFuZCBjb25maWcgdGFic1xyXG5cdCAqL1xyXG5cdHByaXZhdGUgcmVvcmRlclRhYnNCeVBvc2l0aW9uKCk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLmRldGFpbENvbXBvbmVudC50YWJWaWV3Py50YWJzIHx8ICF0aGlzLmRldGFpbENvbXBvbmVudC50YWJWaWV3Py5saXN0KSByZXR1cm47XHJcblxyXG5cdFx0Y29uc3QgY29uZmlnVGFicyA9IHRoaXMuZ2V0UHJvY2Vzc2VkVGFicygpO1xyXG5cdFx0Y29uc3QgYWxsVGFicyA9IHRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYlZpZXcudGFicztcclxuXHRcdGNvbnN0IG5hdkxpc3QgPSB0aGlzLmRldGFpbENvbXBvbmVudC50YWJWaWV3Lmxpc3Q7XHJcblxyXG5cdFx0Y29uc3QgY29uZmlnVGFiTWFwID0gbmV3IE1hcDxzdHJpbmcgfCBudW1iZXIgfCBudWxsLCBUYWJDb25maWc+KCk7XHJcblx0XHRjb25maWdUYWJzLmZvckVhY2goKHRhYikgPT4ge1xyXG5cdFx0XHQvLyBPbmx5IHRyZWF0IHRhYnMgdGhhdCBib3RoOlxyXG5cdFx0XHQvLyAtIGhhdmUgYW4gaWRcclxuXHRcdFx0Ly8gLSBhbmQgaGF2ZSBhbiBleHBsaWNpdCBwb3NpdGlvblxyXG5cdFx0XHQvLyBhcyBcInJlb3JkZXIgaW5zdHJ1Y3Rpb25zXCIgZm9yIGV4aXN0aW5nIHN0YXRpYyB0YWJzLlxyXG5cdFx0XHQvLyBUYWJzIHdpdGhvdXQgYSBwb3NpdGlvbiAoZXZlbiBpZiB0aGV5IGhhdmUgYW4gaWQpIGFyZSBjb25zaWRlcmVkXHJcblx0XHRcdC8vIHJlZ3VsYXIvbmV3IHRhYnMgYW5kIHNob3VsZCBrZWVwIHRoZWlyIG5hdHVyYWwgb3JkZXIuXHJcblx0XHRcdGlmICh0YWIuaWQgJiYgdGFiLnBvc2l0aW9uKSB7XHJcblx0XHRcdFx0Y29uZmlnVGFiTWFwLnNldCh0YWIuaWQsIHRhYik7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdC8vIHNlcGFyYXRlIHN0YXRpYyBmcm9tIGNvbmZpZyB0YWJzXHJcblx0XHRjb25zdCBzdGF0aWNUYWJzOiBBcnJheTx7IHRhYjogYW55OyBpbmRleDogbnVtYmVyOyBpZDogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB9PiA9IFtdO1xyXG5cdFx0Y29uc3QgY29uZmlnVGFiSW5zdGFuY2VzOiBBcnJheTx7IHRhYjogYW55OyBpbmRleDogbnVtYmVyOyBjb25maWc6IFRhYkNvbmZpZyB9PiA9IFtdO1xyXG5cclxuXHRcdGFsbFRhYnMuZm9yRWFjaCgodGFiUGFuZWwsIGluZGV4KSA9PiB7XHJcblx0XHRcdGNvbnN0IHRhYklkID0gdGFiUGFuZWw/LmVsPy5uYXRpdmVFbGVtZW50Py5pZCB8fCBudWxsO1xyXG5cdFx0XHRjb25zdCBjb25maWdUYWIgPSB0YWJJZCA/IGNvbmZpZ1RhYk1hcC5nZXQodGFiSWQpIDogbnVsbDtcclxuXHJcblx0XHRcdGlmIChjb25maWdUYWIpIHtcclxuXHRcdFx0XHRjb25maWdUYWJJbnN0YW5jZXMucHVzaCh7IHRhYjogdGFiUGFuZWwsIGluZGV4LCBjb25maWc6IGNvbmZpZ1RhYiB9KTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRzdGF0aWNUYWJzLnB1c2goeyB0YWI6IHRhYlBhbmVsLCBpbmRleCwgaWQ6IHRhYklkIH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHRjb25zdCBwb3NpdGlvbk1hcCA9IG5ldyBNYXA8bnVtYmVyLCB7IHRhYjogYW55OyBpc0NvbmZpZzogYm9vbGVhbjsgaWQ6IHN0cmluZyB8IG51bWJlciB8IG51bGwgfT4oKTtcclxuXHJcblx0XHQvLyBwbGFjZSBjb25maWcgdGFicyBhdCB0aGVpciBzcGVjaWZpZWQgcG9zaXRpb25zXHJcblx0XHRjb25maWdUYWJJbnN0YW5jZXMuZm9yRWFjaCgoeyB0YWIsIGNvbmZpZyB9KSA9PiB7XHJcblx0XHRcdGlmIChjb25maWcucG9zaXRpb24gIT09IHVuZGVmaW5lZCAmJiBjb25maWcucG9zaXRpb24gIT09IG51bGwpIHtcclxuXHRcdFx0XHRwb3NpdGlvbk1hcC5zZXQoY29uZmlnLnBvc2l0aW9uLCB7IHRhYiwgaXNDb25maWc6IHRydWUsIGlkOiBjb25maWcuaWQgfSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdC8vIHBsYWNlIHN0YXRpYyB0YWJzIGF0IGF2YWlsYWJsZSBwb3NpdGlvbnMgKG1haW50YWluaW5nIHJlbGF0aXZlIG9yZGVyKVxyXG5cdFx0bGV0IHN0YXRpY0luZGV4ID0gMDtcclxuXHRcdGxldCBjdXJyZW50UG9zaXRpb24gPSAwO1xyXG5cclxuXHRcdHdoaWxlIChzdGF0aWNJbmRleCA8IHN0YXRpY1RhYnMubGVuZ3RoKSB7XHJcblx0XHRcdHdoaWxlIChwb3NpdGlvbk1hcC5oYXMoY3VycmVudFBvc2l0aW9uKSkge1xyXG5cdFx0XHRcdGN1cnJlbnRQb3NpdGlvbisrO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvLyBwbGFjZSBzdGF0aWMgdGFiIGF0IHRoaXMgcG9zaXRpb25cclxuXHRcdFx0Y29uc3Qgc3RhdGljVGFiID0gc3RhdGljVGFic1tzdGF0aWNJbmRleF07XHJcblx0XHRcdHBvc2l0aW9uTWFwLnNldChjdXJyZW50UG9zaXRpb24sIHsgdGFiOiBzdGF0aWNUYWIudGFiLCBpc0NvbmZpZzogZmFsc2UsIGlkOiBzdGF0aWNUYWIuaWQgfSk7XHJcblx0XHRcdHN0YXRpY0luZGV4Kys7XHJcblx0XHRcdGN1cnJlbnRQb3NpdGlvbisrO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIGJ1aWxkIG9yZGVyZWQgYXJyYXlcclxuXHRcdGNvbnN0IHNvcnRlZFBvc2l0aW9ucyA9IEFycmF5LmZyb20ocG9zaXRpb25NYXAua2V5cygpKS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XHJcblx0XHRjb25zdCByZW9yZGVyZWRUYWJzOiBhbnlbXSA9IFtdO1xyXG5cdFx0Y29uc3QgcmVvcmRlcmVkSGVhZGVyczogSFRNTEVsZW1lbnRbXSA9IFtdO1xyXG5cclxuXHRcdHNvcnRlZFBvc2l0aW9ucy5mb3JFYWNoKChwb3NpdGlvbikgPT4ge1xyXG5cdFx0XHRjb25zdCB0YWJJbmZvID0gcG9zaXRpb25NYXAuZ2V0KHBvc2l0aW9uKSE7XHJcblx0XHRcdHJlb3JkZXJlZFRhYnMucHVzaCh0YWJJbmZvLnRhYik7XHJcblxyXG5cdFx0XHRjb25zdCBvcmlnaW5hbEluZGV4ID0gYWxsVGFicy5pbmRleE9mKHRhYkluZm8udGFiKTtcclxuXHRcdFx0aWYgKG9yaWdpbmFsSW5kZXggIT09IC0xICYmIG5hdkxpc3QuY2hpbGRyZW5bb3JpZ2luYWxJbmRleF0pIHtcclxuXHRcdFx0XHRyZW9yZGVyZWRIZWFkZXJzLnB1c2gobmF2TGlzdC5jaGlsZHJlbltvcmlnaW5hbEluZGV4XSBhcyBIVE1MRWxlbWVudCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdC8vIHJlb3JkZXIgdGFicyBhcnJheVxyXG5cdFx0dGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldy50YWJzLmxlbmd0aCA9IDA7XHJcblx0XHRyZW9yZGVyZWRUYWJzLmZvckVhY2goKHRhYikgPT4gdGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldyEudGFicy5wdXNoKHRhYikpO1xyXG5cclxuXHRcdC8vIHJlb3JkZXIgZG9tIGhlYWRlcnNcclxuXHRcdHJlb3JkZXJlZEhlYWRlcnMuZm9yRWFjaCgoaGVhZGVyLCBuZXdJbmRleCkgPT4ge1xyXG5cdFx0XHRjb25zdCB0YXJnZXRIZWFkZXIgPSBuYXZMaXN0LmNoaWxkcmVuW25ld0luZGV4XTtcclxuXHRcdFx0aWYgKHRhcmdldEhlYWRlciAmJiB0YXJnZXRIZWFkZXIgIT09IGhlYWRlcikge1xyXG5cdFx0XHRcdG5hdkxpc3QuaW5zZXJ0QmVmb3JlKGhlYWRlciwgdGFyZ2V0SGVhZGVyKTtcclxuXHRcdFx0fSBlbHNlIGlmICghdGFyZ2V0SGVhZGVyKSB7XHJcblx0XHRcdFx0bmF2TGlzdC5hcHBlbmRDaGlsZChoZWFkZXIpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHQvLyByZW9yZGVyIGRvbSBwYW5lbHNcclxuXHRcdGNvbnN0IHBhbmVsc0NvbnRhaW5lciA9IGFsbFRhYnNbMF0/LmVsLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudDtcclxuXHRcdGlmIChwYW5lbHNDb250YWluZXIpIHtcclxuXHRcdFx0cmVvcmRlcmVkVGFicy5mb3JFYWNoKCh0YWJQYW5lbCwgbmV3SW5kZXgpID0+IHtcclxuXHRcdFx0XHRjb25zdCB0YXJnZXRQYW5lbCA9IHBhbmVsc0NvbnRhaW5lci5jaGlsZHJlbltuZXdJbmRleF07XHJcblx0XHRcdFx0aWYgKHRhcmdldFBhbmVsICYmIHRhcmdldFBhbmVsICE9PSB0YWJQYW5lbC5lbC5uYXRpdmVFbGVtZW50KSB7XHJcblx0XHRcdFx0XHRwYW5lbHNDb250YWluZXIuaW5zZXJ0QmVmb3JlKHRhYlBhbmVsLmVsLm5hdGl2ZUVsZW1lbnQsIHRhcmdldFBhbmVsKTtcclxuXHRcdFx0XHR9IGVsc2UgaWYgKCF0YXJnZXRQYW5lbCkge1xyXG5cdFx0XHRcdFx0cGFuZWxzQ29udGFpbmVyLmFwcGVuZENoaWxkKHRhYlBhbmVsLmVsLm5hdGl2ZUVsZW1lbnQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYlZpZXcuY2QpIHtcclxuXHRcdFx0dGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYWN0aXZhdGVUYWJGcm9tVXJsKCk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLmRldGFpbENvbXBvbmVudC50YWJWaWV3KSByZXR1cm47XHJcblxyXG5cdFx0Y29uc3QgYWN0aXZlVGFiUGFyYW0gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCdhY3RpdmVUYWInKTtcclxuXHRcdGlmIChhY3RpdmVUYWJQYXJhbSkge1xyXG5cdFx0XHRjb25zdCBhY3RpdmVUYWJJbmRleCA9IE51bWJlcihhY3RpdmVUYWJQYXJhbSk7XHJcblxyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0IWlzTmFOKGFjdGl2ZVRhYkluZGV4KSAmJlxyXG5cdFx0XHRcdGFjdGl2ZVRhYkluZGV4ID49IDAgJiZcclxuXHRcdFx0XHR0aGlzLmRldGFpbENvbXBvbmVudC50YWJWaWV3LnRhYnMgJiZcclxuXHRcdFx0XHRhY3RpdmVUYWJJbmRleCA8IHRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYlZpZXcudGFicy5sZW5ndGhcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0dGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldy5hY3RpdmVJbmRleCA9IGFjdGl2ZVRhYkluZGV4O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHVwZGF0ZU1lbnUobWVudUNvbmZpZzogRGV0YWlsQ29uZmlnTWVudUl0ZW1bXSkge1xyXG5cdFx0Y29uc3QgY29udGV4dCA9IHtcclxuXHRcdFx0cm91dGVyOiB0aGlzLnJvdXRlcixcclxuXHRcdFx0cm91dGU6IHRoaXMucm91dGUsXHJcblx0XHRcdGRpYWxvZ1NlcnZpY2U6IHRoaXMuZGlhbG9nU2VydmljZSxcclxuXHRcdFx0Y29tcG9uZW50OiB0aGlzLmRldGFpbENvbXBvbmVudFxyXG5cdFx0fTtcclxuXHJcblx0XHRjb25zdCBhY3RpdmVMYW5nID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKTtcclxuXHRcdGNvbnN0IGR5bmFtaWNNZW51OiBNZW51SXRlbVtdID0gbWVudUNvbmZpZy5tYXAoKG0pID0+ICh7XHJcblx0XHRcdGxhYmVsOiBtLmxhYmVsW2FjdGl2ZUxhbmddID8/ICcnLFxyXG5cdFx0XHRpY29uOiBtLmljb24sXHJcblx0XHRcdGNvbW1hbmQ6IChfZXZlbnQ6IGFueSkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IGNvbW1hbmRGbiA9IG5ldyBGdW5jdGlvbignY3R4JywgbS5jb21tYW5kKTtcclxuXHRcdFx0XHRjb21tYW5kRm4oY29udGV4dCkoY29udGV4dCk7XHJcblx0XHRcdH1cclxuXHRcdH0pKTtcclxuXHJcblx0XHQvLyBVcGRhdGUgdGhlIGV4aXN0aW5nIHNpZ25hbCBpbnN0ZWFkIG9mIHJlcGxhY2luZyBpdCB0byBlbnN1cmUgY2hhbmdlXHJcblx0XHQvLyBkZXRlY3Rpb24gcGlja3MgdXAgdGhlIG1lbnUgdXBkYXRlIGFmdGVyIGJyb3dzZXIgYmFjayBuYXZpZ2F0aW9uLlxyXG5cdFx0Y29uc3QgZ2VuZXJhbE1lbnVTaWduYWwgPSB0aGlzLmRldGFpbENvbXBvbmVudC5tZEluZm9QbHVnaW5Qcm9wcy5nZW5lcmFsTWVudSBhcyBhbnk7XHJcblx0XHRjb25zdCBleGlzdGluZ01lbnU6IE1lbnVJdGVtW10gPSBnZW5lcmFsTWVudVNpZ25hbCgpO1xyXG5cclxuXHRcdC8vIEF2b2lkIGR1cGxpY2F0aW5nIHByZXZpb3VzbHkgYWRkZWQgZHluYW1pYyBpdGVtcyAoaWRlbnRpZmllZCBieSBsYWJlbC9pY29uIG1hdGNoKVxyXG5cdFx0Y29uc3QgbWVyZ2VkTWVudSA9IFtcclxuXHRcdFx0Li4uZXhpc3RpbmdNZW51LmZpbHRlcigoaXRlbSkgPT4gIWR5bmFtaWNNZW51LnNvbWUoKGR5bikgPT4gZHluLmxhYmVsID09PSBpdGVtLmxhYmVsICYmIGR5bi5pY29uID09PSBpdGVtLmljb24pKSxcclxuXHRcdFx0Li4uZHluYW1pY01lbnVcclxuXHRcdF07XHJcblxyXG5cdFx0aWYgKGdlbmVyYWxNZW51U2lnbmFsPy5zZXQpIHtcclxuXHRcdFx0Z2VuZXJhbE1lbnVTaWduYWwuc2V0KG1lcmdlZE1lbnUpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5kZXRhaWxDb21wb25lbnQubWRJbmZvUGx1Z2luUHJvcHMuZ2VuZXJhbE1lbnUgPSBzaWduYWwobWVyZ2VkTWVudSk7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiJdfQ==
|