cmat 0.0.13 → 0.0.14
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/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.d.ts +0 -1
- package/components/cascade/cascade-menu/cascade-menu.component.d.ts +0 -1
- package/components/chip-input/chip-input.component.d.ts +0 -1
- package/components/custom-formly/public-api.d.ts +1 -0
- package/components/custom-formly/types/quill/quill.component.d.ts +42 -0
- package/components/custom-formly/types/repeat/repeat.component.d.ts +0 -1
- package/components/custom-formly/types/select/select.component.d.ts +0 -1
- package/components/custom-formly/types/stepper/horizontal/stepper.component.d.ts +0 -1
- package/components/custom-formly/types/stepper/vertical/stepper.component.d.ts +0 -1
- package/components/custom-formly/types/table/table.component.d.ts +0 -1
- package/components/custom-formly/types/tabs/tab.component.d.ts +0 -1
- package/components/custom-formly/types/tags/tags.component.d.ts +0 -1
- package/components/material-color-picker/material-color-picker.component.d.ts +0 -1
- package/components/material-datetimepicker/calendar-body.d.ts +0 -1
- package/components/material-datetimepicker/calendar.d.ts +3 -4
- package/components/material-datetimepicker/clock.d.ts +0 -1
- package/components/material-datetimepicker/datetimepicker.d.ts +3 -4
- package/components/material-datetimepicker/month-view.d.ts +0 -1
- package/components/pagination/pagination.component.d.ts +0 -1
- package/components/popover/popover.component.d.ts +3 -4
- package/components/popover/popover.interfaces.d.ts +1 -2
- package/components/select-tree/select-tree.component.d.ts +0 -1
- package/components/timeline/timeline.component.d.ts +3 -5
- package/components/transfer-picker/filter/filter.component.d.ts +0 -1
- package/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.d.ts +0 -1
- package/esm2022/components/adapter/datetime-adapter.mjs +1 -1
- package/esm2022/components/adapter/dayjs-date-adapter.mjs +4 -4
- package/esm2022/components/adapter/dayjs-datetime-adapter.mjs +4 -4
- package/esm2022/components/adapter/native-datetime-adapter.mjs +4 -4
- package/esm2022/components/breadcrumb/breadcrumb-item.directive.mjs +3 -3
- package/esm2022/components/breadcrumb/breadcrumb.component.mjs +5 -5
- package/esm2022/components/breadcrumb/breadcrumb.service.mjs +4 -4
- package/esm2022/components/card/card.component.mjs +4 -4
- package/esm2022/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.mjs +5 -8
- package/esm2022/components/cascade/cascade-list/cascade-list.component.mjs +4 -4
- package/esm2022/components/cascade/cascade-menu/cascade-menu.component.mjs +5 -8
- package/esm2022/components/chip-input/chip-input.component.mjs +6 -9
- package/esm2022/components/custom-formly/extension/addons.extension.mjs +1 -1
- package/esm2022/components/custom-formly/public-api.mjs +2 -1
- package/esm2022/components/custom-formly/types/button/button.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/cascade/cascade.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/checklist/checklist.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/chips/chips.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/color-picker/color-picker.component.mjs +3 -3
- package/esm2022/components/custom-formly/types/date-range/date-range.component.mjs +3 -3
- package/esm2022/components/custom-formly/types/datepicker/datepicker.component.mjs +3 -3
- package/esm2022/components/custom-formly/types/multicheckbox/multicheckbox.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/number/number.component.mjs +3 -3
- package/esm2022/components/custom-formly/types/quill/quill.component.mjs +171 -0
- package/esm2022/components/custom-formly/types/radio/radio.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/rating/rating.component.mjs +3 -3
- package/esm2022/components/custom-formly/types/repeat/repeat.component.mjs +5 -8
- package/esm2022/components/custom-formly/types/select/select.component.mjs +5 -8
- package/esm2022/components/custom-formly/types/select-tree/select-tree.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/stepper/horizontal/stepper.component.mjs +5 -8
- package/esm2022/components/custom-formly/types/stepper/vertical/stepper.component.mjs +5 -8
- package/esm2022/components/custom-formly/types/table/table.component.mjs +5 -8
- package/esm2022/components/custom-formly/types/tabs/tab.component.mjs +5 -8
- package/esm2022/components/custom-formly/types/tags/tags.component.mjs +5 -8
- package/esm2022/components/custom-formly/types/textarea/textarea.component.mjs +3 -3
- package/esm2022/components/custom-formly/types/upload/upload.component.mjs +4 -4
- package/esm2022/components/custom-formly/wrappers/addons/addons.component.mjs +4 -4
- package/esm2022/components/custom-formly/wrappers/card/card.component.mjs +3 -3
- package/esm2022/components/custom-formly/wrappers/expansion/expansion.component.mjs +3 -3
- package/esm2022/components/custom-formly/wrappers/panel/panel.component.mjs +3 -3
- package/esm2022/components/date-range/date-range.component.mjs +4 -4
- package/esm2022/components/drawer/drawer.component.mjs +4 -4
- package/esm2022/components/drawer/drawer.service.mjs +3 -3
- package/esm2022/components/fullscreen/fullscreen.component.mjs +4 -4
- package/esm2022/components/highlight/highlight.component.mjs +4 -4
- package/esm2022/components/highlight/highlight.service.mjs +4 -4
- package/esm2022/components/json-editor/json-editor.component.mjs +4 -4
- package/esm2022/components/masonry/masonry.component.mjs +4 -4
- package/esm2022/components/material-color-picker/material-color-picker.component.mjs +5 -8
- package/esm2022/components/material-datetimepicker/calendar-body.mjs +5 -8
- package/esm2022/components/material-datetimepicker/calendar.mjs +7 -13
- package/esm2022/components/material-datetimepicker/clock.mjs +5 -8
- package/esm2022/components/material-datetimepicker/datetimepicker-input.mjs +4 -4
- package/esm2022/components/material-datetimepicker/datetimepicker-intl.mjs +3 -3
- package/esm2022/components/material-datetimepicker/datetimepicker-toggle.mjs +7 -7
- package/esm2022/components/material-datetimepicker/datetimepicker.mjs +10 -11
- package/esm2022/components/material-datetimepicker/month-view.mjs +5 -8
- package/esm2022/components/material-datetimepicker/multi-year-view.mjs +4 -4
- package/esm2022/components/material-datetimepicker/time.mjs +7 -7
- package/esm2022/components/material-datetimepicker/year-view.mjs +4 -4
- package/esm2022/components/navigation/horizontal/components/basic/basic.component.mjs +3 -3
- package/esm2022/components/navigation/horizontal/components/branch/branch.component.mjs +5 -5
- package/esm2022/components/navigation/horizontal/components/divider/divider.component.mjs +3 -3
- package/esm2022/components/navigation/horizontal/components/spacer/spacer.component.mjs +3 -3
- package/esm2022/components/navigation/horizontal/horizontal.component.mjs +5 -5
- package/esm2022/components/navigation/navigation.service.mjs +4 -4
- package/esm2022/components/navigation/vertical/components/aside/aside.component.mjs +5 -5
- package/esm2022/components/navigation/vertical/components/basic/basic.component.mjs +3 -3
- package/esm2022/components/navigation/vertical/components/collapsable/collapsable.component.mjs +5 -5
- package/esm2022/components/navigation/vertical/components/divider/divider.component.mjs +3 -3
- package/esm2022/components/navigation/vertical/components/group/group.component.mjs +5 -5
- package/esm2022/components/navigation/vertical/components/spacer/spacer.component.mjs +3 -3
- package/esm2022/components/navigation/vertical/vertical.component.mjs +5 -5
- package/esm2022/components/pagination/pagination.component.mjs +5 -8
- package/esm2022/components/pagination/pagination.directive.mjs +4 -4
- package/esm2022/components/pagination/pagination.pipe.mjs +4 -4
- package/esm2022/components/pagination/pagination.service.mjs +4 -4
- package/esm2022/components/password-strength/mat-pass-toggle-visibility/mat-pass-toggle-visibility.component.mjs +3 -3
- package/esm2022/components/password-strength/mat-password-strength/mat-password-strength.component.mjs +4 -4
- package/esm2022/components/password-strength/mat-password-strength-info/mat-password-strength-info.component.mjs +4 -4
- package/esm2022/components/password-strength/mat-password-strength-validator.mjs +1 -1
- package/esm2022/components/popover/popover-trigger.mjs +6 -8
- package/esm2022/components/popover/popover.component.mjs +6 -7
- package/esm2022/components/popover/popover.interfaces.mjs +1 -1
- package/esm2022/components/popover/popover.target.mjs +3 -3
- package/esm2022/components/progress-bar/progress-bar.component.mjs +4 -4
- package/esm2022/components/rating/rating.component.mjs +5 -5
- package/esm2022/components/select-search/select-no-entries-found.directive.mjs +3 -3
- package/esm2022/components/select-search/select-search-clear.directive.mjs +3 -3
- package/esm2022/components/select-search/select-search.component.mjs +4 -4
- package/esm2022/components/select-tree/select-tree.component.mjs +5 -8
- package/esm2022/components/timeline/timeline-item/timeline-item.component.mjs +9 -9
- package/esm2022/components/timeline/timeline.component.mjs +7 -11
- package/esm2022/components/toast/toast-modal.component.mjs +4 -4
- package/esm2022/components/toast/toast.component.mjs +5 -5
- package/esm2022/components/toast/toast.service.mjs +4 -4
- package/esm2022/components/transfer-picker/filter/filter.component.mjs +5 -8
- package/esm2022/components/transfer-picker/search/search.component.mjs +3 -3
- package/esm2022/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.mjs +4 -4
- package/esm2022/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.mjs +5 -8
- package/esm2022/components/transfer-picker/transfer-picker.component.mjs +4 -4
- package/esm2022/components/transfer-picker/transfer-picker.service.mjs +4 -4
- package/esm2022/components/upload/files.util.service.mjs +4 -4
- package/esm2022/components/upload/upload-queue/upload-queue.component.mjs +4 -4
- package/esm2022/components/upload/upload.component.mjs +4 -4
- package/esm2022/directives/animate-on-scroll/animate-on-scroll.directive.mjs +4 -4
- package/esm2022/directives/animate-on-scroll/scroll.service.mjs +3 -3
- package/esm2022/directives/autofocus/autofocus.directive.mjs +3 -3
- package/esm2022/directives/debounce/abstract-debounce.directive.mjs +3 -3
- package/esm2022/directives/debounce/debounce-click.directive.mjs +3 -3
- package/esm2022/directives/debounce/debounce-keyup.directive.mjs +3 -3
- package/esm2022/directives/digit-only/digit-only.directive.mjs +4 -4
- package/esm2022/directives/digit-only/mask.directive.mjs +4 -4
- package/esm2022/directives/equal-validator/equal-validator.directive.mjs +4 -4
- package/esm2022/lib/mock-api/mock-api.interceptor.mjs +4 -4
- package/esm2022/lib/mock-api/mock-api.request-handler.mjs +1 -1
- package/esm2022/lib/mock-api/mock-api.service.mjs +4 -4
- package/esm2022/lib/mock-api/mock-api.utils.mjs +1 -1
- package/esm2022/pipes/bytes/bytes.pipe.mjs +4 -4
- package/esm2022/pipes/date-format/date-format.pipe.mjs +3 -3
- package/esm2022/pipes/find-by-key/find-by-key.pipe.mjs +4 -4
- package/esm2022/pipes/group-by/group-by.pipe.mjs +4 -4
- package/esm2022/pipes/keys/keys.pipe.mjs +4 -4
- package/esm2022/pipes/secure/secure-pipe.mjs +3 -3
- package/esm2022/pipes/uppercase/uppercase.pipe.mjs +3 -3
- package/esm2022/services/alert/alert.service.mjs +4 -4
- package/esm2022/services/config/config.service.mjs +3 -3
- package/esm2022/services/config/urlStateConfig.service.mjs +3 -3
- package/esm2022/services/confirmation/confirmation.service.mjs +3 -3
- package/esm2022/services/confirmation/dialog/dialog.component.mjs +3 -3
- package/esm2022/services/data/data.service.mjs +4 -4
- package/esm2022/services/loading/loading.interceptor.mjs +4 -4
- package/esm2022/services/loading/loading.service.mjs +4 -4
- package/esm2022/services/local-storage/local-storage.service.mjs +3 -3
- package/esm2022/services/media-watcher/media-watcher.service.mjs +4 -4
- package/esm2022/services/platform/platform.service.mjs +4 -4
- package/esm2022/services/splash-screen/splash-screen.service.mjs +3 -3
- package/esm2022/services/title/title.service.mjs +4 -4
- package/esm2022/services/translation/translation.service.mjs +4 -4
- package/esm2022/services/utils/utils.service.mjs +4 -4
- package/esm2022/validators/validators.mjs +1 -1
- package/fesm2022/cmat-animations.mjs +1 -1
- package/fesm2022/cmat-components-adapter.mjs +9 -9
- package/fesm2022/cmat-components-adapter.mjs.map +1 -1
- package/fesm2022/cmat-components-breadcrumb.mjs +10 -10
- package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/cmat-components-card.mjs +3 -3
- package/fesm2022/cmat-components-card.mjs.map +1 -1
- package/fesm2022/cmat-components-cascade.mjs +11 -17
- package/fesm2022/cmat-components-cascade.mjs.map +1 -1
- package/fesm2022/cmat-components-chip-input.mjs +5 -8
- package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
- package/fesm2022/cmat-components-custom-formly.mjs +248 -104
- package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
- package/fesm2022/cmat-components-date-range.mjs +4 -4
- package/fesm2022/cmat-components-date-range.mjs.map +1 -1
- package/fesm2022/cmat-components-drawer.mjs +7 -7
- package/fesm2022/cmat-components-drawer.mjs.map +1 -1
- package/fesm2022/cmat-components-fullscreen.mjs +3 -3
- package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
- package/fesm2022/cmat-components-highlight.mjs +6 -6
- package/fesm2022/cmat-components-highlight.mjs.map +1 -1
- package/fesm2022/cmat-components-json-editor.mjs +3 -3
- package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
- package/fesm2022/cmat-components-masonry.mjs +3 -3
- package/fesm2022/cmat-components-masonry.mjs.map +1 -1
- package/fesm2022/cmat-components-material-color-picker.mjs +4 -7
- package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
- package/fesm2022/cmat-components-material-datetimepicker.mjs +53 -68
- package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
- package/fesm2022/cmat-components-navigation.mjs +46 -46
- package/fesm2022/cmat-components-navigation.mjs.map +1 -1
- package/fesm2022/cmat-components-pagination.mjs +13 -16
- package/fesm2022/cmat-components-pagination.mjs.map +1 -1
- package/fesm2022/cmat-components-password-strength.mjs +10 -10
- package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
- package/fesm2022/cmat-components-popover.mjs +13 -16
- package/fesm2022/cmat-components-popover.mjs.map +1 -1
- package/fesm2022/cmat-components-progress-bar.mjs +3 -3
- package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
- package/fesm2022/cmat-components-rating.mjs +4 -4
- package/fesm2022/cmat-components-rating.mjs.map +1 -1
- package/fesm2022/cmat-components-select-search.mjs +10 -10
- package/fesm2022/cmat-components-select-search.mjs.map +1 -1
- package/fesm2022/cmat-components-select-tree.mjs +4 -7
- package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
- package/fesm2022/cmat-components-timeline.mjs +15 -19
- package/fesm2022/cmat-components-timeline.mjs.map +1 -1
- package/fesm2022/cmat-components-toast.mjs +10 -10
- package/fesm2022/cmat-components-toast.mjs.map +1 -1
- package/fesm2022/cmat-components-transfer-picker.mjs +20 -26
- package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
- package/fesm2022/cmat-components-upload.mjs +9 -9
- package/fesm2022/cmat-components-upload.mjs.map +1 -1
- package/fesm2022/cmat-directives-animate-on-scroll.mjs +6 -6
- package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -1
- package/fesm2022/cmat-directives-autofocus.mjs +3 -3
- package/fesm2022/cmat-directives-debounce.mjs +9 -9
- package/fesm2022/cmat-directives-digit-only.mjs +6 -6
- package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
- package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
- package/fesm2022/cmat-directives-equal-validator.mjs.map +1 -1
- package/fesm2022/cmat-lib-mock-api.mjs +7 -7
- package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
- package/fesm2022/cmat-pipes-bytes.mjs +3 -3
- package/fesm2022/cmat-pipes-bytes.mjs.map +1 -1
- package/fesm2022/cmat-pipes-date-format.mjs +3 -3
- package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
- package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -1
- package/fesm2022/cmat-pipes-group-by.mjs +3 -3
- package/fesm2022/cmat-pipes-group-by.mjs.map +1 -1
- package/fesm2022/cmat-pipes-keys.mjs +3 -3
- package/fesm2022/cmat-pipes-keys.mjs.map +1 -1
- package/fesm2022/cmat-pipes-secure.mjs +3 -3
- package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
- package/fesm2022/cmat-services-alert.mjs +3 -3
- package/fesm2022/cmat-services-alert.mjs.map +1 -1
- package/fesm2022/cmat-services-config.mjs +6 -6
- package/fesm2022/cmat-services-confirmation.mjs +6 -6
- package/fesm2022/cmat-services-data.mjs +3 -3
- package/fesm2022/cmat-services-data.mjs.map +1 -1
- package/fesm2022/cmat-services-loading.mjs +6 -6
- package/fesm2022/cmat-services-loading.mjs.map +1 -1
- package/fesm2022/cmat-services-local-storage.mjs +3 -3
- package/fesm2022/cmat-services-media-watcher.mjs +3 -3
- package/fesm2022/cmat-services-media-watcher.mjs.map +1 -1
- package/fesm2022/cmat-services-platform.mjs +3 -3
- package/fesm2022/cmat-services-platform.mjs.map +1 -1
- package/fesm2022/cmat-services-splash-screen.mjs +3 -3
- package/fesm2022/cmat-services-title.mjs +3 -3
- package/fesm2022/cmat-services-title.mjs.map +1 -1
- package/fesm2022/cmat-services-translation.mjs +3 -3
- package/fesm2022/cmat-services-translation.mjs.map +1 -1
- package/fesm2022/cmat-services-utils.mjs +3 -3
- package/fesm2022/cmat-services-utils.mjs.map +1 -1
- package/fesm2022/cmat-validators.mjs.map +1 -1
- package/package.json +111 -102
- package/styles/overrides/angular-material.scss +0 -1
- package/styles/overrides/quill.scss +102 -0
- package/styles/themes.scss +19 -19
|
@@ -129,10 +129,10 @@ export class CmatDatetimepickerMultiYearViewComponent {
|
|
|
129
129
|
_getValidDateOrNull(obj) {
|
|
130
130
|
return (this.adapter.isDateInstance(obj) && this.adapter.isValid(obj)) ? obj : null;
|
|
131
131
|
}
|
|
132
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
133
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
132
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatDatetimepickerMultiYearViewComponent, deps: [{ token: i1.DatetimeAdapter, optional: true }, { token: CMAT_DATETIME_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
133
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.0", type: CmatDatetimepickerMultiYearViewComponent, isStandalone: true, selector: "cmat-datetimepicker-multi-year-view", inputs: { type: "type", dateFilter: "dateFilter", activeDate: "activeDate", selected: "selected", minDate: "minDate", maxDate: "maxDate" }, outputs: { userSelection: "userSelection", selectedChange: "selectedChange" }, exportAs: ["cmatDatetimepickerMultiYearView"], ngImport: i0, template: "<table class=\"cmat-datetimepicker-calendar-table\">\r\n <thead class=\"cmat-datetimepicker-calendar-table-header\"></thead>\r\n <tbody (@slideCalendar.done)=\"calendarStateDone()\" (selectedValueChange)=\"yearSelected($event)\"\r\n [@slideCalendar]=\"calendarState\" [activeCell]=\"getActiveCell()\" [numCols]=\"4\" [rows]=\"years\"\r\n [selectedValue]=\"selectedYear\" [todayValue]=\"todayYear\" [allowDisabledSelection]=\"true\"\r\n cmat-datetimepicker-calendar-body role=\"grid\"></tbody>\r\n</table>", dependencies: [{ kind: "component", type: CmatDatetimepickerCalendarBodyComponent, selector: "[cmat-datetimepicker-calendar-body]", inputs: ["label", "rows", "todayValue", "selectedValue", "labelMinRequiredCells", "numCols", "allowDisabledSelection", "activeCell"], outputs: ["selectedValueChange"], exportAs: ["cmatDatetimepickerCalendarBody"] }], animations: [slideCalendar], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
134
134
|
}
|
|
135
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
135
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatDatetimepickerMultiYearViewComponent, decorators: [{
|
|
136
136
|
type: Component,
|
|
137
137
|
args: [{ selector: 'cmat-datetimepicker-multi-year-view', animations: [slideCalendar], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatDatetimepickerMultiYearView', standalone: true, imports: [CmatDatetimepickerCalendarBodyComponent], template: "<table class=\"cmat-datetimepicker-calendar-table\">\r\n <thead class=\"cmat-datetimepicker-calendar-table-header\"></thead>\r\n <tbody (@slideCalendar.done)=\"calendarStateDone()\" (selectedValueChange)=\"yearSelected($event)\"\r\n [@slideCalendar]=\"calendarState\" [activeCell]=\"getActiveCell()\" [numCols]=\"4\" [rows]=\"years\"\r\n [selectedValue]=\"selectedYear\" [todayValue]=\"todayYear\" [allowDisabledSelection]=\"true\"\r\n cmat-datetimepicker-calendar-body role=\"grid\"></tbody>\r\n</table>" }]
|
|
138
138
|
}], ctorParameters: () => [{ type: i1.DatetimeAdapter, decorators: [{
|
|
@@ -194,4 +194,4 @@ function getStartingYear(dateAdapter, minDate, maxDate) {
|
|
|
194
194
|
function euclideanModulo(a, b) {
|
|
195
195
|
return (a % b + b) % b;
|
|
196
196
|
}
|
|
197
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGkteWVhci12aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL21hdGVyaWFsLWRhdGV0aW1lcGlja2VyL211bHRpLXllYXItdmlldy50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9tYXRlcmlhbC1kYXRldGltZXBpY2tlci9tdWx0aS15ZWFyLXZpZXcuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUscUJBQXFCLEVBQXdDLE1BQU0seUJBQXlCLENBQUM7QUFDdEcsT0FBTyxFQUFFLHVDQUF1QyxFQUFHLHVDQUF1QyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFJckUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUUvQixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBRTdCOztHQUVHO0FBV0gsTUFBTSxPQUFPLHdDQUF3QztJQTRCakQsWUFBK0IsT0FBMkIsRUFDSCxZQUFpQztRQUR6RCxZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUNILGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQTNCOUUsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTFDLFNBQUksR0FBMkIsTUFBTSxDQUFDO1FBRy9DLDBDQUEwQztRQUNoQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFLLENBQUM7UUFzQjdDLElBQUks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aUIsRUFBRSxPQUFpQjtJQUNyRSxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDckIsSUFBSSxPQUFPLEVBQUU7UUFDVCxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLFlBQVksR0FBRyxPQUFPLEdBQUcsWUFBWSxHQUFHLENBQUMsQ0FBQztLQUM3QztTQUFNLElBQUksT0FBTyxFQUFFO1FBQ2hCLFlBQVksR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQy9DO0lBQ0QsT0FBTyxZQUFZLENBQUM7QUFDeEIsQ0FBQztBQUVELDRFQUE0RTtBQUM1RSxTQUFTLGVBQWUsQ0FBQyxDQUFTLEVBQUUsQ0FBUztJQUN6QyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQge1xyXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSW5qZWN0LFxyXG4gICAgSW5wdXQsXHJcbiAgICBPcHRpb25hbCxcclxuICAgIE91dHB1dCxcclxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENNQVRfREFURVRJTUVfRk9STUFUUywgQ21hdERhdGV0aW1lRm9ybWF0cywgRGF0ZXRpbWVBZGFwdGVyIH0gZnJvbSAnY21hdC9jb21wb25lbnRzL2FkYXB0ZXInO1xyXG5pbXBvcnQgeyBDbWF0RGF0ZXRpbWVwaWNrZXJDYWxlbmRhckNlbGxDb21wb25lbnQgLCBDbWF0RGF0ZXRpbWVwaWNrZXJDYWxlbmRhckJvZHlDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyLWJvZHknO1xyXG5pbXBvcnQgeyBzbGlkZUNhbGVuZGFyIH0gZnJvbSAnLi9kYXRldGltZXBpY2tlci1hbmltYXRpb25zJztcclxuaW1wb3J0IHsgY3JlYXRlTWlzc2luZ0RhdGVJbXBsRXJyb3IgfSBmcm9tICcuL2RhdGV0aW1lcGlja2VyLWVycm9ycyc7XHJcbmltcG9ydCB7IENtYXREYXRldGltZXBpY2tlclR5cGUgfSBmcm9tICcuL2RhdGV0aW1lcGlja2VyLXR5cGVzJztcclxuXHJcblxyXG5leHBvcnQgY29uc3QgeWVhcnNQZXJQYWdlID0gMjQ7XHJcblxyXG5leHBvcnQgY29uc3QgeWVhcnNQZXJSb3cgPSA0O1xyXG5cclxuLyoqXHJcbiAqIEFuIGludGVybmFsIGNvbXBvbmVudCB1c2VkIHRvIGRpc3BsYXkgbXVsdGlwbGUgeWVhcnMgaW4gdGhlIGRhdGVwaWNrZXIuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY21hdC1kYXRldGltZXBpY2tlci1tdWx0aS15ZWFyLXZpZXcnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICdtdWx0aS15ZWFyLXZpZXcuaHRtbCcsXHJcbiAgICBhbmltYXRpb25zOiBbc2xpZGVDYWxlbmRhcl0sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBleHBvcnRBczogJ2NtYXREYXRldGltZXBpY2tlck11bHRpWWVhclZpZXcnLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtDbWF0RGF0ZXRpbWVwaWNrZXJDYWxlbmRhckJvZHlDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0RGF0ZXRpbWVwaWNrZXJNdWx0aVllYXJWaWV3Q29tcG9uZW50PEQ+IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XHJcblxyXG4gICAgQE91dHB1dCgpIHVzZXJTZWxlY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgQElucHV0KCkgdHlwZTogQ21hdERhdGV0aW1lcGlja2VyVHlwZSA9ICdkYXRlJztcclxuICAgIC8qKiBBIGZ1bmN0aW9uIHVzZWQgdG8gZmlsdGVyIHdoaWNoIGRhdGVzIGFyZSBzZWxlY3RhYmxlLiAqL1xyXG4gICAgQElucHV0KCkgZGF0ZUZpbHRlcjogKGRhdGU6IEQpID0+IGJvb2xlYW47XHJcbiAgICAvKiogRW1pdHMgd2hlbiBhIG5ldyBtb250aCBpcyBzZWxlY3RlZC4gKi9cclxuICAgIEBPdXRwdXQoKSBzZWxlY3RlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RD4oKTtcclxuICAgIC8qKiBHcmlkIG9mIGNhbGVuZGFyIGNlbGxzIHJlcHJlc2VudGluZyB0aGUgeWVhcnMgaW4gdGhlIHJhbmdlLiAqL1xyXG4gICAgeWVhcnM6IENtYXREYXRldGltZXBpY2tlckNhbGVuZGFyQ2VsbENvbXBvbmVudFtdW107XHJcbiAgICAvKiogVGhlIGxhYmVsIGZvciB0aGlzIHllYXIgcmFuZ2UgKGUuZy4gXCIyMDAwLTIwMjBcIikuICovXHJcbiAgICB5ZWFyTGFiZWw6IHN0cmluZztcclxuICAgIC8qKiBUaGUgeWVhciBpbiB0aGlzIHJhbmdlIHRoYXQgdG9kYXkgZmFsbHMgb24uIE51bGwgaWYgdG9kYXkgaXMgaW4gYSBkaWZmZXJlbnQgcmFuZ2UuICovXHJcbiAgICB0b2RheVllYXI6IG51bWJlcjtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIHllYXIgaW4gdGhpcyByYW5nZSB0aGF0IHRoZSBzZWxlY3RlZCBEYXRlIGZhbGxzIG9uLlxyXG4gICAgICogTnVsbCBpZiB0aGUgc2VsZWN0ZWQgRGF0ZSBpcyBpbiBhIGRpZmZlcmVudCByYW5nZS5cclxuICAgICAqL1xyXG4gICAgc2VsZWN0ZWRZZWFyOiBudW1iZXIgfCBudWxsO1xyXG4gICAgY2FsZW5kYXJTdGF0ZTogc3RyaW5nO1xyXG5cclxuXHJcbiAgICBwcml2YXRlIF9hY3RpdmVEYXRlOiBEO1xyXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWQ6IEQ7XHJcbiAgICBwcml2YXRlIF9taW5EYXRlOiBEIHwgbnVsbDtcclxuICAgIHByaXZhdGUgX21heERhdGU6IEQgfCBudWxsO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHB1YmxpYyBhZGFwdGVyOiBEYXRldGltZUFkYXB0ZXI8RD4sXHJcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChDTUFUX0RBVEVUSU1FX0ZPUk1BVFMpIHByaXZhdGUgX2RhdGVGb3JtYXRzOiBDbWF0RGF0ZXRpbWVGb3JtYXRzKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmFkYXB0ZXIpIHtcclxuICAgICAgICAgICAgdGhyb3cgY3JlYXRlTWlzc2luZ0RhdGVJbXBsRXJyb3IoJ0NEYXRldGltZUFkYXB0ZXInKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5fZGF0ZUZvcm1hdHMpIHtcclxuICAgICAgICAgICAgdGhyb3cgY3JlYXRlTWlzc2luZ0RhdGVJbXBsRXJyb3IoJ0NNQVRfREFURVRJTUVfRk9STUFUUycpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fYWN0aXZlRGF0ZSA9IHRoaXMuYWRhcHRlci50b2RheSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBUaGUgZGF0ZSB0byBkaXNwbGF5IGluIHRoaXMgbXVsdGkgeWVhciB2aWV3Ki9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgYWN0aXZlRGF0ZSgpOiBEIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlRGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXQgYWN0aXZlRGF0ZSh2YWx1ZTogRCkge1xyXG4gICAgICAgIGNvbnN0IG9sZEFjdGl2ZURhdGUgPSB0aGlzLl9hY3RpdmVEYXRlO1xyXG4gICAgICAgIHRoaXMuX2FjdGl2ZURhdGUgPSB2YWx1ZSB8fCB0aGlzLmFkYXB0ZXIudG9kYXkoKTtcclxuICAgICAgICBpZiAob2xkQWN0aXZlRGF0ZSAmJiB0aGlzLl9hY3RpdmVEYXRlICYmXHJcbiAgICAgICAgICAgICFpc1NhbWVNdWx0aVllYXJWaWV3KHRoaXMuYWRhcHRlciwgb2xkQWN0aXZlRGF0ZSwgdGhpcy5fYWN0aXZlRGF0ZSwgdGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2luaXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvKiogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBkYXRlLiAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgc2VsZWN0ZWQoKTogRCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBzZWxlY3RlZCh2YWx1ZTogRCkge1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFllYXIgPSB0aGlzLl9zZWxlY3RlZCAmJiB0aGlzLmFkYXB0ZXIuZ2V0WWVhcih0aGlzLl9zZWxlY3RlZCk7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvKiogVGhlIG1pbmltdW0gc2VsZWN0YWJsZSBkYXRlLiAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgbWluRGF0ZSgpOiBEIHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX21pbkRhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IG1pbkRhdGUodmFsdWU6IEQgfCBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5fbWluRGF0ZSA9IHRoaXMuX2dldFZhbGlkRGF0ZU9yTnVsbCh0aGlzLmFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpKTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIC8qKiBUaGUgbWF4aW11bSBzZWxlY3RhYmxlIGRhdGUuICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBtYXhEYXRlKCk6IEQgfCBudWxsIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbWF4RGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXQgbWF4RGF0ZSh2YWx1ZTogRCB8IG51bGwpIHtcclxuICAgICAgICB0aGlzLl9tYXhEYXRlID0gdGhpcy5fZ2V0VmFsaWREYXRlT3JOdWxsKHRoaXMuYWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9pbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEhhbmRsZXMgd2hlbiBhIG5ldyB5ZWFyIGlzIHNlbGVjdGVkLiAqL1xyXG4gICAgeWVhclNlbGVjdGVkKHllYXI6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IG1vbnRoID0gdGhpcy5hZGFwdGVyLmdldE1vbnRoKHRoaXMuYWN0aXZlRGF0ZSk7XHJcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZERhdGUgPSB0aGlzLmFkYXB0ZXIuY3JlYXRlRGF0ZXRpbWUoeWVhciwgbW9udGgsIDEsIDAsIDApO1xyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQodGhpcy5hZGFwdGVyLmNyZWF0ZURhdGV0aW1lKFxyXG4gICAgICAgICAgICB5ZWFyLFxyXG4gICAgICAgICAgICBtb250aCxcclxuICAgICAgICAgICAgTWF0aC5taW4odGhpcy5hZGFwdGVyLmdldERhdGUodGhpcy5hY3RpdmVEYXRlKSxcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRhcHRlci5nZXROdW1EYXlzSW5Nb250aChub3JtYWxpemVkRGF0ZSkpLFxyXG4gICAgICAgICAgICB0aGlzLmFkYXB0ZXIuZ2V0SG91cih0aGlzLmFjdGl2ZURhdGUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkYXB0ZXIuZ2V0TWludXRlKHRoaXMuYWN0aXZlRGF0ZSkpKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ3llYXInKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXNlclNlbGVjdGlvbi5lbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldEFjdGl2ZUNlbGwoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gZ2V0QWN0aXZlT2Zmc2V0KHRoaXMuYWRhcHRlciwgdGhpcy5hY3RpdmVEYXRlLCB0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2FsZW5kYXJTdGF0ZURvbmUoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jYWxlbmRhclN0YXRlID0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEluaXRpYWxpemVzIHRoaXMgeWVhciB2aWV3LiAqL1xyXG4gICAgcHJpdmF0ZSBfaW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICAgICAgdGhpcy50b2RheVllYXIgPSB0aGlzLmFkYXB0ZXIuZ2V0WWVhcih0aGlzLmFkYXB0ZXIudG9kYXkoKSk7XHJcbiAgICAgICAgdGhpcy55ZWFyTGFiZWwgPSB0aGlzLmFkYXB0ZXIuZ2V0WWVhck5hbWUodGhpcy5hY3RpdmVEYXRlKTtcclxuXHJcblxyXG4gICAgICAgIGNvbnN0IGFjdGl2ZVllYXIgPSB0aGlzLmFkYXB0ZXIuZ2V0WWVhcih0aGlzLmFjdGl2ZURhdGUpO1xyXG5cclxuICAgICAgICBjb25zdCBtaW5ZZWFyT2ZQYWdlID0gYWN0aXZlWWVhciAtIGdldEFjdGl2ZU9mZnNldChcclxuICAgICAgICAgICAgdGhpcy5hZGFwdGVyLCB0aGlzLmFjdGl2ZURhdGUsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlKTtcclxuXHJcbiAgICAgICAgdGhpcy55ZWFycyA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCByb3c6IG51bWJlcltdID0gW107IGkgPCB5ZWFyc1BlclBhZ2U7IGkrKykge1xyXG4gICAgICAgICAgICByb3cucHVzaChtaW5ZZWFyT2ZQYWdlICsgaSk7XHJcbiAgICAgICAgICAgIGlmIChyb3cubGVuZ3RoID09PSB5ZWFyc1BlclJvdykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy55ZWFycy5wdXNoKHJvdy5tYXAoeWVhciA9PiB0aGlzLl9jcmVhdGVDZWxsRm9yWWVhcih5ZWFyKSkpO1xyXG4gICAgICAgICAgICAgICAgcm93ID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIENyZWF0ZXMgYW4gTWF0RGF0ZXRpbWVwaWNrZXJDYWxlbmRhckNlbGwgZm9yIHRoZSBnaXZlbiB5ZWFyLiAqL1xyXG4gICAgcHJpdmF0ZSBfY3JlYXRlQ2VsbEZvclllYXIoeWVhcjogbnVtYmVyKTogQ21hdERhdGV0aW1lcGlja2VyQ2FsZW5kYXJDZWxsQ29tcG9uZW50IHtcclxuICAgICAgICBjb25zdCB5ZWFyTmFtZSA9IHRoaXMuYWRhcHRlci5nZXRZZWFyTmFtZSh0aGlzLmFkYXB0ZXIuY3JlYXRlRGF0ZSh5ZWFyLCAwLCAxKSk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDbWF0RGF0ZXRpbWVwaWNrZXJDYWxlbmRhckNlbGxDb21wb25lbnQoeWVhciwgeWVhck5hbWUsIHllYXJOYW1lLCB0aGlzLl9zaG91bGRFbmFibGVZZWFyKHllYXIpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogV2hldGhlciB0aGUgZ2l2ZW4geWVhciBpcyBlbmFibGVkLiAqL1xyXG4gICAgcHJpdmF0ZSBfc2hvdWxkRW5hYmxlWWVhcih5ZWFyOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgICAgICAvLyBkaXNhYmxlIGlmIHRoZSB5ZWFyIGlzIGdyZWF0ZXIgdGhhbiBtYXhEYXRlIGxvd2VyIHRoYW4gbWluRGF0ZVxyXG4gICAgICAgIGlmICh5ZWFyID09PSB1bmRlZmluZWQgfHwgeWVhciA9PT0gbnVsbCB8fFxyXG4gICAgICAgICAgICAodGhpcy5tYXhEYXRlICYmIHllYXIgPiB0aGlzLmFkYXB0ZXIuZ2V0WWVhcih0aGlzLm1heERhdGUpKSB8fFxyXG4gICAgICAgICAgICAodGhpcy5taW5EYXRlICYmIHllYXIgPCB0aGlzLmFkYXB0ZXIuZ2V0WWVhcih0aGlzLm1pbkRhdGUpKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBlbmFibGUgaWYgaXQgcmVhY2hlcyBoZXJlIGFuZCB0aGVyZSdzIG5vIGZpbHRlciBkZWZpbmVkXHJcbiAgICAgICAgaWYgKCF0aGlzLmRhdGVGaWx0ZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBmaXJzdE9mWWVhciA9IHRoaXMuYWRhcHRlci5jcmVhdGVEYXRlKHllYXIsIDAsIDEpO1xyXG5cclxuICAgICAgICAvLyBJZiBhbnkgZGF0ZSBpbiB0aGUgeWVhciBpcyBlbmFibGVkIGNvdW50IHRoZSB5ZWFyIGFzIGVuYWJsZWQuXHJcbiAgICAgICAgZm9yIChsZXQgZGF0ZSA9IGZpcnN0T2ZZZWFyOyB0aGlzLmFkYXB0ZXIuZ2V0WWVhcihkYXRlKSA9PT0geWVhcjtcclxuICAgICAgICAgICAgZGF0ZSA9IHRoaXMuYWRhcHRlci5hZGRDYWxlbmRhckRheXMoZGF0ZSwgMSkpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZUZpbHRlcihkYXRlKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwYXJhbSBvYmogVGhlIG9iamVjdCB0byBjaGVjay5cclxuICAgICAqIEByZXR1cm5zIFRoZSBnaXZlbiBvYmplY3QgaWYgaXQgaXMgYm90aCBhIGRhdGUgaW5zdGFuY2UgYW5kIHZhbGlkLCBvdGhlcndpc2UgbnVsbC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZ2V0VmFsaWREYXRlT3JOdWxsKG9iajogYW55KTogRCB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5hZGFwdGVyLmlzRGF0ZUluc3RhbmNlKG9iaikgJiYgdGhpcy5hZGFwdGVyLmlzVmFsaWQob2JqKSkgPyBvYmogOiBudWxsO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNTYW1lTXVsdGlZZWFyVmlldzxEPihcclxuICAgIGRhdGVBZGFwdGVyOiBEYXRldGltZUFkYXB0ZXI8RD4sIGRhdGUxOiBELCBkYXRlMjogRCwgbWluRGF0ZTogRCB8IG51bGwsIG1heERhdGU6IEQgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB5ZWFyMSA9IGRhdGVBZGFwdGVyLmdldFllYXIoZGF0ZTEpO1xyXG4gICAgY29uc3QgeWVhcjIgPSBkYXRlQWRhcHRlci5nZXRZZWFyKGRhdGUyKTtcclxuICAgIGNvbnN0IHN0YXJ0aW5nWWVhciA9IGdldFN0YXJ0aW5nWWVhcihkYXRlQWRhcHRlciwgbWluRGF0ZSwgbWF4RGF0ZSk7XHJcbiAgICByZXR1cm4gTWF0aC5mbG9vcigoeWVhcjEgLSBzdGFydGluZ1llYXIpIC8geWVhcnNQZXJQYWdlKSA9PT1cclxuICAgICAgICBNYXRoLmZsb29yKCh5ZWFyMiAtIHN0YXJ0aW5nWWVhcikgLyB5ZWFyc1BlclBhZ2UpO1xyXG59XHJcblxyXG4vKipcclxuICogV2hlbiB0aGUgbXVsdGkteWVhciB2aWV3IGlzIGZpcnN0IG9wZW5lZCwgdGhlIGFjdGl2ZSB5ZWFyIHdpbGwgYmUgaW4gdmlldy5cclxuICogU28gd2UgY29tcHV0ZSBob3cgbWFueSB5ZWFycyBhcmUgYmV0d2VlbiB0aGUgYWN0aXZlIHllYXIgYW5kIHRoZSAqc2xvdCogd2hlcmUgb3VyXHJcbiAqIFwic3RhcnRpbmdZZWFyXCIgd2lsbCByZW5kZXIgd2hlbiBwYWdlZCBpbnRvIHZpZXcuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0aXZlT2Zmc2V0PEQ+KFxyXG4gICAgZGF0ZUFkYXB0ZXI6IERhdGV0aW1lQWRhcHRlcjxEPiwgYWN0aXZlRGF0ZTogRCwgbWluRGF0ZTogRCB8IG51bGwsIG1heERhdGU6IEQgfCBudWxsKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IGFjdGl2ZVllYXIgPSBkYXRlQWRhcHRlci5nZXRZZWFyKGFjdGl2ZURhdGUpO1xyXG4gICAgcmV0dXJuIGV1Y2xpZGVhbk1vZHVsbygoYWN0aXZlWWVhciAtIGdldFN0YXJ0aW5nWWVhcihkYXRlQWRhcHRlciwgbWluRGF0ZSwgbWF4RGF0ZSkpLFxyXG4gICAgICAgIHllYXJzUGVyUGFnZSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBXZSBwaWNrIGEgXCJzdGFydGluZ1wiIHllYXIgc3VjaCB0aGF0IGVpdGhlciB0aGUgbWF4aW11bSB5ZWFyIHdvdWxkIGJlIGF0IHRoZSBlbmRcclxuICogb3IgdGhlIG1pbmltdW0geWVhciB3b3VsZCBiZSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgcGFnZS5cclxuICovXHJcbmZ1bmN0aW9uIGdldFN0YXJ0aW5nWWVhcjxEPihcclxuICAgIGRhdGVBZGFwdGVyOiBEYXRldGltZUFkYXB0ZXI8RD4sIG1pbkRhdGU6IEQgfCBudWxsLCBtYXhEYXRlOiBEIHwgbnVsbCk6IG51bWJlciB7XHJcbiAgICBsZXQgc3RhcnRpbmdZZWFyID0gMDtcclxuICAgIGlmIChtYXhEYXRlKSB7XHJcbiAgICAgICAgY29uc3QgbWF4WWVhciA9IGRhdGVBZGFwdGVyLmdldFllYXIobWF4RGF0ZSk7XHJcbiAgICAgICAgc3RhcnRpbmdZZWFyID0gbWF4WWVhciAtIHllYXJzUGVyUGFnZSArIDE7XHJcbiAgICB9IGVsc2UgaWYgKG1pbkRhdGUpIHtcclxuICAgICAgICBzdGFydGluZ1llYXIgPSBkYXRlQWRhcHRlci5nZXRZZWFyKG1pbkRhdGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0YXJ0aW5nWWVhcjtcclxufVxyXG5cclxuLyoqIEdldHMgcmVtYWluZGVyIHRoYXQgaXMgbm9uLW5lZ2F0aXZlLCBldmVuIGlmIGZpcnN0IG51bWJlciBpcyBuZWdhdGl2ZSAqL1xyXG5mdW5jdGlvbiBldWNsaWRlYW5Nb2R1bG8oYTogbnVtYmVyLCBiOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIChhICUgYiArIGIpICUgYjtcclxufVxyXG4iLCI8dGFibGUgY2xhc3M9XCJjbWF0LWRhdGV0aW1lcGlja2VyLWNhbGVuZGFyLXRhYmxlXCI+XHJcbiAgICA8dGhlYWQgY2xhc3M9XCJjbWF0LWRhdGV0aW1lcGlja2VyLWNhbGVuZGFyLXRhYmxlLWhlYWRlclwiPjwvdGhlYWQ+XHJcbiAgICA8dGJvZHkgKEBzbGlkZUNhbGVuZGFyLmRvbmUpPVwiY2FsZW5kYXJTdGF0ZURvbmUoKVwiIChzZWxlY3RlZFZhbHVlQ2hhbmdlKT1cInllYXJTZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgICAgICBbQHNsaWRlQ2FsZW5kYXJdPVwiY2FsZW5kYXJTdGF0ZVwiIFthY3RpdmVDZWxsXT1cImdldEFjdGl2ZUNlbGwoKVwiIFtudW1Db2xzXT1cIjRcIiBbcm93c109XCJ5ZWFyc1wiXHJcbiAgICAgICAgW3NlbGVjdGVkVmFsdWVdPVwic2VsZWN0ZWRZZWFyXCIgW3RvZGF5VmFsdWVdPVwidG9kYXlZZWFyXCIgW2FsbG93RGlzYWJsZWRTZWxlY3Rpb25dPVwidHJ1ZVwiXHJcbiAgICAgICAgY21hdC1kYXRldGltZXBpY2tlci1jYWxlbmRhci1ib2R5IHJvbGU9XCJncmlkXCI+PC90Ym9keT5cclxuPC90YWJsZT4iXX0=
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGkteWVhci12aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL21hdGVyaWFsLWRhdGV0aW1lcGlja2VyL211bHRpLXllYXItdmlldy50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9tYXRlcmlhbC1kYXRldGltZXBpY2tlci9tdWx0aS15ZWFyLXZpZXcuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUscUJBQXFCLEVBQXdDLE1BQU0seUJBQXlCLENBQUM7QUFDdEcsT0FBTyxFQUFFLHVDQUF1QyxFQUFHLHVDQUF1QyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFJckUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUUvQixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBRTdCOztHQUVHO0FBV0gsTUFBTSxPQUFPLHdDQUF3QztJQTRCakQsWUFBK0IsT0FBMkIsRUFDSCxZQUFpQztRQUR6RCxZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUNILGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQTNCOUUsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTFDLFNBQUksR0FBMkIsTUFBTSxDQUFDO1FBRy9DLDBDQUEwQztRQUNoQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFLLENBQUM7UUFzQjdDLElBQUks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QUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFDaEYsWUFBWSxDQUFDLENBQUM7QUFDdEIsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsZUFBZSxDQUNwQixXQUErQixFQUFFLE9BQWlCLEVBQUUsT0FBaUI7SUFDckUsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLElBQUksT0FBTyxFQUFFLENBQUM7UUFDVixNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLFlBQVksR0FBRyxPQUFPLEdBQUcsWUFBWSxHQUFHLENBQUMsQ0FBQztJQUM5QyxDQUFDO1NBQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNqQixZQUFZLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsT0FBTyxZQUFZLENBQUM7QUFDeEIsQ0FBQztBQUVELDRFQUE0RTtBQUM1RSxTQUFTLGVBQWUsQ0FBQyxDQUFTLEVBQUUsQ0FBUztJQUN6QyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQge1xyXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSW5qZWN0LFxyXG4gICAgSW5wdXQsXHJcbiAgICBPcHRpb25hbCxcclxuICAgIE91dHB1dCxcclxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENNQVRfREFURVRJTUVfRk9STUFUUywgQ21hdERhdGV0aW1lRm9ybWF0cywgRGF0ZXRpbWVBZGFwdGVyIH0gZnJvbSAnY21hdC9jb21wb25lbnRzL2FkYXB0ZXInO1xyXG5pbXBvcnQgeyBDbWF0RGF0ZXRpbWVwaWNrZXJDYWxlbmRhckNlbGxDb21wb25lbnQgLCBDbWF0RGF0ZXRpbWVwaWNrZXJDYWxlbmRhckJvZHlDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyLWJvZHknO1xyXG5pbXBvcnQgeyBzbGlkZUNhbGVuZGFyIH0gZnJvbSAnLi9kYXRldGltZXBpY2tlci1hbmltYXRpb25zJztcclxuaW1wb3J0IHsgY3JlYXRlTWlzc2luZ0RhdGVJbXBsRXJyb3IgfSBmcm9tICcuL2RhdGV0aW1lcGlja2VyLWVycm9ycyc7XHJcbmltcG9ydCB7IENtYXREYXRldGltZXBpY2tlclR5cGUgfSBmcm9tICcuL2RhdGV0aW1lcGlja2VyLXR5cGVzJztcclxuXHJcblxyXG5leHBvcnQgY29uc3QgeWVhcnNQZXJQYWdlID0gMjQ7XHJcblxyXG5leHBvcnQgY29uc3QgeWVhcnNQZXJSb3cgPSA0O1xyXG5cclxuLyoqXHJcbiAqIEFuIGludGVybmFsIGNvbXBvbmVudCB1c2VkIHRvIGRpc3BsYXkgbXVsdGlwbGUgeWVhcnMgaW4gdGhlIGRhdGVwaWNrZXIuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY21hdC1kYXRldGltZXBpY2tlci1tdWx0aS15ZWFyLXZpZXcnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICdtdWx0aS15ZWFyLXZpZXcuaHRtbCcsXHJcbiAgICBhbmltYXRpb25zOiBbc2xpZGVDYWxlbmRhcl0sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBleHBvcnRBczogJ2NtYXREYXRldGltZXBpY2tlck11bHRpWWVhclZpZXcnLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtDbWF0RGF0ZXRpbWVwaWNrZXJDYWxlbmRhckJvZHlDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0RGF0ZXRpbWVwaWNrZXJNdWx0aVllYXJWaWV3Q29tcG9uZW50PEQ+IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XHJcblxyXG4gICAgQE91dHB1dCgpIHVzZXJTZWxlY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgQElucHV0KCkgdHlwZTogQ21hdERhdGV0aW1lcGlja2VyVHlwZSA9ICdkYXRlJztcclxuICAgIC8qKiBBIGZ1bmN0aW9uIHVzZWQgdG8gZmlsdGVyIHdoaWNoIGRhdGVzIGFyZSBzZWxlY3RhYmxlLiAqL1xyXG4gICAgQElucHV0KCkgZGF0ZUZpbHRlcjogKGRhdGU6IEQpID0+IGJvb2xlYW47XHJcbiAgICAvKiogRW1pdHMgd2hlbiBhIG5ldyBtb250aCBpcyBzZWxlY3RlZC4gKi9cclxuICAgIEBPdXRwdXQoKSBzZWxlY3RlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RD4oKTtcclxuICAgIC8qKiBHcmlkIG9mIGNhbGVuZGFyIGNlbGxzIHJlcHJlc2VudGluZyB0aGUgeWVhcnMgaW4gdGhlIHJhbmdlLiAqL1xyXG4gICAgeWVhcnM6IENtYXREYXRldGltZXBpY2tlckNhbGVuZGFyQ2VsbENvbXBvbmVudFtdW107XHJcbiAgICAvKiogVGhlIGxhYmVsIGZvciB0aGlzIHllYXIgcmFuZ2UgKGUuZy4gXCIyMDAwLTIwMjBcIikuICovXHJcbiAgICB5ZWFyTGFiZWw6IHN0cmluZztcclxuICAgIC8qKiBUaGUgeWVhciBpbiB0aGlzIHJhbmdlIHRoYXQgdG9kYXkgZmFsbHMgb24uIE51bGwgaWYgdG9kYXkgaXMgaW4gYSBkaWZmZXJlbnQgcmFuZ2UuICovXHJcbiAgICB0b2RheVllYXI6IG51bWJlcjtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIHllYXIgaW4gdGhpcyByYW5nZSB0aGF0IHRoZSBzZWxlY3RlZCBEYXRlIGZhbGxzIG9uLlxyXG4gICAgICogTnVsbCBpZiB0aGUgc2VsZWN0ZWQgRGF0ZSBpcyBpbiBhIGRpZmZlcmVudCByYW5nZS5cclxuICAgICAqL1xyXG4gICAgc2VsZWN0ZWRZZWFyOiBudW1iZXIgfCBudWxsO1xyXG4gICAgY2FsZW5kYXJTdGF0ZTogc3RyaW5nO1xyXG5cclxuXHJcbiAgICBwcml2YXRlIF9hY3RpdmVEYXRlOiBEO1xyXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWQ6IEQ7XHJcbiAgICBwcml2YXRlIF9taW5EYXRlOiBEIHwgbnVsbDtcclxuICAgIHByaXZhdGUgX21heERhdGU6IEQgfCBudWxsO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHB1YmxpYyBhZGFwdGVyOiBEYXRldGltZUFkYXB0ZXI8RD4sXHJcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChDTUFUX0RBVEVUSU1FX0ZPUk1BVFMpIHByaXZhdGUgX2RhdGVGb3JtYXRzOiBDbWF0RGF0ZXRpbWVGb3JtYXRzKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmFkYXB0ZXIpIHtcclxuICAgICAgICAgICAgdGhyb3cgY3JlYXRlTWlzc2luZ0RhdGVJbXBsRXJyb3IoJ0NEYXRldGltZUFkYXB0ZXInKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5fZGF0ZUZvcm1hdHMpIHtcclxuICAgICAgICAgICAgdGhyb3cgY3JlYXRlTWlzc2luZ0RhdGVJbXBsRXJyb3IoJ0NNQVRfREFURVRJTUVfRk9STUFUUycpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fYWN0aXZlRGF0ZSA9IHRoaXMuYWRhcHRlci50b2RheSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBUaGUgZGF0ZSB0byBkaXNwbGF5IGluIHRoaXMgbXVsdGkgeWVhciB2aWV3Ki9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgYWN0aXZlRGF0ZSgpOiBEIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlRGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXQgYWN0aXZlRGF0ZSh2YWx1ZTogRCkge1xyXG4gICAgICAgIGNvbnN0IG9sZEFjdGl2ZURhdGUgPSB0aGlzLl9hY3RpdmVEYXRlO1xyXG4gICAgICAgIHRoaXMuX2FjdGl2ZURhdGUgPSB2YWx1ZSB8fCB0aGlzLmFkYXB0ZXIudG9kYXkoKTtcclxuICAgICAgICBpZiAob2xkQWN0aXZlRGF0ZSAmJiB0aGlzLl9hY3RpdmVEYXRlICYmXHJcbiAgICAgICAgICAgICFpc1NhbWVNdWx0aVllYXJWaWV3KHRoaXMuYWRhcHRlciwgb2xkQWN0aXZlRGF0ZSwgdGhpcy5fYWN0aXZlRGF0ZSwgdGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2luaXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvKiogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBkYXRlLiAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgc2VsZWN0ZWQoKTogRCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBzZWxlY3RlZCh2YWx1ZTogRCkge1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFllYXIgPSB0aGlzLl9zZWxlY3RlZCAmJiB0aGlzLmFkYXB0ZXIuZ2V0WWVhcih0aGlzLl9zZWxlY3RlZCk7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvKiogVGhlIG1pbmltdW0gc2VsZWN0YWJsZSBkYXRlLiAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgbWluRGF0ZSgpOiBEIHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX21pbkRhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IG1pbkRhdGUodmFsdWU6IEQgfCBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5fbWluRGF0ZSA9IHRoaXMuX2dldFZhbGlkRGF0ZU9yTnVsbCh0aGlzLmFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpKTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIC8qKiBUaGUgbWF4aW11bSBzZWxlY3RhYmxlIGRhdGUuICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBtYXhEYXRlKCk6IEQgfCBudWxsIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbWF4RGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXQgbWF4RGF0ZSh2YWx1ZTogRCB8IG51bGwpIHtcclxuICAgICAgICB0aGlzLl9tYXhEYXRlID0gdGhpcy5fZ2V0VmFsaWREYXRlT3JOdWxsKHRoaXMuYWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9pbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEhhbmRsZXMgd2hlbiBhIG5ldyB5ZWFyIGlzIHNlbGVjdGVkLiAqL1xyXG4gICAgeWVhclNlbGVjdGVkKHllYXI6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IG1vbnRoID0gdGhpcy5hZGFwdGVyLmdldE1vbnRoKHRoaXMuYWN0aXZlRGF0ZSk7XHJcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZERhdGUgPSB0aGlzLmFkYXB0ZXIuY3JlYXRlRGF0ZXRpbWUoeWVhciwgbW9udGgsIDEsIDAsIDApO1xyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQodGhpcy5hZGFwdGVyLmNyZWF0ZURhdGV0aW1lKFxyXG4gICAgICAgICAgICB5ZWFyLFxyXG4gICAgICAgICAgICBtb250aCxcclxuICAgICAgICAgICAgTWF0aC5taW4odGhpcy5hZGFwdGVyLmdldERhdGUodGhpcy5hY3RpdmVEYXRlKSxcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRhcHRlci5nZXROdW1EYXlzSW5Nb250aChub3JtYWxpemVkRGF0ZSkpLFxyXG4gICAgICAgICAgICB0aGlzLmFkYXB0ZXIuZ2V0SG91cih0aGlzLmFjdGl2ZURhdGUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkYXB0ZXIuZ2V0TWludXRlKHRoaXMuYWN0aXZlRGF0ZSkpKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ3llYXInKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXNlclNlbGVjdGlvbi5lbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldEFjdGl2ZUNlbGwoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gZ2V0QWN0aXZlT2Zmc2V0KHRoaXMuYWRhcHRlciwgdGhpcy5hY3RpdmVEYXRlLCB0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2FsZW5kYXJTdGF0ZURvbmUoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jYWxlbmRhclN0YXRlID0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEluaXRpYWxpemVzIHRoaXMgeWVhciB2aWV3LiAqL1xyXG4gICAgcHJpdmF0ZSBfaW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICAgICAgdGhpcy50b2RheVllYXIgPSB0aGlzLmFkYXB0ZXIuZ2V0WWVhcih0aGlzLmFkYXB0ZXIudG9kYXkoKSk7XHJcbiAgICAgICAgdGhpcy55ZWFyTGFiZWwgPSB0aGlzLmFkYXB0ZXIuZ2V0WWVhck5hbWUodGhpcy5hY3RpdmVEYXRlKTtcclxuXHJcblxyXG4gICAgICAgIGNvbnN0IGFjdGl2ZVllYXIgPSB0aGlzLmFkYXB0ZXIuZ2V0WWVhcih0aGlzLmFjdGl2ZURhdGUpO1xyXG5cclxuICAgICAgICBjb25zdCBtaW5ZZWFyT2ZQYWdlID0gYWN0aXZlWWVhciAtIGdldEFjdGl2ZU9mZnNldChcclxuICAgICAgICAgICAgdGhpcy5hZGFwdGVyLCB0aGlzLmFjdGl2ZURhdGUsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlKTtcclxuXHJcbiAgICAgICAgdGhpcy55ZWFycyA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCByb3c6IG51bWJlcltdID0gW107IGkgPCB5ZWFyc1BlclBhZ2U7IGkrKykge1xyXG4gICAgICAgICAgICByb3cucHVzaChtaW5ZZWFyT2ZQYWdlICsgaSk7XHJcbiAgICAgICAgICAgIGlmIChyb3cubGVuZ3RoID09PSB5ZWFyc1BlclJvdykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy55ZWFycy5wdXNoKHJvdy5tYXAoeWVhciA9PiB0aGlzLl9jcmVhdGVDZWxsRm9yWWVhcih5ZWFyKSkpO1xyXG4gICAgICAgICAgICAgICAgcm93ID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIENyZWF0ZXMgYW4gTWF0RGF0ZXRpbWVwaWNrZXJDYWxlbmRhckNlbGwgZm9yIHRoZSBnaXZlbiB5ZWFyLiAqL1xyXG4gICAgcHJpdmF0ZSBfY3JlYXRlQ2VsbEZvclllYXIoeWVhcjogbnVtYmVyKTogQ21hdERhdGV0aW1lcGlja2VyQ2FsZW5kYXJDZWxsQ29tcG9uZW50IHtcclxuICAgICAgICBjb25zdCB5ZWFyTmFtZSA9IHRoaXMuYWRhcHRlci5nZXRZZWFyTmFtZSh0aGlzLmFkYXB0ZXIuY3JlYXRlRGF0ZSh5ZWFyLCAwLCAxKSk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDbWF0RGF0ZXRpbWVwaWNrZXJDYWxlbmRhckNlbGxDb21wb25lbnQoeWVhciwgeWVhck5hbWUsIHllYXJOYW1lLCB0aGlzLl9zaG91bGRFbmFibGVZZWFyKHllYXIpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogV2hldGhlciB0aGUgZ2l2ZW4geWVhciBpcyBlbmFibGVkLiAqL1xyXG4gICAgcHJpdmF0ZSBfc2hvdWxkRW5hYmxlWWVhcih5ZWFyOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgICAgICAvLyBkaXNhYmxlIGlmIHRoZSB5ZWFyIGlzIGdyZWF0ZXIgdGhhbiBtYXhEYXRlIGxvd2VyIHRoYW4gbWluRGF0ZVxyXG4gICAgICAgIGlmICh5ZWFyID09PSB1bmRlZmluZWQgfHwgeWVhciA9PT0gbnVsbCB8fFxyXG4gICAgICAgICAgICAodGhpcy5tYXhEYXRlICYmIHllYXIgPiB0aGlzLmFkYXB0ZXIuZ2V0WWVhcih0aGlzLm1heERhdGUpKSB8fFxyXG4gICAgICAgICAgICAodGhpcy5taW5EYXRlICYmIHllYXIgPCB0aGlzLmFkYXB0ZXIuZ2V0WWVhcih0aGlzLm1pbkRhdGUpKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBlbmFibGUgaWYgaXQgcmVhY2hlcyBoZXJlIGFuZCB0aGVyZSdzIG5vIGZpbHRlciBkZWZpbmVkXHJcbiAgICAgICAgaWYgKCF0aGlzLmRhdGVGaWx0ZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBmaXJzdE9mWWVhciA9IHRoaXMuYWRhcHRlci5jcmVhdGVEYXRlKHllYXIsIDAsIDEpO1xyXG5cclxuICAgICAgICAvLyBJZiBhbnkgZGF0ZSBpbiB0aGUgeWVhciBpcyBlbmFibGVkIGNvdW50IHRoZSB5ZWFyIGFzIGVuYWJsZWQuXHJcbiAgICAgICAgZm9yIChsZXQgZGF0ZSA9IGZpcnN0T2ZZZWFyOyB0aGlzLmFkYXB0ZXIuZ2V0WWVhcihkYXRlKSA9PT0geWVhcjtcclxuICAgICAgICAgICAgZGF0ZSA9IHRoaXMuYWRhcHRlci5hZGRDYWxlbmRhckRheXMoZGF0ZSwgMSkpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZUZpbHRlcihkYXRlKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwYXJhbSBvYmogVGhlIG9iamVjdCB0byBjaGVjay5cclxuICAgICAqIEByZXR1cm5zIFRoZSBnaXZlbiBvYmplY3QgaWYgaXQgaXMgYm90aCBhIGRhdGUgaW5zdGFuY2UgYW5kIHZhbGlkLCBvdGhlcndpc2UgbnVsbC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZ2V0VmFsaWREYXRlT3JOdWxsKG9iajogYW55KTogRCB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5hZGFwdGVyLmlzRGF0ZUluc3RhbmNlKG9iaikgJiYgdGhpcy5hZGFwdGVyLmlzVmFsaWQob2JqKSkgPyBvYmogOiBudWxsO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNTYW1lTXVsdGlZZWFyVmlldzxEPihcclxuICAgIGRhdGVBZGFwdGVyOiBEYXRldGltZUFkYXB0ZXI8RD4sIGRhdGUxOiBELCBkYXRlMjogRCwgbWluRGF0ZTogRCB8IG51bGwsIG1heERhdGU6IEQgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB5ZWFyMSA9IGRhdGVBZGFwdGVyLmdldFllYXIoZGF0ZTEpO1xyXG4gICAgY29uc3QgeWVhcjIgPSBkYXRlQWRhcHRlci5nZXRZZWFyKGRhdGUyKTtcclxuICAgIGNvbnN0IHN0YXJ0aW5nWWVhciA9IGdldFN0YXJ0aW5nWWVhcihkYXRlQWRhcHRlciwgbWluRGF0ZSwgbWF4RGF0ZSk7XHJcbiAgICByZXR1cm4gTWF0aC5mbG9vcigoeWVhcjEgLSBzdGFydGluZ1llYXIpIC8geWVhcnNQZXJQYWdlKSA9PT1cclxuICAgICAgICBNYXRoLmZsb29yKCh5ZWFyMiAtIHN0YXJ0aW5nWWVhcikgLyB5ZWFyc1BlclBhZ2UpO1xyXG59XHJcblxyXG4vKipcclxuICogV2hlbiB0aGUgbXVsdGkteWVhciB2aWV3IGlzIGZpcnN0IG9wZW5lZCwgdGhlIGFjdGl2ZSB5ZWFyIHdpbGwgYmUgaW4gdmlldy5cclxuICogU28gd2UgY29tcHV0ZSBob3cgbWFueSB5ZWFycyBhcmUgYmV0d2VlbiB0aGUgYWN0aXZlIHllYXIgYW5kIHRoZSAqc2xvdCogd2hlcmUgb3VyXHJcbiAqIFwic3RhcnRpbmdZZWFyXCIgd2lsbCByZW5kZXIgd2hlbiBwYWdlZCBpbnRvIHZpZXcuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0aXZlT2Zmc2V0PEQ+KFxyXG4gICAgZGF0ZUFkYXB0ZXI6IERhdGV0aW1lQWRhcHRlcjxEPiwgYWN0aXZlRGF0ZTogRCwgbWluRGF0ZTogRCB8IG51bGwsIG1heERhdGU6IEQgfCBudWxsKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IGFjdGl2ZVllYXIgPSBkYXRlQWRhcHRlci5nZXRZZWFyKGFjdGl2ZURhdGUpO1xyXG4gICAgcmV0dXJuIGV1Y2xpZGVhbk1vZHVsbygoYWN0aXZlWWVhciAtIGdldFN0YXJ0aW5nWWVhcihkYXRlQWRhcHRlciwgbWluRGF0ZSwgbWF4RGF0ZSkpLFxyXG4gICAgICAgIHllYXJzUGVyUGFnZSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBXZSBwaWNrIGEgXCJzdGFydGluZ1wiIHllYXIgc3VjaCB0aGF0IGVpdGhlciB0aGUgbWF4aW11bSB5ZWFyIHdvdWxkIGJlIGF0IHRoZSBlbmRcclxuICogb3IgdGhlIG1pbmltdW0geWVhciB3b3VsZCBiZSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgcGFnZS5cclxuICovXHJcbmZ1bmN0aW9uIGdldFN0YXJ0aW5nWWVhcjxEPihcclxuICAgIGRhdGVBZGFwdGVyOiBEYXRldGltZUFkYXB0ZXI8RD4sIG1pbkRhdGU6IEQgfCBudWxsLCBtYXhEYXRlOiBEIHwgbnVsbCk6IG51bWJlciB7XHJcbiAgICBsZXQgc3RhcnRpbmdZZWFyID0gMDtcclxuICAgIGlmIChtYXhEYXRlKSB7XHJcbiAgICAgICAgY29uc3QgbWF4WWVhciA9IGRhdGVBZGFwdGVyLmdldFllYXIobWF4RGF0ZSk7XHJcbiAgICAgICAgc3RhcnRpbmdZZWFyID0gbWF4WWVhciAtIHllYXJzUGVyUGFnZSArIDE7XHJcbiAgICB9IGVsc2UgaWYgKG1pbkRhdGUpIHtcclxuICAgICAgICBzdGFydGluZ1llYXIgPSBkYXRlQWRhcHRlci5nZXRZZWFyKG1pbkRhdGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0YXJ0aW5nWWVhcjtcclxufVxyXG5cclxuLyoqIEdldHMgcmVtYWluZGVyIHRoYXQgaXMgbm9uLW5lZ2F0aXZlLCBldmVuIGlmIGZpcnN0IG51bWJlciBpcyBuZWdhdGl2ZSAqL1xyXG5mdW5jdGlvbiBldWNsaWRlYW5Nb2R1bG8oYTogbnVtYmVyLCBiOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIChhICUgYiArIGIpICUgYjtcclxufVxyXG4iLCI8dGFibGUgY2xhc3M9XCJjbWF0LWRhdGV0aW1lcGlja2VyLWNhbGVuZGFyLXRhYmxlXCI+XHJcbiAgICA8dGhlYWQgY2xhc3M9XCJjbWF0LWRhdGV0aW1lcGlja2VyLWNhbGVuZGFyLXRhYmxlLWhlYWRlclwiPjwvdGhlYWQ+XHJcbiAgICA8dGJvZHkgKEBzbGlkZUNhbGVuZGFyLmRvbmUpPVwiY2FsZW5kYXJTdGF0ZURvbmUoKVwiIChzZWxlY3RlZFZhbHVlQ2hhbmdlKT1cInllYXJTZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgICAgICBbQHNsaWRlQ2FsZW5kYXJdPVwiY2FsZW5kYXJTdGF0ZVwiIFthY3RpdmVDZWxsXT1cImdldEFjdGl2ZUNlbGwoKVwiIFtudW1Db2xzXT1cIjRcIiBbcm93c109XCJ5ZWFyc1wiXHJcbiAgICAgICAgW3NlbGVjdGVkVmFsdWVdPVwic2VsZWN0ZWRZZWFyXCIgW3RvZGF5VmFsdWVdPVwidG9kYXlZZWFyXCIgW2FsbG93RGlzYWJsZWRTZWxlY3Rpb25dPVwidHJ1ZVwiXHJcbiAgICAgICAgY21hdC1kYXRldGltZXBpY2tlci1jYWxlbmRhci1ib2R5IHJvbGU9XCJncmlkXCI+PC90Ym9keT5cclxuPC90YWJsZT4iXX0=
|
|
@@ -157,10 +157,10 @@ export class CmatDatetimepickerTimeInputDirective {
|
|
|
157
157
|
this.inputElement.removeEventListener('keypress', this._keyPressListener);
|
|
158
158
|
this.inputElement.removeEventListener('input', this._inputEventListener);
|
|
159
159
|
}
|
|
160
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
161
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
160
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatDatetimepickerTimeInputDirective, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
161
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0", type: CmatDatetimepickerTimeInputDirective, isStandalone: true, selector: "input.cmat-datetimepicker-time-input", inputs: { timeInterval: "timeInterval", timeMin: "timeMin", timeMax: "timeMax", timeValue: "timeValue" }, outputs: { timeValueChanged: "timeValueChanged" }, host: { listeners: { "blur": "blur($event)", "focus": "focus($event)" } }, exportAs: ["cmatDatetimepickerTimeInput"], ngImport: i0 }); }
|
|
162
162
|
}
|
|
163
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatDatetimepickerTimeInputDirective, decorators: [{
|
|
164
164
|
type: Directive,
|
|
165
165
|
args: [{
|
|
166
166
|
selector: 'input.cmat-datetimepicker-time-input',
|
|
@@ -402,10 +402,10 @@ export class CmatDatetimepickerTimeComponent {
|
|
|
402
402
|
this.datetimepickerIntlChangesSubscription.unsubscribe();
|
|
403
403
|
}
|
|
404
404
|
}
|
|
405
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
406
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
405
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatDatetimepickerTimeComponent, deps: [{ token: i1.DatetimeAdapter }, { token: i0.ChangeDetectorRef }, { token: i2.CmatDatetimepickerIntl }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
406
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: CmatDatetimepickerTimeComponent, isStandalone: true, selector: "cmat-datetimepicker-time", inputs: { dateFilter: "dateFilter", interval: "interval", AMPM: "AMPM", twelvehour: "twelvehour", activeDate: "activeDate", selected: "selected", minDate: "minDate", maxDate: "maxDate", clockView: "clockView" }, outputs: { selectedChange: "selectedChange", activeDateChange: "activeDateChange", userSelection: "userSelection", ampmChange: "ampmChange", clockViewChange: "clockViewChange" }, host: { properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "hourInputElement", first: true, predicate: ["hourInput"], descendants: true, read: (ElementRef) }, { propertyName: "hourInputDirective", first: true, predicate: ["hourInput"], descendants: true, read: CmatDatetimepickerTimeInputDirective }, { propertyName: "minuteInputElement", first: true, predicate: ["minuteInput"], descendants: true, read: (ElementRef) }, { propertyName: "minuteInputDirective", first: true, predicate: ["minuteInput"], descendants: true, read: CmatDatetimepickerTimeInputDirective }], exportAs: ["cmatDatetimepickerTime"], usesOnChanges: true, ngImport: i0, template: "<div class=\"cmat-datetimepicker-time-input-wrapper\">\n <div class=\"cmat-datetimepicker-time-input-inner\">\n <input class=\"cmat-datetimepicker-time-input\" [class.cmat-datetimepicker-time-input-active]=\"clockView === 'hour'\"\n [class.cmat-datetimepicker-time-input-warning]=\"!hourInput.valid\" #hourInput=\"cmatDatetimepickerTimeInput\"\n type=\"text\" inputmode=\"numeric\" maxlength=\"2\" [timeMin]=\"twelvehour ? 1 : 0\" [timeMax]=\"twelvehour ? 12 : 23\"\n [timeValue]=\"hour\" (timeValueChanged)=\"handleHourInputChange($event)\" (focus)=\"handleFocus('hour')\" />\n\n <div class=\"cmat-datetimepicker-time-seperator\">:</div>\n\n <input class=\"cmat-datetimepicker-time-input\" [class.cmat-datetimepicker-time-input-active]=\"clockView === 'minute'\"\n [class.cmat-datetimepicker-time-input-warning]=\"!minuteInput.valid\" #minuteInput=\"cmatDatetimepickerTimeInput\"\n type=\"text\" inputmode=\"numeric\" maxlength=\"2\" [timeMin]=\"0\" [timeMax]=\"59\" [timeValue]=\"minute\"\n (timeValueChanged)=\"handleMinuteInputChange($event)\" [timeInterval]=\"interval\" (focus)=\"handleFocus('minute')\" />\n\n @if (twelvehour) {\n <div class=\"cmat-datetimepicker-time-ampm\">\n <button mat-button type=\"button\" class=\"cmat-datetimepicker-time-am\"\n [class.cmat-datetimepicker-time-ampm-active]=\"AMPM === 'AM'\" aria-label=\"AM\"\n (keydown)=\"$event.stopPropagation()\" (click)=\"ampmChange.emit('AM')\">AM</button>\n <button mat-button type=\"button\" class=\"cmat-datetimepicker-time-pm\"\n [class.cmat-datetimepicker-time-ampm-active]=\"AMPM === 'PM'\" aria-label=\"PM\"\n (keydown)=\"$event.stopPropagation()\" (click)=\"ampmChange.emit('PM')\">PM</button>\n </div>\n }\n </div>\n </div>\n\n <cmat-datetimepicker-clock (selectedChange)=\"timeSelected($event)\" (activeDateChange)=\"onActiveDateChange($event)\"\n [dateFilter]=\"dateFilter\" [interval]=\"interval\" [maxDate]=\"maxDate\" [minDate]=\"minDate\" [selected]=\"selected\"\n [startView]=\"clockView\" [twelvehour]=\"twelvehour\">\n </cmat-datetimepicker-clock>\n\n <div class=\"cmat-datetimepicker-time-button-wrapper space-x-4\">\n <button class=\"cmat=datetimepicker-time-cancel-button\" mat-stroked-button type=\"button\" (click)=\"handleCancel()\">\n {{ datetimepickerIntl.cancelLabel }}\n </button>\n <button class=\"cmat-datetimepicker-time-ok-button\" mat-flat-button type=\"button\" color=\"primary\" (click)=\"handleOk()\"\n [disabled]=\"minuteInputDirective?.invalid || hourInputDirective?.invalid\">\n {{ datetimepickerIntl.okLabel }}\n </button>\n </div>", styles: [".cmat-datetimepicker-time{display:block;outline:none;-webkit-user-select:none;user-select:none}.cmat-datetimepicker-time-input-wrapper{padding:8px 0;text-align:center}.cmat-datetimepicker-time-input-inner{display:inline-flex;height:56px;align-items:center}.cmat-datetimepicker-time-input{width:72px;font-size:36px;text-align:center;border-radius:8px;border:2px solid transparent;appearance:none;outline:none;height:100%}.cmat-datetimepicker-time-seperator{display:inline-flex;justify-content:center;width:24px;font-size:36px;height:100%}.cmat-datetimepicker-time-ampm{display:inline-flex;flex-direction:column;margin-left:12px;height:100%}[dir=rtl] .cmat-datetimepicker-time-ampm{margin-left:auto;margin-right:12px}.cmat-datetimepicker-time-am.mat-mdc-button,.cmat-datetimepicker-time-pm.mat-mdc-button{flex:1;width:40px;min-width:auto;padding:0;line-height:normal;border-width:1px;border-style:solid;min-height:0}.cmat-datetimepicker-time-am.mat-mdc-button{border-radius:8px 8px 0 0!important}.cmat-datetimepicker-time-pm.mat-mdc-button{border-radius:0 0 8px 8px!important;border-top:none}.cmat-datetimepicker-time-button-wrapper{display:flex;justify-content:flex-end;padding-top:8px}\n"], dependencies: [{ kind: "directive", type: CmatDatetimepickerTimeInputDirective, selector: "input.cmat-datetimepicker-time-input", inputs: ["timeInterval", "timeMin", "timeMax", "timeValue"], outputs: ["timeValueChanged"], exportAs: ["cmatDatetimepickerTimeInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: CmatDatetimepickerClockComponent, selector: "cmat-datetimepicker-clock", inputs: ["dateFilter", "interval", "twelvehour", "activeDate", "selected", "minDate", "maxDate", "startView"], outputs: ["userSelection", "selectedChange", "activeDateChange"], exportAs: ["cmatDatetimepickerClock"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
407
407
|
}
|
|
408
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
408
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatDatetimepickerTimeComponent, decorators: [{
|
|
409
409
|
type: Component,
|
|
410
410
|
args: [{ selector: 'cmat-datetimepicker-time', exportAs: 'cmatDatetimepickerTime', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CmatDatetimepickerTimeInputDirective, MatButtonModule, CmatDatetimepickerClockComponent], template: "<div class=\"cmat-datetimepicker-time-input-wrapper\">\n <div class=\"cmat-datetimepicker-time-input-inner\">\n <input class=\"cmat-datetimepicker-time-input\" [class.cmat-datetimepicker-time-input-active]=\"clockView === 'hour'\"\n [class.cmat-datetimepicker-time-input-warning]=\"!hourInput.valid\" #hourInput=\"cmatDatetimepickerTimeInput\"\n type=\"text\" inputmode=\"numeric\" maxlength=\"2\" [timeMin]=\"twelvehour ? 1 : 0\" [timeMax]=\"twelvehour ? 12 : 23\"\n [timeValue]=\"hour\" (timeValueChanged)=\"handleHourInputChange($event)\" (focus)=\"handleFocus('hour')\" />\n\n <div class=\"cmat-datetimepicker-time-seperator\">:</div>\n\n <input class=\"cmat-datetimepicker-time-input\" [class.cmat-datetimepicker-time-input-active]=\"clockView === 'minute'\"\n [class.cmat-datetimepicker-time-input-warning]=\"!minuteInput.valid\" #minuteInput=\"cmatDatetimepickerTimeInput\"\n type=\"text\" inputmode=\"numeric\" maxlength=\"2\" [timeMin]=\"0\" [timeMax]=\"59\" [timeValue]=\"minute\"\n (timeValueChanged)=\"handleMinuteInputChange($event)\" [timeInterval]=\"interval\" (focus)=\"handleFocus('minute')\" />\n\n @if (twelvehour) {\n <div class=\"cmat-datetimepicker-time-ampm\">\n <button mat-button type=\"button\" class=\"cmat-datetimepicker-time-am\"\n [class.cmat-datetimepicker-time-ampm-active]=\"AMPM === 'AM'\" aria-label=\"AM\"\n (keydown)=\"$event.stopPropagation()\" (click)=\"ampmChange.emit('AM')\">AM</button>\n <button mat-button type=\"button\" class=\"cmat-datetimepicker-time-pm\"\n [class.cmat-datetimepicker-time-ampm-active]=\"AMPM === 'PM'\" aria-label=\"PM\"\n (keydown)=\"$event.stopPropagation()\" (click)=\"ampmChange.emit('PM')\">PM</button>\n </div>\n }\n </div>\n </div>\n\n <cmat-datetimepicker-clock (selectedChange)=\"timeSelected($event)\" (activeDateChange)=\"onActiveDateChange($event)\"\n [dateFilter]=\"dateFilter\" [interval]=\"interval\" [maxDate]=\"maxDate\" [minDate]=\"minDate\" [selected]=\"selected\"\n [startView]=\"clockView\" [twelvehour]=\"twelvehour\">\n </cmat-datetimepicker-clock>\n\n <div class=\"cmat-datetimepicker-time-button-wrapper space-x-4\">\n <button class=\"cmat=datetimepicker-time-cancel-button\" mat-stroked-button type=\"button\" (click)=\"handleCancel()\">\n {{ datetimepickerIntl.cancelLabel }}\n </button>\n <button class=\"cmat-datetimepicker-time-ok-button\" mat-flat-button type=\"button\" color=\"primary\" (click)=\"handleOk()\"\n [disabled]=\"minuteInputDirective?.invalid || hourInputDirective?.invalid\">\n {{ datetimepickerIntl.okLabel }}\n </button>\n </div>", styles: [".cmat-datetimepicker-time{display:block;outline:none;-webkit-user-select:none;user-select:none}.cmat-datetimepicker-time-input-wrapper{padding:8px 0;text-align:center}.cmat-datetimepicker-time-input-inner{display:inline-flex;height:56px;align-items:center}.cmat-datetimepicker-time-input{width:72px;font-size:36px;text-align:center;border-radius:8px;border:2px solid transparent;appearance:none;outline:none;height:100%}.cmat-datetimepicker-time-seperator{display:inline-flex;justify-content:center;width:24px;font-size:36px;height:100%}.cmat-datetimepicker-time-ampm{display:inline-flex;flex-direction:column;margin-left:12px;height:100%}[dir=rtl] .cmat-datetimepicker-time-ampm{margin-left:auto;margin-right:12px}.cmat-datetimepicker-time-am.mat-mdc-button,.cmat-datetimepicker-time-pm.mat-mdc-button{flex:1;width:40px;min-width:auto;padding:0;line-height:normal;border-width:1px;border-style:solid;min-height:0}.cmat-datetimepicker-time-am.mat-mdc-button{border-radius:8px 8px 0 0!important}.cmat-datetimepicker-time-pm.mat-mdc-button{border-radius:0 0 8px 8px!important;border-top:none}.cmat-datetimepicker-time-button-wrapper{display:flex;justify-content:flex-end;padding-top:8px}\n"] }]
|
|
411
411
|
}], ctorParameters: () => [{ type: i1.DatetimeAdapter }, { type: i0.ChangeDetectorRef }, { type: i2.CmatDatetimepickerIntl }], propDecorators: { selectedChange: [{
|
|
@@ -452,4 +452,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
|
|
|
452
452
|
}], clockView: [{
|
|
453
453
|
type: Input
|
|
454
454
|
}] } });
|
|
455
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9tYXRlcmlhbC1kYXRldGltZXBpY2tlci90aW1lLnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL21hdGVyaWFsLWRhdGV0aW1lcGlja2VyL3RpbWUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLG9CQUFvQixHQUV2QixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFFSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUczRCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxTQUFTLENBQUM7Ozs7O0FBTzNELFNBQVMsR0FBRyxDQUFDLEdBQWdCLEVBQUUsSUFBWTtJQUN2QyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLE9BQU8sR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLEVBQUU7UUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztLQUFFO0lBQzlDLE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQztBQU9ELE1BQU0sT0FBTyxvQ0FBb0M7SUFhN0MsWUFBb0IsUUFBb0IsRUFBVSxJQUF1QjtRQUFyRCxhQUFRLEdBQVIsUUFBUSxDQUFZO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFaaEUsaUJBQVksR0FBVyxDQUFDLENBQUM7UUFDekIsWUFBTyxHQUFXLENBQUMsQ0FBQztRQUNwQixZQUFPLEdBQVcsUUFBUSxDQUFDO1FB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O2dCQUdZLGVBQWU7c0JBQWpDLE1BQU07Z0JBR0UsVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLElBQUk7c0JBQVosS0FBSztnQkFFZ0IsS0FBSztzQkFBMUIsV0FBVzt1QkFBQyxPQUFPO2dCQUdWLGdCQUFnQjtzQkFEekIsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQSxVQUE0QixDQUFBLEVBQUU7Z0JBSXBELGtCQUFrQjtzQkFEM0IsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsb0NBQW9DLEVBQUU7Z0JBSTVELGtCQUFrQjtzQkFEM0IsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQSxVQUE0QixDQUFBLEVBQUU7Z0JBSXRELG9CQUFvQjtzQkFEN0IsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsb0NBQW9DLEVBQUU7Z0JBK0RwRSxVQUFVO3NCQURiLEtBQUs7Z0JBYUYsVUFBVTtzQkFEYixLQUFLO2dCQVlGLFFBQVE7c0JBRFgsS0FBSztnQkFlRixPQUFPO3NCQURWLEtBQUs7Z0JBYUYsT0FBTztzQkFEVixLQUFLO2dCQVlGLFNBQVM7c0JBRFosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBjb2VyY2VCb29sZWFuUHJvcGVydHksXHJcbiAgICBjb2VyY2VOdW1iZXJQcm9wZXJ0eSxcclxuICAgIE51bWJlcklucHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7XHJcbiAgICBBZnRlclZpZXdJbml0LFxyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIENvbXBvbmVudCxcclxuICAgIERpcmVjdGl2ZSxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBIb3N0QmluZGluZyxcclxuICAgIEhvc3RMaXN0ZW5lcixcclxuICAgIElucHV0LFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgU2ltcGxlQ2hhbmdlcyxcclxuICAgIFZpZXdDaGlsZCxcclxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb25MaWtlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IERhdGV0aW1lQWRhcHRlciB9IGZyb20gJ2NtYXQvY29tcG9uZW50cy9hZGFwdGVyJztcclxuaW1wb3J0IHsgQ21hdERhdGV0aW1lcGlja2VyQ2xvY2tDb21wb25lbnQgfSBmcm9tICcuL2Nsb2NrJztcclxuaW1wb3J0IHsgQ21hdERhdGV0aW1lcGlja2VyRmlsdGVyVHlwZSB9IGZyb20gJy4vZGF0ZXRpbWVwaWNrZXItZmlsdGVydHlwZSc7XHJcbmltcG9ydCB7IENtYXREYXRldGltZXBpY2tlckludGwgfSBmcm9tICcuL2RhdGV0aW1lcGlja2VyLWludGwnO1xyXG5pbXBvcnQgeyBDbWF0QU1QTSwgQ21hdENsb2NrVmlldyB9IGZyb20gJy4vZGF0ZXRpbWVwaWNrZXItdHlwZXMnO1xyXG5cclxuXHJcblxyXG5mdW5jdGlvbiBwYWQobnVtOiBOdW1iZXJJbnB1dCwgc2l6ZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIG51bSA9IFN0cmluZyhudW0pO1xyXG4gICAgd2hpbGUgKG51bS5sZW5ndGggPCBzaXplKSB7IG51bSA9ICcwJyArIG51bTsgfVxyXG4gICAgcmV0dXJuIG51bTtcclxufVxyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ2lucHV0LmNtYXQtZGF0ZXRpbWVwaWNrZXItdGltZS1pbnB1dCcsXHJcbiAgICBleHBvcnRBczogJ2NtYXREYXRldGltZXBpY2tlclRpbWVJbnB1dCcsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0RGF0ZXRpbWVwaWNrZXJUaW1lSW5wdXREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gICAgQElucHV0KCkgdGltZUludGVydmFsOiBudW1iZXIgPSAxO1xyXG4gICAgQElucHV0KCkgdGltZU1pbjogbnVtYmVyID0gMDtcclxuICAgIEBJbnB1dCgpIHRpbWVNYXg6IG51bWJlciA9IEluZmluaXR5O1xyXG5cclxuICAgIEBPdXRwdXQoKSB0aW1lVmFsdWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxOdW1iZXJJbnB1dD4oKTtcclxuXHJcbiAgICBwcml2YXRlIF92YWx1ZTogTnVtYmVySW5wdXQ7XHJcblxyXG4gICAgcHJpdmF0ZSBfa2V5RG93bkxpc3RlbmVyID0gdGhpcy5rZXlEb3duSGFuZGxlci5iaW5kKHRoaXMpO1xyXG4gICAgcHJpdmF0ZSBfa2V5UHJlc3NMaXN0ZW5lciA9IHRoaXMua2V5UHJlc3NIYW5kbGVyLmJpbmQodGhpcyk7XHJcbiAgICBwcml2YXRlIF9pbnB1dEV2ZW50TGlzdGVuZXIgPSB0aGlzLmlucHV0Q2hhbmdlZEhhbmRsZXIuYmluZCh0aGlzKTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGVtZW50OiBFbGVtZW50UmVmLCBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuX2tleURvd25MaXN0ZW5lciwge1xyXG4gICAgICAgICAgICBwYXNzaXZlOiB0cnVlLFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBEbyBub3QgcGFzc2l2ZSBzaW5jZSB3ZSB3YW50IHRvIGJlIGFibGUgdG8gcHJldmVudERlZmF1bHQoKVxyXG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXByZXNzJywgdGhpcy5fa2V5UHJlc3NMaXN0ZW5lcik7XHJcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCB0aGlzLl9pbnB1dEV2ZW50TGlzdGVuZXIsIHtcclxuICAgICAgICAgICAgcGFzc2l2ZTogdHJ1ZSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaGFzRm9jdXMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCAmJiB0aGlzLl9lbGVtZW50Py5uYXRpdmVFbGVtZW50ID09PSBkb2N1bWVudD8uYWN0aXZlRWxlbWVudDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaW5wdXRFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBXZSBsb29rIGhlcmUgYXQgdGhlIHBsYWNlaG9sZGVyIHZhbHVlLCBiZWNhdXNlIHdlIHdyaXRlICcnIGludG8gdGhlIHZhbHVlIG9uIGZvY3VzXHJcbiAgICAvLyBwbGFjZWhvbGRlciBzaG91bGQgYWx3YXlzIGJlIHVwIHRvIGRhdGUgd2l0aCBcImN1cnJlbnRWYWx1ZVwiXHJcbiAgICBnZXQgdmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgLy8gQXQgdGhlIHN0YXJ0IF92YWx1ZSBpcyB1bmRlZmluZWQgdGhlcmVmb3JlIHRoaXMgd291bGQgcmVzdWx0IGluIG5vdCB2YWxpZCBhbmRcclxuICAgICAgICAvLyBtYWtlIGEgdWdseSB3YXJuaW5nIGJvcmRlciBhZnRlcndhcmRzIHdlIGNhbiBzYWZlbHkgY2hlY2tcclxuICAgICAgICBpZiAodGhpcy5fdmFsdWUpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gU3RyaW5nKHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgIC8vIEl0IGNhbiBiZSB0aGF0IGN1cnJlbnRWYWx1ZSBpcyBlbXB0eSBkdWUgdG8gd2UgcmVtb3ZpbmcgdGhlIHZhbHVlIG9uIGZvY3VzLFxyXG4gICAgICAgICAgICAvLyBpZiB0aGF0IGlzIHRoZSBjYXNlIHdlIHNob3VsZCBjaGVjayBwcmV2aW91cyB2YWx1ZSB3aGljaCBzaG91bGQgYmUgaW4gdGhlIHBsYWNlaG9sZGVyXHJcbiAgICAgICAgICAgIGlmIChjdXJyZW50VmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFkKHRoaXMuX3ZhbHVlLDIpID09PSB0aGlzLmlucHV0RWxlbWVudC52YWx1ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwYWQodGhpcy5fdmFsdWUsMikgPT09IHRoaXMuaW5wdXRFbGVtZW50LnBsYWNlaG9sZGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpbnZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhdGhpcy52YWxpZDtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IHRpbWVWYWx1ZSh2YWx1ZTogTnVtYmVySW5wdXQpIHtcclxuICAgICAgICB0aGlzLl92YWx1ZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcclxuICAgICAgICBpZiAoIXRoaXMuaGFzRm9jdXMpIHtcclxuICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMuX3ZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy53cml0ZVBsYWNlaG9sZGVyKHRoaXMuX3ZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdibHVyJywgWyckZXZlbnQnXSlcclxuICAgIGJsdXIoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMuX3ZhbHVlKTtcclxuICAgICAgICB0aGlzLndyaXRlUGxhY2Vob2xkZXIodGhpcy5fdmFsdWUpO1xyXG4gICAgICAgIHRoaXMudGltZVZhbHVlQ2hhbmdlZC5lbWl0KHRoaXMuX3ZhbHVlKTtcclxuICAgIH1cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJywgWyckZXZlbnQnXSlcclxuICAgIGZvY3VzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZSgnJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXcml0ZSB2YWx1ZSB0byBpbnB1dEVsZW1lbnRcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgTnVtYmVySW5wdXRcclxuICAgICAqL1xyXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogTnVtYmVySW5wdXQpOiB2b2lkIHtcclxuICAgICAgICBpZiAodmFsdWUgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlID0gcGFkKHZhbHVlLCAyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXcml0ZXMgdmFsdWUgdG8gcGxhY2Vob2xkZXJcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgTnVtYmVySW5wdXRcclxuICAgICAqL1xyXG4gICAgd3JpdGVQbGFjZWhvbGRlcih2YWx1ZTogTnVtYmVySW5wdXQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5wbGFjZWhvbGRlciA9IHBhZCh2YWx1ZSwgMik7XHJcbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIGtleURvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKFN0cmluZyh0aGlzLmlucHV0RWxlbWVudC52YWx1ZSkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgdmFsdWU6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ0Fycm93VXAnKSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHRoaXMuX3ZhbHVlKTtcclxuICAgICAgICAgICAgICAgIHZhbHVlICs9IHRoaXMudGltZUludGVydmFsO1xyXG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuY29kZSA9PT0gJ0Fycm93RG93bicpIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodGhpcy5fdmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgLT0gdGhpcy50aW1lSW50ZXJ2YWw7XHJcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gaWYgdmFsdWUgaGFzIGNoYW5nZWRcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndyaXRlUGxhY2Vob2xkZXIodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbGFtcElucHV0VmFsdWUoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudGltZVZhbHVlQ2hhbmdlZC5lbWl0KHRoaXMuX3ZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZXZlbnQgbm9uIG51bWJlciBpbnB1dHMgaW4gdGhlIGlucHV0RWxlbWVudCB3aXRoIHRoZSBleGNlcHRpb24gb2YgRW50ZXIvQmFja1NwYWNlXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGV2ZW50IEtleWJvYXJkRXZlbnRcclxuICAgICAqL1xyXG4gICAga2V5UHJlc3NIYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQ/LmtleSA/PyBudWxsO1xyXG4gICAgICAgIGlmIChpc05hTihOdW1iZXIoa2V5KSkgJiYga2V5ICE9PSAnRW50ZXInKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlucHV0Q2hhbmdlZEhhbmRsZXIoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jbGFtcElucHV0VmFsdWUoKTtcclxuICAgICAgICB0aGlzLnRpbWVWYWx1ZUNoYW5nZWQuZW1pdCh0aGlzLl92YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xhbXBJbnB1dFZhbHVlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmlucHV0RWxlbWVudD8udmFsdWUgPT09ICcnKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodGhpcy5pbnB1dEVsZW1lbnQ/LnZhbHVlID8/IG51bGwpO1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBjbGFtcGVkVmFsdWUgPSBNYXRoLm1pbihNYXRoLm1heCh2YWx1ZSwgdGhpcy50aW1lTWluKSwgdGhpcy50aW1lTWF4KTtcclxuICAgICAgICAgICAgaWYgKGNsYW1wZWRWYWx1ZSAhPT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZShjbGFtcGVkVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53cml0ZVBsYWNlaG9sZGVyKGNsYW1wZWRWYWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBjbGFtcGVkVmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlIGV2ZW50IGxpc3RlbmVycyBvbiBkZXN0cnVjdGlvblxyXG4gICAgICovXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5fa2V5RG93bkxpc3RlbmVyKTtcclxuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlwcmVzcycsIHRoaXMuX2tleVByZXNzTGlzdGVuZXIpO1xyXG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2lucHV0JywgdGhpcy5faW5wdXRFdmVudExpc3RlbmVyKTtcclxuICAgIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NtYXQtZGF0ZXRpbWVwaWNrZXItdGltZScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGltZS5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWyd0aW1lLnNjc3MnXSxcclxuICAgIGV4cG9ydEFzOiAnY21hdERhdGV0aW1lcGlja2VyVGltZScsXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW0NtYXREYXRldGltZXBpY2tlclRpbWVJbnB1dERpcmVjdGl2ZSwgTWF0QnV0dG9uTW9kdWxlLCBDbWF0RGF0ZXRpbWVwaWNrZXJDbG9ja0NvbXBvbmVudF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENtYXREYXRldGltZXBpY2tlclRpbWVDb21wb25lbnQ8RD4gaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgICAvKiogRW1pdHMgd2hlbiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGRhdGUgY2hhbmdlcy4gKi9cclxuICAgIEBPdXRwdXQoKSByZWFkb25seSBzZWxlY3RlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RD4oKTtcclxuXHJcbiAgICAvKiogRW1pdHMgd2hlbiBhbnkgZGF0ZSBjaGFuZ2VzLiAqL1xyXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGFjdGl2ZURhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEQ+KCk7XHJcblxyXG4gICAgLyoqIEVtaXRzIHdoZW4gYW55IGRhdGUgaXMgc2VsZWN0ZWQuICovXHJcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgdXNlclNlbGVjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICAvKiogRW1pdHMgd2hlbiBBTS9QTSBidXR0b24gYXJlIGNsaWNrZWQuICovXHJcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgYW1wbUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q21hdEFNUE0+KCk7XHJcblxyXG4gICAgLyoqIEVtaXRzIHdoZW4gQU0vUE0gYnV0dG9uIGFyZSBjbGlja2VkLiAqL1xyXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGNsb2NrVmlld0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q21hdENsb2NrVmlldz4oKTtcclxuXHJcbiAgICAvKiogQSBmdW5jdGlvbiB1c2VkIHRvIGZpbHRlciB3aGljaCBkYXRlcyBhcmUgc2VsZWN0YWJsZS4gKi9cclxuICAgIEBJbnB1dCgpIGRhdGVGaWx0ZXIhOiAoZGF0ZTogRCwgdHlwZTogQ21hdERhdGV0aW1lcGlja2VyRmlsdGVyVHlwZSkgPT4gYm9vbGVhbjtcclxuXHJcbiAgICAvKiogU3RlcCBvdmVyIG1pbnV0ZXMuICovXHJcbiAgICBASW5wdXQoKSBpbnRlcnZhbDogbnVtYmVyID0gMTtcclxuICAgIC8qKiBXaGV0aGVyIHRoZSB0aW1lIGlzIG5vdyBpbiBBTSBvciBQTS4gKi9cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cclxuICAgIEBJbnB1dCgpIEFNUE06IENtYXRBTVBNID0gJ0FNJztcclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3MgPSAnY21hdC1kYXRldGltZXBpY2tlci10aW1lJztcclxuXHJcbiAgICBAVmlld0NoaWxkKCdob3VySW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4gfSlcclxuICAgIHByb3RlY3RlZCBob3VySW5wdXRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+IHwgdm9pZDtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdob3VySW5wdXQnLCB7IHJlYWQ6IENtYXREYXRldGltZXBpY2tlclRpbWVJbnB1dERpcmVjdGl2ZSB9KVxyXG4gICAgcHJvdGVjdGVkIGhvdXJJbnB1dERpcmVjdGl2ZTogQ21hdERhdGV0aW1lcGlja2VyVGltZUlucHV0RGlyZWN0aXZlIHwgdm9pZDtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdtaW51dGVJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PiB9KVxyXG4gICAgcHJvdGVjdGVkIG1pbnV0ZUlucHV0RWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PiB8IHZvaWQ7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnbWludXRlSW5wdXQnLCB7IHJlYWQ6IENtYXREYXRldGltZXBpY2tlclRpbWVJbnB1dERpcmVjdGl2ZSB9KVxyXG4gICAgcHJvdGVjdGVkIG1pbnV0ZUlucHV0RGlyZWN0aXZlOiBDbWF0RGF0ZXRpbWVwaWNrZXJUaW1lSW5wdXREaXJlY3RpdmUgfCB2b2lkO1xyXG5cclxuICAgIGRhdGV0aW1lcGlja2VySW50bENoYW5nZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbkxpa2U7XHJcblxyXG4gICAgcHJpdmF0ZSBfdHdlbHZlaG91ciA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBfYWN0aXZlRGF0ZSE6IEQ7XHJcbiAgICBwcml2YXRlIF9zZWxlY3RlZCE6IEQgfCBudWxsO1xyXG4gICAgcHJpdmF0ZSBfbWluRGF0ZSE6IEQgfCBudWxsO1xyXG4gICAgcHJpdmF0ZSBfbWF4RGF0ZSE6IEQgfCBudWxsO1xyXG4gICAgLyoqIFdoZXRoZXIgdGhlIGNsb2NrIGlzIGluIGhvdXIgdmlldy4gKi9cclxuICAgIHByaXZhdGUgX2Nsb2NrVmlldzogQ21hdENsb2NrVmlldyA9ICdob3VyJztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIF9hZGFwdGVyOiBEYXRldGltZUFkYXB0ZXI8RD4sXHJcbiAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByb3RlY3RlZCBkYXRldGltZXBpY2tlckludGw6IENtYXREYXRldGltZXBpY2tlckludGxcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuZGF0ZXRpbWVwaWNrZXJJbnRsQ2hhbmdlc1N1YnNjcmlwdGlvbiA9IHRoaXMuZGF0ZXRpbWVwaWNrZXJJbnRsLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc0hvdXJWaWV3KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jbG9ja1ZpZXcgPT09ICdob3VyJztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNNaW51dGVWaWV3KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jbG9ja1ZpZXcgPT09ICdob3VyJztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaG91cigpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghdGhpcy5hY3RpdmVEYXRlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnR3ZWx2ZWhvdXIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAnMTInO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuICcwMCc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGhvdXIgPSBOdW1iZXIodGhpcy5fYWRhcHRlci5nZXRIb3VyKHRoaXMuYWN0aXZlRGF0ZSkpO1xyXG4gICAgICAgIGlmICghdGhpcy50d2VsdmVob3VyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByZWZpeFdpdGhaZXJvKGhvdXIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGhvdXIgPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuICcxMic7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJlZml4V2l0aFplcm8oaG91ciA+IDEyID8gaG91ciAtIDEyIDogaG91cik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldCBtaW51dGUoKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAodGhpcy5hY3RpdmVEYXRlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByZWZpeFdpdGhaZXJvKHRoaXMuX2FkYXB0ZXIuZ2V0TWludXRlKHRoaXMuYWN0aXZlRGF0ZSkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuICcwMCc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFdoZXRoZXIgdGhlIGNsb2NrIHVzZXMgMTIgaG91ciBmb3JtYXQuICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCB0d2VsdmVob3VyKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl90d2VsdmVob3VyO1xyXG4gICAgfVxyXG4gICAgc2V0IHR3ZWx2ZWhvdXIodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl90d2VsdmVob3VyID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBkYXRlIHRvIGRpc3BsYXkgaW4gdGhpcyBjbG9jayB2aWV3LlxyXG4gICAgICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBhY3RpdmVEYXRlKCk6IEQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmVEYXRlO1xyXG4gICAgfVxyXG4gICAgc2V0IGFjdGl2ZURhdGUodmFsdWU6IEQpIHtcclxuICAgICAgICB0aGlzLl9hY3RpdmVEYXRlID0gdGhpcy5fYWRhcHRlci5jbGFtcERhdGUodmFsdWUsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZGF0ZS4gKi9cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHNlbGVjdGVkKCk6IEQgfCBudWxsIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XHJcbiAgICB9XHJcbiAgICBzZXQgc2VsZWN0ZWQodmFsdWU6IEQgfCBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSB0aGlzLl9hZGFwdGVyLmdldFZhbGlkRGF0ZU9yTnVsbCh0aGlzLl9hZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSk7XHJcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IHRoaXMuX3NlbGVjdGVkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIFRoZSBtaW5pbXVtIHNlbGVjdGFibGUgZGF0ZS4gKi9cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IG1pbkRhdGUoKTogRCB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9taW5EYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBtaW5EYXRlKHZhbHVlOiBEIHwgbnVsbCkge1xyXG4gICAgICAgIHRoaXMuX21pbkRhdGUgPSB0aGlzLl9hZGFwdGVyLmdldFZhbGlkRGF0ZU9yTnVsbCh0aGlzLl9hZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiBUaGUgbWF4aW11bSBzZWxlY3RhYmxlIGRhdGUuICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBtYXhEYXRlKCk6IEQgfCBudWxsIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbWF4RGF0ZTtcclxuICAgIH1cclxuICAgIHNldCBtYXhEYXRlKHZhbHVlOiBEIHwgbnVsbCkge1xyXG4gICAgICAgIHRoaXMuX21heERhdGUgPSB0aGlzLl9hZGFwdGVyLmdldFZhbGlkRGF0ZU9yTnVsbCh0aGlzLl9hZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiBXaGV0aGVyIHRoZSBjbG9jayBzaG91bGQgYmUgc3RhcnRlZCBpbiBob3VyIG9yIG1pbnV0ZSB2aWV3LiAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgY2xvY2tWaWV3KCk6IENtYXRDbG9ja1ZpZXcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jbG9ja1ZpZXc7XHJcbiAgICB9XHJcbiAgICBzZXQgY2xvY2tWaWV3KHZhbHVlOiBDbWF0Q2xvY2tWaWV3KSB7XHJcbiAgICAgICAgdGhpcy5fY2xvY2tWaWV3ID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJlZml4V2l0aFplcm8odmFsdWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKHZhbHVlIDwgMTApIHtcclxuICAgICAgICAgICAgcmV0dXJuICcwJyArIFN0cmluZyh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgLy8gd2hlbiBjbG9ja1ZpZXcgY2hhbmdlcyBieSBpbnB1dCB3ZSBzaG91bGQgZm9jdXMgdGhlIGNvcnJlY3QgaW5wdXRcclxuICAgICAgICBpZiAoY2hhbmdlc1snY2xvY2tWaWV3J10pIHtcclxuICAgICAgICAgICAgaWYgKGNoYW5nZXNbJ2Nsb2NrVmlldyddLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlc1snY2xvY2tWaWV3J10ucHJldmlvdXNWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c0lucHV0RWxlbWVudCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZvY3VzSW5wdXRFbGVtZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9jdXNJbnB1dEVsZW1lbnQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2xvY2tWaWV3ID09PSAnaG91cicpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaG91cklucHV0RWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgKHRoaXMuaG91cklucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZvY3VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5taW51dGVJbnB1dEVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgICh0aGlzLm1pbnV0ZUlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZvY3VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlSG91cklucHV0Q2hhbmdlKHZhbHVlOiBOdW1iZXJJbnB1dCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGhvdXIgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgICAgICAgaWYgKGhvdXIgfHwgaG91ciA9PT0gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuX2FkYXB0ZXIuY3JlYXRlRGF0ZXRpbWUoXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9hZGFwdGVyLmdldFllYXIodGhpcy5hY3RpdmVEYXRlKSxcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FkYXB0ZXIuZ2V0TW9udGgodGhpcy5hY3RpdmVEYXRlKSxcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FkYXB0ZXIuZ2V0RGF0ZSh0aGlzLmFjdGl2ZURhdGUpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVIb3VyRm9yQW1QbShob3VyKSxcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FkYXB0ZXIuZ2V0TWludXRlKHRoaXMuYWN0aXZlRGF0ZSlcclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZURhdGUgPSB0aGlzLl9hZGFwdGVyLmNsYW1wRGF0ZShuZXdWYWx1ZSwgdGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUpO1xyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZURhdGVDaGFuZ2UuZW1pdCh0aGlzLmFjdGl2ZURhdGUpO1xyXG5cclxuICAgICAgICAgICAgLy8gSWYgcHJldmlvdXNseSB3ZSBkaWQgc2V0IFtjbWF0VmFsdWVdPVwiMTNcIiBhbmQgdGhlIGlucHV0IGNoYW5nZWQgdG8gNiwgYW5kIHRoZSBjbGFtcGluZyB3aWxsIG1ha2UgaXQgXCIxM1wiIGFnYWluXHJcbiAgICAgICAgICAgIC8vIHRoZW4gdGhlIGhvdXJJbnB1dERpcmVjdGl2ZSB3aWxsIG5vdCBoYXZlIGJlZW4gdXBkYXRlZCBzaW5jZSBcIjEzXCIgPT09IFwiMTNcIiBzYW1lIHJlZmVyZW5jZSBzbyBubyBjaGFuZ2UgZGV0ZWN0ZWRcclxuICAgICAgICAgICAgLy8gYnkgZGlyZWN0bHkgc2V0dGluZyBpdCB3aXRoaW4gdGhpcyBoYW5kbGVyLCB3ZSBoYW5kbGUgdGhpcyB1c2VjYXNlXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmhvdXJJbnB1dERpcmVjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ob3VySW5wdXREaXJlY3RpdmUudGltZVZhbHVlID0gdGhpcy5ob3VyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUhvdXJGb3JBbVBtKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgICAgIGlmICghdGhpcy50d2VsdmVob3VyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHZhbHVlIHNob3VsZCBiZSBiZXR3ZWVuIDEtMTJcclxuICAgICAgICBpZiAodGhpcy5BTVBNID09PSAnQU0nKSB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gMCB8fCB2YWx1ZSA9PT0gMTIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gUE1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlID09PSAwIHx8IHZhbHVlID09PSAxMikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDEyO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBvdGhlciBjYXNlcywgd2Ugc2hvdWxkIGFkZCAxMiB0byB0aGUgdmFsdWUgYWthIDM6MDAgUE0gPSAzICsgMTIgPSAxNTowMFxyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgKyAxMjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlTWludXRlSW5wdXRDaGFuZ2UodmFsdWU6IE51bWJlcklucHV0KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgbWludXRlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xyXG4gICAgICAgIGlmIChtaW51dGUgfHwgbWludXRlID09PSAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5fYWRhcHRlci5jcmVhdGVEYXRldGltZShcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FkYXB0ZXIuZ2V0WWVhcih0aGlzLmFjdGl2ZURhdGUpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWRhcHRlci5nZXRNb250aCh0aGlzLmFjdGl2ZURhdGUpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWRhcHRlci5nZXREYXRlKHRoaXMuYWN0aXZlRGF0ZSksXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9hZGFwdGVyLmdldEhvdXIodGhpcy5fYWN0aXZlRGF0ZSksXHJcbiAgICAgICAgICAgICAgICBtaW51dGVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5fYWN0aXZlRGF0ZSA9IHRoaXMuX2FkYXB0ZXIuY2xhbXBEYXRlKG5ld1ZhbHVlLCB0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRGF0ZUNoYW5nZS5lbWl0KHRoaXMuYWN0aXZlRGF0ZSk7XHJcblxyXG4gICAgICAgICAgICAvLyBJZiBwcmV2aW91c2x5IHdlIGRpZCBzZXQgW2NtYXRWYWx1ZV09XCI0MFwiIGFuZCB0aGUgaW5wdXQgY2hhbmdlZCB0byAzMCwgYW5kIHRoZSBjbGFtcGluZyB3aWxsIG1ha2UgaXQgXCI0MFwiIGFnYWluXHJcbiAgICAgICAgICAgIC8vIHRoZW4gdGhlIG1pbnV0ZUlucHV0RGlyZWN0aXZlIHdpbGwgbm90IGhhdmUgYmVlbiB1cGRhdGVkIHNpbmNlIFwiNDBcIiA9PT0gXCI0MFwiIHNhbWUgcmVmZXJlbmNlIHNvIG5vIGNoYW5nZSBkZXRlY3RlZFxyXG4gICAgICAgICAgICAvLyBieSBkaXJlY3RseSBzZXR0aW5nIGl0IHdpdGhpbiB0aGlzIGhhbmRsZXIsIHdlIGhhbmRsZSB0aGlzIHVzZWNhc2VcclxuICAgICAgICAgICAgaWYgKHRoaXMubWludXRlSW5wdXREaXJlY3RpdmUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWludXRlSW5wdXREaXJlY3RpdmUudGltZVZhbHVlID0gdGhpcy5taW51dGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlRm9jdXMoY2xvY2tWaWV3OiBDbWF0Q2xvY2tWaWV3KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jbG9ja1ZpZXcgPSBjbG9ja1ZpZXc7XHJcbiAgICAgICAgdGhpcy5jbG9ja1ZpZXdDaGFuZ2UuZW1pdChjbG9ja1ZpZXcpO1xyXG4gICAgfVxyXG5cclxuICAgIHRpbWVTZWxlY3RlZChkYXRlOiBEKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2xvY2tWaWV3ID09PSAnaG91cicpIHtcclxuICAgICAgICAgICAgdGhpcy5jbG9ja1ZpZXcgPSAnbWludXRlJztcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fYWN0aXZlRGF0ZSA9IHRoaXMuc2VsZWN0ZWQgPSBkYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQWN0aXZlRGF0ZUNoYW5nZShkYXRlOiBEKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fYWN0aXZlRGF0ZSA9IGRhdGU7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVEYXRlQ2hhbmdlLmVtaXQoZGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlT2soKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdCh0aGlzLl9zZWxlY3RlZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXNlclNlbGVjdGlvbi5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlQ2FuY2VsKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudXNlclNlbGVjdGlvbi5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0ZXRpbWVwaWNrZXJJbnRsQ2hhbmdlc1N1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGV0aW1lcGlja2VySW50bENoYW5nZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNtYXQtZGF0ZXRpbWVwaWNrZXItdGltZS1pbnB1dC13cmFwcGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJjbWF0LWRhdGV0aW1lcGlja2VyLXRpbWUtaW5wdXQtaW5uZXJcIj5cbiAgICA8aW5wdXQgY2xhc3M9XCJjbWF0LWRhdGV0aW1lcGlja2VyLXRpbWUtaW5wdXRcIiBbY2xhc3MuY21hdC1kYXRldGltZXBpY2tlci10aW1lLWlucHV0LWFjdGl2ZV09XCJjbG9ja1ZpZXcgPT09ICdob3VyJ1wiXG4gICAgICBbY2xhc3MuY21hdC1kYXRldGltZXBpY2tlci10aW1lLWlucHV0LXdhcm5pbmddPVwiIWhvdXJJbnB1dC52YWxpZFwiICNob3VySW5wdXQ9XCJjbWF0RGF0ZXRpbWVwaWNrZXJUaW1lSW5wdXRcIlxuICAgICAgdHlwZT1cInRleHRcIiBpbnB1dG1vZGU9XCJudW1lcmljXCIgbWF4bGVuZ3RoPVwiMlwiIFt0aW1lTWluXT1cInR3ZWx2ZWhvdXIgPyAxIDogMFwiIFt0aW1lTWF4XT1cInR3ZWx2ZWhvdXIgPyAxMiA6IDIzXCJcbiAgICAgIFt0aW1lVmFsdWVdPVwiaG91clwiICh0aW1lVmFsdWVDaGFuZ2VkKT1cImhhbmRsZUhvdXJJbnB1dENoYW5nZSgkZXZlbnQpXCIgKGZvY3VzKT1cImhhbmRsZUZvY3VzKCdob3VyJylcIiAvPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY21hdC1kYXRldGltZXBpY2tlci10aW1lLXNlcGVyYXRvclwiPjo8L2Rpdj5cblxuICAgICAgPGlucHV0IGNsYXNzPVwiY21hdC1kYXRldGltZXBpY2tlci10aW1lLWlucHV0XCIgW2NsYXNzLmNtYXQtZGF0ZXRpbWVwaWNrZXItdGltZS1pbnB1dC1hY3RpdmVdPVwiY2xvY2tWaWV3ID09PSAnbWludXRlJ1wiXG4gICAgICAgIFtjbGFzcy5jbWF0LWRhdGV0aW1lcGlja2VyLXRpbWUtaW5wdXQtd2FybmluZ109XCIhbWludXRlSW5wdXQudmFsaWRcIiAjbWludXRlSW5wdXQ9XCJjbWF0RGF0ZXRpbWVwaWNrZXJUaW1lSW5wdXRcIlxuICAgICAgICB0eXBlPVwidGV4dFwiIGlucHV0bW9kZT1cIm51bWVyaWNcIiBtYXhsZW5ndGg9XCIyXCIgW3RpbWVNaW5dPVwiMFwiIFt0aW1lTWF4XT1cIjU5XCIgW3RpbWVWYWx1ZV09XCJtaW51dGVcIlxuICAgICAgICAodGltZVZhbHVlQ2hhbmdlZCk9XCJoYW5kbGVNaW51dGVJbnB1dENoYW5nZSgkZXZlbnQpXCIgW3RpbWVJbnRlcnZhbF09XCJpbnRlcnZhbFwiIChmb2N1cyk9XCJoYW5kbGVGb2N1cygnbWludXRlJylcIiAvPlxuXG4gICAgICAgIEBpZiAodHdlbHZlaG91cikge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbWF0LWRhdGV0aW1lcGlja2VyLXRpbWUtYW1wbVwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNtYXQtZGF0ZXRpbWVwaWNrZXItdGltZS1hbVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5jbWF0LWRhdGV0aW1lcGlja2VyLXRpbWUtYW1wbS1hY3RpdmVdPVwiQU1QTSA9PT0gJ0FNJ1wiIGFyaWEtbGFiZWw9XCJBTVwiXG4gICAgICAgICAgICAoa2V5ZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiAoY2xpY2spPVwiYW1wbUNoYW5nZS5lbWl0KCdBTScpXCI+QU08L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbWF0LWRhdGV0aW1lcGlja2VyLXRpbWUtcG1cIlxuICAgICAgICAgICAgICBbY2xhc3MuY21hdC1kYXRldGltZXBpY2tlci10aW1lLWFtcG0tYWN0aXZlXT1cIkFNUE0gPT09ICdQTSdcIiBhcmlhLWxhYmVsPVwiUE1cIlxuICAgICAgICAgICAgKGtleWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgKGNsaWNrKT1cImFtcG1DaGFuZ2UuZW1pdCgnUE0nKVwiPlBNPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGNtYXQtZGF0ZXRpbWVwaWNrZXItY2xvY2sgKHNlbGVjdGVkQ2hhbmdlKT1cInRpbWVTZWxlY3RlZCgkZXZlbnQpXCIgKGFjdGl2ZURhdGVDaGFuZ2UpPVwib25BY3RpdmVEYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgW2RhdGVGaWx0ZXJdPVwiZGF0ZUZpbHRlclwiIFtpbnRlcnZhbF09XCJpbnRlcnZhbFwiIFttYXhEYXRlXT1cIm1heERhdGVcIiBbbWluRGF0ZV09XCJtaW5EYXRlXCIgW3NlbGVjdGVkXT1cInNlbGVjdGVkXCJcbiAgICAgIFtzdGFydFZpZXddPVwiY2xvY2tWaWV3XCIgW3R3ZWx2ZWhvdXJdPVwidHdlbHZlaG91clwiPlxuICAgIDwvY21hdC1kYXRldGltZXBpY2tlci1jbG9jaz5cblxuICAgIDxkaXYgY2xhc3M9XCJjbWF0LWRhdGV0aW1lcGlja2VyLXRpbWUtYnV0dG9uLXdyYXBwZXIgc3BhY2UteC00XCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiY21hdD1kYXRldGltZXBpY2tlci10aW1lLWNhbmNlbC1idXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJoYW5kbGVDYW5jZWwoKVwiPlxuICAgICAgICB7eyBkYXRldGltZXBpY2tlckludGwuY2FuY2VsTGFiZWwgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImNtYXQtZGF0ZXRpbWVwaWNrZXItdGltZS1vay1idXR0b25cIiBtYXQtZmxhdC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJoYW5kbGVPaygpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIm1pbnV0ZUlucHV0RGlyZWN0aXZlPy5pbnZhbGlkIHx8IGhvdXJJbnB1dERpcmVjdGl2ZT8uaW52YWxpZFwiPlxuICAgICAgICB7eyBkYXRldGltZXBpY2tlckludGwub2tMYWJlbCB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+Il19
|
|
455
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9tYXRlcmlhbC1kYXRldGltZXBpY2tlci90aW1lLnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL21hdGVyaWFsLWRhdGV0aW1lcGlja2VyL3RpbWUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLG9CQUFvQixHQUV2QixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFFSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUczRCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxTQUFTLENBQUM7Ozs7O0FBTzNELFNBQVMsR0FBRyxDQUFDLEdBQWdCLEVBQUUsSUFBWTtJQUN2QyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLE9BQU8sR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQUMsQ0FBQztJQUM5QyxPQUFPLEdBQUcsQ0FBQztBQUNmLENBQUM7QUFPRCxNQUFNLE9BQU8sb0NBQW9DO0lBYTdDLFlBQW9CLFFBQW9CLEVBQVUsSUFBdUI7UUFBckQsYUFBUSxHQUFSLFFBQVEsQ0FBWTtRQUFVLFNBQUksR0FBSixJQUFJLENBQW1CO1FBWmhFLGlCQUFZLEdBQVcsQ0FBQyxDQUFDO1FBQ3pCLFlBQU8sR0FBVyxDQUFDLENBQUM7UUFDcEIsWUFBTyxHQUFXLFFB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c0JBRFgsS0FBSztnQkFlRixPQUFPO3NCQURWLEtBQUs7Z0JBYUYsT0FBTztzQkFEVixLQUFLO2dCQVlGLFNBQVM7c0JBRFosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBjb2VyY2VCb29sZWFuUHJvcGVydHksXHJcbiAgICBjb2VyY2VOdW1iZXJQcm9wZXJ0eSxcclxuICAgIE51bWJlcklucHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7XHJcbiAgICBBZnRlclZpZXdJbml0LFxyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIENvbXBvbmVudCxcclxuICAgIERpcmVjdGl2ZSxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBIb3N0QmluZGluZyxcclxuICAgIEhvc3RMaXN0ZW5lcixcclxuICAgIElucHV0LFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgU2ltcGxlQ2hhbmdlcyxcclxuICAgIFZpZXdDaGlsZCxcclxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb25MaWtlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IERhdGV0aW1lQWRhcHRlciB9IGZyb20gJ2NtYXQvY29tcG9uZW50cy9hZGFwdGVyJztcclxuaW1wb3J0IHsgQ21hdERhdGV0aW1lcGlja2VyQ2xvY2tDb21wb25lbnQgfSBmcm9tICcuL2Nsb2NrJztcclxuaW1wb3J0IHsgQ21hdERhdGV0aW1lcGlja2VyRmlsdGVyVHlwZSB9IGZyb20gJy4vZGF0ZXRpbWVwaWNrZXItZmlsdGVydHlwZSc7XHJcbmltcG9ydCB7IENtYXREYXRldGltZXBpY2tlckludGwgfSBmcm9tICcuL2RhdGV0aW1lcGlja2VyLWludGwnO1xyXG5pbXBvcnQgeyBDbWF0QU1QTSwgQ21hdENsb2NrVmlldyB9IGZyb20gJy4vZGF0ZXRpbWVwaWNrZXItdHlwZXMnO1xyXG5cclxuXHJcblxyXG5mdW5jdGlvbiBwYWQobnVtOiBOdW1iZXJJbnB1dCwgc2l6ZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIG51bSA9IFN0cmluZyhudW0pO1xyXG4gICAgd2hpbGUgKG51bS5sZW5ndGggPCBzaXplKSB7IG51bSA9ICcwJyArIG51bTsgfVxyXG4gICAgcmV0dXJuIG51bTtcclxufVxyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ2lucHV0LmNtYXQtZGF0ZXRpbWVwaWNrZXItdGltZS1pbnB1dCcsXHJcbiAgICBleHBvcnRBczogJ2NtYXREYXRldGltZXBpY2tlclRpbWVJbnB1dCcsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0RGF0ZXRpbWVwaWNrZXJUaW1lSW5wdXREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gICAgQElucHV0KCkgdGltZUludGVydmFsOiBudW1iZXIgPSAxO1xyXG4gICAgQElucHV0KCkgdGltZU1pbjogbnVtYmVyID0gMDtcclxuICAgIEBJbnB1dCgpIHRpbWVNYXg6IG51bWJlciA9IEluZmluaXR5O1xyXG5cclxuICAgIEBPdXRwdXQoKSB0aW1lVmFsdWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxOdW1iZXJJbnB1dD4oKTtcclxuXHJcbiAgICBwcml2YXRlIF92YWx1ZTogTnVtYmVySW5wdXQ7XHJcblxyXG4gICAgcHJpdmF0ZSBfa2V5RG93bkxpc3RlbmVyID0gdGhpcy5rZXlEb3duSGFuZGxlci5iaW5kKHRoaXMpO1xyXG4gICAgcHJpdmF0ZSBfa2V5UHJlc3NMaXN0ZW5lciA9IHRoaXMua2V5UHJlc3NIYW5kbGVyLmJpbmQodGhpcyk7XHJcbiAgICBwcml2YXRlIF9pbnB1dEV2ZW50TGlzdGVuZXIgPSB0aGlzLmlucHV0Q2hhbmdlZEhhbmRsZXIuYmluZCh0aGlzKTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGVtZW50OiBFbGVtZW50UmVmLCBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuX2tleURvd25MaXN0ZW5lciwge1xyXG4gICAgICAgICAgICBwYXNzaXZlOiB0cnVlLFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBEbyBub3QgcGFzc2l2ZSBzaW5jZSB3ZSB3YW50IHRvIGJlIGFibGUgdG8gcHJldmVudERlZmF1bHQoKVxyXG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXByZXNzJywgdGhpcy5fa2V5UHJlc3NMaXN0ZW5lcik7XHJcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCB0aGlzLl9pbnB1dEV2ZW50TGlzdGVuZXIsIHtcclxuICAgICAgICAgICAgcGFzc2l2ZTogdHJ1ZSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaGFzRm9jdXMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCAmJiB0aGlzLl9lbGVtZW50Py5uYXRpdmVFbGVtZW50ID09PSBkb2N1bWVudD8uYWN0aXZlRWxlbWVudDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaW5wdXRFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBXZSBsb29rIGhlcmUgYXQgdGhlIHBsYWNlaG9sZGVyIHZhbHVlLCBiZWNhdXNlIHdlIHdyaXRlICcnIGludG8gdGhlIHZhbHVlIG9uIGZvY3VzXHJcbiAgICAvLyBwbGFjZWhvbGRlciBzaG91bGQgYWx3YXlzIGJlIHVwIHRvIGRhdGUgd2l0aCBcImN1cnJlbnRWYWx1ZVwiXHJcbiAgICBnZXQgdmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgLy8gQXQgdGhlIHN0YXJ0IF92YWx1ZSBpcyB1bmRlZmluZWQgdGhlcmVmb3JlIHRoaXMgd291bGQgcmVzdWx0IGluIG5vdCB2YWxpZCBhbmRcclxuICAgICAgICAvLyBtYWtlIGEgdWdseSB3YXJuaW5nIGJvcmRlciBhZnRlcndhcmRzIHdlIGNhbiBzYWZlbHkgY2hlY2tcclxuICAgICAgICBpZiAodGhpcy5fdmFsdWUpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gU3RyaW5nKHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgIC8vIEl0IGNhbiBiZSB0aGF0IGN1cnJlbnRWYWx1ZSBpcyBlbXB0eSBkdWUgdG8gd2UgcmVtb3ZpbmcgdGhlIHZhbHVlIG9uIGZvY3VzLFxyXG4gICAgICAgICAgICAvLyBpZiB0aGF0IGlzIHRoZSBjYXNlIHdlIHNob3VsZCBjaGVjayBwcmV2aW91cyB2YWx1ZSB3aGljaCBzaG91bGQgYmUgaW4gdGhlIHBsYWNlaG9sZGVyXHJcbiAgICAgICAgICAgIGlmIChjdXJyZW50VmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFkKHRoaXMuX3ZhbHVlLDIpID09PSB0aGlzLmlucHV0RWxlbWVudC52YWx1ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwYWQodGhpcy5fdmFsdWUsMikgPT09IHRoaXMuaW5wdXRFbGVtZW50LnBsYWNlaG9sZGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpbnZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhdGhpcy52YWxpZDtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IHRpbWVWYWx1ZSh2YWx1ZTogTnVtYmVySW5wdXQpIHtcclxuICAgICAgICB0aGlzLl92YWx1ZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcclxuICAgICAgICBpZiAoIXRoaXMuaGFzRm9jdXMpIHtcclxuICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMuX3ZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy53cml0ZVBsYWNlaG9sZGVyKHRoaXMuX3ZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdibHVyJywgWyckZXZlbnQnXSlcclxuICAgIGJsdXIoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMuX3ZhbHVlKTtcclxuICAgICAgICB0aGlzLndyaXRlUGxhY2Vob2xkZXIodGhpcy5fdmFsdWUpO1xyXG4gICAgICAgIHRoaXMudGltZVZhbHVlQ2hhbmdlZC5lbWl0KHRoaXMuX3ZhbHVlKTtcclxuICAgIH1cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJywgWyckZXZlbnQnXSlcclxuICAgIGZvY3VzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZSgnJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXcml0ZSB2YWx1ZSB0byBpbnB1dEVsZW1lbnRcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgTnVtYmVySW5wdXRcclxuICAgICAqL1xyXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogTnVtYmVySW5wdXQpOiB2b2lkIHtcclxuICAgICAgICBpZiAodmFsdWUgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlID0gcGFkKHZhbHVlLCAyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXcml0ZXMgdmFsdWUgdG8gcGxhY2Vob2xkZXJcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgTnVtYmVySW5wdXRcclxuICAgICAqL1xyXG4gICAgd3JpdGVQbGFjZWhvbGRlcih2YWx1ZTogTnVtYmVySW5wdXQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5wbGFjZWhvbGRlciA9IHBhZCh2YWx1ZSwgMik7XHJcbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIGtleURvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKFN0cmluZyh0aGlzLmlucHV0RWxlbWVudC52YWx1ZSkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgdmFsdWU6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ0Fycm93VXAnKSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHRoaXMuX3ZhbHVlKTtcclxuICAgICAgICAgICAgICAgIHZhbHVlICs9IHRoaXMudGltZUludGVydmFsO1xyXG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuY29kZSA9PT0gJ0Fycm93RG93bicpIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodGhpcy5fdmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgLT0gdGhpcy50aW1lSW50ZXJ2YWw7XHJcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gaWYgdmFsdWUgaGFzIGNoYW5nZWRcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndyaXRlUGxhY2Vob2xkZXIodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbGFtcElucHV0VmFsdWUoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudGltZVZhbHVlQ2hhbmdlZC5lbWl0KHRoaXMuX3ZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZXZlbnQgbm9uIG51bWJlciBpbnB1dHMgaW4gdGhlIGlucHV0RWxlbWVudCB3aXRoIHRoZSBleGNlcHRpb24gb2YgRW50ZXIvQmFja1NwYWNlXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGV2ZW50IEtleWJvYXJkRXZlbnRcclxuICAgICAqL1xyXG4gICAga2V5UHJlc3NIYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQ/LmtleSA/PyBudWxsO1xyXG4gICAgICAgIGlmIChpc05hTihOdW1iZXIoa2V5KSkgJiYga2V5ICE9PSAnRW50ZXInKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlucHV0Q2hhbmdlZEhhbmRsZXIoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jbGFtcElucHV0VmFsdWUoKTtcclxuICAgICAgICB0aGlzLnRpbWVWYWx1ZUNoYW5nZWQuZW1pdCh0aGlzLl92YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xhbXBJbnB1dFZhbHVlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmlucHV0RWxlbWVudD8udmFsdWUgPT09ICcnKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodGhpcy5pbnB1dEVsZW1lbnQ/LnZhbHVlID8/IG51bGwpO1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBjbGFtcGVkVmFsdWUgPSBNYXRoLm1pbihNYXRoLm1heCh2YWx1ZSwgdGhpcy50aW1lTWluKSwgdGhpcy50aW1lTWF4KTtcclxuICAgICAgICAgICAgaWYgKGNsYW1wZWRWYWx1ZSAhPT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZShjbGFtcGVkVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53cml0ZVBsYWNlaG9sZGVyKGNsYW1wZWRWYWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBjbGFtcGVkVmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlIGV2ZW50IGxpc3RlbmVycyBvbiBkZXN0cnVjdGlvblxyXG4gICAgICovXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5fa2V5RG93bkxpc3RlbmVyKTtcclxuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlwcmVzcycsIHRoaXMuX2tleVByZXNzTGlzdGVuZXIpO1xyXG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2lucHV0JywgdGhpcy5faW5wdXRFdmVudExpc3RlbmVyKTtcclxuICAgIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NtYXQtZGF0ZXRpbWVwaWNrZXItdGltZScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGltZS5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWyd0aW1lLnNjc3MnXSxcclxuICAgIGV4cG9ydEFzOiAnY21hdERhdGV0aW1lcGlja2VyVGltZScsXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW0NtYXREYXRldGltZXBpY2tlclRpbWVJbnB1dERpcmVjdGl2ZSwgTWF0QnV0dG9uTW9kdWxlLCBDbWF0RGF0ZXRpbWVwaWNrZXJDbG9ja0NvbXBvbmVudF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENtYXREYXRldGltZXBpY2tlclRpbWVDb21wb25lbnQ8RD4gaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgICAvKiogRW1pdHMgd2hlbiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGRhdGUgY2hhbmdlcy4gKi9cclxuICAgIEBPdXRwdXQoKSByZWFkb25seSBzZWxlY3RlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RD4oKTtcclxuXHJcbiAgICAvKiogRW1pdHMgd2hlbiBhbnkgZGF0ZSBjaGFuZ2VzLiAqL1xyXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGFjdGl2ZURhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEQ+KCk7XHJcblxyXG4gICAgLyoqIEVtaXRzIHdoZW4gYW55IGRhdGUgaXMgc2VsZWN0ZWQuICovXHJcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgdXNlclNlbGVjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICAvKiogRW1pdHMgd2hlbiBBTS9QTSBidXR0b24gYXJlIGNsaWNrZWQuICovXHJcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgYW1wbUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q21hdEFNUE0+KCk7XHJcblxyXG4gICAgLyoqIEVtaXRzIHdoZW4gQU0vUE0gYnV0dG9uIGFyZSBjbGlja2VkLiAqL1xyXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGNsb2NrVmlld0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q21hdENsb2NrVmlldz4oKTtcclxuXHJcbiAgICAvKiogQSBmdW5jdGlvbiB1c2VkIHRvIGZpbHRlciB3aGljaCBkYXRlcyBhcmUgc2VsZWN0YWJsZS4gKi9cclxuICAgIEBJbnB1dCgpIGRhdGVGaWx0ZXIhOiAoZGF0ZTogRCwgdHlwZTogQ21hdERhdGV0aW1lcGlja2VyRmlsdGVyVHlwZSkgPT4gYm9vbGVhbjtcclxuXHJcbiAgICAvKiogU3RlcCBvdmVyIG1pbnV0ZXMuICovXHJcbiAgICBASW5wdXQoKSBpbnRlcnZhbDogbnVtYmVyID0gMTtcclxuICAgIC8qKiBXaGV0aGVyIHRoZSB0aW1lIGlzIG5vdyBpbiBBTSBvciBQTS4gKi9cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cclxuICAgIEBJbnB1dCgpIEFNUE06IENtYXRBTVBNID0gJ0FNJztcclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3MgPSAnY21hdC1kYXRldGltZXBpY2tlci10aW1lJztcclxuXHJcbiAgICBAVmlld0NoaWxkKCdob3VySW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4gfSlcclxuICAgIHByb3RlY3RlZCBob3VySW5wdXRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+IHwgdm9pZDtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdob3VySW5wdXQnLCB7IHJlYWQ6IENtYXREYXRldGltZXBpY2tlclRpbWVJbnB1dERpcmVjdGl2ZSB9KVxyXG4gICAgcHJvdGVjdGVkIGhvdXJJbnB1dERpcmVjdGl2ZTogQ21hdERhdGV0aW1lcGlja2VyVGltZUlucHV0RGlyZWN0aXZlIHwgdm9pZDtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdtaW51dGVJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PiB9KVxyXG4gICAgcHJvdGVjdGVkIG1pbnV0ZUlucHV0RWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PiB8IHZvaWQ7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnbWludXRlSW5wdXQnLCB7IHJlYWQ6IENtYXREYXRldGltZXBpY2tlclRpbWVJbnB1dERpcmVjdGl2ZSB9KVxyXG4gICAgcHJvdGVjdGVkIG1pbnV0ZUlucHV0RGlyZWN0aXZlOiBDbWF0RGF0ZXRpbWVwaWNrZXJUaW1lSW5wdXREaXJlY3RpdmUgfCB2b2lkO1xyXG5cclxuICAgIGRhdGV0aW1lcGlja2VySW50bENoYW5nZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbkxpa2U7XHJcblxyXG4gICAgcHJpdmF0ZSBfdHdlbHZlaG91ciA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBfYWN0aXZlRGF0ZSE6IEQ7XHJcbiAgICBwcml2YXRlIF9zZWxlY3RlZCE6IEQgfCBudWxsO1xyXG4gICAgcHJpdmF0ZSBfbWluRGF0ZSE6IEQgfCBudWxsO1xyXG4gICAgcHJpdmF0ZSBfbWF4RGF0ZSE6IEQgfCBudWxsO1xyXG4gICAgLyoqIFdoZXRoZXIgdGhlIGNsb2NrIGlzIGluIGhvdXIgdmlldy4gKi9cclxuICAgIHByaXZhdGUgX2Nsb2NrVmlldzogQ21hdENsb2NrVmlldyA9ICdob3VyJztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIF9hZGFwdGVyOiBEYXRldGltZUFkYXB0ZXI8RD4sXHJcbiAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByb3RlY3RlZCBkYXRldGltZXBpY2tlckludGw6IENtYXREYXRldGltZXBpY2tlckludGxcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuZGF0ZXRpbWVwaWNrZXJJbnRsQ2hhbmdlc1N1YnNjcmlwdGlvbiA9IHRoaXMuZGF0ZXRpbWVwaWNrZXJJbnRsLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc0hvdXJWaWV3KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jbG9ja1ZpZXcgPT09ICdob3VyJztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNNaW51dGVWaWV3KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jbG9ja1ZpZXcgPT09ICdob3VyJztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaG91cigpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghdGhpcy5hY3RpdmVEYXRlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnR3ZWx2ZWhvdXIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAnMTInO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuICcwMCc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGhvdXIgPSBOdW1iZXIodGhpcy5fYWRhcHRlci5nZXRIb3VyKHRoaXMuYWN0aXZlRGF0ZSkpO1xyXG4gICAgICAgIGlmICghdGhpcy50d2VsdmVob3VyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByZWZpeFdpdGhaZXJvKGhvdXIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGhvdXIgPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuICcxMic7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJlZml4V2l0aFplcm8oaG91ciA+IDEyID8gaG91ciAtIDEyIDogaG91cik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldCBtaW51dGUoKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAodGhpcy5hY3RpdmVEYXRlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByZWZpeFdpdGhaZXJvKHRoaXMuX2FkYXB0ZXIuZ2V0TWludXRlKHRoaXMuYWN0aXZlRGF0ZSkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuICcwMCc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFdoZXRoZXIgdGhlIGNsb2NrIHVzZXMgMTIgaG91ciBmb3JtYXQuICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCB0d2VsdmVob3VyKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl90d2VsdmVob3VyO1xyXG4gICAgfVxyXG4gICAgc2V0IHR3ZWx2ZWhvdXIodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl90d2VsdmVob3VyID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBkYXRlIHRvIGRpc3BsYXkgaW4gdGhpcyBjbG9jayB2aWV3LlxyXG4gICAgICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBhY3RpdmVEYXRlKCk6IEQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmVEYXRlO1xyXG4gICAgfVxyXG4gICAgc2V0IGFjdGl2ZURhdGUodmFsdWU6IEQpIHtcclxuICAgICAgICB0aGlzLl9hY3RpdmVEYXRlID0gdGhpcy5fYWRhcHRlci5jbGFtcERhdGUodmFsdWUsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZGF0ZS4gKi9cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHNlbGVjdGVkKCk6IEQgfCBudWxsIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XHJcbiAgICB9XHJcbiAgICBzZXQgc2VsZWN0ZWQodmFsdWU6IEQgfCBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSB0aGlzLl9hZGFwdGVyLmdldFZhbGlkRGF0ZU9yTnVsbCh0aGlzLl9hZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSk7XHJcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IHRoaXMuX3NlbGVjdGVkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIFRoZSBtaW5pbXVtIHNlbGVjdGFibGUgZGF0ZS4gKi9cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IG1pbkRhdGUoKTogRCB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9taW5EYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBtaW5EYXRlKHZhbHVlOiBEIHwgbnVsbCkge1xyXG4gICAgICAgIHRoaXMuX21pbkRhdGUgPSB0aGlzLl9hZGFwdGVyLmdldFZhbGlkRGF0ZU9yTnVsbCh0aGlzLl9hZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiBUaGUgbWF4aW11bSBzZWxlY3RhYmxlIGRhdGUuICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBtYXhEYXRlKCk6IEQgfCBudWxsIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbWF4RGF0ZTtcclxuICAgIH1cclxuICAgIHNldCBtYXhEYXRlKHZhbHVlOiBEIHwgbnVsbCkge1xyXG4gICAgICAgIHRoaXMuX21heERhdGUgPSB0aGlzLl9hZGFwdGVyLmdldFZhbGlkRGF0ZU9yTnVsbCh0aGlzLl9hZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiBXaGV0aGVyIHRoZSBjbG9jayBzaG91bGQgYmUgc3RhcnRlZCBpbiBob3VyIG9yIG1pbnV0ZSB2aWV3LiAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgY2xvY2tWaWV3KCk6IENtYXRDbG9ja1ZpZXcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jbG9ja1ZpZXc7XHJcbiAgICB9XHJcbiAgICBzZXQgY2xvY2tWaWV3KHZhbHVlOiBDbWF0Q2xvY2tWaWV3KSB7XHJcbiAgICAgICAgdGhpcy5fY2xvY2tWaWV3ID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJlZml4V2l0aFplcm8odmFsdWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKHZhbHVlIDwgMTApIHtcclxuICAgICAgICAgICAgcmV0dXJuICcwJyArIFN0cmluZyh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgLy8gd2hlbiBjbG9ja1ZpZXcgY2hhbmdlcyBieSBpbnB1dCB3ZSBzaG91bGQgZm9jdXMgdGhlIGNvcnJlY3QgaW5wdXRcclxuICAgICAgICBpZiAoY2hhbmdlc1snY2xvY2tWaWV3J10pIHtcclxuICAgICAgICAgICAgaWYgKGNoYW5nZXNbJ2Nsb2NrVmlldyddLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlc1snY2xvY2tWaWV3J10ucHJldmlvdXNWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c0lucHV0RWxlbWVudCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZvY3VzSW5wdXRFbGVtZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9jdXNJbnB1dEVsZW1lbnQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2xvY2tWaWV3ID09PSAnaG91cicpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaG91cklucHV0RWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgKHRoaXMuaG91cklucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZvY3VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5taW51dGVJbnB1dEVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgICh0aGlzLm1pbnV0ZUlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZvY3VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlSG91cklucHV0Q2hhbmdlKHZhbHVlOiBOdW1iZXJJbnB1dCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGhvdXIgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgICAgICAgaWYgKGhvdXIgfHwgaG91ciA9PT0gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuX2FkYXB0ZXIuY3JlYXRlRGF0ZXRpbWUoXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9hZGFwdGVyLmdldFllYXIodGhpcy5hY3RpdmVEYXRlKSxcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FkYXB0ZXIuZ2V0TW9udGgodGhpcy5hY3RpdmVEYXRlKSxcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FkYXB0ZXIuZ2V0RGF0ZSh0aGlzLmFjdGl2ZURhdGUpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVIb3VyRm9yQW1QbShob3VyKSxcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FkYXB0ZXIuZ2V0TWludXRlKHRoaXMuYWN0aXZlRGF0ZSlcclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZURhdGUgPSB0aGlzLl9hZGFwdGVyLmNsYW1wRGF0ZShuZXdWYWx1ZSwgdGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUpO1xyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZURhdGVDaGFuZ2UuZW1pdCh0aGlzLmFjdGl2ZURhdGUpO1xyXG5cclxuICAgICAgICAgICAgLy8gSWYgcHJldmlvdXNseSB3ZSBkaWQgc2V0IFtjbWF0VmFsdWVdPVwiMTNcIiBhbmQgdGhlIGlucHV0IGNoYW5nZWQgdG8gNiwgYW5kIHRoZSBjbGFtcGluZyB3aWxsIG1ha2UgaXQgXCIxM1wiIGFnYWluXHJcbiAgICAgICAgICAgIC8vIHRoZW4gdGhlIGhvdXJJbnB1dERpcmVjdGl2ZSB3aWxsIG5vdCBoYXZlIGJlZW4gdXBkYXRlZCBzaW5jZSBcIjEzXCIgPT09IFwiMTNcIiBzYW1lIHJlZmVyZW5jZSBzbyBubyBjaGFuZ2UgZGV0ZWN0ZWRcclxuICAgICAgICAgICAgLy8gYnkgZGlyZWN0bHkgc2V0dGluZyBpdCB3aXRoaW4gdGhpcyBoYW5kbGVyLCB3ZSBoYW5kbGUgdGhpcyB1c2VjYXNlXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmhvdXJJbnB1dERpcmVjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ob3VySW5wdXREaXJlY3RpdmUudGltZVZhbHVlID0gdGhpcy5ob3VyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUhvdXJGb3JBbVBtKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgICAgIGlmICghdGhpcy50d2VsdmVob3VyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHZhbHVlIHNob3VsZCBiZSBiZXR3ZWVuIDEtMTJcclxuICAgICAgICBpZiAodGhpcy5BTVBNID09PSAnQU0nKSB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gMCB8fCB2YWx1ZSA9PT0gMTIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gUE1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlID09PSAwIHx8IHZhbHVlID09PSAxMikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDEyO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBvdGhlciBjYXNlcywgd2Ugc2hvdWxkIGFkZCAxMiB0byB0aGUgdmFsdWUgYWthIDM6MDAgUE0gPSAzICsgMTIgPSAxNTowMFxyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgKyAxMjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlTWludXRlSW5wdXRDaGFuZ2UodmFsdWU6IE51bWJlcklucHV0KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgbWludXRlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xyXG4gICAgICAgIGlmIChtaW51dGUgfHwgbWludXRlID09PSAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5fYWRhcHRlci5jcmVhdGVEYXRldGltZShcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FkYXB0ZXIuZ2V0WWVhcih0aGlzLmFjdGl2ZURhdGUpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWRhcHRlci5nZXRNb250aCh0aGlzLmFjdGl2ZURhdGUpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWRhcHRlci5nZXREYXRlKHRoaXMuYWN0aXZlRGF0ZSksXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9hZGFwdGVyLmdldEhvdXIodGhpcy5fYWN0aXZlRGF0ZSksXHJcbiAgICAgICAgICAgICAgICBtaW51dGVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5fYWN0aXZlRGF0ZSA9IHRoaXMuX2FkYXB0ZXIuY2xhbXBEYXRlKG5ld1ZhbHVlLCB0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRGF0ZUNoYW5nZS5lbWl0KHRoaXMuYWN0aXZlRGF0ZSk7XHJcblxyXG4gICAgICAgICAgICAvLyBJZiBwcmV2aW91c2x5IHdlIGRpZCBzZXQgW2NtYXRWYWx1ZV09XCI0MFwiIGFuZCB0aGUgaW5wdXQgY2hhbmdlZCB0byAzMCwgYW5kIHRoZSBjbGFtcGluZyB3aWxsIG1ha2UgaXQgXCI0MFwiIGFnYWluXHJcbiAgICAgICAgICAgIC8vIHRoZW4gdGhlIG1pbnV0ZUlucHV0RGlyZWN0aXZlIHdpbGwgbm90IGhhdmUgYmVlbiB1cGRhdGVkIHNpbmNlIFwiNDBcIiA9PT0gXCI0MFwiIHNhbWUgcmVmZXJlbmNlIHNvIG5vIGNoYW5nZSBkZXRlY3RlZFxyXG4gICAgICAgICAgICAvLyBieSBkaXJlY3RseSBzZXR0aW5nIGl0IHdpdGhpbiB0aGlzIGhhbmRsZXIsIHdlIGhhbmRsZSB0aGlzIHVzZWNhc2VcclxuICAgICAgICAgICAgaWYgKHRoaXMubWludXRlSW5wdXREaXJlY3RpdmUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWludXRlSW5wdXREaXJlY3RpdmUudGltZVZhbHVlID0gdGhpcy5taW51dGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlRm9jdXMoY2xvY2tWaWV3OiBDbWF0Q2xvY2tWaWV3KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jbG9ja1ZpZXcgPSBjbG9ja1ZpZXc7XHJcbiAgICAgICAgdGhpcy5jbG9ja1ZpZXdDaGFuZ2UuZW1pdChjbG9ja1ZpZXcpO1xyXG4gICAgfVxyXG5cclxuICAgIHRpbWVTZWxlY3RlZChkYXRlOiBEKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2xvY2tWaWV3ID09PSAnaG91cicpIHtcclxuICAgICAgICAgICAgdGhpcy5jbG9ja1ZpZXcgPSAnbWludXRlJztcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fYWN0aXZlRGF0ZSA9IHRoaXMuc2VsZWN0ZWQgPSBkYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQWN0aXZlRGF0ZUNoYW5nZShkYXRlOiBEKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fYWN0aXZlRGF0ZSA9IGRhdGU7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVEYXRlQ2hhbmdlLmVtaXQoZGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlT2soKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdCh0aGlzLl9zZWxlY3RlZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXNlclNlbGVjdGlvbi5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlQ2FuY2VsKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudXNlclNlbGVjdGlvbi5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0ZXRpbWVwaWNrZXJJbnRsQ2hhbmdlc1N1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGV0aW1lcGlja2VySW50bENoYW5nZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNtYXQtZGF0ZXRpbWVwaWNrZXItdGltZS1pbnB1dC13cmFwcGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJjbWF0LWRhdGV0aW1lcGlja2VyLXRpbWUtaW5wdXQtaW5uZXJcIj5cbiAgICA8aW5wdXQgY2xhc3M9XCJjbWF0LWRhdGV0aW1lcGlja2VyLXRpbWUtaW5wdXRcIiBbY2xhc3MuY21hdC1kYXRldGltZXBpY2tlci10aW1lLWlucHV0LWFjdGl2ZV09XCJjbG9ja1ZpZXcgPT09ICdob3VyJ1wiXG4gICAgICBbY2xhc3MuY21hdC1kYXRldGltZXBpY2tlci10aW1lLWlucHV0LXdhcm5pbmddPVwiIWhvdXJJbnB1dC52YWxpZFwiICNob3VySW5wdXQ9XCJjbWF0RGF0ZXRpbWVwaWNrZXJUaW1lSW5wdXRcIlxuICAgICAgdHlwZT1cInRleHRcIiBpbnB1dG1vZGU9XCJudW1lcmljXCIgbWF4bGVuZ3RoPVwiMlwiIFt0aW1lTWluXT1cInR3ZWx2ZWhvdXIgPyAxIDogMFwiIFt0aW1lTWF4XT1cInR3ZWx2ZWhvdXIgPyAxMiA6IDIzXCJcbiAgICAgIFt0aW1lVmFsdWVdPVwiaG91clwiICh0aW1lVmFsdWVDaGFuZ2VkKT1cImhhbmRsZUhvdXJJbnB1dENoYW5nZSgkZXZlbnQpXCIgKGZvY3VzKT1cImhhbmRsZUZvY3VzKCdob3VyJylcIiAvPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY21hdC1kYXRldGltZXBpY2tlci10aW1lLXNlcGVyYXRvclwiPjo8L2Rpdj5cblxuICAgICAgPGlucHV0IGNsYXNzPVwiY21hdC1kYXRldGltZXBpY2tlci10aW1lLWlucHV0XCIgW2NsYXNzLmNtYXQtZGF0ZXRpbWVwaWNrZXItdGltZS1pbnB1dC1hY3RpdmVdPVwiY2xvY2tWaWV3ID09PSAnbWludXRlJ1wiXG4gICAgICAgIFtjbGFzcy5jbWF0LWRhdGV0aW1lcGlja2VyLXRpbWUtaW5wdXQtd2FybmluZ109XCIhbWludXRlSW5wdXQudmFsaWRcIiAjbWludXRlSW5wdXQ9XCJjbWF0RGF0ZXRpbWVwaWNrZXJUaW1lSW5wdXRcIlxuICAgICAgICB0eXBlPVwidGV4dFwiIGlucHV0bW9kZT1cIm51bWVyaWNcIiBtYXhsZW5ndGg9XCIyXCIgW3RpbWVNaW5dPVwiMFwiIFt0aW1lTWF4XT1cIjU5XCIgW3RpbWVWYWx1ZV09XCJtaW51dGVcIlxuICAgICAgICAodGltZVZhbHVlQ2hhbmdlZCk9XCJoYW5kbGVNaW51dGVJbnB1dENoYW5nZSgkZXZlbnQpXCIgW3RpbWVJbnRlcnZhbF09XCJpbnRlcnZhbFwiIChmb2N1cyk9XCJoYW5kbGVGb2N1cygnbWludXRlJylcIiAvPlxuXG4gICAgICAgIEBpZiAodHdlbHZlaG91cikge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbWF0LWRhdGV0aW1lcGlja2VyLXRpbWUtYW1wbVwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNtYXQtZGF0ZXRpbWVwaWNrZXItdGltZS1hbVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5jbWF0LWRhdGV0aW1lcGlja2VyLXRpbWUtYW1wbS1hY3RpdmVdPVwiQU1QTSA9PT0gJ0FNJ1wiIGFyaWEtbGFiZWw9XCJBTVwiXG4gICAgICAgICAgICAoa2V5ZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiAoY2xpY2spPVwiYW1wbUNoYW5nZS5lbWl0KCdBTScpXCI+QU08L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbWF0LWRhdGV0aW1lcGlja2VyLXRpbWUtcG1cIlxuICAgICAgICAgICAgICBbY2xhc3MuY21hdC1kYXRldGltZXBpY2tlci10aW1lLWFtcG0tYWN0aXZlXT1cIkFNUE0gPT09ICdQTSdcIiBhcmlhLWxhYmVsPVwiUE1cIlxuICAgICAgICAgICAgKGtleWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgKGNsaWNrKT1cImFtcG1DaGFuZ2UuZW1pdCgnUE0nKVwiPlBNPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGNtYXQtZGF0ZXRpbWVwaWNrZXItY2xvY2sgKHNlbGVjdGVkQ2hhbmdlKT1cInRpbWVTZWxlY3RlZCgkZXZlbnQpXCIgKGFjdGl2ZURhdGVDaGFuZ2UpPVwib25BY3RpdmVEYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgW2RhdGVGaWx0ZXJdPVwiZGF0ZUZpbHRlclwiIFtpbnRlcnZhbF09XCJpbnRlcnZhbFwiIFttYXhEYXRlXT1cIm1heERhdGVcIiBbbWluRGF0ZV09XCJtaW5EYXRlXCIgW3NlbGVjdGVkXT1cInNlbGVjdGVkXCJcbiAgICAgIFtzdGFydFZpZXddPVwiY2xvY2tWaWV3XCIgW3R3ZWx2ZWhvdXJdPVwidHdlbHZlaG91clwiPlxuICAgIDwvY21hdC1kYXRldGltZXBpY2tlci1jbG9jaz5cblxuICAgIDxkaXYgY2xhc3M9XCJjbWF0LWRhdGV0aW1lcGlja2VyLXRpbWUtYnV0dG9uLXdyYXBwZXIgc3BhY2UteC00XCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiY21hdD1kYXRldGltZXBpY2tlci10aW1lLWNhbmNlbC1idXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJoYW5kbGVDYW5jZWwoKVwiPlxuICAgICAgICB7eyBkYXRldGltZXBpY2tlckludGwuY2FuY2VsTGFiZWwgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImNtYXQtZGF0ZXRpbWVwaWNrZXItdGltZS1vay1idXR0b25cIiBtYXQtZmxhdC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJoYW5kbGVPaygpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIm1pbnV0ZUlucHV0RGlyZWN0aXZlPy5pbnZhbGlkIHx8IGhvdXJJbnB1dERpcmVjdGl2ZT8uaW52YWxpZFwiPlxuICAgICAgICB7eyBkYXRldGltZXBpY2tlckludGwub2tMYWJlbCB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+Il19
|
|
@@ -95,10 +95,10 @@ export class CmatDatetimepickerYearViewComponent {
|
|
|
95
95
|
}
|
|
96
96
|
return false;
|
|
97
97
|
}
|
|
98
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
99
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
98
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatDatetimepickerYearViewComponent, deps: [{ token: i1.DatetimeAdapter, optional: true }, { token: CMAT_DATETIME_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
99
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.0", type: CmatDatetimepickerYearViewComponent, isStandalone: true, selector: "cmat-datetimepicker-year-view", inputs: { type: "type", dateFilter: "dateFilter", activeDate: "activeDate", selected: "selected" }, outputs: { userSelection: "userSelection", selectedChange: "selectedChange" }, exportAs: ["cmatDatetimepickerYearView"], ngImport: i0, template: "<table class=\"cmat-datetimepicker-calendar-table\">\r\n <thead class=\"cmat-datetimepicker-calendar-table-header\"></thead>\r\n <tbody (@slideCalendar.done)=\"calendarStateDone()\" (selectedValueChange)=\"monthSelected($event)\"\r\n [@slideCalendar]=\"calendarState\" [activeCell]=\"adapter.getMonth(activeDate)\" [labelMinRequiredCells]=\"2\"\r\n [label]=\"yearLabel\" [rows]=\"months\" [selectedValue]=\"selectedMonth\" [todayValue]=\"todayMonth\"\r\n [allowDisabledSelection]=\"true\" cmat-datetimepicker-calendar-body role=\"grid\"></tbody>\r\n</table>", dependencies: [{ kind: "component", type: CmatDatetimepickerCalendarBodyComponent, selector: "[cmat-datetimepicker-calendar-body]", inputs: ["label", "rows", "todayValue", "selectedValue", "labelMinRequiredCells", "numCols", "allowDisabledSelection", "activeCell"], outputs: ["selectedValueChange"], exportAs: ["cmatDatetimepickerCalendarBody"] }], animations: [slideCalendar], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
100
100
|
}
|
|
101
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatDatetimepickerYearViewComponent, decorators: [{
|
|
102
102
|
type: Component,
|
|
103
103
|
args: [{ selector: 'cmat-datetimepicker-year-view', animations: [slideCalendar], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatDatetimepickerYearView', standalone: true, imports: [CmatDatetimepickerCalendarBodyComponent], template: "<table class=\"cmat-datetimepicker-calendar-table\">\r\n <thead class=\"cmat-datetimepicker-calendar-table-header\"></thead>\r\n <tbody (@slideCalendar.done)=\"calendarStateDone()\" (selectedValueChange)=\"monthSelected($event)\"\r\n [@slideCalendar]=\"calendarState\" [activeCell]=\"adapter.getMonth(activeDate)\" [labelMinRequiredCells]=\"2\"\r\n [label]=\"yearLabel\" [rows]=\"months\" [selectedValue]=\"selectedMonth\" [todayValue]=\"todayMonth\"\r\n [allowDisabledSelection]=\"true\" cmat-datetimepicker-calendar-body role=\"grid\"></tbody>\r\n</table>" }]
|
|
104
104
|
}], ctorParameters: () => [{ type: i1.DatetimeAdapter, decorators: [{
|
|
@@ -121,4 +121,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
|
|
|
121
121
|
}], selected: [{
|
|
122
122
|
type: Input
|
|
123
123
|
}] } });
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhci12aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL21hdGVyaWFsLWRhdGV0aW1lcGlja2VyL3llYXItdmlldy50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9tYXRlcmlhbC1kYXRldGltZXBpY2tlci95ZWFyLXZpZXcuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUscUJBQXFCLEVBQXdDLE1BQU0seUJBQXlCLENBQUM7QUFDdEcsT0FBTyxFQUFFLHVDQUF1QyxFQUFHLHVDQUF1QyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFJckU7O0dBRUc7QUFXSCxNQUFNLE9BQU8sbUNBQW1DO0lBMEI1QyxZQUErQixPQUEyQixFQUNILFlBQWlDO1FBRHpELFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBQ0gsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBekI5RSxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFMUMsU0FBSSxHQUEyQixNQUFNLENBQUM7UUFHL0MsMENBQTBDO1FBQ2hDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUssQ0FBQztRQW9CN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZixNQUFNLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDLENBQUM7U0FDeEQ7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVks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QkFBK0IsY0FFN0IsQ0FBQyxhQUFhLENBQUMsaUJBQ1osaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxZQUNyQyw0QkFBNEIsY0FDMUIsSUFBSSxXQUNQLENBQUMsdUNBQXVDLENBQUM7OzBCQTRCckMsUUFBUTs7MEJBQ2hCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMscUJBQXFCO3lDQXpCbkMsYUFBYTtzQkFBdEIsTUFBTTtnQkFFRSxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFSSxjQUFjO3NCQUF2QixNQUFNO2dCQWtDSCxVQUFVO3NCQURiLEtBQUs7Z0JBaUJGLFFBQVE7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBBZnRlckNvbnRlbnRJbml0LFxyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbmplY3QsXHJcbiAgICBJbnB1dCxcclxuICAgIE9wdGlvbmFsLFxyXG4gICAgT3V0cHV0LFxyXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ01BVF9EQVRFVElNRV9GT1JNQVRTLCBDbWF0RGF0ZXRpbWVGb3JtYXRzLCBEYXRldGltZUFkYXB0ZXIgfSBmcm9tICdjbWF0L2NvbXBvbmVudHMvYWRhcHRlcic7XHJcbmltcG9ydCB7IENtYXREYXRldGltZXBpY2tlckNhbGVuZGFyQ2VsbENvbXBvbmVudCAsIENtYXREYXRldGltZXBpY2tlckNhbGVuZGFyQm9keUNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXItYm9keSc7XHJcbmltcG9ydCB7IHNsaWRlQ2FsZW5kYXIgfSBmcm9tICcuL2RhdGV0aW1lcGlja2VyLWFuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxFcnJvciB9IGZyb20gJy4vZGF0ZXRpbWVwaWNrZXItZXJyb3JzJztcclxuaW1wb3J0IHsgQ21hdERhdGV0aW1lcGlja2VyVHlwZSB9IGZyb20gJy4vZGF0ZXRpbWVwaWNrZXItdHlwZXMnO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBBbiBpbnRlcm5hbCBjb21wb25lbnQgdXNlZCB0byBkaXNwbGF5IGEgc2luZ2xlIHllYXIgaW4gdGhlIGRhdGVwaWNrZXIuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY21hdC1kYXRldGltZXBpY2tlci15ZWFyLXZpZXcnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICd5ZWFyLXZpZXcuaHRtbCcsXHJcbiAgICBhbmltYXRpb25zOiBbc2xpZGVDYWxlbmRhcl0sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBleHBvcnRBczogJ2NtYXREYXRldGltZXBpY2tlclllYXJWaWV3JyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbQ21hdERhdGV0aW1lcGlja2VyQ2FsZW5kYXJCb2R5Q29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ21hdERhdGV0aW1lcGlja2VyWWVhclZpZXdDb21wb25lbnQ8RD4gaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcclxuXHJcbiAgICBAT3V0cHV0KCkgdXNlclNlbGVjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBASW5wdXQoKSB0eXBlOiBDbWF0RGF0ZXRpbWVwaWNrZXJUeXBlID0gJ2RhdGUnO1xyXG4gICAgLyoqIEEgZnVuY3Rpb24gdXNlZCB0byBmaWx0ZXIgd2hpY2ggZGF0ZXMgYXJlIHNlbGVjdGFibGUuICovXHJcbiAgICBASW5wdXQoKSBkYXRlRmlsdGVyOiAoZGF0ZTogRCkgPT4gYm9vbGVhbjtcclxuICAgIC8qKiBFbWl0cyB3aGVuIGEgbmV3IG1vbnRoIGlzIHNlbGVjdGVkLiAqL1xyXG4gICAgQE91dHB1dCgpIHNlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEPigpO1xyXG5cclxuICAgIC8qKiBHcmlkIG9mIGNhbGVuZGFyIGNlbGxzIHJlcHJlc2VudGluZyB0aGUgbW9udGhzIG9mIHRoZSB5ZWFyLiAqL1xyXG4gICAgbW9udGhzOiBDbWF0RGF0ZXRpbWVwaWNrZXJDYWxlbmRhckNlbGxDb21wb25lbnRbXVtdO1xyXG4gICAgLyoqIFRoZSBsYWJlbCBmb3IgdGhpcyB5ZWFyIChlLmcuIFwiMjAxN1wiKS4gKi9cclxuICAgIHllYXJMYWJlbDogc3RyaW5nO1xyXG4gICAgLyoqIFRoZSBtb250aCBpbiB0aGlzIHllYXIgdGhhdCB0b2RheSBmYWxscyBvbi4gTnVsbCBpZiB0b2RheSBpcyBpbiBhIGRpZmZlcmVudCB5ZWFyLiAqL1xyXG4gICAgdG9kYXlNb250aDogbnVtYmVyIHwgbnVsbDtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIG1vbnRoIGluIHRoaXMgeWVhciB0aGF0IHRoZSBzZWxlY3RlZCBEYXRlIGZhbGxzIG9uLlxyXG4gICAgICogTnVsbCBpZiB0aGUgc2VsZWN0ZWQgRGF0ZSBpcyBpbiBhIGRpZmZlcmVudCB5ZWFyLlxyXG4gICAgICovXHJcbiAgICBzZWxlY3RlZE1vbnRoOiBudW1iZXIgfCBudWxsO1xyXG4gICAgY2FsZW5kYXJTdGF0ZTogc3RyaW5nO1xyXG5cclxuICAgIHByaXZhdGUgX2FjdGl2ZURhdGU6IEQ7XHJcbiAgICBwcml2YXRlIF9zZWxlY3RlZDogRDtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwdWJsaWMgYWRhcHRlcjogRGF0ZXRpbWVBZGFwdGVyPEQ+LFxyXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQ01BVF9EQVRFVElNRV9GT1JNQVRTKSBwcml2YXRlIF9kYXRlRm9ybWF0czogQ21hdERhdGV0aW1lRm9ybWF0cykge1xyXG4gICAgICAgIGlmICghdGhpcy5hZGFwdGVyKSB7XHJcbiAgICAgICAgICAgIHRocm93IGNyZWF0ZU1pc3NpbmdEYXRlSW1wbEVycm9yKCdDRGF0ZXRpbWVBZGFwdGVyJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuX2RhdGVGb3JtYXRzKSB7XHJcbiAgICAgICAgICAgIHRocm93IGNyZWF0ZU1pc3NpbmdEYXRlSW1wbEVycm9yKCdDTUFUX0RBVEVUSU1FX0ZPUk1BVFMnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2FjdGl2ZURhdGUgPSB0aGlzLmFkYXB0ZXIudG9kYXkoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIFRoZSBkYXRlIHRvIGRpc3BsYXkgaW4gdGhpcyB5ZWFyIHZpZXcgKGV2ZXJ5dGhpbmcgb3RoZXIgdGhhbiB0aGUgeWVhciBpcyBpZ25vcmVkKS4gKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgYWN0aXZlRGF0ZSgpOiBEIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlRGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXQgYWN0aXZlRGF0ZSh2YWx1ZTogRCkge1xyXG4gICAgICAgIGNvbnN0IG9sZEFjdGl2ZURhdGUgPSB0aGlzLl9hY3RpdmVEYXRlO1xyXG4gICAgICAgIHRoaXMuX2FjdGl2ZURhdGUgPSB2YWx1ZSB8fCB0aGlzLmFkYXB0ZXIudG9kYXkoKTtcclxuICAgICAgICBpZiAob2xkQWN0aXZlRGF0ZSAmJiB0aGlzLl9hY3RpdmVEYXRlICYmXHJcbiAgICAgICAgICAgICF0aGlzLmFkYXB0ZXIuc2FtZVllYXIob2xkQWN0aXZlRGF0ZSwgdGhpcy5fYWN0aXZlRGF0ZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5faW5pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBkYXRlLiAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgc2VsZWN0ZWQoKTogRCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBzZWxlY3RlZCh2YWx1ZTogRCkge1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1vbnRoID0gdGhpcy5fZ2V0TW9udGhJbkN1cnJlbnRZZWFyKHRoaXMuc2VsZWN0ZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9pbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEhhbmRsZXMgd2hlbiBhIG5ldyBtb250aCBpcyBzZWxlY3RlZC4gKi9cclxuICAgIG1vbnRoU2VsZWN0ZWQobW9udGg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWREYXRlID0gdGhpcy5hZGFwdGVyLmNyZWF0ZURhdGV0aW1lKHRoaXMuYWRhcHRlci5nZXRZZWFyKHRoaXMuYWN0aXZlRGF0ZSksIG1vbnRoLCAxLCAwLCAwKTtcclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHRoaXMuYWRhcHRlci5jcmVhdGVEYXRldGltZShcclxuICAgICAgICAgICAgdGhpcy5hZGFwdGVyLmdldFllYXIodGhpcy5hY3RpdmVEYXRlKSwgbW9udGgsXHJcbiAgICAgICAgICAgIE1hdGgubWluKHRoaXMuYWRhcHRlci5nZXREYXRlKHRoaXMuYWN0aXZlRGF0ZSksIHRoaXMuYWRhcHRlci5nZXROdW1EYXlzSW5Nb250aChub3JtYWxpemVkRGF0ZSkpLFxyXG4gICAgICAgICAgICB0aGlzLmFkYXB0ZXIuZ2V0SG91cih0aGlzLmFjdGl2ZURhdGUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkYXB0ZXIuZ2V0TWludXRlKHRoaXMuYWN0aXZlRGF0ZSkpKTtcclxuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnbW9udGgnKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXNlclNlbGVjdGlvbi5lbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNhbGVuZGFyU3RhdGVEb25lKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2FsZW5kYXJTdGF0ZSA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBJbml0aWFsaXplcyB0aGlzIG1vbnRoIHZpZXcuICovXHJcbiAgICBwcml2YXRlIF9pbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNb250aCA9IHRoaXMuX2dldE1vbnRoSW5DdXJyZW50WWVhcih0aGlzLnNlbGVjdGVkKTtcclxuICAgICAgICB0aGlzLnRvZGF5TW9udGggPSB0aGlzLl9nZXRNb250aEluQ3VycmVudFllYXIodGhpcy5hZGFwdGVyLnRvZGF5KCkpO1xyXG4gICAgICAgIHRoaXMueWVhckxhYmVsID0gdGhpcy5hZGFwdGVyLmdldFllYXJOYW1lKHRoaXMuYWN0aXZlRGF0ZSk7XHJcblxyXG4gICAgICAgIGNvbnN0IG1vbnRoTmFtZXMgPSB0aGlzLmFkYXB0ZXIuZ2V0TW9udGhOYW1lcygnc2hvcnQnKTtcclxuICAgICAgICAvLyBGaXJzdCByb3cgb2YgbW9udGhzIG9ubHkgY29udGFpbnMgNSBlbGVtZW50cyBzbyB3ZSBjYW4gZml0IHRoZSB5ZWFyIGxhYmVsIG9uIHRoZSBzYW1lIHJvdy5cclxuICAgICAgICB0aGlzLm1vbnRocyA9IFtbMCwgMSwgMiwgMywgNF0sIFs1LCA2LCA3LCA4LCA5LCAxMCwgMTFdXS5tYXAocm93ID0+IHJvdy5tYXAoXHJcbiAgICAgICAgICAgIG1vbnRoID0+IHRoaXMuX2NyZWF0ZUNlbGxGb3JNb250aChtb250aCwgbW9udGhOYW1lc1ttb250aF0pKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBtb250aCBpbiB0aGlzIHllYXIgdGhhdCB0aGUgZ2l2ZW4gRGF0ZSBmYWxscyBvbi5cclxuICAgICAqIFJldHVybnMgbnVsbCBpZiB0aGUgZ2l2ZW4gRGF0ZSBpcyBpbiBhbm90aGVyIHllYXIuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2dldE1vbnRoSW5DdXJyZW50WWVhcihkYXRlOiBEKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5zYW1lWWVhcihkYXRlLCB0aGlzLmFjdGl2ZURhdGUpID9cclxuICAgICAgICAgICAgdGhpcy5hZGFwdGVyLmdldE1vbnRoKGRhdGUpIDogbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQ3JlYXRlcyBhbiBNZENhbGVuZGFyQ2VsbCBmb3IgdGhlIGdpdmVuIG1vbnRoLiAqL1xyXG4gICAgcHJpdmF0ZSBfY3JlYXRlQ2VsbEZvck1vbnRoKG1vbnRoOiBudW1iZXIsIG1vbnRoTmFtZTogc3RyaW5nKTogQ21hdERhdGV0aW1lcGlja2VyQ2FsZW5kYXJDZWxsQ29tcG9uZW50IHtcclxuICAgICAgICBjb25zdCBhcmlhTGFiZWwgPSB0aGlzLmFkYXB0ZXIuZm9ybWF0KFxyXG4gICAgICAgICAgICB0aGlzLmFkYXB0ZXIuY3JlYXRlRGF0ZXRpbWUodGhpcy5hZGFwdGVyLmdldFllYXIodGhpcy5hY3RpdmVEYXRlKSwgbW9udGgsIDEsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkYXB0ZXIuZ2V0SG91cih0aGlzLmFjdGl2ZURhdGUpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGFwdGVyLmdldE1pbnV0ZSh0aGlzLmFjdGl2ZURhdGUpKSxcclxuICAgICAgICAgICAgdGhpcy5fZGF0ZUZvcm1hdHMuZGlzcGxheS5tb250aFllYXJBMTF5TGFiZWwpO1xyXG4gICAgICAgIHJldHVybiBuZXcgQ21hdERhdGV0aW1lcGlja2VyQ2FsZW5kYXJDZWxsQ29tcG9uZW50KFxyXG4gICAgICAgICAgICBtb250aCwgbW9udGhOYW1lLnRvTG9jYWxlVXBwZXJDYXNlKCksIGFyaWFMYWJlbCwgdGhpcy5faXNNb250aEVuYWJsZWQobW9udGgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogV2hldGhlciB0aGUgZ2l2ZW4gbW9udGggaXMgZW5hYmxlZC4gKi9cclxuICAgIHByaXZhdGUgX2lzTW9udGhFbmFibGVkKG1vbnRoOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXRoaXMuZGF0ZUZpbHRlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGZpcnN0T2ZNb250aCA9IHRoaXMuYWRhcHRlci5jcmVhdGVEYXRldGltZShcclxuICAgICAgICAgICAgdGhpcy5hZGFwdGVyLmdldFllYXIodGhpcy5hY3RpdmVEYXRlKSwgbW9udGgsIDEsXHJcbiAgICAgICAgICAgIHRoaXMuYWRhcHRlci5nZXRIb3VyKHRoaXMuYWN0aXZlRGF0ZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRhcHRlci5nZXRNaW51dGUodGhpcy5hY3RpdmVEYXRlKSk7XHJcblxyXG4gICAgICAgIC8vIElmIGFueSBkYXRlIGluIHRoZSBtb250aCBpcyBlbmFibGVkIGNvdW50IHRoZSBtb250aCBhcyBlbmFibGVkLlxyXG4gICAgICAgIGZvciAobGV0IGRhdGUgPSBmaXJzdE9mTW9udGg7IHRoaXMuYWRhcHRlci5nZXRNb250aChkYXRlKSA9PT0gbW9udGg7XHJcbiAgICAgICAgICAgIGRhdGUgPSB0aGlzLmFkYXB0ZXIuYWRkQ2FsZW5kYXJEYXlzKGRhdGUsIDEpKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGVGaWx0ZXIoZGF0ZSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbn1cclxuIiwiPHRhYmxlIGNsYXNzPVwiY21hdC1kYXRldGltZXBpY2tlci1jYWxlbmRhci10YWJsZVwiPlxyXG4gICAgPHRoZWFkIGNsYXNzPVwiY21hdC1kYXRldGltZXBpY2tlci1jYWxlbmRhci10YWJsZS1oZWFkZXJcIj48L3RoZWFkPlxyXG4gICAgPHRib2R5IChAc2xpZGVDYWxlbmRhci5kb25lKT1cImNhbGVuZGFyU3RhdGVEb25lKClcIiAoc2VsZWN0ZWRWYWx1ZUNoYW5nZSk9XCJtb250aFNlbGVjdGVkKCRldmVudClcIlxyXG4gICAgICAgIFtAc2xpZGVDYWxlbmRhcl09XCJjYWxlbmRhclN0YXRlXCIgW2FjdGl2ZUNlbGxdPVwiYWRhcHRlci5nZXRNb250aChhY3RpdmVEYXRlKVwiIFtsYWJlbE1pblJlcXVpcmVkQ2VsbHNdPVwiMlwiXHJcbiAgICAgICAgW2xhYmVsXT1cInllYXJMYWJlbFwiIFtyb3dzXT1cIm1vbnRoc1wiIFtzZWxlY3RlZFZhbHVlXT1cInNlbGVjdGVkTW9udGhcIiBbdG9kYXlWYWx1ZV09XCJ0b2RheU1vbnRoXCJcclxuICAgICAgICBbYWxsb3dEaXNhYmxlZFNlbGVjdGlvbl09XCJ0cnVlXCIgY21hdC1kYXRldGltZXBpY2tlci1jYWxlbmRhci1ib2R5IHJvbGU9XCJncmlkXCI+PC90Ym9keT5cclxuPC90YWJsZT4iXX0=
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhci12aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL21hdGVyaWFsLWRhdGV0aW1lcGlja2VyL3llYXItdmlldy50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9tYXRlcmlhbC1kYXRldGltZXBpY2tlci95ZWFyLXZpZXcuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUscUJBQXFCLEVBQXdDLE1BQU0seUJBQXlCLENBQUM7QUFDdEcsT0FBTyxFQUFFLHVDQUF1QyxFQUFHLHVDQUF1QyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFJckU7O0dBRUc7QUFXSCxNQUFNLE9BQU8sbUNBQW1DO0lBMEI1QyxZQUErQixPQUEyQixFQUNILFlBQWlDO1FBRHpELFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBQ0gsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBekI5RSxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFMUMsU0FBSSxHQUEyQixNQUFNLENBQUM7UUFHL0MsMENBQTBDO1FBQ2hDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUssQ0FBQztRQW9CN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoQixNQUFNLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDekQsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDckIsTUFBTSwwQkFBMEIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUdELHlGQUF5RjtJQUN6RixJQUNJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksVUFBVSxDQUFDLEtBQVE7UUFDbkIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pELElBQUksYUFBYSxJQUFJLElBQUksQ0FBQyxXQUFXO1lBQ2pDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQzFELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQixDQUFDO0lBQ0wsQ0FBQztJQUVELG1DQUFtQztJQUNuQyw4REFBOEQ7SUFDOUQsSUFDSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLFFBQVEsQ0FBQyxLQUFRO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCw0Q0FBNEM7SUFDNUMsYUFBYSxDQUFDLEtBQWE7UUFDdkIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUNoRCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUM1QyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQy9GLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0wsQ0FBQztJQUVELGlCQUFpQjtRQUNiLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxtQ0FBbUM7SUFDM0IsS0FBSztRQUNULElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFM0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkQsNkZBQTZGO1FBQzdGLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FDdkUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssc0JBQXNCLENBQUMsSUFBTztRQUNsQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzNDLENBQUM7SUFFRCxxREFBcUQ7SUFDN0MsbUJBQW1CLENBQUMsS0FBYSxFQUFFLFNBQWlCO1FBQ3hELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFDdkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFDNUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNsRCxPQUFPLElBQUksdUNBQXVDLENBQzlDLEtBQUssRUFBRSxTQUFTLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCwwQ0FBMEM7SUFDbEMsZUFBZSxDQUFDLEtBQWE7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNuQixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQzVDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBRTdDLGtFQUFrRTtRQUNsRSxLQUFLLElBQUksSUFBSSxHQUFHLFlBQVksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLEVBQy9ELElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMvQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsT0FBTyxJQUFJLENBQUM7WUFDaEIsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOzhHQTdJUSxtQ0FBbUMsaUVBMkJwQixxQkFBcUI7a0dBM0JwQyxtQ0FBbUMsc1RDL0JoRCwwa0JBTVEsNENEdUJNLHVDQUF1Qyx3UkFMckMsQ0FBQyxhQUFhLENBQUM7OzJGQU9sQixtQ0FBbUM7a0JBVi9DLFNBQVM7K0JBQ0ksK0JBQStCLGNBRTdCLENBQUMsYUFBYSxDQUFDLGlCQUNaLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sWUFDckMsNEJBQTRCLGNBQzFCLElBQUksV0FDUCxDQUFDLHVDQUF1QyxDQUFDOzswQkE0QnJDLFFBQVE7OzBCQUNoQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLHFCQUFxQjt5Q0F6Qm5DLGFBQWE7c0JBQXRCLE1BQU07Z0JBRUUsSUFBSTtzQkFBWixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksY0FBYztzQkFBdkIsTUFBTTtnQkFrQ0gsVUFBVTtzQkFEYixLQUFLO2dCQWlCRixRQUFRO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSW5qZWN0LFxyXG4gICAgSW5wdXQsXHJcbiAgICBPcHRpb25hbCxcclxuICAgIE91dHB1dCxcclxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENNQVRfREFURVRJTUVfRk9STUFUUywgQ21hdERhdGV0aW1lRm9ybWF0cywgRGF0ZXRpbWVBZGFwdGVyIH0gZnJvbSAnY21hdC9jb21wb25lbnRzL2FkYXB0ZXInO1xyXG5pbXBvcnQgeyBDbWF0RGF0ZXRpbWVwaWNrZXJDYWxlbmRhckNlbGxDb21wb25lbnQgLCBDbWF0RGF0ZXRpbWVwaWNrZXJDYWxlbmRhckJvZHlDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyLWJvZHknO1xyXG5pbXBvcnQgeyBzbGlkZUNhbGVuZGFyIH0gZnJvbSAnLi9kYXRldGltZXBpY2tlci1hbmltYXRpb25zJztcclxuaW1wb3J0IHsgY3JlYXRlTWlzc2luZ0RhdGVJbXBsRXJyb3IgfSBmcm9tICcuL2RhdGV0aW1lcGlja2VyLWVycm9ycyc7XHJcbmltcG9ydCB7IENtYXREYXRldGltZXBpY2tlclR5cGUgfSBmcm9tICcuL2RhdGV0aW1lcGlja2VyLXR5cGVzJztcclxuXHJcblxyXG4vKipcclxuICogQW4gaW50ZXJuYWwgY29tcG9uZW50IHVzZWQgdG8gZGlzcGxheSBhIHNpbmdsZSB5ZWFyIGluIHRoZSBkYXRlcGlja2VyLlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NtYXQtZGF0ZXRpbWVwaWNrZXIteWVhci12aWV3JyxcclxuICAgIHRlbXBsYXRlVXJsOiAneWVhci12aWV3Lmh0bWwnLFxyXG4gICAgYW5pbWF0aW9uczogW3NsaWRlQ2FsZW5kYXJdLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgZXhwb3J0QXM6ICdjbWF0RGF0ZXRpbWVwaWNrZXJZZWFyVmlldycsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW0NtYXREYXRldGltZXBpY2tlckNhbGVuZGFyQm9keUNvbXBvbmVudF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENtYXREYXRldGltZXBpY2tlclllYXJWaWV3Q29tcG9uZW50PEQ+IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XHJcblxyXG4gICAgQE91dHB1dCgpIHVzZXJTZWxlY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgQElucHV0KCkgdHlwZTogQ21hdERhdGV0aW1lcGlja2VyVHlwZSA9ICdkYXRlJztcclxuICAgIC8qKiBBIGZ1bmN0aW9uIHVzZWQgdG8gZmlsdGVyIHdoaWNoIGRhdGVzIGFyZSBzZWxlY3RhYmxlLiAqL1xyXG4gICAgQElucHV0KCkgZGF0ZUZpbHRlcjogKGRhdGU6IEQpID0+IGJvb2xlYW47XHJcbiAgICAvKiogRW1pdHMgd2hlbiBhIG5ldyBtb250aCBpcyBzZWxlY3RlZC4gKi9cclxuICAgIEBPdXRwdXQoKSBzZWxlY3RlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RD4oKTtcclxuXHJcbiAgICAvKiogR3JpZCBvZiBjYWxlbmRhciBjZWxscyByZXByZXNlbnRpbmcgdGhlIG1vbnRocyBvZiB0aGUgeWVhci4gKi9cclxuICAgIG1vbnRoczogQ21hdERhdGV0aW1lcGlja2VyQ2FsZW5kYXJDZWxsQ29tcG9uZW50W11bXTtcclxuICAgIC8qKiBUaGUgbGFiZWwgZm9yIHRoaXMgeWVhciAoZS5nLiBcIjIwMTdcIikuICovXHJcbiAgICB5ZWFyTGFiZWw6IHN0cmluZztcclxuICAgIC8qKiBUaGUgbW9udGggaW4gdGhpcyB5ZWFyIHRoYXQgdG9kYXkgZmFsbHMgb24uIE51bGwgaWYgdG9kYXkgaXMgaW4gYSBkaWZmZXJlbnQgeWVhci4gKi9cclxuICAgIHRvZGF5TW9udGg6IG51bWJlciB8IG51bGw7XHJcbiAgICAvKipcclxuICAgICAqIFRoZSBtb250aCBpbiB0aGlzIHllYXIgdGhhdCB0aGUgc2VsZWN0ZWQgRGF0ZSBmYWxscyBvbi5cclxuICAgICAqIE51bGwgaWYgdGhlIHNlbGVjdGVkIERhdGUgaXMgaW4gYSBkaWZmZXJlbnQgeWVhci5cclxuICAgICAqL1xyXG4gICAgc2VsZWN0ZWRNb250aDogbnVtYmVyIHwgbnVsbDtcclxuICAgIGNhbGVuZGFyU3RhdGU6IHN0cmluZztcclxuXHJcbiAgICBwcml2YXRlIF9hY3RpdmVEYXRlOiBEO1xyXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWQ6IEQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHVibGljIGFkYXB0ZXI6IERhdGV0aW1lQWRhcHRlcjxEPixcclxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KENNQVRfREFURVRJTUVfRk9STUFUUykgcHJpdmF0ZSBfZGF0ZUZvcm1hdHM6IENtYXREYXRldGltZUZvcm1hdHMpIHtcclxuICAgICAgICBpZiAoIXRoaXMuYWRhcHRlcikge1xyXG4gICAgICAgICAgICB0aHJvdyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxFcnJvcignQ0RhdGV0aW1lQWRhcHRlcicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRlRm9ybWF0cykge1xyXG4gICAgICAgICAgICB0aHJvdyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxFcnJvcignQ01BVF9EQVRFVElNRV9GT1JNQVRTJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9hY3RpdmVEYXRlID0gdGhpcy5hZGFwdGVyLnRvZGF5KCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiBUaGUgZGF0ZSB0byBkaXNwbGF5IGluIHRoaXMgeWVhciB2aWV3IChldmVyeXRoaW5nIG90aGVyIHRoYW4gdGhlIHllYXIgaXMgaWdub3JlZCkuICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGFjdGl2ZURhdGUoKTogRCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGl2ZURhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGFjdGl2ZURhdGUodmFsdWU6IEQpIHtcclxuICAgICAgICBjb25zdCBvbGRBY3RpdmVEYXRlID0gdGhpcy5fYWN0aXZlRGF0ZTtcclxuICAgICAgICB0aGlzLl9hY3RpdmVEYXRlID0gdmFsdWUgfHwgdGhpcy5hZGFwdGVyLnRvZGF5KCk7XHJcbiAgICAgICAgaWYgKG9sZEFjdGl2ZURhdGUgJiYgdGhpcy5fYWN0aXZlRGF0ZSAmJlxyXG4gICAgICAgICAgICAhdGhpcy5hZGFwdGVyLnNhbWVZZWFyKG9sZEFjdGl2ZURhdGUsIHRoaXMuX2FjdGl2ZURhdGUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2luaXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZGF0ZS4gKi9cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHNlbGVjdGVkKCk6IEQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcclxuICAgIH1cclxuXHJcbiAgICBzZXQgc2VsZWN0ZWQodmFsdWU6IEQpIHtcclxuICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNb250aCA9IHRoaXMuX2dldE1vbnRoSW5DdXJyZW50WWVhcih0aGlzLnNlbGVjdGVkKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5faW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBIYW5kbGVzIHdoZW4gYSBuZXcgbW9udGggaXMgc2VsZWN0ZWQuICovXHJcbiAgICBtb250aFNlbGVjdGVkKG1vbnRoOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBub3JtYWxpemVkRGF0ZSA9IHRoaXMuYWRhcHRlci5jcmVhdGVEYXRldGltZSh0aGlzLmFkYXB0ZXIuZ2V0WWVhcih0aGlzLmFjdGl2ZURhdGUpLCBtb250aCwgMSwgMCwgMCk7XHJcblxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdCh0aGlzLmFkYXB0ZXIuY3JlYXRlRGF0ZXRpbWUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRhcHRlci5nZXRZZWFyKHRoaXMuYWN0aXZlRGF0ZSksIG1vbnRoLFxyXG4gICAgICAgICAgICBNYXRoLm1pbih0aGlzLmFkYXB0ZXIuZ2V0RGF0ZSh0aGlzLmFjdGl2ZURhdGUpLCB0aGlzLmFkYXB0ZXIuZ2V0TnVtRGF5c0luTW9udGgobm9ybWFsaXplZERhdGUpKSxcclxuICAgICAgICAgICAgdGhpcy5hZGFwdGVyLmdldEhvdXIodGhpcy5hY3RpdmVEYXRlKSxcclxuICAgICAgICAgICAgdGhpcy5hZGFwdGVyLmdldE1pbnV0ZSh0aGlzLmFjdGl2ZURhdGUpKSk7XHJcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ21vbnRoJykge1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJTZWxlY3Rpb24uZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjYWxlbmRhclN0YXRlRG9uZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNhbGVuZGFyU3RhdGUgPSAnJztcclxuICAgIH1cclxuXHJcbiAgICAvKiogSW5pdGlhbGl6ZXMgdGhpcyBtb250aCB2aWV3LiAqL1xyXG4gICAgcHJpdmF0ZSBfaW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTW9udGggPSB0aGlzLl9nZXRNb250aEluQ3VycmVudFllYXIodGhpcy5zZWxlY3RlZCk7XHJcbiAgICAgICAgdGhpcy50b2RheU1vbnRoID0gdGhpcy5fZ2V0TW9udGhJbkN1cnJlbnRZZWFyKHRoaXMuYWRhcHRlci50b2RheSgpKTtcclxuICAgICAgICB0aGlzLnllYXJMYWJlbCA9IHRoaXMuYWRhcHRlci5nZXRZZWFyTmFtZSh0aGlzLmFjdGl2ZURhdGUpO1xyXG5cclxuICAgICAgICBjb25zdCBtb250aE5hbWVzID0gdGhpcy5hZGFwdGVyLmdldE1vbnRoTmFtZXMoJ3Nob3J0Jyk7XHJcbiAgICAgICAgLy8gRmlyc3Qgcm93IG9mIG1vbnRocyBvbmx5IGNvbnRhaW5zIDUgZWxlbWVudHMgc28gd2UgY2FuIGZpdCB0aGUgeWVhciBsYWJlbCBvbiB0aGUgc2FtZSByb3cuXHJcbiAgICAgICAgdGhpcy5tb250aHMgPSBbWzAsIDEsIDIsIDMsIDRdLCBbNSwgNiwgNywgOCwgOSwgMTAsIDExXV0ubWFwKHJvdyA9PiByb3cubWFwKFxyXG4gICAgICAgICAgICBtb250aCA9PiB0aGlzLl9jcmVhdGVDZWxsRm9yTW9udGgobW9udGgsIG1vbnRoTmFtZXNbbW9udGhdKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgbW9udGggaW4gdGhpcyB5ZWFyIHRoYXQgdGhlIGdpdmVuIERhdGUgZmFsbHMgb24uXHJcbiAgICAgKiBSZXR1cm5zIG51bGwgaWYgdGhlIGdpdmVuIERhdGUgaXMgaW4gYW5vdGhlciB5ZWFyLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9nZXRNb250aEluQ3VycmVudFllYXIoZGF0ZTogRCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuc2FtZVllYXIoZGF0ZSwgdGhpcy5hY3RpdmVEYXRlKSA/XHJcbiAgICAgICAgICAgIHRoaXMuYWRhcHRlci5nZXRNb250aChkYXRlKSA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIENyZWF0ZXMgYW4gTWRDYWxlbmRhckNlbGwgZm9yIHRoZSBnaXZlbiBtb250aC4gKi9cclxuICAgIHByaXZhdGUgX2NyZWF0ZUNlbGxGb3JNb250aChtb250aDogbnVtYmVyLCBtb250aE5hbWU6IHN0cmluZyk6IENtYXREYXRldGltZXBpY2tlckNhbGVuZGFyQ2VsbENvbXBvbmVudCB7XHJcbiAgICAgICAgY29uc3QgYXJpYUxhYmVsID0gdGhpcy5hZGFwdGVyLmZvcm1hdChcclxuICAgICAgICAgICAgdGhpcy5hZGFwdGVyLmNyZWF0ZURhdGV0aW1lKHRoaXMuYWRhcHRlci5nZXRZZWFyKHRoaXMuYWN0aXZlRGF0ZSksIG1vbnRoLCAxLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGFwdGVyLmdldEhvdXIodGhpcy5hY3RpdmVEYXRlKSxcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRhcHRlci5nZXRNaW51dGUodGhpcy5hY3RpdmVEYXRlKSksXHJcbiAgICAgICAgICAgIHRoaXMuX2RhdGVGb3JtYXRzLmRpc3BsYXkubW9udGhZZWFyQTExeUxhYmVsKTtcclxuICAgICAgICByZXR1cm4gbmV3IENtYXREYXRldGltZXBpY2tlckNhbGVuZGFyQ2VsbENvbXBvbmVudChcclxuICAgICAgICAgICAgbW9udGgsIG1vbnRoTmFtZS50b0xvY2FsZVVwcGVyQ2FzZSgpLCBhcmlhTGFiZWwsIHRoaXMuX2lzTW9udGhFbmFibGVkKG1vbnRoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFdoZXRoZXIgdGhlIGdpdmVuIG1vbnRoIGlzIGVuYWJsZWQuICovXHJcbiAgICBwcml2YXRlIF9pc01vbnRoRW5hYmxlZChtb250aDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRhdGVGaWx0ZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBmaXJzdE9mTW9udGggPSB0aGlzLmFkYXB0ZXIuY3JlYXRlRGF0ZXRpbWUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRhcHRlci5nZXRZZWFyKHRoaXMuYWN0aXZlRGF0ZSksIG1vbnRoLCAxLFxyXG4gICAgICAgICAgICB0aGlzLmFkYXB0ZXIuZ2V0SG91cih0aGlzLmFjdGl2ZURhdGUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkYXB0ZXIuZ2V0TWludXRlKHRoaXMuYWN0aXZlRGF0ZSkpO1xyXG5cclxuICAgICAgICAvLyBJZiBhbnkgZGF0ZSBpbiB0aGUgbW9udGggaXMgZW5hYmxlZCBjb3VudCB0aGUgbW9udGggYXMgZW5hYmxlZC5cclxuICAgICAgICBmb3IgKGxldCBkYXRlID0gZmlyc3RPZk1vbnRoOyB0aGlzLmFkYXB0ZXIuZ2V0TW9udGgoZGF0ZSkgPT09IG1vbnRoO1xyXG4gICAgICAgICAgICBkYXRlID0gdGhpcy5hZGFwdGVyLmFkZENhbGVuZGFyRGF5cyhkYXRlLCAxKSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kYXRlRmlsdGVyKGRhdGUpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG59XHJcbiIsIjx0YWJsZSBjbGFzcz1cImNtYXQtZGF0ZXRpbWVwaWNrZXItY2FsZW5kYXItdGFibGVcIj5cclxuICAgIDx0aGVhZCBjbGFzcz1cImNtYXQtZGF0ZXRpbWVwaWNrZXItY2FsZW5kYXItdGFibGUtaGVhZGVyXCI+PC90aGVhZD5cclxuICAgIDx0Ym9keSAoQHNsaWRlQ2FsZW5kYXIuZG9uZSk9XCJjYWxlbmRhclN0YXRlRG9uZSgpXCIgKHNlbGVjdGVkVmFsdWVDaGFuZ2UpPVwibW9udGhTZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgICAgICBbQHNsaWRlQ2FsZW5kYXJdPVwiY2FsZW5kYXJTdGF0ZVwiIFthY3RpdmVDZWxsXT1cImFkYXB0ZXIuZ2V0TW9udGgoYWN0aXZlRGF0ZSlcIiBbbGFiZWxNaW5SZXF1aXJlZENlbGxzXT1cIjJcIlxyXG4gICAgICAgIFtsYWJlbF09XCJ5ZWFyTGFiZWxcIiBbcm93c109XCJtb250aHNcIiBbc2VsZWN0ZWRWYWx1ZV09XCJzZWxlY3RlZE1vbnRoXCIgW3RvZGF5VmFsdWVdPVwidG9kYXlNb250aFwiXHJcbiAgICAgICAgW2FsbG93RGlzYWJsZWRTZWxlY3Rpb25dPVwidHJ1ZVwiIGNtYXQtZGF0ZXRpbWVwaWNrZXItY2FsZW5kYXItYm9keSByb2xlPVwiZ3JpZFwiPjwvdGJvZHk+XHJcbjwvdGFibGU+Il19
|
|
@@ -56,10 +56,10 @@ export class CmatHorizontalNavigationBasicItemComponent {
|
|
|
56
56
|
this._unsubscribeAll.next(void 0);
|
|
57
57
|
this._unsubscribeAll.complete();
|
|
58
58
|
}
|
|
59
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
60
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
59
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatHorizontalNavigationBasicItemComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.CmatNavigationService }, { token: i2.CmatUtilsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
60
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: CmatHorizontalNavigationBasicItemComponent, isStandalone: true, selector: "cmat-horizontal-navigation-basic-item", inputs: { item: "item", name: "name" }, ngImport: i0, template: "<!-- Item wrapper -->\n<div class=\"cmat-horizontal-navigation-item-wrapper\"\n [class.cmat-horizontal-navigation-item-has-subtitle]=\"!!item.subTitle\" [ngClass]=\"item.classes?.wrapper\">\n\n <!-- Item with an internal link -->\n @if (item.link && !item.externalLink && !item.function && !item.disabled) {\n <div class=\"cmat-horizontal-navigation-item\"\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\" [routerLink]=\"[item.link]\"\n [routerLinkActive]=\"'cmat-horizontal-navigation-item-active'\"\n [routerLinkActiveOptions]=\"isActiveMatchOptions\" [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n\n <!-- Item with an external link -->\n @if (item.link && item.externalLink && !item.function && !item.disabled) {\n <a class=\"cmat-horizontal-navigation-item\" [href]=\"item.link\" [target]=\"item.target || '_blank'\"\n [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n }\n\n <!-- Item with a function -->\n @if (!item.link && item.function && !item.disabled) {\n <div class=\"cmat-horizontal-navigation-item\" role=\"presentation\"\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\"\n (click)=\"item.function(item)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n\n <!-- Item with an internal link and function -->\n @if (item.link && !item.externalLink && item.function && !item.disabled) {\n <div class=\"cmat-horizontal-navigation-item\" role=\"presentation\"\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\" [routerLink]=\"[item.link]\"\n [routerLinkActive]=\"'cmat-horizontal-navigation-item-active'\"\n [routerLinkActiveOptions]=\"isActiveMatchOptions\" [matTooltip]=\"item.tooltip || ''\"\n (click)=\"item.function(item)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n\n <!-- Item with an external link and function -->\n @if (item.link && item.externalLink && item.function && !item.disabled) {\n <a class=\"cmat-horizontal-navigation-item\" [href]=\"item.link\" [target]=\"item.target || '_blank'\"\n [matTooltip]=\"item.tooltip || ''\" (click)=\"item.function(item)\" mat-menu-item>\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n }\n\n <!-- Item with a no link and no function -->\n @if (!item.link && !item.function && !item.disabled) {\n <div class=\"cmat-horizontal-navigation-item\"\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\"\n [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n\n <!-- Item is disabled -->\n @if (item.disabled) {\n <div class=\"cmat-horizontal-navigation-item cmat-horizontal-navigation-item-disabled\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n\n</div>\n\n<!-- Item template -->\n<ng-template #itemTemplate>\n\n <!-- Icon -->\n @if (item.icon) {\n <mat-icon class=\"cmat-horizontal-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\n </mat-icon>\n }\n\n <!-- Title & Subtitle -->\n <div class=\"cmat-horizontal-navigation-item-title-wrapper\">\n <div class=\"cmat-horizontal-navigation-item-title\">\n <span [ngClass]=\"item.classes?.title\">\n {{item.title}}\n </span>\n </div>\n</div>\n\n<!-- Badge -->\n@if (item.badge) {\n <div class=\"cmat-horizontal-navigation-item-badge\">\n <div class=\"cmat-horizontal-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.title}}\n </div>\n </div>\n}\n\n</ng-template>", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
61
61
|
}
|
|
62
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
62
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatHorizontalNavigationBasicItemComponent, decorators: [{
|
|
63
63
|
type: Component,
|
|
64
64
|
args: [{ selector: 'cmat-horizontal-navigation-basic-item', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgClass, RouterLink, RouterLinkActive, MatTooltipModule, NgTemplateOutlet, MatMenuModule, MatIconModule], template: "<!-- Item wrapper -->\n<div class=\"cmat-horizontal-navigation-item-wrapper\"\n [class.cmat-horizontal-navigation-item-has-subtitle]=\"!!item.subTitle\" [ngClass]=\"item.classes?.wrapper\">\n\n <!-- Item with an internal link -->\n @if (item.link && !item.externalLink && !item.function && !item.disabled) {\n <div class=\"cmat-horizontal-navigation-item\"\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\" [routerLink]=\"[item.link]\"\n [routerLinkActive]=\"'cmat-horizontal-navigation-item-active'\"\n [routerLinkActiveOptions]=\"isActiveMatchOptions\" [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n\n <!-- Item with an external link -->\n @if (item.link && item.externalLink && !item.function && !item.disabled) {\n <a class=\"cmat-horizontal-navigation-item\" [href]=\"item.link\" [target]=\"item.target || '_blank'\"\n [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n }\n\n <!-- Item with a function -->\n @if (!item.link && item.function && !item.disabled) {\n <div class=\"cmat-horizontal-navigation-item\" role=\"presentation\"\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\"\n (click)=\"item.function(item)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n\n <!-- Item with an internal link and function -->\n @if (item.link && !item.externalLink && item.function && !item.disabled) {\n <div class=\"cmat-horizontal-navigation-item\" role=\"presentation\"\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\" [routerLink]=\"[item.link]\"\n [routerLinkActive]=\"'cmat-horizontal-navigation-item-active'\"\n [routerLinkActiveOptions]=\"isActiveMatchOptions\" [matTooltip]=\"item.tooltip || ''\"\n (click)=\"item.function(item)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n\n <!-- Item with an external link and function -->\n @if (item.link && item.externalLink && item.function && !item.disabled) {\n <a class=\"cmat-horizontal-navigation-item\" [href]=\"item.link\" [target]=\"item.target || '_blank'\"\n [matTooltip]=\"item.tooltip || ''\" (click)=\"item.function(item)\" mat-menu-item>\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n }\n\n <!-- Item with a no link and no function -->\n @if (!item.link && !item.function && !item.disabled) {\n <div class=\"cmat-horizontal-navigation-item\"\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\"\n [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n\n <!-- Item is disabled -->\n @if (item.disabled) {\n <div class=\"cmat-horizontal-navigation-item cmat-horizontal-navigation-item-disabled\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n\n</div>\n\n<!-- Item template -->\n<ng-template #itemTemplate>\n\n <!-- Icon -->\n @if (item.icon) {\n <mat-icon class=\"cmat-horizontal-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\n </mat-icon>\n }\n\n <!-- Title & Subtitle -->\n <div class=\"cmat-horizontal-navigation-item-title-wrapper\">\n <div class=\"cmat-horizontal-navigation-item-title\">\n <span [ngClass]=\"item.classes?.title\">\n {{item.title}}\n </span>\n </div>\n</div>\n\n<!-- Badge -->\n@if (item.badge) {\n <div class=\"cmat-horizontal-navigation-item-badge\">\n <div class=\"cmat-horizontal-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.title}}\n </div>\n </div>\n}\n\n</ng-template>" }]
|
|
65
65
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.CmatNavigationService }, { type: i2.CmatUtilsService }], propDecorators: { item: [{
|