aril 1.2.18 → 1.2.19
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 +5 -0
- package/boot/config/apps/src/route-permissions.d.ts +2 -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 +1 -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/host/src/app.component.mjs +4 -4
- package/esm2022/boot/mfe/src/app.component.mjs +4 -4
- 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/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 +4 -4
- 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 +4 -4
- 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/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-Cw1MxAqD.mjs} +4 -4
- package/fesm2022/{aril-app.component-wxP3y8dg.mjs.map → aril-app.component-Cw1MxAqD.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 +1 -1
- package/fesm2022/aril-boot-config-api.mjs.map +1 -1
- package/fesm2022/aril-boot-config-apps.mjs +34 -16
- package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
- package/fesm2022/aril-boot-config-plugins.mjs +1 -1
- 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 +4 -4
- package/fesm2022/aril-boot-host.mjs.map +1 -1
- package/fesm2022/{aril-boot-mfe-app.component-7IjAmjz0.mjs → aril-boot-mfe-app.component-CCTntpyN.mjs} +5 -5
- package/fesm2022/{aril-boot-mfe-app.component-7IjAmjz0.mjs.map → aril-boot-mfe-app.component-CCTntpyN.mjs.map} +1 -1
- package/fesm2022/{aril-boot-mfe-aril-boot-mfe-KXDpUyv7.mjs → aril-boot-mfe-aril-boot-mfe-D8DZ-gT-.mjs} +4 -4
- package/fesm2022/{aril-boot-mfe-aril-boot-mfe-KXDpUyv7.mjs.map → aril-boot-mfe-aril-boot-mfe-D8DZ-gT-.mjs.map} +1 -1
- package/fesm2022/aril-boot-mfe.mjs +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.map +1 -1
- package/fesm2022/aril-provider.mjs +1 -1
- package/fesm2022/aril-provider.mjs.map +1 -1
- package/fesm2022/aril-theme-layout.mjs +72 -72
- 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 +7 -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-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 +6 -6
- package/fesm2022/aril.mjs.map +1 -1
- package/package.json +210 -210
- 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/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 +12 -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/block/src/block.d.ts +4 -4
- package/util/lib/src/types.d.ts +16 -0
|
@@ -63,13 +63,13 @@ export class RolePickerComponent extends BaseInputComponent {
|
|
|
63
63
|
])
|
|
64
64
|
];
|
|
65
65
|
}
|
|
66
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
67
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.
|
|
66
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RolePickerComponent, deps: [{ token: i1.HttpClient }, { token: i2.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
67
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: RolePickerComponent, isStandalone: true, selector: "aril-role-picker[formControl], aril-role-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 }, baseUrl: { classPropertyName: "baseUrl", publicName: "baseUrl", isSignal: true, isRequired: false, transformFunction: null }, roleEndPointUrl: { classPropertyName: "roleEndPointUrl", publicName: "roleEndPointUrl", isSignal: true, isRequired: false, transformFunction: null }, client: { classPropertyName: "client", publicName: "client", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { SelectionChanged: "SelectionChanged" }, providers: [InputErrorMessagePipe], usesInheritance: true, hostDirectives: [{ directive: i3.ValueAccessorDirective }], ngImport: i0, template: "<p-autoComplete\r\n\t[optionLabel]=\"undefined\"\r\n\t[optionValue]=\"undefined\"\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)=\"completeMethod($event)\"\r\n\t[formControl]=\"ngControl.control\"\r\n\t[autoHighlight]=\"true\"\r\n\t(ngModelChange)=\"ngControl.viewToModelUpdate($event)\"\r\n\r\n\tappendTo=\"body\">\r\n<!--\t<ng-template let-item pTemplate=\"item\">\r\n\t\t<div>\r\n\t\t\t<span>{{ item?.text }}</span>\r\n\t\t</div>\r\n\t</ng-template>\r\n\t-->\r\n</p-autoComplete>\r\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: AutoCompleteModule }, { kind: "component", type: i5.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"] }] }); }
|
|
68
68
|
}
|
|
69
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
69
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RolePickerComponent, decorators: [{
|
|
70
70
|
type: Component,
|
|
71
71
|
args: [{ standalone: true, selector: 'aril-role-picker[formControl], aril-role-picker[formControlName]', imports: [ReactiveFormsModule, AutoCompleteModule], providers: [InputErrorMessagePipe], hostDirectives: [ValueAccessorDirective], template: "<p-autoComplete\r\n\t[optionLabel]=\"undefined\"\r\n\t[optionValue]=\"undefined\"\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)=\"completeMethod($event)\"\r\n\t[formControl]=\"ngControl.control\"\r\n\t[autoHighlight]=\"true\"\r\n\t(ngModelChange)=\"ngControl.viewToModelUpdate($event)\"\r\n\r\n\tappendTo=\"body\">\r\n<!--\t<ng-template let-item pTemplate=\"item\">\r\n\t\t<div>\r\n\t\t\t<span>{{ item?.text }}</span>\r\n\t\t</div>\r\n\t</ng-template>\r\n\t-->\r\n</p-autoComplete>\r\n" }]
|
|
72
72
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.TranslocoService }], propDecorators: { SelectionChanged: [{
|
|
73
73
|
type: Output
|
|
74
74
|
}] } });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS1idXNpbmVzcy9yb2xlUGlja2VyL3NyYy9yb2xlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3VpLWJ1c2luZXNzL3JvbGVQaWNrZXIvc3JjL3JvbGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSTFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdoRyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFVN0MsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGtCQUFrQjtJQWUxRCxZQUFvQixJQUFnQixFQUFVLGdCQUFrQztRQUMvRSxLQUFLLEVBQUUsQ0FBQztRQURXLFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBZGhGLGdCQUFXLEdBQUcsS0FBSyxDQUFTLFVBQVUsQ0FBQyxDQUFDO1FBQ3hDLG1CQUFjLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLGFBQVEsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENB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YUFDdkMsQ0FBQyxxQkFBcUIsQ0FBQyxrQkFDbEIsQ0FBQyxzQkFBc0IsQ0FBQzs4R0FlOUIsZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT3V0cHV0LCBlZmZlY3QsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IEF1dG9Db21wbGV0ZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXV0b2NvbXBsZXRlJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcblxyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgQVBJX0NPTkZJR1MgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwaSc7XHJcbmltcG9ydCB7IEJhc2VJbnB1dENvbXBvbmVudCwgSW5wdXRFcnJvck1lc3NhZ2VQaXBlLCBWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlIH0gZnJvbSAnYXJpbC91aS9saWInO1xyXG5cclxuaW1wb3J0IHsgUm9sZVJlc3BvbnNlRFRPLCBTZWxlY3RCb3hJdGVtLCBTdWdnZXN0aW9uc0RUTyB9IGZyb20gJy4vaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQXBwcyB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvYXBwcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHNlbGVjdG9yOiAnYXJpbC1yb2xlLXBpY2tlcltmb3JtQ29udHJvbF0sIGFyaWwtcm9sZS1waWNrZXJbZm9ybUNvbnRyb2xOYW1lXScsXHJcblx0dGVtcGxhdGVVcmw6ICcuL3JvbGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuXHRpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZSwgQXV0b0NvbXBsZXRlTW9kdWxlXSxcclxuXHRwcm92aWRlcnM6IFtJbnB1dEVycm9yTWVzc2FnZVBpcGVdLFxyXG5cdGhvc3REaXJlY3RpdmVzOiBbVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFJvbGVQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlSW5wdXRDb21wb25lbnQge1xyXG5cdHBsYWNlaG9sZGVyID0gaW5wdXQ8c3RyaW5nPignQXJhbWEuLi4nKTtcclxuXHRmb3JjZVNlbGVjdGlvbiA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRtdWx0aXBsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcblx0ZmlsdGVyZWRTZWxlY3Rpb25JdGVtcyE6IHN0cmluZ1tdO1xyXG5cclxuXHRiYXNlVXJsID0gaW5wdXQ8c3RyaW5nIHwgbnVsbD4oQVBJX0NPTkZJR1MuZ2V0RXh0ZXJuYWxBcHBFbmRwb2ludChBcHBzLk1XKSk7XHJcblx0cm9sZUVuZFBvaW50VXJsID0gaW5wdXQ8c3RyaW5nPignL3VzZXItbWFuYWdlbWVudC9yb2xlcy9ieS1jbGllbnQtcmVmZXJlbmNlLWtleT9jbGllbnRSZWZlcmVuY2VLZXk9Jyk7XHJcblx0Y2xpZW50ID0gaW5wdXQ8c3RyaW5nPigndGhvcicpO1xyXG5cdHJvbGVJdGVtczogYW55ID0gW107XHJcblx0c2VsZWN0aW9uSXRlbXM6IHN0cmluZ1tdID0gW107XHJcblxyXG5cdEBPdXRwdXQoKSBTZWxlY3Rpb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3RCb3hJdGVtPigpO1xyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZSkge1xyXG5cdFx0c3VwZXIoKTtcclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLmNsaWVudCgpKVxyXG5cdFx0XHRcdHRoaXMuZ2V0Um9sZUl0ZW1zKCkudGhlbigocm9sZUl0ZW1zKSA9PiB7XHJcblx0XHRcdFx0XHQvL2NvbnN0IHg6IHN0cmluZ1tdID0gdGhpcy5uZ0NvbnRyb2wudmFsdWU7XHJcbi8vXHJcblx0XHRcdFx0XHQvL2NvbnN0IHk6IHsga2V5OiBzdHJpbmc7IHRleHQ6IHN0cmluZyB9W10gPSByb2xlSXRlbXM7XHJcbi8vXHJcblx0XHRcdFx0XHQvL2NvbnN0IG1hdGNoZWQgPSB5LmZpbHRlcigoaXRlbSkgPT4geC5pbmNsdWRlcyhpdGVtLnRleHQpKTtcclxuLy9cclxuXHRcdFx0XHRcdC8vdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5zZXRWYWx1ZShtYXRjaGVkKTtcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRhc3luYyBnZXRSb2xlSXRlbXMoKSB7XHJcblx0XHR0aGlzLnJvbGVJdGVtcyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxyXG5cdFx0XHR0aGlzLmh0dHAuZ2V0PFJvbGVSZXNwb25zZURUT1tdPih0aGlzLmJhc2VVcmwoKSArIHRoaXMucm9sZUVuZFBvaW50VXJsKCkgKyB0aGlzLmNsaWVudCgpKVxyXG5cdFx0KS50aGVuKChyb2xlSXRlbXMpID0+IHtcclxuXHRcdFx0cm9sZUl0ZW1zLmZvckVhY2goKGl0ZW06IFJvbGVSZXNwb25zZURUTykgPT4ge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0aW9uSXRlbXMucHVzaChcclxuXHRcdFx0XHQgaXRlbS5uYW1lXHJcblx0XHRcdCk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0cmV0dXJuIHRoaXMuc2VsZWN0aW9uSXRlbXM7XHJcblx0fVxyXG5cclxuXHRjb21wbGV0ZU1ldGhvZChldmVudDogYW55KSB7XHJcblx0XHRjb25zdCBxdWVyeSA9IGV2ZW50LnF1ZXJ5O1xyXG5cclxuXHRcdHRoaXMuZmlsdGVyZWRTZWxlY3Rpb25JdGVtcyA9IHRoaXMuZmlsdGVyU2VsZWN0aW9uKHF1ZXJ5LCB0aGlzLnNlbGVjdGlvbkl0ZW1zKTtcclxuXHR9XHJcblxyXG5cdGZpbHRlclNlbGVjdGlvbihxdWVyeTogc3RyaW5nLCBzZWxlY3Rpb25JdGVtczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XHJcblx0XHRjb25zdCBmaWx0ZXJlZDogc3RyaW5nW10gPVxyXG5cdFx0XHR0aGlzLm11bHRpcGxlKCkgPyAoc2VsZWN0aW9uSXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtID09PSBxdWVyeSkgPz8gW10pIDogW107XHJcblxyXG5cdFx0Y29uc3QgbGFuZyA9IHRoaXMudHJhbnNsb2NvU2VydmljZS5nZXRBY3RpdmVMYW5nKCk7XHJcblx0XHRjb25zdCBsb3dlclF1ZXJ5ID0gcXVlcnkudG9Mb2NhbGVMb3dlckNhc2UobGFuZyk7XHJcblx0XHRyZXR1cm4gW1xyXG5cdFx0XHQuLi5uZXcgU2V0KFtcclxuXHRcdFx0XHQuLi5maWx0ZXJlZCxcclxuXHRcdFx0XHQuLi5zZWxlY3Rpb25JdGVtcy5maWx0ZXIoKHNlbGVjdGlvbkl0ZW0pID0+IHtcclxuXHRcdFx0XHRcdHJldHVybiBzZWxlY3Rpb25JdGVtLnRvTG9jYWxlTG93ZXJDYXNlKGxhbmcpLmluZGV4T2YobG93ZXJRdWVyeSkgPT0gMDtcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHRdKVxyXG5cdFx0XTtcclxuXHR9XHJcbn1cclxuIiwiPHAtYXV0b0NvbXBsZXRlXHJcblx0W29wdGlvbkxhYmVsXT1cInVuZGVmaW5lZFwiXHJcblx0W29wdGlvblZhbHVlXT1cInVuZGVmaW5lZFwiXHJcblx0W3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxyXG5cdFttdWx0aXBsZV09XCJtdWx0aXBsZSgpXCJcclxuXHRbZm9yY2VTZWxlY3Rpb25dPVwiZm9yY2VTZWxlY3Rpb24oKVwiXHJcblx0W2RlbGF5XT1cIjQwMFwiXHJcblx0W3N1Z2dlc3Rpb25zXT1cImZpbHRlcmVkU2VsZWN0aW9uSXRlbXNcIlxyXG5cdChjb21wbGV0ZU1ldGhvZCk9XCJjb21wbGV0ZU1ldGhvZCgkZXZlbnQpXCJcclxuXHRbZm9ybUNvbnRyb2xdPVwibmdDb250cm9sLmNvbnRyb2xcIlxyXG5cdFthdXRvSGlnaGxpZ2h0XT1cInRydWVcIlxyXG5cdChuZ01vZGVsQ2hhbmdlKT1cIm5nQ29udHJvbC52aWV3VG9Nb2RlbFVwZGF0ZSgkZXZlbnQpXCJcclxuXHJcblx0YXBwZW5kVG89XCJib2R5XCI+XHJcbjwhLS1cdDxuZy10ZW1wbGF0ZSBsZXQtaXRlbSBwVGVtcGxhdGU9XCJpdGVtXCI+XHJcblx0XHQ8ZGl2PlxyXG5cdFx0XHQ8c3Bhbj57eyBpdGVtPy50ZXh0IH19PC9zcGFuPlxyXG5cdFx0PC9kaXY+XHJcblx0PC9uZy10ZW1wbGF0ZT5cclxuXHQtLT5cclxuPC9wLWF1dG9Db21wbGV0ZT5cclxuIl19
|
|
@@ -15,8 +15,8 @@ export class AppLogService extends RestClient {
|
|
|
15
15
|
getRefValues(req) {
|
|
16
16
|
return new Observable();
|
|
17
17
|
}
|
|
18
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
19
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.
|
|
18
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppLogService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
19
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppLogService, providedIn: 'root' }); }
|
|
20
20
|
}
|
|
21
21
|
__decorate([
|
|
22
22
|
ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, 'application-logs/filter', {}, Apps.MW)
|
|
@@ -24,8 +24,8 @@ __decorate([
|
|
|
24
24
|
__decorate([
|
|
25
25
|
ServiceCall(HTTPMethods.GETBYPARAMS, ProxyTypes.ClientSide, 'application-logs/ref-values', {}, Apps.MW)
|
|
26
26
|
], AppLogService.prototype, "getRefValues", null);
|
|
27
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppLogService, decorators: [{
|
|
28
28
|
type: Injectable,
|
|
29
29
|
args: [{ providedIn: 'root' }]
|
|
30
30
|
}], propDecorators: { searchByTraceId: [], getRefValues: [] } });
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWxvZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS1idXNpbmVzcy90cmFjZS1kcmF3ZXIvc3JjL2FwcC1sb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUF3QyxNQUFNLFdBQVcsQ0FBQzs7QUFLbkgsTUFBTSxPQUFPLGFBQWMsU0FBUSxVQUFVO0lBRDdDOztRQUVVLFdBQU0sR0FBdUMsRUFBRSxDQUFDO0tBV3pEO0lBUkEsZUFBZSxDQUFDLEdBQXdCO1FBQ3ZDLE9BQU8sSUFBSSxVQUFVLEVBQXlDLENBQUM7SUFDaEUsQ0FBQztJQUdELFlBQVksQ0FBQyxHQUF3QjtRQUNwQyxPQUFPLElBQUksVUFBVSxFQUFvQyxDQUFDO0lBQzNELENBQUM7K0dBWFcsYUFBYTttSEFBYixhQUFhLGNBREEsTUFBTTs7QUFLL0I7SUFEQyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsVUFBVSxFQUFFLHlCQUF5QixFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDO29EQUc1RjtBQUdEO0lBREMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLFVBQVUsRUFBRSw2QkFBNkIsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztpREFHdkc7NEZBWFcsYUFBYTtrQkFEekIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OEJBS2pDLGVBQWUsTUFLZixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgQXBwcyB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvYXBwcyc7XHJcbmltcG9ydCB7IEhUVFBNZXRob2RzLCBQcm94eVR5cGVzLCBSZXN0Q2xpZW50LCBTZXJ2aWNlQ2FsbCwgU2VydmljZUNhbGxTdGF0ZU1hcCwgU2VydmljZVJlc3BvbnNlIH0gZnJvbSAnYXJpbC9odHRwJztcclxuXHJcbmltcG9ydCB7IEFwcExvZ1JlZlZhbHVlcywgQXBwTG9nU2VhcmNoUmVxdWVzdCwgQXBwTG9nU2VhcmNoUmVzcG9uc2UgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEFwcExvZ1NlcnZpY2UgZXh0ZW5kcyBSZXN0Q2xpZW50IHtcclxuXHRvdmVycmlkZSBzdGF0ZXM6IFNlcnZpY2VDYWxsU3RhdGVNYXA8QXBwTG9nU2VydmljZT4gPSB7fTtcclxuXHJcblx0QFNlcnZpY2VDYWxsKEhUVFBNZXRob2RzLlBPU1QsIFByb3h5VHlwZXMuQ2xpZW50U2lkZSwgJ2FwcGxpY2F0aW9uLWxvZ3MvZmlsdGVyJywge30sIEFwcHMuTVcpXHJcblx0c2VhcmNoQnlUcmFjZUlkKHJlcTogQXBwTG9nU2VhcmNoUmVxdWVzdCk6IE9ic2VydmFibGU8U2VydmljZVJlc3BvbnNlPEFwcExvZ1NlYXJjaFJlc3BvbnNlPj4ge1xyXG5cdFx0cmV0dXJuIG5ldyBPYnNlcnZhYmxlPFNlcnZpY2VSZXNwb25zZTxBcHBMb2dTZWFyY2hSZXNwb25zZT4+KCk7XHJcblx0fVxyXG5cclxuXHRAU2VydmljZUNhbGwoSFRUUE1ldGhvZHMuR0VUQllQQVJBTVMsIFByb3h5VHlwZXMuQ2xpZW50U2lkZSwgJ2FwcGxpY2F0aW9uLWxvZ3MvcmVmLXZhbHVlcycsIHt9LCBBcHBzLk1XKVxyXG5cdGdldFJlZlZhbHVlcyhyZXE6IHsgdHJhY2VJZDogc3RyaW5nIH0pOiBPYnNlcnZhYmxlPFNlcnZpY2VSZXNwb25zZTxBcHBMb2dSZWZWYWx1ZXM+PiB7XHJcblx0XHRyZXR1cm4gbmV3IE9ic2VydmFibGU8U2VydmljZVJlc3BvbnNlPEFwcExvZ1JlZlZhbHVlcz4+KCk7XHJcblx0fVxyXG59XHJcbiJdfQ==
|
|
@@ -276,13 +276,13 @@ export class TraceDrawerComponent {
|
|
|
276
276
|
return null;
|
|
277
277
|
}
|
|
278
278
|
}
|
|
279
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
280
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: TraceDrawerComponent, isStandalone: true, selector: "aril-trace-drawer", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, traceId: { classPropertyName: "traceId", publicName: "traceId", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, modal: { classPropertyName: "modal", publicName: "modal", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, startTime: { classPropertyName: "startTime", publicName: "startTime", isSignal: true, isRequired: false, transformFunction: null }, endTime: { classPropertyName: "endTime", publicName: "endTime", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibleChange: "visibleChange" }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n\t<p-sidebar\r\n\t\t[visible]=\"visible()\"\r\n\t\t(visibleChange)=\"onVisibleChange($event)\"\r\n\t\t[position]=\"position()\"\r\n\t\t[style]=\"{ width: width() }\"\r\n\t\t[modal]=\"modal()\"\r\n\t\t[dismissible]=\"true\"\r\n\t\t[showCloseIcon]=\"true\"\r\n\t\tstyleClass=\"aril-trace-drawer\">\r\n\t\t<ng-template pTemplate=\"header\">\r\n\t\t\t<div class=\"aril-trace-drawer__header\">\r\n\t\t\t\t<i class=\"pi pi-sitemap\"></i>\r\n\t\t\t\t<span class=\"aril-trace-drawer__title\">{{ t('traceDrawer.title') }}</span>\r\n\t\t\t\t<code class=\"aril-trace-drawer__chip\">{{ traceId() }}</code>\r\n\t\t\t\t<i\r\n\t\t\t\t\trole=\"button\"\r\n\t\t\t\t\tclass=\"pi pi-share-alt aril-trace-drawer__share\"\r\n\t\t\t\t\t[pTooltip]=\"t('traceDrawer.shareLink')\"\r\n\t\t\t\t\ttooltipPosition=\"bottom\"\r\n\t\t\t\t\t(click)=\"shareLink()\"></i>\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\r\n\t\t<div class=\"aril-trace-drawer__body\">\r\n\t\t\t@if (loading()) {\r\n\t\t\t\t<div class=\"aril-trace-drawer__state\">\r\n\t\t\t\t\t<p-progressSpinner strokeWidth=\"3\" styleClass=\"w-3rem h-3rem\"></p-progressSpinner>\r\n\t\t\t\t\t<span>{{ t('traceDrawer.loading') }}</span>\r\n\t\t\t\t</div>\r\n\t\t\t} @else if (errorMessage()) {\r\n\t\t\t\t<div class=\"aril-trace-drawer__state aril-trace-drawer__state--error\">\r\n\t\t\t\t\t<i class=\"pi pi-exclamation-triangle\"></i>\r\n\t\t\t\t\t<p>{{ errorMessage() }}</p>\r\n\t\t\t\t\t<aril-button [label]=\"t('traceDrawer.retry')\" icon=\"REFRESH\" color=\"primary\" (clickEvent)=\"retry()\" />\r\n\t\t\t\t</div>\r\n\t\t\t} @else {\r\n\t\t\t\t@if (refValueEntries().length) {\r\n\t\t\t\t\t<section class=\"aril-trace-drawer__section\">\r\n\t\t\t\t\t\t<h3 class=\"aril-trace-drawer__section-title\">\r\n\t\t\t\t\t\t\t<i class=\"pi pi-tags\"></i>\r\n\t\t\t\t\t\t\t{{ t('traceDrawer.refValuesHeader') }}\r\n\t\t\t\t\t\t\t<aril-badge [value]=\"refValueEntries().length.toString()\" [rounded]=\"true\" />\r\n\t\t\t\t\t\t</h3>\r\n\t\t\t\t\t\t<div class=\"ref-values\">\r\n\t\t\t\t\t\t\t@for (entry of refValueEntries(); track entry[0]) {\r\n\t\t\t\t\t\t\t\t<div class=\"ref-values__row\">\r\n\t\t\t\t\t\t\t\t\t<span class=\"ref-values__key\">{{ entry[0] }}</span>\r\n\t\t\t\t\t\t\t\t\t<div class=\"ref-values__chips\">\r\n\t\t\t\t\t\t\t\t\t\t@for (val of entry[1]; track val) {\r\n\t\t\t\t\t\t\t\t\t\t\t<code class=\"ref-values__chip\">{{ val }}</code>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</section>\r\n\t\t\t\t}\r\n\t\t\t\t@if (apisixHits().length) {\r\n\t\t\t\t\t<section class=\"aril-trace-drawer__section\">\r\n\t\t\t\t\t\t<h3 class=\"aril-trace-drawer__section-title\">\r\n\t\t\t\t\t\t\t<i class=\"pi pi-globe\"></i>\r\n\t\t\t\t\t\t\t{{ t('traceDrawer.apisixHeader') }}\r\n\t\t\t\t\t\t\t<aril-badge [value]=\"apisixHits().length + ' / ' + totalItem()\" [rounded]=\"true\" />\r\n\t\t\t\t\t\t</h3>\r\n\t\t\t\t\t\t@for (hit of apisixHits(); track hit.id) {\r\n\t\t\t\t\t\t\t<details class=\"trace-row trace-row--{{ statusSeverity(hit.status) }}\">\r\n\t\t\t\t\t\t\t\t<summary class=\"trace-row__summary\">\r\n\t\t\t\t\t\t\t\t\t<i class=\"pi pi-chevron-right trace-row__chevron\"></i>\r\n\t\t\t\t\t\t\t\t\t<aril-badge [value]=\"hit.status.toString()\" [severity]=\"statusSeverity(hit.status)\" />\r\n\t\t\t\t\t\t\t\t\t<span class=\"trace-row__tag\">{{ hit.requestMethod }}</span>\r\n\t\t\t\t\t\t\t\t\t<span class=\"trace-row__main\">{{ hit.requestUri }}</span>\r\n\t\t\t\t\t\t\t\t\t<aril-badge\r\n\t\t\t\t\t\t\t\t\t\t[value]=\"formatDuration(hit.responseTime)\"\r\n\t\t\t\t\t\t\t\t\t\t[severity]=\"durationSeverity(hit.responseTime)\" />\r\n\t\t\t\t\t\t\t\t\t@if (hit.timestamp) {\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"trace-row__time\">{{ formatTimestamp(hit.timestamp) }}</span>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\trole=\"button\"\r\n\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-code trace-row__action\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('traceDrawer.copyCurl')\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t(click)=\"$event.preventDefault(); $event.stopPropagation(); copyAsCurl(hit)\"></i>\r\n\t\t\t\t\t\t\t\t</summary>\r\n\t\t\t\t\t\t\t\t<div class=\"trace-row__body\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"trace-row__meta\">\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.routeName) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.route') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ hit.routeName }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.sourceApp || hit.sourceModule) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.source') }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span>{{ hit.sourceApp }}{{ hit.sourceModule ? ' / ' + hit.sourceModule : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.targetApp || hit.targetModule) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.target') }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span>{{ hit.targetApp }}{{ hit.targetModule ? ' / ' + hit.targetModule : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.upstreamHost) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.upstream') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ hit.upstreamHost }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.username) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.user') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ hit.username }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.requestSize !== undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.requestSize') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ formatBytes(hit.requestSize) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.responseSize !== undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.responseSize') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ formatBytes(hit.responseSize) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t@if (hit.requestBody) {\r\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\">\r\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.requestBody') }}</summary>\r\n\t\t\t\t\t\t\t\t\t\t\t@if (tryParseJson(hit.requestBody); as parsed) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ parsed | json }}</pre>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ hit.requestBody }}</pre>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (hit.responseBody) {\r\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\">\r\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.responseBody') }}</summary>\r\n\t\t\t\t\t\t\t\t\t\t\t@if (tryParseJson(hit.responseBody); as parsed) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ parsed | json }}</pre>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ hit.responseBody }}</pre>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@if (hasMore()) {\r\n\t\t\t\t\t\t\t<div class=\"aril-trace-drawer__load-more\">\r\n\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t[label]=\"t('traceDrawer.loadMore')\"\r\n\t\t\t\t\t\t\t\t\ticon=\"CHEVRON_DOWN\"\r\n\t\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\t\t\t[loading]=\"loadingMore()\"\r\n\t\t\t\t\t\t\t\t\t[disabled]=\"loadingMore()\"\r\n\t\t\t\t\t\t\t\t\t(clickEvent)=\"loadMore()\" />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</section>\r\n\t\t\t\t}\r\n\t\t\t\t@if (appLogs().length) {\r\n\t\t\t\t\t<section class=\"aril-trace-drawer__section\">\r\n\t\t\t\t\t\t<h3 class=\"aril-trace-drawer__section-title\">\r\n\t\t\t\t\t\t\t<i class=\"pi pi-list\"></i>\r\n\t\t\t\t\t\t\t{{ t('traceDrawer.appLogsHeader') }}\r\n\t\t\t\t\t\t\t<aril-badge [value]=\"appLogs().length + ' / ' + appLogsTotal()\" [rounded]=\"true\" />\r\n\t\t\t\t\t\t</h3>\r\n\t\t\t\t\t\t@for (log of appLogs(); track log.id) {\r\n\t\t\t\t\t\t\t<details class=\"trace-row trace-row--{{ levelSeverity(log.level) }}\">\r\n\t\t\t\t\t\t\t\t<summary class=\"trace-row__summary\">\r\n\t\t\t\t\t\t\t\t\t<i class=\"pi pi-chevron-right trace-row__chevron\"></i>\r\n\t\t\t\t\t\t\t\t\t@if (log.level) {\r\n\t\t\t\t\t\t\t\t\t\t<aril-badge [value]=\"log.level\" [severity]=\"levelSeverity(log.level)\" />\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (log.module) {\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"trace-row__tag\">{{ log.module }}</span>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t<span class=\"trace-row__main\">{{ log.message }}</span>\r\n\t\t\t\t\t\t\t\t\t@if (log.timestamp) {\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"trace-row__time\">{{ formatTimestamp(log.timestamp) }}</span>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</summary>\r\n\t\t\t\t\t\t\t\t<div class=\"trace-row__body\">\r\n\t\t\t\t\t\t\t\t\t@if (log.message) {\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"trace-row__message\">{{ log.message }}</div>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (log.username || log.app) {\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"trace-row__meta\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if (log.app) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.target') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ log.app }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t@if (log.username) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.user') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ log.username }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (log.errorDetail) {\r\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\" open>\r\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.appLogErrorDetail') }}</summary>\r\n\t\t\t\t\t\t\t\t\t\t\t<pre>{{ log.errorDetail }}</pre>\r\n\t\t\t\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (log.referenceFields?.length) {\r\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\">\r\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.appLogRefFields') }}</summary>\r\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"trace-row__meta\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t@for (rf of log.referenceFields; track rf.field) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ rf.field }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ rf.value }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@if (appLogsHasMore()) {\r\n\t\t\t\t\t\t\t<div class=\"aril-trace-drawer__load-more\">\r\n\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t[label]=\"t('traceDrawer.loadMore')\"\r\n\t\t\t\t\t\t\t\t\ticon=\"CHEVRON_DOWN\"\r\n\t\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\t\t\t[loading]=\"appLogsLoadingMore()\"\r\n\t\t\t\t\t\t\t\t\t[disabled]=\"appLogsLoadingMore()\"\r\n\t\t\t\t\t\t\t\t\t(clickEvent)=\"loadMoreAppLogs()\" />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</section>\r\n\t\t\t\t}\r\n\t\t\t\t@if (!apisixHits().length && !appLogs().length && !refValueEntries().length) {\r\n\t\t\t\t\t<div class=\"aril-trace-drawer__state\">\r\n\t\t\t\t\t\t<i class=\"pi pi-inbox\"></i>\r\n\t\t\t\t\t\t<p>{{ t('traceDrawer.empty') }}</p>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t</div>\r\n\t</p-sidebar>\r\n</ng-container>\r\n", styles: [":host ::ng-deep .aril-trace-drawer{display:flex;flex-direction:column;height:100%}:host ::ng-deep .aril-trace-drawer .p-sidebar-header{padding:1rem 1.25rem;border-bottom:1px solid var(--surface-border, #e5e7eb);flex:0 0 auto}:host ::ng-deep .aril-trace-drawer .p-sidebar-content{padding:0;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden}.aril-trace-drawer__header{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0}.aril-trace-drawer__header .pi-sitemap{font-size:1.25rem;color:var(--primary-color, #1890ff)}.aril-trace-drawer__title{font-weight:600;font-size:1.1rem}.aril-trace-drawer__chip{font-size:.875rem;padding:.2rem .55rem;border-radius:4px;background:var(--surface-100, #f3f4f6);color:var(--text-color-secondary, #6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.aril-trace-drawer__share{cursor:pointer;font-size:1rem;padding:.4rem;border-radius:4px;color:var(--primary-color, #1890ff);transition:background .15s ease}.aril-trace-drawer__share:hover{background:var(--surface-100, #f3f4f6)}.aril-trace-drawer__body{padding:1rem 1.25rem;display:flex;flex-direction:column;gap:1.5rem;min-height:min-content}.aril-trace-drawer__state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:3rem 1rem;color:var(--text-color-secondary, #6b7280);text-align:center;font-size:.95rem}.aril-trace-drawer__state .pi{font-size:2rem}.aril-trace-drawer__state--error .pi{color:var(--red-500, #ef4444)}.aril-trace-drawer__section-title{display:flex;align-items:center;gap:.5rem;margin:0 0 .5rem;font-size:1rem;font-weight:600}.aril-trace-drawer__section-title .pi{color:var(--primary-color, #1890ff)}.trace-row{display:block;border:1px solid var(--surface-border, #e5e7eb);border-left:3px solid var(--surface-border, #e5e7eb);background:var(--surface-card, #ffffff);border-radius:4px;overflow:hidden;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease}.trace-row+.trace-row{margin-top:.4rem}.trace-row:hover{border-top-color:var(--surface-300, #d1d5db);border-right-color:var(--surface-300, #d1d5db);border-bottom-color:var(--surface-300, #d1d5db);box-shadow:0 1px 3px #0000000a}.trace-row[open]{background:var(--surface-50, #fafafa);border-top-color:var(--surface-300, #d1d5db);border-right-color:var(--surface-300, #d1d5db);border-bottom-color:var(--surface-300, #d1d5db);box-shadow:0 1px 4px #0000000d}.trace-row--success{border-left-color:var(--green-500, #22c55e)}.trace-row--info{border-left-color:var(--blue-500, #3b82f6)}.trace-row--warning{border-left-color:var(--orange-500, #f97316)}.trace-row--danger{border-left-color:var(--red-500, #ef4444)}.trace-row--secondary{border-left-color:var(--gray-400, #9ca3af)}.trace-row__summary{cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none;display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem}.trace-row__summary::-webkit-details-marker{display:none}.trace-row__summary:hover{background:var(--surface-50, #fafafa)}.trace-row[open] .trace-row__summary:hover{background:var(--surface-100, #f3f4f6)}.trace-row__chevron{color:var(--text-color-secondary, #6b7280);font-size:.7rem;transition:transform .15s ease;flex-shrink:0}.trace-row[open] .trace-row__chevron{transform:rotate(90deg)}.trace-row__tag{font-weight:600;color:var(--primary-color, #1890ff);font-size:.8rem;white-space:nowrap;flex-shrink:0;letter-spacing:.02em}.trace-row__main{font-size:.85rem;color:var(--text-color, #111827);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.trace-row__time{font-size:.75rem;color:var(--text-color-secondary, #6b7280);font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0}.trace-row__action{cursor:pointer;padding:.25rem;border-radius:4px;color:var(--text-color-secondary, #6b7280);flex-shrink:0;transition:background .15s ease,color .15s ease}.trace-row__action:hover{background:var(--surface-100, #f3f4f6);color:var(--primary-color, #1890ff)}.trace-row__body{padding:.5rem .75rem .75rem;border-top:1px solid var(--surface-border, #e5e7eb);display:flex;flex-direction:column;gap:.5rem;background:var(--surface-0, #ffffff)}.trace-row__message{font-size:.85rem;color:var(--text-color, #111827);line-height:1.5;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;background:var(--surface-100, #f3f4f6);border-radius:4px;padding:.5rem .65rem}.trace-row__meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.25rem .75rem;font-size:.8rem}.trace-row__meta>div{display:grid;grid-template-columns:max-content 1fr;column-gap:.4rem;align-items:baseline;min-width:0}.trace-row__meta .meta-label{color:var(--text-color-secondary, #6b7280);font-weight:500}.trace-row__meta .meta-label:after{content:\":\"}.trace-row__meta span:not(.meta-label){color:var(--text-color, #111827);word-break:break-word}.trace-row__sub{margin:0}.trace-row__sub summary{cursor:pointer;font-size:.8rem;color:var(--primary-color, #1890ff);padding:.15rem 0;-webkit-user-select:none;user-select:none}.trace-row__sub summary:hover{text-decoration:underline}.trace-row__sub pre{margin:.25rem 0 0;padding:.5rem .75rem;background:var(--surface-100, #f3f4f6);border-radius:4px;font-size:.78rem;line-height:1.45;max-height:320px;overflow:auto;white-space:pre-wrap;word-break:break-word}.aril-trace-drawer__load-more{display:flex;justify-content:center;margin-top:.5rem}.ref-values{display:flex;flex-direction:column;gap:.4rem;border:1px solid var(--surface-border, #e5e7eb);border-radius:4px;background:var(--surface-card, #ffffff);padding:.6rem .75rem}.ref-values__row{display:grid;grid-template-columns:minmax(120px,max-content) 1fr;column-gap:.75rem;row-gap:.25rem;align-items:baseline}.ref-values__key{font-size:.8rem;font-weight:600;color:var(--text-color-secondary, #6b7280);letter-spacing:.02em;overflow-wrap:anywhere}.ref-values__key:after{content:\":\"}.ref-values__chips{display:flex;flex-wrap:wrap;gap:.3rem;min-width:0}.ref-values__chip{font-size:.78rem;padding:.15rem .5rem;border-radius:4px;background:var(--surface-100, #f3f4f6);color:var(--text-color, #111827);border:1px solid var(--surface-border, #e5e7eb);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}\n"], dependencies: [{ kind: "pipe", type: JsonPipe, name: "json" }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i1.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i2.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ProgressSpinnerModule }, { kind: "component", type: i4.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: BadgeComponent, selector: "aril-badge", inputs: ["icon", "value", "severity", "rounded", "background", "styleClass", "textColor", "borderColor", "textClampCharacters"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
279
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraceDrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
280
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: TraceDrawerComponent, isStandalone: true, selector: "aril-trace-drawer", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, traceId: { classPropertyName: "traceId", publicName: "traceId", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, modal: { classPropertyName: "modal", publicName: "modal", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, startTime: { classPropertyName: "startTime", publicName: "startTime", isSignal: true, isRequired: false, transformFunction: null }, endTime: { classPropertyName: "endTime", publicName: "endTime", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibleChange: "visibleChange" }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n\t<p-sidebar\r\n\t\t[visible]=\"visible()\"\r\n\t\t(visibleChange)=\"onVisibleChange($event)\"\r\n\t\t[position]=\"position()\"\r\n\t\t[style]=\"{ width: width() }\"\r\n\t\t[modal]=\"modal()\"\r\n\t\t[dismissible]=\"true\"\r\n\t\t[showCloseIcon]=\"true\"\r\n\t\tstyleClass=\"aril-trace-drawer\">\r\n\t\t<ng-template pTemplate=\"header\">\r\n\t\t\t<div class=\"aril-trace-drawer__header\">\r\n\t\t\t\t<i class=\"pi pi-sitemap\"></i>\r\n\t\t\t\t<span class=\"aril-trace-drawer__title\">{{ t('traceDrawer.title') }}</span>\r\n\t\t\t\t<code class=\"aril-trace-drawer__chip\">{{ traceId() }}</code>\r\n\t\t\t\t<i\r\n\t\t\t\t\trole=\"button\"\r\n\t\t\t\t\tclass=\"pi pi-share-alt aril-trace-drawer__share\"\r\n\t\t\t\t\t[pTooltip]=\"t('traceDrawer.shareLink')\"\r\n\t\t\t\t\ttooltipPosition=\"bottom\"\r\n\t\t\t\t\t(click)=\"shareLink()\"></i>\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\r\n\t\t<div class=\"aril-trace-drawer__body\">\r\n\t\t\t@if (loading()) {\r\n\t\t\t\t<div class=\"aril-trace-drawer__state\">\r\n\t\t\t\t\t<p-progressSpinner strokeWidth=\"3\" styleClass=\"w-3rem h-3rem\"></p-progressSpinner>\r\n\t\t\t\t\t<span>{{ t('traceDrawer.loading') }}</span>\r\n\t\t\t\t</div>\r\n\t\t\t} @else if (errorMessage()) {\r\n\t\t\t\t<div class=\"aril-trace-drawer__state aril-trace-drawer__state--error\">\r\n\t\t\t\t\t<i class=\"pi pi-exclamation-triangle\"></i>\r\n\t\t\t\t\t<p>{{ errorMessage() }}</p>\r\n\t\t\t\t\t<aril-button [label]=\"t('traceDrawer.retry')\" icon=\"REFRESH\" color=\"primary\" (clickEvent)=\"retry()\" />\r\n\t\t\t\t</div>\r\n\t\t\t} @else {\r\n\t\t\t\t@if (refValueEntries().length) {\r\n\t\t\t\t\t<section class=\"aril-trace-drawer__section\">\r\n\t\t\t\t\t\t<h3 class=\"aril-trace-drawer__section-title\">\r\n\t\t\t\t\t\t\t<i class=\"pi pi-tags\"></i>\r\n\t\t\t\t\t\t\t{{ t('traceDrawer.refValuesHeader') }}\r\n\t\t\t\t\t\t\t<aril-badge [value]=\"refValueEntries().length.toString()\" [rounded]=\"true\" />\r\n\t\t\t\t\t\t</h3>\r\n\t\t\t\t\t\t<div class=\"ref-values\">\r\n\t\t\t\t\t\t\t@for (entry of refValueEntries(); track entry[0]) {\r\n\t\t\t\t\t\t\t\t<div class=\"ref-values__row\">\r\n\t\t\t\t\t\t\t\t\t<span class=\"ref-values__key\">{{ entry[0] }}</span>\r\n\t\t\t\t\t\t\t\t\t<div class=\"ref-values__chips\">\r\n\t\t\t\t\t\t\t\t\t\t@for (val of entry[1]; track val) {\r\n\t\t\t\t\t\t\t\t\t\t\t<code class=\"ref-values__chip\">{{ val }}</code>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</section>\r\n\t\t\t\t}\r\n\t\t\t\t@if (apisixHits().length) {\r\n\t\t\t\t\t<section class=\"aril-trace-drawer__section\">\r\n\t\t\t\t\t\t<h3 class=\"aril-trace-drawer__section-title\">\r\n\t\t\t\t\t\t\t<i class=\"pi pi-globe\"></i>\r\n\t\t\t\t\t\t\t{{ t('traceDrawer.apisixHeader') }}\r\n\t\t\t\t\t\t\t<aril-badge [value]=\"apisixHits().length + ' / ' + totalItem()\" [rounded]=\"true\" />\r\n\t\t\t\t\t\t</h3>\r\n\t\t\t\t\t\t@for (hit of apisixHits(); track hit.id) {\r\n\t\t\t\t\t\t\t<details class=\"trace-row trace-row--{{ statusSeverity(hit.status) }}\">\r\n\t\t\t\t\t\t\t\t<summary class=\"trace-row__summary\">\r\n\t\t\t\t\t\t\t\t\t<i class=\"pi pi-chevron-right trace-row__chevron\"></i>\r\n\t\t\t\t\t\t\t\t\t<aril-badge [value]=\"hit.status.toString()\" [severity]=\"statusSeverity(hit.status)\" />\r\n\t\t\t\t\t\t\t\t\t<span class=\"trace-row__tag\">{{ hit.requestMethod }}</span>\r\n\t\t\t\t\t\t\t\t\t<span class=\"trace-row__main\">{{ hit.requestUri }}</span>\r\n\t\t\t\t\t\t\t\t\t<aril-badge\r\n\t\t\t\t\t\t\t\t\t\t[value]=\"formatDuration(hit.responseTime)\"\r\n\t\t\t\t\t\t\t\t\t\t[severity]=\"durationSeverity(hit.responseTime)\" />\r\n\t\t\t\t\t\t\t\t\t@if (hit.timestamp) {\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"trace-row__time\">{{ formatTimestamp(hit.timestamp) }}</span>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\trole=\"button\"\r\n\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-code trace-row__action\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('traceDrawer.copyCurl')\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t(click)=\"$event.preventDefault(); $event.stopPropagation(); copyAsCurl(hit)\"></i>\r\n\t\t\t\t\t\t\t\t</summary>\r\n\t\t\t\t\t\t\t\t<div class=\"trace-row__body\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"trace-row__meta\">\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.routeName) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.route') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ hit.routeName }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.sourceApp || hit.sourceModule) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.source') }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span>{{ hit.sourceApp }}{{ hit.sourceModule ? ' / ' + hit.sourceModule : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.targetApp || hit.targetModule) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.target') }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span>{{ hit.targetApp }}{{ hit.targetModule ? ' / ' + hit.targetModule : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.upstreamHost) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.upstream') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ hit.upstreamHost }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.username) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.user') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ hit.username }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.requestSize !== undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.requestSize') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ formatBytes(hit.requestSize) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.responseSize !== undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.responseSize') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ formatBytes(hit.responseSize) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t@if (hit.requestBody) {\r\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\">\r\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.requestBody') }}</summary>\r\n\t\t\t\t\t\t\t\t\t\t\t@if (tryParseJson(hit.requestBody); as parsed) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ parsed | json }}</pre>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ hit.requestBody }}</pre>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (hit.responseBody) {\r\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\">\r\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.responseBody') }}</summary>\r\n\t\t\t\t\t\t\t\t\t\t\t@if (tryParseJson(hit.responseBody); as parsed) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ parsed | json }}</pre>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ hit.responseBody }}</pre>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@if (hasMore()) {\r\n\t\t\t\t\t\t\t<div class=\"aril-trace-drawer__load-more\">\r\n\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t[label]=\"t('traceDrawer.loadMore')\"\r\n\t\t\t\t\t\t\t\t\ticon=\"CHEVRON_DOWN\"\r\n\t\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\t\t\t[loading]=\"loadingMore()\"\r\n\t\t\t\t\t\t\t\t\t[disabled]=\"loadingMore()\"\r\n\t\t\t\t\t\t\t\t\t(clickEvent)=\"loadMore()\" />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</section>\r\n\t\t\t\t}\r\n\t\t\t\t@if (appLogs().length) {\r\n\t\t\t\t\t<section class=\"aril-trace-drawer__section\">\r\n\t\t\t\t\t\t<h3 class=\"aril-trace-drawer__section-title\">\r\n\t\t\t\t\t\t\t<i class=\"pi pi-list\"></i>\r\n\t\t\t\t\t\t\t{{ t('traceDrawer.appLogsHeader') }}\r\n\t\t\t\t\t\t\t<aril-badge [value]=\"appLogs().length + ' / ' + appLogsTotal()\" [rounded]=\"true\" />\r\n\t\t\t\t\t\t</h3>\r\n\t\t\t\t\t\t@for (log of appLogs(); track log.id) {\r\n\t\t\t\t\t\t\t<details class=\"trace-row trace-row--{{ levelSeverity(log.level) }}\">\r\n\t\t\t\t\t\t\t\t<summary class=\"trace-row__summary\">\r\n\t\t\t\t\t\t\t\t\t<i class=\"pi pi-chevron-right trace-row__chevron\"></i>\r\n\t\t\t\t\t\t\t\t\t@if (log.level) {\r\n\t\t\t\t\t\t\t\t\t\t<aril-badge [value]=\"log.level\" [severity]=\"levelSeverity(log.level)\" />\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (log.module) {\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"trace-row__tag\">{{ log.module }}</span>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t<span class=\"trace-row__main\">{{ log.message }}</span>\r\n\t\t\t\t\t\t\t\t\t@if (log.timestamp) {\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"trace-row__time\">{{ formatTimestamp(log.timestamp) }}</span>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</summary>\r\n\t\t\t\t\t\t\t\t<div class=\"trace-row__body\">\r\n\t\t\t\t\t\t\t\t\t@if (log.message) {\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"trace-row__message\">{{ log.message }}</div>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (log.username || log.app) {\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"trace-row__meta\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if (log.app) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.target') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ log.app }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t@if (log.username) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.user') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ log.username }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (log.errorDetail) {\r\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\" open>\r\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.appLogErrorDetail') }}</summary>\r\n\t\t\t\t\t\t\t\t\t\t\t<pre>{{ log.errorDetail }}</pre>\r\n\t\t\t\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (log.referenceFields?.length) {\r\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\">\r\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.appLogRefFields') }}</summary>\r\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"trace-row__meta\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t@for (rf of log.referenceFields; track rf.field) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ rf.field }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ rf.value }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@if (appLogsHasMore()) {\r\n\t\t\t\t\t\t\t<div class=\"aril-trace-drawer__load-more\">\r\n\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t[label]=\"t('traceDrawer.loadMore')\"\r\n\t\t\t\t\t\t\t\t\ticon=\"CHEVRON_DOWN\"\r\n\t\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\t\t\t[loading]=\"appLogsLoadingMore()\"\r\n\t\t\t\t\t\t\t\t\t[disabled]=\"appLogsLoadingMore()\"\r\n\t\t\t\t\t\t\t\t\t(clickEvent)=\"loadMoreAppLogs()\" />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</section>\r\n\t\t\t\t}\r\n\t\t\t\t@if (!apisixHits().length && !appLogs().length && !refValueEntries().length) {\r\n\t\t\t\t\t<div class=\"aril-trace-drawer__state\">\r\n\t\t\t\t\t\t<i class=\"pi pi-inbox\"></i>\r\n\t\t\t\t\t\t<p>{{ t('traceDrawer.empty') }}</p>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t</div>\r\n\t</p-sidebar>\r\n</ng-container>\r\n", styles: [":host ::ng-deep .aril-trace-drawer{display:flex;flex-direction:column;height:100%}:host ::ng-deep .aril-trace-drawer .p-sidebar-header{padding:1rem 1.25rem;border-bottom:1px solid var(--surface-border, #e5e7eb);flex:0 0 auto}:host ::ng-deep .aril-trace-drawer .p-sidebar-content{padding:0;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden}.aril-trace-drawer__header{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0}.aril-trace-drawer__header .pi-sitemap{font-size:1.25rem;color:var(--primary-color, #1890ff)}.aril-trace-drawer__title{font-weight:600;font-size:1.1rem}.aril-trace-drawer__chip{font-size:.875rem;padding:.2rem .55rem;border-radius:4px;background:var(--surface-100, #f3f4f6);color:var(--text-color-secondary, #6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.aril-trace-drawer__share{cursor:pointer;font-size:1rem;padding:.4rem;border-radius:4px;color:var(--primary-color, #1890ff);transition:background .15s ease}.aril-trace-drawer__share:hover{background:var(--surface-100, #f3f4f6)}.aril-trace-drawer__body{padding:1rem 1.25rem;display:flex;flex-direction:column;gap:1.5rem;min-height:min-content}.aril-trace-drawer__state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:3rem 1rem;color:var(--text-color-secondary, #6b7280);text-align:center;font-size:.95rem}.aril-trace-drawer__state .pi{font-size:2rem}.aril-trace-drawer__state--error .pi{color:var(--red-500, #ef4444)}.aril-trace-drawer__section-title{display:flex;align-items:center;gap:.5rem;margin:0 0 .5rem;font-size:1rem;font-weight:600}.aril-trace-drawer__section-title .pi{color:var(--primary-color, #1890ff)}.trace-row{display:block;border:1px solid var(--surface-border, #e5e7eb);border-left:3px solid var(--surface-border, #e5e7eb);background:var(--surface-card, #ffffff);border-radius:4px;overflow:hidden;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease}.trace-row+.trace-row{margin-top:.4rem}.trace-row:hover{border-top-color:var(--surface-300, #d1d5db);border-right-color:var(--surface-300, #d1d5db);border-bottom-color:var(--surface-300, #d1d5db);box-shadow:0 1px 3px #0000000a}.trace-row[open]{background:var(--surface-50, #fafafa);border-top-color:var(--surface-300, #d1d5db);border-right-color:var(--surface-300, #d1d5db);border-bottom-color:var(--surface-300, #d1d5db);box-shadow:0 1px 4px #0000000d}.trace-row--success{border-left-color:var(--green-500, #22c55e)}.trace-row--info{border-left-color:var(--blue-500, #3b82f6)}.trace-row--warning{border-left-color:var(--orange-500, #f97316)}.trace-row--danger{border-left-color:var(--red-500, #ef4444)}.trace-row--secondary{border-left-color:var(--gray-400, #9ca3af)}.trace-row__summary{cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none;display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem}.trace-row__summary::-webkit-details-marker{display:none}.trace-row__summary:hover{background:var(--surface-50, #fafafa)}.trace-row[open] .trace-row__summary:hover{background:var(--surface-100, #f3f4f6)}.trace-row__chevron{color:var(--text-color-secondary, #6b7280);font-size:.7rem;transition:transform .15s ease;flex-shrink:0}.trace-row[open] .trace-row__chevron{transform:rotate(90deg)}.trace-row__tag{font-weight:600;color:var(--primary-color, #1890ff);font-size:.8rem;white-space:nowrap;flex-shrink:0;letter-spacing:.02em}.trace-row__main{font-size:.85rem;color:var(--text-color, #111827);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.trace-row__time{font-size:.75rem;color:var(--text-color-secondary, #6b7280);font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0}.trace-row__action{cursor:pointer;padding:.25rem;border-radius:4px;color:var(--text-color-secondary, #6b7280);flex-shrink:0;transition:background .15s ease,color .15s ease}.trace-row__action:hover{background:var(--surface-100, #f3f4f6);color:var(--primary-color, #1890ff)}.trace-row__body{padding:.5rem .75rem .75rem;border-top:1px solid var(--surface-border, #e5e7eb);display:flex;flex-direction:column;gap:.5rem;background:var(--surface-0, #ffffff)}.trace-row__message{font-size:.85rem;color:var(--text-color, #111827);line-height:1.5;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;background:var(--surface-100, #f3f4f6);border-radius:4px;padding:.5rem .65rem}.trace-row__meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.25rem .75rem;font-size:.8rem}.trace-row__meta>div{display:grid;grid-template-columns:max-content 1fr;column-gap:.4rem;align-items:baseline;min-width:0}.trace-row__meta .meta-label{color:var(--text-color-secondary, #6b7280);font-weight:500}.trace-row__meta .meta-label:after{content:\":\"}.trace-row__meta span:not(.meta-label){color:var(--text-color, #111827);word-break:break-word}.trace-row__sub{margin:0}.trace-row__sub summary{cursor:pointer;font-size:.8rem;color:var(--primary-color, #1890ff);padding:.15rem 0;-webkit-user-select:none;user-select:none}.trace-row__sub summary:hover{text-decoration:underline}.trace-row__sub pre{margin:.25rem 0 0;padding:.5rem .75rem;background:var(--surface-100, #f3f4f6);border-radius:4px;font-size:.78rem;line-height:1.45;max-height:320px;overflow:auto;white-space:pre-wrap;word-break:break-word}.aril-trace-drawer__load-more{display:flex;justify-content:center;margin-top:.5rem}.ref-values{display:flex;flex-direction:column;gap:.4rem;border:1px solid var(--surface-border, #e5e7eb);border-radius:4px;background:var(--surface-card, #ffffff);padding:.6rem .75rem}.ref-values__row{display:grid;grid-template-columns:minmax(120px,max-content) 1fr;column-gap:.75rem;row-gap:.25rem;align-items:baseline}.ref-values__key{font-size:.8rem;font-weight:600;color:var(--text-color-secondary, #6b7280);letter-spacing:.02em;overflow-wrap:anywhere}.ref-values__key:after{content:\":\"}.ref-values__chips{display:flex;flex-wrap:wrap;gap:.3rem;min-width:0}.ref-values__chip{font-size:.78rem;padding:.15rem .5rem;border-radius:4px;background:var(--surface-100, #f3f4f6);color:var(--text-color, #111827);border:1px solid var(--surface-border, #e5e7eb);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}\n"], dependencies: [{ kind: "pipe", type: JsonPipe, name: "json" }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i1.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i2.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ProgressSpinnerModule }, { kind: "component", type: i4.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: BadgeComponent, selector: "aril-badge", inputs: ["icon", "value", "severity", "rounded", "background", "styleClass", "textColor", "borderColor", "textClampCharacters"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
281
281
|
}
|
|
282
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
282
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraceDrawerComponent, decorators: [{
|
|
283
283
|
type: Component,
|
|
284
284
|
args: [{ standalone: true, selector: 'aril-trace-drawer', imports: [JsonPipe, TranslocoModule, SidebarModule, ProgressSpinnerModule, TooltipModule, BadgeComponent, ButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *transloco=\"let t\">\r\n\t<p-sidebar\r\n\t\t[visible]=\"visible()\"\r\n\t\t(visibleChange)=\"onVisibleChange($event)\"\r\n\t\t[position]=\"position()\"\r\n\t\t[style]=\"{ width: width() }\"\r\n\t\t[modal]=\"modal()\"\r\n\t\t[dismissible]=\"true\"\r\n\t\t[showCloseIcon]=\"true\"\r\n\t\tstyleClass=\"aril-trace-drawer\">\r\n\t\t<ng-template pTemplate=\"header\">\r\n\t\t\t<div class=\"aril-trace-drawer__header\">\r\n\t\t\t\t<i class=\"pi pi-sitemap\"></i>\r\n\t\t\t\t<span class=\"aril-trace-drawer__title\">{{ t('traceDrawer.title') }}</span>\r\n\t\t\t\t<code class=\"aril-trace-drawer__chip\">{{ traceId() }}</code>\r\n\t\t\t\t<i\r\n\t\t\t\t\trole=\"button\"\r\n\t\t\t\t\tclass=\"pi pi-share-alt aril-trace-drawer__share\"\r\n\t\t\t\t\t[pTooltip]=\"t('traceDrawer.shareLink')\"\r\n\t\t\t\t\ttooltipPosition=\"bottom\"\r\n\t\t\t\t\t(click)=\"shareLink()\"></i>\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\r\n\t\t<div class=\"aril-trace-drawer__body\">\r\n\t\t\t@if (loading()) {\r\n\t\t\t\t<div class=\"aril-trace-drawer__state\">\r\n\t\t\t\t\t<p-progressSpinner strokeWidth=\"3\" styleClass=\"w-3rem h-3rem\"></p-progressSpinner>\r\n\t\t\t\t\t<span>{{ t('traceDrawer.loading') }}</span>\r\n\t\t\t\t</div>\r\n\t\t\t} @else if (errorMessage()) {\r\n\t\t\t\t<div class=\"aril-trace-drawer__state aril-trace-drawer__state--error\">\r\n\t\t\t\t\t<i class=\"pi pi-exclamation-triangle\"></i>\r\n\t\t\t\t\t<p>{{ errorMessage() }}</p>\r\n\t\t\t\t\t<aril-button [label]=\"t('traceDrawer.retry')\" icon=\"REFRESH\" color=\"primary\" (clickEvent)=\"retry()\" />\r\n\t\t\t\t</div>\r\n\t\t\t} @else {\r\n\t\t\t\t@if (refValueEntries().length) {\r\n\t\t\t\t\t<section class=\"aril-trace-drawer__section\">\r\n\t\t\t\t\t\t<h3 class=\"aril-trace-drawer__section-title\">\r\n\t\t\t\t\t\t\t<i class=\"pi pi-tags\"></i>\r\n\t\t\t\t\t\t\t{{ t('traceDrawer.refValuesHeader') }}\r\n\t\t\t\t\t\t\t<aril-badge [value]=\"refValueEntries().length.toString()\" [rounded]=\"true\" />\r\n\t\t\t\t\t\t</h3>\r\n\t\t\t\t\t\t<div class=\"ref-values\">\r\n\t\t\t\t\t\t\t@for (entry of refValueEntries(); track entry[0]) {\r\n\t\t\t\t\t\t\t\t<div class=\"ref-values__row\">\r\n\t\t\t\t\t\t\t\t\t<span class=\"ref-values__key\">{{ entry[0] }}</span>\r\n\t\t\t\t\t\t\t\t\t<div class=\"ref-values__chips\">\r\n\t\t\t\t\t\t\t\t\t\t@for (val of entry[1]; track val) {\r\n\t\t\t\t\t\t\t\t\t\t\t<code class=\"ref-values__chip\">{{ val }}</code>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</section>\r\n\t\t\t\t}\r\n\t\t\t\t@if (apisixHits().length) {\r\n\t\t\t\t\t<section class=\"aril-trace-drawer__section\">\r\n\t\t\t\t\t\t<h3 class=\"aril-trace-drawer__section-title\">\r\n\t\t\t\t\t\t\t<i class=\"pi pi-globe\"></i>\r\n\t\t\t\t\t\t\t{{ t('traceDrawer.apisixHeader') }}\r\n\t\t\t\t\t\t\t<aril-badge [value]=\"apisixHits().length + ' / ' + totalItem()\" [rounded]=\"true\" />\r\n\t\t\t\t\t\t</h3>\r\n\t\t\t\t\t\t@for (hit of apisixHits(); track hit.id) {\r\n\t\t\t\t\t\t\t<details class=\"trace-row trace-row--{{ statusSeverity(hit.status) }}\">\r\n\t\t\t\t\t\t\t\t<summary class=\"trace-row__summary\">\r\n\t\t\t\t\t\t\t\t\t<i class=\"pi pi-chevron-right trace-row__chevron\"></i>\r\n\t\t\t\t\t\t\t\t\t<aril-badge [value]=\"hit.status.toString()\" [severity]=\"statusSeverity(hit.status)\" />\r\n\t\t\t\t\t\t\t\t\t<span class=\"trace-row__tag\">{{ hit.requestMethod }}</span>\r\n\t\t\t\t\t\t\t\t\t<span class=\"trace-row__main\">{{ hit.requestUri }}</span>\r\n\t\t\t\t\t\t\t\t\t<aril-badge\r\n\t\t\t\t\t\t\t\t\t\t[value]=\"formatDuration(hit.responseTime)\"\r\n\t\t\t\t\t\t\t\t\t\t[severity]=\"durationSeverity(hit.responseTime)\" />\r\n\t\t\t\t\t\t\t\t\t@if (hit.timestamp) {\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"trace-row__time\">{{ formatTimestamp(hit.timestamp) }}</span>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\trole=\"button\"\r\n\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-code trace-row__action\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('traceDrawer.copyCurl')\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t(click)=\"$event.preventDefault(); $event.stopPropagation(); copyAsCurl(hit)\"></i>\r\n\t\t\t\t\t\t\t\t</summary>\r\n\t\t\t\t\t\t\t\t<div class=\"trace-row__body\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"trace-row__meta\">\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.routeName) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.route') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ hit.routeName }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.sourceApp || hit.sourceModule) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.source') }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span>{{ hit.sourceApp }}{{ hit.sourceModule ? ' / ' + hit.sourceModule : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.targetApp || hit.targetModule) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.target') }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span>{{ hit.targetApp }}{{ hit.targetModule ? ' / ' + hit.targetModule : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.upstreamHost) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.upstream') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ hit.upstreamHost }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.username) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.user') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ hit.username }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.requestSize !== undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.requestSize') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ formatBytes(hit.requestSize) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (hit.responseSize !== undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.responseSize') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ formatBytes(hit.responseSize) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t@if (hit.requestBody) {\r\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\">\r\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.requestBody') }}</summary>\r\n\t\t\t\t\t\t\t\t\t\t\t@if (tryParseJson(hit.requestBody); as parsed) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ parsed | json }}</pre>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ hit.requestBody }}</pre>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (hit.responseBody) {\r\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\">\r\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.responseBody') }}</summary>\r\n\t\t\t\t\t\t\t\t\t\t\t@if (tryParseJson(hit.responseBody); as parsed) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ parsed | json }}</pre>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<pre>{{ hit.responseBody }}</pre>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@if (hasMore()) {\r\n\t\t\t\t\t\t\t<div class=\"aril-trace-drawer__load-more\">\r\n\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t[label]=\"t('traceDrawer.loadMore')\"\r\n\t\t\t\t\t\t\t\t\ticon=\"CHEVRON_DOWN\"\r\n\t\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\t\t\t[loading]=\"loadingMore()\"\r\n\t\t\t\t\t\t\t\t\t[disabled]=\"loadingMore()\"\r\n\t\t\t\t\t\t\t\t\t(clickEvent)=\"loadMore()\" />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</section>\r\n\t\t\t\t}\r\n\t\t\t\t@if (appLogs().length) {\r\n\t\t\t\t\t<section class=\"aril-trace-drawer__section\">\r\n\t\t\t\t\t\t<h3 class=\"aril-trace-drawer__section-title\">\r\n\t\t\t\t\t\t\t<i class=\"pi pi-list\"></i>\r\n\t\t\t\t\t\t\t{{ t('traceDrawer.appLogsHeader') }}\r\n\t\t\t\t\t\t\t<aril-badge [value]=\"appLogs().length + ' / ' + appLogsTotal()\" [rounded]=\"true\" />\r\n\t\t\t\t\t\t</h3>\r\n\t\t\t\t\t\t@for (log of appLogs(); track log.id) {\r\n\t\t\t\t\t\t\t<details class=\"trace-row trace-row--{{ levelSeverity(log.level) }}\">\r\n\t\t\t\t\t\t\t\t<summary class=\"trace-row__summary\">\r\n\t\t\t\t\t\t\t\t\t<i class=\"pi pi-chevron-right trace-row__chevron\"></i>\r\n\t\t\t\t\t\t\t\t\t@if (log.level) {\r\n\t\t\t\t\t\t\t\t\t\t<aril-badge [value]=\"log.level\" [severity]=\"levelSeverity(log.level)\" />\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (log.module) {\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"trace-row__tag\">{{ log.module }}</span>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t<span class=\"trace-row__main\">{{ log.message }}</span>\r\n\t\t\t\t\t\t\t\t\t@if (log.timestamp) {\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"trace-row__time\">{{ formatTimestamp(log.timestamp) }}</span>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</summary>\r\n\t\t\t\t\t\t\t\t<div class=\"trace-row__body\">\r\n\t\t\t\t\t\t\t\t\t@if (log.message) {\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"trace-row__message\">{{ log.message }}</div>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (log.username || log.app) {\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"trace-row__meta\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if (log.app) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.target') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ log.app }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t@if (log.username) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ t('traceDrawer.user') }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ log.username }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (log.errorDetail) {\r\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\" open>\r\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.appLogErrorDetail') }}</summary>\r\n\t\t\t\t\t\t\t\t\t\t\t<pre>{{ log.errorDetail }}</pre>\r\n\t\t\t\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (log.referenceFields?.length) {\r\n\t\t\t\t\t\t\t\t\t\t<details class=\"trace-row__sub\">\r\n\t\t\t\t\t\t\t\t\t\t\t<summary>{{ t('traceDrawer.appLogRefFields') }}</summary>\r\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"trace-row__meta\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t@for (rf of log.referenceFields; track rf.field) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"meta-label\">{{ rf.field }}</span\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t><span>{{ rf.value }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</details>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@if (appLogsHasMore()) {\r\n\t\t\t\t\t\t\t<div class=\"aril-trace-drawer__load-more\">\r\n\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t[label]=\"t('traceDrawer.loadMore')\"\r\n\t\t\t\t\t\t\t\t\ticon=\"CHEVRON_DOWN\"\r\n\t\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\t\t\t[loading]=\"appLogsLoadingMore()\"\r\n\t\t\t\t\t\t\t\t\t[disabled]=\"appLogsLoadingMore()\"\r\n\t\t\t\t\t\t\t\t\t(clickEvent)=\"loadMoreAppLogs()\" />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</section>\r\n\t\t\t\t}\r\n\t\t\t\t@if (!apisixHits().length && !appLogs().length && !refValueEntries().length) {\r\n\t\t\t\t\t<div class=\"aril-trace-drawer__state\">\r\n\t\t\t\t\t\t<i class=\"pi pi-inbox\"></i>\r\n\t\t\t\t\t\t<p>{{ t('traceDrawer.empty') }}</p>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t</div>\r\n\t</p-sidebar>\r\n</ng-container>\r\n", styles: [":host ::ng-deep .aril-trace-drawer{display:flex;flex-direction:column;height:100%}:host ::ng-deep .aril-trace-drawer .p-sidebar-header{padding:1rem 1.25rem;border-bottom:1px solid var(--surface-border, #e5e7eb);flex:0 0 auto}:host ::ng-deep .aril-trace-drawer .p-sidebar-content{padding:0;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden}.aril-trace-drawer__header{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0}.aril-trace-drawer__header .pi-sitemap{font-size:1.25rem;color:var(--primary-color, #1890ff)}.aril-trace-drawer__title{font-weight:600;font-size:1.1rem}.aril-trace-drawer__chip{font-size:.875rem;padding:.2rem .55rem;border-radius:4px;background:var(--surface-100, #f3f4f6);color:var(--text-color-secondary, #6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.aril-trace-drawer__share{cursor:pointer;font-size:1rem;padding:.4rem;border-radius:4px;color:var(--primary-color, #1890ff);transition:background .15s ease}.aril-trace-drawer__share:hover{background:var(--surface-100, #f3f4f6)}.aril-trace-drawer__body{padding:1rem 1.25rem;display:flex;flex-direction:column;gap:1.5rem;min-height:min-content}.aril-trace-drawer__state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:3rem 1rem;color:var(--text-color-secondary, #6b7280);text-align:center;font-size:.95rem}.aril-trace-drawer__state .pi{font-size:2rem}.aril-trace-drawer__state--error .pi{color:var(--red-500, #ef4444)}.aril-trace-drawer__section-title{display:flex;align-items:center;gap:.5rem;margin:0 0 .5rem;font-size:1rem;font-weight:600}.aril-trace-drawer__section-title .pi{color:var(--primary-color, #1890ff)}.trace-row{display:block;border:1px solid var(--surface-border, #e5e7eb);border-left:3px solid var(--surface-border, #e5e7eb);background:var(--surface-card, #ffffff);border-radius:4px;overflow:hidden;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease}.trace-row+.trace-row{margin-top:.4rem}.trace-row:hover{border-top-color:var(--surface-300, #d1d5db);border-right-color:var(--surface-300, #d1d5db);border-bottom-color:var(--surface-300, #d1d5db);box-shadow:0 1px 3px #0000000a}.trace-row[open]{background:var(--surface-50, #fafafa);border-top-color:var(--surface-300, #d1d5db);border-right-color:var(--surface-300, #d1d5db);border-bottom-color:var(--surface-300, #d1d5db);box-shadow:0 1px 4px #0000000d}.trace-row--success{border-left-color:var(--green-500, #22c55e)}.trace-row--info{border-left-color:var(--blue-500, #3b82f6)}.trace-row--warning{border-left-color:var(--orange-500, #f97316)}.trace-row--danger{border-left-color:var(--red-500, #ef4444)}.trace-row--secondary{border-left-color:var(--gray-400, #9ca3af)}.trace-row__summary{cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none;display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem}.trace-row__summary::-webkit-details-marker{display:none}.trace-row__summary:hover{background:var(--surface-50, #fafafa)}.trace-row[open] .trace-row__summary:hover{background:var(--surface-100, #f3f4f6)}.trace-row__chevron{color:var(--text-color-secondary, #6b7280);font-size:.7rem;transition:transform .15s ease;flex-shrink:0}.trace-row[open] .trace-row__chevron{transform:rotate(90deg)}.trace-row__tag{font-weight:600;color:var(--primary-color, #1890ff);font-size:.8rem;white-space:nowrap;flex-shrink:0;letter-spacing:.02em}.trace-row__main{font-size:.85rem;color:var(--text-color, #111827);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.trace-row__time{font-size:.75rem;color:var(--text-color-secondary, #6b7280);font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0}.trace-row__action{cursor:pointer;padding:.25rem;border-radius:4px;color:var(--text-color-secondary, #6b7280);flex-shrink:0;transition:background .15s ease,color .15s ease}.trace-row__action:hover{background:var(--surface-100, #f3f4f6);color:var(--primary-color, #1890ff)}.trace-row__body{padding:.5rem .75rem .75rem;border-top:1px solid var(--surface-border, #e5e7eb);display:flex;flex-direction:column;gap:.5rem;background:var(--surface-0, #ffffff)}.trace-row__message{font-size:.85rem;color:var(--text-color, #111827);line-height:1.5;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;background:var(--surface-100, #f3f4f6);border-radius:4px;padding:.5rem .65rem}.trace-row__meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.25rem .75rem;font-size:.8rem}.trace-row__meta>div{display:grid;grid-template-columns:max-content 1fr;column-gap:.4rem;align-items:baseline;min-width:0}.trace-row__meta .meta-label{color:var(--text-color-secondary, #6b7280);font-weight:500}.trace-row__meta .meta-label:after{content:\":\"}.trace-row__meta span:not(.meta-label){color:var(--text-color, #111827);word-break:break-word}.trace-row__sub{margin:0}.trace-row__sub summary{cursor:pointer;font-size:.8rem;color:var(--primary-color, #1890ff);padding:.15rem 0;-webkit-user-select:none;user-select:none}.trace-row__sub summary:hover{text-decoration:underline}.trace-row__sub pre{margin:.25rem 0 0;padding:.5rem .75rem;background:var(--surface-100, #f3f4f6);border-radius:4px;font-size:.78rem;line-height:1.45;max-height:320px;overflow:auto;white-space:pre-wrap;word-break:break-word}.aril-trace-drawer__load-more{display:flex;justify-content:center;margin-top:.5rem}.ref-values{display:flex;flex-direction:column;gap:.4rem;border:1px solid var(--surface-border, #e5e7eb);border-radius:4px;background:var(--surface-card, #ffffff);padding:.6rem .75rem}.ref-values__row{display:grid;grid-template-columns:minmax(120px,max-content) 1fr;column-gap:.75rem;row-gap:.25rem;align-items:baseline}.ref-values__key{font-size:.8rem;font-weight:600;color:var(--text-color-secondary, #6b7280);letter-spacing:.02em;overflow-wrap:anywhere}.ref-values__key:after{content:\":\"}.ref-values__chips{display:flex;flex-wrap:wrap;gap:.3rem;min-width:0}.ref-values__chip{font-size:.78rem;padding:.15rem .5rem;border-radius:4px;background:var(--surface-100, #f3f4f6);color:var(--text-color, #111827);border:1px solid var(--surface-border, #e5e7eb);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}\n"] }]
|
|
285
285
|
}], ctorParameters: () => [], propDecorators: { visibleChange: [{
|
|
286
286
|
type: Output
|
|
287
287
|
}] } });
|
|
288
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2UtZHJhd2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWktYnVzaW5lc3MvdHJhY2UtZHJhd2VyL3NyYy90cmFjZS1kcmF3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS1idXNpbmVzcy90cmFjZS1kcmF3ZXIvc3JjL3RyYWNlLWRyYXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEksT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXRELE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxN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YSxtZEFBRSxxQkFBcUIsd01BQUUsYUFBYSxzWEFBRSxjQUFjLHdMQUFFLGVBQWU7OzJGQUc3RyxvQkFBb0I7a0JBUmhDLFNBQVM7aUNBQ0csSUFBSSxZQUNOLG1CQUFtQixXQUdwQixDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsZUFBZSxDQUFDLG1CQUN6Ryx1QkFBdUIsQ0FBQyxNQUFNO3dEQWtCckMsYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEpzb25QaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuXHJcbmltcG9ydCB7IEVNUFRZLCBTdWJqZWN0LCBjYXRjaEVycm9yLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgUHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9wcm9ncmVzc3NwaW5uZXInO1xyXG5pbXBvcnQgeyBTaWRlYmFyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9zaWRlYmFyJztcclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xvY29Nb2R1bGUsIFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcbmltcG9ydCB7IEtleWNsb2FrU2VydmljZSB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuXHJcbmltcG9ydCB7IEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnYXJpbC91aS9iYWRnZSc7XHJcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvYnV0dG9uJztcclxuaW1wb3J0ICdhcmlsL3V0aWwvcHJpbWl0aXZlLWV4dGVuc2lvbnMnO1xyXG5cclxuaW1wb3J0IHsgQXBwTG9nU2VydmljZSB9IGZyb20gJy4vYXBwLWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBpc2l4SGl0LCBBcHBMb2dJdGVtLCBBcHBMb2dSZWZWYWx1ZXMgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBUcmFjZUxvZ1NlcnZpY2UgfSBmcm9tICcuL3RyYWNlLWxvZy5zZXJ2aWNlJztcclxuXHJcbnR5cGUgUG9zaXRpb24gPSAncmlnaHQnIHwgJ2xlZnQnO1xyXG50eXBlIFNldmVyaXR5ID0gJ3N1Y2Nlc3MnIHwgJ3NlY29uZGFyeScgfCAnaW5mbycgfCAnd2FybmluZycgfCAnZGFuZ2VyJyB8ICdjb250cmFzdCcgfCB1bmRlZmluZWQ7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHNlbGVjdG9yOiAnYXJpbC10cmFjZS1kcmF3ZXInLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi90cmFjZS1kcmF3ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL3RyYWNlLWRyYXdlci5jb21wb25lbnQuc2NzcyddLFxyXG5cdGltcG9ydHM6IFtKc29uUGlwZSwgVHJhbnNsb2NvTW9kdWxlLCBTaWRlYmFyTW9kdWxlLCBQcm9ncmVzc1NwaW5uZXJNb2R1bGUsIFRvb2x0aXBNb2R1bGUsIEJhZGdlQ29tcG9uZW50LCBCdXR0b25Db21wb25lbnRdLFxyXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmFjZURyYXdlckNvbXBvbmVudCB7XHJcblx0cHJpdmF0ZSByZWFkb25seSB0cmFjZUxvZ1NlcnZpY2UgPSBpbmplY3QoVHJhY2VMb2dTZXJ2aWNlKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IGFwcExvZ1NlcnZpY2UgPSBpbmplY3QoQXBwTG9nU2VydmljZSk7XHJcblx0cHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZSA9IGluamVjdChNZXNzYWdlU2VydmljZSk7XHJcblx0cHJpdmF0ZSByZWFkb25seSB0cmFuc2xvY29TZXJ2aWNlID0gaW5qZWN0KFRyYW5zbG9jb1NlcnZpY2UpO1xyXG5cdHByaXZhdGUgcmVhZG9ubHkga2V5Y2xvYWtTZXJ2aWNlID0gaW5qZWN0KEtleWNsb2FrU2VydmljZSk7XHJcblxyXG5cdHZpc2libGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0dHJhY2VJZCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcclxuXHRwb3NpdGlvbiA9IGlucHV0PFBvc2l0aW9uPigncmlnaHQnKTtcclxuXHR3aWR0aCA9IGlucHV0PHN0cmluZz4oJ21pbig2ODBweCwgOTB2dyknKTtcclxuXHRtb2RhbCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRwYWdlU2l6ZSA9IGlucHV0PG51bWJlcj4oMTApO1xyXG5cdHN0YXJ0VGltZSA9IGlucHV0PG51bWJlciB8IHVuZGVmaW5lZD4oKTtcclxuXHRlbmRUaW1lID0gaW5wdXQ8bnVtYmVyIHwgdW5kZWZpbmVkPigpO1xyXG5cclxuXHRAT3V0cHV0KCkgdmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcblx0cHJvdGVjdGVkIHJlYWRvbmx5IGxvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xyXG5cdHByb3RlY3RlZCByZWFkb25seSBsb2FkaW5nTW9yZSA9IHNpZ25hbChmYWxzZSk7XHJcblx0cHJvdGVjdGVkIHJlYWRvbmx5IGVycm9yTWVzc2FnZSA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcblx0cHJvdGVjdGVkIHJlYWRvbmx5IGFwaXNpeEhpdHMgPSBzaWduYWw8QXBpc2l4SGl0W10+KFtdKTtcclxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgdG90YWxJdGVtID0gc2lnbmFsKDApO1xyXG5cdHByb3RlY3RlZCByZWFkb25seSBwYWdlTnVtYmVyID0gc2lnbmFsKDEpO1xyXG5cclxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwTG9ncyA9IHNpZ25hbDxBcHBMb2dJdGVtW10+KFtdKTtcclxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwTG9nc0xvYWRpbmdNb3JlID0gc2lnbmFsKGZhbHNlKTtcclxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwTG9nc1RvdGFsID0gc2lnbmFsKDApO1xyXG5cdHByb3RlY3RlZCByZWFkb25seSBhcHBMb2dzUGFnZSA9IHNpZ25hbCgxKTtcclxuXHJcblx0cHJvdGVjdGVkIHJlYWRvbmx5IHJlZlZhbHVlcyA9IHNpZ25hbDxBcHBMb2dSZWZWYWx1ZXM+KHt9KTtcclxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgcmVmVmFsdWVFbnRyaWVzID0gY29tcHV0ZWQoKCkgPT5cclxuXHRcdE9iamVjdC5lbnRyaWVzKHRoaXMucmVmVmFsdWVzKCkpLmZpbHRlcigoWywgdmFsdWVzXSkgPT4gdmFsdWVzPy5sZW5ndGgpXHJcblx0KTtcclxuXHJcblx0cHJvdGVjdGVkIHJlYWRvbmx5IGhhc01vcmUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFwaXNpeEhpdHMoKS5sZW5ndGggPCB0aGlzLnRvdGFsSXRlbSgpKTtcclxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwTG9nc0hhc01vcmUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFwcExvZ3MoKS5sZW5ndGggPCB0aGlzLmFwcExvZ3NUb3RhbCgpKTtcclxuXHJcblx0cHJpdmF0ZSByZWFkb25seSByZXF1ZXN0ID0gbmV3IFN1YmplY3Q8eyB0cmFjZUlkOiBzdHJpbmc7IHBhZ2VOdW1iZXI6IG51bWJlcjsgYXBwZW5kOiBib29sZWFuIH0+KCk7XHJcblx0cHJpdmF0ZSByZWFkb25seSBhcHBMb2dzUmVxdWVzdCA9IG5ldyBTdWJqZWN0PHsgdHJhY2VJZDogc3RyaW5nOyBwYWdlTnVtYmVyOiBudW1iZXI7IGFwcGVuZDogYm9vbGVhbiB9PigpO1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgcmVmVmFsdWVzUmVxdWVzdCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IHJlc3BvbnNlID0gdG9TaWduYWwoXHJcblx0XHR0aGlzLnJlcXVlc3QucGlwZShcclxuXHRcdFx0c3dpdGNoTWFwKChyZXEpID0+XHJcblx0XHRcdFx0dGhpcy50cmFjZUxvZ1NlcnZpY2VcclxuXHRcdFx0XHRcdC5zZWFyY2hCeVRyYWNlSWQoe1xyXG5cdFx0XHRcdFx0XHR0cmFjZUlkOiByZXEudHJhY2VJZCxcclxuXHRcdFx0XHRcdFx0c3RhcnRUaW1lOiB0aGlzLnN0YXJ0VGltZSgpID8/IDIwMDAwMTAxMDAwMDAwLFxyXG5cdFx0XHRcdFx0XHRlbmRUaW1lOiB0aGlzLmVuZFRpbWUoKSA/PyAobmV3IERhdGUoKS5kYXRlVG9Mb25nKCd0aW1lJykgPz8gOTk5OTEyMzEyMzU5NTkpLFxyXG5cdFx0XHRcdFx0XHRwYWdlcjogeyBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSgpLCBwYWdlTnVtYmVyOiByZXEucGFnZU51bWJlciB9XHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0XHRcdG1hcCgocmVzcCkgPT4gKHsgcmVzcCwgYXBwZW5kOiByZXEuYXBwZW5kIH0pKSxcclxuXHRcdFx0XHRcdFx0Y2F0Y2hFcnJvcigoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5lcnJvck1lc3NhZ2Uuc2V0KGVycj8uZXJyb3I/Lm1lc3NhZ2UgPz8gZXJyPy5tZXNzYWdlID8/ICfEsHN0ZWsgYmHFn2FyxLFzxLF6IG9sZHUnKTtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmxvYWRpbmdNb3JlLnNldChmYWxzZSk7XHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuIEVNUFRZO1xyXG5cdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0KVxyXG5cdFx0XHQpXHJcblx0XHQpXHJcblx0KTtcclxuXHJcblx0cHJpdmF0ZSByZWFkb25seSBhcHBMb2dzUmVzcG9uc2UgPSB0b1NpZ25hbChcclxuXHRcdHRoaXMuYXBwTG9nc1JlcXVlc3QucGlwZShcclxuXHRcdFx0c3dpdGNoTWFwKChyZXEpID0+XHJcblx0XHRcdFx0dGhpcy5hcHBMb2dTZXJ2aWNlXHJcblx0XHRcdFx0XHQuc2VhcmNoQnlUcmFjZUlkKHtcclxuXHRcdFx0XHRcdFx0dHJhY2VJZDogcmVxLnRyYWNlSWQsXHJcblx0XHRcdFx0XHRcdHN0YXJ0VGltZTogdGhpcy5zdGFydFRpbWUoKSA/PyAyMDAwMDEwMTAwMDAwMCxcclxuXHRcdFx0XHRcdFx0ZW5kVGltZTogdGhpcy5lbmRUaW1lKCkgPz8gKG5ldyBEYXRlKCkuZGF0ZVRvTG9uZygndGltZScpID8/IDk5OTkxMjMxMjM1OTU5KSxcclxuXHRcdFx0XHRcdFx0cGFnZXI6IHsgcGFnZVNpemU6IHRoaXMucGFnZVNpemUoKSwgcGFnZU51bWJlcjogcmVxLnBhZ2VOdW1iZXIgfVxyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdC5waXBlKFxyXG5cdFx0XHRcdFx0XHRtYXAoKHJlc3ApID0+ICh7IHJlc3AsIGFwcGVuZDogcmVxLmFwcGVuZCB9KSksXHJcblx0XHRcdFx0XHRcdGNhdGNoRXJyb3IoKCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuYXBwTG9nc0xvYWRpbmdNb3JlLnNldChmYWxzZSk7XHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuIEVNUFRZO1xyXG5cdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0KVxyXG5cdFx0XHQpXHJcblx0XHQpXHJcblx0KTtcclxuXHJcblx0cHJpdmF0ZSByZWFkb25seSByZWZWYWx1ZXNSZXNwb25zZSA9IHRvU2lnbmFsKFxyXG5cdFx0dGhpcy5yZWZWYWx1ZXNSZXF1ZXN0LnBpcGUoXHJcblx0XHRcdHN3aXRjaE1hcCgodHJhY2VJZCkgPT5cclxuXHRcdFx0XHR0aGlzLmFwcExvZ1NlcnZpY2UuZ2V0UmVmVmFsdWVzKHsgdHJhY2VJZCB9KS5waXBlKFxyXG5cdFx0XHRcdFx0Y2F0Y2hFcnJvcigoKSA9PiBFTVBUWSlcclxuXHRcdFx0XHQpXHJcblx0XHRcdClcclxuXHRcdClcclxuXHQpO1xyXG5cclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdGVmZmVjdChcclxuXHRcdFx0KCkgPT4ge1xyXG5cdFx0XHRcdGlmICh0aGlzLnZpc2libGUoKSAmJiB0aGlzLnRyYWNlSWQoKSkge1xyXG5cdFx0XHRcdFx0dGhpcy5mZXRjaCh0aGlzLnRyYWNlSWQoKSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cclxuXHRcdCk7XHJcblxyXG5cdFx0ZWZmZWN0KFxyXG5cdFx0XHQoKSA9PiB7XHJcblx0XHRcdFx0Y29uc3Qgd3JhcHBlZCA9IHRoaXMucmVzcG9uc2UoKTtcclxuXHRcdFx0XHRpZiAoIXdyYXBwZWQpIHJldHVybjtcclxuXHRcdFx0XHRjb25zdCByZXN1bHQgPSB3cmFwcGVkLnJlc3AucmVzcG9uc2U/LnJlc3VsdCA/PyBbXTtcclxuXHRcdFx0XHRjb25zdCB0b3RhbCA9IHdyYXBwZWQucmVzcC5yZXNwb25zZT8ucmVzdWx0SW5mbz8udG90YWxJdGVtID8/IDA7XHJcblx0XHRcdFx0dGhpcy5hcGlzaXhIaXRzLnVwZGF0ZSgocHJldikgPT4gKHdyYXBwZWQuYXBwZW5kID8gWy4uLnByZXYsIC4uLnJlc3VsdF0gOiByZXN1bHQpKTtcclxuXHRcdFx0XHR0aGlzLnRvdGFsSXRlbS5zZXQodG90YWwpO1xyXG5cdFx0XHRcdHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xyXG5cdFx0XHRcdHRoaXMubG9hZGluZ01vcmUuc2V0KGZhbHNlKTtcclxuXHRcdFx0XHR0aGlzLmVycm9yTWVzc2FnZS5zZXQodW5kZWZpbmVkKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XHJcblx0XHQpO1xyXG5cclxuXHRcdGVmZmVjdChcclxuXHRcdFx0KCkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IHdyYXBwZWQgPSB0aGlzLmFwcExvZ3NSZXNwb25zZSgpO1xyXG5cdFx0XHRcdGlmICghd3JhcHBlZCkgcmV0dXJuO1xyXG5cdFx0XHRcdGNvbnN0IHJlc3VsdCA9IHdyYXBwZWQucmVzcC5yZXNwb25zZT8ucmVzdWx0ID8/IFtdO1xyXG5cdFx0XHRcdGNvbnN0IHRvdGFsID0gd3JhcHBlZC5yZXNwLnJlc3BvbnNlPy5yZXN1bHRJbmZvPy50b3RhbEl0ZW0gPz8gMDtcclxuXHRcdFx0XHR0aGlzLmFwcExvZ3MudXBkYXRlKChwcmV2KSA9PiAod3JhcHBlZC5hcHBlbmQgPyBbLi4ucHJldiwgLi4ucmVzdWx0XSA6IHJlc3VsdCkpO1xyXG5cdFx0XHRcdHRoaXMuYXBwTG9nc1RvdGFsLnNldCh0b3RhbCk7XHJcblx0XHRcdFx0dGhpcy5hcHBMb2dzTG9hZGluZ01vcmUuc2V0KGZhbHNlKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XHJcblx0XHQpO1xyXG5cclxuXHRcdGVmZmVjdChcclxuXHRcdFx0KCkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IHdyYXBwZWQgPSB0aGlzLnJlZlZhbHVlc1Jlc3BvbnNlKCk7XHJcblx0XHRcdFx0aWYgKCF3cmFwcGVkKSByZXR1cm47XHJcblx0XHRcdFx0dGhpcy5yZWZWYWx1ZXMuc2V0KHdyYXBwZWQucmVzcG9uc2UgPz8ge30pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgbG9hZE1vcmUoKTogdm9pZCB7XHJcblx0XHRjb25zdCBpZCA9IHRoaXMudHJhY2VJZCgpO1xyXG5cdFx0aWYgKCFpZCB8fCB0aGlzLmxvYWRpbmdNb3JlKCkgfHwgIXRoaXMuaGFzTW9yZSgpKSByZXR1cm47XHJcblx0XHRjb25zdCBuZXh0ID0gdGhpcy5wYWdlTnVtYmVyKCkgKyAxO1xyXG5cdFx0dGhpcy5wYWdlTnVtYmVyLnNldChuZXh0KTtcclxuXHRcdHRoaXMubG9hZGluZ01vcmUuc2V0KHRydWUpO1xyXG5cdFx0dGhpcy5yZXF1ZXN0Lm5leHQoeyB0cmFjZUlkOiBpZCwgcGFnZU51bWJlcjogbmV4dCwgYXBwZW5kOiB0cnVlIH0pO1xyXG5cdH1cclxuXHJcblx0cHJvdGVjdGVkIGxvYWRNb3JlQXBwTG9ncygpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGlkID0gdGhpcy50cmFjZUlkKCk7XHJcblx0XHRpZiAoIWlkIHx8IHRoaXMuYXBwTG9nc0xvYWRpbmdNb3JlKCkgfHwgIXRoaXMuYXBwTG9nc0hhc01vcmUoKSkgcmV0dXJuO1xyXG5cdFx0Y29uc3QgbmV4dCA9IHRoaXMuYXBwTG9nc1BhZ2UoKSArIDE7XHJcblx0XHR0aGlzLmFwcExvZ3NQYWdlLnNldChuZXh0KTtcclxuXHRcdHRoaXMuYXBwTG9nc0xvYWRpbmdNb3JlLnNldCh0cnVlKTtcclxuXHRcdHRoaXMuYXBwTG9nc1JlcXVlc3QubmV4dCh7IHRyYWNlSWQ6IGlkLCBwYWdlTnVtYmVyOiBuZXh0LCBhcHBlbmQ6IHRydWUgfSk7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgb25WaXNpYmxlQ2hhbmdlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XHJcblx0XHR0aGlzLnZpc2libGVDaGFuZ2UuZW1pdCh2YWx1ZSk7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgcmV0cnkoKTogdm9pZCB7XHJcblx0XHRjb25zdCBpZCA9IHRoaXMudHJhY2VJZCgpO1xyXG5cdFx0aWYgKGlkKSB0aGlzLmZldGNoKGlkKTtcclxuXHR9XHJcblxyXG5cdHByb3RlY3RlZCBzaGFyZUxpbmsoKTogdm9pZCB7XHJcblx0XHRjb25zdCBpZCA9IHRoaXMudHJhY2VJZCgpO1xyXG5cdFx0aWYgKCFpZCkgcmV0dXJuO1xyXG5cdFx0Y29uc3QgYmFzZSA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCc/JylbMF07XHJcblx0XHRjb25zdCB1cmwgPSBgJHtiYXNlfT90cmFjZUlkPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGlkKX1gO1xyXG5cdFx0bmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodXJsKS50aGVuKCgpID0+IHtcclxuXHRcdFx0dGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG5cdFx0XHRcdHNldmVyaXR5OiAnc3VjY2VzcycsXHJcblx0XHRcdFx0c3VtbWFyeTogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgndHJhY2VEcmF3ZXIubGlua0NvcGllZCcpLFxyXG5cdFx0XHRcdGtleTogJ3RvYXN0LXJvb3QnXHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgYXN5bmMgY29weUFzQ3VybChoaXQ6IEFwaXNpeEhpdCk6IFByb21pc2U8dm9pZD4ge1xyXG5cdFx0Y29uc3QgdG9rZW4gPSBhd2FpdCB0aGlzLmtleWNsb2FrU2VydmljZS5nZXRUb2tlbigpLmNhdGNoKCgpID0+ICcnKTtcclxuXHRcdGNvbnN0IGNtZCA9IHRoaXMuYnVpbGRDdXJsKGhpdCwgdG9rZW4pO1xyXG5cdFx0YXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoY21kKTtcclxuXHRcdHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuXHRcdFx0c2V2ZXJpdHk6ICdzdWNjZXNzJyxcclxuXHRcdFx0c3VtbWFyeTogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgndHJhY2VEcmF3ZXIuY3VybENvcGllZCcpLFxyXG5cdFx0XHRrZXk6ICd0b2FzdC1yb290J1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGJ1aWxkQ3VybChoaXQ6IEFwaXNpeEhpdCwgdG9rZW46IHN0cmluZyk6IHN0cmluZyB7XHJcblx0XHRjb25zdCBtZXRob2QgPSAoaGl0LnJlcXVlc3RNZXRob2QgPz8gJ0dFVCcpLnRvVXBwZXJDYXNlKCk7XHJcblx0XHRjb25zdCBob3N0ID0gaGl0LnVwc3RyZWFtSG9zdCA/IGhpdC51cHN0cmVhbUhvc3QucmVwbGFjZSgvXFwvKyQvLCAnJykgOiAnJztcclxuXHRcdGNvbnN0IHVyaSA9IGhpdC5yZXF1ZXN0VXJpID8/ICcnO1xyXG5cdFx0Y29uc3QgdXJsID0gaG9zdCA/IChob3N0LnN0YXJ0c1dpdGgoJ2h0dHAnKSA/IGAke2hvc3R9JHt1cml9YCA6IGBodHRwczovLyR7aG9zdH0ke3VyaX1gKSA6IHVyaTtcclxuXHRcdGNvbnN0IGVzY2FwZSA9IChzOiBzdHJpbmcpID0+IHMucmVwbGFjZSgvJy9nLCBgJ1xcXFwnJ2ApO1xyXG5cdFx0Y29uc3QgbGluZXMgPSBbYGN1cmwgLVggJHttZXRob2R9ICcke2VzY2FwZSh1cmwpfSdgXTtcclxuXHRcdGlmICh0b2tlbikgbGluZXMucHVzaChgLUggJ0F1dGhvcml6YXRpb246IEJlYXJlciAke2VzY2FwZSh0b2tlbil9J2ApO1xyXG5cdFx0Y29uc3QgYm9keSA9IGhpdC5yZXF1ZXN0Qm9keT8udHJpbSgpO1xyXG5cdFx0aWYgKGJvZHkpIHtcclxuXHRcdFx0Y29uc3QgaXNKc29uID0gKGJvZHkuc3RhcnRzV2l0aCgneycpICYmIGJvZHkuZW5kc1dpdGgoJ30nKSkgfHwgKGJvZHkuc3RhcnRzV2l0aCgnWycpICYmIGJvZHkuZW5kc1dpdGgoJ10nKSk7XHJcblx0XHRcdGlmIChpc0pzb24pIGxpbmVzLnB1c2goYC1IICdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24nYCk7XHJcblx0XHRcdGxpbmVzLnB1c2goYC1kICcke2VzY2FwZShib2R5KX0nYCk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbGluZXMuam9pbignIFxcXFxcXG4gICcpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBmZXRjaCh0cmFjZUlkOiBzdHJpbmcpOiB2b2lkIHtcclxuXHRcdHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XHJcblx0XHR0aGlzLmVycm9yTWVzc2FnZS5zZXQodW5kZWZpbmVkKTtcclxuXHRcdHRoaXMuYXBpc2l4SGl0cy5zZXQoW10pO1xyXG5cdFx0dGhpcy50b3RhbEl0ZW0uc2V0KDApO1xyXG5cdFx0dGhpcy5wYWdlTnVtYmVyLnNldCgxKTtcclxuXHRcdHRoaXMuYXBwTG9ncy5zZXQoW10pO1xyXG5cdFx0dGhpcy5hcHBMb2dzVG90YWwuc2V0KDApO1xyXG5cdFx0dGhpcy5hcHBMb2dzUGFnZS5zZXQoMSk7XHJcblx0XHR0aGlzLnJlZlZhbHVlcy5zZXQoe30pO1xyXG5cdFx0dGhpcy5yZXF1ZXN0Lm5leHQoeyB0cmFjZUlkLCBwYWdlTnVtYmVyOiAxLCBhcHBlbmQ6IGZhbHNlIH0pO1xyXG5cdFx0dGhpcy5hcHBMb2dzUmVxdWVzdC5uZXh0KHsgdHJhY2VJZCwgcGFnZU51bWJlcjogMSwgYXBwZW5kOiBmYWxzZSB9KTtcclxuXHRcdHRoaXMucmVmVmFsdWVzUmVxdWVzdC5uZXh0KHRyYWNlSWQpO1xyXG5cdH1cclxuXHJcblx0cHJvdGVjdGVkIHN0YXR1c1NldmVyaXR5KHN0YXR1czogbnVtYmVyKTogU2V2ZXJpdHkge1xyXG5cdFx0aWYgKHN0YXR1cyA+PSA1MDApIHJldHVybiAnZGFuZ2VyJztcclxuXHRcdGlmIChzdGF0dXMgPj0gNDAwKSByZXR1cm4gJ3dhcm5pbmcnO1xyXG5cdFx0aWYgKHN0YXR1cyA+PSAzMDApIHJldHVybiAnaW5mbyc7XHJcblx0XHRpZiAoc3RhdHVzID49IDIwMCkgcmV0dXJuICdzdWNjZXNzJztcclxuXHRcdHJldHVybiAnc2Vjb25kYXJ5JztcclxuXHR9XHJcblxyXG5cdHByb3RlY3RlZCBsZXZlbFNldmVyaXR5KGxldmVsOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBTZXZlcml0eSB7XHJcblx0XHRzd2l0Y2ggKChsZXZlbCA/PyAnJykudG9VcHBlckNhc2UoKSkge1xyXG5cdFx0XHRjYXNlICdFUlJPUic6XHJcblx0XHRcdGNhc2UgJ0ZBVEFMJzpcclxuXHRcdFx0XHRyZXR1cm4gJ2Rhbmdlcic7XHJcblx0XHRcdGNhc2UgJ1dBUk4nOlxyXG5cdFx0XHRjYXNlICdXQVJOSU5HJzpcclxuXHRcdFx0XHRyZXR1cm4gJ3dhcm5pbmcnO1xyXG5cdFx0XHRjYXNlICdJTkZPJzpcclxuXHRcdFx0XHRyZXR1cm4gJ2luZm8nO1xyXG5cdFx0XHRjYXNlICdERUJVRyc6XHJcblx0XHRcdGNhc2UgJ1RSQUNFJzpcclxuXHRcdFx0XHRyZXR1cm4gJ3NlY29uZGFyeSc7XHJcblx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0cmV0dXJuICdzZWNvbmRhcnknO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJvdGVjdGVkIGR1cmF0aW9uU2V2ZXJpdHkoc2Vjb25kczogbnVtYmVyKTogU2V2ZXJpdHkge1xyXG5cdFx0Y29uc3QgbXMgPSAoc2Vjb25kcyA/PyAwKSAqIDEwMDA7XHJcblx0XHRpZiAobXMgPj0gMTAwMCkgcmV0dXJuICdkYW5nZXInO1xyXG5cdFx0aWYgKG1zID49IDIwMCkgcmV0dXJuICd3YXJuaW5nJztcclxuXHRcdHJldHVybiAnc3VjY2Vzcyc7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgZm9ybWF0RHVyYXRpb24oc2Vjb25kczogbnVtYmVyIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcclxuXHRcdGlmIChzZWNvbmRzID09PSB1bmRlZmluZWQgfHwgc2Vjb25kcyA9PT0gbnVsbCkgcmV0dXJuICcnO1xyXG5cdFx0Y29uc3QgbXMgPSBzZWNvbmRzICogMTAwMDtcclxuXHRcdGlmIChtcyA8IDEpIHJldHVybiBgJHttcy50b0ZpeGVkKDIpfSBtc2A7XHJcblx0XHRpZiAobXMgPCAxMDAwKSByZXR1cm4gYCR7TWF0aC5yb3VuZChtcyl9IG1zYDtcclxuXHRcdHJldHVybiBgJHsobXMgLyAxMDAwKS50b0ZpeGVkKDIpfSBzYDtcclxuXHR9XHJcblxyXG5cdHByb3RlY3RlZCBmb3JtYXRCeXRlcyhieXRlczogbnVtYmVyIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcclxuXHRcdGlmIChieXRlcyA9PT0gdW5kZWZpbmVkIHx8IGJ5dGVzID09PSBudWxsKSByZXR1cm4gJy0nO1xyXG5cdFx0aWYgKGJ5dGVzIDwgMTAyNCkgcmV0dXJuIGAke2J5dGVzfSBCYDtcclxuXHRcdGlmIChieXRlcyA8IDEwMjQgKiAxMDI0KSByZXR1cm4gYCR7KGJ5dGVzIC8gMTAyNCkudG9GaXhlZCgxKX0gS0JgO1xyXG5cdFx0cmV0dXJuIGAkeyhieXRlcyAvICgxMDI0ICogMTAyNCkpLnRvRml4ZWQoMSl9IE1CYDtcclxuXHR9XHJcblxyXG5cdHByb3RlY3RlZCBmb3JtYXRUaW1lc3RhbXAodHM6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcblx0XHRpZiAodHMgPT09IHVuZGVmaW5lZCB8fCB0cyA9PT0gbnVsbCB8fCB0cyA9PT0gJycpIHJldHVybiAnJztcclxuXHRcdGlmICh0eXBlb2YgdHMgPT09ICdzdHJpbmcnKSByZXR1cm4gdHM7XHJcblx0XHRjb25zdCBzID0gU3RyaW5nKHRzKTtcclxuXHRcdGlmIChzLmxlbmd0aCA9PT0gMTQpIHtcclxuXHRcdFx0cmV0dXJuIGAke3Muc2xpY2UoOCwgMTApfToke3Muc2xpY2UoMTAsIDEyKX06JHtzLnNsaWNlKDEyLCAxNCl9ICR7cy5zbGljZSg2LCA4KX0uJHtzLnNsaWNlKDQsIDYpfS4ke3Muc2xpY2UoMCwgNCl9YDtcclxuXHRcdH1cclxuXHRcdGlmICh0cyA+IDFlMTEpIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBEYXRlKHRzKS50b0xvY2FsZVN0cmluZygpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHM7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgdHJ5UGFyc2VKc29uKGNvbnRlbnQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHVua25vd24ge1xyXG5cdFx0aWYgKCFjb250ZW50KSByZXR1cm4gbnVsbDtcclxuXHRcdGNvbnN0IHRyaW1tZWQgPSBjb250ZW50LnRyaW0oKTtcclxuXHRcdGlmICghKCh0cmltbWVkLnN0YXJ0c1dpdGgoJ3snKSAmJiB0cmltbWVkLmVuZHNXaXRoKCd9JykpIHx8ICh0cmltbWVkLnN0YXJ0c1dpdGgoJ1snKSAmJiB0cmltbWVkLmVuZHNXaXRoKCddJykpKSkge1xyXG5cdFx0XHRyZXR1cm4gbnVsbDtcclxuXHRcdH1cclxuXHRcdHRyeSB7XHJcblx0XHRcdHJldHVybiBKU09OLnBhcnNlKHRyaW1tZWQpO1xyXG5cdFx0fSBjYXRjaCB7XHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICp0cmFuc2xvY289XCJsZXQgdFwiPlxyXG5cdDxwLXNpZGViYXJcclxuXHRcdFt2aXNpYmxlXT1cInZpc2libGUoKVwiXHJcblx0XHQodmlzaWJsZUNoYW5nZSk9XCJvblZpc2libGVDaGFuZ2UoJGV2ZW50KVwiXHJcblx0XHRbcG9zaXRpb25dPVwicG9zaXRpb24oKVwiXHJcblx0XHRbc3R5bGVdPVwieyB3aWR0aDogd2lkdGgoKSB9XCJcclxuXHRcdFttb2RhbF09XCJtb2RhbCgpXCJcclxuXHRcdFtkaXNtaXNzaWJsZV09XCJ0cnVlXCJcclxuXHRcdFtzaG93Q2xvc2VJY29uXT1cInRydWVcIlxyXG5cdFx0c3R5bGVDbGFzcz1cImFyaWwtdHJhY2UtZHJhd2VyXCI+XHJcblx0XHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlcl9faGVhZGVyXCI+XHJcblx0XHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1zaXRlbWFwXCI+PC9pPlxyXG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwiYXJpbC10cmFjZS1kcmF3ZXJfX3RpdGxlXCI+e3sgdCgndHJhY2VEcmF3ZXIudGl0bGUnKSB9fTwvc3Bhbj5cclxuXHRcdFx0XHQ8Y29kZSBjbGFzcz1cImFyaWwtdHJhY2UtZHJhd2VyX19jaGlwXCI+e3sgdHJhY2VJZCgpIH19PC9jb2RlPlxyXG5cdFx0XHRcdDxpXHJcblx0XHRcdFx0XHRyb2xlPVwiYnV0dG9uXCJcclxuXHRcdFx0XHRcdGNsYXNzPVwicGkgcGktc2hhcmUtYWx0IGFyaWwtdHJhY2UtZHJhd2VyX19zaGFyZVwiXHJcblx0XHRcdFx0XHRbcFRvb2x0aXBdPVwidCgndHJhY2VEcmF3ZXIuc2hhcmVMaW5rJylcIlxyXG5cdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCJcclxuXHRcdFx0XHRcdChjbGljayk9XCJzaGFyZUxpbmsoKVwiPjwvaT5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cclxuXHRcdDxkaXYgY2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlcl9fYm9keVwiPlxyXG5cdFx0XHRAaWYgKGxvYWRpbmcoKSkge1xyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlcl9fc3RhdGVcIj5cclxuXHRcdFx0XHRcdDxwLXByb2dyZXNzU3Bpbm5lciBzdHJva2VXaWR0aD1cIjNcIiBzdHlsZUNsYXNzPVwidy0zcmVtIGgtM3JlbVwiPjwvcC1wcm9ncmVzc1NwaW5uZXI+XHJcblx0XHRcdFx0XHQ8c3Bhbj57eyB0KCd0cmFjZURyYXdlci5sb2FkaW5nJykgfX08L3NwYW4+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdH0gQGVsc2UgaWYgKGVycm9yTWVzc2FnZSgpKSB7XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImFyaWwtdHJhY2UtZHJhd2VyX19zdGF0ZSBhcmlsLXRyYWNlLWRyYXdlcl9fc3RhdGUtLWVycm9yXCI+XHJcblx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCI+PC9pPlxyXG5cdFx0XHRcdFx0PHA+e3sgZXJyb3JNZXNzYWdlKCkgfX08L3A+XHJcblx0XHRcdFx0XHQ8YXJpbC1idXR0b24gW2xhYmVsXT1cInQoJ3RyYWNlRHJhd2VyLnJldHJ5JylcIiBpY29uPVwiUkVGUkVTSFwiIGNvbG9yPVwicHJpbWFyeVwiIChjbGlja0V2ZW50KT1cInJldHJ5KClcIiAvPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRAaWYgKHJlZlZhbHVlRW50cmllcygpLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0PHNlY3Rpb24gY2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlcl9fc2VjdGlvblwiPlxyXG5cdFx0XHRcdFx0XHQ8aDMgY2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlcl9fc2VjdGlvbi10aXRsZVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktdGFnc1wiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHR7eyB0KCd0cmFjZURyYXdlci5yZWZWYWx1ZXNIZWFkZXInKSB9fVxyXG5cdFx0XHRcdFx0XHRcdDxhcmlsLWJhZGdlIFt2YWx1ZV09XCJyZWZWYWx1ZUVudHJpZXMoKS5sZW5ndGgudG9TdHJpbmcoKVwiIFtyb3VuZGVkXT1cInRydWVcIiAvPlxyXG5cdFx0XHRcdFx0XHQ8L2gzPlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicmVmLXZhbHVlc1wiPlxyXG5cdFx0XHRcdFx0XHRcdEBmb3IgKGVudHJ5IG9mIHJlZlZhbHVlRW50cmllcygpOyB0cmFjayBlbnRyeVswXSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInJlZi12YWx1ZXNfX3Jvd1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInJlZi12YWx1ZXNfX2tleVwiPnt7IGVudHJ5WzBdIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicmVmLXZhbHVlc19fY2hpcHNcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRAZm9yICh2YWwgb2YgZW50cnlbMV07IHRyYWNrIHZhbCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGNvZGUgY2xhc3M9XCJyZWYtdmFsdWVzX19jaGlwXCI+e3sgdmFsIH19PC9jb2RlPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9zZWN0aW9uPlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRAaWYgKGFwaXNpeEhpdHMoKS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdDxzZWN0aW9uIGNsYXNzPVwiYXJpbC10cmFjZS1kcmF3ZXJfX3NlY3Rpb25cIj5cclxuXHRcdFx0XHRcdFx0PGgzIGNsYXNzPVwiYXJpbC10cmFjZS1kcmF3ZXJfX3NlY3Rpb24tdGl0bGVcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWdsb2JlXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdHt7IHQoJ3RyYWNlRHJhd2VyLmFwaXNpeEhlYWRlcicpIH19XHJcblx0XHRcdFx0XHRcdFx0PGFyaWwtYmFkZ2UgW3ZhbHVlXT1cImFwaXNpeEhpdHMoKS5sZW5ndGggKyAnIC8gJyArIHRvdGFsSXRlbSgpXCIgW3JvdW5kZWRdPVwidHJ1ZVwiIC8+XHJcblx0XHRcdFx0XHRcdDwvaDM+XHJcblx0XHRcdFx0XHRcdEBmb3IgKGhpdCBvZiBhcGlzaXhIaXRzKCk7IHRyYWNrIGhpdC5pZCkge1xyXG5cdFx0XHRcdFx0XHRcdDxkZXRhaWxzIGNsYXNzPVwidHJhY2Utcm93IHRyYWNlLXJvdy0te3sgc3RhdHVzU2V2ZXJpdHkoaGl0LnN0YXR1cykgfX1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxzdW1tYXJ5IGNsYXNzPVwidHJhY2Utcm93X19zdW1tYXJ5XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktY2hldnJvbi1yaWdodCB0cmFjZS1yb3dfX2NoZXZyb25cIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxhcmlsLWJhZGdlIFt2YWx1ZV09XCJoaXQuc3RhdHVzLnRvU3RyaW5nKClcIiBbc2V2ZXJpdHldPVwic3RhdHVzU2V2ZXJpdHkoaGl0LnN0YXR1cylcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInRyYWNlLXJvd19fdGFnXCI+e3sgaGl0LnJlcXVlc3RNZXRob2QgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidHJhY2Utcm93X19tYWluXCI+e3sgaGl0LnJlcXVlc3RVcmkgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxhcmlsLWJhZGdlXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0W3ZhbHVlXT1cImZvcm1hdER1cmF0aW9uKGhpdC5yZXNwb25zZVRpbWUpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRbc2V2ZXJpdHldPVwiZHVyYXRpb25TZXZlcml0eShoaXQucmVzcG9uc2VUaW1lKVwiIC8+XHJcblx0XHRcdFx0XHRcdFx0XHRcdEBpZiAoaGl0LnRpbWVzdGFtcCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidHJhY2Utcm93X190aW1lXCI+e3sgZm9ybWF0VGltZXN0YW1wKGhpdC50aW1lc3RhbXApIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0cm9sZT1cImJ1dHRvblwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJwaSBwaS1jb2RlIHRyYWNlLXJvd19fYWN0aW9uXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwidCgndHJhY2VEcmF3ZXIuY29weUN1cmwnKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwibGVmdFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGNvcHlBc0N1cmwoaGl0KVwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHRcdDwvc3VtbWFyeT5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0cmFjZS1yb3dfX2JvZHlcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRyYWNlLXJvd19fbWV0YVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEBpZiAoaGl0LnJvdXRlTmFtZSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJtZXRhLWxhYmVsXCI+e3sgdCgndHJhY2VEcmF3ZXIucm91dGUnKSB9fTwvc3BhblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+PHNwYW4+e3sgaGl0LnJvdXRlTmFtZSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGhpdC5zb3VyY2VBcHAgfHwgaGl0LnNvdXJjZU1vZHVsZSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJtZXRhLWxhYmVsXCI+e3sgdCgndHJhY2VEcmF3ZXIuc291cmNlJykgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuPnt7IGhpdC5zb3VyY2VBcHAgfX17eyBoaXQuc291cmNlTW9kdWxlID8gJyAvICcgKyBoaXQuc291cmNlTW9kdWxlIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmIChoaXQudGFyZ2V0QXBwIHx8IGhpdC50YXJnZXRNb2R1bGUpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibWV0YS1sYWJlbFwiPnt7IHQoJ3RyYWNlRHJhd2VyLnRhcmdldCcpIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3Bhbj57eyBoaXQudGFyZ2V0QXBwIH19e3sgaGl0LnRhcmdldE1vZHVsZSA/ICcgLyAnICsgaGl0LnRhcmdldE1vZHVsZSA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEBpZiAoaGl0LnVwc3RyZWFtSG9zdCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJtZXRhLWxhYmVsXCI+e3sgdCgndHJhY2VEcmF3ZXIudXBzdHJlYW0nKSB9fTwvc3BhblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+PHNwYW4+e3sgaGl0LnVwc3RyZWFtSG9zdCB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGhpdC51c2VybmFtZSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJtZXRhLWxhYmVsXCI+e3sgdCgndHJhY2VEcmF3ZXIudXNlcicpIH19PC9zcGFuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD48c3Bhbj57eyBoaXQudXNlcm5hbWUgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmIChoaXQucmVxdWVzdFNpemUgIT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJtZXRhLWxhYmVsXCI+e3sgdCgndHJhY2VEcmF3ZXIucmVxdWVzdFNpemUnKSB9fTwvc3BhblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+PHNwYW4+e3sgZm9ybWF0Qnl0ZXMoaGl0LnJlcXVlc3RTaXplKSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGhpdC5yZXNwb25zZVNpemUgIT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJtZXRhLWxhYmVsXCI+e3sgdCgndHJhY2VEcmF3ZXIucmVzcG9uc2VTaXplJykgfX08L3NwYW5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PjxzcGFuPnt7IGZvcm1hdEJ5dGVzKGhpdC5yZXNwb25zZVNpemUpIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0QGlmIChoaXQucmVxdWVzdEJvZHkpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGV0YWlscyBjbGFzcz1cInRyYWNlLXJvd19fc3ViXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3VtbWFyeT57eyB0KCd0cmFjZURyYXdlci5yZXF1ZXN0Qm9keScpIH19PC9zdW1tYXJ5PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmICh0cnlQYXJzZUpzb24oaGl0LnJlcXVlc3RCb2R5KTsgYXMgcGFyc2VkKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxwcmU+e3sgcGFyc2VkIHwganNvbiB9fTwvcHJlPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxwcmU+e3sgaGl0LnJlcXVlc3RCb2R5IH19PC9wcmU+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kZXRhaWxzPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdEBpZiAoaGl0LnJlc3BvbnNlQm9keSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkZXRhaWxzIGNsYXNzPVwidHJhY2Utcm93X19zdWJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzdW1tYXJ5Pnt7IHQoJ3RyYWNlRHJhd2VyLnJlc3BvbnNlQm9keScpIH19PC9zdW1tYXJ5PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmICh0cnlQYXJzZUpzb24oaGl0LnJlc3BvbnNlQm9keSk7IGFzIHBhcnNlZCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8cHJlPnt7IHBhcnNlZCB8IGpzb24gfX08L3ByZT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8cHJlPnt7IGhpdC5yZXNwb25zZUJvZHkgfX08L3ByZT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2RldGFpbHM+XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDwvZGV0YWlscz5cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRAaWYgKGhhc01vcmUoKSkge1xyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlcl9fbG9hZC1tb3JlXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8YXJpbC1idXR0b25cclxuXHRcdFx0XHRcdFx0XHRcdFx0W2xhYmVsXT1cInQoJ3RyYWNlRHJhd2VyLmxvYWRNb3JlJylcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRpY29uPVwiQ0hFVlJPTl9ET1dOXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29sb3I9XCJwcmltYXJ5XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0W291dGxpbmVkXT1cInRydWVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRbbG9hZGluZ109XCJsb2FkaW5nTW9yZSgpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0W2Rpc2FibGVkXT1cImxvYWRpbmdNb3JlKClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2tFdmVudCk9XCJsb2FkTW9yZSgpXCIgLz5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0PC9zZWN0aW9uPlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRAaWYgKGFwcExvZ3MoKS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdDxzZWN0aW9uIGNsYXNzPVwiYXJpbC10cmFjZS1kcmF3ZXJfX3NlY3Rpb25cIj5cclxuXHRcdFx0XHRcdFx0PGgzIGNsYXNzPVwiYXJpbC10cmFjZS1kcmF3ZXJfX3NlY3Rpb24tdGl0bGVcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWxpc3RcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0e3sgdCgndHJhY2VEcmF3ZXIuYXBwTG9nc0hlYWRlcicpIH19XHJcblx0XHRcdFx0XHRcdFx0PGFyaWwtYmFkZ2UgW3ZhbHVlXT1cImFwcExvZ3MoKS5sZW5ndGggKyAnIC8gJyArIGFwcExvZ3NUb3RhbCgpXCIgW3JvdW5kZWRdPVwidHJ1ZVwiIC8+XHJcblx0XHRcdFx0XHRcdDwvaDM+XHJcblx0XHRcdFx0XHRcdEBmb3IgKGxvZyBvZiBhcHBMb2dzKCk7IHRyYWNrIGxvZy5pZCkge1xyXG5cdFx0XHRcdFx0XHRcdDxkZXRhaWxzIGNsYXNzPVwidHJhY2Utcm93IHRyYWNlLXJvdy0te3sgbGV2ZWxTZXZlcml0eShsb2cubGV2ZWwpIH19XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8c3VtbWFyeSBjbGFzcz1cInRyYWNlLXJvd19fc3VtbWFyeVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWNoZXZyb24tcmlnaHQgdHJhY2Utcm93X19jaGV2cm9uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGxvZy5sZXZlbCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxhcmlsLWJhZGdlIFt2YWx1ZV09XCJsb2cubGV2ZWxcIiBbc2V2ZXJpdHldPVwibGV2ZWxTZXZlcml0eShsb2cubGV2ZWwpXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGxvZy5tb2R1bGUpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInRyYWNlLXJvd19fdGFnXCI+e3sgbG9nLm1vZHVsZSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInRyYWNlLXJvd19fbWFpblwiPnt7IGxvZy5tZXNzYWdlIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGxvZy50aW1lc3RhbXApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInRyYWNlLXJvd19fdGltZVwiPnt7IGZvcm1hdFRpbWVzdGFtcChsb2cudGltZXN0YW1wKSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0PC9zdW1tYXJ5PlxyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRyYWNlLXJvd19fYm9keVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGxvZy5tZXNzYWdlKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRyYWNlLXJvd19fbWVzc2FnZVwiPnt7IGxvZy5tZXNzYWdlIH19PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0QGlmIChsb2cudXNlcm5hbWUgfHwgbG9nLmFwcCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0cmFjZS1yb3dfX21ldGFcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBpZiAobG9nLmFwcCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibWV0YS1sYWJlbFwiPnt7IHQoJ3RyYWNlRHJhd2VyLnRhcmdldCcpIH19PC9zcGFuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PjxzcGFuPnt7IGxvZy5hcHAgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmIChsb2cudXNlcm5hbWUpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm1ldGEtbGFiZWxcIj57eyB0KCd0cmFjZURyYXdlci51c2VyJykgfX08L3NwYW5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+PHNwYW4+e3sgbG9nLnVzZXJuYW1lIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGxvZy5lcnJvckRldGFpbCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkZXRhaWxzIGNsYXNzPVwidHJhY2Utcm93X19zdWJcIiBvcGVuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHN1bW1hcnk+e3sgdCgndHJhY2VEcmF3ZXIuYXBwTG9nRXJyb3JEZXRhaWwnKSB9fTwvc3VtbWFyeT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxwcmU+e3sgbG9nLmVycm9yRGV0YWlsIH19PC9wcmU+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kZXRhaWxzPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdEBpZiAobG9nLnJlZmVyZW5jZUZpZWxkcz8ubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRldGFpbHMgY2xhc3M9XCJ0cmFjZS1yb3dfX3N1YlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHN1bW1hcnk+e3sgdCgndHJhY2VEcmF3ZXIuYXBwTG9nUmVmRmllbGRzJykgfX08L3N1bW1hcnk+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidHJhY2Utcm93X19tZXRhXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBmb3IgKHJmIG9mIGxvZy5yZWZlcmVuY2VGaWVsZHM7IHRyYWNrIHJmLmZpZWxkKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibWV0YS1sYWJlbFwiPnt7IHJmLmZpZWxkIH19PC9zcGFuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+PHNwYW4+e3sgcmYudmFsdWUgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGV0YWlscz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9kZXRhaWxzPlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdEBpZiAoYXBwTG9nc0hhc01vcmUoKSkge1xyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlcl9fbG9hZC1tb3JlXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8YXJpbC1idXR0b25cclxuXHRcdFx0XHRcdFx0XHRcdFx0W2xhYmVsXT1cInQoJ3RyYWNlRHJhd2VyLmxvYWRNb3JlJylcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRpY29uPVwiQ0hFVlJPTl9ET1dOXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29sb3I9XCJwcmltYXJ5XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0W291dGxpbmVkXT1cInRydWVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRbbG9hZGluZ109XCJhcHBMb2dzTG9hZGluZ01vcmUoKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFtkaXNhYmxlZF09XCJhcHBMb2dzTG9hZGluZ01vcmUoKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdChjbGlja0V2ZW50KT1cImxvYWRNb3JlQXBwTG9ncygpXCIgLz5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0PC9zZWN0aW9uPlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRAaWYgKCFhcGlzaXhIaXRzKCkubGVuZ3RoICYmICFhcHBMb2dzKCkubGVuZ3RoICYmICFyZWZWYWx1ZUVudHJpZXMoKS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlcl9fc3RhdGVcIj5cclxuXHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1pbmJveFwiPjwvaT5cclxuXHRcdFx0XHRcdFx0PHA+e3sgdCgndHJhY2VEcmF3ZXIuZW1wdHknKSB9fTwvcD5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0PC9kaXY+XHJcblx0PC9wLXNpZGViYXI+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
|
|
288
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2UtZHJhd2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWktYnVzaW5lc3MvdHJhY2UtZHJhd2VyL3NyYy90cmFjZS1kcmF3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS1idXNpbmVzcy90cmFjZS1kcmF3ZXIvc3JjL3RyYWNlLWRyYXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEksT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXRELE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxN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YSxtZEFBRSxxQkFBcUIsd01BQUUsYUFBYSxzWEFBRSxjQUFjLHdMQUFFLGVBQWU7OzRGQUc3RyxvQkFBb0I7a0JBUmhDLFNBQVM7aUNBQ0csSUFBSSxZQUNOLG1CQUFtQixXQUdwQixDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsZUFBZSxDQUFDLG1CQUN6Ryx1QkFBdUIsQ0FBQyxNQUFNO3dEQWtCckMsYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEpzb25QaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuXHJcbmltcG9ydCB7IEVNUFRZLCBTdWJqZWN0LCBjYXRjaEVycm9yLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgUHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9wcm9ncmVzc3NwaW5uZXInO1xyXG5pbXBvcnQgeyBTaWRlYmFyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9zaWRlYmFyJztcclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xvY29Nb2R1bGUsIFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcbmltcG9ydCB7IEtleWNsb2FrU2VydmljZSB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuXHJcbmltcG9ydCB7IEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnYXJpbC91aS9iYWRnZSc7XHJcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvYnV0dG9uJztcclxuaW1wb3J0ICdhcmlsL3V0aWwvcHJpbWl0aXZlLWV4dGVuc2lvbnMnO1xyXG5cclxuaW1wb3J0IHsgQXBwTG9nU2VydmljZSB9IGZyb20gJy4vYXBwLWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBpc2l4SGl0LCBBcHBMb2dJdGVtLCBBcHBMb2dSZWZWYWx1ZXMgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBUcmFjZUxvZ1NlcnZpY2UgfSBmcm9tICcuL3RyYWNlLWxvZy5zZXJ2aWNlJztcclxuXHJcbnR5cGUgUG9zaXRpb24gPSAncmlnaHQnIHwgJ2xlZnQnO1xyXG50eXBlIFNldmVyaXR5ID0gJ3N1Y2Nlc3MnIHwgJ3NlY29uZGFyeScgfCAnaW5mbycgfCAnd2FybmluZycgfCAnZGFuZ2VyJyB8ICdjb250cmFzdCcgfCB1bmRlZmluZWQ7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHNlbGVjdG9yOiAnYXJpbC10cmFjZS1kcmF3ZXInLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi90cmFjZS1kcmF3ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL3RyYWNlLWRyYXdlci5jb21wb25lbnQuc2NzcyddLFxyXG5cdGltcG9ydHM6IFtKc29uUGlwZSwgVHJhbnNsb2NvTW9kdWxlLCBTaWRlYmFyTW9kdWxlLCBQcm9ncmVzc1NwaW5uZXJNb2R1bGUsIFRvb2x0aXBNb2R1bGUsIEJhZGdlQ29tcG9uZW50LCBCdXR0b25Db21wb25lbnRdLFxyXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmFjZURyYXdlckNvbXBvbmVudCB7XHJcblx0cHJpdmF0ZSByZWFkb25seSB0cmFjZUxvZ1NlcnZpY2UgPSBpbmplY3QoVHJhY2VMb2dTZXJ2aWNlKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IGFwcExvZ1NlcnZpY2UgPSBpbmplY3QoQXBwTG9nU2VydmljZSk7XHJcblx0cHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZSA9IGluamVjdChNZXNzYWdlU2VydmljZSk7XHJcblx0cHJpdmF0ZSByZWFkb25seSB0cmFuc2xvY29TZXJ2aWNlID0gaW5qZWN0KFRyYW5zbG9jb1NlcnZpY2UpO1xyXG5cdHByaXZhdGUgcmVhZG9ubHkga2V5Y2xvYWtTZXJ2aWNlID0gaW5qZWN0KEtleWNsb2FrU2VydmljZSk7XHJcblxyXG5cdHZpc2libGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0dHJhY2VJZCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcclxuXHRwb3NpdGlvbiA9IGlucHV0PFBvc2l0aW9uPigncmlnaHQnKTtcclxuXHR3aWR0aCA9IGlucHV0PHN0cmluZz4oJ21pbig2ODBweCwgOTB2dyknKTtcclxuXHRtb2RhbCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRwYWdlU2l6ZSA9IGlucHV0PG51bWJlcj4oMTApO1xyXG5cdHN0YXJ0VGltZSA9IGlucHV0PG51bWJlciB8IHVuZGVmaW5lZD4oKTtcclxuXHRlbmRUaW1lID0gaW5wdXQ8bnVtYmVyIHwgdW5kZWZpbmVkPigpO1xyXG5cclxuXHRAT3V0cHV0KCkgdmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcblx0cHJvdGVjdGVkIHJlYWRvbmx5IGxvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xyXG5cdHByb3RlY3RlZCByZWFkb25seSBsb2FkaW5nTW9yZSA9IHNpZ25hbChmYWxzZSk7XHJcblx0cHJvdGVjdGVkIHJlYWRvbmx5IGVycm9yTWVzc2FnZSA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcblx0cHJvdGVjdGVkIHJlYWRvbmx5IGFwaXNpeEhpdHMgPSBzaWduYWw8QXBpc2l4SGl0W10+KFtdKTtcclxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgdG90YWxJdGVtID0gc2lnbmFsKDApO1xyXG5cdHByb3RlY3RlZCByZWFkb25seSBwYWdlTnVtYmVyID0gc2lnbmFsKDEpO1xyXG5cclxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwTG9ncyA9IHNpZ25hbDxBcHBMb2dJdGVtW10+KFtdKTtcclxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwTG9nc0xvYWRpbmdNb3JlID0gc2lnbmFsKGZhbHNlKTtcclxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwTG9nc1RvdGFsID0gc2lnbmFsKDApO1xyXG5cdHByb3RlY3RlZCByZWFkb25seSBhcHBMb2dzUGFnZSA9IHNpZ25hbCgxKTtcclxuXHJcblx0cHJvdGVjdGVkIHJlYWRvbmx5IHJlZlZhbHVlcyA9IHNpZ25hbDxBcHBMb2dSZWZWYWx1ZXM+KHt9KTtcclxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgcmVmVmFsdWVFbnRyaWVzID0gY29tcHV0ZWQoKCkgPT5cclxuXHRcdE9iamVjdC5lbnRyaWVzKHRoaXMucmVmVmFsdWVzKCkpLmZpbHRlcigoWywgdmFsdWVzXSkgPT4gdmFsdWVzPy5sZW5ndGgpXHJcblx0KTtcclxuXHJcblx0cHJvdGVjdGVkIHJlYWRvbmx5IGhhc01vcmUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFwaXNpeEhpdHMoKS5sZW5ndGggPCB0aGlzLnRvdGFsSXRlbSgpKTtcclxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwTG9nc0hhc01vcmUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFwcExvZ3MoKS5sZW5ndGggPCB0aGlzLmFwcExvZ3NUb3RhbCgpKTtcclxuXHJcblx0cHJpdmF0ZSByZWFkb25seSByZXF1ZXN0ID0gbmV3IFN1YmplY3Q8eyB0cmFjZUlkOiBzdHJpbmc7IHBhZ2VOdW1iZXI6IG51bWJlcjsgYXBwZW5kOiBib29sZWFuIH0+KCk7XHJcblx0cHJpdmF0ZSByZWFkb25seSBhcHBMb2dzUmVxdWVzdCA9IG5ldyBTdWJqZWN0PHsgdHJhY2VJZDogc3RyaW5nOyBwYWdlTnVtYmVyOiBudW1iZXI7IGFwcGVuZDogYm9vbGVhbiB9PigpO1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgcmVmVmFsdWVzUmVxdWVzdCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IHJlc3BvbnNlID0gdG9TaWduYWwoXHJcblx0XHR0aGlzLnJlcXVlc3QucGlwZShcclxuXHRcdFx0c3dpdGNoTWFwKChyZXEpID0+XHJcblx0XHRcdFx0dGhpcy50cmFjZUxvZ1NlcnZpY2VcclxuXHRcdFx0XHRcdC5zZWFyY2hCeVRyYWNlSWQoe1xyXG5cdFx0XHRcdFx0XHR0cmFjZUlkOiByZXEudHJhY2VJZCxcclxuXHRcdFx0XHRcdFx0c3RhcnRUaW1lOiB0aGlzLnN0YXJ0VGltZSgpID8/IDIwMDAwMTAxMDAwMDAwLFxyXG5cdFx0XHRcdFx0XHRlbmRUaW1lOiB0aGlzLmVuZFRpbWUoKSA/PyAobmV3IERhdGUoKS5kYXRlVG9Mb25nKCd0aW1lJykgPz8gOTk5OTEyMzEyMzU5NTkpLFxyXG5cdFx0XHRcdFx0XHRwYWdlcjogeyBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSgpLCBwYWdlTnVtYmVyOiByZXEucGFnZU51bWJlciB9XHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0XHRcdG1hcCgocmVzcCkgPT4gKHsgcmVzcCwgYXBwZW5kOiByZXEuYXBwZW5kIH0pKSxcclxuXHRcdFx0XHRcdFx0Y2F0Y2hFcnJvcigoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5lcnJvck1lc3NhZ2Uuc2V0KGVycj8uZXJyb3I/Lm1lc3NhZ2UgPz8gZXJyPy5tZXNzYWdlID8/ICfEsHN0ZWsgYmHFn2FyxLFzxLF6IG9sZHUnKTtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmxvYWRpbmdNb3JlLnNldChmYWxzZSk7XHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuIEVNUFRZO1xyXG5cdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0KVxyXG5cdFx0XHQpXHJcblx0XHQpXHJcblx0KTtcclxuXHJcblx0cHJpdmF0ZSByZWFkb25seSBhcHBMb2dzUmVzcG9uc2UgPSB0b1NpZ25hbChcclxuXHRcdHRoaXMuYXBwTG9nc1JlcXVlc3QucGlwZShcclxuXHRcdFx0c3dpdGNoTWFwKChyZXEpID0+XHJcblx0XHRcdFx0dGhpcy5hcHBMb2dTZXJ2aWNlXHJcblx0XHRcdFx0XHQuc2VhcmNoQnlUcmFjZUlkKHtcclxuXHRcdFx0XHRcdFx0dHJhY2VJZDogcmVxLnRyYWNlSWQsXHJcblx0XHRcdFx0XHRcdHN0YXJ0VGltZTogdGhpcy5zdGFydFRpbWUoKSA/PyAyMDAwMDEwMTAwMDAwMCxcclxuXHRcdFx0XHRcdFx0ZW5kVGltZTogdGhpcy5lbmRUaW1lKCkgPz8gKG5ldyBEYXRlKCkuZGF0ZVRvTG9uZygndGltZScpID8/IDk5OTkxMjMxMjM1OTU5KSxcclxuXHRcdFx0XHRcdFx0cGFnZXI6IHsgcGFnZVNpemU6IHRoaXMucGFnZVNpemUoKSwgcGFnZU51bWJlcjogcmVxLnBhZ2VOdW1iZXIgfVxyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdC5waXBlKFxyXG5cdFx0XHRcdFx0XHRtYXAoKHJlc3ApID0+ICh7IHJlc3AsIGFwcGVuZDogcmVxLmFwcGVuZCB9KSksXHJcblx0XHRcdFx0XHRcdGNhdGNoRXJyb3IoKCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuYXBwTG9nc0xvYWRpbmdNb3JlLnNldChmYWxzZSk7XHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuIEVNUFRZO1xyXG5cdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0KVxyXG5cdFx0XHQpXHJcblx0XHQpXHJcblx0KTtcclxuXHJcblx0cHJpdmF0ZSByZWFkb25seSByZWZWYWx1ZXNSZXNwb25zZSA9IHRvU2lnbmFsKFxyXG5cdFx0dGhpcy5yZWZWYWx1ZXNSZXF1ZXN0LnBpcGUoXHJcblx0XHRcdHN3aXRjaE1hcCgodHJhY2VJZCkgPT5cclxuXHRcdFx0XHR0aGlzLmFwcExvZ1NlcnZpY2UuZ2V0UmVmVmFsdWVzKHsgdHJhY2VJZCB9KS5waXBlKFxyXG5cdFx0XHRcdFx0Y2F0Y2hFcnJvcigoKSA9PiBFTVBUWSlcclxuXHRcdFx0XHQpXHJcblx0XHRcdClcclxuXHRcdClcclxuXHQpO1xyXG5cclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdGVmZmVjdChcclxuXHRcdFx0KCkgPT4ge1xyXG5cdFx0XHRcdGlmICh0aGlzLnZpc2libGUoKSAmJiB0aGlzLnRyYWNlSWQoKSkge1xyXG5cdFx0XHRcdFx0dGhpcy5mZXRjaCh0aGlzLnRyYWNlSWQoKSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cclxuXHRcdCk7XHJcblxyXG5cdFx0ZWZmZWN0KFxyXG5cdFx0XHQoKSA9PiB7XHJcblx0XHRcdFx0Y29uc3Qgd3JhcHBlZCA9IHRoaXMucmVzcG9uc2UoKTtcclxuXHRcdFx0XHRpZiAoIXdyYXBwZWQpIHJldHVybjtcclxuXHRcdFx0XHRjb25zdCByZXN1bHQgPSB3cmFwcGVkLnJlc3AucmVzcG9uc2U/LnJlc3VsdCA/PyBbXTtcclxuXHRcdFx0XHRjb25zdCB0b3RhbCA9IHdyYXBwZWQucmVzcC5yZXNwb25zZT8ucmVzdWx0SW5mbz8udG90YWxJdGVtID8/IDA7XHJcblx0XHRcdFx0dGhpcy5hcGlzaXhIaXRzLnVwZGF0ZSgocHJldikgPT4gKHdyYXBwZWQuYXBwZW5kID8gWy4uLnByZXYsIC4uLnJlc3VsdF0gOiByZXN1bHQpKTtcclxuXHRcdFx0XHR0aGlzLnRvdGFsSXRlbS5zZXQodG90YWwpO1xyXG5cdFx0XHRcdHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xyXG5cdFx0XHRcdHRoaXMubG9hZGluZ01vcmUuc2V0KGZhbHNlKTtcclxuXHRcdFx0XHR0aGlzLmVycm9yTWVzc2FnZS5zZXQodW5kZWZpbmVkKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XHJcblx0XHQpO1xyXG5cclxuXHRcdGVmZmVjdChcclxuXHRcdFx0KCkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IHdyYXBwZWQgPSB0aGlzLmFwcExvZ3NSZXNwb25zZSgpO1xyXG5cdFx0XHRcdGlmICghd3JhcHBlZCkgcmV0dXJuO1xyXG5cdFx0XHRcdGNvbnN0IHJlc3VsdCA9IHdyYXBwZWQucmVzcC5yZXNwb25zZT8ucmVzdWx0ID8/IFtdO1xyXG5cdFx0XHRcdGNvbnN0IHRvdGFsID0gd3JhcHBlZC5yZXNwLnJlc3BvbnNlPy5yZXN1bHRJbmZvPy50b3RhbEl0ZW0gPz8gMDtcclxuXHRcdFx0XHR0aGlzLmFwcExvZ3MudXBkYXRlKChwcmV2KSA9PiAod3JhcHBlZC5hcHBlbmQgPyBbLi4ucHJldiwgLi4ucmVzdWx0XSA6IHJlc3VsdCkpO1xyXG5cdFx0XHRcdHRoaXMuYXBwTG9nc1RvdGFsLnNldCh0b3RhbCk7XHJcblx0XHRcdFx0dGhpcy5hcHBMb2dzTG9hZGluZ01vcmUuc2V0KGZhbHNlKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XHJcblx0XHQpO1xyXG5cclxuXHRcdGVmZmVjdChcclxuXHRcdFx0KCkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IHdyYXBwZWQgPSB0aGlzLnJlZlZhbHVlc1Jlc3BvbnNlKCk7XHJcblx0XHRcdFx0aWYgKCF3cmFwcGVkKSByZXR1cm47XHJcblx0XHRcdFx0dGhpcy5yZWZWYWx1ZXMuc2V0KHdyYXBwZWQucmVzcG9uc2UgPz8ge30pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgbG9hZE1vcmUoKTogdm9pZCB7XHJcblx0XHRjb25zdCBpZCA9IHRoaXMudHJhY2VJZCgpO1xyXG5cdFx0aWYgKCFpZCB8fCB0aGlzLmxvYWRpbmdNb3JlKCkgfHwgIXRoaXMuaGFzTW9yZSgpKSByZXR1cm47XHJcblx0XHRjb25zdCBuZXh0ID0gdGhpcy5wYWdlTnVtYmVyKCkgKyAxO1xyXG5cdFx0dGhpcy5wYWdlTnVtYmVyLnNldChuZXh0KTtcclxuXHRcdHRoaXMubG9hZGluZ01vcmUuc2V0KHRydWUpO1xyXG5cdFx0dGhpcy5yZXF1ZXN0Lm5leHQoeyB0cmFjZUlkOiBpZCwgcGFnZU51bWJlcjogbmV4dCwgYXBwZW5kOiB0cnVlIH0pO1xyXG5cdH1cclxuXHJcblx0cHJvdGVjdGVkIGxvYWRNb3JlQXBwTG9ncygpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGlkID0gdGhpcy50cmFjZUlkKCk7XHJcblx0XHRpZiAoIWlkIHx8IHRoaXMuYXBwTG9nc0xvYWRpbmdNb3JlKCkgfHwgIXRoaXMuYXBwTG9nc0hhc01vcmUoKSkgcmV0dXJuO1xyXG5cdFx0Y29uc3QgbmV4dCA9IHRoaXMuYXBwTG9nc1BhZ2UoKSArIDE7XHJcblx0XHR0aGlzLmFwcExvZ3NQYWdlLnNldChuZXh0KTtcclxuXHRcdHRoaXMuYXBwTG9nc0xvYWRpbmdNb3JlLnNldCh0cnVlKTtcclxuXHRcdHRoaXMuYXBwTG9nc1JlcXVlc3QubmV4dCh7IHRyYWNlSWQ6IGlkLCBwYWdlTnVtYmVyOiBuZXh0LCBhcHBlbmQ6IHRydWUgfSk7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgb25WaXNpYmxlQ2hhbmdlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XHJcblx0XHR0aGlzLnZpc2libGVDaGFuZ2UuZW1pdCh2YWx1ZSk7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgcmV0cnkoKTogdm9pZCB7XHJcblx0XHRjb25zdCBpZCA9IHRoaXMudHJhY2VJZCgpO1xyXG5cdFx0aWYgKGlkKSB0aGlzLmZldGNoKGlkKTtcclxuXHR9XHJcblxyXG5cdHByb3RlY3RlZCBzaGFyZUxpbmsoKTogdm9pZCB7XHJcblx0XHRjb25zdCBpZCA9IHRoaXMudHJhY2VJZCgpO1xyXG5cdFx0aWYgKCFpZCkgcmV0dXJuO1xyXG5cdFx0Y29uc3QgYmFzZSA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCc/JylbMF07XHJcblx0XHRjb25zdCB1cmwgPSBgJHtiYXNlfT90cmFjZUlkPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGlkKX1gO1xyXG5cdFx0bmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodXJsKS50aGVuKCgpID0+IHtcclxuXHRcdFx0dGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG5cdFx0XHRcdHNldmVyaXR5OiAnc3VjY2VzcycsXHJcblx0XHRcdFx0c3VtbWFyeTogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgndHJhY2VEcmF3ZXIubGlua0NvcGllZCcpLFxyXG5cdFx0XHRcdGtleTogJ3RvYXN0LXJvb3QnXHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgYXN5bmMgY29weUFzQ3VybChoaXQ6IEFwaXNpeEhpdCk6IFByb21pc2U8dm9pZD4ge1xyXG5cdFx0Y29uc3QgdG9rZW4gPSBhd2FpdCB0aGlzLmtleWNsb2FrU2VydmljZS5nZXRUb2tlbigpLmNhdGNoKCgpID0+ICcnKTtcclxuXHRcdGNvbnN0IGNtZCA9IHRoaXMuYnVpbGRDdXJsKGhpdCwgdG9rZW4pO1xyXG5cdFx0YXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoY21kKTtcclxuXHRcdHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuXHRcdFx0c2V2ZXJpdHk6ICdzdWNjZXNzJyxcclxuXHRcdFx0c3VtbWFyeTogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgndHJhY2VEcmF3ZXIuY3VybENvcGllZCcpLFxyXG5cdFx0XHRrZXk6ICd0b2FzdC1yb290J1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGJ1aWxkQ3VybChoaXQ6IEFwaXNpeEhpdCwgdG9rZW46IHN0cmluZyk6IHN0cmluZyB7XHJcblx0XHRjb25zdCBtZXRob2QgPSAoaGl0LnJlcXVlc3RNZXRob2QgPz8gJ0dFVCcpLnRvVXBwZXJDYXNlKCk7XHJcblx0XHRjb25zdCBob3N0ID0gaGl0LnVwc3RyZWFtSG9zdCA/IGhpdC51cHN0cmVhbUhvc3QucmVwbGFjZSgvXFwvKyQvLCAnJykgOiAnJztcclxuXHRcdGNvbnN0IHVyaSA9IGhpdC5yZXF1ZXN0VXJpID8/ICcnO1xyXG5cdFx0Y29uc3QgdXJsID0gaG9zdCA/IChob3N0LnN0YXJ0c1dpdGgoJ2h0dHAnKSA/IGAke2hvc3R9JHt1cml9YCA6IGBodHRwczovLyR7aG9zdH0ke3VyaX1gKSA6IHVyaTtcclxuXHRcdGNvbnN0IGVzY2FwZSA9IChzOiBzdHJpbmcpID0+IHMucmVwbGFjZSgvJy9nLCBgJ1xcXFwnJ2ApO1xyXG5cdFx0Y29uc3QgbGluZXMgPSBbYGN1cmwgLVggJHttZXRob2R9ICcke2VzY2FwZSh1cmwpfSdgXTtcclxuXHRcdGlmICh0b2tlbikgbGluZXMucHVzaChgLUggJ0F1dGhvcml6YXRpb246IEJlYXJlciAke2VzY2FwZSh0b2tlbil9J2ApO1xyXG5cdFx0Y29uc3QgYm9keSA9IGhpdC5yZXF1ZXN0Qm9keT8udHJpbSgpO1xyXG5cdFx0aWYgKGJvZHkpIHtcclxuXHRcdFx0Y29uc3QgaXNKc29uID0gKGJvZHkuc3RhcnRzV2l0aCgneycpICYmIGJvZHkuZW5kc1dpdGgoJ30nKSkgfHwgKGJvZHkuc3RhcnRzV2l0aCgnWycpICYmIGJvZHkuZW5kc1dpdGgoJ10nKSk7XHJcblx0XHRcdGlmIChpc0pzb24pIGxpbmVzLnB1c2goYC1IICdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24nYCk7XHJcblx0XHRcdGxpbmVzLnB1c2goYC1kICcke2VzY2FwZShib2R5KX0nYCk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbGluZXMuam9pbignIFxcXFxcXG4gICcpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBmZXRjaCh0cmFjZUlkOiBzdHJpbmcpOiB2b2lkIHtcclxuXHRcdHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XHJcblx0XHR0aGlzLmVycm9yTWVzc2FnZS5zZXQodW5kZWZpbmVkKTtcclxuXHRcdHRoaXMuYXBpc2l4SGl0cy5zZXQoW10pO1xyXG5cdFx0dGhpcy50b3RhbEl0ZW0uc2V0KDApO1xyXG5cdFx0dGhpcy5wYWdlTnVtYmVyLnNldCgxKTtcclxuXHRcdHRoaXMuYXBwTG9ncy5zZXQoW10pO1xyXG5cdFx0dGhpcy5hcHBMb2dzVG90YWwuc2V0KDApO1xyXG5cdFx0dGhpcy5hcHBMb2dzUGFnZS5zZXQoMSk7XHJcblx0XHR0aGlzLnJlZlZhbHVlcy5zZXQoe30pO1xyXG5cdFx0dGhpcy5yZXF1ZXN0Lm5leHQoeyB0cmFjZUlkLCBwYWdlTnVtYmVyOiAxLCBhcHBlbmQ6IGZhbHNlIH0pO1xyXG5cdFx0dGhpcy5hcHBMb2dzUmVxdWVzdC5uZXh0KHsgdHJhY2VJZCwgcGFnZU51bWJlcjogMSwgYXBwZW5kOiBmYWxzZSB9KTtcclxuXHRcdHRoaXMucmVmVmFsdWVzUmVxdWVzdC5uZXh0KHRyYWNlSWQpO1xyXG5cdH1cclxuXHJcblx0cHJvdGVjdGVkIHN0YXR1c1NldmVyaXR5KHN0YXR1czogbnVtYmVyKTogU2V2ZXJpdHkge1xyXG5cdFx0aWYgKHN0YXR1cyA+PSA1MDApIHJldHVybiAnZGFuZ2VyJztcclxuXHRcdGlmIChzdGF0dXMgPj0gNDAwKSByZXR1cm4gJ3dhcm5pbmcnO1xyXG5cdFx0aWYgKHN0YXR1cyA+PSAzMDApIHJldHVybiAnaW5mbyc7XHJcblx0XHRpZiAoc3RhdHVzID49IDIwMCkgcmV0dXJuICdzdWNjZXNzJztcclxuXHRcdHJldHVybiAnc2Vjb25kYXJ5JztcclxuXHR9XHJcblxyXG5cdHByb3RlY3RlZCBsZXZlbFNldmVyaXR5KGxldmVsOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBTZXZlcml0eSB7XHJcblx0XHRzd2l0Y2ggKChsZXZlbCA/PyAnJykudG9VcHBlckNhc2UoKSkge1xyXG5cdFx0XHRjYXNlICdFUlJPUic6XHJcblx0XHRcdGNhc2UgJ0ZBVEFMJzpcclxuXHRcdFx0XHRyZXR1cm4gJ2Rhbmdlcic7XHJcblx0XHRcdGNhc2UgJ1dBUk4nOlxyXG5cdFx0XHRjYXNlICdXQVJOSU5HJzpcclxuXHRcdFx0XHRyZXR1cm4gJ3dhcm5pbmcnO1xyXG5cdFx0XHRjYXNlICdJTkZPJzpcclxuXHRcdFx0XHRyZXR1cm4gJ2luZm8nO1xyXG5cdFx0XHRjYXNlICdERUJVRyc6XHJcblx0XHRcdGNhc2UgJ1RSQUNFJzpcclxuXHRcdFx0XHRyZXR1cm4gJ3NlY29uZGFyeSc7XHJcblx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0cmV0dXJuICdzZWNvbmRhcnknO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJvdGVjdGVkIGR1cmF0aW9uU2V2ZXJpdHkoc2Vjb25kczogbnVtYmVyKTogU2V2ZXJpdHkge1xyXG5cdFx0Y29uc3QgbXMgPSAoc2Vjb25kcyA/PyAwKSAqIDEwMDA7XHJcblx0XHRpZiAobXMgPj0gMTAwMCkgcmV0dXJuICdkYW5nZXInO1xyXG5cdFx0aWYgKG1zID49IDIwMCkgcmV0dXJuICd3YXJuaW5nJztcclxuXHRcdHJldHVybiAnc3VjY2Vzcyc7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgZm9ybWF0RHVyYXRpb24oc2Vjb25kczogbnVtYmVyIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcclxuXHRcdGlmIChzZWNvbmRzID09PSB1bmRlZmluZWQgfHwgc2Vjb25kcyA9PT0gbnVsbCkgcmV0dXJuICcnO1xyXG5cdFx0Y29uc3QgbXMgPSBzZWNvbmRzICogMTAwMDtcclxuXHRcdGlmIChtcyA8IDEpIHJldHVybiBgJHttcy50b0ZpeGVkKDIpfSBtc2A7XHJcblx0XHRpZiAobXMgPCAxMDAwKSByZXR1cm4gYCR7TWF0aC5yb3VuZChtcyl9IG1zYDtcclxuXHRcdHJldHVybiBgJHsobXMgLyAxMDAwKS50b0ZpeGVkKDIpfSBzYDtcclxuXHR9XHJcblxyXG5cdHByb3RlY3RlZCBmb3JtYXRCeXRlcyhieXRlczogbnVtYmVyIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcclxuXHRcdGlmIChieXRlcyA9PT0gdW5kZWZpbmVkIHx8IGJ5dGVzID09PSBudWxsKSByZXR1cm4gJy0nO1xyXG5cdFx0aWYgKGJ5dGVzIDwgMTAyNCkgcmV0dXJuIGAke2J5dGVzfSBCYDtcclxuXHRcdGlmIChieXRlcyA8IDEwMjQgKiAxMDI0KSByZXR1cm4gYCR7KGJ5dGVzIC8gMTAyNCkudG9GaXhlZCgxKX0gS0JgO1xyXG5cdFx0cmV0dXJuIGAkeyhieXRlcyAvICgxMDI0ICogMTAyNCkpLnRvRml4ZWQoMSl9IE1CYDtcclxuXHR9XHJcblxyXG5cdHByb3RlY3RlZCBmb3JtYXRUaW1lc3RhbXAodHM6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcblx0XHRpZiAodHMgPT09IHVuZGVmaW5lZCB8fCB0cyA9PT0gbnVsbCB8fCB0cyA9PT0gJycpIHJldHVybiAnJztcclxuXHRcdGlmICh0eXBlb2YgdHMgPT09ICdzdHJpbmcnKSByZXR1cm4gdHM7XHJcblx0XHRjb25zdCBzID0gU3RyaW5nKHRzKTtcclxuXHRcdGlmIChzLmxlbmd0aCA9PT0gMTQpIHtcclxuXHRcdFx0cmV0dXJuIGAke3Muc2xpY2UoOCwgMTApfToke3Muc2xpY2UoMTAsIDEyKX06JHtzLnNsaWNlKDEyLCAxNCl9ICR7cy5zbGljZSg2LCA4KX0uJHtzLnNsaWNlKDQsIDYpfS4ke3Muc2xpY2UoMCwgNCl9YDtcclxuXHRcdH1cclxuXHRcdGlmICh0cyA+IDFlMTEpIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBEYXRlKHRzKS50b0xvY2FsZVN0cmluZygpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHM7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgdHJ5UGFyc2VKc29uKGNvbnRlbnQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHVua25vd24ge1xyXG5cdFx0aWYgKCFjb250ZW50KSByZXR1cm4gbnVsbDtcclxuXHRcdGNvbnN0IHRyaW1tZWQgPSBjb250ZW50LnRyaW0oKTtcclxuXHRcdGlmICghKCh0cmltbWVkLnN0YXJ0c1dpdGgoJ3snKSAmJiB0cmltbWVkLmVuZHNXaXRoKCd9JykpIHx8ICh0cmltbWVkLnN0YXJ0c1dpdGgoJ1snKSAmJiB0cmltbWVkLmVuZHNXaXRoKCddJykpKSkge1xyXG5cdFx0XHRyZXR1cm4gbnVsbDtcclxuXHRcdH1cclxuXHRcdHRyeSB7XHJcblx0XHRcdHJldHVybiBKU09OLnBhcnNlKHRyaW1tZWQpO1xyXG5cdFx0fSBjYXRjaCB7XHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICp0cmFuc2xvY289XCJsZXQgdFwiPlxyXG5cdDxwLXNpZGViYXJcclxuXHRcdFt2aXNpYmxlXT1cInZpc2libGUoKVwiXHJcblx0XHQodmlzaWJsZUNoYW5nZSk9XCJvblZpc2libGVDaGFuZ2UoJGV2ZW50KVwiXHJcblx0XHRbcG9zaXRpb25dPVwicG9zaXRpb24oKVwiXHJcblx0XHRbc3R5bGVdPVwieyB3aWR0aDogd2lkdGgoKSB9XCJcclxuXHRcdFttb2RhbF09XCJtb2RhbCgpXCJcclxuXHRcdFtkaXNtaXNzaWJsZV09XCJ0cnVlXCJcclxuXHRcdFtzaG93Q2xvc2VJY29uXT1cInRydWVcIlxyXG5cdFx0c3R5bGVDbGFzcz1cImFyaWwtdHJhY2UtZHJhd2VyXCI+XHJcblx0XHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlcl9faGVhZGVyXCI+XHJcblx0XHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1zaXRlbWFwXCI+PC9pPlxyXG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwiYXJpbC10cmFjZS1kcmF3ZXJfX3RpdGxlXCI+e3sgdCgndHJhY2VEcmF3ZXIudGl0bGUnKSB9fTwvc3Bhbj5cclxuXHRcdFx0XHQ8Y29kZSBjbGFzcz1cImFyaWwtdHJhY2UtZHJhd2VyX19jaGlwXCI+e3sgdHJhY2VJZCgpIH19PC9jb2RlPlxyXG5cdFx0XHRcdDxpXHJcblx0XHRcdFx0XHRyb2xlPVwiYnV0dG9uXCJcclxuXHRcdFx0XHRcdGNsYXNzPVwicGkgcGktc2hhcmUtYWx0IGFyaWwtdHJhY2UtZHJhd2VyX19zaGFyZVwiXHJcblx0XHRcdFx0XHRbcFRvb2x0aXBdPVwidCgndHJhY2VEcmF3ZXIuc2hhcmVMaW5rJylcIlxyXG5cdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCJcclxuXHRcdFx0XHRcdChjbGljayk9XCJzaGFyZUxpbmsoKVwiPjwvaT5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cclxuXHRcdDxkaXYgY2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlcl9fYm9keVwiPlxyXG5cdFx0XHRAaWYgKGxvYWRpbmcoKSkge1xyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlcl9fc3RhdGVcIj5cclxuXHRcdFx0XHRcdDxwLXByb2dyZXNzU3Bpbm5lciBzdHJva2VXaWR0aD1cIjNcIiBzdHlsZUNsYXNzPVwidy0zcmVtIGgtM3JlbVwiPjwvcC1wcm9ncmVzc1NwaW5uZXI+XHJcblx0XHRcdFx0XHQ8c3Bhbj57eyB0KCd0cmFjZURyYXdlci5sb2FkaW5nJykgfX08L3NwYW4+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdH0gQGVsc2UgaWYgKGVycm9yTWVzc2FnZSgpKSB7XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImFyaWwtdHJhY2UtZHJhd2VyX19zdGF0ZSBhcmlsLXRyYWNlLWRyYXdlcl9fc3RhdGUtLWVycm9yXCI+XHJcblx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCI+PC9pPlxyXG5cdFx0XHRcdFx0PHA+e3sgZXJyb3JNZXNzYWdlKCkgfX08L3A+XHJcblx0XHRcdFx0XHQ8YXJpbC1idXR0b24gW2xhYmVsXT1cInQoJ3RyYWNlRHJhd2VyLnJldHJ5JylcIiBpY29uPVwiUkVGUkVTSFwiIGNvbG9yPVwicHJpbWFyeVwiIChjbGlja0V2ZW50KT1cInJldHJ5KClcIiAvPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRAaWYgKHJlZlZhbHVlRW50cmllcygpLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0PHNlY3Rpb24gY2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlcl9fc2VjdGlvblwiPlxyXG5cdFx0XHRcdFx0XHQ8aDMgY2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlcl9fc2VjdGlvbi10aXRsZVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktdGFnc1wiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHR7eyB0KCd0cmFjZURyYXdlci5yZWZWYWx1ZXNIZWFkZXInKSB9fVxyXG5cdFx0XHRcdFx0XHRcdDxhcmlsLWJhZGdlIFt2YWx1ZV09XCJyZWZWYWx1ZUVudHJpZXMoKS5sZW5ndGgudG9TdHJpbmcoKVwiIFtyb3VuZGVkXT1cInRydWVcIiAvPlxyXG5cdFx0XHRcdFx0XHQ8L2gzPlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicmVmLXZhbHVlc1wiPlxyXG5cdFx0XHRcdFx0XHRcdEBmb3IgKGVudHJ5IG9mIHJlZlZhbHVlRW50cmllcygpOyB0cmFjayBlbnRyeVswXSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInJlZi12YWx1ZXNfX3Jvd1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInJlZi12YWx1ZXNfX2tleVwiPnt7IGVudHJ5WzBdIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicmVmLXZhbHVlc19fY2hpcHNcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRAZm9yICh2YWwgb2YgZW50cnlbMV07IHRyYWNrIHZhbCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGNvZGUgY2xhc3M9XCJyZWYtdmFsdWVzX19jaGlwXCI+e3sgdmFsIH19PC9jb2RlPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9zZWN0aW9uPlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRAaWYgKGFwaXNpeEhpdHMoKS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdDxzZWN0aW9uIGNsYXNzPVwiYXJpbC10cmFjZS1kcmF3ZXJfX3NlY3Rpb25cIj5cclxuXHRcdFx0XHRcdFx0PGgzIGNsYXNzPVwiYXJpbC10cmFjZS1kcmF3ZXJfX3NlY3Rpb24tdGl0bGVcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWdsb2JlXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdHt7IHQoJ3RyYWNlRHJhd2VyLmFwaXNpeEhlYWRlcicpIH19XHJcblx0XHRcdFx0XHRcdFx0PGFyaWwtYmFkZ2UgW3ZhbHVlXT1cImFwaXNpeEhpdHMoKS5sZW5ndGggKyAnIC8gJyArIHRvdGFsSXRlbSgpXCIgW3JvdW5kZWRdPVwidHJ1ZVwiIC8+XHJcblx0XHRcdFx0XHRcdDwvaDM+XHJcblx0XHRcdFx0XHRcdEBmb3IgKGhpdCBvZiBhcGlzaXhIaXRzKCk7IHRyYWNrIGhpdC5pZCkge1xyXG5cdFx0XHRcdFx0XHRcdDxkZXRhaWxzIGNsYXNzPVwidHJhY2Utcm93IHRyYWNlLXJvdy0te3sgc3RhdHVzU2V2ZXJpdHkoaGl0LnN0YXR1cykgfX1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxzdW1tYXJ5IGNsYXNzPVwidHJhY2Utcm93X19zdW1tYXJ5XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktY2hldnJvbi1yaWdodCB0cmFjZS1yb3dfX2NoZXZyb25cIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxhcmlsLWJhZGdlIFt2YWx1ZV09XCJoaXQuc3RhdHVzLnRvU3RyaW5nKClcIiBbc2V2ZXJpdHldPVwic3RhdHVzU2V2ZXJpdHkoaGl0LnN0YXR1cylcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInRyYWNlLXJvd19fdGFnXCI+e3sgaGl0LnJlcXVlc3RNZXRob2QgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidHJhY2Utcm93X19tYWluXCI+e3sgaGl0LnJlcXVlc3RVcmkgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxhcmlsLWJhZGdlXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0W3ZhbHVlXT1cImZvcm1hdER1cmF0aW9uKGhpdC5yZXNwb25zZVRpbWUpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRbc2V2ZXJpdHldPVwiZHVyYXRpb25TZXZlcml0eShoaXQucmVzcG9uc2VUaW1lKVwiIC8+XHJcblx0XHRcdFx0XHRcdFx0XHRcdEBpZiAoaGl0LnRpbWVzdGFtcCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidHJhY2Utcm93X190aW1lXCI+e3sgZm9ybWF0VGltZXN0YW1wKGhpdC50aW1lc3RhbXApIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0cm9sZT1cImJ1dHRvblwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJwaSBwaS1jb2RlIHRyYWNlLXJvd19fYWN0aW9uXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwidCgndHJhY2VEcmF3ZXIuY29weUN1cmwnKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwibGVmdFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGNvcHlBc0N1cmwoaGl0KVwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHRcdDwvc3VtbWFyeT5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0cmFjZS1yb3dfX2JvZHlcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRyYWNlLXJvd19fbWV0YVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEBpZiAoaGl0LnJvdXRlTmFtZSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJtZXRhLWxhYmVsXCI+e3sgdCgndHJhY2VEcmF3ZXIucm91dGUnKSB9fTwvc3BhblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+PHNwYW4+e3sgaGl0LnJvdXRlTmFtZSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGhpdC5zb3VyY2VBcHAgfHwgaGl0LnNvdXJjZU1vZHVsZSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJtZXRhLWxhYmVsXCI+e3sgdCgndHJhY2VEcmF3ZXIuc291cmNlJykgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuPnt7IGhpdC5zb3VyY2VBcHAgfX17eyBoaXQuc291cmNlTW9kdWxlID8gJyAvICcgKyBoaXQuc291cmNlTW9kdWxlIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmIChoaXQudGFyZ2V0QXBwIHx8IGhpdC50YXJnZXRNb2R1bGUpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibWV0YS1sYWJlbFwiPnt7IHQoJ3RyYWNlRHJhd2VyLnRhcmdldCcpIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3Bhbj57eyBoaXQudGFyZ2V0QXBwIH19e3sgaGl0LnRhcmdldE1vZHVsZSA/ICcgLyAnICsgaGl0LnRhcmdldE1vZHVsZSA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEBpZiAoaGl0LnVwc3RyZWFtSG9zdCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJtZXRhLWxhYmVsXCI+e3sgdCgndHJhY2VEcmF3ZXIudXBzdHJlYW0nKSB9fTwvc3BhblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+PHNwYW4+e3sgaGl0LnVwc3RyZWFtSG9zdCB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGhpdC51c2VybmFtZSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJtZXRhLWxhYmVsXCI+e3sgdCgndHJhY2VEcmF3ZXIudXNlcicpIH19PC9zcGFuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD48c3Bhbj57eyBoaXQudXNlcm5hbWUgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmIChoaXQucmVxdWVzdFNpemUgIT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJtZXRhLWxhYmVsXCI+e3sgdCgndHJhY2VEcmF3ZXIucmVxdWVzdFNpemUnKSB9fTwvc3BhblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+PHNwYW4+e3sgZm9ybWF0Qnl0ZXMoaGl0LnJlcXVlc3RTaXplKSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGhpdC5yZXNwb25zZVNpemUgIT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJtZXRhLWxhYmVsXCI+e3sgdCgndHJhY2VEcmF3ZXIucmVzcG9uc2VTaXplJykgfX08L3NwYW5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PjxzcGFuPnt7IGZvcm1hdEJ5dGVzKGhpdC5yZXNwb25zZVNpemUpIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0QGlmIChoaXQucmVxdWVzdEJvZHkpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGV0YWlscyBjbGFzcz1cInRyYWNlLXJvd19fc3ViXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3VtbWFyeT57eyB0KCd0cmFjZURyYXdlci5yZXF1ZXN0Qm9keScpIH19PC9zdW1tYXJ5PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmICh0cnlQYXJzZUpzb24oaGl0LnJlcXVlc3RCb2R5KTsgYXMgcGFyc2VkKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxwcmU+e3sgcGFyc2VkIHwganNvbiB9fTwvcHJlPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxwcmU+e3sgaGl0LnJlcXVlc3RCb2R5IH19PC9wcmU+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kZXRhaWxzPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdEBpZiAoaGl0LnJlc3BvbnNlQm9keSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkZXRhaWxzIGNsYXNzPVwidHJhY2Utcm93X19zdWJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzdW1tYXJ5Pnt7IHQoJ3RyYWNlRHJhd2VyLnJlc3BvbnNlQm9keScpIH19PC9zdW1tYXJ5PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmICh0cnlQYXJzZUpzb24oaGl0LnJlc3BvbnNlQm9keSk7IGFzIHBhcnNlZCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8cHJlPnt7IHBhcnNlZCB8IGpzb24gfX08L3ByZT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8cHJlPnt7IGhpdC5yZXNwb25zZUJvZHkgfX08L3ByZT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2RldGFpbHM+XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDwvZGV0YWlscz5cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRAaWYgKGhhc01vcmUoKSkge1xyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlcl9fbG9hZC1tb3JlXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8YXJpbC1idXR0b25cclxuXHRcdFx0XHRcdFx0XHRcdFx0W2xhYmVsXT1cInQoJ3RyYWNlRHJhd2VyLmxvYWRNb3JlJylcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRpY29uPVwiQ0hFVlJPTl9ET1dOXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29sb3I9XCJwcmltYXJ5XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0W291dGxpbmVkXT1cInRydWVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRbbG9hZGluZ109XCJsb2FkaW5nTW9yZSgpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0W2Rpc2FibGVkXT1cImxvYWRpbmdNb3JlKClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2tFdmVudCk9XCJsb2FkTW9yZSgpXCIgLz5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0PC9zZWN0aW9uPlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRAaWYgKGFwcExvZ3MoKS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdDxzZWN0aW9uIGNsYXNzPVwiYXJpbC10cmFjZS1kcmF3ZXJfX3NlY3Rpb25cIj5cclxuXHRcdFx0XHRcdFx0PGgzIGNsYXNzPVwiYXJpbC10cmFjZS1kcmF3ZXJfX3NlY3Rpb24tdGl0bGVcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWxpc3RcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0e3sgdCgndHJhY2VEcmF3ZXIuYXBwTG9nc0hlYWRlcicpIH19XHJcblx0XHRcdFx0XHRcdFx0PGFyaWwtYmFkZ2UgW3ZhbHVlXT1cImFwcExvZ3MoKS5sZW5ndGggKyAnIC8gJyArIGFwcExvZ3NUb3RhbCgpXCIgW3JvdW5kZWRdPVwidHJ1ZVwiIC8+XHJcblx0XHRcdFx0XHRcdDwvaDM+XHJcblx0XHRcdFx0XHRcdEBmb3IgKGxvZyBvZiBhcHBMb2dzKCk7IHRyYWNrIGxvZy5pZCkge1xyXG5cdFx0XHRcdFx0XHRcdDxkZXRhaWxzIGNsYXNzPVwidHJhY2Utcm93IHRyYWNlLXJvdy0te3sgbGV2ZWxTZXZlcml0eShsb2cubGV2ZWwpIH19XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8c3VtbWFyeSBjbGFzcz1cInRyYWNlLXJvd19fc3VtbWFyeVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWNoZXZyb24tcmlnaHQgdHJhY2Utcm93X19jaGV2cm9uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGxvZy5sZXZlbCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxhcmlsLWJhZGdlIFt2YWx1ZV09XCJsb2cubGV2ZWxcIiBbc2V2ZXJpdHldPVwibGV2ZWxTZXZlcml0eShsb2cubGV2ZWwpXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGxvZy5tb2R1bGUpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInRyYWNlLXJvd19fdGFnXCI+e3sgbG9nLm1vZHVsZSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInRyYWNlLXJvd19fbWFpblwiPnt7IGxvZy5tZXNzYWdlIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGxvZy50aW1lc3RhbXApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cInRyYWNlLXJvd19fdGltZVwiPnt7IGZvcm1hdFRpbWVzdGFtcChsb2cudGltZXN0YW1wKSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0PC9zdW1tYXJ5PlxyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRyYWNlLXJvd19fYm9keVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGxvZy5tZXNzYWdlKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRyYWNlLXJvd19fbWVzc2FnZVwiPnt7IGxvZy5tZXNzYWdlIH19PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0QGlmIChsb2cudXNlcm5hbWUgfHwgbG9nLmFwcCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0cmFjZS1yb3dfX21ldGFcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBpZiAobG9nLmFwcCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibWV0YS1sYWJlbFwiPnt7IHQoJ3RyYWNlRHJhd2VyLnRhcmdldCcpIH19PC9zcGFuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PjxzcGFuPnt7IGxvZy5hcHAgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmIChsb2cudXNlcm5hbWUpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm1ldGEtbGFiZWxcIj57eyB0KCd0cmFjZURyYXdlci51c2VyJykgfX08L3NwYW5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+PHNwYW4+e3sgbG9nLnVzZXJuYW1lIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGxvZy5lcnJvckRldGFpbCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkZXRhaWxzIGNsYXNzPVwidHJhY2Utcm93X19zdWJcIiBvcGVuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHN1bW1hcnk+e3sgdCgndHJhY2VEcmF3ZXIuYXBwTG9nRXJyb3JEZXRhaWwnKSB9fTwvc3VtbWFyeT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxwcmU+e3sgbG9nLmVycm9yRGV0YWlsIH19PC9wcmU+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kZXRhaWxzPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdEBpZiAobG9nLnJlZmVyZW5jZUZpZWxkcz8ubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRldGFpbHMgY2xhc3M9XCJ0cmFjZS1yb3dfX3N1YlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHN1bW1hcnk+e3sgdCgndHJhY2VEcmF3ZXIuYXBwTG9nUmVmRmllbGRzJykgfX08L3N1bW1hcnk+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidHJhY2Utcm93X19tZXRhXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBmb3IgKHJmIG9mIGxvZy5yZWZlcmVuY2VGaWVsZHM7IHRyYWNrIHJmLmZpZWxkKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibWV0YS1sYWJlbFwiPnt7IHJmLmZpZWxkIH19PC9zcGFuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+PHNwYW4+e3sgcmYudmFsdWUgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGV0YWlscz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9kZXRhaWxzPlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdEBpZiAoYXBwTG9nc0hhc01vcmUoKSkge1xyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlcl9fbG9hZC1tb3JlXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8YXJpbC1idXR0b25cclxuXHRcdFx0XHRcdFx0XHRcdFx0W2xhYmVsXT1cInQoJ3RyYWNlRHJhd2VyLmxvYWRNb3JlJylcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRpY29uPVwiQ0hFVlJPTl9ET1dOXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29sb3I9XCJwcmltYXJ5XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0W291dGxpbmVkXT1cInRydWVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRbbG9hZGluZ109XCJhcHBMb2dzTG9hZGluZ01vcmUoKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFtkaXNhYmxlZF09XCJhcHBMb2dzTG9hZGluZ01vcmUoKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdChjbGlja0V2ZW50KT1cImxvYWRNb3JlQXBwTG9ncygpXCIgLz5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0PC9zZWN0aW9uPlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRAaWYgKCFhcGlzaXhIaXRzKCkubGVuZ3RoICYmICFhcHBMb2dzKCkubGVuZ3RoICYmICFyZWZWYWx1ZUVudHJpZXMoKS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJhcmlsLXRyYWNlLWRyYXdlcl9fc3RhdGVcIj5cclxuXHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1pbmJveFwiPjwvaT5cclxuXHRcdFx0XHRcdFx0PHA+e3sgdCgndHJhY2VEcmF3ZXIuZW1wdHknKSB9fTwvcD5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0PC9kaXY+XHJcblx0PC9wLXNpZGViYXI+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
|
|
@@ -12,14 +12,14 @@ export class TraceLogService extends RestClient {
|
|
|
12
12
|
searchByTraceId(req) {
|
|
13
13
|
return new Observable();
|
|
14
14
|
}
|
|
15
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
16
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.
|
|
15
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraceLogService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
16
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraceLogService, providedIn: 'root' }); }
|
|
17
17
|
}
|
|
18
18
|
__decorate([
|
|
19
19
|
ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, 'request-logs/filter', {}, Apps.MNG)
|
|
20
20
|
], TraceLogService.prototype, "searchByTraceId", null);
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraceLogService, decorators: [{
|
|
22
22
|
type: Injectable,
|
|
23
23
|
args: [{ providedIn: 'root' }]
|
|
24
24
|
}], propDecorators: { searchByTraceId: [] } });
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2UtbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3VpLWJ1c2luZXNzL3RyYWNlLWRyYXdlci9zcmMvdHJhY2UtbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBd0MsTUFBTSxXQUFXLENBQUM7O0FBaUJuSCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxVQUFVO0lBRC9DOztRQUVVLFdBQU0sR0FBeUMsRUFBRSxDQUFDO0tBTTNEO0lBSEEsZUFBZSxDQUFDLEdBQXVCO1FBQ3RDLE9BQU8sSUFBSSxVQUFVLEVBQXdDLENBQUM7SUFDL0QsQ0FBQzsrR0FOVyxlQUFlO21IQUFmLGVBQWUsY0FERixNQUFNOztBQUsvQjtJQURDLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxVQUFVLEVBQUUscUJBQXFCLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUM7c0RBR3pGOzRGQU5XLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzhCQUtqQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgQXBwcyB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvYXBwcyc7XHJcbmltcG9ydCB7IEhUVFBNZXRob2RzLCBQcm94eVR5cGVzLCBSZXN0Q2xpZW50LCBTZXJ2aWNlQ2FsbCwgU2VydmljZUNhbGxTdGF0ZU1hcCwgU2VydmljZVJlc3BvbnNlIH0gZnJvbSAnYXJpbC9odHRwJztcclxuXHJcbmltcG9ydCB7IEFwaXNpeEhpdCB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRyYWNlU2VhcmNoUmVxdWVzdCB7XHJcblx0dHJhY2VJZDogc3RyaW5nO1xyXG5cdHN0YXJ0VGltZT86IG51bWJlcjtcclxuXHRlbmRUaW1lPzogbnVtYmVyO1xyXG5cdHBhZ2VyOiB7IHBhZ2VTaXplOiBudW1iZXI7IHBhZ2VOdW1iZXI6IG51bWJlciB9O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRyYWNlU2VhcmNoUmVzcG9uc2Uge1xyXG5cdHJlc3VsdEluZm8/OiB7IHRvdGFsSXRlbT86IG51bWJlcjsgdG90YWxQYWdlPzogbnVtYmVyIH07XHJcblx0cmVzdWx0OiBBcGlzaXhIaXRbXTtcclxufVxyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFRyYWNlTG9nU2VydmljZSBleHRlbmRzIFJlc3RDbGllbnQge1xyXG5cdG92ZXJyaWRlIHN0YXRlczogU2VydmljZUNhbGxTdGF0ZU1hcDxUcmFjZUxvZ1NlcnZpY2U+ID0ge307XHJcblxyXG5cdEBTZXJ2aWNlQ2FsbChIVFRQTWV0aG9kcy5QT1NULCBQcm94eVR5cGVzLkNsaWVudFNpZGUsICdyZXF1ZXN0LWxvZ3MvZmlsdGVyJywge30sIEFwcHMuTU5HKVxyXG5cdHNlYXJjaEJ5VHJhY2VJZChyZXE6IFRyYWNlU2VhcmNoUmVxdWVzdCk6IE9ic2VydmFibGU8U2VydmljZVJlc3BvbnNlPFRyYWNlU2VhcmNoUmVzcG9uc2U+PiB7XHJcblx0XHRyZXR1cm4gbmV3IE9ic2VydmFibGU8U2VydmljZVJlc3BvbnNlPFRyYWNlU2VhcmNoUmVzcG9uc2U+PigpO1xyXG5cdH1cclxufVxyXG4iXX0=
|