@c8y/ngx-components 1021.11.1 → 1021.21.0
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/alarms/alarms-date-filter.component.d.ts +34 -0
- package/alarms/alarms-date-filter.component.d.ts.map +1 -0
- package/alarms/alarms-filter.component.d.ts +2 -1
- package/alarms/alarms-filter.component.d.ts.map +1 -1
- package/alarms/alarms-list.component.d.ts +2 -17
- package/alarms/alarms-list.component.d.ts.map +1 -1
- package/alarms/alarms-view.service.d.ts +5 -2
- package/alarms/alarms-view.service.d.ts.map +1 -1
- package/alarms/alarms.component.d.ts +3 -1
- package/alarms/alarms.component.d.ts.map +1 -1
- package/alarms/alarms.model.d.ts +47 -1
- package/alarms/alarms.model.d.ts.map +1 -1
- package/alarms/alarms.module.d.ts +15 -13
- package/alarms/alarms.module.d.ts.map +1 -1
- package/branding/shared/data/store-branding.service.d.ts +5 -0
- package/branding/shared/data/store-branding.service.d.ts.map +1 -1
- package/branding/shared/lazy/branding/branding.component.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.model.d.ts +1 -0
- package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.service.d.ts +7 -5
- package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
- package/context-dashboard/dashboard-detail.component.d.ts +4 -7
- package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
- package/context-dashboard/dashboard-detail.service.d.ts +4 -4
- package/context-dashboard/dashboard-detail.service.d.ts.map +1 -1
- package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts +2 -2
- package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts.map +1 -1
- package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts +19 -6
- package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts.map +1 -1
- package/core/action-bar/action-bar-item.component.d.ts +1 -1
- package/core/action-bar/action-bar-item.component.d.ts.map +1 -1
- package/core/action-bar/action-bar.module.d.ts +6 -6
- package/core/action-bar/action-bar.module.d.ts.map +1 -1
- package/core/bootstrap/bootstrap.component.d.ts +3 -1
- package/core/bootstrap/bootstrap.component.d.ts.map +1 -1
- package/core/common/aggregation/aggregation.model.d.ts +39 -0
- package/core/common/aggregation/aggregation.model.d.ts.map +1 -0
- package/core/common/aggregation/aggregation.service.d.ts +17 -0
- package/core/common/aggregation/aggregation.service.d.ts.map +1 -0
- package/core/common/index.d.ts +4 -0
- package/core/common/index.d.ts.map +1 -1
- package/core/common/inter-app.service.d.ts +48 -0
- package/core/common/inter-app.service.d.ts.map +1 -0
- package/core/common/interval-based-reload.abstract.d.ts +120 -0
- package/core/common/interval-based-reload.abstract.d.ts.map +1 -0
- package/core/dashboard/dashboard.module.d.ts +26 -20
- package/core/dashboard/dashboard.module.d.ts.map +1 -1
- package/core/dashboard/index.d.ts +3 -0
- package/core/dashboard/index.d.ts.map +1 -1
- package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts +31 -0
- package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.d.ts +17 -0
- package/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.d.ts +4 -0
- package/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/index.d.ts +8 -0
- package/core/dashboard/widget-auto-refresh-context/index.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.d.ts +7 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts +29 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.d.ts +15 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.d.ts +169 -0
- package/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.d.ts.map +1 -0
- package/core/dashboard/widget-change-event.model.d.ts +1 -1
- package/core/dashboard/widget-change-event.model.d.ts.map +1 -1
- package/core/dashboard/widgets-dashboard.component.d.ts +6 -3
- package/core/dashboard/widgets-dashboard.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts +2 -2
- package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context-helper.service.d.ts +2 -1
- package/core/dashboard/wiget-time-context/widget-time-context-helper.service.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.d.ts +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context-query.service.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts +12 -8
- package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts +7 -26
- package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts.map +1 -1
- package/core/date-time-picker/date-time-picker.component.d.ts.map +1 -1
- package/core/header/header.module.d.ts +18 -18
- package/core/header/header.module.d.ts.map +1 -1
- package/core/header/title/title.component.d.ts +1 -1
- package/core/header/title/title.component.d.ts.map +1 -1
- package/core/i18n/cached-locale-dictionary.service.d.ts +5 -1
- package/core/i18n/cached-locale-dictionary.service.d.ts.map +1 -1
- package/core/i18n/i18n.module.d.ts +0 -4
- package/core/i18n/i18n.module.d.ts.map +1 -1
- package/core/i18n/index.d.ts +2 -1
- package/core/i18n/index.d.ts.map +1 -1
- package/core/i18n/translation-loader.service.d.ts +50 -0
- package/core/i18n/translation-loader.service.d.ts.map +1 -0
- package/core/i18n/translation-utils.d.ts +14 -0
- package/core/i18n/translation-utils.d.ts.map +1 -0
- package/core/plugins/plugins-resolve.service.d.ts +7 -10
- package/core/plugins/plugins-resolve.service.d.ts.map +1 -1
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts +2 -1
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts.map +1 -1
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts +11 -2
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts.map +1 -1
- package/datapoint-selector/datapoint-selection.model.d.ts +6 -0
- package/datapoint-selector/datapoint-selection.model.d.ts.map +1 -1
- package/datapoints-export-selector/c8y-ngx-components-datapoints-export-selector.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts +117 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.d.ts +90 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts +160 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts +89 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component.d.ts +11 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.d.ts +27 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component.d.ts +12 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.d.ts +22 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.d.ts +3 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.d.ts +9 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.d.ts +56 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts +21 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector.component.d.ts +14 -0
- package/datapoints-export-selector/datapoints-export-selector.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector.model.d.ts +232 -0
- package/datapoints-export-selector/datapoints-export-selector.model.d.ts.map +1 -0
- package/datapoints-export-selector/index.d.ts +15 -0
- package/datapoints-export-selector/index.d.ts.map +1 -0
- package/device-list/device-list.module.d.ts +4 -2
- package/device-list/device-list.module.d.ts.map +1 -1
- package/esm2022/alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.mjs +4 -4
- package/esm2022/alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.mjs +3 -3
- package/esm2022/alarms/alarms-date-filter.component.mjs +139 -0
- package/esm2022/alarms/alarms-filter.component.mjs +11 -5
- package/esm2022/alarms/alarms-list.component.mjs +5 -16
- package/esm2022/alarms/alarms-type-filter.component.mjs +3 -3
- package/esm2022/alarms/alarms-view.service.mjs +16 -2
- package/esm2022/alarms/alarms.component.mjs +12 -6
- package/esm2022/alarms/alarms.model.mjs +17 -1
- package/esm2022/alarms/alarms.module.mjs +11 -4
- package/esm2022/branding/shared/data/store-branding.service.mjs +24 -1
- package/esm2022/branding/shared/lazy/branding/branding.component.mjs +3 -1
- package/esm2022/context-dashboard/context-dashboard.component.mjs +4 -4
- package/esm2022/context-dashboard/context-dashboard.model.mjs +1 -1
- package/esm2022/context-dashboard/context-dashboard.service.mjs +47 -21
- package/esm2022/context-dashboard/dashboard-detail.component.mjs +8 -16
- package/esm2022/context-dashboard/dashboard-detail.service.mjs +13 -6
- package/esm2022/context-dashboard/dashboard-settings/dashboard-general-settings.component.mjs +3 -3
- package/esm2022/context-dashboard/dashboard-settings/typed-dashboard-settings.component.mjs +32 -11
- package/esm2022/core/action-bar/action-bar-item.component.mjs +3 -3
- package/esm2022/core/action-bar/action-bar.component.mjs +3 -3
- package/esm2022/core/action-bar/action-bar.module.mjs +16 -5
- package/esm2022/core/bootstrap/bootstrap.component.mjs +21 -16
- package/esm2022/core/common/aggregation/aggregation.model.mjs +46 -0
- package/esm2022/core/common/aggregation/aggregation.service.mjs +34 -0
- package/esm2022/core/common/humanize-app-name.model.mjs +2 -2
- package/esm2022/core/common/humanize-app-name.pipe.mjs +2 -2
- package/esm2022/core/common/index.mjs +5 -1
- package/esm2022/core/common/inter-app.service.mjs +76 -0
- package/esm2022/core/common/interval-based-reload.abstract.mjs +110 -0
- package/esm2022/core/countdown-interval/countdown-interval.component.mjs +3 -3
- package/esm2022/core/dashboard/dashboard-child.component.mjs +6 -5
- package/esm2022/core/dashboard/dashboard.module.mjs +22 -4
- package/esm2022/core/dashboard/index.mjs +4 -1
- package/esm2022/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.mjs +101 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.mjs +50 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.mjs +7 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/index.mjs +8 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.mjs +18 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.mjs +127 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.mjs +5 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.mjs +233 -0
- package/esm2022/core/dashboard/widget-change-event.model.mjs +1 -1
- package/esm2022/core/dashboard/widgets-dashboard.component.mjs +35 -30
- package/esm2022/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.mjs +4 -4
- package/esm2022/core/dashboard/wiget-time-context/realtime-control/realtime-control.component.mjs +2 -2
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context-helper.service.mjs +3 -2
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.mjs +5 -5
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context-query.service.mjs +7 -4
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context.component.mjs +37 -36
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context.model.mjs +1 -72
- package/esm2022/core/date-time-picker/date-time-picker.component.mjs +9 -3
- package/esm2022/core/header/header.module.mjs +7 -5
- package/esm2022/core/header/title/title.component.mjs +3 -3
- package/esm2022/core/i18n/cached-locale-dictionary.service.mjs +1 -1
- package/esm2022/core/i18n/i18n.module.mjs +7 -14
- package/esm2022/core/i18n/index.mjs +3 -2
- package/esm2022/core/i18n/translate.parser.mjs +2 -2
- package/esm2022/core/i18n/translation-loader.service.mjs +132 -0
- package/esm2022/core/i18n/translation-utils.mjs +24 -0
- package/esm2022/core/list-display-switch/list-display-switch.component.mjs +3 -3
- package/esm2022/core/plugins/plugins-resolve.service.mjs +12 -37
- package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.mjs +13 -6
- package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.mjs +22 -5
- package/esm2022/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.mjs +3 -3
- package/esm2022/datapoint-selector/datapoint-selection.model.mjs +1 -1
- package/esm2022/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.mjs +3 -3
- package/esm2022/datapoints-export-selector/c8y-ngx-components-datapoints-export-selector.mjs +5 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.mjs +407 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.mjs +207 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.mjs +467 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.mjs +187 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component.mjs +27 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.mjs +41 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component.mjs +23 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.mjs +42 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.mjs +120 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.mjs +282 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.mjs +76 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.mjs +46 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector.component.mjs +42 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector.model.mjs +43 -0
- package/esm2022/datapoints-export-selector/index.mjs +15 -0
- package/esm2022/device-list/add-smart-group.component.mjs +4 -3
- package/esm2022/device-list/device-list.module.mjs +22 -4
- package/esm2022/interval-picker/c8y-ngx-components-interval-picker.mjs +5 -0
- package/esm2022/interval-picker/index.mjs +3 -0
- package/esm2022/interval-picker/interval-picker.component.mjs +68 -0
- package/esm2022/interval-picker/interval-picker.model.mjs +47 -0
- package/esm2022/map/cluster-map.component.mjs +41 -13
- package/esm2022/map/map-status.component.mjs +6 -5
- package/esm2022/map/map.component.mjs +9 -5
- package/esm2022/map/map.model.mjs +1 -1
- package/esm2022/translation-editor/c8y-ngx-components-translation-editor.mjs +5 -0
- package/esm2022/translation-editor/data/c8y-ngx-components-translation-editor-data.mjs +5 -0
- package/esm2022/translation-editor/data/index.mjs +2 -0
- package/esm2022/translation-editor/data/translation-store.service.mjs +175 -0
- package/esm2022/translation-editor/index.mjs +10 -0
- package/esm2022/translation-editor/lazy/add-translation-modal/add-translation-modal.component.mjs +70 -0
- package/esm2022/translation-editor/lazy/c8y-ngx-components-translation-editor-lazy.mjs +5 -0
- package/esm2022/translation-editor/lazy/index.mjs +2 -0
- package/esm2022/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.mjs +53 -0
- package/esm2022/translation-editor/lazy/translation-editor/translation-editor.component.mjs +124 -0
- package/esm2022/translation-editor/translation-editor-naviagtor-factory.service.mjs +31 -0
- package/esm2022/widgets/cockpit/index.mjs +4 -2
- package/esm2022/widgets/cockpit-exports/index.mjs +8 -1
- package/esm2022/widgets/definitions/alarms/alarm-list/index.mjs +6 -2
- package/esm2022/widgets/definitions/alarms/all-critical-alarms/index.mjs +6 -2
- package/esm2022/widgets/definitions/alarms/recent-alarms/index.mjs +6 -2
- package/esm2022/widgets/definitions/datapoints-table/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +5 -0
- package/esm2022/widgets/definitions/datapoints-table/index.mjs +34 -0
- package/esm2022/widgets/definitions/index.mjs +2 -1
- package/esm2022/widgets/definitions/map/index.mjs +4 -2
- package/esm2022/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.mjs +29 -15
- package/esm2022/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.mjs +57 -25
- package/esm2022/widgets/implementations/alarms/alarm-list-widget.model.mjs +2 -1
- package/esm2022/widgets/implementations/alarms/alarm-widget-alarms-reload.component.mjs +19 -21
- package/esm2022/widgets/implementations/datapoints-table/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +5 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.mjs +383 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.mjs +124 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.mjs +191 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.mjs +36 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.mjs +45 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.mjs +116 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.mjs +116 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.mjs +43 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.mjs +282 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.mjs +430 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.mjs +75 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-widget.model.mjs +76 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table.service.mjs +52 -0
- package/esm2022/widgets/implementations/datapoints-table/date-range-picker.component.mjs +68 -0
- package/esm2022/widgets/implementations/datapoints-table/index.mjs +10 -0
- package/esm2022/widgets/implementations/map/map-widget-config.component.mjs +19 -11
- package/esm2022/widgets/implementations/map/map-widget.component.mjs +20 -2
- package/esm2022/widgets/implementations/map/map-widget.model.mjs +1 -1
- package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +5 -5
- package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarms.mjs +189 -31
- package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +23 -0
- package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +2 -0
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs +135 -91
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +37 -13
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +1928 -0
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-device-list.mjs +24 -5
- package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-interval-picker.mjs +120 -0
- package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-map.mjs +52 -19
- package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +181 -0
- package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +236 -0
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-translation-editor.mjs +46 -0
- package/fesm2022/c8y-ngx-components-translation-editor.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs +7 -0
- package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs +3 -1
- package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +5 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs +5 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs +5 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +41 -0
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs +3 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions.mjs +1 -0
- package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +101 -58
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +1967 -0
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +37 -11
- package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +5093 -4369
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/interval-picker/c8y-ngx-components-interval-picker.d.ts.map +1 -0
- package/interval-picker/index.d.ts +3 -0
- package/interval-picker/index.d.ts.map +1 -0
- package/{core/dashboard/wiget-time-context/interval-picker → interval-picker}/interval-picker.component.d.ts +10 -2
- package/interval-picker/interval-picker.component.d.ts.map +1 -0
- package/interval-picker/interval-picker.model.d.ts +15 -0
- package/interval-picker/interval-picker.model.d.ts.map +1 -0
- package/locales/de.po +289 -18
- package/locales/en.po +12 -0
- package/locales/en_US.po +3 -0
- package/locales/es.po +253 -18
- package/locales/fr.po +253 -18
- package/locales/ja_JP.po +282 -18
- package/locales/locales.pot +266 -21
- package/locales/nl.po +253 -18
- package/locales/pl.po +253 -18
- package/locales/pt_BR.po +253 -18
- package/map/cluster-map.component.d.ts +8 -3
- package/map/cluster-map.component.d.ts.map +1 -1
- package/map/map-status.component.d.ts +0 -3
- package/map/map-status.component.d.ts.map +1 -1
- package/map/map.component.d.ts +4 -2
- package/map/map.component.d.ts.map +1 -1
- package/map/map.model.d.ts +2 -1
- package/map/map.model.d.ts.map +1 -1
- package/package.json +1 -1
- package/translation-editor/c8y-ngx-components-translation-editor.d.ts.map +1 -0
- package/translation-editor/data/c8y-ngx-components-translation-editor-data.d.ts.map +1 -0
- package/translation-editor/data/index.d.ts +2 -0
- package/translation-editor/data/index.d.ts.map +1 -0
- package/translation-editor/data/translation-store.service.d.ts +61 -0
- package/translation-editor/data/translation-store.service.d.ts.map +1 -0
- package/translation-editor/index.d.ts +2 -0
- package/translation-editor/index.d.ts.map +1 -0
- package/translation-editor/lazy/add-translation-modal/add-translation-modal.component.d.ts +30 -0
- package/translation-editor/lazy/add-translation-modal/add-translation-modal.component.d.ts.map +1 -0
- package/translation-editor/lazy/c8y-ngx-components-translation-editor-lazy.d.ts.map +1 -0
- package/translation-editor/lazy/index.d.ts +2 -0
- package/translation-editor/lazy/index.d.ts.map +1 -0
- package/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.d.ts +22 -0
- package/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.d.ts.map +1 -0
- package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts +34 -0
- package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts.map +1 -0
- package/translation-editor/translation-editor-naviagtor-factory.service.d.ts +11 -0
- package/translation-editor/translation-editor-naviagtor-factory.service.d.ts.map +1 -0
- package/widgets/cockpit/index.d.ts +13 -0
- package/widgets/cockpit/index.d.ts.map +1 -1
- package/widgets/cockpit-exports/index.d.ts +6 -0
- package/widgets/cockpit-exports/index.d.ts.map +1 -1
- package/widgets/definitions/alarms/alarm-list/index.d.ts +2 -0
- package/widgets/definitions/alarms/alarm-list/index.d.ts.map +1 -1
- package/widgets/definitions/alarms/all-critical-alarms/index.d.ts +2 -0
- package/widgets/definitions/alarms/all-critical-alarms/index.d.ts.map +1 -1
- package/widgets/definitions/alarms/recent-alarms/index.d.ts +2 -0
- package/widgets/definitions/alarms/recent-alarms/index.d.ts.map +1 -1
- package/widgets/definitions/datapoints-table/c8y-ngx-components-widgets-definitions-datapoints-table.d.ts.map +1 -0
- package/widgets/definitions/datapoints-table/index.d.ts +14 -0
- package/widgets/definitions/datapoints-table/index.d.ts.map +1 -0
- package/widgets/definitions/index.d.ts +1 -0
- package/widgets/definitions/index.d.ts.map +1 -1
- package/widgets/definitions/map/index.d.ts +2 -1
- package/widgets/definitions/map/index.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts +5 -9
- package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts +17 -10
- package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-list-widget.model.d.ts +5 -1
- package/widgets/implementations/alarms/alarm-list-widget.model.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts +5 -11
- package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/c8y-ngx-components-widgets-implementations-datapoints-table.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts +129 -0
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.d.ts +56 -0
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.d.ts +88 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.d.ts +19 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.d.ts +26 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts +63 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.d.ts +38 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.d.ts +13 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts +123 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.d.ts +196 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.d.ts +41 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts +175 -0
- package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table.service.d.ts +12 -0
- package/widgets/implementations/datapoints-table/datapoints-table.service.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/date-range-picker.component.d.ts +34 -0
- package/widgets/implementations/datapoints-table/date-range-picker.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/index.d.ts +10 -0
- package/widgets/implementations/datapoints-table/index.d.ts.map +1 -0
- package/widgets/implementations/map/map-widget-config.component.d.ts +4 -4
- package/widgets/implementations/map/map-widget-config.component.d.ts.map +1 -1
- package/widgets/implementations/map/map-widget.component.d.ts +8 -3
- package/widgets/implementations/map/map-widget.component.d.ts.map +1 -1
- package/widgets/implementations/map/map-widget.model.d.ts +4 -3
- package/widgets/implementations/map/map-widget.model.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/interval-picker/interval-picker.component.d.ts.map +0 -1
- package/core/i18n/translate.loader.d.ts +0 -31
- package/core/i18n/translate.loader.d.ts.map +0 -1
- package/esm2022/core/dashboard/wiget-time-context/interval-picker/interval-picker.component.mjs +0 -55
- package/esm2022/core/i18n/translate.loader.mjs +0 -71
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
2
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
3
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
4
|
-
import { AppStateService, ContextRouteService, GainsightService, gettext, GroupService, memoize, ModalService,
|
|
4
|
+
import { AppStateService, ContextRouteService, GainsightService, gettext, GroupService, memoize, ModalService, Status, TabsService } from '@c8y/ngx-components';
|
|
5
5
|
import { TranslateService } from '@ngx-translate/core';
|
|
6
6
|
import { clone, cloneDeep, isEqual } from 'lodash-es';
|
|
7
7
|
import { Subject } from 'rxjs';
|
|
@@ -25,7 +25,7 @@ import * as i10 from "./dashboard-settings/dashboard-general-settings.component"
|
|
|
25
25
|
import * as i11 from "./dashboard-settings/dashboard-appearance-settings.component";
|
|
26
26
|
import * as i12 from "./dashboard-settings/dashboard-version-history.component";
|
|
27
27
|
export class DashboardDetailComponent {
|
|
28
|
-
constructor(contextDashboardService, translateService, contextRoute, activatedRoute, tabsService, router, inventory, route, dashboardDetailService, appState,
|
|
28
|
+
constructor(contextDashboardService, translateService, contextRoute, activatedRoute, tabsService, router, inventory, route, dashboardDetailService, appState, groupService, modal, gainsightService) {
|
|
29
29
|
this.contextDashboardService = contextDashboardService;
|
|
30
30
|
this.translateService = translateService;
|
|
31
31
|
this.contextRoute = contextRoute;
|
|
@@ -36,7 +36,6 @@ export class DashboardDetailComponent {
|
|
|
36
36
|
this.route = route;
|
|
37
37
|
this.dashboardDetailService = dashboardDetailService;
|
|
38
38
|
this.appState = appState;
|
|
39
|
-
this.optionsService = optionsService;
|
|
40
39
|
this.groupService = groupService;
|
|
41
40
|
this.modal = modal;
|
|
42
41
|
this.gainsightService = gainsightService;
|
|
@@ -45,7 +44,6 @@ export class DashboardDetailComponent {
|
|
|
45
44
|
this.selectedTab = DashboardDetailsTabId.GENERAL;
|
|
46
45
|
this.dashboardSaved = new EventEmitter();
|
|
47
46
|
this.previewChanged = new EventEmitter();
|
|
48
|
-
this.HIDE_TYPE_DASHBOARD_FOR_ASSETS = 'hideTypeDashboardForAssets';
|
|
49
47
|
this.destroy$ = new Subject();
|
|
50
48
|
this.TABS_OUTLET_NAME = 'dashboardTabs';
|
|
51
49
|
this.TABS = {
|
|
@@ -69,7 +67,7 @@ export class DashboardDetailComponent {
|
|
|
69
67
|
ngOnInit() {
|
|
70
68
|
this.tabs$ = this.tabsService.items$;
|
|
71
69
|
this.currentContext = this.contextRoute.getContextData(this.activatedRoute);
|
|
72
|
-
this.deviceTypeValue = this.
|
|
70
|
+
this.deviceTypeValue = this.context?.type;
|
|
73
71
|
this.displayDeviceTypeValue =
|
|
74
72
|
this.context &&
|
|
75
73
|
this.groupService.isGroup(this.context) &&
|
|
@@ -208,16 +206,10 @@ export class DashboardDetailComponent {
|
|
|
208
206
|
await this.save();
|
|
209
207
|
}
|
|
210
208
|
updateAllowTypeDashboard() {
|
|
211
|
-
this.allowTypeDashboard = this.contextDashboardService.shouldAllowToSetDashboardType(this.mo, this.
|
|
212
|
-
}
|
|
213
|
-
getDeviceTypeValue() {
|
|
214
|
-
const isAllowedTypeValue = this.optionsService.get(this.HIDE_TYPE_DASHBOARD_FOR_ASSETS, true)
|
|
215
|
-
? !!this.context?.c8y_IsDevice
|
|
216
|
-
: !!this.context?.c8y_IsDevice || !!this.context?.c8y_IsDeviceGroup;
|
|
217
|
-
return isAllowedTypeValue ? this.context?.type : null;
|
|
209
|
+
this.allowTypeDashboard = this.contextDashboardService.shouldAllowToSetDashboardType(this.mo, this.currentContext);
|
|
218
210
|
}
|
|
219
211
|
initForm() {
|
|
220
|
-
this.dashboardDetailsForm = this.dashboardDetailService.initForm(this.dashboard, this.isReport, this.allowTypeDashboard
|
|
212
|
+
this.dashboardDetailsForm = this.dashboardDetailService.initForm(this.dashboard, this.isReport, this.allowTypeDashboard);
|
|
221
213
|
this.generalSettingsForm = this.dashboardDetailsForm.get('generalSettingsForm');
|
|
222
214
|
this.appearanceSettingsForm = this.dashboardDetailsForm.get('appearanceSettingsForm');
|
|
223
215
|
}
|
|
@@ -384,7 +376,7 @@ export class DashboardDetailComponent {
|
|
|
384
376
|
}
|
|
385
377
|
this.previewChanged.emit(this.dashboard);
|
|
386
378
|
}
|
|
387
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DashboardDetailComponent, deps: [{ token: i1.ContextDashboardService }, { token: i2.TranslateService }, { token: i3.ContextRouteService }, { token: i4.ActivatedRoute }, { token: i3.TabsService }, { token: i4.Router }, { token: i5.InventoryService }, { token: i4.ActivatedRoute }, { token: i6.DashboardDetailService }, { token: i3.AppStateService }, { token: i3.
|
|
379
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DashboardDetailComponent, deps: [{ token: i1.ContextDashboardService }, { token: i2.TranslateService }, { token: i3.ContextRouteService }, { token: i4.ActivatedRoute }, { token: i3.TabsService }, { token: i4.Router }, { token: i5.InventoryService }, { token: i4.ActivatedRoute }, { token: i6.DashboardDetailService }, { token: i3.AppStateService }, { token: i3.GroupService }, { token: i3.ModalService }, { token: i3.GainsightService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
388
380
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DashboardDetailComponent, selector: "c8y-dashboard-detail", inputs: { isReport: "isReport", deviceType: "deviceType", context: "context", mo: "mo", dashboard: "dashboard", isNamedDashboard: "isNamedDashboard", hideAvailability: "hideAvailability" }, outputs: { dashboardSaved: "dashboardSaved", previewChanged: "previewChanged" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"collapse c8y-top-drawer\"\n [collapse]=\"isCollapsed\"\n [isAnimated]=\"true\"\n>\n <div class=\"p-t-16 p-b-16 p-l-24 p-r-24 separator-bottom\">\n <span class=\"h4\">{{ 'Dashboard settings' | translate }}</span>\n </div>\n\n <div\n class=\"d-flex\"\n [formGroup]=\"dashboardDetailsForm\"\n *ngIf=\"!isCollapsed\"\n >\n <c8y-tabs-outlet\n [tabs]=\"tabs$ | async\"\n [outletName]=\"TABS_OUTLET_NAME\"\n [orientation]=\"'vertical'\"\n class=\"c8y-top-drawer--tabs\"\n ></c8y-tabs-outlet>\n <div class=\"inner-scroll c8y-top-drawer__tabs-container flex-grow p-l-24 p-r-lg-32 p-r-xs-24 p-r-sm-24\">\n <c8y-tab\n *ngIf=\"(!isNamedDashboard && !hideAvailability) || isReport\"\n [label]=\"TABS.general.label\"\n [icon]=\"'imac-settings'\"\n [priority]=\"100\"\n [tabsOutlet]=\"TABS_OUTLET_NAME\"\n (onSelect)=\"selectTab(TABS.general.featureId)\"\n [isActive]=\"selectedTab === TABS.general.featureId\"\n ></c8y-tab>\n <c8y-tab\n [label]=\"TABS.appearance.label\"\n [priority]=\"50\"\n [icon]=\"'web-design'\"\n [tabsOutlet]=\"TABS_OUTLET_NAME\"\n (onSelect)=\"selectTab(TABS.appearance.featureId)\"\n [isActive]=\"selectedTab === TABS.appearance.featureId\"\n ></c8y-tab>\n <c8y-tab\n *ngIf=\"mo?.c8y_DashboardHistory\"\n [label]=\"TABS.versionHistory.label\"\n [icon]=\"'versions'\"\n [priority]=\"10\"\n [tabsOutlet]=\"TABS_OUTLET_NAME\"\n (onSelect)=\"selectTab(TABS.versionHistory.featureId)\"\n [isActive]=\"selectedTab === TABS.versionHistory.featureId\"\n ></c8y-tab>\n <ng-container [ngSwitch]=\"selectedTab\">\n <c8y-dashboard-general-settings\n *ngSwitchCase=\"TABS.general.featureId\"\n [isReport]=\"isReport\"\n [isNamedDashboard]=\"isNamedDashboard\"\n [hideAvailability]=\"hideAvailability\"\n [dashboard]=\"dashboard\"\n [generalSettingsForm]=\"generalSettingsForm\"\n [deviceTypeValue]=\"deviceTypeValue\"\n [displayDeviceTypeValue]=\"displayDeviceTypeValue\"\n [mo]=\"mo\"\n [allowTypeDashboard]=\"allowTypeDashboard\"\n [isDevice]=\"!!context?.c8y_IsDevice\"\n class=\"animated fadeIn\"\n (onDuplicateWithoutType)=\"duplicateWithoutType()\"\n ></c8y-dashboard-general-settings>\n <c8y-dashboard-appearance-settings\n *ngSwitchCase=\"TABS.appearance.featureId\"\n [dashboard]=\"dashboard\"\n [appearanceSettingsForm]=\"appearanceSettingsForm\"\n (previewChanged)=\"previewChanged.emit($event)\"\n class=\"animated fadeIn\"\n ></c8y-dashboard-appearance-settings>\n <c8y-dashboard-version-history\n *ngSwitchCase=\"TABS.versionHistory.featureId\"\n [dashboardHistory]=\"mo.c8y_DashboardHistory\"\n [isReport]=\"isReport\"\n (onRevert)=\"revertDashboard($event)\"\n class=\"animated fadeIn\"\n ></c8y-dashboard-version-history>\n </ng-container>\n </div>\n </div>\n\n <div class=\"c8y-top-drawer--footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n data-cy=\"dashboard-detail--cancel-dashboard\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"button\"\n data-cy=\"dashboard-detail--save-dashboard\"\n (click)=\"save()\"\n [disabled]=\"\n (dashboardDetailsForm?.invalid || dashboardDetailsForm?.pristine) && this.isEdit\n \"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i7.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i3.TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: ["tabs", "orientation", "navigatorOpen", "outletName", "context", "hasHeader"] }, { kind: "component", type: i3.TabComponent, selector: "c8y-tab", inputs: ["path", "label", "icon", "priority", "orientation", "injector", "tabsOutlet", "isActive"], outputs: ["onSelect"] }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "component", type: i10.DashboardGeneralSettingsComponent, selector: "c8y-dashboard-general-settings", inputs: ["isReport", "isNamedDashboard", "hideAvailability", "dashboard", "generalSettingsForm", "deviceTypeValue", "displayDeviceTypeValue", "allowTypeDashboard", "isDevice", "mo"], outputs: ["onDuplicateWithoutType"] }, { kind: "component", type: i11.DashboardAppearanceSettingsComponent, selector: "c8y-dashboard-appearance-settings", inputs: ["dashboard", "appearanceSettingsForm"], outputs: ["previewChanged"] }, { kind: "component", type: i12.DashboardVersionHistoryComponent, selector: "c8y-dashboard-version-history", inputs: ["dashboardHistory", "isReport"], outputs: ["onRevert"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }] }); }
|
|
389
381
|
}
|
|
390
382
|
__decorate([
|
|
@@ -396,7 +388,7 @@ __decorate([
|
|
|
396
388
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DashboardDetailComponent, decorators: [{
|
|
397
389
|
type: Component,
|
|
398
390
|
args: [{ selector: 'c8y-dashboard-detail', template: "<div\n class=\"collapse c8y-top-drawer\"\n [collapse]=\"isCollapsed\"\n [isAnimated]=\"true\"\n>\n <div class=\"p-t-16 p-b-16 p-l-24 p-r-24 separator-bottom\">\n <span class=\"h4\">{{ 'Dashboard settings' | translate }}</span>\n </div>\n\n <div\n class=\"d-flex\"\n [formGroup]=\"dashboardDetailsForm\"\n *ngIf=\"!isCollapsed\"\n >\n <c8y-tabs-outlet\n [tabs]=\"tabs$ | async\"\n [outletName]=\"TABS_OUTLET_NAME\"\n [orientation]=\"'vertical'\"\n class=\"c8y-top-drawer--tabs\"\n ></c8y-tabs-outlet>\n <div class=\"inner-scroll c8y-top-drawer__tabs-container flex-grow p-l-24 p-r-lg-32 p-r-xs-24 p-r-sm-24\">\n <c8y-tab\n *ngIf=\"(!isNamedDashboard && !hideAvailability) || isReport\"\n [label]=\"TABS.general.label\"\n [icon]=\"'imac-settings'\"\n [priority]=\"100\"\n [tabsOutlet]=\"TABS_OUTLET_NAME\"\n (onSelect)=\"selectTab(TABS.general.featureId)\"\n [isActive]=\"selectedTab === TABS.general.featureId\"\n ></c8y-tab>\n <c8y-tab\n [label]=\"TABS.appearance.label\"\n [priority]=\"50\"\n [icon]=\"'web-design'\"\n [tabsOutlet]=\"TABS_OUTLET_NAME\"\n (onSelect)=\"selectTab(TABS.appearance.featureId)\"\n [isActive]=\"selectedTab === TABS.appearance.featureId\"\n ></c8y-tab>\n <c8y-tab\n *ngIf=\"mo?.c8y_DashboardHistory\"\n [label]=\"TABS.versionHistory.label\"\n [icon]=\"'versions'\"\n [priority]=\"10\"\n [tabsOutlet]=\"TABS_OUTLET_NAME\"\n (onSelect)=\"selectTab(TABS.versionHistory.featureId)\"\n [isActive]=\"selectedTab === TABS.versionHistory.featureId\"\n ></c8y-tab>\n <ng-container [ngSwitch]=\"selectedTab\">\n <c8y-dashboard-general-settings\n *ngSwitchCase=\"TABS.general.featureId\"\n [isReport]=\"isReport\"\n [isNamedDashboard]=\"isNamedDashboard\"\n [hideAvailability]=\"hideAvailability\"\n [dashboard]=\"dashboard\"\n [generalSettingsForm]=\"generalSettingsForm\"\n [deviceTypeValue]=\"deviceTypeValue\"\n [displayDeviceTypeValue]=\"displayDeviceTypeValue\"\n [mo]=\"mo\"\n [allowTypeDashboard]=\"allowTypeDashboard\"\n [isDevice]=\"!!context?.c8y_IsDevice\"\n class=\"animated fadeIn\"\n (onDuplicateWithoutType)=\"duplicateWithoutType()\"\n ></c8y-dashboard-general-settings>\n <c8y-dashboard-appearance-settings\n *ngSwitchCase=\"TABS.appearance.featureId\"\n [dashboard]=\"dashboard\"\n [appearanceSettingsForm]=\"appearanceSettingsForm\"\n (previewChanged)=\"previewChanged.emit($event)\"\n class=\"animated fadeIn\"\n ></c8y-dashboard-appearance-settings>\n <c8y-dashboard-version-history\n *ngSwitchCase=\"TABS.versionHistory.featureId\"\n [dashboardHistory]=\"mo.c8y_DashboardHistory\"\n [isReport]=\"isReport\"\n (onRevert)=\"revertDashboard($event)\"\n class=\"animated fadeIn\"\n ></c8y-dashboard-version-history>\n </ng-container>\n </div>\n </div>\n\n <div class=\"c8y-top-drawer--footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n data-cy=\"dashboard-detail--cancel-dashboard\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"button\"\n data-cy=\"dashboard-detail--save-dashboard\"\n (click)=\"save()\"\n [disabled]=\"\n (dashboardDetailsForm?.invalid || dashboardDetailsForm?.pristine) && this.isEdit\n \"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</div>\n" }]
|
|
399
|
-
}], ctorParameters: () => [{ type: i1.ContextDashboardService }, { type: i2.TranslateService }, { type: i3.ContextRouteService }, { type: i4.ActivatedRoute }, { type: i3.TabsService }, { type: i4.Router }, { type: i5.InventoryService }, { type: i4.ActivatedRoute }, { type: i6.DashboardDetailService }, { type: i3.AppStateService }, { type: i3.
|
|
391
|
+
}], ctorParameters: () => [{ type: i1.ContextDashboardService }, { type: i2.TranslateService }, { type: i3.ContextRouteService }, { type: i4.ActivatedRoute }, { type: i3.TabsService }, { type: i4.Router }, { type: i5.InventoryService }, { type: i4.ActivatedRoute }, { type: i6.DashboardDetailService }, { type: i3.AppStateService }, { type: i3.GroupService }, { type: i3.ModalService }, { type: i3.GainsightService }], propDecorators: { isReport: [{
|
|
400
392
|
type: Input
|
|
401
393
|
}], deviceType: [{
|
|
402
394
|
type: Input
|
|
@@ -415,4 +407,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
415
407
|
}], previewChanged: [{
|
|
416
408
|
type: Output
|
|
417
409
|
}], convertStringToHash: [] } });
|
|
418
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb250ZXh0LWRhc2hib2FyZC9kYXNoYm9hcmQtZGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL2Rhc2hib2FyZC1kZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBRUwsZUFBZSxFQUVmLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsT0FBTyxFQUNQLFlBQVksRUFDWixPQUFPLEVBQ1AsWUFBWSxFQUNaLGNBQWMsRUFDZCxNQUFNLEVBRU4sV0FBVyxFQUNaLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RELE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUdMLDBCQUEwQixFQUMxQixxQkFBcUIsRUFHckIsa0JBQWtCLEVBQ2xCLHVDQUF1QyxFQUN4QyxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFNcEUsTUFBTSxPQUFPLHdCQUF3QjtJQThDbkMsWUFDVSx1QkFBZ0QsRUFDaEQsZ0JBQWtDLEVBQ2xDLFlBQWlDLEVBQ2pDLGNBQThCLEVBQzlCLFdBQXdCLEVBQ3hCLE1BQWMsRUFDZCxTQUEyQixFQUMzQixLQUFxQixFQUNyQixzQkFBOEMsRUFDOUMsUUFBeUIsRUFDekIsY0FBOEIsRUFDOUIsWUFBMEIsRUFDMUIsS0FBbUIsRUFDbkIsZ0JBQWtDO1FBYmxDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUEzRDVDLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBU1YscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBTWxDLGdCQUFXLEdBQTBCLHFCQUFxQixDQUFDLE9BQU8sQ0FBQztRQU16RCxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFvQixDQUFDO1FBQ3RELG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUMxQyxtQ0FBOEIsR0FBNkIsNEJBQTRCLENBQUM7UUFDekYsYUFBUSxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRXZDLHFCQUFnQixHQUFHLGVBQWUsQ0FBQztRQUNuQyxTQUFJLEdBQXlCO1lBQ3BDLE9BQU8sRUFBRTtnQkFDUCxTQUFTLEVBQUUscUJBQXFCLENBQUMsT0FBTztnQkFDeEMsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osS0FBSyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUM7YUFDMUI7WUFDRCxVQUFVLEVBQUU7Z0JBQ1YsU0FBUyxFQUFFLHFCQUFxQixDQUFDLFVBQVU7Z0JBQzNDLFFBQVEsRUFBRSxFQUFFO2dCQUNaLEtBQUssRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDO2FBQzdCO1lBQ0QsY0FBYyxFQUFFO2dCQUNkLFNBQVMsRUFBRSxxQkFBcUIsQ0FBQyxjQUFjO2dCQUMvQyxRQUFRLEVBQUUsRUFBRTtnQkFDWixLQUFLLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixDQUFDO2FBQ2xDO1NBQ0YsQ0FBQztJQWlCQyxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7UUFDckMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsc0JBQXNCO1lBQ3pCLElBQUksQ0FBQyxPQUFPO2dCQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ3ZDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDdEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNqRCxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUUzQixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNmLEdBQUcsSUFBSSxDQUFDLFNBQVM7WUFDakIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSztZQUNqQyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLO1NBQ3JDLENBQUM7UUFDRixNQUFNLHVCQUF1QixHQUFhLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNqRixJQUFJLEdBQUcsS0FBSyxxQkFBcUIsRUFBRSxDQUFDO2dCQUNsQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkQsQ0FBQztZQUNELE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDakUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQjtZQUNyRSxDQUFDLENBQUMsRUFBRTtZQUNKLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCO2dCQUNyQixDQUFDLENBQUMsSUFBSTtnQkFDTixDQUFDLENBQUMsU0FBUyxDQUFDO1FBRWhCLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxLQUFLLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDeEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0I7WUFDL0IsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNsQyxDQUFDO2FBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQy9CLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsR0FBRztnQkFDN0IsSUFBSSxDQUFDLFNBQVM7Z0JBQ2QsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUN2RSxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxpQ0FBaUMsQ0FBQyxnQkFBMEI7UUFDMUQsT0FBTztZQUNMLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVE7WUFDN0MsdUJBQXVCLEVBQUUsZ0JBQWdCO2lCQUN0QyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssWUFBWSxDQUFDO2lCQUN2QyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUM7WUFDM0QsVUFBVSxFQUFFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxZQUFZLENBQUM7Z0JBQ2hFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVU7Z0JBQzNCLENBQUMsQ0FBQyxTQUFTO1NBQ2QsQ0FBQztJQUNKLENBQUM7SUFFRCxTQUFTLENBQUMsV0FBa0M7UUFDMUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU07UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxvR0FBb0c7WUFDcEcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBVyxFQUFFLEVBQUU7Z0JBQzlELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzVELENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTztRQUNULENBQUM7YUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLE9BQU87UUFDVCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDN0UsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsS0FBSztRQUNyQyxJQUFJLGFBQXNCLENBQUM7UUFDM0IsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pELGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDdkIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNoQixhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDOUMsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2xDLENBQUM7UUFDRCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxDQUFDLE1BQWU7UUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxTQUEyQjtRQUMvQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CO1lBQ3JFLENBQUMsQ0FBQyxFQUFFO1lBQ0osQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0I7Z0JBQ3JCLENBQUMsQ0FBQyxJQUFJO2dCQUNOLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDaEIsTUFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELEtBQUssQ0FBQyxvQkFBb0I7UUFDeEIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFO1lBQzVGLGFBQWEsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLElBQUk7U0FDbkQsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQztZQUNsQyxVQUFVLEVBQUUsS0FBSztZQUNqQixJQUFJLEVBQUUsZ0JBQWdCO1NBQ3ZCLENBQUMsQ0FBQztRQUNILGtGQUFrRjtRQUNsRixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRU8sd0JBQXdCO1FBQzlCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsNkJBQTZCLENBQ2xGLElBQUksQ0FBQyxFQUFFLEVBQ1AsSUFBSSxDQUFDLGVBQWUsQ0FDckIsQ0FBQztJQUNKLENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsOEJBQThCLEVBQUUsSUFBSSxDQUFDO1lBQzNGLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZO1lBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUM7UUFDdEUsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN4RCxDQUFDO0lBRU8sUUFBUTtRQUNkLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUM5RCxJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksQ0FBQyxRQUFRLEVBQ2IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMzRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQWMsQ0FBQztRQUM3RixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FDekQsd0JBQXdCLENBQ1osQ0FBQztJQUNqQixDQUFDO0lBRU8sS0FBSyxDQUFDLGNBQWM7UUFDMUIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDdEIsT0FBTyxDQUFDLHlCQUF5QixDQUFDLEVBQ2xDLE9BQU8sQ0FDTCxxRkFBcUYsQ0FDdEYsRUFDRCxNQUFNLENBQUMsT0FBTyxFQUNkO2dCQUNFLEVBQUUsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDO2dCQUNwQixNQUFNLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQzthQUMxQixDQUNGLENBQUM7WUFDRixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQyxrQkFBa0I7UUFDOUIsTUFBTSxFQUFFLEdBQWtDLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FDakYsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsY0FBYyxDQUNwQixDQUFDO1FBRUYsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTyxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQWlDO1FBQzdELE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEUsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUzRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFO1lBQ2pGLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGFBQWE7WUFDaEUsTUFBTSxFQUFFLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTTtZQUNuRCxJQUFJLEVBQUUsYUFBYTtZQUNuQixFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDVCxNQUFNLEVBQUUsR0FBRyxhQUFhLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDeEMsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVztZQUMvRCxlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsV0FBVztZQUM1RCxlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXO1lBQ25FLGlCQUFpQixFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXO1lBQ3RGLDRCQUE0QixFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDNUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxJQUFJLGFBQWEsRUFBRTtnQkFDbEMsQ0FBQyxDQUFDLFdBQVc7WUFDZix3QkFBd0IsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXO1lBQzdGLDBCQUEwQixFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXO1lBQzFGLGdDQUFnQyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDaEQsQ0FBQyxDQUFDLEdBQUcsVUFBVSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLGFBQWEsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDbkUsQ0FBQyxDQUFDLFdBQVc7WUFDZixhQUFhLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQ3BGLE9BQU8sRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsZUFBZSxDQUNuRCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQTZCLENBQ2xEO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdhLEFBQU4sS0FBSyxDQUFDLG1CQUFtQixDQUFDLEdBQVc7UUFDM0MsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDdEQsQ0FBQyxDQUFDLEdBQUc7WUFDTCxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTyxLQUFLLENBQUMsZUFBZTtRQUMzQixJQUFJLENBQUM7WUFDSCxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNsRixNQUFNLE1BQU0sR0FBRyxDQUNiLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFlBQVksQ0FBQztnQkFDOUMsSUFBSTtnQkFDSixJQUFJO2dCQUNKLG1CQUFtQjtnQkFDbkIsUUFBUTtnQkFDUixXQUFXO2FBQ2UsQ0FBQyxDQUM5QixDQUFDLElBQUksQ0FBQztZQUVQLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FDdkMsSUFBSSxDQUFDLFNBQVMsRUFDZCxTQUFTLEVBQ1QsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUNsRSxDQUFDO1lBQ0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtnQkFDOUUsU0FBUyxFQUFFLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVTtnQkFDN0QsTUFBTSxFQUFFLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTTtnQkFDbkQsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO2dCQUNqQixFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQ2IsT0FBTyxFQUFFLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTTthQUNyRCxDQUFDLENBQUM7WUFDSCxJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsdUJBQXVCLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUQsQ0FBQztZQUNELElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDWixpQkFBaUI7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsZUFBZTtRQUMzQixJQUFJLENBQUM7WUFDSCxNQUFNLFdBQVcsR0FBa0MsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN0RSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQzNCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEdBQUcsR0FBRyxDQUFDO2dCQUN2RSxXQUFXLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQztnQkFDaEMsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDO29CQUN0QixFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNuQixJQUFJO29CQUNKLElBQUk7b0JBQ0osbUJBQW1CO29CQUNuQixRQUFRO29CQUNSLFdBQVc7aUJBQ1osQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFdBQVcsQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO1lBQ2xDLENBQUM7WUFFRCxNQUFNLGtCQUFrQixHQUFHLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FDbEUsV0FBVyxFQUNYLElBQUksQ0FBQyxjQUFjLENBQ3BCLENBQUM7WUFDRixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUVoQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ1osaUJBQWlCO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBRU8sSUFBSTtRQUNWLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ2hGLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDNUYsQ0FBQztRQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsV0FBVztZQUNkLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCO2dCQUM1QyxDQUFDLENBQUMscUJBQXFCLENBQUMsVUFBVTtnQkFDbEMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQztRQUNwQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU8sdUJBQXVCO1FBQzdCLE1BQU0sbUJBQW1CLEdBQThCO1lBQ3JELElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzdGLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDckIsQ0FBQyxDQUFDLHVDQUF1QztnQkFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQywwQkFBMEI7WUFDMUQsSUFBSSxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0I7WUFDeEQsZUFBZSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQ2hDLE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQztZQUNyQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDMUMsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFFTyxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQTJCO1FBQ3BELEVBQUUsQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzVELE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzdELENBQUM7UUFDRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTyx3QkFBd0I7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDNUQseUJBQXlCO1lBQ3pCLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUN6RCxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssZUFBZSxDQUFDLFNBQVMsQ0FDL0MsQ0FBQztZQUNGLHFHQUFxRztZQUNyRyxJQUFJLENBQUMsa0JBQWtCLElBQUksZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLENBQUM7Z0JBQzNELE9BQU87WUFDVCxDQUFDO1lBQ0Qsc0VBQXNFO1lBQ3RFLGtCQUFrQixDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDL0Isa0JBQWtCLENBQUMsUUFBUSxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDN0IsQ0FBQztRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzQyxDQUFDOzhHQW5iVSx3QkFBd0I7a0dBQXhCLHdCQUF3QixnV0NqRHJDLHl3SEF5R0E7O0FEbVBnQjtJQURiLE9BQU8sRUFBRTs7OzttRUFRVDsyRkFsVFUsd0JBQXdCO2tCQUpwQyxTQUFTOytCQUNFLHNCQUFzQjswZEFPdkIsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQVlJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFvUk8sbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uT3B0aW9ucyxcbiAgQXBwU3RhdGVTZXJ2aWNlLFxuICBDb250ZXh0RGF0YSxcbiAgQ29udGV4dFJvdXRlU2VydmljZSxcbiAgR2FpbnNpZ2h0U2VydmljZSxcbiAgZ2V0dGV4dCxcbiAgR3JvdXBTZXJ2aWNlLFxuICBtZW1vaXplLFxuICBNb2RhbFNlcnZpY2UsXG4gIE9wdGlvbnNTZXJ2aWNlLFxuICBTdGF0dXMsXG4gIFRhYixcbiAgVGFic1NlcnZpY2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBjbG9uZSwgY2xvbmVEZWVwLCBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIENvbnRleHREYXNoYm9hcmQsXG4gIENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0LFxuICBEQVNIQk9BUkRfU0VUVElOR1NfQ0hBTkdFUyxcbiAgRGFzaGJvYXJkRGV0YWlsc1RhYklkLFxuICBEYXNoYm9hcmREZXRhaWxzVGFicyxcbiAgRGFzaGJvYXJkSGlzdG9yeURlc2NyaXB0aW9uLFxuICBQUk9EVUNUX0VYUEVSSUVOQ0UsXG4gIFJFUE9SVF9ERUZBVUxUX05BVklHQVRJT05fTk9ERV9QUklPUklUWVxufSBmcm9tICcuL2NvbnRleHQtZGFzaGJvYXJkLm1vZGVsJztcbmltcG9ydCB7IENvbnRleHREYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZXh0LWRhc2hib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0LCBJbnZlbnRvcnlTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBuZXdEYXNoYm9hcmRUYWIgfSBmcm9tICcuL25ldy1kYXNoYm9hcmQuZ3VhcmQnO1xuaW1wb3J0IHsgRGFzaGJvYXJkRGV0YWlsU2VydmljZSB9IGZyb20gJy4vZGFzaGJvYXJkLWRldGFpbC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRhc2hib2FyZC1kZXRhaWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGFzaGJvYXJkLWRldGFpbC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkRGV0YWlsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIGlzQ29sbGFwc2VkID0gdHJ1ZTtcbiAgY3VycmVudENvbnRleHQ6IENvbnRleHREYXRhO1xuICBjdXJyZW50RGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkO1xuICBASW5wdXQoKSBpc1JlcG9ydDogYm9vbGVhbjtcbiAgQElucHV0KCkgZGV2aWNlVHlwZTogc3RyaW5nO1xuICBASW5wdXQoKSBjb250ZXh0OiBhbnk7XG4gIEBJbnB1dCgpIG1vOiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdDtcbiAgQElucHV0KCkgZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkO1xuICBASW5wdXQoKSBpc05hbWVkRGFzaGJvYXJkOiBib29sZWFuO1xuICBASW5wdXQoKSBoaWRlQXZhaWxhYmlsaXR5ID0gZmFsc2U7XG4gIGRldmljZVR5cGVWYWx1ZTogc3RyaW5nO1xuICBkaXNwbGF5RGV2aWNlVHlwZVZhbHVlOiBzdHJpbmc7XG4gIGljb25zOiBzdHJpbmdbXTtcbiAgbmFtZVBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIHRhYnMkOiBPYnNlcnZhYmxlPFRhYltdPjtcbiAgc2VsZWN0ZWRUYWI6IERhc2hib2FyZERldGFpbHNUYWJJZCA9IERhc2hib2FyZERldGFpbHNUYWJJZC5HRU5FUkFMO1xuICBkYXNoYm9hcmREZXRhaWxzRm9ybTogUmV0dXJuVHlwZTxEYXNoYm9hcmREZXRhaWxTZXJ2aWNlWydpbml0Rm9ybSddPjtcbiAgZ2VuZXJhbFNldHRpbmdzRm9ybTogUmV0dXJuVHlwZTxEYXNoYm9hcmREZXRhaWxTZXJ2aWNlWydpbml0R2VuZXJhbFNldHRpbmdzRm9ybSddPjtcbiAgYXBwZWFyYW5jZVNldHRpbmdzRm9ybTogUmV0dXJuVHlwZTxEYXNoYm9hcmREZXRhaWxTZXJ2aWNlWydpbml0QXBwZWFyYW5jZVNldHRpbmdzRm9ybSddPjtcbiAgYWxsb3dUeXBlRGFzaGJvYXJkOiBib29sZWFuO1xuICBpc0VkaXQ6IGJvb2xlYW47XG4gIEBPdXRwdXQoKSBkYXNoYm9hcmRTYXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q29udGV4dERhc2hib2FyZD4oKTtcbiAgQE91dHB1dCgpIHByZXZpZXdDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHJlYWRvbmx5IEhJREVfVFlQRV9EQVNIQk9BUkRfRk9SX0FTU0VUUzoga2V5b2YgQXBwbGljYXRpb25PcHRpb25zID0gJ2hpZGVUeXBlRGFzaGJvYXJkRm9yQXNzZXRzJztcbiAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcmVhZG9ubHkgVEFCU19PVVRMRVRfTkFNRSA9ICdkYXNoYm9hcmRUYWJzJztcbiAgcmVhZG9ubHkgVEFCUzogRGFzaGJvYXJkRGV0YWlsc1RhYnMgPSB7XG4gICAgZ2VuZXJhbDoge1xuICAgICAgZmVhdHVyZUlkOiBEYXNoYm9hcmREZXRhaWxzVGFiSWQuR0VORVJBTCxcbiAgICAgIHByaW9yaXR5OiAzMCxcbiAgICAgIGxhYmVsOiBnZXR0ZXh0KCdHZW5lcmFsJylcbiAgICB9LFxuICAgIGFwcGVhcmFuY2U6IHtcbiAgICAgIGZlYXR1cmVJZDogRGFzaGJvYXJkRGV0YWlsc1RhYklkLkFQUEVBUkFOQ0UsXG4gICAgICBwcmlvcml0eTogMjAsXG4gICAgICBsYWJlbDogZ2V0dGV4dCgnQXBwZWFyYW5jZScpXG4gICAgfSxcbiAgICB2ZXJzaW9uSGlzdG9yeToge1xuICAgICAgZmVhdHVyZUlkOiBEYXNoYm9hcmREZXRhaWxzVGFiSWQuVkVSU0lPTkhJU1RPUlksXG4gICAgICBwcmlvcml0eTogMTAsXG4gICAgICBsYWJlbDogZ2V0dGV4dCgnVmVyc2lvbiBoaXN0b3J5JylcbiAgICB9XG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb250ZXh0RGFzaGJvYXJkU2VydmljZTogQ29udGV4dERhc2hib2FyZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFJvdXRlOiBDb250ZXh0Um91dGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgdGFic1NlcnZpY2U6IFRhYnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBkYXNoYm9hcmREZXRhaWxTZXJ2aWNlOiBEYXNoYm9hcmREZXRhaWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwU3RhdGU6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIG9wdGlvbnNTZXJ2aWNlOiBPcHRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGdyb3VwU2VydmljZTogR3JvdXBTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWw6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGdhaW5zaWdodFNlcnZpY2U6IEdhaW5zaWdodFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudGFicyQgPSB0aGlzLnRhYnNTZXJ2aWNlLml0ZW1zJDtcbiAgICB0aGlzLmN1cnJlbnRDb250ZXh0ID0gdGhpcy5jb250ZXh0Um91dGUuZ2V0Q29udGV4dERhdGEodGhpcy5hY3RpdmF0ZWRSb3V0ZSk7XG4gICAgdGhpcy5kZXZpY2VUeXBlVmFsdWUgPSB0aGlzLmdldERldmljZVR5cGVWYWx1ZSgpO1xuICAgIHRoaXMuZGlzcGxheURldmljZVR5cGVWYWx1ZSA9XG4gICAgICB0aGlzLmNvbnRleHQgJiZcbiAgICAgIHRoaXMuZ3JvdXBTZXJ2aWNlLmlzR3JvdXAodGhpcy5jb250ZXh0KSAmJlxuICAgICAgIXRoaXMuZ3JvdXBTZXJ2aWNlLmlzQXNzZXQodGhpcy5jb250ZXh0KVxuICAgICAgICA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ0dyb3VwJykpXG4gICAgICAgIDogdGhpcy5kZXZpY2VUeXBlVmFsdWU7XG5cbiAgICB0aGlzLnVwZGF0ZUFsbG93VHlwZURhc2hib2FyZCgpO1xuICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQWxsb3dUeXBlRGFzaGJvYXJkKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzRWRpdCkge1xuICAgICAgdGhpcy5pbml0aWFsaXplQ29uZmlndXJhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGFzeW5jIHNhdmUoKSB7XG4gICAgY29uc3Qgb2xkRGFzaGJvYXJkID0gY2xvbmVEZWVwKHRoaXMuZGFzaGJvYXJkKTtcbiAgICB0aGlzLmRhc2hib2FyZCA9IHtcbiAgICAgIC4uLnRoaXMuZGFzaGJvYXJkLFxuICAgICAgLi4udGhpcy5nZW5lcmFsU2V0dGluZ3NGb3JtLnZhbHVlLFxuICAgICAgLi4udGhpcy5hcHBlYXJhbmNlU2V0dGluZ3NGb3JtLnZhbHVlXG4gICAgfTtcbiAgICBjb25zdCBkYXNoYm9hcmRTZXR0aW5nQ2hhbmdlczogc3RyaW5nW10gPSBPYmplY3Qua2V5cyh0aGlzLmRhc2hib2FyZCkuZmlsdGVyKGtleSA9PiB7XG4gICAgICBpZiAoa2V5ID09PSAnYzh5X0lzTmF2aWdhdG9yTm9kZScpIHtcbiAgICAgICAgcmV0dXJuICEhb2xkRGFzaGJvYXJkW2tleV0gIT09ICEhdGhpcy5kYXNoYm9hcmRba2V5XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAhaXNFcXVhbChvbGREYXNoYm9hcmRba2V5XSwgdGhpcy5kYXNoYm9hcmRba2V5XSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhc2hib2FyZC5hdXRob3IgPSB0aGlzLmFwcFN0YXRlLmN1cnJlbnRVc2VyLnZhbHVlLnVzZXJOYW1lO1xuICAgIHRoaXMuZGFzaGJvYXJkLmM4eV9Jc05hdmlnYXRvck5vZGUgPSB0aGlzLmRhc2hib2FyZC5jOHlfSXNOYXZpZ2F0b3JOb2RlXG4gICAgICA/IHt9XG4gICAgICA6IHRoaXMuY3VycmVudERhc2hib2FyZFxuICAgICAgICA/IG51bGxcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLmRhc2hib2FyZC5kZXZpY2VUeXBlVmFsdWUgPz89IHRoaXMuZGV2aWNlVHlwZVZhbHVlO1xuICAgIHRoaXMuZGFzaGJvYXJkLmhpc3RvcnlEZXNjcmlwdGlvbiA9XG4gICAgICB0aGlzLnVwZGF0ZURhc2hib2FyZEhpc3RvcnlEZXNjcmlwdGlvbihkYXNoYm9hcmRTZXR0aW5nQ2hhbmdlcyk7XG4gICAgaWYgKCF0aGlzLmlzRWRpdCAmJiAhdGhpcy5pc1JlcG9ydCkge1xuICAgICAgYXdhaXQgdGhpcy5jcmVhdGVOZXdEYXNoYm9hcmQoKTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLmlzRWRpdCAmJiB0aGlzLmlzUmVwb3J0KSB7XG4gICAgICBhd2FpdCB0aGlzLmNyZWF0ZU5ld1JlcG9ydCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZURhc2hib2FyZCgpO1xuICAgICAgdGhpcy5tby5jOHlfRGFzaGJvYXJkSGlzdG9yeSA9IFtcbiAgICAgICAgdGhpcy5kYXNoYm9hcmQsXG4gICAgICAgIC4uLih0aGlzLm1vPy5jOHlfRGFzaGJvYXJkSGlzdG9yeSA/IHRoaXMubW8uYzh5X0Rhc2hib2FyZEhpc3RvcnkgOiBbXSlcbiAgICAgIF07XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlRGFzaGJvYXJkSGlzdG9yeURlc2NyaXB0aW9uKGRhc2hib2FyZENoYW5nZXM6IHN0cmluZ1tdKTogRGFzaGJvYXJkSGlzdG9yeURlc2NyaXB0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2hhbmdlVHlwZTogdGhpcy5pc0VkaXQgPyAndXBkYXRlJyA6ICdjcmVhdGUnLFxuICAgICAgZGFzaGJvYXJkU2V0dGluZ0NoYW5nZXM6IGRhc2hib2FyZENoYW5nZXNcbiAgICAgICAgLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZSAhPT0gJ2RldmljZVR5cGUnKVxuICAgICAgICAubWFwKHZhbHVlID0+IERBU0hCT0FSRF9TRVRUSU5HU19DSEFOR0VTW3ZhbHVlXSB8fCB2YWx1ZSksXG4gICAgICBkZXZpY2VUeXBlOiBkYXNoYm9hcmRDaGFuZ2VzLmZpbmQodmFsdWUgPT4gdmFsdWUgPT09ICdkZXZpY2VUeXBlJylcbiAgICAgICAgPyB0aGlzLmRhc2hib2FyZC5kZXZpY2VUeXBlXG4gICAgICAgIDogdW5kZWZpbmVkXG4gICAgfTtcbiAgfVxuXG4gIHNlbGVjdFRhYihzZWxlY3RlZFRhYjogRGFzaGJvYXJkRGV0YWlsc1RhYklkKSB7XG4gICAgdGhpcy5zZWxlY3RlZFRhYiA9IHNlbGVjdGVkVGFiO1xuICAgIHRoaXMudGFic1NlcnZpY2UucmVmcmVzaCgpO1xuICB9XG5cbiAgYXN5bmMgY2FuY2VsKCkge1xuICAgIGlmICghdGhpcy5pc0VkaXQgJiYgIXRoaXMuaXNSZXBvcnQpIHtcbiAgICAgIC8vIGRhc2hib2FyZCBjcmVhdGlvbiBpbiBpdCdzIG93biB0YWItIGNvbmZpcm0gYW5kIGNsZWFudXAgdHJpZ2dlcmVkIGluIGNhbkRlYWN0aXZhdGUgZHVyaW5nIHJvdXRpbmdcbiAgICAgIHRoaXMudGFic1NlcnZpY2UuaXRlbXMkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCh0YWJzOiBUYWJbXSkgPT4ge1xuICAgICAgICBjb25zdCB0YWIgPSB0YWJzLmZpbmQodCA9PiB0LmZlYXR1cmVJZCAhPT0gbmV3RGFzaGJvYXJkVGFiLmZlYXR1cmVJZCk7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGFiLnBhdGgsIHsgcmVwbGFjZVVybDogdHJ1ZSB9KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNFZGl0ICYmIHRoaXMuaXNSZXBvcnQpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsncmVwb3J0cyddKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGFzaGJvYXJkRGV0YWlsc0Zvcm0uZGlydHkgJiYgIShhd2FpdCB0aGlzLmNvbmZpcm1DbG9zaW5nKCkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2xlYW51cEFmdGVyRGV0YWlsc0Nsb3NlKCk7XG4gIH1cblxuICBhc3luYyBjYW5EZWFjdGl2YXRlKG9taXRDb25maXJtID0gZmFsc2UpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBsZXQgY2FuRGVhY3RpdmF0ZTogYm9vbGVhbjtcbiAgICBpZiAodGhpcy5pc0NvbGxhcHNlZCB8fCAhdGhpcy5kYXNoYm9hcmREZXRhaWxzRm9ybS5kaXJ0eSkge1xuICAgICAgY2FuRGVhY3RpdmF0ZSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChvbWl0Q29uZmlybSkge1xuICAgICAgICBjYW5EZWFjdGl2YXRlID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYW5EZWFjdGl2YXRlID0gYXdhaXQgdGhpcy5jb25maXJtQ2xvc2luZygpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2FuRGVhY3RpdmF0ZSkge1xuICAgICAgdGhpcy5jbGVhbnVwQWZ0ZXJEZXRhaWxzQ2xvc2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIGNhbkRlYWN0aXZhdGU7XG4gIH1cblxuICBzaG93KGlzRWRpdDogYm9vbGVhbikge1xuICAgIHRoaXMuaXNFZGl0ID0gaXNFZGl0O1xuICAgIGlmICh0aGlzLmlzRWRpdCkge1xuICAgICAgdGhpcy5lZGl0KCk7XG4gICAgfVxuICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgICB0aGlzLmlzQ29sbGFwc2VkID0gZmFsc2U7XG4gIH1cblxuICBhc3luYyByZXZlcnREYXNoYm9hcmQoZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkKSB7XG4gICAgdGhpcy5kYXNoYm9hcmQgPSBkYXNoYm9hcmQ7XG4gICAgdGhpcy5kYXNoYm9hcmQuYzh5X0lzTmF2aWdhdG9yTm9kZSA9IHRoaXMuZGFzaGJvYXJkLmM4eV9Jc05hdmlnYXRvck5vZGVcbiAgICAgID8ge31cbiAgICAgIDogdGhpcy5jdXJyZW50RGFzaGJvYXJkXG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZURhc2hib2FyZCgpO1xuICB9XG5cbiAgYXN5bmMgZHVwbGljYXRlV2l0aG91dFR5cGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbmV3RGFzaGJvYXJkTmFtZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ3t7IGRhc2hib2FyZE5hbWUgfX0gKGNvcHkpJyksIHtcbiAgICAgIGRhc2hib2FyZE5hbWU6IHRoaXMuZ2VuZXJhbFNldHRpbmdzRm9ybS52YWx1ZS5uYW1lXG4gICAgfSk7XG4gICAgdGhpcy5nZW5lcmFsU2V0dGluZ3NGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgZGV2aWNlVHlwZTogZmFsc2UsXG4gICAgICBuYW1lOiBuZXdEYXNoYm9hcmROYW1lXG4gICAgfSk7XG4gICAgLy8gc2V0dGluZyBlZGl0aW9uIHRvIGZhbHNlIHNvIG5ldyBkYXNoYm9hcmQgY2FuIGJlIGNyZWF0ZWQgYXMgY29weSBvZiBjdXJyZW50IG9uZVxuICAgIHRoaXMuaXNFZGl0ID0gZmFsc2U7XG4gICAgYXdhaXQgdGhpcy5zYXZlKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUFsbG93VHlwZURhc2hib2FyZCgpOiB2b2lkIHtcbiAgICB0aGlzLmFsbG93VHlwZURhc2hib2FyZCA9IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2Uuc2hvdWxkQWxsb3dUb1NldERhc2hib2FyZFR5cGUoXG4gICAgICB0aGlzLm1vLFxuICAgICAgdGhpcy5kZXZpY2VUeXBlVmFsdWVcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZXZpY2VUeXBlVmFsdWUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBpc0FsbG93ZWRUeXBlVmFsdWUgPSB0aGlzLm9wdGlvbnNTZXJ2aWNlLmdldCh0aGlzLkhJREVfVFlQRV9EQVNIQk9BUkRfRk9SX0FTU0VUUywgdHJ1ZSlcbiAgICAgID8gISF0aGlzLmNvbnRleHQ/LmM4eV9Jc0RldmljZVxuICAgICAgOiAhIXRoaXMuY29udGV4dD8uYzh5X0lzRGV2aWNlIHx8ICEhdGhpcy5jb250ZXh0Py5jOHlfSXNEZXZpY2VHcm91cDtcbiAgICByZXR1cm4gaXNBbGxvd2VkVHlwZVZhbHVlID8gdGhpcy5jb250ZXh0Py50eXBlIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5kYXNoYm9hcmREZXRhaWxzRm9ybSA9IHRoaXMuZGFzaGJvYXJkRGV0YWlsU2VydmljZS5pbml0Rm9ybShcbiAgICAgIHRoaXMuZGFzaGJvYXJkLFxuICAgICAgdGhpcy5pc1JlcG9ydCxcbiAgICAgIHRoaXMuYWxsb3dUeXBlRGFzaGJvYXJkID8gdGhpcy5nZXREZXZpY2VUeXBlVmFsdWUoKSA6IG51bGxcbiAgICApO1xuICAgIHRoaXMuZ2VuZXJhbFNldHRpbmdzRm9ybSA9IHRoaXMuZGFzaGJvYXJkRGV0YWlsc0Zvcm0uZ2V0KCdnZW5lcmFsU2V0dGluZ3NGb3JtJykgYXMgRm9ybUdyb3VwO1xuICAgIHRoaXMuYXBwZWFyYW5jZVNldHRpbmdzRm9ybSA9IHRoaXMuZGFzaGJvYXJkRGV0YWlsc0Zvcm0uZ2V0KFxuICAgICAgJ2FwcGVhcmFuY2VTZXR0aW5nc0Zvcm0nXG4gICAgKSBhcyBGb3JtR3JvdXA7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbmZpcm1DbG9zaW5nKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm1vZGFsLmNvbmZpcm0oXG4gICAgICAgIGdldHRleHQoJ0Nsb3NlIGRhc2hib2FyZCBkZXRhaWxzJyksXG4gICAgICAgIGdldHRleHQoXG4gICAgICAgICAgJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjbG9zZSBkYXNoYm9hcmQgZGV0YWlscz8gQWxsIHVuc2F2ZWQgY2hhbmdlcyB3aWxsIGJlIGxvc3QuJ1xuICAgICAgICApLFxuICAgICAgICBTdGF0dXMuV0FSTklORyxcbiAgICAgICAge1xuICAgICAgICAgIG9rOiBnZXR0ZXh0KCdDbG9zZScpLFxuICAgICAgICAgIGNhbmNlbDogZ2V0dGV4dCgnQ2FuY2VsJylcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZU5ld0Rhc2hib2FyZCgpIHtcbiAgICBjb25zdCBtbzogQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QgPSBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmNyZWF0ZShcbiAgICAgIHRoaXMuZGFzaGJvYXJkLFxuICAgICAgdGhpcy5jdXJyZW50Q29udGV4dFxuICAgICk7XG5cbiAgICBhd2FpdCB0aGlzLm9uQ3JlYXRlR1NFdmVudChtbyk7XG4gICAgdGhpcy5jbGVhbnVwQWZ0ZXJEZXRhaWxzQ2xvc2UoKTtcbiAgICBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLm5hdmlnYXRlVG9EYXNoYm9hcmQobW8pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBvbkNyZWF0ZUdTRXZlbnQobW86IENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0KSB7XG4gICAgY29uc3QgcGFyZW50TmFtZSA9IGF3YWl0IHRoaXMuY29udmVydFN0cmluZ1RvSGFzaCh0aGlzLmNvbnRleHQ/Lm5hbWUpO1xuICAgIGNvbnN0IGRhc2hib2FyZE5hbWUgPSBhd2FpdCB0aGlzLmNvbnZlcnRTdHJpbmdUb0hhc2godGhpcy5kYXNoYm9hcmQ/Lm5hbWUpO1xuXG4gICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkVWRU5UUy5EQVNIQk9BUkRTLCB7XG4gICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuQ09NUE9ORU5UUy5BRERfREFTSEJPQVJELFxuICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkFDVElPTlMuQ1JFQVRFLFxuICAgICAgbmFtZTogZGFzaGJvYXJkTmFtZSxcbiAgICAgIGlkOiBtby5pZCxcbiAgICAgIG5hbWVJZDogYCR7ZGFzaGJvYXJkTmFtZX1fJHt0aGlzLm1vLmlkfWAsXG4gICAgICBwYXJlbnRBc3NldElkOiB0aGlzLmNvbnRleHQ/LmlkID8gdGhpcy5jb250ZXh0LmlkIDogJ25vQ29udGV4dCcsXG4gICAgICBwYXJlbnRBc3NldE5hbWU6IHRoaXMuY29udGV4dD8uaWQgPyBwYXJlbnROYW1lIDogJ25vQ29udGV4dCcsXG4gICAgICBwYXJlbnRBc3NldFR5cGU6IHRoaXMuY29udGV4dD8uaWQgPyB0aGlzLmNvbnRleHQudHlwZSA6ICdub0NvbnRleHQnLFxuICAgICAgcGFyZW50QXNzZXROYW1lSWQ6IHRoaXMuY29udGV4dD8uaWQgPyBgJHtwYXJlbnROYW1lfV8ke3RoaXMuY29udGV4dC5pZH1gIDogJ25vQ29udGV4dCcsXG4gICAgICBwYXJlbnRBc3NldE5hbWVEYXNoYm9hcmROYW1lOiB0aGlzLmNvbnRleHQ/LmlkXG4gICAgICAgID8gYCR7cGFyZW50TmFtZX1fJHtkYXNoYm9hcmROYW1lfWBcbiAgICAgICAgOiAnbm9Db250ZXh0JyxcbiAgICAgIHBhcmVudEFzc2V0SWREYXNoYm9hcmRJZDogdGhpcy5jb250ZXh0Py5pZCA/IGAke3RoaXMuY29udGV4dC5pZH1fJHt0aGlzLm1vLmlkfWAgOiAnbm9Db250ZXh0JyxcbiAgICAgIHBhcmVudEFzc2V0TmFtZURhc2hib2FyZElkOiB0aGlzLmNvbnRleHQ/LmlkID8gYCR7cGFyZW50TmFtZX1fJHt0aGlzLm1vLmlkfWAgOiAnbm9Db250ZXh0JyxcbiAgICAgIHBhcmVudEFzc2V0TmFtZUlkRGFzaGJvYXJkTmFtZUlkOiB0aGlzLmNvbnRleHQ/LmlkXG4gICAgICAgID8gYCR7cGFyZW50TmFtZX1fJHt0aGlzLmNvbnRleHQuaWR9XyR7ZGFzaGJvYXJkTmFtZX1fJHt0aGlzLm1vLmlkfWBcbiAgICAgICAgOiAnbm9Db250ZXh0JyxcbiAgICAgIGRhc2hib2FyZFR5cGU6IG1vLmM4eV9EYXNoYm9hcmQuZGV2aWNlVHlwZSA/IG1vLmM4eV9EYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlIDogbnVsbCxcbiAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuZ2V0Q29udGV4dEZvckdTKFxuICAgICAgICB0aGlzLmN1cnJlbnRDb250ZXh0LmNvbnRleHREYXRhIGFzIElNYW5hZ2VkT2JqZWN0XG4gICAgICApXG4gICAgfSk7XG4gIH1cblxuICBAbWVtb2l6ZSgpXG4gIHByaXZhdGUgYXN5bmMgY29udmVydFN0cmluZ1RvSGFzaChzdHI6IHN0cmluZykge1xuICAgIGlmICghc3RyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmdhaW5zaWdodFNlcnZpY2Uuc2hvdWxkU2VuZFBpaURhdGEoKSlcbiAgICAgID8gc3RyXG4gICAgICA6IGF3YWl0IHRoaXMuZ2FpbnNpZ2h0U2VydmljZS5oYXNoR3JvdXBOYW1lKHN0cik7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZU5ld1JlcG9ydCgpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBuYW1lLCBpY29uLCBjOHlfSXNOYXZpZ2F0b3JOb2RlLCBwcmlvcml0eSwgZGVzY3JpcHRpb24gfSA9IHRoaXMuZGFzaGJvYXJkO1xuICAgICAgY29uc3QgcmVwb3J0ID0gKFxuICAgICAgICBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmNyZWF0ZVJlcG9ydCh7XG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBpY29uLFxuICAgICAgICAgIGM4eV9Jc05hdmlnYXRvck5vZGUsXG4gICAgICAgICAgcHJpb3JpdHksXG4gICAgICAgICAgZGVzY3JpcHRpb25cbiAgICAgICAgfSBhcyBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0PilcbiAgICAgICkuZGF0YTtcblxuICAgICAgYXdhaXQgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5jcmVhdGUoXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIGAke3RoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuUkVQT1JUX1BBUlRJQUxfTkFNRX0ke3JlcG9ydC5pZH1gXG4gICAgICApO1xuICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkVWRU5UUy5SRVBPUlRTLCB7XG4gICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5DT01QT05FTlRTLkFERF9SRVBPUlQsXG4gICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5BQ1RJT05TLkNSRUFURSxcbiAgICAgICAgbmFtZTogcmVwb3J0Lm5hbWUsXG4gICAgICAgIGlkOiByZXBvcnQuaWQsXG4gICAgICAgIGNvbnRleHQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuQ09OVEVYVC5SRVBPUlRcbiAgICAgIH0pO1xuICAgICAgaWYgKHJlcG9ydC5jOHlfSXNOYXZpZ2F0b3JOb2RlKSB7XG4gICAgICAgIHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuYWRkUmVwb3J0TmF2aWdhdG9yTm9kZShyZXBvcnQpO1xuICAgICAgfVxuICAgICAgdGhpcy5jbGVhbnVwQWZ0ZXJEZXRhaWxzQ2xvc2UoKTtcbiAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFsncmVwb3J0cycsIHJlcG9ydC5pZF0pO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAvLyBpbnRlbmRlZCBlbXB0eVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlRGFzaGJvYXJkKCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXNoYm9hcmRNTzogQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QgPSBjbG9uZURlZXAodGhpcy5tbyk7XG4gICAgICBjb25zdCBjZmcgPSB0aGlzLmRhc2hib2FyZDtcbiAgICAgIGlmICh0aGlzLmlzUmVwb3J0KSB7XG4gICAgICAgIGNvbnN0IHsgbmFtZSwgaWNvbiwgYzh5X0lzTmF2aWdhdG9yTm9kZSwgcHJpb3JpdHksIGRlc2NyaXB0aW9uIH0gPSBjZmc7XG4gICAgICAgIGRhc2hib2FyZE1PLmM4eV9EYXNoYm9hcmQgPSBjZmc7XG4gICAgICAgIGF3YWl0IHRoaXMudXBkYXRlUmVwb3J0KHtcbiAgICAgICAgICBpZDogdGhpcy5jb250ZXh0LmlkLFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgaWNvbixcbiAgICAgICAgICBjOHlfSXNOYXZpZ2F0b3JOb2RlLFxuICAgICAgICAgIHByaW9yaXR5LFxuICAgICAgICAgIGRlc2NyaXB0aW9uXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGFzaGJvYXJkTU8uYzh5X0Rhc2hib2FyZCA9IGNmZztcbiAgICAgIH1cblxuICAgICAgY29uc3QgdXBkYXRlZERhc2hib2FyZE1vID0gYXdhaXQgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS51cGRhdGUoXG4gICAgICAgIGRhc2hib2FyZE1PLFxuICAgICAgICB0aGlzLmN1cnJlbnRDb250ZXh0XG4gICAgICApO1xuICAgICAgdGhpcy5jbGVhbnVwQWZ0ZXJEZXRhaWxzQ2xvc2UoKTtcblxuICAgICAgdGhpcy5kYXNoYm9hcmRTYXZlZC5lbWl0KHVwZGF0ZWREYXNoYm9hcmRNbyk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIC8vIGludGVuZGVkIGVtcHR5XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlZGl0KCkge1xuICAgIGlmICh0aGlzLmlzUmVwb3J0KSB7XG4gICAgICBjb25zdCB7IG5hbWUsIGljb24sIHByaW9yaXR5LCBjOHlfSXNOYXZpZ2F0b3JOb2RlLCBkZXNjcmlwdGlvbiB9ID0gdGhpcy5jb250ZXh0O1xuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmRhc2hib2FyZCwgeyBuYW1lLCBpY29uLCBwcmlvcml0eSwgYzh5X0lzTmF2aWdhdG9yTm9kZSwgZGVzY3JpcHRpb24gfSk7XG4gICAgfVxuICAgIHRoaXMuaXNOYW1lZERhc2hib2FyZCA9IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuaXNOYW1lZCh0aGlzLm1vKTtcbiAgICB0aGlzLnNlbGVjdGVkVGFiID1cbiAgICAgIHRoaXMuaGlkZUF2YWlsYWJpbGl0eSAmJiB0aGlzLmlzTmFtZWREYXNoYm9hcmRcbiAgICAgICAgPyBEYXNoYm9hcmREZXRhaWxzVGFiSWQuQVBQRUFSQU5DRVxuICAgICAgICA6IERhc2hib2FyZERldGFpbHNUYWJJZC5HRU5FUkFMO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUNvbmZpZ3VyYXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUNvbmZpZ3VyYXRpb24oKSB7XG4gICAgY29uc3QgZGVmYXVsdERhc2hib2FyZENmZzogUGFydGlhbDxDb250ZXh0RGFzaGJvYXJkPiA9IHtcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMuaXNSZXBvcnQgPyBnZXR0ZXh0KCdSZXBvcnQnKSA6IGdldHRleHQoJ0Rhc2hib2FyZCcpKSxcbiAgICAgIHByaW9yaXR5OiB0aGlzLmlzUmVwb3J0XG4gICAgICAgID8gUkVQT1JUX0RFRkFVTFRfTkFWSUdBVElPTl9OT0RFX1BSSU9SSVRZXG4gICAgICAgIDogdGhpcy5kYXNoYm9hcmREZXRhaWxTZXJ2aWNlLkRFRkFVTFRfREFTSEJPQVJEX1BSSU9SSVRZLFxuICAgICAgaWNvbjogdGhpcy5kYXNoYm9hcmREZXRhaWxTZXJ2aWNlLkRFRkFVTFRfREFTSEJPQVJEX0lDT04sXG4gICAgICBkZXZpY2VUeXBlVmFsdWU6IHRoaXMuZGV2aWNlVHlwZSxcbiAgICAgIGNvbHVtbnM6IDI0XG4gICAgfTtcblxuICAgIGlmICh0aGlzLmRhc2hib2FyZCkge1xuICAgICAgdGhpcy5jdXJyZW50RGFzaGJvYXJkID0gY2xvbmUodGhpcy5kYXNoYm9hcmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhc2hib2FyZCA9IGRlZmF1bHREYXNoYm9hcmRDZmc7XG4gICAgICB0aGlzLmRhc2hib2FyZERldGFpbHNGb3JtLm1hcmtBc0RpcnR5KCk7XG4gICAgfVxuICAgIHRoaXMubmFtZVBsYWNlaG9sZGVyID0gdGhpcy5pc1JlcG9ydCA/IGdldHRleHQoJ2UuZy4gTXkgcmVwb3J0JykgOiBnZXR0ZXh0KCdlLmcuIE15IGRhc2hib2FyZCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVSZXBvcnQobW86IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+KSB7XG4gICAgbW8uYzh5X0lzTmF2aWdhdG9yTm9kZSA9IG1vLmM4eV9Jc05hdmlnYXRvck5vZGUgPyB7fSA6IG51bGw7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5pbnZlbnRvcnkudXBkYXRlKG1vKTtcbiAgICB0aGlzLmNvbnRleHQgPSByZXMuZGF0YTtcbiAgICBpZiAodGhpcy5yb3V0ZS5wYXJlbnQpIHtcbiAgICAgIHRoaXMucm91dGUucGFyZW50LnNuYXBzaG90LmRhdGEuY29udGV4dERhdGEgPSB0aGlzLmNvbnRleHQ7XG4gICAgfVxuICAgIHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UudXBkYXRlTmF2aWdhdG9ySXRlbShyZXMuZGF0YSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFudXBBZnRlckRldGFpbHNDbG9zZSgpIHtcbiAgICB0aGlzLmlzQ29sbGFwc2VkID0gdHJ1ZTtcbiAgICBpZiAoIXRoaXMuaXNFZGl0KSB7XG4gICAgICBjb25zdCBkYXNoYm9hcmRDb250ZXh0ID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmRhc2hib2FyZDtcbiAgICAgIC8vIGhpZGUgTmV3IGRhc2hib2FyZCB0YWJcbiAgICAgIGNvbnN0IHRtcE5ld0Rhc2hib2FyZFRhYiA9IFsuLi50aGlzLnRhYnNTZXJ2aWNlLnN0YXRlXS5maW5kKFxuICAgICAgICB0ID0+IHQuZmVhdHVyZUlkID09PSBuZXdEYXNoYm9hcmRUYWIuZmVhdHVyZUlkXG4gICAgICApO1xuICAgICAgLy8gZG9uJ3QgaGlkZSB0aGUgbmV3IGRhc2hib2FyZCB0YWIgd2hlbiBjbGlja2luZyBvbiB0aGUgYWRkIGRhc2hib2FyZCBidXR0b24gZnJvbSBhbm90aGVyIGRhc2hib2FyZC5cbiAgICAgIGlmICghdG1wTmV3RGFzaGJvYXJkVGFiIHx8IGRhc2hib2FyZENvbnRleHQ/LmM4eV9EYXNoYm9hcmQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLy8gaGlkZSB0YWIgYW5kIG1ha2UgaXQgYXBwZWFyIGFzIGxhc3Qgb25lIHRvIHByZXZlbnQgbmF2aWdhdGluZyB0byBpdFxuICAgICAgdG1wTmV3RGFzaGJvYXJkVGFiLmhpZGUgPSB0cnVlO1xuICAgICAgdG1wTmV3RGFzaGJvYXJkVGFiLnByaW9yaXR5ID0gLUluZmluaXR5O1xuICAgICAgdGhpcy50YWJzU2VydmljZS5yZWZyZXNoKCk7XG4gICAgfVxuICAgIHRoaXMucHJldmlld0NoYW5nZWQuZW1pdCh0aGlzLmRhc2hib2FyZCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJjb2xsYXBzZSBjOHktdG9wLWRyYXdlclwiXG4gIFtjb2xsYXBzZV09XCJpc0NvbGxhcHNlZFwiXG4gIFtpc0FuaW1hdGVkXT1cInRydWVcIlxuPlxuICA8ZGl2IGNsYXNzPVwicC10LTE2IHAtYi0xNiBwLWwtMjQgcC1yLTI0IHNlcGFyYXRvci1ib3R0b21cIj5cbiAgICA8c3BhbiBjbGFzcz1cImg0XCI+e3sgJ0Rhc2hib2FyZCBzZXR0aW5ncycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cImQtZmxleFwiXG4gICAgW2Zvcm1Hcm91cF09XCJkYXNoYm9hcmREZXRhaWxzRm9ybVwiXG4gICAgKm5nSWY9XCIhaXNDb2xsYXBzZWRcIlxuICA+XG4gICAgPGM4eS10YWJzLW91dGxldFxuICAgICAgW3RhYnNdPVwidGFicyQgfCBhc3luY1wiXG4gICAgICBbb3V0bGV0TmFtZV09XCJUQUJTX09VVExFVF9OQU1FXCJcbiAgICAgIFtvcmllbnRhdGlvbl09XCIndmVydGljYWwnXCJcbiAgICAgIGNsYXNzPVwiYzh5LXRvcC1kcmF3ZXItLXRhYnNcIlxuICAgID48L2M4eS10YWJzLW91dGxldD5cbiAgICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsIGM4eS10b3AtZHJhd2VyX190YWJzLWNvbnRhaW5lciBmbGV4LWdyb3cgcC1sLTI0IHAtci1sZy0zMiBwLXIteHMtMjQgcC1yLXNtLTI0XCI+XG4gICAgICA8Yzh5LXRhYlxuICAgICAgICAqbmdJZj1cIighaXNOYW1lZERhc2hib2FyZCAmJiAhaGlkZUF2YWlsYWJpbGl0eSkgfHwgaXNSZXBvcnRcIlxuICAgICAgICBbbGFiZWxdPVwiVEFCUy5nZW5lcmFsLmxhYmVsXCJcbiAgICAgICAgW2ljb25dPVwiJ2ltYWMtc2V0dGluZ3MnXCJcbiAgICAgICAgW3ByaW9yaXR5XT1cIjEwMFwiXG4gICAgICAgIFt0YWJzT3V0bGV0XT1cIlRBQlNfT1VUTEVUX05BTUVcIlxuICAgICAgICAob25TZWxlY3QpPVwic2VsZWN0VGFiKFRBQlMuZ2VuZXJhbC5mZWF0dXJlSWQpXCJcbiAgICAgICAgW2lzQWN0aXZlXT1cInNlbGVjdGVkVGFiID09PSBUQUJTLmdlbmVyYWwuZmVhdHVyZUlkXCJcbiAgICAgID48L2M4eS10YWI+XG4gICAgICA8Yzh5LXRhYlxuICAgICAgICBbbGFiZWxdPVwiVEFCUy5hcHBlYXJhbmNlLmxhYmVsXCJcbiAgICAgICAgW3ByaW9yaXR5XT1cIjUwXCJcbiAgICAgICAgW2ljb25dPVwiJ3dlYi1kZXNpZ24nXCJcbiAgICAgICAgW3RhYnNPdXRsZXRdPVwiVEFCU19PVVRMRVRfTkFNRVwiXG4gICAgICAgIChvblNlbGVjdCk9XCJzZWxlY3RUYWIoVEFCUy5hcHBlYXJhbmNlLmZlYXR1cmVJZClcIlxuICAgICAgICBbaXNBY3RpdmVdPVwic2VsZWN0ZWRUYWIgPT09IFRBQlMuYXBwZWFyYW5jZS5mZWF0dXJlSWRcIlxuICAgICAgPjwvYzh5LXRhYj5cbiAgICAgIDxjOHktdGFiXG4gICAgICAgICpuZ0lmPVwibW8/LmM4eV9EYXNoYm9hcmRIaXN0b3J5XCJcbiAgICAgICAgW2xhYmVsXT1cIlRBQlMudmVyc2lvbkhpc3RvcnkubGFiZWxcIlxuICAgICAgICBbaWNvbl09XCIndmVyc2lvbnMnXCJcbiAgICAgICAgW3ByaW9yaXR5XT1cIjEwXCJcbiAgICAgICAgW3RhYnNPdXRsZXRdPVwiVEFCU19PVVRMRVRfTkFNRVwiXG4gICAgICAgIChvblNlbGVjdCk9XCJzZWxlY3RUYWIoVEFCUy52ZXJzaW9uSGlzdG9yeS5mZWF0dXJlSWQpXCJcbiAgICAgICAgW2lzQWN0aXZlXT1cInNlbGVjdGVkVGFiID09PSBUQUJTLnZlcnNpb25IaXN0b3J5LmZlYXR1cmVJZFwiXG4gICAgICA+PC9jOHktdGFiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwic2VsZWN0ZWRUYWJcIj5cbiAgICAgICAgPGM4eS1kYXNoYm9hcmQtZ2VuZXJhbC1zZXR0aW5nc1xuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJUQUJTLmdlbmVyYWwuZmVhdHVyZUlkXCJcbiAgICAgICAgICBbaXNSZXBvcnRdPVwiaXNSZXBvcnRcIlxuICAgICAgICAgIFtpc05hbWVkRGFzaGJvYXJkXT1cImlzTmFtZWREYXNoYm9hcmRcIlxuICAgICAgICAgIFtoaWRlQXZhaWxhYmlsaXR5XT1cImhpZGVBdmFpbGFiaWxpdHlcIlxuICAgICAgICAgIFtkYXNoYm9hcmRdPVwiZGFzaGJvYXJkXCJcbiAgICAgICAgICBbZ2VuZXJhbFNldHRpbmdzRm9ybV09XCJnZW5lcmFsU2V0dGluZ3NGb3JtXCJcbiAgICAgICAgICBbZGV2aWNlVHlwZVZhbHVlXT1cImRldmljZVR5cGVWYWx1ZVwiXG4gICAgICAgICAgW2Rpc3BsYXlEZXZpY2VUeXBlVmFsdWVdPVwiZGlzcGxheURldmljZVR5cGVWYWx1ZVwiXG4gICAgICAgICAgW21vXT1cIm1vXCJcbiAgICAgICAgICBbYWxsb3dUeXBlRGFzaGJvYXJkXT1cImFsbG93VHlwZURhc2hib2FyZFwiXG4gICAgICAgICAgW2lzRGV2aWNlXT1cIiEhY29udGV4dD8uYzh5X0lzRGV2aWNlXCJcbiAgICAgICAgICBjbGFzcz1cImFuaW1hdGVkIGZhZGVJblwiXG4gICAgICAgICAgKG9uRHVwbGljYXRlV2l0aG91dFR5cGUpPVwiZHVwbGljYXRlV2l0aG91dFR5cGUoKVwiXG4gICAgICAgID48L2M4eS1kYXNoYm9hcmQtZ2VuZXJhbC1zZXR0aW5ncz5cbiAgICAgICAgPGM4eS1kYXNoYm9hcmQtYXBwZWFyYW5jZS1zZXR0aW5nc1xuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJUQUJTLmFwcGVhcmFuY2UuZmVhdHVyZUlkXCJcbiAgICAgICAgICBbZGFzaGJvYXJkXT1cImRhc2hib2FyZFwiXG4gICAgICAgICAgW2FwcGVhcmFuY2VTZXR0aW5nc0Zvcm1dPVwiYXBwZWFyYW5jZVNldHRpbmdzRm9ybVwiXG4gICAgICAgICAgKHByZXZpZXdDaGFuZ2VkKT1cInByZXZpZXdDaGFuZ2VkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgY2xhc3M9XCJhbmltYXRlZCBmYWRlSW5cIlxuICAgICAgICA+PC9jOHktZGFzaGJvYXJkLWFwcGVhcmFuY2Utc2V0dGluZ3M+XG4gICAgICAgIDxjOHktZGFzaGJvYXJkLXZlcnNpb24taGlzdG9yeVxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJUQUJTLnZlcnNpb25IaXN0b3J5LmZlYXR1cmVJZFwiXG4gICAgICAgICAgW2Rhc2hib2FyZEhpc3RvcnldPVwibW8uYzh5X0Rhc2hib2FyZEhpc3RvcnlcIlxuICAgICAgICAgIFtpc1JlcG9ydF09XCJpc1JlcG9ydFwiXG4gICAgICAgICAgKG9uUmV2ZXJ0KT1cInJldmVydERhc2hib2FyZCgkZXZlbnQpXCJcbiAgICAgICAgICBjbGFzcz1cImFuaW1hdGVkIGZhZGVJblwiXG4gICAgICAgID48L2M4eS1kYXNoYm9hcmQtdmVyc2lvbi1oaXN0b3J5PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJjOHktdG9wLWRyYXdlci0tZm9vdGVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgdGl0bGU9XCJ7eyAnQ2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGRhdGEtY3k9XCJkYXNoYm9hcmQtZGV0YWlsLS1jYW5jZWwtZGFzaGJvYXJkXCJcbiAgICAgIChjbGljayk9XCJjYW5jZWwoKVwiXG4gICAgPlxuICAgICAge3sgJ0NhbmNlbCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICB0aXRsZT1cInt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGRhdGEtY3k9XCJkYXNoYm9hcmQtZGV0YWlsLS1zYXZlLWRhc2hib2FyZFwiXG4gICAgICAoY2xpY2spPVwic2F2ZSgpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgKGRhc2hib2FyZERldGFpbHNGb3JtPy5pbnZhbGlkIHx8IGRhc2hib2FyZERldGFpbHNGb3JtPy5wcmlzdGluZSkgJiYgdGhpcy5pc0VkaXRcbiAgICAgIFwiXG4gICAgPlxuICAgICAge3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
410
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb250ZXh0LWRhc2hib2FyZC9kYXNoYm9hcmQtZGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL2Rhc2hib2FyZC1kZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsZUFBZSxFQUVmLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsT0FBTyxFQUNQLFlBQVksRUFDWixPQUFPLEVBQ1AsWUFBWSxFQUNaLE1BQU0sRUFFTixXQUFXLEVBQ1osTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEQsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBSUwsMEJBQTBCLEVBQzFCLHFCQUFxQixFQUdyQixrQkFBa0IsRUFDbEIsdUNBQXVDLEVBQ3hDLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFrQixnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxz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ekIsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQ3pELENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxlQUFlLENBQUMsU0FBUyxDQUMvQyxDQUFDO1lBQ0YscUdBQXFHO1lBQ3JHLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsQ0FBQztnQkFDM0QsT0FBTztZQUNULENBQUM7WUFDRCxzRUFBc0U7WUFDdEUsa0JBQWtCLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUMvQixrQkFBa0IsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxRQUFRLENBQUM7WUFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM3QixDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7OEdBMWFVLHdCQUF3QjtrR0FBeEIsd0JBQXdCLGdXQ2hEckMseXdIQXlHQTs7QUR5T2dCO0lBRGIsT0FBTyxFQUFFOzs7O21FQVFUOzJGQXpTVSx3QkFBd0I7a0JBSnBDLFNBQVM7K0JBQ0Usc0JBQXNCOzZiQU92QixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBWUksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQTJRTyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQXBwU3RhdGVTZXJ2aWNlLFxuICBDb250ZXh0RGF0YSxcbiAgQ29udGV4dFJvdXRlU2VydmljZSxcbiAgR2FpbnNpZ2h0U2VydmljZSxcbiAgZ2V0dGV4dCxcbiAgR3JvdXBTZXJ2aWNlLFxuICBtZW1vaXplLFxuICBNb2RhbFNlcnZpY2UsXG4gIFN0YXR1cyxcbiAgVGFiLFxuICBUYWJzU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGNsb25lLCBjbG9uZURlZXAsIGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQWxsb3dUeXBlRGFzaGJvYXJkLFxuICBDb250ZXh0RGFzaGJvYXJkLFxuICBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCxcbiAgREFTSEJPQVJEX1NFVFRJTkdTX0NIQU5HRVMsXG4gIERhc2hib2FyZERldGFpbHNUYWJJZCxcbiAgRGFzaGJvYXJkRGV0YWlsc1RhYnMsXG4gIERhc2hib2FyZEhpc3RvcnlEZXNjcmlwdGlvbixcbiAgUFJPRFVDVF9FWFBFUklFTkNFLFxuICBSRVBPUlRfREVGQVVMVF9OQVZJR0FUSU9OX05PREVfUFJJT1JJVFlcbn0gZnJvbSAnLi9jb250ZXh0LWRhc2hib2FyZC5tb2RlbCc7XG5pbXBvcnQgeyBDb250ZXh0RGFzaGJvYXJkU2VydmljZSB9IGZyb20gJy4vY29udGV4dC1kYXNoYm9hcmQuc2VydmljZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgbmV3RGFzaGJvYXJkVGFiIH0gZnJvbSAnLi9uZXctZGFzaGJvYXJkLmd1YXJkJztcbmltcG9ydCB7IERhc2hib2FyZERldGFpbFNlcnZpY2UgfSBmcm9tICcuL2Rhc2hib2FyZC1kZXRhaWwuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXNoYm9hcmQtZGV0YWlsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rhc2hib2FyZC1kZXRhaWwuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIERhc2hib2FyZERldGFpbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBpc0NvbGxhcHNlZCA9IHRydWU7XG4gIGN1cnJlbnRDb250ZXh0OiBDb250ZXh0RGF0YTtcbiAgY3VycmVudERhc2hib2FyZDogQ29udGV4dERhc2hib2FyZDtcbiAgQElucHV0KCkgaXNSZXBvcnQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGRldmljZVR5cGU6IHN0cmluZztcbiAgQElucHV0KCkgY29udGV4dDogYW55O1xuICBASW5wdXQoKSBtbzogQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3Q7XG4gIEBJbnB1dCgpIGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZDtcbiAgQElucHV0KCkgaXNOYW1lZERhc2hib2FyZDogYm9vbGVhbjtcbiAgQElucHV0KCkgaGlkZUF2YWlsYWJpbGl0eSA9IGZhbHNlO1xuICBkZXZpY2VUeXBlVmFsdWU6IHN0cmluZztcbiAgZGlzcGxheURldmljZVR5cGVWYWx1ZTogc3RyaW5nO1xuICBpY29uczogc3RyaW5nW107XG4gIG5hbWVQbGFjZWhvbGRlcjogc3RyaW5nO1xuICB0YWJzJDogT2JzZXJ2YWJsZTxUYWJbXT47XG4gIHNlbGVjdGVkVGFiOiBEYXNoYm9hcmREZXRhaWxzVGFiSWQgPSBEYXNoYm9hcmREZXRhaWxzVGFiSWQuR0VORVJBTDtcbiAgZGFzaGJvYXJkRGV0YWlsc0Zvcm06IFJldHVyblR5cGU8RGFzaGJvYXJkRGV0YWlsU2VydmljZVsnaW5pdEZvcm0nXT47XG4gIGdlbmVyYWxTZXR0aW5nc0Zvcm06IFJldHVyblR5cGU8RGFzaGJvYXJkRGV0YWlsU2VydmljZVsnaW5pdEdlbmVyYWxTZXR0aW5nc0Zvcm0nXT47XG4gIGFwcGVhcmFuY2VTZXR0aW5nc0Zvcm06IFJldHVyblR5cGU8RGFzaGJvYXJkRGV0YWlsU2VydmljZVsnaW5pdEFwcGVhcmFuY2VTZXR0aW5nc0Zvcm0nXT47XG4gIGFsbG93VHlwZURhc2hib2FyZDogQWxsb3dUeXBlRGFzaGJvYXJkO1xuICBpc0VkaXQ6IGJvb2xlYW47XG4gIEBPdXRwdXQoKSBkYXNoYm9hcmRTYXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q29udGV4dERhc2hib2FyZD4oKTtcbiAgQE91dHB1dCgpIHByZXZpZXdDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHJlYWRvbmx5IFRBQlNfT1VUTEVUX05BTUUgPSAnZGFzaGJvYXJkVGFicyc7XG4gIHJlYWRvbmx5IFRBQlM6IERhc2hib2FyZERldGFpbHNUYWJzID0ge1xuICAgIGdlbmVyYWw6IHtcbiAgICAgIGZlYXR1cmVJZDogRGFzaGJvYXJkRGV0YWlsc1RhYklkLkdFTkVSQUwsXG4gICAgICBwcmlvcml0eTogMzAsXG4gICAgICBsYWJlbDogZ2V0dGV4dCgnR2VuZXJhbCcpXG4gICAgfSxcbiAgICBhcHBlYXJhbmNlOiB7XG4gICAgICBmZWF0dXJlSWQ6IERhc2hib2FyZERldGFpbHNUYWJJZC5BUFBFQVJBTkNFLFxuICAgICAgcHJpb3JpdHk6IDIwLFxuICAgICAgbGFiZWw6IGdldHRleHQoJ0FwcGVhcmFuY2UnKVxuICAgIH0sXG4gICAgdmVyc2lvbkhpc3Rvcnk6IHtcbiAgICAgIGZlYXR1cmVJZDogRGFzaGJvYXJkRGV0YWlsc1RhYklkLlZFUlNJT05ISVNUT1JZLFxuICAgICAgcHJpb3JpdHk6IDEwLFxuICAgICAgbGFiZWw6IGdldHRleHQoJ1ZlcnNpb24gaGlzdG9yeScpXG4gICAgfVxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29udGV4dERhc2hib2FyZFNlcnZpY2U6IENvbnRleHREYXNoYm9hcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHRSb3V0ZTogQ29udGV4dFJvdXRlU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHRhYnNTZXJ2aWNlOiBUYWJzU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgaW52ZW50b3J5OiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgZGFzaGJvYXJkRGV0YWlsU2VydmljZTogRGFzaGJvYXJkRGV0YWlsU2VydmljZSxcbiAgICBwcml2YXRlIGFwcFN0YXRlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBncm91cFNlcnZpY2U6IEdyb3VwU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsOiBNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBnYWluc2lnaHRTZXJ2aWNlOiBHYWluc2lnaHRTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnRhYnMkID0gdGhpcy50YWJzU2VydmljZS5pdGVtcyQ7XG4gICAgdGhpcy5jdXJyZW50Q29udGV4dCA9IHRoaXMuY29udGV4dFJvdXRlLmdldENvbnRleHREYXRhKHRoaXMuYWN0aXZhdGVkUm91dGUpO1xuICAgIHRoaXMuZGV2aWNlVHlwZVZhbHVlID0gdGhpcy5jb250ZXh0Py50eXBlO1xuICAgIHRoaXMuZGlzcGxheURldmljZVR5cGVWYWx1ZSA9XG4gICAgICB0aGlzLmNvbnRleHQgJiZcbiAgICAgIHRoaXMuZ3JvdXBTZXJ2aWNlLmlzR3JvdXAodGhpcy5jb250ZXh0KSAmJlxuICAgICAgIXRoaXMuZ3JvdXBTZXJ2aWNlLmlzQXNzZXQodGhpcy5jb250ZXh0KVxuICAgICAgICA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ0dyb3VwJykpXG4gICAgICAgIDogdGhpcy5kZXZpY2VUeXBlVmFsdWU7XG5cbiAgICB0aGlzLnVwZGF0ZUFsbG93VHlwZURhc2hib2FyZCgpO1xuICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQWxsb3dUeXBlRGFzaGJvYXJkKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzRWRpdCkge1xuICAgICAgdGhpcy5pbml0aWFsaXplQ29uZmlndXJhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGFzeW5jIHNhdmUoKSB7XG4gICAgY29uc3Qgb2xkRGFzaGJvYXJkID0gY2xvbmVEZWVwKHRoaXMuZGFzaGJvYXJkKTtcbiAgICB0aGlzLmRhc2hib2FyZCA9IHtcbiAgICAgIC4uLnRoaXMuZGFzaGJvYXJkLFxuICAgICAgLi4udGhpcy5nZW5lcmFsU2V0dGluZ3NGb3JtLnZhbHVlLFxuICAgICAgLi4udGhpcy5hcHBlYXJhbmNlU2V0dGluZ3NGb3JtLnZhbHVlXG4gICAgfTtcbiAgICBjb25zdCBkYXNoYm9hcmRTZXR0aW5nQ2hhbmdlczogc3RyaW5nW10gPSBPYmplY3Qua2V5cyh0aGlzLmRhc2hib2FyZCkuZmlsdGVyKGtleSA9PiB7XG4gICAgICBpZiAoa2V5ID09PSAnYzh5X0lzTmF2aWdhdG9yTm9kZScpIHtcbiAgICAgICAgcmV0dXJuICEhb2xkRGFzaGJvYXJkW2tleV0gIT09ICEhdGhpcy5kYXNoYm9hcmRba2V5XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAhaXNFcXVhbChvbGREYXNoYm9hcmRba2V5XSwgdGhpcy5kYXNoYm9hcmRba2V5XSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhc2hib2FyZC5hdXRob3IgPSB0aGlzLmFwcFN0YXRlLmN1cnJlbnRVc2VyLnZhbHVlLnVzZXJOYW1lO1xuICAgIHRoaXMuZGFzaGJvYXJkLmM4eV9Jc05hdmlnYXRvck5vZGUgPSB0aGlzLmRhc2hib2FyZC5jOHlfSXNOYXZpZ2F0b3JOb2RlXG4gICAgICA/IHt9XG4gICAgICA6IHRoaXMuY3VycmVudERhc2hib2FyZFxuICAgICAgICA/IG51bGxcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLmRhc2hib2FyZC5kZXZpY2VUeXBlVmFsdWUgPz89IHRoaXMuZGV2aWNlVHlwZVZhbHVlO1xuICAgIHRoaXMuZGFzaGJvYXJkLmhpc3RvcnlEZXNjcmlwdGlvbiA9XG4gICAgICB0aGlzLnVwZGF0ZURhc2hib2FyZEhpc3RvcnlEZXNjcmlwdGlvbihkYXNoYm9hcmRTZXR0aW5nQ2hhbmdlcyk7XG4gICAgaWYgKCF0aGlzLmlzRWRpdCAmJiAhdGhpcy5pc1JlcG9ydCkge1xuICAgICAgYXdhaXQgdGhpcy5jcmVhdGVOZXdEYXNoYm9hcmQoKTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLmlzRWRpdCAmJiB0aGlzLmlzUmVwb3J0KSB7XG4gICAgICBhd2FpdCB0aGlzLmNyZWF0ZU5ld1JlcG9ydCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZURhc2hib2FyZCgpO1xuICAgICAgdGhpcy5tby5jOHlfRGFzaGJvYXJkSGlzdG9yeSA9IFtcbiAgICAgICAgdGhpcy5kYXNoYm9hcmQsXG4gICAgICAgIC4uLih0aGlzLm1vPy5jOHlfRGFzaGJvYXJkSGlzdG9yeSA/IHRoaXMubW8uYzh5X0Rhc2hib2FyZEhpc3RvcnkgOiBbXSlcbiAgICAgIF07XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlRGFzaGJvYXJkSGlzdG9yeURlc2NyaXB0aW9uKGRhc2hib2FyZENoYW5nZXM6IHN0cmluZ1tdKTogRGFzaGJvYXJkSGlzdG9yeURlc2NyaXB0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2hhbmdlVHlwZTogdGhpcy5pc0VkaXQgPyAndXBkYXRlJyA6ICdjcmVhdGUnLFxuICAgICAgZGFzaGJvYXJkU2V0dGluZ0NoYW5nZXM6IGRhc2hib2FyZENoYW5nZXNcbiAgICAgICAgLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZSAhPT0gJ2RldmljZVR5cGUnKVxuICAgICAgICAubWFwKHZhbHVlID0+IERBU0hCT0FSRF9TRVRUSU5HU19DSEFOR0VTW3ZhbHVlXSB8fCB2YWx1ZSksXG4gICAgICBkZXZpY2VUeXBlOiBkYXNoYm9hcmRDaGFuZ2VzLmZpbmQodmFsdWUgPT4gdmFsdWUgPT09ICdkZXZpY2VUeXBlJylcbiAgICAgICAgPyB0aGlzLmRhc2hib2FyZC5kZXZpY2VUeXBlXG4gICAgICAgIDogdW5kZWZpbmVkXG4gICAgfTtcbiAgfVxuXG4gIHNlbGVjdFRhYihzZWxlY3RlZFRhYjogRGFzaGJvYXJkRGV0YWlsc1RhYklkKSB7XG4gICAgdGhpcy5zZWxlY3RlZFRhYiA9IHNlbGVjdGVkVGFiO1xuICAgIHRoaXMudGFic1NlcnZpY2UucmVmcmVzaCgpO1xuICB9XG5cbiAgYXN5bmMgY2FuY2VsKCkge1xuICAgIGlmICghdGhpcy5pc0VkaXQgJiYgIXRoaXMuaXNSZXBvcnQpIHtcbiAgICAgIC8vIGRhc2hib2FyZCBjcmVhdGlvbiBpbiBpdCdzIG93biB0YWItIGNvbmZpcm0gYW5kIGNsZWFudXAgdHJpZ2dlcmVkIGluIGNhbkRlYWN0aXZhdGUgZHVyaW5nIHJvdXRpbmdcbiAgICAgIHRoaXMudGFic1NlcnZpY2UuaXRlbXMkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCh0YWJzOiBUYWJbXSkgPT4ge1xuICAgICAgICBjb25zdCB0YWIgPSB0YWJzLmZpbmQodCA9PiB0LmZlYXR1cmVJZCAhPT0gbmV3RGFzaGJvYXJkVGFiLmZlYXR1cmVJZCk7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGFiLnBhdGgsIHsgcmVwbGFjZVVybDogdHJ1ZSB9KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNFZGl0ICYmIHRoaXMuaXNSZXBvcnQpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsncmVwb3J0cyddKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGFzaGJvYXJkRGV0YWlsc0Zvcm0uZGlydHkgJiYgIShhd2FpdCB0aGlzLmNvbmZpcm1DbG9zaW5nKCkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2xlYW51cEFmdGVyRGV0YWlsc0Nsb3NlKCk7XG4gIH1cblxuICBhc3luYyBjYW5EZWFjdGl2YXRlKG9taXRDb25maXJtID0gZmFsc2UpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBsZXQgY2FuRGVhY3RpdmF0ZTogYm9vbGVhbjtcbiAgICBpZiAodGhpcy5pc0NvbGxhcHNlZCB8fCAhdGhpcy5kYXNoYm9hcmREZXRhaWxzRm9ybS5kaXJ0eSkge1xuICAgICAgY2FuRGVhY3RpdmF0ZSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChvbWl0Q29uZmlybSkge1xuICAgICAgICBjYW5EZWFjdGl2YXRlID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYW5EZWFjdGl2YXRlID0gYXdhaXQgdGhpcy5jb25maXJtQ2xvc2luZygpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2FuRGVhY3RpdmF0ZSkge1xuICAgICAgdGhpcy5jbGVhbnVwQWZ0ZXJEZXRhaWxzQ2xvc2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIGNhbkRlYWN0aXZhdGU7XG4gIH1cblxuICBzaG93KGlzRWRpdDogYm9vbGVhbikge1xuICAgIHRoaXMuaXNFZGl0ID0gaXNFZGl0O1xuICAgIGlmICh0aGlzLmlzRWRpdCkge1xuICAgICAgdGhpcy5lZGl0KCk7XG4gICAgfVxuICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgICB0aGlzLmlzQ29sbGFwc2VkID0gZmFsc2U7XG4gIH1cblxuICBhc3luYyByZXZlcnREYXNoYm9hcmQoZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkKSB7XG4gICAgdGhpcy5kYXNoYm9hcmQgPSBkYXNoYm9hcmQ7XG4gICAgdGhpcy5kYXNoYm9hcmQuYzh5X0lzTmF2aWdhdG9yTm9kZSA9IHRoaXMuZGFzaGJvYXJkLmM4eV9Jc05hdmlnYXRvck5vZGVcbiAgICAgID8ge31cbiAgICAgIDogdGhpcy5jdXJyZW50RGFzaGJvYXJkXG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZURhc2hib2FyZCgpO1xuICB9XG5cbiAgYXN5bmMgZHVwbGljYXRlV2l0aG91dFR5cGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbmV3RGFzaGJvYXJkTmFtZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ3t7IGRhc2hib2FyZE5hbWUgfX0gKGNvcHkpJyksIHtcbiAgICAgIGRhc2hib2FyZE5hbWU6IHRoaXMuZ2VuZXJhbFNldHRpbmdzRm9ybS52YWx1ZS5uYW1lXG4gICAgfSk7XG4gICAgdGhpcy5nZW5lcmFsU2V0dGluZ3NGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgZGV2aWNlVHlwZTogZmFsc2UsXG4gICAgICBuYW1lOiBuZXdEYXNoYm9hcmROYW1lXG4gICAgfSk7XG4gICAgLy8gc2V0dGluZyBlZGl0aW9uIHRvIGZhbHNlIHNvIG5ldyBkYXNoYm9hcmQgY2FuIGJlIGNyZWF0ZWQgYXMgY29weSBvZiBjdXJyZW50IG9uZVxuICAgIHRoaXMuaXNFZGl0ID0gZmFsc2U7XG4gICAgYXdhaXQgdGhpcy5zYXZlKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUFsbG93VHlwZURhc2hib2FyZCgpOiB2b2lkIHtcbiAgICB0aGlzLmFsbG93VHlwZURhc2hib2FyZCA9IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2Uuc2hvdWxkQWxsb3dUb1NldERhc2hib2FyZFR5cGUoXG4gICAgICB0aGlzLm1vLFxuICAgICAgdGhpcy5jdXJyZW50Q29udGV4dFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXRGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuZGFzaGJvYXJkRGV0YWlsc0Zvcm0gPSB0aGlzLmRhc2hib2FyZERldGFpbFNlcnZpY2UuaW5pdEZvcm0oXG4gICAgICB0aGlzLmRhc2hib2FyZCxcbiAgICAgIHRoaXMuaXNSZXBvcnQsXG4gICAgICB0aGlzLmFsbG93VHlwZURhc2hib2FyZFxuICAgICk7XG4gICAgdGhpcy5nZW5lcmFsU2V0dGluZ3NGb3JtID0gdGhpcy5kYXNoYm9hcmREZXRhaWxzRm9ybS5nZXQoJ2dlbmVyYWxTZXR0aW5nc0Zvcm0nKSBhcyBGb3JtR3JvdXA7XG4gICAgdGhpcy5hcHBlYXJhbmNlU2V0dGluZ3NGb3JtID0gdGhpcy5kYXNoYm9hcmREZXRhaWxzRm9ybS5nZXQoXG4gICAgICAnYXBwZWFyYW5jZVNldHRpbmdzRm9ybSdcbiAgICApIGFzIEZvcm1Hcm91cDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29uZmlybUNsb3NpbmcoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMubW9kYWwuY29uZmlybShcbiAgICAgICAgZ2V0dGV4dCgnQ2xvc2UgZGFzaGJvYXJkIGRldGFpbHMnKSxcbiAgICAgICAgZ2V0dGV4dChcbiAgICAgICAgICAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNsb3NlIGRhc2hib2FyZCBkZXRhaWxzPyBBbGwgdW5zYXZlZCBjaGFuZ2VzIHdpbGwgYmUgbG9zdC4nXG4gICAgICAgICksXG4gICAgICAgIFN0YXR1cy5XQVJOSU5HLFxuICAgICAgICB7XG4gICAgICAgICAgb2s6IGdldHRleHQoJ0Nsb3NlJyksXG4gICAgICAgICAgY2FuY2VsOiBnZXR0ZXh0KCdDYW5jZWwnKVxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY3JlYXRlTmV3RGFzaGJvYXJkKCkge1xuICAgIGNvbnN0IG1vOiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCA9IGF3YWl0IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuY3JlYXRlKFxuICAgICAgdGhpcy5kYXNoYm9hcmQsXG4gICAgICB0aGlzLmN1cnJlbnRDb250ZXh0XG4gICAgKTtcblxuICAgIGF3YWl0IHRoaXMub25DcmVhdGVHU0V2ZW50KG1vKTtcbiAgICB0aGlzLmNsZWFudXBBZnRlckRldGFpbHNDbG9zZSgpO1xuICAgIGF3YWl0IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UubmF2aWdhdGVUb0Rhc2hib2FyZChtbyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG9uQ3JlYXRlR1NFdmVudChtbzogQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QpIHtcbiAgICBjb25zdCBwYXJlbnROYW1lID0gYXdhaXQgdGhpcy5jb252ZXJ0U3RyaW5nVG9IYXNoKHRoaXMuY29udGV4dD8ubmFtZSk7XG4gICAgY29uc3QgZGFzaGJvYXJkTmFtZSA9IGF3YWl0IHRoaXMuY29udmVydFN0cmluZ1RvSGFzaCh0aGlzLmRhc2hib2FyZD8ubmFtZSk7XG5cbiAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuRVZFTlRTLkRBU0hCT0FSRFMsIHtcbiAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5DT01QT05FTlRTLkFERF9EQVNIQk9BUkQsXG4gICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuQUNUSU9OUy5DUkVBVEUsXG4gICAgICBuYW1lOiBkYXNoYm9hcmROYW1lLFxuICAgICAgaWQ6IG1vLmlkLFxuICAgICAgbmFtZUlkOiBgJHtkYXNoYm9hcmROYW1lfV8ke3RoaXMubW8uaWR9YCxcbiAgICAgIHBhcmVudEFzc2V0SWQ6IHRoaXMuY29udGV4dD8uaWQgPyB0aGlzLmNvbnRleHQuaWQgOiAnbm9Db250ZXh0JyxcbiAgICAgIHBhcmVudEFzc2V0TmFtZTogdGhpcy5jb250ZXh0Py5pZCA/IHBhcmVudE5hbWUgOiAnbm9Db250ZXh0JyxcbiAgICAgIHBhcmVudEFzc2V0VHlwZTogdGhpcy5jb250ZXh0Py5pZCA/IHRoaXMuY29udGV4dC50eXBlIDogJ25vQ29udGV4dCcsXG4gICAgICBwYXJlbnRBc3NldE5hbWVJZDogdGhpcy5jb250ZXh0Py5pZCA/IGAke3BhcmVudE5hbWV9XyR7dGhpcy5jb250ZXh0LmlkfWAgOiAnbm9Db250ZXh0JyxcbiAgICAgIHBhcmVudEFzc2V0TmFtZURhc2hib2FyZE5hbWU6IHRoaXMuY29udGV4dD8uaWRcbiAgICAgICAgPyBgJHtwYXJlbnROYW1lfV8ke2Rhc2hib2FyZE5hbWV9YFxuICAgICAgICA6ICdub0NvbnRleHQnLFxuICAgICAgcGFyZW50QXNzZXRJZERhc2hib2FyZElkOiB0aGlzLmNvbnRleHQ/LmlkID8gYCR7dGhpcy5jb250ZXh0LmlkfV8ke3RoaXMubW8uaWR9YCA6ICdub0NvbnRleHQnLFxuICAgICAgcGFyZW50QXNzZXROYW1lRGFzaGJvYXJkSWQ6IHRoaXMuY29udGV4dD8uaWQgPyBgJHtwYXJlbnROYW1lfV8ke3RoaXMubW8uaWR9YCA6ICdub0NvbnRleHQnLFxuICAgICAgcGFyZW50QXNzZXROYW1lSWREYXNoYm9hcmROYW1lSWQ6IHRoaXMuY29udGV4dD8uaWRcbiAgICAgICAgPyBgJHtwYXJlbnROYW1lfV8ke3RoaXMuY29udGV4dC5pZH1fJHtkYXNoYm9hcmROYW1lfV8ke3RoaXMubW8uaWR9YFxuICAgICAgICA6ICdub0NvbnRleHQnLFxuICAgICAgZGFzaGJvYXJkVHlwZTogbW8uYzh5X0Rhc2hib2FyZC5kZXZpY2VUeXBlID8gbW8uYzh5X0Rhc2hib2FyZC5kZXZpY2VUeXBlVmFsdWUgOiBudWxsLFxuICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5nZXRDb250ZXh0Rm9yR1MoXG4gICAgICAgIHRoaXMuY3VycmVudENvbnRleHQuY29udGV4dERhdGEgYXMgSU1hbmFnZWRPYmplY3RcbiAgICAgIClcbiAgICB9KTtcbiAgfVxuXG4gIEBtZW1vaXplKClcbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0U3RyaW5nVG9IYXNoKHN0cjogc3RyaW5nKSB7XG4gICAgaWYgKCFzdHIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuZ2FpbnNpZ2h0U2VydmljZS5zaG91bGRTZW5kUGlpRGF0YSgpKVxuICAgICAgPyBzdHJcbiAgICAgIDogYXdhaXQgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLmhhc2hHcm91cE5hbWUoc3RyKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY3JlYXRlTmV3UmVwb3J0KCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IG5hbWUsIGljb24sIGM4eV9Jc05hdmlnYXRvck5vZGUsIHByaW9yaXR5LCBkZXNjcmlwdGlvbiB9ID0gdGhpcy5kYXNoYm9hcmQ7XG4gICAgICBjb25zdCByZXBvcnQgPSAoXG4gICAgICAgIGF3YWl0IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuY3JlYXRlUmVwb3J0KHtcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIGljb24sXG4gICAgICAgICAgYzh5X0lzTmF2aWdhdG9yTm9kZSxcbiAgICAgICAgICBwcmlvcml0eSxcbiAgICAgICAgICBkZXNjcmlwdGlvblxuICAgICAgICB9IGFzIFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+KVxuICAgICAgKS5kYXRhO1xuXG4gICAgICBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmNyZWF0ZShcbiAgICAgICAgdGhpcy5kYXNoYm9hcmQsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgYCR7dGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5SRVBPUlRfUEFSVElBTF9OQU1FfSR7cmVwb3J0LmlkfWBcbiAgICAgICk7XG4gICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuRVZFTlRTLlJFUE9SVFMsIHtcbiAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkNPTVBPTkVOVFMuQUREX1JFUE9SVCxcbiAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkFDVElPTlMuQ1JFQVRFLFxuICAgICAgICBuYW1lOiByZXBvcnQubmFtZSxcbiAgICAgICAgaWQ6IHJlcG9ydC5pZCxcbiAgICAgICAgY29udGV4dDogUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5DT05URVhULlJFUE9SVFxuICAgICAgfSk7XG4gICAgICBpZiAocmVwb3J0LmM4eV9Jc05hdmlnYXRvck5vZGUpIHtcbiAgICAgICAgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5hZGRSZXBvcnROYXZpZ2F0b3JOb2RlKHJlcG9ydCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNsZWFudXBBZnRlckRldGFpbHNDbG9zZSgpO1xuICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydyZXBvcnRzJywgcmVwb3J0LmlkXSk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIC8vIGludGVuZGVkIGVtcHR5XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVEYXNoYm9hcmQoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhc2hib2FyZE1POiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCA9IGNsb25lRGVlcCh0aGlzLm1vKTtcbiAgICAgIGNvbnN0IGNmZyA9IHRoaXMuZGFzaGJvYXJkO1xuICAgICAgaWYgKHRoaXMuaXNSZXBvcnQpIHtcbiAgICAgICAgY29uc3QgeyBuYW1lLCBpY29uLCBjOHlfSXNOYXZpZ2F0b3JOb2RlLCBwcmlvcml0eSwgZGVzY3JpcHRpb24gfSA9IGNmZztcbiAgICAgICAgZGFzaGJvYXJkTU8uYzh5X0Rhc2hib2FyZCA9IGNmZztcbiAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVSZXBvcnQoe1xuICAgICAgICAgIGlkOiB0aGlzLmNvbnRleHQuaWQsXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBpY29uLFxuICAgICAgICAgIGM4eV9Jc05hdmlnYXRvck5vZGUsXG4gICAgICAgICAgcHJpb3JpdHksXG4gICAgICAgICAgZGVzY3JpcHRpb25cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXNoYm9hcmRNTy5jOHlfRGFzaGJvYXJkID0gY2ZnO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB1cGRhdGVkRGFzaGJvYXJkTW8gPSBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLnVwZGF0ZShcbiAgICAgICAgZGFzaGJvYXJkTU8sXG4gICAgICAgIHRoaXMuY3VycmVudENvbnRleHRcbiAgICAgICk7XG4gICAgICB0aGlzLmNsZWFudXBBZnRlckRldGFpbHNDbG9zZSgpO1xuXG4gICAgICB0aGlzLmRhc2hib2FyZFNhdmVkLmVtaXQodXBkYXRlZERhc2hib2FyZE1vKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgLy8gaW50ZW5kZWQgZW1wdHlcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGVkaXQoKSB7XG4gICAgaWYgKHRoaXMuaXNSZXBvcnQpIHtcbiAgICAgIGNvbnN0IHsgbmFtZSwgaWNvbiwgcHJpb3JpdHksIGM4eV9Jc05hdmlnYXRvck5vZGUsIGRlc2NyaXB0aW9uIH0gPSB0aGlzLmNvbnRleHQ7XG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuZGFzaGJvYXJkLCB7IG5hbWUsIGljb24sIHByaW9yaXR5LCBjOHlfSXNOYXZpZ2F0b3JOb2RlLCBkZXNjcmlwdGlvbiB9KTtcbiAgICB9XG4gICAgdGhpcy5pc05hbWVkRGFzaGJvYXJkID0gdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5pc05hbWVkKHRoaXMubW8pO1xuICAgIHRoaXMuc2VsZWN0ZWRUYWIgPVxuICAgICAgdGhpcy5oaWRlQXZhaWxhYmlsaXR5ICYmIHRoaXMuaXNOYW1lZERhc2hib2FyZFxuICAgICAgICA/IERhc2hib2FyZERldGFpbHNUYWJJZC5BUFBFQVJBTkNFXG4gICAgICAgIDogRGFzaGJvYXJkRGV0YWlsc1RhYklkLkdFTkVSQUw7XG4gICAgdGhpcy5pbml0aWFsaXplQ29uZmlndXJhdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQ29uZmlndXJhdGlvbigpIHtcbiAgICBjb25zdCBkZWZhdWx0RGFzaGJvYXJkQ2ZnOiBQYXJ0aWFsPENvbnRleHREYXNoYm9hcmQ+ID0ge1xuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy5pc1JlcG9ydCA/IGdldHRleHQoJ1JlcG9ydCcpIDogZ2V0dGV4dCgnRGFzaGJvYXJkJykpLFxuICAgICAgcHJpb3JpdHk6IHRoaXMuaXNSZXBvcnRcbiAgICAgICAgPyBSRVBPUlRfREVGQVVMVF9OQVZJR0FUSU9OX05PREVfUFJJT1JJVFlcbiAgICAgICAgOiB0aGlzLmRhc2hib2FyZERldGFpbFNlcnZpY2UuREVGQVVMVF9EQVNIQk9BUkRfUFJJT1JJVFksXG4gICAgICBpY29uOiB0aGlzLmRhc2hib2FyZERldGFpbFNlcnZpY2UuREVGQVVMVF9EQVNIQk9BUkRfSUNPTixcbiAgICAgIGRldmljZVR5cGVWYWx1ZTogdGhpcy5kZXZpY2VUeXBlLFxuICAgICAgY29sdW1uczogMjRcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuZGFzaGJvYXJkKSB7XG4gICAgICB0aGlzLmN1cnJlbnREYXNoYm9hcmQgPSBjbG9uZSh0aGlzLmRhc2hib2FyZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGFzaGJvYXJkID0gZGVmYXVsdERhc2hib2FyZENmZztcbiAgICAgIHRoaXMuZGFzaGJvYXJkRGV0YWlsc0Zvcm0ubWFya0FzRGlydHkoKTtcbiAgICB9XG4gICAgdGhpcy5uYW1lUGxhY2Vob2xkZXIgPSB0aGlzLmlzUmVwb3J0ID8gZ2V0dGV4dCgnZS5nLiBNeSByZXBvcnQnKSA6IGdldHRleHQoJ2UuZy4gTXkgZGFzaGJvYXJkJyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVJlcG9ydChtbzogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4pIHtcbiAgICBtby5jOHlfSXNOYXZpZ2F0b3JOb2RlID0gbW8uYzh5X0lzTmF2aWdhdG9yTm9kZSA/IHt9IDogbnVsbDtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmludmVudG9yeS51cGRhdGUobW8pO1xuICAgIHRoaXMuY29udGV4dCA9IHJlcy5kYXRhO1xuICAgIGlmICh0aGlzLnJvdXRlLnBhcmVudCkge1xuICAgICAgdGhpcy5yb3V0ZS5wYXJlbnQuc25hcHNob3QuZGF0YS5jb250ZXh0RGF0YSA9IHRoaXMuY29udGV4dDtcbiAgICB9XG4gICAgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS51cGRhdGVOYXZpZ2F0b3JJdGVtKHJlcy5kYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYW51cEFmdGVyRGV0YWlsc0Nsb3NlKCkge1xuICAgIHRoaXMuaXNDb2xsYXBzZWQgPSB0cnVlO1xuICAgIGlmICghdGhpcy5pc0VkaXQpIHtcbiAgICAgIGNvbnN0IGRhc2hib2FyZENvbnRleHQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuZGFzaGJvYXJkO1xuICAgICAgLy8gaGlkZSBOZXcgZGFzaGJvYXJkIHRhYlxuICAgICAgY29uc3QgdG1wTmV3RGFzaGJvYXJkVGFiID0gWy4uLnRoaXMudGFic1NlcnZpY2Uuc3RhdGVdLmZpbmQoXG4gICAgICAgIHQgPT4gdC5mZWF0dXJlSWQgPT09IG5ld0Rhc2hib2FyZFRhYi5mZWF0dXJlSWRcbiAgICAgICk7XG4gICAgICAvLyBkb24ndCBoaWRlIHRoZSBuZXcgZGFzaGJvYXJkIHRhYiB3aGVuIGNsaWNraW5nIG9uIHRoZSBhZGQgZGFzaGJvYXJkIGJ1dHRvbiBmcm9tIGFub3RoZXIgZGFzaGJvYXJkLlxuICAgICAgaWYgKCF0bXBOZXdEYXNoYm9hcmRUYWIgfHwgZGFzaGJvYXJkQ29udGV4dD8uYzh5X0Rhc2hib2FyZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBoaWRlIHRhYiBhbmQgbWFrZSBpdCBhcHBlYXIgYXMgbGFzdCBvbmUgdG8gcHJldmVudCBuYXZpZ2F0aW5nIHRvIGl0XG4gICAgICB0bXBOZXdEYXNoYm9hcmRUYWIuaGlkZSA9IHRydWU7XG4gICAgICB0bXBOZXdEYXNoYm9hcmRUYWIucHJpb3JpdHkgPSAtSW5maW5pdHk7XG4gICAgICB0aGlzLnRhYnNTZXJ2aWNlLnJlZnJlc2goKTtcbiAgICB9XG4gICAgdGhpcy5wcmV2aWV3Q2hhbmdlZC5lbWl0KHRoaXMuZGFzaGJvYXJkKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImNvbGxhcHNlIGM4eS10b3AtZHJhd2VyXCJcbiAgW2NvbGxhcHNlXT1cImlzQ29sbGFwc2VkXCJcbiAgW2lzQW5pbWF0ZWRdPVwidHJ1ZVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJwLXQtMTYgcC1iLTE2IHAtbC0yNCBwLXItMjQgc2VwYXJhdG9yLWJvdHRvbVwiPlxuICAgIDxzcGFuIGNsYXNzPVwiaDRcIj57eyAnRGFzaGJvYXJkIHNldHRpbmdzJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZC1mbGV4XCJcbiAgICBbZm9ybUdyb3VwXT1cImRhc2hib2FyZERldGFpbHNGb3JtXCJcbiAgICAqbmdJZj1cIiFpc0NvbGxhcHNlZFwiXG4gID5cbiAgICA8Yzh5LXRhYnMtb3V0bGV0XG4gICAgICBbdGFic109XCJ0YWJzJCB8IGFzeW5jXCJcbiAgICAgIFtvdXRsZXROYW1lXT1cIlRBQlNfT1VUTEVUX05BTUVcIlxuICAgICAgW29yaWVudGF0aW9uXT1cIid2ZXJ0aWNhbCdcIlxuICAgICAgY2xhc3M9XCJjOHktdG9wLWRyYXdlci0tdGFic1wiXG4gICAgPjwvYzh5LXRhYnMtb3V0bGV0PlxuICAgIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGwgYzh5LXRvcC1kcmF3ZXJfX3RhYnMtY29udGFpbmVyIGZsZXgtZ3JvdyBwLWwtMjQgcC1yLWxnLTMyIHAtci14cy0yNCBwLXItc20tMjRcIj5cbiAgICAgIDxjOHktdGFiXG4gICAgICAgICpuZ0lmPVwiKCFpc05hbWVkRGFzaGJvYXJkICYmICFoaWRlQXZhaWxhYmlsaXR5KSB8fCBpc1JlcG9ydFwiXG4gICAgICAgIFtsYWJlbF09XCJUQUJTLmdlbmVyYWwubGFiZWxcIlxuICAgICAgICBbaWNvbl09XCInaW1hYy1zZXR0aW5ncydcIlxuICAgICAgICBbcHJpb3JpdHldPVwiMTAwXCJcbiAgICAgICAgW3RhYnNPdXRsZXRdPVwiVEFCU19PVVRMRVRfTkFNRVwiXG4gICAgICAgIChvblNlbGVjdCk9XCJzZWxlY3RUYWIoVEFCUy5nZW5lcmFsLmZlYXR1cmVJZClcIlxuICAgICAgICBbaXNBY3RpdmVdPVwic2VsZWN0ZWRUYWIgPT09IFRBQlMuZ2VuZXJhbC5mZWF0dXJlSWRcIlxuICAgICAgPjwvYzh5LXRhYj5cbiAgICAgIDxjOHktdGFiXG4gICAgICAgIFtsYWJlbF09XCJUQUJTLmFwcGVhcmFuY2UubGFiZWxcIlxuICAgICAgICBbcHJpb3JpdHldPVwiNTBcIlxuICAgICAgICBbaWNvbl09XCInd2ViLWRlc2lnbidcIlxuICAgICAgICBbdGFic091dGxldF09XCJUQUJTX09VVExFVF9OQU1FXCJcbiAgICAgICAgKG9uU2VsZWN0KT1cInNlbGVjdFRhYihUQUJTLmFwcGVhcmFuY2UuZmVhdHVyZUlkKVwiXG4gICAgICAgIFtpc0FjdGl2ZV09XCJzZWxlY3RlZFRhYiA9PT0gVEFCUy5hcHBlYXJhbmNlLmZlYXR1cmVJZFwiXG4gICAgICA+PC9jOHktdGFiPlxuICAgICAgPGM4eS10YWJcbiAgICAgICAgKm5nSWY9XCJtbz8uYzh5X0Rhc2hib2FyZEhpc3RvcnlcIlxuICAgICAgICBbbGFiZWxdPVwiVEFCUy52ZXJzaW9uSGlzdG9yeS5sYWJlbFwiXG4gICAgICAgIFtpY29uXT1cIid2ZXJzaW9ucydcIlxuICAgICAgICBbcHJpb3JpdHldPVwiMTBcIlxuICAgICAgICBbdGFic091dGxldF09XCJUQUJTX09VVExFVF9OQU1FXCJcbiAgICAgICAgKG9uU2VsZWN0KT1cInNlbGVjdFRhYihUQUJTLnZlcnNpb25IaXN0b3J5LmZlYXR1cmVJZClcIlxuICAgICAgICBbaXNBY3RpdmVdPVwic2VsZWN0ZWRUYWIgPT09IFRBQlMudmVyc2lvbkhpc3RvcnkuZmVhdHVyZUlkXCJcbiAgICAgID48L2M4eS10YWI+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJzZWxlY3RlZFRhYlwiPlxuICAgICAgICA8Yzh5LWRhc2hib2FyZC1nZW5lcmFsLXNldHRpbmdzXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIlRBQlMuZ2VuZXJhbC5mZWF0dXJlSWRcIlxuICAgICAgICAgIFtpc1JlcG9ydF09XCJpc1JlcG9ydFwiXG4gICAgICAgICAgW2lzTmFtZWREYXNoYm9hcmRdPVwiaXNOYW1lZERhc2hib2FyZFwiXG4gICAgICAgICAgW2hpZGVBdmFpbGFiaWxpdHldPVwiaGlkZUF2YWlsYWJpbGl0eVwiXG4gICAgICAgICAgW2Rhc2hib2FyZF09XCJkYXNoYm9hcmRcIlxuICAgICAgICAgIFtnZW5lcmFsU2V0dGluZ3NGb3JtXT1cImdlbmVyYWxTZXR0aW5nc0Zvcm1cIlxuICAgICAgICAgIFtkZXZpY2VUeXBlVmFsdWVdPVwiZGV2aWNlVHlwZVZhbHVlXCJcbiAgICAgICAgICBbZGlzcGxheURldmljZVR5cGVWYWx1ZV09XCJkaXNwbGF5RGV2aWNlVHlwZVZhbHVlXCJcbiAgICAgICAgICBbbW9dPVwibW9cIlxuICAgICAgICAgIFthbGxvd1R5cGVEYXNoYm9hcmRdPVwiYWxsb3dUeXBlRGFzaGJvYXJkXCJcbiAgICAgICAgICBbaXNEZXZpY2VdPVwiISFjb250ZXh0Py5jOHlfSXNEZXZpY2VcIlxuICAgICAgICAgIGNsYXNzPVwiYW5pbWF0ZWQgZmFkZUluXCJcbiAgICAgICAgICAob25EdXBsaWNhdGVXaXRob3V0VHlwZSk9XCJkdXBsaWNhdGVXaXRob3V0VHlwZSgpXCJcbiAgICAgICAgPjwvYzh5LWRhc2hib2FyZC1nZW5lcmFsLXNldHRpbmdzPlxuICAgICAgICA8Yzh5LWRhc2hib2FyZC1hcHBlYXJhbmNlLXNldHRpbmdzXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIlRBQlMuYXBwZWFyYW5jZS5mZWF0dXJlSWRcIlxuICAgICAgICAgIFtkYXNoYm9hcmRdPVwiZGFzaGJvYXJkXCJcbiAgICAgICAgICBbYXBwZWFyYW5jZVNldHRpbmdzRm9ybV09XCJhcHBlYXJhbmNlU2V0dGluZ3NGb3JtXCJcbiAgICAgICAgICAocHJldmlld0NoYW5nZWQpPVwicHJldmlld0NoYW5nZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICBjbGFzcz1cImFuaW1hdGVkIGZhZGVJblwiXG4gICAgICAgID48L2M4eS1kYXNoYm9hcmQtYXBwZWFyYW5jZS1zZXR0aW5ncz5cbiAgICAgICAgPGM4eS1kYXNoYm9hcmQtdmVyc2lvbi1oaXN0b3J5XG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIlRBQlMudmVyc2lvbkhpc3RvcnkuZmVhdHVyZUlkXCJcbiAgICAgICAgICBbZGFzaGJvYXJkSGlzdG9yeV09XCJtby5jOHlfRGFzaGJvYXJkSGlzdG9yeVwiXG4gICAgICAgICAgW2lzUmVwb3J0XT1cImlzUmVwb3J0XCJcbiAgICAgICAgICAob25SZXZlcnQpPVwicmV2ZXJ0RGFzaGJvYXJkKCRldmVudClcIlxuICAgICAgICAgIGNsYXNzPVwiYW5pbWF0ZWQgZmFkZUluXCJcbiAgICAgICAgPjwvYzh5LWRhc2hib2FyZC12ZXJzaW9uLWhpc3Rvcnk+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImM4eS10b3AtZHJhd2VyLS1mb290ZXJcIj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICB0aXRsZT1cInt7ICdDYW5jZWwnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgZGF0YS1jeT1cImRhc2hib2FyZC1kZXRhaWwtLWNhbmNlbC1kYXNoYm9hcmRcIlxuICAgICAgKGNsaWNrKT1cImNhbmNlbCgpXCJcbiAgICA+XG4gICAgICB7eyAnQ2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgIHRpdGxlPVwie3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgZGF0YS1jeT1cImRhc2hib2FyZC1kZXRhaWwtLXNhdmUtZGFzaGJvYXJkXCJcbiAgICAgIChjbGljayk9XCJzYXZlKClcIlxuICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAoZGFzaGJvYXJkRGV0YWlsc0Zvcm0/LmludmFsaWQgfHwgZGFzaGJvYXJkRGV0YWlsc0Zvcm0/LnByaXN0aW5lKSAmJiB0aGlzLmlzRWRpdFxuICAgICAgXCJcbiAgICA+XG4gICAgICB7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -21,12 +21,12 @@ export class DashboardDetailService {
|
|
|
21
21
|
* Creates dashboard details form divided into two groups- general settings and appearance settings.
|
|
22
22
|
* @param dashboard Context dashboard object
|
|
23
23
|
* @param isReport True if its report dashboard
|
|
24
|
-
* @param
|
|
24
|
+
* @param allowTypeDashboard Allow to make dashboard type dashboard
|
|
25
25
|
* @returns Dashboard details form
|
|
26
26
|
*/
|
|
27
|
-
initForm(dashboard, isReport,
|
|
27
|
+
initForm(dashboard, isReport, allowTypeDashboard) {
|
|
28
28
|
return this.fb.group({
|
|
29
|
-
generalSettingsForm: this.initGeneralSettingsForm(dashboard, isReport,
|
|
29
|
+
generalSettingsForm: this.initGeneralSettingsForm(dashboard, isReport, allowTypeDashboard),
|
|
30
30
|
appearanceSettingsForm: this.initAppearanceSettingsForm(dashboard)
|
|
31
31
|
});
|
|
32
32
|
}
|
|
@@ -37,7 +37,7 @@ export class DashboardDetailService {
|
|
|
37
37
|
* @param deviceTypeValue Value used for typed dashboard
|
|
38
38
|
* @returns Dashboard general settings form
|
|
39
39
|
*/
|
|
40
|
-
initGeneralSettingsForm(dashboard, isReport,
|
|
40
|
+
initGeneralSettingsForm(dashboard, isReport, allowTypeDashboard) {
|
|
41
41
|
const globalRolesIdsValue = !dashboard?.globalRolesIds
|
|
42
42
|
? null
|
|
43
43
|
: Array.isArray(dashboard.globalRolesIds)
|
|
@@ -59,7 +59,14 @@ export class DashboardDetailService {
|
|
|
59
59
|
description: [dashboard?.description || null, [Validators.maxLength(1_000)]],
|
|
60
60
|
globalRolesIds: [globalRolesIdsValue],
|
|
61
61
|
c8y_IsNavigatorNode: [!!dashboard?.c8y_IsNavigatorNode],
|
|
62
|
-
...(
|
|
62
|
+
...(allowTypeDashboard !== 'disallow' && {
|
|
63
|
+
deviceType: [
|
|
64
|
+
{
|
|
65
|
+
value: dashboard?.deviceType ?? false,
|
|
66
|
+
disabled: allowTypeDashboard === 'allow_if_type_filled'
|
|
67
|
+
}
|
|
68
|
+
]
|
|
69
|
+
})
|
|
63
70
|
});
|
|
64
71
|
}
|
|
65
72
|
/**
|
|
@@ -87,4 +94,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
87
94
|
providedIn: 'root'
|
|
88
95
|
}]
|
|
89
96
|
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.TranslateService }] });
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWRldGFpbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvZGFzaGJvYXJkLWRldGFpbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFLOUMsTUFBTSxPQUFPLHNCQUFzQjtJQVVqQyxZQUNVLEVBQWUsRUFDZixnQkFBa0M7UUFEbEMsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFYNUMsWUFBTyxHQUFHO1lBQ1IsVUFBVSxFQUFFLHVCQUF1QjtZQUNuQyxXQUFXLEVBQUUscUJBQXFCO1NBQ25DLENBQUM7UUFFTyw2QkFBd0IsR0FBRyxFQUFFLENBQUM7UUFDOUIsMkJBQXNCLEdBQUcsSUFBSSxDQUFDO1FBQzlCLCtCQUEwQixHQUFHLElBQUksQ0FBQztJQUt4QyxDQUFDO0lBQ0o7Ozs7OztPQU1HO0lBQ0gsUUFBUSxDQUNOLFNBQTJCLEVBQzNCLFFBQWlCLEVBQ2pCLGtCQUFzQztRQUV0QyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ25CLG1CQUFtQixFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixDQUFDO1lBQzFGLHNCQUFzQixFQUFFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxTQUFTLENBQUM7U0FDbkUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNEOzs7Ozs7T0FNRztJQUNILHVCQUF1QixDQUNyQixT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QUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBbGxvd1R5cGVEYXNoYm9hcmQsIENvbnRleHREYXNoYm9hcmQgfSBmcm9tICcuL2NvbnRleHQtZGFzaGJvYXJkLm1vZGVsJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkRGV0YWlsU2VydmljZSB7XG4gIHN0eWxpbmcgPSB7XG4gICAgdGhlbWVDbGFzczogJ2Rhc2hib2FyZC10aGVtZS1saWdodCcsXG4gICAgaGVhZGVyQ2xhc3M6ICdwYW5lbC10aXRsZS1yZWd1bGFyJ1xuICB9O1xuXG4gIHJlYWRvbmx5IERFRkFVTFRfREFTSEJPQVJEX01BUkdJTiA9IDEyO1xuICByZWFkb25seSBERUZBVUxUX0RBU0hCT0FSRF9JQ09OID0gJ3RoJztcbiAgcmVhZG9ubHkgREVGQVVMVF9EQVNIQk9BUkRfUFJJT1JJVFkgPSA1MDAwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHt9XG4gIC8qKlxuICAgKiBDcmVhdGVzIGRhc2hib2FyZCBkZXRhaWxzIGZvcm0gZGl2aWRlZCBpbnRvIHR3byBncm91cHMtIGdlbmVyYWwgc2V0dGluZ3MgYW5kIGFwcGVhcmFuY2Ugc2V0dGluZ3MuXG4gICAqIEBwYXJhbSBkYXNoYm9hcmQgQ29udGV4dCBkYXNoYm9hcmQgb2JqZWN0XG4gICAqIEBwYXJhbSBpc1JlcG9ydCBUcnVlIGlmIGl0cyByZXBvcnQgZGFzaGJvYXJkXG4gICAqIEBwYXJhbSBhbGxvd1R5cGVEYXNoYm9hcmQgQWxsb3cgdG8gbWFrZSBkYXNoYm9hcmQgdHlwZSBkYXNoYm9hcmRcbiAgICogQHJldHVybnMgRGFzaGJvYXJkIGRldGFpbHMgZm9ybVxuICAgKi9cbiAgaW5pdEZvcm0oXG4gICAgZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkLFxuICAgIGlzUmVwb3J0OiBib29sZWFuLFxuICAgIGFsbG93VHlwZURhc2hib2FyZDogQWxsb3dUeXBlRGFzaGJvYXJkXG4gICk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgZ2VuZXJhbFNldHRpbmdzRm9ybTogdGhpcy5pbml0R2VuZXJhbFNldHRpbmdzRm9ybShkYXNoYm9hcmQsIGlzUmVwb3J0LCBhbGxvd1R5cGVEYXNoYm9hcmQpLFxuICAgICAgYXBwZWFyYW5jZVNldHRpbmdzRm9ybTogdGhpcy5pbml0QXBwZWFyYW5jZVNldHRpbmdzRm9ybShkYXNoYm9hcmQpXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgZm9ybSBncm91cCBmb3IgZ2VuZXJhbCBzZXR0aW5ncyBvZiBkYXNoYm9hcmQuXG4gICAqIEBwYXJhbSBkYXNoYm9hcmQgQ29udGV4dCBkYXNoYm9hcmQgb2JqZWN0XG4gICAqIEBwYXJhbSBpc1JlcG9ydCBUcnVlIGlmIGl0cyByZXBvcnQgZGFzaGJvYXJkXG4gICAqIEBwYXJhbSBkZXZpY2VUeXBlVmFsdWUgVmFsdWUgdXNlZCBmb3IgdHlwZWQgZGFzaGJvYXJkXG4gICAqIEByZXR1cm5zIERhc2hib2FyZCBnZW5lcmFsIHNldHRpbmdzIGZvcm1cbiAgICovXG4gIGluaXRHZW5lcmFsU2V0dGluZ3NGb3JtKFxuICAgIGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZCxcbiAgICBpc1JlcG9ydDogYm9vbGVhbixcbiAgICBhbGxvd1R5cGVEYXNoYm9hcmQ6IEFsbG93VHlwZURhc2hib2FyZFxuICApOiBGb3JtR3JvdXAge1xuICAgIGNvbnN0IGdsb2JhbFJvbGVzSWRzVmFsdWUgPSAhZGFzaGJvYXJkPy5nbG9iYWxSb2xlc0lkc1xuICAgICAgPyBudWxsXG4gICAgICA6IEFycmF5LmlzQXJyYXkoZGFzaGJvYXJkLmdsb2JhbFJvbGVzSWRzKVxuICAgICAgICA/IFsuLi5kYXNoYm9hcmQuZ2xvYmFsUm9sZXNJZHNdXG4gICAgICAgIDogZGFzaGJvYXJkLmdsb2JhbFJvbGVzSWRzO1xuICAgIHJldHVybiB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGljb246IFtkYXNoYm9hcmQ/Lmljb24gfHwgdGhpcy5ERUZBVUxUX0RBU0hCT0FSRF9JQ09OLCBbVmFsaWRhdG9ycy5taW5MZW5ndGgoMSldXSxcbiAgICAgIHByaW9yaXR5OiBbXG4gICAgICAgIGRhc2hib2FyZD8ucHJpb3JpdHkgfHwgdGhpcy5ERUZBVUxUX0RBU0hCT0FSRF9QUklPUklUWSxcbiAgICAgICAgW1ZhbGlkYXRvcnMubWluKC0xMDAwMCksIFZhbGlkYXRvcnMubWF4KDEwMDAwKSwgVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgIF0sXG4gICAgICBuYW1lOiBbXG4gICAgICAgIGRhc2hib2FyZD8ubmFtZSB8fFxuICAgICAgICAgIChpc1JlcG9ydFxuICAgICAgICAgICAgPyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCdSZXBvcnQnKSlcbiAgICAgICAgICAgIDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnRGFzaGJvYXJkJykpKSxcbiAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUxMildXG4gICAgICBdLFxuICAgICAgZGVzY3JpcHRpb246IFtkYXNoYm9hcmQ/LmRlc2NyaXB0aW9uIHx8IG51bGwsIFtWYWxpZGF0b3JzLm1heExlbmd0aCgxXzAwMCldXSxcbiAgICAgIGdsb2JhbFJvbGVzSWRzOiBbZ2xvYmFsUm9sZXNJZHNWYWx1ZV0sXG4gICAgICBjOHlfSXNOYXZpZ2F0b3JOb2RlOiBbISFkYXNoYm9hcmQ/LmM4eV9Jc05hdmlnYXRvck5vZGVdLFxuICAgICAgLi4uKGFsbG93VHlwZURhc2hib2FyZCAhPT0gJ2Rpc2FsbG93JyAmJiB7XG4gICAgICAgIGRldmljZVR5cGU6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogZGFzaGJvYXJkPy5kZXZpY2VUeXBlID8/IGZhbHNlLFxuICAgICAgICAgICAgZGlzYWJsZWQ6IGFsbG93VHlwZURhc2hib2FyZCA9PT0gJ2FsbG93X2lmX3R5cGVfZmlsbGVkJ1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSlcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQ3JlYXRlcyBmb3JtIGdyb3VwIGZvciBhcHBlYXJhbmNlIHNldHRpbmdzIG9mIGRhc2hib2FyZC5cbiAgICogQHBhcmFtIGRhc2hib2FyZCBDb250ZXh0IGRhc2hib2FyZCBvYmplY3RcbiAgICogQHJldHVybnMgRGFzaGJvYXJkIGFwcGVhcmFuY2Ugc2V0dGluZ3MgZm9ybVxuICAgKi9cbiAgaW5pdEFwcGVhcmFuY2VTZXR0aW5nc0Zvcm0oZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkKTogRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gdGhpcy5mYi5ncm91cCh7XG4gICAgICB3aWRnZXRNYXJnaW46IFtcbiAgICAgICAgZGFzaGJvYXJkPy53aWRnZXRNYXJnaW4gfHwgdGhpcy5ERUZBVUxUX0RBU0hCT0FSRF9NQVJHSU4sXG4gICAgICAgIFtWYWxpZGF0b3JzLm1pbigwKSwgVmFsaWRhdG9ycy5tYXgoNTApXVxuICAgICAgXSxcbiAgICAgIHRyYW5zbGF0ZVdpZGdldFRpdGxlOiBbISFkYXNoYm9hcmQ/LnRyYW5zbGF0ZVdpZGdldFRpdGxlXSxcbiAgICAgIGNsYXNzZXM6IFtkYXNoYm9hcmQ/LmNsYXNzZXMgfHwgeyBbdGhpcy5zdHlsaW5nLnRoZW1lQ2xhc3NdOiB0cnVlIH1dLFxuICAgICAgd2lkZ2V0Q2xhc3NlczogW2Rhc2hib2FyZD8ud2lkZ2V0Q2xhc3NlcyB8fCB7IFt0aGlzLnN0eWxpbmcuaGVhZGVyQ2xhc3NdOiB0cnVlIH1dXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
package/esm2022/context-dashboard/dashboard-settings/dashboard-general-settings.component.mjs
CHANGED
|
@@ -24,11 +24,11 @@ export class DashboardGeneralSettingsComponent {
|
|
|
24
24
|
this.generalSettingsForm.markAsDirty();
|
|
25
25
|
}
|
|
26
26
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DashboardGeneralSettingsComponent, deps: [{ token: i1.NavigatorService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DashboardGeneralSettingsComponent, selector: "c8y-dashboard-general-settings", inputs: { isReport: "isReport", isNamedDashboard: "isNamedDashboard", hideAvailability: "hideAvailability", dashboard: "dashboard", generalSettingsForm: "generalSettingsForm", deviceTypeValue: "deviceTypeValue", displayDeviceTypeValue: "displayDeviceTypeValue", allowTypeDashboard: "allowTypeDashboard", isDevice: "isDevice", mo: "mo" }, outputs: { onDuplicateWithoutType: "onDuplicateWithoutType" }, ngImport: i0, template: "<div\n class=\"row\"\n [formGroup]=\"generalSettingsForm\"\n>\n <div\n class=\"col-xs-12 p-b-24\"\n [ngClass]=\"{ 'col-md-6': !isReport, 'col-md-8': isReport }\"\n *ngIf=\"!isNamedDashboard || isReport\"\n >\n <fieldset class=\"c8y-fieldset c8y-fieldset--lg m-b-24\">\n <legend>{{ 'Navigation' | translate }}</legend>\n <div class=\"d-flex gap-16\">\n <c8y-form-group>\n <label>{{ 'Icon' | translate }}</label>\n <c8y-icon-selector-wrapper\n [iconSize]=\"24\"\n name=\"icon\"\n formControlName=\"icon\"\n ></c8y-icon-selector-wrapper>\n </c8y-form-group>\n <c8y-form-group class=\"flex-grow\">\n <label for=\"menuLabel\">\n {{ 'Menu label' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Menu label to display in submenu when dashboard is attached' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <input\n class=\"form-control\"\n id=\"menuLabel\"\n placeholder=\"{{ namePlaceholder | translate }}\"\n name=\"name\"\n type=\"text\"\n formControlName=\"name\"\n />\n </c8y-form-group>\n </div>\n\n <c8y-form-group>\n <label for=\"description\">{{ 'Description ' | translate }}</label>\n <textarea\n class=\"form-control\"\n id=\"description\"\n name=\"description\"\n c8y-textarea-autoresize\n formControlName=\"description\"\n ></textarea>\n </c8y-form-group>\n\n <div class=\"row\">\n <div\n class=\"col-lg-7 col-xs-12\"\n *ngIf=\"!isReport\"\n >\n <c8y-form-group>\n <label for=\"position\">\n {{ 'Position in tabs' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ positionInTabsExampleLabel | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <input\n class=\"form-control\"\n id=\"positionNav\"\n placeholder=\"{{ priorityExampleLabel | translate: { example: '500' } }}\"\n name=\"priority\"\n for=\"position\"\n type=\"number\"\n formControlName=\"priority\"\n />\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-xs-6\"\n *ngIf=\"isReport\"\n >\n <label translate>Navigator menu item</label>\n <c8y-form-group>\n <label\n class=\"c8y-switch\"\n title=\"{{ 'Show in navigator' | translate }}\"\n >\n <input\n type=\"checkbox\"\n formControlName=\"c8y_IsNavigatorNode\"\n />\n <span></span>\n <span>{{ 'Show in navigator' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-xs-6\"\n *ngIf=\"isReport && generalSettingsForm.value.c8y_IsNavigatorNode\"\n >\n <c8y-form-group>\n <label\n class=\"d-block\"\n for=\"position\"\n >\n {{ 'Position in navigator' | translate }}\n <ng-template #positionInNavPop>\n <span>\n {{ positionInNavigationExampleLabel | translate }} \n {{ 'Existing nodes:' | translate }}\n </span>\n <ul class=\"list-unstyled m-t-16 m-b-0\">\n <li\n class=\"p-t-4 p-b-4\"\n title=\"{{ node.label | translate }}\"\n *ngFor=\"let node of navigatorNodes$ | async\"\n >\n <div class=\"icon-flex fit-w\">\n <i [c8yIcon]=\"node.icon\"></i>\n <span class=\"text-truncate m-l-4 m-r-16 flex-grow\">\n {{ node.label | translate }}\n </span>\n <span class=\"text-medium flex-no-shrink\">{{ node.priority }}</span>\n </div>\n </li>\n </ul>\n </ng-template>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"positionInNavPop\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <input\n class=\"form-control\"\n placeholder=\"{{ priorityExampleLabel | translate: { example: '500' } }}\"\n name=\"priority\"\n for=\"position\"\n type=\"number\"\n formControlName=\"priority\"\n />\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n <c8y-dashboard-availability\n *ngIf=\"\n !!isReport === false &&\n allowTypeDashboard &&\n deviceTypeValue &&\n generalSettingsForm.controls['deviceType'] &&\n !hideAvailability\n \"\n [(globalRolesIds)]=\"globalRolesIds\"\n (globalRolesIdsChange)=\"changeGlobalRoleIds()\"\n ></c8y-dashboard-availability>\n </div>\n\n <div class=\"col-xs-12 col-md-6 p-b-24\">\n <c8y-typed-dashboard-settings\n *ngIf=\"allowTypeDashboard && deviceTypeValue && generalSettingsForm.controls['deviceType']\"\n formControlName=\"deviceType\"\n [deviceTypeValue]=\"deviceTypeValue\"\n [displayDeviceTypeValue]=\"displayDeviceTypeValue\"\n [formInvalid]=\"generalSettingsForm.invalid\"\n [mo]=\"mo\"\n [isDevice]=\"isDevice\"\n (onDuplicateWithoutType)=\"onDuplicateWithoutType.emit()\"\n ></c8y-typed-dashboard-settings>\n <c8y-dashboard-availability\n *ngIf=\"\n !!isReport === false &&\n (!allowTypeDashboard || !deviceTypeValue || !generalSettingsForm.controls['deviceType']) &&\n !hideAvailability\n \"\n [(globalRolesIds)]=\"globalRolesIds\"\n (globalRolesIdsChange)=\"changeGlobalRoleIds()\"\n ></c8y-dashboard-availability>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.TextareaAutoresizeDirective, selector: "[c8y-textarea-autoresize]" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: i5.IconSelectorWrapperComponent, selector: "c8y-icon-selector-wrapper", inputs: ["canRemoveIcon", "selectedIcon", "iconSize"], outputs: ["onSelect"] }, { kind: "component", type: i6.DashboardAvailabilityComponent, selector: "c8y-dashboard-availability", inputs: ["globalRolesIds"], outputs: ["globalRolesIdsChange"] }, { kind: "component", type: i7.TypedDashboardSettingsComponent, selector: "c8y-typed-dashboard-settings", inputs: ["deviceTypeValue", "displayDeviceTypeValue", "formInvalid", "mo", "isDevice"], outputs: ["onDuplicateWithoutType"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
|
|
27
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DashboardGeneralSettingsComponent, selector: "c8y-dashboard-general-settings", inputs: { isReport: "isReport", isNamedDashboard: "isNamedDashboard", hideAvailability: "hideAvailability", dashboard: "dashboard", generalSettingsForm: "generalSettingsForm", deviceTypeValue: "deviceTypeValue", displayDeviceTypeValue: "displayDeviceTypeValue", allowTypeDashboard: "allowTypeDashboard", isDevice: "isDevice", mo: "mo" }, outputs: { onDuplicateWithoutType: "onDuplicateWithoutType" }, ngImport: i0, template: "<div\n class=\"row\"\n [formGroup]=\"generalSettingsForm\"\n>\n <div\n class=\"col-xs-12 p-b-24\"\n [ngClass]=\"{ 'col-md-6': !isReport, 'col-md-8': isReport }\"\n *ngIf=\"!isNamedDashboard || isReport\"\n >\n <fieldset class=\"c8y-fieldset c8y-fieldset--lg m-b-24\">\n <legend>{{ 'Navigation' | translate }}</legend>\n <div class=\"d-flex gap-16\">\n <c8y-form-group>\n <label>{{ 'Icon' | translate }}</label>\n <c8y-icon-selector-wrapper\n [iconSize]=\"24\"\n name=\"icon\"\n formControlName=\"icon\"\n ></c8y-icon-selector-wrapper>\n </c8y-form-group>\n <c8y-form-group class=\"flex-grow\">\n <label for=\"menuLabel\">\n {{ 'Menu label' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Menu label to display in submenu when dashboard is attached' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <input\n class=\"form-control\"\n id=\"menuLabel\"\n placeholder=\"{{ namePlaceholder | translate }}\"\n name=\"name\"\n type=\"text\"\n formControlName=\"name\"\n />\n </c8y-form-group>\n </div>\n\n <c8y-form-group>\n <label for=\"description\">{{ 'Description ' | translate }}</label>\n <textarea\n class=\"form-control\"\n id=\"description\"\n name=\"description\"\n c8y-textarea-autoresize\n formControlName=\"description\"\n ></textarea>\n </c8y-form-group>\n\n <div class=\"row\">\n <div\n class=\"col-lg-7 col-xs-12\"\n *ngIf=\"!isReport\"\n >\n <c8y-form-group>\n <label for=\"position\">\n {{ 'Position in tabs' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ positionInTabsExampleLabel | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <input\n class=\"form-control\"\n id=\"positionNav\"\n placeholder=\"{{ priorityExampleLabel | translate: { example: '500' } }}\"\n name=\"priority\"\n for=\"position\"\n type=\"number\"\n formControlName=\"priority\"\n />\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-xs-6\"\n *ngIf=\"isReport\"\n >\n <label translate>Navigator menu item</label>\n <c8y-form-group>\n <label\n class=\"c8y-switch\"\n title=\"{{ 'Show in navigator' | translate }}\"\n >\n <input\n type=\"checkbox\"\n formControlName=\"c8y_IsNavigatorNode\"\n />\n <span></span>\n <span>{{ 'Show in navigator' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-xs-6\"\n *ngIf=\"isReport && generalSettingsForm.value.c8y_IsNavigatorNode\"\n >\n <c8y-form-group>\n <label\n class=\"d-block\"\n for=\"position\"\n >\n {{ 'Position in navigator' | translate }}\n <ng-template #positionInNavPop>\n <span>\n {{ positionInNavigationExampleLabel | translate }} \n {{ 'Existing nodes:' | translate }}\n </span>\n <ul class=\"list-unstyled m-t-16 m-b-0\">\n <li\n class=\"p-t-4 p-b-4\"\n title=\"{{ node.label | translate }}\"\n *ngFor=\"let node of navigatorNodes$ | async\"\n >\n <div class=\"icon-flex fit-w\">\n <i [c8yIcon]=\"node.icon\"></i>\n <span class=\"text-truncate m-l-4 m-r-16 flex-grow\">\n {{ node.label | translate }}\n </span>\n <span class=\"text-medium flex-no-shrink\">{{ node.priority }}</span>\n </div>\n </li>\n </ul>\n </ng-template>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"positionInNavPop\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <input\n class=\"form-control\"\n placeholder=\"{{ priorityExampleLabel | translate: { example: '500' } }}\"\n name=\"priority\"\n for=\"position\"\n type=\"number\"\n formControlName=\"priority\"\n />\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n <c8y-dashboard-availability\n *ngIf=\"\n !!isReport === false &&\n allowTypeDashboard &&\n deviceTypeValue &&\n generalSettingsForm.controls['deviceType'] &&\n !hideAvailability\n \"\n [(globalRolesIds)]=\"globalRolesIds\"\n (globalRolesIdsChange)=\"changeGlobalRoleIds()\"\n ></c8y-dashboard-availability>\n </div>\n\n <div class=\"col-xs-12 col-md-6 p-b-24\">\n <c8y-typed-dashboard-settings\n *ngIf=\"allowTypeDashboard !== 'disallow'\"\n formControlName=\"deviceType\"\n [deviceTypeValue]=\"deviceTypeValue\"\n [displayDeviceTypeValue]=\"displayDeviceTypeValue\"\n [formInvalid]=\"generalSettingsForm.invalid\"\n [mo]=\"mo\"\n [isDevice]=\"isDevice\"\n [allowTypeDashboard]=\"allowTypeDashboard\"\n (onDuplicateWithoutType)=\"onDuplicateWithoutType.emit()\"\n ></c8y-typed-dashboard-settings>\n <c8y-dashboard-availability\n *ngIf=\"\n !!isReport === false &&\n (!allowTypeDashboard || !deviceTypeValue || !generalSettingsForm.controls['deviceType']) &&\n !hideAvailability\n \"\n [(globalRolesIds)]=\"globalRolesIds\"\n (globalRolesIdsChange)=\"changeGlobalRoleIds()\"\n ></c8y-dashboard-availability>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.TextareaAutoresizeDirective, selector: "[c8y-textarea-autoresize]" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: i5.IconSelectorWrapperComponent, selector: "c8y-icon-selector-wrapper", inputs: ["canRemoveIcon", "selectedIcon", "iconSize"], outputs: ["onSelect"] }, { kind: "component", type: i6.DashboardAvailabilityComponent, selector: "c8y-dashboard-availability", inputs: ["globalRolesIds"], outputs: ["globalRolesIdsChange"] }, { kind: "component", type: i7.TypedDashboardSettingsComponent, selector: "c8y-typed-dashboard-settings", inputs: ["deviceTypeValue", "displayDeviceTypeValue", "formInvalid", "mo", "isDevice", "allowTypeDashboard"], outputs: ["onDuplicateWithoutType"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
|
|
28
28
|
}
|
|
29
29
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DashboardGeneralSettingsComponent, decorators: [{
|
|
30
30
|
type: Component,
|
|
31
|
-
args: [{ selector: 'c8y-dashboard-general-settings', template: "<div\n class=\"row\"\n [formGroup]=\"generalSettingsForm\"\n>\n <div\n class=\"col-xs-12 p-b-24\"\n [ngClass]=\"{ 'col-md-6': !isReport, 'col-md-8': isReport }\"\n *ngIf=\"!isNamedDashboard || isReport\"\n >\n <fieldset class=\"c8y-fieldset c8y-fieldset--lg m-b-24\">\n <legend>{{ 'Navigation' | translate }}</legend>\n <div class=\"d-flex gap-16\">\n <c8y-form-group>\n <label>{{ 'Icon' | translate }}</label>\n <c8y-icon-selector-wrapper\n [iconSize]=\"24\"\n name=\"icon\"\n formControlName=\"icon\"\n ></c8y-icon-selector-wrapper>\n </c8y-form-group>\n <c8y-form-group class=\"flex-grow\">\n <label for=\"menuLabel\">\n {{ 'Menu label' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Menu label to display in submenu when dashboard is attached' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <input\n class=\"form-control\"\n id=\"menuLabel\"\n placeholder=\"{{ namePlaceholder | translate }}\"\n name=\"name\"\n type=\"text\"\n formControlName=\"name\"\n />\n </c8y-form-group>\n </div>\n\n <c8y-form-group>\n <label for=\"description\">{{ 'Description ' | translate }}</label>\n <textarea\n class=\"form-control\"\n id=\"description\"\n name=\"description\"\n c8y-textarea-autoresize\n formControlName=\"description\"\n ></textarea>\n </c8y-form-group>\n\n <div class=\"row\">\n <div\n class=\"col-lg-7 col-xs-12\"\n *ngIf=\"!isReport\"\n >\n <c8y-form-group>\n <label for=\"position\">\n {{ 'Position in tabs' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ positionInTabsExampleLabel | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <input\n class=\"form-control\"\n id=\"positionNav\"\n placeholder=\"{{ priorityExampleLabel | translate: { example: '500' } }}\"\n name=\"priority\"\n for=\"position\"\n type=\"number\"\n formControlName=\"priority\"\n />\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-xs-6\"\n *ngIf=\"isReport\"\n >\n <label translate>Navigator menu item</label>\n <c8y-form-group>\n <label\n class=\"c8y-switch\"\n title=\"{{ 'Show in navigator' | translate }}\"\n >\n <input\n type=\"checkbox\"\n formControlName=\"c8y_IsNavigatorNode\"\n />\n <span></span>\n <span>{{ 'Show in navigator' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-xs-6\"\n *ngIf=\"isReport && generalSettingsForm.value.c8y_IsNavigatorNode\"\n >\n <c8y-form-group>\n <label\n class=\"d-block\"\n for=\"position\"\n >\n {{ 'Position in navigator' | translate }}\n <ng-template #positionInNavPop>\n <span>\n {{ positionInNavigationExampleLabel | translate }} \n {{ 'Existing nodes:' | translate }}\n </span>\n <ul class=\"list-unstyled m-t-16 m-b-0\">\n <li\n class=\"p-t-4 p-b-4\"\n title=\"{{ node.label | translate }}\"\n *ngFor=\"let node of navigatorNodes$ | async\"\n >\n <div class=\"icon-flex fit-w\">\n <i [c8yIcon]=\"node.icon\"></i>\n <span class=\"text-truncate m-l-4 m-r-16 flex-grow\">\n {{ node.label | translate }}\n </span>\n <span class=\"text-medium flex-no-shrink\">{{ node.priority }}</span>\n </div>\n </li>\n </ul>\n </ng-template>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"positionInNavPop\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <input\n class=\"form-control\"\n placeholder=\"{{ priorityExampleLabel | translate: { example: '500' } }}\"\n name=\"priority\"\n for=\"position\"\n type=\"number\"\n formControlName=\"priority\"\n />\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n <c8y-dashboard-availability\n *ngIf=\"\n !!isReport === false &&\n allowTypeDashboard &&\n deviceTypeValue &&\n generalSettingsForm.controls['deviceType'] &&\n !hideAvailability\n \"\n [(globalRolesIds)]=\"globalRolesIds\"\n (globalRolesIdsChange)=\"changeGlobalRoleIds()\"\n ></c8y-dashboard-availability>\n </div>\n\n <div class=\"col-xs-12 col-md-6 p-b-24\">\n <c8y-typed-dashboard-settings\n *ngIf=\"allowTypeDashboard
|
|
31
|
+
args: [{ selector: 'c8y-dashboard-general-settings', template: "<div\n class=\"row\"\n [formGroup]=\"generalSettingsForm\"\n>\n <div\n class=\"col-xs-12 p-b-24\"\n [ngClass]=\"{ 'col-md-6': !isReport, 'col-md-8': isReport }\"\n *ngIf=\"!isNamedDashboard || isReport\"\n >\n <fieldset class=\"c8y-fieldset c8y-fieldset--lg m-b-24\">\n <legend>{{ 'Navigation' | translate }}</legend>\n <div class=\"d-flex gap-16\">\n <c8y-form-group>\n <label>{{ 'Icon' | translate }}</label>\n <c8y-icon-selector-wrapper\n [iconSize]=\"24\"\n name=\"icon\"\n formControlName=\"icon\"\n ></c8y-icon-selector-wrapper>\n </c8y-form-group>\n <c8y-form-group class=\"flex-grow\">\n <label for=\"menuLabel\">\n {{ 'Menu label' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Menu label to display in submenu when dashboard is attached' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <input\n class=\"form-control\"\n id=\"menuLabel\"\n placeholder=\"{{ namePlaceholder | translate }}\"\n name=\"name\"\n type=\"text\"\n formControlName=\"name\"\n />\n </c8y-form-group>\n </div>\n\n <c8y-form-group>\n <label for=\"description\">{{ 'Description ' | translate }}</label>\n <textarea\n class=\"form-control\"\n id=\"description\"\n name=\"description\"\n c8y-textarea-autoresize\n formControlName=\"description\"\n ></textarea>\n </c8y-form-group>\n\n <div class=\"row\">\n <div\n class=\"col-lg-7 col-xs-12\"\n *ngIf=\"!isReport\"\n >\n <c8y-form-group>\n <label for=\"position\">\n {{ 'Position in tabs' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ positionInTabsExampleLabel | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <input\n class=\"form-control\"\n id=\"positionNav\"\n placeholder=\"{{ priorityExampleLabel | translate: { example: '500' } }}\"\n name=\"priority\"\n for=\"position\"\n type=\"number\"\n formControlName=\"priority\"\n />\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-xs-6\"\n *ngIf=\"isReport\"\n >\n <label translate>Navigator menu item</label>\n <c8y-form-group>\n <label\n class=\"c8y-switch\"\n title=\"{{ 'Show in navigator' | translate }}\"\n >\n <input\n type=\"checkbox\"\n formControlName=\"c8y_IsNavigatorNode\"\n />\n <span></span>\n <span>{{ 'Show in navigator' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-xs-6\"\n *ngIf=\"isReport && generalSettingsForm.value.c8y_IsNavigatorNode\"\n >\n <c8y-form-group>\n <label\n class=\"d-block\"\n for=\"position\"\n >\n {{ 'Position in navigator' | translate }}\n <ng-template #positionInNavPop>\n <span>\n {{ positionInNavigationExampleLabel | translate }} \n {{ 'Existing nodes:' | translate }}\n </span>\n <ul class=\"list-unstyled m-t-16 m-b-0\">\n <li\n class=\"p-t-4 p-b-4\"\n title=\"{{ node.label | translate }}\"\n *ngFor=\"let node of navigatorNodes$ | async\"\n >\n <div class=\"icon-flex fit-w\">\n <i [c8yIcon]=\"node.icon\"></i>\n <span class=\"text-truncate m-l-4 m-r-16 flex-grow\">\n {{ node.label | translate }}\n </span>\n <span class=\"text-medium flex-no-shrink\">{{ node.priority }}</span>\n </div>\n </li>\n </ul>\n </ng-template>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"positionInNavPop\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <input\n class=\"form-control\"\n placeholder=\"{{ priorityExampleLabel | translate: { example: '500' } }}\"\n name=\"priority\"\n for=\"position\"\n type=\"number\"\n formControlName=\"priority\"\n />\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n <c8y-dashboard-availability\n *ngIf=\"\n !!isReport === false &&\n allowTypeDashboard &&\n deviceTypeValue &&\n generalSettingsForm.controls['deviceType'] &&\n !hideAvailability\n \"\n [(globalRolesIds)]=\"globalRolesIds\"\n (globalRolesIdsChange)=\"changeGlobalRoleIds()\"\n ></c8y-dashboard-availability>\n </div>\n\n <div class=\"col-xs-12 col-md-6 p-b-24\">\n <c8y-typed-dashboard-settings\n *ngIf=\"allowTypeDashboard !== 'disallow'\"\n formControlName=\"deviceType\"\n [deviceTypeValue]=\"deviceTypeValue\"\n [displayDeviceTypeValue]=\"displayDeviceTypeValue\"\n [formInvalid]=\"generalSettingsForm.invalid\"\n [mo]=\"mo\"\n [isDevice]=\"isDevice\"\n [allowTypeDashboard]=\"allowTypeDashboard\"\n (onDuplicateWithoutType)=\"onDuplicateWithoutType.emit()\"\n ></c8y-typed-dashboard-settings>\n <c8y-dashboard-availability\n *ngIf=\"\n !!isReport === false &&\n (!allowTypeDashboard || !deviceTypeValue || !generalSettingsForm.controls['deviceType']) &&\n !hideAvailability\n \"\n [(globalRolesIds)]=\"globalRolesIds\"\n (globalRolesIdsChange)=\"changeGlobalRoleIds()\"\n ></c8y-dashboard-availability>\n </div>\n</div>\n" }]
|
|
32
32
|
}], ctorParameters: () => [{ type: i1.NavigatorService }], propDecorators: { isReport: [{
|
|
33
33
|
type: Input
|
|
34
34
|
}], isNamedDashboard: [{
|
|
@@ -52,4 +52,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
52
52
|
}], onDuplicateWithoutType: [{
|
|
53
53
|
type: Output
|
|
54
54
|
}] } });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWdlbmVyYWwtc2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvZGFzaGJvYXJkLXNldHRpbmdzL2Rhc2hib2FyZC1nZW5lcmFsLXNldHRpbmdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL2Rhc2hib2FyZC1zZXR0aW5ncy9kYXNoYm9hcmQtZ2VuZXJhbC1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTXZFLE9BQU8sRUFBRSxPQUFPLEVBQWlCLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7OztBQVEvRSxNQUFNLE9BQU8saUNBQWlDO0lBaUI1QyxZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQU41QywyQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBSW5ELHlCQUFvQixHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3JELCtCQUEwQixHQUFHLE9BQU8sQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFMUQsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztRQUNwRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDO0lBQ3RELENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekMsQ0FBQzs4R0EzQlUsaUNBQWlDO2tHQUFqQyxpQ0FBaUMsdWRDZDlDLHdwTkFtTUE7OzJGRHJMYSxpQ0FBaUM7a0JBSjdDLFNBQVM7K0JBQ0UsZ0NBQWdDO3FGQUlqQyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUNJLHNCQUFzQjtzQkFBL0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250ZXh0RGFzaGJvYXJkLFxuICBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCxcbiAgRGFzaGJvYXJkR2xvYmFsUm9sZXNcbn0gZnJvbSAnLi4vY29udGV4dC1kYXNoYm9hcmQubW9kZWwnO1xuaW1wb3J0IHsgZ2V0dGV4dCwgTmF2aWdhdG9yTm9kZSwgTmF2aWdhdG9yU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGFzaGJvYXJkRGV0YWlsU2VydmljZSB9IGZyb20gJy4uL2Rhc2hib2FyZC1kZXRhaWwuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXNoYm9hcmQtZ2VuZXJhbC1zZXR0aW5ncycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXNoYm9hcmQtZ2VuZXJhbC1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkR2VuZXJhbFNldHRpbmdzQ29tcG9uZW50IHtcbiAgQElucHV0KCkgaXNSZXBvcnQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzTmFtZWREYXNoYm9hcmQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGhpZGVBdmFpbGFiaWxpdHk6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZDtcbiAgQElucHV0KCkgZ2VuZXJhbFNldHRpbmdzRm9ybTogUmV0dXJuVHlwZTxEYXNoYm9hcmREZXRhaWxTZXJ2aWNlWydpbml0R2VuZXJhbFNldHRpbmdzRm9ybSddPjtcbiAgQElucHV0KCkgZGV2aWNlVHlwZVZhbHVlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRpc3BsYXlEZXZpY2VUeXBlVmFsdWU6IHN0cmluZztcbiAgQElucHV0KCkgYWxsb3dUeXBlRGFzaGJvYXJkOiBib29sZWFuO1xuICBASW5wdXQoKSBpc0RldmljZTogYm9vbGVhbjtcbiAgQElucHV0KCkgbW86IENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0O1xuICBAT3V0cHV0KCkgb25EdXBsaWNhdGVXaXRob3V0VHlwZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgZGFzaGJvYXJkTmFtZTogc3RyaW5nO1xuICBuYXZpZ2F0b3JOb2RlcyQ6IE9ic2VydmFibGU8TmF2aWdhdG9yTm9kZVtdPjtcbiAgZ2xvYmFsUm9sZXNJZHM6IERhc2hib2FyZEdsb2JhbFJvbGVzO1xuICByZWFkb25seSBwcmlvcml0eUV4YW1wbGVMYWJlbCA9IGdldHRleHQoJ2UuZy4ge3sgZXhhbXBsZSB9fScpO1xuICByZWFkb25seSBwb3NpdGlvbkluVGFic0V4YW1wbGVMYWJlbCA9IGdldHRleHQoJ1Bvc2l0aW9uIGluIHRhYnMgKDEwMDAwIGZpcnN0LCAtMTAwMDAgbGFzdCknKTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubmF2aWdhdG9yTm9kZXMkID0gdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLml0ZW1zJDtcbiAgICB0aGlzLmdsb2JhbFJvbGVzSWRzID0gdGhpcy5kYXNoYm9hcmQuZ2xvYmFsUm9sZXNJZHM7XG4gIH1cblxuICBjaGFuZ2VHbG9iYWxSb2xlSWRzKCkge1xuICAgIHRoaXMuZ2VuZXJhbFNldHRpbmdzRm9ybS5wYXRjaFZhbHVlKHsgZ2xvYmFsUm9sZXNJZHM6IHRoaXMuZ2xvYmFsUm9sZXNJZHMgfSk7XG4gICAgdGhpcy5nZW5lcmFsU2V0dGluZ3NGb3JtLm1hcmtBc0RpcnR5KCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJyb3dcIlxuICBbZm9ybUdyb3VwXT1cImdlbmVyYWxTZXR0aW5nc0Zvcm1cIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjb2wteHMtMTIgcC1iLTI0XCJcbiAgICBbbmdDbGFzc109XCJ7ICdjb2wtbWQtNic6ICFpc1JlcG9ydCwgJ2NvbC1tZC04JzogaXNSZXBvcnQgfVwiXG4gICAgKm5nSWY9XCIhaXNOYW1lZERhc2hib2FyZCB8fCBpc1JlcG9ydFwiXG4gID5cbiAgICA8ZmllbGRzZXQgY2xhc3M9XCJjOHktZmllbGRzZXQgYzh5LWZpZWxkc2V0LS1sZyBtLWItMjRcIj5cbiAgICAgIDxsZWdlbmQ+e3sgJ05hdmlnYXRpb24nIHwgdHJhbnNsYXRlIH19PC9sZWdlbmQ+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xNlwiPlxuICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgPGxhYmVsPnt7ICdJY29uJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgPGM4eS1pY29uLXNlbGVjdG9yLXdyYXBwZXJcbiAgICAgICAgICAgIFtpY29uU2l6ZV09XCIyNFwiXG4gICAgICAgICAgICBuYW1lPVwiaWNvblwiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpY29uXCJcbiAgICAgICAgICA+PC9jOHktaWNvbi1zZWxlY3Rvci13cmFwcGVyPlxuICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJmbGV4LWdyb3dcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwibWVudUxhYmVsXCI+XG4gICAgICAgICAgICB7eyAnTWVudSBsYWJlbCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHBvcG92ZXI9XCJ7e1xuICAgICAgICAgICAgICAgICdNZW51IGxhYmVsIHRvIGRpc3BsYXkgaW4gc3VibWVudSB3aGVuIGRhc2hib2FyZCBpcyBhdHRhY2hlZCcgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIGlkPVwibWVudUxhYmVsXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgbmFtZVBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIG5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICA8bGFiZWwgZm9yPVwiZGVzY3JpcHRpb25cIj57eyAnRGVzY3JpcHRpb24gJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICBpZD1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICBuYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgIGM4eS10ZXh0YXJlYS1hdXRvcmVzaXplXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTcgY29sLXhzLTEyXCJcbiAgICAgICAgICAqbmdJZj1cIiFpc1JlcG9ydFwiXG4gICAgICAgID5cbiAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwicG9zaXRpb25cIj5cbiAgICAgICAgICAgICAge3sgJ1Bvc2l0aW9uIGluIHRhYnMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1oZWxwIGJ0bi1oZWxwLS1zbVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIHBvcG92ZXI9XCJ7eyBwb3NpdGlvbkluVGFic0V4YW1wbGVMYWJlbCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgaWQ9XCJwb3NpdGlvbk5hdlwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgcHJpb3JpdHlFeGFtcGxlTGFiZWwgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogJzUwMCcgfSB9fVwiXG4gICAgICAgICAgICAgIG5hbWU9XCJwcmlvcml0eVwiXG4gICAgICAgICAgICAgIGZvcj1cInBvc2l0aW9uXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByaW9yaXR5XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY29sLXhzLTZcIlxuICAgICAgICAgICpuZ0lmPVwiaXNSZXBvcnRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5OYXZpZ2F0b3IgbWVudSBpdGVtPC9sYWJlbD5cbiAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgY2xhc3M9XCJjOHktc3dpdGNoXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnU2hvdyBpbiBuYXZpZ2F0b3InIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjOHlfSXNOYXZpZ2F0b3JOb2RlXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3Bhbj57eyAnU2hvdyBpbiBuYXZpZ2F0b3InIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjb2wteHMtNlwiXG4gICAgICAgICAgKm5nSWY9XCJpc1JlcG9ydCAmJiBnZW5lcmFsU2V0dGluZ3NGb3JtLnZhbHVlLmM4eV9Jc05hdmlnYXRvck5vZGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1ibG9ja1wiXG4gICAgICAgICAgICAgIGZvcj1cInBvc2l0aW9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ1Bvc2l0aW9uIGluIG5hdmlnYXRvcicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNwb3NpdGlvbkluTmF2UG9wPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAge3sgcG9zaXRpb25Jbk5hdmlnYXRpb25FeGFtcGxlTGFiZWwgfCB0cmFuc2xhdGUgfX0mbmJzcDtcbiAgICAgICAgICAgICAgICAgIHt7ICdFeGlzdGluZyBub2RlczonIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWQgbS10LTE2IG0tYi0wXCI+XG4gICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLXQtNCBwLWItNFwiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgbm9kZS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBub2RlIG9mIG5hdmlnYXRvck5vZGVzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tZmxleCBmaXQtd1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cIm5vZGUuaWNvblwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGUgbS1sLTQgbS1yLTE2IGZsZXgtZ3Jvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbm9kZS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbWVkaXVtIGZsZXgtbm8tc2hyaW5rXCI+e3sgbm9kZS5wcmlvcml0eSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1oZWxwIGJ0bi1oZWxwLS1zbVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtwb3BvdmVyXT1cInBvc2l0aW9uSW5OYXZQb3BcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgcHJpb3JpdHlFeGFtcGxlTGFiZWwgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogJzUwMCcgfSB9fVwiXG4gICAgICAgICAgICAgIG5hbWU9XCJwcmlvcml0eVwiXG4gICAgICAgICAgICAgIGZvcj1cInBvc2l0aW9uXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByaW9yaXR5XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuICAgIDxjOHktZGFzaGJvYXJkLWF2YWlsYWJpbGl0eVxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgISFpc1JlcG9ydCA9PT0gZmFsc2UgJiZcbiAgICAgICAgYWxsb3dUeXBlRGFzaGJvYXJkICYmXG4gICAgICAgIGRldmljZVR5cGVWYWx1ZSAmJlxuICAgICAgICBnZW5lcmFsU2V0dGluZ3NGb3JtLmNvbnRyb2xzWydkZXZpY2VUeXBlJ10gJiZcbiAgICAgICAgIWhpZGVBdmFpbGFiaWxpdHlcbiAgICAgIFwiXG4gICAgICBbKGdsb2JhbFJvbGVzSWRzKV09XCJnbG9iYWxSb2xlc0lkc1wiXG4gICAgICAoZ2xvYmFsUm9sZXNJZHNDaGFuZ2UpPVwiY2hhbmdlR2xvYmFsUm9sZUlkcygpXCJcbiAgICA+PC9jOHktZGFzaGJvYXJkLWF2YWlsYWJpbGl0eT5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtbWQtNiBwLWItMjRcIj5cbiAgICA8Yzh5LXR5cGVkLWRhc2hib2FyZC1zZXR0aW5nc1xuICAgICAgKm5nSWY9XCJhbGxvd1R5cGVEYXNoYm9hcmQgJiYgZGV2aWNlVHlwZVZhbHVlICYmIGdlbmVyYWxTZXR0aW5nc0Zvcm0uY29udHJvbHNbJ2RldmljZVR5cGUnXVwiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXZpY2VUeXBlXCJcbiAgICAgIFtkZXZpY2VUeXBlVmFsdWVdPVwiZGV2aWNlVHlwZVZhbHVlXCJcbiAgICAgIFtkaXNwbGF5RGV2aWNlVHlwZVZhbHVlXT1cImRpc3BsYXlEZXZpY2VUeXBlVmFsdWVcIlxuICAgICAgW2Zvcm1JbnZhbGlkXT1cImdlbmVyYWxTZXR0aW5nc0Zvcm0uaW52YWxpZFwiXG4gICAgICBbbW9dPVwibW9cIlxuICAgICAgW2lzRGV2aWNlXT1cImlzRGV2aWNlXCJcbiAgICAgIChvbkR1cGxpY2F0ZVdpdGhvdXRUeXBlKT1cIm9uRHVwbGljYXRlV2l0aG91dFR5cGUuZW1pdCgpXCJcbiAgICA+PC9jOHktdHlwZWQtZGFzaGJvYXJkLXNldHRpbmdzPlxuICAgIDxjOHktZGFzaGJvYXJkLWF2YWlsYWJpbGl0eVxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgISFpc1JlcG9ydCA9PT0gZmFsc2UgJiZcbiAgICAgICAgKCFhbGxvd1R5cGVEYXNoYm9hcmQgfHwgIWRldmljZVR5cGVWYWx1ZSB8fCAhZ2VuZXJhbFNldHRpbmdzRm9ybS5jb250cm9sc1snZGV2aWNlVHlwZSddKSAmJlxuICAgICAgICAhaGlkZUF2YWlsYWJpbGl0eVxuICAgICAgXCJcbiAgICAgIFsoZ2xvYmFsUm9sZXNJZHMpXT1cImdsb2JhbFJvbGVzSWRzXCJcbiAgICAgIChnbG9iYWxSb2xlc0lkc0NoYW5nZSk9XCJjaGFuZ2VHbG9iYWxSb2xlSWRzKClcIlxuICAgID48L2M4eS1kYXNoYm9hcmQtYXZhaWxhYmlsaXR5PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWdlbmVyYWwtc2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvZGFzaGJvYXJkLXNldHRpbmdzL2Rhc2hib2FyZC1nZW5lcmFsLXNldHRpbmdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL2Rhc2hib2FyZC1zZXR0aW5ncy9kYXNoYm9hcmQtZ2VuZXJhbC1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBT3ZFLE9BQU8sRUFBRSxPQUFPLEVBQWlCLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7OztBQVEvRSxNQUFNLE9BQU8saUNBQWlDO0lBaUI1QyxZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQU41QywyQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBSW5ELHlCQUFvQixHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3JELCtCQUEwQixHQUFHLE9BQU8sQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFMUQsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztRQUNwRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDO0lBQ3RELENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekMsQ0FBQzs4R0EzQlUsaUNBQWlDO2tHQUFqQyxpQ0FBaUMsdWRDZjlDLHlwTkFvTUE7OzJGRHJMYSxpQ0FBaUM7a0JBSjdDLFNBQVM7K0JBQ0UsZ0NBQWdDO3FGQUlqQyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUNJLHNCQUFzQjtzQkFBL0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBbGxvd1R5cGVEYXNoYm9hcmQsXG4gIENvbnRleHREYXNoYm9hcmQsXG4gIENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0LFxuICBEYXNoYm9hcmRHbG9iYWxSb2xlc1xufSBmcm9tICcuLi9jb250ZXh0LWRhc2hib2FyZC5tb2RlbCc7XG5pbXBvcnQgeyBnZXR0ZXh0LCBOYXZpZ2F0b3JOb2RlLCBOYXZpZ2F0b3JTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYXNoYm9hcmREZXRhaWxTZXJ2aWNlIH0gZnJvbSAnLi4vZGFzaGJvYXJkLWRldGFpbC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRhc2hib2FyZC1nZW5lcmFsLXNldHRpbmdzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rhc2hib2FyZC1nZW5lcmFsLXNldHRpbmdzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEYXNoYm9hcmRHZW5lcmFsU2V0dGluZ3NDb21wb25lbnQge1xuICBASW5wdXQoKSBpc1JlcG9ydDogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNOYW1lZERhc2hib2FyZDogYm9vbGVhbjtcbiAgQElucHV0KCkgaGlkZUF2YWlsYWJpbGl0eTogYm9vbGVhbjtcbiAgQElucHV0KCkgZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkO1xuICBASW5wdXQoKSBnZW5lcmFsU2V0dGluZ3NGb3JtOiBSZXR1cm5UeXBlPERhc2hib2FyZERldGFpbFNlcnZpY2VbJ2luaXRHZW5lcmFsU2V0dGluZ3NGb3JtJ10+O1xuICBASW5wdXQoKSBkZXZpY2VUeXBlVmFsdWU6IHN0cmluZztcbiAgQElucHV0KCkgZGlzcGxheURldmljZVR5cGVWYWx1ZTogc3RyaW5nO1xuICBASW5wdXQoKSBhbGxvd1R5cGVEYXNoYm9hcmQ6IEFsbG93VHlwZURhc2hib2FyZDtcbiAgQElucHV0KCkgaXNEZXZpY2U6IGJvb2xlYW47XG4gIEBJbnB1dCgpIG1vOiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdDtcbiAgQE91dHB1dCgpIG9uRHVwbGljYXRlV2l0aG91dFR5cGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIGRhc2hib2FyZE5hbWU6IHN0cmluZztcbiAgbmF2aWdhdG9yTm9kZXMkOiBPYnNlcnZhYmxlPE5hdmlnYXRvck5vZGVbXT47XG4gIGdsb2JhbFJvbGVzSWRzOiBEYXNoYm9hcmRHbG9iYWxSb2xlcztcbiAgcmVhZG9ubHkgcHJpb3JpdHlFeGFtcGxlTGFiZWwgPSBnZXR0ZXh0KCdlLmcuIHt7IGV4YW1wbGUgfX0nKTtcbiAgcmVhZG9ubHkgcG9zaXRpb25JblRhYnNFeGFtcGxlTGFiZWwgPSBnZXR0ZXh0KCdQb3NpdGlvbiBpbiB0YWJzICgxMDAwMCBmaXJzdCwgLTEwMDAwIGxhc3QpJyk7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmF2aWdhdG9yU2VydmljZTogTmF2aWdhdG9yU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm5hdmlnYXRvck5vZGVzJCA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5pdGVtcyQ7XG4gICAgdGhpcy5nbG9iYWxSb2xlc0lkcyA9IHRoaXMuZGFzaGJvYXJkLmdsb2JhbFJvbGVzSWRzO1xuICB9XG5cbiAgY2hhbmdlR2xvYmFsUm9sZUlkcygpIHtcbiAgICB0aGlzLmdlbmVyYWxTZXR0aW5nc0Zvcm0ucGF0Y2hWYWx1ZSh7IGdsb2JhbFJvbGVzSWRzOiB0aGlzLmdsb2JhbFJvbGVzSWRzIH0pO1xuICAgIHRoaXMuZ2VuZXJhbFNldHRpbmdzRm9ybS5tYXJrQXNEaXJ0eSgpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwicm93XCJcbiAgW2Zvcm1Hcm91cF09XCJnZW5lcmFsU2V0dGluZ3NGb3JtXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY29sLXhzLTEyIHAtYi0yNFwiXG4gICAgW25nQ2xhc3NdPVwieyAnY29sLW1kLTYnOiAhaXNSZXBvcnQsICdjb2wtbWQtOCc6IGlzUmVwb3J0IH1cIlxuICAgICpuZ0lmPVwiIWlzTmFtZWREYXNoYm9hcmQgfHwgaXNSZXBvcnRcIlxuICA+XG4gICAgPGZpZWxkc2V0IGNsYXNzPVwiYzh5LWZpZWxkc2V0IGM4eS1maWVsZHNldC0tbGcgbS1iLTI0XCI+XG4gICAgICA8bGVnZW5kPnt7ICdOYXZpZ2F0aW9uJyB8IHRyYW5zbGF0ZSB9fTwvbGVnZW5kPlxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMTZcIj5cbiAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgIDxsYWJlbD57eyAnSWNvbicgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgIDxjOHktaWNvbi1zZWxlY3Rvci13cmFwcGVyXG4gICAgICAgICAgICBbaWNvblNpemVdPVwiMjRcIlxuICAgICAgICAgICAgbmFtZT1cImljb25cIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaWNvblwiXG4gICAgICAgICAgPjwvYzh5LWljb24tc2VsZWN0b3Itd3JhcHBlcj5cbiAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwiZmxleC1ncm93XCI+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cIm1lbnVMYWJlbFwiPlxuICAgICAgICAgICAge3sgJ01lbnUgbGFiZWwnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBwb3BvdmVyPVwie3tcbiAgICAgICAgICAgICAgICAnTWVudSBsYWJlbCB0byBkaXNwbGF5IGluIHN1Ym1lbnUgd2hlbiBkYXNoYm9hcmQgaXMgYXR0YWNoZWQnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICBpZD1cIm1lbnVMYWJlbFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IG5hbWVQbGFjZWhvbGRlciB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBuYW1lPVwibmFtZVwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgPGxhYmVsIGZvcj1cImRlc2NyaXB0aW9uXCI+e3sgJ0Rlc2NyaXB0aW9uICcgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgaWQ9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgbmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICBjOHktdGV4dGFyZWEtYXV0b3Jlc2l6ZVxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNvbC1sZy03IGNvbC14cy0xMlwiXG4gICAgICAgICAgKm5nSWY9XCIhaXNSZXBvcnRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBvc2l0aW9uXCI+XG4gICAgICAgICAgICAgIHt7ICdQb3NpdGlvbiBpbiB0YWJzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBwb3BvdmVyPVwie3sgcG9zaXRpb25JblRhYnNFeGFtcGxlTGFiZWwgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIGlkPVwicG9zaXRpb25OYXZcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHByaW9yaXR5RXhhbXBsZUxhYmVsIHwgdHJhbnNsYXRlOiB7IGV4YW1wbGU6ICc1MDAnIH0gfX1cIlxuICAgICAgICAgICAgICBuYW1lPVwicHJpb3JpdHlcIlxuICAgICAgICAgICAgICBmb3I9XCJwb3NpdGlvblwiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwcmlvcml0eVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNvbC14cy02XCJcbiAgICAgICAgICAqbmdJZj1cImlzUmVwb3J0XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+TmF2aWdhdG9yIG1lbnUgaXRlbTwvbGFiZWw+XG4gICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgIGNsYXNzPVwiYzh5LXN3aXRjaFwiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1Nob3cgaW4gbmF2aWdhdG9yJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYzh5X0lzTmF2aWdhdG9yTm9kZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgJ1Nob3cgaW4gbmF2aWdhdG9yJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY29sLXhzLTZcIlxuICAgICAgICAgICpuZ0lmPVwiaXNSZXBvcnQgJiYgZ2VuZXJhbFNldHRpbmdzRm9ybS52YWx1ZS5jOHlfSXNOYXZpZ2F0b3JOb2RlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBjbGFzcz1cImQtYmxvY2tcIlxuICAgICAgICAgICAgICBmb3I9XCJwb3NpdGlvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdQb3NpdGlvbiBpbiBuYXZpZ2F0b3InIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcG9zaXRpb25Jbk5hdlBvcD5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIHt7IHBvc2l0aW9uSW5OYXZpZ2F0aW9uRXhhbXBsZUxhYmVsIHwgdHJhbnNsYXRlIH19Jm5ic3A7XG4gICAgICAgICAgICAgICAgICB7eyAnRXhpc3Rpbmcgbm9kZXM6JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkIG0tdC0xNiBtLWItMFwiPlxuICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC10LTQgcC1iLTRcIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7IG5vZGUubGFiZWwgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbm9kZSBvZiBuYXZpZ2F0b3JOb2RlcyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWZsZXggZml0LXdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBbYzh5SWNvbl09XCJub2RlLmljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlIG0tbC00IG0tci0xNiBmbGV4LWdyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG5vZGUubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW1lZGl1bSBmbGV4LW5vLXNocmlua1wiPnt7IG5vZGUucHJpb3JpdHkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbcG9wb3Zlcl09XCJwb3NpdGlvbkluTmF2UG9wXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHByaW9yaXR5RXhhbXBsZUxhYmVsIHwgdHJhbnNsYXRlOiB7IGV4YW1wbGU6ICc1MDAnIH0gfX1cIlxuICAgICAgICAgICAgICBuYW1lPVwicHJpb3JpdHlcIlxuICAgICAgICAgICAgICBmb3I9XCJwb3NpdGlvblwiXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwcmlvcml0eVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9maWVsZHNldD5cbiAgICA8Yzh5LWRhc2hib2FyZC1hdmFpbGFiaWxpdHlcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgICEhaXNSZXBvcnQgPT09IGZhbHNlICYmXG4gICAgICAgIGFsbG93VHlwZURhc2hib2FyZCAmJlxuICAgICAgICBkZXZpY2VUeXBlVmFsdWUgJiZcbiAgICAgICAgZ2VuZXJhbFNldHRpbmdzRm9ybS5jb250cm9sc1snZGV2aWNlVHlwZSddICYmXG4gICAgICAgICFoaWRlQXZhaWxhYmlsaXR5XG4gICAgICBcIlxuICAgICAgWyhnbG9iYWxSb2xlc0lkcyldPVwiZ2xvYmFsUm9sZXNJZHNcIlxuICAgICAgKGdsb2JhbFJvbGVzSWRzQ2hhbmdlKT1cImNoYW5nZUdsb2JhbFJvbGVJZHMoKVwiXG4gICAgPjwvYzh5LWRhc2hib2FyZC1hdmFpbGFiaWxpdHk+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLW1kLTYgcC1iLTI0XCI+XG4gICAgPGM4eS10eXBlZC1kYXNoYm9hcmQtc2V0dGluZ3NcbiAgICAgICpuZ0lmPVwiYWxsb3dUeXBlRGFzaGJvYXJkICE9PSAnZGlzYWxsb3cnXCJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cImRldmljZVR5cGVcIlxuICAgICAgW2RldmljZVR5cGVWYWx1ZV09XCJkZXZpY2VUeXBlVmFsdWVcIlxuICAgICAgW2Rpc3BsYXlEZXZpY2VUeXBlVmFsdWVdPVwiZGlzcGxheURldmljZVR5cGVWYWx1ZVwiXG4gICAgICBbZm9ybUludmFsaWRdPVwiZ2VuZXJhbFNldHRpbmdzRm9ybS5pbnZhbGlkXCJcbiAgICAgIFttb109XCJtb1wiXG4gICAgICBbaXNEZXZpY2VdPVwiaXNEZXZpY2VcIlxuICAgICAgW2FsbG93VHlwZURhc2hib2FyZF09XCJhbGxvd1R5cGVEYXNoYm9hcmRcIlxuICAgICAgKG9uRHVwbGljYXRlV2l0aG91dFR5cGUpPVwib25EdXBsaWNhdGVXaXRob3V0VHlwZS5lbWl0KClcIlxuICAgID48L2M4eS10eXBlZC1kYXNoYm9hcmQtc2V0dGluZ3M+XG4gICAgPGM4eS1kYXNoYm9hcmQtYXZhaWxhYmlsaXR5XG4gICAgICAqbmdJZj1cIlxuICAgICAgICAhIWlzUmVwb3J0ID09PSBmYWxzZSAmJlxuICAgICAgICAoIWFsbG93VHlwZURhc2hib2FyZCB8fCAhZGV2aWNlVHlwZVZhbHVlIHx8ICFnZW5lcmFsU2V0dGluZ3NGb3JtLmNvbnRyb2xzWydkZXZpY2VUeXBlJ10pICYmXG4gICAgICAgICFoaWRlQXZhaWxhYmlsaXR5XG4gICAgICBcIlxuICAgICAgWyhnbG9iYWxSb2xlc0lkcyldPVwiZ2xvYmFsUm9sZXNJZHNcIlxuICAgICAgKGdsb2JhbFJvbGVzSWRzQ2hhbmdlKT1cImNoYW5nZUdsb2JhbFJvbGVJZHMoKVwiXG4gICAgPjwvYzh5LWRhc2hib2FyZC1hdmFpbGFiaWxpdHk+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|