@elderbyte/ngx-starter 18.14.1 → 18.15.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/esm2022/lib/common/enums/elder-enum-translation.service.mjs +4 -4
- package/esm2022/lib/common/forms/elder-form-field-control-base.directive.mjs +45 -48
- package/esm2022/lib/common/forms/elder-from-field-base.mjs +4 -4
- package/esm2022/lib/common/forms/elder-from-field-customizable-base.mjs +4 -4
- package/esm2022/lib/common/forms/elder-from-field-entity-base.mjs +4 -4
- package/esm2022/lib/common/forms/elder-from-field-multi-entity-base.mjs +4 -4
- package/esm2022/lib/common/forms/form-field-base.component.mjs +4 -4
- package/esm2022/lib/common/forms/multi-model-base.component.mjs +4 -4
- package/esm2022/lib/common/forms/template-composite-control.mjs +4 -4
- package/esm2022/lib/common/forms/value-accessor-base.mjs +4 -4
- package/esm2022/lib/common/http/http-client-builder.service.mjs +4 -4
- package/esm2022/lib/common/http/http-client-pristine.mjs +4 -4
- package/esm2022/lib/common/http/transfer/data-transfer-factory.mjs +4 -4
- package/esm2022/lib/common/url/elder-router.service.mjs +4 -4
- package/esm2022/lib/common/url/elder-url-fragment-params.service.mjs +4 -4
- package/esm2022/lib/common/utils/public_api.mjs +2 -1
- package/esm2022/lib/components/access-denied/elder-access-denied.component.mjs +4 -4
- package/esm2022/lib/components/access-denied/elder-access-denied.module.mjs +5 -5
- package/esm2022/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +4 -4
- package/esm2022/lib/components/auditing/elder-audit.module.mjs +5 -5
- package/esm2022/lib/components/badge/elder-badge/elder-badge.component.mjs +10 -10
- package/esm2022/lib/components/badge/elder-badge.directive.mjs +4 -4
- package/esm2022/lib/components/badge/elder-badge.module.mjs +5 -5
- package/esm2022/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +4 -4
- package/esm2022/lib/components/button-group/elder-button-group.module.mjs +5 -5
- package/esm2022/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +4 -4
- package/esm2022/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +4 -4
- package/esm2022/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +4 -4
- package/esm2022/lib/components/card-organizer/elder-card-organizer.module.mjs +5 -5
- package/esm2022/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +4 -4
- package/esm2022/lib/components/cards/elder-card/elder-card.component.mjs +19 -19
- package/esm2022/lib/components/cards/elder-card/elder-card.module.mjs +5 -5
- package/esm2022/lib/components/chips/elder-chip-label.directive.mjs +4 -4
- package/esm2022/lib/components/chips/elder-chips.module.mjs +5 -5
- package/esm2022/lib/components/connectivity/elder-connectivity.module.mjs +5 -5
- package/esm2022/lib/components/connectivity/elder-connectivity.service.mjs +4 -4
- package/esm2022/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +4 -4
- package/esm2022/lib/components/containers/elder-containers.module.mjs +5 -5
- package/esm2022/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +4 -4
- package/esm2022/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +4 -4
- package/esm2022/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +4 -4
- package/esm2022/lib/components/csv/elder-csv.module.mjs +5 -5
- package/esm2022/lib/components/currency/elder-currency.module.mjs +5 -5
- package/esm2022/lib/components/currency/elder-currency.pipe.mjs +4 -4
- package/esm2022/lib/components/data-transfer/elder-data-transfer.module.mjs +5 -5
- package/esm2022/lib/components/data-transfer/elder-data-transfer.service.mjs +4 -4
- package/esm2022/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +4 -4
- package/esm2022/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +4 -4
- package/esm2022/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +4 -4
- package/esm2022/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +4 -4
- package/esm2022/lib/components/data-view/base/elder-data-view-base.mjs +4 -4
- package/esm2022/lib/components/data-view/common/composite-sort/composite-sort-dc.directive.mjs +4 -4
- package/esm2022/lib/components/data-view/common/composite-sort/elder-composite-sort/elder-composite-sort.component.mjs +4 -4
- package/esm2022/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +4 -4
- package/esm2022/lib/components/data-view/common/elder-data-common.module.mjs +5 -5
- package/esm2022/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +7 -7
- package/esm2022/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +4 -4
- package/esm2022/lib/components/data-view/common/selection/data-context-selection.directive.mjs +4 -4
- package/esm2022/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +4 -4
- package/esm2022/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +10 -10
- package/esm2022/lib/components/data-view/grid/elder-grid.module.mjs +5 -5
- package/esm2022/lib/components/data-view/master-detail/elder-detail-dialog/elder-detail-dialog.component.mjs +4 -4
- package/esm2022/lib/components/data-view/master-detail/elder-detail.directive.mjs +4 -4
- package/esm2022/lib/components/data-view/master-detail/elder-master-activation.directive.mjs +4 -4
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail.component.mjs +4 -4
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail.module.mjs +5 -5
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail.service.mjs +4 -4
- package/esm2022/lib/components/data-view/master-detail/elder-master.directive.mjs +4 -4
- package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +4 -4
- package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +5 -5
- package/esm2022/lib/components/data-view/table/activation/elder-delete-active.directive.mjs +4 -4
- package/esm2022/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +4 -4
- package/esm2022/lib/components/data-view/table/elder-center-cell.directive.mjs +4 -4
- package/esm2022/lib/components/data-view/table/elder-number-cell.directive.mjs +4 -4
- package/esm2022/lib/components/data-view/table/elder-paginator-intl.mjs +4 -4
- package/esm2022/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +4 -4
- package/esm2022/lib/components/data-view/table/elder-table/elder-table.component.mjs +4 -4
- package/esm2022/lib/components/data-view/table/elder-table-column.directive.mjs +4 -4
- package/esm2022/lib/components/data-view/table/elder-table-extension.directive.mjs +4 -4
- package/esm2022/lib/components/data-view/table/elder-table-root.directive.mjs +4 -4
- package/esm2022/lib/components/data-view/table/elder-table-row.directive.mjs +4 -4
- package/esm2022/lib/components/data-view/table/elder-table-sort.directive.mjs +4 -4
- package/esm2022/lib/components/data-view/table/elder-table.module.mjs +5 -5
- package/esm2022/lib/components/data-view/table/model/elder-table-model.mjs +4 -4
- package/esm2022/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +4 -4
- package/esm2022/lib/components/dialogs/elder-dialog.module.mjs +5 -5
- package/esm2022/lib/components/dialogs/elder-dialog.service.mjs +4 -4
- package/esm2022/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +4 -4
- package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +4 -4
- package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +4 -4
- package/esm2022/lib/components/errors/elder-error.module.mjs +5 -5
- package/esm2022/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +4 -4
- package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +4 -4
- package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +5 -5
- package/esm2022/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +4 -4
- package/esm2022/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.mjs +4 -4
- package/esm2022/lib/components/files/drag-n-drop/global-drag-drop.service.mjs +4 -4
- package/esm2022/lib/components/files/elder-file-drop-zone.directive.mjs +4 -4
- package/esm2022/lib/components/files/elder-file-select.directive.mjs +4 -4
- package/esm2022/lib/components/files/elder-file.module.mjs +5 -5
- package/esm2022/lib/components/files/file-select/file-select.component.mjs +4 -4
- package/esm2022/lib/components/files/file-upload/file-upload.component.mjs +4 -4
- package/esm2022/lib/components/forms/clipboard/elder-clipboard.service.mjs +4 -4
- package/esm2022/lib/components/forms/directives/base/elder-class-hostbinding-base.mjs +4 -4
- package/esm2022/lib/components/forms/directives/checkbox/elder-single-state-checkbox.directive.mjs +4 -4
- package/esm2022/lib/components/forms/directives/checkbox/elder-triple-state-checkbox.directive.mjs +4 -4
- package/esm2022/lib/components/forms/directives/elder-clipboard-put.directive.mjs +4 -4
- package/esm2022/lib/components/forms/directives/elder-delayed-focus.directive.mjs +4 -4
- package/esm2022/lib/components/forms/directives/elder-form-field-dense.directive.mjs +4 -4
- package/esm2022/lib/components/forms/directives/elder-form-field-label.directive.mjs +4 -4
- package/esm2022/lib/components/forms/directives/elder-form-field-no-hint.directive.mjs +4 -4
- package/esm2022/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +4 -4
- package/esm2022/lib/components/forms/directives/elder-forms-directives.module.mjs +5 -5
- package/esm2022/lib/components/forms/directives/elder-initial-value.directive.mjs +4 -4
- package/esm2022/lib/components/forms/directives/elder-input-pattern.directive.mjs +4 -4
- package/esm2022/lib/components/forms/directives/elder-key-event.directive.mjs +4 -4
- package/esm2022/lib/components/forms/directives/elder-next-focusable.directive.mjs +4 -4
- package/esm2022/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +4 -4
- package/esm2022/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +4 -4
- package/esm2022/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +4 -4
- package/esm2022/lib/components/forms/directives/elder-touched.directive.mjs +4 -4
- package/esm2022/lib/components/forms/directives/validation/elder-validation-error.directive.mjs +4 -4
- package/esm2022/lib/components/forms/directives/validation/strategies/common-validation-message-strategy.mjs +4 -4
- package/esm2022/lib/components/forms/directives/validation/strategies/dynamic-validation-message-strategy.mjs +4 -4
- package/esm2022/lib/components/forms/directives/validation/validation-message-renderer.service.mjs +4 -4
- package/esm2022/lib/components/forms/directives/validation/validators/elder-max.validator.mjs +4 -4
- package/esm2022/lib/components/forms/directives/validation/validators/elder-min.validator.mjs +4 -4
- package/esm2022/lib/components/forms/directives/validation/validators/elder-multiple-of.validator.mjs +4 -4
- package/esm2022/lib/components/forms/directives/validation/validators/elder-required-ignore-zero.validator.mjs +4 -4
- package/esm2022/lib/components/forms/elder-forms.module.mjs +5 -5
- package/esm2022/lib/components/forms/search/domain/context/search-context.service.mjs +4 -4
- package/esm2022/lib/components/forms/search/domain/url/elder-search-url.directive.mjs +4 -4
- package/esm2022/lib/components/forms/search/domain/url/elder-search-url.service.mjs +4 -4
- package/esm2022/lib/components/forms/search/elder-search-context.directive.mjs +4 -4
- package/esm2022/lib/components/forms/search/elder-search-input.directive.mjs +4 -4
- package/esm2022/lib/components/forms/search/elder-search.module.mjs +5 -5
- package/esm2022/lib/components/forms/search/search-box/elder-search-box.component.mjs +4 -4
- package/esm2022/lib/components/forms/search/search-box/elder-search-panel.component.mjs +4 -4
- package/esm2022/lib/components/global-search/elder-global-search.component.mjs +4 -4
- package/esm2022/lib/components/global-search/elder-global-search.module.mjs +5 -5
- package/esm2022/lib/components/global-search/elder-global-search.service.mjs +4 -4
- package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +4 -4
- package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +5 -5
- package/esm2022/lib/components/headers/elder-header/elder-header.component.mjs +4 -4
- package/esm2022/lib/components/headers/elder-header.module.mjs +5 -5
- package/esm2022/lib/components/http-support/elder-http-client.service.mjs +4 -4
- package/esm2022/lib/components/i18n/entities/elder-i18n-entities.module.mjs +5 -5
- package/esm2022/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +4 -4
- package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +4 -4
- package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +4 -4
- package/esm2022/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +4 -4
- package/esm2022/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +4 -4
- package/esm2022/lib/components/i18n/entities/elder-localized-texts.directive.mjs +4 -4
- package/esm2022/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +4 -4
- package/esm2022/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +4 -4
- package/esm2022/lib/components/i18n/entities/picker/localisation-picker.service.mjs +4 -4
- package/esm2022/lib/components/i18n/language/elder-language-interceptor.mjs +4 -4
- package/esm2022/lib/components/i18n/language/elder-language.module.mjs +5 -5
- package/esm2022/lib/components/i18n/language/elder-language.service.mjs +4 -4
- package/esm2022/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +4 -4
- package/esm2022/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +5 -5
- package/esm2022/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +4 -4
- package/esm2022/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +4 -4
- package/esm2022/lib/components/iframes/elder-iframe.module.mjs +5 -5
- package/esm2022/lib/components/iframes/iframe-close.directive.mjs +4 -4
- package/esm2022/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +4 -4
- package/esm2022/lib/components/iframes/iframe-host/iframe-host.component.mjs +4 -4
- package/esm2022/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +4 -4
- package/esm2022/lib/components/iframes/iframe.service.mjs +4 -4
- package/esm2022/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +4 -4
- package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +4 -4
- package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +5 -5
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-suggestion-panel.component.mjs +5 -5
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete-many.directive.mjs +4 -4
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +4 -4
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete.module.mjs +5 -5
- package/esm2022/lib/components/labels/elder-labels.module.mjs +5 -5
- package/esm2022/lib/components/labels/labels-input/labels-input.component.mjs +4 -4
- package/esm2022/lib/components/measures/dimensions/dimensions-input/elder-dimensions-input.component.mjs +9 -16
- package/esm2022/lib/components/measures/dimensions/validation/elder-required-dimensions.validator.mjs +4 -4
- package/esm2022/lib/components/measures/directives/elder-unit-select.directive.mjs +4 -4
- package/esm2022/lib/components/measures/elder-measures.module.mjs +9 -9
- package/esm2022/lib/components/measures/elder-quantity-transform.pipe.mjs +4 -4
- package/esm2022/lib/components/measures/elder-quantity.pipe.mjs +4 -4
- package/esm2022/lib/components/measures/elder-unit.service.mjs +4 -4
- package/esm2022/lib/components/measures/quantity-input/quantity-form-field/elder-quantity-form-field.component.mjs +4 -4
- package/esm2022/lib/components/measures/quantity-input/quantity-input-control/elder-quantity-input-control.component.mjs +12 -18
- package/esm2022/lib/components/measures/quantity-input/validation/elder-quantity-range.validator.mjs +4 -4
- package/esm2022/lib/components/measures/quantity-input/validation/elder-required-quantity.validator.mjs +4 -4
- package/esm2022/lib/components/measures/util/elder-quantity.service.mjs +4 -4
- package/esm2022/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +4 -4
- package/esm2022/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +5 -5
- package/esm2022/lib/components/navigation/nav/elder-nav.module.mjs +5 -5
- package/esm2022/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +4 -4
- package/esm2022/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +4 -4
- package/esm2022/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +4 -4
- package/esm2022/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +4 -4
- package/esm2022/lib/components/navigation/toolbar/elder-toolbar.module.mjs +5 -5
- package/esm2022/lib/components/navigation/toolbar/elder-toolbar.service.mjs +4 -4
- package/esm2022/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +4 -4
- package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +4 -4
- package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +4 -4
- package/esm2022/lib/components/overlays/elder-overlay-origin.directive.mjs +4 -4
- package/esm2022/lib/components/overlays/elder-overlay-ref.mjs +4 -4
- package/esm2022/lib/components/overlays/elder-overlay-trigger.directive.mjs +4 -4
- package/esm2022/lib/components/overlays/elder-overlay.component.mjs +4 -4
- package/esm2022/lib/components/overlays/elder-overlay.module.mjs +5 -5
- package/esm2022/lib/components/page/exit-guard/page-exit-guard.module.mjs +5 -5
- package/esm2022/lib/components/page/exit-guard/page-exit-guard.service.mjs +4 -4
- package/esm2022/lib/components/page/exit-guard/page-exit-lock/page-exit-lock.component.mjs +4 -4
- package/esm2022/lib/components/page/exit-guard/page-exit-lock-indicator/page-exit-lock-indicator.component.mjs +4 -4
- package/esm2022/lib/components/page/exit-guard/page-exit-lock-overview/page-exit-lock-overview.component.mjs +4 -4
- package/esm2022/lib/components/panels/card-panel/elder-card-panel.component.mjs +4 -4
- package/esm2022/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.mjs +4 -4
- package/esm2022/lib/components/panels/elder-panel.module.mjs +5 -5
- package/esm2022/lib/components/panels/flat/elder-panel.component.mjs +4 -4
- package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel-trigger.directive.mjs +4 -4
- package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel.component.mjs +10 -10
- package/esm2022/lib/components/scrollbar/elder-scrollbar.directive.mjs +4 -4
- package/esm2022/lib/components/scrollbar/elder-scrollbar.module.mjs +5 -5
- package/esm2022/lib/components/select/auto/elder-auto-select-first.directive.mjs +4 -4
- package/esm2022/lib/components/select/auto/elder-auto-select-first.service.mjs +4 -4
- package/esm2022/lib/components/select/auto/elder-auto-select-suggest-first.directive.mjs +4 -4
- package/esm2022/lib/components/select/elder-select-base.mjs +40 -24
- package/esm2022/lib/components/select/elder-select-chip.directive.mjs +10 -10
- package/esm2022/lib/components/select/elder-select-on-tab.directive.mjs +4 -4
- package/esm2022/lib/components/select/elder-select-value.directive.mjs +4 -4
- package/esm2022/lib/components/select/elder-select.module.mjs +5 -5
- package/esm2022/lib/components/select/filter/elder-chips-include-exclude.directive.mjs +4 -4
- package/esm2022/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.mjs +4 -4
- package/esm2022/lib/components/select/multi/elder-chip-select-option/elder-select-option.component.mjs +4 -4
- package/esm2022/lib/components/select/multi/elder-multi-select-base.mjs +10 -13
- package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/chip-options-provider.mjs +4 -3
- package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/elder-multi-select-chip-options.component.mjs +22 -31
- package/esm2022/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +24 -37
- package/esm2022/lib/components/select/multi/elder-multi-select-form-field.mjs +4 -4
- package/esm2022/lib/components/select/multi/elder-mutli-select-all-directive.mjs +4 -4
- package/esm2022/lib/components/select/multi/elder-search-include-exclude.directive.mjs +4 -4
- package/esm2022/lib/components/select/popup/selection-model-popup-trigger-adapter.directive.mjs +4 -4
- package/esm2022/lib/components/select/popup/selection-model-popup.directive.mjs +4 -4
- package/esm2022/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +4 -4
- package/esm2022/lib/components/select/single/elder-clear-select.directive.mjs +4 -4
- package/esm2022/lib/components/select/single/elder-select/elder-select.component.mjs +30 -49
- package/esm2022/lib/components/select/single/elder-select-form-field.mjs +4 -4
- package/esm2022/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +4 -4
- package/esm2022/lib/components/select-chip-list/elder-chip-list-select.module.mjs +5 -5
- package/esm2022/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +4 -4
- package/esm2022/lib/components/shell/drawers/elder-router-outlet.service.mjs +4 -4
- package/esm2022/lib/components/shell/elder-shell-slot.directive.mjs +4 -4
- package/esm2022/lib/components/shell/elder-shell.module.mjs +5 -5
- package/esm2022/lib/components/shell/elder-shell.service.mjs +4 -4
- package/esm2022/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +4 -4
- package/esm2022/lib/components/shell/shell/elder-shell.component.mjs +13 -13
- package/esm2022/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +4 -4
- package/esm2022/lib/components/tabs/elder-tab/elder-tab.directive.mjs +4 -4
- package/esm2022/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +4 -4
- package/esm2022/lib/components/tabs/elder-tab.module.mjs +5 -5
- package/esm2022/lib/components/theme/elder-theme-applier.directive.mjs +4 -4
- package/esm2022/lib/components/theme/elder-theme-preference.service.mjs +4 -4
- package/esm2022/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.mjs +4 -4
- package/esm2022/lib/components/theme/elder-theme.directive.mjs +4 -4
- package/esm2022/lib/components/theme/elder-theme.module.mjs +5 -5
- package/esm2022/lib/components/theme/elder-theme.service.mjs +4 -4
- package/esm2022/lib/components/time/date-adapters/custom-date-adapter.mjs +4 -4
- package/esm2022/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +9 -16
- package/esm2022/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +4 -4
- package/esm2022/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +10 -16
- package/esm2022/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +12 -17
- package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker.component.mjs +4 -4
- package/esm2022/lib/components/time/elder-interval-picker/interval-picker-binding/elder-interval-picker-binding.directive.mjs +4 -4
- package/esm2022/lib/components/time/elder-interval-picker/interval-picker-toggle/elder-interval-picker-toggle.component.mjs +4 -4
- package/esm2022/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +10 -16
- package/esm2022/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +10 -16
- package/esm2022/lib/components/time/elder-time.module.mjs +5 -5
- package/esm2022/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +9 -16
- package/esm2022/lib/components/time/pipes/to-iso-date-string.pipe.mjs +4 -4
- package/esm2022/lib/components/toasts/elder-toast.module.mjs +5 -5
- package/esm2022/lib/components/toasts/elder-toast.service.mjs +4 -4
- package/esm2022/lib/components/toasts/standard-toast/standard-toast.component.mjs +4 -4
- package/esm2022/lib/components/url-fragment/elder-url-fragment.module.mjs +5 -5
- package/esm2022/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +4 -4
- package/esm2022/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +4 -4
- package/esm2022/lib/components/viewers/elder-viewers.module.mjs +5 -5
- package/esm2022/lib/features/event-source/fetch/reactive-fetch-event-source.service.mjs +4 -4
- package/esm2022/lib/features/event-source/standard/elder-event-source.service.mjs +4 -4
- package/esm2022/lib/features/kafent/access-token-provider.mjs +4 -4
- package/esm2022/lib/features/kafent/kafent-config.mjs +4 -4
- package/esm2022/lib/features/kafent/kafent-event-stream.mjs +4 -4
- package/esm2022/lib/features/kafent/kafent-event.service.mjs +4 -4
- package/esm2022/lib/features/kafent/kafent.module.mjs +5 -5
- package/esm2022/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +4 -4
- package/esm2022/lib/pipes/bytes.pipe.mjs +4 -4
- package/esm2022/lib/pipes/elder-pipes.module.mjs +11 -11
- package/esm2022/lib/pipes/elder-repeat.pipe.mjs +4 -4
- package/esm2022/lib/pipes/elder-round.pipe.mjs +4 -4
- package/esm2022/lib/pipes/elder-safe-url.pipe.mjs +4 -4
- package/esm2022/lib/pipes/elder-truncate.pipe.mjs +4 -4
- package/esm2022/lib/pipes/iso-duration.pipe.mjs +4 -4
- package/esm2022/lib/pipes/iso-interval-parse.pipe.mjs +4 -4
- package/esm2022/lib/pipes/iso-interval.pipe.mjs +4 -4
- package/esm2022/lib/pipes/time-ago.pipe.mjs +4 -4
- package/esm2022/lib/pipes/time-duration.pipe.mjs +4 -4
- package/esm2022/lib/pipes/weight.pipe.mjs +4 -4
- package/fesm2022/elderbyte-ngx-starter.mjs +1257 -1314
- package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
- package/lib/common/forms/elder-form-field-control-base.directive.d.ts +14 -18
- package/lib/common/utils/public_api.d.ts +1 -0
- package/lib/components/measures/dimensions/dimensions-input/elder-dimensions-input.component.d.ts +3 -7
- package/lib/components/measures/quantity-input/quantity-input-control/elder-quantity-input-control.component.d.ts +3 -7
- package/lib/components/select/elder-select-base.d.ts +13 -12
- package/lib/components/select/multi/elder-multi-select-base.d.ts +2 -7
- package/lib/components/select/multi/elder-multi-select-chip-options/chip-options-provider.d.ts +2 -1
- package/lib/components/select/multi/elder-multi-select-chip-options/elder-multi-select-chip-options.component.d.ts +5 -9
- package/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.d.ts +7 -11
- package/lib/components/select/single/elder-select/elder-select.component.d.ts +8 -15
- package/lib/components/time/duration/elder-duration-input/elder-duration-input.component.d.ts +2 -7
- package/lib/components/time/elder-date-time-input/elder-date-time-input.component.d.ts +3 -7
- package/lib/components/time/elder-interval-input/elder-interval-input.component.d.ts +3 -7
- package/lib/components/time/elder-local-date-input/elder-local-date-input.component.d.ts +3 -7
- package/lib/components/time/elder-local-time-input/elder-local-time-input.component.d.ts +3 -7
- package/lib/components/time/period/elder-period-input/elder-period-input.component.d.ts +2 -7
- package/package.json +1 -1
- package/src/lib/components/select/multi/elder-select-include-exclude-chip/elder-select-include-exclude-chip.component.scss +0 -0
package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker.component.mjs
CHANGED
|
@@ -150,10 +150,10 @@ export class ElderIntervalPickerComponent {
|
|
|
150
150
|
console.debug('Failed to update calendar active date', e);
|
|
151
151
|
}
|
|
152
152
|
}
|
|
153
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
154
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.5", type: ElderIntervalPickerComponent, isStandalone: true, selector: "elder-interval-picker", inputs: { emitType: { classPropertyName: "emitType", publicName: "emitType", isSignal: true, isRequired: false, transformFunction: null }, autoEmitMode: { classPropertyName: "autoEmitMode", publicName: "autoEmitMode", isSignal: true, isRequired: false, transformFunction: null }, intervalInputMode: { classPropertyName: "intervalInputMode", publicName: "intervalInputMode", isSignal: true, isRequired: false, transformFunction: null }, showAnchor: { classPropertyName: "showAnchor", publicName: "showAnchor", isSignal: true, isRequired: false, transformFunction: null }, anchorReadOnly: { classPropertyName: "anchorReadOnly", publicName: "anchorReadOnly", isSignal: true, isRequired: false, transformFunction: null }, externalAnchorDateTime: { classPropertyName: "externalAnchorDateTime", publicName: "externalAnchorDateTime", isSignal: true, isRequired: false, transformFunction: null }, externalInterval: { classPropertyName: "externalInterval", publicName: "externalInterval", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { intervalChange: "intervalChange" }, providers: [{ provide: DateAdapter, useClass: CustomDateAdapter }], viewQueries: [{ propertyName: "calendarStart", first: true, predicate: ["rangeCalendarStart"], descendants: true }, { propertyName: "calendarEnd", first: true, predicate: ["rangeCalendarEnd"], descendants: true }, { propertyName: "calendarStartElRef", first: true, predicate: ["rangeCalendarStart"], descendants: true, read: ElementRef }, { propertyName: "calendarEndElRef", first: true, predicate: ["rangeCalendarEnd"], descendants: true, read: ElementRef }, { propertyName: "startDateInput", first: true, predicate: ["startDateInput"], descendants: true }, { propertyName: "endDateInput", first: true, predicate: ["endDateInput"], descendants: true }], ngImport: i0, template: "<div class=\"interval-picker-component p-md layout-col gap-xxl\">\n <div class=\"layout-row gap-xxl place-between-start\" style=\"gap: 5%\">\n <div class=\"layout-col gap-md pt-xs\">\n <div class=\"layout-col\">\n <div class=\"layout-row select-buttons-container gap-sm\">\n <div class=\"layout-col gap-xs place-start-stretch\">\n <button mat-button (click)=\"controller.select.selectCurrentDay()\">\n @if (presenter.isFixedAnchorDateSet()) {\n {{ 'intervalPicker.anchorDay' | translate }}\n } @else {\n {{ 'intervalPicker.today' | translate }}\n }\n </button>\n <button mat-button (click)=\"controller.select.selectYesterday()\">\n @if (presenter.isFixedAnchorDateSet()) {\n {{ 'intervalPicker.last' | translate }} 1 {{ 'intervalPicker.day' | translate }}\n } @else {\n {{ 'intervalPicker.yesterday' | translate }}\n }\n </button>\n <button mat-button (click)=\"controller.select.selectLastSevenDaysIncludingToday()\">\n {{ 'intervalPicker.last' | translate }} 7\n {{ 'intervalPicker.days' | translate }}\n </button>\n <button mat-button (click)=\"controller.select.selectLastThirtyDaysIncludingToday()\">\n {{ 'intervalPicker.last' | translate }} 30\n {{ 'intervalPicker.days' | translate }}\n </button>\n <button mat-button (click)=\"controller.select.selectLast365daysIncludingToday()\">\n {{ 'intervalPicker.last' | translate }} 365\n {{ 'intervalPicker.days' | translate }}\n </button>\n @if (intervalInputMode() === 'date-time-range') {\n <div class=\"pt-sm\"></div>\n <button mat-button (click)=\"controller.select.selectLastFiveMinutes()\">\n {{ 'intervalPicker.last' | translate }} 5\n {{ 'intervalPicker.minutes' | translate }}\n </button>\n <button mat-button (click)=\"controller.select.selectLastHour()\">\n {{ 'intervalPicker.last' | translate }} {{ 'intervalPicker.hour' | translate }}\n </button>\n <button mat-button (click)=\"controller.select.selectLast24Hours()\">\n {{ 'intervalPicker.last' | translate }} 24\n {{ 'intervalPicker.hours' | translate }}\n </button>\n }\n </div>\n </div>\n </div>\n </div>\n <div class=\"layout-col\">\n <!-- smart shift -->\n <div class=\"layout-row place-around-center\">\n <button\n mat-icon-button\n (click)=\"controller.shift.smartShift(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ presenter.smartShiftMessage() }}</span>\n <button\n mat-icon-button\n (click)=\"controller.shift.smartShift(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <!-- calendars and input controls -->\n <div\n class=\"layout-row place-around-center\"\n style=\"align-items: flex-start; min-height: 280px\"\n >\n <mat-calendar\n #rangeCalendarStart\n style=\"width: 210px; max-width: 100%\"\n [selected]=\"presenter.dateRangeForCalendar()\"\n (selectedChange)=\"controller.calendar.setStartDateFromJSDate($event)\"\n [maxDate]=\"presenter.endDateTimeAsJSDate()\"\n [dateClass]=\"presenter.calendarAnchorDateCssClassFn\"\n >\n </mat-calendar>\n <mat-calendar\n #rangeCalendarEnd\n style=\"width: 210px; max-width: 100%\"\n [selected]=\"presenter.dateRangeForCalendar()\"\n (selectedChange)=\"controller.calendar.setEndDateFromJSDate($event)\"\n [minDate]=\"presenter.startDateTimeAsJSDate()\"\n [dateClass]=\"presenter.calendarAnchorDateCssClassFn\"\n >\n </mat-calendar>\n </div>\n <div class=\"layout-row place-around-center gap-xl pt-sm\">\n <div class=\"layout-row place-around-center\">\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.startDate' | translate }}</mat-label>\n <input\n #startDateInput\n name=\"startDateInput\"\n matInput\n type=\"date\"\n [ngModel]=\"presenter.startDateHtmlString()\"\n (ngModelChange)=\"controller.form.setStartDateFromString($event)\"\n />\n </mat-form-field>\n </div>\n <div class=\"layout-row place-around-center\">\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.endDate' | translate }}</mat-label>\n <input\n #endDateInput\n name=\"endDateInput\"\n matInput\n type=\"date\"\n [ngModel]=\"presenter.endDateHtmlString()\"\n (ngModelChange)=\"controller.form.setEndDateFromString($event)\"\n />\n </mat-form-field>\n </div>\n </div>\n @if (intervalInputMode() === 'date-time-range') {\n <div class=\"layout-row place-around-center gap-xl pt-sm\">\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.startTime' | translate }}</mat-label>\n <input\n name=\"startTimeInput\"\n matInput\n type=\"time\"\n #startTimeControl=\"ngModel\"\n step=\"1\"\n [ngModel]=\"presenter.startTimeHtmlString()\"\n (ngModelChange)=\"controller.form.setStartTimeFromString($event)\"\n />\n <button\n mat-icon-button\n matSuffix\n (click)=\"controller.clearStartTime()\"\n [disabled]=\"!presenter.isStartTimeSetAndNotMidnight()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.endTime' | translate }}</mat-label>\n <input\n name=\"endTimeInput\"\n matInput\n type=\"time\"\n #endTimeControl=\"ngModel\"\n step=\"1\"\n [ngModel]=\"presenter.endTimeHtmlString()\"\n (ngModelChange)=\"controller.form.setEndTimeFromString($event)\"\n />\n <button\n mat-icon-button\n matSuffix\n (click)=\"controller.clearEndTime()\"\n [disabled]=\"!presenter.isEndTimeSetAndNotMidnight()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n }\n <br />\n </div>\n <div class=\"pt-xs\" style=\"width: 25%\">\n <div class=\"layout-col gap-lg\">\n <div class=\"layout-col gap-xs place-start-start\">\n <!-- select current -->\n <button mat-button (click)=\"controller.select.selectCurrentWeek()\">\n {{ 'intervalPicker.currentPeriod.week' | translate }}\n </button>\n <button mat-button (click)=\"controller.select.selectCurrentMonth()\">\n {{ 'intervalPicker.currentPeriod.month' | translate }}\n </button>\n <button mat-button (click)=\"controller.select.selectCurrentQuarter()\">\n {{ 'intervalPicker.currentPeriod.quarter' | translate }}\n </button>\n <button mat-button (click)=\"controller.select.selectCurrentYear()\">\n {{ 'intervalPicker.currentPeriod.year' | translate }}\n </button>\n </div>\n <div class=\"fixed-shifts-container\">\n <div class=\"layout-col place-start-stretch\">\n <div class=\"layout-row place-between-center\">\n <button\n mat-icon-button\n (click)=\"controller.shift.shiftDay(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.day' | translate }}</span>\n <button\n mat-icon-button\n (click)=\"controller.shift.shiftDay(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <div class=\"layout-row place-between-center\">\n <button\n mat-icon-button\n (click)=\"controller.shift.shiftMonth(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.month' | translate }}</span>\n <button\n mat-icon-button\n (click)=\"controller.shift.shiftMonth(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <div class=\"layout-row place-between-center\">\n <button\n mat-icon-button\n (click)=\"controller.shift.shiftYear(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.year' | translate }}</span>\n <button\n mat-icon-button\n (click)=\"controller.shift.shiftYear(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n\n @if (true) {\n <!-- shift minute -->\n <div class=\"layout-row place-between-center\">\n <button\n mat-icon-button\n (click)=\"controller.shift.shiftMinute(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.minute' | translate }}</span>\n <button\n mat-icon-button\n (click)=\"controller.shift.shiftMinute(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <!-- shift hour -->\n <div class=\"layout-row place-between-center\">\n <button\n mat-icon-button\n (click)=\"controller.shift.shiftHour(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.hour' | translate }}</span>\n <button\n mat-icon-button\n (click)=\"controller.shift.shiftHour(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"layout-row place-between-center gap-xxl pt-sm\">\n <div>\n @if (showAnchor()) {\n <div class=\"layout-row flex-none gap-md\">\n <mat-menu #anchorMenu=\"matMenu\">\n @if (presenter.startDateHtmlString()) {\n <button\n mat-menu-item\n (click)=\"controller.anchor.setFixedAnchorPointToEndDateTime()\"\n [disabled]=\"!presenter.startDateHtmlString()\"\n >\n <mat-icon class=\"material-symbols-outlined\">login</mat-icon>\n <span>{{ 'intervalPicker.endDate' | translate }}</span>\n </button>\n }\n @if (presenter.endDateHtmlString()) {\n <button\n mat-menu-item\n (click)=\"controller.anchor.setFixedAnchorPointToStartDateTime()\"\n [disabled]=\"!presenter.endDateHtmlString()\"\n >\n <mat-icon class=\"material-symbols-outlined\">logout</mat-icon>\n <span>{{ 'intervalPicker.startDate' | translate }}</span>\n </button>\n }\n @if (presenter.isFixedAnchorDateSet()) {\n <button\n mat-menu-item\n (click)=\"controller.anchor.resetAnchor()\"\n [disabled]=\"!presenter.isFixedAnchorDateSet() || anchorReadOnly()\"\n >\n <mat-icon>close</mat-icon>\n <span>{{ 'intervalPicker.clear' | translate }}</span>\n </button>\n }\n </mat-menu>\n\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.anchorDate' | translate }}</mat-label>\n <input\n #startDateInput\n name=\"anchorDateInput\"\n matInput\n type=\"date\"\n [ngModel]=\"presenter.anchorDateHtmlString()\"\n (ngModelChange)=\"controller.form.setAnchorDateFromString($event)\"\n [readonly]=\"anchorReadOnly()\"\n />\n @if (!anchorReadOnly()) {\n <button\n mat-icon-button\n matSuffix\n [matMenuTriggerFor]=\"anchorMenu\"\n [disabled]=\"presenter.isAnchorMenuDisabled()\"\n >\n <mat-icon class=\"material-symbols-outlined\">more_horiz</mat-icon>\n </button>\n }\n </mat-form-field>\n @if (intervalInputMode() === 'date-time-range') {\n <mat-form-field class=\"input-control-container-short\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.anchorTime' | translate }}</mat-label>\n <input\n matInput\n name=\"anchorTimeInput\"\n type=\"time\"\n #anchorTimeControl=\"ngModel\"\n step=\"1\"\n [readonly]=\"anchorReadOnly()\"\n [ngModel]=\"presenter.anchorTimeHtmlString()\"\n (ngModelChange)=\"controller.form.setAnchorTimeFromString($event)\"\n />\n <button\n mat-icon-button\n matSuffix\n (click)=\"controller.anchor.resetAnchorTime()\"\n [disabled]=\"anchorReadOnly() || presenter.isAnchorTimeMidnight()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n }\n </div>\n }\n </div>\n <!-- result interval -->\n <div class=\"layout-col place-center-center\">\n <div class=\"date-interval mat-caption pt-xs\">\n @if (presenter.startDateTimeAsJSDate()) {\n {{ presenter.startDateTimeAsJSDate() | date: 'dd.MM. y, HH:mm:ss' }}\n } @else {\n {{ 'intervalPicker.startDateNotSet' | translate }}\n }\n <span> - </span>\n @if (presenter.endDateTimeAsJSDate()) {\n {{ presenter.endDateTimeAsJSDate() | date: 'dd.MM. y, HH:mm:ss' }}\n } @else {\n {{ 'intervalPicker.endDateNotSet' | translate }}\n }\n </div>\n <div>\n <span class=\"mat-caption\">{{ presenter.deltaHumanReadable() || ' ' }}</span>\n </div>\n </div>\n <div class=\"layout-row gap-lg\">\n <button\n mat-raised-button\n color=\"primary\"\n (click)=\"controller.clearInterval()\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n {{ 'intervalPicker.clear' | translate }}\n </button>\n\n @if (!this.autoEmitMode()) {\n <button color=\"primary\" mat-raised-button (click)=\"controller.manualEmit()\">\n {{ 'actions.ok' | translate }}\n </button>\n }\n </div>\n</div>\n", styles: [".interval-picker-component{min-width:840px;max-width:100%}.fixed-shifts-container{max-width:160px}.input-control-container{width:192px;max-width:100%}.input-control-container-short{width:140px;max-width:100%}.select-buttons-container button{white-space:nowrap;text-align:left;justify-content:flex-start}::ng-deep .interval-picker-component .mat-calendar-body-cell.elder-custom-anchor-date .mat-calendar-body-cell-content{border-radius:50%;background-color:#def;background-color:#b4d2ebbf}\n"], dependencies: [{ kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i1.MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i4.DatePipe, name: "date" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i9.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i9.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i9.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
153
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ElderIntervalPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
154
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ElderIntervalPickerComponent, isStandalone: true, selector: "elder-interval-picker", inputs: { emitType: { classPropertyName: "emitType", publicName: "emitType", isSignal: true, isRequired: false, transformFunction: null }, autoEmitMode: { classPropertyName: "autoEmitMode", publicName: "autoEmitMode", isSignal: true, isRequired: false, transformFunction: null }, intervalInputMode: { classPropertyName: "intervalInputMode", publicName: "intervalInputMode", isSignal: true, isRequired: false, transformFunction: null }, showAnchor: { classPropertyName: "showAnchor", publicName: "showAnchor", isSignal: true, isRequired: false, transformFunction: null }, anchorReadOnly: { classPropertyName: "anchorReadOnly", publicName: "anchorReadOnly", isSignal: true, isRequired: false, transformFunction: null }, externalAnchorDateTime: { classPropertyName: "externalAnchorDateTime", publicName: "externalAnchorDateTime", isSignal: true, isRequired: false, transformFunction: null }, externalInterval: { classPropertyName: "externalInterval", publicName: "externalInterval", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { intervalChange: "intervalChange" }, providers: [{ provide: DateAdapter, useClass: CustomDateAdapter }], viewQueries: [{ propertyName: "calendarStart", first: true, predicate: ["rangeCalendarStart"], descendants: true }, { propertyName: "calendarEnd", first: true, predicate: ["rangeCalendarEnd"], descendants: true }, { propertyName: "calendarStartElRef", first: true, predicate: ["rangeCalendarStart"], descendants: true, read: ElementRef }, { propertyName: "calendarEndElRef", first: true, predicate: ["rangeCalendarEnd"], descendants: true, read: ElementRef }, { propertyName: "startDateInput", first: true, predicate: ["startDateInput"], descendants: true }, { propertyName: "endDateInput", first: true, predicate: ["endDateInput"], descendants: true }], ngImport: i0, template: "<div class=\"interval-picker-component p-md layout-col gap-xxl\">\n <div class=\"layout-row gap-xxl place-between-start\" style=\"gap: 5%\">\n <div class=\"layout-col gap-md pt-xs\">\n <div class=\"layout-col\">\n <div class=\"layout-row select-buttons-container gap-sm\">\n <div class=\"layout-col gap-xs place-start-stretch\">\n <button mat-button (click)=\"controller.select.selectCurrentDay()\">\n @if (presenter.isFixedAnchorDateSet()) {\n {{ 'intervalPicker.anchorDay' | translate }}\n } @else {\n {{ 'intervalPicker.today' | translate }}\n }\n </button>\n <button mat-button (click)=\"controller.select.selectYesterday()\">\n @if (presenter.isFixedAnchorDateSet()) {\n {{ 'intervalPicker.last' | translate }} 1 {{ 'intervalPicker.day' | translate }}\n } @else {\n {{ 'intervalPicker.yesterday' | translate }}\n }\n </button>\n <button mat-button (click)=\"controller.select.selectLastSevenDaysIncludingToday()\">\n {{ 'intervalPicker.last' | translate }} 7\n {{ 'intervalPicker.days' | translate }}\n </button>\n <button mat-button (click)=\"controller.select.selectLastThirtyDaysIncludingToday()\">\n {{ 'intervalPicker.last' | translate }} 30\n {{ 'intervalPicker.days' | translate }}\n </button>\n <button mat-button (click)=\"controller.select.selectLast365daysIncludingToday()\">\n {{ 'intervalPicker.last' | translate }} 365\n {{ 'intervalPicker.days' | translate }}\n </button>\n @if (intervalInputMode() === 'date-time-range') {\n <div class=\"pt-sm\"></div>\n <button mat-button (click)=\"controller.select.selectLastFiveMinutes()\">\n {{ 'intervalPicker.last' | translate }} 5\n {{ 'intervalPicker.minutes' | translate }}\n </button>\n <button mat-button (click)=\"controller.select.selectLastHour()\">\n {{ 'intervalPicker.last' | translate }} {{ 'intervalPicker.hour' | translate }}\n </button>\n <button mat-button (click)=\"controller.select.selectLast24Hours()\">\n {{ 'intervalPicker.last' | translate }} 24\n {{ 'intervalPicker.hours' | translate }}\n </button>\n }\n </div>\n </div>\n </div>\n </div>\n <div class=\"layout-col\">\n <!-- smart shift -->\n <div class=\"layout-row place-around-center\">\n <button\n mat-icon-button\n (click)=\"controller.shift.smartShift(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ presenter.smartShiftMessage() }}</span>\n <button\n mat-icon-button\n (click)=\"controller.shift.smartShift(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <!-- calendars and input controls -->\n <div\n class=\"layout-row place-around-center\"\n style=\"align-items: flex-start; min-height: 280px\"\n >\n <mat-calendar\n #rangeCalendarStart\n style=\"width: 210px; max-width: 100%\"\n [selected]=\"presenter.dateRangeForCalendar()\"\n (selectedChange)=\"controller.calendar.setStartDateFromJSDate($event)\"\n [maxDate]=\"presenter.endDateTimeAsJSDate()\"\n [dateClass]=\"presenter.calendarAnchorDateCssClassFn\"\n >\n </mat-calendar>\n <mat-calendar\n #rangeCalendarEnd\n style=\"width: 210px; max-width: 100%\"\n [selected]=\"presenter.dateRangeForCalendar()\"\n (selectedChange)=\"controller.calendar.setEndDateFromJSDate($event)\"\n [minDate]=\"presenter.startDateTimeAsJSDate()\"\n [dateClass]=\"presenter.calendarAnchorDateCssClassFn\"\n >\n </mat-calendar>\n </div>\n <div class=\"layout-row place-around-center gap-xl pt-sm\">\n <div class=\"layout-row place-around-center\">\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.startDate' | translate }}</mat-label>\n <input\n #startDateInput\n name=\"startDateInput\"\n matInput\n type=\"date\"\n [ngModel]=\"presenter.startDateHtmlString()\"\n (ngModelChange)=\"controller.form.setStartDateFromString($event)\"\n />\n </mat-form-field>\n </div>\n <div class=\"layout-row place-around-center\">\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.endDate' | translate }}</mat-label>\n <input\n #endDateInput\n name=\"endDateInput\"\n matInput\n type=\"date\"\n [ngModel]=\"presenter.endDateHtmlString()\"\n (ngModelChange)=\"controller.form.setEndDateFromString($event)\"\n />\n </mat-form-field>\n </div>\n </div>\n @if (intervalInputMode() === 'date-time-range') {\n <div class=\"layout-row place-around-center gap-xl pt-sm\">\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.startTime' | translate }}</mat-label>\n <input\n name=\"startTimeInput\"\n matInput\n type=\"time\"\n #startTimeControl=\"ngModel\"\n step=\"1\"\n [ngModel]=\"presenter.startTimeHtmlString()\"\n (ngModelChange)=\"controller.form.setStartTimeFromString($event)\"\n />\n <button\n mat-icon-button\n matSuffix\n (click)=\"controller.clearStartTime()\"\n [disabled]=\"!presenter.isStartTimeSetAndNotMidnight()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.endTime' | translate }}</mat-label>\n <input\n name=\"endTimeInput\"\n matInput\n type=\"time\"\n #endTimeControl=\"ngModel\"\n step=\"1\"\n [ngModel]=\"presenter.endTimeHtmlString()\"\n (ngModelChange)=\"controller.form.setEndTimeFromString($event)\"\n />\n <button\n mat-icon-button\n matSuffix\n (click)=\"controller.clearEndTime()\"\n [disabled]=\"!presenter.isEndTimeSetAndNotMidnight()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n }\n <br />\n </div>\n <div class=\"pt-xs\" style=\"width: 25%\">\n <div class=\"layout-col gap-lg\">\n <div class=\"layout-col gap-xs place-start-start\">\n <!-- select current -->\n <button mat-button (click)=\"controller.select.selectCurrentWeek()\">\n {{ 'intervalPicker.currentPeriod.week' | translate }}\n </button>\n <button mat-button (click)=\"controller.select.selectCurrentMonth()\">\n {{ 'intervalPicker.currentPeriod.month' | translate }}\n </button>\n <button mat-button (click)=\"controller.select.selectCurrentQuarter()\">\n {{ 'intervalPicker.currentPeriod.quarter' | translate }}\n </button>\n <button mat-button (click)=\"controller.select.selectCurrentYear()\">\n {{ 'intervalPicker.currentPeriod.year' | translate }}\n </button>\n </div>\n <div class=\"fixed-shifts-container\">\n <div class=\"layout-col place-start-stretch\">\n <div class=\"layout-row place-between-center\">\n <button\n mat-icon-button\n (click)=\"controller.shift.shiftDay(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.day' | translate }}</span>\n <button\n mat-icon-button\n (click)=\"controller.shift.shiftDay(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <div class=\"layout-row place-between-center\">\n <button\n mat-icon-button\n (click)=\"controller.shift.shiftMonth(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.month' | translate }}</span>\n <button\n mat-icon-button\n (click)=\"controller.shift.shiftMonth(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <div class=\"layout-row place-between-center\">\n <button\n mat-icon-button\n (click)=\"controller.shift.shiftYear(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.year' | translate }}</span>\n <button\n mat-icon-button\n (click)=\"controller.shift.shiftYear(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n\n @if (true) {\n <!-- shift minute -->\n <div class=\"layout-row place-between-center\">\n <button\n mat-icon-button\n (click)=\"controller.shift.shiftMinute(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.minute' | translate }}</span>\n <button\n mat-icon-button\n (click)=\"controller.shift.shiftMinute(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <!-- shift hour -->\n <div class=\"layout-row place-between-center\">\n <button\n mat-icon-button\n (click)=\"controller.shift.shiftHour(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.hour' | translate }}</span>\n <button\n mat-icon-button\n (click)=\"controller.shift.shiftHour(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"layout-row place-between-center gap-xxl pt-sm\">\n <div>\n @if (showAnchor()) {\n <div class=\"layout-row flex-none gap-md\">\n <mat-menu #anchorMenu=\"matMenu\">\n @if (presenter.startDateHtmlString()) {\n <button\n mat-menu-item\n (click)=\"controller.anchor.setFixedAnchorPointToEndDateTime()\"\n [disabled]=\"!presenter.startDateHtmlString()\"\n >\n <mat-icon class=\"material-symbols-outlined\">login</mat-icon>\n <span>{{ 'intervalPicker.endDate' | translate }}</span>\n </button>\n }\n @if (presenter.endDateHtmlString()) {\n <button\n mat-menu-item\n (click)=\"controller.anchor.setFixedAnchorPointToStartDateTime()\"\n [disabled]=\"!presenter.endDateHtmlString()\"\n >\n <mat-icon class=\"material-symbols-outlined\">logout</mat-icon>\n <span>{{ 'intervalPicker.startDate' | translate }}</span>\n </button>\n }\n @if (presenter.isFixedAnchorDateSet()) {\n <button\n mat-menu-item\n (click)=\"controller.anchor.resetAnchor()\"\n [disabled]=\"!presenter.isFixedAnchorDateSet() || anchorReadOnly()\"\n >\n <mat-icon>close</mat-icon>\n <span>{{ 'intervalPicker.clear' | translate }}</span>\n </button>\n }\n </mat-menu>\n\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.anchorDate' | translate }}</mat-label>\n <input\n #startDateInput\n name=\"anchorDateInput\"\n matInput\n type=\"date\"\n [ngModel]=\"presenter.anchorDateHtmlString()\"\n (ngModelChange)=\"controller.form.setAnchorDateFromString($event)\"\n [readonly]=\"anchorReadOnly()\"\n />\n @if (!anchorReadOnly()) {\n <button\n mat-icon-button\n matSuffix\n [matMenuTriggerFor]=\"anchorMenu\"\n [disabled]=\"presenter.isAnchorMenuDisabled()\"\n >\n <mat-icon class=\"material-symbols-outlined\">more_horiz</mat-icon>\n </button>\n }\n </mat-form-field>\n @if (intervalInputMode() === 'date-time-range') {\n <mat-form-field class=\"input-control-container-short\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.anchorTime' | translate }}</mat-label>\n <input\n matInput\n name=\"anchorTimeInput\"\n type=\"time\"\n #anchorTimeControl=\"ngModel\"\n step=\"1\"\n [readonly]=\"anchorReadOnly()\"\n [ngModel]=\"presenter.anchorTimeHtmlString()\"\n (ngModelChange)=\"controller.form.setAnchorTimeFromString($event)\"\n />\n <button\n mat-icon-button\n matSuffix\n (click)=\"controller.anchor.resetAnchorTime()\"\n [disabled]=\"anchorReadOnly() || presenter.isAnchorTimeMidnight()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n }\n </div>\n }\n </div>\n <!-- result interval -->\n <div class=\"layout-col place-center-center\">\n <div class=\"date-interval mat-caption pt-xs\">\n @if (presenter.startDateTimeAsJSDate()) {\n {{ presenter.startDateTimeAsJSDate() | date: 'dd.MM. y, HH:mm:ss' }}\n } @else {\n {{ 'intervalPicker.startDateNotSet' | translate }}\n }\n <span> - </span>\n @if (presenter.endDateTimeAsJSDate()) {\n {{ presenter.endDateTimeAsJSDate() | date: 'dd.MM. y, HH:mm:ss' }}\n } @else {\n {{ 'intervalPicker.endDateNotSet' | translate }}\n }\n </div>\n <div>\n <span class=\"mat-caption\">{{ presenter.deltaHumanReadable() || ' ' }}</span>\n </div>\n </div>\n <div class=\"layout-row gap-lg\">\n <button\n mat-raised-button\n color=\"primary\"\n (click)=\"controller.clearInterval()\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n {{ 'intervalPicker.clear' | translate }}\n </button>\n\n @if (!this.autoEmitMode()) {\n <button color=\"primary\" mat-raised-button (click)=\"controller.manualEmit()\">\n {{ 'actions.ok' | translate }}\n </button>\n }\n </div>\n</div>\n", styles: [".interval-picker-component{min-width:840px;max-width:100%}.fixed-shifts-container{max-width:160px}.input-control-container{width:192px;max-width:100%}.input-control-container-short{width:140px;max-width:100%}.select-buttons-container button{white-space:nowrap;text-align:left;justify-content:flex-start}::ng-deep .interval-picker-component .mat-calendar-body-cell.elder-custom-anchor-date .mat-calendar-body-cell-content{border-radius:50%;background-color:#def;background-color:#b4d2ebbf}\n"], dependencies: [{ kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i1.MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i4.DatePipe, name: "date" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i9.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i9.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i9.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
155
155
|
}
|
|
156
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
156
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ElderIntervalPickerComponent, decorators: [{
|
|
157
157
|
type: Component,
|
|
158
158
|
args: [{ selector: 'elder-interval-picker', standalone: true, imports: [
|
|
159
159
|
MatDateRangePicker,
|
|
@@ -195,4 +195,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
195
195
|
type: ViewChild,
|
|
196
196
|
args: ['endDateInput']
|
|
197
197
|
}] } });
|
|
198
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItaW50ZXJ2YWwtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvdGltZS9lbGRlci1pbnRlcnZhbC1waWNrZXIvZWxkZXItaW50ZXJ2YWwtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvdGltZS9lbGRlci1pbnRlcnZhbC1waWNrZXIvZWxkZXItaW50ZXJ2YWwtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQzdFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3BELE9BQU8sRUFDTCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsa0JBQWtCLEdBQ25CLE1BQU0sOEJBQThCLENBQUE7QUFDckMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUNwRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JB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QUFrQjtnQkFFMEIsa0JBQWtCO3NCQUF4RSxTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFDQSxnQkFBZ0I7c0JBQXBFLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUV0QixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFDQSxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBpbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJ1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbidcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSdcbmltcG9ydCB7XG4gIE1hdENhbGVuZGFyLFxuICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICBNYXREYXRlcGlja2VyVG9nZ2xlLFxuICBNYXREYXRlUmFuZ2VJbnB1dCxcbiAgTWF0RGF0ZVJhbmdlUGlja2VyLFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJ1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlLCBNYXRIaW50LCBNYXRMYWJlbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbidcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnXG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSdcbmltcG9ydCB7IE1hdFRvb2x0aXAgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJ1xuaW1wb3J0IHsgTG9nZ2VyRmFjdG9yeSB9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJ1xuaW1wb3J0IHsgVGVtcG9yYWwgfSBmcm9tICdAanMtdGVtcG9yYWwvcG9seWZpbGwnXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGNvZXJjZUludGVydmFsLCBjb2VyY2VJbnRlcnZhbElzb1N0ciB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9wdWJsaWNfYXBpJ1xuaW1wb3J0IHsgSW50ZXJ2YWwsIElzb0ludGVydmFsU3RyIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3RpbWUvaW50ZXJ2YWwnXG5pbXBvcnQgeyBib29sZWFuVHJhbnNmb3JtRm4gfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXRpbHMvc2lnbmFsLWlucHV0J1xuaW1wb3J0IHsgQ3VzdG9tRGF0ZUFkYXB0ZXIgfSBmcm9tICcuLi9kYXRlLWFkYXB0ZXJzL2N1c3RvbS1kYXRlLWFkYXB0ZXInXG5pbXBvcnQge1xuICBFbGRlckludGVydmFsSW5wdXRDb21wb25lbnQsXG4gIEludGVydmFsSW5wdXRNb2RlLFxufSBmcm9tICcuLi9lbGRlci1pbnRlcnZhbC1pbnB1dC9lbGRlci1pbnRlcnZhbC1pbnB1dC5jb21wb25lbnQnXG5pbXBvcnQgSW50ZXJ2YWxDb250cm9sbGVyIGZyb20gJy4vY29udHJvbGxlci9pbnRlcnZhbC1jb250cm9sbGVyJ1xuaW1wb3J0IEludGVydmFsUGlja2VyU3RhdGVNYW5hZ2VyIGZyb20gJy4vbWFuYWdlci9pbnRlcnZhbC1waWNrZXItc3RhdGUtbWFuYWdlcidcbmltcG9ydCBJbnRlcnZhbFN0YXRlIGZyb20gJy4vbW9kZWwvaW50ZXJ2YWwtc3RhdGUnXG5pbXBvcnQgSW50ZXJ2YWxQaWNrZXJQcmVzZW50ZXIgZnJvbSAnLi9wcmVzZW50ZXIvaW50ZXJ2YWwtcGlja2VyLXByZXNlbnRlcidcbmltcG9ydCBJbnRlcnZhbFBpY2tlclV0aWwgZnJvbSAnLi91dGlsL2ludGVydmFsLXBpY2tlci11dGlsJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbGRlci1pbnRlcnZhbC1waWNrZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0RGF0ZVJhbmdlUGlja2VyLFxuICAgIE1hdERhdGVwaWNrZXJNb2R1bGUsXG4gICAgTWF0RGF0ZVJhbmdlSW5wdXQsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdExhYmVsLFxuICAgIE1hdEhpbnQsXG4gICAgTWF0RGF0ZXBpY2tlclRvZ2dsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0Q2FsZW5kYXIsXG4gICAgTWF0VG9vbHRpcCxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBFbGRlckludGVydmFsSW5wdXRDb21wb25lbnQsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZVVybDogJy4vZWxkZXItaW50ZXJ2YWwtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2VsZGVyLWludGVydmFsLXBpY2tlci5jb21wb25lbnQuc2NzcycsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBDdXN0b21EYXRlQWRhcHRlciB9XSxcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJJbnRlcnZhbFBpY2tlckNvbXBvbmVudCB7XG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKVxuXG4gIC8vIFByaXZhdGVcbiAgcHJpdmF0ZSByZWFkb25seSBtYW5hZ2VyOiBJbnRlcnZhbFBpY2tlclN0YXRlTWFuYWdlclxuXG4gIC8vIFB1YmxpY1xuICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbGxlcjogSW50ZXJ2YWxDb250cm9sbGVyXG4gIHB1YmxpYyByZWFkb25seSBwcmVzZW50ZXI6IEludGVydmFsUGlja2VyUHJlc2VudGVyXG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBpbnRlcnZhbENoYW5nZTogT2JzZXJ2YWJsZTxJbnRlcnZhbCB8IElzb0ludGVydmFsU3RyIHwgbnVsbD5cblxuICBwdWJsaWMgcmVhZG9ubHkgZW1pdFR5cGUgPSBpbnB1dDwnaW50ZXJ2YWwnIHwgJ2lzbyc+KCdpbnRlcnZhbCcpXG4gIHB1YmxpYyByZWFkb25seSBhdXRvRW1pdE1vZGUgPSBpbnB1dCh0cnVlLCB7IHRyYW5zZm9ybTogYm9vbGVhblRyYW5zZm9ybUZuIH0pXG4gIHB1YmxpYyByZWFkb25seSBpbnRlcnZhbElucHV0TW9kZSA9IGlucHV0PEludGVydmFsSW5wdXRNb2RlPignZGF0ZS10aW1lLXJhbmdlJylcbiAgcHVibGljIHJlYWRvbmx5IHNob3dBbmNob3IgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5UcmFuc2Zvcm1GbiB9KVxuICBwdWJsaWMgcmVhZG9ubHkgYW5jaG9yUmVhZE9ubHkgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5UcmFuc2Zvcm1GbiB9KVxuICBwdWJsaWMgcmVhZG9ubHkgZXh0ZXJuYWxBbmNob3JEYXRlVGltZSA9IGlucHV0PFRlbXBvcmFsLlBsYWluRGF0ZVRpbWUgfCBudWxsPihcbiAgICBUZW1wb3JhbC5Ob3cucGxhaW5EYXRlVGltZUlTTygpXG4gIClcbiAgcHVibGljIHJlYWRvbmx5IGV4dGVybmFsSW50ZXJ2YWwgPSBpbnB1dDxJbnRlcnZhbCB8IElzb0ludGVydmFsU3RyIHwgbnVsbD4obnVsbClcblxuICBAVmlld0NoaWxkKCdyYW5nZUNhbGVuZGFyU3RhcnQnKSBjYWxlbmRhclN0YXJ0ITogTWF0Q2FsZW5kYXI8RGF0ZT5cbiAgQFZpZXdDaGlsZCgncmFuZ2VDYWxlbmRhckVuZCcpIGNhbGVuZGFyRW5kITogTWF0Q2FsZW5kYXI8RGF0ZT5cblxuICBAVmlld0NoaWxkKCdyYW5nZUNhbGVuZGFyU3RhcnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgY2FsZW5kYXJTdGFydEVsUmVmITogRWxlbWVudFJlZlxuICBAVmlld0NoaWxkKCdyYW5nZUNhbGVuZGFyRW5kJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNhbGVuZGFyRW5kRWxSZWYhOiBFbGVtZW50UmVmXG5cbiAgQFZpZXdDaGlsZCgnc3RhcnREYXRlSW5wdXQnKSBzdGFydERhdGVJbnB1dCE6IEVsZW1lbnRSZWZcbiAgQFZpZXdDaGlsZCgnZW5kRGF0ZUlucHV0JykgZW5kRGF0ZUlucHV0ITogRWxlbWVudFJlZlxuXG4gIHByaXZhdGUgY2FsZW5kYXJFbEZvY3VzRXZlbnRIYW5kbGVyOiAoZXZlbnQ6IEZvY3VzRXZlbnQpID0+IHZvaWRcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm1hbmFnZXIgPSBuZXcgSW50ZXJ2YWxQaWNrZXJTdGF0ZU1hbmFnZXIoKVxuICAgIHRoaXMuY29udHJvbGxlciA9IG5ldyBJbnRlcnZhbENvbnRyb2xsZXIodGhpcy5tYW5hZ2VyKVxuICAgIHRoaXMucHJlc2VudGVyID0gbmV3IEludGVydmFsUGlja2VyUHJlc2VudGVyKFxuICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsJCxcbiAgICAgIHRoaXMubWFuYWdlci5hbmNob3IkLFxuICAgICAgdGhpcy5tYW5hZ2VyLnNtYXJ0U2hpZnQkXG4gICAgKVxuXG4gICAgdGhpcy5tYW5hZ2VyLmludGVydmFsQ2hhbmdlLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoc3RhdGUpID0+IHRoaXMudHJ5VXBkYXRlTWF0Q2FsZW5kYXJBY3RpdmVEYXRlKHN0YXRlKSxcbiAgICB9KVxuXG4gICAgdGhpcy5pbnRlcnZhbENoYW5nZSA9IHRoaXMubWFuYWdlci5pbnRlcnZhbENoYW5nZS5waXBlKFxuICAgICAgbWFwKChzcmNJbnRlcnZhbDogYW55KSA9PiB7XG4gICAgICAgIGlmICghc3JjSW50ZXJ2YWwpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZWxkZXJJbnRlcnZhbCA9IEludGVydmFsUGlja2VyVXRpbC5jcmVhdGVFbGRlckludGVydmFsKHNyY0ludGVydmFsKVxuXG4gICAgICAgIGlmICh0aGlzLmVtaXRUeXBlKCkgPT09ICdpc28nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ2VtaXR0aW5nIHR5cGUgaXNvJywgY29lcmNlSW50ZXJ2YWxJc29TdHIoZWxkZXJJbnRlcnZhbCkpXG4gICAgICAgICAgcmV0dXJuIGNvZXJjZUludGVydmFsSXNvU3RyKGVsZGVySW50ZXJ2YWwpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZygnZW1pdHRpbmcgdHlwZSBlbGRlciBpbnRlcnZhbCcsIGVsZGVySW50ZXJ2YWwpXG4gICAgICAgIHJldHVybiBlbGRlckludGVydmFsXG4gICAgICB9KVxuICAgIClcblxuICAgIHRoaXMubWFuYWdlci5hbmNob3IkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgoYW5jaG9yKSA9PiB7XG4gICAgICBJbnRlcnZhbFBpY2tlclV0aWwudXBkYXRlTWF0Q2FsZW5kYXJUb2RheURhdGUodGhpcy5jYWxlbmRhclN0YXJ0LCB0aGlzLmNhbGVuZGFyRW5kKVxuICAgIH0pXG5cbiAgICBjb25zdCBleHRlcm5hbEFuY2hvck9ic2VydmFibGUgPSB0b09ic2VydmFibGUodGhpcy5leHRlcm5hbEFuY2hvckRhdGVUaW1lKVxuICAgIGV4dGVybmFsQW5jaG9yT2JzZXJ2YWJsZS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGUpID0+IHtcbiAgICAgICAgdGhpcy5tYW5hZ2VyLnNldEV4dGVybmFsQW5jaG9yKGRhdGUpXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBjb25zdCBleHRlcm5hbEludGVydmFsT2JzZXJ2YWJsZSA9IHRvT2JzZXJ2YWJsZSh0aGlzLmV4dGVybmFsSW50ZXJ2YWwpXG4gICAgZXh0ZXJuYWxJbnRlcnZhbE9ic2VydmFibGUucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChpbnRlcnZhbDogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGNvZXJjZUludGVydmFsKGludGVydmFsKVxuICAgICAgICB0aGlzLm1hbmFnZXIuc2V0SW50ZXJ2YWwoSW50ZXJ2YWxQaWNrZXJVdGlsLnRyYW5zZm9ybVRvSW50ZXJ2YWxTdGF0ZShyZXN1bHQgfHwgbnVsbCkpXG4gICAgICB9LFxuICAgIH0pXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXR1cERhdGVJbnB1dENhbGVuZGFyRm9jdXNQcmV2ZW50aW9uKClcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gdGhpcyBwcmV2ZW50cyBuZ21vZGVsIGlzc3VlXG4gICAgICB0aGlzLm1hbmFnZXIuaXNJbml0aWFsaXplZCA9IHRydWVcbiAgICAgIGNvbnNvbGUubG9nKCdleHRlcm5hbEludGVydmFsJywgdGhpcy5leHRlcm5hbEludGVydmFsKCkpXG4gICAgfSwgMClcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBzZXR1cERhdGVJbnB1dENhbGVuZGFyRm9jdXNQcmV2ZW50aW9uKCk6IHZvaWQge1xuICAgIC8vIFByZXZlbnRzIHRoZSBmb2N1cyBvbiB0aGUgY2FsZW5kYXIgd2hlbiB0aGUgaW5wdXQgZmllbGQgaXMgY2hhbmdlZCB2aWEgdGhlIGtleWJvYXJkXG4gICAgdGhpcy5jYWxlbmRhckVsRm9jdXNFdmVudEhhbmRsZXIgPSAoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgIGlmICghZXZlbnQgfHwgIWV2ZW50LnJlbGF0ZWRUYXJnZXQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBjb25zdCByZWxUYXJnZXQgPSBldmVudC5yZWxhdGVkVGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnRcblxuICAgICAgaWYgKHJlbFRhcmdldC5uYW1lID09PSAnc3RhcnREYXRlSW5wdXQnKSB7XG4gICAgICAgIHRoaXMuc3RhcnREYXRlSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKHJlbFRhcmdldC5uYW1lID09PSAnZW5kRGF0ZUlucHV0Jykge1xuICAgICAgICB0aGlzLmVuZERhdGVJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgbmF0aXZlRWxlbWVudFN0YXJ0ID0gdGhpcy5jYWxlbmRhclN0YXJ0RWxSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudFxuICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnRFbmQgPSB0aGlzLmNhbGVuZGFyRW5kRWxSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudFxuXG4gICAgbmF0aXZlRWxlbWVudFN0YXJ0LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgdGhpcy5jYWxlbmRhckVsRm9jdXNFdmVudEhhbmRsZXIsIHRydWUpXG4gICAgbmF0aXZlRWxlbWVudEVuZC5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIHRoaXMuY2FsZW5kYXJFbEZvY3VzRXZlbnRIYW5kbGVyLCB0cnVlKVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2FsZW5kYXJTdGFydEVsUmVmIHx8ICF0aGlzLmNhbGVuZGFyRW5kRWxSZWYpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghdGhpcy5jYWxlbmRhclN0YXJ0RWxSZWYubmF0aXZlRWxlbWVudCB8fCAhdGhpcy5jYWxlbmRhckVuZEVsUmVmLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnRTdGFydCA9IHRoaXMuY2FsZW5kYXJTdGFydEVsUmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnRcbiAgICBjb25zdCBuYXRpdmVFbGVtZW50RW5kID0gdGhpcy5jYWxlbmRhckVuZEVsUmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnRcblxuICAgIG5hdGl2ZUVsZW1lbnRTdGFydC5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1cycsIHRoaXMuY2FsZW5kYXJFbEZvY3VzRXZlbnRIYW5kbGVyLCB0cnVlKVxuICAgIG5hdGl2ZUVsZW1lbnRFbmQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXMnLCB0aGlzLmNhbGVuZGFyRWxGb2N1c0V2ZW50SGFuZGxlciwgdHJ1ZSlcbiAgfVxuXG4gIHByaXZhdGUgdHJ5VXBkYXRlTWF0Q2FsZW5kYXJBY3RpdmVEYXRlKGludGVydmFsOiBJbnRlcnZhbFN0YXRlKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIEludGVydmFsUGlja2VyVXRpbC51cGRhdGVNYXRDYWxlbmRhckFjdGl2ZURhdGUoXG4gICAgICAgIHRoaXMuY2FsZW5kYXJTdGFydCxcbiAgICAgICAgdGhpcy5jYWxlbmRhckVuZCxcbiAgICAgICAgaW50ZXJ2YWwuc3RhcnREYXRlLFxuICAgICAgICBpbnRlcnZhbC5lbmREYXRlXG4gICAgICApXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5kZWJ1ZygnRmFpbGVkIHRvIHVwZGF0ZSBjYWxlbmRhciBhY3RpdmUgZGF0ZScsIGUpXG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaW50ZXJ2YWwtcGlja2VyLWNvbXBvbmVudCBwLW1kIGxheW91dC1jb2wgZ2FwLXh4bFwiPlxuICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBnYXAteHhsIHBsYWNlLWJldHdlZW4tc3RhcnRcIiBzdHlsZT1cImdhcDogNSVcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LWNvbCBnYXAtbWQgcHQteHNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29sXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtcm93IHNlbGVjdC1idXR0b25zLWNvbnRhaW5lciBnYXAtc21cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LWNvbCBnYXAteHMgcGxhY2Utc3RhcnQtc3RyZXRjaFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJjb250cm9sbGVyLnNlbGVjdC5zZWxlY3RDdXJyZW50RGF5KClcIj5cbiAgICAgICAgICAgICAgQGlmIChwcmVzZW50ZXIuaXNGaXhlZEFuY2hvckRhdGVTZXQoKSkge1xuICAgICAgICAgICAgICAgIHt7ICdpbnRlcnZhbFBpY2tlci5hbmNob3JEYXknIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIHt7ICdpbnRlcnZhbFBpY2tlci50b2RheScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cImNvbnRyb2xsZXIuc2VsZWN0LnNlbGVjdFllc3RlcmRheSgpXCI+XG4gICAgICAgICAgICAgIEBpZiAocHJlc2VudGVyLmlzRml4ZWRBbmNob3JEYXRlU2V0KCkpIHtcbiAgICAgICAgICAgICAgICB7eyAnaW50ZXJ2YWxQaWNrZXIubGFzdCcgfCB0cmFuc2xhdGUgfX0gMSB7eyAnaW50ZXJ2YWxQaWNrZXIuZGF5JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICB7eyAnaW50ZXJ2YWxQaWNrZXIueWVzdGVyZGF5JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwiY29udHJvbGxlci5zZWxlY3Quc2VsZWN0TGFzdFNldmVuRGF5c0luY2x1ZGluZ1RvZGF5KClcIj5cbiAgICAgICAgICAgICAge3sgJ2ludGVydmFsUGlja2VyLmxhc3QnIHwgdHJhbnNsYXRlIH19IDdcbiAgICAgICAgICAgICAge3sgJ2ludGVydmFsUGlja2VyLmRheXMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwiY29udHJvbGxlci5zZWxlY3Quc2VsZWN0TGFzdFRoaXJ0eURheXNJbmNsdWRpbmdUb2RheSgpXCI+XG4gICAgICAgICAgICAgIHt7ICdpbnRlcnZhbFBpY2tlci5sYXN0JyB8IHRyYW5zbGF0ZSB9fSAzMFxuICAgICAgICAgICAgICB7eyAnaW50ZXJ2YWxQaWNrZXIuZGF5cycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJjb250cm9sbGVyLnNlbGVjdC5zZWxlY3RMYXN0MzY1ZGF5c0luY2x1ZGluZ1RvZGF5KClcIj5cbiAgICAgICAgICAgICAge3sgJ2ludGVydmFsUGlja2VyLmxhc3QnIHwgdHJhbnNsYXRlIH19IDM2NVxuICAgICAgICAgICAgICB7eyAnaW50ZXJ2YWxQaWNrZXIuZGF5cycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgQGlmIChpbnRlcnZhbElucHV0TW9kZSgpID09PSAnZGF0ZS10aW1lLXJhbmdlJykge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtc21cIj48L2Rpdj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJjb250cm9sbGVyLnNlbGVjdC5zZWxlY3RMYXN0Rml2ZU1pbnV0ZXMoKVwiPlxuICAgICAgICAgICAgICAgIHt7ICdpbnRlcnZhbFBpY2tlci5sYXN0JyB8IHRyYW5zbGF0ZSB9fSA1XG4gICAgICAgICAgICAgICAge3sgJ2ludGVydmFsUGlja2VyLm1pbnV0ZXMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cImNvbnRyb2xsZXIuc2VsZWN0LnNlbGVjdExhc3RIb3VyKClcIj5cbiAgICAgICAgICAgICAgICB7eyAnaW50ZXJ2YWxQaWNrZXIubGFzdCcgfCB0cmFuc2xhdGUgfX0ge3sgJ2ludGVydmFsUGlja2VyLmhvdXInIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cImNvbnRyb2xsZXIuc2VsZWN0LnNlbGVjdExhc3QyNEhvdXJzKClcIj5cbiAgICAgICAgICAgICAgICB7eyAnaW50ZXJ2YWxQaWNrZXIubGFzdCcgfCB0cmFuc2xhdGUgfX0gMjRcbiAgICAgICAgICAgICAgICB7eyAnaW50ZXJ2YWxQaWNrZXIuaG91cnMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29sXCI+XG4gICAgICA8IS0tIHNtYXJ0IHNoaWZ0IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1yb3cgcGxhY2UtYXJvdW5kLWNlbnRlclwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgKGNsaWNrKT1cImNvbnRyb2xsZXIuc2hpZnQuc21hcnRTaGlmdCgtMSlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhcHJlc2VudGVyLmlzVmFsaWRJbnRlcnZhbFNldCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtYXQtaWNvbj5rZXlib2FyZF9kb3VibGVfYXJyb3dfbGVmdDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8c3Bhbj57eyBwcmVzZW50ZXIuc21hcnRTaGlmdE1lc3NhZ2UoKSB9fTwvc3Bhbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgIChjbGljayk9XCJjb250cm9sbGVyLnNoaWZ0LnNtYXJ0U2hpZnQoMSlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhcHJlc2VudGVyLmlzVmFsaWRJbnRlcnZhbFNldCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtYXQtaWNvbj5rZXlib2FyZF9kb3VibGVfYXJyb3dfcmlnaHQ8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBjYWxlbmRhcnMgYW5kIGlucHV0IGNvbnRyb2xzIC0tPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImxheW91dC1yb3cgcGxhY2UtYXJvdW5kLWNlbnRlclwiXG4gICAgICAgIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IG1pbi1oZWlnaHQ6IDI4MHB4XCJcbiAgICAgID5cbiAgICAgICAgPG1hdC1jYWxlbmRhclxuICAgICAgICAgICNyYW5nZUNhbGVuZGFyU3RhcnRcbiAgICAgICAgICBzdHlsZT1cIndpZHRoOiAyMTBweDsgbWF4LXdpZHRoOiAxMDAlXCJcbiAgICAgICAgICBbc2VsZWN0ZWRdPVwicHJlc2VudGVyLmRhdGVSYW5nZUZvckNhbGVuZGFyKClcIlxuICAgICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJjb250cm9sbGVyLmNhbGVuZGFyLnNldFN0YXJ0RGF0ZUZyb21KU0RhdGUoJGV2ZW50KVwiXG4gICAgICAgICAgW21heERhdGVdPVwicHJlc2VudGVyLmVuZERhdGVUaW1lQXNKU0RhdGUoKVwiXG4gICAgICAgICAgW2RhdGVDbGFzc109XCJwcmVzZW50ZXIuY2FsZW5kYXJBbmNob3JEYXRlQ3NzQ2xhc3NGblwiXG4gICAgICAgID5cbiAgICAgICAgPC9tYXQtY2FsZW5kYXI+XG4gICAgICAgIDxtYXQtY2FsZW5kYXJcbiAgICAgICAgICAjcmFuZ2VDYWxlbmRhckVuZFxuICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDIxMHB4OyBtYXgtd2lkdGg6IDEwMCVcIlxuICAgICAgICAgIFtzZWxlY3RlZF09XCJwcmVzZW50ZXIuZGF0ZVJhbmdlRm9yQ2FsZW5kYXIoKVwiXG4gICAgICAgICAgKHNlbGVjdGVkQ2hhbmdlKT1cImNvbnRyb2xsZXIuY2FsZW5kYXIuc2V0RW5kRGF0ZUZyb21KU0RhdGUoJGV2ZW50KVwiXG4gICAgICAgICAgW21pbkRhdGVdPVwicHJlc2VudGVyLnN0YXJ0RGF0ZVRpbWVBc0pTRGF0ZSgpXCJcbiAgICAgICAgICBbZGF0ZUNsYXNzXT1cInByZXNlbnRlci5jYWxlbmRhckFuY2hvckRhdGVDc3NDbGFzc0ZuXCJcbiAgICAgICAgPlxuICAgICAgICA8L21hdC1jYWxlbmRhcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1yb3cgcGxhY2UtYXJvdW5kLWNlbnRlciBnYXAteGwgcHQtc21cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1yb3cgcGxhY2UtYXJvdW5kLWNlbnRlclwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImlucHV0LWNvbnRyb2wtY29udGFpbmVyXCIgW3N1YnNjcmlwdFNpemluZ109XCInZHluYW1pYydcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3sgJ2ludGVydmFsUGlja2VyLnN0YXJ0RGF0ZScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAjc3RhcnREYXRlSW5wdXRcbiAgICAgICAgICAgICAgbmFtZT1cInN0YXJ0RGF0ZUlucHV0XCJcbiAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImRhdGVcIlxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJwcmVzZW50ZXIuc3RhcnREYXRlSHRtbFN0cmluZygpXCJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY29udHJvbGxlci5mb3JtLnNldFN0YXJ0RGF0ZUZyb21TdHJpbmcoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBwbGFjZS1hcm91bmQtY2VudGVyXCI+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiaW5wdXQtY29udHJvbC1jb250YWluZXJcIiBbc3Vic2NyaXB0U2l6aW5nXT1cIidkeW5hbWljJ1wiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD57eyAnaW50ZXJ2YWxQaWNrZXIuZW5kRGF0ZScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAjZW5kRGF0ZUlucHV0XG4gICAgICAgICAgICAgIG5hbWU9XCJlbmREYXRlSW5wdXRcIlxuICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiZGF0ZVwiXG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cInByZXNlbnRlci5lbmREYXRlSHRtbFN0cmluZygpXCJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY29udHJvbGxlci5mb3JtLnNldEVuZERhdGVGcm9tU3RyaW5nKCRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgQGlmIChpbnRlcnZhbElucHV0TW9kZSgpID09PSAnZGF0ZS10aW1lLXJhbmdlJykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBwbGFjZS1hcm91bmQtY2VudGVyIGdhcC14bCBwdC1zbVwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImlucHV0LWNvbnRyb2wtY29udGFpbmVyXCIgW3N1YnNjcmlwdFNpemluZ109XCInZHluYW1pYydcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3sgJ2ludGVydmFsUGlja2VyLnN0YXJ0VGltZScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBuYW1lPVwic3RhcnRUaW1lSW5wdXRcIlxuICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGltZVwiXG4gICAgICAgICAgICAgICNzdGFydFRpbWVDb250cm9sPVwibmdNb2RlbFwiXG4gICAgICAgICAgICAgIHN0ZXA9XCIxXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwicHJlc2VudGVyLnN0YXJ0VGltZUh0bWxTdHJpbmcoKVwiXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNvbnRyb2xsZXIuZm9ybS5zZXRTdGFydFRpbWVGcm9tU3RyaW5nKCRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICAoY2xpY2spPVwiY29udHJvbGxlci5jbGVhclN0YXJ0VGltZSgpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFwcmVzZW50ZXIuaXNTdGFydFRpbWVTZXRBbmROb3RNaWRuaWdodCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiaW5wdXQtY29udHJvbC1jb250YWluZXJcIiBbc3Vic2NyaXB0U2l6aW5nXT1cIidkeW5hbWljJ1wiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD57eyAnaW50ZXJ2YWxQaWNrZXIuZW5kVGltZScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBuYW1lPVwiZW5kVGltZUlucHV0XCJcbiAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRpbWVcIlxuICAgICAgICAgICAgICAjZW5kVGltZUNvbnRyb2w9XCJuZ01vZGVsXCJcbiAgICAgICAgICAgICAgc3RlcD1cIjFcIlxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJwcmVzZW50ZXIuZW5kVGltZUh0bWxTdHJpbmcoKVwiXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNvbnRyb2xsZXIuZm9ybS5zZXRFbmRUaW1lRnJvbVN0cmluZygkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICBtYXRTdWZmaXhcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbnRyb2xsZXIuY2xlYXJFbmRUaW1lKClcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXByZXNlbnRlci5pc0VuZFRpbWVTZXRBbmROb3RNaWRuaWdodCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgPGJyIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInB0LXhzXCIgc3R5bGU9XCJ3aWR0aDogMjUlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LWNvbCBnYXAtbGdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1jb2wgZ2FwLXhzIHBsYWNlLXN0YXJ0LXN0YXJ0XCI+XG4gICAgICAgICAgPCEtLSBzZWxlY3QgY3VycmVudCAtLT5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cImNvbnRyb2xsZXIuc2VsZWN0LnNlbGVjdEN1cnJlbnRXZWVrKClcIj5cbiAgICAgICAgICAgIHt7ICdpbnRlcnZhbFBpY2tlci5jdXJyZW50UGVyaW9kLndlZWsnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJjb250cm9sbGVyLnNlbGVjdC5zZWxlY3RDdXJyZW50TW9udGgoKVwiPlxuICAgICAgICAgICAge3sgJ2ludGVydmFsUGlja2VyLmN1cnJlbnRQZXJpb2QubW9udGgnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJjb250cm9sbGVyLnNlbGVjdC5zZWxlY3RDdXJyZW50UXVhcnRlcigpXCI+XG4gICAgICAgICAgICB7eyAnaW50ZXJ2YWxQaWNrZXIuY3VycmVudFBlcmlvZC5xdWFydGVyJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwiY29udHJvbGxlci5zZWxlY3Quc2VsZWN0Q3VycmVudFllYXIoKVwiPlxuICAgICAgICAgICAge3sgJ2ludGVydmFsUGlja2VyLmN1cnJlbnRQZXJpb2QueWVhcicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaXhlZC1zaGlmdHMtY29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1jb2wgcGxhY2Utc3RhcnQtc3RyZXRjaFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1yb3cgcGxhY2UtYmV0d2Vlbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjb250cm9sbGVyLnNoaWZ0LnNoaWZ0RGF5KC0xKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFwcmVzZW50ZXIuaXNWYWxpZEludGVydmFsU2V0KClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmtleWJvYXJkX2RvdWJsZV9hcnJvd19sZWZ0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxzcGFuPnt7ICdpbnRlcnZhbFBpY2tlci5kYXknIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbnRyb2xsZXIuc2hpZnQuc2hpZnREYXkoMSlcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhcHJlc2VudGVyLmlzVmFsaWRJbnRlcnZhbFNldCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5rZXlib2FyZF9kb3VibGVfYXJyb3dfcmlnaHQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1yb3cgcGxhY2UtYmV0d2Vlbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjb250cm9sbGVyLnNoaWZ0LnNoaWZ0TW9udGgoLTEpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXByZXNlbnRlci5pc1ZhbGlkSW50ZXJ2YWxTZXQoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+a2V5Ym9hcmRfZG91YmxlX2Fycm93X2xlZnQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgJ2ludGVydmFsUGlja2VyLm1vbnRoJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjb250cm9sbGVyLnNoaWZ0LnNoaWZ0TW9udGgoMSlcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhcHJlc2VudGVyLmlzVmFsaWRJbnRlcnZhbFNldCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5rZXlib2FyZF9kb3VibGVfYXJyb3dfcmlnaHQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1yb3cgcGxhY2UtYmV0d2Vlbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjb250cm9sbGVyLnNoaWZ0LnNoaWZ0WWVhcigtMSlcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhcHJlc2VudGVyLmlzVmFsaWRJbnRlcnZhbFNldCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5rZXlib2FyZF9kb3VibGVfYXJyb3dfbGVmdDwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8c3Bhbj57eyAnaW50ZXJ2YWxQaWNrZXIueWVhcicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29udHJvbGxlci5zaGlmdC5zaGlmdFllYXIoMSlcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhcHJlc2VudGVyLmlzVmFsaWRJbnRlcnZhbFNldCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5rZXlib2FyZF9kb3VibGVfYXJyb3dfcmlnaHQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICBAaWYgKHRydWUpIHtcbiAgICAgICAgICAgICAgPCEtLSBzaGlmdCBtaW51dGUgLS0+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtcm93IHBsYWNlLWJldHdlZW4tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29udHJvbGxlci5zaGlmdC5zaGlmdE1pbnV0ZSgtMSlcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFwcmVzZW50ZXIuaXNWYWxpZEludGVydmFsU2V0KClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5rZXlib2FyZF9kb3VibGVfYXJyb3dfbGVmdDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgJ2ludGVydmFsUGlja2VyLm1pbnV0ZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29udHJvbGxlci5zaGlmdC5zaGlmdE1pbnV0ZSgxKVwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXByZXNlbnRlci5pc1ZhbGlkSW50ZXJ2YWxTZXQoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmtleWJvYXJkX2RvdWJsZV9hcnJvd19yaWdodDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8IS0tIHNoaWZ0IGhvdXIgLS0+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtcm93IHBsYWNlLWJldHdlZW4tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29udHJvbGxlci5zaGlmdC5zaGlmdEhvdXIoLTEpXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhcHJlc2VudGVyLmlzVmFsaWRJbnRlcnZhbFNldCgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24+a2V5Ym9hcmRfZG91YmxlX2Fycm93X2xlZnQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdpbnRlcnZhbFBpY2tlci5ob3VyJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb250cm9sbGVyLnNoaWZ0LnNoaWZ0SG91cigxKVwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXByZXNlbnRlci5pc1ZhbGlkSW50ZXJ2YWxTZXQoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmtleWJvYXJkX2RvdWJsZV9hcnJvd19yaWdodDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImxheW91dC1yb3cgcGxhY2UtYmV0d2Vlbi1jZW50ZXIgZ2FwLXh4bCBwdC1zbVwiPlxuICA8ZGl2PlxuICAgIEBpZiAoc2hvd0FuY2hvcigpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBmbGV4LW5vbmUgZ2FwLW1kXCI+XG4gICAgICAgIDxtYXQtbWVudSAjYW5jaG9yTWVudT1cIm1hdE1lbnVcIj5cbiAgICAgICAgICBAaWYgKHByZXNlbnRlci5zdGFydERhdGVIdG1sU3RyaW5nKCkpIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAoY2xpY2spPVwiY29udHJvbGxlci5hbmNob3Iuc2V0Rml4ZWRBbmNob3JQb2ludFRvRW5kRGF0ZVRpbWUoKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhcHJlc2VudGVyLnN0YXJ0RGF0ZUh0bWxTdHJpbmcoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj5sb2dpbjwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDxzcGFuPnt7ICdpbnRlcnZhbFBpY2tlci5lbmREYXRlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHByZXNlbnRlci5lbmREYXRlSHRtbFN0cmluZygpKSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbnRyb2xsZXIuYW5jaG9yLnNldEZpeGVkQW5jaG9yUG9pbnRUb1N0YXJ0RGF0ZVRpbWUoKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhcHJlc2VudGVyLmVuZERhdGVIdG1sU3RyaW5nKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+bG9nb3V0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgJ2ludGVydmFsUGlja2VyLnN0YXJ0RGF0ZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChwcmVzZW50ZXIuaXNGaXhlZEFuY2hvckRhdGVTZXQoKSkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgIChjbGljayk9XCJjb250cm9sbGVyLmFuY2hvci5yZXNldEFuY2hvcigpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFwcmVzZW50ZXIuaXNGaXhlZEFuY2hvckRhdGVTZXQoKSB8fCBhbmNob3JSZWFkT25seSgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgJ2ludGVydmFsUGlja2VyLmNsZWFyJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9tYXQtbWVudT5cblxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJpbnB1dC1jb250cm9sLWNvbnRhaW5lclwiIFtzdWJzY3JpcHRTaXppbmddPVwiJ2R5bmFtaWMnXCI+XG4gICAgICAgICAgPG1hdC1sYWJlbD57eyAnaW50ZXJ2YWxQaWNrZXIuYW5jaG9yRGF0ZScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNzdGFydERhdGVJbnB1dFxuICAgICAgICAgICAgbmFtZT1cImFuY2hvckRhdGVJbnB1dFwiXG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgdHlwZT1cImRhdGVcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwicHJlc2VudGVyLmFuY2hvckRhdGVIdG1sU3RyaW5nKClcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY29udHJvbGxlci5mb3JtLnNldEFuY2hvckRhdGVGcm9tU3RyaW5nKCRldmVudClcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFuY2hvclJlYWRPbmx5KClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgQGlmICghYW5jaG9yUmVhZE9ubHkoKSkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgbWF0U3VmZml4XG4gICAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJhbmNob3JNZW51XCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByZXNlbnRlci5pc0FuY2hvck1lbnVEaXNhYmxlZCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPm1vcmVfaG9yaXo8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICBAaWYgKGludGVydmFsSW5wdXRNb2RlKCkgPT09ICdkYXRlLXRpbWUtcmFuZ2UnKSB7XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiaW5wdXQtY29udHJvbC1jb250YWluZXItc2hvcnRcIiBbc3Vic2NyaXB0U2l6aW5nXT1cIidkeW5hbWljJ1wiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD57eyAnaW50ZXJ2YWxQaWNrZXIuYW5jaG9yVGltZScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICBuYW1lPVwiYW5jaG9yVGltZUlucHV0XCJcbiAgICAgICAgICAgICAgdHlwZT1cInRpbWVcIlxuICAgICAgICAgICAgICAjYW5jaG9yVGltZUNvbnRyb2w9XCJuZ01vZGVsXCJcbiAgICAgICAgICAgICAgc3RlcD1cIjFcIlxuICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiYW5jaG9yUmVhZE9ubHkoKVwiXG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cInByZXNlbnRlci5hbmNob3JUaW1lSHRtbFN0cmluZygpXCJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY29udHJvbGxlci5mb3JtLnNldEFuY2hvclRpbWVGcm9tU3RyaW5nKCRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICAoY2xpY2spPVwiY29udHJvbGxlci5hbmNob3IucmVzZXRBbmNob3JUaW1lKClcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYW5jaG9yUmVhZE9ubHkoKSB8fCBwcmVzZW50ZXIuaXNBbmNob3JUaW1lTWlkbmlnaHQoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuICA8IS0tIHJlc3VsdCBpbnRlcnZhbCAtLT5cbiAgPGRpdiBjbGFzcz1cImxheW91dC1jb2wgcGxhY2UtY2VudGVyLWNlbnRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJkYXRlLWludGVydmFsIG1hdC1jYXB0aW9uIHB0LXhzXCI+XG4gICAgICBAaWYgKHByZXNlbnRlci5zdGFydERhdGVUaW1lQXNKU0RhdGUoKSkge1xuICAgICAgICB7eyBwcmVzZW50ZXIuc3RhcnREYXRlVGltZUFzSlNEYXRlKCkgfCBkYXRlOiAnZGQuTU0uIHksIEhIOm1tOnNzJyB9fVxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIHt7ICdpbnRlcnZhbFBpY2tlci5zdGFydERhdGVOb3RTZXQnIHwgdHJhbnNsYXRlIH19XG4gICAgICB9XG4gICAgICA8c3Bhbj4gLSA8L3NwYW4+XG4gICAgICBAaWYgKHByZXNlbnRlci5lbmREYXRlVGltZUFzSlNEYXRlKCkpIHtcbiAgICAgICAge3sgcHJlc2VudGVyLmVuZERhdGVUaW1lQXNKU0RhdGUoKSB8IGRhdGU6ICdkZC5NTS4geSwgSEg6bW06c3MnIH19XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAge3sgJ2ludGVydmFsUGlja2VyLmVuZERhdGVOb3RTZXQnIHwgdHJhbnNsYXRlIH19XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgPGRpdj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWNhcHRpb25cIj57eyBwcmVzZW50ZXIuZGVsdGFIdW1hblJlYWRhYmxlKCkgfHwgJyZuYnNwOycgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBnYXAtbGdcIj5cbiAgICA8YnV0dG9uXG4gICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIChjbGljayk9XCJjb250cm9sbGVyLmNsZWFySW50ZXJ2YWwoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiIXByZXNlbnRlci5pc1ZhbGlkSW50ZXJ2YWxTZXQoKVwiXG4gICAgPlxuICAgICAge3sgJ2ludGVydmFsUGlja2VyLmNsZWFyJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgQGlmICghdGhpcy5hdXRvRW1pdE1vZGUoKSkge1xuICAgICAgPGJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiY29udHJvbGxlci5tYW51YWxFbWl0KClcIj5cbiAgICAgICAge3sgJ2FjdGlvbnMub2snIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
198
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItaW50ZXJ2YWwtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvdGltZS9lbGRlci1pbnRlcnZhbC1waWNrZXIvZWxkZXItaW50ZXJ2YWwtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvdGltZS9lbGRlci1pbnRlcnZhbC1waWNrZXIvZWxkZXItaW50ZXJ2YWwtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQzdFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3BELE9BQU8sRUFDTCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsa0JBQWtCLEdBQ25CLE1BQU0sOEJBQThCLENBQUE7QUFDckMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUNwRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDckQsT0FBTyxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQTtBQUN0QyxPQUFPLEVBQUUsY0FBYyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFFakYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUE7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDeEUsT0FBTyxFQUNMLDJCQUEyQixHQUU1QixNQUFNLHdEQUF3RCxDQUFBO0FBQy9ELE9BQU8sa0JBQWtCLE1BQU0sa0NBQWtDLENBQUE7QUFDakUsT0FBTywwQkFBMEIsTUFBTSx5Q0FBeUMsQ0FBQTtBQUVoRixPQUFPLHVCQUF1QixNQUFNLHVDQUF1QyxDQUFBO0FBQzNFLE9BQU8sa0JBQWtCLE1BQU0sNkJBQTZCLENBQUE7Ozs7Ozs7Ozs7O0FBNkI1RCxNQUFNLE9BQU8sNEJBQTRCO0lBd0N2Qzs7OztnRkFJNEU7SUFFNUU7UUE3Q0E7Ozs7b0ZBSTRFO1FBRTNELFFBQUcsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7UUFZckQsYUFBUSxHQUFHLEtBQUssQ0FBcUIsVUFBVSxDQUFDLENBQUE7UUFDaEQsaUJBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQTtRQUM3RCxzQkFBaUIsR0FBRyxLQUFLLENBQW9CLGlCQUFpQixDQUFDLENBQUE7UUFDL0QsZUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFBO1FBQzVELG1CQUFjLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUE7UUFDaEUsMkJBQXNCLEdBQUcsS0FBSyxDQUM1QyxRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQ2hDLENBQUE7UUFDZSxxQkFBZ0IsR0FBRyxLQUFLLENBQW1DLElBQUksQ0FBQyxDQUFBO1FBb0I5RSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksMEJBQTBCLEVBQUUsQ0FBQTtRQUMvQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3RELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSx1QkFBdUIsQ0FDMUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FDekIsQ0FBQTtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQy9ELElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEtBQUssQ0FBQztTQUM1RCxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDcEQsR0FBRyxDQUFDLENBQUMsV0FBZ0IsRUFBRSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDakIsT0FBTyxJQUFJLENBQUE7WUFDYixDQUFDO1lBRUQsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUE7WUFFekUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQzlCLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsb0JBQW9CLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQTtnQkFDckUsT0FBTyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsQ0FBQTtZQUM1QyxDQUFDO1lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsRUFBRSxhQUFhLENBQUMsQ0FBQTtZQUMxRCxPQUFPLGFBQWEsQ0FBQTtRQUN0QixDQUFDLENBQUMsQ0FDSCxDQUFBO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNuRSxrQkFBa0IsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUNyRixDQUFDLENBQUMsQ0FBQTtRQUVGLE1BQU0sd0JBQXdCLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO1FBQzFFLHdCQUF3QixDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzVELElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDdEMsQ0FBQztTQUNGLENBQUMsQ0FBQTtRQUVGLE1BQU0sMEJBQTBCLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBQ3RFLDBCQUEwQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzlELElBQUksRUFBRSxDQUFDLFFBQWEsRUFBRSxFQUFFO2dCQUN0QixNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUE7Z0JBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLHdCQUF3QixDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFBO1lBQ3ZGLENBQUM7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRTVFLGVBQWU7UUFDYixJQUFJLENBQUMscUNBQXFDLEVBQUUsQ0FBQTtRQUU1QyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsOEJBQThCO1lBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQTtZQUNqQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUE7UUFDMUQsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQTtJQUM3QixDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRXBFLHFDQUFxQztRQUMzQyxzRkFBc0Y7UUFDdEYsSUFBSSxDQUFDLDJCQUEyQixHQUFHLENBQUMsS0FBaUIsRUFBUSxFQUFFO1lBQzdELElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ25DLE9BQU07WUFDUixDQUFDO1lBQ0QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFBO1lBQ3RCLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxhQUFpQyxDQUFBO1lBRXpELElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUN4QyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtnQkFDekMsT0FBTTtZQUNSLENBQUM7WUFDRCxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssY0FBYyxFQUFFLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFBO2dCQUN2QyxPQUFNO1lBQ1IsQ0FBQztRQUNILENBQUMsQ0FBQTtRQUVELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQTRCLENBQUE7UUFDL0UsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBNEIsQ0FBQTtRQUUzRSxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLDJCQUEyQixFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3BGLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDcEYsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDdkQsT0FBTTtRQUNSLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuRixPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQTRCLENBQUE7UUFDL0UsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBNEIsQ0FBQTtRQUUzRSxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLDJCQUEyQixFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3ZGLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDdkYsQ0FBQztJQUVPLDhCQUE4QixDQUFDLFFBQXVCO1FBQzVELElBQUksQ0FBQztZQUNILGtCQUFrQixDQUFDLDJCQUEyQixDQUM1QyxJQUFJLENBQUMsYUFBYSxFQUNsQixJQUFJLENBQUMsV0FBVyxFQUNoQixRQUFRLENBQUMsU0FBUyxFQUNsQixRQUFRLENBQUMsT0FBTyxDQUNqQixDQUFBO1FBQ0gsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQzNELENBQUM7SUFDSCxDQUFDOytHQWhMVSw0QkFBNEI7bUdBQTVCLDRCQUE0Qix1b0NBRjVCLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLHVVQWtDekIsVUFBVSwrR0FDWixVQUFVLCtOQ3ZHbkQsNDVnQkFtWkEsbWlCRG5XSSxtQkFBbUIsMGJBRW5CLGtCQUFrQiwyYUFJbEIsY0FBYywwV0FDZCxZQUFZLGlGQUNaLGFBQWEsbUxBQ2IsV0FBVyw4bUJBQ1gsZUFBZSx3VUFHZixlQUFlLDJGQUNmLGFBQWE7OzRGQVFKLDRCQUE0QjtrQkEzQnhDLFNBQVM7K0JBQ0UsdUJBQXVCLGNBQ3JCLElBQUksV0FDUDt3QkFDUCxrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3dCQUNqQixrQkFBa0I7d0JBQ2xCLFFBQVE7d0JBQ1IsT0FBTzt3QkFDUCxtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsWUFBWTt3QkFDWixhQUFhO3dCQUNiLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixXQUFXO3dCQUNYLFVBQVU7d0JBQ1YsZUFBZTt3QkFDZixhQUFhO3dCQUNiLDJCQUEyQjtxQkFDNUIsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0sYUFHcEMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLENBQUM7d0RBbUJsRCxjQUFjO3NCQUQ3QixNQUFNO2dCQWEwQixhQUFhO3NCQUE3QyxTQUFTO3VCQUFDLG9CQUFvQjtnQkFDQSxXQUFXO3NCQUF6QyxTQUFTO3VCQUFDLGtCQUFrQjtnQkFFMEIsa0JBQWtCO3NCQUF4RSxTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFDQSxnQkFBZ0I7c0JBQXBFLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUV0QixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFDQSxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBpbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJ1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbidcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSdcbmltcG9ydCB7XG4gIE1hdENhbGVuZGFyLFxuICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICBNYXREYXRlcGlja2VyVG9nZ2xlLFxuICBNYXREYXRlUmFuZ2VJbnB1dCxcbiAgTWF0RGF0ZVJhbmdlUGlja2VyLFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJ1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlLCBNYXRIaW50LCBNYXRMYWJlbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbidcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnXG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSdcbmltcG9ydCB7IE1hdFRvb2x0aXAgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJ1xuaW1wb3J0IHsgTG9nZ2VyRmFjdG9yeSB9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJ1xuaW1wb3J0IHsgVGVtcG9yYWwgfSBmcm9tICdAanMtdGVtcG9yYWwvcG9seWZpbGwnXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGNvZXJjZUludGVydmFsLCBjb2VyY2VJbnRlcnZhbElzb1N0ciB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9wdWJsaWNfYXBpJ1xuaW1wb3J0IHsgSW50ZXJ2YWwsIElzb0ludGVydmFsU3RyIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3RpbWUvaW50ZXJ2YWwnXG5pbXBvcnQgeyBib29sZWFuVHJhbnNmb3JtRm4gfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXRpbHMvc2lnbmFsLWlucHV0J1xuaW1wb3J0IHsgQ3VzdG9tRGF0ZUFkYXB0ZXIgfSBmcm9tICcuLi9kYXRlLWFkYXB0ZXJzL2N1c3RvbS1kYXRlLWFkYXB0ZXInXG5pbXBvcnQge1xuICBFbGRlckludGVydmFsSW5wdXRDb21wb25lbnQsXG4gIEludGVydmFsSW5wdXRNb2RlLFxufSBmcm9tICcuLi9lbGRlci1pbnRlcnZhbC1pbnB1dC9lbGRlci1pbnRlcnZhbC1pbnB1dC5jb21wb25lbnQnXG5pbXBvcnQgSW50ZXJ2YWxDb250cm9sbGVyIGZyb20gJy4vY29udHJvbGxlci9pbnRlcnZhbC1jb250cm9sbGVyJ1xuaW1wb3J0IEludGVydmFsUGlja2VyU3RhdGVNYW5hZ2VyIGZyb20gJy4vbWFuYWdlci9pbnRlcnZhbC1waWNrZXItc3RhdGUtbWFuYWdlcidcbmltcG9ydCBJbnRlcnZhbFN0YXRlIGZyb20gJy4vbW9kZWwvaW50ZXJ2YWwtc3RhdGUnXG5pbXBvcnQgSW50ZXJ2YWxQaWNrZXJQcmVzZW50ZXIgZnJvbSAnLi9wcmVzZW50ZXIvaW50ZXJ2YWwtcGlja2VyLXByZXNlbnRlcidcbmltcG9ydCBJbnRlcnZhbFBpY2tlclV0aWwgZnJvbSAnLi91dGlsL2ludGVydmFsLXBpY2tlci11dGlsJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbGRlci1pbnRlcnZhbC1waWNrZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0RGF0ZVJhbmdlUGlja2VyLFxuICAgIE1hdERhdGVwaWNrZXJNb2R1bGUsXG4gICAgTWF0RGF0ZVJhbmdlSW5wdXQsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdExhYmVsLFxuICAgIE1hdEhpbnQsXG4gICAgTWF0RGF0ZXBpY2tlclRvZ2dsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0Q2FsZW5kYXIsXG4gICAgTWF0VG9vbHRpcCxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBFbGRlckludGVydmFsSW5wdXRDb21wb25lbnQsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZVVybDogJy4vZWxkZXItaW50ZXJ2YWwtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2VsZGVyLWludGVydmFsLXBpY2tlci5jb21wb25lbnQuc2NzcycsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBDdXN0b21EYXRlQWRhcHRlciB9XSxcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJJbnRlcnZhbFBpY2tlckNvbXBvbmVudCB7XG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKVxuXG4gIC8vIFByaXZhdGVcbiAgcHJpdmF0ZSByZWFkb25seSBtYW5hZ2VyOiBJbnRlcnZhbFBpY2tlclN0YXRlTWFuYWdlclxuXG4gIC8vIFB1YmxpY1xuICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbGxlcjogSW50ZXJ2YWxDb250cm9sbGVyXG4gIHB1YmxpYyByZWFkb25seSBwcmVzZW50ZXI6IEludGVydmFsUGlja2VyUHJlc2VudGVyXG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBpbnRlcnZhbENoYW5nZTogT2JzZXJ2YWJsZTxJbnRlcnZhbCB8IElzb0ludGVydmFsU3RyIHwgbnVsbD5cblxuICBwdWJsaWMgcmVhZG9ubHkgZW1pdFR5cGUgPSBpbnB1dDwnaW50ZXJ2YWwnIHwgJ2lzbyc+KCdpbnRlcnZhbCcpXG4gIHB1YmxpYyByZWFkb25seSBhdXRvRW1pdE1vZGUgPSBpbnB1dCh0cnVlLCB7IHRyYW5zZm9ybTogYm9vbGVhblRyYW5zZm9ybUZuIH0pXG4gIHB1YmxpYyByZWFkb25seSBpbnRlcnZhbElucHV0TW9kZSA9IGlucHV0PEludGVydmFsSW5wdXRNb2RlPignZGF0ZS10aW1lLXJhbmdlJylcbiAgcHVibGljIHJlYWRvbmx5IHNob3dBbmNob3IgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5UcmFuc2Zvcm1GbiB9KVxuICBwdWJsaWMgcmVhZG9ubHkgYW5jaG9yUmVhZE9ubHkgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5UcmFuc2Zvcm1GbiB9KVxuICBwdWJsaWMgcmVhZG9ubHkgZXh0ZXJuYWxBbmNob3JEYXRlVGltZSA9IGlucHV0PFRlbXBvcmFsLlBsYWluRGF0ZVRpbWUgfCBudWxsPihcbiAgICBUZW1wb3JhbC5Ob3cucGxhaW5EYXRlVGltZUlTTygpXG4gIClcbiAgcHVibGljIHJlYWRvbmx5IGV4dGVybmFsSW50ZXJ2YWwgPSBpbnB1dDxJbnRlcnZhbCB8IElzb0ludGVydmFsU3RyIHwgbnVsbD4obnVsbClcblxuICBAVmlld0NoaWxkKCdyYW5nZUNhbGVuZGFyU3RhcnQnKSBjYWxlbmRhclN0YXJ0ITogTWF0Q2FsZW5kYXI8RGF0ZT5cbiAgQFZpZXdDaGlsZCgncmFuZ2VDYWxlbmRhckVuZCcpIGNhbGVuZGFyRW5kITogTWF0Q2FsZW5kYXI8RGF0ZT5cblxuICBAVmlld0NoaWxkKCdyYW5nZUNhbGVuZGFyU3RhcnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgY2FsZW5kYXJTdGFydEVsUmVmITogRWxlbWVudFJlZlxuICBAVmlld0NoaWxkKCdyYW5nZUNhbGVuZGFyRW5kJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNhbGVuZGFyRW5kRWxSZWYhOiBFbGVtZW50UmVmXG5cbiAgQFZpZXdDaGlsZCgnc3RhcnREYXRlSW5wdXQnKSBzdGFydERhdGVJbnB1dCE6IEVsZW1lbnRSZWZcbiAgQFZpZXdDaGlsZCgnZW5kRGF0ZUlucHV0JykgZW5kRGF0ZUlucHV0ITogRWxlbWVudFJlZlxuXG4gIHByaXZhdGUgY2FsZW5kYXJFbEZvY3VzRXZlbnRIYW5kbGVyOiAoZXZlbnQ6IEZvY3VzRXZlbnQpID0+IHZvaWRcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm1hbmFnZXIgPSBuZXcgSW50ZXJ2YWxQaWNrZXJTdGF0ZU1hbmFnZXIoKVxuICAgIHRoaXMuY29udHJvbGxlciA9IG5ldyBJbnRlcnZhbENvbnRyb2xsZXIodGhpcy5tYW5hZ2VyKVxuICAgIHRoaXMucHJlc2VudGVyID0gbmV3IEludGVydmFsUGlja2VyUHJlc2VudGVyKFxuICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsJCxcbiAgICAgIHRoaXMubWFuYWdlci5hbmNob3IkLFxuICAgICAgdGhpcy5tYW5hZ2VyLnNtYXJ0U2hpZnQkXG4gICAgKVxuXG4gICAgdGhpcy5tYW5hZ2VyLmludGVydmFsQ2hhbmdlLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoc3RhdGUpID0+IHRoaXMudHJ5VXBkYXRlTWF0Q2FsZW5kYXJBY3RpdmVEYXRlKHN0YXRlKSxcbiAgICB9KVxuXG4gICAgdGhpcy5pbnRlcnZhbENoYW5nZSA9IHRoaXMubWFuYWdlci5pbnRlcnZhbENoYW5nZS5waXBlKFxuICAgICAgbWFwKChzcmNJbnRlcnZhbDogYW55KSA9PiB7XG4gICAgICAgIGlmICghc3JjSW50ZXJ2YWwpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZWxkZXJJbnRlcnZhbCA9IEludGVydmFsUGlja2VyVXRpbC5jcmVhdGVFbGRlckludGVydmFsKHNyY0ludGVydmFsKVxuXG4gICAgICAgIGlmICh0aGlzLmVtaXRUeXBlKCkgPT09ICdpc28nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ2VtaXR0aW5nIHR5cGUgaXNvJywgY29lcmNlSW50ZXJ2YWxJc29TdHIoZWxkZXJJbnRlcnZhbCkpXG4gICAgICAgICAgcmV0dXJuIGNvZXJjZUludGVydmFsSXNvU3RyKGVsZGVySW50ZXJ2YWwpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZygnZW1pdHRpbmcgdHlwZSBlbGRlciBpbnRlcnZhbCcsIGVsZGVySW50ZXJ2YWwpXG4gICAgICAgIHJldHVybiBlbGRlckludGVydmFsXG4gICAgICB9KVxuICAgIClcblxuICAgIHRoaXMubWFuYWdlci5hbmNob3IkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgoYW5jaG9yKSA9PiB7XG4gICAgICBJbnRlcnZhbFBpY2tlclV0aWwudXBkYXRlTWF0Q2FsZW5kYXJUb2RheURhdGUodGhpcy5jYWxlbmRhclN0YXJ0LCB0aGlzLmNhbGVuZGFyRW5kKVxuICAgIH0pXG5cbiAgICBjb25zdCBleHRlcm5hbEFuY2hvck9ic2VydmFibGUgPSB0b09ic2VydmFibGUodGhpcy5leHRlcm5hbEFuY2hvckRhdGVUaW1lKVxuICAgIGV4dGVybmFsQW5jaG9yT2JzZXJ2YWJsZS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGUpID0+IHtcbiAgICAgICAgdGhpcy5tYW5hZ2VyLnNldEV4dGVybmFsQW5jaG9yKGRhdGUpXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBjb25zdCBleHRlcm5hbEludGVydmFsT2JzZXJ2YWJsZSA9IHRvT2JzZXJ2YWJsZSh0aGlzLmV4dGVybmFsSW50ZXJ2YWwpXG4gICAgZXh0ZXJuYWxJbnRlcnZhbE9ic2VydmFibGUucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChpbnRlcnZhbDogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGNvZXJjZUludGVydmFsKGludGVydmFsKVxuICAgICAgICB0aGlzLm1hbmFnZXIuc2V0SW50ZXJ2YWwoSW50ZXJ2YWxQaWNrZXJVdGlsLnRyYW5zZm9ybVRvSW50ZXJ2YWxTdGF0ZShyZXN1bHQgfHwgbnVsbCkpXG4gICAgICB9LFxuICAgIH0pXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXR1cERhdGVJbnB1dENhbGVuZGFyRm9jdXNQcmV2ZW50aW9uKClcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gdGhpcyBwcmV2ZW50cyBuZ21vZGVsIGlzc3VlXG4gICAgICB0aGlzLm1hbmFnZXIuaXNJbml0aWFsaXplZCA9IHRydWVcbiAgICAgIGNvbnNvbGUubG9nKCdleHRlcm5hbEludGVydmFsJywgdGhpcy5leHRlcm5hbEludGVydmFsKCkpXG4gICAgfSwgMClcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBzZXR1cERhdGVJbnB1dENhbGVuZGFyRm9jdXNQcmV2ZW50aW9uKCk6IHZvaWQge1xuICAgIC8vIFByZXZlbnRzIHRoZSBmb2N1cyBvbiB0aGUgY2FsZW5kYXIgd2hlbiB0aGUgaW5wdXQgZmllbGQgaXMgY2hhbmdlZCB2aWEgdGhlIGtleWJvYXJkXG4gICAgdGhpcy5jYWxlbmRhckVsRm9jdXNFdmVudEhhbmRsZXIgPSAoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgIGlmICghZXZlbnQgfHwgIWV2ZW50LnJlbGF0ZWRUYXJnZXQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBjb25zdCByZWxUYXJnZXQgPSBldmVudC5yZWxhdGVkVGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnRcblxuICAgICAgaWYgKHJlbFRhcmdldC5uYW1lID09PSAnc3RhcnREYXRlSW5wdXQnKSB7XG4gICAgICAgIHRoaXMuc3RhcnREYXRlSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKHJlbFRhcmdldC5uYW1lID09PSAnZW5kRGF0ZUlucHV0Jykge1xuICAgICAgICB0aGlzLmVuZERhdGVJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgbmF0aXZlRWxlbWVudFN0YXJ0ID0gdGhpcy5jYWxlbmRhclN0YXJ0RWxSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudFxuICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnRFbmQgPSB0aGlzLmNhbGVuZGFyRW5kRWxSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudFxuXG4gICAgbmF0aXZlRWxlbWVudFN0YXJ0LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgdGhpcy5jYWxlbmRhckVsRm9jdXNFdmVudEhhbmRsZXIsIHRydWUpXG4gICAgbmF0aXZlRWxlbWVudEVuZC5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIHRoaXMuY2FsZW5kYXJFbEZvY3VzRXZlbnRIYW5kbGVyLCB0cnVlKVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2FsZW5kYXJTdGFydEVsUmVmIHx8ICF0aGlzLmNhbGVuZGFyRW5kRWxSZWYpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghdGhpcy5jYWxlbmRhclN0YXJ0RWxSZWYubmF0aXZlRWxlbWVudCB8fCAhdGhpcy5jYWxlbmRhckVuZEVsUmVmLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnRTdGFydCA9IHRoaXMuY2FsZW5kYXJTdGFydEVsUmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnRcbiAgICBjb25zdCBuYXRpdmVFbGVtZW50RW5kID0gdGhpcy5jYWxlbmRhckVuZEVsUmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnRcblxuICAgIG5hdGl2ZUVsZW1lbnRTdGFydC5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1cycsIHRoaXMuY2FsZW5kYXJFbEZvY3VzRXZlbnRIYW5kbGVyLCB0cnVlKVxuICAgIG5hdGl2ZUVsZW1lbnRFbmQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXMnLCB0aGlzLmNhbGVuZGFyRWxGb2N1c0V2ZW50SGFuZGxlciwgdHJ1ZSlcbiAgfVxuXG4gIHByaXZhdGUgdHJ5VXBkYXRlTWF0Q2FsZW5kYXJBY3RpdmVEYXRlKGludGVydmFsOiBJbnRlcnZhbFN0YXRlKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIEludGVydmFsUGlja2VyVXRpbC51cGRhdGVNYXRDYWxlbmRhckFjdGl2ZURhdGUoXG4gICAgICAgIHRoaXMuY2FsZW5kYXJTdGFydCxcbiAgICAgICAgdGhpcy5jYWxlbmRhckVuZCxcbiAgICAgICAgaW50ZXJ2YWwuc3RhcnREYXRlLFxuICAgICAgICBpbnRlcnZhbC5lbmREYXRlXG4gICAgICApXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5kZWJ1ZygnRmFpbGVkIHRvIHVwZGF0ZSBjYWxlbmRhciBhY3RpdmUgZGF0ZScsIGUpXG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaW50ZXJ2YWwtcGlja2VyLWNvbXBvbmVudCBwLW1kIGxheW91dC1jb2wgZ2FwLXh4bFwiPlxuICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBnYXAteHhsIHBsYWNlLWJldHdlZW4tc3RhcnRcIiBzdHlsZT1cImdhcDogNSVcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LWNvbCBnYXAtbWQgcHQteHNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29sXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtcm93IHNlbGVjdC1idXR0b25zLWNvbnRhaW5lciBnYXAtc21cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LWNvbCBnYXAteHMgcGxhY2Utc3RhcnQtc3RyZXRjaFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJjb250cm9sbGVyLnNlbGVjdC5zZWxlY3RDdXJyZW50RGF5KClcIj5cbiAgICAgICAgICAgICAgQGlmIChwcmVzZW50ZXIuaXNGaXhlZEFuY2hvckRhdGVTZXQoKSkge1xuICAgICAgICAgICAgICAgIHt7ICdpbnRlcnZhbFBpY2tlci5hbmNob3JEYXknIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIHt7ICdpbnRlcnZhbFBpY2tlci50b2RheScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cImNvbnRyb2xsZXIuc2VsZWN0LnNlbGVjdFllc3RlcmRheSgpXCI+XG4gICAgICAgICAgICAgIEBpZiAocHJlc2VudGVyLmlzRml4ZWRBbmNob3JEYXRlU2V0KCkpIHtcbiAgICAgICAgICAgICAgICB7eyAnaW50ZXJ2YWxQaWNrZXIubGFzdCcgfCB0cmFuc2xhdGUgfX0gMSB7eyAnaW50ZXJ2YWxQaWNrZXIuZGF5JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICB7eyAnaW50ZXJ2YWxQaWNrZXIueWVzdGVyZGF5JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwiY29udHJvbGxlci5zZWxlY3Quc2VsZWN0TGFzdFNldmVuRGF5c0luY2x1ZGluZ1RvZGF5KClcIj5cbiAgICAgICAgICAgICAge3sgJ2ludGVydmFsUGlja2VyLmxhc3QnIHwgdHJhbnNsYXRlIH19IDdcbiAgICAgICAgICAgICAge3sgJ2ludGVydmFsUGlja2VyLmRheXMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwiY29udHJvbGxlci5zZWxlY3Quc2VsZWN0TGFzdFRoaXJ0eURheXNJbmNsdWRpbmdUb2RheSgpXCI+XG4gICAgICAgICAgICAgIHt7ICdpbnRlcnZhbFBpY2tlci5sYXN0JyB8IHRyYW5zbGF0ZSB9fSAzMFxuICAgICAgICAgICAgICB7eyAnaW50ZXJ2YWxQaWNrZXIuZGF5cycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJjb250cm9sbGVyLnNlbGVjdC5zZWxlY3RMYXN0MzY1ZGF5c0luY2x1ZGluZ1RvZGF5KClcIj5cbiAgICAgICAgICAgICAge3sgJ2ludGVydmFsUGlja2VyLmxhc3QnIHwgdHJhbnNsYXRlIH19IDM2NVxuICAgICAgICAgICAgICB7eyAnaW50ZXJ2YWxQaWNrZXIuZGF5cycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgQGlmIChpbnRlcnZhbElucHV0TW9kZSgpID09PSAnZGF0ZS10aW1lLXJhbmdlJykge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtc21cIj48L2Rpdj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJjb250cm9sbGVyLnNlbGVjdC5zZWxlY3RMYXN0Rml2ZU1pbnV0ZXMoKVwiPlxuICAgICAgICAgICAgICAgIHt7ICdpbnRlcnZhbFBpY2tlci5sYXN0JyB8IHRyYW5zbGF0ZSB9fSA1XG4gICAgICAgICAgICAgICAge3sgJ2ludGVydmFsUGlja2VyLm1pbnV0ZXMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cImNvbnRyb2xsZXIuc2VsZWN0LnNlbGVjdExhc3RIb3VyKClcIj5cbiAgICAgICAgICAgICAgICB7eyAnaW50ZXJ2YWxQaWNrZXIubGFzdCcgfCB0cmFuc2xhdGUgfX0ge3sgJ2ludGVydmFsUGlja2VyLmhvdXInIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cImNvbnRyb2xsZXIuc2VsZWN0LnNlbGVjdExhc3QyNEhvdXJzKClcIj5cbiAgICAgICAgICAgICAgICB7eyAnaW50ZXJ2YWxQaWNrZXIubGFzdCcgfCB0cmFuc2xhdGUgfX0gMjRcbiAgICAgICAgICAgICAgICB7eyAnaW50ZXJ2YWxQaWNrZXIuaG91cnMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29sXCI+XG4gICAgICA8IS0tIHNtYXJ0IHNoaWZ0IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1yb3cgcGxhY2UtYXJvdW5kLWNlbnRlclwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgKGNsaWNrKT1cImNvbnRyb2xsZXIuc2hpZnQuc21hcnRTaGlmdCgtMSlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhcHJlc2VudGVyLmlzVmFsaWRJbnRlcnZhbFNldCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtYXQtaWNvbj5rZXlib2FyZF9kb3VibGVfYXJyb3dfbGVmdDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8c3Bhbj57eyBwcmVzZW50ZXIuc21hcnRTaGlmdE1lc3NhZ2UoKSB9fTwvc3Bhbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgIChjbGljayk9XCJjb250cm9sbGVyLnNoaWZ0LnNtYXJ0U2hpZnQoMSlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhcHJlc2VudGVyLmlzVmFsaWRJbnRlcnZhbFNldCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtYXQtaWNvbj5rZXlib2FyZF9kb3VibGVfYXJyb3dfcmlnaHQ8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBjYWxlbmRhcnMgYW5kIGlucHV0IGNvbnRyb2xzIC0tPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImxheW91dC1yb3cgcGxhY2UtYXJvdW5kLWNlbnRlclwiXG4gICAgICAgIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IG1pbi1oZWlnaHQ6IDI4MHB4XCJcbiAgICAgID5cbiAgICAgICAgPG1hdC1jYWxlbmRhclxuICAgICAgICAgICNyYW5nZUNhbGVuZGFyU3RhcnRcbiAgICAgICAgICBzdHlsZT1cIndpZHRoOiAyMTBweDsgbWF4LXdpZHRoOiAxMDAlXCJcbiAgICAgICAgICBbc2VsZWN0ZWRdPVwicHJlc2VudGVyLmRhdGVSYW5nZUZvckNhbGVuZGFyKClcIlxuICAgICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJjb250cm9sbGVyLmNhbGVuZGFyLnNldFN0YXJ0RGF0ZUZyb21KU0RhdGUoJGV2ZW50KVwiXG4gICAgICAgICAgW21heERhdGVdPVwicHJlc2VudGVyLmVuZERhdGVUaW1lQXNKU0RhdGUoKVwiXG4gICAgICAgICAgW2RhdGVDbGFzc109XCJwcmVzZW50ZXIuY2FsZW5kYXJBbmNob3JEYXRlQ3NzQ2xhc3NGblwiXG4gICAgICAgID5cbiAgICAgICAgPC9tYXQtY2FsZW5kYXI+XG4gICAgICAgIDxtYXQtY2FsZW5kYXJcbiAgICAgICAgICAjcmFuZ2VDYWxlbmRhckVuZFxuICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDIxMHB4OyBtYXgtd2lkdGg6IDEwMCVcIlxuICAgICAgICAgIFtzZWxlY3RlZF09XCJwcmVzZW50ZXIuZGF0ZVJhbmdlRm9yQ2FsZW5kYXIoKVwiXG4gICAgICAgICAgKHNlbGVjdGVkQ2hhbmdlKT1cImNvbnRyb2xsZXIuY2FsZW5kYXIuc2V0RW5kRGF0ZUZyb21KU0RhdGUoJGV2ZW50KVwiXG4gICAgICAgICAgW21pbkRhdGVdPVwicHJlc2VudGVyLnN0YXJ0RGF0ZVRpbWVBc0pTRGF0ZSgpXCJcbiAgICAgICAgICBbZGF0ZUNsYXNzXT1cInByZXNlbnRlci5jYWxlbmRhckFuY2hvckRhdGVDc3NDbGFzc0ZuXCJcbiAgICAgICAgPlxuICAgICAgICA8L21hdC1jYWxlbmRhcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1yb3cgcGxhY2UtYXJvdW5kLWNlbnRlciBnYXAteGwgcHQtc21cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1yb3cgcGxhY2UtYXJvdW5kLWNlbnRlclwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImlucHV0LWNvbnRyb2wtY29udGFpbmVyXCIgW3N1YnNjcmlwdFNpemluZ109XCInZHluYW1pYydcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3sgJ2ludGVydmFsUGlja2VyLnN0YXJ0RGF0ZScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAjc3RhcnREYXRlSW5wdXRcbiAgICAgICAgICAgICAgbmFtZT1cInN0YXJ0RGF0ZUlucHV0XCJcbiAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImRhdGVcIlxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJwcmVzZW50ZXIuc3RhcnREYXRlSHRtbFN0cmluZygpXCJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY29udHJvbGxlci5mb3JtLnNldFN0YXJ0RGF0ZUZyb21TdHJpbmcoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBwbGFjZS1hcm91bmQtY2VudGVyXCI+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiaW5wdXQtY29udHJvbC1jb250YWluZXJcIiBbc3Vic2NyaXB0U2l6aW5nXT1cIidkeW5hbWljJ1wiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD57eyAnaW50ZXJ2YWxQaWNrZXIuZW5kRGF0ZScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAjZW5kRGF0ZUlucHV0XG4gICAgICAgICAgICAgIG5hbWU9XCJlbmREYXRlSW5wdXRcIlxuICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiZGF0ZVwiXG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cInByZXNlbnRlci5lbmREYXRlSHRtbFN0cmluZygpXCJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY29udHJvbGxlci5mb3JtLnNldEVuZERhdGVGcm9tU3RyaW5nKCRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgQGlmIChpbnRlcnZhbElucHV0TW9kZSgpID09PSAnZGF0ZS10aW1lLXJhbmdlJykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBwbGFjZS1hcm91bmQtY2VudGVyIGdhcC14bCBwdC1zbVwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImlucHV0LWNvbnRyb2wtY29udGFpbmVyXCIgW3N1YnNjcmlwdFNpemluZ109XCInZHluYW1pYydcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3sgJ2ludGVydmFsUGlja2VyLnN0YXJ0VGltZScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBuYW1lPVwic3RhcnRUaW1lSW5wdXRcIlxuICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGltZVwiXG4gICAgICAgICAgICAgICNzdGFydFRpbWVDb250cm9sPVwibmdNb2RlbFwiXG4gICAgICAgICAgICAgIHN0ZXA9XCIxXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwicHJlc2VudGVyLnN0YXJ0VGltZUh0bWxTdHJpbmcoKVwiXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNvbnRyb2xsZXIuZm9ybS5zZXRTdGFydFRpbWVGcm9tU3RyaW5nKCRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICAoY2xpY2spPVwiY29udHJvbGxlci5jbGVhclN0YXJ0VGltZSgpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFwcmVzZW50ZXIuaXNTdGFydFRpbWVTZXRBbmROb3RNaWRuaWdodCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiaW5wdXQtY29udHJvbC1jb250YWluZXJcIiBbc3Vic2NyaXB0U2l6aW5nXT1cIidkeW5hbWljJ1wiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD57eyAnaW50ZXJ2YWxQaWNrZXIuZW5kVGltZScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBuYW1lPVwiZW5kVGltZUlucHV0XCJcbiAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRpbWVcIlxuICAgICAgICAgICAgICAjZW5kVGltZUNvbnRyb2w9XCJuZ01vZGVsXCJcbiAgICAgICAgICAgICAgc3RlcD1cIjFcIlxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJwcmVzZW50ZXIuZW5kVGltZUh0bWxTdHJpbmcoKVwiXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNvbnRyb2xsZXIuZm9ybS5zZXRFbmRUaW1lRnJvbVN0cmluZygkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICBtYXRTdWZmaXhcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbnRyb2xsZXIuY2xlYXJFbmRUaW1lKClcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXByZXNlbnRlci5pc0VuZFRpbWVTZXRBbmROb3RNaWRuaWdodCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgPGJyIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInB0LXhzXCIgc3R5bGU9XCJ3aWR0aDogMjUlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LWNvbCBnYXAtbGdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1jb2wgZ2FwLXhzIHBsYWNlLXN0YXJ0LXN0YXJ0XCI+XG4gICAgICAgICAgPCEtLSBzZWxlY3QgY3VycmVudCAtLT5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cImNvbnRyb2xsZXIuc2VsZWN0LnNlbGVjdEN1cnJlbnRXZWVrKClcIj5cbiAgICAgICAgICAgIHt7ICdpbnRlcnZhbFBpY2tlci5jdXJyZW50UGVyaW9kLndlZWsnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJjb250cm9sbGVyLnNlbGVjdC5zZWxlY3RDdXJyZW50TW9udGgoKVwiPlxuICAgICAgICAgICAge3sgJ2ludGVydmFsUGlja2VyLmN1cnJlbnRQZXJpb2QubW9udGgnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJjb250cm9sbGVyLnNlbGVjdC5zZWxlY3RDdXJyZW50UXVhcnRlcigpXCI+XG4gICAgICAgICAgICB7eyAnaW50ZXJ2YWxQaWNrZXIuY3VycmVudFBlcmlvZC5xdWFydGVyJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwiY29udHJvbGxlci5zZWxlY3Quc2VsZWN0Q3VycmVudFllYXIoKVwiPlxuICAgICAgICAgICAge3sgJ2ludGVydmFsUGlja2VyLmN1cnJlbnRQZXJpb2QueWVhcicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaXhlZC1zaGlmdHMtY29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1jb2wgcGxhY2Utc3RhcnQtc3RyZXRjaFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1yb3cgcGxhY2UtYmV0d2Vlbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjb250cm9sbGVyLnNoaWZ0LnNoaWZ0RGF5KC0xKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFwcmVzZW50ZXIuaXNWYWxpZEludGVydmFsU2V0KClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmtleWJvYXJkX2RvdWJsZV9hcnJvd19sZWZ0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxzcGFuPnt7ICdpbnRlcnZhbFBpY2tlci5kYXknIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbnRyb2xsZXIuc2hpZnQuc2hpZnREYXkoMSlcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhcHJlc2VudGVyLmlzVmFsaWRJbnRlcnZhbFNldCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5rZXlib2FyZF9kb3VibGVfYXJyb3dfcmlnaHQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1yb3cgcGxhY2UtYmV0d2Vlbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjb250cm9sbGVyLnNoaWZ0LnNoaWZ0TW9udGgoLTEpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXByZXNlbnRlci5pc1ZhbGlkSW50ZXJ2YWxTZXQoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+a2V5Ym9hcmRfZG91YmxlX2Fycm93X2xlZnQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgJ2ludGVydmFsUGlja2VyLm1vbnRoJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjb250cm9sbGVyLnNoaWZ0LnNoaWZ0TW9udGgoMSlcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhcHJlc2VudGVyLmlzVmFsaWRJbnRlcnZhbFNldCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5rZXlib2FyZF9kb3VibGVfYXJyb3dfcmlnaHQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1yb3cgcGxhY2UtYmV0d2Vlbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjb250cm9sbGVyLnNoaWZ0LnNoaWZ0WWVhcigtMSlcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhcHJlc2VudGVyLmlzVmFsaWRJbnRlcnZhbFNldCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5rZXlib2FyZF9kb3VibGVfYXJyb3dfbGVmdDwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8c3Bhbj57eyAnaW50ZXJ2YWxQaWNrZXIueWVhcicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29udHJvbGxlci5zaGlmdC5zaGlmdFllYXIoMSlcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhcHJlc2VudGVyLmlzVmFsaWRJbnRlcnZhbFNldCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5rZXlib2FyZF9kb3VibGVfYXJyb3dfcmlnaHQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICBAaWYgKHRydWUpIHtcbiAgICAgICAgICAgICAgPCEtLSBzaGlmdCBtaW51dGUgLS0+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtcm93IHBsYWNlLWJldHdlZW4tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29udHJvbGxlci5zaGlmdC5zaGlmdE1pbnV0ZSgtMSlcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFwcmVzZW50ZXIuaXNWYWxpZEludGVydmFsU2V0KClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5rZXlib2FyZF9kb3VibGVfYXJyb3dfbGVmdDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgJ2ludGVydmFsUGlja2VyLm1pbnV0ZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29udHJvbGxlci5zaGlmdC5zaGlmdE1pbnV0ZSgxKVwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXByZXNlbnRlci5pc1ZhbGlkSW50ZXJ2YWxTZXQoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmtleWJvYXJkX2RvdWJsZV9hcnJvd19yaWdodDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8IS0tIHNoaWZ0IGhvdXIgLS0+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtcm93IHBsYWNlLWJldHdlZW4tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29udHJvbGxlci5zaGlmdC5zaGlmdEhvdXIoLTEpXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhcHJlc2VudGVyLmlzVmFsaWRJbnRlcnZhbFNldCgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24+a2V5Ym9hcmRfZG91YmxlX2Fycm93X2xlZnQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdpbnRlcnZhbFBpY2tlci5ob3VyJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb250cm9sbGVyLnNoaWZ0LnNoaWZ0SG91cigxKVwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXByZXNlbnRlci5pc1ZhbGlkSW50ZXJ2YWxTZXQoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmtleWJvYXJkX2RvdWJsZV9hcnJvd19yaWdodDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImxheW91dC1yb3cgcGxhY2UtYmV0d2Vlbi1jZW50ZXIgZ2FwLXh4bCBwdC1zbVwiPlxuICA8ZGl2PlxuICAgIEBpZiAoc2hvd0FuY2hvcigpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBmbGV4LW5vbmUgZ2FwLW1kXCI+XG4gICAgICAgIDxtYXQtbWVudSAjYW5jaG9yTWVudT1cIm1hdE1lbnVcIj5cbiAgICAgICAgICBAaWYgKHByZXNlbnRlci5zdGFydERhdGVIdG1sU3RyaW5nKCkpIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAoY2xpY2spPVwiY29udHJvbGxlci5hbmNob3Iuc2V0Rml4ZWRBbmNob3JQb2ludFRvRW5kRGF0ZVRpbWUoKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhcHJlc2VudGVyLnN0YXJ0RGF0ZUh0bWxTdHJpbmcoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj5sb2dpbjwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDxzcGFuPnt7ICdpbnRlcnZhbFBpY2tlci5lbmREYXRlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHByZXNlbnRlci5lbmREYXRlSHRtbFN0cmluZygpKSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbnRyb2xsZXIuYW5jaG9yLnNldEZpeGVkQW5jaG9yUG9pbnRUb1N0YXJ0RGF0ZVRpbWUoKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhcHJlc2VudGVyLmVuZERhdGVIdG1sU3RyaW5nKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+bG9nb3V0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgJ2ludGVydmFsUGlja2VyLnN0YXJ0RGF0ZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChwcmVzZW50ZXIuaXNGaXhlZEFuY2hvckRhdGVTZXQoKSkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgIChjbGljayk9XCJjb250cm9sbGVyLmFuY2hvci5yZXNldEFuY2hvcigpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFwcmVzZW50ZXIuaXNGaXhlZEFuY2hvckRhdGVTZXQoKSB8fCBhbmNob3JSZWFkT25seSgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgJ2ludGVydmFsUGlja2VyLmNsZWFyJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9tYXQtbWVudT5cblxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJpbnB1dC1jb250cm9sLWNvbnRhaW5lclwiIFtzdWJzY3JpcHRTaXppbmddPVwiJ2R5bmFtaWMnXCI+XG4gICAgICAgICAgPG1hdC1sYWJlbD57eyAnaW50ZXJ2YWxQaWNrZXIuYW5jaG9yRGF0ZScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNzdGFydERhdGVJbnB1dFxuICAgICAgICAgICAgbmFtZT1cImFuY2hvckRhdGVJbnB1dFwiXG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgdHlwZT1cImRhdGVcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwicHJlc2VudGVyLmFuY2hvckRhdGVIdG1sU3RyaW5nKClcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY29udHJvbGxlci5mb3JtLnNldEFuY2hvckRhdGVGcm9tU3RyaW5nKCRldmVudClcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFuY2hvclJlYWRPbmx5KClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgQGlmICghYW5jaG9yUmVhZE9ubHkoKSkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgbWF0U3VmZml4XG4gICAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJhbmNob3JNZW51XCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByZXNlbnRlci5pc0FuY2hvck1lbnVEaXNhYmxlZCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPm1vcmVfaG9yaXo8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICBAaWYgKGludGVydmFsSW5wdXRNb2RlKCkgPT09ICdkYXRlLXRpbWUtcmFuZ2UnKSB7XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiaW5wdXQtY29udHJvbC1jb250YWluZXItc2hvcnRcIiBbc3Vic2NyaXB0U2l6aW5nXT1cIidkeW5hbWljJ1wiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD57eyAnaW50ZXJ2YWxQaWNrZXIuYW5jaG9yVGltZScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICBuYW1lPVwiYW5jaG9yVGltZUlucHV0XCJcbiAgICAgICAgICAgICAgdHlwZT1cInRpbWVcIlxuICAgICAgICAgICAgICAjYW5jaG9yVGltZUNvbnRyb2w9XCJuZ01vZGVsXCJcbiAgICAgICAgICAgICAgc3RlcD1cIjFcIlxuICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiYW5jaG9yUmVhZE9ubHkoKVwiXG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cInByZXNlbnRlci5hbmNob3JUaW1lSHRtbFN0cmluZygpXCJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY29udHJvbGxlci5mb3JtLnNldEFuY2hvclRpbWVGcm9tU3RyaW5nKCRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICAoY2xpY2spPVwiY29udHJvbGxlci5hbmNob3IucmVzZXRBbmNob3JUaW1lKClcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYW5jaG9yUmVhZE9ubHkoKSB8fCBwcmVzZW50ZXIuaXNBbmNob3JUaW1lTWlkbmlnaHQoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuICA8IS0tIHJlc3VsdCBpbnRlcnZhbCAtLT5cbiAgPGRpdiBjbGFzcz1cImxheW91dC1jb2wgcGxhY2UtY2VudGVyLWNlbnRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJkYXRlLWludGVydmFsIG1hdC1jYXB0aW9uIHB0LXhzXCI+XG4gICAgICBAaWYgKHByZXNlbnRlci5zdGFydERhdGVUaW1lQXNKU0RhdGUoKSkge1xuICAgICAgICB7eyBwcmVzZW50ZXIuc3RhcnREYXRlVGltZUFzSlNEYXRlKCkgfCBkYXRlOiAnZGQuTU0uIHksIEhIOm1tOnNzJyB9fVxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIHt7ICdpbnRlcnZhbFBpY2tlci5zdGFydERhdGVOb3RTZXQnIHwgdHJhbnNsYXRlIH19XG4gICAgICB9XG4gICAgICA8c3Bhbj4gLSA8L3NwYW4+XG4gICAgICBAaWYgKHByZXNlbnRlci5lbmREYXRlVGltZUFzSlNEYXRlKCkpIHtcbiAgICAgICAge3sgcHJlc2VudGVyLmVuZERhdGVUaW1lQXNKU0RhdGUoKSB8IGRhdGU6ICdkZC5NTS4geSwgSEg6bW06c3MnIH19XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAge3sgJ2ludGVydmFsUGlja2VyLmVuZERhdGVOb3RTZXQnIHwgdHJhbnNsYXRlIH19XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgPGRpdj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWNhcHRpb25cIj57eyBwcmVzZW50ZXIuZGVsdGFIdW1hblJlYWRhYmxlKCkgfHwgJyZuYnNwOycgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBnYXAtbGdcIj5cbiAgICA8YnV0dG9uXG4gICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIChjbGljayk9XCJjb250cm9sbGVyLmNsZWFySW50ZXJ2YWwoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiIXByZXNlbnRlci5pc1ZhbGlkSW50ZXJ2YWxTZXQoKVwiXG4gICAgPlxuICAgICAge3sgJ2ludGVydmFsUGlja2VyLmNsZWFyJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgQGlmICghdGhpcy5hdXRvRW1pdE1vZGUoKSkge1xuICAgICAgPGJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiY29udHJvbGxlci5tYW51YWxFbWl0KClcIj5cbiAgICAgICAge3sgJ2FjdGlvbnMub2snIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -22,10 +22,10 @@ export class ElderIntervalPickerBindingDirective {
|
|
|
22
22
|
this.intervalPickerToggleComponent.connectedIntervalInput = this.intervalInputComponent;
|
|
23
23
|
this.intervalInputComponent.isDefaultDatePickerDisabled = true;
|
|
24
24
|
}
|
|
25
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
26
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.
|
|
25
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ElderIntervalPickerBindingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
26
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ElderIntervalPickerBindingDirective, isStandalone: true, selector: "[elderIntervalPickerBinding]", queries: [{ propertyName: "intervalInputComponent", first: true, predicate: ElderIntervalInputComponent, descendants: true }, { propertyName: "intervalPickerToggleComponent", first: true, predicate: ElderIntervalPickerToggleComponent, descendants: true }], ngImport: i0 }); }
|
|
27
27
|
}
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ElderIntervalPickerBindingDirective, decorators: [{
|
|
29
29
|
type: Directive,
|
|
30
30
|
args: [{
|
|
31
31
|
selector: '[elderIntervalPickerBinding]',
|
|
@@ -38,4 +38,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
38
38
|
type: ContentChild,
|
|
39
39
|
args: [ElderIntervalPickerToggleComponent]
|
|
40
40
|
}] } });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItaW50ZXJ2YWwtcGlja2VyLWJpbmRpbmcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy90aW1lL2VsZGVyLWludGVydmFsLXBpY2tlci9pbnRlcnZhbC1waWNrZXItYmluZGluZy9lbGRlci1pbnRlcnZhbC1waWNrZXItYmluZGluZy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDdkQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkRBQTJELENBQUE7QUFDdkcsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sa0VBQWtFLENBQUE7O0FBTXJILE1BQU0sT0FBTyxtQ0FBbUM7SUFZOUM7Ozs7Z0ZBSTRFO0lBRTVFLGdCQUFlLENBQUM7SUFFaEI7Ozs7Z0ZBSTRFO0lBRXJFLGtCQUFrQjtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixJQUFJLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7WUFDeEUsT0FBTyxDQUFDLEtBQUssQ0FDWCw4SEFBOEgsQ0FDL0gsQ0FBQTtZQUNELE9BQU07UUFDUixDQUFDO1FBRUQsSUFBSSxDQUFDLDZCQUE2QixDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQTtRQUN2RixJQUFJLENBQUMsc0JBQXNCLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFBO0lBQ2hFLENBQUM7K0dBcENVLG1DQUFtQzttR0FBbkMsbUNBQW1DLDRJQU9oQywyQkFBMkIsZ0dBRTNCLGtDQUFrQzs7NEZBVHJDLG1DQUFtQztrQkFKL0MsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsOEJBQThCO29CQUN4QyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7d0RBU0Msc0JBQXNCO3NCQURyQixZQUFZO3VCQUFDLDJCQUEyQjtnQkFHekMsNkJBQTZCO3NCQUQ1QixZQUFZO3VCQUFDLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRlbnRDaGlsZCwgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEVsZGVySW50ZXJ2YWxJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2VsZGVyLWludGVydmFsLWlucHV0L2VsZGVyLWludGVydmFsLWlucHV0LmNvbXBvbmVudCdcbmltcG9ydCB7IEVsZGVySW50ZXJ2YWxQaWNrZXJUb2dnbGVDb21wb25lbnQgfSBmcm9tICcuLi9pbnRlcnZhbC1waWNrZXItdG9nZ2xlL2VsZGVyLWludGVydmFsLXBpY2tlci10b2dnbGUuY29tcG9uZW50J1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZWxkZXJJbnRlcnZhbFBpY2tlckJpbmRpbmddJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJJbnRlcnZhbFBpY2tlckJpbmRpbmdEaXJlY3RpdmUge1xuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBAQ29udGVudENoaWxkKEVsZGVySW50ZXJ2YWxJbnB1dENvbXBvbmVudClcbiAgaW50ZXJ2YWxJbnB1dENvbXBvbmVudDogRWxkZXJJbnRlcnZhbElucHV0Q29tcG9uZW50XG4gIEBDb250ZW50Q2hpbGQoRWxkZXJJbnRlcnZhbFBpY2tlclRvZ2dsZUNvbXBvbmVudClcbiAgaW50ZXJ2YWxQaWNrZXJUb2dnbGVDb21wb25lbnQ6IEVsZGVySW50ZXJ2YWxQaWNrZXJUb2dnbGVDb21wb25lbnRcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaW50ZXJ2YWxJbnB1dENvbXBvbmVudCB8fCAhdGhpcy5pbnRlcnZhbFBpY2tlclRvZ2dsZUNvbXBvbmVudCkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgJ0VsZGVySW50ZXJ2YWxQaWNrZXJCaW5kaW5nRGlyZWN0aXZlOiBCb3RoIGNvbXBvbmVudHMgYXJlIHJlcXVpcmVkLCBJbnRlcnZhbElucHV0Q29tcG9uZW50IGFuZCBJbnRlcnZhbFBpY2tlclRvZ2dsZUNvbXBvbmVudC4nXG4gICAgICApXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLmludGVydmFsUGlja2VyVG9nZ2xlQ29tcG9uZW50LmNvbm5lY3RlZEludGVydmFsSW5wdXQgPSB0aGlzLmludGVydmFsSW5wdXRDb21wb25lbnRcbiAgICB0aGlzLmludGVydmFsSW5wdXRDb21wb25lbnQuaXNEZWZhdWx0RGF0ZVBpY2tlckRpc2FibGVkID0gdHJ1ZVxuICB9XG59XG4iXX0=
|
|
@@ -53,8 +53,8 @@ export class ElderIntervalPickerToggleComponent {
|
|
|
53
53
|
handleIntervalPickerDateChange(interval) {
|
|
54
54
|
this.connectedIntervalInput.value = interval;
|
|
55
55
|
}
|
|
56
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
57
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.
|
|
56
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ElderIntervalPickerToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
57
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: ElderIntervalPickerToggleComponent, isStandalone: true, selector: "elder-interval-picker-toggle", inputs: { connectedIntervalInput: { classPropertyName: "connectedIntervalInput", publicName: "connectedIntervalInput", isSignal: false, isRequired: false, transformFunction: null }, showAnchor: { classPropertyName: "showAnchor", publicName: "showAnchor", isSignal: true, isRequired: false, transformFunction: null }, anchorReadOnly: { classPropertyName: "anchorReadOnly", publicName: "anchorReadOnly", isSignal: true, isRequired: false, transformFunction: null }, externalAnchorDateTime: { classPropertyName: "externalAnchorDateTime", publicName: "externalAnchorDateTime", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "connectedIntervalPicker", first: true, predicate: ["connectedIntervalPicker"], descendants: true }], ngImport: i0, template: `
|
|
58
58
|
<span style="padding-right: 8px">
|
|
59
59
|
<button
|
|
60
60
|
mat-icon-button
|
|
@@ -84,7 +84,7 @@ export class ElderIntervalPickerToggleComponent {
|
|
|
84
84
|
</elder-overlay>
|
|
85
85
|
`, isInline: true, dependencies: [{ kind: "component", type: ElderIntervalPickerComponent, selector: "elder-interval-picker", inputs: ["emitType", "autoEmitMode", "intervalInputMode", "showAnchor", "anchorReadOnly", "externalAnchorDateTime", "externalInterval"], outputs: ["intervalChange"] }, { kind: "component", type: ElderOverlayComponent, selector: "elder-overlay", inputs: ["originX", "originY", "overlayX", "overlayY", "offsetY", "offsetX", "backdrop", "backdropVisible", "origin", "positionStrategy", "overlaySize"], outputs: ["keydownEvents", "attachedChange"], exportAs: ["elderOverlay"] }, { kind: "component", type: ElderDialogPanelComponent, selector: "elder-dialog-panel" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: ElderOverlayTriggerDirective, selector: "[elderOverlayTrigger]", inputs: ["elderOverlayTrigger", "elderOverlayTriggerType", "elderOverlayTriggerEnabled"] }, { kind: "directive", type: ElderOverlayOriginDirective, selector: "[elderOverlayOrigin]", inputs: ["elderOverlayOrigin"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
86
86
|
}
|
|
87
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
87
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ElderIntervalPickerToggleComponent, decorators: [{
|
|
88
88
|
type: Component,
|
|
89
89
|
args: [{
|
|
90
90
|
selector: 'elder-interval-picker-toggle',
|
|
@@ -141,4 +141,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
141
141
|
}], disabled: [{
|
|
142
142
|
type: Input
|
|
143
143
|
}] } });
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItaW50ZXJ2YWwtcGlja2VyLXRvZ2dsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3RpbWUvZWxkZXItaW50ZXJ2YWwtcGlja2VyL2ludGVydmFsLXBpY2tlci10b2dnbGUvZWxkZXItaW50ZXJ2YWwtcGlja2VyLXRvZ2dsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDaEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUdwRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQTtBQUM5RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQTtBQUNoRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQTtBQUNqRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQTtBQUMzRyxPQUFPLEVBQ0wsMkJBQTJCLEdBRTVCLE1BQU0sMkRBQTJELENBQUE7QUFDbEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0NBQW9DLENBQUE7O0FBaURqRixNQUFNLE9BQU8sa0NBQWtDO0lBL0MvQztRQXdEbUIsUUFBRyxH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b3J0IHtcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIGlucHV0LFxuICBzaWduYWwsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE1hdEljb25CdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nXG5pbXBvcnQgeyBNYXRGb3JtRmllbGQsIE1hdExhYmVsLCBNYXRTdWZmaXggfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJ1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nXG5pbXBvcnQgeyBMb2dnZXJGYWN0b3J5IH0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInXG5pbXBvcnQgeyBUZW1wb3JhbCB9IGZyb20gJ0Bqcy10ZW1wb3JhbC9wb2x5ZmlsbCdcbmltcG9ydCB7IEludGVydmFsIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL3RpbWUvaW50ZXJ2YWwnXG5pbXBvcnQgeyBFbGRlck92ZXJsYXlPcmlnaW5EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9vdmVybGF5cy9lbGRlci1vdmVybGF5LW9yaWdpbi5kaXJlY3RpdmUnXG5pbXBvcnQgeyBFbGRlck92ZXJsYXlUcmlnZ2VyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vb3ZlcmxheXMvZWxkZXItb3ZlcmxheS10cmlnZ2VyLmRpcmVjdGl2ZSdcbmltcG9ydCB7IEVsZGVyT3ZlcmxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL292ZXJsYXlzL2VsZGVyLW92ZXJsYXkuY29tcG9uZW50J1xuaW1wb3J0IHsgRWxkZXJEaWFsb2dQYW5lbENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3BhbmVscy9lbGRlci1kaWFsb2ctcGFuZWwvZWxkZXItZGlhbG9nLXBhbmVsLmNvbXBvbmVudCdcbmltcG9ydCB7XG4gIEVsZGVySW50ZXJ2YWxJbnB1dENvbXBvbmVudCxcbiAgSW50ZXJ2YWxJbnB1dE1vZGUsXG59IGZyb20gJy4uLy4uL2VsZGVyLWludGVydmFsLWlucHV0L2VsZGVyLWludGVydmFsLWlucHV0LmNvbXBvbmVudCdcbmltcG9ydCB7IEVsZGVySW50ZXJ2YWxQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi9lbGRlci1pbnRlcnZhbC1waWNrZXIuY29tcG9uZW50J1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbGRlci1pbnRlcnZhbC1waWNrZXItdG9nZ2xlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEVsZGVySW50ZXJ2YWxQaWNrZXJDb21wb25lbnQsXG4gICAgRWxkZXJJbnRlcnZhbElucHV0Q29tcG9uZW50LFxuICAgIE1hdEZvcm1GaWVsZCxcbiAgICBNYXRMYWJlbCxcbiAgICBFbGRlck92ZXJsYXlDb21wb25lbnQsXG4gICAgRWxkZXJEaWFsb2dQYW5lbENvbXBvbmVudCxcbiAgICBNYXRJY29uLFxuICAgIE1hdEljb25CdXR0b24sXG4gICAgTWF0U3VmZml4LFxuICAgIEVsZGVyT3ZlcmxheVRyaWdnZXJEaXJlY3RpdmUsXG4gICAgRWxkZXJPdmVybGF5T3JpZ2luRGlyZWN0aXZlLFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxzcGFuIHN0eWxlPVwicGFkZGluZy1yaWdodDogOHB4XCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICBbZWxkZXJPdmVybGF5T3JpZ2luXT1cImRhdGVJbnRlcnZhbE92ZXJsYXlcIlxuICAgICAgICBbZWxkZXJPdmVybGF5VHJpZ2dlcl09XCJkYXRlSW50ZXJ2YWxPdmVybGF5XCJcbiAgICAgICAgY2xhc3M9XCJlbGRlci1jb250cm9sLWljb24tYnV0dG9uIG1hdC1kYXRlcGlja2VyLXRvZ2dsZVwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtaWNvbj5kYXRlX3JhbmdlPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvc3Bhbj5cblxuICAgIDxlbGRlci1vdmVybGF5ICNkYXRlSW50ZXJ2YWxPdmVybGF5PlxuICAgICAgPGVsZGVyLWRpYWxvZy1wYW5lbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBiLW1kIHB0LXhzXCI+XG4gICAgICAgICAgPGVsZGVyLWludGVydmFsLXBpY2tlclxuICAgICAgICAgICAgI2Nvbm5lY3RlZEludGVydmFsUGlja2VyXG4gICAgICAgICAgICBbaW50ZXJ2YWxJbnB1dE1vZGVdPVwiaW50ZXJ2YWxJbnB1dE1vZGUoKVwiXG4gICAgICAgICAgICAoaW50ZXJ2YWxDaGFuZ2UpPVwiaGFuZGxlSW50ZXJ2YWxQaWNrZXJEYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgW2V4dGVybmFsSW50ZXJ2YWxdPVwiZXh0ZXJuYWxJbnRlcnZhbCgpXCJcbiAgICAgICAgICAgIFtzaG93QW5jaG9yXT1cInNob3dBbmNob3IoKVwiXG4gICAgICAgICAgICBbYW5jaG9yUmVhZE9ubHldPVwiYW5jaG9yUmVhZE9ubHkoKVwiXG4gICAgICAgICAgICBbZXh0ZXJuYWxBbmNob3JEYXRlVGltZV09XCJleHRlcm5hbEFuY2hvckRhdGVUaW1lKClcIlxuICAgICAgICAgICAgW2VtaXRUeXBlXT1cImVtaXRUeXBlKClcIlxuICAgICAgICAgID48L2VsZGVyLWludGVydmFsLXBpY2tlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2VsZGVyLWRpYWxvZy1wYW5lbD5cbiAgICA8L2VsZGVyLW92ZXJsYXk+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBFbGRlckludGVydmFsUGlja2VyVG9nZ2xlQ29tcG9uZW50IHtcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQFZpZXdDaGlsZCgnY29ubmVjdGVkSW50ZXJ2YWxQaWNrZXInKSBjb25uZWN0ZWRJbnRlcnZhbFBpY2tlciE6IEVsZGVySW50ZXJ2YWxQaWNrZXJDb21wb25lbnRcblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSlcblxuICBASW5wdXQoKVxuICBjb25uZWN0ZWRJbnRlcnZhbElucHV0OiBFbGRlckludGVydmFsSW5wdXRDb21wb25lbnQgPSBudWxsXG5cbiAgcHVibGljIHJlYWRvbmx5IGludGVydmFsSW5wdXRNb2RlID0gc2lnbmFsPEludGVydmFsSW5wdXRNb2RlPignZGF0ZS10aW1lLXJhbmdlJylcbiAgcHVibGljIHJlYWRvbmx5IGVtaXRUeXBlID0gc2lnbmFsPCdpc28nIHwgJ2ludGVydmFsJz4oJ2ludGVydmFsJylcbiAgcHVibGljIHJlYWRvbmx5IGV4dGVybmFsSW50ZXJ2YWwgPSBzaWduYWw8SW50ZXJ2YWwgfCBudWxsPihudWxsKVxuXG4gIHNob3dBbmNob3IgPSBpbnB1dDxib29sZWFuPihmYWxzZSlcbiAgYW5jaG9yUmVhZE9ubHkgPSBpbnB1dDxib29sZWFuPihmYWxzZSlcbiAgZXh0ZXJuYWxBbmNob3JEYXRlVGltZSA9IGlucHV0PFRlbXBvcmFsLlBsYWluRGF0ZVRpbWUgfCBudWxsPihudWxsKVxuXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkID0gYm9vbGVhbkF0dHJpYnV0ZShmYWxzZSlcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbm5lY3RlZEludGVydmFsSW5wdXQpIHtcbiAgICAgIHRoaXMubG9nLmVycm9yKCdFbGRlckludGVydmFsUGlja2VyVG9nZ2xlQ29tcG9uZW50OiBjb25uZWN0ZWRJbnRlcnZhbElucHV0IGlzIHJlcXVpcmVkLicpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLmludGVydmFsSW5wdXRNb2RlLnNldCh0aGlzLmNvbm5lY3RlZEludGVydmFsSW5wdXQubW9kZSlcbiAgICB0aGlzLmVtaXRUeXBlLnNldCh0aGlzLmNvbm5lY3RlZEludGVydmFsSW5wdXQudmFsdWVBc0lzb1N0ciA/ICdpc28nIDogJ2ludGVydmFsJylcblxuICAgIHRoaXMuY29ubmVjdGVkSW50ZXJ2YWxJbnB1dC52YWx1ZUNoYW5nZS5zdWJzY3JpYmUoKGludGVydmFsOiBJbnRlcnZhbCB8IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5leHRlcm5hbEludGVydmFsLnNldChpbnRlcnZhbCBhcyBJbnRlcnZhbClcbiAgICB9KVxuXG4gICAgaWYgKHRoaXMuY29ubmVjdGVkSW50ZXJ2YWxJbnB1dC52YWx1ZSkge1xuICAgICAgLy8gdGhpcyBpcyBuZWNlc3NhcnkgdG8gc2V0IHRoZSB2YWx1ZSBvZiB0aGUgaW50ZXJ2YWwgcGlja2VyXG4gICAgICB0aGlzLmV4dGVybmFsSW50ZXJ2YWwuc2V0KHRoaXMuY29ubmVjdGVkSW50ZXJ2YWxJbnB1dC52YWx1ZSBhcyBJbnRlcnZhbClcbiAgICB9XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgc2V0Q29ubmVjdGVkSW50ZXJ2YWxJbnB1dChpbnRlcnZhbElucHV0OiBFbGRlckludGVydmFsSW5wdXRDb21wb25lbnQpOiB2b2lkIHtcbiAgICB0aGlzLmNvbm5lY3RlZEludGVydmFsSW5wdXQgPSBpbnRlcnZhbElucHV0XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlSW50ZXJ2YWxQaWNrZXJEYXRlQ2hhbmdlKGludGVydmFsOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmNvbm5lY3RlZEludGVydmFsSW5wdXQudmFsdWUgPSBpbnRlcnZhbFxuICB9XG59XG4iXX0=
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItaW50ZXJ2YWwtcGlja2VyLXRvZ2dsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3RpbWUvZWxkZXItaW50ZXJ2YWwtcGlja2VyL2ludGVydmFsLXBpY2tlci10b2dnbGUvZWxkZXItaW50ZXJ2YWwtcGlja2VyLXRvZ2dsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDaEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUdwRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQTtBQUM5RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQTtBQUNoRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQTtBQUNqRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQTtBQUMzRyxPQUFPLEVBQ0wsMkJBQTJCLEdBRTVCLE1BQU0sMkRBQTJELENBQUE7QUFDbEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0NBQW9DLENBQUE7O0FBaURqRixNQUFNLE9BQU8sa0NBQWtDO0lBL0MvQztRQXdEbUIsUUFBRyxH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b3J0IHtcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIGlucHV0LFxuICBzaWduYWwsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE1hdEljb25CdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nXG5pbXBvcnQgeyBNYXRGb3JtRmllbGQsIE1hdExhYmVsLCBNYXRTdWZmaXggfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJ1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nXG5pbXBvcnQgeyBMb2dnZXJGYWN0b3J5IH0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInXG5pbXBvcnQgeyBUZW1wb3JhbCB9IGZyb20gJ0Bqcy10ZW1wb3JhbC9wb2x5ZmlsbCdcbmltcG9ydCB7IEludGVydmFsIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL3RpbWUvaW50ZXJ2YWwnXG5pbXBvcnQgeyBFbGRlck92ZXJsYXlPcmlnaW5EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9vdmVybGF5cy9lbGRlci1vdmVybGF5LW9yaWdpbi5kaXJlY3RpdmUnXG5pbXBvcnQgeyBFbGRlck92ZXJsYXlUcmlnZ2VyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vb3ZlcmxheXMvZWxkZXItb3ZlcmxheS10cmlnZ2VyLmRpcmVjdGl2ZSdcbmltcG9ydCB7IEVsZGVyT3ZlcmxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL292ZXJsYXlzL2VsZGVyLW92ZXJsYXkuY29tcG9uZW50J1xuaW1wb3J0IHsgRWxkZXJEaWFsb2dQYW5lbENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3BhbmVscy9lbGRlci1kaWFsb2ctcGFuZWwvZWxkZXItZGlhbG9nLXBhbmVsLmNvbXBvbmVudCdcbmltcG9ydCB7XG4gIEVsZGVySW50ZXJ2YWxJbnB1dENvbXBvbmVudCxcbiAgSW50ZXJ2YWxJbnB1dE1vZGUsXG59IGZyb20gJy4uLy4uL2VsZGVyLWludGVydmFsLWlucHV0L2VsZGVyLWludGVydmFsLWlucHV0LmNvbXBvbmVudCdcbmltcG9ydCB7IEVsZGVySW50ZXJ2YWxQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi9lbGRlci1pbnRlcnZhbC1waWNrZXIuY29tcG9uZW50J1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbGRlci1pbnRlcnZhbC1waWNrZXItdG9nZ2xlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEVsZGVySW50ZXJ2YWxQaWNrZXJDb21wb25lbnQsXG4gICAgRWxkZXJJbnRlcnZhbElucHV0Q29tcG9uZW50LFxuICAgIE1hdEZvcm1GaWVsZCxcbiAgICBNYXRMYWJlbCxcbiAgICBFbGRlck92ZXJsYXlDb21wb25lbnQsXG4gICAgRWxkZXJEaWFsb2dQYW5lbENvbXBvbmVudCxcbiAgICBNYXRJY29uLFxuICAgIE1hdEljb25CdXR0b24sXG4gICAgTWF0U3VmZml4LFxuICAgIEVsZGVyT3ZlcmxheVRyaWdnZXJEaXJlY3RpdmUsXG4gICAgRWxkZXJPdmVybGF5T3JpZ2luRGlyZWN0aXZlLFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxzcGFuIHN0eWxlPVwicGFkZGluZy1yaWdodDogOHB4XCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICBbZWxkZXJPdmVybGF5T3JpZ2luXT1cImRhdGVJbnRlcnZhbE92ZXJsYXlcIlxuICAgICAgICBbZWxkZXJPdmVybGF5VHJpZ2dlcl09XCJkYXRlSW50ZXJ2YWxPdmVybGF5XCJcbiAgICAgICAgY2xhc3M9XCJlbGRlci1jb250cm9sLWljb24tYnV0dG9uIG1hdC1kYXRlcGlja2VyLXRvZ2dsZVwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtaWNvbj5kYXRlX3JhbmdlPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvc3Bhbj5cblxuICAgIDxlbGRlci1vdmVybGF5ICNkYXRlSW50ZXJ2YWxPdmVybGF5PlxuICAgICAgPGVsZGVyLWRpYWxvZy1wYW5lbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBiLW1kIHB0LXhzXCI+XG4gICAgICAgICAgPGVsZGVyLWludGVydmFsLXBpY2tlclxuICAgICAgICAgICAgI2Nvbm5lY3RlZEludGVydmFsUGlja2VyXG4gICAgICAgICAgICBbaW50ZXJ2YWxJbnB1dE1vZGVdPVwiaW50ZXJ2YWxJbnB1dE1vZGUoKVwiXG4gICAgICAgICAgICAoaW50ZXJ2YWxDaGFuZ2UpPVwiaGFuZGxlSW50ZXJ2YWxQaWNrZXJEYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgW2V4dGVybmFsSW50ZXJ2YWxdPVwiZXh0ZXJuYWxJbnRlcnZhbCgpXCJcbiAgICAgICAgICAgIFtzaG93QW5jaG9yXT1cInNob3dBbmNob3IoKVwiXG4gICAgICAgICAgICBbYW5jaG9yUmVhZE9ubHldPVwiYW5jaG9yUmVhZE9ubHkoKVwiXG4gICAgICAgICAgICBbZXh0ZXJuYWxBbmNob3JEYXRlVGltZV09XCJleHRlcm5hbEFuY2hvckRhdGVUaW1lKClcIlxuICAgICAgICAgICAgW2VtaXRUeXBlXT1cImVtaXRUeXBlKClcIlxuICAgICAgICAgID48L2VsZGVyLWludGVydmFsLXBpY2tlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2VsZGVyLWRpYWxvZy1wYW5lbD5cbiAgICA8L2VsZGVyLW92ZXJsYXk+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBFbGRlckludGVydmFsUGlja2VyVG9nZ2xlQ29tcG9uZW50IHtcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQFZpZXdDaGlsZCgnY29ubmVjdGVkSW50ZXJ2YWxQaWNrZXInKSBjb25uZWN0ZWRJbnRlcnZhbFBpY2tlciE6IEVsZGVySW50ZXJ2YWxQaWNrZXJDb21wb25lbnRcblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSlcblxuICBASW5wdXQoKVxuICBjb25uZWN0ZWRJbnRlcnZhbElucHV0OiBFbGRlckludGVydmFsSW5wdXRDb21wb25lbnQgPSBudWxsXG5cbiAgcHVibGljIHJlYWRvbmx5IGludGVydmFsSW5wdXRNb2RlID0gc2lnbmFsPEludGVydmFsSW5wdXRNb2RlPignZGF0ZS10aW1lLXJhbmdlJylcbiAgcHVibGljIHJlYWRvbmx5IGVtaXRUeXBlID0gc2lnbmFsPCdpc28nIHwgJ2ludGVydmFsJz4oJ2ludGVydmFsJylcbiAgcHVibGljIHJlYWRvbmx5IGV4dGVybmFsSW50ZXJ2YWwgPSBzaWduYWw8SW50ZXJ2YWwgfCBudWxsPihudWxsKVxuXG4gIHNob3dBbmNob3IgPSBpbnB1dDxib29sZWFuPihmYWxzZSlcbiAgYW5jaG9yUmVhZE9ubHkgPSBpbnB1dDxib29sZWFuPihmYWxzZSlcbiAgZXh0ZXJuYWxBbmNob3JEYXRlVGltZSA9IGlucHV0PFRlbXBvcmFsLlBsYWluRGF0ZVRpbWUgfCBudWxsPihudWxsKVxuXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkID0gYm9vbGVhbkF0dHJpYnV0ZShmYWxzZSlcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbm5lY3RlZEludGVydmFsSW5wdXQpIHtcbiAgICAgIHRoaXMubG9nLmVycm9yKCdFbGRlckludGVydmFsUGlja2VyVG9nZ2xlQ29tcG9uZW50OiBjb25uZWN0ZWRJbnRlcnZhbElucHV0IGlzIHJlcXVpcmVkLicpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLmludGVydmFsSW5wdXRNb2RlLnNldCh0aGlzLmNvbm5lY3RlZEludGVydmFsSW5wdXQubW9kZSlcbiAgICB0aGlzLmVtaXRUeXBlLnNldCh0aGlzLmNvbm5lY3RlZEludGVydmFsSW5wdXQudmFsdWVBc0lzb1N0ciA/ICdpc28nIDogJ2ludGVydmFsJylcblxuICAgIHRoaXMuY29ubmVjdGVkSW50ZXJ2YWxJbnB1dC52YWx1ZUNoYW5nZS5zdWJzY3JpYmUoKGludGVydmFsOiBJbnRlcnZhbCB8IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5leHRlcm5hbEludGVydmFsLnNldChpbnRlcnZhbCBhcyBJbnRlcnZhbClcbiAgICB9KVxuXG4gICAgaWYgKHRoaXMuY29ubmVjdGVkSW50ZXJ2YWxJbnB1dC52YWx1ZSkge1xuICAgICAgLy8gdGhpcyBpcyBuZWNlc3NhcnkgdG8gc2V0IHRoZSB2YWx1ZSBvZiB0aGUgaW50ZXJ2YWwgcGlja2VyXG4gICAgICB0aGlzLmV4dGVybmFsSW50ZXJ2YWwuc2V0KHRoaXMuY29ubmVjdGVkSW50ZXJ2YWxJbnB1dC52YWx1ZSBhcyBJbnRlcnZhbClcbiAgICB9XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgc2V0Q29ubmVjdGVkSW50ZXJ2YWxJbnB1dChpbnRlcnZhbElucHV0OiBFbGRlckludGVydmFsSW5wdXRDb21wb25lbnQpOiB2b2lkIHtcbiAgICB0aGlzLmNvbm5lY3RlZEludGVydmFsSW5wdXQgPSBpbnRlcnZhbElucHV0XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlSW50ZXJ2YWxQaWNrZXJEYXRlQ2hhbmdlKGludGVydmFsOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmNvbm5lY3RlZEludGVydmFsSW5wdXQudmFsdWUgPSBpbnRlcnZhbFxuICB9XG59XG4iXX0=
|