@acorex/components 20.7.38 → 20.7.40
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/calendar/index.d.ts +29 -3
- package/datetime-box/index.d.ts +8 -2
- package/datetime-picker/index.d.ts +8 -2
- package/fesm2022/acorex-components-calendar.mjs +25 -8
- package/fesm2022/acorex-components-calendar.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-box.mjs +19 -11
- package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-picker.mjs +9 -3
- package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-query-builder.mjs +1 -1
- package/fesm2022/acorex-components-query-builder.mjs.map +1 -1
- package/fesm2022/acorex-components-rrule.mjs +1 -1
- package/fesm2022/acorex-components-rrule.mjs.map +1 -1
- package/fesm2022/acorex-components-scheduler-picker.mjs +5 -5
- package/fesm2022/acorex-components-scheduler-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-scheduler.mjs +24 -15
- package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
- package/fesm2022/acorex-components-tree-view.mjs +272 -13
- package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
- package/package.json +25 -25
- package/scheduler/index.d.ts +3 -0
- package/tree-view/index.d.ts +43 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-components-calendar.mjs","sources":["../tmp-esm2022/calendar/lib/calendar.class.js","../tmp-esm2022/calendar/lib/calendar.component.js","../tmp-esm2022/calendar/lib/calendar-range.component.js","../tmp-esm2022/calendar/lib/calendar.module.js","../tmp-esm2022/calendar/acorex-components-calendar.js"],"sourcesContent":["import { AXItemClickEvent, AXRangeChangedEvent, MXBaseComponent } from '@acorex/cdk/common';\nimport { AXCalendarService } from '@acorex/core/date-time';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { EventEmitter, Injectable, Input, Output, TemplateRef, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Contains native event\n * @category Events\n */\nexport class AXCalendarNavigateEvent extends AXRangeChangedEvent {\n}\n/**\n * Contains native event\n * @category Events\n */\nexport class AXCalendarSlotClick extends AXItemClickEvent {\n}\nexport class MXCalendarBaseComponent extends MXBaseComponent {\n constructor() {\n super(...arguments);\n this.localeService = inject(AXLocaleService);\n this.calendarService = inject(AXCalendarService);\n this.translateService = inject(AXTranslationService);\n this.interface = 'calendar';\n this.showNavigation = true;\n this.count = 1;\n this.onSlotClick = new EventEmitter();\n this.onNavigate = new EventEmitter();\n this.activeViewChange = new EventEmitter();\n this._activeView = 'day';\n this.typeChange = new EventEmitter();\n this.depthChange = new EventEmitter();\n this._depth = 'day';\n this.minValueChange = new EventEmitter();\n this.maxValueChange = new EventEmitter();\n this.disabledDatesChange = new EventEmitter();\n this.holidayDatesChange = new EventEmitter();\n }\n get activeView() {\n return this._activeView;\n }\n set activeView(v) {\n this.setOption({\n name: 'activeView',\n value: v,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n /**\n * @deprecated use calendar input instead\n */\n get type() {\n return this._type;\n }\n set type(v) {\n this.setOption({\n name: 'type',\n value: v,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n get depth() {\n return this._depth;\n }\n set depth(v) {\n this.setOption({\n name: 'depth',\n value: v,\n beforeCallback: (o, n) => {\n this.activeView = v;\n return n;\n },\n afterCallback: () => {\n this.render();\n },\n });\n }\n get minValue() {\n return this._minValue;\n }\n set minValue(v) {\n if (this.calendarService.isValidDate(v)) {\n const value = this.calendarService.create(v).date;\n this.setOption({\n name: 'minValue',\n value,\n afterCallback: () => {\n this.render();\n },\n });\n }\n else {\n this.setOption({\n name: 'minValue',\n value: undefined,\n afterCallback: () => {\n this.render();\n },\n });\n }\n }\n get maxValue() {\n return this._maxValue;\n }\n set maxValue(v) {\n if (this.calendarService.isValidDate(v)) {\n const value = this.calendarService.create(v).date;\n this.setOption({\n name: 'maxValue',\n value,\n afterCallback: () => {\n this.render();\n },\n });\n }\n else {\n this.setOption({\n name: 'maxValue',\n value: undefined,\n afterCallback: () => {\n this.render();\n },\n });\n }\n }\n get disabledDates() {\n return this._disabledDates;\n }\n set disabledDates(v) {\n this.setOption({ name: 'disabledDates', value: v });\n }\n get holidayDates() {\n return this._holidayDates;\n }\n set holidayDates(v) {\n this.setOption({ name: 'holidayDates', value: v });\n }\n render() { }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: MXCalendarBaseComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: MXCalendarBaseComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: MXCalendarBaseComponent, decorators: [{\n type: Injectable\n }], propDecorators: { interface: [{\n type: Input\n }], cellTemplate: [{\n type: Input\n }], dayCellTemplate: [{\n type: Input\n }], monthCellTemplate: [{\n type: Input\n }], yearCellTemplate: [{\n type: Input\n }], cellClass: [{\n type: Input\n }], showNavigation: [{\n type: Input\n }], count: [{\n type: Input\n }], onSlotClick: [{\n type: Output\n }], onNavigate: [{\n type: Output\n }], activeViewChange: [{\n type: Output\n }], activeView: [{\n type: Input\n }], typeChange: [{\n type: Output\n }], type: [{\n type: Input\n }], depthChange: [{\n type: Output\n }], depth: [{\n type: Input\n }], minValueChange: [{\n type: Output\n }], minValue: [{\n type: Input\n }], maxValueChange: [{\n type: Output\n }], maxValue: [{\n type: Input\n }], disabledDatesChange: [{\n type: Output\n }], disabledDates: [{\n type: Input\n }], holidayDatesChange: [{\n type: Output\n }], holidayDates: [{\n type: Input\n }] } });\nexport const CALENDAR_INPUTS = ['depth', 'activeView', 'min', 'max', 'disabledDates', 'type', 'holidayDates'];\nexport const CALENDAR_OUTPUTS = [\n 'depthChange',\n 'typeChange',\n 'disabledDatesChange',\n 'holidayDatesChange',\n 'onNavigate',\n];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxpQkFBaUIsRUFBK0IsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQWlCN0Y7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHVCQUF3QixTQUFRLG1CQUF5QjtDQUFHO0FBRXpFOzs7R0FHRztBQUNILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxnQkFBc0I7Q0FBRztBQWlCbEUsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGVBQWU7SUFENUQ7O1FBRVksa0JBQWEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDeEMsb0JBQWUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM1QyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUcxRCxjQUFTLEdBQTBCLFVBQVUsQ0FBQztRQW9COUMsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFHdEIsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUdWLGdCQUFXLEdBQXNDLElBQUksWUFBWSxFQUF1QixDQUFDO1FBR3pGLGVBQVUsR0FBMEMsSUFBSSxZQUFZLEVBQTJCLENBQUM7UUFHaEcscUJB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QXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVTs4QkFPVCxTQUFTO3NCQURSLEtBQUs7Z0JBUU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFHTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBR04sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixNQUFNO2dCQUlQLFVBQVU7c0JBRFQsTUFBTTtnQkFJUCxnQkFBZ0I7c0JBRGYsTUFBTTtnQkFLSSxVQUFVO3NCQURwQixLQUFLO2dCQWVDLFVBQVU7c0JBRGhCLE1BQU07Z0JBU0ksSUFBSTtzQkFEZCxLQUFLO2dCQWVOLFdBQVc7c0JBRFYsTUFBTTtnQkFLSSxLQUFLO3NCQURmLEtBQUs7Z0JBbUJOLGNBQWM7c0JBRGIsTUFBTTtnQkFLSSxRQUFRO3NCQURsQixLQUFLO2dCQTBCTixjQUFjO3NCQURiLE1BQU07Z0JBS0ksUUFBUTtzQkFEbEIsS0FBSztnQkEwQk4sbUJBQW1CO3NCQURsQixNQUFNO2dCQUtJLGFBQWE7c0JBRHZCLEtBQUs7Z0JBU04sa0JBQWtCO3NCQURqQixNQUFNO2dCQUtJLFlBQVk7c0JBRHRCLEtBQUs7O0FBV1IsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDOUcsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUc7SUFDOUIsYUFBYTtJQUNiLFlBQVk7SUFDWixxQkFBcUI7SUFDckIsb0JBQW9CO0lBQ3BCLFlBQVk7Q0FDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhJdGVtQ2xpY2tFdmVudCwgQVhSYW5nZUNoYW5nZWRFdmVudCwgTVhCYXNlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYQ2FsZW5kYXJTZXJ2aWNlLCBBWERhdGVUaW1lLCBBWERhdGVUaW1lUmFuZ2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvZGF0ZS10aW1lJztcbmltcG9ydCB7IEFYTG9jYWxlU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9sb2NhbGUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIEFYQ2FsZW5kYXJWaWV3VHlwZSA9ICd5ZWFyJyB8ICdtb250aCcgfCAnZGF5JztcbmV4cG9ydCB0eXBlIEFYQ2FsZW5kYXJWaWV3RGVwdGggPSBBWENhbGVuZGFyVmlld1R5cGU7XG5cbi8qKlxuICogQ29udHJvbHMgaG93IG1vbnRoIGFuZCB5ZWFyIGFyZSBjaG9zZW4gaW4gdGhlIGRheSB2aWV3IGhlYWRlci5cbiAqIC0gYGNsYXNzaWNgOiB0YXAgeWVhci9tb250aCBsYWJlbHMgdG8gb3BlbiBtb250aC95ZWFyIHBpY2tlciBwYW5lbHMuXG4gKiAtIGBzZWxlY3RgOiBtb250aC95ZWFyIGRyb3Bkb3ducyB3aXRoIHByZXYvbmV4dCBhcnJvd3Mgb24gdGhlIGVkZ2VzLlxuICovXG5leHBvcnQgdHlwZSBBWENhbGVuZGFyTmF2aWdhdGlvbkxvb2tUeXBlID0gJ2NsYXNzaWMnIHwgJ3NlbGVjdCc7XG5leHBvcnQgdHlwZSBBWENhbGVuZGFyRGlzYWJsZWREYXRlcyA9IERhdGVbXSB8ICgoZGF0ZTogRGF0ZSkgPT4gYm9vbGVhbik7XG5leHBvcnQgdHlwZSBBWENhbGVuZGFySG9saWRheURhdGVzID0gRGF0ZVtdIHwgKChkYXRlOiBEYXRlKSA9PiBib29sZWFuKTtcbmV4cG9ydCB0eXBlIEFYQ2FsZW5kYXJDZWxsQ3NzQ2xhc3MgPSBzdHJpbmcgfCB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSB8ICgoZGF0ZTogRGF0ZSkgPT4gc3RyaW5nKTtcblxuZXhwb3J0IHR5cGUgQVhEYXRlVGltZVBpY2tlclR5cGUgPSAnZGF0ZScgfCAndGltZScgfCAnZGF0ZXRpbWUnO1xuXG4vKipcbiAqICBDb250YWlucyBuYXRpdmUgZXZlbnRcbiAqIEBjYXRlZ29yeSBFdmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEFYQ2FsZW5kYXJOYXZpZ2F0ZUV2ZW50IGV4dGVuZHMgQVhSYW5nZUNoYW5nZWRFdmVudDxEYXRlPiB7fVxuXG4vKipcbiAqICBDb250YWlucyBuYXRpdmUgZXZlbnRcbiAqIEBjYXRlZ29yeSBFdmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEFYQ2FsZW5kYXJTbG90Q2xpY2sgZXh0ZW5kcyBBWEl0ZW1DbGlja0V2ZW50PERhdGU+IHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhDYWxlbmRhclZpZXdTbG90IHtcbiAgZGF0ZTogQVhEYXRlVGltZTtcbiAgdGV4dDogc3RyaW5nO1xuICB0b29sdGlwOiBzdHJpbmc7XG4gIHRvZGF5OiBib29sZWFuO1xuICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIGNzc0NsYXNzOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQVhDYWxlbmRhclZpZXcge1xuICByYW5nZTogQVhEYXRlVGltZVJhbmdlO1xuICBzbG90czogQVhDYWxlbmRhclZpZXdTbG90W107XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNWENhbGVuZGFyQmFzZUNvbXBvbmVudCBleHRlbmRzIE1YQmFzZUNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBsb2NhbGVTZXJ2aWNlID0gaW5qZWN0KEFYTG9jYWxlU2VydmljZSk7XG4gIHByb3RlY3RlZCBjYWxlbmRhclNlcnZpY2UgPSBpbmplY3QoQVhDYWxlbmRhclNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSk7XG5cbiAgQElucHV0KClcbiAgaW50ZXJmYWNlOiAnY2FsZW5kYXInIHwgJ3BpY2tlcicgPSAnY2FsZW5kYXInO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiB1c2UgZGF5Q2VsbFRlbXBsYXRlLCBtb250aENlbGxUZW1wbGF0ZSwgeWVhckNlbGxUZW1wbGF0ZSBpbnN0ZWFkXG4gICAqL1xuICBASW5wdXQoKVxuICBjZWxsVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBASW5wdXQoKVxuICBkYXlDZWxsVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcbiAgQElucHV0KClcbiAgbW9udGhDZWxsVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcbiAgQElucHV0KClcbiAgeWVhckNlbGxUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpXG4gIGNlbGxDbGFzcz86IEFYQ2FsZW5kYXJDZWxsQ3NzQ2xhc3M7XG5cbiAgQElucHV0KClcbiAgc2hvd05hdmlnYXRpb24gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGNvdW50ID0gMTtcblxuICBAT3V0cHV0KClcbiAgb25TbG90Q2xpY2s6IEV2ZW50RW1pdHRlcjxBWENhbGVuZGFyU2xvdENsaWNrPiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhDYWxlbmRhclNsb3RDbGljaz4oKTtcblxuICBAT3V0cHV0KClcbiAgb25OYXZpZ2F0ZTogRXZlbnRFbWl0dGVyPEFYQ2FsZW5kYXJOYXZpZ2F0ZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhDYWxlbmRhck5hdmlnYXRlRXZlbnQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGFjdGl2ZVZpZXdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxBWENhbGVuZGFyVmlld1R5cGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWENhbGVuZGFyVmlld1R5cGU+KCk7XG5cbiAgcHJpdmF0ZSBfYWN0aXZlVmlldzogQVhDYWxlbmRhclZpZXdUeXBlID0gJ2RheSc7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgYWN0aXZlVmlldygpOiBBWENhbGVuZGFyVmlld1R5cGUge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVWaWV3O1xuICB9XG4gIHB1YmxpYyBzZXQgYWN0aXZlVmlldyh2OiBBWENhbGVuZGFyVmlld1R5cGUpIHtcbiAgICB0aGlzLnNldE9wdGlvbih7XG4gICAgICBuYW1lOiAnYWN0aXZlVmlldycsXG4gICAgICB2YWx1ZTogdixcbiAgICAgIGFmdGVyQ2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyB0eXBlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIHByaXZhdGUgX3R5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGNhbGVuZGFyIGlucHV0IGluc3RlYWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgdHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90eXBlO1xuICB9XG4gIHB1YmxpYyBzZXQgdHlwZSh2OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNldE9wdGlvbih7XG4gICAgICBuYW1lOiAndHlwZScsXG4gICAgICB2YWx1ZTogdixcbiAgICAgIGFmdGVyQ2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIGRlcHRoQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QVhDYWxlbmRhclZpZXdEZXB0aD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYQ2FsZW5kYXJWaWV3RGVwdGg+KCk7XG5cbiAgcHJpdmF0ZSBfZGVwdGg6IEFYQ2FsZW5kYXJWaWV3RGVwdGggPSAnZGF5JztcbiAgQElucHV0KClcbiAgcHVibGljIGdldCBkZXB0aCgpOiBBWENhbGVuZGFyVmlld0RlcHRoIHtcbiAgICByZXR1cm4gdGhpcy5fZGVwdGg7XG4gIH1cbiAgcHVibGljIHNldCBkZXB0aCh2OiBBWENhbGVuZGFyVmlld0RlcHRoKSB7XG4gICAgdGhpcy5zZXRPcHRpb24oe1xuICAgICAgbmFtZTogJ2RlcHRoJyxcbiAgICAgIHZhbHVlOiB2LFxuICAgICAgYmVmb3JlQ2FsbGJhY2s6IChvLCBuKSA9PiB7XG4gICAgICAgIHRoaXMuYWN0aXZlVmlldyA9IHY7XG4gICAgICAgIHJldHVybiBuO1xuICAgICAgfSxcbiAgICAgIGFmdGVyQ2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgbWluVmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcblxuICBwcml2YXRlIF9taW5WYWx1ZTogRGF0ZTtcbiAgQElucHV0KClcbiAgcHVibGljIGdldCBtaW5WYWx1ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fbWluVmFsdWU7XG4gIH1cbiAgcHVibGljIHNldCBtaW5WYWx1ZSh2OiBEYXRlKSB7XG4gICAgaWYgKHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmlzVmFsaWREYXRlKHYpKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZSh2KS5kYXRlO1xuICAgICAgdGhpcy5zZXRPcHRpb24oe1xuICAgICAgICBuYW1lOiAnbWluVmFsdWUnLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgYWZ0ZXJDYWxsYmFjazogKCkgPT4ge1xuICAgICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRPcHRpb24oe1xuICAgICAgICBuYW1lOiAnbWluVmFsdWUnLFxuICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICBhZnRlckNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBtYXhWYWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gIHByaXZhdGUgX21heFZhbHVlOiBEYXRlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IG1heFZhbHVlKCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLl9tYXhWYWx1ZTtcbiAgfVxuICBwdWJsaWMgc2V0IG1heFZhbHVlKHY6IERhdGUpIHtcbiAgICBpZiAodGhpcy5jYWxlbmRhclNlcnZpY2UuaXNWYWxpZERhdGUodikpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKHYpLmRhdGU7XG4gICAgICB0aGlzLnNldE9wdGlvbih7XG4gICAgICAgIG5hbWU6ICdtYXhWYWx1ZScsXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBhZnRlckNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldE9wdGlvbih7XG4gICAgICAgIG5hbWU6ICdtYXhWYWx1ZScsXG4gICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgIGFmdGVyQ2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgQE91dHB1dCgpXG4gIGRpc2FibGVkRGF0ZXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxBWENhbGVuZGFyRGlzYWJsZWREYXRlcz4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYQ2FsZW5kYXJEaXNhYmxlZERhdGVzPigpO1xuXG4gIHByaXZhdGUgX2Rpc2FibGVkRGF0ZXM6IEFYQ2FsZW5kYXJEaXNhYmxlZERhdGVzO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGRpc2FibGVkRGF0ZXMoKTogQVhDYWxlbmRhckRpc2FibGVkRGF0ZXMge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZERhdGVzO1xuICB9XG4gIHB1YmxpYyBzZXQgZGlzYWJsZWREYXRlcyh2OiBBWENhbGVuZGFyRGlzYWJsZWREYXRlcykge1xuICAgIHRoaXMuc2V0T3B0aW9uKHsgbmFtZTogJ2Rpc2FibGVkRGF0ZXMnLCB2YWx1ZTogdiB9KTtcbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBob2xpZGF5RGF0ZXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxBWENhbGVuZGFySG9saWRheURhdGVzPiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhDYWxlbmRhckhvbGlkYXlEYXRlcz4oKTtcblxuICBwcml2YXRlIF9ob2xpZGF5RGF0ZXM6IEFYQ2FsZW5kYXJIb2xpZGF5RGF0ZXM7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgaG9saWRheURhdGVzKCk6IEFYQ2FsZW5kYXJIb2xpZGF5RGF0ZXMge1xuICAgIHJldHVybiB0aGlzLl9ob2xpZGF5RGF0ZXM7XG4gIH1cbiAgcHVibGljIHNldCBob2xpZGF5RGF0ZXModjogQVhDYWxlbmRhckhvbGlkYXlEYXRlcykge1xuICAgIHRoaXMuc2V0T3B0aW9uKHsgbmFtZTogJ2hvbGlkYXlEYXRlcycsIHZhbHVlOiB2IH0pO1xuICB9XG5cbiAgcmVuZGVyKCk6IHZvaWQge31cbn1cblxuZXhwb3J0IGNvbnN0IENBTEVOREFSX0lOUFVUUyA9IFsnZGVwdGgnLCAnYWN0aXZlVmlldycsICdtaW4nLCAnbWF4JywgJ2Rpc2FibGVkRGF0ZXMnLCAndHlwZScsICdob2xpZGF5RGF0ZXMnXTtcbmV4cG9ydCBjb25zdCBDQUxFTkRBUl9PVVRQVVRTID0gW1xuICAnZGVwdGhDaGFuZ2UnLFxuICAndHlwZUNoYW5nZScsXG4gICdkaXNhYmxlZERhdGVzQ2hhbmdlJyxcbiAgJ2hvbGlkYXlEYXRlc0NoYW5nZScsXG4gICdvbk5hdmlnYXRlJyxcbl07XG4iXX0=","import { AXComponent, AXRippleDirective, AXValuableComponent, MXInteractiveComponent, MXValueComponent, } from '@acorex/cdk/common';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXDateTimeRange } from '@acorex/core/date-time';\nimport { ChangeDetectionStrategy, Component, computed, forwardRef, HostBinding, HostListener, inject, input, linkedSignal, signal, ViewEncapsulation, } from '@angular/core';\nimport { AXFormatModule, AXFormatService } from '@acorex/core/format';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AsyncPipe, isPlatformBrowser, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport { MXCalendarBaseComponent, } from './calendar.class';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@acorex/core/format\";\n/**\n * A calendar component that provides a customizable calendar view with various options for selection, navigation, and styling.\n *\n * @category Components\n */\nexport class AXCalendarComponent extends classes((MXValueComponent), MXInteractiveComponent, MXCalendarBaseComponent) {\n get displayRange() {\n return this.views.length > 0\n ? new AXDateTimeRange(this.views[0]?.range.startTime, this.views[this.views.length - 1]?.range.endTime)\n : null;\n }\n /**\n * @ignore\n */\n get _currentMonth() {\n return this._viewStartDate?.monthOfYear;\n }\n /**\n * @ignore\n */\n get _currentYear() {\n return this._viewStartDate?.year;\n }\n /**\n * @ignore\n */\n _initValues() {\n this._today = this.calendarService.create(new Date(), this.calendar());\n }\n /**\n * Maps a date to a 1-based grid column using the active week layout.\n */\n _getWeekColumn(date) {\n const columnIndex = this.weekLayout().indexOf(date.weekdayIndex);\n return columnIndex >= 0 ? columnIndex + 1 : date.dayOfWeek;\n }\n /**\n * Defers refresh so parent `type` input can sync after locale profile changes.\n */\n _scheduleRefresh() {\n queueMicrotask(() => this._refresh());\n }\n /**\n * @ignore\n */\n _refresh() {\n this._initValues();\n this.navTo(this.value || this._today);\n }\n /**\n * @ignore\n */\n constructor() {\n const unsubscriber = inject(AXUnsubscriber);\n super();\n this.formatService = inject(AXFormatService);\n this.weekend = input([], ...(ngDevMode ? [{ debugName: \"weekend\" }] : []));\n this.weekdays = input([], ...(ngDevMode ? [{ debugName: \"weekdays\" }] : []));\n /**\n * Day view navigation style.\n * - `classic`: tap year/month labels to open month/year picker panels.\n * - `select`: month/year dropdowns with prev/next arrows on the edges.\n */\n this.look = input('select', ...(ngDevMode ? [{ debugName: \"look\" }] : []));\n this.isRtl = this.localeService.isRtl;\n this.calendar = linkedSignal(() => this.type ?? this.localeService.activeProfile().calendar.system, ...(ngDevMode ? [{ debugName: \"calendar\" }] : []));\n /** Week column order from the active locale profile (0 = Sun … 6 = Sat). */\n this.weekLayout = computed(() => {\n const custom = this.weekdays();\n if (custom.length) {\n return custom;\n }\n const startsOn = this.localeService.activeProfile().calendar.week.startsOn;\n return Array.from({ length: 7 }, (_, i) => (startsOn + i) % 7);\n }, ...(ngDevMode ? [{ debugName: \"weekLayout\" }] : []));\n /**\n * @ignore\n */\n this._today = this.calendarService.create(new Date(), this.calendar());\n /**\n * @ignore\n */\n this._navUserInteraction = false;\n /**\n * @ignore\n */\n this._footPrint = {\n year: null,\n month: null,\n day: null,\n };\n /**\n * @ignore\n */\n this.views = [];\n /**\n * @ignore\n */\n this._monthOptions = [];\n /**\n * @ignore\n */\n this._yearOptions = [];\n /**\n * @ignore\n */\n this.oldValue = signal(null, ...(ngDevMode ? [{ debugName: \"oldValue\" }] : []));\n this.calendarService.onHolidaysChanged.pipe(unsubscriber.takeUntilDestroy).subscribe(() => {\n this.render();\n });\n this.calendarService.calendarChanges$.pipe(unsubscriber.takeUntilDestroy).subscribe((value) => {\n if (!this.type)\n this.calendar.set(value.name());\n this._scheduleRefresh();\n });\n this.localeService.profileChanged$.pipe(unsubscriber.takeUntilDestroy).subscribe((profile) => {\n this.calendar.set(profile.calendar.system);\n this._scheduleRefresh();\n });\n this.typeChange.pipe(unsubscriber.takeUntilDestroy).subscribe((value) => {\n this.calendar.set(value);\n });\n this.minValueChange.subscribe((e) => {\n if (this._viewStartDate.isBefore(e)) {\n this._viewStartDate = this.calendarService.create(e, this.calendar());\n this.render();\n }\n });\n }\n /**\n * @ignore\n */\n ngOnInit() {\n super.ngOnInit();\n this._initValues();\n }\n /**\n * @ignore\n */\n ngAfterViewInit() {\n if (!this.value) {\n if (this.minValue && this._viewStartDate.isBefore(this.minValue)) {\n this._viewStartDate = this.calendarService.create(this.minValue, this.calendar());\n this.render();\n }\n else {\n this.goToday();\n }\n }\n }\n /**\n * @ignore\n */\n render() {\n if (!this._viewStartDate)\n return;\n const applyCellClass = (slot, cellClass = this.cellClass) => {\n switch (typeof cellClass) {\n case 'string':\n cellClass.split(' ').forEach((c) => (slot.cssClass[c] = true));\n break;\n case 'object':\n Object.assign(slot.cssClass, cellClass);\n break;\n case 'function':\n applyCellClass(slot, cellClass(slot.date));\n break;\n }\n };\n this.views = [];\n for (let i = 0; i < this.count; i++) {\n switch (this.activeView) {\n case 'day':\n this.dayView(i, applyCellClass);\n break;\n case 'month':\n this.monthView(i, applyCellClass);\n break;\n case 'year':\n this.yearView(i, applyCellClass);\n break;\n }\n }\n this._updateSelectOptions();\n this.cdr.markForCheck();\n }\n /**\n * @ignore\n */\n _updateSelectOptions() {\n if (!this._viewStartDate)\n return;\n this._monthOptions = Array.from({ length: 12 }, (_, i) => {\n const date = this._viewStartDate.set('month', i + 1);\n return {\n id: i + 1,\n text: `@acorex:${this.getMonthName(date, 'short')}`,\n };\n });\n const currentYear = this._viewStartDate.year;\n const minYear = this.minValue\n ? this.calendarService.create(this.minValue, this.calendar()).year\n : currentYear - 100;\n const maxYear = this.maxValue ? this.calendarService.create(this.maxValue, this.calendar()).year : currentYear + 10;\n this._yearOptions = [];\n for (let year = minYear; year <= maxYear; year++) {\n this._yearOptions.push({ id: year, text: String(year) });\n }\n }\n /**\n * @ignore\n */\n _handleMonthSelectChanged(e) {\n if (!e.isUserInteraction || !this._viewStartDate)\n return;\n const month = this._getSelectBoxValue(e);\n if (month == null)\n return;\n this._navUserInteraction = true;\n this.navTo(this._viewStartDate.set('month', month));\n this._navUserInteraction = false;\n }\n /**\n * @ignore\n */\n _handleYearSelectChanged(e) {\n if (!e.isUserInteraction || !this._viewStartDate)\n return;\n const year = this._getSelectBoxValue(e);\n if (year == null)\n return;\n this._navUserInteraction = true;\n this.navTo(this._viewStartDate.set('year', year));\n this._navUserInteraction = false;\n }\n /**\n * @ignore\n */\n _getSelectBoxValue(e) {\n const val = e.value;\n if (Array.isArray(val))\n return val[0]?.id ?? null;\n if (val && typeof val === 'object')\n return val.id ?? null;\n return val != null ? Number(val) : null;\n }\n /**\n * @ignore\n */\n _setDisplayRange(current) {\n switch (this.activeView) {\n case 'year': {\n const y = current.startOf('year').year;\n const min = y - (y % 10);\n const max = min + 9;\n return new AXDateTimeRange(this.calendarService.create({\n year: min,\n month: 1,\n day: 1,\n }, this.calendar()), this.calendarService.create({\n year: max,\n month: 12,\n day: 28,\n }, this.calendar()));\n }\n case 'month':\n return new AXDateTimeRange(current.startOf('year'), current.endOf('year').add('day', -1));\n default:\n return new AXDateTimeRange(current.startOf('month'), current.endOf('month'));\n }\n }\n /**\n * @ignore\n */\n dayView(i, applyCellClass) {\n const current = this._viewStartDate.add('month', i);\n const view = {\n range: this._setDisplayRange(current),\n slots: [],\n };\n this.views.push(view);\n const a = view.range.enumerate('day');\n view.slots = a.map((d, i) => {\n let selected = false;\n if (this.depth === 'day') {\n selected = this.value && d.equal(this.value, 'day');\n }\n else if (this.depth === 'month') {\n selected = this.value && d.equal(this.value, 'month');\n }\n else if (this.depth === 'year') {\n selected = this.value && d.equal(this.value, 'year');\n }\n const r = {};\n r.date = d;\n r.text = d.dayOfMonth;\n r.today = d.equal(this._today, 'day');\n r.selected = selected;\n r.holiday = this.isHoliday(d) || this.isWeekend(d);\n r.disabled =\n (this.minValue && d.compare(this.minValue, 'day') == -1) ||\n (this.maxValue && d.compare(this.maxValue, 'day') == 1) ||\n this.isDisabled(d);\n //\n // const focused = d.dayOfMonth == this._footPrint.day && d.monthOfYear == this._footPrint.month && d.year == this._footPrint.year;\n //\n if (r.disabled) {\n r.cssClass = {\n 'ax-state-disabled': true,\n };\n }\n else {\n r.cssClass = {\n 'ax-state-today': r.today,\n 'ax-state-selected': r.selected,\n 'ax-state-holiday': r.holiday,\n // 'ax-state-focused': focused,\n };\n }\n // ax-col-start-1 ax-col-start-2 ax-col-start-3 ax-col-start-4 ax-col-start-5 ax-col-start-6 ax-col-start-7\n r.cssClass[`ax-column-start-${this._getWeekColumn(view.range.startTime)}`] = i == 0;\n if (this.cellClass)\n applyCellClass(r);\n return r;\n });\n }\n /**\n * @ignore\n */\n monthView(i, applyCellClass) {\n const current = this._viewStartDate.add('year', i);\n const view = {\n range: this._setDisplayRange(current),\n slots: [],\n };\n this.views.push(view);\n const a = view.range.enumerate('month');\n view.slots = a.map((d) => {\n const r = {};\n r.date = d;\n r.text = this.formatService.format(d, 'date', 'MMM');\n r.today = d.equal(this._today, 'month');\n //\n r.disabled =\n (this.minValue && d.compare(this.minValue, 'month') == -1) ||\n (this.maxValue && d.compare(this.maxValue, 'month') == 1);\n //\n r.selected = this.value && this.depth == 'month' && d.equal(this.value, 'month');\n //\n const focused = d.monthOfYear == this._footPrint.month && d.year == this._footPrint.year;\n //\n if (r.disabled) {\n r.cssClass = {\n 'ax-state-disabled': r.disabled,\n };\n }\n else {\n r.cssClass = {\n 'ax-state-today': r.today,\n 'ax-state-selected': r.selected,\n 'ax-state-focused': focused,\n };\n }\n applyCellClass(r);\n return r;\n });\n }\n /**\n * @ignore\n */\n yearView(i, applyCellClass) {\n const current = this._viewStartDate.add('year', i * 10);\n const view = {\n range: this._setDisplayRange(current),\n slots: [],\n };\n this.views.push(view);\n const a = view.range.enumerate('year');\n view.slots = a.map((d) => {\n const r = {};\n r.date = d;\n r.text = this.formatService.format(d, 'date', 'YYYY');\n r.today = d.equal(this._today, 'year');\n r.selected = this.value && this.depth == 'year' && d.equal(this.value, 'year');\n //\n const focused = d.year == this._footPrint.year;\n //\n r.disabled =\n (this.minValue && d.compare(this.minValue, 'year') == -1) ||\n (this.maxValue && d.compare(this.maxValue, 'year') == 1);\n //\n if (r.disabled) {\n r.cssClass = {\n 'ax-state-disabled': r.disabled,\n };\n }\n else {\n r.cssClass = {\n 'ax-state-today': r.today,\n 'ax-state-selected': r.selected,\n 'ax-state-focused': focused,\n };\n }\n applyCellClass(r);\n return r;\n });\n }\n /**\n * @ignore\n */\n _handlePrevClick() {\n this._navUserInteraction = true;\n this.prev();\n this._navUserInteraction = false;\n }\n /**\n * @ignore\n */\n _handleNextClick() {\n this._navUserInteraction = true;\n this.next();\n this._navUserInteraction = false;\n }\n /**\n * @ignore\n */\n _handleSlotClick(e, slot) {\n if (slot.disabled || this.disabled)\n return;\n //\n this.onSlotClick.emit({\n component: this,\n item: slot.date.date,\n isUserInteraction: true,\n nativeEvent: e,\n });\n //\n if (this.activeView == 'day') {\n this._setDate(slot.date.date);\n }\n else if (this.activeView == 'month' && this.depth == 'day') {\n this.activeView = 'day';\n this._footPrint.month = this.calendarService.create(slot.date.date, this.calendar()).monthOfYear;\n this.navTo(slot.date);\n }\n else if (this.activeView == 'month' && this.depth == 'month') {\n this._setDate(slot.date.date);\n }\n else if (this.activeView == 'year' && (this.depth == 'day' || this.depth == 'month')) {\n this.activeView = 'month';\n this._footPrint.year = this.calendarService.create(slot.date.date, this.calendar()).year;\n this.navTo(slot.date);\n }\n else if (this.activeView == 'year' && this.depth == 'year') {\n this._setDate(slot.date.date);\n }\n }\n /**\n * @ignore\n */\n _handleNavClick(e, view) {\n this._navUserInteraction = true;\n this.activeView = view;\n this._navUserInteraction = false;\n }\n /**\n * Toggles between different calendar views (day → month → year).\n */\n toggleView() {\n if (this.activeView == 'day')\n this.activeView = 'month';\n else if (this.activeView == 'month')\n this.activeView = 'year';\n }\n /**\n * @ignore\n */\n internalOptionChanged(e) {\n if (e.name == 'depth' || e.name == 'activeView' || e.name == 'disabledDates' || e.name == 'holidayDates') {\n this.render();\n }\n if (e.name == 'type') {\n this._refresh();\n }\n }\n /**\n * @ignore\n */\n internalSetValue(value) {\n if (!value || !this.calendarService.isValidDate(value)) {\n return null;\n }\n const v = this.calendarService.convert(value, this.calendar());\n if (this.isDisabled(v)) {\n return null;\n }\n if (this.maxValue && this.calendarService.isValidDate(this.maxValue) && v.isAfter(this.maxValue)) {\n return this.maxValue;\n }\n if (this.minValue && this.calendarService.isValidDate(this.minValue) && v.isBefore(this.minValue)) {\n return this.minValue;\n }\n return v.date;\n }\n /**\n * @ignore\n */\n internalValueChanged(value) {\n const val = this.calendarService.create(value, this.calendar());\n if (!this._viewStartDate ||\n val.compare(this.displayRange?.startTime, this.activeView) == -1 ||\n val.compare(this.displayRange?.endTime, this.activeView) == 1) {\n this._viewStartDate = this.calendarService.create(value, this.calendar());\n if (this.minValue && this._viewStartDate.isBefore(this.minValue)) {\n this._viewStartDate = this.calendarService.create(this.minValue, this.calendar());\n }\n }\n this._footPrint.year = val.year;\n this._footPrint.month = val.monthOfYear;\n this._footPrint.day = val.dayOfMonth;\n if (isPlatformBrowser(this.platformID)) {\n const calendarSlots = Array.from(this.getHostElement().querySelectorAll('.ax-calendar-slot'));\n const selectedSlot = this.getHostElement().querySelector('.ax-state-selected');\n if (selectedSlot) {\n selectedSlot.classList.remove('ax-state-selected');\n }\n else {\n this.render();\n }\n calendarSlots.forEach((element) => {\n element = element;\n if (element.textContent == this._footPrint.day) {\n element.classList.add('ax-state-selected');\n }\n });\n }\n const oldVal = this.oldValue() ? this.calendarService.create(this.oldValue(), this.calendar()) : null;\n if (!oldVal || oldVal.monthOfYear !== val.monthOfYear || oldVal.year !== val.year) {\n this.render();\n }\n this.oldValue.set(value);\n }\n /**\n * @ignore\n */\n _handleGoToday() {\n this._navUserInteraction = true;\n this._setDate(this._today.date);\n this.goToday();\n this._navUserInteraction = false;\n }\n /**\n * Navigates forward in the calendar based on the current active view and the configured count.\n *\n * Behavior by view:\n * - day view: advances by count months\n * - month view: advances by count years\n * - year view: advances by 10 × count years\n *\n * @returns void\n */\n next() {\n this._navNextPrev(false);\n }\n /**\n * Navigates backward in the calendar based on the current active view and the configured count.\n *\n * Behavior by view:\n * - day view: goes back by count months\n * - month view: goes back by count years\n * - year view: goes back by 10 × count years\n *\n * @returns void\n */\n prev() {\n this._navNextPrev(true);\n }\n /**\n * Sets focus to the currently selected calendar slot or the first available slot.\n *\n * @returns void\n */\n focus() {\n const func = (s) => this.getHostElement().querySelector(s);\n const div = func('.ax-calendar-slots>div.ax-state-selected') || func('.ax-calendar-slots>div');\n div?.focus();\n }\n /**\n * @ignore\n */\n _navNextPrev(prev) {\n const sign = prev ? -1 : 1;\n if (this.activeView == 'day')\n this.navTo(this._viewStartDate.add('month', sign * 1 * this.count));\n else if (this.activeView == 'month')\n this.navTo(this._viewStartDate.add('year', sign * 1 * this.count));\n else\n this.navTo(this._viewStartDate.add('year', sign * 10 * this.count));\n }\n /**\n * Navigates to the current date and emits the navigation event.\n *\n * @returns void\n */\n goToday() {\n this.navTo(this._today);\n }\n /**\n * Navigates to a specified date and updates the view.\n *\n * @param date The date to navigate to, which can be a Date object or an AXDateTime instance.\n * @returns void\n */\n navTo(date) {\n const val = this.calendarService.convert(date, this.calendar());\n this._viewStartDate = val.startOf();\n this.render();\n //to make sure its rendred and displayRange is not null\n if (this.views.length > 0) {\n const vr = this.displayRange;\n this.onNavigate.emit({\n component: this,\n isUserInteraction: this._navUserInteraction,\n start: vr.startTime?.date,\n end: vr.endTime?.date,\n htmlElement: this.getHostElement(),\n });\n }\n }\n /**\n * @ignore\n */\n get __hostClass() {\n const _classes = {\n 'ax-state-disabled': this.disabled,\n 'ax-state-readonly': this.readonly,\n [`ax-look-${this.look()}`]: true,\n };\n return Object.entries(_classes)\n .filter((c) => c[1])\n .map((c) => c[0])\n .join(' ');\n }\n /**\n * @ignore\n */\n _setDate(value) {\n if (this.readonly || this.disabled)\n return;\n this.commitValue(this.calendarService.convert(value, this.calendar()).startOf().date, true);\n }\n /**\n * @ignore\n */\n isDisabled(date) {\n if (Array.isArray(this.disabledDates) && this.disabledDates.length != 0) {\n return this.disabledDates.some((d) => date.equal(d, 'day'));\n }\n else if (typeof this.disabledDates == 'function') {\n return this.disabledDates(date.date);\n }\n return false;\n }\n /**\n * @ignore\n */\n isHoliday(date) {\n const gh = this.calendarService.holidays.some((d) => date.equal(d.date, 'day'));\n let dh = this.calendarService.holidays.some((d) => date.equal(d.date, 'day'));\n if (Array.isArray(this.holidayDates) && this.holidayDates.length != 0) {\n dh = this.holidayDates.some((d) => date.equal(d, 'day'));\n }\n else if (typeof this.holidayDates == 'function') {\n dh = this.holidayDates(date.date);\n }\n return gh || dh;\n }\n /**\n * @ignore\n */\n isWeekend(date) {\n if (this.weekend().length) {\n return this.weekend().includes(date.weekdayIndex);\n }\n const weekend = this.calendarService.resolveCalendar(this.calendar()).weekend;\n return weekend.includes(date.weekdayIndex);\n }\n /**\n * @ignore\n */\n _handleOnKeydownEvent(e) {\n //TODO: complete keyboad navigation\n const ignore = () => {\n e.preventDefault();\n e.stopPropagation();\n };\n if (e.code === 'ArrowRight' || e.code === 'ArrowLeft') {\n if (e.ctrlKey) {\n e.code === 'ArrowRight' ? this.next() : this.prev();\n setTimeout(() => {\n this.focus();\n }, 50);\n }\n ignore();\n }\n else if (e.code === 'ArrowUp' || e.code === 'ArrowDown') {\n if (e.ctrlKey) {\n e.code === 'ArrowUp' ? this.next() : this.prev();\n setTimeout(() => {\n this.focus();\n }, 50);\n }\n ignore();\n }\n }\n /**\n * @ignore\n */\n getMonthName(date, style) {\n return `dateTime.months.${date.calendar.name()}.${style}.${date.monthOfYear - 1}`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXCalendarComponent, isStandalone: true, selector: \"ax-calendar\", inputs: { rtl: { classPropertyName: \"rtl\", publicName: \"rtl\", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: \"readonly\", publicName: \"readonly\", isSignal: false, isRequired: false, transformFunction: null }, value: { classPropertyName: \"value\", publicName: \"value\", isSignal: false, isRequired: false, transformFunction: null }, name: { classPropertyName: \"name\", publicName: \"name\", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: false, isRequired: false, transformFunction: null }, depth: { classPropertyName: \"depth\", publicName: \"depth\", isSignal: false, isRequired: false, transformFunction: null }, activeView: { classPropertyName: \"activeView\", publicName: \"activeView\", isSignal: false, isRequired: false, transformFunction: null }, minValue: { classPropertyName: \"minValue\", publicName: \"minValue\", isSignal: false, isRequired: false, transformFunction: null }, maxValue: { classPropertyName: \"maxValue\", publicName: \"maxValue\", isSignal: false, isRequired: false, transformFunction: null }, disabledDates: { classPropertyName: \"disabledDates\", publicName: \"disabledDates\", isSignal: false, isRequired: false, transformFunction: null }, holidayDates: { classPropertyName: \"holidayDates\", publicName: \"holidayDates\", isSignal: false, isRequired: false, transformFunction: null }, type: { classPropertyName: \"type\", publicName: \"type\", isSignal: false, isRequired: false, transformFunction: null }, dayCellTemplate: { classPropertyName: \"dayCellTemplate\", publicName: \"dayCellTemplate\", isSignal: false, isRequired: false, transformFunction: null }, monthCellTemplate: { classPropertyName: \"monthCellTemplate\", publicName: \"monthCellTemplate\", isSignal: false, isRequired: false, transformFunction: null }, yearCellTemplate: { classPropertyName: \"yearCellTemplate\", publicName: \"yearCellTemplate\", isSignal: false, isRequired: false, transformFunction: null }, cellClass: { classPropertyName: \"cellClass\", publicName: \"cellClass\", isSignal: false, isRequired: false, transformFunction: null }, showNavigation: { classPropertyName: \"showNavigation\", publicName: \"showNavigation\", isSignal: false, isRequired: false, transformFunction: null }, count: { classPropertyName: \"count\", publicName: \"count\", isSignal: false, isRequired: false, transformFunction: null }, id: { classPropertyName: \"id\", publicName: \"id\", isSignal: false, isRequired: false, transformFunction: null }, weekend: { classPropertyName: \"weekend\", publicName: \"weekend\", isSignal: true, isRequired: false, transformFunction: null }, weekdays: { classPropertyName: \"weekdays\", publicName: \"weekdays\", isSignal: true, isRequired: false, transformFunction: null }, look: { classPropertyName: \"look\", publicName: \"look\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onOptionChanged: \"onOptionChanged\", valueChange: \"valueChange\", onValueChanged: \"onValueChanged\", minValueChange: \"minValueChange\", maxValueChange: \"maxValueChange\", onBlur: \"onBlur\", onFocus: \"onFocus\", depthChange: \"depthChange\", typeChange: \"typeChange\", activeViewChange: \"activeViewChange\", disabledDatesChange: \"disabledDatesChange\", holidayDatesChange: \"holidayDatesChange\", onNavigate: \"onNavigate\", onSlotClick: \"onSlotClick\", countChange: \"countChange\" }, host: { listeners: { \"keydown\": \"_handleOnKeydownEvent($event)\" }, properties: { \"class\": \"this.__hostClass\" } }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXCalendarComponent),\n multi: true,\n },\n {\n provide: AXValuableComponent,\n useExisting: AXCalendarComponent,\n },\n AXUnsubscriber,\n { provide: AXComponent, useExisting: AXCalendarComponent },\n ], usesInheritance: true, ngImport: i0, template: \"<ng-content select=\\\"ax-header\\\"></ng-content>\\n<div class=\\\"ax-calendar-body\\\">\\n @for (v of views; let i = $index, first = $first, last = $last; track i) {\\n @switch (activeView) {\\n @case ('year') {\\n @if (showNavigation) {\\n <div class=\\\"ax-calendar-view-header\\\">\\n <div class=\\\"ax-calendar-header-info\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-state-disabled\\\"\\n (click)=\\\"_handleNavClick($event, 'year')\\\"\\n >\\n {{ v.range.startTime | format: 'date' : { calendar: calendar(), format: 'YYYY' } | async }} -\\n {{ v.range.endTime | format: 'date' : { calendar: calendar(), format: 'YYYY' } | async }}\\n </button>\\n </div>\\n @if (last) {\\n <div class=\\\"ax-calendar-header-buttons\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon ax-next\\\"\\n (click)=\\\"_handlePrevClick()\\\"\\n [title]=\\\"'@acorex:common.actions.prev' | translate | async\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-left\\\"></i>\\n </button>\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon\\\"\\n (click)=\\\"_handleNextClick()\\\"\\n [title]=\\\"'@acorex:common.actions.next' | translate | async\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-right\\\"></i>\\n </button>\\n </div>\\n }\\n </div>\\n }\\n <div class=\\\"ax-calendar-slots ax-calendar-slots-year\\\" [ngClass]=\\\"{ 'ax-default': !yearCellTemplate }\\\">\\n @for (slot of v.slots; track slot.text) {\\n <button\\n tabindex=\\\"0\\\"\\n class=\\\"ax-calendar-slot\\\"\\n [class.ax-state-disabled]=\\\"disabled\\\"\\n [ngClass]=\\\"slot.cssClass\\\"\\n (click)=\\\"_handleSlotClick($event, slot)\\\"\\n >\\n @if (yearCellTemplate) {\\n <div>\\n <ng-container\\n [ngTemplateOutlet]=\\\"yearCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { slot: slot } }\\\"\\n >\\n </ng-container>\\n </div>\\n } @else {\\n <div>\\n {{ slot.text }}\\n </div>\\n }\\n </button>\\n }\\n </div>\\n }\\n @case ('month') {\\n @if (showNavigation) {\\n <div class=\\\"ax-calendar-view-header\\\">\\n <div class=\\\"ax-calendar-header-info\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded\\\"\\n (click)=\\\"_handleNavClick($event, 'year')\\\"\\n >\\n {{ v.range.startTime | format: 'date' : { calendar: calendar(), format: 'YYYY' } | async }}\\n </button>\\n </div>\\n @if (last) {\\n <div class=\\\"ax-calendar-header-buttons\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon\\\"\\n (click)=\\\"_handlePrevClick()\\\"\\n [title]=\\\"'@acorex:common.actions.prev' | translate | async\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-left\\\"></i>\\n </button>\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon\\\"\\n (click)=\\\"_handleNextClick()\\\"\\n [title]=\\\"'@acorex:common.actions.next' | translate | async\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-right\\\"></i>\\n </button>\\n </div>\\n }\\n </div>\\n }\\n\\n <div class=\\\"ax-calendar-slots ax-calendar-slots-month\\\" [ngClass]=\\\"{ 'ax-default': !monthCellTemplate }\\\">\\n @for (slot of v.slots; track slot) {\\n <button\\n tabindex=\\\"0\\\"\\n class=\\\"ax-calendar-slot\\\"\\n [class.ax-state-disabled]=\\\"disabled\\\"\\n [ngClass]=\\\"slot.cssClass\\\"\\n (click)=\\\"_handleSlotClick($event, slot)\\\"\\n >\\n @if (monthCellTemplate) {\\n <div>\\n <ng-container\\n [ngTemplateOutlet]=\\\"monthCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { slot: slot } }\\\"\\n >\\n </ng-container>\\n </div>\\n } @else {\\n <div [title]=\\\"slot.date | format: 'date' : { calendar: calendar(), format: 'MMMM YYYY' } | async\\\">\\n {{ `@acorex:${getMonthName(slot.date, 'short')}` | translate | async }}\\n </div>\\n }\\n </button>\\n }\\n </div>\\n }\\n @default {\\n @if (showNavigation && look() === 'select' && last) {\\n <div class=\\\"ax-calendar-view-header ax-calendar-day-nav\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon ax-calendar-day-nav-prev\\\"\\n (click)=\\\"_handlePrevClick()\\\"\\n [title]=\\\"'@acorex:common.actions.prev' | translate | async\\\"\\n >\\n <i\\n class=\\\"ax-icon\\\"\\n [ngClass]=\\\"{\\n 'ax-icon-chevron-left': !isRtl(),\\n 'ax-icon-chevron-right': isRtl(),\\n }\\\"\\n ></i>\\n </button>\\n <div class=\\\"ax-calendar-day-nav-center\\\">\\n <ax-select-box\\n class=\\\"ax-calendar-month-select ax-sm\\\"\\n look=\\\"none\\\"\\n [disabled]=\\\"disabled\\\"\\n [readonly]=\\\"readonly\\\"\\n [dataSource]=\\\"_monthOptions\\\"\\n textField=\\\"text\\\"\\n valueField=\\\"id\\\"\\n [ngModel]=\\\"_currentMonth\\\"\\n [maxVisibleItems]=\\\"12\\\"\\n [itemHeight]=\\\"32\\\"\\n (onValueChanged)=\\\"_handleMonthSelectChanged($event)\\\"\\n (click)=\\\"$event.stopPropagation()\\\"\\n ></ax-select-box>\\n <ax-select-box\\n class=\\\"ax-calendar-year-select ax-sm\\\"\\n look=\\\"none\\\"\\n [disabled]=\\\"disabled\\\"\\n [readonly]=\\\"readonly\\\"\\n [dataSource]=\\\"_yearOptions\\\"\\n textField=\\\"text\\\"\\n valueField=\\\"id\\\"\\n [ngModel]=\\\"_currentYear\\\"\\n [maxVisibleItems]=\\\"10\\\"\\n [itemHeight]=\\\"32\\\"\\n (onValueChanged)=\\\"_handleYearSelectChanged($event)\\\"\\n (click)=\\\"$event.stopPropagation()\\\"\\n ></ax-select-box>\\n </div>\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon ax-calendar-day-nav-next\\\"\\n (click)=\\\"_handleNextClick()\\\"\\n [title]=\\\"'@acorex:common.actions.next' | translate | async\\\"\\n >\\n <i\\n class=\\\"ax-icon\\\"\\n [ngClass]=\\\"{\\n 'ax-icon-chevron-right': !isRtl(),\\n 'ax-icon-chevron-left': isRtl(),\\n }\\\"\\n ></i>\\n </button>\\n </div>\\n }\\n @if (showNavigation && look() === 'classic') {\\n <div class=\\\"ax-calendar-view-header\\\">\\n <div class=\\\"ax-calendar-header-info\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded\\\"\\n (click)=\\\"_handleNavClick($event, 'year')\\\"\\n >\\n {{ v.range.startTime | format: 'date' : { calendar: calendar(), format: 'YYYY' } | async }}\\n </button>\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded\\\"\\n (click)=\\\"_handleNavClick($event, 'month')\\\"\\n >\\n {{ v.range.startTime | format: 'date' : { calendar: calendar(), format: 'MMMM' } | async }}\\n </button>\\n </div>\\n @if (last) {\\n <div class=\\\"ax-calendar-header-buttons\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon\\\"\\n (click)=\\\"_handlePrevClick()\\\"\\n [title]=\\\"'@acorex:common.actions.prev' | translate | async\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-left\\\"></i>\\n </button>\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon\\\"\\n (click)=\\\"_handleNextClick()\\\"\\n [title]=\\\"'@acorex:common.actions.next' | translate | async\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-right\\\"></i>\\n </button>\\n </div>\\n }\\n </div>\\n }\\n <div class=\\\"ax-calendar-week\\\">\\n @for (d of weekLayout(); track d) {\\n <div>{{ '@acorex:dateTime.weekdays.short.' + d | translate | async }}</div>\\n }\\n </div>\\n\\n <div class=\\\"ax-calendar-slots ax-calendar-slots-day\\\" [ngClass]=\\\"{ 'ax-default': !dayCellTemplate }\\\">\\n @for (slot of v.slots; track slot) {\\n <button\\n tabindex=\\\"0\\\"\\n class=\\\"ax-calendar-slot\\\"\\n [ngClass]=\\\"slot.cssClass\\\"\\n [class.ax-state-disabled]=\\\"disabled\\\"\\n (click)=\\\"_handleSlotClick($event, slot)\\\"\\n [disabled]=\\\"disabled\\\"\\n [axRipple]\\n >\\n @if (dayCellTemplate) {\\n <div>\\n <ng-container\\n [ngTemplateOutlet]=\\\"dayCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { slot: slot } }\\\"\\n >\\n </ng-container>\\n </div>\\n } @else {\\n <div [title]=\\\"slot.date | format: 'date' : { calendar: calendar(), format: 'long' } | async\\\">\\n {{ slot.text }}\\n </div>\\n }\\n </button>\\n }\\n </div>\\n }\\n }\\n }\\n</div>\\n<ng-content select=\\\"ax-footer\\\"></ng-content>\\n\", styles: [\"ax-calendar{--ax-comp-calendar-view-header-padding: .5rem;--ax-comp-calendar-slot-today-border-width: 1px;--ax-comp-calendar-slot-focused-border-width: 1px;--ax-comp-calendar-slot-focused-outline-width: 2px;--ax-comp-calendar-slot-disabled-opacity: .5;--ax-comp-calendar-slot-readonly-opacity: .75;--ax-comp-calendar-footer-margin-t: 1.25rem;--ax-comp-calendar-footer-today-button-padding-x: 1rem;--ax-comp-calendar-footer-today-button-height: var(--ax-sys-size-base)}ax-calendar{--ax-comp-calendar-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-calendar-view-header-border-color: var(--ax-sys-color-border-lightest-surface);--ax-comp-calendar-slot-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-calendar-slot-ripple-color: var(--ax-sys-color-primary-light-surface), .3;--ax-comp-calendar-slot-today-text-color: var(--ax-sys-color-primary-surface);--ax-comp-calendar-slot-today-border-color: var(--ax-sys-color-primary-surface);--ax-comp-calendar-slot-hover-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-calendar-slot-hover-text-color: var(--ax-sys-color-on-primary-surface);--ax-comp-calendar-slot-focused-border-color: var(--ax-sys-color-border-lightest-surface);--ax-comp-calendar-slot-focused-outline-color: var(--ax-sys-color-primary-surface);--ax-comp-calendar-slot-selected-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-calendar-slot-selected-text-color: var(--ax-sys-color-on-primary-surface);--ax-comp-calendar-slot-holiday-text-color: var(--ax-sys-color-danger-surface);--ax-comp-calendar-slot-holiday-ripple-color: var(--ax-sys-color-danger-light-surface), .3;--ax-comp-calendar-slot-holiday-today-border-color: var(--ax-sys-color-danger-surface);--ax-comp-calendar-slot-holiday-hover-bg-color: var(--ax-sys-color-danger-surface);--ax-comp-calendar-slot-holiday-hover-border-color: var(--ax-sys-color-danger-surface);--ax-comp-calendar-slot-holiday-selected-bg-color: var(--ax-sys-color-danger-surface);--ax-comp-calendar-slot-holiday-selected-text-color: var(--ax-sys-color-on-danger-surface);--ax-comp-calendar-footer-today-button-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-calendar-footer-today-button-text-color: var(--ax-sys-color-on-primary-surface);--ax-comp-calendar-footer-today-button-hover-bg-color: var(--ax-sys-color-primary-dark-surface);--ax-comp-calendar-footer-today-button-focused-outline-color: var(--ax-sys-color-primary-surface), 1}.ax-dark ax-calendar{--ax-comp-calendar-text-color: var(--ax-sys-color-on-darkest-surface);--ax-comp-calendar-view-header-border-color: var(--ax-sys-color-border-darkest-surface);--ax-comp-calendar-slot-text-color: var(--ax-sys-color-on-darkest-surface);--ax-comp-calendar-slot-focused-border-color: var(--ax-sys-color-border-darkest-surface)}html[dir=rtl] ax-calendar .ax-calendar-header-buttons .ax-icon{-moz-transform:scale(-1,1);-o-transform:scale(-1,1);-webkit-transform:scale(-1,1);transform:scaleX(-1)}ax-calendar{width:100%;display:block;color:rgba(var(--ax-comp-calendar-text-color));background-color:rgba(var(--ax-comp-calendar-bg-color))}ax-calendar.ax-state-disabled .ax-calendar-slots{cursor:not-allowed;opacity:.5}ax-calendar.ax-state-readonly .ax-calendar-slots{cursor:text}ax-calendar .ax-calendar-header{display:flex;justify-content:space-between;padding-left:var(--ax-comp-calendar-header-padding-x, .25rem);padding-right:var(--ax-comp-calendar-header-padding-x, .25rem);padding-top:var(--ax-comp-calendar-header-padding-t, .25rem)}ax-calendar .ax-calendar-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body{display:flex;flex-direction:column;justify-content:center;align-items:center}@media (min-width: 1024px){ax-calendar .ax-calendar-body{flex-direction:column}}ax-calendar .ax-calendar-body>div{width:100%;flex:1 1 0%}@media (min-width: 768px){ax-calendar .ax-calendar-body>div{width:20rem}}ax-calendar .ax-calendar-body .ax-calendar-view-header{display:flex;justify-content:space-between;border-bottom-width:var(--ax-comp-calendar-view-header-border-width, 1px);border-color:rgba(var(--ax-comp-calendar-view-header-border-color));padding:var(--ax-comp-calendar-view-header-padding)}ax-calendar .ax-calendar-body .ax-calendar-view-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-body .ax-calendar-view-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body .ax-calendar-slots{display:grid;gap:.25rem;padding:1rem}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot{position:relative;display:flex;cursor:pointer;align-items:center;justify-content:center;text-align:center;font-size:var(--ax-comp-calendar-font-size, .875rem);color:rgba(var(--ax-comp-calendar-slot-text-color));line-height:var(--ax-comp-calendar-line-height, 1.25rem);border-radius:var(--ax-comp-calendar-slot-border-radius, var(--ax-sys-border-radius));transition-duration:var(--ax-sys-transition-duration);transition-timing-function:var(--ax-sys-transition-timing-function);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:before{content:\\\"\\\";float:left;padding-top:100%}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:after{content:\\\"\\\";clear:both;display:block}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-disabled,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-selected){background-color:rgba(var(--ax-comp-calendar-slot-hover-bg-color));color:rgba(var(--ax-comp-calendar-slot-hover-text-color))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled){outline-width:var(--ax-comp-calendar-slot-focused-outline-width);outline-color:rgba(var(--ax-comp-calendar-slot-focused-outline-color))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled{outline-style:dashed;outline-width:var(--ax-comp-calendar-slot-focused-outline-width)}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-disabled{cursor:not-allowed;opacity:var(--ax-comp-calendar-slot-disabled-opacity)}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-readonly{cursor:text;opacity:var(--ax-comp-calendar-slot-readonly-opacity)}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-1{grid-column-start:1}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-2{grid-column-start:2}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-3{grid-column-start:3}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-4{grid-column-start:4}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-5{grid-column-start:5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-6{grid-column-start:6}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-7{grid-column-start:7}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-other{opacity:.05}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot .ax-ripple{background-color:rgba(var(--ax-comp-calendar-slot-ripple-color))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{color:rgba(var(--ax-comp-calendar-slot-today-text-color));border-width:var(--ax-comp-calendar-slot-today-border-width);border-color:rgba(var(--ax-comp-calendar-slot-today-border-color))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today.ax-state-holiday{border-color:rgba(var(--ax-comp-calendar-slot-holiday-today-border-color))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-focused{border-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected{color:rgba(var(--ax-comp-calendar-slot-selected-text-color));background-color:rgba(var(--ax-comp-calendar-slot-selected-bg-color))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday{color:rgba(var(--ax-comp-calendar-slot-holiday-selected-text-color))!important;background-color:rgba(var(--ax-comp-calendar-slot-holiday-selected-bg-color))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday{color:rgba(var(--ax-comp-calendar-slot-holiday-text-color))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:is(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-comp-calendar-slot-holiday-hover-bg-color))!important;border-color:rgba(var(--ax-comp-calendar-slot-holiday-hover-border-color))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday .ax-ripple{background-color:rgba(var(--ax-comp-calendar-slot-holiday-ripple-color))!important}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-day{grid-template-columns:repeat(7,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-year,ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-month{grid-template-columns:repeat(4,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));padding-top:var(--ax-comp-calendar-week-padding-t, .75rem);padding-left:var(--ax-comp-calendar-week-padding-x, .5rem);padding-right:var(--ax-comp-calendar-week-padding-x, .5rem)}ax-calendar .ax-calendar-body .ax-calendar-week>div{display:flex;cursor:pointer;position:relative;text-align:center;align-items:center;justify-content:center;font-size:var(--ax-comp-calendar-font-size, .875rem);line-height:var(--ax-comp-calendar-line-height, 1.25rem)}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.25rem}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav .ax-icon{font-size:.875rem}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav .ax-calendar-day-nav-prev{justify-self:start}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav .ax-calendar-day-nav-center{display:flex;align-items:center;justify-content:center;gap:.25rem}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav .ax-calendar-day-nav-next{justify-self:end}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-month-select,ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-year-select{display:inline-block;width:auto;flex:0 0 auto}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-month-select .ax-icon,ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-year-select .ax-icon{font-size:.75rem}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-month-select .ax-editor-container,ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-year-select .ax-editor-container{gap:0}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-month-select ax-dropdown-box.ax-editor-container,ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-year-select ax-dropdown-box.ax-editor-container{width:auto;justify-content:flex-start}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-month-select .ax-chips-container,ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-year-select .ax-chips-container{flex:0 0 auto;width:auto}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-month-select .ax-chips-container .ax-chips,ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-year-select .ax-chips-container .ax-chips{overflow:visible;text-overflow:unset}ax-calendar .ax-calendar-footer{display:flex;align-items:center;justify-content:center;margin-top:var(--ax-comp-calendar-footer-margin-t)}ax-calendar .ax-calendar-footer .ax-today-button{width:100%;display:block;cursor:pointer;text-align:center;padding-left:var(--ax-comp-calendar-footer-today-button-padding-x);padding-right:var(--ax-comp-calendar-footer-today-button-padding-x);font-size:var(--ax-comp-calendar-font-size, .875rem);line-height:var(--ax-comp-calendar-line-height, 1.25rem);height:var(--ax-comp-calendar-footer-today-button-height);border-radius:var(--ax-comp-calendar-footer-today-button-border-radius, var(--ax-sys-border-radius));color:rgba(var(--ax-comp-calendar-footer-today-button-text-color));background-color:rgba(var(--ax-comp-calendar-footer-today-button-bg-color))}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-disabled{cursor:not-allowed;opacity:var(--ax-comp-calendar-slot-disabled-opacity)}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-readonly{cursor:text;opacity:var(--ax-comp-calendar-slot-readonly-opacity)}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-comp-calendar-footer-today-button-hover-bg-color))}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:focus,ax-calendar .ax-calendar-footer .ax-today-button:focus-visible):not(.ax-state-disabled){outline-color:rgba(var(--ax-comp-calendar-footer-today-button-focused-outline-color))}.ax-calendar-picker{display:flex;width:100%}.ax-calendar-picker ax-picker{flex:1 1 0%}.ax-overlay-pane ax-calendar{border-style:none}\\n\"], dependencies: [{ kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: AXRippleDirective, selector: \"[axRipple]\", inputs: [\"axRipple\", \"axRippleColor\"] }, { kind: \"ngmodule\", type: AXFormatModule }, { kind: \"component\", type: AXSelectBoxComponent, selector: \"ax-select-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"minValue\", \"maxValue\", \"value\", \"state\", \"name\", \"id\", \"type\", \"look\", \"multiple\", \"valueField\", \"textField\", \"disabledField\", \"textTemplate\", \"selectedItems\", \"isItemTruncated\", \"showItemTooltip\", \"itemHeight\", \"maxVisibleItems\", \"dataSource\", \"minRecordsForSearch\", \"caption\", \"itemTemplate\", \"selectedTemplate\", \"emptyTemplate\", \"loadingTemplate\", \"dropdownWidth\", \"searchBoxAutoFocus\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onOpened\", \"onClosed\", \"onItemSelected\", \"onItemClick\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }, { kind: \"pipe\", type: i2.AXFormatPipe, name: \"format\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXCalendarComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-calendar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: [\n 'rtl',\n 'readonly',\n 'value',\n 'name',\n 'disabled',\n 'depth',\n 'activeView',\n 'minValue',\n 'maxValue',\n 'disabledDates',\n 'holidayDates',\n 'type',\n 'dayCellTemplate',\n 'monthCellTemplate',\n 'yearCellTemplate',\n 'cellClass',\n 'showNavigation',\n 'count',\n 'name',\n 'id',\n ], outputs: [\n 'onOptionChanged',\n 'valueChange',\n 'onValueChanged',\n 'minValueChange',\n 'maxValueChange',\n 'onBlur',\n 'onFocus',\n 'depthChange',\n 'typeChange',\n 'activeViewChange',\n 'disabledDatesChange',\n 'holidayDatesChange',\n 'onNavigate',\n 'onSlotClick',\n 'countChange',\n ], providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXCalendarComponent),\n multi: true,\n },\n {\n provide: AXValuableComponent,\n useExisting: AXCalendarComponent,\n },\n AXUnsubscriber,\n { provide: AXComponent, useExisting: AXCalendarComponent },\n ], imports: [\n NgClass,\n NgTemplateOutlet,\n AXRippleDirective,\n AsyncPipe,\n AXTranslatorPipe,\n AXFormatModule,\n AXSelectBoxComponent,\n FormsModule,\n ], template: \"<ng-content select=\\\"ax-header\\\"></ng-content>\\n<div class=\\\"ax-calendar-body\\\">\\n @for (v of views; let i = $index, first = $first, last = $last; track i) {\\n @switch (activeView) {\\n @case ('year') {\\n @if (showNavigation) {\\n <div class=\\\"ax-calendar-view-header\\\">\\n <div class=\\\"ax-calendar-header-info\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-state-disabled\\\"\\n (click)=\\\"_handleNavClick($event, 'year')\\\"\\n >\\n {{ v.range.startTime | format: 'date' : { calendar: calendar(), format: 'YYYY' } | async }} -\\n {{ v.range.endTime | format: 'date' : { calendar: calendar(), format: 'YYYY' } | async }}\\n </button>\\n </div>\\n @if (last) {\\n <div class=\\\"ax-calendar-header-buttons\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon ax-next\\\"\\n (click)=\\\"_handlePrevClick()\\\"\\n [title]=\\\"'@acorex:common.actions.prev' | translate | async\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-left\\\"></i>\\n </button>\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon\\\"\\n (click)=\\\"_handleNextClick()\\\"\\n [title]=\\\"'@acorex:common.actions.next' | translate | async\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-right\\\"></i>\\n </button>\\n </div>\\n }\\n </div>\\n }\\n <div class=\\\"ax-calendar-slots ax-calendar-slots-year\\\" [ngClass]=\\\"{ 'ax-default': !yearCellTemplate }\\\">\\n @for (slot of v.slots; track slot.text) {\\n <button\\n tabindex=\\\"0\\\"\\n class=\\\"ax-calendar-slot\\\"\\n [class.ax-state-disabled]=\\\"disabled\\\"\\n [ngClass]=\\\"slot.cssClass\\\"\\n (click)=\\\"_handleSlotClick($event, slot)\\\"\\n >\\n @if (yearCellTemplate) {\\n <div>\\n <ng-container\\n [ngTemplateOutlet]=\\\"yearCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { slot: slot } }\\\"\\n >\\n </ng-container>\\n </div>\\n } @else {\\n <div>\\n {{ slot.text }}\\n </div>\\n }\\n </button>\\n }\\n </div>\\n }\\n @case ('month') {\\n @if (showNavigation) {\\n <div class=\\\"ax-calendar-view-header\\\">\\n <div class=\\\"ax-calendar-header-info\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded\\\"\\n (click)=\\\"_handleNavClick($event, 'year')\\\"\\n >\\n {{ v.range.startTime | format: 'date' : { calendar: calendar(), format: 'YYYY' } | async }}\\n </button>\\n </div>\\n @if (last) {\\n <div class=\\\"ax-calendar-header-buttons\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon\\\"\\n (click)=\\\"_handlePrevClick()\\\"\\n [title]=\\\"'@acorex:common.actions.prev' | translate | async\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-left\\\"></i>\\n </button>\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon\\\"\\n (click)=\\\"_handleNextClick()\\\"\\n [title]=\\\"'@acorex:common.actions.next' | translate | async\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-right\\\"></i>\\n </button>\\n </div>\\n }\\n </div>\\n }\\n\\n <div class=\\\"ax-calendar-slots ax-calendar-slots-month\\\" [ngClass]=\\\"{ 'ax-default': !monthCellTemplate }\\\">\\n @for (slot of v.slots; track slot) {\\n <button\\n tabindex=\\\"0\\\"\\n class=\\\"ax-calendar-slot\\\"\\n [class.ax-state-disabled]=\\\"disabled\\\"\\n [ngClass]=\\\"slot.cssClass\\\"\\n (click)=\\\"_handleSlotClick($event, slot)\\\"\\n >\\n @if (monthCellTemplate) {\\n <div>\\n <ng-container\\n [ngTemplateOutlet]=\\\"monthCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { slot: slot } }\\\"\\n >\\n </ng-container>\\n </div>\\n } @else {\\n <div [title]=\\\"slot.date | format: 'date' : { calendar: calendar(), format: 'MMMM YYYY' } | async\\\">\\n {{ `@acorex:${getMonthName(slot.date, 'short')}` | translate | async }}\\n </div>\\n }\\n </button>\\n }\\n </div>\\n }\\n @default {\\n @if (showNavigation && look() === 'select' && last) {\\n <div class=\\\"ax-calendar-view-header ax-calendar-day-nav\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon ax-calendar-day-nav-prev\\\"\\n (click)=\\\"_handlePrevClick()\\\"\\n [title]=\\\"'@acorex:common.actions.prev' | translate | async\\\"\\n >\\n <i\\n class=\\\"ax-icon\\\"\\n [ngClass]=\\\"{\\n 'ax-icon-chevron-left': !isRtl(),\\n 'ax-icon-chevron-right': isRtl(),\\n }\\\"\\n ></i>\\n </button>\\n <div class=\\\"ax-calendar-day-nav-center\\\">\\n <ax-select-box\\n class=\\\"ax-calendar-month-select ax-sm\\\"\\n look=\\\"none\\\"\\n [disabled]=\\\"disabled\\\"\\n [readonly]=\\\"readonly\\\"\\n [dataSource]=\\\"_monthOptions\\\"\\n textField=\\\"text\\\"\\n valueField=\\\"id\\\"\\n [ngModel]=\\\"_currentMonth\\\"\\n [maxVisibleItems]=\\\"12\\\"\\n [itemHeight]=\\\"32\\\"\\n (onValueChanged)=\\\"_handleMonthSelectChanged($event)\\\"\\n (click)=\\\"$event.stopPropagation()\\\"\\n ></ax-select-box>\\n <ax-select-box\\n class=\\\"ax-calendar-year-select ax-sm\\\"\\n look=\\\"none\\\"\\n [disabled]=\\\"disabled\\\"\\n [readonly]=\\\"readonly\\\"\\n [dataSource]=\\\"_yearOptions\\\"\\n textField=\\\"text\\\"\\n valueField=\\\"id\\\"\\n [ngModel]=\\\"_currentYear\\\"\\n [maxVisibleItems]=\\\"10\\\"\\n [itemHeight]=\\\"32\\\"\\n (onValueChanged)=\\\"_handleYearSelectChanged($event)\\\"\\n (click)=\\\"$event.stopPropagation()\\\"\\n ></ax-select-box>\\n </div>\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon ax-calendar-day-nav-next\\\"\\n (click)=\\\"_handleNextClick()\\\"\\n [title]=\\\"'@acorex:common.actions.next' | translate | async\\\"\\n >\\n <i\\n class=\\\"ax-icon\\\"\\n [ngClass]=\\\"{\\n 'ax-icon-chevron-right': !isRtl(),\\n 'ax-icon-chevron-left': isRtl(),\\n }\\\"\\n ></i>\\n </button>\\n </div>\\n }\\n @if (showNavigation && look() === 'classic') {\\n <div class=\\\"ax-calendar-view-header\\\">\\n <div class=\\\"ax-calendar-header-info\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded\\\"\\n (click)=\\\"_handleNavClick($event, 'year')\\\"\\n >\\n {{ v.range.startTime | format: 'date' : { calendar: calendar(), format: 'YYYY' } | async }}\\n </button>\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded\\\"\\n (click)=\\\"_handleNavClick($event, 'month')\\\"\\n >\\n {{ v.range.startTime | format: 'date' : { calendar: calendar(), format: 'MMMM' } | async }}\\n </button>\\n </div>\\n @if (last) {\\n <div class=\\\"ax-calendar-header-buttons\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon\\\"\\n (click)=\\\"_handlePrevClick()\\\"\\n [title]=\\\"'@acorex:common.actions.prev' | translate | async\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-left\\\"></i>\\n </button>\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon\\\"\\n (click)=\\\"_handleNextClick()\\\"\\n [title]=\\\"'@acorex:common.actions.next' | translate | async\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-right\\\"></i>\\n </button>\\n </div>\\n }\\n </div>\\n }\\n <div class=\\\"ax-calendar-week\\\">\\n @for (d of weekLayout(); track d) {\\n <div>{{ '@acorex:dateTime.weekdays.short.' + d | translate | async }}</div>\\n }\\n </div>\\n\\n <div class=\\\"ax-calendar-slots ax-calendar-slots-day\\\" [ngClass]=\\\"{ 'ax-default': !dayCellTemplate }\\\">\\n @for (slot of v.slots; track slot) {\\n <button\\n tabindex=\\\"0\\\"\\n class=\\\"ax-calendar-slot\\\"\\n [ngClass]=\\\"slot.cssClass\\\"\\n [class.ax-state-disabled]=\\\"disabled\\\"\\n (click)=\\\"_handleSlotClick($event, slot)\\\"\\n [disabled]=\\\"disabled\\\"\\n [axRipple]\\n >\\n @if (dayCellTemplate) {\\n <div>\\n <ng-container\\n [ngTemplateOutlet]=\\\"dayCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { slot: slot } }\\\"\\n >\\n </ng-container>\\n </div>\\n } @else {\\n <div [title]=\\\"slot.date | format: 'date' : { calendar: calendar(), format: 'long' } | async\\\">\\n {{ slot.text }}\\n </div>\\n }\\n </button>\\n }\\n </div>\\n }\\n }\\n }\\n</div>\\n<ng-content select=\\\"ax-footer\\\"></ng-content>\\n\", styles: [\"ax-calendar{--ax-comp-calendar-view-header-padding: .5rem;--ax-comp-calendar-slot-today-border-width: 1px;--ax-comp-calendar-slot-focused-border-width: 1px;--ax-comp-calendar-slot-focused-outline-width: 2px;--ax-comp-calendar-slot-disabled-opacity: .5;--ax-comp-calendar-slot-readonly-opacity: .75;--ax-comp-calendar-footer-margin-t: 1.25rem;--ax-comp-calendar-footer-today-button-padding-x: 1rem;--ax-comp-calendar-footer-today-button-height: var(--ax-sys-size-base)}ax-calendar{--ax-comp-calendar-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-calendar-view-header-border-color: var(--ax-sys-color-border-lightest-surface);--ax-comp-calendar-slot-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-calendar-slot-ripple-color: var(--ax-sys-color-primary-light-surface), .3;--ax-comp-calendar-slot-today-text-color: var(--ax-sys-color-primary-surface);--ax-comp-calendar-slot-today-border-color: var(--ax-sys-color-primary-surface);--ax-comp-calendar-slot-hover-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-calendar-slot-hover-text-color: var(--ax-sys-color-on-primary-surface);--ax-comp-calendar-slot-focused-border-color: var(--ax-sys-color-border-lightest-surface);--ax-comp-calendar-slot-focused-outline-color: var(--ax-sys-color-primary-surface);--ax-comp-calendar-slot-selected-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-calendar-slot-selected-text-color: var(--ax-sys-color-on-primary-surface);--ax-comp-calendar-slot-holiday-text-color: var(--ax-sys-color-danger-surface);--ax-comp-calendar-slot-holiday-ripple-color: var(--ax-sys-color-danger-light-surface), .3;--ax-comp-calendar-slot-holiday-today-border-color: var(--ax-sys-color-danger-surface);--ax-comp-calendar-slot-holiday-hover-bg-color: var(--ax-sys-color-danger-surface);--ax-comp-calendar-slot-holiday-hover-border-color: var(--ax-sys-color-danger-surface);--ax-comp-calendar-slot-holiday-selected-bg-color: var(--ax-sys-color-danger-surface);--ax-comp-calendar-slot-holiday-selected-text-color: var(--ax-sys-color-on-danger-surface);--ax-comp-calendar-footer-today-button-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-calendar-footer-today-button-text-color: var(--ax-sys-color-on-primary-surface);--ax-comp-calendar-footer-today-button-hover-bg-color: var(--ax-sys-color-primary-dark-surface);--ax-comp-calendar-footer-today-button-focused-outline-color: var(--ax-sys-color-primary-surface), 1}.ax-dark ax-calendar{--ax-comp-calendar-text-color: var(--ax-sys-color-on-darkest-surface);--ax-comp-calendar-view-header-border-color: var(--ax-sys-color-border-darkest-surface);--ax-comp-calendar-slot-text-color: var(--ax-sys-color-on-darkest-surface);--ax-comp-calendar-slot-focused-border-color: var(--ax-sys-color-border-darkest-surface)}html[dir=rtl] ax-calendar .ax-calendar-header-buttons .ax-icon{-moz-transform:scale(-1,1);-o-transform:scale(-1,1);-webkit-transform:scale(-1,1);transform:scaleX(-1)}ax-calendar{width:100%;display:block;color:rgba(var(--ax-comp-calendar-text-color));background-color:rgba(var(--ax-comp-calendar-bg-color))}ax-calendar.ax-state-disabled .ax-calendar-slots{cursor:not-allowed;opacity:.5}ax-calendar.ax-state-readonly .ax-calendar-slots{cursor:text}ax-calendar .ax-calendar-header{display:flex;justify-content:space-between;padding-left:var(--ax-comp-calendar-header-padding-x, .25rem);padding-right:var(--ax-comp-calendar-header-padding-x, .25rem);padding-top:var(--ax-comp-calendar-header-padding-t, .25rem)}ax-calendar .ax-calendar-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body{display:flex;flex-direction:column;justify-content:center;align-items:center}@media (min-width: 1024px){ax-calendar .ax-calendar-body{flex-direction:column}}ax-calendar .ax-calendar-body>div{width:100%;flex:1 1 0%}@media (min-width: 768px){ax-calendar .ax-calendar-body>div{width:20rem}}ax-calendar .ax-calendar-body .ax-calendar-view-header{display:flex;justify-content:space-between;border-bottom-width:var(--ax-comp-calendar-view-header-border-width, 1px);border-color:rgba(var(--ax-comp-calendar-view-header-border-color));padding:var(--ax-comp-calendar-view-header-padding)}ax-calendar .ax-calendar-body .ax-calendar-view-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-body .ax-calendar-view-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body .ax-calendar-slots{display:grid;gap:.25rem;padding:1rem}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot{position:relative;display:flex;cursor:pointer;align-items:center;justify-content:center;text-align:center;font-size:var(--ax-comp-calendar-font-size, .875rem);color:rgba(var(--ax-comp-calendar-slot-text-color));line-height:var(--ax-comp-calendar-line-height, 1.25rem);border-radius:var(--ax-comp-calendar-slot-border-radius, var(--ax-sys-border-radius));transition-duration:var(--ax-sys-transition-duration);transition-timing-function:var(--ax-sys-transition-timing-function);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:before{content:\\\"\\\";float:left;padding-top:100%}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:after{content:\\\"\\\";clear:both;display:block}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-disabled,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-selected){background-color:rgba(var(--ax-comp-calendar-slot-hover-bg-color));color:rgba(var(--ax-comp-calendar-slot-hover-text-color))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled){outline-width:var(--ax-comp-calendar-slot-focused-outline-width);outline-color:rgba(var(--ax-comp-calendar-slot-focused-outline-color))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled{outline-style:dashed;outline-width:var(--ax-comp-calendar-slot-focused-outline-width)}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-disabled{cursor:not-allowed;opacity:var(--ax-comp-calendar-slot-disabled-opacity)}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-readonly{cursor:text;opacity:var(--ax-comp-calendar-slot-readonly-opacity)}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-1{grid-column-start:1}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-2{grid-column-start:2}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-3{grid-column-start:3}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-4{grid-column-start:4}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-5{grid-column-start:5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-6{grid-column-start:6}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-7{grid-column-start:7}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-other{opacity:.05}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot .ax-ripple{background-color:rgba(var(--ax-comp-calendar-slot-ripple-color))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{color:rgba(var(--ax-comp-calendar-slot-today-text-color));border-width:var(--ax-comp-calendar-slot-today-border-width);border-color:rgba(var(--ax-comp-calendar-slot-today-border-color))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today.ax-state-holiday{border-color:rgba(var(--ax-comp-calendar-slot-holiday-today-border-color))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-focused{border-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected{color:rgba(var(--ax-comp-calendar-slot-selected-text-color));background-color:rgba(var(--ax-comp-calendar-slot-selected-bg-color))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday{color:rgba(var(--ax-comp-calendar-slot-holiday-selected-text-color))!important;background-color:rgba(var(--ax-comp-calendar-slot-holiday-selected-bg-color))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday{color:rgba(var(--ax-comp-calendar-slot-holiday-text-color))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:is(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-comp-calendar-slot-holiday-hover-bg-color))!important;border-color:rgba(var(--ax-comp-calendar-slot-holiday-hover-border-color))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday .ax-ripple{background-color:rgba(var(--ax-comp-calendar-slot-holiday-ripple-color))!important}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-day{grid-template-columns:repeat(7,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-year,ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-month{grid-template-columns:repeat(4,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));padding-top:var(--ax-comp-calendar-week-padding-t, .75rem);padding-left:var(--ax-comp-calendar-week-padding-x, .5rem);padding-right:var(--ax-comp-calendar-week-padding-x, .5rem)}ax-calendar .ax-calendar-body .ax-calendar-week>div{display:flex;cursor:pointer;position:relative;text-align:center;align-items:center;justify-content:center;font-size:var(--ax-comp-calendar-font-size, .875rem);line-height:var(--ax-comp-calendar-line-height, 1.25rem)}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.25rem}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav .ax-icon{font-size:.875rem}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav .ax-calendar-day-nav-prev{justify-self:start}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav .ax-calendar-day-nav-center{display:flex;align-items:center;justify-content:center;gap:.25rem}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav .ax-calendar-day-nav-next{justify-self:end}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-month-select,ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-year-select{display:inline-block;width:auto;flex:0 0 auto}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-month-select .ax-icon,ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-year-select .ax-icon{font-size:.75rem}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-month-select .ax-editor-container,ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-year-select .ax-editor-container{gap:0}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-month-select ax-dropdown-box.ax-editor-container,ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-year-select ax-dropdown-box.ax-editor-container{width:auto;justify-content:flex-start}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-month-select .ax-chips-container,ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-year-select .ax-chips-container{flex:0 0 auto;width:auto}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-month-select .ax-chips-container .ax-chips,ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-year-select .ax-chips-container .ax-chips{overflow:visible;text-overflow:unset}ax-calendar .ax-calendar-footer{display:flex;align-items:center;justify-content:center;margin-top:var(--ax-comp-calendar-footer-margin-t)}ax-calendar .ax-calendar-footer .ax-today-button{width:100%;display:block;cursor:pointer;text-align:center;padding-left:var(--ax-comp-calendar-footer-today-button-padding-x);padding-right:var(--ax-comp-calendar-footer-today-button-padding-x);font-size:var(--ax-comp-calendar-font-size, .875rem);line-height:var(--ax-comp-calendar-line-height, 1.25rem);height:var(--ax-comp-calendar-footer-today-button-height);border-radius:var(--ax-comp-calendar-footer-today-button-border-radius, var(--ax-sys-border-radius));color:rgba(var(--ax-comp-calendar-footer-today-button-text-color));background-color:rgba(var(--ax-comp-calendar-footer-today-button-bg-color))}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-disabled{cursor:not-allowed;opacity:var(--ax-comp-calendar-slot-disabled-opacity)}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-readonly{cursor:text;opacity:var(--ax-comp-calendar-slot-readonly-opacity)}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-comp-calendar-footer-today-button-hover-bg-color))}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:focus,ax-calendar .ax-calendar-footer .ax-today-button:focus-visible):not(.ax-state-disabled){outline-color:rgba(var(--ax-comp-calendar-footer-today-button-focused-outline-color))}.ax-calendar-picker{display:flex;width:100%}.ax-calendar-picker ax-picker{flex:1 1 0%}.ax-overlay-pane ax-calendar{border-style:none}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { __hostClass: [{\n type: HostBinding,\n args: ['class']\n }], _handleOnKeydownEvent: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jYWxlbmRhci9zcmMvbGliL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY2FsZW5kYXIvc3JjL2xpYi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixtQkFBbUIsRUFHbkIsc0JBQXNCLEVBQ3RCLGdCQUFnQixHQUNqQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3JFLE9BQU8sRUFBYyxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxZQUFZLEVBQ1osTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FB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O3dCQUNoQixnQkFBZ0I7d0JBQ2hCLFFBQVE7d0JBQ1IsU0FBUzt3QkFDVCxhQUFhO3dCQUNiLFlBQVk7d0JBQ1osa0JBQWtCO3dCQUNsQixxQkFBcUI7d0JBQ3JCLG9CQUFvQjt3QkFDcEIsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGFBQWE7cUJBQ2QsYUFDVTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzs0QkFDbEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsV0FBVyxxQkFBcUI7eUJBQ2pDO3dCQUNELGNBQWM7d0JBQ2QsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcscUJBQXFCLEVBQUU7cUJBQzNELFdBQ1E7d0JBQ1AsT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsU0FBUzt3QkFDVCxnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2Qsb0JBQW9CO3dCQUNwQixXQUFXO3FCQUNaO3dEQTBxQlcsV0FBVztzQkFEdEIsV0FBVzt1QkFBQyxPQUFPO2dCQThEcEIscUJBQXFCO3NCQURwQixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYQ2xpY2tFdmVudCxcbiAgQVhDb21wb25lbnQsXG4gIEFYUmlwcGxlRGlyZWN0aXZlLFxuICBBWFZhbHVhYmxlQ29tcG9uZW50LFxuICBBWFZhbHVlQ2hhbmdlZEV2ZW50LFxuICBNWENvbXBvbmVudE9wdGlvbkNoYW5nZWQsXG4gIE1YSW50ZXJhY3RpdmVDb21wb25lbnQsXG4gIE1YVmFsdWVDb21wb25lbnQsXG59IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWFNlbGVjdEJveENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zZWxlY3QtYm94JztcbmltcG9ydCB7IEFYRGF0ZVRpbWUsIEFYRGF0ZVRpbWVSYW5nZSB9IGZyb20gJ0BhY29yZXgvY29yZS9kYXRlLXRpbWUnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIGxpbmtlZFNpZ25hbCxcbiAgc2lnbmFsLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFYRm9ybWF0TW9kdWxlLCBBWEZvcm1hdFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFYVHJhbnNsYXRvclBpcGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhVbnN1YnNjcmliZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBpc1BsYXRmb3JtQnJvd3NlciwgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjbGFzc2VzIH0gZnJvbSAncG9seXR5cGUnO1xuaW1wb3J0IHtcbiAgQVhDYWxlbmRhck5hdmlnYXRpb25Mb29rVHlwZSxcbiAgQVhDYWxlbmRhclZpZXcsXG4gIEFYQ2FsZW5kYXJWaWV3U2xvdCxcbiAgQVhDYWxlbmRhclZpZXdUeXBlLFxuICBNWENhbGVuZGFyQmFzZUNvbXBvbmVudCxcbn0gZnJvbSAnLi9jYWxlbmRhci5jbGFzcyc7XG5cbi8qKlxuICogQSBjYWxlbmRhciBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBhIGN1c3RvbWl6YWJsZSBjYWxlbmRhciB2aWV3IHdpdGggdmFyaW91cyBvcHRpb25zIGZvciBzZWxlY3Rpb24sIG5hdmlnYXRpb24sIGFuZCBzdHlsaW5nLlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNhbGVuZGFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGlucHV0czogW1xuICAgICdydGwnLFxuICAgICdyZWFkb25seScsXG4gICAgJ3ZhbHVlJyxcbiAgICAnbmFtZScsXG4gICAgJ2Rpc2FibGVkJyxcbiAgICAnZGVwdGgnLFxuICAgICdhY3RpdmVWaWV3JyxcbiAgICAnbWluVmFsdWUnLFxuICAgICdtYXhWYWx1ZScsXG4gICAgJ2Rpc2FibGVkRGF0ZXMnLFxuICAgICdob2xpZGF5RGF0ZXMnLFxuICAgICd0eXBlJyxcbiAgICAnZGF5Q2VsbFRlbXBsYXRlJyxcbiAgICAnbW9udGhDZWxsVGVtcGxhdGUnLFxuICAgICd5ZWFyQ2VsbFRlbXBsYXRlJyxcbiAgICAnY2VsbENsYXNzJyxcbiAgICAnc2hvd05hdmlnYXRpb24nLFxuICAgICdjb3VudCcsXG4gICAgJ25hbWUnLFxuICAgICdpZCcsXG4gIF0sXG4gIG91dHB1dHM6IFtcbiAgICAnb25PcHRpb25DaGFuZ2VkJyxcbiAgICAndmFsdWVDaGFuZ2UnLFxuICAgICdvblZhbHVlQ2hhbmdlZCcsXG4gICAgJ21pblZhbHVlQ2hhbmdlJyxcbiAgICAnbWF4VmFsdWVDaGFuZ2UnLFxuICAgICdvbkJsdXInLFxuICAgICdvbkZvY3VzJyxcbiAgICAnZGVwdGhDaGFuZ2UnLFxuICAgICd0eXBlQ2hhbmdlJyxcbiAgICAnYWN0aXZlVmlld0NoYW5nZScsXG4gICAgJ2Rpc2FibGVkRGF0ZXNDaGFuZ2UnLFxuICAgICdob2xpZGF5RGF0ZXNDaGFuZ2UnLFxuICAgICdvbk5hdmlnYXRlJyxcbiAgICAnb25TbG90Q2xpY2snLFxuICAgICdjb3VudENoYW5nZScsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQVhDYWxlbmRhckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYVmFsdWFibGVDb21wb25lbnQsXG4gICAgICB1c2VFeGlzdGluZzogQVhDYWxlbmRhckNvbXBvbmVudCxcbiAgICB9LFxuICAgIEFYVW5zdWJzY3JpYmVyLFxuICAgIHsgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWENhbGVuZGFyQ29tcG9uZW50IH0sXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBOZ0NsYXNzLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgQVhSaXBwbGVEaXJlY3RpdmUsXG4gICAgQXN5bmNQaXBlLFxuICAgIEFYVHJhbnNsYXRvclBpcGUsXG4gICAgQVhGb3JtYXRNb2R1bGUsXG4gICAgQVhTZWxlY3RCb3hDb21wb25lbnQsXG4gICAgRm9ybXNNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYQ2FsZW5kYXJDb21wb25lbnRcbiAgZXh0ZW5kcyBjbGFzc2VzKE1YVmFsdWVDb21wb25lbnQ8RGF0ZSB8IG51bGw+LCBNWEludGVyYWN0aXZlQ29tcG9uZW50LCBNWENhbGVuZGFyQmFzZUNvbXBvbmVudClcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0XG57XG4gIHByaXZhdGUgZm9ybWF0U2VydmljZSA9IGluamVjdChBWEZvcm1hdFNlcnZpY2UpO1xuXG4gIHdlZWtlbmQgPSBpbnB1dDxudW1iZXJbXT4oW10pO1xuICB3ZWVrZGF5cyA9IGlucHV0PG51bWJlcltdPihbXSk7XG5cbiAgLyoqXG4gICAqIERheSB2aWV3IG5hdmlnYXRpb24gc3R5bGUuXG4gICAqIC0gYGNsYXNzaWNgOiB0YXAgeWVhci9tb250aCBsYWJlbHMgdG8gb3BlbiBtb250aC95ZWFyIHBpY2tlciBwYW5lbHMuXG4gICAqIC0gYHNlbGVjdGA6IG1vbnRoL3llYXIgZHJvcGRvd25zIHdpdGggcHJldi9uZXh0IGFycm93cyBvbiB0aGUgZWRnZXMuXG4gICAqL1xuICBsb29rID0gaW5wdXQ8QVhDYWxlbmRhck5hdmlnYXRpb25Mb29rVHlwZT4oJ3NlbGVjdCcpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpc1J0bCA9IHRoaXMubG9jYWxlU2VydmljZS5pc1J0bDtcblxuICBwcm90ZWN0ZWQgY2FsZW5kYXIgPSBsaW5rZWRTaWduYWwoKCkgPT4gdGhpcy50eXBlID8/IHRoaXMubG9jYWxlU2VydmljZS5hY3RpdmVQcm9maWxlKCkuY2FsZW5kYXIuc3lzdGVtKTtcblxuICAvKiogV2VlayBjb2x1bW4gb3JkZXIgZnJvbSB0aGUgYWN0aXZlIGxvY2FsZSBwcm9maWxlICgwID0gU3VuIOKApiA2ID0gU2F0KS4gKi9cbiAgcHJvdGVjdGVkIHdlZWtMYXlvdXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY3VzdG9tID0gdGhpcy53ZWVrZGF5cygpO1xuICAgIGlmIChjdXN0b20ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gY3VzdG9tO1xuICAgIH1cbiAgICBjb25zdCBzdGFydHNPbiA9IHRoaXMubG9jYWxlU2VydmljZS5hY3RpdmVQcm9maWxlKCkuY2FsZW5kYXIud2Vlay5zdGFydHNPbjtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogNyB9LCAoXywgaSkgPT4gKHN0YXJ0c09uICsgaSkgJSA3KTtcbiAgfSk7XG5cbiAgcHVibGljIGdldCBkaXNwbGF5UmFuZ2UoKTogQVhEYXRlVGltZVJhbmdlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMudmlld3MubGVuZ3RoID4gMFxuICAgICAgPyBuZXcgQVhEYXRlVGltZVJhbmdlKHRoaXMudmlld3NbMF0/LnJhbmdlLnN0YXJ0VGltZSwgdGhpcy52aWV3c1t0aGlzLnZpZXdzLmxlbmd0aCAtIDFdPy5yYW5nZS5lbmRUaW1lKVxuICAgICAgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX3RvZGF5ID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKG5ldyBEYXRlKCksIHRoaXMuY2FsZW5kYXIoKSk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF92aWV3U3RhcnREYXRlITogQVhEYXRlVGltZTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX25hdlVzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfZm9vdFByaW50ID0ge1xuICAgIHllYXI6IG51bGwsXG4gICAgbW9udGg6IG51bGwsXG4gICAgZGF5OiBudWxsLFxuICB9O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHZpZXdzOiBBWENhbGVuZGFyVmlld1tdID0gW107XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX21vbnRoT3B0aW9uczogeyBpZDogbnVtYmVyOyB0ZXh0OiBzdHJpbmcgfVtdID0gW107XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX3llYXJPcHRpb25zOiB7IGlkOiBudW1iZXI7IHRleHQ6IHN0cmluZyB9W10gPSBbXTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgX2N1cnJlbnRNb250aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl92aWV3U3RhcnREYXRlPy5tb250aE9mWWVhcjtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBfY3VycmVudFllYXIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdmlld1N0YXJ0RGF0ZT8ueWVhcjtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBvbGRWYWx1ZSA9IHNpZ25hbDxEYXRlIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9pbml0VmFsdWVzKCkge1xuICAgIHRoaXMuX3RvZGF5ID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKG5ldyBEYXRlKCksIHRoaXMuY2FsZW5kYXIoKSk7XG4gIH1cblxuICAvKipcbiAgICogTWFwcyBhIGRhdGUgdG8gYSAxLWJhc2VkIGdyaWQgY29sdW1uIHVzaW5nIHRoZSBhY3RpdmUgd2VlayBsYXlvdXQuXG4gICAqL1xuICBwcml2YXRlIF9nZXRXZWVrQ29sdW1uKGRhdGU6IEFYRGF0ZVRpbWUpOiBudW1iZXIge1xuICAgIGNvbnN0IGNvbHVtbkluZGV4ID0gdGhpcy53ZWVrTGF5b3V0KCkuaW5kZXhPZihkYXRlLndlZWtkYXlJbmRleCk7XG4gICAgcmV0dXJuIGNvbHVtbkluZGV4ID49IDAgPyBjb2x1bW5JbmRleCArIDEgOiBkYXRlLmRheU9mV2VlaztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZlcnMgcmVmcmVzaCBzbyBwYXJlbnQgYHR5cGVgIGlucHV0IGNhbiBzeW5jIGFmdGVyIGxvY2FsZSBwcm9maWxlIGNoYW5nZXMuXG4gICAqL1xuICBwcml2YXRlIF9zY2hlZHVsZVJlZnJlc2goKSB7XG4gICAgcXVldWVNaWNyb3Rhc2soKCkgPT4gdGhpcy5fcmVmcmVzaCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfcmVmcmVzaCgpIHtcbiAgICB0aGlzLl9pbml0VmFsdWVzKCk7XG4gICAgdGhpcy5uYXZUbyh0aGlzLnZhbHVlIHx8IHRoaXMuX3RvZGF5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3QgdW5zdWJzY3JpYmVyID0gaW5qZWN0KEFYVW5zdWJzY3JpYmVyKTtcblxuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2Uub25Ib2xpZGF5c0NoYW5nZWQucGlwZSh1bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfSk7XG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UuY2FsZW5kYXJDaGFuZ2VzJC5waXBlKHVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICBpZiAoIXRoaXMudHlwZSkgdGhpcy5jYWxlbmRhci5zZXQodmFsdWUubmFtZSgpKTtcbiAgICAgIHRoaXMuX3NjaGVkdWxlUmVmcmVzaCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5sb2NhbGVTZXJ2aWNlLnByb2ZpbGVDaGFuZ2VkJC5waXBlKHVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKHByb2ZpbGUpID0+IHtcbiAgICAgIHRoaXMuY2FsZW5kYXIuc2V0KHByb2ZpbGUuY2FsZW5kYXIuc3lzdGVtKTtcbiAgICAgIHRoaXMuX3NjaGVkdWxlUmVmcmVzaCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy50eXBlQ2hhbmdlLnBpcGUodW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIHRoaXMuY2FsZW5kYXIuc2V0KHZhbHVlKTtcbiAgICB9KTtcblxuICAgIHRoaXMubWluVmFsdWVDaGFuZ2Uuc3Vic2NyaWJlKChlOiBEYXRlKSA9PiB7XG4gICAgICBpZiAodGhpcy5fdmlld1N0YXJ0RGF0ZS5pc0JlZm9yZShlKSkge1xuICAgICAgICB0aGlzLl92aWV3U3RhcnREYXRlID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKGUsIHRoaXMuY2FsZW5kYXIoKSk7XG4gICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuX2luaXRWYWx1ZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgaWYgKHRoaXMubWluVmFsdWUgJiYgdGhpcy5fdmlld1N0YXJ0RGF0ZS5pc0JlZm9yZSh0aGlzLm1pblZhbHVlKSkge1xuICAgICAgICB0aGlzLl92aWV3U3RhcnREYXRlID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKHRoaXMubWluVmFsdWUsIHRoaXMuY2FsZW5kYXIoKSk7XG4gICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmdvVG9kYXkoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIG92ZXJyaWRlIHJlbmRlcigpIHtcbiAgICBpZiAoIXRoaXMuX3ZpZXdTdGFydERhdGUpIHJldHVybjtcbiAgICBjb25zdCBhcHBseUNlbGxDbGFzcyA9IChzbG90OiBBWENhbGVuZGFyVmlld1Nsb3QsIGNlbGxDbGFzczogYW55ID0gdGhpcy5jZWxsQ2xhc3MpID0+IHtcbiAgICAgIHN3aXRjaCAodHlwZW9mIGNlbGxDbGFzcykge1xuICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgIGNlbGxDbGFzcy5zcGxpdCgnICcpLmZvckVhY2goKGMpID0+IChzbG90LmNzc0NsYXNzW2NdID0gdHJ1ZSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oc2xvdC5jc3NDbGFzcywgY2VsbENsYXNzKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICAgIGFwcGx5Q2VsbENsYXNzKHNsb3QsIGNlbGxDbGFzcyhzbG90LmRhdGUpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMudmlld3MgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY291bnQ7IGkrKykge1xuICAgICAgc3dpdGNoICh0aGlzLmFjdGl2ZVZpZXcpIHtcbiAgICAgICAgY2FzZSAnZGF5JzpcbiAgICAgICAgICB0aGlzLmRheVZpZXcoaSwgYXBwbHlDZWxsQ2xhc3MpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgdGhpcy5tb250aFZpZXcoaSwgYXBwbHlDZWxsQ2xhc3MpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgICB0aGlzLnllYXJWaWV3KGksIGFwcGx5Q2VsbENsYXNzKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fdXBkYXRlU2VsZWN0T3B0aW9ucygpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF91cGRhdGVTZWxlY3RPcHRpb25zKCkge1xuICAgIGlmICghdGhpcy5fdmlld1N0YXJ0RGF0ZSkgcmV0dXJuO1xuXG4gICAgdGhpcy5fbW9udGhPcHRpb25zID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogMTIgfSwgKF8sIGkpID0+IHtcbiAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLl92aWV3U3RhcnREYXRlLnNldCgnbW9udGgnLCBpICsgMSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogaSArIDEsXG4gICAgICAgIHRleHQ6IGBAYWNvcmV4OiR7dGhpcy5nZXRNb250aE5hbWUoZGF0ZSwgJ3Nob3J0Jyl9YCxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCBjdXJyZW50WWVhciA9IHRoaXMuX3ZpZXdTdGFydERhdGUueWVhcjtcbiAgICBjb25zdCBtaW5ZZWFyID0gdGhpcy5taW5WYWx1ZVxuICAgICAgPyB0aGlzLmNhbGVuZGFyU2VydmljZS5jcmVhdGUodGhpcy5taW5WYWx1ZSwgdGhpcy5jYWxlbmRhcigpKS55ZWFyXG4gICAgICA6IGN1cnJlbnRZZWFyIC0gMTAwO1xuICAgIGNvbnN0IG1heFllYXIgPSB0aGlzLm1heFZhbHVlID8gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKHRoaXMubWF4VmFsdWUsIHRoaXMuY2FsZW5kYXIoKSkueWVhciA6IGN1cnJlbnRZZWFyICsgMTA7XG5cbiAgICB0aGlzLl95ZWFyT3B0aW9ucyA9IFtdO1xuICAgIGZvciAobGV0IHllYXIgPSBtaW5ZZWFyOyB5ZWFyIDw9IG1heFllYXI7IHllYXIrKykge1xuICAgICAgdGhpcy5feWVhck9wdGlvbnMucHVzaCh7IGlkOiB5ZWFyLCB0ZXh0OiBTdHJpbmcoeWVhcikgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZU1vbnRoU2VsZWN0Q2hhbmdlZChlOiBBWFZhbHVlQ2hhbmdlZEV2ZW50KSB7XG4gICAgaWYgKCFlLmlzVXNlckludGVyYWN0aW9uIHx8ICF0aGlzLl92aWV3U3RhcnREYXRlKSByZXR1cm47XG4gICAgY29uc3QgbW9udGggPSB0aGlzLl9nZXRTZWxlY3RCb3hWYWx1ZShlKTtcbiAgICBpZiAobW9udGggPT0gbnVsbCkgcmV0dXJuO1xuICAgIHRoaXMuX25hdlVzZXJJbnRlcmFjdGlvbiA9IHRydWU7XG4gICAgdGhpcy5uYXZUbyh0aGlzLl92aWV3U3RhcnREYXRlLnNldCgnbW9udGgnLCBtb250aCkpO1xuICAgIHRoaXMuX25hdlVzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZVllYXJTZWxlY3RDaGFuZ2VkKGU6IEFYVmFsdWVDaGFuZ2VkRXZlbnQpIHtcbiAgICBpZiAoIWUuaXNVc2VySW50ZXJhY3Rpb24gfHwgIXRoaXMuX3ZpZXdTdGFydERhdGUpIHJldHVybjtcbiAgICBjb25zdCB5ZWFyID0gdGhpcy5fZ2V0U2VsZWN0Qm94VmFsdWUoZSk7XG4gICAgaWYgKHllYXIgPT0gbnVsbCkgcmV0dXJuO1xuICAgIHRoaXMuX25hdlVzZXJJbnRlcmFjdGlvbiA9IHRydWU7XG4gICAgdGhpcy5uYXZUbyh0aGlzLl92aWV3U3RhcnREYXRlLnNldCgneWVhcicsIHllYXIpKTtcbiAgICB0aGlzLl9uYXZVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0U2VsZWN0Qm94VmFsdWUoZTogQVhWYWx1ZUNoYW5nZWRFdmVudCk6IG51bWJlciB8IG51bGwge1xuICAgIGNvbnN0IHZhbCA9IGUudmFsdWU7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkgcmV0dXJuIHZhbFswXT8uaWQgPz8gbnVsbDtcbiAgICBpZiAodmFsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnKSByZXR1cm4gKHZhbCBhcyB7IGlkOiBudW1iZXIgfSkuaWQgPz8gbnVsbDtcbiAgICByZXR1cm4gdmFsICE9IG51bGwgPyBOdW1iZXIodmFsKSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX3NldERpc3BsYXlSYW5nZShjdXJyZW50OiBBWERhdGVUaW1lKTogQVhEYXRlVGltZVJhbmdlIHtcbiAgICBzd2l0Y2ggKHRoaXMuYWN0aXZlVmlldykge1xuICAgICAgY2FzZSAneWVhcic6IHtcbiAgICAgICAgY29uc3QgeSA9IGN1cnJlbnQuc3RhcnRPZigneWVhcicpLnllYXI7XG4gICAgICAgIGNvbnN0IG1pbiA9IHkgLSAoeSAlIDEwKTtcbiAgICAgICAgY29uc3QgbWF4ID0gbWluICsgOTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lUmFuZ2UoXG4gICAgICAgICAgdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB5ZWFyOiBtaW4sXG4gICAgICAgICAgICAgIG1vbnRoOiAxLFxuICAgICAgICAgICAgICBkYXk6IDEsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy5jYWxlbmRhcigpLFxuICAgICAgICAgICksXG4gICAgICAgICAgdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB5ZWFyOiBtYXgsXG4gICAgICAgICAgICAgIG1vbnRoOiAxMixcbiAgICAgICAgICAgICAgZGF5OiAyOCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLmNhbGVuZGFyKCksXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lUmFuZ2UoY3VycmVudC5zdGFydE9mKCd5ZWFyJyksIGN1cnJlbnQuZW5kT2YoJ3llYXInKS5hZGQoJ2RheScsIC0xKSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWVSYW5nZShjdXJyZW50LnN0YXJ0T2YoJ21vbnRoJyksIGN1cnJlbnQuZW5kT2YoJ21vbnRoJykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBkYXlWaWV3KGk6IG51bWJlciwgYXBwbHlDZWxsQ2xhc3M6IGFueSkge1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl92aWV3U3RhcnREYXRlLmFkZCgnbW9udGgnLCBpKTtcbiAgICBjb25zdCB2aWV3OiBBWENhbGVuZGFyVmlldyA9IHtcbiAgICAgIHJhbmdlOiB0aGlzLl9zZXREaXNwbGF5UmFuZ2UoY3VycmVudCksXG4gICAgICBzbG90czogW10sXG4gICAgfTtcbiAgICB0aGlzLnZpZXdzLnB1c2godmlldyk7XG4gICAgY29uc3QgYSA9IHZpZXcucmFuZ2UuZW51bWVyYXRlKCdkYXknKTtcbiAgICB2aWV3LnNsb3RzID0gYS5tYXAoKGQsIGkpID0+IHtcbiAgICAgIGxldCBzZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgaWYgKHRoaXMuZGVwdGggPT09ICdkYXknKSB7XG4gICAgICAgIHNlbGVjdGVkID0gdGhpcy52YWx1ZSAmJiBkLmVxdWFsKHRoaXMudmFsdWUsICdkYXknKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5kZXB0aCA9PT0gJ21vbnRoJykge1xuICAgICAgICBzZWxlY3RlZCA9IHRoaXMudmFsdWUgJiYgZC5lcXVhbCh0aGlzLnZhbHVlLCAnbW9udGgnKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5kZXB0aCA9PT0gJ3llYXInKSB7XG4gICAgICAgIHNlbGVjdGVkID0gdGhpcy52YWx1ZSAmJiBkLmVxdWFsKHRoaXMudmFsdWUsICd5ZWFyJyk7XG4gICAgICB9XG4gICAgICBjb25zdCByOiBhbnkgPSB7fTtcbiAgICAgIHIuZGF0ZSA9IGQ7XG4gICAgICByLnRleHQgPSBkLmRheU9mTW9udGg7XG4gICAgICByLnRvZGF5ID0gZC5lcXVhbCh0aGlzLl90b2RheSwgJ2RheScpO1xuICAgICAgci5zZWxlY3RlZCA9IHNlbGVjdGVkO1xuICAgICAgci5ob2xpZGF5ID0gdGhpcy5pc0hvbGlkYXkoZCkgfHwgdGhpcy5pc1dlZWtlbmQoZCk7XG4gICAgICByLmRpc2FibGVkID1cbiAgICAgICAgKHRoaXMubWluVmFsdWUgJiYgZC5jb21wYXJlKHRoaXMubWluVmFsdWUsICdkYXknKSA9PSAtMSkgfHxcbiAgICAgICAgKHRoaXMubWF4VmFsdWUgJiYgZC5jb21wYXJlKHRoaXMubWF4VmFsdWUsICdkYXknKSA9PSAxKSB8fFxuICAgICAgICB0aGlzLmlzRGlzYWJsZWQoZCk7XG4gICAgICAvL1xuICAgICAgLy8gY29uc3QgZm9jdXNlZCA9IGQuZGF5T2ZNb250aCA9PSB0aGlzLl9mb290UHJpbnQuZGF5ICYmIGQubW9udGhPZlllYXIgPT0gdGhpcy5fZm9vdFByaW50Lm1vbnRoICYmIGQueWVhciA9PSB0aGlzLl9mb290UHJpbnQueWVhcjtcbiAgICAgIC8vXG4gICAgICBpZiAoci5kaXNhYmxlZCkge1xuICAgICAgICByLmNzc0NsYXNzID0ge1xuICAgICAgICAgICdheC1zdGF0ZS1kaXNhYmxlZCc6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByLmNzc0NsYXNzID0ge1xuICAgICAgICAgICdheC1zdGF0ZS10b2RheSc6IHIudG9kYXksXG4gICAgICAgICAgJ2F4LXN0YXRlLXNlbGVjdGVkJzogci5zZWxlY3RlZCxcbiAgICAgICAgICAnYXgtc3RhdGUtaG9saWRheSc6IHIuaG9saWRheSxcbiAgICAgICAgICAvLyAnYXgtc3RhdGUtZm9jdXNlZCc6IGZvY3VzZWQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICAvLyBheC1jb2wtc3RhcnQtMSBheC1jb2wtc3RhcnQtMiBheC1jb2wtc3RhcnQtMyBheC1jb2wtc3RhcnQtNCBheC1jb2wtc3RhcnQtNSBheC1jb2wtc3RhcnQtNiBheC1jb2wtc3RhcnQtN1xuICAgICAgci5jc3NDbGFzc1tgYXgtY29sdW1uLXN0YXJ0LSR7dGhpcy5fZ2V0V2Vla0NvbHVtbih2aWV3LnJhbmdlLnN0YXJ0VGltZSl9YF0gPSBpID09IDA7XG4gICAgICBpZiAodGhpcy5jZWxsQ2xhc3MpIGFwcGx5Q2VsbENsYXNzKHIpO1xuXG4gICAgICByZXR1cm4gcjtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBtb250aFZpZXcoaTogbnVtYmVyLCBhcHBseUNlbGxDbGFzczogYW55KSB7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuX3ZpZXdTdGFydERhdGUuYWRkKCd5ZWFyJywgaSk7XG4gICAgY29uc3QgdmlldzogQVhDYWxlbmRhclZpZXcgPSB7XG4gICAgICByYW5nZTogdGhpcy5fc2V0RGlzcGxheVJhbmdlKGN1cnJlbnQpLFxuICAgICAgc2xvdHM6IFtdLFxuICAgIH07XG4gICAgdGhpcy52aWV3cy5wdXNoKHZpZXcpO1xuICAgIGNvbnN0IGEgPSB2aWV3LnJhbmdlLmVudW1lcmF0ZSgnbW9udGgnKTtcbiAgICB2aWV3LnNsb3RzID0gYS5tYXAoKGQpID0+IHtcbiAgICAgIGNvbnN0IHI6IGFueSA9IHt9O1xuICAgICAgci5kYXRlID0gZDtcbiAgICAgIHIudGV4dCA9IHRoaXMuZm9ybWF0U2VydmljZS5mb3JtYXQoZCwgJ2RhdGUnIGFzIGFueSwgJ01NTScpO1xuICAgICAgci50b2RheSA9IGQuZXF1YWwodGhpcy5fdG9kYXksICdtb250aCcpO1xuICAgICAgLy9cbiAgICAgIHIuZGlzYWJsZWQgPVxuICAgICAgICAodGhpcy5taW5WYWx1ZSAmJiBkLmNvbXBhcmUodGhpcy5taW5WYWx1ZSwgJ21vbnRoJykgPT0gLTEpIHx8XG4gICAgICAgICh0aGlzLm1heFZhbHVlICYmIGQuY29tcGFyZSh0aGlzLm1heFZhbHVlLCAnbW9udGgnKSA9PSAxKTtcbiAgICAgIC8vXG4gICAgICByLnNlbGVjdGVkID0gdGhpcy52YWx1ZSAmJiB0aGlzLmRlcHRoID09ICdtb250aCcgJiYgZC5lcXVhbCh0aGlzLnZhbHVlLCAnbW9udGgnKTtcbiAgICAgIC8vXG4gICAgICBjb25zdCBmb2N1c2VkID0gZC5tb250aE9mWWVhciA9PSB0aGlzLl9mb290UHJpbnQubW9udGggJiYgZC55ZWFyID09IHRoaXMuX2Zvb3RQcmludC55ZWFyO1xuICAgICAgLy9cbiAgICAgIGlmIChyLmRpc2FibGVkKSB7XG4gICAgICAgIHIuY3NzQ2xhc3MgPSB7XG4gICAgICAgICAgJ2F4LXN0YXRlLWRpc2FibGVkJzogci5kaXNhYmxlZCxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHIuY3NzQ2xhc3MgPSB7XG4gICAgICAgICAgJ2F4LXN0YXRlLXRvZGF5Jzogci50b2RheSxcbiAgICAgICAgICAnYXgtc3RhdGUtc2VsZWN0ZWQnOiByLnNlbGVjdGVkLFxuICAgICAgICAgICdheC1zdGF0ZS1mb2N1c2VkJzogZm9jdXNlZCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGFwcGx5Q2VsbENsYXNzKHIpO1xuICAgICAgcmV0dXJuIHI7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgeWVhclZpZXcoaTogbnVtYmVyLCBhcHBseUNlbGxDbGFzczogYW55KSB7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuX3ZpZXdTdGFydERhdGUuYWRkKCd5ZWFyJywgaSAqIDEwKTtcbiAgICBjb25zdCB2aWV3OiBBWENhbGVuZGFyVmlldyA9IHtcbiAgICAgIHJhbmdlOiB0aGlzLl9zZXREaXNwbGF5UmFuZ2UoY3VycmVudCksXG4gICAgICBzbG90czogW10sXG4gICAgfTtcbiAgICB0aGlzLnZpZXdzLnB1c2godmlldyk7XG4gICAgY29uc3QgYSA9IHZpZXcucmFuZ2UuZW51bWVyYXRlKCd5ZWFyJyk7XG5cbiAgICB2aWV3LnNsb3RzID0gYS5tYXAoKGQpID0+IHtcbiAgICAgIGNvbnN0IHI6IGFueSA9IHt9O1xuICAgICAgci5kYXRlID0gZDtcbiAgICAgIHIudGV4dCA9IHRoaXMuZm9ybWF0U2VydmljZS5mb3JtYXQoZCwgJ2RhdGUnIGFzIGFueSwgJ1lZWVknKTtcbiAgICAgIHIudG9kYXkgPSBkLmVxdWFsKHRoaXMuX3RvZGF5LCAneWVhcicpO1xuICAgICAgci5zZWxlY3RlZCA9IHRoaXMudmFsdWUgJiYgdGhpcy5kZXB0aCA9PSAneWVhcicgJiYgZC5lcXVhbCh0aGlzLnZhbHVlLCAneWVhcicpO1xuICAgICAgLy9cbiAgICAgIGNvbnN0IGZvY3VzZWQgPSBkLnllYXIgPT0gdGhpcy5fZm9vdFByaW50LnllYXI7XG4gICAgICAvL1xuICAgICAgci5kaXNhYmxlZCA9XG4gICAgICAgICh0aGlzLm1pblZhbHVlICYmIGQuY29tcGFyZSh0aGlzLm1pblZhbHVlLCAneWVhcicpID09IC0xKSB8fFxuICAgICAgICAodGhpcy5tYXhWYWx1ZSAmJiBkLmNvbXBhcmUodGhpcy5tYXhWYWx1ZSwgJ3llYXInKSA9PSAxKTtcbiAgICAgIC8vXG4gICAgICBpZiAoci5kaXNhYmxlZCkge1xuICAgICAgICByLmNzc0NsYXNzID0ge1xuICAgICAgICAgICdheC1zdGF0ZS1kaXNhYmxlZCc6IHIuZGlzYWJsZWQsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByLmNzc0NsYXNzID0ge1xuICAgICAgICAgICdheC1zdGF0ZS10b2RheSc6IHIudG9kYXksXG4gICAgICAgICAgJ2F4LXN0YXRlLXNlbGVjdGVkJzogci5zZWxlY3RlZCxcbiAgICAgICAgICAnYXgtc3RhdGUtZm9jdXNlZCc6IGZvY3VzZWQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBhcHBseUNlbGxDbGFzcyhyKTtcbiAgICAgIHJldHVybiByO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZVByZXZDbGljaygpIHtcbiAgICB0aGlzLl9uYXZVc2VySW50ZXJhY3Rpb24gPSB0cnVlO1xuICAgIHRoaXMucHJldigpO1xuICAgIHRoaXMuX25hdlVzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZU5leHRDbGljaygpIHtcbiAgICB0aGlzLl9uYXZVc2VySW50ZXJhY3Rpb24gPSB0cnVlO1xuICAgIHRoaXMubmV4dCgpO1xuICAgIHRoaXMuX25hdlVzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZVNsb3RDbGljayhlOiBNb3VzZUV2ZW50LCBzbG90OiBBWENhbGVuZGFyVmlld1Nsb3QpIHtcbiAgICBpZiAoc2xvdC5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkKSByZXR1cm47XG4gICAgLy9cbiAgICB0aGlzLm9uU2xvdENsaWNrLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaXRlbTogc2xvdC5kYXRlLmRhdGUsXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICAgIG5hdGl2ZUV2ZW50OiBlLFxuICAgIH0pO1xuICAgIC8vXG4gICAgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnZGF5Jykge1xuICAgICAgdGhpcy5fc2V0RGF0ZShzbG90LmRhdGUuZGF0ZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ21vbnRoJyAmJiB0aGlzLmRlcHRoID09ICdkYXknKSB7XG4gICAgICB0aGlzLmFjdGl2ZVZpZXcgPSAnZGF5JztcbiAgICAgIHRoaXMuX2Zvb3RQcmludC5tb250aCA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZShzbG90LmRhdGUuZGF0ZSwgdGhpcy5jYWxlbmRhcigpKS5tb250aE9mWWVhcjtcbiAgICAgIHRoaXMubmF2VG8oc2xvdC5kYXRlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnbW9udGgnICYmIHRoaXMuZGVwdGggPT0gJ21vbnRoJykge1xuICAgICAgdGhpcy5fc2V0RGF0ZShzbG90LmRhdGUuZGF0ZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ3llYXInICYmICh0aGlzLmRlcHRoID09ICdkYXknIHx8IHRoaXMuZGVwdGggPT0gJ21vbnRoJykpIHtcbiAgICAgIHRoaXMuYWN0aXZlVmlldyA9ICdtb250aCc7XG4gICAgICB0aGlzLl9mb290UHJpbnQueWVhciA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZShzbG90LmRhdGUuZGF0ZSwgdGhpcy5jYWxlbmRhcigpKS55ZWFyO1xuICAgICAgdGhpcy5uYXZUbyhzbG90LmRhdGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICd5ZWFyJyAmJiB0aGlzLmRlcHRoID09ICd5ZWFyJykge1xuICAgICAgdGhpcy5fc2V0RGF0ZShzbG90LmRhdGUuZGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZU5hdkNsaWNrKGU6IEFYQ2xpY2tFdmVudCB8IGFueSwgdmlldzogQVhDYWxlbmRhclZpZXdUeXBlKSB7XG4gICAgdGhpcy5fbmF2VXNlckludGVyYWN0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmFjdGl2ZVZpZXcgPSB2aWV3O1xuICAgIHRoaXMuX25hdlVzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgYmV0d2VlbiBkaWZmZXJlbnQgY2FsZW5kYXIgdmlld3MgKGRheSDihpIgbW9udGgg4oaSIHllYXIpLlxuICAgKi9cbiAgcHVibGljIHRvZ2dsZVZpZXcoKSB7XG4gICAgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnZGF5JykgdGhpcy5hY3RpdmVWaWV3ID0gJ21vbnRoJztcbiAgICBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ21vbnRoJykgdGhpcy5hY3RpdmVWaWV3ID0gJ3llYXInO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgaW50ZXJuYWxPcHRpb25DaGFuZ2VkKGU6IE1YQ29tcG9uZW50T3B0aW9uQ2hhbmdlZCkge1xuICAgIGlmIChlLm5hbWUgPT0gJ2RlcHRoJyB8fCBlLm5hbWUgPT0gJ2FjdGl2ZVZpZXcnIHx8IGUubmFtZSA9PSAnZGlzYWJsZWREYXRlcycgfHwgZS5uYW1lID09ICdob2xpZGF5RGF0ZXMnKSB7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cbiAgICBpZiAoZS5uYW1lID09ICd0eXBlJykge1xuICAgICAgdGhpcy5fcmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGludGVybmFsU2V0VmFsdWUodmFsdWU6IERhdGUpOiBEYXRlIHwgbnVsbCB7XG4gICAgaWYgKCF2YWx1ZSB8fCAhdGhpcy5jYWxlbmRhclNlcnZpY2UuaXNWYWxpZERhdGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgdiA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNvbnZlcnQodmFsdWUsIHRoaXMuY2FsZW5kYXIoKSk7XG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCh2KSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubWF4VmFsdWUgJiYgdGhpcy5jYWxlbmRhclNlcnZpY2UuaXNWYWxpZERhdGUodGhpcy5tYXhWYWx1ZSkgJiYgdi5pc0FmdGVyKHRoaXMubWF4VmFsdWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5tYXhWYWx1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5taW5WYWx1ZSAmJiB0aGlzLmNhbGVuZGFyU2VydmljZS5pc1ZhbGlkRGF0ZSh0aGlzLm1pblZhbHVlKSAmJiB2LmlzQmVmb3JlKHRoaXMubWluVmFsdWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5taW5WYWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdi5kYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgaW50ZXJuYWxWYWx1ZUNoYW5nZWQodmFsdWU/OiBEYXRlKSB7XG4gICAgY29uc3QgdmFsID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKHZhbHVlLCB0aGlzLmNhbGVuZGFyKCkpO1xuICAgIGlmIChcbiAgICAgICF0aGlzLl92aWV3U3RhcnREYXRlIHx8XG4gICAgICB2YWwuY29tcGFyZSh0aGlzLmRpc3BsYXlSYW5nZT8uc3RhcnRUaW1lLCB0aGlzLmFjdGl2ZVZpZXcpID09IC0xIHx8XG4gICAgICB2YWwuY29tcGFyZSh0aGlzLmRpc3BsYXlSYW5nZT8uZW5kVGltZSwgdGhpcy5hY3RpdmVWaWV3KSA9PSAxXG4gICAgKSB7XG4gICAgICB0aGlzLl92aWV3U3RhcnREYXRlID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKHZhbHVlLCB0aGlzLmNhbGVuZGFyKCkpO1xuICAgICAgaWYgKHRoaXMubWluVmFsdWUgJiYgdGhpcy5fdmlld1N0YXJ0RGF0ZS5pc0JlZm9yZSh0aGlzLm1pblZhbHVlKSkge1xuICAgICAgICB0aGlzLl92aWV3U3RhcnREYXRlID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKHRoaXMubWluVmFsdWUsIHRoaXMuY2FsZW5kYXIoKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2Zvb3RQcmludC55ZWFyID0gdmFsLnllYXI7XG4gICAgdGhpcy5fZm9vdFByaW50Lm1vbnRoID0gdmFsLm1vbnRoT2ZZZWFyO1xuICAgIHRoaXMuX2Zvb3RQcmludC5kYXkgPSB2YWwuZGF5T2ZNb250aDtcblxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICBjb25zdCBjYWxlbmRhclNsb3RzID0gQXJyYXkuZnJvbSh0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvckFsbCgnLmF4LWNhbGVuZGFyLXNsb3QnKSk7XG4gICAgICBjb25zdCBzZWxlY3RlZFNsb3QgPSB0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvcignLmF4LXN0YXRlLXNlbGVjdGVkJyk7XG4gICAgICBpZiAoc2VsZWN0ZWRTbG90KSB7XG4gICAgICAgIHNlbGVjdGVkU2xvdC5jbGFzc0xpc3QucmVtb3ZlKCdheC1zdGF0ZS1zZWxlY3RlZCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgIH1cbiAgICAgIGNhbGVuZGFyU2xvdHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICBlbGVtZW50ID0gZWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgaWYgKGVsZW1lbnQudGV4dENvbnRlbnQgPT0gdGhpcy5fZm9vdFByaW50LmRheSkge1xuICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnYXgtc3RhdGUtc2VsZWN0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IG9sZFZhbCA9IHRoaXMub2xkVmFsdWUoKSA/IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZSh0aGlzLm9sZFZhbHVlKCksIHRoaXMuY2FsZW5kYXIoKSkgOiBudWxsO1xuICAgIGlmICghb2xkVmFsIHx8IG9sZFZhbC5tb250aE9mWWVhciAhPT0gdmFsLm1vbnRoT2ZZZWFyIHx8IG9sZFZhbC55ZWFyICE9PSB2YWwueWVhcikge1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG4gICAgdGhpcy5vbGRWYWx1ZS5zZXQodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZUdvVG9kYXkoKSB7XG4gICAgdGhpcy5fbmF2VXNlckludGVyYWN0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLl9zZXREYXRlKHRoaXMuX3RvZGF5LmRhdGUpO1xuICAgIHRoaXMuZ29Ub2RheSgpO1xuICAgIHRoaXMuX25hdlVzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyBmb3J3YXJkIGluIHRoZSBjYWxlbmRhciBiYXNlZCBvbiB0aGUgY3VycmVudCBhY3RpdmUgdmlldyBhbmQgdGhlIGNvbmZpZ3VyZWQgY291bnQuXG4gICAqXG4gICAqIEJlaGF2aW9yIGJ5IHZpZXc6XG4gICAqIC0gZGF5IHZpZXc6IGFkdmFuY2VzIGJ5IGNvdW50IG1vbnRoc1xuICAgKiAtIG1vbnRoIHZpZXc6IGFkdmFuY2VzIGJ5IGNvdW50IHllYXJzXG4gICAqIC0geWVhciB2aWV3OiBhZHZhbmNlcyBieSAxMCDDlyBjb3VudCB5ZWFyc1xuICAgKlxuICAgKiBAcmV0dXJucyB2b2lkXG4gICAqL1xuICBuZXh0KCkge1xuICAgIHRoaXMuX25hdk5leHRQcmV2KGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgYmFja3dhcmQgaW4gdGhlIGNhbGVuZGFyIGJhc2VkIG9uIHRoZSBjdXJyZW50IGFjdGl2ZSB2aWV3IGFuZCB0aGUgY29uZmlndXJlZCBjb3VudC5cbiAgICpcbiAgICogQmVoYXZpb3IgYnkgdmlldzpcbiAgICogLSBkYXkgdmlldzogZ29lcyBiYWNrIGJ5IGNvdW50IG1vbnRoc1xuICAgKiAtIG1vbnRoIHZpZXc6IGdvZXMgYmFjayBieSBjb3VudCB5ZWFyc1xuICAgKiAtIHllYXIgdmlldzogZ29lcyBiYWNrIGJ5IDEwIMOXIGNvdW50IHllYXJzXG4gICAqXG4gICAqIEByZXR1cm5zIHZvaWRcbiAgICovXG4gIHByZXYoKSB7XG4gICAgdGhpcy5fbmF2TmV4dFByZXYodHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBmb2N1cyB0byB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGNhbGVuZGFyIHNsb3Qgb3IgdGhlIGZpcnN0IGF2YWlsYWJsZSBzbG90LlxuICAgKlxuICAgKiBAcmV0dXJucyB2b2lkXG4gICAqL1xuICBvdmVycmlkZSBmb2N1cygpIHtcbiAgICBjb25zdCBmdW5jID0gKHM6IHN0cmluZykgPT4gdGhpcy5nZXRIb3N0RWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3I8SFRNTERpdkVsZW1lbnQ+KHMpO1xuICAgIGNvbnN0IGRpdiA9IGZ1bmMoJy5heC1jYWxlbmRhci1zbG90cz5kaXYuYXgtc3RhdGUtc2VsZWN0ZWQnKSB8fCBmdW5jKCcuYXgtY2FsZW5kYXItc2xvdHM+ZGl2Jyk7XG4gICAgZGl2Py5mb2N1cygpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9uYXZOZXh0UHJldihwcmV2OiBib29sZWFuKSB7XG4gICAgY29uc3Qgc2lnbiA9IHByZXYgPyAtMSA6IDE7XG4gICAgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnZGF5JykgdGhpcy5uYXZUbyh0aGlzLl92aWV3U3RhcnREYXRlLmFkZCgnbW9udGgnLCBzaWduICogMSAqIHRoaXMuY291bnQpKTtcbiAgICBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ21vbnRoJykgdGhpcy5uYXZUbyh0aGlzLl92aWV3U3RhcnREYXRlLmFkZCgneWVhcicsIHNpZ24gKiAxICogdGhpcy5jb3VudCkpO1xuICAgIGVsc2UgdGhpcy5uYXZUbyh0aGlzLl92aWV3U3RhcnREYXRlLmFkZCgneWVhcicsIHNpZ24gKiAxMCAqIHRoaXMuY291bnQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIGN1cnJlbnQgZGF0ZSBhbmQgZW1pdHMgdGhlIG5hdmlnYXRpb24gZXZlbnQuXG4gICAqXG4gICAqIEByZXR1cm5zIHZvaWRcbiAgICovXG4gIGdvVG9kYXkoKSB7XG4gICAgdGhpcy5uYXZUbyh0aGlzLl90b2RheSk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIHRvIGEgc3BlY2lmaWVkIGRhdGUgYW5kIHVwZGF0ZXMgdGhlIHZpZXcuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIG5hdmlnYXRlIHRvLCB3aGljaCBjYW4gYmUgYSBEYXRlIG9iamVjdCBvciBhbiBBWERhdGVUaW1lIGluc3RhbmNlLlxuICAgKiBAcmV0dXJucyB2b2lkXG4gICAqL1xuICBuYXZUbyhkYXRlOiBEYXRlIHwgQVhEYXRlVGltZSkge1xuICAgIGNvbnN0IHZhbCA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNvbnZlcnQoZGF0ZSwgdGhpcy5jYWxlbmRhcigpKTtcbiAgICB0aGlzLl92aWV3U3RhcnREYXRlID0gdmFsLnN0YXJ0T2YoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICAgIC8vdG8gbWFrZSBzdXJlIGl0cyByZW5kcmVkIGFuZCBkaXNwbGF5UmFuZ2UgaXMgbm90IG51bGxcbiAgICBpZiAodGhpcy52aWV3cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB2ciA9IHRoaXMuZGlzcGxheVJhbmdlO1xuICAgICAgdGhpcy5vbk5hdmlnYXRlLmVtaXQoe1xuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0aGlzLl9uYXZVc2VySW50ZXJhY3Rpb24sXG4gICAgICAgIHN0YXJ0OiB2ci5zdGFydFRpbWU/LmRhdGUsXG4gICAgICAgIGVuZDogdnIuZW5kVGltZT8uZGF0ZSxcbiAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIHByaXZhdGUgZ2V0IF9faG9zdENsYXNzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgX2NsYXNzZXMgPSB7XG4gICAgICAnYXgtc3RhdGUtZGlzYWJsZWQnOiB0aGlzLmRpc2FibGVkLFxuICAgICAgJ2F4LXN0YXRlLXJlYWRvbmx5JzogdGhpcy5yZWFkb25seSxcbiAgICAgIFtgYXgtbG9vay0ke3RoaXMubG9vaygpfWBdOiB0cnVlLFxuICAgIH07XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKF9jbGFzc2VzKVxuICAgICAgLmZpbHRlcigoYykgPT4gY1sxXSlcbiAgICAgIC5tYXAoKGMpID0+IGNbMF0pXG4gICAgICAuam9pbignICcpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9zZXREYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgaWYgKHRoaXMucmVhZG9ubHkgfHwgdGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIHRoaXMuY29tbWl0VmFsdWUodGhpcy5jYWxlbmRhclNlcnZpY2UuY29udmVydCh2YWx1ZSwgdGhpcy5jYWxlbmRhcigpKS5zdGFydE9mKCkuZGF0ZSwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBpc0Rpc2FibGVkKGRhdGU6IEFYRGF0ZVRpbWUpOiBib29sZWFuIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmRpc2FibGVkRGF0ZXMpICYmIHRoaXMuZGlzYWJsZWREYXRlcy5sZW5ndGggIT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWREYXRlcy5zb21lKChkKSA9PiBkYXRlLmVxdWFsKGQsICdkYXknKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5kaXNhYmxlZERhdGVzID09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkRGF0ZXMoZGF0ZS5kYXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNIb2xpZGF5KGRhdGU6IEFYRGF0ZVRpbWUpOiBib29sZWFuIHtcbiAgICBjb25zdCBnaCA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmhvbGlkYXlzLnNvbWUoKGQpID0+IGRhdGUuZXF1YWwoZC5kYXRlLCAnZGF5JykpO1xuICAgIGxldCBkaCA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmhvbGlkYXlzLnNvbWUoKGQpID0+IGRhdGUuZXF1YWwoZC5kYXRlLCAnZGF5JykpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuaG9saWRheURhdGVzKSAmJiB0aGlzLmhvbGlkYXlEYXRlcy5sZW5ndGggIT0gMCkge1xuICAgICAgZGggPSB0aGlzLmhvbGlkYXlEYXRlcy5zb21lKChkKSA9PiBkYXRlLmVxdWFsKGQsICdkYXknKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5ob2xpZGF5RGF0ZXMgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgZGggPSB0aGlzLmhvbGlkYXlEYXRlcyhkYXRlLmRhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gZ2ggfHwgZGg7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBpc1dlZWtlbmQoZGF0ZTogQVhEYXRlVGltZSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLndlZWtlbmQoKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0aGlzLndlZWtlbmQoKS5pbmNsdWRlcyhkYXRlLndlZWtkYXlJbmRleCk7XG4gICAgfVxuICAgIGNvbnN0IHdlZWtlbmQgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5yZXNvbHZlQ2FsZW5kYXIodGhpcy5jYWxlbmRhcigpKS53ZWVrZW5kO1xuICAgIHJldHVybiB3ZWVrZW5kLmluY2x1ZGVzKGRhdGUud2Vla2RheUluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIF9oYW5kbGVPbktleWRvd25FdmVudChlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgLy9UT0RPOiBjb21wbGV0ZSBrZXlib2FkIG5hdmlnYXRpb25cbiAgICBjb25zdCBpZ25vcmUgPSAoKSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH07XG4gICAgaWYgKGUuY29kZSA9PT0gJ0Fycm93UmlnaHQnIHx8IGUuY29kZSA9PT0gJ0Fycm93TGVmdCcpIHtcbiAgICAgIGlmIChlLmN0cmxLZXkpIHtcbiAgICAgICAgZS5jb2RlID09PSAnQXJyb3dSaWdodCcgPyB0aGlzLm5leHQoKSA6IHRoaXMucHJldigpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICAgIH0sIDUwKTtcbiAgICAgIH1cbiAgICAgIGlnbm9yZSgpO1xuICAgIH0gZWxzZSBpZiAoZS5jb2RlID09PSAnQXJyb3dVcCcgfHwgZS5jb2RlID09PSAnQXJyb3dEb3duJykge1xuICAgICAgaWYgKGUuY3RybEtleSkge1xuICAgICAgICBlLmNvZGUgPT09ICdBcnJvd1VwJyA/IHRoaXMubmV4dCgpIDogdGhpcy5wcmV2KCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgICAgfSwgNTApO1xuICAgICAgfVxuICAgICAgaWdub3JlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0TW9udGhOYW1lKGRhdGU6IEFYRGF0ZVRpbWUsIHN0eWxlOiAnc2hvcnQnIHwgJ2xvbmcnKSB7XG4gICAgcmV0dXJuIGBkYXRlVGltZS5tb250aHMuJHtkYXRlLmNhbGVuZGFyLm5hbWUoKX0uJHtzdHlsZX0uJHtkYXRlLm1vbnRoT2ZZZWFyIC0gMX1gO1xuICB9XG59XG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJheC1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XG48ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItYm9keVwiPlxuICBAZm9yICh2IG9mIHZpZXdzOyBsZXQgaSA9ICRpbmRleCwgZmlyc3QgPSAkZmlyc3QsIGxhc3QgPSAkbGFzdDsgdHJhY2sgaSkge1xuICAgIEBzd2l0Y2ggKGFjdGl2ZVZpZXcpIHtcbiAgICAgIEBjYXNlICgneWVhcicpIHtcbiAgICAgICAgQGlmIChzaG93TmF2aWdhdGlvbikge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci12aWV3LWhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlci1pbmZvXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW2F0dHIucmVhZG9ubHldPVwicmVhZG9ubHkgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b24gYXgtYnV0dG9uLXJvdW5kZWQgYXgtc3RhdGUtZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlTmF2Q2xpY2soJGV2ZW50LCAneWVhcicpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHYucmFuZ2Uuc3RhcnRUaW1lIHwgZm9ybWF0OiAnZGF0ZScgOiB7IGNhbGVuZGFyOiBjYWxlbmRhcigpLCBmb3JtYXQ6ICdZWVlZJyB9IHwgYXN5bmMgfX0gLVxuICAgICAgICAgICAgICAgIHt7IHYucmFuZ2UuZW5kVGltZSB8IGZvcm1hdDogJ2RhdGUnIDogeyBjYWxlbmRhcjogY2FsZW5kYXIoKSwgZm9ybWF0OiAnWVlZWScgfSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKGxhc3QpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlci1idXR0b25zXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1yb3VuZGVkIGF4LWJ1dHRvbi1pY29uIGF4LW5leHRcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVQcmV2Q2xpY2soKVwiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0BhY29yZXg6Y29tbW9uLmFjdGlvbnMucHJldicgfCB0cmFuc2xhdGUgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tY2hldnJvbi1sZWZ0XCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIucmVhZG9ubHldPVwicmVhZG9ubHkgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24tcm91bmRlZCBheC1idXR0b24taWNvblwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZU5leHRDbGljaygpXCJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQGFjb3JleDpjb21tb24uYWN0aW9ucy5uZXh0JyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jaGV2cm9uLXJpZ2h0XCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdHMgYXgtY2FsZW5kYXItc2xvdHMteWVhclwiIFtuZ0NsYXNzXT1cInsgJ2F4LWRlZmF1bHQnOiAheWVhckNlbGxUZW1wbGF0ZSB9XCI+XG4gICAgICAgICAgQGZvciAoc2xvdCBvZiB2LnNsb3RzOyB0cmFjayBzbG90LnRleHQpIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90XCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LXN0YXRlLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2xvdC5jc3NDbGFzc1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlU2xvdENsaWNrKCRldmVudCwgc2xvdClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAaWYgKHllYXJDZWxsVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ5ZWFyQ2VsbFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiB7IHNsb3Q6IHNsb3QgfSB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAge3sgc2xvdC50ZXh0IH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICBAY2FzZSAoJ21vbnRoJykge1xuICAgICAgICBAaWYgKHNob3dOYXZpZ2F0aW9uKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLXZpZXctaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItaGVhZGVyLWluZm9cIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24tcm91bmRlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVOYXZDbGljaygkZXZlbnQsICd5ZWFyJylcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdi5yYW5nZS5zdGFydFRpbWUgfCBmb3JtYXQ6ICdkYXRlJyA6IHsgY2FsZW5kYXI6IGNhbGVuZGFyKCksIGZvcm1hdDogJ1lZWVknIH0gfCBhc3luYyB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgQGlmIChsYXN0KSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1oZWFkZXItYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIucmVhZG9ubHldPVwicmVhZG9ubHkgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24tcm91bmRlZCBheC1idXR0b24taWNvblwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZVByZXZDbGljaygpXCJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQGFjb3JleDpjb21tb24uYWN0aW9ucy5wcmV2JyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jaGV2cm9uLWxlZnRcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1yb3VuZGVkIGF4LWJ1dHRvbi1pY29uXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlTmV4dENsaWNrKClcIlxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidAYWNvcmV4OmNvbW1vbi5hY3Rpb25zLm5leHQnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLWNoZXZyb24tcmlnaHRcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLXNsb3RzIGF4LWNhbGVuZGFyLXNsb3RzLW1vbnRoXCIgW25nQ2xhc3NdPVwieyAnYXgtZGVmYXVsdCc6ICFtb250aENlbGxUZW1wbGF0ZSB9XCI+XG4gICAgICAgICAgQGZvciAoc2xvdCBvZiB2LnNsb3RzOyB0cmFjayBzbG90KSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNsb3QuY3NzQ2xhc3NcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZVNsb3RDbGljaygkZXZlbnQsIHNsb3QpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQGlmIChtb250aENlbGxUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1vbnRoQ2VsbFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiB7IHNsb3Q6IHNsb3QgfSB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8ZGl2IFt0aXRsZV09XCJzbG90LmRhdGUgfCBmb3JtYXQ6ICdkYXRlJyA6IHsgY2FsZW5kYXI6IGNhbGVuZGFyKCksIGZvcm1hdDogJ01NTU0gWVlZWScgfSB8IGFzeW5jXCI+XG4gICAgICAgICAgICAgICAgICB7eyBgQGFjb3JleDoke2dldE1vbnRoTmFtZShzbG90LmRhdGUsICdzaG9ydCcpfWAgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgQGRlZmF1bHQge1xuICAgICAgICBAaWYgKHNob3dOYXZpZ2F0aW9uICYmIGxvb2soKSA9PT0gJ3NlbGVjdCcgJiYgbGFzdCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci12aWV3LWhlYWRlciBheC1jYWxlbmRhci1kYXktbmF2XCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgIFthdHRyLnJlYWRvbmx5XT1cInJlYWRvbmx5ID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24tcm91bmRlZCBheC1idXR0b24taWNvbiBheC1jYWxlbmRhci1kYXktbmF2LXByZXZcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZVByZXZDbGljaygpXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIidAYWNvcmV4OmNvbW1vbi5hY3Rpb25zLnByZXYnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtaWNvblwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgJ2F4LWljb24tY2hldnJvbi1sZWZ0JzogIWlzUnRsKCksXG4gICAgICAgICAgICAgICAgICAnYXgtaWNvbi1jaGV2cm9uLXJpZ2h0JzogaXNSdGwoKSxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWRheS1uYXYtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxheC1zZWxlY3QtYm94XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJheC1jYWxlbmRhci1tb250aC1zZWxlY3QgYXgtc21cIlxuICAgICAgICAgICAgICAgIGxvb2s9XCJub25lXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwiX21vbnRoT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgdGV4dEZpZWxkPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgdmFsdWVGaWVsZD1cImlkXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJfY3VycmVudE1vbnRoXCJcbiAgICAgICAgICAgICAgICBbbWF4VmlzaWJsZUl0ZW1zXT1cIjEyXCJcbiAgICAgICAgICAgICAgICBbaXRlbUhlaWdodF09XCIzMlwiXG4gICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cIl9oYW5kbGVNb250aFNlbGVjdENoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgID48L2F4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgIDxheC1zZWxlY3QtYm94XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJheC1jYWxlbmRhci15ZWFyLXNlbGVjdCBheC1zbVwiXG4gICAgICAgICAgICAgICAgbG9vaz1cIm5vbmVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJfeWVhck9wdGlvbnNcIlxuICAgICAgICAgICAgICAgIHRleHRGaWVsZD1cInRleHRcIlxuICAgICAgICAgICAgICAgIHZhbHVlRmllbGQ9XCJpZFwiXG4gICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiX2N1cnJlbnRZZWFyXCJcbiAgICAgICAgICAgICAgICBbbWF4VmlzaWJsZUl0ZW1zXT1cIjEwXCJcbiAgICAgICAgICAgICAgICBbaXRlbUhlaWdodF09XCIzMlwiXG4gICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cIl9oYW5kbGVZZWFyU2VsZWN0Q2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgPjwvYXgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b24gYXgtYnV0dG9uLXJvdW5kZWQgYXgtYnV0dG9uLWljb24gYXgtY2FsZW5kYXItZGF5LW5hdi1uZXh0XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVOZXh0Q2xpY2soKVwiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCInQGFjb3JleDpjb21tb24uYWN0aW9ucy5uZXh0JyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWljb25cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICdheC1pY29uLWNoZXZyb24tcmlnaHQnOiAhaXNSdGwoKSxcbiAgICAgICAgICAgICAgICAgICdheC1pY29uLWNoZXZyb24tbGVmdCc6IGlzUnRsKCksXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKHNob3dOYXZpZ2F0aW9uICYmIGxvb2soKSA9PT0gJ2NsYXNzaWMnKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLXZpZXctaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItaGVhZGVyLWluZm9cIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24tcm91bmRlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVOYXZDbGljaygkZXZlbnQsICd5ZWFyJylcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdi5yYW5nZS5zdGFydFRpbWUgfCBmb3JtYXQ6ICdkYXRlJyA6IHsgY2FsZW5kYXI6IGNhbGVuZGFyKCksIGZvcm1hdDogJ1lZWVknIH0gfCBhc3luYyB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24tcm91bmRlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVOYXZDbGljaygkZXZlbnQsICdtb250aCcpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHYucmFuZ2Uuc3RhcnRUaW1lIHwgZm9ybWF0OiAnZGF0ZScgOiB7IGNhbGVuZGFyOiBjYWxlbmRhcigpLCBmb3JtYXQ6ICdNTU1NJyB9IHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAobGFzdCkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItaGVhZGVyLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLnJlYWRvbmx5XT1cInJlYWRvbmx5ID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b24gYXgtYnV0dG9uLXJvdW5kZWQgYXgtYnV0dG9uLWljb25cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVQcmV2Q2xpY2soKVwiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0BhY29yZXg6Y29tbW9uLmFjdGlvbnMucHJldicgfCB0cmFuc2xhdGUgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tY2hldnJvbi1sZWZ0XCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIucmVhZG9ubHldPVwicmVhZG9ubHkgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24tcm91bmRlZCBheC1idXR0b24taWNvblwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZU5leHRDbGljaygpXCJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQGFjb3JleDpjb21tb24uYWN0aW9ucy5uZXh0JyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jaGV2cm9uLXJpZ2h0XCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItd2Vla1wiPlxuICAgICAgICAgIEBmb3IgKGQgb2Ygd2Vla0xheW91dCgpOyB0cmFjayBkKSB7XG4gICAgICAgICAgICA8ZGl2Pnt7ICdAYWNvcmV4OmRhdGVUaW1lLndlZWtkYXlzLnNob3J0LicgKyBkIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90cyBheC1jYWxlbmRhci1zbG90cy1kYXlcIiBbbmdDbGFzc109XCJ7ICdheC1kZWZhdWx0JzogIWRheUNlbGxUZW1wbGF0ZSB9XCI+XG4gICAgICAgICAgQGZvciAoc2xvdCBvZiB2LnNsb3RzOyB0cmFjayBzbG90KSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNsb3QuY3NzQ2xhc3NcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZVNsb3RDbGljaygkZXZlbnQsIHNsb3QpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgW2F4UmlwcGxlXVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAaWYgKGRheUNlbGxUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRheUNlbGxUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogeyBzbG90OiBzbG90IH0gfVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGRpdiBbdGl0bGVdPVwic2xvdC5kYXRlIHwgZm9ybWF0OiAnZGF0ZScgOiB7IGNhbGVuZGFyOiBjYWxlbmRhcigpLCBmb3JtYXQ6ICdsb25nJyB9IHwgYXN5bmNcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHNsb3QudGV4dCB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIH1cbiAgfVxuPC9kaXY+XG48bmctY29udGVudCBzZWxlY3Q9XCJheC1mb290ZXJcIj48L25nLWNvbnRlbnQ+XG4iXX0=","import { AXComponent, AXValuableComponent, MXInteractiveComponent, MXValueComponent, } from '@acorex/cdk/common';\nimport { AXCalendarService } from '@acorex/core/date-time';\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { Component, ViewChild, ViewEncapsulation, forwardRef, inject, input, linkedSignal, } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport { MXCalendarBaseComponent } from './calendar.class';\nimport { AXCalendarComponent } from './calendar.component';\nimport * as i0 from \"@angular/core\";\nexport class AXCalendarRangeComponent extends classes((MXValueComponent), MXInteractiveComponent, MXCalendarBaseComponent) {\n /**\n * @ignore\n */\n constructor() {\n super();\n this.formatService = inject(AXFormatService);\n this.unsubscriber = inject(AXUnsubscriber);\n this.calendar = linkedSignal(() => this.type ?? this.localeService.activeProfile().calendar.system, ...(ngDevMode ? [{ debugName: \"calendar\" }] : []));\n /**\n * Day view navigation style passed through to embedded calendars.\n */\n this.look = input('select', ...(ngDevMode ? [{ debugName: \"look\" }] : []));\n /**\n * @ignore\n */\n this._calendarService = inject(AXCalendarService);\n this._navText = '';\n /**\n * @ignore\n */\n this._navUserInteraction = false;\n /** w\n * @ignore\n */\n this.getCellClass = (date) => {\n //const d = this._calendarService.create(date, this.type);\n // check from value\n if (!this._calendarService.isValidDate(this.value.from)) {\n return null;\n }\n const from = this._calendarService.create(this.value.from, this.type);\n if (this.value.from && date.equal(from, 'day')) {\n return 'ax-range-start';\n }\n // check end value\n if (!this._calendarService.isValidDate(this.value.end)) {\n return null;\n }\n const end = this._calendarService.create(this.value.end, this.type);\n if (this.value.end && date.equal(end, 'day'))\n return 'ax-range-end';\n if (this.value.from && this.value.end && date.compare(from, 'day') > 0 && date.compare(end, 'day') < 0)\n return 'ax-range-between';\n return null;\n };\n this.defaultValue = { from: null, end: null };\n this.calendarService.calendarChanges$.pipe(this.unsubscriber.takeUntilDestroy).subscribe((value) => {\n if (!this.type)\n this.calendar.set(value.name());\n this.render();\n });\n }\n /**\n * @ignore\n */\n ngOnInit() {\n super.ngOnInit();\n }\n /**\n * @ignore\n */\n ngAfterViewInit() {\n this._syncNav1();\n }\n internalValueChanged(value) {\n this._c1.render();\n this._c2.render();\n }\n /**\n * @ignore\n */\n handleSlotClick(e) {\n this.onSlotClick.emit({\n component: this,\n item: e.item,\n isUserInteraction: true,\n nativeEvent: e,\n });\n if (this._c1.activeView == this.depth) {\n if (!this.value.from || (this.value.from && this.value.end)) {\n this.commitValue({ from: e.item, end: null }, true);\n }\n if (this.value.from && e.item <= this.value.from) {\n this.commitValue({ from: e.item, end: this.value.end }, true);\n }\n else if (this.value.from && !this.value.end) {\n this.commitValue({ from: this.value.from, end: e.item }, true);\n }\n }\n else {\n if (e.component == this._c1) {\n this._syncNav1();\n }\n if (e.component == this._c2) {\n this._syncNav2(this._calendarService.create(e.item, this.type));\n }\n }\n this._c1.render();\n this._c2.render();\n }\n /**\n * @ignore\n */\n handlePrevClick() {\n this._navUserInteraction = true;\n const view = this._c1.activeView;\n const d1 = this._c1.displayRange.startTime;\n if (view == 'day' || view == 'month') {\n this._c1.prev();\n }\n else if (view == 'year') {\n this._c1.navTo(d1.add('year', -20));\n }\n this._navUserInteraction = false;\n }\n /**\n * @ignore\n */\n handleNextClick() {\n this._navUserInteraction = true;\n const view = this._c1.activeView;\n const d1 = this._c1.displayRange.startTime;\n if (view == 'day' || view == 'month') {\n this._c1.next();\n }\n else if (view == 'year') {\n this._c1.navTo(d1.add('year', 20));\n }\n this._navUserInteraction = false;\n }\n /**\n * @ignore\n */\n handleNavClick() {\n this._c1.toggleView();\n }\n /**\n * @ignore\n */\n _syncNavText() {\n const view = this._c1.activeView;\n const d1 = this._c1.displayRange.startTime;\n if (view == 'day') {\n const d2 = this._c2.displayRange.endTime;\n this._navText = `${this.formatService.format(d1, 'datetime', { format: 'MMM yyyy' })} - ${this.formatService.format(d2, 'datetime', { format: 'MMM yyyy' })}`;\n }\n else if (view == 'month' || view == 'year') {\n const d2 = this._c2.displayRange.endTime;\n this._navText = `${this.formatService.format(d1, 'datetime', { format: 'yyyy' })} - ${this.formatService.format(d2, 'datetime', { format: 'yyyy' })}`;\n }\n }\n /**\n * @ignore\n */\n handleNavigate() {\n this._syncNav1();\n this.onNavigate.emit({\n component: this,\n isUserInteraction: this._navUserInteraction,\n start: this._c1.displayRange.startTime?.date,\n end: this._c2.displayRange.endTime?.date,\n htmlElement: this.getHostElement(),\n });\n }\n /**\n * @ignore\n */\n handleActiveViewChange1() {\n this._c2.activeView = this._c1.activeView;\n this._syncNav1();\n }\n /**\n * @ignore\n */\n handleActiveViewChange2() {\n if (this._c2.activeView != this._c1.activeView) {\n this._c1.activeView = this._c2.activeView;\n }\n }\n /**\n * @ignore\n */\n _syncNav1() {\n const view = (this._c2.activeView = this._c1.activeView);\n const range = this._c1.displayRange;\n if (view == 'day') {\n this._c2.navTo(range.startTime.add('month', 1));\n }\n else if (view == 'month') {\n this._c2.navTo(range.startTime.add('year', 1));\n }\n else if (view == 'year') {\n this._c2.navTo(range.endTime.add('year', 4));\n }\n this._syncNavText();\n }\n /**\n * @ignore\n */\n _syncNav2(e) {\n const view = this._c2.activeView;\n if (view == 'month') {\n this._c1.navTo(e.add('month', -1));\n }\n else if (view == 'year') {\n this._c1.navTo(e.startOf('year'));\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXCalendarRangeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.3\", type: AXCalendarRangeComponent, isStandalone: true, selector: \"ax-calendar-range\", inputs: { rtl: { classPropertyName: \"rtl\", publicName: \"rtl\", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: \"readonly\", publicName: \"readonly\", isSignal: false, isRequired: false, transformFunction: null }, value: { classPropertyName: \"value\", publicName: \"value\", isSignal: false, isRequired: false, transformFunction: null }, name: { classPropertyName: \"name\", publicName: \"name\", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: false, isRequired: false, transformFunction: null }, depth: { classPropertyName: \"depth\", publicName: \"depth\", isSignal: false, isRequired: false, transformFunction: null }, activeView: { classPropertyName: \"activeView\", publicName: \"activeView\", isSignal: false, isRequired: false, transformFunction: null }, minValue: { classPropertyName: \"minValue\", publicName: \"minValue\", isSignal: false, isRequired: false, transformFunction: null }, maxValue: { classPropertyName: \"maxValue\", publicName: \"maxValue\", isSignal: false, isRequired: false, transformFunction: null }, disabledDates: { classPropertyName: \"disabledDates\", publicName: \"disabledDates\", isSignal: false, isRequired: false, transformFunction: null }, holidayDates: { classPropertyName: \"holidayDates\", publicName: \"holidayDates\", isSignal: false, isRequired: false, transformFunction: null }, type: { classPropertyName: \"type\", publicName: \"type\", isSignal: false, isRequired: false, transformFunction: null }, dayCellTemplate: { classPropertyName: \"dayCellTemplate\", publicName: \"dayCellTemplate\", isSignal: false, isRequired: false, transformFunction: null }, monthCellTemplate: { classPropertyName: \"monthCellTemplate\", publicName: \"monthCellTemplate\", isSignal: false, isRequired: false, transformFunction: null }, yearCellTemplate: { classPropertyName: \"yearCellTemplate\", publicName: \"yearCellTemplate\", isSignal: false, isRequired: false, transformFunction: null }, cellClass: { classPropertyName: \"cellClass\", publicName: \"cellClass\", isSignal: false, isRequired: false, transformFunction: null }, showNavigation: { classPropertyName: \"showNavigation\", publicName: \"showNavigation\", isSignal: false, isRequired: false, transformFunction: null }, look: { classPropertyName: \"look\", publicName: \"look\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onOptionChanged: \"onOptionChanged\", valueChange: \"valueChange\", onValueChanged: \"onValueChanged\", onBlur: \"onBlur\", onFocus: \"onFocus\", depthChange: \"depthChange\", typeChange: \"typeChange\", activeViewChange: \"activeViewChange\", disabledDatesChange: \"disabledDatesChange\", holidayDatesChange: \"holidayDatesChange\", onNavigate: \"onNavigate\", onSlotClick: \"onSlotClick\" }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXCalendarRangeComponent),\n multi: true,\n },\n {\n provide: AXValuableComponent,\n useExisting: AXCalendarRangeComponent,\n },\n AXUnsubscriber,\n { provide: AXComponent, useExisting: AXCalendarRangeComponent },\n ], viewQueries: [{ propertyName: \"_c1\", first: true, predicate: [\"c1\"], descendants: true, static: true }, { propertyName: \"_c2\", first: true, predicate: [\"c2\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: \"<div class=\\\"ax-calendar-range-header\\\">\\n <ng-content></ng-content>\\n <div class=\\\"ax-calendar-header-range-info\\\">\\n <button type=\\\"button\\\" [attr.disabled]=\\\"disabled ? '' : null\\\" class=\\\"ax-general-button\\\" (click)=\\\"handleNavClick()\\\">\\n {{ _navText }}\\n </button>\\n </div>\\n <div class=\\\"ax-calendar-header-range-buttons\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-icon\\\"\\n (click)=\\\"handlePrevClick()\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-left\\\"></i>\\n </button>\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-icon\\\"\\n (click)=\\\"handleNextClick()\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-right\\\"></i>\\n </button>\\n </div>\\n</div>\\n<div class=\\\"ax-calendar-range-body\\\">\\n <ax-calendar\\n #c1\\n [showNavigation]=\\\"false\\\"\\n [readonly]=\\\"true\\\"\\n [cellClass]=\\\"getCellClass\\\"\\n [type]=\\\"type\\\"\\n [dayCellTemplate]=\\\"dayCellTemplate\\\"\\n [monthCellTemplate]=\\\"monthCellTemplate\\\"\\n [yearCellTemplate]=\\\"yearCellTemplate\\\"\\n [minValue]=\\\"minValue\\\"\\n [maxValue]=\\\"maxValue\\\"\\n [depth]=\\\"depth\\\"\\n [look]=\\\"look()\\\"\\n (onSlotClick)=\\\"handleSlotClick($event)\\\"\\n (onNavigate)=\\\"handleNavigate()\\\"\\n (activeViewChange)=\\\"handleActiveViewChange1()\\\"\\n >\\n </ax-calendar>\\n <ax-calendar\\n #c2\\n [showNavigation]=\\\"false\\\"\\n [readonly]=\\\"true\\\"\\n [cellClass]=\\\"getCellClass\\\"\\n [type]=\\\"type\\\"\\n [dayCellTemplate]=\\\"dayCellTemplate\\\"\\n [monthCellTemplate]=\\\"monthCellTemplate\\\"\\n [yearCellTemplate]=\\\"yearCellTemplate\\\"\\n [minValue]=\\\"minValue\\\"\\n [maxValue]=\\\"maxValue\\\"\\n [depth]=\\\"depth\\\"\\n [look]=\\\"look()\\\"\\n (onSlotClick)=\\\"handleSlotClick($event)\\\"\\n (activeViewChange)=\\\"handleActiveViewChange2()\\\"\\n >\\n </ax-calendar>\\n</div>\\n\", styles: [\"ax-calendar-range{--ax-comp-calendar-range-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-calendar-slot-range-text-color: var(--ax-sys-color-on-primary-surface);--ax-comp-calendar-slot-range-between-bg-color: var(--ax-sys-color-primary-surface), .5;--ax-comp-calendar-slot-range-start-end-bg-color: var(--ax-sys-color-primary-surface)}.ax-dark ax-calendar-range{--ax-comp-calendar-range-text-color: var(--ax-sys-color-on-darkest-surface)}html[dir=rtl] ax-calendar-range .ax-calendar-header-range-buttons .ax-icon{-moz-transform:scale(-1,1);-o-transform:scale(-1,1);-webkit-transform:scale(-1,1);transform:scaleX(-1)}ax-calendar-range{display:block;padding:.5rem;color:rgb(var(--ax-comp-calendar-range-text-color));background-color:rgba(var(--ax-comp-calendar-range-bg-color))}ax-calendar-range .ax-calendar-range-header{display:flex;justify-content:space-between;padding-top:var(--ax-comp-calendar-range-header-padding-t, .25rem);padding-left:var(--ax-comp-calendar-range-header-padding-x, .25rem);padding-right:var(--ax-comp-calendar-range-header-padding-x, .25rem)}ax-calendar-range .ax-calendar-range-header .ax-calendar-header-range-info{font-weight:500}ax-calendar-range .ax-calendar-range-header .ax-calendar-header-range-buttons{display:flex}ax-calendar-range .ax-calendar-range-body{display:flex;flex-direction:row}@media (min-width: 320px) and (max-width: 640px){ax-calendar-range .ax-calendar-range-body{flex-direction:column}}ax-calendar-range ax-calendar{margin:0;padding:0}ax-calendar-range ax-calendar .ax-calendar-body{margin-top:0;padding-top:0}ax-calendar-range ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-range-between{color:rgba(var(--ax-comp-calendar-slot-range-text-color));background-color:rgba(var(--ax-comp-calendar-slot-range-between-bg-color))}ax-calendar-range ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-range-start,ax-calendar-range ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-range-end{color:rgba(var(--ax-comp-calendar-slot-range-text-color));background-color:rgba(var(--ax-comp-calendar-slot-range-start-end-bg-color))}@media (min-width: 768px){ax-calendar-range ax-calendar .ax-calendar-body>div{width:100%!important}}\\n\"], dependencies: [{ kind: \"component\", type: AXCalendarComponent, selector: \"ax-calendar\", inputs: [\"rtl\", \"readonly\", \"value\", \"name\", \"disabled\", \"depth\", \"activeView\", \"minValue\", \"maxValue\", \"disabledDates\", \"holidayDates\", \"type\", \"dayCellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"cellClass\", \"showNavigation\", \"count\", \"id\", \"weekend\", \"weekdays\", \"look\"], outputs: [\"onOptionChanged\", \"valueChange\", \"onValueChanged\", \"minValueChange\", \"maxValueChange\", \"onBlur\", \"onFocus\", \"depthChange\", \"typeChange\", \"activeViewChange\", \"disabledDatesChange\", \"holidayDatesChange\", \"onNavigate\", \"onSlotClick\", \"countChange\"] }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXCalendarRangeComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-calendar-range', encapsulation: ViewEncapsulation.None, inputs: [\n 'rtl',\n 'readonly',\n 'value',\n 'name',\n 'disabled',\n 'depth',\n 'activeView',\n 'minValue',\n 'maxValue',\n 'disabledDates',\n 'holidayDates',\n 'type',\n 'dayCellTemplate',\n 'monthCellTemplate',\n 'yearCellTemplate',\n 'cellClass',\n 'showNavigation',\n ], outputs: [\n 'onOptionChanged',\n 'valueChange',\n 'onValueChanged',\n 'onBlur',\n 'onFocus',\n 'depthChange',\n 'typeChange',\n 'activeViewChange',\n 'disabledDatesChange',\n 'holidayDatesChange',\n 'onNavigate',\n 'onSlotClick',\n ], providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXCalendarRangeComponent),\n multi: true,\n },\n {\n provide: AXValuableComponent,\n useExisting: AXCalendarRangeComponent,\n },\n AXUnsubscriber,\n { provide: AXComponent, useExisting: AXCalendarRangeComponent },\n ], imports: [AXCalendarComponent], template: \"<div class=\\\"ax-calendar-range-header\\\">\\n <ng-content></ng-content>\\n <div class=\\\"ax-calendar-header-range-info\\\">\\n <button type=\\\"button\\\" [attr.disabled]=\\\"disabled ? '' : null\\\" class=\\\"ax-general-button\\\" (click)=\\\"handleNavClick()\\\">\\n {{ _navText }}\\n </button>\\n </div>\\n <div class=\\\"ax-calendar-header-range-buttons\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-icon\\\"\\n (click)=\\\"handlePrevClick()\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-left\\\"></i>\\n </button>\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-icon\\\"\\n (click)=\\\"handleNextClick()\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-right\\\"></i>\\n </button>\\n </div>\\n</div>\\n<div class=\\\"ax-calendar-range-body\\\">\\n <ax-calendar\\n #c1\\n [showNavigation]=\\\"false\\\"\\n [readonly]=\\\"true\\\"\\n [cellClass]=\\\"getCellClass\\\"\\n [type]=\\\"type\\\"\\n [dayCellTemplate]=\\\"dayCellTemplate\\\"\\n [monthCellTemplate]=\\\"monthCellTemplate\\\"\\n [yearCellTemplate]=\\\"yearCellTemplate\\\"\\n [minValue]=\\\"minValue\\\"\\n [maxValue]=\\\"maxValue\\\"\\n [depth]=\\\"depth\\\"\\n [look]=\\\"look()\\\"\\n (onSlotClick)=\\\"handleSlotClick($event)\\\"\\n (onNavigate)=\\\"handleNavigate()\\\"\\n (activeViewChange)=\\\"handleActiveViewChange1()\\\"\\n >\\n </ax-calendar>\\n <ax-calendar\\n #c2\\n [showNavigation]=\\\"false\\\"\\n [readonly]=\\\"true\\\"\\n [cellClass]=\\\"getCellClass\\\"\\n [type]=\\\"type\\\"\\n [dayCellTemplate]=\\\"dayCellTemplate\\\"\\n [monthCellTemplate]=\\\"monthCellTemplate\\\"\\n [yearCellTemplate]=\\\"yearCellTemplate\\\"\\n [minValue]=\\\"minValue\\\"\\n [maxValue]=\\\"maxValue\\\"\\n [depth]=\\\"depth\\\"\\n [look]=\\\"look()\\\"\\n (onSlotClick)=\\\"handleSlotClick($event)\\\"\\n (activeViewChange)=\\\"handleActiveViewChange2()\\\"\\n >\\n </ax-calendar>\\n</div>\\n\", styles: [\"ax-calendar-range{--ax-comp-calendar-range-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-calendar-slot-range-text-color: var(--ax-sys-color-on-primary-surface);--ax-comp-calendar-slot-range-between-bg-color: var(--ax-sys-color-primary-surface), .5;--ax-comp-calendar-slot-range-start-end-bg-color: var(--ax-sys-color-primary-surface)}.ax-dark ax-calendar-range{--ax-comp-calendar-range-text-color: var(--ax-sys-color-on-darkest-surface)}html[dir=rtl] ax-calendar-range .ax-calendar-header-range-buttons .ax-icon{-moz-transform:scale(-1,1);-o-transform:scale(-1,1);-webkit-transform:scale(-1,1);transform:scaleX(-1)}ax-calendar-range{display:block;padding:.5rem;color:rgb(var(--ax-comp-calendar-range-text-color));background-color:rgba(var(--ax-comp-calendar-range-bg-color))}ax-calendar-range .ax-calendar-range-header{display:flex;justify-content:space-between;padding-top:var(--ax-comp-calendar-range-header-padding-t, .25rem);padding-left:var(--ax-comp-calendar-range-header-padding-x, .25rem);padding-right:var(--ax-comp-calendar-range-header-padding-x, .25rem)}ax-calendar-range .ax-calendar-range-header .ax-calendar-header-range-info{font-weight:500}ax-calendar-range .ax-calendar-range-header .ax-calendar-header-range-buttons{display:flex}ax-calendar-range .ax-calendar-range-body{display:flex;flex-direction:row}@media (min-width: 320px) and (max-width: 640px){ax-calendar-range .ax-calendar-range-body{flex-direction:column}}ax-calendar-range ax-calendar{margin:0;padding:0}ax-calendar-range ax-calendar .ax-calendar-body{margin-top:0;padding-top:0}ax-calendar-range ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-range-between{color:rgba(var(--ax-comp-calendar-slot-range-text-color));background-color:rgba(var(--ax-comp-calendar-slot-range-between-bg-color))}ax-calendar-range ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-range-start,ax-calendar-range ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-range-end{color:rgba(var(--ax-comp-calendar-slot-range-text-color));background-color:rgba(var(--ax-comp-calendar-slot-range-start-end-bg-color))}@media (min-width: 768px){ax-calendar-range ax-calendar .ax-calendar-body>div{width:100%!important}}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { _c1: [{\n type: ViewChild,\n args: ['c1', { static: true }]\n }], _c2: [{\n type: ViewChild,\n args: ['c2', { static: true }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItcmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jYWxlbmRhci9zcmMvbGliL2NhbGVuZGFyLXJhbmdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY2FsZW5kYXIvc3JjL2xpYi9jYWxlbmRhci1yYW5nZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUVYLG1CQUFtQixFQUNuQixzQkFBc0IsRUFDdEIsZ0JBQWdCLEdBQ2pCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGlCQUFpQixFQUFjLE1BQU0sd0JBQXdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBRUwsU0FBUyxFQUNULFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbkMsT0FBTyxFQUFxRCx1QkFBdUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQXVEM0QsTUFBTSxPQUFPLHdCQUNYLFNBQVEsT0FBTyxDQUFDLENBQUEsZ0JBQStCLENBQUEsRUFBRSxzQkFBc0IsRUFBRSx1QkFBdUIsQ0FBQztJQStCakc7O09BRUc7SUFDSDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBaENGLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hDLGlCQUFZLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRXBDLGFBQVEsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLG9EQUFDLENBQUM7UUFFekc7O1dBRUc7UUFDSCxTQUFJLEdBQUcsS0FBSyxDQUErQixRQUFRLGdEQUFDLENBQUM7UUFFckQ7O1dBRUc7UUFDSyxxQkFBZ0IsR0FBc0IsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFReEUsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUVkOztXQUVHO1FBQ0ssd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBa0NwQzs7V0FFRztRQUNILGlCQUFZLEdBQUcsQ0FBQyxJQUFnQixFQUFFLEVBQUU7WUFDbEMsMERBQTBEO1lBRTFELG1CQUFtQjtZQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3hELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDL0MsT0FBTyxnQkFBZ0IsQ0FBQztZQUMxQixDQUFDO1lBRUQsa0JBQWtCO1lBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdkQsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUM7Z0JBQUUsT0FBTyxjQUFjLENBQUM7WUFDcEUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQztnQkFDcEcsT0FBTyxrQkFBa0IsQ0FBQztZQUM1QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztRQW5EQSxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFFOUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2pHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtnQkFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDZ0IsUUFBUTtRQUN6QixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZTtRQUNiLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRVEsb0JBQW9CLENBQUMsS0FBVTtRQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQTRCRDs7T0FFRztJQUNPLGVBQWUsQ0FBQyxDQUFzQjtRQUM5QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUNwQixTQUFTLEVBQUUsSUFBSTtZQUNmLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtZQUNaLGlCQUFpQixFQUFFLElBQUk7WUFDdkIsV0FBVyxFQUFFLENBQUM7U0FDZixDQUFDLENBQUM7UUFDSCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzVELElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDdEQsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNqRCxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDaEUsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2pFLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixDQUFDO1lBQ0QsSUFBSSxDQUFDLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDbEUsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVEOztPQUVHO0lBQ08sZUFBZTtRQUN2QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO1FBQ2pDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztRQUMzQyxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEIsQ0FBQzthQUFNLElBQUksSUFBSSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUNuQyxDQUFDO0lBRUQ7O09BRUc7SUFDTyxlQUFlO1FBQ3ZCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7UUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7UUFDakMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO1FBQzNDLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksT0FBTyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixDQUFDO2FBQU0sSUFBSSxJQUFJLElBQUksTUFBTSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUNuQyxDQUFDO0lBRUQ7O09BRUc7SUFDTyxjQUFjO1FBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssWUFBWTtRQUNsQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztRQUNqQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUM7UUFDM0MsSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDbEIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDaEssQ0FBQzthQUFNLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxJQUFJLElBQUksTUFBTSxFQUFFLENBQUM7WUFDN0MsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDeEosQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNPLGNBQWM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWpCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ25CLFNBQVMsRUFBRSxJQUFJO1lBQ2YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLG1CQUFtQjtZQUMzQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUk7WUFDNUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJO1lBQ3hDLFdBQVcsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFO1NBQ25DLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNPLHVCQUF1QjtRQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztRQUMxQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ08sdUJBQXVCO1FBQy9CLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssU0FBUztRQUNmLE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQztRQUNwQyxJQUFJLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRCxDQUFDO2FBQU0sSUFBSSxJQUFJLElBQUksT0FBTyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakQsQ0FBQzthQUFNLElBQUksSUFBSSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssU0FBUyxDQUFDLENBQWE7UUFDN0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7UUFDakMsSUFBSSxJQUFJLElBQUksT0FBTyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7YUFBTSxJQUFJLElBQUksSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7OEdBdk9VLHdCQUF3QjtrR0FBeEIsd0JBQXdCLHF5RkFmeEI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDO2dCQUN2RCxLQUFLLEVBQUUsSUFBSTthQUNaO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLG1CQUFtQjtnQkFDNUIsV0FBVyxFQUFFLHdCQUF3QjthQUN0QztZQUNELGNBQWM7WUFDZCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLHdCQUF3QixFQUFFO1NBQ2hFLG9QQzNFSCw2NURBK0RBLGd3RURhWSxtQkFBbUI7OzJGQUVsQix3QkFBd0I7a0JBckRwQyxTQUFTOytCQUNFLG1CQUFtQixpQkFHZCxpQkFBaUIsQ0FBQyxJQUFJLFVBQzdCO3dCQUNOLEtBQUs7d0JBQ0wsVUFBVTt3QkFDVixPQUFPO3dCQUNQLE1BQU07d0JBQ04sVUFBVTt3QkFDVixPQUFPO3dCQUNQLFlBQVk7d0JBQ1osVUFBVTt3QkFDVixVQUFVO3dCQUNWLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxNQUFNO3dCQUNOLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLFdBQVc7d0JBQ1gsZ0JBQWdCO3FCQUNqQixXQUNRO3dCQUNQLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLFFBQVE7d0JBQ1IsU0FBUzt3QkFDVCxhQUFhO3dCQUNiLFlBQVk7d0JBQ1osa0JBQWtCO3dCQUNsQixxQkFBcUI7d0JBQ3JCLG9CQUFvQjt3QkFDcEIsWUFBWTt3QkFDWixhQUFhO3FCQUNkLGFBQ1U7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUM7NEJBQ3ZELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsMEJBQTBCO3lCQUN0Qzt3QkFDRCxjQUFjO3dCQUNkLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLDBCQUEwQixFQUFFO3FCQUNoRSxXQUNRLENBQUMsbUJBQW1CLENBQUM7d0RBc0J0QixHQUFHO3NCQURWLFNBQVM7dUJBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJekIsR0FBRztzQkFEVixTQUFTO3VCQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWENvbXBvbmVudCxcbiAgQVhSYW5nZSxcbiAgQVhWYWx1YWJsZUNvbXBvbmVudCxcbiAgTVhJbnRlcmFjdGl2ZUNvbXBvbmVudCxcbiAgTVhWYWx1ZUNvbXBvbmVudCxcbn0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYQ2FsZW5kYXJTZXJ2aWNlLCBBWERhdGVUaW1lIH0gZnJvbSAnQGFjb3JleC9jb3JlL2RhdGUtdGltZSc7XG5pbXBvcnQgeyBBWEZvcm1hdFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFYVW5zdWJzY3JpYmVyIH0gZnJvbSAnQGFjb3JleC9jb3JlL3V0aWxzJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgZm9yd2FyZFJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbGlua2VkU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY2xhc3NlcyB9IGZyb20gJ3BvbHl0eXBlJztcbmltcG9ydCB7IEFYQ2FsZW5kYXJOYXZpZ2F0aW9uTG9va1R5cGUsIEFYQ2FsZW5kYXJTbG90Q2xpY2ssIE1YQ2FsZW5kYXJCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci5jbGFzcyc7XG5pbXBvcnQgeyBBWENhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1jYWxlbmRhci1yYW5nZScsXG4gIHRlbXBsYXRlVXJsOiAnY2FsZW5kYXItcmFuZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnY2FsZW5kYXItcmFuZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaW5wdXRzOiBbXG4gICAgJ3J0bCcsXG4gICAgJ3JlYWRvbmx5JyxcbiAgICAndmFsdWUnLFxuICAgICduYW1lJyxcbiAgICAnZGlzYWJsZWQnLFxuICAgICdkZXB0aCcsXG4gICAgJ2FjdGl2ZVZpZXcnLFxuICAgICdtaW5WYWx1ZScsXG4gICAgJ21heFZhbHVlJyxcbiAgICAnZGlzYWJsZWREYXRlcycsXG4gICAgJ2hvbGlkYXlEYXRlcycsXG4gICAgJ3R5cGUnLFxuICAgICdkYXlDZWxsVGVtcGxhdGUnLFxuICAgICdtb250aENlbGxUZW1wbGF0ZScsXG4gICAgJ3llYXJDZWxsVGVtcGxhdGUnLFxuICAgICdjZWxsQ2xhc3MnLFxuICAgICdzaG93TmF2aWdhdGlvbicsXG4gIF0sXG4gIG91dHB1dHM6IFtcbiAgICAnb25PcHRpb25DaGFuZ2VkJyxcbiAgICAndmFsdWVDaGFuZ2UnLFxuICAgICdvblZhbHVlQ2hhbmdlZCcsXG4gICAgJ29uQmx1cicsXG4gICAgJ29uRm9jdXMnLFxuICAgICdkZXB0aENoYW5nZScsXG4gICAgJ3R5cGVDaGFuZ2UnLFxuICAgICdhY3RpdmVWaWV3Q2hhbmdlJyxcbiAgICAnZGlzYWJsZWREYXRlc0NoYW5nZScsXG4gICAgJ2hvbGlkYXlEYXRlc0NoYW5nZScsXG4gICAgJ29uTmF2aWdhdGUnLFxuICAgICdvblNsb3RDbGljaycsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQVhDYWxlbmRhclJhbmdlQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhWYWx1YWJsZUNvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWENhbGVuZGFyUmFuZ2VDb21wb25lbnQsXG4gICAgfSxcbiAgICBBWFVuc3Vic2NyaWJlcixcbiAgICB7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhDYWxlbmRhclJhbmdlQ29tcG9uZW50IH0sXG4gIF0sXG4gIGltcG9ydHM6IFtBWENhbGVuZGFyQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQVhDYWxlbmRhclJhbmdlQ29tcG9uZW50XG4gIGV4dGVuZHMgY2xhc3NlcyhNWFZhbHVlQ29tcG9uZW50PEFYUmFuZ2U8RGF0ZT4+LCBNWEludGVyYWN0aXZlQ29tcG9uZW50LCBNWENhbGVuZGFyQmFzZUNvbXBvbmVudClcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0XG57XG4gIHByaXZhdGUgZm9ybWF0U2VydmljZSA9IGluamVjdChBWEZvcm1hdFNlcnZpY2UpO1xuICBwcml2YXRlIHVuc3Vic2NyaWJlciA9IGluamVjdChBWFVuc3Vic2NyaWJlcik7XG5cbiAgcHJvdGVjdGVkIGNhbGVuZGFyID0gbGlua2VkU2lnbmFsKCgpID0+IHRoaXMudHlwZSA/PyB0aGlzLmxvY2FsZVNlcnZpY2UuYWN0aXZlUHJvZmlsZSgpLmNhbGVuZGFyLnN5c3RlbSk7XG5cbiAgLyoqXG4gICAqIERheSB2aWV3IG5hdmlnYXRpb24gc3R5bGUgcGFzc2VkIHRocm91Z2ggdG8gZW1iZWRkZWQgY2FsZW5kYXJzLlxuICAgKi9cbiAgbG9vayA9IGlucHV0PEFYQ2FsZW5kYXJOYXZpZ2F0aW9uTG9va1R5cGU+KCdzZWxlY3QnKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX2NhbGVuZGFyU2VydmljZTogQVhDYWxlbmRhclNlcnZpY2UgPSBpbmplY3QoQVhDYWxlbmRhclNlcnZpY2UpO1xuXG4gIEBWaWV3Q2hpbGQoJ2MxJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHJpdmF0ZSBfYzE6IEFYQ2FsZW5kYXJDb21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZCgnYzInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwcml2YXRlIF9jMjogQVhDYWxlbmRhckNvbXBvbmVudDtcblxuICBfbmF2VGV4dCA9ICcnO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfbmF2VXNlckludGVyYWN0aW9uID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZGVmYXVsdFZhbHVlID0geyBmcm9tOiBudWxsLCBlbmQ6IG51bGwgfTtcblxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNhbGVuZGFyQ2hhbmdlcyQucGlwZSh0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICBpZiAoIXRoaXMudHlwZSkgdGhpcy5jYWxlbmRhci5zZXQodmFsdWUubmFtZSgpKTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fc3luY05hdjEoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGludGVybmFsVmFsdWVDaGFuZ2VkKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLl9jMS5yZW5kZXIoKTtcbiAgICB0aGlzLl9jMi5yZW5kZXIoKTtcbiAgfVxuXG4gIC8qKiB3XG4gICAqICBAaWdub3JlXG4gICAqL1xuICBnZXRDZWxsQ2xhc3MgPSAoZGF0ZTogQVhEYXRlVGltZSkgPT4ge1xuICAgIC8vY29uc3QgZCA9IHRoaXMuX2NhbGVuZGFyU2VydmljZS5jcmVhdGUoZGF0ZSwgdGhpcy50eXBlKTtcblxuICAgIC8vIGNoZWNrIGZyb20gdmFsdWVcbiAgICBpZiAoIXRoaXMuX2NhbGVuZGFyU2VydmljZS5pc1ZhbGlkRGF0ZSh0aGlzLnZhbHVlLmZyb20pKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgZnJvbSA9IHRoaXMuX2NhbGVuZGFyU2VydmljZS5jcmVhdGUodGhpcy52YWx1ZS5mcm9tLCB0aGlzLnR5cGUpO1xuICAgIGlmICh0aGlzLnZhbHVlLmZyb20gJiYgZGF0ZS5lcXVhbChmcm9tLCAnZGF5JykpIHtcbiAgICAgIHJldHVybiAnYXgtcmFuZ2Utc3RhcnQnO1xuICAgIH1cblxuICAgIC8vIGNoZWNrIGVuZCB2YWx1ZVxuICAgIGlmICghdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLmlzVmFsaWREYXRlKHRoaXMudmFsdWUuZW5kKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGVuZCA9IHRoaXMuX2NhbGVuZGFyU2VydmljZS5jcmVhdGUodGhpcy52YWx1ZS5lbmQsIHRoaXMudHlwZSk7XG4gICAgaWYgKHRoaXMudmFsdWUuZW5kICYmIGRhdGUuZXF1YWwoZW5kLCAnZGF5JykpIHJldHVybiAnYXgtcmFuZ2UtZW5kJztcbiAgICBpZiAodGhpcy52YWx1ZS5mcm9tICYmIHRoaXMudmFsdWUuZW5kICYmIGRhdGUuY29tcGFyZShmcm9tLCAnZGF5JykgPiAwICYmIGRhdGUuY29tcGFyZShlbmQsICdkYXknKSA8IDApXG4gICAgICByZXR1cm4gJ2F4LXJhbmdlLWJldHdlZW4nO1xuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVNsb3RDbGljayhlOiBBWENhbGVuZGFyU2xvdENsaWNrKSB7XG4gICAgdGhpcy5vblNsb3RDbGljay5lbWl0KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGl0ZW06IGUuaXRlbSxcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgfSk7XG4gICAgaWYgKHRoaXMuX2MxLmFjdGl2ZVZpZXcgPT0gdGhpcy5kZXB0aCkge1xuICAgICAgaWYgKCF0aGlzLnZhbHVlLmZyb20gfHwgKHRoaXMudmFsdWUuZnJvbSAmJiB0aGlzLnZhbHVlLmVuZCkpIHtcbiAgICAgICAgdGhpcy5jb21taXRWYWx1ZSh7IGZyb206IGUuaXRlbSwgZW5kOiBudWxsIH0sIHRydWUpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudmFsdWUuZnJvbSAmJiBlLml0ZW0gPD0gdGhpcy52YWx1ZS5mcm9tKSB7XG4gICAgICAgIHRoaXMuY29tbWl0VmFsdWUoeyBmcm9tOiBlLml0ZW0sIGVuZDogdGhpcy52YWx1ZS5lbmQgfSwgdHJ1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudmFsdWUuZnJvbSAmJiAhdGhpcy52YWx1ZS5lbmQpIHtcbiAgICAgICAgdGhpcy5jb21taXRWYWx1ZSh7IGZyb206IHRoaXMudmFsdWUuZnJvbSwgZW5kOiBlLml0ZW0gfSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChlLmNvbXBvbmVudCA9PSB0aGlzLl9jMSkge1xuICAgICAgICB0aGlzLl9zeW5jTmF2MSgpO1xuICAgICAgfVxuICAgICAgaWYgKGUuY29tcG9uZW50ID09IHRoaXMuX2MyKSB7XG4gICAgICAgIHRoaXMuX3N5bmNOYXYyKHRoaXMuX2NhbGVuZGFyU2VydmljZS5jcmVhdGUoZS5pdGVtLCB0aGlzLnR5cGUpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fYzEucmVuZGVyKCk7XG4gICAgdGhpcy5fYzIucmVuZGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVQcmV2Q2xpY2soKSB7XG4gICAgdGhpcy5fbmF2VXNlckludGVyYWN0aW9uID0gdHJ1ZTtcbiAgICBjb25zdCB2aWV3ID0gdGhpcy5fYzEuYWN0aXZlVmlldztcbiAgICBjb25zdCBkMSA9IHRoaXMuX2MxLmRpc3BsYXlSYW5nZS5zdGFydFRpbWU7XG4gICAgaWYgKHZpZXcgPT0gJ2RheScgfHwgdmlldyA9PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLl9jMS5wcmV2KCk7XG4gICAgfSBlbHNlIGlmICh2aWV3ID09ICd5ZWFyJykge1xuICAgICAgdGhpcy5fYzEubmF2VG8oZDEuYWRkKCd5ZWFyJywgLTIwKSk7XG4gICAgfVxuICAgIHRoaXMuX25hdlVzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlTmV4dENsaWNrKCkge1xuICAgIHRoaXMuX25hdlVzZXJJbnRlcmFjdGlvbiA9IHRydWU7XG4gICAgY29uc3QgdmlldyA9IHRoaXMuX2MxLmFjdGl2ZVZpZXc7XG4gICAgY29uc3QgZDEgPSB0aGlzLl9jMS5kaXNwbGF5UmFuZ2Uuc3RhcnRUaW1lO1xuICAgIGlmICh2aWV3ID09ICdkYXknIHx8IHZpZXcgPT0gJ21vbnRoJykge1xuICAgICAgdGhpcy5fYzEubmV4dCgpO1xuICAgIH0gZWxzZSBpZiAodmlldyA9PSAneWVhcicpIHtcbiAgICAgIHRoaXMuX2MxLm5hdlRvKGQxLmFkZCgneWVhcicsIDIwKSk7XG4gICAgfVxuICAgIHRoaXMuX25hdlVzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlTmF2Q2xpY2soKSB7XG4gICAgdGhpcy5fYzEudG9nZ2xlVmlldygpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9zeW5jTmF2VGV4dCgpIHtcbiAgICBjb25zdCB2aWV3ID0gdGhpcy5fYzEuYWN0aXZlVmlldztcbiAgICBjb25zdCBkMSA9IHRoaXMuX2MxLmRpc3BsYXlSYW5nZS5zdGFydFRpbWU7XG4gICAgaWYgKHZpZXcgPT0gJ2RheScpIHtcbiAgICAgIGNvbnN0IGQyID0gdGhpcy5fYzIuZGlzcGxheVJhbmdlLmVuZFRpbWU7XG4gICAgICB0aGlzLl9uYXZUZXh0ID0gYCR7dGhpcy5mb3JtYXRTZXJ2aWNlLmZvcm1hdChkMSwgJ2RhdGV0aW1lJywgeyBmb3JtYXQ6ICdNTU0geXl5eScgfSl9IC0gJHt0aGlzLmZvcm1hdFNlcnZpY2UuZm9ybWF0KGQyLCAnZGF0ZXRpbWUnLCB7IGZvcm1hdDogJ01NTSB5eXl5JyB9KX1gO1xuICAgIH0gZWxzZSBpZiAodmlldyA9PSAnbW9udGgnIHx8IHZpZXcgPT0gJ3llYXInKSB7XG4gICAgICBjb25zdCBkMiA9IHRoaXMuX2MyLmRpc3BsYXlSYW5nZS5lbmRUaW1lO1xuICAgICAgdGhpcy5fbmF2VGV4dCA9IGAke3RoaXMuZm9ybWF0U2VydmljZS5mb3JtYXQoZDEsICdkYXRldGltZScsIHsgZm9ybWF0OiAneXl5eScgfSl9IC0gJHt0aGlzLmZvcm1hdFNlcnZpY2UuZm9ybWF0KGQyLCAnZGF0ZXRpbWUnLCB7IGZvcm1hdDogJ3l5eXknIH0pfWA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlTmF2aWdhdGUoKSB7XG4gICAgdGhpcy5fc3luY05hdjEoKTtcblxuICAgIHRoaXMub25OYXZpZ2F0ZS5lbWl0KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0aGlzLl9uYXZVc2VySW50ZXJhY3Rpb24sXG4gICAgICBzdGFydDogdGhpcy5fYzEuZGlzcGxheVJhbmdlLnN0YXJ0VGltZT8uZGF0ZSxcbiAgICAgIGVuZDogdGhpcy5fYzIuZGlzcGxheVJhbmdlLmVuZFRpbWU/LmRhdGUsXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5nZXRIb3N0RWxlbWVudCgpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlQWN0aXZlVmlld0NoYW5nZTEoKSB7XG4gICAgdGhpcy5fYzIuYWN0aXZlVmlldyA9IHRoaXMuX2MxLmFjdGl2ZVZpZXc7XG4gICAgdGhpcy5fc3luY05hdjEoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZUFjdGl2ZVZpZXdDaGFuZ2UyKCkge1xuICAgIGlmICh0aGlzLl9jMi5hY3RpdmVWaWV3ICE9IHRoaXMuX2MxLmFjdGl2ZVZpZXcpIHtcbiAgICAgIHRoaXMuX2MxLmFjdGl2ZVZpZXcgPSB0aGlzLl9jMi5hY3RpdmVWaWV3O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfc3luY05hdjEoKSB7XG4gICAgY29uc3QgdmlldyA9ICh0aGlzLl9jMi5hY3RpdmVWaWV3ID0gdGhpcy5fYzEuYWN0aXZlVmlldyk7XG4gICAgY29uc3QgcmFuZ2UgPSB0aGlzLl9jMS5kaXNwbGF5UmFuZ2U7XG4gICAgaWYgKHZpZXcgPT0gJ2RheScpIHtcbiAgICAgIHRoaXMuX2MyLm5hdlRvKHJhbmdlLnN0YXJ0VGltZS5hZGQoJ21vbnRoJywgMSkpO1xuICAgIH0gZWxzZSBpZiAodmlldyA9PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLl9jMi5uYXZUbyhyYW5nZS5zdGFydFRpbWUuYWRkKCd5ZWFyJywgMSkpO1xuICAgIH0gZWxzZSBpZiAodmlldyA9PSAneWVhcicpIHtcbiAgICAgIHRoaXMuX2MyLm5hdlRvKHJhbmdlLmVuZFRpbWUuYWRkKCd5ZWFyJywgNCkpO1xuICAgIH1cbiAgICB0aGlzLl9zeW5jTmF2VGV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9zeW5jTmF2MihlOiBBWERhdGVUaW1lKSB7XG4gICAgY29uc3QgdmlldyA9IHRoaXMuX2MyLmFjdGl2ZVZpZXc7XG4gICAgaWYgKHZpZXcgPT0gJ21vbnRoJykge1xuICAgICAgdGhpcy5fYzEubmF2VG8oZS5hZGQoJ21vbnRoJywgLTEpKTtcbiAgICB9IGVsc2UgaWYgKHZpZXcgPT0gJ3llYXInKSB7XG4gICAgICB0aGlzLl9jMS5uYXZUbyhlLnN0YXJ0T2YoJ3llYXInKSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItcmFuZ2UtaGVhZGVyXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlci1yYW5nZS1pbmZvXCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIiBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uXCIgKGNsaWNrKT1cImhhbmRsZU5hdkNsaWNrKClcIj5cbiAgICAgIHt7IF9uYXZUZXh0IH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItaGVhZGVyLXJhbmdlLWJ1dHRvbnNcIj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b24gYXgtYnV0dG9uLWljb25cIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZVByZXZDbGljaygpXCJcbiAgICA+XG4gICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jaGV2cm9uLWxlZnRcIj48L2k+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1pY29uXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVOZXh0Q2xpY2soKVwiXG4gICAgPlxuICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tY2hldnJvbi1yaWdodFwiPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1yYW5nZS1ib2R5XCI+XG4gIDxheC1jYWxlbmRhclxuICAgICNjMVxuICAgIFtzaG93TmF2aWdhdGlvbl09XCJmYWxzZVwiXG4gICAgW3JlYWRvbmx5XT1cInRydWVcIlxuICAgIFtjZWxsQ2xhc3NdPVwiZ2V0Q2VsbENsYXNzXCJcbiAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICBbZGF5Q2VsbFRlbXBsYXRlXT1cImRheUNlbGxUZW1wbGF0ZVwiXG4gICAgW21vbnRoQ2VsbFRlbXBsYXRlXT1cIm1vbnRoQ2VsbFRlbXBsYXRlXCJcbiAgICBbeWVhckNlbGxUZW1wbGF0ZV09XCJ5ZWFyQ2VsbFRlbXBsYXRlXCJcbiAgICBbbWluVmFsdWVdPVwibWluVmFsdWVcIlxuICAgIFttYXhWYWx1ZV09XCJtYXhWYWx1ZVwiXG4gICAgW2RlcHRoXT1cImRlcHRoXCJcbiAgICBbbG9va109XCJsb29rKClcIlxuICAgIChvblNsb3RDbGljayk9XCJoYW5kbGVTbG90Q2xpY2soJGV2ZW50KVwiXG4gICAgKG9uTmF2aWdhdGUpPVwiaGFuZGxlTmF2aWdhdGUoKVwiXG4gICAgKGFjdGl2ZVZpZXdDaGFuZ2UpPVwiaGFuZGxlQWN0aXZlVmlld0NoYW5nZTEoKVwiXG4gID5cbiAgPC9heC1jYWxlbmRhcj5cbiAgPGF4LWNhbGVuZGFyXG4gICAgI2MyXG4gICAgW3Nob3dOYXZpZ2F0aW9uXT1cImZhbHNlXCJcbiAgICBbcmVhZG9ubHldPVwidHJ1ZVwiXG4gICAgW2NlbGxDbGFzc109XCJnZXRDZWxsQ2xhc3NcIlxuICAgIFt0eXBlXT1cInR5cGVcIlxuICAgIFtkYXlDZWxsVGVtcGxhdGVdPVwiZGF5Q2VsbFRlbXBsYXRlXCJcbiAgICBbbW9udGhDZWxsVGVtcGxhdGVdPVwibW9udGhDZWxsVGVtcGxhdGVcIlxuICAgIFt5ZWFyQ2VsbFRlbXBsYXRlXT1cInllYXJDZWxsVGVtcGxhdGVcIlxuICAgIFttaW5WYWx1ZV09XCJtaW5WYWx1ZVwiXG4gICAgW21heFZhbHVlXT1cIm1heFZhbHVlXCJcbiAgICBbZGVwdGhdPVwiZGVwdGhcIlxuICAgIFtsb29rXT1cImxvb2soKVwiXG4gICAgKG9uU2xvdENsaWNrKT1cImhhbmRsZVNsb3RDbGljaygkZXZlbnQpXCJcbiAgICAoYWN0aXZlVmlld0NoYW5nZSk9XCJoYW5kbGVBY3RpdmVWaWV3Q2hhbmdlMigpXCJcbiAgPlxuICA8L2F4LWNhbGVuZGFyPlxuPC9kaXY+XG4iXX0=","import { NgModule } from '@angular/core';\nimport { AXCalendarRangeComponent } from './calendar-range.component';\nimport { AXCalendarComponent } from './calendar.component';\nimport * as i0 from \"@angular/core\";\nexport class AXCalendarModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXCalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.3\", ngImport: i0, type: AXCalendarModule, imports: [AXCalendarComponent, AXCalendarRangeComponent], exports: [AXCalendarComponent, AXCalendarRangeComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXCalendarModule, imports: [AXCalendarComponent, AXCalendarRangeComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXCalendarModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [AXCalendarComponent, AXCalendarRangeComponent],\n exports: [AXCalendarComponent, AXCalendarRangeComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jYWxlbmRhci9zcmMvbGliL2NhbGVuZGFyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQU0zRCxNQUFNLE9BQU8sZ0JBQWdCOzhHQUFoQixnQkFBZ0I7K0dBQWhCLGdCQUFnQixZQUhqQixtQkFBbUIsRUFBRSx3QkFBd0IsYUFDN0MsbUJBQW1CLEVBQUUsd0JBQXdCOytHQUU1QyxnQkFBZ0IsWUFIakIsbUJBQW1CLEVBQUUsd0JBQXdCOzsyRkFHNUMsZ0JBQWdCO2tCQUo1QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixFQUFFLHdCQUF3QixDQUFDO29CQUN4RCxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSx3QkFBd0IsQ0FBQztpQkFDekQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhDYWxlbmRhclJhbmdlQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci1yYW5nZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXIuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0FYQ2FsZW5kYXJDb21wb25lbnQsIEFYQ2FsZW5kYXJSYW5nZUNvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtBWENhbGVuZGFyQ29tcG9uZW50LCBBWENhbGVuZGFyUmFuZ2VDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBBWENhbGVuZGFyTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtY2FsZW5kYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NhbGVuZGFyL3NyYy9hY29yZXgtY29tcG9uZW50cy1jYWxlbmRhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-components-calendar.mjs","sources":["../tmp-esm2022/calendar/lib/calendar.class.js","../tmp-esm2022/calendar/lib/calendar.component.js","../tmp-esm2022/calendar/lib/calendar-range.component.js","../tmp-esm2022/calendar/lib/calendar.module.js","../tmp-esm2022/calendar/acorex-components-calendar.js"],"sourcesContent":["import { AXItemClickEvent, AXRangeChangedEvent, MXBaseComponent } from '@acorex/cdk/common';\nimport { AXCalendarService } from '@acorex/core/date-time';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { EventEmitter, Injectable, Input, Output, TemplateRef, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport function getCalendarYearBounds(options) {\n const past = typeof options.yearRange === 'number' ? options.yearRange : options.yearRange.past;\n const future = typeof options.yearRange === 'number' ? options.yearRange : options.yearRange.future;\n return {\n minYear: options.minValue ? options.getYear(options.minValue) : options.referenceYear - past,\n maxYear: options.maxValue ? options.getYear(options.maxValue) : options.referenceYear + future,\n };\n}\n/**\n * Contains native event\n * @category Events\n */\nexport class AXCalendarNavigateEvent extends AXRangeChangedEvent {\n}\n/**\n * Contains native event\n * @category Events\n */\nexport class AXCalendarSlotClick extends AXItemClickEvent {\n}\nexport class MXCalendarBaseComponent extends MXBaseComponent {\n constructor() {\n super(...arguments);\n this.localeService = inject(AXLocaleService);\n this.calendarService = inject(AXCalendarService);\n this.translateService = inject(AXTranslationService);\n this.interface = 'calendar';\n this.showNavigation = true;\n this.count = 1;\n this.onSlotClick = new EventEmitter();\n this.onNavigate = new EventEmitter();\n this.activeViewChange = new EventEmitter();\n this._activeView = 'day';\n this.typeChange = new EventEmitter();\n this.depthChange = new EventEmitter();\n this._depth = 'day';\n this.minValueChange = new EventEmitter();\n this.maxValueChange = new EventEmitter();\n this.disabledDatesChange = new EventEmitter();\n this.holidayDatesChange = new EventEmitter();\n }\n get activeView() {\n return this._activeView;\n }\n set activeView(v) {\n this.setOption({\n name: 'activeView',\n value: v,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n /**\n * @deprecated use calendar input instead\n */\n get type() {\n return this._type;\n }\n set type(v) {\n this.setOption({\n name: 'type',\n value: v,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n get depth() {\n return this._depth;\n }\n set depth(v) {\n this.setOption({\n name: 'depth',\n value: v,\n beforeCallback: (o, n) => {\n this.activeView = v;\n return n;\n },\n afterCallback: () => {\n this.render();\n },\n });\n }\n get minValue() {\n return this._minValue;\n }\n set minValue(v) {\n if (this.calendarService.isValidDate(v)) {\n const value = this.calendarService.create(v).date;\n this.setOption({\n name: 'minValue',\n value,\n afterCallback: () => {\n this.render();\n },\n });\n }\n else {\n this.setOption({\n name: 'minValue',\n value: undefined,\n afterCallback: () => {\n this.render();\n },\n });\n }\n }\n get maxValue() {\n return this._maxValue;\n }\n set maxValue(v) {\n if (this.calendarService.isValidDate(v)) {\n const value = this.calendarService.create(v).date;\n this.setOption({\n name: 'maxValue',\n value,\n afterCallback: () => {\n this.render();\n },\n });\n }\n else {\n this.setOption({\n name: 'maxValue',\n value: undefined,\n afterCallback: () => {\n this.render();\n },\n });\n }\n }\n get disabledDates() {\n return this._disabledDates;\n }\n set disabledDates(v) {\n this.setOption({ name: 'disabledDates', value: v });\n }\n get holidayDates() {\n return this._holidayDates;\n }\n set holidayDates(v) {\n this.setOption({ name: 'holidayDates', value: v });\n }\n render() { }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: MXCalendarBaseComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: MXCalendarBaseComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: MXCalendarBaseComponent, decorators: [{\n type: Injectable\n }], propDecorators: { interface: [{\n type: Input\n }], cellTemplate: [{\n type: Input\n }], dayCellTemplate: [{\n type: Input\n }], monthCellTemplate: [{\n type: Input\n }], yearCellTemplate: [{\n type: Input\n }], cellClass: [{\n type: Input\n }], showNavigation: [{\n type: Input\n }], count: [{\n type: Input\n }], onSlotClick: [{\n type: Output\n }], onNavigate: [{\n type: Output\n }], activeViewChange: [{\n type: Output\n }], activeView: [{\n type: Input\n }], typeChange: [{\n type: Output\n }], type: [{\n type: Input\n }], depthChange: [{\n type: Output\n }], depth: [{\n type: Input\n }], minValueChange: [{\n type: Output\n }], minValue: [{\n type: Input\n }], maxValueChange: [{\n type: Output\n }], maxValue: [{\n type: Input\n }], disabledDatesChange: [{\n type: Output\n }], disabledDates: [{\n type: Input\n }], holidayDatesChange: [{\n type: Output\n }], holidayDates: [{\n type: Input\n }] } });\nexport const CALENDAR_INPUTS = ['depth', 'activeView', 'min', 'max', 'disabledDates', 'type', 'holidayDates'];\nexport const CALENDAR_OUTPUTS = [\n 'depthChange',\n 'typeChange',\n 'disabledDatesChange',\n 'holidayDatesChange',\n 'onNavigate',\n];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxpQkFBaUIsRUFBK0IsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQW9CN0YsTUFBTSxVQUFVLHFCQUFxQixDQUFDLE9BTXJDO0lBQ0MsTUFBTSxJQUFJLEdBQUcsT0FBTyxPQUFPLENBQUMsU0FBUyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7SUFDaEcsTUFBTSxNQUFNLEdBQUcsT0FBTyxPQUFPLENBQUMsU0FBUyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFFcEcsT0FBTztRQUNMLE9BQU8sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJO1FBQzVGLE9BQU8sRUFBRSxPQUFP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Z0JBU0ksSUFBSTtzQkFEZCxLQUFLO2dCQWVOLFdBQVc7c0JBRFYsTUFBTTtnQkFLSSxLQUFLO3NCQURmLEtBQUs7Z0JBbUJOLGNBQWM7c0JBRGIsTUFBTTtnQkFLSSxRQUFRO3NCQURsQixLQUFLO2dCQTBCTixjQUFjO3NCQURiLE1BQU07Z0JBS0ksUUFBUTtzQkFEbEIsS0FBSztnQkEwQk4sbUJBQW1CO3NCQURsQixNQUFNO2dCQUtJLGFBQWE7c0JBRHZCLEtBQUs7Z0JBU04sa0JBQWtCO3NCQURqQixNQUFNO2dCQUtJLFlBQVk7c0JBRHRCLEtBQUs7O0FBV1IsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDOUcsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUc7SUFDOUIsYUFBYTtJQUNiLFlBQVk7SUFDWixxQkFBcUI7SUFDckIsb0JBQW9CO0lBQ3BCLFlBQVk7Q0FDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhJdGVtQ2xpY2tFdmVudCwgQVhSYW5nZUNoYW5nZWRFdmVudCwgTVhCYXNlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYQ2FsZW5kYXJTZXJ2aWNlLCBBWERhdGVUaW1lLCBBWERhdGVUaW1lUmFuZ2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvZGF0ZS10aW1lJztcbmltcG9ydCB7IEFYTG9jYWxlU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9sb2NhbGUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIEFYQ2FsZW5kYXJWaWV3VHlwZSA9ICd5ZWFyJyB8ICdtb250aCcgfCAnZGF5JztcbmV4cG9ydCB0eXBlIEFYQ2FsZW5kYXJWaWV3RGVwdGggPSBBWENhbGVuZGFyVmlld1R5cGU7XG5cbi8qKlxuICogQ29udHJvbHMgaG93IG1vbnRoIGFuZCB5ZWFyIGFyZSBjaG9zZW4gaW4gdGhlIGRheSB2aWV3IGhlYWRlci5cbiAqIC0gYGNsYXNzaWNgOiB0YXAgeWVhci9tb250aCBsYWJlbHMgdG8gb3BlbiBtb250aC95ZWFyIHBpY2tlciBwYW5lbHMuXG4gKiAtIGBzZWxlY3RgOiBtb250aC95ZWFyIGRyb3Bkb3ducyB3aXRoIHByZXYvbmV4dCBhcnJvd3Mgb24gdGhlIGVkZ2VzLlxuICovXG5leHBvcnQgdHlwZSBBWENhbGVuZGFyTmF2aWdhdGlvbkxvb2tUeXBlID0gJ2NsYXNzaWMnIHwgJ3NlbGVjdCc7XG5cbi8qKlxuICogQ29udHJvbHMgaG93IG1hbnkgeWVhcnMgYXBwZWFyIGluIHRoZSB5ZWFyIHNlbGVjdG9yLlxuICogLSBBIG51bWJlciBhcHBsaWVzIHRoZSBzYW1lIHJhbmdlIHRvIHBhc3QgYW5kIGZ1dHVyZSB5ZWFycy5cbiAqIC0gQW4gb2JqZWN0IHNldHMgcGFzdCBhbmQgZnV0dXJlIHJhbmdlcyBzZXBhcmF0ZWx5LlxuICogYG1pblZhbHVlYCBhbmQgYG1heFZhbHVlYCB0YWtlIHByaW9yaXR5IHdoZW4gc2V0LlxuICovXG5leHBvcnQgdHlwZSBBWENhbGVuZGFyWWVhclJhbmdlID0gbnVtYmVyIHwgeyBwYXN0OiBudW1iZXI7IGZ1dHVyZTogbnVtYmVyIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDYWxlbmRhclllYXJCb3VuZHMob3B0aW9uczoge1xuICByZWZlcmVuY2VZZWFyOiBudW1iZXI7XG4gIHllYXJSYW5nZTogQVhDYWxlbmRhclllYXJSYW5nZTtcbiAgbWluVmFsdWU/OiBEYXRlO1xuICBtYXhWYWx1ZT86IERhdGU7XG4gIGdldFllYXI6IChkYXRlOiBEYXRlKSA9PiBudW1iZXI7XG59KTogeyBtaW5ZZWFyOiBudW1iZXI7IG1heFllYXI6IG51bWJlciB9IHtcbiAgY29uc3QgcGFzdCA9IHR5cGVvZiBvcHRpb25zLnllYXJSYW5nZSA9PT0gJ251bWJlcicgPyBvcHRpb25zLnllYXJSYW5nZSA6IG9wdGlvbnMueWVhclJhbmdlLnBhc3Q7XG4gIGNvbnN0IGZ1dHVyZSA9IHR5cGVvZiBvcHRpb25zLnllYXJSYW5nZSA9PT0gJ251bWJlcicgPyBvcHRpb25zLnllYXJSYW5nZSA6IG9wdGlvbnMueWVhclJhbmdlLmZ1dHVyZTtcblxuICByZXR1cm4ge1xuICAgIG1pblllYXI6IG9wdGlvbnMubWluVmFsdWUgPyBvcHRpb25zLmdldFllYXIob3B0aW9ucy5taW5WYWx1ZSkgOiBvcHRpb25zLnJlZmVyZW5jZVllYXIgLSBwYXN0LFxuICAgIG1heFllYXI6IG9wdGlvbnMubWF4VmFsdWUgPyBvcHRpb25zLmdldFllYXIob3B0aW9ucy5tYXhWYWx1ZSkgOiBvcHRpb25zLnJlZmVyZW5jZVllYXIgKyBmdXR1cmUsXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIEFYQ2FsZW5kYXJEaXNhYmxlZERhdGVzID0gRGF0ZVtdIHwgKChkYXRlOiBEYXRlKSA9PiBib29sZWFuKTtcbmV4cG9ydCB0eXBlIEFYQ2FsZW5kYXJIb2xpZGF5RGF0ZXMgPSBEYXRlW10gfCAoKGRhdGU6IERhdGUpID0+IGJvb2xlYW4pO1xuZXhwb3J0IHR5cGUgQVhDYWxlbmRhckNlbGxDc3NDbGFzcyA9IHN0cmluZyB8IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9IHwgKChkYXRlOiBEYXRlKSA9PiBzdHJpbmcpO1xuXG5leHBvcnQgdHlwZSBBWERhdGVUaW1lUGlja2VyVHlwZSA9ICdkYXRlJyB8ICd0aW1lJyB8ICdkYXRldGltZSc7XG5cbi8qKlxuICogIENvbnRhaW5zIG5hdGl2ZSBldmVudFxuICogQGNhdGVnb3J5IEV2ZW50c1xuICovXG5leHBvcnQgY2xhc3MgQVhDYWxlbmRhck5hdmlnYXRlRXZlbnQgZXh0ZW5kcyBBWFJhbmdlQ2hhbmdlZEV2ZW50PERhdGU+IHt9XG5cbi8qKlxuICogIENvbnRhaW5zIG5hdGl2ZSBldmVudFxuICogQGNhdGVnb3J5IEV2ZW50c1xuICovXG5leHBvcnQgY2xhc3MgQVhDYWxlbmRhclNsb3RDbGljayBleHRlbmRzIEFYSXRlbUNsaWNrRXZlbnQ8RGF0ZT4ge31cblxuZXhwb3J0IGludGVyZmFjZSBBWENhbGVuZGFyVmlld1Nsb3Qge1xuICBkYXRlOiBBWERhdGVUaW1lO1xuICB0ZXh0OiBzdHJpbmc7XG4gIHRvb2x0aXA6IHN0cmluZztcbiAgdG9kYXk6IGJvb2xlYW47XG4gIHNlbGVjdGVkOiBib29sZWFuO1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgY3NzQ2xhc3M6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9O1xufVxuZXhwb3J0IGludGVyZmFjZSBBWENhbGVuZGFyVmlldyB7XG4gIHJhbmdlOiBBWERhdGVUaW1lUmFuZ2U7XG4gIHNsb3RzOiBBWENhbGVuZGFyVmlld1Nsb3RbXTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1YQ2FsZW5kYXJCYXNlQ29tcG9uZW50IGV4dGVuZHMgTVhCYXNlQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIGxvY2FsZVNlcnZpY2UgPSBpbmplY3QoQVhMb2NhbGVTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIGNhbGVuZGFyU2VydmljZSA9IGluamVjdChBWENhbGVuZGFyU2VydmljZSk7XG4gIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcblxuICBASW5wdXQoKVxuICBpbnRlcmZhY2U6ICdjYWxlbmRhcicgfCAncGlja2VyJyA9ICdjYWxlbmRhcic7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIHVzZSBkYXlDZWxsVGVtcGxhdGUsIG1vbnRoQ2VsbFRlbXBsYXRlLCB5ZWFyQ2VsbFRlbXBsYXRlIGluc3RlYWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIGNlbGxUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpXG4gIGRheUNlbGxUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuICBASW5wdXQoKVxuICBtb250aENlbGxUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuICBASW5wdXQoKVxuICB5ZWFyQ2VsbFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQElucHV0KClcbiAgY2VsbENsYXNzPzogQVhDYWxlbmRhckNlbGxDc3NDbGFzcztcblxuICBASW5wdXQoKVxuICBzaG93TmF2aWdhdGlvbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgY291bnQgPSAxO1xuXG4gIEBPdXRwdXQoKVxuICBvblNsb3RDbGljazogRXZlbnRFbWl0dGVyPEFYQ2FsZW5kYXJTbG90Q2xpY2s+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWENhbGVuZGFyU2xvdENsaWNrPigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbk5hdmlnYXRlOiBFdmVudEVtaXR0ZXI8QVhDYWxlbmRhck5hdmlnYXRlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWENhbGVuZGFyTmF2aWdhdGVFdmVudD4oKTtcblxuICBAT3V0cHV0KClcbiAgYWN0aXZlVmlld0NoYW5nZTogRXZlbnRFbWl0dGVyPEFYQ2FsZW5kYXJWaWV3VHlwZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYQ2FsZW5kYXJWaWV3VHlwZT4oKTtcblxuICBwcml2YXRlIF9hY3RpdmVWaWV3OiBBWENhbGVuZGFyVmlld1R5cGUgPSAnZGF5JztcbiAgQElucHV0KClcbiAgcHVibGljIGdldCBhY3RpdmVWaWV3KCk6IEFYQ2FsZW5kYXJWaWV3VHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVZpZXc7XG4gIH1cbiAgcHVibGljIHNldCBhY3RpdmVWaWV3KHY6IEFYQ2FsZW5kYXJWaWV3VHlwZSkge1xuICAgIHRoaXMuc2V0T3B0aW9uKHtcbiAgICAgIG5hbWU6ICdhY3RpdmVWaWV3JyxcbiAgICAgIHZhbHVlOiB2LFxuICAgICAgYWZ0ZXJDYWxsYmFjazogKCkgPT4ge1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgcHVibGljIHR5cGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgcHJpdmF0ZSBfdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgY2FsZW5kYXIgaW5wdXQgaW5zdGVhZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCB0eXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XG4gIH1cbiAgcHVibGljIHNldCB0eXBlKHY6IHN0cmluZykge1xuICAgIHRoaXMuc2V0T3B0aW9uKHtcbiAgICAgIG5hbWU6ICd0eXBlJyxcbiAgICAgIHZhbHVlOiB2LFxuICAgICAgYWZ0ZXJDYWxsYmFjazogKCkgPT4ge1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgZGVwdGhDaGFuZ2U6IEV2ZW50RW1pdHRlcjxBWENhbGVuZGFyVmlld0RlcHRoPiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhDYWxlbmRhclZpZXdEZXB0aD4oKTtcblxuICBwcml2YXRlIF9kZXB0aDogQVhDYWxlbmRhclZpZXdEZXB0aCA9ICdkYXknO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGRlcHRoKCk6IEFYQ2FsZW5kYXJWaWV3RGVwdGgge1xuICAgIHJldHVybiB0aGlzLl9kZXB0aDtcbiAgfVxuICBwdWJsaWMgc2V0IGRlcHRoKHY6IEFYQ2FsZW5kYXJWaWV3RGVwdGgpIHtcbiAgICB0aGlzLnNldE9wdGlvbih7XG4gICAgICBuYW1lOiAnZGVwdGgnLFxuICAgICAgdmFsdWU6IHYsXG4gICAgICBiZWZvcmVDYWxsYmFjazogKG8sIG4pID0+IHtcbiAgICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gdjtcbiAgICAgICAgcmV0dXJuIG47XG4gICAgICB9LFxuICAgICAgYWZ0ZXJDYWxsYmFjazogKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBtaW5WYWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gIHByaXZhdGUgX21pblZhbHVlOiBEYXRlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IG1pblZhbHVlKCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLl9taW5WYWx1ZTtcbiAgfVxuICBwdWJsaWMgc2V0IG1pblZhbHVlKHY6IERhdGUpIHtcbiAgICBpZiAodGhpcy5jYWxlbmRhclNlcnZpY2UuaXNWYWxpZERhdGUodikpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKHYpLmRhdGU7XG4gICAgICB0aGlzLnNldE9wdGlvbih7XG4gICAgICAgIG5hbWU6ICdtaW5WYWx1ZScsXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBhZnRlckNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldE9wdGlvbih7XG4gICAgICAgIG5hbWU6ICdtaW5WYWx1ZScsXG4gICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgIGFmdGVyQ2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgQE91dHB1dCgpXG4gIG1heFZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG5cbiAgcHJpdmF0ZSBfbWF4VmFsdWU6IERhdGU7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgbWF4VmFsdWUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX21heFZhbHVlO1xuICB9XG4gIHB1YmxpYyBzZXQgbWF4VmFsdWUodjogRGF0ZSkge1xuICAgIGlmICh0aGlzLmNhbGVuZGFyU2VydmljZS5pc1ZhbGlkRGF0ZSh2KSkge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5jcmVhdGUodikuZGF0ZTtcbiAgICAgIHRoaXMuc2V0T3B0aW9uKHtcbiAgICAgICAgbmFtZTogJ21heFZhbHVlJyxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIGFmdGVyQ2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0T3B0aW9uKHtcbiAgICAgICAgbmFtZTogJ21heFZhbHVlJyxcbiAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgYWZ0ZXJDYWxsYmFjazogKCkgPT4ge1xuICAgICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBAT3V0cHV0KClcbiAgZGlzYWJsZWREYXRlc0NoYW5nZTogRXZlbnRFbWl0dGVyPEFYQ2FsZW5kYXJEaXNhYmxlZERhdGVzPiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhDYWxlbmRhckRpc2FibGVkRGF0ZXM+KCk7XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWREYXRlczogQVhDYWxlbmRhckRpc2FibGVkRGF0ZXM7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWREYXRlcygpOiBBWENhbGVuZGFyRGlzYWJsZWREYXRlcyB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkRGF0ZXM7XG4gIH1cbiAgcHVibGljIHNldCBkaXNhYmxlZERhdGVzKHY6IEFYQ2FsZW5kYXJEaXNhYmxlZERhdGVzKSB7XG4gICAgdGhpcy5zZXRPcHRpb24oeyBuYW1lOiAnZGlzYWJsZWREYXRlcycsIHZhbHVlOiB2IH0pO1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIGhvbGlkYXlEYXRlc0NoYW5nZTogRXZlbnRFbWl0dGVyPEFYQ2FsZW5kYXJIb2xpZGF5RGF0ZXM+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWENhbGVuZGFySG9saWRheURhdGVzPigpO1xuXG4gIHByaXZhdGUgX2hvbGlkYXlEYXRlczogQVhDYWxlbmRhckhvbGlkYXlEYXRlcztcbiAgQElucHV0KClcbiAgcHVibGljIGdldCBob2xpZGF5RGF0ZXMoKTogQVhDYWxlbmRhckhvbGlkYXlEYXRlcyB7XG4gICAgcmV0dXJuIHRoaXMuX2hvbGlkYXlEYXRlcztcbiAgfVxuICBwdWJsaWMgc2V0IGhvbGlkYXlEYXRlcyh2OiBBWENhbGVuZGFySG9saWRheURhdGVzKSB7XG4gICAgdGhpcy5zZXRPcHRpb24oeyBuYW1lOiAnaG9saWRheURhdGVzJywgdmFsdWU6IHYgfSk7XG4gIH1cblxuICByZW5kZXIoKTogdm9pZCB7fVxufVxuXG5leHBvcnQgY29uc3QgQ0FMRU5EQVJfSU5QVVRTID0gWydkZXB0aCcsICdhY3RpdmVWaWV3JywgJ21pbicsICdtYXgnLCAnZGlzYWJsZWREYXRlcycsICd0eXBlJywgJ2hvbGlkYXlEYXRlcyddO1xuZXhwb3J0IGNvbnN0IENBTEVOREFSX09VVFBVVFMgPSBbXG4gICdkZXB0aENoYW5nZScsXG4gICd0eXBlQ2hhbmdlJyxcbiAgJ2Rpc2FibGVkRGF0ZXNDaGFuZ2UnLFxuICAnaG9saWRheURhdGVzQ2hhbmdlJyxcbiAgJ29uTmF2aWdhdGUnLFxuXTtcbiJdfQ==","import { AXComponent, AXRippleDirective, AXValuableComponent, MXInteractiveComponent, MXValueComponent, } from '@acorex/cdk/common';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXDateTimeRange } from '@acorex/core/date-time';\nimport { ChangeDetectionStrategy, Component, computed, forwardRef, HostBinding, HostListener, inject, input, linkedSignal, signal, ViewEncapsulation, } from '@angular/core';\nimport { AXFormatModule, AXFormatService } from '@acorex/core/format';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AsyncPipe, isPlatformBrowser, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport { getCalendarYearBounds, MXCalendarBaseComponent, } from './calendar.class';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@acorex/core/format\";\n/**\n * A calendar component that provides a customizable calendar view with various options for selection, navigation, and styling.\n *\n * @category Components\n */\nexport class AXCalendarComponent extends classes((MXValueComponent), MXInteractiveComponent, MXCalendarBaseComponent) {\n get displayRange() {\n return this.views.length > 0\n ? new AXDateTimeRange(this.views[0]?.range.startTime, this.views[this.views.length - 1]?.range.endTime)\n : null;\n }\n /**\n * @ignore\n */\n get _currentMonth() {\n return this._viewStartDate?.monthOfYear;\n }\n /**\n * @ignore\n */\n get _currentYear() {\n return this._viewStartDate?.year;\n }\n /**\n * @ignore\n */\n _initValues() {\n this._today = this.calendarService.create(new Date(), this.calendar());\n }\n /**\n * Maps a date to a 1-based grid column using the active week layout.\n */\n _getWeekColumn(date) {\n const columnIndex = this.weekLayout().indexOf(date.weekdayIndex);\n return columnIndex >= 0 ? columnIndex + 1 : date.dayOfWeek;\n }\n /**\n * Defers refresh so parent `type` input can sync after locale profile changes.\n */\n _scheduleRefresh() {\n queueMicrotask(() => this._refresh());\n }\n /**\n * @ignore\n */\n _refresh() {\n this._initValues();\n this.navTo(this.value || this._today);\n }\n /**\n * @ignore\n */\n constructor() {\n const unsubscriber = inject(AXUnsubscriber);\n super();\n this.formatService = inject(AXFormatService);\n this.weekend = input([], ...(ngDevMode ? [{ debugName: \"weekend\" }] : []));\n this.weekdays = input([], ...(ngDevMode ? [{ debugName: \"weekdays\" }] : []));\n /**\n * Day view navigation style.\n * - `classic`: tap year/month labels to open month/year picker panels.\n * - `select`: month/year dropdowns with prev/next arrows on the edges.\n */\n this.look = input('select', ...(ngDevMode ? [{ debugName: \"look\" }] : []));\n /**\n * Years shown in the year selector when `look` is `select`.\n * Use a number for equal past/future ranges, or `{ past, future }` for asymmetric ranges.\n * `minValue` and `maxValue` take priority when set.\n */\n this.yearRange = input(80, ...(ngDevMode ? [{ debugName: \"yearRange\" }] : []));\n this.isRtl = this.localeService.isRtl;\n this.calendar = linkedSignal(() => this.type ?? this.localeService.activeProfile().calendar.system, ...(ngDevMode ? [{ debugName: \"calendar\" }] : []));\n /** Week column order from the active locale profile (0 = Sun … 6 = Sat). */\n this.weekLayout = computed(() => {\n const custom = this.weekdays();\n if (custom.length) {\n return custom;\n }\n const startsOn = this.localeService.activeProfile().calendar.week.startsOn;\n return Array.from({ length: 7 }, (_, i) => (startsOn + i) % 7);\n }, ...(ngDevMode ? [{ debugName: \"weekLayout\" }] : []));\n /**\n * @ignore\n */\n this._today = this.calendarService.create(new Date(), this.calendar());\n /**\n * @ignore\n */\n this._navUserInteraction = false;\n /**\n * @ignore\n */\n this._footPrint = {\n year: null,\n month: null,\n day: null,\n };\n /**\n * @ignore\n */\n this.views = [];\n /**\n * @ignore\n */\n this._monthOptions = [];\n /**\n * @ignore\n */\n this._yearOptions = [];\n /**\n * @ignore\n */\n this.oldValue = signal(null, ...(ngDevMode ? [{ debugName: \"oldValue\" }] : []));\n this.calendarService.onHolidaysChanged.pipe(unsubscriber.takeUntilDestroy).subscribe(() => {\n this.render();\n });\n this.calendarService.calendarChanges$.pipe(unsubscriber.takeUntilDestroy).subscribe((value) => {\n if (!this.type)\n this.calendar.set(value.name());\n this._scheduleRefresh();\n });\n this.localeService.profileChanged$.pipe(unsubscriber.takeUntilDestroy).subscribe((profile) => {\n this.calendar.set(profile.calendar.system);\n this._scheduleRefresh();\n });\n this.typeChange.pipe(unsubscriber.takeUntilDestroy).subscribe((value) => {\n this.calendar.set(value);\n });\n this.minValueChange.subscribe((e) => {\n if (this._viewStartDate.isBefore(e)) {\n this._viewStartDate = this.calendarService.create(e, this.calendar());\n this.render();\n }\n });\n }\n /**\n * @ignore\n */\n ngOnInit() {\n super.ngOnInit();\n this._initValues();\n }\n /**\n * @ignore\n */\n ngAfterViewInit() {\n if (!this.value) {\n if (this.minValue && this._viewStartDate.isBefore(this.minValue)) {\n this._viewStartDate = this.calendarService.create(this.minValue, this.calendar());\n this.render();\n }\n else {\n this.goToday();\n }\n }\n }\n /**\n * @ignore\n */\n render() {\n if (!this._viewStartDate)\n return;\n const applyCellClass = (slot, cellClass = this.cellClass) => {\n switch (typeof cellClass) {\n case 'string':\n cellClass.split(' ').forEach((c) => (slot.cssClass[c] = true));\n break;\n case 'object':\n Object.assign(slot.cssClass, cellClass);\n break;\n case 'function':\n applyCellClass(slot, cellClass(slot.date));\n break;\n }\n };\n this.views = [];\n for (let i = 0; i < this.count; i++) {\n switch (this.activeView) {\n case 'day':\n this.dayView(i, applyCellClass);\n break;\n case 'month':\n this.monthView(i, applyCellClass);\n break;\n case 'year':\n this.yearView(i, applyCellClass);\n break;\n }\n }\n this._updateSelectOptions();\n this.cdr.markForCheck();\n }\n /**\n * @ignore\n */\n _updateSelectOptions() {\n if (!this._viewStartDate)\n return;\n this._monthOptions = Array.from({ length: 12 }, (_, i) => {\n const date = this._viewStartDate.set('month', i + 1);\n return {\n id: i + 1,\n text: `@acorex:${this.getMonthName(date, 'short')}`,\n };\n });\n const referenceYear = this._today.year;\n const { minYear, maxYear } = getCalendarYearBounds({\n referenceYear,\n yearRange: this.yearRange(),\n minValue: this.minValue,\n maxValue: this.maxValue,\n getYear: (date) => this.calendarService.create(date, this.calendar()).year,\n });\n this._yearOptions = [];\n for (let year = minYear; year <= maxYear; year++) {\n this._yearOptions.push({ id: year, text: String(year) });\n }\n }\n /**\n * @ignore\n */\n _handleMonthSelectChanged(e) {\n if (!e.isUserInteraction || !this._viewStartDate)\n return;\n const month = this._getSelectBoxValue(e);\n if (month == null)\n return;\n this._navUserInteraction = true;\n this.navTo(this._viewStartDate.set('month', month));\n this._navUserInteraction = false;\n }\n /**\n * @ignore\n */\n _handleYearSelectChanged(e) {\n if (!e.isUserInteraction || !this._viewStartDate)\n return;\n const year = this._getSelectBoxValue(e);\n if (year == null)\n return;\n this._navUserInteraction = true;\n this.navTo(this._viewStartDate.set('year', year));\n this._navUserInteraction = false;\n }\n /**\n * @ignore\n */\n _getSelectBoxValue(e) {\n const val = e.value;\n if (Array.isArray(val))\n return val[0]?.id ?? null;\n if (val && typeof val === 'object')\n return val.id ?? null;\n return val != null ? Number(val) : null;\n }\n /**\n * @ignore\n */\n _setDisplayRange(current) {\n switch (this.activeView) {\n case 'year': {\n const y = current.startOf('year').year;\n const min = y - (y % 10);\n const max = min + 9;\n return new AXDateTimeRange(this.calendarService.create({\n year: min,\n month: 1,\n day: 1,\n }, this.calendar()), this.calendarService.create({\n year: max,\n month: 12,\n day: 28,\n }, this.calendar()));\n }\n case 'month':\n return new AXDateTimeRange(current.startOf('year'), current.endOf('year').add('day', -1));\n default:\n return new AXDateTimeRange(current.startOf('month'), current.endOf('month'));\n }\n }\n /**\n * @ignore\n */\n dayView(i, applyCellClass) {\n const current = this._viewStartDate.add('month', i);\n const view = {\n range: this._setDisplayRange(current),\n slots: [],\n };\n this.views.push(view);\n const a = view.range.enumerate('day');\n view.slots = a.map((d, i) => {\n let selected = false;\n if (this.depth === 'day') {\n selected = this.value && d.equal(this.value, 'day');\n }\n else if (this.depth === 'month') {\n selected = this.value && d.equal(this.value, 'month');\n }\n else if (this.depth === 'year') {\n selected = this.value && d.equal(this.value, 'year');\n }\n const r = {};\n r.date = d;\n r.text = d.dayOfMonth;\n r.today = d.equal(this._today, 'day');\n r.selected = selected;\n r.holiday = this.isHoliday(d) || this.isWeekend(d);\n r.disabled =\n (this.minValue && d.compare(this.minValue, 'day') == -1) ||\n (this.maxValue && d.compare(this.maxValue, 'day') == 1) ||\n this.isDisabled(d);\n //\n // const focused = d.dayOfMonth == this._footPrint.day && d.monthOfYear == this._footPrint.month && d.year == this._footPrint.year;\n //\n if (r.disabled) {\n r.cssClass = {\n 'ax-state-disabled': true,\n };\n }\n else {\n r.cssClass = {\n 'ax-state-today': r.today,\n 'ax-state-selected': r.selected,\n 'ax-state-holiday': r.holiday,\n // 'ax-state-focused': focused,\n };\n }\n // ax-col-start-1 ax-col-start-2 ax-col-start-3 ax-col-start-4 ax-col-start-5 ax-col-start-6 ax-col-start-7\n r.cssClass[`ax-column-start-${this._getWeekColumn(view.range.startTime)}`] = i == 0;\n if (this.cellClass)\n applyCellClass(r);\n return r;\n });\n }\n /**\n * @ignore\n */\n monthView(i, applyCellClass) {\n const current = this._viewStartDate.add('year', i);\n const view = {\n range: this._setDisplayRange(current),\n slots: [],\n };\n this.views.push(view);\n const a = view.range.enumerate('month');\n view.slots = a.map((d) => {\n const r = {};\n r.date = d;\n r.text = this.formatService.format(d, 'date', 'MMM');\n r.today = d.equal(this._today, 'month');\n //\n r.disabled =\n (this.minValue && d.compare(this.minValue, 'month') == -1) ||\n (this.maxValue && d.compare(this.maxValue, 'month') == 1);\n //\n r.selected = this.value && this.depth == 'month' && d.equal(this.value, 'month');\n //\n const focused = d.monthOfYear == this._footPrint.month && d.year == this._footPrint.year;\n //\n if (r.disabled) {\n r.cssClass = {\n 'ax-state-disabled': r.disabled,\n };\n }\n else {\n r.cssClass = {\n 'ax-state-today': r.today,\n 'ax-state-selected': r.selected,\n 'ax-state-focused': focused,\n };\n }\n applyCellClass(r);\n return r;\n });\n }\n /**\n * @ignore\n */\n yearView(i, applyCellClass) {\n const current = this._viewStartDate.add('year', i * 10);\n const view = {\n range: this._setDisplayRange(current),\n slots: [],\n };\n this.views.push(view);\n const a = view.range.enumerate('year');\n view.slots = a.map((d) => {\n const r = {};\n r.date = d;\n r.text = this.formatService.format(d, 'date', 'YYYY');\n r.today = d.equal(this._today, 'year');\n r.selected = this.value && this.depth == 'year' && d.equal(this.value, 'year');\n //\n const focused = d.year == this._footPrint.year;\n //\n r.disabled =\n (this.minValue && d.compare(this.minValue, 'year') == -1) ||\n (this.maxValue && d.compare(this.maxValue, 'year') == 1);\n //\n if (r.disabled) {\n r.cssClass = {\n 'ax-state-disabled': r.disabled,\n };\n }\n else {\n r.cssClass = {\n 'ax-state-today': r.today,\n 'ax-state-selected': r.selected,\n 'ax-state-focused': focused,\n };\n }\n applyCellClass(r);\n return r;\n });\n }\n /**\n * @ignore\n */\n _handlePrevClick() {\n this._navUserInteraction = true;\n this.prev();\n this._navUserInteraction = false;\n }\n /**\n * @ignore\n */\n _handleNextClick() {\n this._navUserInteraction = true;\n this.next();\n this._navUserInteraction = false;\n }\n /**\n * @ignore\n */\n _handleSlotClick(e, slot) {\n if (slot.disabled || this.disabled)\n return;\n //\n this.onSlotClick.emit({\n component: this,\n item: slot.date.date,\n isUserInteraction: true,\n nativeEvent: e,\n });\n //\n if (this.activeView == 'day') {\n this._setDate(slot.date.date);\n }\n else if (this.activeView == 'month' && this.depth == 'day') {\n this.activeView = 'day';\n this._footPrint.month = this.calendarService.create(slot.date.date, this.calendar()).monthOfYear;\n this.navTo(slot.date);\n }\n else if (this.activeView == 'month' && this.depth == 'month') {\n this._setDate(slot.date.date);\n }\n else if (this.activeView == 'year' && (this.depth == 'day' || this.depth == 'month')) {\n this.activeView = 'month';\n this._footPrint.year = this.calendarService.create(slot.date.date, this.calendar()).year;\n this.navTo(slot.date);\n }\n else if (this.activeView == 'year' && this.depth == 'year') {\n this._setDate(slot.date.date);\n }\n }\n /**\n * @ignore\n */\n _handleNavClick(e, view) {\n this._navUserInteraction = true;\n this.activeView = view;\n this._navUserInteraction = false;\n }\n /**\n * Toggles between different calendar views (day → month → year).\n */\n toggleView() {\n if (this.activeView == 'day')\n this.activeView = 'month';\n else if (this.activeView == 'month')\n this.activeView = 'year';\n }\n /**\n * @ignore\n */\n internalOptionChanged(e) {\n if (e.name == 'depth' || e.name == 'activeView' || e.name == 'disabledDates' || e.name == 'holidayDates') {\n this.render();\n }\n if (e.name == 'type') {\n this._refresh();\n }\n }\n /**\n * @ignore\n */\n internalSetValue(value) {\n if (!value || !this.calendarService.isValidDate(value)) {\n return null;\n }\n const v = this.calendarService.convert(value, this.calendar());\n if (this.isDisabled(v)) {\n return null;\n }\n if (this.maxValue && this.calendarService.isValidDate(this.maxValue) && v.isAfter(this.maxValue)) {\n return this.maxValue;\n }\n if (this.minValue && this.calendarService.isValidDate(this.minValue) && v.isBefore(this.minValue)) {\n return this.minValue;\n }\n return v.date;\n }\n /**\n * @ignore\n */\n internalValueChanged(value) {\n const val = this.calendarService.create(value, this.calendar());\n if (!this._viewStartDate ||\n val.compare(this.displayRange?.startTime, this.activeView) == -1 ||\n val.compare(this.displayRange?.endTime, this.activeView) == 1) {\n this._viewStartDate = this.calendarService.create(value, this.calendar());\n if (this.minValue && this._viewStartDate.isBefore(this.minValue)) {\n this._viewStartDate = this.calendarService.create(this.minValue, this.calendar());\n }\n }\n this._footPrint.year = val.year;\n this._footPrint.month = val.monthOfYear;\n this._footPrint.day = val.dayOfMonth;\n if (isPlatformBrowser(this.platformID)) {\n const calendarSlots = Array.from(this.getHostElement().querySelectorAll('.ax-calendar-slot'));\n const selectedSlot = this.getHostElement().querySelector('.ax-state-selected');\n if (selectedSlot) {\n selectedSlot.classList.remove('ax-state-selected');\n }\n else {\n this.render();\n }\n calendarSlots.forEach((element) => {\n element = element;\n if (element.textContent == this._footPrint.day) {\n element.classList.add('ax-state-selected');\n }\n });\n }\n const oldVal = this.oldValue() ? this.calendarService.create(this.oldValue(), this.calendar()) : null;\n if (!oldVal || oldVal.monthOfYear !== val.monthOfYear || oldVal.year !== val.year) {\n this.render();\n }\n this.oldValue.set(value);\n }\n /**\n * @ignore\n */\n _handleGoToday() {\n this._navUserInteraction = true;\n this._setDate(this._today.date);\n this.goToday();\n this._navUserInteraction = false;\n }\n /**\n * Navigates forward in the calendar based on the current active view and the configured count.\n *\n * Behavior by view:\n * - day view: advances by count months\n * - month view: advances by count years\n * - year view: advances by 10 × count years\n *\n * @returns void\n */\n next() {\n this._navNextPrev(false);\n }\n /**\n * Navigates backward in the calendar based on the current active view and the configured count.\n *\n * Behavior by view:\n * - day view: goes back by count months\n * - month view: goes back by count years\n * - year view: goes back by 10 × count years\n *\n * @returns void\n */\n prev() {\n this._navNextPrev(true);\n }\n /**\n * Sets focus to the currently selected calendar slot or the first available slot.\n *\n * @returns void\n */\n focus() {\n const func = (s) => this.getHostElement().querySelector(s);\n const div = func('.ax-calendar-slots>div.ax-state-selected') || func('.ax-calendar-slots>div');\n div?.focus();\n }\n /**\n * @ignore\n */\n _navNextPrev(prev) {\n const sign = prev ? -1 : 1;\n if (this.activeView == 'day')\n this.navTo(this._viewStartDate.add('month', sign * 1 * this.count));\n else if (this.activeView == 'month')\n this.navTo(this._viewStartDate.add('year', sign * 1 * this.count));\n else\n this.navTo(this._viewStartDate.add('year', sign * 10 * this.count));\n }\n /**\n * Navigates to the current date and emits the navigation event.\n *\n * @returns void\n */\n goToday() {\n this.navTo(this._today);\n }\n /**\n * Navigates to a specified date and updates the view.\n *\n * @param date The date to navigate to, which can be a Date object or an AXDateTime instance.\n * @returns void\n */\n navTo(date) {\n const val = this.calendarService.convert(date, this.calendar());\n this._viewStartDate = val.startOf();\n this.render();\n //to make sure its rendred and displayRange is not null\n if (this.views.length > 0) {\n const vr = this.displayRange;\n this.onNavigate.emit({\n component: this,\n isUserInteraction: this._navUserInteraction,\n start: vr.startTime?.date,\n end: vr.endTime?.date,\n htmlElement: this.getHostElement(),\n });\n }\n }\n /**\n * @ignore\n */\n get __hostClass() {\n const _classes = {\n 'ax-state-disabled': this.disabled,\n 'ax-state-readonly': this.readonly,\n [`ax-look-${this.look()}`]: true,\n };\n return Object.entries(_classes)\n .filter((c) => c[1])\n .map((c) => c[0])\n .join(' ');\n }\n /**\n * @ignore\n */\n _setDate(value) {\n if (this.readonly || this.disabled)\n return;\n this.commitValue(this.calendarService.convert(value, this.calendar()).startOf().date, true);\n }\n /**\n * @ignore\n */\n isDisabled(date) {\n if (Array.isArray(this.disabledDates) && this.disabledDates.length != 0) {\n return this.disabledDates.some((d) => date.equal(d, 'day'));\n }\n else if (typeof this.disabledDates == 'function') {\n return this.disabledDates(date.date);\n }\n return false;\n }\n /**\n * @ignore\n */\n isHoliday(date) {\n const gh = this.calendarService.holidays.some((d) => date.equal(d.date, 'day'));\n let dh = this.calendarService.holidays.some((d) => date.equal(d.date, 'day'));\n if (Array.isArray(this.holidayDates) && this.holidayDates.length != 0) {\n dh = this.holidayDates.some((d) => date.equal(d, 'day'));\n }\n else if (typeof this.holidayDates == 'function') {\n dh = this.holidayDates(date.date);\n }\n return gh || dh;\n }\n /**\n * @ignore\n */\n isWeekend(date) {\n if (this.weekend().length) {\n return this.weekend().includes(date.weekdayIndex);\n }\n const weekend = this.calendarService.resolveCalendar(this.calendar()).weekend;\n return weekend.includes(date.weekdayIndex);\n }\n /**\n * @ignore\n */\n _handleOnKeydownEvent(e) {\n //TODO: complete keyboad navigation\n const ignore = () => {\n e.preventDefault();\n e.stopPropagation();\n };\n if (e.code === 'ArrowRight' || e.code === 'ArrowLeft') {\n if (e.ctrlKey) {\n e.code === 'ArrowRight' ? this.next() : this.prev();\n setTimeout(() => {\n this.focus();\n }, 50);\n }\n ignore();\n }\n else if (e.code === 'ArrowUp' || e.code === 'ArrowDown') {\n if (e.ctrlKey) {\n e.code === 'ArrowUp' ? this.next() : this.prev();\n setTimeout(() => {\n this.focus();\n }, 50);\n }\n ignore();\n }\n }\n /**\n * @ignore\n */\n getMonthName(date, style) {\n return `dateTime.months.${date.calendar.name()}.${style}.${date.monthOfYear - 1}`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXCalendarComponent, isStandalone: true, selector: \"ax-calendar\", inputs: { rtl: { classPropertyName: \"rtl\", publicName: \"rtl\", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: \"readonly\", publicName: \"readonly\", isSignal: false, isRequired: false, transformFunction: null }, value: { classPropertyName: \"value\", publicName: \"value\", isSignal: false, isRequired: false, transformFunction: null }, name: { classPropertyName: \"name\", publicName: \"name\", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: false, isRequired: false, transformFunction: null }, depth: { classPropertyName: \"depth\", publicName: \"depth\", isSignal: false, isRequired: false, transformFunction: null }, activeView: { classPropertyName: \"activeView\", publicName: \"activeView\", isSignal: false, isRequired: false, transformFunction: null }, minValue: { classPropertyName: \"minValue\", publicName: \"minValue\", isSignal: false, isRequired: false, transformFunction: null }, maxValue: { classPropertyName: \"maxValue\", publicName: \"maxValue\", isSignal: false, isRequired: false, transformFunction: null }, disabledDates: { classPropertyName: \"disabledDates\", publicName: \"disabledDates\", isSignal: false, isRequired: false, transformFunction: null }, holidayDates: { classPropertyName: \"holidayDates\", publicName: \"holidayDates\", isSignal: false, isRequired: false, transformFunction: null }, type: { classPropertyName: \"type\", publicName: \"type\", isSignal: false, isRequired: false, transformFunction: null }, dayCellTemplate: { classPropertyName: \"dayCellTemplate\", publicName: \"dayCellTemplate\", isSignal: false, isRequired: false, transformFunction: null }, monthCellTemplate: { classPropertyName: \"monthCellTemplate\", publicName: \"monthCellTemplate\", isSignal: false, isRequired: false, transformFunction: null }, yearCellTemplate: { classPropertyName: \"yearCellTemplate\", publicName: \"yearCellTemplate\", isSignal: false, isRequired: false, transformFunction: null }, cellClass: { classPropertyName: \"cellClass\", publicName: \"cellClass\", isSignal: false, isRequired: false, transformFunction: null }, showNavigation: { classPropertyName: \"showNavigation\", publicName: \"showNavigation\", isSignal: false, isRequired: false, transformFunction: null }, count: { classPropertyName: \"count\", publicName: \"count\", isSignal: false, isRequired: false, transformFunction: null }, id: { classPropertyName: \"id\", publicName: \"id\", isSignal: false, isRequired: false, transformFunction: null }, weekend: { classPropertyName: \"weekend\", publicName: \"weekend\", isSignal: true, isRequired: false, transformFunction: null }, weekdays: { classPropertyName: \"weekdays\", publicName: \"weekdays\", isSignal: true, isRequired: false, transformFunction: null }, look: { classPropertyName: \"look\", publicName: \"look\", isSignal: true, isRequired: false, transformFunction: null }, yearRange: { classPropertyName: \"yearRange\", publicName: \"yearRange\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onOptionChanged: \"onOptionChanged\", valueChange: \"valueChange\", onValueChanged: \"onValueChanged\", minValueChange: \"minValueChange\", maxValueChange: \"maxValueChange\", onBlur: \"onBlur\", onFocus: \"onFocus\", depthChange: \"depthChange\", typeChange: \"typeChange\", activeViewChange: \"activeViewChange\", disabledDatesChange: \"disabledDatesChange\", holidayDatesChange: \"holidayDatesChange\", onNavigate: \"onNavigate\", onSlotClick: \"onSlotClick\", countChange: \"countChange\" }, host: { listeners: { \"keydown\": \"_handleOnKeydownEvent($event)\" }, properties: { \"class\": \"this.__hostClass\" } }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXCalendarComponent),\n multi: true,\n },\n {\n provide: AXValuableComponent,\n useExisting: AXCalendarComponent,\n },\n AXUnsubscriber,\n { provide: AXComponent, useExisting: AXCalendarComponent },\n ], usesInheritance: true, ngImport: i0, template: \"<ng-content select=\\\"ax-header\\\"></ng-content>\\n<div class=\\\"ax-calendar-body\\\">\\n @for (v of views; let i = $index, first = $first, last = $last; track i) {\\n @switch (activeView) {\\n @case ('year') {\\n @if (showNavigation) {\\n <div class=\\\"ax-calendar-view-header\\\">\\n <div class=\\\"ax-calendar-header-info\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-state-disabled\\\"\\n (click)=\\\"_handleNavClick($event, 'year')\\\"\\n >\\n {{ v.range.startTime | format: 'date' : { calendar: calendar(), format: 'YYYY' } | async }} -\\n {{ v.range.endTime | format: 'date' : { calendar: calendar(), format: 'YYYY' } | async }}\\n </button>\\n </div>\\n @if (last) {\\n <div class=\\\"ax-calendar-header-buttons\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon ax-next\\\"\\n (click)=\\\"_handlePrevClick()\\\"\\n [title]=\\\"'@acorex:common.actions.prev' | translate | async\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-left\\\"></i>\\n </button>\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon\\\"\\n (click)=\\\"_handleNextClick()\\\"\\n [title]=\\\"'@acorex:common.actions.next' | translate | async\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-right\\\"></i>\\n </button>\\n </div>\\n }\\n </div>\\n }\\n <div class=\\\"ax-calendar-slots ax-calendar-slots-year\\\" [ngClass]=\\\"{ 'ax-default': !yearCellTemplate }\\\">\\n @for (slot of v.slots; track slot.text) {\\n <button\\n tabindex=\\\"0\\\"\\n class=\\\"ax-calendar-slot\\\"\\n [class.ax-state-disabled]=\\\"disabled\\\"\\n [ngClass]=\\\"slot.cssClass\\\"\\n (click)=\\\"_handleSlotClick($event, slot)\\\"\\n >\\n @if (yearCellTemplate) {\\n <div>\\n <ng-container\\n [ngTemplateOutlet]=\\\"yearCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { slot: slot } }\\\"\\n >\\n </ng-container>\\n </div>\\n } @else {\\n <div>\\n {{ slot.text }}\\n </div>\\n }\\n </button>\\n }\\n </div>\\n }\\n @case ('month') {\\n @if (showNavigation) {\\n <div class=\\\"ax-calendar-view-header\\\">\\n <div class=\\\"ax-calendar-header-info\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded\\\"\\n (click)=\\\"_handleNavClick($event, 'year')\\\"\\n >\\n {{ v.range.startTime | format: 'date' : { calendar: calendar(), format: 'YYYY' } | async }}\\n </button>\\n </div>\\n @if (last) {\\n <div class=\\\"ax-calendar-header-buttons\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon\\\"\\n (click)=\\\"_handlePrevClick()\\\"\\n [title]=\\\"'@acorex:common.actions.prev' | translate | async\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-left\\\"></i>\\n </button>\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon\\\"\\n (click)=\\\"_handleNextClick()\\\"\\n [title]=\\\"'@acorex:common.actions.next' | translate | async\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-right\\\"></i>\\n </button>\\n </div>\\n }\\n </div>\\n }\\n\\n <div class=\\\"ax-calendar-slots ax-calendar-slots-month\\\" [ngClass]=\\\"{ 'ax-default': !monthCellTemplate }\\\">\\n @for (slot of v.slots; track slot) {\\n <button\\n tabindex=\\\"0\\\"\\n class=\\\"ax-calendar-slot\\\"\\n [class.ax-state-disabled]=\\\"disabled\\\"\\n [ngClass]=\\\"slot.cssClass\\\"\\n (click)=\\\"_handleSlotClick($event, slot)\\\"\\n >\\n @if (monthCellTemplate) {\\n <div>\\n <ng-container\\n [ngTemplateOutlet]=\\\"monthCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { slot: slot } }\\\"\\n >\\n </ng-container>\\n </div>\\n } @else {\\n <div [title]=\\\"slot.date | format: 'date' : { calendar: calendar(), format: 'MMMM YYYY' } | async\\\">\\n {{ `@acorex:${getMonthName(slot.date, 'short')}` | translate | async }}\\n </div>\\n }\\n </button>\\n }\\n </div>\\n }\\n @default {\\n @if (showNavigation && look() === 'select' && last) {\\n <div class=\\\"ax-calendar-view-header ax-calendar-day-nav\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon ax-calendar-day-nav-prev\\\"\\n (click)=\\\"_handlePrevClick()\\\"\\n [title]=\\\"'@acorex:common.actions.prev' | translate | async\\\"\\n >\\n <i\\n class=\\\"ax-icon\\\"\\n [ngClass]=\\\"{\\n 'ax-icon-chevron-left': !isRtl(),\\n 'ax-icon-chevron-right': isRtl(),\\n }\\\"\\n ></i>\\n </button>\\n <div class=\\\"ax-calendar-day-nav-center\\\">\\n <ax-select-box\\n class=\\\"ax-calendar-month-select ax-sm\\\"\\n look=\\\"none\\\"\\n [disabled]=\\\"disabled\\\"\\n [readonly]=\\\"readonly\\\"\\n [dataSource]=\\\"_monthOptions\\\"\\n textField=\\\"text\\\"\\n valueField=\\\"id\\\"\\n [ngModel]=\\\"_currentMonth\\\"\\n [maxVisibleItems]=\\\"12\\\"\\n [itemHeight]=\\\"32\\\"\\n (onValueChanged)=\\\"_handleMonthSelectChanged($event)\\\"\\n (click)=\\\"$event.stopPropagation()\\\"\\n ></ax-select-box>\\n <ax-select-box\\n class=\\\"ax-calendar-year-select ax-sm\\\"\\n look=\\\"none\\\"\\n [disabled]=\\\"disabled\\\"\\n [readonly]=\\\"readonly\\\"\\n [dataSource]=\\\"_yearOptions\\\"\\n textField=\\\"text\\\"\\n valueField=\\\"id\\\"\\n [ngModel]=\\\"_currentYear\\\"\\n [maxVisibleItems]=\\\"10\\\"\\n [itemHeight]=\\\"32\\\"\\n (onValueChanged)=\\\"_handleYearSelectChanged($event)\\\"\\n (click)=\\\"$event.stopPropagation()\\\"\\n ></ax-select-box>\\n </div>\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon ax-calendar-day-nav-next\\\"\\n (click)=\\\"_handleNextClick()\\\"\\n [title]=\\\"'@acorex:common.actions.next' | translate | async\\\"\\n >\\n <i\\n class=\\\"ax-icon\\\"\\n [ngClass]=\\\"{\\n 'ax-icon-chevron-right': !isRtl(),\\n 'ax-icon-chevron-left': isRtl(),\\n }\\\"\\n ></i>\\n </button>\\n </div>\\n }\\n @if (showNavigation && look() === 'classic') {\\n <div class=\\\"ax-calendar-view-header\\\">\\n <div class=\\\"ax-calendar-header-info\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded\\\"\\n (click)=\\\"_handleNavClick($event, 'year')\\\"\\n >\\n {{ v.range.startTime | format: 'date' : { calendar: calendar(), format: 'YYYY' } | async }}\\n </button>\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded\\\"\\n (click)=\\\"_handleNavClick($event, 'month')\\\"\\n >\\n {{ v.range.startTime | format: 'date' : { calendar: calendar(), format: 'MMMM' } | async }}\\n </button>\\n </div>\\n @if (last) {\\n <div class=\\\"ax-calendar-header-buttons\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon\\\"\\n (click)=\\\"_handlePrevClick()\\\"\\n [title]=\\\"'@acorex:common.actions.prev' | translate | async\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-left\\\"></i>\\n </button>\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon\\\"\\n (click)=\\\"_handleNextClick()\\\"\\n [title]=\\\"'@acorex:common.actions.next' | translate | async\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-right\\\"></i>\\n </button>\\n </div>\\n }\\n </div>\\n }\\n <div class=\\\"ax-calendar-week\\\">\\n @for (d of weekLayout(); track d) {\\n <div>{{ '@acorex:dateTime.weekdays.short.' + d | translate | async }}</div>\\n }\\n </div>\\n\\n <div class=\\\"ax-calendar-slots ax-calendar-slots-day\\\" [ngClass]=\\\"{ 'ax-default': !dayCellTemplate }\\\">\\n @for (slot of v.slots; track slot) {\\n <button\\n tabindex=\\\"0\\\"\\n class=\\\"ax-calendar-slot\\\"\\n [ngClass]=\\\"slot.cssClass\\\"\\n [class.ax-state-disabled]=\\\"disabled\\\"\\n (click)=\\\"_handleSlotClick($event, slot)\\\"\\n [disabled]=\\\"disabled\\\"\\n [axRipple]\\n >\\n @if (dayCellTemplate) {\\n <div>\\n <ng-container\\n [ngTemplateOutlet]=\\\"dayCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { slot: slot } }\\\"\\n >\\n </ng-container>\\n </div>\\n } @else {\\n <div [title]=\\\"slot.date | format: 'date' : { calendar: calendar(), format: 'long' } | async\\\">\\n {{ slot.text }}\\n </div>\\n }\\n </button>\\n }\\n </div>\\n }\\n }\\n }\\n</div>\\n<ng-content select=\\\"ax-footer\\\"></ng-content>\\n\", styles: [\"ax-calendar{--ax-comp-calendar-view-header-padding: .5rem;--ax-comp-calendar-slot-today-border-width: 1px;--ax-comp-calendar-slot-focused-border-width: 1px;--ax-comp-calendar-slot-focused-outline-width: 2px;--ax-comp-calendar-slot-disabled-opacity: .5;--ax-comp-calendar-slot-readonly-opacity: .75;--ax-comp-calendar-footer-margin-t: 1.25rem;--ax-comp-calendar-footer-today-button-padding-x: 1rem;--ax-comp-calendar-footer-today-button-height: var(--ax-sys-size-base)}ax-calendar{--ax-comp-calendar-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-calendar-view-header-border-color: var(--ax-sys-color-border-lightest-surface);--ax-comp-calendar-slot-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-calendar-slot-ripple-color: var(--ax-sys-color-primary-light-surface), .3;--ax-comp-calendar-slot-today-text-color: var(--ax-sys-color-primary-surface);--ax-comp-calendar-slot-today-border-color: var(--ax-sys-color-primary-surface);--ax-comp-calendar-slot-hover-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-calendar-slot-hover-text-color: var(--ax-sys-color-on-primary-surface);--ax-comp-calendar-slot-focused-border-color: var(--ax-sys-color-border-lightest-surface);--ax-comp-calendar-slot-focused-outline-color: var(--ax-sys-color-primary-surface);--ax-comp-calendar-slot-selected-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-calendar-slot-selected-text-color: var(--ax-sys-color-on-primary-surface);--ax-comp-calendar-slot-holiday-text-color: var(--ax-sys-color-danger-surface);--ax-comp-calendar-slot-holiday-ripple-color: var(--ax-sys-color-danger-light-surface), .3;--ax-comp-calendar-slot-holiday-today-border-color: var(--ax-sys-color-danger-surface);--ax-comp-calendar-slot-holiday-hover-bg-color: var(--ax-sys-color-danger-surface);--ax-comp-calendar-slot-holiday-hover-border-color: var(--ax-sys-color-danger-surface);--ax-comp-calendar-slot-holiday-selected-bg-color: var(--ax-sys-color-danger-surface);--ax-comp-calendar-slot-holiday-selected-text-color: var(--ax-sys-color-on-danger-surface);--ax-comp-calendar-footer-today-button-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-calendar-footer-today-button-text-color: var(--ax-sys-color-on-primary-surface);--ax-comp-calendar-footer-today-button-hover-bg-color: var(--ax-sys-color-primary-dark-surface);--ax-comp-calendar-footer-today-button-focused-outline-color: var(--ax-sys-color-primary-surface), 1}.ax-dark ax-calendar{--ax-comp-calendar-text-color: var(--ax-sys-color-on-darkest-surface);--ax-comp-calendar-view-header-border-color: var(--ax-sys-color-border-darkest-surface);--ax-comp-calendar-slot-text-color: var(--ax-sys-color-on-darkest-surface);--ax-comp-calendar-slot-focused-border-color: var(--ax-sys-color-border-darkest-surface)}html[dir=rtl] ax-calendar .ax-calendar-header-buttons .ax-icon{-moz-transform:scale(-1,1);-o-transform:scale(-1,1);-webkit-transform:scale(-1,1);transform:scaleX(-1)}ax-calendar{width:100%;display:block;color:rgba(var(--ax-comp-calendar-text-color));background-color:rgba(var(--ax-comp-calendar-bg-color))}ax-calendar.ax-state-disabled .ax-calendar-slots{cursor:not-allowed;opacity:.5}ax-calendar.ax-state-readonly .ax-calendar-slots{cursor:text}ax-calendar .ax-calendar-header{display:flex;justify-content:space-between;padding-left:var(--ax-comp-calendar-header-padding-x, .25rem);padding-right:var(--ax-comp-calendar-header-padding-x, .25rem);padding-top:var(--ax-comp-calendar-header-padding-t, .25rem)}ax-calendar .ax-calendar-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body{display:flex;flex-direction:column;justify-content:center;align-items:center}@media (min-width: 1024px){ax-calendar .ax-calendar-body{flex-direction:column}}ax-calendar .ax-calendar-body>div{width:100%;flex:1 1 0%}@media (min-width: 768px){ax-calendar .ax-calendar-body>div{width:20rem}}ax-calendar .ax-calendar-body .ax-calendar-view-header{display:flex;justify-content:space-between;border-bottom-width:var(--ax-comp-calendar-view-header-border-width, 1px);border-color:rgba(var(--ax-comp-calendar-view-header-border-color));padding:var(--ax-comp-calendar-view-header-padding)}ax-calendar .ax-calendar-body .ax-calendar-view-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-body .ax-calendar-view-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body .ax-calendar-slots{display:grid;gap:.25rem;padding:1rem}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot{position:relative;display:flex;cursor:pointer;align-items:center;justify-content:center;text-align:center;font-size:var(--ax-comp-calendar-font-size, .875rem);color:rgba(var(--ax-comp-calendar-slot-text-color));line-height:var(--ax-comp-calendar-line-height, 1.25rem);border-radius:var(--ax-comp-calendar-slot-border-radius, var(--ax-sys-border-radius));transition-duration:var(--ax-sys-transition-duration);transition-timing-function:var(--ax-sys-transition-timing-function);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:before{content:\\\"\\\";float:left;padding-top:100%}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:after{content:\\\"\\\";clear:both;display:block}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-disabled,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-selected){background-color:rgba(var(--ax-comp-calendar-slot-hover-bg-color));color:rgba(var(--ax-comp-calendar-slot-hover-text-color))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled){outline-width:var(--ax-comp-calendar-slot-focused-outline-width);outline-color:rgba(var(--ax-comp-calendar-slot-focused-outline-color))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled{outline-style:dashed;outline-width:var(--ax-comp-calendar-slot-focused-outline-width)}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-disabled{cursor:not-allowed;opacity:var(--ax-comp-calendar-slot-disabled-opacity)}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-readonly{cursor:text;opacity:var(--ax-comp-calendar-slot-readonly-opacity)}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-1{grid-column-start:1}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-2{grid-column-start:2}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-3{grid-column-start:3}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-4{grid-column-start:4}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-5{grid-column-start:5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-6{grid-column-start:6}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-7{grid-column-start:7}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-other{opacity:.05}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot .ax-ripple{background-color:rgba(var(--ax-comp-calendar-slot-ripple-color))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{color:rgba(var(--ax-comp-calendar-slot-today-text-color));border-width:var(--ax-comp-calendar-slot-today-border-width);border-color:rgba(var(--ax-comp-calendar-slot-today-border-color))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today.ax-state-holiday{border-color:rgba(var(--ax-comp-calendar-slot-holiday-today-border-color))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-focused{border-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected{color:rgba(var(--ax-comp-calendar-slot-selected-text-color));background-color:rgba(var(--ax-comp-calendar-slot-selected-bg-color))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday{color:rgba(var(--ax-comp-calendar-slot-holiday-selected-text-color))!important;background-color:rgba(var(--ax-comp-calendar-slot-holiday-selected-bg-color))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday{color:rgba(var(--ax-comp-calendar-slot-holiday-text-color))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:is(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-comp-calendar-slot-holiday-hover-bg-color))!important;border-color:rgba(var(--ax-comp-calendar-slot-holiday-hover-border-color))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday .ax-ripple{background-color:rgba(var(--ax-comp-calendar-slot-holiday-ripple-color))!important}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-day{grid-template-columns:repeat(7,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-year,ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-month{grid-template-columns:repeat(4,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));padding-top:var(--ax-comp-calendar-week-padding-t, .75rem);padding-left:var(--ax-comp-calendar-week-padding-x, .5rem);padding-right:var(--ax-comp-calendar-week-padding-x, .5rem)}ax-calendar .ax-calendar-body .ax-calendar-week>div{display:flex;cursor:pointer;position:relative;text-align:center;align-items:center;justify-content:center;font-size:var(--ax-comp-calendar-font-size, .875rem);line-height:var(--ax-comp-calendar-line-height, 1.25rem)}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.25rem}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav .ax-icon{font-size:.875rem}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav .ax-calendar-day-nav-prev{justify-self:start}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav .ax-calendar-day-nav-center{display:flex;align-items:center;justify-content:center;gap:.25rem}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav .ax-calendar-day-nav-next{justify-self:end}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-month-select,ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-year-select{display:inline-block;width:auto;flex:0 0 auto}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-month-select .ax-icon,ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-year-select .ax-icon{font-size:.75rem}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-month-select .ax-editor-container,ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-year-select .ax-editor-container{gap:0}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-month-select ax-dropdown-box.ax-editor-container,ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-year-select ax-dropdown-box.ax-editor-container{width:auto;justify-content:flex-start}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-month-select .ax-chips-container,ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-year-select .ax-chips-container{flex:0 0 auto;width:auto}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-month-select .ax-chips-container .ax-chips,ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-year-select .ax-chips-container .ax-chips{overflow:visible;text-overflow:unset}ax-calendar .ax-calendar-footer{display:flex;align-items:center;justify-content:center;margin-top:var(--ax-comp-calendar-footer-margin-t)}ax-calendar .ax-calendar-footer .ax-today-button{width:100%;display:block;cursor:pointer;text-align:center;padding-left:var(--ax-comp-calendar-footer-today-button-padding-x);padding-right:var(--ax-comp-calendar-footer-today-button-padding-x);font-size:var(--ax-comp-calendar-font-size, .875rem);line-height:var(--ax-comp-calendar-line-height, 1.25rem);height:var(--ax-comp-calendar-footer-today-button-height);border-radius:var(--ax-comp-calendar-footer-today-button-border-radius, var(--ax-sys-border-radius));color:rgba(var(--ax-comp-calendar-footer-today-button-text-color));background-color:rgba(var(--ax-comp-calendar-footer-today-button-bg-color))}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-disabled{cursor:not-allowed;opacity:var(--ax-comp-calendar-slot-disabled-opacity)}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-readonly{cursor:text;opacity:var(--ax-comp-calendar-slot-readonly-opacity)}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-comp-calendar-footer-today-button-hover-bg-color))}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:focus,ax-calendar .ax-calendar-footer .ax-today-button:focus-visible):not(.ax-state-disabled){outline-color:rgba(var(--ax-comp-calendar-footer-today-button-focused-outline-color))}.ax-calendar-picker{display:flex;width:100%}.ax-calendar-picker ax-picker{flex:1 1 0%}.ax-overlay-pane ax-calendar{border-style:none}\\n\"], dependencies: [{ kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: AXRippleDirective, selector: \"[axRipple]\", inputs: [\"axRipple\", \"axRippleColor\"] }, { kind: \"ngmodule\", type: AXFormatModule }, { kind: \"component\", type: AXSelectBoxComponent, selector: \"ax-select-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"minValue\", \"maxValue\", \"value\", \"state\", \"name\", \"id\", \"type\", \"look\", \"multiple\", \"valueField\", \"textField\", \"disabledField\", \"textTemplate\", \"selectedItems\", \"isItemTruncated\", \"showItemTooltip\", \"itemHeight\", \"maxVisibleItems\", \"dataSource\", \"minRecordsForSearch\", \"caption\", \"itemTemplate\", \"selectedTemplate\", \"emptyTemplate\", \"loadingTemplate\", \"dropdownWidth\", \"searchBoxAutoFocus\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onOpened\", \"onClosed\", \"onItemSelected\", \"onItemClick\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }, { kind: \"pipe\", type: i2.AXFormatPipe, name: \"format\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXCalendarComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-calendar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: [\n 'rtl',\n 'readonly',\n 'value',\n 'name',\n 'disabled',\n 'depth',\n 'activeView',\n 'minValue',\n 'maxValue',\n 'disabledDates',\n 'holidayDates',\n 'type',\n 'dayCellTemplate',\n 'monthCellTemplate',\n 'yearCellTemplate',\n 'cellClass',\n 'showNavigation',\n 'count',\n 'name',\n 'id',\n ], outputs: [\n 'onOptionChanged',\n 'valueChange',\n 'onValueChanged',\n 'minValueChange',\n 'maxValueChange',\n 'onBlur',\n 'onFocus',\n 'depthChange',\n 'typeChange',\n 'activeViewChange',\n 'disabledDatesChange',\n 'holidayDatesChange',\n 'onNavigate',\n 'onSlotClick',\n 'countChange',\n ], providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXCalendarComponent),\n multi: true,\n },\n {\n provide: AXValuableComponent,\n useExisting: AXCalendarComponent,\n },\n AXUnsubscriber,\n { provide: AXComponent, useExisting: AXCalendarComponent },\n ], imports: [\n NgClass,\n NgTemplateOutlet,\n AXRippleDirective,\n AsyncPipe,\n AXTranslatorPipe,\n AXFormatModule,\n AXSelectBoxComponent,\n FormsModule,\n ], template: \"<ng-content select=\\\"ax-header\\\"></ng-content>\\n<div class=\\\"ax-calendar-body\\\">\\n @for (v of views; let i = $index, first = $first, last = $last; track i) {\\n @switch (activeView) {\\n @case ('year') {\\n @if (showNavigation) {\\n <div class=\\\"ax-calendar-view-header\\\">\\n <div class=\\\"ax-calendar-header-info\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-state-disabled\\\"\\n (click)=\\\"_handleNavClick($event, 'year')\\\"\\n >\\n {{ v.range.startTime | format: 'date' : { calendar: calendar(), format: 'YYYY' } | async }} -\\n {{ v.range.endTime | format: 'date' : { calendar: calendar(), format: 'YYYY' } | async }}\\n </button>\\n </div>\\n @if (last) {\\n <div class=\\\"ax-calendar-header-buttons\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon ax-next\\\"\\n (click)=\\\"_handlePrevClick()\\\"\\n [title]=\\\"'@acorex:common.actions.prev' | translate | async\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-left\\\"></i>\\n </button>\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon\\\"\\n (click)=\\\"_handleNextClick()\\\"\\n [title]=\\\"'@acorex:common.actions.next' | translate | async\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-right\\\"></i>\\n </button>\\n </div>\\n }\\n </div>\\n }\\n <div class=\\\"ax-calendar-slots ax-calendar-slots-year\\\" [ngClass]=\\\"{ 'ax-default': !yearCellTemplate }\\\">\\n @for (slot of v.slots; track slot.text) {\\n <button\\n tabindex=\\\"0\\\"\\n class=\\\"ax-calendar-slot\\\"\\n [class.ax-state-disabled]=\\\"disabled\\\"\\n [ngClass]=\\\"slot.cssClass\\\"\\n (click)=\\\"_handleSlotClick($event, slot)\\\"\\n >\\n @if (yearCellTemplate) {\\n <div>\\n <ng-container\\n [ngTemplateOutlet]=\\\"yearCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { slot: slot } }\\\"\\n >\\n </ng-container>\\n </div>\\n } @else {\\n <div>\\n {{ slot.text }}\\n </div>\\n }\\n </button>\\n }\\n </div>\\n }\\n @case ('month') {\\n @if (showNavigation) {\\n <div class=\\\"ax-calendar-view-header\\\">\\n <div class=\\\"ax-calendar-header-info\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded\\\"\\n (click)=\\\"_handleNavClick($event, 'year')\\\"\\n >\\n {{ v.range.startTime | format: 'date' : { calendar: calendar(), format: 'YYYY' } | async }}\\n </button>\\n </div>\\n @if (last) {\\n <div class=\\\"ax-calendar-header-buttons\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon\\\"\\n (click)=\\\"_handlePrevClick()\\\"\\n [title]=\\\"'@acorex:common.actions.prev' | translate | async\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-left\\\"></i>\\n </button>\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon\\\"\\n (click)=\\\"_handleNextClick()\\\"\\n [title]=\\\"'@acorex:common.actions.next' | translate | async\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-right\\\"></i>\\n </button>\\n </div>\\n }\\n </div>\\n }\\n\\n <div class=\\\"ax-calendar-slots ax-calendar-slots-month\\\" [ngClass]=\\\"{ 'ax-default': !monthCellTemplate }\\\">\\n @for (slot of v.slots; track slot) {\\n <button\\n tabindex=\\\"0\\\"\\n class=\\\"ax-calendar-slot\\\"\\n [class.ax-state-disabled]=\\\"disabled\\\"\\n [ngClass]=\\\"slot.cssClass\\\"\\n (click)=\\\"_handleSlotClick($event, slot)\\\"\\n >\\n @if (monthCellTemplate) {\\n <div>\\n <ng-container\\n [ngTemplateOutlet]=\\\"monthCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { slot: slot } }\\\"\\n >\\n </ng-container>\\n </div>\\n } @else {\\n <div [title]=\\\"slot.date | format: 'date' : { calendar: calendar(), format: 'MMMM YYYY' } | async\\\">\\n {{ `@acorex:${getMonthName(slot.date, 'short')}` | translate | async }}\\n </div>\\n }\\n </button>\\n }\\n </div>\\n }\\n @default {\\n @if (showNavigation && look() === 'select' && last) {\\n <div class=\\\"ax-calendar-view-header ax-calendar-day-nav\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon ax-calendar-day-nav-prev\\\"\\n (click)=\\\"_handlePrevClick()\\\"\\n [title]=\\\"'@acorex:common.actions.prev' | translate | async\\\"\\n >\\n <i\\n class=\\\"ax-icon\\\"\\n [ngClass]=\\\"{\\n 'ax-icon-chevron-left': !isRtl(),\\n 'ax-icon-chevron-right': isRtl(),\\n }\\\"\\n ></i>\\n </button>\\n <div class=\\\"ax-calendar-day-nav-center\\\">\\n <ax-select-box\\n class=\\\"ax-calendar-month-select ax-sm\\\"\\n look=\\\"none\\\"\\n [disabled]=\\\"disabled\\\"\\n [readonly]=\\\"readonly\\\"\\n [dataSource]=\\\"_monthOptions\\\"\\n textField=\\\"text\\\"\\n valueField=\\\"id\\\"\\n [ngModel]=\\\"_currentMonth\\\"\\n [maxVisibleItems]=\\\"12\\\"\\n [itemHeight]=\\\"32\\\"\\n (onValueChanged)=\\\"_handleMonthSelectChanged($event)\\\"\\n (click)=\\\"$event.stopPropagation()\\\"\\n ></ax-select-box>\\n <ax-select-box\\n class=\\\"ax-calendar-year-select ax-sm\\\"\\n look=\\\"none\\\"\\n [disabled]=\\\"disabled\\\"\\n [readonly]=\\\"readonly\\\"\\n [dataSource]=\\\"_yearOptions\\\"\\n textField=\\\"text\\\"\\n valueField=\\\"id\\\"\\n [ngModel]=\\\"_currentYear\\\"\\n [maxVisibleItems]=\\\"10\\\"\\n [itemHeight]=\\\"32\\\"\\n (onValueChanged)=\\\"_handleYearSelectChanged($event)\\\"\\n (click)=\\\"$event.stopPropagation()\\\"\\n ></ax-select-box>\\n </div>\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon ax-calendar-day-nav-next\\\"\\n (click)=\\\"_handleNextClick()\\\"\\n [title]=\\\"'@acorex:common.actions.next' | translate | async\\\"\\n >\\n <i\\n class=\\\"ax-icon\\\"\\n [ngClass]=\\\"{\\n 'ax-icon-chevron-right': !isRtl(),\\n 'ax-icon-chevron-left': isRtl(),\\n }\\\"\\n ></i>\\n </button>\\n </div>\\n }\\n @if (showNavigation && look() === 'classic') {\\n <div class=\\\"ax-calendar-view-header\\\">\\n <div class=\\\"ax-calendar-header-info\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded\\\"\\n (click)=\\\"_handleNavClick($event, 'year')\\\"\\n >\\n {{ v.range.startTime | format: 'date' : { calendar: calendar(), format: 'YYYY' } | async }}\\n </button>\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded\\\"\\n (click)=\\\"_handleNavClick($event, 'month')\\\"\\n >\\n {{ v.range.startTime | format: 'date' : { calendar: calendar(), format: 'MMMM' } | async }}\\n </button>\\n </div>\\n @if (last) {\\n <div class=\\\"ax-calendar-header-buttons\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon\\\"\\n (click)=\\\"_handlePrevClick()\\\"\\n [title]=\\\"'@acorex:common.actions.prev' | translate | async\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-left\\\"></i>\\n </button>\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n [attr.readonly]=\\\"readonly ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-rounded ax-button-icon\\\"\\n (click)=\\\"_handleNextClick()\\\"\\n [title]=\\\"'@acorex:common.actions.next' | translate | async\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-right\\\"></i>\\n </button>\\n </div>\\n }\\n </div>\\n }\\n <div class=\\\"ax-calendar-week\\\">\\n @for (d of weekLayout(); track d) {\\n <div>{{ '@acorex:dateTime.weekdays.short.' + d | translate | async }}</div>\\n }\\n </div>\\n\\n <div class=\\\"ax-calendar-slots ax-calendar-slots-day\\\" [ngClass]=\\\"{ 'ax-default': !dayCellTemplate }\\\">\\n @for (slot of v.slots; track slot) {\\n <button\\n tabindex=\\\"0\\\"\\n class=\\\"ax-calendar-slot\\\"\\n [ngClass]=\\\"slot.cssClass\\\"\\n [class.ax-state-disabled]=\\\"disabled\\\"\\n (click)=\\\"_handleSlotClick($event, slot)\\\"\\n [disabled]=\\\"disabled\\\"\\n [axRipple]\\n >\\n @if (dayCellTemplate) {\\n <div>\\n <ng-container\\n [ngTemplateOutlet]=\\\"dayCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { slot: slot } }\\\"\\n >\\n </ng-container>\\n </div>\\n } @else {\\n <div [title]=\\\"slot.date | format: 'date' : { calendar: calendar(), format: 'long' } | async\\\">\\n {{ slot.text }}\\n </div>\\n }\\n </button>\\n }\\n </div>\\n }\\n }\\n }\\n</div>\\n<ng-content select=\\\"ax-footer\\\"></ng-content>\\n\", styles: [\"ax-calendar{--ax-comp-calendar-view-header-padding: .5rem;--ax-comp-calendar-slot-today-border-width: 1px;--ax-comp-calendar-slot-focused-border-width: 1px;--ax-comp-calendar-slot-focused-outline-width: 2px;--ax-comp-calendar-slot-disabled-opacity: .5;--ax-comp-calendar-slot-readonly-opacity: .75;--ax-comp-calendar-footer-margin-t: 1.25rem;--ax-comp-calendar-footer-today-button-padding-x: 1rem;--ax-comp-calendar-footer-today-button-height: var(--ax-sys-size-base)}ax-calendar{--ax-comp-calendar-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-calendar-view-header-border-color: var(--ax-sys-color-border-lightest-surface);--ax-comp-calendar-slot-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-calendar-slot-ripple-color: var(--ax-sys-color-primary-light-surface), .3;--ax-comp-calendar-slot-today-text-color: var(--ax-sys-color-primary-surface);--ax-comp-calendar-slot-today-border-color: var(--ax-sys-color-primary-surface);--ax-comp-calendar-slot-hover-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-calendar-slot-hover-text-color: var(--ax-sys-color-on-primary-surface);--ax-comp-calendar-slot-focused-border-color: var(--ax-sys-color-border-lightest-surface);--ax-comp-calendar-slot-focused-outline-color: var(--ax-sys-color-primary-surface);--ax-comp-calendar-slot-selected-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-calendar-slot-selected-text-color: var(--ax-sys-color-on-primary-surface);--ax-comp-calendar-slot-holiday-text-color: var(--ax-sys-color-danger-surface);--ax-comp-calendar-slot-holiday-ripple-color: var(--ax-sys-color-danger-light-surface), .3;--ax-comp-calendar-slot-holiday-today-border-color: var(--ax-sys-color-danger-surface);--ax-comp-calendar-slot-holiday-hover-bg-color: var(--ax-sys-color-danger-surface);--ax-comp-calendar-slot-holiday-hover-border-color: var(--ax-sys-color-danger-surface);--ax-comp-calendar-slot-holiday-selected-bg-color: var(--ax-sys-color-danger-surface);--ax-comp-calendar-slot-holiday-selected-text-color: var(--ax-sys-color-on-danger-surface);--ax-comp-calendar-footer-today-button-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-calendar-footer-today-button-text-color: var(--ax-sys-color-on-primary-surface);--ax-comp-calendar-footer-today-button-hover-bg-color: var(--ax-sys-color-primary-dark-surface);--ax-comp-calendar-footer-today-button-focused-outline-color: var(--ax-sys-color-primary-surface), 1}.ax-dark ax-calendar{--ax-comp-calendar-text-color: var(--ax-sys-color-on-darkest-surface);--ax-comp-calendar-view-header-border-color: var(--ax-sys-color-border-darkest-surface);--ax-comp-calendar-slot-text-color: var(--ax-sys-color-on-darkest-surface);--ax-comp-calendar-slot-focused-border-color: var(--ax-sys-color-border-darkest-surface)}html[dir=rtl] ax-calendar .ax-calendar-header-buttons .ax-icon{-moz-transform:scale(-1,1);-o-transform:scale(-1,1);-webkit-transform:scale(-1,1);transform:scaleX(-1)}ax-calendar{width:100%;display:block;color:rgba(var(--ax-comp-calendar-text-color));background-color:rgba(var(--ax-comp-calendar-bg-color))}ax-calendar.ax-state-disabled .ax-calendar-slots{cursor:not-allowed;opacity:.5}ax-calendar.ax-state-readonly .ax-calendar-slots{cursor:text}ax-calendar .ax-calendar-header{display:flex;justify-content:space-between;padding-left:var(--ax-comp-calendar-header-padding-x, .25rem);padding-right:var(--ax-comp-calendar-header-padding-x, .25rem);padding-top:var(--ax-comp-calendar-header-padding-t, .25rem)}ax-calendar .ax-calendar-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body{display:flex;flex-direction:column;justify-content:center;align-items:center}@media (min-width: 1024px){ax-calendar .ax-calendar-body{flex-direction:column}}ax-calendar .ax-calendar-body>div{width:100%;flex:1 1 0%}@media (min-width: 768px){ax-calendar .ax-calendar-body>div{width:20rem}}ax-calendar .ax-calendar-body .ax-calendar-view-header{display:flex;justify-content:space-between;border-bottom-width:var(--ax-comp-calendar-view-header-border-width, 1px);border-color:rgba(var(--ax-comp-calendar-view-header-border-color));padding:var(--ax-comp-calendar-view-header-padding)}ax-calendar .ax-calendar-body .ax-calendar-view-header .ax-calendar-header-info{font-weight:500}ax-calendar .ax-calendar-body .ax-calendar-view-header .ax-calendar-header-buttons{display:flex}ax-calendar .ax-calendar-body .ax-calendar-slots{display:grid;gap:.25rem;padding:1rem}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot{position:relative;display:flex;cursor:pointer;align-items:center;justify-content:center;text-align:center;font-size:var(--ax-comp-calendar-font-size, .875rem);color:rgba(var(--ax-comp-calendar-slot-text-color));line-height:var(--ax-comp-calendar-line-height, 1.25rem);border-radius:var(--ax-comp-calendar-slot-border-radius, var(--ax-sys-border-radius));transition-duration:var(--ax-sys-transition-duration);transition-timing-function:var(--ax-sys-transition-timing-function);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:before{content:\\\"\\\";float:left;padding-top:100%}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:after{content:\\\"\\\";clear:both;display:block}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-disabled,ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:hover.ax-state-selected){background-color:rgba(var(--ax-comp-calendar-slot-hover-bg-color));color:rgba(var(--ax-comp-calendar-slot-hover-text-color))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible:not(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled){outline-width:var(--ax-comp-calendar-slot-focused-outline-width);outline-color:rgba(var(--ax-comp-calendar-slot-focused-outline-color))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot:focus-visible.ax-state-disabled{outline-style:dashed;outline-width:var(--ax-comp-calendar-slot-focused-outline-width)}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-disabled{cursor:not-allowed;opacity:var(--ax-comp-calendar-slot-disabled-opacity)}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-readonly{cursor:text;opacity:var(--ax-comp-calendar-slot-readonly-opacity)}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-1{grid-column-start:1}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-2{grid-column-start:2}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-3{grid-column-start:3}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-4{grid-column-start:4}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-5{grid-column-start:5}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-6{grid-column-start:6}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-column-start-7{grid-column-start:7}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-other{opacity:.05}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot .ax-ripple{background-color:rgba(var(--ax-comp-calendar-slot-ripple-color))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today{color:rgba(var(--ax-comp-calendar-slot-today-text-color));border-width:var(--ax-comp-calendar-slot-today-border-width);border-color:rgba(var(--ax-comp-calendar-slot-today-border-color))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-today.ax-state-holiday{border-color:rgba(var(--ax-comp-calendar-slot-holiday-today-border-color))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-focused{border-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected{color:rgba(var(--ax-comp-calendar-slot-selected-text-color));background-color:rgba(var(--ax-comp-calendar-slot-selected-bg-color))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-selected.ax-state-holiday{color:rgba(var(--ax-comp-calendar-slot-holiday-selected-text-color))!important;background-color:rgba(var(--ax-comp-calendar-slot-holiday-selected-bg-color))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday{color:rgba(var(--ax-comp-calendar-slot-holiday-text-color))}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:is(ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-comp-calendar-slot-holiday-hover-bg-color))!important;border-color:rgba(var(--ax-comp-calendar-slot-holiday-hover-border-color))!important}ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-state-holiday .ax-ripple{background-color:rgba(var(--ax-comp-calendar-slot-holiday-ripple-color))!important}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-day{grid-template-columns:repeat(7,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-year,ax-calendar .ax-calendar-body .ax-calendar-slots.ax-calendar-slots-month{grid-template-columns:repeat(4,minmax(0,1fr))}ax-calendar .ax-calendar-body .ax-calendar-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));padding-top:var(--ax-comp-calendar-week-padding-t, .75rem);padding-left:var(--ax-comp-calendar-week-padding-x, .5rem);padding-right:var(--ax-comp-calendar-week-padding-x, .5rem)}ax-calendar .ax-calendar-body .ax-calendar-week>div{display:flex;cursor:pointer;position:relative;text-align:center;align-items:center;justify-content:center;font-size:var(--ax-comp-calendar-font-size, .875rem);line-height:var(--ax-comp-calendar-line-height, 1.25rem)}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.25rem}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav .ax-icon{font-size:.875rem}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav .ax-calendar-day-nav-prev{justify-self:start}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav .ax-calendar-day-nav-center{display:flex;align-items:center;justify-content:center;gap:.25rem}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav .ax-calendar-day-nav-next{justify-self:end}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-month-select,ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-year-select{display:inline-block;width:auto;flex:0 0 auto}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-month-select .ax-icon,ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-year-select .ax-icon{font-size:.75rem}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-month-select .ax-editor-container,ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-year-select .ax-editor-container{gap:0}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-month-select ax-dropdown-box.ax-editor-container,ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-year-select ax-dropdown-box.ax-editor-container{width:auto;justify-content:flex-start}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-month-select .ax-chips-container,ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-year-select .ax-chips-container{flex:0 0 auto;width:auto}ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-month-select .ax-chips-container .ax-chips,ax-calendar.ax-look-select .ax-calendar-view-header.ax-calendar-day-nav ax-select-box.ax-calendar-year-select .ax-chips-container .ax-chips{overflow:visible;text-overflow:unset}ax-calendar .ax-calendar-footer{display:flex;align-items:center;justify-content:center;margin-top:var(--ax-comp-calendar-footer-margin-t)}ax-calendar .ax-calendar-footer .ax-today-button{width:100%;display:block;cursor:pointer;text-align:center;padding-left:var(--ax-comp-calendar-footer-today-button-padding-x);padding-right:var(--ax-comp-calendar-footer-today-button-padding-x);font-size:var(--ax-comp-calendar-font-size, .875rem);line-height:var(--ax-comp-calendar-line-height, 1.25rem);height:var(--ax-comp-calendar-footer-today-button-height);border-radius:var(--ax-comp-calendar-footer-today-button-border-radius, var(--ax-sys-border-radius));color:rgba(var(--ax-comp-calendar-footer-today-button-text-color));background-color:rgba(var(--ax-comp-calendar-footer-today-button-bg-color))}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-disabled{cursor:not-allowed;opacity:var(--ax-comp-calendar-slot-disabled-opacity)}ax-calendar .ax-calendar-footer .ax-today-button.ax-state-readonly{cursor:text;opacity:var(--ax-comp-calendar-slot-readonly-opacity)}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:hover):not(.ax-state-disabled){background-color:rgba(var(--ax-comp-calendar-footer-today-button-hover-bg-color))}ax-calendar .ax-calendar-footer .ax-today-button:is(ax-calendar .ax-calendar-footer .ax-today-button:focus,ax-calendar .ax-calendar-footer .ax-today-button:focus-visible):not(.ax-state-disabled){outline-color:rgba(var(--ax-comp-calendar-footer-today-button-focused-outline-color))}.ax-calendar-picker{display:flex;width:100%}.ax-calendar-picker ax-picker{flex:1 1 0%}.ax-overlay-pane ax-calendar{border-style:none}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { __hostClass: [{\n type: HostBinding,\n args: ['class']\n }], _handleOnKeydownEvent: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jYWxlbmRhci9zcmMvbGliL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY2FsZW5kYXIvc3JjL2xpYi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixtQkFBbUIsRUFHbkIsc0JBQXNCLEVBQ3RCLGdCQUFnQixHQUNqQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3JFLE9BQU8sRUFBYyxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxZQUFZLEVBQ1osTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FB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QWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsUUFBUTt3QkFDUixTQUFTO3dCQUNULGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixrQkFBa0I7d0JBQ2xCLHFCQUFxQjt3QkFDckIsb0JBQW9CO3dCQUNwQixZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsYUFBYTtxQkFDZCxhQUNVO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsbUJBQW1COzRCQUM1QixXQUFXLHFCQUFxQjt5QkFDakM7d0JBQ0QsY0FBYzt3QkFDZCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxxQkFBcUIsRUFBRTtxQkFDM0QsV0FDUTt3QkFDUCxPQUFPO3dCQUNQLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQixTQUFTO3dCQUNULGdCQUFnQjt3QkFDaEIsY0FBYzt3QkFDZCxvQkFBb0I7d0JBQ3BCLFdBQVc7cUJBQ1o7d0RBb3JCVyxXQUFXO3NCQUR0QixXQUFXO3VCQUFDLE9BQU87Z0JBOERwQixxQkFBcUI7c0JBRHBCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQVhDbGlja0V2ZW50LFxuICBBWENvbXBvbmVudCxcbiAgQVhSaXBwbGVEaXJlY3RpdmUsXG4gIEFYVmFsdWFibGVDb21wb25lbnQsXG4gIEFYVmFsdWVDaGFuZ2VkRXZlbnQsXG4gIE1YQ29tcG9uZW50T3B0aW9uQ2hhbmdlZCxcbiAgTVhJbnRlcmFjdGl2ZUNvbXBvbmVudCxcbiAgTVhWYWx1ZUNvbXBvbmVudCxcbn0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYU2VsZWN0Qm94Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NlbGVjdC1ib3gnO1xuaW1wb3J0IHsgQVhEYXRlVGltZSwgQVhEYXRlVGltZVJhbmdlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2RhdGUtdGltZSc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgZm9yd2FyZFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbGlua2VkU2lnbmFsLFxuICBzaWduYWwsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQVhGb3JtYXRNb2R1bGUsIEFYRm9ybWF0U2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdG9yUGlwZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFVuc3Vic2NyaWJlciB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIGlzUGxhdGZvcm1Ccm93c2VyLCBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNsYXNzZXMgfSBmcm9tICdwb2x5dHlwZSc7XG5pbXBvcnQge1xuICBBWENhbGVuZGFyTmF2aWdhdGlvbkxvb2tUeXBlLFxuICBBWENhbGVuZGFyVmlldyxcbiAgQVhDYWxlbmRhclZpZXdTbG90LFxuICBBWENhbGVuZGFyVmlld1R5cGUsXG4gIEFYQ2FsZW5kYXJZZWFyUmFuZ2UsXG4gIGdldENhbGVuZGFyWWVhckJvdW5kcyxcbiAgTVhDYWxlbmRhckJhc2VDb21wb25lbnQsXG59IGZyb20gJy4vY2FsZW5kYXIuY2xhc3MnO1xuXG4vKipcbiAqIEEgY2FsZW5kYXIgY29tcG9uZW50IHRoYXQgcHJvdmlkZXMgYSBjdXN0b21pemFibGUgY2FsZW5kYXIgdmlldyB3aXRoIHZhcmlvdXMgb3B0aW9ucyBmb3Igc2VsZWN0aW9uLCBuYXZpZ2F0aW9uLCBhbmQgc3R5bGluZy5cbiAqXG4gKiBAY2F0ZWdvcnkgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbnB1dHM6IFtcbiAgICAncnRsJyxcbiAgICAncmVhZG9ubHknLFxuICAgICd2YWx1ZScsXG4gICAgJ25hbWUnLFxuICAgICdkaXNhYmxlZCcsXG4gICAgJ2RlcHRoJyxcbiAgICAnYWN0aXZlVmlldycsXG4gICAgJ21pblZhbHVlJyxcbiAgICAnbWF4VmFsdWUnLFxuICAgICdkaXNhYmxlZERhdGVzJyxcbiAgICAnaG9saWRheURhdGVzJyxcbiAgICAndHlwZScsXG4gICAgJ2RheUNlbGxUZW1wbGF0ZScsXG4gICAgJ21vbnRoQ2VsbFRlbXBsYXRlJyxcbiAgICAneWVhckNlbGxUZW1wbGF0ZScsXG4gICAgJ2NlbGxDbGFzcycsXG4gICAgJ3Nob3dOYXZpZ2F0aW9uJyxcbiAgICAnY291bnQnLFxuICAgICduYW1lJyxcbiAgICAnaWQnLFxuICBdLFxuICBvdXRwdXRzOiBbXG4gICAgJ29uT3B0aW9uQ2hhbmdlZCcsXG4gICAgJ3ZhbHVlQ2hhbmdlJyxcbiAgICAnb25WYWx1ZUNoYW5nZWQnLFxuICAgICdtaW5WYWx1ZUNoYW5nZScsXG4gICAgJ21heFZhbHVlQ2hhbmdlJyxcbiAgICAnb25CbHVyJyxcbiAgICAnb25Gb2N1cycsXG4gICAgJ2RlcHRoQ2hhbmdlJyxcbiAgICAndHlwZUNoYW5nZScsXG4gICAgJ2FjdGl2ZVZpZXdDaGFuZ2UnLFxuICAgICdkaXNhYmxlZERhdGVzQ2hhbmdlJyxcbiAgICAnaG9saWRheURhdGVzQ2hhbmdlJyxcbiAgICAnb25OYXZpZ2F0ZScsXG4gICAgJ29uU2xvdENsaWNrJyxcbiAgICAnY291bnRDaGFuZ2UnLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFYQ2FsZW5kYXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFZhbHVhYmxlQ29tcG9uZW50LFxuICAgICAgdXNlRXhpc3Rpbmc6IEFYQ2FsZW5kYXJDb21wb25lbnQsXG4gICAgfSxcbiAgICBBWFVuc3Vic2NyaWJlcixcbiAgICB7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhDYWxlbmRhckNvbXBvbmVudCB9LFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgTmdDbGFzcyxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIEFYUmlwcGxlRGlyZWN0aXZlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBBWFRyYW5zbGF0b3JQaXBlLFxuICAgIEFYRm9ybWF0TW9kdWxlLFxuICAgIEFYU2VsZWN0Qm94Q29tcG9uZW50LFxuICAgIEZvcm1zTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWENhbGVuZGFyQ29tcG9uZW50XG4gIGV4dGVuZHMgY2xhc3NlcyhNWFZhbHVlQ29tcG9uZW50PERhdGUgfCBudWxsPiwgTVhJbnRlcmFjdGl2ZUNvbXBvbmVudCwgTVhDYWxlbmRhckJhc2VDb21wb25lbnQpXG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdFxue1xuICBwcml2YXRlIGZvcm1hdFNlcnZpY2UgPSBpbmplY3QoQVhGb3JtYXRTZXJ2aWNlKTtcblxuICB3ZWVrZW5kID0gaW5wdXQ8bnVtYmVyW10+KFtdKTtcbiAgd2Vla2RheXMgPSBpbnB1dDxudW1iZXJbXT4oW10pO1xuXG4gIC8qKlxuICAgKiBEYXkgdmlldyBuYXZpZ2F0aW9uIHN0eWxlLlxuICAgKiAtIGBjbGFzc2ljYDogdGFwIHllYXIvbW9udGggbGFiZWxzIHRvIG9wZW4gbW9udGgveWVhciBwaWNrZXIgcGFuZWxzLlxuICAgKiAtIGBzZWxlY3RgOiBtb250aC95ZWFyIGRyb3Bkb3ducyB3aXRoIHByZXYvbmV4dCBhcnJvd3Mgb24gdGhlIGVkZ2VzLlxuICAgKi9cbiAgbG9vayA9IGlucHV0PEFYQ2FsZW5kYXJOYXZpZ2F0aW9uTG9va1R5cGU+KCdzZWxlY3QnKTtcblxuICAvKipcbiAgICogWWVhcnMgc2hvd24gaW4gdGhlIHllYXIgc2VsZWN0b3Igd2hlbiBgbG9va2AgaXMgYHNlbGVjdGAuXG4gICAqIFVzZSBhIG51bWJlciBmb3IgZXF1YWwgcGFzdC9mdXR1cmUgcmFuZ2VzLCBvciBgeyBwYXN0LCBmdXR1cmUgfWAgZm9yIGFzeW1tZXRyaWMgcmFuZ2VzLlxuICAgKiBgbWluVmFsdWVgIGFuZCBgbWF4VmFsdWVgIHRha2UgcHJpb3JpdHkgd2hlbiBzZXQuXG4gICAqL1xuICB5ZWFyUmFuZ2UgPSBpbnB1dDxBWENhbGVuZGFyWWVhclJhbmdlPig4MCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzUnRsID0gdGhpcy5sb2NhbGVTZXJ2aWNlLmlzUnRsO1xuXG4gIHByb3RlY3RlZCBjYWxlbmRhciA9IGxpbmtlZFNpZ25hbCgoKSA9PiB0aGlzLnR5cGUgPz8gdGhpcy5sb2NhbGVTZXJ2aWNlLmFjdGl2ZVByb2ZpbGUoKS5jYWxlbmRhci5zeXN0ZW0pO1xuXG4gIC8qKiBXZWVrIGNvbHVtbiBvcmRlciBmcm9tIHRoZSBhY3RpdmUgbG9jYWxlIHByb2ZpbGUgKDAgPSBTdW4g4oCmIDYgPSBTYXQpLiAqL1xuICBwcm90ZWN0ZWQgd2Vla0xheW91dCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjdXN0b20gPSB0aGlzLndlZWtkYXlzKCk7XG4gICAgaWYgKGN1c3RvbS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBjdXN0b207XG4gICAgfVxuICAgIGNvbnN0IHN0YXJ0c09uID0gdGhpcy5sb2NhbGVTZXJ2aWNlLmFjdGl2ZVByb2ZpbGUoKS5jYWxlbmRhci53ZWVrLnN0YXJ0c09uO1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiA3IH0sIChfLCBpKSA9PiAoc3RhcnRzT24gKyBpKSAlIDcpO1xuICB9KTtcblxuICBwdWJsaWMgZ2V0IGRpc3BsYXlSYW5nZSgpOiBBWERhdGVUaW1lUmFuZ2UgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy52aWV3cy5sZW5ndGggPiAwXG4gICAgICA/IG5ldyBBWERhdGVUaW1lUmFuZ2UodGhpcy52aWV3c1swXT8ucmFuZ2Uuc3RhcnRUaW1lLCB0aGlzLnZpZXdzW3RoaXMudmlld3MubGVuZ3RoIC0gMV0/LnJhbmdlLmVuZFRpbWUpXG4gICAgICA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBfdG9kYXkgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5jcmVhdGUobmV3IERhdGUoKSwgdGhpcy5jYWxlbmRhcigpKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX3ZpZXdTdGFydERhdGUhOiBBWERhdGVUaW1lO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfbmF2VXNlckludGVyYWN0aW9uID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9mb290UHJpbnQgPSB7XG4gICAgeWVhcjogbnVsbCxcbiAgICBtb250aDogbnVsbCxcbiAgICBkYXk6IG51bGwsXG4gIH07XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgdmlld3M6IEFYQ2FsZW5kYXJWaWV3W10gPSBbXTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBfbW9udGhPcHRpb25zOiB7IGlkOiBudW1iZXI7IHRleHQ6IHN0cmluZyB9W10gPSBbXTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBfeWVhck9wdGlvbnM6IHsgaWQ6IG51bWJlcjsgdGV4dDogc3RyaW5nIH1bXSA9IFtdO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBfY3VycmVudE1vbnRoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdTdGFydERhdGU/Lm1vbnRoT2ZZZWFyO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IF9jdXJyZW50WWVhcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl92aWV3U3RhcnREYXRlPy55ZWFyO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIG9sZFZhbHVlID0gc2lnbmFsPERhdGUgfCBudWxsPihudWxsKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX2luaXRWYWx1ZXMoKSB7XG4gICAgdGhpcy5fdG9kYXkgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5jcmVhdGUobmV3IERhdGUoKSwgdGhpcy5jYWxlbmRhcigpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXBzIGEgZGF0ZSB0byBhIDEtYmFzZWQgZ3JpZCBjb2x1bW4gdXNpbmcgdGhlIGFjdGl2ZSB3ZWVrIGxheW91dC5cbiAgICovXG4gIHByaXZhdGUgX2dldFdlZWtDb2x1bW4oZGF0ZTogQVhEYXRlVGltZSk6IG51bWJlciB7XG4gICAgY29uc3QgY29sdW1uSW5kZXggPSB0aGlzLndlZWtMYXlvdXQoKS5pbmRleE9mKGRhdGUud2Vla2RheUluZGV4KTtcbiAgICByZXR1cm4gY29sdW1uSW5kZXggPj0gMCA/IGNvbHVtbkluZGV4ICsgMSA6IGRhdGUuZGF5T2ZXZWVrO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmVycyByZWZyZXNoIHNvIHBhcmVudCBgdHlwZWAgaW5wdXQgY2FuIHN5bmMgYWZ0ZXIgbG9jYWxlIHByb2ZpbGUgY2hhbmdlcy5cbiAgICovXG4gIHByaXZhdGUgX3NjaGVkdWxlUmVmcmVzaCgpIHtcbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB0aGlzLl9yZWZyZXNoKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9yZWZyZXNoKCkge1xuICAgIHRoaXMuX2luaXRWYWx1ZXMoKTtcbiAgICB0aGlzLm5hdlRvKHRoaXMudmFsdWUgfHwgdGhpcy5fdG9kYXkpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCB1bnN1YnNjcmliZXIgPSBpbmplY3QoQVhVbnN1YnNjcmliZXIpO1xuXG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS5vbkhvbGlkYXlzQ2hhbmdlZC5waXBlKHVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9KTtcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS5jYWxlbmRhckNoYW5nZXMkLnBpcGUodW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIGlmICghdGhpcy50eXBlKSB0aGlzLmNhbGVuZGFyLnNldCh2YWx1ZS5uYW1lKCkpO1xuICAgICAgdGhpcy5fc2NoZWR1bGVSZWZyZXNoKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmxvY2FsZVNlcnZpY2UucHJvZmlsZUNoYW5nZWQkLnBpcGUodW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgocHJvZmlsZSkgPT4ge1xuICAgICAgdGhpcy5jYWxlbmRhci5zZXQocHJvZmlsZS5jYWxlbmRhci5zeXN0ZW0pO1xuICAgICAgdGhpcy5fc2NoZWR1bGVSZWZyZXNoKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnR5cGVDaGFuZ2UucGlwZSh1bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgdGhpcy5jYWxlbmRhci5zZXQodmFsdWUpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5taW5WYWx1ZUNoYW5nZS5zdWJzY3JpYmUoKGU6IERhdGUpID0+IHtcbiAgICAgIGlmICh0aGlzLl92aWV3U3RhcnREYXRlLmlzQmVmb3JlKGUpKSB7XG4gICAgICAgIHRoaXMuX3ZpZXdTdGFydERhdGUgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5jcmVhdGUoZSwgdGhpcy5jYWxlbmRhcigpKTtcbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5faW5pdFZhbHVlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5taW5WYWx1ZSAmJiB0aGlzLl92aWV3U3RhcnREYXRlLmlzQmVmb3JlKHRoaXMubWluVmFsdWUpKSB7XG4gICAgICAgIHRoaXMuX3ZpZXdTdGFydERhdGUgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5jcmVhdGUodGhpcy5taW5WYWx1ZSwgdGhpcy5jYWxlbmRhcigpKTtcbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZ29Ub2RheSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgb3ZlcnJpZGUgcmVuZGVyKCkge1xuICAgIGlmICghdGhpcy5fdmlld1N0YXJ0RGF0ZSkgcmV0dXJuO1xuICAgIGNvbnN0IGFwcGx5Q2VsbENsYXNzID0gKHNsb3Q6IEFYQ2FsZW5kYXJWaWV3U2xvdCwgY2VsbENsYXNzOiBhbnkgPSB0aGlzLmNlbGxDbGFzcykgPT4ge1xuICAgICAgc3dpdGNoICh0eXBlb2YgY2VsbENsYXNzKSB7XG4gICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgY2VsbENsYXNzLnNwbGl0KCcgJykuZm9yRWFjaCgoYykgPT4gKHNsb3QuY3NzQ2xhc3NbY10gPSB0cnVlKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihzbG90LmNzc0NsYXNzLCBjZWxsQ2xhc3MpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICAgICAgYXBwbHlDZWxsQ2xhc3Moc2xvdCwgY2VsbENsYXNzKHNsb3QuZGF0ZSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy52aWV3cyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb3VudDsgaSsrKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMuYWN0aXZlVmlldykge1xuICAgICAgICBjYXNlICdkYXknOlxuICAgICAgICAgIHRoaXMuZGF5VmlldyhpLCBhcHBseUNlbGxDbGFzcyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICB0aGlzLm1vbnRoVmlldyhpLCBhcHBseUNlbGxDbGFzcyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgIHRoaXMueWVhclZpZXcoaSwgYXBwbHlDZWxsQ2xhc3MpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl91cGRhdGVTZWxlY3RPcHRpb25zKCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX3VwZGF0ZVNlbGVjdE9wdGlvbnMoKSB7XG4gICAgaWYgKCF0aGlzLl92aWV3U3RhcnREYXRlKSByZXR1cm47XG5cbiAgICB0aGlzLl9tb250aE9wdGlvbnMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiAxMiB9LCAoXywgaSkgPT4ge1xuICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuX3ZpZXdTdGFydERhdGUuc2V0KCdtb250aCcsIGkgKyAxKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBpICsgMSxcbiAgICAgICAgdGV4dDogYEBhY29yZXg6JHt0aGlzLmdldE1vbnRoTmFtZShkYXRlLCAnc2hvcnQnKX1gLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlZmVyZW5jZVllYXIgPSB0aGlzLl90b2RheS55ZWFyO1xuICAgIGNvbnN0IHsgbWluWWVhciwgbWF4WWVhciB9ID0gZ2V0Q2FsZW5kYXJZZWFyQm91bmRzKHtcbiAgICAgIHJlZmVyZW5jZVllYXIsXG4gICAgICB5ZWFyUmFuZ2U6IHRoaXMueWVhclJhbmdlKCksXG4gICAgICBtaW5WYWx1ZTogdGhpcy5taW5WYWx1ZSxcbiAgICAgIG1heFZhbHVlOiB0aGlzLm1heFZhbHVlLFxuICAgICAgZ2V0WWVhcjogKGRhdGUpID0+IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZShkYXRlLCB0aGlzLmNhbGVuZGFyKCkpLnllYXIsXG4gICAgfSk7XG5cbiAgICB0aGlzLl95ZWFyT3B0aW9ucyA9IFtdO1xuICAgIGZvciAobGV0IHllYXIgPSBtaW5ZZWFyOyB5ZWFyIDw9IG1heFllYXI7IHllYXIrKykge1xuICAgICAgdGhpcy5feWVhck9wdGlvbnMucHVzaCh7IGlkOiB5ZWFyLCB0ZXh0OiBTdHJpbmcoeWVhcikgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZU1vbnRoU2VsZWN0Q2hhbmdlZChlOiBBWFZhbHVlQ2hhbmdlZEV2ZW50KSB7XG4gICAgaWYgKCFlLmlzVXNlckludGVyYWN0aW9uIHx8ICF0aGlzLl92aWV3U3RhcnREYXRlKSByZXR1cm47XG4gICAgY29uc3QgbW9udGggPSB0aGlzLl9nZXRTZWxlY3RCb3hWYWx1ZShlKTtcbiAgICBpZiAobW9udGggPT0gbnVsbCkgcmV0dXJuO1xuICAgIHRoaXMuX25hdlVzZXJJbnRlcmFjdGlvbiA9IHRydWU7XG4gICAgdGhpcy5uYXZUbyh0aGlzLl92aWV3U3RhcnREYXRlLnNldCgnbW9udGgnLCBtb250aCkpO1xuICAgIHRoaXMuX25hdlVzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZVllYXJTZWxlY3RDaGFuZ2VkKGU6IEFYVmFsdWVDaGFuZ2VkRXZlbnQpIHtcbiAgICBpZiAoIWUuaXNVc2VySW50ZXJhY3Rpb24gfHwgIXRoaXMuX3ZpZXdTdGFydERhdGUpIHJldHVybjtcbiAgICBjb25zdCB5ZWFyID0gdGhpcy5fZ2V0U2VsZWN0Qm94VmFsdWUoZSk7XG4gICAgaWYgKHllYXIgPT0gbnVsbCkgcmV0dXJuO1xuICAgIHRoaXMuX25hdlVzZXJJbnRlcmFjdGlvbiA9IHRydWU7XG4gICAgdGhpcy5uYXZUbyh0aGlzLl92aWV3U3RhcnREYXRlLnNldCgneWVhcicsIHllYXIpKTtcbiAgICB0aGlzLl9uYXZVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0U2VsZWN0Qm94VmFsdWUoZTogQVhWYWx1ZUNoYW5nZWRFdmVudCk6IG51bWJlciB8IG51bGwge1xuICAgIGNvbnN0IHZhbCA9IGUudmFsdWU7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkgcmV0dXJuIHZhbFswXT8uaWQgPz8gbnVsbDtcbiAgICBpZiAodmFsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnKSByZXR1cm4gKHZhbCBhcyB7IGlkOiBudW1iZXIgfSkuaWQgPz8gbnVsbDtcbiAgICByZXR1cm4gdmFsICE9IG51bGwgPyBOdW1iZXIodmFsKSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX3NldERpc3BsYXlSYW5nZShjdXJyZW50OiBBWERhdGVUaW1lKTogQVhEYXRlVGltZVJhbmdlIHtcbiAgICBzd2l0Y2ggKHRoaXMuYWN0aXZlVmlldykge1xuICAgICAgY2FzZSAneWVhcic6IHtcbiAgICAgICAgY29uc3QgeSA9IGN1cnJlbnQuc3RhcnRPZigneWVhcicpLnllYXI7XG4gICAgICAgIGNvbnN0IG1pbiA9IHkgLSAoeSAlIDEwKTtcbiAgICAgICAgY29uc3QgbWF4ID0gbWluICsgOTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lUmFuZ2UoXG4gICAgICAgICAgdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB5ZWFyOiBtaW4sXG4gICAgICAgICAgICAgIG1vbnRoOiAxLFxuICAgICAgICAgICAgICBkYXk6IDEsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy5jYWxlbmRhcigpLFxuICAgICAgICAgICksXG4gICAgICAgICAgdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB5ZWFyOiBtYXgsXG4gICAgICAgICAgICAgIG1vbnRoOiAxMixcbiAgICAgICAgICAgICAgZGF5OiAyOCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLmNhbGVuZGFyKCksXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lUmFuZ2UoY3VycmVudC5zdGFydE9mKCd5ZWFyJyksIGN1cnJlbnQuZW5kT2YoJ3llYXInKS5hZGQoJ2RheScsIC0xKSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWVSYW5nZShjdXJyZW50LnN0YXJ0T2YoJ21vbnRoJyksIGN1cnJlbnQuZW5kT2YoJ21vbnRoJykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBkYXlWaWV3KGk6IG51bWJlciwgYXBwbHlDZWxsQ2xhc3M6IGFueSkge1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl92aWV3U3RhcnREYXRlLmFkZCgnbW9udGgnLCBpKTtcbiAgICBjb25zdCB2aWV3OiBBWENhbGVuZGFyVmlldyA9IHtcbiAgICAgIHJhbmdlOiB0aGlzLl9zZXREaXNwbGF5UmFuZ2UoY3VycmVudCksXG4gICAgICBzbG90czogW10sXG4gICAgfTtcbiAgICB0aGlzLnZpZXdzLnB1c2godmlldyk7XG4gICAgY29uc3QgYSA9IHZpZXcucmFuZ2UuZW51bWVyYXRlKCdkYXknKTtcbiAgICB2aWV3LnNsb3RzID0gYS5tYXAoKGQsIGkpID0+IHtcbiAgICAgIGxldCBzZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgaWYgKHRoaXMuZGVwdGggPT09ICdkYXknKSB7XG4gICAgICAgIHNlbGVjdGVkID0gdGhpcy52YWx1ZSAmJiBkLmVxdWFsKHRoaXMudmFsdWUsICdkYXknKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5kZXB0aCA9PT0gJ21vbnRoJykge1xuICAgICAgICBzZWxlY3RlZCA9IHRoaXMudmFsdWUgJiYgZC5lcXVhbCh0aGlzLnZhbHVlLCAnbW9udGgnKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5kZXB0aCA9PT0gJ3llYXInKSB7XG4gICAgICAgIHNlbGVjdGVkID0gdGhpcy52YWx1ZSAmJiBkLmVxdWFsKHRoaXMudmFsdWUsICd5ZWFyJyk7XG4gICAgICB9XG4gICAgICBjb25zdCByOiBhbnkgPSB7fTtcbiAgICAgIHIuZGF0ZSA9IGQ7XG4gICAgICByLnRleHQgPSBkLmRheU9mTW9udGg7XG4gICAgICByLnRvZGF5ID0gZC5lcXVhbCh0aGlzLl90b2RheSwgJ2RheScpO1xuICAgICAgci5zZWxlY3RlZCA9IHNlbGVjdGVkO1xuICAgICAgci5ob2xpZGF5ID0gdGhpcy5pc0hvbGlkYXkoZCkgfHwgdGhpcy5pc1dlZWtlbmQoZCk7XG4gICAgICByLmRpc2FibGVkID1cbiAgICAgICAgKHRoaXMubWluVmFsdWUgJiYgZC5jb21wYXJlKHRoaXMubWluVmFsdWUsICdkYXknKSA9PSAtMSkgfHxcbiAgICAgICAgKHRoaXMubWF4VmFsdWUgJiYgZC5jb21wYXJlKHRoaXMubWF4VmFsdWUsICdkYXknKSA9PSAxKSB8fFxuICAgICAgICB0aGlzLmlzRGlzYWJsZWQoZCk7XG4gICAgICAvL1xuICAgICAgLy8gY29uc3QgZm9jdXNlZCA9IGQuZGF5T2ZNb250aCA9PSB0aGlzLl9mb290UHJpbnQuZGF5ICYmIGQubW9udGhPZlllYXIgPT0gdGhpcy5fZm9vdFByaW50Lm1vbnRoICYmIGQueWVhciA9PSB0aGlzLl9mb290UHJpbnQueWVhcjtcbiAgICAgIC8vXG4gICAgICBpZiAoci5kaXNhYmxlZCkge1xuICAgICAgICByLmNzc0NsYXNzID0ge1xuICAgICAgICAgICdheC1zdGF0ZS1kaXNhYmxlZCc6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByLmNzc0NsYXNzID0ge1xuICAgICAgICAgICdheC1zdGF0ZS10b2RheSc6IHIudG9kYXksXG4gICAgICAgICAgJ2F4LXN0YXRlLXNlbGVjdGVkJzogci5zZWxlY3RlZCxcbiAgICAgICAgICAnYXgtc3RhdGUtaG9saWRheSc6IHIuaG9saWRheSxcbiAgICAgICAgICAvLyAnYXgtc3RhdGUtZm9jdXNlZCc6IGZvY3VzZWQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICAvLyBheC1jb2wtc3RhcnQtMSBheC1jb2wtc3RhcnQtMiBheC1jb2wtc3RhcnQtMyBheC1jb2wtc3RhcnQtNCBheC1jb2wtc3RhcnQtNSBheC1jb2wtc3RhcnQtNiBheC1jb2wtc3RhcnQtN1xuICAgICAgci5jc3NDbGFzc1tgYXgtY29sdW1uLXN0YXJ0LSR7dGhpcy5fZ2V0V2Vla0NvbHVtbih2aWV3LnJhbmdlLnN0YXJ0VGltZSl9YF0gPSBpID09IDA7XG4gICAgICBpZiAodGhpcy5jZWxsQ2xhc3MpIGFwcGx5Q2VsbENsYXNzKHIpO1xuXG4gICAgICByZXR1cm4gcjtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBtb250aFZpZXcoaTogbnVtYmVyLCBhcHBseUNlbGxDbGFzczogYW55KSB7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuX3ZpZXdTdGFydERhdGUuYWRkKCd5ZWFyJywgaSk7XG4gICAgY29uc3QgdmlldzogQVhDYWxlbmRhclZpZXcgPSB7XG4gICAgICByYW5nZTogdGhpcy5fc2V0RGlzcGxheVJhbmdlKGN1cnJlbnQpLFxuICAgICAgc2xvdHM6IFtdLFxuICAgIH07XG4gICAgdGhpcy52aWV3cy5wdXNoKHZpZXcpO1xuICAgIGNvbnN0IGEgPSB2aWV3LnJhbmdlLmVudW1lcmF0ZSgnbW9udGgnKTtcbiAgICB2aWV3LnNsb3RzID0gYS5tYXAoKGQpID0+IHtcbiAgICAgIGNvbnN0IHI6IGFueSA9IHt9O1xuICAgICAgci5kYXRlID0gZDtcbiAgICAgIHIudGV4dCA9IHRoaXMuZm9ybWF0U2VydmljZS5mb3JtYXQoZCwgJ2RhdGUnIGFzIGFueSwgJ01NTScpO1xuICAgICAgci50b2RheSA9IGQuZXF1YWwodGhpcy5fdG9kYXksICdtb250aCcpO1xuICAgICAgLy9cbiAgICAgIHIuZGlzYWJsZWQgPVxuICAgICAgICAodGhpcy5taW5WYWx1ZSAmJiBkLmNvbXBhcmUodGhpcy5taW5WYWx1ZSwgJ21vbnRoJykgPT0gLTEpIHx8XG4gICAgICAgICh0aGlzLm1heFZhbHVlICYmIGQuY29tcGFyZSh0aGlzLm1heFZhbHVlLCAnbW9udGgnKSA9PSAxKTtcbiAgICAgIC8vXG4gICAgICByLnNlbGVjdGVkID0gdGhpcy52YWx1ZSAmJiB0aGlzLmRlcHRoID09ICdtb250aCcgJiYgZC5lcXVhbCh0aGlzLnZhbHVlLCAnbW9udGgnKTtcbiAgICAgIC8vXG4gICAgICBjb25zdCBmb2N1c2VkID0gZC5tb250aE9mWWVhciA9PSB0aGlzLl9mb290UHJpbnQubW9udGggJiYgZC55ZWFyID09IHRoaXMuX2Zvb3RQcmludC55ZWFyO1xuICAgICAgLy9cbiAgICAgIGlmIChyLmRpc2FibGVkKSB7XG4gICAgICAgIHIuY3NzQ2xhc3MgPSB7XG4gICAgICAgICAgJ2F4LXN0YXRlLWRpc2FibGVkJzogci5kaXNhYmxlZCxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHIuY3NzQ2xhc3MgPSB7XG4gICAgICAgICAgJ2F4LXN0YXRlLXRvZGF5Jzogci50b2RheSxcbiAgICAgICAgICAnYXgtc3RhdGUtc2VsZWN0ZWQnOiByLnNlbGVjdGVkLFxuICAgICAgICAgICdheC1zdGF0ZS1mb2N1c2VkJzogZm9jdXNlZCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGFwcGx5Q2VsbENsYXNzKHIpO1xuICAgICAgcmV0dXJuIHI7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgeWVhclZpZXcoaTogbnVtYmVyLCBhcHBseUNlbGxDbGFzczogYW55KSB7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuX3ZpZXdTdGFydERhdGUuYWRkKCd5ZWFyJywgaSAqIDEwKTtcbiAgICBjb25zdCB2aWV3OiBBWENhbGVuZGFyVmlldyA9IHtcbiAgICAgIHJhbmdlOiB0aGlzLl9zZXREaXNwbGF5UmFuZ2UoY3VycmVudCksXG4gICAgICBzbG90czogW10sXG4gICAgfTtcbiAgICB0aGlzLnZpZXdzLnB1c2godmlldyk7XG4gICAgY29uc3QgYSA9IHZpZXcucmFuZ2UuZW51bWVyYXRlKCd5ZWFyJyk7XG5cbiAgICB2aWV3LnNsb3RzID0gYS5tYXAoKGQpID0+IHtcbiAgICAgIGNvbnN0IHI6IGFueSA9IHt9O1xuICAgICAgci5kYXRlID0gZDtcbiAgICAgIHIudGV4dCA9IHRoaXMuZm9ybWF0U2VydmljZS5mb3JtYXQoZCwgJ2RhdGUnIGFzIGFueSwgJ1lZWVknKTtcbiAgICAgIHIudG9kYXkgPSBkLmVxdWFsKHRoaXMuX3RvZGF5LCAneWVhcicpO1xuICAgICAgci5zZWxlY3RlZCA9IHRoaXMudmFsdWUgJiYgdGhpcy5kZXB0aCA9PSAneWVhcicgJiYgZC5lcXVhbCh0aGlzLnZhbHVlLCAneWVhcicpO1xuICAgICAgLy9cbiAgICAgIGNvbnN0IGZvY3VzZWQgPSBkLnllYXIgPT0gdGhpcy5fZm9vdFByaW50LnllYXI7XG4gICAgICAvL1xuICAgICAgci5kaXNhYmxlZCA9XG4gICAgICAgICh0aGlzLm1pblZhbHVlICYmIGQuY29tcGFyZSh0aGlzLm1pblZhbHVlLCAneWVhcicpID09IC0xKSB8fFxuICAgICAgICAodGhpcy5tYXhWYWx1ZSAmJiBkLmNvbXBhcmUodGhpcy5tYXhWYWx1ZSwgJ3llYXInKSA9PSAxKTtcbiAgICAgIC8vXG4gICAgICBpZiAoci5kaXNhYmxlZCkge1xuICAgICAgICByLmNzc0NsYXNzID0ge1xuICAgICAgICAgICdheC1zdGF0ZS1kaXNhYmxlZCc6IHIuZGlzYWJsZWQsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByLmNzc0NsYXNzID0ge1xuICAgICAgICAgICdheC1zdGF0ZS10b2RheSc6IHIudG9kYXksXG4gICAgICAgICAgJ2F4LXN0YXRlLXNlbGVjdGVkJzogci5zZWxlY3RlZCxcbiAgICAgICAgICAnYXgtc3RhdGUtZm9jdXNlZCc6IGZvY3VzZWQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBhcHBseUNlbGxDbGFzcyhyKTtcbiAgICAgIHJldHVybiByO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZVByZXZDbGljaygpIHtcbiAgICB0aGlzLl9uYXZVc2VySW50ZXJhY3Rpb24gPSB0cnVlO1xuICAgIHRoaXMucHJldigpO1xuICAgIHRoaXMuX25hdlVzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZU5leHRDbGljaygpIHtcbiAgICB0aGlzLl9uYXZVc2VySW50ZXJhY3Rpb24gPSB0cnVlO1xuICAgIHRoaXMubmV4dCgpO1xuICAgIHRoaXMuX25hdlVzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZVNsb3RDbGljayhlOiBNb3VzZUV2ZW50LCBzbG90OiBBWENhbGVuZGFyVmlld1Nsb3QpIHtcbiAgICBpZiAoc2xvdC5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkKSByZXR1cm47XG4gICAgLy9cbiAgICB0aGlzLm9uU2xvdENsaWNrLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaXRlbTogc2xvdC5kYXRlLmRhdGUsXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICAgIG5hdGl2ZUV2ZW50OiBlLFxuICAgIH0pO1xuICAgIC8vXG4gICAgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnZGF5Jykge1xuICAgICAgdGhpcy5fc2V0RGF0ZShzbG90LmRhdGUuZGF0ZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ21vbnRoJyAmJiB0aGlzLmRlcHRoID09ICdkYXknKSB7XG4gICAgICB0aGlzLmFjdGl2ZVZpZXcgPSAnZGF5JztcbiAgICAgIHRoaXMuX2Zvb3RQcmludC5tb250aCA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZShzbG90LmRhdGUuZGF0ZSwgdGhpcy5jYWxlbmRhcigpKS5tb250aE9mWWVhcjtcbiAgICAgIHRoaXMubmF2VG8oc2xvdC5kYXRlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnbW9udGgnICYmIHRoaXMuZGVwdGggPT0gJ21vbnRoJykge1xuICAgICAgdGhpcy5fc2V0RGF0ZShzbG90LmRhdGUuZGF0ZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ3llYXInICYmICh0aGlzLmRlcHRoID09ICdkYXknIHx8IHRoaXMuZGVwdGggPT0gJ21vbnRoJykpIHtcbiAgICAgIHRoaXMuYWN0aXZlVmlldyA9ICdtb250aCc7XG4gICAgICB0aGlzLl9mb290UHJpbnQueWVhciA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZShzbG90LmRhdGUuZGF0ZSwgdGhpcy5jYWxlbmRhcigpKS55ZWFyO1xuICAgICAgdGhpcy5uYXZUbyhzbG90LmRhdGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVWaWV3ID09ICd5ZWFyJyAmJiB0aGlzLmRlcHRoID09ICd5ZWFyJykge1xuICAgICAgdGhpcy5fc2V0RGF0ZShzbG90LmRhdGUuZGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZU5hdkNsaWNrKGU6IEFYQ2xpY2tFdmVudCB8IGFueSwgdmlldzogQVhDYWxlbmRhclZpZXdUeXBlKSB7XG4gICAgdGhpcy5fbmF2VXNlckludGVyYWN0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmFjdGl2ZVZpZXcgPSB2aWV3O1xuICAgIHRoaXMuX25hdlVzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgYmV0d2VlbiBkaWZmZXJlbnQgY2FsZW5kYXIgdmlld3MgKGRheSDihpIgbW9udGgg4oaSIHllYXIpLlxuICAgKi9cbiAgcHVibGljIHRvZ2dsZVZpZXcoKSB7XG4gICAgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnZGF5JykgdGhpcy5hY3RpdmVWaWV3ID0gJ21vbnRoJztcbiAgICBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ21vbnRoJykgdGhpcy5hY3RpdmVWaWV3ID0gJ3llYXInO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgaW50ZXJuYWxPcHRpb25DaGFuZ2VkKGU6IE1YQ29tcG9uZW50T3B0aW9uQ2hhbmdlZCkge1xuICAgIGlmIChlLm5hbWUgPT0gJ2RlcHRoJyB8fCBlLm5hbWUgPT0gJ2FjdGl2ZVZpZXcnIHx8IGUubmFtZSA9PSAnZGlzYWJsZWREYXRlcycgfHwgZS5uYW1lID09ICdob2xpZGF5RGF0ZXMnKSB7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cbiAgICBpZiAoZS5uYW1lID09ICd0eXBlJykge1xuICAgICAgdGhpcy5fcmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGludGVybmFsU2V0VmFsdWUodmFsdWU6IERhdGUpOiBEYXRlIHwgbnVsbCB7XG4gICAgaWYgKCF2YWx1ZSB8fCAhdGhpcy5jYWxlbmRhclNlcnZpY2UuaXNWYWxpZERhdGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgdiA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNvbnZlcnQodmFsdWUsIHRoaXMuY2FsZW5kYXIoKSk7XG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCh2KSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubWF4VmFsdWUgJiYgdGhpcy5jYWxlbmRhclNlcnZpY2UuaXNWYWxpZERhdGUodGhpcy5tYXhWYWx1ZSkgJiYgdi5pc0FmdGVyKHRoaXMubWF4VmFsdWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5tYXhWYWx1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5taW5WYWx1ZSAmJiB0aGlzLmNhbGVuZGFyU2VydmljZS5pc1ZhbGlkRGF0ZSh0aGlzLm1pblZhbHVlKSAmJiB2LmlzQmVmb3JlKHRoaXMubWluVmFsdWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5taW5WYWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdi5kYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgaW50ZXJuYWxWYWx1ZUNoYW5nZWQodmFsdWU/OiBEYXRlKSB7XG4gICAgY29uc3QgdmFsID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKHZhbHVlLCB0aGlzLmNhbGVuZGFyKCkpO1xuICAgIGlmIChcbiAgICAgICF0aGlzLl92aWV3U3RhcnREYXRlIHx8XG4gICAgICB2YWwuY29tcGFyZSh0aGlzLmRpc3BsYXlSYW5nZT8uc3RhcnRUaW1lLCB0aGlzLmFjdGl2ZVZpZXcpID09IC0xIHx8XG4gICAgICB2YWwuY29tcGFyZSh0aGlzLmRpc3BsYXlSYW5nZT8uZW5kVGltZSwgdGhpcy5hY3RpdmVWaWV3KSA9PSAxXG4gICAgKSB7XG4gICAgICB0aGlzLl92aWV3U3RhcnREYXRlID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKHZhbHVlLCB0aGlzLmNhbGVuZGFyKCkpO1xuICAgICAgaWYgKHRoaXMubWluVmFsdWUgJiYgdGhpcy5fdmlld1N0YXJ0RGF0ZS5pc0JlZm9yZSh0aGlzLm1pblZhbHVlKSkge1xuICAgICAgICB0aGlzLl92aWV3U3RhcnREYXRlID0gdGhpcy5jYWxlbmRhclNlcnZpY2UuY3JlYXRlKHRoaXMubWluVmFsdWUsIHRoaXMuY2FsZW5kYXIoKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2Zvb3RQcmludC55ZWFyID0gdmFsLnllYXI7XG4gICAgdGhpcy5fZm9vdFByaW50Lm1vbnRoID0gdmFsLm1vbnRoT2ZZZWFyO1xuICAgIHRoaXMuX2Zvb3RQcmludC5kYXkgPSB2YWwuZGF5T2ZNb250aDtcblxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICBjb25zdCBjYWxlbmRhclNsb3RzID0gQXJyYXkuZnJvbSh0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvckFsbCgnLmF4LWNhbGVuZGFyLXNsb3QnKSk7XG4gICAgICBjb25zdCBzZWxlY3RlZFNsb3QgPSB0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvcignLmF4LXN0YXRlLXNlbGVjdGVkJyk7XG4gICAgICBpZiAoc2VsZWN0ZWRTbG90KSB7XG4gICAgICAgIHNlbGVjdGVkU2xvdC5jbGFzc0xpc3QucmVtb3ZlKCdheC1zdGF0ZS1zZWxlY3RlZCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgIH1cbiAgICAgIGNhbGVuZGFyU2xvdHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICBlbGVtZW50ID0gZWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgaWYgKGVsZW1lbnQudGV4dENvbnRlbnQgPT0gdGhpcy5fZm9vdFByaW50LmRheSkge1xuICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnYXgtc3RhdGUtc2VsZWN0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IG9sZFZhbCA9IHRoaXMub2xkVmFsdWUoKSA/IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZSh0aGlzLm9sZFZhbHVlKCksIHRoaXMuY2FsZW5kYXIoKSkgOiBudWxsO1xuICAgIGlmICghb2xkVmFsIHx8IG9sZFZhbC5tb250aE9mWWVhciAhPT0gdmFsLm1vbnRoT2ZZZWFyIHx8IG9sZFZhbC55ZWFyICE9PSB2YWwueWVhcikge1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG4gICAgdGhpcy5vbGRWYWx1ZS5zZXQodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZUdvVG9kYXkoKSB7XG4gICAgdGhpcy5fbmF2VXNlckludGVyYWN0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLl9zZXREYXRlKHRoaXMuX3RvZGF5LmRhdGUpO1xuICAgIHRoaXMuZ29Ub2RheSgpO1xuICAgIHRoaXMuX25hdlVzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyBmb3J3YXJkIGluIHRoZSBjYWxlbmRhciBiYXNlZCBvbiB0aGUgY3VycmVudCBhY3RpdmUgdmlldyBhbmQgdGhlIGNvbmZpZ3VyZWQgY291bnQuXG4gICAqXG4gICAqIEJlaGF2aW9yIGJ5IHZpZXc6XG4gICAqIC0gZGF5IHZpZXc6IGFkdmFuY2VzIGJ5IGNvdW50IG1vbnRoc1xuICAgKiAtIG1vbnRoIHZpZXc6IGFkdmFuY2VzIGJ5IGNvdW50IHllYXJzXG4gICAqIC0geWVhciB2aWV3OiBhZHZhbmNlcyBieSAxMCDDlyBjb3VudCB5ZWFyc1xuICAgKlxuICAgKiBAcmV0dXJucyB2b2lkXG4gICAqL1xuICBuZXh0KCkge1xuICAgIHRoaXMuX25hdk5leHRQcmV2KGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgYmFja3dhcmQgaW4gdGhlIGNhbGVuZGFyIGJhc2VkIG9uIHRoZSBjdXJyZW50IGFjdGl2ZSB2aWV3IGFuZCB0aGUgY29uZmlndXJlZCBjb3VudC5cbiAgICpcbiAgICogQmVoYXZpb3IgYnkgdmlldzpcbiAgICogLSBkYXkgdmlldzogZ29lcyBiYWNrIGJ5IGNvdW50IG1vbnRoc1xuICAgKiAtIG1vbnRoIHZpZXc6IGdvZXMgYmFjayBieSBjb3VudCB5ZWFyc1xuICAgKiAtIHllYXIgdmlldzogZ29lcyBiYWNrIGJ5IDEwIMOXIGNvdW50IHllYXJzXG4gICAqXG4gICAqIEByZXR1cm5zIHZvaWRcbiAgICovXG4gIHByZXYoKSB7XG4gICAgdGhpcy5fbmF2TmV4dFByZXYodHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBmb2N1cyB0byB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGNhbGVuZGFyIHNsb3Qgb3IgdGhlIGZpcnN0IGF2YWlsYWJsZSBzbG90LlxuICAgKlxuICAgKiBAcmV0dXJucyB2b2lkXG4gICAqL1xuICBvdmVycmlkZSBmb2N1cygpIHtcbiAgICBjb25zdCBmdW5jID0gKHM6IHN0cmluZykgPT4gdGhpcy5nZXRIb3N0RWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3I8SFRNTERpdkVsZW1lbnQ+KHMpO1xuICAgIGNvbnN0IGRpdiA9IGZ1bmMoJy5heC1jYWxlbmRhci1zbG90cz5kaXYuYXgtc3RhdGUtc2VsZWN0ZWQnKSB8fCBmdW5jKCcuYXgtY2FsZW5kYXItc2xvdHM+ZGl2Jyk7XG4gICAgZGl2Py5mb2N1cygpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9uYXZOZXh0UHJldihwcmV2OiBib29sZWFuKSB7XG4gICAgY29uc3Qgc2lnbiA9IHByZXYgPyAtMSA6IDE7XG4gICAgaWYgKHRoaXMuYWN0aXZlVmlldyA9PSAnZGF5JykgdGhpcy5uYXZUbyh0aGlzLl92aWV3U3RhcnREYXRlLmFkZCgnbW9udGgnLCBzaWduICogMSAqIHRoaXMuY291bnQpKTtcbiAgICBlbHNlIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT0gJ21vbnRoJykgdGhpcy5uYXZUbyh0aGlzLl92aWV3U3RhcnREYXRlLmFkZCgneWVhcicsIHNpZ24gKiAxICogdGhpcy5jb3VudCkpO1xuICAgIGVsc2UgdGhpcy5uYXZUbyh0aGlzLl92aWV3U3RhcnREYXRlLmFkZCgneWVhcicsIHNpZ24gKiAxMCAqIHRoaXMuY291bnQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIGN1cnJlbnQgZGF0ZSBhbmQgZW1pdHMgdGhlIG5hdmlnYXRpb24gZXZlbnQuXG4gICAqXG4gICAqIEByZXR1cm5zIHZvaWRcbiAgICovXG4gIGdvVG9kYXkoKSB7XG4gICAgdGhpcy5uYXZUbyh0aGlzLl90b2RheSk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIHRvIGEgc3BlY2lmaWVkIGRhdGUgYW5kIHVwZGF0ZXMgdGhlIHZpZXcuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIG5hdmlnYXRlIHRvLCB3aGljaCBjYW4gYmUgYSBEYXRlIG9iamVjdCBvciBhbiBBWERhdGVUaW1lIGluc3RhbmNlLlxuICAgKiBAcmV0dXJucyB2b2lkXG4gICAqL1xuICBuYXZUbyhkYXRlOiBEYXRlIHwgQVhEYXRlVGltZSkge1xuICAgIGNvbnN0IHZhbCA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNvbnZlcnQoZGF0ZSwgdGhpcy5jYWxlbmRhcigpKTtcbiAgICB0aGlzLl92aWV3U3RhcnREYXRlID0gdmFsLnN0YXJ0T2YoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICAgIC8vdG8gbWFrZSBzdXJlIGl0cyByZW5kcmVkIGFuZCBkaXNwbGF5UmFuZ2UgaXMgbm90IG51bGxcbiAgICBpZiAodGhpcy52aWV3cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB2ciA9IHRoaXMuZGlzcGxheVJhbmdlO1xuICAgICAgdGhpcy5vbk5hdmlnYXRlLmVtaXQoe1xuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0aGlzLl9uYXZVc2VySW50ZXJhY3Rpb24sXG4gICAgICAgIHN0YXJ0OiB2ci5zdGFydFRpbWU/LmRhdGUsXG4gICAgICAgIGVuZDogdnIuZW5kVGltZT8uZGF0ZSxcbiAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIHByaXZhdGUgZ2V0IF9faG9zdENsYXNzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgX2NsYXNzZXMgPSB7XG4gICAgICAnYXgtc3RhdGUtZGlzYWJsZWQnOiB0aGlzLmRpc2FibGVkLFxuICAgICAgJ2F4LXN0YXRlLXJlYWRvbmx5JzogdGhpcy5yZWFkb25seSxcbiAgICAgIFtgYXgtbG9vay0ke3RoaXMubG9vaygpfWBdOiB0cnVlLFxuICAgIH07XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKF9jbGFzc2VzKVxuICAgICAgLmZpbHRlcigoYykgPT4gY1sxXSlcbiAgICAgIC5tYXAoKGMpID0+IGNbMF0pXG4gICAgICAuam9pbignICcpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9zZXREYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgaWYgKHRoaXMucmVhZG9ubHkgfHwgdGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIHRoaXMuY29tbWl0VmFsdWUodGhpcy5jYWxlbmRhclNlcnZpY2UuY29udmVydCh2YWx1ZSwgdGhpcy5jYWxlbmRhcigpKS5zdGFydE9mKCkuZGF0ZSwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBpc0Rpc2FibGVkKGRhdGU6IEFYRGF0ZVRpbWUpOiBib29sZWFuIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmRpc2FibGVkRGF0ZXMpICYmIHRoaXMuZGlzYWJsZWREYXRlcy5sZW5ndGggIT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWREYXRlcy5zb21lKChkKSA9PiBkYXRlLmVxdWFsKGQsICdkYXknKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5kaXNhYmxlZERhdGVzID09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkRGF0ZXMoZGF0ZS5kYXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNIb2xpZGF5KGRhdGU6IEFYRGF0ZVRpbWUpOiBib29sZWFuIHtcbiAgICBjb25zdCBnaCA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmhvbGlkYXlzLnNvbWUoKGQpID0+IGRhdGUuZXF1YWwoZC5kYXRlLCAnZGF5JykpO1xuICAgIGxldCBkaCA9IHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmhvbGlkYXlzLnNvbWUoKGQpID0+IGRhdGUuZXF1YWwoZC5kYXRlLCAnZGF5JykpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuaG9saWRheURhdGVzKSAmJiB0aGlzLmhvbGlkYXlEYXRlcy5sZW5ndGggIT0gMCkge1xuICAgICAgZGggPSB0aGlzLmhvbGlkYXlEYXRlcy5zb21lKChkKSA9PiBkYXRlLmVxdWFsKGQsICdkYXknKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5ob2xpZGF5RGF0ZXMgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgZGggPSB0aGlzLmhvbGlkYXlEYXRlcyhkYXRlLmRhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gZ2ggfHwgZGg7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBpc1dlZWtlbmQoZGF0ZTogQVhEYXRlVGltZSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLndlZWtlbmQoKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0aGlzLndlZWtlbmQoKS5pbmNsdWRlcyhkYXRlLndlZWtkYXlJbmRleCk7XG4gICAgfVxuICAgIGNvbnN0IHdlZWtlbmQgPSB0aGlzLmNhbGVuZGFyU2VydmljZS5yZXNvbHZlQ2FsZW5kYXIodGhpcy5jYWxlbmRhcigpKS53ZWVrZW5kO1xuICAgIHJldHVybiB3ZWVrZW5kLmluY2x1ZGVzKGRhdGUud2Vla2RheUluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIF9oYW5kbGVPbktleWRvd25FdmVudChlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgLy9UT0RPOiBjb21wbGV0ZSBrZXlib2FkIG5hdmlnYXRpb25cbiAgICBjb25zdCBpZ25vcmUgPSAoKSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH07XG4gICAgaWYgKGUuY29kZSA9PT0gJ0Fycm93UmlnaHQnIHx8IGUuY29kZSA9PT0gJ0Fycm93TGVmdCcpIHtcbiAgICAgIGlmIChlLmN0cmxLZXkpIHtcbiAgICAgICAgZS5jb2RlID09PSAnQXJyb3dSaWdodCcgPyB0aGlzLm5leHQoKSA6IHRoaXMucHJldigpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICAgIH0sIDUwKTtcbiAgICAgIH1cbiAgICAgIGlnbm9yZSgpO1xuICAgIH0gZWxzZSBpZiAoZS5jb2RlID09PSAnQXJyb3dVcCcgfHwgZS5jb2RlID09PSAnQXJyb3dEb3duJykge1xuICAgICAgaWYgKGUuY3RybEtleSkge1xuICAgICAgICBlLmNvZGUgPT09ICdBcnJvd1VwJyA/IHRoaXMubmV4dCgpIDogdGhpcy5wcmV2KCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgICAgfSwgNTApO1xuICAgICAgfVxuICAgICAgaWdub3JlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0TW9udGhOYW1lKGRhdGU6IEFYRGF0ZVRpbWUsIHN0eWxlOiAnc2hvcnQnIHwgJ2xvbmcnKSB7XG4gICAgcmV0dXJuIGBkYXRlVGltZS5tb250aHMuJHtkYXRlLmNhbGVuZGFyLm5hbWUoKX0uJHtzdHlsZX0uJHtkYXRlLm1vbnRoT2ZZZWFyIC0gMX1gO1xuICB9XG59XG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJheC1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XG48ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItYm9keVwiPlxuICBAZm9yICh2IG9mIHZpZXdzOyBsZXQgaSA9ICRpbmRleCwgZmlyc3QgPSAkZmlyc3QsIGxhc3QgPSAkbGFzdDsgdHJhY2sgaSkge1xuICAgIEBzd2l0Y2ggKGFjdGl2ZVZpZXcpIHtcbiAgICAgIEBjYXNlICgneWVhcicpIHtcbiAgICAgICAgQGlmIChzaG93TmF2aWdhdGlvbikge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci12aWV3LWhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlci1pbmZvXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW2F0dHIucmVhZG9ubHldPVwicmVhZG9ubHkgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b24gYXgtYnV0dG9uLXJvdW5kZWQgYXgtc3RhdGUtZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlTmF2Q2xpY2soJGV2ZW50LCAneWVhcicpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHYucmFuZ2Uuc3RhcnRUaW1lIHwgZm9ybWF0OiAnZGF0ZScgOiB7IGNhbGVuZGFyOiBjYWxlbmRhcigpLCBmb3JtYXQ6ICdZWVlZJyB9IHwgYXN5bmMgfX0gLVxuICAgICAgICAgICAgICAgIHt7IHYucmFuZ2UuZW5kVGltZSB8IGZvcm1hdDogJ2RhdGUnIDogeyBjYWxlbmRhcjogY2FsZW5kYXIoKSwgZm9ybWF0OiAnWVlZWScgfSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKGxhc3QpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlci1idXR0b25zXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1yb3VuZGVkIGF4LWJ1dHRvbi1pY29uIGF4LW5leHRcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVQcmV2Q2xpY2soKVwiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0BhY29yZXg6Y29tbW9uLmFjdGlvbnMucHJldicgfCB0cmFuc2xhdGUgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tY2hldnJvbi1sZWZ0XCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIucmVhZG9ubHldPVwicmVhZG9ubHkgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24tcm91bmRlZCBheC1idXR0b24taWNvblwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZU5leHRDbGljaygpXCJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQGFjb3JleDpjb21tb24uYWN0aW9ucy5uZXh0JyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jaGV2cm9uLXJpZ2h0XCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdHMgYXgtY2FsZW5kYXItc2xvdHMteWVhclwiIFtuZ0NsYXNzXT1cInsgJ2F4LWRlZmF1bHQnOiAheWVhckNlbGxUZW1wbGF0ZSB9XCI+XG4gICAgICAgICAgQGZvciAoc2xvdCBvZiB2LnNsb3RzOyB0cmFjayBzbG90LnRleHQpIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90XCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LXN0YXRlLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2xvdC5jc3NDbGFzc1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlU2xvdENsaWNrKCRldmVudCwgc2xvdClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAaWYgKHllYXJDZWxsVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ5ZWFyQ2VsbFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiB7IHNsb3Q6IHNsb3QgfSB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAge3sgc2xvdC50ZXh0IH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICBAY2FzZSAoJ21vbnRoJykge1xuICAgICAgICBAaWYgKHNob3dOYXZpZ2F0aW9uKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLXZpZXctaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItaGVhZGVyLWluZm9cIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24tcm91bmRlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVOYXZDbGljaygkZXZlbnQsICd5ZWFyJylcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdi5yYW5nZS5zdGFydFRpbWUgfCBmb3JtYXQ6ICdkYXRlJyA6IHsgY2FsZW5kYXI6IGNhbGVuZGFyKCksIGZvcm1hdDogJ1lZWVknIH0gfCBhc3luYyB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgQGlmIChsYXN0KSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1oZWFkZXItYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIucmVhZG9ubHldPVwicmVhZG9ubHkgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24tcm91bmRlZCBheC1idXR0b24taWNvblwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZVByZXZDbGljaygpXCJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQGFjb3JleDpjb21tb24uYWN0aW9ucy5wcmV2JyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jaGV2cm9uLWxlZnRcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1yb3VuZGVkIGF4LWJ1dHRvbi1pY29uXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlTmV4dENsaWNrKClcIlxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidAYWNvcmV4OmNvbW1vbi5hY3Rpb25zLm5leHQnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLWNoZXZyb24tcmlnaHRcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLXNsb3RzIGF4LWNhbGVuZGFyLXNsb3RzLW1vbnRoXCIgW25nQ2xhc3NdPVwieyAnYXgtZGVmYXVsdCc6ICFtb250aENlbGxUZW1wbGF0ZSB9XCI+XG4gICAgICAgICAgQGZvciAoc2xvdCBvZiB2LnNsb3RzOyB0cmFjayBzbG90KSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNsb3QuY3NzQ2xhc3NcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZVNsb3RDbGljaygkZXZlbnQsIHNsb3QpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQGlmIChtb250aENlbGxUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1vbnRoQ2VsbFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiB7IHNsb3Q6IHNsb3QgfSB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8ZGl2IFt0aXRsZV09XCJzbG90LmRhdGUgfCBmb3JtYXQ6ICdkYXRlJyA6IHsgY2FsZW5kYXI6IGNhbGVuZGFyKCksIGZvcm1hdDogJ01NTU0gWVlZWScgfSB8IGFzeW5jXCI+XG4gICAgICAgICAgICAgICAgICB7eyBgQGFjb3JleDoke2dldE1vbnRoTmFtZShzbG90LmRhdGUsICdzaG9ydCcpfWAgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgQGRlZmF1bHQge1xuICAgICAgICBAaWYgKHNob3dOYXZpZ2F0aW9uICYmIGxvb2soKSA9PT0gJ3NlbGVjdCcgJiYgbGFzdCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci12aWV3LWhlYWRlciBheC1jYWxlbmRhci1kYXktbmF2XCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgIFthdHRyLnJlYWRvbmx5XT1cInJlYWRvbmx5ID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24tcm91bmRlZCBheC1idXR0b24taWNvbiBheC1jYWxlbmRhci1kYXktbmF2LXByZXZcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZVByZXZDbGljaygpXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIidAYWNvcmV4OmNvbW1vbi5hY3Rpb25zLnByZXYnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtaWNvblwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgJ2F4LWljb24tY2hldnJvbi1sZWZ0JzogIWlzUnRsKCksXG4gICAgICAgICAgICAgICAgICAnYXgtaWNvbi1jaGV2cm9uLXJpZ2h0JzogaXNSdGwoKSxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWRheS1uYXYtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxheC1zZWxlY3QtYm94XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJheC1jYWxlbmRhci1tb250aC1zZWxlY3QgYXgtc21cIlxuICAgICAgICAgICAgICAgIGxvb2s9XCJub25lXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwiX21vbnRoT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgdGV4dEZpZWxkPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgdmFsdWVGaWVsZD1cImlkXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJfY3VycmVudE1vbnRoXCJcbiAgICAgICAgICAgICAgICBbbWF4VmlzaWJsZUl0ZW1zXT1cIjEyXCJcbiAgICAgICAgICAgICAgICBbaXRlbUhlaWdodF09XCIzMlwiXG4gICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cIl9oYW5kbGVNb250aFNlbGVjdENoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgID48L2F4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgIDxheC1zZWxlY3QtYm94XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJheC1jYWxlbmRhci15ZWFyLXNlbGVjdCBheC1zbVwiXG4gICAgICAgICAgICAgICAgbG9vaz1cIm5vbmVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJfeWVhck9wdGlvbnNcIlxuICAgICAgICAgICAgICAgIHRleHRGaWVsZD1cInRleHRcIlxuICAgICAgICAgICAgICAgIHZhbHVlRmllbGQ9XCJpZFwiXG4gICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiX2N1cnJlbnRZZWFyXCJcbiAgICAgICAgICAgICAgICBbbWF4VmlzaWJsZUl0ZW1zXT1cIjEwXCJcbiAgICAgICAgICAgICAgICBbaXRlbUhlaWdodF09XCIzMlwiXG4gICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cIl9oYW5kbGVZZWFyU2VsZWN0Q2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgPjwvYXgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b24gYXgtYnV0dG9uLXJvdW5kZWQgYXgtYnV0dG9uLWljb24gYXgtY2FsZW5kYXItZGF5LW5hdi1uZXh0XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVOZXh0Q2xpY2soKVwiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCInQGFjb3JleDpjb21tb24uYWN0aW9ucy5uZXh0JyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWljb25cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICdheC1pY29uLWNoZXZyb24tcmlnaHQnOiAhaXNSdGwoKSxcbiAgICAgICAgICAgICAgICAgICdheC1pY29uLWNoZXZyb24tbGVmdCc6IGlzUnRsKCksXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKHNob3dOYXZpZ2F0aW9uICYmIGxvb2soKSA9PT0gJ2NsYXNzaWMnKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLXZpZXctaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItaGVhZGVyLWluZm9cIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24tcm91bmRlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVOYXZDbGljaygkZXZlbnQsICd5ZWFyJylcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdi5yYW5nZS5zdGFydFRpbWUgfCBmb3JtYXQ6ICdkYXRlJyA6IHsgY2FsZW5kYXI6IGNhbGVuZGFyKCksIGZvcm1hdDogJ1lZWVknIH0gfCBhc3luYyB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24tcm91bmRlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVOYXZDbGljaygkZXZlbnQsICdtb250aCcpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHYucmFuZ2Uuc3RhcnRUaW1lIHwgZm9ybWF0OiAnZGF0ZScgOiB7IGNhbGVuZGFyOiBjYWxlbmRhcigpLCBmb3JtYXQ6ICdNTU1NJyB9IHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAobGFzdCkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItaGVhZGVyLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLnJlYWRvbmx5XT1cInJlYWRvbmx5ID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b24gYXgtYnV0dG9uLXJvdW5kZWQgYXgtYnV0dG9uLWljb25cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVQcmV2Q2xpY2soKVwiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0BhY29yZXg6Y29tbW9uLmFjdGlvbnMucHJldicgfCB0cmFuc2xhdGUgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tY2hldnJvbi1sZWZ0XCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIucmVhZG9ubHldPVwicmVhZG9ubHkgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24tcm91bmRlZCBheC1idXR0b24taWNvblwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZU5leHRDbGljaygpXCJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQGFjb3JleDpjb21tb24uYWN0aW9ucy5uZXh0JyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jaGV2cm9uLXJpZ2h0XCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItd2Vla1wiPlxuICAgICAgICAgIEBmb3IgKGQgb2Ygd2Vla0xheW91dCgpOyB0cmFjayBkKSB7XG4gICAgICAgICAgICA8ZGl2Pnt7ICdAYWNvcmV4OmRhdGVUaW1lLndlZWtkYXlzLnNob3J0LicgKyBkIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1zbG90cyBheC1jYWxlbmRhci1zbG90cy1kYXlcIiBbbmdDbGFzc109XCJ7ICdheC1kZWZhdWx0JzogIWRheUNlbGxUZW1wbGF0ZSB9XCI+XG4gICAgICAgICAgQGZvciAoc2xvdCBvZiB2LnNsb3RzOyB0cmFjayBzbG90KSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtY2FsZW5kYXItc2xvdFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNsb3QuY3NzQ2xhc3NcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZVNsb3RDbGljaygkZXZlbnQsIHNsb3QpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgW2F4UmlwcGxlXVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAaWYgKGRheUNlbGxUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRheUNlbGxUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogeyBzbG90OiBzbG90IH0gfVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGRpdiBbdGl0bGVdPVwic2xvdC5kYXRlIHwgZm9ybWF0OiAnZGF0ZScgOiB7IGNhbGVuZGFyOiBjYWxlbmRhcigpLCBmb3JtYXQ6ICdsb25nJyB9IHwgYXN5bmNcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHNsb3QudGV4dCB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIH1cbiAgfVxuPC9kaXY+XG48bmctY29udGVudCBzZWxlY3Q9XCJheC1mb290ZXJcIj48L25nLWNvbnRlbnQ+XG4iXX0=","import { AXComponent, AXValuableComponent, MXInteractiveComponent, MXValueComponent, } from '@acorex/cdk/common';\nimport { AXCalendarService } from '@acorex/core/date-time';\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { Component, ViewChild, ViewEncapsulation, forwardRef, inject, input, linkedSignal, } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport { MXCalendarBaseComponent } from './calendar.class';\nimport { AXCalendarComponent } from './calendar.component';\nimport * as i0 from \"@angular/core\";\nexport class AXCalendarRangeComponent extends classes((MXValueComponent), MXInteractiveComponent, MXCalendarBaseComponent) {\n /**\n * @ignore\n */\n constructor() {\n super();\n this.formatService = inject(AXFormatService);\n this.unsubscriber = inject(AXUnsubscriber);\n this.calendar = linkedSignal(() => this.type ?? this.localeService.activeProfile().calendar.system, ...(ngDevMode ? [{ debugName: \"calendar\" }] : []));\n /**\n * Day view navigation style passed through to embedded calendars.\n */\n this.look = input('select', ...(ngDevMode ? [{ debugName: \"look\" }] : []));\n /**\n * @ignore\n */\n this._calendarService = inject(AXCalendarService);\n this._navText = '';\n /**\n * @ignore\n */\n this._navUserInteraction = false;\n /** w\n * @ignore\n */\n this.getCellClass = (date) => {\n //const d = this._calendarService.create(date, this.type);\n // check from value\n if (!this._calendarService.isValidDate(this.value.from)) {\n return null;\n }\n const from = this._calendarService.create(this.value.from, this.type);\n if (this.value.from && date.equal(from, 'day')) {\n return 'ax-range-start';\n }\n // check end value\n if (!this._calendarService.isValidDate(this.value.end)) {\n return null;\n }\n const end = this._calendarService.create(this.value.end, this.type);\n if (this.value.end && date.equal(end, 'day'))\n return 'ax-range-end';\n if (this.value.from && this.value.end && date.compare(from, 'day') > 0 && date.compare(end, 'day') < 0)\n return 'ax-range-between';\n return null;\n };\n this.defaultValue = { from: null, end: null };\n this.calendarService.calendarChanges$.pipe(this.unsubscriber.takeUntilDestroy).subscribe((value) => {\n if (!this.type)\n this.calendar.set(value.name());\n this.render();\n });\n }\n /**\n * @ignore\n */\n ngOnInit() {\n super.ngOnInit();\n }\n /**\n * @ignore\n */\n ngAfterViewInit() {\n this._syncNav1();\n }\n internalValueChanged(value) {\n this._c1.render();\n this._c2.render();\n }\n /**\n * @ignore\n */\n handleSlotClick(e) {\n this.onSlotClick.emit({\n component: this,\n item: e.item,\n isUserInteraction: true,\n nativeEvent: e,\n });\n if (this._c1.activeView == this.depth) {\n if (!this.value.from || (this.value.from && this.value.end)) {\n this.commitValue({ from: e.item, end: null }, true);\n }\n if (this.value.from && e.item <= this.value.from) {\n this.commitValue({ from: e.item, end: this.value.end }, true);\n }\n else if (this.value.from && !this.value.end) {\n this.commitValue({ from: this.value.from, end: e.item }, true);\n }\n }\n else {\n if (e.component == this._c1) {\n this._syncNav1();\n }\n if (e.component == this._c2) {\n this._syncNav2(this._calendarService.create(e.item, this.type));\n }\n }\n this._c1.render();\n this._c2.render();\n }\n /**\n * @ignore\n */\n handlePrevClick() {\n this._navUserInteraction = true;\n const view = this._c1.activeView;\n const d1 = this._c1.displayRange.startTime;\n if (view == 'day' || view == 'month') {\n this._c1.prev();\n }\n else if (view == 'year') {\n this._c1.navTo(d1.add('year', -20));\n }\n this._navUserInteraction = false;\n }\n /**\n * @ignore\n */\n handleNextClick() {\n this._navUserInteraction = true;\n const view = this._c1.activeView;\n const d1 = this._c1.displayRange.startTime;\n if (view == 'day' || view == 'month') {\n this._c1.next();\n }\n else if (view == 'year') {\n this._c1.navTo(d1.add('year', 20));\n }\n this._navUserInteraction = false;\n }\n /**\n * @ignore\n */\n handleNavClick() {\n this._c1.toggleView();\n }\n /**\n * @ignore\n */\n _syncNavText() {\n const view = this._c1.activeView;\n const d1 = this._c1.displayRange.startTime;\n if (view == 'day') {\n const d2 = this._c2.displayRange.endTime;\n this._navText = `${this.formatService.format(d1, 'datetime', { format: 'MMM yyyy' })} - ${this.formatService.format(d2, 'datetime', { format: 'MMM yyyy' })}`;\n }\n else if (view == 'month' || view == 'year') {\n const d2 = this._c2.displayRange.endTime;\n this._navText = `${this.formatService.format(d1, 'datetime', { format: 'yyyy' })} - ${this.formatService.format(d2, 'datetime', { format: 'yyyy' })}`;\n }\n }\n /**\n * @ignore\n */\n handleNavigate() {\n this._syncNav1();\n this.onNavigate.emit({\n component: this,\n isUserInteraction: this._navUserInteraction,\n start: this._c1.displayRange.startTime?.date,\n end: this._c2.displayRange.endTime?.date,\n htmlElement: this.getHostElement(),\n });\n }\n /**\n * @ignore\n */\n handleActiveViewChange1() {\n this._c2.activeView = this._c1.activeView;\n this._syncNav1();\n }\n /**\n * @ignore\n */\n handleActiveViewChange2() {\n if (this._c2.activeView != this._c1.activeView) {\n this._c1.activeView = this._c2.activeView;\n }\n }\n /**\n * @ignore\n */\n _syncNav1() {\n const view = (this._c2.activeView = this._c1.activeView);\n const range = this._c1.displayRange;\n if (view == 'day') {\n this._c2.navTo(range.startTime.add('month', 1));\n }\n else if (view == 'month') {\n this._c2.navTo(range.startTime.add('year', 1));\n }\n else if (view == 'year') {\n this._c2.navTo(range.endTime.add('year', 4));\n }\n this._syncNavText();\n }\n /**\n * @ignore\n */\n _syncNav2(e) {\n const view = this._c2.activeView;\n if (view == 'month') {\n this._c1.navTo(e.add('month', -1));\n }\n else if (view == 'year') {\n this._c1.navTo(e.startOf('year'));\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXCalendarRangeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.3\", type: AXCalendarRangeComponent, isStandalone: true, selector: \"ax-calendar-range\", inputs: { rtl: { classPropertyName: \"rtl\", publicName: \"rtl\", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: \"readonly\", publicName: \"readonly\", isSignal: false, isRequired: false, transformFunction: null }, value: { classPropertyName: \"value\", publicName: \"value\", isSignal: false, isRequired: false, transformFunction: null }, name: { classPropertyName: \"name\", publicName: \"name\", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: false, isRequired: false, transformFunction: null }, depth: { classPropertyName: \"depth\", publicName: \"depth\", isSignal: false, isRequired: false, transformFunction: null }, activeView: { classPropertyName: \"activeView\", publicName: \"activeView\", isSignal: false, isRequired: false, transformFunction: null }, minValue: { classPropertyName: \"minValue\", publicName: \"minValue\", isSignal: false, isRequired: false, transformFunction: null }, maxValue: { classPropertyName: \"maxValue\", publicName: \"maxValue\", isSignal: false, isRequired: false, transformFunction: null }, disabledDates: { classPropertyName: \"disabledDates\", publicName: \"disabledDates\", isSignal: false, isRequired: false, transformFunction: null }, holidayDates: { classPropertyName: \"holidayDates\", publicName: \"holidayDates\", isSignal: false, isRequired: false, transformFunction: null }, type: { classPropertyName: \"type\", publicName: \"type\", isSignal: false, isRequired: false, transformFunction: null }, dayCellTemplate: { classPropertyName: \"dayCellTemplate\", publicName: \"dayCellTemplate\", isSignal: false, isRequired: false, transformFunction: null }, monthCellTemplate: { classPropertyName: \"monthCellTemplate\", publicName: \"monthCellTemplate\", isSignal: false, isRequired: false, transformFunction: null }, yearCellTemplate: { classPropertyName: \"yearCellTemplate\", publicName: \"yearCellTemplate\", isSignal: false, isRequired: false, transformFunction: null }, cellClass: { classPropertyName: \"cellClass\", publicName: \"cellClass\", isSignal: false, isRequired: false, transformFunction: null }, showNavigation: { classPropertyName: \"showNavigation\", publicName: \"showNavigation\", isSignal: false, isRequired: false, transformFunction: null }, look: { classPropertyName: \"look\", publicName: \"look\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onOptionChanged: \"onOptionChanged\", valueChange: \"valueChange\", onValueChanged: \"onValueChanged\", onBlur: \"onBlur\", onFocus: \"onFocus\", depthChange: \"depthChange\", typeChange: \"typeChange\", activeViewChange: \"activeViewChange\", disabledDatesChange: \"disabledDatesChange\", holidayDatesChange: \"holidayDatesChange\", onNavigate: \"onNavigate\", onSlotClick: \"onSlotClick\" }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXCalendarRangeComponent),\n multi: true,\n },\n {\n provide: AXValuableComponent,\n useExisting: AXCalendarRangeComponent,\n },\n AXUnsubscriber,\n { provide: AXComponent, useExisting: AXCalendarRangeComponent },\n ], viewQueries: [{ propertyName: \"_c1\", first: true, predicate: [\"c1\"], descendants: true, static: true }, { propertyName: \"_c2\", first: true, predicate: [\"c2\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: \"<div class=\\\"ax-calendar-range-header\\\">\\n <ng-content></ng-content>\\n <div class=\\\"ax-calendar-header-range-info\\\">\\n <button type=\\\"button\\\" [attr.disabled]=\\\"disabled ? '' : null\\\" class=\\\"ax-general-button\\\" (click)=\\\"handleNavClick()\\\">\\n {{ _navText }}\\n </button>\\n </div>\\n <div class=\\\"ax-calendar-header-range-buttons\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-icon\\\"\\n (click)=\\\"handlePrevClick()\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-left\\\"></i>\\n </button>\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-icon\\\"\\n (click)=\\\"handleNextClick()\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-right\\\"></i>\\n </button>\\n </div>\\n</div>\\n<div class=\\\"ax-calendar-range-body\\\">\\n <ax-calendar\\n #c1\\n [showNavigation]=\\\"false\\\"\\n [readonly]=\\\"true\\\"\\n [cellClass]=\\\"getCellClass\\\"\\n [type]=\\\"type\\\"\\n [dayCellTemplate]=\\\"dayCellTemplate\\\"\\n [monthCellTemplate]=\\\"monthCellTemplate\\\"\\n [yearCellTemplate]=\\\"yearCellTemplate\\\"\\n [minValue]=\\\"minValue\\\"\\n [maxValue]=\\\"maxValue\\\"\\n [depth]=\\\"depth\\\"\\n [look]=\\\"look()\\\"\\n (onSlotClick)=\\\"handleSlotClick($event)\\\"\\n (onNavigate)=\\\"handleNavigate()\\\"\\n (activeViewChange)=\\\"handleActiveViewChange1()\\\"\\n >\\n </ax-calendar>\\n <ax-calendar\\n #c2\\n [showNavigation]=\\\"false\\\"\\n [readonly]=\\\"true\\\"\\n [cellClass]=\\\"getCellClass\\\"\\n [type]=\\\"type\\\"\\n [dayCellTemplate]=\\\"dayCellTemplate\\\"\\n [monthCellTemplate]=\\\"monthCellTemplate\\\"\\n [yearCellTemplate]=\\\"yearCellTemplate\\\"\\n [minValue]=\\\"minValue\\\"\\n [maxValue]=\\\"maxValue\\\"\\n [depth]=\\\"depth\\\"\\n [look]=\\\"look()\\\"\\n (onSlotClick)=\\\"handleSlotClick($event)\\\"\\n (activeViewChange)=\\\"handleActiveViewChange2()\\\"\\n >\\n </ax-calendar>\\n</div>\\n\", styles: [\"ax-calendar-range{--ax-comp-calendar-range-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-calendar-slot-range-text-color: var(--ax-sys-color-on-primary-surface);--ax-comp-calendar-slot-range-between-bg-color: var(--ax-sys-color-primary-surface), .5;--ax-comp-calendar-slot-range-start-end-bg-color: var(--ax-sys-color-primary-surface)}.ax-dark ax-calendar-range{--ax-comp-calendar-range-text-color: var(--ax-sys-color-on-darkest-surface)}html[dir=rtl] ax-calendar-range .ax-calendar-header-range-buttons .ax-icon{-moz-transform:scale(-1,1);-o-transform:scale(-1,1);-webkit-transform:scale(-1,1);transform:scaleX(-1)}ax-calendar-range{display:block;padding:.5rem;color:rgb(var(--ax-comp-calendar-range-text-color));background-color:rgba(var(--ax-comp-calendar-range-bg-color))}ax-calendar-range .ax-calendar-range-header{display:flex;justify-content:space-between;padding-top:var(--ax-comp-calendar-range-header-padding-t, .25rem);padding-left:var(--ax-comp-calendar-range-header-padding-x, .25rem);padding-right:var(--ax-comp-calendar-range-header-padding-x, .25rem)}ax-calendar-range .ax-calendar-range-header .ax-calendar-header-range-info{font-weight:500}ax-calendar-range .ax-calendar-range-header .ax-calendar-header-range-buttons{display:flex}ax-calendar-range .ax-calendar-range-body{display:flex;flex-direction:row}@media (min-width: 320px) and (max-width: 640px){ax-calendar-range .ax-calendar-range-body{flex-direction:column}}ax-calendar-range ax-calendar{margin:0;padding:0}ax-calendar-range ax-calendar .ax-calendar-body{margin-top:0;padding-top:0}ax-calendar-range ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-range-between{color:rgba(var(--ax-comp-calendar-slot-range-text-color));background-color:rgba(var(--ax-comp-calendar-slot-range-between-bg-color))}ax-calendar-range ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-range-start,ax-calendar-range ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-range-end{color:rgba(var(--ax-comp-calendar-slot-range-text-color));background-color:rgba(var(--ax-comp-calendar-slot-range-start-end-bg-color))}@media (min-width: 768px){ax-calendar-range ax-calendar .ax-calendar-body>div{width:100%!important}}\\n\"], dependencies: [{ kind: \"component\", type: AXCalendarComponent, selector: \"ax-calendar\", inputs: [\"rtl\", \"readonly\", \"value\", \"name\", \"disabled\", \"depth\", \"activeView\", \"minValue\", \"maxValue\", \"disabledDates\", \"holidayDates\", \"type\", \"dayCellTemplate\", \"monthCellTemplate\", \"yearCellTemplate\", \"cellClass\", \"showNavigation\", \"count\", \"id\", \"weekend\", \"weekdays\", \"look\", \"yearRange\"], outputs: [\"onOptionChanged\", \"valueChange\", \"onValueChanged\", \"minValueChange\", \"maxValueChange\", \"onBlur\", \"onFocus\", \"depthChange\", \"typeChange\", \"activeViewChange\", \"disabledDatesChange\", \"holidayDatesChange\", \"onNavigate\", \"onSlotClick\", \"countChange\"] }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXCalendarRangeComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-calendar-range', encapsulation: ViewEncapsulation.None, inputs: [\n 'rtl',\n 'readonly',\n 'value',\n 'name',\n 'disabled',\n 'depth',\n 'activeView',\n 'minValue',\n 'maxValue',\n 'disabledDates',\n 'holidayDates',\n 'type',\n 'dayCellTemplate',\n 'monthCellTemplate',\n 'yearCellTemplate',\n 'cellClass',\n 'showNavigation',\n ], outputs: [\n 'onOptionChanged',\n 'valueChange',\n 'onValueChanged',\n 'onBlur',\n 'onFocus',\n 'depthChange',\n 'typeChange',\n 'activeViewChange',\n 'disabledDatesChange',\n 'holidayDatesChange',\n 'onNavigate',\n 'onSlotClick',\n ], providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXCalendarRangeComponent),\n multi: true,\n },\n {\n provide: AXValuableComponent,\n useExisting: AXCalendarRangeComponent,\n },\n AXUnsubscriber,\n { provide: AXComponent, useExisting: AXCalendarRangeComponent },\n ], imports: [AXCalendarComponent], template: \"<div class=\\\"ax-calendar-range-header\\\">\\n <ng-content></ng-content>\\n <div class=\\\"ax-calendar-header-range-info\\\">\\n <button type=\\\"button\\\" [attr.disabled]=\\\"disabled ? '' : null\\\" class=\\\"ax-general-button\\\" (click)=\\\"handleNavClick()\\\">\\n {{ _navText }}\\n </button>\\n </div>\\n <div class=\\\"ax-calendar-header-range-buttons\\\">\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-icon\\\"\\n (click)=\\\"handlePrevClick()\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-left\\\"></i>\\n </button>\\n <button\\n type=\\\"button\\\"\\n [attr.disabled]=\\\"disabled ? '' : null\\\"\\n class=\\\"ax-general-button ax-button-icon\\\"\\n (click)=\\\"handleNextClick()\\\"\\n >\\n <i class=\\\"ax-icon ax-icon-chevron-right\\\"></i>\\n </button>\\n </div>\\n</div>\\n<div class=\\\"ax-calendar-range-body\\\">\\n <ax-calendar\\n #c1\\n [showNavigation]=\\\"false\\\"\\n [readonly]=\\\"true\\\"\\n [cellClass]=\\\"getCellClass\\\"\\n [type]=\\\"type\\\"\\n [dayCellTemplate]=\\\"dayCellTemplate\\\"\\n [monthCellTemplate]=\\\"monthCellTemplate\\\"\\n [yearCellTemplate]=\\\"yearCellTemplate\\\"\\n [minValue]=\\\"minValue\\\"\\n [maxValue]=\\\"maxValue\\\"\\n [depth]=\\\"depth\\\"\\n [look]=\\\"look()\\\"\\n (onSlotClick)=\\\"handleSlotClick($event)\\\"\\n (onNavigate)=\\\"handleNavigate()\\\"\\n (activeViewChange)=\\\"handleActiveViewChange1()\\\"\\n >\\n </ax-calendar>\\n <ax-calendar\\n #c2\\n [showNavigation]=\\\"false\\\"\\n [readonly]=\\\"true\\\"\\n [cellClass]=\\\"getCellClass\\\"\\n [type]=\\\"type\\\"\\n [dayCellTemplate]=\\\"dayCellTemplate\\\"\\n [monthCellTemplate]=\\\"monthCellTemplate\\\"\\n [yearCellTemplate]=\\\"yearCellTemplate\\\"\\n [minValue]=\\\"minValue\\\"\\n [maxValue]=\\\"maxValue\\\"\\n [depth]=\\\"depth\\\"\\n [look]=\\\"look()\\\"\\n (onSlotClick)=\\\"handleSlotClick($event)\\\"\\n (activeViewChange)=\\\"handleActiveViewChange2()\\\"\\n >\\n </ax-calendar>\\n</div>\\n\", styles: [\"ax-calendar-range{--ax-comp-calendar-range-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-calendar-slot-range-text-color: var(--ax-sys-color-on-primary-surface);--ax-comp-calendar-slot-range-between-bg-color: var(--ax-sys-color-primary-surface), .5;--ax-comp-calendar-slot-range-start-end-bg-color: var(--ax-sys-color-primary-surface)}.ax-dark ax-calendar-range{--ax-comp-calendar-range-text-color: var(--ax-sys-color-on-darkest-surface)}html[dir=rtl] ax-calendar-range .ax-calendar-header-range-buttons .ax-icon{-moz-transform:scale(-1,1);-o-transform:scale(-1,1);-webkit-transform:scale(-1,1);transform:scaleX(-1)}ax-calendar-range{display:block;padding:.5rem;color:rgb(var(--ax-comp-calendar-range-text-color));background-color:rgba(var(--ax-comp-calendar-range-bg-color))}ax-calendar-range .ax-calendar-range-header{display:flex;justify-content:space-between;padding-top:var(--ax-comp-calendar-range-header-padding-t, .25rem);padding-left:var(--ax-comp-calendar-range-header-padding-x, .25rem);padding-right:var(--ax-comp-calendar-range-header-padding-x, .25rem)}ax-calendar-range .ax-calendar-range-header .ax-calendar-header-range-info{font-weight:500}ax-calendar-range .ax-calendar-range-header .ax-calendar-header-range-buttons{display:flex}ax-calendar-range .ax-calendar-range-body{display:flex;flex-direction:row}@media (min-width: 320px) and (max-width: 640px){ax-calendar-range .ax-calendar-range-body{flex-direction:column}}ax-calendar-range ax-calendar{margin:0;padding:0}ax-calendar-range ax-calendar .ax-calendar-body{margin-top:0;padding-top:0}ax-calendar-range ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-range-between{color:rgba(var(--ax-comp-calendar-slot-range-text-color));background-color:rgba(var(--ax-comp-calendar-slot-range-between-bg-color))}ax-calendar-range ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-range-start,ax-calendar-range ax-calendar .ax-calendar-body .ax-calendar-slots .ax-calendar-slot.ax-range-end{color:rgba(var(--ax-comp-calendar-slot-range-text-color));background-color:rgba(var(--ax-comp-calendar-slot-range-start-end-bg-color))}@media (min-width: 768px){ax-calendar-range ax-calendar .ax-calendar-body>div{width:100%!important}}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { _c1: [{\n type: ViewChild,\n args: ['c1', { static: true }]\n }], _c2: [{\n type: ViewChild,\n args: ['c2', { static: true }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItcmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jYWxlbmRhci9zcmMvbGliL2NhbGVuZGFyLXJhbmdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY2FsZW5kYXIvc3JjL2xpYi9jYWxlbmRhci1yYW5nZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUVYLG1CQUFtQixFQUNuQixzQkFBc0IsRUFDdEIsZ0JBQWdCLEdBQ2pCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGlCQUFpQixFQUFjLE1BQU0sd0JBQXdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBRUwsU0FBUyxFQUNULFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbkMsT0FBTyxFQUFxRCx1QkFBdUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQXVEM0QsTUFBTSxPQUFPLHdCQUNYLFNBQVEsT0FBTyxDQUFDLENBQUEsZ0JBQStCLENBQUEsRUFBRSxzQkFBc0IsRUFBRSx1QkFBdUIsQ0FBQztJQStCakc7O09BRUc7SUFDSDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBaENGLGtCQUFh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LGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLFdBQVc7d0JBQ1gsZ0JBQWdCO3FCQUNqQixXQUNRO3dCQUNQLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLFFBQVE7d0JBQ1IsU0FBUzt3QkFDVCxhQUFhO3dCQUNiLFlBQVk7d0JBQ1osa0JBQWtCO3dCQUNsQixxQkFBcUI7d0JBQ3JCLG9CQUFvQjt3QkFDcEIsWUFBWTt3QkFDWixhQUFhO3FCQUNkLGFBQ1U7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUM7NEJBQ3ZELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsMEJBQTBCO3lCQUN0Qzt3QkFDRCxjQUFjO3dCQUNkLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLDBCQUEwQixFQUFFO3FCQUNoRSxXQUNRLENBQUMsbUJBQW1CLENBQUM7d0RBc0J0QixHQUFHO3NCQURWLFNBQVM7dUJBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJekIsR0FBRztzQkFEVixTQUFTO3VCQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWENvbXBvbmVudCxcbiAgQVhSYW5nZSxcbiAgQVhWYWx1YWJsZUNvbXBvbmVudCxcbiAgTVhJbnRlcmFjdGl2ZUNvbXBvbmVudCxcbiAgTVhWYWx1ZUNvbXBvbmVudCxcbn0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYQ2FsZW5kYXJTZXJ2aWNlLCBBWERhdGVUaW1lIH0gZnJvbSAnQGFjb3JleC9jb3JlL2RhdGUtdGltZSc7XG5pbXBvcnQgeyBBWEZvcm1hdFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFYVW5zdWJzY3JpYmVyIH0gZnJvbSAnQGFjb3JleC9jb3JlL3V0aWxzJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgZm9yd2FyZFJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbGlua2VkU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY2xhc3NlcyB9IGZyb20gJ3BvbHl0eXBlJztcbmltcG9ydCB7IEFYQ2FsZW5kYXJOYXZpZ2F0aW9uTG9va1R5cGUsIEFYQ2FsZW5kYXJTbG90Q2xpY2ssIE1YQ2FsZW5kYXJCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci5jbGFzcyc7XG5pbXBvcnQgeyBBWENhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1jYWxlbmRhci1yYW5nZScsXG4gIHRlbXBsYXRlVXJsOiAnY2FsZW5kYXItcmFuZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnY2FsZW5kYXItcmFuZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaW5wdXRzOiBbXG4gICAgJ3J0bCcsXG4gICAgJ3JlYWRvbmx5JyxcbiAgICAndmFsdWUnLFxuICAgICduYW1lJyxcbiAgICAnZGlzYWJsZWQnLFxuICAgICdkZXB0aCcsXG4gICAgJ2FjdGl2ZVZpZXcnLFxuICAgICdtaW5WYWx1ZScsXG4gICAgJ21heFZhbHVlJyxcbiAgICAnZGlzYWJsZWREYXRlcycsXG4gICAgJ2hvbGlkYXlEYXRlcycsXG4gICAgJ3R5cGUnLFxuICAgICdkYXlDZWxsVGVtcGxhdGUnLFxuICAgICdtb250aENlbGxUZW1wbGF0ZScsXG4gICAgJ3llYXJDZWxsVGVtcGxhdGUnLFxuICAgICdjZWxsQ2xhc3MnLFxuICAgICdzaG93TmF2aWdhdGlvbicsXG4gIF0sXG4gIG91dHB1dHM6IFtcbiAgICAnb25PcHRpb25DaGFuZ2VkJyxcbiAgICAndmFsdWVDaGFuZ2UnLFxuICAgICdvblZhbHVlQ2hhbmdlZCcsXG4gICAgJ29uQmx1cicsXG4gICAgJ29uRm9jdXMnLFxuICAgICdkZXB0aENoYW5nZScsXG4gICAgJ3R5cGVDaGFuZ2UnLFxuICAgICdhY3RpdmVWaWV3Q2hhbmdlJyxcbiAgICAnZGlzYWJsZWREYXRlc0NoYW5nZScsXG4gICAgJ2hvbGlkYXlEYXRlc0NoYW5nZScsXG4gICAgJ29uTmF2aWdhdGUnLFxuICAgICdvblNsb3RDbGljaycsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQVhDYWxlbmRhclJhbmdlQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhWYWx1YWJsZUNvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWENhbGVuZGFyUmFuZ2VDb21wb25lbnQsXG4gICAgfSxcbiAgICBBWFVuc3Vic2NyaWJlcixcbiAgICB7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhDYWxlbmRhclJhbmdlQ29tcG9uZW50IH0sXG4gIF0sXG4gIGltcG9ydHM6IFtBWENhbGVuZGFyQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQVhDYWxlbmRhclJhbmdlQ29tcG9uZW50XG4gIGV4dGVuZHMgY2xhc3NlcyhNWFZhbHVlQ29tcG9uZW50PEFYUmFuZ2U8RGF0ZT4+LCBNWEludGVyYWN0aXZlQ29tcG9uZW50LCBNWENhbGVuZGFyQmFzZUNvbXBvbmVudClcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0XG57XG4gIHByaXZhdGUgZm9ybWF0U2VydmljZSA9IGluamVjdChBWEZvcm1hdFNlcnZpY2UpO1xuICBwcml2YXRlIHVuc3Vic2NyaWJlciA9IGluamVjdChBWFVuc3Vic2NyaWJlcik7XG5cbiAgcHJvdGVjdGVkIGNhbGVuZGFyID0gbGlua2VkU2lnbmFsKCgpID0+IHRoaXMudHlwZSA/PyB0aGlzLmxvY2FsZVNlcnZpY2UuYWN0aXZlUHJvZmlsZSgpLmNhbGVuZGFyLnN5c3RlbSk7XG5cbiAgLyoqXG4gICAqIERheSB2aWV3IG5hdmlnYXRpb24gc3R5bGUgcGFzc2VkIHRocm91Z2ggdG8gZW1iZWRkZWQgY2FsZW5kYXJzLlxuICAgKi9cbiAgbG9vayA9IGlucHV0PEFYQ2FsZW5kYXJOYXZpZ2F0aW9uTG9va1R5cGU+KCdzZWxlY3QnKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX2NhbGVuZGFyU2VydmljZTogQVhDYWxlbmRhclNlcnZpY2UgPSBpbmplY3QoQVhDYWxlbmRhclNlcnZpY2UpO1xuXG4gIEBWaWV3Q2hpbGQoJ2MxJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHJpdmF0ZSBfYzE6IEFYQ2FsZW5kYXJDb21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZCgnYzInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwcml2YXRlIF9jMjogQVhDYWxlbmRhckNvbXBvbmVudDtcblxuICBfbmF2VGV4dCA9ICcnO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfbmF2VXNlckludGVyYWN0aW9uID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZGVmYXVsdFZhbHVlID0geyBmcm9tOiBudWxsLCBlbmQ6IG51bGwgfTtcblxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNhbGVuZGFyQ2hhbmdlcyQucGlwZSh0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICBpZiAoIXRoaXMudHlwZSkgdGhpcy5jYWxlbmRhci5zZXQodmFsdWUubmFtZSgpKTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fc3luY05hdjEoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGludGVybmFsVmFsdWVDaGFuZ2VkKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLl9jMS5yZW5kZXIoKTtcbiAgICB0aGlzLl9jMi5yZW5kZXIoKTtcbiAgfVxuXG4gIC8qKiB3XG4gICAqICBAaWdub3JlXG4gICAqL1xuICBnZXRDZWxsQ2xhc3MgPSAoZGF0ZTogQVhEYXRlVGltZSkgPT4ge1xuICAgIC8vY29uc3QgZCA9IHRoaXMuX2NhbGVuZGFyU2VydmljZS5jcmVhdGUoZGF0ZSwgdGhpcy50eXBlKTtcblxuICAgIC8vIGNoZWNrIGZyb20gdmFsdWVcbiAgICBpZiAoIXRoaXMuX2NhbGVuZGFyU2VydmljZS5pc1ZhbGlkRGF0ZSh0aGlzLnZhbHVlLmZyb20pKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgZnJvbSA9IHRoaXMuX2NhbGVuZGFyU2VydmljZS5jcmVhdGUodGhpcy52YWx1ZS5mcm9tLCB0aGlzLnR5cGUpO1xuICAgIGlmICh0aGlzLnZhbHVlLmZyb20gJiYgZGF0ZS5lcXVhbChmcm9tLCAnZGF5JykpIHtcbiAgICAgIHJldHVybiAnYXgtcmFuZ2Utc3RhcnQnO1xuICAgIH1cblxuICAgIC8vIGNoZWNrIGVuZCB2YWx1ZVxuICAgIGlmICghdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLmlzVmFsaWREYXRlKHRoaXMudmFsdWUuZW5kKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGVuZCA9IHRoaXMuX2NhbGVuZGFyU2VydmljZS5jcmVhdGUodGhpcy52YWx1ZS5lbmQsIHRoaXMudHlwZSk7XG4gICAgaWYgKHRoaXMudmFsdWUuZW5kICYmIGRhdGUuZXF1YWwoZW5kLCAnZGF5JykpIHJldHVybiAnYXgtcmFuZ2UtZW5kJztcbiAgICBpZiAodGhpcy52YWx1ZS5mcm9tICYmIHRoaXMudmFsdWUuZW5kICYmIGRhdGUuY29tcGFyZShmcm9tLCAnZGF5JykgPiAwICYmIGRhdGUuY29tcGFyZShlbmQsICdkYXknKSA8IDApXG4gICAgICByZXR1cm4gJ2F4LXJhbmdlLWJldHdlZW4nO1xuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVNsb3RDbGljayhlOiBBWENhbGVuZGFyU2xvdENsaWNrKSB7XG4gICAgdGhpcy5vblNsb3RDbGljay5lbWl0KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGl0ZW06IGUuaXRlbSxcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgfSk7XG4gICAgaWYgKHRoaXMuX2MxLmFjdGl2ZVZpZXcgPT0gdGhpcy5kZXB0aCkge1xuICAgICAgaWYgKCF0aGlzLnZhbHVlLmZyb20gfHwgKHRoaXMudmFsdWUuZnJvbSAmJiB0aGlzLnZhbHVlLmVuZCkpIHtcbiAgICAgICAgdGhpcy5jb21taXRWYWx1ZSh7IGZyb206IGUuaXRlbSwgZW5kOiBudWxsIH0sIHRydWUpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudmFsdWUuZnJvbSAmJiBlLml0ZW0gPD0gdGhpcy52YWx1ZS5mcm9tKSB7XG4gICAgICAgIHRoaXMuY29tbWl0VmFsdWUoeyBmcm9tOiBlLml0ZW0sIGVuZDogdGhpcy52YWx1ZS5lbmQgfSwgdHJ1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudmFsdWUuZnJvbSAmJiAhdGhpcy52YWx1ZS5lbmQpIHtcbiAgICAgICAgdGhpcy5jb21taXRWYWx1ZSh7IGZyb206IHRoaXMudmFsdWUuZnJvbSwgZW5kOiBlLml0ZW0gfSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChlLmNvbXBvbmVudCA9PSB0aGlzLl9jMSkge1xuICAgICAgICB0aGlzLl9zeW5jTmF2MSgpO1xuICAgICAgfVxuICAgICAgaWYgKGUuY29tcG9uZW50ID09IHRoaXMuX2MyKSB7XG4gICAgICAgIHRoaXMuX3N5bmNOYXYyKHRoaXMuX2NhbGVuZGFyU2VydmljZS5jcmVhdGUoZS5pdGVtLCB0aGlzLnR5cGUpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fYzEucmVuZGVyKCk7XG4gICAgdGhpcy5fYzIucmVuZGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVQcmV2Q2xpY2soKSB7XG4gICAgdGhpcy5fbmF2VXNlckludGVyYWN0aW9uID0gdHJ1ZTtcbiAgICBjb25zdCB2aWV3ID0gdGhpcy5fYzEuYWN0aXZlVmlldztcbiAgICBjb25zdCBkMSA9IHRoaXMuX2MxLmRpc3BsYXlSYW5nZS5zdGFydFRpbWU7XG4gICAgaWYgKHZpZXcgPT0gJ2RheScgfHwgdmlldyA9PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLl9jMS5wcmV2KCk7XG4gICAgfSBlbHNlIGlmICh2aWV3ID09ICd5ZWFyJykge1xuICAgICAgdGhpcy5fYzEubmF2VG8oZDEuYWRkKCd5ZWFyJywgLTIwKSk7XG4gICAgfVxuICAgIHRoaXMuX25hdlVzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlTmV4dENsaWNrKCkge1xuICAgIHRoaXMuX25hdlVzZXJJbnRlcmFjdGlvbiA9IHRydWU7XG4gICAgY29uc3QgdmlldyA9IHRoaXMuX2MxLmFjdGl2ZVZpZXc7XG4gICAgY29uc3QgZDEgPSB0aGlzLl9jMS5kaXNwbGF5UmFuZ2Uuc3RhcnRUaW1lO1xuICAgIGlmICh2aWV3ID09ICdkYXknIHx8IHZpZXcgPT0gJ21vbnRoJykge1xuICAgICAgdGhpcy5fYzEubmV4dCgpO1xuICAgIH0gZWxzZSBpZiAodmlldyA9PSAneWVhcicpIHtcbiAgICAgIHRoaXMuX2MxLm5hdlRvKGQxLmFkZCgneWVhcicsIDIwKSk7XG4gICAgfVxuICAgIHRoaXMuX25hdlVzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlTmF2Q2xpY2soKSB7XG4gICAgdGhpcy5fYzEudG9nZ2xlVmlldygpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9zeW5jTmF2VGV4dCgpIHtcbiAgICBjb25zdCB2aWV3ID0gdGhpcy5fYzEuYWN0aXZlVmlldztcbiAgICBjb25zdCBkMSA9IHRoaXMuX2MxLmRpc3BsYXlSYW5nZS5zdGFydFRpbWU7XG4gICAgaWYgKHZpZXcgPT0gJ2RheScpIHtcbiAgICAgIGNvbnN0IGQyID0gdGhpcy5fYzIuZGlzcGxheVJhbmdlLmVuZFRpbWU7XG4gICAgICB0aGlzLl9uYXZUZXh0ID0gYCR7dGhpcy5mb3JtYXRTZXJ2aWNlLmZvcm1hdChkMSwgJ2RhdGV0aW1lJywgeyBmb3JtYXQ6ICdNTU0geXl5eScgfSl9IC0gJHt0aGlzLmZvcm1hdFNlcnZpY2UuZm9ybWF0KGQyLCAnZGF0ZXRpbWUnLCB7IGZvcm1hdDogJ01NTSB5eXl5JyB9KX1gO1xuICAgIH0gZWxzZSBpZiAodmlldyA9PSAnbW9udGgnIHx8IHZpZXcgPT0gJ3llYXInKSB7XG4gICAgICBjb25zdCBkMiA9IHRoaXMuX2MyLmRpc3BsYXlSYW5nZS5lbmRUaW1lO1xuICAgICAgdGhpcy5fbmF2VGV4dCA9IGAke3RoaXMuZm9ybWF0U2VydmljZS5mb3JtYXQoZDEsICdkYXRldGltZScsIHsgZm9ybWF0OiAneXl5eScgfSl9IC0gJHt0aGlzLmZvcm1hdFNlcnZpY2UuZm9ybWF0KGQyLCAnZGF0ZXRpbWUnLCB7IGZvcm1hdDogJ3l5eXknIH0pfWA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlTmF2aWdhdGUoKSB7XG4gICAgdGhpcy5fc3luY05hdjEoKTtcblxuICAgIHRoaXMub25OYXZpZ2F0ZS5lbWl0KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0aGlzLl9uYXZVc2VySW50ZXJhY3Rpb24sXG4gICAgICBzdGFydDogdGhpcy5fYzEuZGlzcGxheVJhbmdlLnN0YXJ0VGltZT8uZGF0ZSxcbiAgICAgIGVuZDogdGhpcy5fYzIuZGlzcGxheVJhbmdlLmVuZFRpbWU/LmRhdGUsXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5nZXRIb3N0RWxlbWVudCgpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlQWN0aXZlVmlld0NoYW5nZTEoKSB7XG4gICAgdGhpcy5fYzIuYWN0aXZlVmlldyA9IHRoaXMuX2MxLmFjdGl2ZVZpZXc7XG4gICAgdGhpcy5fc3luY05hdjEoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZUFjdGl2ZVZpZXdDaGFuZ2UyKCkge1xuICAgIGlmICh0aGlzLl9jMi5hY3RpdmVWaWV3ICE9IHRoaXMuX2MxLmFjdGl2ZVZpZXcpIHtcbiAgICAgIHRoaXMuX2MxLmFjdGl2ZVZpZXcgPSB0aGlzLl9jMi5hY3RpdmVWaWV3O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfc3luY05hdjEoKSB7XG4gICAgY29uc3QgdmlldyA9ICh0aGlzLl9jMi5hY3RpdmVWaWV3ID0gdGhpcy5fYzEuYWN0aXZlVmlldyk7XG4gICAgY29uc3QgcmFuZ2UgPSB0aGlzLl9jMS5kaXNwbGF5UmFuZ2U7XG4gICAgaWYgKHZpZXcgPT0gJ2RheScpIHtcbiAgICAgIHRoaXMuX2MyLm5hdlRvKHJhbmdlLnN0YXJ0VGltZS5hZGQoJ21vbnRoJywgMSkpO1xuICAgIH0gZWxzZSBpZiAodmlldyA9PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLl9jMi5uYXZUbyhyYW5nZS5zdGFydFRpbWUuYWRkKCd5ZWFyJywgMSkpO1xuICAgIH0gZWxzZSBpZiAodmlldyA9PSAneWVhcicpIHtcbiAgICAgIHRoaXMuX2MyLm5hdlRvKHJhbmdlLmVuZFRpbWUuYWRkKCd5ZWFyJywgNCkpO1xuICAgIH1cbiAgICB0aGlzLl9zeW5jTmF2VGV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9zeW5jTmF2MihlOiBBWERhdGVUaW1lKSB7XG4gICAgY29uc3QgdmlldyA9IHRoaXMuX2MyLmFjdGl2ZVZpZXc7XG4gICAgaWYgKHZpZXcgPT0gJ21vbnRoJykge1xuICAgICAgdGhpcy5fYzEubmF2VG8oZS5hZGQoJ21vbnRoJywgLTEpKTtcbiAgICB9IGVsc2UgaWYgKHZpZXcgPT0gJ3llYXInKSB7XG4gICAgICB0aGlzLl9jMS5uYXZUbyhlLnN0YXJ0T2YoJ3llYXInKSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItcmFuZ2UtaGVhZGVyXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlci1yYW5nZS1pbmZvXCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIiBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uXCIgKGNsaWNrKT1cImhhbmRsZU5hdkNsaWNrKClcIj5cbiAgICAgIHt7IF9uYXZUZXh0IH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItaGVhZGVyLXJhbmdlLWJ1dHRvbnNcIj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b24gYXgtYnV0dG9uLWljb25cIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZVByZXZDbGljaygpXCJcbiAgICA+XG4gICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jaGV2cm9uLWxlZnRcIj48L2k+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1pY29uXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVOZXh0Q2xpY2soKVwiXG4gICAgPlxuICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tY2hldnJvbi1yaWdodFwiPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1yYW5nZS1ib2R5XCI+XG4gIDxheC1jYWxlbmRhclxuICAgICNjMVxuICAgIFtzaG93TmF2aWdhdGlvbl09XCJmYWxzZVwiXG4gICAgW3JlYWRvbmx5XT1cInRydWVcIlxuICAgIFtjZWxsQ2xhc3NdPVwiZ2V0Q2VsbENsYXNzXCJcbiAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICBbZGF5Q2VsbFRlbXBsYXRlXT1cImRheUNlbGxUZW1wbGF0ZVwiXG4gICAgW21vbnRoQ2VsbFRlbXBsYXRlXT1cIm1vbnRoQ2VsbFRlbXBsYXRlXCJcbiAgICBbeWVhckNlbGxUZW1wbGF0ZV09XCJ5ZWFyQ2VsbFRlbXBsYXRlXCJcbiAgICBbbWluVmFsdWVdPVwibWluVmFsdWVcIlxuICAgIFttYXhWYWx1ZV09XCJtYXhWYWx1ZVwiXG4gICAgW2RlcHRoXT1cImRlcHRoXCJcbiAgICBbbG9va109XCJsb29rKClcIlxuICAgIChvblNsb3RDbGljayk9XCJoYW5kbGVTbG90Q2xpY2soJGV2ZW50KVwiXG4gICAgKG9uTmF2aWdhdGUpPVwiaGFuZGxlTmF2aWdhdGUoKVwiXG4gICAgKGFjdGl2ZVZpZXdDaGFuZ2UpPVwiaGFuZGxlQWN0aXZlVmlld0NoYW5nZTEoKVwiXG4gID5cbiAgPC9heC1jYWxlbmRhcj5cbiAgPGF4LWNhbGVuZGFyXG4gICAgI2MyXG4gICAgW3Nob3dOYXZpZ2F0aW9uXT1cImZhbHNlXCJcbiAgICBbcmVhZG9ubHldPVwidHJ1ZVwiXG4gICAgW2NlbGxDbGFzc109XCJnZXRDZWxsQ2xhc3NcIlxuICAgIFt0eXBlXT1cInR5cGVcIlxuICAgIFtkYXlDZWxsVGVtcGxhdGVdPVwiZGF5Q2VsbFRlbXBsYXRlXCJcbiAgICBbbW9udGhDZWxsVGVtcGxhdGVdPVwibW9udGhDZWxsVGVtcGxhdGVcIlxuICAgIFt5ZWFyQ2VsbFRlbXBsYXRlXT1cInllYXJDZWxsVGVtcGxhdGVcIlxuICAgIFttaW5WYWx1ZV09XCJtaW5WYWx1ZVwiXG4gICAgW21heFZhbHVlXT1cIm1heFZhbHVlXCJcbiAgICBbZGVwdGhdPVwiZGVwdGhcIlxuICAgIFtsb29rXT1cImxvb2soKVwiXG4gICAgKG9uU2xvdENsaWNrKT1cImhhbmRsZVNsb3RDbGljaygkZXZlbnQpXCJcbiAgICAoYWN0aXZlVmlld0NoYW5nZSk9XCJoYW5kbGVBY3RpdmVWaWV3Q2hhbmdlMigpXCJcbiAgPlxuICA8L2F4LWNhbGVuZGFyPlxuPC9kaXY+XG4iXX0=","import { NgModule } from '@angular/core';\nimport { AXCalendarRangeComponent } from './calendar-range.component';\nimport { AXCalendarComponent } from './calendar.component';\nimport * as i0 from \"@angular/core\";\nexport class AXCalendarModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXCalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.3\", ngImport: i0, type: AXCalendarModule, imports: [AXCalendarComponent, AXCalendarRangeComponent], exports: [AXCalendarComponent, AXCalendarRangeComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXCalendarModule, imports: [AXCalendarComponent, AXCalendarRangeComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXCalendarModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [AXCalendarComponent, AXCalendarRangeComponent],\n exports: [AXCalendarComponent, AXCalendarRangeComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jYWxlbmRhci9zcmMvbGliL2NhbGVuZGFyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQU0zRCxNQUFNLE9BQU8sZ0JBQWdCOzhHQUFoQixnQkFBZ0I7K0dBQWhCLGdCQUFnQixZQUhqQixtQkFBbUIsRUFBRSx3QkFBd0IsYUFDN0MsbUJBQW1CLEVBQUUsd0JBQXdCOytHQUU1QyxnQkFBZ0IsWUFIakIsbUJBQW1CLEVBQUUsd0JBQXdCOzsyRkFHNUMsZ0JBQWdCO2tCQUo1QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixFQUFFLHdCQUF3QixDQUFDO29CQUN4RCxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSx3QkFBd0IsQ0FBQztpQkFDekQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhDYWxlbmRhclJhbmdlQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci1yYW5nZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXIuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0FYQ2FsZW5kYXJDb21wb25lbnQsIEFYQ2FsZW5kYXJSYW5nZUNvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtBWENhbGVuZGFyQ29tcG9uZW50LCBBWENhbGVuZGFyUmFuZ2VDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBBWENhbGVuZGFyTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtY2FsZW5kYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NhbGVuZGFyL3NyYy9hY29yZXgtY29tcG9uZW50cy1jYWxlbmRhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|