@spicainternational/ngx-sds-components 8.7.0 → 8.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/src/lib/modal/dialog/dialog.component.mjs +3 -3
- package/esm2022/src/lib/timeline/components/timeline.component.mjs +3 -3
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-modal.mjs +2 -2
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-modal.mjs.map +1 -1
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-timeline.mjs +2 -2
- package/fesm2022/spicainternational-ngx-sds-components-src-lib-timeline.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -112,11 +112,11 @@ export class SdsDialogComponent {
|
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
114
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SdsDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
115
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SdsDialogComponent, isStandalone: true, selector: "sds-dialog", inputs: { title: "title", dialogTitle: "dialogTitle", closeText: "closeText", size: "size", primaryButtonText: "primaryButtonText", primaryButtonClass: "primaryButtonClass", primaryButtonType: "primaryButtonType", primaryButtonId: "primaryButtonId", primaryButtonDisabled: "primaryButtonDisabled", secondaryButtonText: "secondaryButtonText", secondaryButtonClass: "secondaryButtonClass", secondaryButtonType: "secondaryButtonType", secondaryButtonId: "secondaryButtonId", secondaryButtonDisabled: "secondaryButtonDisabled", closeOnEscape: "closeOnEscape", showHeader: "showHeader", showCloseButton: "showCloseButton", showPrimaryButton: "showPrimaryButton", showSecondaryButton: "showSecondaryButton", autofocusElement: "autofocusElement", modalDialogId: "modalDialogId", isOpen: "isOpen" }, outputs: { dialogOpen: "dialogOpen", dialogClose: "dialogClose", isOpenChange: "isOpenChange", primaryButtonClick: "primaryButtonClick", secondaryButtonClick: "secondaryButtonClick" }, viewQueries: [{ propertyName: "_modal", first: true, predicate: ["modal"], descendants: true, static: true }, { propertyName: "_content", first: true, predicate: ["content"], descendants: true, read: ElementRef, static: true }, { propertyName: "_primaryButton", first: true, predicate: ["primaryButton"], descendants: true, read: ElementRef }, { propertyName: "_secondaryButton", first: true, predicate: ["secondaryButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<sds-modal\n #modal\n [modalTitle]=\"dialogTitle || title\"\n [size]=\"size\"\n [modalDialogId]=\"modalDialogId\"\n [showCloseButton]=\"showCloseButton\"\n [showHeader]=\"showHeader\"\n [translations]=\"{ close: closeText}\"\n [autoFocusCloseButton]=\"autofocusElement === 'close'\"\n [closeButtonLabel]=\"closeText\"\n [closeOnEscape]=\"closeOnEscape\"\n (closeClick)=\"onCloseClick()\"\n (closeEscapeKeypress)=\"onCloseEscapeKeypress()\"\n (modalClose)=\"onModalClose()\"\n (modalOpen)=\"onModalOpen()\"\n [(isOpen)]=\"isOpen\"\n>\n\n <div #content [attr.tabindex]=\"autofocusElement === 'content' ? 0 : undefined\" >\n <ng-content></ng-content>\n </div>\n <ng-container #footer ngProjectAs='footer'>\n <button\n #secondaryButton\n *ngIf=\"showSecondaryButton\"\n [attr.id]=\"secondaryButtonId\"\n [disabled]=\"secondaryButtonDisabled\"\n class=\"btn\"\n [class]=\"secondaryButtonClass\"\n (click)=\"onSecondaryClick()\"\n >{{secondaryButtonText}}</button>\n <button\n #primaryButton\n *ngIf=\"showPrimaryButton\"\n [attr.id]=\"primaryButtonId\"\n [disabled]=\"primaryButtonDisabled\"\n class=\"btn\"\n [class]=\"primaryButtonClass\"\n (click)=\"onPrimaryClick()\"\n >{{primaryButtonText}}</button>\n </ng-container>\n</sds-modal>\n", styles: [""], dependencies: [{ kind: "component", type: SdsModalComponent, selector: "sds-modal", inputs: ["modalTitle", "showHeader", "showFooter", "size", "modalDialogId", "showCloseButton", "autoFocusCloseButton", "translations", "isScrollable", "isVerticallyCentered", "closeOnEscape", "downSizing", "isDraggable", "isDragConstrained", "closeButtonLabel", "isOpen"], outputs: ["modalOpen", "modalClose", "closeClick", "closeEscapeKeypress", "isOpenChange"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
115
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SdsDialogComponent, isStandalone: true, selector: "sds-dialog", inputs: { title: "title", dialogTitle: "dialogTitle", closeText: "closeText", size: "size", primaryButtonText: "primaryButtonText", primaryButtonClass: "primaryButtonClass", primaryButtonType: "primaryButtonType", primaryButtonId: "primaryButtonId", primaryButtonDisabled: "primaryButtonDisabled", secondaryButtonText: "secondaryButtonText", secondaryButtonClass: "secondaryButtonClass", secondaryButtonType: "secondaryButtonType", secondaryButtonId: "secondaryButtonId", secondaryButtonDisabled: "secondaryButtonDisabled", closeOnEscape: "closeOnEscape", showHeader: "showHeader", showCloseButton: "showCloseButton", showPrimaryButton: "showPrimaryButton", showSecondaryButton: "showSecondaryButton", autofocusElement: "autofocusElement", modalDialogId: "modalDialogId", isOpen: "isOpen" }, outputs: { dialogOpen: "dialogOpen", dialogClose: "dialogClose", isOpenChange: "isOpenChange", primaryButtonClick: "primaryButtonClick", secondaryButtonClick: "secondaryButtonClick" }, viewQueries: [{ propertyName: "_modal", first: true, predicate: ["modal"], descendants: true, static: true }, { propertyName: "_content", first: true, predicate: ["content"], descendants: true, read: ElementRef, static: true }, { propertyName: "_primaryButton", first: true, predicate: ["primaryButton"], descendants: true, read: ElementRef }, { propertyName: "_secondaryButton", first: true, predicate: ["secondaryButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<sds-modal\n #modal\n [modalTitle]=\"dialogTitle || title\"\n [size]=\"size\"\n [modalDialogId]=\"modalDialogId\"\n [showCloseButton]=\"showCloseButton\"\n [showHeader]=\"showHeader\"\n [translations]=\"{ close: closeText}\"\n [autoFocusCloseButton]=\"autofocusElement === 'close'\"\n [closeButtonLabel]=\"closeText\"\n [closeOnEscape]=\"closeOnEscape\"\n (closeClick)=\"onCloseClick()\"\n (closeEscapeKeypress)=\"onCloseEscapeKeypress()\"\n (modalClose)=\"onModalClose()\"\n (modalOpen)=\"onModalOpen()\"\n [(isOpen)]=\"isOpen\"\n>\n\n <div #content [attr.tabindex]=\"autofocusElement === 'content' ? 0 : undefined\" >\n <ng-content></ng-content>\n </div>\n <ng-container #footer ngProjectAs='footer'>\n <button\n #secondaryButton\n *ngIf=\"showSecondaryButton\"\n [attr.id]=\"secondaryButtonId\"\n [attr.type]=\"secondaryButtonType\"\n [disabled]=\"secondaryButtonDisabled\"\n class=\"btn\"\n [class]=\"secondaryButtonClass\"\n (click)=\"onSecondaryClick()\"\n >{{secondaryButtonText}}</button>\n <button\n #primaryButton\n *ngIf=\"showPrimaryButton\"\n [attr.id]=\"primaryButtonId\"\n [attr.type]=\"primaryButtonType\"\n [disabled]=\"primaryButtonDisabled\"\n class=\"btn\"\n [class]=\"primaryButtonClass\"\n (click)=\"onPrimaryClick()\"\n >{{primaryButtonText}}</button>\n </ng-container>\n</sds-modal>\n", styles: [""], dependencies: [{ kind: "component", type: SdsModalComponent, selector: "sds-modal", inputs: ["modalTitle", "showHeader", "showFooter", "size", "modalDialogId", "showCloseButton", "autoFocusCloseButton", "translations", "isScrollable", "isVerticallyCentered", "closeOnEscape", "downSizing", "isDraggable", "isDragConstrained", "closeButtonLabel", "isOpen"], outputs: ["modalOpen", "modalClose", "closeClick", "closeEscapeKeypress", "isOpenChange"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
116
116
|
}
|
|
117
117
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SdsDialogComponent, decorators: [{
|
|
118
118
|
type: Component,
|
|
119
|
-
args: [{ selector: 'sds-dialog', standalone: true, imports: [SdsModalComponent, NgIf], template: "<sds-modal\n #modal\n [modalTitle]=\"dialogTitle || title\"\n [size]=\"size\"\n [modalDialogId]=\"modalDialogId\"\n [showCloseButton]=\"showCloseButton\"\n [showHeader]=\"showHeader\"\n [translations]=\"{ close: closeText}\"\n [autoFocusCloseButton]=\"autofocusElement === 'close'\"\n [closeButtonLabel]=\"closeText\"\n [closeOnEscape]=\"closeOnEscape\"\n (closeClick)=\"onCloseClick()\"\n (closeEscapeKeypress)=\"onCloseEscapeKeypress()\"\n (modalClose)=\"onModalClose()\"\n (modalOpen)=\"onModalOpen()\"\n [(isOpen)]=\"isOpen\"\n>\n\n <div #content [attr.tabindex]=\"autofocusElement === 'content' ? 0 : undefined\" >\n <ng-content></ng-content>\n </div>\n <ng-container #footer ngProjectAs='footer'>\n <button\n #secondaryButton\n *ngIf=\"showSecondaryButton\"\n [attr.id]=\"secondaryButtonId\"\n [disabled]=\"secondaryButtonDisabled\"\n class=\"btn\"\n [class]=\"secondaryButtonClass\"\n (click)=\"onSecondaryClick()\"\n >{{secondaryButtonText}}</button>\n <button\n #primaryButton\n *ngIf=\"showPrimaryButton\"\n [attr.id]=\"primaryButtonId\"\n [disabled]=\"primaryButtonDisabled\"\n class=\"btn\"\n [class]=\"primaryButtonClass\"\n (click)=\"onPrimaryClick()\"\n >{{primaryButtonText}}</button>\n </ng-container>\n</sds-modal>\n" }]
|
|
119
|
+
args: [{ selector: 'sds-dialog', standalone: true, imports: [SdsModalComponent, NgIf], template: "<sds-modal\n #modal\n [modalTitle]=\"dialogTitle || title\"\n [size]=\"size\"\n [modalDialogId]=\"modalDialogId\"\n [showCloseButton]=\"showCloseButton\"\n [showHeader]=\"showHeader\"\n [translations]=\"{ close: closeText}\"\n [autoFocusCloseButton]=\"autofocusElement === 'close'\"\n [closeButtonLabel]=\"closeText\"\n [closeOnEscape]=\"closeOnEscape\"\n (closeClick)=\"onCloseClick()\"\n (closeEscapeKeypress)=\"onCloseEscapeKeypress()\"\n (modalClose)=\"onModalClose()\"\n (modalOpen)=\"onModalOpen()\"\n [(isOpen)]=\"isOpen\"\n>\n\n <div #content [attr.tabindex]=\"autofocusElement === 'content' ? 0 : undefined\" >\n <ng-content></ng-content>\n </div>\n <ng-container #footer ngProjectAs='footer'>\n <button\n #secondaryButton\n *ngIf=\"showSecondaryButton\"\n [attr.id]=\"secondaryButtonId\"\n [attr.type]=\"secondaryButtonType\"\n [disabled]=\"secondaryButtonDisabled\"\n class=\"btn\"\n [class]=\"secondaryButtonClass\"\n (click)=\"onSecondaryClick()\"\n >{{secondaryButtonText}}</button>\n <button\n #primaryButton\n *ngIf=\"showPrimaryButton\"\n [attr.id]=\"primaryButtonId\"\n [attr.type]=\"primaryButtonType\"\n [disabled]=\"primaryButtonDisabled\"\n class=\"btn\"\n [class]=\"primaryButtonClass\"\n (click)=\"onPrimaryClick()\"\n >{{primaryButtonText}}</button>\n </ng-container>\n</sds-modal>\n" }]
|
|
120
120
|
}], ctorParameters: () => [], propDecorators: { title: [{
|
|
121
121
|
type: Input
|
|
122
122
|
}], dialogTitle: [{
|
|
@@ -184,4 +184,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
184
184
|
type: ViewChild,
|
|
185
185
|
args: ['secondaryButton', { read: ElementRef, static: false }]
|
|
186
186
|
}] } });
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zZHMtY29tcG9uZW50cy9zcmMvbGliL21vZGFsL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvbW9kYWwvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBV3ZDLE1BQU0sT0FBTyxrQkFBa0I7SUF3RDNCLGtDQUFrQztJQUVsQztRQXpEQTs7V0FFRztRQUNhLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFFekIsY0FBUyxHQUFZLE9BQU8sQ0FBQztRQUM3QixTQUFJLEdBQThCLElBQUksQ0FBQztRQUV2QyxzQkFBaUIsR0FBVyxJQUFJLENBQUM7UUFDakMsdUJBQWtCLEdBQVcsaUJBQWlCLENBQUM7UUFDL0Msc0JBQWlCLEdBQWUsUUFBUSxDQUFDO1FBRXpDLDBCQUFxQixHQUFZLEtBQUssQ0FBQztRQUV2Qyx3QkFBbUIsR0FBVyxRQUFRLENBQUM7UUFDdkMseUJBQW9CLEdBQVcsbUJBQW1CLENBQUM7UUFDbkQsd0JBQW1CLEdBQWUsUUFBUSxDQUFDO1FBRTNDLDRCQUF1QixHQUFZLEtBQUssQ0FBQztRQUV6QyxrQkFBYSxHQUFZLElBQUksQ0FBQztRQUM5QixlQUFVLEdBQVksSUFBSSxDQUFDO1FBQzNCLG9CQUFlLEdBQVksSUFBSSxDQUFDO1FBQ2hDLHNCQUFpQixHQUFZLElBQUksQ0FBQztRQUNsQyx3QkFBbUIsR0FBWSxJQUFJLENBQUM7UUFDcEMscUJBQWdCLEdBQW1ELFNBQVMsQ0FBQztRQUk3Rjs7V0FFRztRQUNjLGVBQVUsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUUzRTs7V0FFRztRQUNjLGdCQUFXLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFHNUQsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUN2QixpQkFBWSxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBRWxFLHVCQUFrQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2xFLHlCQUFvQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO0lBWXRFLENBQUM7SUFFaEIsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2hFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxXQUFXLENBQUM7UUFDeEMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3BFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUM7UUFDcEMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM1RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO1FBQ3RDLENBQUM7SUFDTCxDQUFDO0lBRU0sSUFBSSxDQUFDLFFBQW1ELEVBQUUsSUFBVTtRQUN2RSxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUUxQixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksU0FBUyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDbkIsc0JBQXNCO1lBRXRCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0wsQ0FBQztJQUVPLEtBQUs7UUFDVCxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksU0FBUyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDcEIsdUJBQXVCO1lBRXZCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGdCQUFnQjtRQUNuQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVNLGNBQWM7UUFDakIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTSxZQUFZO1FBQ2YsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVNLHFCQUFxQjtRQUN4QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRU0sWUFBWTtRQUNmLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVNLFdBQVc7UUFDZCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLFFBQVEsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDNUIsS0FBSyxTQUFTO2dCQUNWLElBQUksQ0FBQyxjQUFjLEVBQUUsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMzQyxNQUFNO1lBQ1YsS0FBSyxXQUFXO2dCQUNaLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzdDLE1BQU07WUFDVixLQUFLLFNBQVM7Z0JBQ1YsSUFBSSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3JDLE1BQU07WUFDVjtnQkFDSSxNQUFNO1FBQ2QsQ0FBQztJQUNMLENBQUM7K0dBOUlRLGtCQUFrQjttR0FBbEIsa0JBQWtCLHVzQ0FpREcsVUFBVSx3SEFDSixVQUFVLDhHQUNSLFVBQVUsNkJDakVwRCwwOENBMENBLDBERDlCYyxpQkFBaUIsa2FBQUUsSUFBSTs7NEZBRXhCLGtCQUFrQjtrQkFQOUIsU0FBUzsrQkFDSSxZQUFZLGNBR1YsSUFBSSxXQUNQLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDO3dEQU1sQixLQUFLO3NCQUFwQixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBRVUsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLO2dCQUVVLGlCQUFpQjtzQkFBaEMsS0FBSztnQkFDVSxrQkFBa0I7c0JBQWpDLEtBQUs7Z0JBQ1UsaUJBQWlCO3NCQUFoQyxLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UscUJBQXFCO3NCQUFwQyxLQUFLO2dCQUVVLG1CQUFtQjtzQkFBbEMsS0FBSztnQkFDVSxvQkFBb0I7c0JBQW5DLEtBQUs7Z0JBQ1UsbUJBQW1CO3NCQUFsQyxLQUFLO2dCQUNVLGlCQUFpQjtzQkFBaEMsS0FBSztnQkFDVSx1QkFBdUI7c0JBQXRDLEtBQUs7Z0JBRVUsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsaUJBQWlCO3NCQUFoQyxLQUFLO2dCQUNVLG1CQUFtQjtzQkFBbEMsS0FBSztnQkFDVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBRVUsYUFBYTtzQkFBNUIsS0FBSztnQkFLVyxVQUFVO3NCQUExQixNQUFNO2dCQUtVLFdBQVc7c0JBQTNCLE1BQU07Z0JBR1MsTUFBTTtzQkFBckIsS0FBSztnQkFDVyxZQUFZO3NCQUE1QixNQUFNO2dCQUVVLGtCQUFrQjtzQkFBbEMsTUFBTTtnQkFDVSxvQkFBb0I7c0JBQXBDLE1BQU07Z0JBRXVDLE1BQU07c0JBQW5ELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDOEIsUUFBUTtzQkFBekUsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ2lCLGNBQWM7c0JBQXRGLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNZLGdCQUFnQjtzQkFBMUYsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZHNNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL21vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25UeXBlIH0gZnJvbSAnLi9kaWFsb2cudHlwZXMnO1xuaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbnR5cGUgbW9kYWxCdXR0b24gPSAncHJpbWFyeScgfCAnc2Vjb25kYXJ5JyB8ICdjbG9zZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2RzLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbU2RzTW9kYWxDb21wb25lbnQsIE5nSWZdLFxufSlcbmV4cG9ydCBjbGFzcyBTZHNEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIFVzZSBkaWFsb2dUaXRsZSBpbnN0ZWFkXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHRpdGxlOiBzdHJpbmcgPSAnJztcbiAgICBASW5wdXQoKSBwdWJsaWMgZGlhbG9nVGl0bGU6IHN0cmluZyA9ICcnO1xuICAgIFxuICAgIEBJbnB1dCgpIHB1YmxpYyBjbG9zZVRleHQ/OiBzdHJpbmcgPSAnY2xvc2UnO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzaXplOiAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnID0gJ21kJztcblxuICAgIEBJbnB1dCgpIHB1YmxpYyBwcmltYXJ5QnV0dG9uVGV4dDogc3RyaW5nID0gJ09rJztcbiAgICBASW5wdXQoKSBwdWJsaWMgcHJpbWFyeUJ1dHRvbkNsYXNzOiBzdHJpbmcgPSAnc2RzLWJ0bi1wcmltYXJ5JztcbiAgICBASW5wdXQoKSBwdWJsaWMgcHJpbWFyeUJ1dHRvblR5cGU6IEJ1dHRvblR5cGUgPSAnYnV0dG9uJztcbiAgICBASW5wdXQoKSBwdWJsaWMgcHJpbWFyeUJ1dHRvbklkPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwcmltYXJ5QnV0dG9uRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBcbiAgICBASW5wdXQoKSBwdWJsaWMgc2Vjb25kYXJ5QnV0dG9uVGV4dDogc3RyaW5nID0gJ0NhbmNlbCc7ICAgICBcbiAgICBASW5wdXQoKSBwdWJsaWMgc2Vjb25kYXJ5QnV0dG9uQ2xhc3M6IHN0cmluZyA9ICdzZHMtYnRuLXNlY29uZGFyeSc7XG4gICAgQElucHV0KCkgcHVibGljIHNlY29uZGFyeUJ1dHRvblR5cGU6IEJ1dHRvblR5cGUgPSAnYnV0dG9uJztcbiAgICBASW5wdXQoKSBwdWJsaWMgc2Vjb25kYXJ5QnV0dG9uSWQ/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIHNlY29uZGFyeUJ1dHRvbkRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBwdWJsaWMgY2xvc2VPbkVzY2FwZTogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgcHVibGljIHNob3dIZWFkZXI6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzaG93Q2xvc2VCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzaG93UHJpbWFyeUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgcHVibGljIHNob3dTZWNvbmRhcnlCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhdXRvZm9jdXNFbGVtZW50OiAgJ3ByaW1hcnknIHwgJ3NlY29uZGFyeScgfCAnY2xvc2UnIHwgJ2NvbnRlbnQnID0gJ3ByaW1hcnknO1xuXG4gICAgQElucHV0KCkgcHVibGljIG1vZGFsRGlhbG9nSWQ/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgaXNPcGVuQ2hhbmdlIGluc3RlYWRcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcHVibGljIGRpYWxvZ09wZW46IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIFVzZSBpc09wZW5DaGFuZ2UgaW5zdGVhZFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgZGlhbG9nQ2xvc2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuXG4gICAgQElucHV0KCkgcHVibGljIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgaXNPcGVuQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIHByaW1hcnlCdXR0b25DbGljazogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgc2Vjb25kYXJ5QnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ21vZGFsJywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBfbW9kYWw6IFNkc01vZGFsQ29tcG9uZW50IHwgdW5kZWZpbmVkO1xuICAgIEBWaWV3Q2hpbGQoJ2NvbnRlbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIF9jb250ZW50PzogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdwcmltYXJ5QnV0dG9uJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIHByaXZhdGUgX3ByaW1hcnlCdXR0b24/OiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ3NlY29uZGFyeUJ1dHRvbicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSBwcml2YXRlIF9zZWNvbmRhcnlCdXR0b24/OiBFbGVtZW50UmVmO1xuXG4gICAgcHJpdmF0ZSBfY2FsbGJhY2s/OiBGdW5jdGlvbjtcbiAgICBwcml2YXRlIF9jYWxsYmFja0RhdGE6IGFueTtcblxuICAgIC8vIHB1YmxpYyBpc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKCkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hdXRvZm9jdXNFbGVtZW50ID09ICdwcmltYXJ5JyAmJiAhdGhpcy5zaG93UHJpbWFyeUJ1dHRvbikge1xuICAgICAgICAgICAgdGhpcy5hdXRvZm9jdXNFbGVtZW50ID0gJ3NlY29uZGFyeSc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYXV0b2ZvY3VzRWxlbWVudCA9PSAnc2Vjb25kYXJ5JyAmJiAhdGhpcy5zaG93U2Vjb25kYXJ5QnV0dG9uKSB7XG4gICAgICAgICAgICB0aGlzLmF1dG9mb2N1c0VsZW1lbnQgPSAnY2xvc2UnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmF1dG9mb2N1c0VsZW1lbnQgPT0gJ2Nsb3NlJyAmJiAhdGhpcy5zaG93Q2xvc2VCdXR0b24pIHtcbiAgICAgICAgICAgIHRoaXMuYXV0b2ZvY3VzRWxlbWVudCA9ICdjb250ZW50JztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvcGVuKGNhbGxiYWNrPzogKGJ1dHRvbjogbW9kYWxCdXR0b24sIGRhdGE6IGFueSkgPT4gdm9pZCwgZGF0YT86IGFueSk6IHZvaWR7XG4gICAgICAgIHRoaXMuX2NhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgICAgIHRoaXMuX2NhbGxiYWNrRGF0YSA9IGRhdGE7XG5cbiAgICAgICAgaWYgKHRoaXMuX21vZGFsICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgICAgICAgICAgLy8gdGhpcy5fbW9kYWwub3BlbigpO1xuXG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KHRoaXMuaXNPcGVuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9tb2RhbCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICAvLyB0aGlzLl9tb2RhbC5jbG9zZSgpO1xuXG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KHRoaXMuaXNPcGVuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvblNlY29uZGFyeUNsaWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY2FsbGJhY2spIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGxiYWNrKCdzZWNvbmRhcnknLCB0aGlzLl9jYWxsYmFja0RhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2Vjb25kYXJ5QnV0dG9uQ2xpY2suZW1pdCgpO1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uUHJpbWFyeUNsaWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY2FsbGJhY2spIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGxiYWNrKCdwcmltYXJ5JywgdGhpcy5fY2FsbGJhY2tEYXRhKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByaW1hcnlCdXR0b25DbGljay5lbWl0KCk7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbG9zZUNsaWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY2FsbGJhY2spIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGxiYWNrKCdjbG9zZScsIHRoaXMuX2NhbGxiYWNrRGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsb3NlRXNjYXBlS2V5cHJlc3MoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9jYWxsYmFjaykge1xuICAgICAgICAgICAgdGhpcy5fY2FsbGJhY2soJ2Nsb3NlJywgdGhpcy5fY2FsbGJhY2tEYXRhKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTW9kYWxDbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWFsb2dDbG9zZS5lbWl0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTW9kYWxPcGVuKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpYWxvZ09wZW4uZW1pdCgpO1xuICAgICAgICBzd2l0Y2ggKHRoaXMuYXV0b2ZvY3VzRWxlbWVudCkge1xuICAgICAgICAgICAgY2FzZSAncHJpbWFyeSc6XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJpbWFyeUJ1dHRvbj8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2Vjb25kYXJ5JzpcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWNvbmRhcnlCdXR0b24/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NvbnRlbnQnOlxuICAgICAgICAgICAgICAgIHRoaXMuX2NvbnRlbnQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9ICAgIFxuXG59XG5cblxuXG4iLCI8c2RzLW1vZGFsXG4gICAgI21vZGFsXG4gICAgW21vZGFsVGl0bGVdPVwiZGlhbG9nVGl0bGUgfHwgdGl0bGVcIlxuICAgIFtzaXplXT1cInNpemVcIlxuICAgIFttb2RhbERpYWxvZ0lkXT1cIm1vZGFsRGlhbG9nSWRcIlxuICAgIFtzaG93Q2xvc2VCdXR0b25dPVwic2hvd0Nsb3NlQnV0dG9uXCJcbiAgICBbc2hvd0hlYWRlcl09XCJzaG93SGVhZGVyXCJcbiAgICBbdHJhbnNsYXRpb25zXT1cInsgY2xvc2U6IGNsb3NlVGV4dH1cIlxuICAgIFthdXRvRm9jdXNDbG9zZUJ1dHRvbl09XCJhdXRvZm9jdXNFbGVtZW50ID09PSAnY2xvc2UnXCJcbiAgICBbY2xvc2VCdXR0b25MYWJlbF09XCJjbG9zZVRleHRcIlxuICAgIFtjbG9zZU9uRXNjYXBlXT1cImNsb3NlT25Fc2NhcGVcIlxuICAgIChjbG9zZUNsaWNrKT1cIm9uQ2xvc2VDbGljaygpXCJcbiAgICAoY2xvc2VFc2NhcGVLZXlwcmVzcyk9XCJvbkNsb3NlRXNjYXBlS2V5cHJlc3MoKVwiXG4gICAgKG1vZGFsQ2xvc2UpPVwib25Nb2RhbENsb3NlKClcIlxuICAgIChtb2RhbE9wZW4pPVwib25Nb2RhbE9wZW4oKVwiXG4gICAgWyhpc09wZW4pXT1cImlzT3BlblwiXG4+XG5cbiAgICA8ZGl2ICNjb250ZW50IFthdHRyLnRhYmluZGV4XT1cImF1dG9mb2N1c0VsZW1lbnQgPT09ICdjb250ZW50JyA/IDAgOiB1bmRlZmluZWRcIiA+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICNmb290ZXIgbmdQcm9qZWN0QXM9J2Zvb3Rlcic+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICNzZWNvbmRhcnlCdXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1NlY29uZGFyeUJ1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJzZWNvbmRhcnlCdXR0b25JZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwic2Vjb25kYXJ5QnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJidG5cIlxuICAgICAgICAgICAgW2NsYXNzXT1cInNlY29uZGFyeUJ1dHRvbkNsYXNzXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvblNlY29uZGFyeUNsaWNrKClcIlxuICAgICAgICA+e3tzZWNvbmRhcnlCdXR0b25UZXh0fX08L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgI3ByaW1hcnlCdXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1ByaW1hcnlCdXR0b25cIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwicHJpbWFyeUJ1dHRvbklkXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcmltYXJ5QnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJidG5cIlxuICAgICAgICAgICAgW2NsYXNzXT1cInByaW1hcnlCdXR0b25DbGFzc1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib25QcmltYXJ5Q2xpY2soKVwiXG4gICAgICAgID57e3ByaW1hcnlCdXR0b25UZXh0fX08L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvc2RzLW1vZGFsPlxuIl19
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zZHMtY29tcG9uZW50cy9zcmMvbGliL21vZGFsL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvbW9kYWwvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBV3ZDLE1BQU0sT0FBTyxrQkFBa0I7SUF3RDNCLGtDQUFrQztJQUVsQztRQXpEQTs7V0FFRztRQUNhLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFFekIsY0FBUyxHQUFZLE9BQU8sQ0FBQztRQUM3QixTQUFJLEdBQThCLElBQUksQ0FBQztRQUV2QyxzQkFBaUIsR0FBVyxJQUFJLENBQUM7UUFDakMsdUJBQWtCLEdBQVcsaUJBQWlCLENBQUM7UUFDL0Msc0JBQWlCLEdBQWUsUUFBUSxDQUFDO1FBRXpDLDBCQUFxQixHQUFZLEtBQUssQ0FBQztRQUV2Qyx3QkFBbUIsR0FBVyxRQUFRLENBQUM7UUFDdkMseUJBQW9CLEdBQVcsbUJBQW1CLENBQUM7UUFDbkQsd0JBQW1CLEdBQWUsUUFBUSxDQUFDO1FBRTNDLDRCQUF1QixHQUFZLEtBQUssQ0FBQztRQUV6QyxrQkFBYSxHQUFZLElBQUksQ0FBQztRQUM5QixlQUFVLEdBQVksSUFBSSxDQUFD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QWlCO3NCQUFoQyxLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UscUJBQXFCO3NCQUFwQyxLQUFLO2dCQUVVLG1CQUFtQjtzQkFBbEMsS0FBSztnQkFDVSxvQkFBb0I7c0JBQW5DLEtBQUs7Z0JBQ1UsbUJBQW1CO3NCQUFsQyxLQUFLO2dCQUNVLGlCQUFpQjtzQkFBaEMsS0FBSztnQkFDVSx1QkFBdUI7c0JBQXRDLEtBQUs7Z0JBRVUsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsaUJBQWlCO3NCQUFoQyxLQUFLO2dCQUNVLG1CQUFtQjtzQkFBbEMsS0FBSztnQkFDVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBRVUsYUFBYTtzQkFBNUIsS0FBSztnQkFLVyxVQUFVO3NCQUExQixNQUFNO2dCQUtVLFdBQVc7c0JBQTNCLE1BQU07Z0JBR1MsTUFBTTtzQkFBckIsS0FBSztnQkFDVyxZQUFZO3NCQUE1QixNQUFNO2dCQUVVLGtCQUFrQjtzQkFBbEMsTUFBTTtnQkFDVSxvQkFBb0I7c0JBQXBDLE1BQU07Z0JBRXVDLE1BQU07c0JBQW5ELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDOEIsUUFBUTtzQkFBekUsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ2lCLGNBQWM7c0JBQXRGLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNZLGdCQUFnQjtzQkFBMUYsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZHNNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL21vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25UeXBlIH0gZnJvbSAnLi9kaWFsb2cudHlwZXMnO1xuaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbnR5cGUgbW9kYWxCdXR0b24gPSAncHJpbWFyeScgfCAnc2Vjb25kYXJ5JyB8ICdjbG9zZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2RzLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbU2RzTW9kYWxDb21wb25lbnQsIE5nSWZdLFxufSlcbmV4cG9ydCBjbGFzcyBTZHNEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIFVzZSBkaWFsb2dUaXRsZSBpbnN0ZWFkXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHRpdGxlOiBzdHJpbmcgPSAnJztcbiAgICBASW5wdXQoKSBwdWJsaWMgZGlhbG9nVGl0bGU6IHN0cmluZyA9ICcnO1xuICAgIFxuICAgIEBJbnB1dCgpIHB1YmxpYyBjbG9zZVRleHQ/OiBzdHJpbmcgPSAnY2xvc2UnO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzaXplOiAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnID0gJ21kJztcblxuICAgIEBJbnB1dCgpIHB1YmxpYyBwcmltYXJ5QnV0dG9uVGV4dDogc3RyaW5nID0gJ09rJztcbiAgICBASW5wdXQoKSBwdWJsaWMgcHJpbWFyeUJ1dHRvbkNsYXNzOiBzdHJpbmcgPSAnc2RzLWJ0bi1wcmltYXJ5JztcbiAgICBASW5wdXQoKSBwdWJsaWMgcHJpbWFyeUJ1dHRvblR5cGU6IEJ1dHRvblR5cGUgPSAnYnV0dG9uJztcbiAgICBASW5wdXQoKSBwdWJsaWMgcHJpbWFyeUJ1dHRvbklkPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwcmltYXJ5QnV0dG9uRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBcbiAgICBASW5wdXQoKSBwdWJsaWMgc2Vjb25kYXJ5QnV0dG9uVGV4dDogc3RyaW5nID0gJ0NhbmNlbCc7ICAgICBcbiAgICBASW5wdXQoKSBwdWJsaWMgc2Vjb25kYXJ5QnV0dG9uQ2xhc3M6IHN0cmluZyA9ICdzZHMtYnRuLXNlY29uZGFyeSc7XG4gICAgQElucHV0KCkgcHVibGljIHNlY29uZGFyeUJ1dHRvblR5cGU6IEJ1dHRvblR5cGUgPSAnYnV0dG9uJztcbiAgICBASW5wdXQoKSBwdWJsaWMgc2Vjb25kYXJ5QnV0dG9uSWQ/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIHNlY29uZGFyeUJ1dHRvbkRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBwdWJsaWMgY2xvc2VPbkVzY2FwZTogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgcHVibGljIHNob3dIZWFkZXI6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzaG93Q2xvc2VCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzaG93UHJpbWFyeUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgcHVibGljIHNob3dTZWNvbmRhcnlCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhdXRvZm9jdXNFbGVtZW50OiAgJ3ByaW1hcnknIHwgJ3NlY29uZGFyeScgfCAnY2xvc2UnIHwgJ2NvbnRlbnQnID0gJ3ByaW1hcnknO1xuXG4gICAgQElucHV0KCkgcHVibGljIG1vZGFsRGlhbG9nSWQ/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgaXNPcGVuQ2hhbmdlIGluc3RlYWRcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcHVibGljIGRpYWxvZ09wZW46IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIFVzZSBpc09wZW5DaGFuZ2UgaW5zdGVhZFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgZGlhbG9nQ2xvc2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuXG4gICAgQElucHV0KCkgcHVibGljIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgaXNPcGVuQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIHByaW1hcnlCdXR0b25DbGljazogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgc2Vjb25kYXJ5QnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ21vZGFsJywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBfbW9kYWw6IFNkc01vZGFsQ29tcG9uZW50IHwgdW5kZWZpbmVkO1xuICAgIEBWaWV3Q2hpbGQoJ2NvbnRlbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIF9jb250ZW50PzogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdwcmltYXJ5QnV0dG9uJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIHByaXZhdGUgX3ByaW1hcnlCdXR0b24/OiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ3NlY29uZGFyeUJ1dHRvbicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSBwcml2YXRlIF9zZWNvbmRhcnlCdXR0b24/OiBFbGVtZW50UmVmO1xuXG4gICAgcHJpdmF0ZSBfY2FsbGJhY2s/OiBGdW5jdGlvbjtcbiAgICBwcml2YXRlIF9jYWxsYmFja0RhdGE6IGFueTtcblxuICAgIC8vIHB1YmxpYyBpc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKCkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hdXRvZm9jdXNFbGVtZW50ID09ICdwcmltYXJ5JyAmJiAhdGhpcy5zaG93UHJpbWFyeUJ1dHRvbikge1xuICAgICAgICAgICAgdGhpcy5hdXRvZm9jdXNFbGVtZW50ID0gJ3NlY29uZGFyeSc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYXV0b2ZvY3VzRWxlbWVudCA9PSAnc2Vjb25kYXJ5JyAmJiAhdGhpcy5zaG93U2Vjb25kYXJ5QnV0dG9uKSB7XG4gICAgICAgICAgICB0aGlzLmF1dG9mb2N1c0VsZW1lbnQgPSAnY2xvc2UnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmF1dG9mb2N1c0VsZW1lbnQgPT0gJ2Nsb3NlJyAmJiAhdGhpcy5zaG93Q2xvc2VCdXR0b24pIHtcbiAgICAgICAgICAgIHRoaXMuYXV0b2ZvY3VzRWxlbWVudCA9ICdjb250ZW50JztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvcGVuKGNhbGxiYWNrPzogKGJ1dHRvbjogbW9kYWxCdXR0b24sIGRhdGE6IGFueSkgPT4gdm9pZCwgZGF0YT86IGFueSk6IHZvaWR7XG4gICAgICAgIHRoaXMuX2NhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgICAgIHRoaXMuX2NhbGxiYWNrRGF0YSA9IGRhdGE7XG5cbiAgICAgICAgaWYgKHRoaXMuX21vZGFsICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgICAgICAgICAgLy8gdGhpcy5fbW9kYWwub3BlbigpO1xuXG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KHRoaXMuaXNPcGVuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9tb2RhbCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICAvLyB0aGlzLl9tb2RhbC5jbG9zZSgpO1xuXG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KHRoaXMuaXNPcGVuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvblNlY29uZGFyeUNsaWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY2FsbGJhY2spIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGxiYWNrKCdzZWNvbmRhcnknLCB0aGlzLl9jYWxsYmFja0RhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2Vjb25kYXJ5QnV0dG9uQ2xpY2suZW1pdCgpO1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uUHJpbWFyeUNsaWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY2FsbGJhY2spIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGxiYWNrKCdwcmltYXJ5JywgdGhpcy5fY2FsbGJhY2tEYXRhKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByaW1hcnlCdXR0b25DbGljay5lbWl0KCk7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbG9zZUNsaWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY2FsbGJhY2spIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGxiYWNrKCdjbG9zZScsIHRoaXMuX2NhbGxiYWNrRGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsb3NlRXNjYXBlS2V5cHJlc3MoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9jYWxsYmFjaykge1xuICAgICAgICAgICAgdGhpcy5fY2FsbGJhY2soJ2Nsb3NlJywgdGhpcy5fY2FsbGJhY2tEYXRhKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTW9kYWxDbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWFsb2dDbG9zZS5lbWl0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTW9kYWxPcGVuKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpYWxvZ09wZW4uZW1pdCgpO1xuICAgICAgICBzd2l0Y2ggKHRoaXMuYXV0b2ZvY3VzRWxlbWVudCkge1xuICAgICAgICAgICAgY2FzZSAncHJpbWFyeSc6XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJpbWFyeUJ1dHRvbj8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2Vjb25kYXJ5JzpcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWNvbmRhcnlCdXR0b24/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NvbnRlbnQnOlxuICAgICAgICAgICAgICAgIHRoaXMuX2NvbnRlbnQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9ICAgIFxuXG59XG5cblxuXG4iLCI8c2RzLW1vZGFsXG4gICAgI21vZGFsXG4gICAgW21vZGFsVGl0bGVdPVwiZGlhbG9nVGl0bGUgfHwgdGl0bGVcIlxuICAgIFtzaXplXT1cInNpemVcIlxuICAgIFttb2RhbERpYWxvZ0lkXT1cIm1vZGFsRGlhbG9nSWRcIlxuICAgIFtzaG93Q2xvc2VCdXR0b25dPVwic2hvd0Nsb3NlQnV0dG9uXCJcbiAgICBbc2hvd0hlYWRlcl09XCJzaG93SGVhZGVyXCJcbiAgICBbdHJhbnNsYXRpb25zXT1cInsgY2xvc2U6IGNsb3NlVGV4dH1cIlxuICAgIFthdXRvRm9jdXNDbG9zZUJ1dHRvbl09XCJhdXRvZm9jdXNFbGVtZW50ID09PSAnY2xvc2UnXCJcbiAgICBbY2xvc2VCdXR0b25MYWJlbF09XCJjbG9zZVRleHRcIlxuICAgIFtjbG9zZU9uRXNjYXBlXT1cImNsb3NlT25Fc2NhcGVcIlxuICAgIChjbG9zZUNsaWNrKT1cIm9uQ2xvc2VDbGljaygpXCJcbiAgICAoY2xvc2VFc2NhcGVLZXlwcmVzcyk9XCJvbkNsb3NlRXNjYXBlS2V5cHJlc3MoKVwiXG4gICAgKG1vZGFsQ2xvc2UpPVwib25Nb2RhbENsb3NlKClcIlxuICAgIChtb2RhbE9wZW4pPVwib25Nb2RhbE9wZW4oKVwiXG4gICAgWyhpc09wZW4pXT1cImlzT3BlblwiXG4+XG5cbiAgICA8ZGl2ICNjb250ZW50IFthdHRyLnRhYmluZGV4XT1cImF1dG9mb2N1c0VsZW1lbnQgPT09ICdjb250ZW50JyA/IDAgOiB1bmRlZmluZWRcIiA+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICNmb290ZXIgbmdQcm9qZWN0QXM9J2Zvb3Rlcic+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICNzZWNvbmRhcnlCdXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1NlY29uZGFyeUJ1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJzZWNvbmRhcnlCdXR0b25JZFwiXG4gICAgICAgICAgICBbYXR0ci50eXBlXT1cInNlY29uZGFyeUJ1dHRvblR5cGVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNlY29uZGFyeUJ1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJzZWNvbmRhcnlCdXR0b25DbGFzc1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib25TZWNvbmRhcnlDbGljaygpXCJcbiAgICAgICAgPnt7c2Vjb25kYXJ5QnV0dG9uVGV4dH19PC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICNwcmltYXJ5QnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cInNob3dQcmltYXJ5QnV0dG9uXCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cInByaW1hcnlCdXR0b25JZFwiXG4gICAgICAgICAgICBbYXR0ci50eXBlXT1cInByaW1hcnlCdXR0b25UeXBlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcmltYXJ5QnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJidG5cIlxuICAgICAgICAgICAgW2NsYXNzXT1cInByaW1hcnlCdXR0b25DbGFzc1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib25QcmltYXJ5Q2xpY2soKVwiXG4gICAgICAgID57e3ByaW1hcnlCdXR0b25UZXh0fX08L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvc2RzLW1vZGFsPlxuIl19
|
|
@@ -314,7 +314,7 @@ export class SdsTimelineComponent {
|
|
|
314
314
|
});
|
|
315
315
|
}
|
|
316
316
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SdsTimelineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
317
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SdsTimelineComponent, isStandalone: true, selector: "sds-timeline", inputs: { start: "start", end: "end", items: "items", pointInTimeItems: "pointInTimeItems", itemTemplate: "itemTemplate", pointInTimeTemplate: "pointInTimeTemplate", dayLabelTemplate: "dayLabelTemplate", dayLabelCustomDataFn: "dayLabelCustomDataFn", tickFrequency: "tickFrequency", hourLabelFrequency: "hourLabelFrequency", zoomPercent: "zoomPercent", viewOffsetPercent: "viewOffsetPercent", maxZoomPercent: "maxZoomPercent", showHourLabels: "showHourLabels", hourLabelClass: "hourLabelClass", showDayLabels: "showDayLabels", dayLabelClass: "dayLabelClass", showTimeline: "showTimeline", hourTickClass: "hourTickClass", timelineHeight: "timelineHeight", enableZoomAndDrag: "enableZoomAndDrag", offSetMinutes: "offSetMinutes", locales: "locales", cutOffset: "cutOffset", defaultCursor: "defaultCursor" }, outputs: { zoomPercentChange: "zoomPercentChange", viewOffsetPercentChange: "viewOffsetPercentChange" }, host: { listeners: { "window:mousemove": "onDragMove($event)", "window:touchmove": "onDragMoveTouch($event)", "window:mouseup": "onDragEnd($event)", "window:touchend": "onDragEnd($event)" } }, viewQueries: [{ propertyName: "_viewport", first: true, predicate: ["viewport"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #defaultItemTemplate let-item=\"item\">\n <div \n class=\"sds-timeline-item h-100\"\n [title]=\"item.hint\"\n >\n </div>\n</ng-template>\n\n<ng-template #defaultPointInTimeItemTemplate let-item=\"item\">\n <div \n class=\"sds-timeline-item h-100\"\n [title]=\"item.hint\"\n >\n </div>\n</ng-template>\n\n<ng-template #defaultDayLabelTemplate let-label=\"label\">\n {{label.label}}\n</ng-template>\n\n<div \n #viewport\n class=\"sds-timeline-viewport\"\n (wheel)=\"onScroll($event)\"\n\n (mousedown)=\"onDragStart($event)\"\n (touchstart)=\"onDragStart($event)\"\n >\n\n <div \n class=\"sds-timeline-container d-flex flex-column\"\n [style.left.%]=\"viewOffsetPercent\"\n [style.width.%]=\"zoomPercent\"\n [style.cursor]=\"isDragging ? 'ew-resize' : defaultCursor\"\n >\n\n <div\n *ngIf=\"showDayLabels\" \n class=\"sds-timeline-day-header\">\n\n <div \n *ngFor=\"let label of dayLabels\"\n class=\"sds-day-label\" \n [ngClass]=\"dayLabelClass ?? null\"\n [style.left.%]=\"label.x\"\n [style.width.%]=\"label.width\"\n >\n <ng-container \n [ngTemplateOutlet]=\"dayLabelTemplate ? dayLabelTemplate : defaultDayLabelTemplate\"\n [ngTemplateOutletContext]=\"{label: label}\">\n </ng-container> \n </div>\n </div>\n\n <div \n *ngIf=\"showHourLabels\" \n class=\"sds-timeline-hour-header\">\n\n <div \n *ngFor=\"let label of hourLabels;\"\n class=\"sds-hour-label\" \n [ngClass]=\"hourLabelClass ?? null\"\n [style.left.%]=\"label.x\"\n [style.width.rem]=\"1.2\"\n [ngStyle]=\"{'left': 'calc(' + label.x + '% - 0.6rem)'}\"\n >\n \n {{label.label}}\n \n </div>\n </div>\n\n <div \n *ngIf=\"showTimeline\"\n class=\"sds-timeline flex-grow-1\"\n [style.height]=\"timelineHeight\"\n >\n\n <div \n *ngFor=\"let tick of hourTicks\"\n class=\"sds-timeline-tick\" \n [ngClass]=\"hourTickClass ?? null\"\t\n [ngStyle]=\"tick.x == 100 ? {'left': 'calc(' + tick.x +'% - 1px)'} : {'left': 'calc(' + tick.x + '% - 0.5px)'}\"\n >\n </div>\n\n <div \n *ngFor=\"let item of presentationItems\"\n class=\"sds-timeline-item-container\"\n [ngClass]=\"item.class ?? null\"\n [ngStyle]=\"{\n 'width': 'max(' + item.width +'%, 1px)',\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \n }\"\n\n [style.left.%]=\"item.x\"\n [style.height]=\"item.height\"\n [style.backgroundColor]=\"item.backgroundColor\"\n >\n\n <ng-container \n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultItemTemplate\"\n [ngTemplateOutletContext]=\"{item: item}\">\n </ng-container> \n </div>\n\n\n <!-- [ngClass]=\"item.class\"\t -->\n <div *ngFor=\"let item of presentationPointInTimeItems\"\n class
|
|
317
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SdsTimelineComponent, isStandalone: true, selector: "sds-timeline", inputs: { start: "start", end: "end", items: "items", pointInTimeItems: "pointInTimeItems", itemTemplate: "itemTemplate", pointInTimeTemplate: "pointInTimeTemplate", dayLabelTemplate: "dayLabelTemplate", dayLabelCustomDataFn: "dayLabelCustomDataFn", tickFrequency: "tickFrequency", hourLabelFrequency: "hourLabelFrequency", zoomPercent: "zoomPercent", viewOffsetPercent: "viewOffsetPercent", maxZoomPercent: "maxZoomPercent", showHourLabels: "showHourLabels", hourLabelClass: "hourLabelClass", showDayLabels: "showDayLabels", dayLabelClass: "dayLabelClass", showTimeline: "showTimeline", hourTickClass: "hourTickClass", timelineHeight: "timelineHeight", enableZoomAndDrag: "enableZoomAndDrag", offSetMinutes: "offSetMinutes", locales: "locales", cutOffset: "cutOffset", defaultCursor: "defaultCursor" }, outputs: { zoomPercentChange: "zoomPercentChange", viewOffsetPercentChange: "viewOffsetPercentChange" }, host: { listeners: { "window:mousemove": "onDragMove($event)", "window:touchmove": "onDragMoveTouch($event)", "window:mouseup": "onDragEnd($event)", "window:touchend": "onDragEnd($event)" } }, viewQueries: [{ propertyName: "_viewport", first: true, predicate: ["viewport"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #defaultItemTemplate let-item=\"item\">\n <div \n class=\"sds-timeline-item h-100\"\n [title]=\"item.hint\"\n >\n </div>\n</ng-template>\n\n<ng-template #defaultPointInTimeItemTemplate let-item=\"item\">\n <div \n class=\"sds-timeline-item h-100\"\n [title]=\"item.hint\"\n >\n </div>\n</ng-template>\n\n<ng-template #defaultDayLabelTemplate let-label=\"label\">\n {{label.label}}\n</ng-template>\n\n<div \n #viewport\n class=\"sds-timeline-viewport\"\n (wheel)=\"onScroll($event)\"\n\n (mousedown)=\"onDragStart($event)\"\n (touchstart)=\"onDragStart($event)\"\n >\n\n <div \n class=\"sds-timeline-container d-flex flex-column\"\n [style.left.%]=\"viewOffsetPercent\"\n [style.width.%]=\"zoomPercent\"\n [style.cursor]=\"isDragging ? 'ew-resize' : defaultCursor\"\n >\n\n <div\n *ngIf=\"showDayLabels\" \n class=\"sds-timeline-day-header\">\n\n <div \n *ngFor=\"let label of dayLabels\"\n class=\"sds-day-label\" \n [ngClass]=\"dayLabelClass ?? null\"\n [style.left.%]=\"label.x\"\n [style.width.%]=\"label.width\"\n >\n <ng-container \n [ngTemplateOutlet]=\"dayLabelTemplate ? dayLabelTemplate : defaultDayLabelTemplate\"\n [ngTemplateOutletContext]=\"{label: label}\">\n </ng-container> \n </div>\n </div>\n\n <div \n *ngIf=\"showHourLabels\" \n class=\"sds-timeline-hour-header\">\n\n <div \n *ngFor=\"let label of hourLabels;\"\n class=\"sds-hour-label\" \n [ngClass]=\"hourLabelClass ?? null\"\n [style.left.%]=\"label.x\"\n [style.width.rem]=\"1.2\"\n [ngStyle]=\"{'left': 'calc(' + label.x + '% - 0.6rem)'}\"\n >\n \n {{label.label}}\n \n </div>\n </div>\n\n <div \n *ngIf=\"showTimeline\"\n class=\"sds-timeline flex-grow-1\"\n [style.height]=\"timelineHeight\"\n >\n\n <div \n *ngFor=\"let tick of hourTicks\"\n class=\"sds-timeline-tick\" \n [ngClass]=\"hourTickClass ?? null\"\t\n [ngStyle]=\"tick.x == 100 ? {'left': 'calc(' + tick.x +'% - 1px)'} : {'left': 'calc(' + tick.x + '% - 0.5px)'}\"\n >\n </div>\n\n <div \n *ngFor=\"let item of presentationItems\"\n class=\"sds-timeline-item-container\"\n [ngClass]=\"item.class ?? null\"\n [ngStyle]=\"{\n 'width': 'max(' + item.width +'%, 1px)',\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \n }\"\n\n [style.left.%]=\"item.x\"\n [style.height]=\"item.height\"\n [style.backgroundColor]=\"item.backgroundColor\"\n >\n\n <ng-container \n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultItemTemplate\"\n [ngTemplateOutletContext]=\"{item: item}\">\n </ng-container> \n </div>\n\n\n <!-- [ngClass]=\"item.class\"\t -->\n <div *ngFor=\"let item of presentationPointInTimeItems\"\n class=\"sds-timeline-point-in-time-item-container\"\n [ngClass]=\"item.class ?? null\"\n [style.height]=\"item.height\"\n [style.width]=\"item.width\"\n [ngStyle]=\"{\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \n 'left': 'calc(' + item.x + '% - max( calc(' + item.width +'/2), 1px))',\n \n }\"\n [style.backgroundColor]=\"item.backgroundColor\"\n >\n\n <ng-container \n [ngTemplateOutlet]=\"pointInTimeTemplate ? pointInTimeTemplate : defaultPointInTimeItemTemplate\"\n [ngTemplateOutletContext]=\"{item: item}\">\n </ng-container> \n\n </div>\n\n </div>\n </div>\n</div>\n", styles: [".sds-timeline-viewport{overflow:hidden}.sds-timeline-viewport .sds-timeline-container{width:100%;min-height:0;position:relative;-webkit-user-select:none;user-select:none}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header{height:1.6rem;position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header .sds-day-label{position:absolute;display:inline;text-align:center;font-size:.875rem}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header{height:1.6rem;position:relative;font-size:.8em}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header .sds-hour-label{position:absolute;display:inline;text-align:center;font-size:.875rem}.sds-timeline-viewport .sds-timeline-container .sds-timeline{position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-tick{border-left:1px solid rgb(187,187,187);height:100%;position:absolute;display:inline}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container{height:100%;position:absolute;display:inline;top:20%;height:60%}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container .sds-timeline-item{position:relative;width:100%}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-point-in-time-item-container{width:1px;height:1px;position:absolute}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-point-in-time-item-container .sds-timeline-item{position:relative;width:100%}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
318
318
|
}
|
|
319
319
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SdsTimelineComponent, decorators: [{
|
|
320
320
|
type: Component,
|
|
@@ -324,7 +324,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
324
324
|
NgStyle,
|
|
325
325
|
NgClass,
|
|
326
326
|
NgTemplateOutlet,
|
|
327
|
-
], template: "<ng-template #defaultItemTemplate let-item=\"item\">\n <div \n class=\"sds-timeline-item h-100\"\n [title]=\"item.hint\"\n >\n </div>\n</ng-template>\n\n<ng-template #defaultPointInTimeItemTemplate let-item=\"item\">\n <div \n class=\"sds-timeline-item h-100\"\n [title]=\"item.hint\"\n >\n </div>\n</ng-template>\n\n<ng-template #defaultDayLabelTemplate let-label=\"label\">\n {{label.label}}\n</ng-template>\n\n<div \n #viewport\n class=\"sds-timeline-viewport\"\n (wheel)=\"onScroll($event)\"\n\n (mousedown)=\"onDragStart($event)\"\n (touchstart)=\"onDragStart($event)\"\n >\n\n <div \n class=\"sds-timeline-container d-flex flex-column\"\n [style.left.%]=\"viewOffsetPercent\"\n [style.width.%]=\"zoomPercent\"\n [style.cursor]=\"isDragging ? 'ew-resize' : defaultCursor\"\n >\n\n <div\n *ngIf=\"showDayLabels\" \n class=\"sds-timeline-day-header\">\n\n <div \n *ngFor=\"let label of dayLabels\"\n class=\"sds-day-label\" \n [ngClass]=\"dayLabelClass ?? null\"\n [style.left.%]=\"label.x\"\n [style.width.%]=\"label.width\"\n >\n <ng-container \n [ngTemplateOutlet]=\"dayLabelTemplate ? dayLabelTemplate : defaultDayLabelTemplate\"\n [ngTemplateOutletContext]=\"{label: label}\">\n </ng-container> \n </div>\n </div>\n\n <div \n *ngIf=\"showHourLabels\" \n class=\"sds-timeline-hour-header\">\n\n <div \n *ngFor=\"let label of hourLabels;\"\n class=\"sds-hour-label\" \n [ngClass]=\"hourLabelClass ?? null\"\n [style.left.%]=\"label.x\"\n [style.width.rem]=\"1.2\"\n [ngStyle]=\"{'left': 'calc(' + label.x + '% - 0.6rem)'}\"\n >\n \n {{label.label}}\n \n </div>\n </div>\n\n <div \n *ngIf=\"showTimeline\"\n class=\"sds-timeline flex-grow-1\"\n [style.height]=\"timelineHeight\"\n >\n\n <div \n *ngFor=\"let tick of hourTicks\"\n class=\"sds-timeline-tick\" \n [ngClass]=\"hourTickClass ?? null\"\t\n [ngStyle]=\"tick.x == 100 ? {'left': 'calc(' + tick.x +'% - 1px)'} : {'left': 'calc(' + tick.x + '% - 0.5px)'}\"\n >\n </div>\n\n <div \n *ngFor=\"let item of presentationItems\"\n class=\"sds-timeline-item-container\"\n [ngClass]=\"item.class ?? null\"\n [ngStyle]=\"{\n 'width': 'max(' + item.width +'%, 1px)',\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \n }\"\n\n [style.left.%]=\"item.x\"\n [style.height]=\"item.height\"\n [style.backgroundColor]=\"item.backgroundColor\"\n >\n\n <ng-container \n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultItemTemplate\"\n [ngTemplateOutletContext]=\"{item: item}\">\n </ng-container> \n </div>\n\n\n <!-- [ngClass]=\"item.class\"\t -->\n <div *ngFor=\"let item of presentationPointInTimeItems\"\n class
|
|
327
|
+
], template: "<ng-template #defaultItemTemplate let-item=\"item\">\n <div \n class=\"sds-timeline-item h-100\"\n [title]=\"item.hint\"\n >\n </div>\n</ng-template>\n\n<ng-template #defaultPointInTimeItemTemplate let-item=\"item\">\n <div \n class=\"sds-timeline-item h-100\"\n [title]=\"item.hint\"\n >\n </div>\n</ng-template>\n\n<ng-template #defaultDayLabelTemplate let-label=\"label\">\n {{label.label}}\n</ng-template>\n\n<div \n #viewport\n class=\"sds-timeline-viewport\"\n (wheel)=\"onScroll($event)\"\n\n (mousedown)=\"onDragStart($event)\"\n (touchstart)=\"onDragStart($event)\"\n >\n\n <div \n class=\"sds-timeline-container d-flex flex-column\"\n [style.left.%]=\"viewOffsetPercent\"\n [style.width.%]=\"zoomPercent\"\n [style.cursor]=\"isDragging ? 'ew-resize' : defaultCursor\"\n >\n\n <div\n *ngIf=\"showDayLabels\" \n class=\"sds-timeline-day-header\">\n\n <div \n *ngFor=\"let label of dayLabels\"\n class=\"sds-day-label\" \n [ngClass]=\"dayLabelClass ?? null\"\n [style.left.%]=\"label.x\"\n [style.width.%]=\"label.width\"\n >\n <ng-container \n [ngTemplateOutlet]=\"dayLabelTemplate ? dayLabelTemplate : defaultDayLabelTemplate\"\n [ngTemplateOutletContext]=\"{label: label}\">\n </ng-container> \n </div>\n </div>\n\n <div \n *ngIf=\"showHourLabels\" \n class=\"sds-timeline-hour-header\">\n\n <div \n *ngFor=\"let label of hourLabels;\"\n class=\"sds-hour-label\" \n [ngClass]=\"hourLabelClass ?? null\"\n [style.left.%]=\"label.x\"\n [style.width.rem]=\"1.2\"\n [ngStyle]=\"{'left': 'calc(' + label.x + '% - 0.6rem)'}\"\n >\n \n {{label.label}}\n \n </div>\n </div>\n\n <div \n *ngIf=\"showTimeline\"\n class=\"sds-timeline flex-grow-1\"\n [style.height]=\"timelineHeight\"\n >\n\n <div \n *ngFor=\"let tick of hourTicks\"\n class=\"sds-timeline-tick\" \n [ngClass]=\"hourTickClass ?? null\"\t\n [ngStyle]=\"tick.x == 100 ? {'left': 'calc(' + tick.x +'% - 1px)'} : {'left': 'calc(' + tick.x + '% - 0.5px)'}\"\n >\n </div>\n\n <div \n *ngFor=\"let item of presentationItems\"\n class=\"sds-timeline-item-container\"\n [ngClass]=\"item.class ?? null\"\n [ngStyle]=\"{\n 'width': 'max(' + item.width +'%, 1px)',\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \n }\"\n\n [style.left.%]=\"item.x\"\n [style.height]=\"item.height\"\n [style.backgroundColor]=\"item.backgroundColor\"\n >\n\n <ng-container \n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultItemTemplate\"\n [ngTemplateOutletContext]=\"{item: item}\">\n </ng-container> \n </div>\n\n\n <!-- [ngClass]=\"item.class\"\t -->\n <div *ngFor=\"let item of presentationPointInTimeItems\"\n class=\"sds-timeline-point-in-time-item-container\"\n [ngClass]=\"item.class ?? null\"\n [style.height]=\"item.height\"\n [style.width]=\"item.width\"\n [ngStyle]=\"{\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \n 'left': 'calc(' + item.x + '% - max( calc(' + item.width +'/2), 1px))',\n \n }\"\n [style.backgroundColor]=\"item.backgroundColor\"\n >\n\n <ng-container \n [ngTemplateOutlet]=\"pointInTimeTemplate ? pointInTimeTemplate : defaultPointInTimeItemTemplate\"\n [ngTemplateOutletContext]=\"{item: item}\">\n </ng-container> \n\n </div>\n\n </div>\n </div>\n</div>\n", styles: [".sds-timeline-viewport{overflow:hidden}.sds-timeline-viewport .sds-timeline-container{width:100%;min-height:0;position:relative;-webkit-user-select:none;user-select:none}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header{height:1.6rem;position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header .sds-day-label{position:absolute;display:inline;text-align:center;font-size:.875rem}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header{height:1.6rem;position:relative;font-size:.8em}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header .sds-hour-label{position:absolute;display:inline;text-align:center;font-size:.875rem}.sds-timeline-viewport .sds-timeline-container .sds-timeline{position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-tick{border-left:1px solid rgb(187,187,187);height:100%;position:absolute;display:inline}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container{height:100%;position:absolute;display:inline;top:20%;height:60%}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container .sds-timeline-item{position:relative;width:100%}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-point-in-time-item-container{width:1px;height:1px;position:absolute}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-point-in-time-item-container .sds-timeline-item{position:relative;width:100%}\n"] }]
|
|
328
328
|
}], ctorParameters: () => [], propDecorators: { start: [{
|
|
329
329
|
type: Input
|
|
330
330
|
}], end: [{
|
|
@@ -395,4 +395,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
395
395
|
type: HostListener,
|
|
396
396
|
args: ['window:touchend', ['$event']]
|
|
397
397
|
}] } });
|
|
398
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvdGltZWxpbmUvY29tcG9uZW50cy90aW1lbGluZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2RzLWNvbXBvbmVudHMvc3JjL2xpYi90aW1lbGluZS9jb21wb25lbnRzL3RpbWVsaW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxFQUNULFlBQVksRUFDZixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVNsRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBZWxGLE1BQU0sT0FBTyxvQkFBb0I7SUF1TzdCO1FBdE9BOzs7OztXQUtHO1FBQ00sVUFBSyxHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7UUFFbEM7Ozs7O1dBS0c7UUFDTSxRQUFHLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUVoQzs7Ozs7O1dBTUc7UUFDTSxVQUFLLEdBQW1CLEVBQUUsQ0FBQztRQUVwQzs7Ozs7O1dBTUc7UUFDTSxxQkFBZ0IsR0FBOEIsRUFBRSxDQUFDO1FBRTFEOzs7OztXQUtHO1FBQ00saUJBQVksR0FBaUMsU0FBUyxDQUFDO1FBRWhFOzs7OztXQUtHO1FBQ00sd0JBQW1CLEdBQWlDLFNBQVMsQ0FBQztRQUV2RTs7Ozs7V0FLRztRQUNNLHFCQUFnQixHQUFpQyxTQUFTLENBQUM7UUFFcEU7Ozs7O1dBS0c7UUFDTSx5QkFBb0IsR0FBK0MsU0FB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LE9BQU87c0JBQWYsS0FBSztnQkFTRyxTQUFTO3NCQUFqQixLQUFLO2dCQVNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBc0JtQyxTQUFTO3NCQUFqRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBNEZoQyxVQUFVO3NCQURoQixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVc1QyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBWXJDLFNBQVM7c0JBRmYsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ3pDLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIEV2ZW50RW1pdHRlclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRpbWVsaW5lQ3VzdG9tRGF0ZURhdGFQcm92aWRlciwgVGltZWxpbmVUaWNrRnJlcXVlbmN5IH0gZnJvbSAnLi4vdHlwZXMvdGltZWxpbmUudHlwZXMnO1xuaW1wb3J0IHsgU2RzVGltZWxpbmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdGltZWxpbmUuc2VydmljZSc7XG5pbXBvcnQge1xuICAgIFRpbWVsaW5lSW50ZXJ2YWxMYWJlbCxcbiAgICBUaW1lbGluZUl0ZW0sXG4gICAgVGltZWxpbmVJdGVtUHJlc2VudGF0aW9uLFxuICAgIFRpbWVsaW5lUG9pbnRJblRpbWVJdGVtLFxuICAgIFRpbWVsaW5lUG9pbnRJblRpbWVJdGVtUHJlc2VudGF0aW9uLFxuICAgIFRpbWVsaW5lVGljayxcbn0gZnJvbSAnLi4vbW9kZWxzL3RpbWVsaW5lLm1vZGVsJztcbmltcG9ydCB7IE5nSWYsIE5nRm9yLCBOZ1N0eWxlLCBOZ1RlbXBsYXRlT3V0bGV0LCBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzZHMtdGltZWxpbmUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90aW1lbGluZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGltZWxpbmUuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIE5nU3R5bGUsXG4gICAgICAgIE5nQ2xhc3MsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2RzVGltZWxpbmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqXG4gICAgICogVGhlIHN0YXJ0IGRhdGUgYW5kIHRpbWUgZm9yIHRoZSB0aW1lbGluZS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtEYXRlfVxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0YXJ0OiBEYXRlID0gbmV3IERhdGUoKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBlbmQgZGF0ZSBhbmQgdGltZSBmb3IgdGhlIHRpbWVsaW5lLlxuICAgICAqXG4gICAgICogQHR5cGUge0RhdGV9XG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgZW5kOiBEYXRlID0gbmV3IERhdGUoKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBwZXJpb2QgYmFzZWQgaXRlbXMgdG8gYmUgZGlzcGxheWVkIG9uIHRoZSB0aW1lbGluZS4gU3BlY2lmeSBkYXRhIGlmIHlvdSBuZWVkIFxuICAgICAqIGFkZGl0aW9uYWwgZGF0YSBmb3IgY3VzdG9tIHJlbmRlcmluZyBvZiB0aGUgaXRlbXMuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7VGltZWxpbmVJdGVtW119XG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgaXRlbXM6IFRpbWVsaW5lSXRlbVtdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBJdGVtcyB0byBiZSBkaXNwbGF5ZWQgb24gdGhlIHRpbWVsaW5lIGF0IGEgc3BlY2lmaWMgcG9pbnQgaW4gdGltZS5cbiAgICAgKiBTcGVjaWZ5IGRhdGEgaWYgeW91IG5lZWQgYWRkaXRpb25hbCBkYXRhIGZvciBjdXN0b20gcmVuZGVyaW5nIG9mIHRoZSBpdGVtcy5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtUaW1lbGluZVBvaW50SW5UaW1lSXRlbVtdfVxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHBvaW50SW5UaW1lSXRlbXM6IFRpbWVsaW5lUG9pbnRJblRpbWVJdGVtW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIFRoZSB0ZW1wbGF0ZSB0byBiZSB1c2VkIGZvciBjdXN0b20gcmVuZGVyaW5nIG9mIHRoZSBpdGVtcy5cbiAgICAgKlxuICAgICAqIEB0eXBlIHsoVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCl9XG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHRlbXBsYXRlIHRvIGJlIHVzZWQgZm9yIGN1c3RvbSByZW5kZXJpbmcgb2YgdGhlIHBvaW4taW4tdGltZSBpdGVtcy5cbiAgICAgKlxuICAgICAqIEB0eXBlIHsoVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCl9XG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgcG9pbnRJblRpbWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqIFRoZSB0ZW1wbGF0ZSB0byBiZSB1c2VkIGZvciBjdXN0b20gcmVuZGVyaW5nIG9mIHRoZSBkYXkgbGFiZWxzLlxuICAgICAqXG4gICAgICogQHR5cGUgeyhUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkKX1cbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBkYXlMYWJlbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIFxuICAgIC8qKlxuICAgICAqIEEgY3VzdG9tIGRhdGEgZnVuY3Rpb24gZm9yIHRoZSBkYXkgbGFiZWxzLiBcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIHRha2VzIGEgRGF0ZSBvYmplY3QgYXMgaW5wdXQgYW5kIHJldHVybnMgYW55IGN1c3RvbSBkYXRhIHRoYXQgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHRoZSBjdXN0b20gdGVtcGxhdGVcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGRheUxhYmVsQ3VzdG9tRGF0YUZuOiBUaW1lbGluZUN1c3RvbURhdGVEYXRhUHJvdmlkZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZnJlcXVlbmN5IG9mIHRoZSB0aWNrcyBvbiB0aGUgdGltZWxpbmUuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7VGltZWxpbmVUaWNrRnJlcXVlbmN5fVxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRpY2tGcmVxdWVuY3k6IFRpbWVsaW5lVGlja0ZyZXF1ZW5jeSA9ICdob3VybHknO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGZyZXF1ZW5jeSBvZiB0aGUgaG91ciBsYWJlbHMgb24gdGhlIHRpbWVsaW5lLlxuICAgICAqXG4gICAgICogQHR5cGUge1RpbWVsaW5lVGlja0ZyZXF1ZW5jeX1cbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBob3VyTGFiZWxGcmVxdWVuY3k6IFRpbWVsaW5lVGlja0ZyZXF1ZW5jeSA9ICczaHJzJztcblxuXG4gICAgLyoqXG4gICAgICogVGhlIGN1cnJlbnQgem9vbSBsZXZlbCBvZiB0aGUgdGltZWxpbmUuIEluIHBlcmNlbnQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHpvb21QZXJjZW50OiBudW1iZXIgPSAxMDA7XG4gICAgQE91dHB1dCgpIHpvb21QZXJjZW50Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsIG9mZnNldCBvZiB0aGUgdmlld3BvcnQgaW4gcGVyY2VudC4gVGhpcyBpcyB1c2VkIGluIHNjZW5hcmlvcyBcbiAgICAgKiB3aXRoIG11bHRpcGxlIGRheXMgd2hlbiB5b3Ugd2FudCB0byBzaG93IG5vbi1maXJzdCBkYXkgYXMgZGVmdWx0LlxuICAgICAqXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSB2aWV3T2Zmc2V0UGVyY2VudDogbnVtYmVyID0gMDtcbiAgICBAT3V0cHV0KCkgdmlld09mZnNldFBlcmNlbnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBtYXhpbXVtIGFsbG93ZWQgem9vbSBsZXZlbCBvZiB0aGUgdGltZWxpbmUuIEluIHBlcmNlbnQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIG1heFpvb21QZXJjZW50OiBudW1iZXIgPSA1MDA7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHNob3cgaG91ciBsYWJlbHMuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzaG93SG91ckxhYmVsczogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgQ1NTIGNsYXNzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGhvdXIgbGFiZWxzLlxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBob3VyTGFiZWxDbGFzcz86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gc2hvdyBkYXkgbGFiZWxzLiBcbiAgICAgKlxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNob3dEYXlMYWJlbHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBDU1MgY2xhc3MgdG8gYmUgYXBwbGllZCB0byB0aGUgZGF5IGxhYmVscy5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgZGF5TGFiZWxDbGFzcz86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gc2hvdyB0aW1lbGluZS4gVXNlZnVsIGZvciBoaWRpbmcgdGhlIHRpbWVsaW5lIHdoZW4gd2Ugb25seSBuZWVkIGhlYWRlci5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNob3dUaW1lbGluZTogYm9vbGVhbiA9IHRydWU7ICAgIFxuXG4gICAgLyoqXG4gICAgICogVGhlIENTUyBjbGFzcyB0byBiZSBhcHBsaWVkIHRvIHRoZSBob3VyIHRpY2tzLlxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBob3VyVGlja0NsYXNzPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGhlaWdodCBvZiB0aGUgdGltZWxpbmUuIERlZmF1bHQgaXMgMnJlbS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgdGltZWxpbmVIZWlnaHQ6IHN0cmluZyA9ICcycmVtJztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gZW5hYmxlIHpvb20gYW5kIGRyYWcgZnVuY3Rpb25hbGl0eS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGVuYWJsZVpvb21BbmREcmFnOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIE51bWJlciBvZiBtaW51dGVzIGFkZGVkIHRvIHN0YXJ0IGFuZCBzdG9wIHRvIGZpdCB0aGUgZGF0YSBvbiB0aGUgZWRnZXNcbiAgICAgKlxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgb2ZmU2V0TWludXRlczogbnVtYmVyID0gMTU7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbG9jYWxlcyB0byBiZSB1c2VkIGZvciBmb3JtYXR0aW5nIHRoZSB0aW1lbGluZS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHsoc3RyaW5nIHwgQXJyYXk8c3RyaW5nPil9XG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgbG9jYWxlcz86IHN0cmluZyB8IEFycmF5PHN0cmluZz47XG5cbiAgICAvKipcbiAgICAgKiBDb250cm9sIGlmIHRob3NlIHBhcnRzIG9mIHNlZ21lbnRzIChvciB3aG9sZSBzZWdtZW50cykgdGhhdCBmYWxsIGludG8gdGhlIE9mZnNldCBcbiAgICAgKiBwZXJpb2QgYXJlIGRpc3BsYXllZCBvciBub3RcbiAgICAgKlxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGN1dE9mZnNldDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyBkZWZhdWx0IGN1cnNvciwgdGhhdCBzaG91bGQgYmUgc2hvd24gd2hlbiBob3ZlcmluZyBvdmVyIHRpbWVsaW5lIGNvbXBvbmVudC5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzICdkZWZhdWx0Jy5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgZGVmYXVsdEN1cnNvcjogc3RyaW5nID0gXCJkZWZhdWx0XCI7XG5cbiAgICAvLyBwcm90ZWN0ZWRcbiAgICBob3VyVGlja3M6IFRpbWVsaW5lVGlja1tdID0gW107XG4gICAgaG91ckxhYmVsczogVGltZWxpbmVJbnRlcnZhbExhYmVsW10gPSBbXTtcbiAgICBkYXlMYWJlbHM6IFRpbWVsaW5lSW50ZXJ2YWxMYWJlbFtdID0gW107XG5cbiAgICBwcml2YXRlIF90aW1lbGluZVNlcnZpY2U6IFNkc1RpbWVsaW5lU2VydmljZSA9IG5ldyBTZHNUaW1lbGluZVNlcnZpY2UoXG4gICAgICAgIHRoaXMuc3RhcnQsXG4gICAgICAgIHRoaXMuZW5kLFxuICAgICAgICB0aGlzLm9mZlNldE1pbnV0ZXMsXG4gICAgICAgIHRoaXMuY3V0T2Zmc2V0XG4gICAgKTtcblxuICAgIHB1YmxpYyBwcmVzZW50YXRpb25JdGVtczogVGltZWxpbmVJdGVtUHJlc2VudGF0aW9uW10gPSBbXTtcbiAgICBwdWJsaWMgcHJlc2VudGF0aW9uUG9pbnRJblRpbWVJdGVtczogVGltZWxpbmVQb2ludEluVGltZUl0ZW1QcmVzZW50YXRpb25bXSA9IFtdO1xuXG4gICAgcHVibGljIGlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICBwdWJsaWMgaW5pdGlhbERyYWdYID0gMDtcblxuICAgIHByaXZhdGUgdmlld09mZnNldFBlcmNlbnREcmFnU3RhcnQgPSAwO1xuXG4gICAgQFZpZXdDaGlsZCgndmlld3BvcnQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBfdmlld3BvcnQ6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVUaWNrcygpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhcnQgJiYgdGhpcy5lbmQpIHtcbiAgICAgICAgICAgIHRoaXMuX3RpbWVsaW5lU2VydmljZSA9IG5ldyBTZHNUaW1lbGluZVNlcnZpY2UoXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydCxcbiAgICAgICAgICAgICAgICB0aGlzLmVuZCxcbiAgICAgICAgICAgICAgICB0aGlzLm9mZlNldE1pbnV0ZXMsXG4gICAgICAgICAgICAgICAgdGhpcy5jdXRPZmZzZXRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlVGlja3MoKTtcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVJbnRlcm5hbFRpbWVsaW5lSXRlbXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzWydzdGFydCddIHx8IGNoYW5nZXNbJ2VuZCddIHx8IGNoYW5nZXNbJ29mZlNldE1pbnV0ZXMnXSB8fCBjaGFuZ2VzWydjdXRPZmZzZXQnXSkge1xuICAgICAgICAgICAgdGhpcy5fdGltZWxpbmVTZXJ2aWNlID0gbmV3IFNkc1RpbWVsaW5lU2VydmljZShcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0LFxuICAgICAgICAgICAgICAgIHRoaXMuZW5kLFxuICAgICAgICAgICAgICAgIHRoaXMub2ZmU2V0TWludXRlcyxcbiAgICAgICAgICAgICAgICB0aGlzLmN1dE9mZnNldFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVUaWNrcygpO1xuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUludGVybmFsVGltZWxpbmVJdGVtcygpOyAgICAgICAgICAgIFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXNbJ2l0ZW1zJ10pIHtcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVJbnRlcm5hbFRpbWVsaW5lSXRlbXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzWydwb2ludEluVGltZUl0ZW1zJ10pIHtcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVJbnRlcm5hbFRpbWVsaW5lUG9pbnRJblRpbWVJdGVtcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXNbJ3pvb21QZXJjZW50J10pIHtcbiAgICAgICAgICAgIC8vIHRoaXMudmlld09mZnNldFBlcmNlbnQgPSAodGhpcy56b29tUGVyY2VudCAtIDEwMCkgLyAtMjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzWydzaG93RGF5TGFiZWxzJ10gfHwgY2hhbmdlc1snc2hvd0hvdXJMYWJlbHMnXSkge1xuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZVRpY2tzKCk7XG4gICAgICAgIH0gICAgICBcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgICAvLyNyZWdpb24gbW91c2Ugd2hlZWwgem9vbVxuICAgIG9uU2Nyb2xsKGV2ZW50OiBXaGVlbEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmVuYWJsZVpvb21BbmREcmFnKSB7XG5cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGRlbHRhID0gTWF0aC5zaWduKGV2ZW50LmRlbHRhWSk7XG4gICAgICAgICAgICBjb25zdCBuZXdab29tUGVyY2VudCA9IE1hdGgubWluKFxuICAgICAgICAgICAgICAgIE1hdGgubWF4KHRoaXMuem9vbVBlcmNlbnQgKyAtZGVsdGEgKiAyMCwgMTAwKSxcbiAgICAgICAgICAgICAgICB0aGlzLm1heFpvb21QZXJjZW50XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgZGVsdGFab29tUGVyY2VudCA9IG5ld1pvb21QZXJjZW50IC0gdGhpcy56b29tUGVyY2VudDtcbiAgICAgICAgICAgIHRoaXMuem9vbVBlcmNlbnQgPSBuZXdab29tUGVyY2VudDtcbiAgICAgICAgICAgIHRoaXMuem9vbVBlcmNlbnRDaGFuZ2UuZW1pdCh0aGlzLnpvb21QZXJjZW50KTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gZ2V0IHRoZSByZWxhdGl2ZSBwb3NpdGlvbiBvZiB0aGUgY3Vyc29yIG9uIHRoZSB2aWV3cG9ydCBzbyB3ZSBjYW4gem9vbSBpbiBpbnRvIHRoaXMgcG9zaXRpb25cbiAgICAgICAgICAgIGNvbnN0IHggPSBldmVudC5jbGllbnRYIC0gdGhpcy5fdmlld3BvcnQ/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgICAgICAgIGNvbnN0IGN1cnNvclJlbGF0aXZlUG9zaXRpb24gPSB4IC8gdGhpcy5fdmlld3BvcnQ/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgICAgICAvLyB0aGlzLnZpZXdPZmZzZXRQZXJjZW50ID0gdGhpcy52aWV3T2Zmc2V0UGVyY2VudCAtIGRlbHRhWm9vbVBlcmNlbnQgKiBjdXJzb3JSZWxhdGl2ZVBvc2l0aW9uO1xuXG4gICAgICAgICAgICB0aGlzLmNvbnN0cmFpbk9mZnNldCh0aGlzLnZpZXdPZmZzZXRQZXJjZW50IC0gZGVsdGFab29tUGVyY2VudCAqIGN1cnNvclJlbGF0aXZlUG9zaXRpb24pO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIGRyYWdnaW5nXG4gICAgXG4gICAgcHVibGljIG9uRHJhZ1N0YXJ0KGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5lbmFibGVab29tQW5kRHJhZyAmJiB0aGlzLnpvb21QZXJjZW50ID4gMTAwKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5pc0RyYWdnaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMudmlld09mZnNldFBlcmNlbnREcmFnU3RhcnQgPSB0aGlzLnZpZXdPZmZzZXRQZXJjZW50O1xuXG4gICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsRHJhZ1ggPSBldmVudC5jbGllbnRYO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIFRvdWNoRXZlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxEcmFnWCA9IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptb3VzZW1vdmUnLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkRyYWdNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmVuYWJsZVpvb21BbmREcmFnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0RyYWdnaW5nKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFggPSBldmVudC5jbGllbnRYO1xuICAgICAgICAgICAgICAgIHRoaXMubW92ZUVsZW1lbnQoY3VycmVudFgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnRvdWNobW92ZScsIFsnJGV2ZW50J10pXG4gICAgb25EcmFnTW92ZVRvdWNoKGV2ZW50OiBUb3VjaEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmVuYWJsZVpvb21BbmREcmFnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0RyYWdnaW5nKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFggPSBldmVudC50b3VjaGVzWzBdLmNsaWVudFg7XG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZlRWxlbWVudChjdXJyZW50WCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bW91c2V1cCcsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnRvdWNoZW5kJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25EcmFnRW5kKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5lbmFibGVab29tQW5kRHJhZykge1xuICAgICAgICAgICAgdGhpcy5pc0RyYWdnaW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vdmVFbGVtZW50KGN1cnJlbnRYOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGlmZiA9IGN1cnJlbnRYIC0gdGhpcy5pbml0aWFsRHJhZ1g7XG4gICAgICAgIGlmICh0aGlzLl92aWV3cG9ydCAmJiB0aGlzLl92aWV3cG9ydC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBkaWZmSW5QZXJjZW50ID0gKGRpZmYgLyB0aGlzLl92aWV3cG9ydD8ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCkgKiAxMDA7XG4gICAgICAgICAgICAvLyB0aGlzLnZpZXdPZmZzZXRQZXJjZW50ID0gdGhpcy52aWV3T2Zmc2V0UGVyY2VudERyYWdTdGFydCArIGRpZmZJblBlcmNlbnQ7XG4gICAgICAgICAgICB0aGlzLmNvbnN0cmFpbk9mZnNldCh0aGlzLnZpZXdPZmZzZXRQZXJjZW50RHJhZ1N0YXJ0ICsgZGlmZkluUGVyY2VudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIHByaXZhdGUgY29uc3RyYWluT2Zmc2V0KG5ld09mZnNldDogbnVtYmVyKTogdm9pZCB7ICAgICAgICBcbiAgICAgICAgaWYgKHRoaXMuem9vbVBlcmNlbnQgKyBuZXdPZmZzZXQgPCAxMDApIHtcbiAgICAgICAgICAgIG5ld09mZnNldCA9IC10aGlzLnpvb21QZXJjZW50ICsgMTAwO1xuICAgICAgICB9XG4gICAgICAgIG5ld09mZnNldCA9IE1hdGgubWluKDAsIG5ld09mZnNldCk7XG4gICAgICAgIGlmIChuZXdPZmZzZXQgIT0gdGhpcy52aWV3T2Zmc2V0UGVyY2VudCkge1xuICAgICAgICAgICAgdGhpcy52aWV3T2Zmc2V0UGVyY2VudCA9IG5ld09mZnNldDtcbiAgICAgICAgICAgIHRoaXMudmlld09mZnNldFBlcmNlbnRDaGFuZ2UuZW1pdCh0aGlzLnZpZXdPZmZzZXRQZXJjZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVUaWNrcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3VyVGlja3MgPSB0aGlzLl90aW1lbGluZVNlcnZpY2UuZ2V0SG91clRpY2tzKHRoaXMudGlja0ZyZXF1ZW5jeSk7XG4gICAgICAgIHRoaXMuZGF5TGFiZWxzID0gdGhpcy5fdGltZWxpbmVTZXJ2aWNlLmdldERheUxhYmVscyh0aGlzLmxvY2FsZXMsIHRoaXMuZGF5TGFiZWxDdXN0b21EYXRhRm4pO1xuICAgICAgICB0aGlzLmhvdXJMYWJlbHMgPSB0aGlzLl90aW1lbGluZVNlcnZpY2UuZ2V0SG91ckxhYmVscyh0aGlzLmhvdXJMYWJlbEZyZXF1ZW5jeSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUludGVybmFsVGltZWxpbmVJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3V0dE9mZlN0YXJ0ID0gdGhpcy5jdXRPZmZzZXQgPyB0aGlzLnN0YXJ0IDogbmV3IERhdGUodGhpcy5zdGFydC5nZXRUaW1lKCkgLSB0aGlzLm9mZlNldE1pbnV0ZXMgKiA2MDAwMCk7XG4gICAgICAgIGNvbnN0IGN1dHRPZmZFbmQgPSB0aGlzLmN1dE9mZnNldCA/IHRoaXMuZW5kIDogbmV3IERhdGUodGhpcy5lbmQuZ2V0VGltZSgpICsgdGhpcy5vZmZTZXRNaW51dGVzICogNjAwMDApO1xuXG4gICAgICAgIHRoaXMucHJlc2VudGF0aW9uSXRlbXMgPSB0aGlzLml0ZW1zXG4gICAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmVuZCA8IGN1dHRPZmZTdGFydCB8fCBpdGVtLnN0YXJ0ID4gY3V0dE9mZkVuZCA/IGZhbHNlIDogdHJ1ZSlcbiAgICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydFRpbWUgPSBuZXcgRGF0ZShpdGVtLnN0YXJ0KS50b0xvY2FsZVRpbWVTdHJpbmcodGhpcy5sb2NhbGVzPz8gW10sIHsgaG91cjogJ251bWVyaWMnLCBtaW51dGU6ICcyLWRpZ2l0JyB9KTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmRUaW1lID0gbmV3IERhdGUoaXRlbS5lbmQpLnRvTG9jYWxlVGltZVN0cmluZyh0aGlzLmxvY2FsZXM/PyBbXSwgeyBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJzItZGlnaXQnIH0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVSYW5nZSA9IGAke3N0YXJ0VGltZX0gLSAke2VuZFRpbWV9YDtcbiAgICAgICAgXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogaXRlbS5kYXRhLFxuICAgICAgICAgICAgICAgICAgICB4OiB0aGlzLl90aW1lbGluZVNlcnZpY2UuZ2V0WChpdGVtLnN0YXJ0KSxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMuX3RpbWVsaW5lU2VydmljZS5nZXRXaWR0aEZyb21UaW1lKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5zdGFydCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZW5kXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGhpbnQ6IGl0ZW0uaGludCA/PyB0aW1lUmFuZ2UsXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogaXRlbS5iYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgIHRvcDogaXRlbS50b3AgPz8gJzUwJScsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogaXRlbS5oZWlnaHQgPz8gJzYwJScsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzOiBpdGVtLmNsYXNzLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVJbnRlcm5hbFRpbWVsaW5lUG9pbnRJblRpbWVJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3V0dE9mZlN0YXJ0ID0gdGhpcy5jdXRPZmZzZXQgPyB0aGlzLnN0YXJ0IDogbmV3IERhdGUodGhpcy5zdGFydC5nZXRUaW1lKCkgLSB0aGlzLm9mZlNldE1pbnV0ZXMgKiA2MDAwMCk7XG4gICAgICAgIGNvbnN0IGN1dHRPZmZFbmQgPSB0aGlzLmN1dE9mZnNldCA/IHRoaXMuZW5kIDogbmV3IERhdGUodGhpcy5lbmQuZ2V0VGltZSgpICsgdGhpcy5vZmZTZXRNaW51dGVzICogNjAwMDApO1xuXG4gICAgICAgIHRoaXMucHJlc2VudGF0aW9uUG9pbnRJblRpbWVJdGVtcyA9IHRoaXMucG9pbnRJblRpbWVJdGVtc1xuICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5kYXRlIDwgY3V0dE9mZlN0YXJ0IHx8IGl0ZW0uZGF0ZSA+IGN1dHRPZmZFbmQgPyBmYWxzZSA6IHRydWUpXG4gICAgICAgICAgICAubWFwKChpdGVtKSA9PiB7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0aW1lUG9pbnRTdHJpbmcgPSBuZXcgRGF0ZShpdGVtLmRhdGUpLnRvTG9jYWxlVGltZVN0cmluZyh0aGlzLmxvY2FsZXM/PyBbXSwgeyBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJzItZGlnaXQnIH0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogaXRlbS5kYXRhLFxuICAgICAgICAgICAgICAgICAgICB4OiB0aGlzLl90aW1lbGluZVNlcnZpY2UuZ2V0WChpdGVtLmRhdGUpLFxuICAgICAgICAgICAgICAgICAgICBoaW50OiBpdGVtLmhpbnQgPz8gdGltZVBvaW50U3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICB0b3A6IGl0ZW0udG9wID8/ICcyMCUnLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGl0ZW0uaGVpZ2h0ID8/ICcxcmVtJyxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGl0ZW0ud2lkdGggPz8gJzFyZW0nLFxuICAgICAgICAgICAgICAgICAgICBjbGFzczogaXRlbS5jbGFzcyxcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpdGVtLmJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNkZWZhdWx0SXRlbVRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxuICAgIDxkaXYgXG4gICAgICAgIGNsYXNzPVwic2RzLXRpbWVsaW5lLWl0ZW0gaC0xMDBcIlxuICAgICAgICBbdGl0bGVdPVwiaXRlbS5oaW50XCJcbiAgICAgICAgPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0UG9pbnRJblRpbWVJdGVtVGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCI+XG4gICAgPGRpdiBcbiAgICAgICAgY2xhc3M9XCJzZHMtdGltZWxpbmUtaXRlbSBoLTEwMFwiXG4gICAgICAgIFt0aXRsZV09XCJpdGVtLmhpbnRcIlxuICAgICAgICA+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHREYXlMYWJlbFRlbXBsYXRlIGxldC1sYWJlbD1cImxhYmVsXCI+XG4gICAge3tsYWJlbC5sYWJlbH19XG48L25nLXRlbXBsYXRlPlxuXG48ZGl2IFxuICAgICN2aWV3cG9ydFxuICAgIGNsYXNzPVwic2RzLXRpbWVsaW5lLXZpZXdwb3J0XCJcbiAgICAod2hlZWwpPVwib25TY3JvbGwoJGV2ZW50KVwiXG5cbiAgICAobW91c2Vkb3duKT1cIm9uRHJhZ1N0YXJ0KCRldmVudClcIlxuICAgICh0b3VjaHN0YXJ0KT1cIm9uRHJhZ1N0YXJ0KCRldmVudClcIlxuICAgID5cblxuICAgIDxkaXYgXG4gICAgICAgIGNsYXNzPVwic2RzLXRpbWVsaW5lLWNvbnRhaW5lciBkLWZsZXggZmxleC1jb2x1bW5cIlxuICAgICAgICBbc3R5bGUubGVmdC4lXT1cInZpZXdPZmZzZXRQZXJjZW50XCJcbiAgICAgICAgW3N0eWxlLndpZHRoLiVdPVwiem9vbVBlcmNlbnRcIlxuICAgICAgICBbc3R5bGUuY3Vyc29yXT1cImlzRHJhZ2dpbmcgPyAnZXctcmVzaXplJyA6IGRlZmF1bHRDdXJzb3JcIlxuICAgICAgICA+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJzaG93RGF5TGFiZWxzXCIgXG4gICAgICAgICAgICBjbGFzcz1cInNkcy10aW1lbGluZS1kYXktaGVhZGVyXCI+XG5cbiAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGxhYmVsIG9mIGRheUxhYmVsc1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZHMtZGF5LWxhYmVsXCIgIFxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRheUxhYmVsQ2xhc3MgPz8gbnVsbFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQuJV09XCJsYWJlbC54XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGguJV09XCJsYWJlbC53aWR0aFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGF5TGFiZWxUZW1wbGF0ZSA/IGRheUxhYmVsVGVtcGxhdGUgOiBkZWZhdWx0RGF5TGFiZWxUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7bGFiZWw6IGxhYmVsfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAgXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0hvdXJMYWJlbHNcIiBcbiAgICAgICAgICAgIGNsYXNzPVwic2RzLXRpbWVsaW5lLWhvdXItaGVhZGVyXCI+XG5cbiAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGxhYmVsIG9mIGhvdXJMYWJlbHM7XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNkcy1ob3VyLWxhYmVsXCIgIFxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImhvdXJMYWJlbENsYXNzID8/IG51bGxcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LiVdPVwibGFiZWwueFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnJlbV09XCIxLjJcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnbGVmdCc6ICdjYWxjKCcgKyBsYWJlbC54ICsgJyUgLSAwLjZyZW0pJ31cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHt7bGFiZWwubGFiZWx9fVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgXG4gICAgICAgICAgICAqbmdJZj1cInNob3dUaW1lbGluZVwiXG4gICAgICAgICAgICBjbGFzcz1cInNkcy10aW1lbGluZSBmbGV4LWdyb3ctMVwiXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cInRpbWVsaW5lSGVpZ2h0XCJcbiAgICAgICAgICAgID5cblxuICAgICAgICAgICAgPGRpdiBcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdGljayBvZiBob3VyVGlja3NcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2RzLXRpbWVsaW5lLXRpY2tcIiAgXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaG91clRpY2tDbGFzcyA/PyBudWxsXCJcdFxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInRpY2sueCA9PSAxMDAgPyB7J2xlZnQnOiAnY2FsYygnICsgdGljay54ICsnJSAtIDFweCknfSA6IHsnbGVmdCc6ICdjYWxjKCcgKyB0aWNrLnggKyAnJSAtIDAuNXB4KSd9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHByZXNlbnRhdGlvbkl0ZW1zXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNkcy10aW1lbGluZS1pdGVtLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5jbGFzcyA/PyBudWxsXCJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICd3aWR0aCc6ICdtYXgoJyArIGl0ZW0ud2lkdGggKyclLCAxcHgpJyxcbiAgICAgICAgICAgICAgICAgICAgJ3RvcCc6ICdjYWxjKCcgKyBpdGVtLnRvcCArICcgLSBtYXgoY2FsYygnICsgaXRlbS5oZWlnaHQgKycvMiksIDFweCkpJywgXG4gICAgICAgICAgICAgICAgfVwiXG5cbiAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC4lXT1cIml0ZW0ueFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJpdGVtLmhlaWdodFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJpdGVtLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVRlbXBsYXRlID8gaXRlbVRlbXBsYXRlIDogZGVmYXVsdEl0ZW1UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7aXRlbTogaXRlbX1cIj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gIFxuICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgPCEtLSBbbmdDbGFzc109XCJpdGVtLmNsYXNzXCJcdCAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcHJlc2VudGF0aW9uUG9pbnRJblRpbWVJdGVtc1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9YHNkcy10aW1lbGluZS1wb2ludC1pbi10aW1lLWl0ZW0tY29udGFpbmVyICR7aXRlbS5jbGFzc31gXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJpdGVtLmhlaWdodFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cIml0ZW0ud2lkdGhcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAgICAgJ3RvcCc6ICdjYWxjKCcgKyBpdGVtLnRvcCArICcgLSBtYXgoY2FsYygnICsgaXRlbS5oZWlnaHQgKycvMiksIDFweCkpJywgXG4gICAgICAgICAgICAgICAgICAgICdsZWZ0JzogJ2NhbGMoJyArIGl0ZW0ueCArICclIC0gbWF4KCBjYWxjKCcgKyBpdGVtLndpZHRoICsnLzIpLCAxcHgpKScsXG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaXRlbS5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgICAgID5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBvaW50SW5UaW1lVGVtcGxhdGUgPyBwb2ludEluVGltZVRlbXBsYXRlIDogZGVmYXVsdFBvaW50SW5UaW1lSXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntpdGVtOiBpdGVtfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAgXG5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
398
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvdGltZWxpbmUvY29tcG9uZW50cy90aW1lbGluZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2RzLWNvbXBvbmVudHMvc3JjL2xpYi90aW1lbGluZS9jb21wb25lbnRzL3RpbWVsaW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxFQUNULFlBQVksRUFDZixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVNsRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBZWxGLE1BQU0sT0FBTyxvQkFBb0I7SUF1TzdCO1FBdE9BOzs7OztXQUtHO1FBQ00sVUFBSyxHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7UUFFbEM7Ozs7O1dBS0c7UUFDTSxRQUFHLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUVoQzs7Ozs7O1dBTUc7UUFDTSxVQUFLLEdBQW1CLEVBQUUsQ0FBQztRQUVwQzs7Ozs7O1dBTUc7UUFDTSxxQkFBZ0IsR0FBOEIsRUFBRSxDQUFDO1FBRTFEOzs7OztXQUtHO1FBQ00saUJBQVksR0FBaUMsU0FBUyxDQUFDO1FBRWhFOzs7OztXQUtHO1FBQ00sd0JBQW1CLEdBQWlDLFNBQVMsQ0FBQztRQUV2RTs7Ozs7V0FLRztRQUNNLHFCQUFnQixHQUFpQyxTQUFTLENBQUM7UUFFcEU7Ozs7O1dBS0c7UUFDTSx5QkFBb0IsR0FBK0MsU0FB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LE9BQU87c0JBQWYsS0FBSztnQkFTRyxTQUFTO3NCQUFqQixLQUFLO2dCQVNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBc0JtQyxTQUFTO3NCQUFqRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBNEZoQyxVQUFVO3NCQURoQixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVc1QyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBWXJDLFNBQVM7c0JBRmYsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ3pDLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIEV2ZW50RW1pdHRlclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRpbWVsaW5lQ3VzdG9tRGF0ZURhdGFQcm92aWRlciwgVGltZWxpbmVUaWNrRnJlcXVlbmN5IH0gZnJvbSAnLi4vdHlwZXMvdGltZWxpbmUudHlwZXMnO1xuaW1wb3J0IHsgU2RzVGltZWxpbmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdGltZWxpbmUuc2VydmljZSc7XG5pbXBvcnQge1xuICAgIFRpbWVsaW5lSW50ZXJ2YWxMYWJlbCxcbiAgICBUaW1lbGluZUl0ZW0sXG4gICAgVGltZWxpbmVJdGVtUHJlc2VudGF0aW9uLFxuICAgIFRpbWVsaW5lUG9pbnRJblRpbWVJdGVtLFxuICAgIFRpbWVsaW5lUG9pbnRJblRpbWVJdGVtUHJlc2VudGF0aW9uLFxuICAgIFRpbWVsaW5lVGljayxcbn0gZnJvbSAnLi4vbW9kZWxzL3RpbWVsaW5lLm1vZGVsJztcbmltcG9ydCB7IE5nSWYsIE5nRm9yLCBOZ1N0eWxlLCBOZ1RlbXBsYXRlT3V0bGV0LCBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzZHMtdGltZWxpbmUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90aW1lbGluZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGltZWxpbmUuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIE5nU3R5bGUsXG4gICAgICAgIE5nQ2xhc3MsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2RzVGltZWxpbmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqXG4gICAgICogVGhlIHN0YXJ0IGRhdGUgYW5kIHRpbWUgZm9yIHRoZSB0aW1lbGluZS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtEYXRlfVxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0YXJ0OiBEYXRlID0gbmV3IERhdGUoKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBlbmQgZGF0ZSBhbmQgdGltZSBmb3IgdGhlIHRpbWVsaW5lLlxuICAgICAqXG4gICAgICogQHR5cGUge0RhdGV9XG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgZW5kOiBEYXRlID0gbmV3IERhdGUoKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBwZXJpb2QgYmFzZWQgaXRlbXMgdG8gYmUgZGlzcGxheWVkIG9uIHRoZSB0aW1lbGluZS4gU3BlY2lmeSBkYXRhIGlmIHlvdSBuZWVkIFxuICAgICAqIGFkZGl0aW9uYWwgZGF0YSBmb3IgY3VzdG9tIHJlbmRlcmluZyBvZiB0aGUgaXRlbXMuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7VGltZWxpbmVJdGVtW119XG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgaXRlbXM6IFRpbWVsaW5lSXRlbVtdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBJdGVtcyB0byBiZSBkaXNwbGF5ZWQgb24gdGhlIHRpbWVsaW5lIGF0IGEgc3BlY2lmaWMgcG9pbnQgaW4gdGltZS5cbiAgICAgKiBTcGVjaWZ5IGRhdGEgaWYgeW91IG5lZWQgYWRkaXRpb25hbCBkYXRhIGZvciBjdXN0b20gcmVuZGVyaW5nIG9mIHRoZSBpdGVtcy5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtUaW1lbGluZVBvaW50SW5UaW1lSXRlbVtdfVxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHBvaW50SW5UaW1lSXRlbXM6IFRpbWVsaW5lUG9pbnRJblRpbWVJdGVtW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIFRoZSB0ZW1wbGF0ZSB0byBiZSB1c2VkIGZvciBjdXN0b20gcmVuZGVyaW5nIG9mIHRoZSBpdGVtcy5cbiAgICAgKlxuICAgICAqIEB0eXBlIHsoVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCl9XG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHRlbXBsYXRlIHRvIGJlIHVzZWQgZm9yIGN1c3RvbSByZW5kZXJpbmcgb2YgdGhlIHBvaW4taW4tdGltZSBpdGVtcy5cbiAgICAgKlxuICAgICAqIEB0eXBlIHsoVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCl9XG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgcG9pbnRJblRpbWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqIFRoZSB0ZW1wbGF0ZSB0byBiZSB1c2VkIGZvciBjdXN0b20gcmVuZGVyaW5nIG9mIHRoZSBkYXkgbGFiZWxzLlxuICAgICAqXG4gICAgICogQHR5cGUgeyhUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkKX1cbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBkYXlMYWJlbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIFxuICAgIC8qKlxuICAgICAqIEEgY3VzdG9tIGRhdGEgZnVuY3Rpb24gZm9yIHRoZSBkYXkgbGFiZWxzLiBcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIHRha2VzIGEgRGF0ZSBvYmplY3QgYXMgaW5wdXQgYW5kIHJldHVybnMgYW55IGN1c3RvbSBkYXRhIHRoYXQgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHRoZSBjdXN0b20gdGVtcGxhdGVcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGRheUxhYmVsQ3VzdG9tRGF0YUZuOiBUaW1lbGluZUN1c3RvbURhdGVEYXRhUHJvdmlkZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZnJlcXVlbmN5IG9mIHRoZSB0aWNrcyBvbiB0aGUgdGltZWxpbmUuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7VGltZWxpbmVUaWNrRnJlcXVlbmN5fVxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRpY2tGcmVxdWVuY3k6IFRpbWVsaW5lVGlja0ZyZXF1ZW5jeSA9ICdob3VybHknO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGZyZXF1ZW5jeSBvZiB0aGUgaG91ciBsYWJlbHMgb24gdGhlIHRpbWVsaW5lLlxuICAgICAqXG4gICAgICogQHR5cGUge1RpbWVsaW5lVGlja0ZyZXF1ZW5jeX1cbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBob3VyTGFiZWxGcmVxdWVuY3k6IFRpbWVsaW5lVGlja0ZyZXF1ZW5jeSA9ICczaHJzJztcblxuXG4gICAgLyoqXG4gICAgICogVGhlIGN1cnJlbnQgem9vbSBsZXZlbCBvZiB0aGUgdGltZWxpbmUuIEluIHBlcmNlbnQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHpvb21QZXJjZW50OiBudW1iZXIgPSAxMDA7XG4gICAgQE91dHB1dCgpIHpvb21QZXJjZW50Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsIG9mZnNldCBvZiB0aGUgdmlld3BvcnQgaW4gcGVyY2VudC4gVGhpcyBpcyB1c2VkIGluIHNjZW5hcmlvcyBcbiAgICAgKiB3aXRoIG11bHRpcGxlIGRheXMgd2hlbiB5b3Ugd2FudCB0byBzaG93IG5vbi1maXJzdCBkYXkgYXMgZGVmdWx0LlxuICAgICAqXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSB2aWV3T2Zmc2V0UGVyY2VudDogbnVtYmVyID0gMDtcbiAgICBAT3V0cHV0KCkgdmlld09mZnNldFBlcmNlbnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBtYXhpbXVtIGFsbG93ZWQgem9vbSBsZXZlbCBvZiB0aGUgdGltZWxpbmUuIEluIHBlcmNlbnQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIG1heFpvb21QZXJjZW50OiBudW1iZXIgPSA1MDA7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHNob3cgaG91ciBsYWJlbHMuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzaG93SG91ckxhYmVsczogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgQ1NTIGNsYXNzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGhvdXIgbGFiZWxzLlxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBob3VyTGFiZWxDbGFzcz86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gc2hvdyBkYXkgbGFiZWxzLiBcbiAgICAgKlxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNob3dEYXlMYWJlbHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBDU1MgY2xhc3MgdG8gYmUgYXBwbGllZCB0byB0aGUgZGF5IGxhYmVscy5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgZGF5TGFiZWxDbGFzcz86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gc2hvdyB0aW1lbGluZS4gVXNlZnVsIGZvciBoaWRpbmcgdGhlIHRpbWVsaW5lIHdoZW4gd2Ugb25seSBuZWVkIGhlYWRlci5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNob3dUaW1lbGluZTogYm9vbGVhbiA9IHRydWU7ICAgIFxuXG4gICAgLyoqXG4gICAgICogVGhlIENTUyBjbGFzcyB0byBiZSBhcHBsaWVkIHRvIHRoZSBob3VyIHRpY2tzLlxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBob3VyVGlja0NsYXNzPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGhlaWdodCBvZiB0aGUgdGltZWxpbmUuIERlZmF1bHQgaXMgMnJlbS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgdGltZWxpbmVIZWlnaHQ6IHN0cmluZyA9ICcycmVtJztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gZW5hYmxlIHpvb20gYW5kIGRyYWcgZnVuY3Rpb25hbGl0eS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGVuYWJsZVpvb21BbmREcmFnOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIE51bWJlciBvZiBtaW51dGVzIGFkZGVkIHRvIHN0YXJ0IGFuZCBzdG9wIHRvIGZpdCB0aGUgZGF0YSBvbiB0aGUgZWRnZXNcbiAgICAgKlxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgb2ZmU2V0TWludXRlczogbnVtYmVyID0gMTU7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbG9jYWxlcyB0byBiZSB1c2VkIGZvciBmb3JtYXR0aW5nIHRoZSB0aW1lbGluZS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHsoc3RyaW5nIHwgQXJyYXk8c3RyaW5nPil9XG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgbG9jYWxlcz86IHN0cmluZyB8IEFycmF5PHN0cmluZz47XG5cbiAgICAvKipcbiAgICAgKiBDb250cm9sIGlmIHRob3NlIHBhcnRzIG9mIHNlZ21lbnRzIChvciB3aG9sZSBzZWdtZW50cykgdGhhdCBmYWxsIGludG8gdGhlIE9mZnNldCBcbiAgICAgKiBwZXJpb2QgYXJlIGRpc3BsYXllZCBvciBub3RcbiAgICAgKlxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGN1dE9mZnNldDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyBkZWZhdWx0IGN1cnNvciwgdGhhdCBzaG91bGQgYmUgc2hvd24gd2hlbiBob3ZlcmluZyBvdmVyIHRpbWVsaW5lIGNvbXBvbmVudC5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzICdkZWZhdWx0Jy5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgZGVmYXVsdEN1cnNvcjogc3RyaW5nID0gXCJkZWZhdWx0XCI7XG5cbiAgICAvLyBwcm90ZWN0ZWRcbiAgICBob3VyVGlja3M6IFRpbWVsaW5lVGlja1tdID0gW107XG4gICAgaG91ckxhYmVsczogVGltZWxpbmVJbnRlcnZhbExhYmVsW10gPSBbXTtcbiAgICBkYXlMYWJlbHM6IFRpbWVsaW5lSW50ZXJ2YWxMYWJlbFtdID0gW107XG5cbiAgICBwcml2YXRlIF90aW1lbGluZVNlcnZpY2U6IFNkc1RpbWVsaW5lU2VydmljZSA9IG5ldyBTZHNUaW1lbGluZVNlcnZpY2UoXG4gICAgICAgIHRoaXMuc3RhcnQsXG4gICAgICAgIHRoaXMuZW5kLFxuICAgICAgICB0aGlzLm9mZlNldE1pbnV0ZXMsXG4gICAgICAgIHRoaXMuY3V0T2Zmc2V0XG4gICAgKTtcblxuICAgIHB1YmxpYyBwcmVzZW50YXRpb25JdGVtczogVGltZWxpbmVJdGVtUHJlc2VudGF0aW9uW10gPSBbXTtcbiAgICBwdWJsaWMgcHJlc2VudGF0aW9uUG9pbnRJblRpbWVJdGVtczogVGltZWxpbmVQb2ludEluVGltZUl0ZW1QcmVzZW50YXRpb25bXSA9IFtdO1xuXG4gICAgcHVibGljIGlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICBwdWJsaWMgaW5pdGlhbERyYWdYID0gMDtcblxuICAgIHByaXZhdGUgdmlld09mZnNldFBlcmNlbnREcmFnU3RhcnQgPSAwO1xuXG4gICAgQFZpZXdDaGlsZCgndmlld3BvcnQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBfdmlld3BvcnQ6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVUaWNrcygpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhcnQgJiYgdGhpcy5lbmQpIHtcbiAgICAgICAgICAgIHRoaXMuX3RpbWVsaW5lU2VydmljZSA9IG5ldyBTZHNUaW1lbGluZVNlcnZpY2UoXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydCxcbiAgICAgICAgICAgICAgICB0aGlzLmVuZCxcbiAgICAgICAgICAgICAgICB0aGlzLm9mZlNldE1pbnV0ZXMsXG4gICAgICAgICAgICAgICAgdGhpcy5jdXRPZmZzZXRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlVGlja3MoKTtcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVJbnRlcm5hbFRpbWVsaW5lSXRlbXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzWydzdGFydCddIHx8IGNoYW5nZXNbJ2VuZCddIHx8IGNoYW5nZXNbJ29mZlNldE1pbnV0ZXMnXSB8fCBjaGFuZ2VzWydjdXRPZmZzZXQnXSkge1xuICAgICAgICAgICAgdGhpcy5fdGltZWxpbmVTZXJ2aWNlID0gbmV3IFNkc1RpbWVsaW5lU2VydmljZShcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0LFxuICAgICAgICAgICAgICAgIHRoaXMuZW5kLFxuICAgICAgICAgICAgICAgIHRoaXMub2ZmU2V0TWludXRlcyxcbiAgICAgICAgICAgICAgICB0aGlzLmN1dE9mZnNldFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVUaWNrcygpO1xuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUludGVybmFsVGltZWxpbmVJdGVtcygpOyAgICAgICAgICAgIFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXNbJ2l0ZW1zJ10pIHtcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVJbnRlcm5hbFRpbWVsaW5lSXRlbXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzWydwb2ludEluVGltZUl0ZW1zJ10pIHtcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVJbnRlcm5hbFRpbWVsaW5lUG9pbnRJblRpbWVJdGVtcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXNbJ3pvb21QZXJjZW50J10pIHtcbiAgICAgICAgICAgIC8vIHRoaXMudmlld09mZnNldFBlcmNlbnQgPSAodGhpcy56b29tUGVyY2VudCAtIDEwMCkgLyAtMjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzWydzaG93RGF5TGFiZWxzJ10gfHwgY2hhbmdlc1snc2hvd0hvdXJMYWJlbHMnXSkge1xuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZVRpY2tzKCk7XG4gICAgICAgIH0gICAgICBcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgICAvLyNyZWdpb24gbW91c2Ugd2hlZWwgem9vbVxuICAgIG9uU2Nyb2xsKGV2ZW50OiBXaGVlbEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmVuYWJsZVpvb21BbmREcmFnKSB7XG5cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGRlbHRhID0gTWF0aC5zaWduKGV2ZW50LmRlbHRhWSk7XG4gICAgICAgICAgICBjb25zdCBuZXdab29tUGVyY2VudCA9IE1hdGgubWluKFxuICAgICAgICAgICAgICAgIE1hdGgubWF4KHRoaXMuem9vbVBlcmNlbnQgKyAtZGVsdGEgKiAyMCwgMTAwKSxcbiAgICAgICAgICAgICAgICB0aGlzLm1heFpvb21QZXJjZW50XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgZGVsdGFab29tUGVyY2VudCA9IG5ld1pvb21QZXJjZW50IC0gdGhpcy56b29tUGVyY2VudDtcbiAgICAgICAgICAgIHRoaXMuem9vbVBlcmNlbnQgPSBuZXdab29tUGVyY2VudDtcbiAgICAgICAgICAgIHRoaXMuem9vbVBlcmNlbnRDaGFuZ2UuZW1pdCh0aGlzLnpvb21QZXJjZW50KTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gZ2V0IHRoZSByZWxhdGl2ZSBwb3NpdGlvbiBvZiB0aGUgY3Vyc29yIG9uIHRoZSB2aWV3cG9ydCBzbyB3ZSBjYW4gem9vbSBpbiBpbnRvIHRoaXMgcG9zaXRpb25cbiAgICAgICAgICAgIGNvbnN0IHggPSBldmVudC5jbGllbnRYIC0gdGhpcy5fdmlld3BvcnQ/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgICAgICAgIGNvbnN0IGN1cnNvclJlbGF0aXZlUG9zaXRpb24gPSB4IC8gdGhpcy5fdmlld3BvcnQ/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgICAgICAvLyB0aGlzLnZpZXdPZmZzZXRQZXJjZW50ID0gdGhpcy52aWV3T2Zmc2V0UGVyY2VudCAtIGRlbHRhWm9vbVBlcmNlbnQgKiBjdXJzb3JSZWxhdGl2ZVBvc2l0aW9uO1xuXG4gICAgICAgICAgICB0aGlzLmNvbnN0cmFpbk9mZnNldCh0aGlzLnZpZXdPZmZzZXRQZXJjZW50IC0gZGVsdGFab29tUGVyY2VudCAqIGN1cnNvclJlbGF0aXZlUG9zaXRpb24pO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIGRyYWdnaW5nXG4gICAgXG4gICAgcHVibGljIG9uRHJhZ1N0YXJ0KGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5lbmFibGVab29tQW5kRHJhZyAmJiB0aGlzLnpvb21QZXJjZW50ID4gMTAwKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5pc0RyYWdnaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMudmlld09mZnNldFBlcmNlbnREcmFnU3RhcnQgPSB0aGlzLnZpZXdPZmZzZXRQZXJjZW50O1xuXG4gICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsRHJhZ1ggPSBldmVudC5jbGllbnRYO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIFRvdWNoRXZlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxEcmFnWCA9IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptb3VzZW1vdmUnLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkRyYWdNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmVuYWJsZVpvb21BbmREcmFnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0RyYWdnaW5nKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFggPSBldmVudC5jbGllbnRYO1xuICAgICAgICAgICAgICAgIHRoaXMubW92ZUVsZW1lbnQoY3VycmVudFgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnRvdWNobW92ZScsIFsnJGV2ZW50J10pXG4gICAgb25EcmFnTW92ZVRvdWNoKGV2ZW50OiBUb3VjaEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmVuYWJsZVpvb21BbmREcmFnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0RyYWdnaW5nKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFggPSBldmVudC50b3VjaGVzWzBdLmNsaWVudFg7XG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZlRWxlbWVudChjdXJyZW50WCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bW91c2V1cCcsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnRvdWNoZW5kJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25EcmFnRW5kKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5lbmFibGVab29tQW5kRHJhZykge1xuICAgICAgICAgICAgdGhpcy5pc0RyYWdnaW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vdmVFbGVtZW50KGN1cnJlbnRYOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGlmZiA9IGN1cnJlbnRYIC0gdGhpcy5pbml0aWFsRHJhZ1g7XG4gICAgICAgIGlmICh0aGlzLl92aWV3cG9ydCAmJiB0aGlzLl92aWV3cG9ydC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBkaWZmSW5QZXJjZW50ID0gKGRpZmYgLyB0aGlzLl92aWV3cG9ydD8ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCkgKiAxMDA7XG4gICAgICAgICAgICAvLyB0aGlzLnZpZXdPZmZzZXRQZXJjZW50ID0gdGhpcy52aWV3T2Zmc2V0UGVyY2VudERyYWdTdGFydCArIGRpZmZJblBlcmNlbnQ7XG4gICAgICAgICAgICB0aGlzLmNvbnN0cmFpbk9mZnNldCh0aGlzLnZpZXdPZmZzZXRQZXJjZW50RHJhZ1N0YXJ0ICsgZGlmZkluUGVyY2VudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIHByaXZhdGUgY29uc3RyYWluT2Zmc2V0KG5ld09mZnNldDogbnVtYmVyKTogdm9pZCB7ICAgICAgICBcbiAgICAgICAgaWYgKHRoaXMuem9vbVBlcmNlbnQgKyBuZXdPZmZzZXQgPCAxMDApIHtcbiAgICAgICAgICAgIG5ld09mZnNldCA9IC10aGlzLnpvb21QZXJjZW50ICsgMTAwO1xuICAgICAgICB9XG4gICAgICAgIG5ld09mZnNldCA9IE1hdGgubWluKDAsIG5ld09mZnNldCk7XG4gICAgICAgIGlmIChuZXdPZmZzZXQgIT0gdGhpcy52aWV3T2Zmc2V0UGVyY2VudCkge1xuICAgICAgICAgICAgdGhpcy52aWV3T2Zmc2V0UGVyY2VudCA9IG5ld09mZnNldDtcbiAgICAgICAgICAgIHRoaXMudmlld09mZnNldFBlcmNlbnRDaGFuZ2UuZW1pdCh0aGlzLnZpZXdPZmZzZXRQZXJjZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVUaWNrcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3VyVGlja3MgPSB0aGlzLl90aW1lbGluZVNlcnZpY2UuZ2V0SG91clRpY2tzKHRoaXMudGlja0ZyZXF1ZW5jeSk7XG4gICAgICAgIHRoaXMuZGF5TGFiZWxzID0gdGhpcy5fdGltZWxpbmVTZXJ2aWNlLmdldERheUxhYmVscyh0aGlzLmxvY2FsZXMsIHRoaXMuZGF5TGFiZWxDdXN0b21EYXRhRm4pO1xuICAgICAgICB0aGlzLmhvdXJMYWJlbHMgPSB0aGlzLl90aW1lbGluZVNlcnZpY2UuZ2V0SG91ckxhYmVscyh0aGlzLmhvdXJMYWJlbEZyZXF1ZW5jeSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUludGVybmFsVGltZWxpbmVJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3V0dE9mZlN0YXJ0ID0gdGhpcy5jdXRPZmZzZXQgPyB0aGlzLnN0YXJ0IDogbmV3IERhdGUodGhpcy5zdGFydC5nZXRUaW1lKCkgLSB0aGlzLm9mZlNldE1pbnV0ZXMgKiA2MDAwMCk7XG4gICAgICAgIGNvbnN0IGN1dHRPZmZFbmQgPSB0aGlzLmN1dE9mZnNldCA/IHRoaXMuZW5kIDogbmV3IERhdGUodGhpcy5lbmQuZ2V0VGltZSgpICsgdGhpcy5vZmZTZXRNaW51dGVzICogNjAwMDApO1xuXG4gICAgICAgIHRoaXMucHJlc2VudGF0aW9uSXRlbXMgPSB0aGlzLml0ZW1zXG4gICAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmVuZCA8IGN1dHRPZmZTdGFydCB8fCBpdGVtLnN0YXJ0ID4gY3V0dE9mZkVuZCA/IGZhbHNlIDogdHJ1ZSlcbiAgICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydFRpbWUgPSBuZXcgRGF0ZShpdGVtLnN0YXJ0KS50b0xvY2FsZVRpbWVTdHJpbmcodGhpcy5sb2NhbGVzPz8gW10sIHsgaG91cjogJ251bWVyaWMnLCBtaW51dGU6ICcyLWRpZ2l0JyB9KTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmRUaW1lID0gbmV3IERhdGUoaXRlbS5lbmQpLnRvTG9jYWxlVGltZVN0cmluZyh0aGlzLmxvY2FsZXM/PyBbXSwgeyBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJzItZGlnaXQnIH0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVSYW5nZSA9IGAke3N0YXJ0VGltZX0gLSAke2VuZFRpbWV9YDtcbiAgICAgICAgXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogaXRlbS5kYXRhLFxuICAgICAgICAgICAgICAgICAgICB4OiB0aGlzLl90aW1lbGluZVNlcnZpY2UuZ2V0WChpdGVtLnN0YXJ0KSxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMuX3RpbWVsaW5lU2VydmljZS5nZXRXaWR0aEZyb21UaW1lKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5zdGFydCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZW5kXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGhpbnQ6IGl0ZW0uaGludCA/PyB0aW1lUmFuZ2UsXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogaXRlbS5iYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgIHRvcDogaXRlbS50b3AgPz8gJzUwJScsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogaXRlbS5oZWlnaHQgPz8gJzYwJScsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzOiBpdGVtLmNsYXNzLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVJbnRlcm5hbFRpbWVsaW5lUG9pbnRJblRpbWVJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3V0dE9mZlN0YXJ0ID0gdGhpcy5jdXRPZmZzZXQgPyB0aGlzLnN0YXJ0IDogbmV3IERhdGUodGhpcy5zdGFydC5nZXRUaW1lKCkgLSB0aGlzLm9mZlNldE1pbnV0ZXMgKiA2MDAwMCk7XG4gICAgICAgIGNvbnN0IGN1dHRPZmZFbmQgPSB0aGlzLmN1dE9mZnNldCA/IHRoaXMuZW5kIDogbmV3IERhdGUodGhpcy5lbmQuZ2V0VGltZSgpICsgdGhpcy5vZmZTZXRNaW51dGVzICogNjAwMDApO1xuXG4gICAgICAgIHRoaXMucHJlc2VudGF0aW9uUG9pbnRJblRpbWVJdGVtcyA9IHRoaXMucG9pbnRJblRpbWVJdGVtc1xuICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5kYXRlIDwgY3V0dE9mZlN0YXJ0IHx8IGl0ZW0uZGF0ZSA+IGN1dHRPZmZFbmQgPyBmYWxzZSA6IHRydWUpXG4gICAgICAgICAgICAubWFwKChpdGVtKSA9PiB7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0aW1lUG9pbnRTdHJpbmcgPSBuZXcgRGF0ZShpdGVtLmRhdGUpLnRvTG9jYWxlVGltZVN0cmluZyh0aGlzLmxvY2FsZXM/PyBbXSwgeyBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJzItZGlnaXQnIH0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogaXRlbS5kYXRhLFxuICAgICAgICAgICAgICAgICAgICB4OiB0aGlzLl90aW1lbGluZVNlcnZpY2UuZ2V0WChpdGVtLmRhdGUpLFxuICAgICAgICAgICAgICAgICAgICBoaW50OiBpdGVtLmhpbnQgPz8gdGltZVBvaW50U3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICB0b3A6IGl0ZW0udG9wID8/ICcyMCUnLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGl0ZW0uaGVpZ2h0ID8/ICcxcmVtJyxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGl0ZW0ud2lkdGggPz8gJzFyZW0nLFxuICAgICAgICAgICAgICAgICAgICBjbGFzczogaXRlbS5jbGFzcyxcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpdGVtLmJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNkZWZhdWx0SXRlbVRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxuICAgIDxkaXYgXG4gICAgICAgIGNsYXNzPVwic2RzLXRpbWVsaW5lLWl0ZW0gaC0xMDBcIlxuICAgICAgICBbdGl0bGVdPVwiaXRlbS5oaW50XCJcbiAgICAgICAgPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0UG9pbnRJblRpbWVJdGVtVGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCI+XG4gICAgPGRpdiBcbiAgICAgICAgY2xhc3M9XCJzZHMtdGltZWxpbmUtaXRlbSBoLTEwMFwiXG4gICAgICAgIFt0aXRsZV09XCJpdGVtLmhpbnRcIlxuICAgICAgICA+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHREYXlMYWJlbFRlbXBsYXRlIGxldC1sYWJlbD1cImxhYmVsXCI+XG4gICAge3tsYWJlbC5sYWJlbH19XG48L25nLXRlbXBsYXRlPlxuXG48ZGl2IFxuICAgICN2aWV3cG9ydFxuICAgIGNsYXNzPVwic2RzLXRpbWVsaW5lLXZpZXdwb3J0XCJcbiAgICAod2hlZWwpPVwib25TY3JvbGwoJGV2ZW50KVwiXG5cbiAgICAobW91c2Vkb3duKT1cIm9uRHJhZ1N0YXJ0KCRldmVudClcIlxuICAgICh0b3VjaHN0YXJ0KT1cIm9uRHJhZ1N0YXJ0KCRldmVudClcIlxuICAgID5cblxuICAgIDxkaXYgXG4gICAgICAgIGNsYXNzPVwic2RzLXRpbWVsaW5lLWNvbnRhaW5lciBkLWZsZXggZmxleC1jb2x1bW5cIlxuICAgICAgICBbc3R5bGUubGVmdC4lXT1cInZpZXdPZmZzZXRQZXJjZW50XCJcbiAgICAgICAgW3N0eWxlLndpZHRoLiVdPVwiem9vbVBlcmNlbnRcIlxuICAgICAgICBbc3R5bGUuY3Vyc29yXT1cImlzRHJhZ2dpbmcgPyAnZXctcmVzaXplJyA6IGRlZmF1bHRDdXJzb3JcIlxuICAgICAgICA+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJzaG93RGF5TGFiZWxzXCIgXG4gICAgICAgICAgICBjbGFzcz1cInNkcy10aW1lbGluZS1kYXktaGVhZGVyXCI+XG5cbiAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGxhYmVsIG9mIGRheUxhYmVsc1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZHMtZGF5LWxhYmVsXCIgIFxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRheUxhYmVsQ2xhc3MgPz8gbnVsbFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQuJV09XCJsYWJlbC54XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGguJV09XCJsYWJlbC53aWR0aFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGF5TGFiZWxUZW1wbGF0ZSA/IGRheUxhYmVsVGVtcGxhdGUgOiBkZWZhdWx0RGF5TGFiZWxUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7bGFiZWw6IGxhYmVsfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAgXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0hvdXJMYWJlbHNcIiBcbiAgICAgICAgICAgIGNsYXNzPVwic2RzLXRpbWVsaW5lLWhvdXItaGVhZGVyXCI+XG5cbiAgICAgICAgICAgIDxkaXYgXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGxhYmVsIG9mIGhvdXJMYWJlbHM7XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNkcy1ob3VyLWxhYmVsXCIgIFxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImhvdXJMYWJlbENsYXNzID8/IG51bGxcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LiVdPVwibGFiZWwueFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnJlbV09XCIxLjJcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnbGVmdCc6ICdjYWxjKCcgKyBsYWJlbC54ICsgJyUgLSAwLjZyZW0pJ31cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHt7bGFiZWwubGFiZWx9fVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgXG4gICAgICAgICAgICAqbmdJZj1cInNob3dUaW1lbGluZVwiXG4gICAgICAgICAgICBjbGFzcz1cInNkcy10aW1lbGluZSBmbGV4LWdyb3ctMVwiXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cInRpbWVsaW5lSGVpZ2h0XCJcbiAgICAgICAgICAgID5cblxuICAgICAgICAgICAgPGRpdiBcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdGljayBvZiBob3VyVGlja3NcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2RzLXRpbWVsaW5lLXRpY2tcIiAgXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaG91clRpY2tDbGFzcyA/PyBudWxsXCJcdFxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInRpY2sueCA9PSAxMDAgPyB7J2xlZnQnOiAnY2FsYygnICsgdGljay54ICsnJSAtIDFweCknfSA6IHsnbGVmdCc6ICdjYWxjKCcgKyB0aWNrLnggKyAnJSAtIDAuNXB4KSd9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHByZXNlbnRhdGlvbkl0ZW1zXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNkcy10aW1lbGluZS1pdGVtLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5jbGFzcyA/PyBudWxsXCJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICd3aWR0aCc6ICdtYXgoJyArIGl0ZW0ud2lkdGggKyclLCAxcHgpJyxcbiAgICAgICAgICAgICAgICAgICAgJ3RvcCc6ICdjYWxjKCcgKyBpdGVtLnRvcCArICcgLSBtYXgoY2FsYygnICsgaXRlbS5oZWlnaHQgKycvMiksIDFweCkpJywgXG4gICAgICAgICAgICAgICAgfVwiXG5cbiAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC4lXT1cIml0ZW0ueFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJpdGVtLmhlaWdodFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJpdGVtLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVRlbXBsYXRlID8gaXRlbVRlbXBsYXRlIDogZGVmYXVsdEl0ZW1UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7aXRlbTogaXRlbX1cIj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gIFxuICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgPCEtLSBbbmdDbGFzc109XCJpdGVtLmNsYXNzXCJcdCAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcHJlc2VudGF0aW9uUG9pbnRJblRpbWVJdGVtc1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZHMtdGltZWxpbmUtcG9pbnQtaW4tdGltZS1pdGVtLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5jbGFzcyA/PyBudWxsXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cIml0ZW0uaGVpZ2h0XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiaXRlbS53aWR0aFwiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICAgICAndG9wJzogJ2NhbGMoJyArIGl0ZW0udG9wICsgJyAtIG1heChjYWxjKCcgKyBpdGVtLmhlaWdodCArJy8yKSwgMXB4KSknLCBcbiAgICAgICAgICAgICAgICAgICAgJ2xlZnQnOiAnY2FsYygnICsgaXRlbS54ICsgJyUgLSBtYXgoIGNhbGMoJyArIGl0ZW0ud2lkdGggKycvMiksIDFweCkpJyxcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJpdGVtLmJhY2tncm91bmRDb2xvclwiXG4gICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicG9pbnRJblRpbWVUZW1wbGF0ZSA/IHBvaW50SW5UaW1lVGVtcGxhdGUgOiBkZWZhdWx0UG9pbnRJblRpbWVJdGVtVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW06IGl0ZW19XCI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+ICBcblxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -268,11 +268,11 @@ class SdsDialogComponent {
|
|
|
268
268
|
}
|
|
269
269
|
}
|
|
270
270
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SdsDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
271
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SdsDialogComponent, isStandalone: true, selector: "sds-dialog", inputs: { title: "title", dialogTitle: "dialogTitle", closeText: "closeText", size: "size", primaryButtonText: "primaryButtonText", primaryButtonClass: "primaryButtonClass", primaryButtonType: "primaryButtonType", primaryButtonId: "primaryButtonId", primaryButtonDisabled: "primaryButtonDisabled", secondaryButtonText: "secondaryButtonText", secondaryButtonClass: "secondaryButtonClass", secondaryButtonType: "secondaryButtonType", secondaryButtonId: "secondaryButtonId", secondaryButtonDisabled: "secondaryButtonDisabled", closeOnEscape: "closeOnEscape", showHeader: "showHeader", showCloseButton: "showCloseButton", showPrimaryButton: "showPrimaryButton", showSecondaryButton: "showSecondaryButton", autofocusElement: "autofocusElement", modalDialogId: "modalDialogId", isOpen: "isOpen" }, outputs: { dialogOpen: "dialogOpen", dialogClose: "dialogClose", isOpenChange: "isOpenChange", primaryButtonClick: "primaryButtonClick", secondaryButtonClick: "secondaryButtonClick" }, viewQueries: [{ propertyName: "_modal", first: true, predicate: ["modal"], descendants: true, static: true }, { propertyName: "_content", first: true, predicate: ["content"], descendants: true, read: ElementRef, static: true }, { propertyName: "_primaryButton", first: true, predicate: ["primaryButton"], descendants: true, read: ElementRef }, { propertyName: "_secondaryButton", first: true, predicate: ["secondaryButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<sds-modal\n #modal\n [modalTitle]=\"dialogTitle || title\"\n [size]=\"size\"\n [modalDialogId]=\"modalDialogId\"\n [showCloseButton]=\"showCloseButton\"\n [showHeader]=\"showHeader\"\n [translations]=\"{ close: closeText}\"\n [autoFocusCloseButton]=\"autofocusElement === 'close'\"\n [closeButtonLabel]=\"closeText\"\n [closeOnEscape]=\"closeOnEscape\"\n (closeClick)=\"onCloseClick()\"\n (closeEscapeKeypress)=\"onCloseEscapeKeypress()\"\n (modalClose)=\"onModalClose()\"\n (modalOpen)=\"onModalOpen()\"\n [(isOpen)]=\"isOpen\"\n>\n\n <div #content [attr.tabindex]=\"autofocusElement === 'content' ? 0 : undefined\" >\n <ng-content></ng-content>\n </div>\n <ng-container #footer ngProjectAs='footer'>\n <button\n #secondaryButton\n *ngIf=\"showSecondaryButton\"\n [attr.id]=\"secondaryButtonId\"\n [disabled]=\"secondaryButtonDisabled\"\n class=\"btn\"\n [class]=\"secondaryButtonClass\"\n (click)=\"onSecondaryClick()\"\n >{{secondaryButtonText}}</button>\n <button\n #primaryButton\n *ngIf=\"showPrimaryButton\"\n [attr.id]=\"primaryButtonId\"\n [disabled]=\"primaryButtonDisabled\"\n class=\"btn\"\n [class]=\"primaryButtonClass\"\n (click)=\"onPrimaryClick()\"\n >{{primaryButtonText}}</button>\n </ng-container>\n</sds-modal>\n", styles: [""], dependencies: [{ kind: "component", type: SdsModalComponent, selector: "sds-modal", inputs: ["modalTitle", "showHeader", "showFooter", "size", "modalDialogId", "showCloseButton", "autoFocusCloseButton", "translations", "isScrollable", "isVerticallyCentered", "closeOnEscape", "downSizing", "isDraggable", "isDragConstrained", "closeButtonLabel", "isOpen"], outputs: ["modalOpen", "modalClose", "closeClick", "closeEscapeKeypress", "isOpenChange"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
271
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SdsDialogComponent, isStandalone: true, selector: "sds-dialog", inputs: { title: "title", dialogTitle: "dialogTitle", closeText: "closeText", size: "size", primaryButtonText: "primaryButtonText", primaryButtonClass: "primaryButtonClass", primaryButtonType: "primaryButtonType", primaryButtonId: "primaryButtonId", primaryButtonDisabled: "primaryButtonDisabled", secondaryButtonText: "secondaryButtonText", secondaryButtonClass: "secondaryButtonClass", secondaryButtonType: "secondaryButtonType", secondaryButtonId: "secondaryButtonId", secondaryButtonDisabled: "secondaryButtonDisabled", closeOnEscape: "closeOnEscape", showHeader: "showHeader", showCloseButton: "showCloseButton", showPrimaryButton: "showPrimaryButton", showSecondaryButton: "showSecondaryButton", autofocusElement: "autofocusElement", modalDialogId: "modalDialogId", isOpen: "isOpen" }, outputs: { dialogOpen: "dialogOpen", dialogClose: "dialogClose", isOpenChange: "isOpenChange", primaryButtonClick: "primaryButtonClick", secondaryButtonClick: "secondaryButtonClick" }, viewQueries: [{ propertyName: "_modal", first: true, predicate: ["modal"], descendants: true, static: true }, { propertyName: "_content", first: true, predicate: ["content"], descendants: true, read: ElementRef, static: true }, { propertyName: "_primaryButton", first: true, predicate: ["primaryButton"], descendants: true, read: ElementRef }, { propertyName: "_secondaryButton", first: true, predicate: ["secondaryButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<sds-modal\n #modal\n [modalTitle]=\"dialogTitle || title\"\n [size]=\"size\"\n [modalDialogId]=\"modalDialogId\"\n [showCloseButton]=\"showCloseButton\"\n [showHeader]=\"showHeader\"\n [translations]=\"{ close: closeText}\"\n [autoFocusCloseButton]=\"autofocusElement === 'close'\"\n [closeButtonLabel]=\"closeText\"\n [closeOnEscape]=\"closeOnEscape\"\n (closeClick)=\"onCloseClick()\"\n (closeEscapeKeypress)=\"onCloseEscapeKeypress()\"\n (modalClose)=\"onModalClose()\"\n (modalOpen)=\"onModalOpen()\"\n [(isOpen)]=\"isOpen\"\n>\n\n <div #content [attr.tabindex]=\"autofocusElement === 'content' ? 0 : undefined\" >\n <ng-content></ng-content>\n </div>\n <ng-container #footer ngProjectAs='footer'>\n <button\n #secondaryButton\n *ngIf=\"showSecondaryButton\"\n [attr.id]=\"secondaryButtonId\"\n [attr.type]=\"secondaryButtonType\"\n [disabled]=\"secondaryButtonDisabled\"\n class=\"btn\"\n [class]=\"secondaryButtonClass\"\n (click)=\"onSecondaryClick()\"\n >{{secondaryButtonText}}</button>\n <button\n #primaryButton\n *ngIf=\"showPrimaryButton\"\n [attr.id]=\"primaryButtonId\"\n [attr.type]=\"primaryButtonType\"\n [disabled]=\"primaryButtonDisabled\"\n class=\"btn\"\n [class]=\"primaryButtonClass\"\n (click)=\"onPrimaryClick()\"\n >{{primaryButtonText}}</button>\n </ng-container>\n</sds-modal>\n", styles: [""], dependencies: [{ kind: "component", type: SdsModalComponent, selector: "sds-modal", inputs: ["modalTitle", "showHeader", "showFooter", "size", "modalDialogId", "showCloseButton", "autoFocusCloseButton", "translations", "isScrollable", "isVerticallyCentered", "closeOnEscape", "downSizing", "isDraggable", "isDragConstrained", "closeButtonLabel", "isOpen"], outputs: ["modalOpen", "modalClose", "closeClick", "closeEscapeKeypress", "isOpenChange"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
272
272
|
}
|
|
273
273
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SdsDialogComponent, decorators: [{
|
|
274
274
|
type: Component,
|
|
275
|
-
args: [{ selector: 'sds-dialog', standalone: true, imports: [SdsModalComponent, NgIf], template: "<sds-modal\n #modal\n [modalTitle]=\"dialogTitle || title\"\n [size]=\"size\"\n [modalDialogId]=\"modalDialogId\"\n [showCloseButton]=\"showCloseButton\"\n [showHeader]=\"showHeader\"\n [translations]=\"{ close: closeText}\"\n [autoFocusCloseButton]=\"autofocusElement === 'close'\"\n [closeButtonLabel]=\"closeText\"\n [closeOnEscape]=\"closeOnEscape\"\n (closeClick)=\"onCloseClick()\"\n (closeEscapeKeypress)=\"onCloseEscapeKeypress()\"\n (modalClose)=\"onModalClose()\"\n (modalOpen)=\"onModalOpen()\"\n [(isOpen)]=\"isOpen\"\n>\n\n <div #content [attr.tabindex]=\"autofocusElement === 'content' ? 0 : undefined\" >\n <ng-content></ng-content>\n </div>\n <ng-container #footer ngProjectAs='footer'>\n <button\n #secondaryButton\n *ngIf=\"showSecondaryButton\"\n [attr.id]=\"secondaryButtonId\"\n [disabled]=\"secondaryButtonDisabled\"\n class=\"btn\"\n [class]=\"secondaryButtonClass\"\n (click)=\"onSecondaryClick()\"\n >{{secondaryButtonText}}</button>\n <button\n #primaryButton\n *ngIf=\"showPrimaryButton\"\n [attr.id]=\"primaryButtonId\"\n [disabled]=\"primaryButtonDisabled\"\n class=\"btn\"\n [class]=\"primaryButtonClass\"\n (click)=\"onPrimaryClick()\"\n >{{primaryButtonText}}</button>\n </ng-container>\n</sds-modal>\n" }]
|
|
275
|
+
args: [{ selector: 'sds-dialog', standalone: true, imports: [SdsModalComponent, NgIf], template: "<sds-modal\n #modal\n [modalTitle]=\"dialogTitle || title\"\n [size]=\"size\"\n [modalDialogId]=\"modalDialogId\"\n [showCloseButton]=\"showCloseButton\"\n [showHeader]=\"showHeader\"\n [translations]=\"{ close: closeText}\"\n [autoFocusCloseButton]=\"autofocusElement === 'close'\"\n [closeButtonLabel]=\"closeText\"\n [closeOnEscape]=\"closeOnEscape\"\n (closeClick)=\"onCloseClick()\"\n (closeEscapeKeypress)=\"onCloseEscapeKeypress()\"\n (modalClose)=\"onModalClose()\"\n (modalOpen)=\"onModalOpen()\"\n [(isOpen)]=\"isOpen\"\n>\n\n <div #content [attr.tabindex]=\"autofocusElement === 'content' ? 0 : undefined\" >\n <ng-content></ng-content>\n </div>\n <ng-container #footer ngProjectAs='footer'>\n <button\n #secondaryButton\n *ngIf=\"showSecondaryButton\"\n [attr.id]=\"secondaryButtonId\"\n [attr.type]=\"secondaryButtonType\"\n [disabled]=\"secondaryButtonDisabled\"\n class=\"btn\"\n [class]=\"secondaryButtonClass\"\n (click)=\"onSecondaryClick()\"\n >{{secondaryButtonText}}</button>\n <button\n #primaryButton\n *ngIf=\"showPrimaryButton\"\n [attr.id]=\"primaryButtonId\"\n [attr.type]=\"primaryButtonType\"\n [disabled]=\"primaryButtonDisabled\"\n class=\"btn\"\n [class]=\"primaryButtonClass\"\n (click)=\"onPrimaryClick()\"\n >{{primaryButtonText}}</button>\n </ng-container>\n</sds-modal>\n" }]
|
|
276
276
|
}], ctorParameters: () => [], propDecorators: { title: [{
|
|
277
277
|
type: Input
|
|
278
278
|
}], dialogTitle: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spicainternational-ngx-sds-components-src-lib-modal.mjs","sources":["../../../projects/ngx-sds-components/src/lib/modal/modal.component.ts","../../../projects/ngx-sds-components/src/lib/modal/modal.component.html","../../../projects/ngx-sds-components/src/lib/modal/dialog/dialog.component.ts","../../../projects/ngx-sds-components/src/lib/modal/dialog/dialog.component.html","../../../projects/ngx-sds-components/src/lib/modal/spicainternational-ngx-sds-components-src-lib-modal.ts"],"sourcesContent":["import {\n Component,\n ElementRef,\n Input,\n OnInit,\n Output,\n ViewChild,\n EventEmitter,\n ContentChild,\n OnChanges,\n SimpleChanges,\n input\n} from '@angular/core';\nimport { faXmark } from '@fortawesome/pro-regular-svg-icons';\nimport { ModalTranslations } from './modal.model';\nimport { CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';\nimport { NgClass, NgIf } from '@angular/common';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\n\n@Component({\n selector: 'sds-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n standalone: true,\n imports: [\n CdkTrapFocus,\n NgClass,\n CdkDrag,\n NgIf,\n CdkDragHandle,\n ],\n})\nexport class SdsModalComponent implements OnInit, OnChanges {\n @ContentChild('header') headerContent: ElementRef = { nativeElement: undefined };\n\n @Input() public modalTitle?: string;\n @Input() public showHeader: boolean = true;\n @Input() public showFooter: boolean = true;\n @Input() public size: 'sm' | 'md' | 'lg' | 'xl' | '820' | 'xxl' = 'md';\n @Input() public modalDialogId?: string;\n @Input() public showCloseButton: boolean = true;\n @Input() public autoFocusCloseButton: boolean = false;\n\n @Input() public translations: ModalTranslations;\n @Input() public isScrollable = true;\n @Input() public isVerticallyCentered = true;\n @Input() public closeOnEscape = false;\n\n @Input() public downSizing: 'discrete' | 'continuous' = 'discrete';\n\n /**\n * Allow the modal to be draggable by the user. Default is true.\n *\n * @memberof SdsModalComponent\n */\n @Input() public isDraggable = true;\n\n /**\n * Constrain modal to the viewport. Default is true.\n *\n * @memberof SdsModalComponent\n */\n @Input() public isDragConstrained = true;\n\n /**\n * @description\n * Label for the close button, used for accessibility.\n * If not provided, it will fall back to the default translation for \"close\".\n */\n public closeButtonLabel = input<string>();\n\n /**\n * @deprecated Use isOpenChange instead\n */\n @Output() public modalOpen: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * @deprecated Use isOpenChange instead\n */\n @Output() public modalClose: EventEmitter<void> = new EventEmitter<void>();\n\n @Output() public closeClick: EventEmitter<void> = new EventEmitter<void>();\n @Output() public closeEscapeKeypress: EventEmitter<void> = new EventEmitter<void>();\n\n public closeIcon = faXmark;\n\n // public isOpen: boolean = false;\n @Input() public isOpen: boolean = false;\n @Output() public isOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @ViewChild('modal', { static: false }) private _modal: ElementRef | undefined;\n @ViewChild('closeButton', { static: false }) private _closeButton: ElementRef | undefined;\n\n\n constructor() {\n this.translations = {\n close: undefined\n }\n }\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['isOpen']) {\n if (this.isOpen) {\n this.open();\n } else {\n this.close();\n }\n }\n }\n\n ngOnInit(): void {}\n\n public open(): void {\n if (this._modal != undefined) {\n this._modal.nativeElement.style.display = 'block';\n this.isOpen = true;\n if(this.autoFocusCloseButton)\n this._closeButton?.nativeElement.focus();\n this.modalOpen.emit();\n }\n }\n\n public close(): void {\n if (this._modal != undefined) {\n this._modal.nativeElement.style.display = 'none';\n this.isOpen = false;\n this.modalClose.emit();\n\n this.isOpenChange.emit(this.isOpen);\n }\n }\n\n public onCloseButtonClick(){\n this.closeClick.emit();\n this.close();\n }\n\n onKeydown(event: KeyboardEvent){\n if (\n event.code === 'Escape' &&\n this.closeOnEscape &&\n this._modal != undefined &&\n this._modal.nativeElement.style.display === 'block'){\n // console.log(`${this.constructor.name} got event: ${event.code}`);\n this.closeEscapeKeypress.emit();\n this.close();\n }\n }\n}\n","<div\n #modal\n class=\"modal modal-backdrop\"\n (keydown)=\"onKeydown($event)\"\n [cdkTrapFocus]=\"isOpen\"\n [cdkTrapFocusAutoCapture]=\"true\"\n >\n <div\n class=\"modal-dialog\"\n [class.modal-dialog-scrollable] = \"isScrollable\"\n [class.downsize-continuous] = \"downSizing === 'continuous'\"\n [class.modal-dialog-centered] = \"isVerticallyCentered\"\n [attr.id]=\"modalDialogId\"\n [ngClass]=\"'modal-' + size\"\n role=\"document\"\n >\n <div\n class=\"modal-content\"\n cdkDrag [cdkDragDisabled]=\"!isDraggable\" [cdkDragBoundary]=\"isDragConstrained ? '.modal-backdrop' : ''\"\n >\n\n <div *ngIf=\"isDraggable\" class=\"modal-drag-handle\" cdkDragHandle></div>\n\n <div\n *ngIf=\"showHeader && headerContent\"\n class=\"modal-header\"\n >\n <ng-content select='header'></ng-content>\n </div>\n\n <div\n *ngIf=\"showHeader && !headerContent\"\n class=\"modal-header\"\n >\n\n <h5 class=\"modal-title\">{{modalTitle}}</h5>\n <button\n #closeButton\n *ngIf=\"showCloseButton\"\n type=\"button\"\n class=\"btn-close sds-fs-75\"\n [attr.aria-label]=\"closeButtonLabel() ?? translations.close\"\n [title]=\"translations.close ?? ''\"\n (click)=\"onCloseButtonClick()\">\n </button>\n </div>\n\n <div\n class=\"modal-body\"\n [class.pt-0]=\"showHeader\"\n [class.pb-0]=\"showFooter\"\n >\n <ng-content></ng-content>\n </div>\n\n <div *ngIf=\"showFooter\" class=\"modal-footer\">\n <ng-content select=\"footer\"></ng-content>\n </div>\n </div>\n </div>\n</div>\n","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { SdsModalComponent } from '../modal.component';\nimport { ButtonType } from './dialog.types';\nimport { NgIf } from '@angular/common';\n\ntype modalButton = 'primary' | 'secondary' | 'close';\n\n@Component({\n selector: 'sds-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss'],\n standalone: true,\n imports: [SdsModalComponent, NgIf],\n})\nexport class SdsDialogComponent implements OnInit {\n /**\n * @deprecated Use dialogTitle instead\n */\n @Input() public title: string = '';\n @Input() public dialogTitle: string = '';\n \n @Input() public closeText?: string = 'close';\n @Input() public size: 'sm' | 'md' | 'lg' | 'xl' = 'md';\n\n @Input() public primaryButtonText: string = 'Ok';\n @Input() public primaryButtonClass: string = 'sds-btn-primary';\n @Input() public primaryButtonType: ButtonType = 'button';\n @Input() public primaryButtonId?: string;\n @Input() public primaryButtonDisabled: boolean = false;\n \n @Input() public secondaryButtonText: string = 'Cancel'; \n @Input() public secondaryButtonClass: string = 'sds-btn-secondary';\n @Input() public secondaryButtonType: ButtonType = 'button';\n @Input() public secondaryButtonId?: string;\n @Input() public secondaryButtonDisabled: boolean = false;\n\n @Input() public closeOnEscape: boolean = true;\n @Input() public showHeader: boolean = true;\n @Input() public showCloseButton: boolean = true;\n @Input() public showPrimaryButton: boolean = true;\n @Input() public showSecondaryButton: boolean = true;\n @Input() public autofocusElement: 'primary' | 'secondary' | 'close' | 'content' = 'primary';\n\n @Input() public modalDialogId?: string;\n\n /**\n * @deprecated Use isOpenChange instead\n */\n @Output() public dialogOpen: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * @deprecated Use isOpenChange instead\n */\n @Output() public dialogClose: EventEmitter<void> = new EventEmitter<void>();\n\n\n @Input() public isOpen: boolean = false;\n @Output() public isOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @Output() public primaryButtonClick: EventEmitter<void> = new EventEmitter<void>();\n @Output() public secondaryButtonClick: EventEmitter<void> = new EventEmitter<void>();\n\n @ViewChild('modal', { static: true }) private _modal: SdsModalComponent | undefined;\n @ViewChild('content', { read: ElementRef, static: true }) private _content?: ElementRef;\n @ViewChild('primaryButton', { read: ElementRef, static: false }) private _primaryButton?: ElementRef;\n @ViewChild('secondaryButton', { read: ElementRef, static: false }) private _secondaryButton?: ElementRef;\n\n private _callback?: Function;\n private _callbackData: any;\n\n // public isOpen: boolean = false;\n\n constructor() {}\n\n ngOnInit(): void {\n if (this.autofocusElement == 'primary' && !this.showPrimaryButton) {\n this.autofocusElement = 'secondary';\n }\n if (this.autofocusElement == 'secondary' && !this.showSecondaryButton) {\n this.autofocusElement = 'close';\n }\n if (this.autofocusElement == 'close' && !this.showCloseButton) {\n this.autofocusElement = 'content';\n }\n }\n\n public open(callback?: (button: modalButton, data: any) => void, data?: any): void{\n this._callback = callback;\n this._callbackData = data;\n\n if (this._modal != undefined) {\n this.isOpen = true;\n // this._modal.open();\n\n this.isOpenChange.emit(this.isOpen);\n }\n }\n\n private close(): void {\n if (this._modal != undefined) {\n this.isOpen = false;\n // this._modal.close();\n\n this.isOpenChange.emit(this.isOpen);\n }\n }\n\n public onSecondaryClick(): void {\n if (this._callback) {\n this._callback('secondary', this._callbackData);\n }\n this.secondaryButtonClick.emit();\n this.close();\n }\n\n public onPrimaryClick(): void {\n if (this._callback) {\n this._callback('primary', this._callbackData);\n }\n this.primaryButtonClick.emit();\n this.close();\n }\n\n public onCloseClick(): void {\n if (this._callback) {\n this._callback('close', this._callbackData);\n }\n this.close();\n }\n\n public onCloseEscapeKeypress(): void {\n if (this._callback) {\n this._callback('close', this._callbackData);\n }\n this.close();\n }\n\n public onModalClose(): void {\n this.dialogClose.emit();\n }\n\n public onModalOpen(): void {\n this.dialogOpen.emit();\n switch (this.autofocusElement) {\n case 'primary':\n this._primaryButton?.nativeElement.focus();\n break;\n case 'secondary':\n this._secondaryButton?.nativeElement.focus();\n break;\n case 'content':\n this._content?.nativeElement.focus();\n break;\n default:\n break;\n }\n } \n\n}\n\n\n\n","<sds-modal\n #modal\n [modalTitle]=\"dialogTitle || title\"\n [size]=\"size\"\n [modalDialogId]=\"modalDialogId\"\n [showCloseButton]=\"showCloseButton\"\n [showHeader]=\"showHeader\"\n [translations]=\"{ close: closeText}\"\n [autoFocusCloseButton]=\"autofocusElement === 'close'\"\n [closeButtonLabel]=\"closeText\"\n [closeOnEscape]=\"closeOnEscape\"\n (closeClick)=\"onCloseClick()\"\n (closeEscapeKeypress)=\"onCloseEscapeKeypress()\"\n (modalClose)=\"onModalClose()\"\n (modalOpen)=\"onModalOpen()\"\n [(isOpen)]=\"isOpen\"\n>\n\n <div #content [attr.tabindex]=\"autofocusElement === 'content' ? 0 : undefined\" >\n <ng-content></ng-content>\n </div>\n <ng-container #footer ngProjectAs='footer'>\n <button\n #secondaryButton\n *ngIf=\"showSecondaryButton\"\n [attr.id]=\"secondaryButtonId\"\n [disabled]=\"secondaryButtonDisabled\"\n class=\"btn\"\n [class]=\"secondaryButtonClass\"\n (click)=\"onSecondaryClick()\"\n >{{secondaryButtonText}}</button>\n <button\n #primaryButton\n *ngIf=\"showPrimaryButton\"\n [attr.id]=\"primaryButtonId\"\n [disabled]=\"primaryButtonDisabled\"\n class=\"btn\"\n [class]=\"primaryButtonClass\"\n (click)=\"onPrimaryClick()\"\n >{{primaryButtonText}}</button>\n </ng-container>\n</sds-modal>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spicainternational-ngx-sds-components-src-lib-modal.mjs","sources":["../../../projects/ngx-sds-components/src/lib/modal/modal.component.ts","../../../projects/ngx-sds-components/src/lib/modal/modal.component.html","../../../projects/ngx-sds-components/src/lib/modal/dialog/dialog.component.ts","../../../projects/ngx-sds-components/src/lib/modal/dialog/dialog.component.html","../../../projects/ngx-sds-components/src/lib/modal/spicainternational-ngx-sds-components-src-lib-modal.ts"],"sourcesContent":["import {\n Component,\n ElementRef,\n Input,\n OnInit,\n Output,\n ViewChild,\n EventEmitter,\n ContentChild,\n OnChanges,\n SimpleChanges,\n input\n} from '@angular/core';\nimport { faXmark } from '@fortawesome/pro-regular-svg-icons';\nimport { ModalTranslations } from './modal.model';\nimport { CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';\nimport { NgClass, NgIf } from '@angular/common';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\n\n@Component({\n selector: 'sds-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n standalone: true,\n imports: [\n CdkTrapFocus,\n NgClass,\n CdkDrag,\n NgIf,\n CdkDragHandle,\n ],\n})\nexport class SdsModalComponent implements OnInit, OnChanges {\n @ContentChild('header') headerContent: ElementRef = { nativeElement: undefined };\n\n @Input() public modalTitle?: string;\n @Input() public showHeader: boolean = true;\n @Input() public showFooter: boolean = true;\n @Input() public size: 'sm' | 'md' | 'lg' | 'xl' | '820' | 'xxl' = 'md';\n @Input() public modalDialogId?: string;\n @Input() public showCloseButton: boolean = true;\n @Input() public autoFocusCloseButton: boolean = false;\n\n @Input() public translations: ModalTranslations;\n @Input() public isScrollable = true;\n @Input() public isVerticallyCentered = true;\n @Input() public closeOnEscape = false;\n\n @Input() public downSizing: 'discrete' | 'continuous' = 'discrete';\n\n /**\n * Allow the modal to be draggable by the user. Default is true.\n *\n * @memberof SdsModalComponent\n */\n @Input() public isDraggable = true;\n\n /**\n * Constrain modal to the viewport. Default is true.\n *\n * @memberof SdsModalComponent\n */\n @Input() public isDragConstrained = true;\n\n /**\n * @description\n * Label for the close button, used for accessibility.\n * If not provided, it will fall back to the default translation for \"close\".\n */\n public closeButtonLabel = input<string>();\n\n /**\n * @deprecated Use isOpenChange instead\n */\n @Output() public modalOpen: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * @deprecated Use isOpenChange instead\n */\n @Output() public modalClose: EventEmitter<void> = new EventEmitter<void>();\n\n @Output() public closeClick: EventEmitter<void> = new EventEmitter<void>();\n @Output() public closeEscapeKeypress: EventEmitter<void> = new EventEmitter<void>();\n\n public closeIcon = faXmark;\n\n // public isOpen: boolean = false;\n @Input() public isOpen: boolean = false;\n @Output() public isOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @ViewChild('modal', { static: false }) private _modal: ElementRef | undefined;\n @ViewChild('closeButton', { static: false }) private _closeButton: ElementRef | undefined;\n\n\n constructor() {\n this.translations = {\n close: undefined\n }\n }\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['isOpen']) {\n if (this.isOpen) {\n this.open();\n } else {\n this.close();\n }\n }\n }\n\n ngOnInit(): void {}\n\n public open(): void {\n if (this._modal != undefined) {\n this._modal.nativeElement.style.display = 'block';\n this.isOpen = true;\n if(this.autoFocusCloseButton)\n this._closeButton?.nativeElement.focus();\n this.modalOpen.emit();\n }\n }\n\n public close(): void {\n if (this._modal != undefined) {\n this._modal.nativeElement.style.display = 'none';\n this.isOpen = false;\n this.modalClose.emit();\n\n this.isOpenChange.emit(this.isOpen);\n }\n }\n\n public onCloseButtonClick(){\n this.closeClick.emit();\n this.close();\n }\n\n onKeydown(event: KeyboardEvent){\n if (\n event.code === 'Escape' &&\n this.closeOnEscape &&\n this._modal != undefined &&\n this._modal.nativeElement.style.display === 'block'){\n // console.log(`${this.constructor.name} got event: ${event.code}`);\n this.closeEscapeKeypress.emit();\n this.close();\n }\n }\n}\n","<div\n #modal\n class=\"modal modal-backdrop\"\n (keydown)=\"onKeydown($event)\"\n [cdkTrapFocus]=\"isOpen\"\n [cdkTrapFocusAutoCapture]=\"true\"\n >\n <div\n class=\"modal-dialog\"\n [class.modal-dialog-scrollable] = \"isScrollable\"\n [class.downsize-continuous] = \"downSizing === 'continuous'\"\n [class.modal-dialog-centered] = \"isVerticallyCentered\"\n [attr.id]=\"modalDialogId\"\n [ngClass]=\"'modal-' + size\"\n role=\"document\"\n >\n <div\n class=\"modal-content\"\n cdkDrag [cdkDragDisabled]=\"!isDraggable\" [cdkDragBoundary]=\"isDragConstrained ? '.modal-backdrop' : ''\"\n >\n\n <div *ngIf=\"isDraggable\" class=\"modal-drag-handle\" cdkDragHandle></div>\n\n <div\n *ngIf=\"showHeader && headerContent\"\n class=\"modal-header\"\n >\n <ng-content select='header'></ng-content>\n </div>\n\n <div\n *ngIf=\"showHeader && !headerContent\"\n class=\"modal-header\"\n >\n\n <h5 class=\"modal-title\">{{modalTitle}}</h5>\n <button\n #closeButton\n *ngIf=\"showCloseButton\"\n type=\"button\"\n class=\"btn-close sds-fs-75\"\n [attr.aria-label]=\"closeButtonLabel() ?? translations.close\"\n [title]=\"translations.close ?? ''\"\n (click)=\"onCloseButtonClick()\">\n </button>\n </div>\n\n <div\n class=\"modal-body\"\n [class.pt-0]=\"showHeader\"\n [class.pb-0]=\"showFooter\"\n >\n <ng-content></ng-content>\n </div>\n\n <div *ngIf=\"showFooter\" class=\"modal-footer\">\n <ng-content select=\"footer\"></ng-content>\n </div>\n </div>\n </div>\n</div>\n","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { SdsModalComponent } from '../modal.component';\nimport { ButtonType } from './dialog.types';\nimport { NgIf } from '@angular/common';\n\ntype modalButton = 'primary' | 'secondary' | 'close';\n\n@Component({\n selector: 'sds-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss'],\n standalone: true,\n imports: [SdsModalComponent, NgIf],\n})\nexport class SdsDialogComponent implements OnInit {\n /**\n * @deprecated Use dialogTitle instead\n */\n @Input() public title: string = '';\n @Input() public dialogTitle: string = '';\n \n @Input() public closeText?: string = 'close';\n @Input() public size: 'sm' | 'md' | 'lg' | 'xl' = 'md';\n\n @Input() public primaryButtonText: string = 'Ok';\n @Input() public primaryButtonClass: string = 'sds-btn-primary';\n @Input() public primaryButtonType: ButtonType = 'button';\n @Input() public primaryButtonId?: string;\n @Input() public primaryButtonDisabled: boolean = false;\n \n @Input() public secondaryButtonText: string = 'Cancel'; \n @Input() public secondaryButtonClass: string = 'sds-btn-secondary';\n @Input() public secondaryButtonType: ButtonType = 'button';\n @Input() public secondaryButtonId?: string;\n @Input() public secondaryButtonDisabled: boolean = false;\n\n @Input() public closeOnEscape: boolean = true;\n @Input() public showHeader: boolean = true;\n @Input() public showCloseButton: boolean = true;\n @Input() public showPrimaryButton: boolean = true;\n @Input() public showSecondaryButton: boolean = true;\n @Input() public autofocusElement: 'primary' | 'secondary' | 'close' | 'content' = 'primary';\n\n @Input() public modalDialogId?: string;\n\n /**\n * @deprecated Use isOpenChange instead\n */\n @Output() public dialogOpen: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * @deprecated Use isOpenChange instead\n */\n @Output() public dialogClose: EventEmitter<void> = new EventEmitter<void>();\n\n\n @Input() public isOpen: boolean = false;\n @Output() public isOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @Output() public primaryButtonClick: EventEmitter<void> = new EventEmitter<void>();\n @Output() public secondaryButtonClick: EventEmitter<void> = new EventEmitter<void>();\n\n @ViewChild('modal', { static: true }) private _modal: SdsModalComponent | undefined;\n @ViewChild('content', { read: ElementRef, static: true }) private _content?: ElementRef;\n @ViewChild('primaryButton', { read: ElementRef, static: false }) private _primaryButton?: ElementRef;\n @ViewChild('secondaryButton', { read: ElementRef, static: false }) private _secondaryButton?: ElementRef;\n\n private _callback?: Function;\n private _callbackData: any;\n\n // public isOpen: boolean = false;\n\n constructor() {}\n\n ngOnInit(): void {\n if (this.autofocusElement == 'primary' && !this.showPrimaryButton) {\n this.autofocusElement = 'secondary';\n }\n if (this.autofocusElement == 'secondary' && !this.showSecondaryButton) {\n this.autofocusElement = 'close';\n }\n if (this.autofocusElement == 'close' && !this.showCloseButton) {\n this.autofocusElement = 'content';\n }\n }\n\n public open(callback?: (button: modalButton, data: any) => void, data?: any): void{\n this._callback = callback;\n this._callbackData = data;\n\n if (this._modal != undefined) {\n this.isOpen = true;\n // this._modal.open();\n\n this.isOpenChange.emit(this.isOpen);\n }\n }\n\n private close(): void {\n if (this._modal != undefined) {\n this.isOpen = false;\n // this._modal.close();\n\n this.isOpenChange.emit(this.isOpen);\n }\n }\n\n public onSecondaryClick(): void {\n if (this._callback) {\n this._callback('secondary', this._callbackData);\n }\n this.secondaryButtonClick.emit();\n this.close();\n }\n\n public onPrimaryClick(): void {\n if (this._callback) {\n this._callback('primary', this._callbackData);\n }\n this.primaryButtonClick.emit();\n this.close();\n }\n\n public onCloseClick(): void {\n if (this._callback) {\n this._callback('close', this._callbackData);\n }\n this.close();\n }\n\n public onCloseEscapeKeypress(): void {\n if (this._callback) {\n this._callback('close', this._callbackData);\n }\n this.close();\n }\n\n public onModalClose(): void {\n this.dialogClose.emit();\n }\n\n public onModalOpen(): void {\n this.dialogOpen.emit();\n switch (this.autofocusElement) {\n case 'primary':\n this._primaryButton?.nativeElement.focus();\n break;\n case 'secondary':\n this._secondaryButton?.nativeElement.focus();\n break;\n case 'content':\n this._content?.nativeElement.focus();\n break;\n default:\n break;\n }\n } \n\n}\n\n\n\n","<sds-modal\n #modal\n [modalTitle]=\"dialogTitle || title\"\n [size]=\"size\"\n [modalDialogId]=\"modalDialogId\"\n [showCloseButton]=\"showCloseButton\"\n [showHeader]=\"showHeader\"\n [translations]=\"{ close: closeText}\"\n [autoFocusCloseButton]=\"autofocusElement === 'close'\"\n [closeButtonLabel]=\"closeText\"\n [closeOnEscape]=\"closeOnEscape\"\n (closeClick)=\"onCloseClick()\"\n (closeEscapeKeypress)=\"onCloseEscapeKeypress()\"\n (modalClose)=\"onModalClose()\"\n (modalOpen)=\"onModalOpen()\"\n [(isOpen)]=\"isOpen\"\n>\n\n <div #content [attr.tabindex]=\"autofocusElement === 'content' ? 0 : undefined\" >\n <ng-content></ng-content>\n </div>\n <ng-container #footer ngProjectAs='footer'>\n <button\n #secondaryButton\n *ngIf=\"showSecondaryButton\"\n [attr.id]=\"secondaryButtonId\"\n [attr.type]=\"secondaryButtonType\"\n [disabled]=\"secondaryButtonDisabled\"\n class=\"btn\"\n [class]=\"secondaryButtonClass\"\n (click)=\"onSecondaryClick()\"\n >{{secondaryButtonText}}</button>\n <button\n #primaryButton\n *ngIf=\"showPrimaryButton\"\n [attr.id]=\"primaryButtonId\"\n [attr.type]=\"primaryButtonType\"\n [disabled]=\"primaryButtonDisabled\"\n class=\"btn\"\n [class]=\"primaryButtonClass\"\n (click)=\"onPrimaryClick()\"\n >{{primaryButtonText}}</button>\n </ng-container>\n</sds-modal>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -466,7 +466,7 @@ class SdsTimelineComponent {
|
|
|
466
466
|
});
|
|
467
467
|
}
|
|
468
468
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SdsTimelineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
469
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SdsTimelineComponent, isStandalone: true, selector: "sds-timeline", inputs: { start: "start", end: "end", items: "items", pointInTimeItems: "pointInTimeItems", itemTemplate: "itemTemplate", pointInTimeTemplate: "pointInTimeTemplate", dayLabelTemplate: "dayLabelTemplate", dayLabelCustomDataFn: "dayLabelCustomDataFn", tickFrequency: "tickFrequency", hourLabelFrequency: "hourLabelFrequency", zoomPercent: "zoomPercent", viewOffsetPercent: "viewOffsetPercent", maxZoomPercent: "maxZoomPercent", showHourLabels: "showHourLabels", hourLabelClass: "hourLabelClass", showDayLabels: "showDayLabels", dayLabelClass: "dayLabelClass", showTimeline: "showTimeline", hourTickClass: "hourTickClass", timelineHeight: "timelineHeight", enableZoomAndDrag: "enableZoomAndDrag", offSetMinutes: "offSetMinutes", locales: "locales", cutOffset: "cutOffset", defaultCursor: "defaultCursor" }, outputs: { zoomPercentChange: "zoomPercentChange", viewOffsetPercentChange: "viewOffsetPercentChange" }, host: { listeners: { "window:mousemove": "onDragMove($event)", "window:touchmove": "onDragMoveTouch($event)", "window:mouseup": "onDragEnd($event)", "window:touchend": "onDragEnd($event)" } }, viewQueries: [{ propertyName: "_viewport", first: true, predicate: ["viewport"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #defaultItemTemplate let-item=\"item\">\n <div \n class=\"sds-timeline-item h-100\"\n [title]=\"item.hint\"\n >\n </div>\n</ng-template>\n\n<ng-template #defaultPointInTimeItemTemplate let-item=\"item\">\n <div \n class=\"sds-timeline-item h-100\"\n [title]=\"item.hint\"\n >\n </div>\n</ng-template>\n\n<ng-template #defaultDayLabelTemplate let-label=\"label\">\n {{label.label}}\n</ng-template>\n\n<div \n #viewport\n class=\"sds-timeline-viewport\"\n (wheel)=\"onScroll($event)\"\n\n (mousedown)=\"onDragStart($event)\"\n (touchstart)=\"onDragStart($event)\"\n >\n\n <div \n class=\"sds-timeline-container d-flex flex-column\"\n [style.left.%]=\"viewOffsetPercent\"\n [style.width.%]=\"zoomPercent\"\n [style.cursor]=\"isDragging ? 'ew-resize' : defaultCursor\"\n >\n\n <div\n *ngIf=\"showDayLabels\" \n class=\"sds-timeline-day-header\">\n\n <div \n *ngFor=\"let label of dayLabels\"\n class=\"sds-day-label\" \n [ngClass]=\"dayLabelClass ?? null\"\n [style.left.%]=\"label.x\"\n [style.width.%]=\"label.width\"\n >\n <ng-container \n [ngTemplateOutlet]=\"dayLabelTemplate ? dayLabelTemplate : defaultDayLabelTemplate\"\n [ngTemplateOutletContext]=\"{label: label}\">\n </ng-container> \n </div>\n </div>\n\n <div \n *ngIf=\"showHourLabels\" \n class=\"sds-timeline-hour-header\">\n\n <div \n *ngFor=\"let label of hourLabels;\"\n class=\"sds-hour-label\" \n [ngClass]=\"hourLabelClass ?? null\"\n [style.left.%]=\"label.x\"\n [style.width.rem]=\"1.2\"\n [ngStyle]=\"{'left': 'calc(' + label.x + '% - 0.6rem)'}\"\n >\n \n {{label.label}}\n \n </div>\n </div>\n\n <div \n *ngIf=\"showTimeline\"\n class=\"sds-timeline flex-grow-1\"\n [style.height]=\"timelineHeight\"\n >\n\n <div \n *ngFor=\"let tick of hourTicks\"\n class=\"sds-timeline-tick\" \n [ngClass]=\"hourTickClass ?? null\"\t\n [ngStyle]=\"tick.x == 100 ? {'left': 'calc(' + tick.x +'% - 1px)'} : {'left': 'calc(' + tick.x + '% - 0.5px)'}\"\n >\n </div>\n\n <div \n *ngFor=\"let item of presentationItems\"\n class=\"sds-timeline-item-container\"\n [ngClass]=\"item.class ?? null\"\n [ngStyle]=\"{\n 'width': 'max(' + item.width +'%, 1px)',\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \n }\"\n\n [style.left.%]=\"item.x\"\n [style.height]=\"item.height\"\n [style.backgroundColor]=\"item.backgroundColor\"\n >\n\n <ng-container \n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultItemTemplate\"\n [ngTemplateOutletContext]=\"{item: item}\">\n </ng-container> \n </div>\n\n\n <!-- [ngClass]=\"item.class\"\t -->\n <div *ngFor=\"let item of presentationPointInTimeItems\"\n class
|
|
469
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SdsTimelineComponent, isStandalone: true, selector: "sds-timeline", inputs: { start: "start", end: "end", items: "items", pointInTimeItems: "pointInTimeItems", itemTemplate: "itemTemplate", pointInTimeTemplate: "pointInTimeTemplate", dayLabelTemplate: "dayLabelTemplate", dayLabelCustomDataFn: "dayLabelCustomDataFn", tickFrequency: "tickFrequency", hourLabelFrequency: "hourLabelFrequency", zoomPercent: "zoomPercent", viewOffsetPercent: "viewOffsetPercent", maxZoomPercent: "maxZoomPercent", showHourLabels: "showHourLabels", hourLabelClass: "hourLabelClass", showDayLabels: "showDayLabels", dayLabelClass: "dayLabelClass", showTimeline: "showTimeline", hourTickClass: "hourTickClass", timelineHeight: "timelineHeight", enableZoomAndDrag: "enableZoomAndDrag", offSetMinutes: "offSetMinutes", locales: "locales", cutOffset: "cutOffset", defaultCursor: "defaultCursor" }, outputs: { zoomPercentChange: "zoomPercentChange", viewOffsetPercentChange: "viewOffsetPercentChange" }, host: { listeners: { "window:mousemove": "onDragMove($event)", "window:touchmove": "onDragMoveTouch($event)", "window:mouseup": "onDragEnd($event)", "window:touchend": "onDragEnd($event)" } }, viewQueries: [{ propertyName: "_viewport", first: true, predicate: ["viewport"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #defaultItemTemplate let-item=\"item\">\n <div \n class=\"sds-timeline-item h-100\"\n [title]=\"item.hint\"\n >\n </div>\n</ng-template>\n\n<ng-template #defaultPointInTimeItemTemplate let-item=\"item\">\n <div \n class=\"sds-timeline-item h-100\"\n [title]=\"item.hint\"\n >\n </div>\n</ng-template>\n\n<ng-template #defaultDayLabelTemplate let-label=\"label\">\n {{label.label}}\n</ng-template>\n\n<div \n #viewport\n class=\"sds-timeline-viewport\"\n (wheel)=\"onScroll($event)\"\n\n (mousedown)=\"onDragStart($event)\"\n (touchstart)=\"onDragStart($event)\"\n >\n\n <div \n class=\"sds-timeline-container d-flex flex-column\"\n [style.left.%]=\"viewOffsetPercent\"\n [style.width.%]=\"zoomPercent\"\n [style.cursor]=\"isDragging ? 'ew-resize' : defaultCursor\"\n >\n\n <div\n *ngIf=\"showDayLabels\" \n class=\"sds-timeline-day-header\">\n\n <div \n *ngFor=\"let label of dayLabels\"\n class=\"sds-day-label\" \n [ngClass]=\"dayLabelClass ?? null\"\n [style.left.%]=\"label.x\"\n [style.width.%]=\"label.width\"\n >\n <ng-container \n [ngTemplateOutlet]=\"dayLabelTemplate ? dayLabelTemplate : defaultDayLabelTemplate\"\n [ngTemplateOutletContext]=\"{label: label}\">\n </ng-container> \n </div>\n </div>\n\n <div \n *ngIf=\"showHourLabels\" \n class=\"sds-timeline-hour-header\">\n\n <div \n *ngFor=\"let label of hourLabels;\"\n class=\"sds-hour-label\" \n [ngClass]=\"hourLabelClass ?? null\"\n [style.left.%]=\"label.x\"\n [style.width.rem]=\"1.2\"\n [ngStyle]=\"{'left': 'calc(' + label.x + '% - 0.6rem)'}\"\n >\n \n {{label.label}}\n \n </div>\n </div>\n\n <div \n *ngIf=\"showTimeline\"\n class=\"sds-timeline flex-grow-1\"\n [style.height]=\"timelineHeight\"\n >\n\n <div \n *ngFor=\"let tick of hourTicks\"\n class=\"sds-timeline-tick\" \n [ngClass]=\"hourTickClass ?? null\"\t\n [ngStyle]=\"tick.x == 100 ? {'left': 'calc(' + tick.x +'% - 1px)'} : {'left': 'calc(' + tick.x + '% - 0.5px)'}\"\n >\n </div>\n\n <div \n *ngFor=\"let item of presentationItems\"\n class=\"sds-timeline-item-container\"\n [ngClass]=\"item.class ?? null\"\n [ngStyle]=\"{\n 'width': 'max(' + item.width +'%, 1px)',\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \n }\"\n\n [style.left.%]=\"item.x\"\n [style.height]=\"item.height\"\n [style.backgroundColor]=\"item.backgroundColor\"\n >\n\n <ng-container \n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultItemTemplate\"\n [ngTemplateOutletContext]=\"{item: item}\">\n </ng-container> \n </div>\n\n\n <!-- [ngClass]=\"item.class\"\t -->\n <div *ngFor=\"let item of presentationPointInTimeItems\"\n class=\"sds-timeline-point-in-time-item-container\"\n [ngClass]=\"item.class ?? null\"\n [style.height]=\"item.height\"\n [style.width]=\"item.width\"\n [ngStyle]=\"{\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \n 'left': 'calc(' + item.x + '% - max( calc(' + item.width +'/2), 1px))',\n \n }\"\n [style.backgroundColor]=\"item.backgroundColor\"\n >\n\n <ng-container \n [ngTemplateOutlet]=\"pointInTimeTemplate ? pointInTimeTemplate : defaultPointInTimeItemTemplate\"\n [ngTemplateOutletContext]=\"{item: item}\">\n </ng-container> \n\n </div>\n\n </div>\n </div>\n</div>\n", styles: [".sds-timeline-viewport{overflow:hidden}.sds-timeline-viewport .sds-timeline-container{width:100%;min-height:0;position:relative;-webkit-user-select:none;user-select:none}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header{height:1.6rem;position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header .sds-day-label{position:absolute;display:inline;text-align:center;font-size:.875rem}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header{height:1.6rem;position:relative;font-size:.8em}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header .sds-hour-label{position:absolute;display:inline;text-align:center;font-size:.875rem}.sds-timeline-viewport .sds-timeline-container .sds-timeline{position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-tick{border-left:1px solid rgb(187,187,187);height:100%;position:absolute;display:inline}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container{height:100%;position:absolute;display:inline;top:20%;height:60%}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container .sds-timeline-item{position:relative;width:100%}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-point-in-time-item-container{width:1px;height:1px;position:absolute}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-point-in-time-item-container .sds-timeline-item{position:relative;width:100%}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
470
470
|
}
|
|
471
471
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SdsTimelineComponent, decorators: [{
|
|
472
472
|
type: Component,
|
|
@@ -476,7 +476,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
476
476
|
NgStyle,
|
|
477
477
|
NgClass,
|
|
478
478
|
NgTemplateOutlet,
|
|
479
|
-
], template: "<ng-template #defaultItemTemplate let-item=\"item\">\n <div \n class=\"sds-timeline-item h-100\"\n [title]=\"item.hint\"\n >\n </div>\n</ng-template>\n\n<ng-template #defaultPointInTimeItemTemplate let-item=\"item\">\n <div \n class=\"sds-timeline-item h-100\"\n [title]=\"item.hint\"\n >\n </div>\n</ng-template>\n\n<ng-template #defaultDayLabelTemplate let-label=\"label\">\n {{label.label}}\n</ng-template>\n\n<div \n #viewport\n class=\"sds-timeline-viewport\"\n (wheel)=\"onScroll($event)\"\n\n (mousedown)=\"onDragStart($event)\"\n (touchstart)=\"onDragStart($event)\"\n >\n\n <div \n class=\"sds-timeline-container d-flex flex-column\"\n [style.left.%]=\"viewOffsetPercent\"\n [style.width.%]=\"zoomPercent\"\n [style.cursor]=\"isDragging ? 'ew-resize' : defaultCursor\"\n >\n\n <div\n *ngIf=\"showDayLabels\" \n class=\"sds-timeline-day-header\">\n\n <div \n *ngFor=\"let label of dayLabels\"\n class=\"sds-day-label\" \n [ngClass]=\"dayLabelClass ?? null\"\n [style.left.%]=\"label.x\"\n [style.width.%]=\"label.width\"\n >\n <ng-container \n [ngTemplateOutlet]=\"dayLabelTemplate ? dayLabelTemplate : defaultDayLabelTemplate\"\n [ngTemplateOutletContext]=\"{label: label}\">\n </ng-container> \n </div>\n </div>\n\n <div \n *ngIf=\"showHourLabels\" \n class=\"sds-timeline-hour-header\">\n\n <div \n *ngFor=\"let label of hourLabels;\"\n class=\"sds-hour-label\" \n [ngClass]=\"hourLabelClass ?? null\"\n [style.left.%]=\"label.x\"\n [style.width.rem]=\"1.2\"\n [ngStyle]=\"{'left': 'calc(' + label.x + '% - 0.6rem)'}\"\n >\n \n {{label.label}}\n \n </div>\n </div>\n\n <div \n *ngIf=\"showTimeline\"\n class=\"sds-timeline flex-grow-1\"\n [style.height]=\"timelineHeight\"\n >\n\n <div \n *ngFor=\"let tick of hourTicks\"\n class=\"sds-timeline-tick\" \n [ngClass]=\"hourTickClass ?? null\"\t\n [ngStyle]=\"tick.x == 100 ? {'left': 'calc(' + tick.x +'% - 1px)'} : {'left': 'calc(' + tick.x + '% - 0.5px)'}\"\n >\n </div>\n\n <div \n *ngFor=\"let item of presentationItems\"\n class=\"sds-timeline-item-container\"\n [ngClass]=\"item.class ?? null\"\n [ngStyle]=\"{\n 'width': 'max(' + item.width +'%, 1px)',\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \n }\"\n\n [style.left.%]=\"item.x\"\n [style.height]=\"item.height\"\n [style.backgroundColor]=\"item.backgroundColor\"\n >\n\n <ng-container \n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultItemTemplate\"\n [ngTemplateOutletContext]=\"{item: item}\">\n </ng-container> \n </div>\n\n\n <!-- [ngClass]=\"item.class\"\t -->\n <div *ngFor=\"let item of presentationPointInTimeItems\"\n class
|
|
479
|
+
], template: "<ng-template #defaultItemTemplate let-item=\"item\">\n <div \n class=\"sds-timeline-item h-100\"\n [title]=\"item.hint\"\n >\n </div>\n</ng-template>\n\n<ng-template #defaultPointInTimeItemTemplate let-item=\"item\">\n <div \n class=\"sds-timeline-item h-100\"\n [title]=\"item.hint\"\n >\n </div>\n</ng-template>\n\n<ng-template #defaultDayLabelTemplate let-label=\"label\">\n {{label.label}}\n</ng-template>\n\n<div \n #viewport\n class=\"sds-timeline-viewport\"\n (wheel)=\"onScroll($event)\"\n\n (mousedown)=\"onDragStart($event)\"\n (touchstart)=\"onDragStart($event)\"\n >\n\n <div \n class=\"sds-timeline-container d-flex flex-column\"\n [style.left.%]=\"viewOffsetPercent\"\n [style.width.%]=\"zoomPercent\"\n [style.cursor]=\"isDragging ? 'ew-resize' : defaultCursor\"\n >\n\n <div\n *ngIf=\"showDayLabels\" \n class=\"sds-timeline-day-header\">\n\n <div \n *ngFor=\"let label of dayLabels\"\n class=\"sds-day-label\" \n [ngClass]=\"dayLabelClass ?? null\"\n [style.left.%]=\"label.x\"\n [style.width.%]=\"label.width\"\n >\n <ng-container \n [ngTemplateOutlet]=\"dayLabelTemplate ? dayLabelTemplate : defaultDayLabelTemplate\"\n [ngTemplateOutletContext]=\"{label: label}\">\n </ng-container> \n </div>\n </div>\n\n <div \n *ngIf=\"showHourLabels\" \n class=\"sds-timeline-hour-header\">\n\n <div \n *ngFor=\"let label of hourLabels;\"\n class=\"sds-hour-label\" \n [ngClass]=\"hourLabelClass ?? null\"\n [style.left.%]=\"label.x\"\n [style.width.rem]=\"1.2\"\n [ngStyle]=\"{'left': 'calc(' + label.x + '% - 0.6rem)'}\"\n >\n \n {{label.label}}\n \n </div>\n </div>\n\n <div \n *ngIf=\"showTimeline\"\n class=\"sds-timeline flex-grow-1\"\n [style.height]=\"timelineHeight\"\n >\n\n <div \n *ngFor=\"let tick of hourTicks\"\n class=\"sds-timeline-tick\" \n [ngClass]=\"hourTickClass ?? null\"\t\n [ngStyle]=\"tick.x == 100 ? {'left': 'calc(' + tick.x +'% - 1px)'} : {'left': 'calc(' + tick.x + '% - 0.5px)'}\"\n >\n </div>\n\n <div \n *ngFor=\"let item of presentationItems\"\n class=\"sds-timeline-item-container\"\n [ngClass]=\"item.class ?? null\"\n [ngStyle]=\"{\n 'width': 'max(' + item.width +'%, 1px)',\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \n }\"\n\n [style.left.%]=\"item.x\"\n [style.height]=\"item.height\"\n [style.backgroundColor]=\"item.backgroundColor\"\n >\n\n <ng-container \n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultItemTemplate\"\n [ngTemplateOutletContext]=\"{item: item}\">\n </ng-container> \n </div>\n\n\n <!-- [ngClass]=\"item.class\"\t -->\n <div *ngFor=\"let item of presentationPointInTimeItems\"\n class=\"sds-timeline-point-in-time-item-container\"\n [ngClass]=\"item.class ?? null\"\n [style.height]=\"item.height\"\n [style.width]=\"item.width\"\n [ngStyle]=\"{\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \n 'left': 'calc(' + item.x + '% - max( calc(' + item.width +'/2), 1px))',\n \n }\"\n [style.backgroundColor]=\"item.backgroundColor\"\n >\n\n <ng-container \n [ngTemplateOutlet]=\"pointInTimeTemplate ? pointInTimeTemplate : defaultPointInTimeItemTemplate\"\n [ngTemplateOutletContext]=\"{item: item}\">\n </ng-container> \n\n </div>\n\n </div>\n </div>\n</div>\n", styles: [".sds-timeline-viewport{overflow:hidden}.sds-timeline-viewport .sds-timeline-container{width:100%;min-height:0;position:relative;-webkit-user-select:none;user-select:none}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header{height:1.6rem;position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header .sds-day-label{position:absolute;display:inline;text-align:center;font-size:.875rem}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header{height:1.6rem;position:relative;font-size:.8em}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header .sds-hour-label{position:absolute;display:inline;text-align:center;font-size:.875rem}.sds-timeline-viewport .sds-timeline-container .sds-timeline{position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-tick{border-left:1px solid rgb(187,187,187);height:100%;position:absolute;display:inline}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container{height:100%;position:absolute;display:inline;top:20%;height:60%}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container .sds-timeline-item{position:relative;width:100%}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-point-in-time-item-container{width:1px;height:1px;position:absolute}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-point-in-time-item-container .sds-timeline-item{position:relative;width:100%}\n"] }]
|
|
480
480
|
}], ctorParameters: () => [], propDecorators: { start: [{
|
|
481
481
|
type: Input
|
|
482
482
|
}], end: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spicainternational-ngx-sds-components-src-lib-timeline.mjs","sources":["../../../projects/ngx-sds-components/src/lib/timeline/services/timeline.service.ts","../../../projects/ngx-sds-components/src/lib/timeline/components/timeline.component.ts","../../../projects/ngx-sds-components/src/lib/timeline/components/timeline.component.html","../../../projects/ngx-sds-components/src/lib/timeline/spicainternational-ngx-sds-components-src-lib-timeline.ts"],"sourcesContent":["import { TimelineIntervalLabel, TimelineTick } from '../models/timeline.model';\nimport { TimelineCustomDateDataProvider, TimelineTickFrequency } from '../types/timeline.types';\n\nexport class SdsTimelineService {\n\n private startWithOffset: Date = new Date();\n private endWithOffset: Date = new Date();\n\n private start: Date = new Date();\n private end: Date = new Date();\n\n private cutOffset = true;\n\n\n private widthPercentPerMinute: number;\n\n private hourTicks: TimelineTick[] = [];\n\n \n constructor(start: Date, end: Date, offSetMinutes: number, cutOffset: boolean) {\n this.cutOffset = cutOffset;\n\n this.start = new Date(start);\n this.startWithOffset = new Date(start);\n this.startWithOffset.setMinutes(this.startWithOffset.getMinutes() - offSetMinutes);\n\n this.end = new Date(end);\n this.endWithOffset = new Date(end); \n this.endWithOffset.setMinutes(this.endWithOffset.getMinutes() + offSetMinutes);\n\n this.widthPercentPerMinute = (100 / this.diffInMinutes(this.startWithOffset, this.endWithOffset));\n\n this.initHourTicks();\n }\n\n public getX(time: Date): number {\n const trimmedTime = new Date(time);\n if (this.cutOffset) {\n if (trimmedTime < this.start) {\n trimmedTime.setTime(this.start.getTime());\n }\n if (trimmedTime > this.end) {\n trimmedTime.setTime(this.end.getTime());\n }\n }\n\n return this.diffInMinutes(this.startWithOffset, trimmedTime) * this.widthPercentPerMinute; \n }\n\n public getWidthFromMinutes(minutes: number): number {\n return minutes * this.widthPercentPerMinute;\n }\n\n public getWidthFromTime(start: Date, end: Date): number {\n const trimmedStart = new Date(start);\n if (this.cutOffset) {\n if (trimmedStart < this.start) {\n trimmedStart.setTime(this.start.getTime());\n } \n if (trimmedStart > this.end) {\n trimmedStart.setTime(this.end.getTime());\n }\n }\n\n const trimmedEnd = new Date(end);\n if (this.cutOffset) {\n if (trimmedEnd < this.start) {\n trimmedEnd.setTime(this.start.getTime());\n }\n if (trimmedEnd > this.end) {\n trimmedEnd.setTime(this.end.getTime());\n }\n }\n\n return this.getWidthFromMinutes(this.diffInMinutes(trimmedStart, trimmedEnd));\n }\n\n public getTick(time: Date): TimelineTick {\n return {\n date: new Date(time),\n x: this.getX(time),\n } \n }\n \n public getHourTicks(frequency: TimelineTickFrequency = 'hourly'): TimelineTick[] {\n return this.hourTicks.filter(tick => this.isValidFrequencyHour(tick.date.getHours(), frequency));\n }\n\n public getHourLabels(frequency: TimelineTickFrequency = 'hourly'): TimelineIntervalLabel[] {\n const hourLabels: TimelineIntervalLabel[] = [];\n\n const ticks = this.hourTicks.filter(tick => this.isValidFrequencyHour(tick.date.getHours(), frequency));\n ticks.forEach(tick => {\n let labelStartTime = new Date(tick.date);\n hourLabels.push(\n {\n x: this.getX(labelStartTime),\n width: 0,\n label: tick.date.getHours().toString(),\n date: new Date(labelStartTime),\n data: null\n });\n });\n return hourLabels;\n }\n\n public getDayLabels(\n locales: string | Array<string> | undefined, \n customDataFn: TimelineCustomDateDataProvider | undefined): TimelineIntervalLabel[] {\n const dayLabels = [];\n\n // get start date at the beginning of the day\n let startDate = new Date(this.startWithOffset);\n startDate.setHours(0, 0, 0, 0);\n\n // get end date at the end of the day\n let endDate = new Date(this.endWithOffset);\n endDate.setHours(23, 59, 59, 999);\n\n let currentDate = new Date(startDate);\n while (currentDate <= endDate) {\n let endOfCurrentDay = new Date(currentDate);\n endOfCurrentDay.setHours(23, 59, 59, 999);\n\n const dayLabelWidth = this.getWidthFromTime(currentDate, endOfCurrentDay);\n\n if (dayLabelWidth > 0) {\n dayLabels.push({\n // date: new Date(currentDate),\n x: this.getX(new Date(currentDate)),\n width: dayLabelWidth,\n label: currentDate.toLocaleDateString(locales ?? [], { weekday: 'long', day: 'numeric', month: 'long', year: 'numeric' }),\n date: new Date(currentDate),\n data: customDataFn ? customDataFn(new Date(currentDate)) : null\n });\n }\n currentDate.setDate(currentDate.getDate() + 1); \n }\n return dayLabels;\n } \n\n //#region Private Methods\n\n private isValidFrequencyHour(hours: number, frequency: TimelineTickFrequency) {\n\n if (frequency === 'hourly') {\n return true; // every tick is valid\n } \n if (frequency === '2hrs') {\n return hours % 2 === 0;\n } \n if (frequency === '3hrs') {\n return hours % 3 === 0;\n } \n if (frequency === '6hrs') {\n return hours % 6 === 0;\n }\n return false; // unsupported frequency\n }\n\n private diffInMinutes(start: Date, end: Date): number {\n return (end.getTime() - start.getTime()) / (1000 * 60);;\n }\n\n private roundHoursUp(time: Date): Date {\n \n let newTime = new Date(time);\n \n if (newTime.getMinutes() > 0 || newTime.getSeconds() > 0 || newTime.getMilliseconds() > 0) {\n newTime.setHours(newTime.getHours() + 1);\n }\n newTime.setMinutes(0, 0, 0);\n return newTime;\n }\n\n\n private roundHoursDown(time: Date) {\n let newTime = new Date(time);\n newTime.setMinutes(0, 0, 0);\n return newTime;\n }\n \n\n private initHourTicks(): void {\n this.hourTicks = [];\n\n // get first whole hour from start date\n let startHour = this.roundHoursUp(this.startWithOffset);\n\n // get last whole hour from end date\n let endHour = this.roundHoursDown(this.endWithOffset);\n\n let currentHour = new Date(startHour)\n while (currentHour <= endHour) {\n this.hourTicks.push(this.getTick(currentHour));\n currentHour.setHours(currentHour.getHours() + 1);\n }\n }\n \n //#endregion\n\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n HostListener,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n EventEmitter\n} from '@angular/core';\nimport { TimelineCustomDateDataProvider, TimelineTickFrequency } from '../types/timeline.types';\nimport { SdsTimelineService } from '../services/timeline.service';\nimport {\n TimelineIntervalLabel,\n TimelineItem,\n TimelineItemPresentation,\n TimelinePointInTimeItem,\n TimelinePointInTimeItemPresentation,\n TimelineTick,\n} from '../models/timeline.model';\nimport { NgIf, NgFor, NgStyle, NgTemplateOutlet, NgClass } from '@angular/common';\n\n@Component({\n selector: 'sds-timeline',\n templateUrl: './timeline.component.html',\n styleUrls: ['./timeline.component.scss'],\n standalone: true,\n imports: [\n NgIf,\n NgFor,\n NgStyle,\n NgClass,\n NgTemplateOutlet,\n ],\n})\nexport class SdsTimelineComponent implements OnInit, OnChanges, AfterViewInit {\n /**\n * The start date and time for the timeline.\n *\n * @type {Date}\n * @memberof SdsTimelineComponent\n */\n @Input() start: Date = new Date();\n\n /**\n * The end date and time for the timeline.\n *\n * @type {Date}\n * @memberof SdsTimelineComponent\n */\n @Input() end: Date = new Date();\n\n /**\n * The period based items to be displayed on the timeline. Specify data if you need \n * additional data for custom rendering of the items.\n *\n * @type {TimelineItem[]}\n * @memberof SdsTimelineComponent\n */\n @Input() items: TimelineItem[] = [];\n\n /**\n * Items to be displayed on the timeline at a specific point in time.\n * Specify data if you need additional data for custom rendering of the items.\n *\n * @type {TimelinePointInTimeItem[]}\n * @memberof SdsTimelineComponent\n */\n @Input() pointInTimeItems: TimelinePointInTimeItem[] = [];\n\n /**\n * The template to be used for custom rendering of the items.\n *\n * @type {(TemplateRef<any> | undefined)}\n * @memberof SdsTimelineComponent\n */\n @Input() itemTemplate: TemplateRef<any> | undefined = undefined;\n\n /**\n * The template to be used for custom rendering of the poin-in-time items.\n *\n * @type {(TemplateRef<any> | undefined)}\n * @memberof SdsTimelineComponent\n */\n @Input() pointInTimeTemplate: TemplateRef<any> | undefined = undefined;\n\n /**\n * The template to be used for custom rendering of the day labels.\n *\n * @type {(TemplateRef<any> | undefined)}\n * @memberof SdsTimelineComponent\n */\n @Input() dayLabelTemplate: TemplateRef<any> | undefined = undefined;\n \n /**\n * A custom data function for the day labels. \n * This function takes a Date object as input and returns any custom data that will be available for the custom template\n *\n * @memberof SdsTimelineComponent\n */\n @Input() dayLabelCustomDataFn: TimelineCustomDateDataProvider | undefined = undefined;\n\n /**\n * The frequency of the ticks on the timeline.\n *\n * @type {TimelineTickFrequency}\n * @memberof SdsTimelineComponent\n */\n @Input() tickFrequency: TimelineTickFrequency = 'hourly';\n\n /**\n * The frequency of the hour labels on the timeline.\n *\n * @type {TimelineTickFrequency}\n * @memberof SdsTimelineComponent\n */\n @Input() hourLabelFrequency: TimelineTickFrequency = '3hrs';\n\n\n /**\n * The current zoom level of the timeline. In percent.\n *\n * @type {number}\n * @memberof SdsTimelineComponent\n */\n @Input() zoomPercent: number = 100;\n @Output() zoomPercentChange = new EventEmitter<number>();\n\n /**\n * Initial offset of the viewport in percent. This is used in scenarios \n * with multiple days when you want to show non-first day as defult.\n *\n * @type {number}\n * @memberof SdsTimelineComponent\n */\n @Input() viewOffsetPercent: number = 0;\n @Output() viewOffsetPercentChange = new EventEmitter<number>();\n\n /**\n * The maximum allowed zoom level of the timeline. In percent.\n *\n * @type {number}\n * @memberof SdsTimelineComponent\n */\n @Input() maxZoomPercent: number = 500;\n\n /**\n * Whether to show hour labels.\n *\n * @type {boolean}\n * @memberof SdsTimelineComponent\n */\n @Input() showHourLabels: boolean = true;\n\n /**\n * The CSS class to be applied to the hour labels.\n *\n * @type {string}\n * @memberof SdsTimelineComponent\n */\n @Input() hourLabelClass?: string;\n\n /**\n * Whether to show day labels. \n *\n * @type {boolean}\n * @memberof SdsTimelineComponent\n */\n @Input() showDayLabels: boolean = false;\n\n /**\n * The CSS class to be applied to the day labels.\n *\n * @type {string}\n * @memberof SdsTimelineComponent\n */\n @Input() dayLabelClass?: string;\n\n /**\n * Whether to show timeline. Useful for hiding the timeline when we only need header.\n *\n * @type {boolean}\n * @memberof SdsTimelineComponent\n */\n @Input() showTimeline: boolean = true; \n\n /**\n * The CSS class to be applied to the hour ticks.\n *\n * @type {string}\n * @memberof SdsTimelineComponent\n */\n @Input() hourTickClass?: string;\n\n /**\n * The height of the timeline. Default is 2rem.\n *\n * @type {string}\n * @memberof SdsTimelineComponent\n */\n @Input() timelineHeight: string = '2rem';\n\n /**\n * Whether to enable zoom and drag functionality.\n *\n * @type {boolean}\n * @memberof SdsTimelineComponent\n */\n @Input() enableZoomAndDrag: boolean = true;\n\n /**\n * Number of minutes added to start and stop to fit the data on the edges\n *\n * @type {number}\n * @memberof SdsTimelineComponent\n */\n @Input() offSetMinutes: number = 15;\n\n /**\n * The locales to be used for formatting the timeline.\n *\n * @type {(string | Array<string>)}\n * @memberof SdsTimelineComponent\n */\n @Input() locales?: string | Array<string>;\n\n /**\n * Control if those parts of segments (or whole segments) that fall into the Offset \n * period are displayed or not\n *\n * @type {boolean}\n * @memberof SdsTimelineComponent\n */\n @Input() cutOffset: boolean = false;\n\n /**\n * Sets default cursor, that should be shown when hovering over timeline component.\n * Default value is 'default'.\n *\n * @type {string}\n * @memberof SdsTimelineComponent\n */\n @Input() defaultCursor: string = \"default\";\n\n // protected\n hourTicks: TimelineTick[] = [];\n hourLabels: TimelineIntervalLabel[] = [];\n dayLabels: TimelineIntervalLabel[] = [];\n\n private _timelineService: SdsTimelineService = new SdsTimelineService(\n this.start,\n this.end,\n this.offSetMinutes,\n this.cutOffset\n );\n\n public presentationItems: TimelineItemPresentation[] = [];\n public presentationPointInTimeItems: TimelinePointInTimeItemPresentation[] = [];\n\n public isDragging = false;\n public initialDragX = 0;\n\n private viewOffsetPercentDragStart = 0;\n\n @ViewChild('viewport', { static: true }) _viewport: ElementRef | undefined;\n\n constructor() {}\n\n ngAfterViewInit(): void {\n this.generateTicks();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.start && this.end) {\n this._timelineService = new SdsTimelineService(\n this.start,\n this.end,\n this.offSetMinutes,\n this.cutOffset\n );\n this.generateTicks();\n this.generateInternalTimelineItems();\n }\n\n if (changes['start'] || changes['end'] || changes['offSetMinutes'] || changes['cutOffset']) {\n this._timelineService = new SdsTimelineService(\n this.start,\n this.end,\n this.offSetMinutes,\n this.cutOffset\n );\n this.generateTicks();\n this.generateInternalTimelineItems(); \n }\n\n if (changes['items']) {\n this.generateInternalTimelineItems();\n }\n\n if (changes['pointInTimeItems']) {\n this.generateInternalTimelinePointInTimeItems();\n }\n\n if (changes['zoomPercent']) {\n // this.viewOffsetPercent = (this.zoomPercent - 100) / -2;\n }\n\n if (changes['showDayLabels'] || changes['showHourLabels']) {\n this.generateTicks();\n } \n }\n\n ngOnInit(): void {}\n\n //#region mouse wheel zoom\n onScroll(event: WheelEvent): void {\n if (this.enableZoomAndDrag) {\n\n event.preventDefault();\n\n const delta = Math.sign(event.deltaY);\n const newZoomPercent = Math.min(\n Math.max(this.zoomPercent + -delta * 20, 100),\n this.maxZoomPercent\n );\n const deltaZoomPercent = newZoomPercent - this.zoomPercent;\n this.zoomPercent = newZoomPercent;\n this.zoomPercentChange.emit(this.zoomPercent);\n \n // get the relative position of the cursor on the viewport so we can zoom in into this position\n const x = event.clientX - this._viewport?.nativeElement.getBoundingClientRect().left;\n const cursorRelativePosition = x / this._viewport?.nativeElement.getBoundingClientRect().width;\n // this.viewOffsetPercent = this.viewOffsetPercent - deltaZoomPercent * cursorRelativePosition;\n\n this.constrainOffset(this.viewOffsetPercent - deltaZoomPercent * cursorRelativePosition);\n }\n }\n //#endregion\n\n //#region dragging\n \n public onDragStart(event: MouseEvent | TouchEvent): void {\n if (this.enableZoomAndDrag && this.zoomPercent > 100) {\n event.preventDefault();\n this.isDragging = true;\n this.viewOffsetPercentDragStart = this.viewOffsetPercent;\n\n if (event instanceof MouseEvent) {\n this.initialDragX = event.clientX;\n } else if (event instanceof TouchEvent) {\n this.initialDragX = event.touches[0].clientX;\n }\n }\n }\n\n @HostListener('window:mousemove', ['$event'])\n public onDragMove(event: MouseEvent): void {\n if (this.enableZoomAndDrag) {\n if (this.isDragging) {\n const currentX = event.clientX;\n this.moveElement(currentX);\n }\n }\n }\n\n @HostListener('window:touchmove', ['$event'])\n onDragMoveTouch(event: TouchEvent): void {\n if (this.enableZoomAndDrag) {\n if (this.isDragging) {\n const currentX = event.touches[0].clientX;\n this.moveElement(currentX);\n }\n }\n }\n\n @HostListener('window:mouseup', ['$event'])\n @HostListener('window:touchend', ['$event'])\n public onDragEnd(event: MouseEvent | TouchEvent): void {\n if (this.enableZoomAndDrag) {\n this.isDragging = false;\n }\n }\n\n private moveElement(currentX: number): void {\n const diff = currentX - this.initialDragX;\n if (this._viewport && this._viewport.nativeElement) {\n const diffInPercent = (diff / this._viewport?.nativeElement.getBoundingClientRect().width) * 100;\n // this.viewOffsetPercent = this.viewOffsetPercentDragStart + diffInPercent;\n this.constrainOffset(this.viewOffsetPercentDragStart + diffInPercent);\n }\n }\n\n //#endregion\n\n private constrainOffset(newOffset: number): void { \n if (this.zoomPercent + newOffset < 100) {\n newOffset = -this.zoomPercent + 100;\n }\n newOffset = Math.min(0, newOffset);\n if (newOffset != this.viewOffsetPercent) {\n this.viewOffsetPercent = newOffset;\n this.viewOffsetPercentChange.emit(this.viewOffsetPercent);\n }\n }\n\n private generateTicks(): void {\n this.hourTicks = this._timelineService.getHourTicks(this.tickFrequency);\n this.dayLabels = this._timelineService.getDayLabels(this.locales, this.dayLabelCustomDataFn);\n this.hourLabels = this._timelineService.getHourLabels(this.hourLabelFrequency);\n }\n\n private generateInternalTimelineItems(): void {\n const cuttOffStart = this.cutOffset ? this.start : new Date(this.start.getTime() - this.offSetMinutes * 60000);\n const cuttOffEnd = this.cutOffset ? this.end : new Date(this.end.getTime() + this.offSetMinutes * 60000);\n\n this.presentationItems = this.items\n .filter((item) => item.end < cuttOffStart || item.start > cuttOffEnd ? false : true)\n .map((item) => {\n const startTime = new Date(item.start).toLocaleTimeString(this.locales?? [], { hour: 'numeric', minute: '2-digit' });\n const endTime = new Date(item.end).toLocaleTimeString(this.locales?? [], { hour: 'numeric', minute: '2-digit' });\n const timeRange = `${startTime} - ${endTime}`;\n \n return {\n data: item.data,\n x: this._timelineService.getX(item.start),\n width: this._timelineService.getWidthFromTime(\n item.start,\n item.end\n ),\n hint: item.hint ?? timeRange,\n backgroundColor: item.backgroundColor,\n top: item.top ?? '50%',\n height: item.height ?? '60%',\n class: item.class,\n };\n });\n }\n\n\n private generateInternalTimelinePointInTimeItems(): void {\n const cuttOffStart = this.cutOffset ? this.start : new Date(this.start.getTime() - this.offSetMinutes * 60000);\n const cuttOffEnd = this.cutOffset ? this.end : new Date(this.end.getTime() + this.offSetMinutes * 60000);\n\n this.presentationPointInTimeItems = this.pointInTimeItems\n .filter((item) => item.date < cuttOffStart || item.date > cuttOffEnd ? false : true)\n .map((item) => {\n\n const timePointString = new Date(item.date).toLocaleTimeString(this.locales?? [], { hour: 'numeric', minute: '2-digit' });\n\n return {\n data: item.data,\n x: this._timelineService.getX(item.date),\n hint: item.hint ?? timePointString,\n top: item.top ?? '20%',\n height: item.height ?? '1rem',\n width: item.width ?? '1rem',\n class: item.class,\n backgroundColor: item.backgroundColor,\n };\n });\n }\n}\n","<ng-template #defaultItemTemplate let-item=\"item\">\n <div \n class=\"sds-timeline-item h-100\"\n [title]=\"item.hint\"\n >\n </div>\n</ng-template>\n\n<ng-template #defaultPointInTimeItemTemplate let-item=\"item\">\n <div \n class=\"sds-timeline-item h-100\"\n [title]=\"item.hint\"\n >\n </div>\n</ng-template>\n\n<ng-template #defaultDayLabelTemplate let-label=\"label\">\n {{label.label}}\n</ng-template>\n\n<div \n #viewport\n class=\"sds-timeline-viewport\"\n (wheel)=\"onScroll($event)\"\n\n (mousedown)=\"onDragStart($event)\"\n (touchstart)=\"onDragStart($event)\"\n >\n\n <div \n class=\"sds-timeline-container d-flex flex-column\"\n [style.left.%]=\"viewOffsetPercent\"\n [style.width.%]=\"zoomPercent\"\n [style.cursor]=\"isDragging ? 'ew-resize' : defaultCursor\"\n >\n\n <div\n *ngIf=\"showDayLabels\" \n class=\"sds-timeline-day-header\">\n\n <div \n *ngFor=\"let label of dayLabels\"\n class=\"sds-day-label\" \n [ngClass]=\"dayLabelClass ?? null\"\n [style.left.%]=\"label.x\"\n [style.width.%]=\"label.width\"\n >\n <ng-container \n [ngTemplateOutlet]=\"dayLabelTemplate ? dayLabelTemplate : defaultDayLabelTemplate\"\n [ngTemplateOutletContext]=\"{label: label}\">\n </ng-container> \n </div>\n </div>\n\n <div \n *ngIf=\"showHourLabels\" \n class=\"sds-timeline-hour-header\">\n\n <div \n *ngFor=\"let label of hourLabels;\"\n class=\"sds-hour-label\" \n [ngClass]=\"hourLabelClass ?? null\"\n [style.left.%]=\"label.x\"\n [style.width.rem]=\"1.2\"\n [ngStyle]=\"{'left': 'calc(' + label.x + '% - 0.6rem)'}\"\n >\n \n {{label.label}}\n \n </div>\n </div>\n\n <div \n *ngIf=\"showTimeline\"\n class=\"sds-timeline flex-grow-1\"\n [style.height]=\"timelineHeight\"\n >\n\n <div \n *ngFor=\"let tick of hourTicks\"\n class=\"sds-timeline-tick\" \n [ngClass]=\"hourTickClass ?? null\"\t\n [ngStyle]=\"tick.x == 100 ? {'left': 'calc(' + tick.x +'% - 1px)'} : {'left': 'calc(' + tick.x + '% - 0.5px)'}\"\n >\n </div>\n\n <div \n *ngFor=\"let item of presentationItems\"\n class=\"sds-timeline-item-container\"\n [ngClass]=\"item.class ?? null\"\n [ngStyle]=\"{\n 'width': 'max(' + item.width +'%, 1px)',\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \n }\"\n\n [style.left.%]=\"item.x\"\n [style.height]=\"item.height\"\n [style.backgroundColor]=\"item.backgroundColor\"\n >\n\n <ng-container \n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultItemTemplate\"\n [ngTemplateOutletContext]=\"{item: item}\">\n </ng-container> \n </div>\n\n\n <!-- [ngClass]=\"item.class\"\t -->\n <div *ngFor=\"let item of presentationPointInTimeItems\"\n class=`sds-timeline-point-in-time-item-container ${item.class}`\n [style.height]=\"item.height\"\n [style.width]=\"item.width\"\n [ngStyle]=\"{\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \n 'left': 'calc(' + item.x + '% - max( calc(' + item.width +'/2), 1px))',\n \n }\"\n [style.backgroundColor]=\"item.backgroundColor\"\n >\n\n <ng-container \n [ngTemplateOutlet]=\"pointInTimeTemplate ? pointInTimeTemplate : defaultPointInTimeItemTemplate\"\n [ngTemplateOutletContext]=\"{item: item}\">\n </ng-container> \n\n </div>\n\n </div>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spicainternational-ngx-sds-components-src-lib-timeline.mjs","sources":["../../../projects/ngx-sds-components/src/lib/timeline/services/timeline.service.ts","../../../projects/ngx-sds-components/src/lib/timeline/components/timeline.component.ts","../../../projects/ngx-sds-components/src/lib/timeline/components/timeline.component.html","../../../projects/ngx-sds-components/src/lib/timeline/spicainternational-ngx-sds-components-src-lib-timeline.ts"],"sourcesContent":["import { TimelineIntervalLabel, TimelineTick } from '../models/timeline.model';\nimport { TimelineCustomDateDataProvider, TimelineTickFrequency } from '../types/timeline.types';\n\nexport class SdsTimelineService {\n\n private startWithOffset: Date = new Date();\n private endWithOffset: Date = new Date();\n\n private start: Date = new Date();\n private end: Date = new Date();\n\n private cutOffset = true;\n\n\n private widthPercentPerMinute: number;\n\n private hourTicks: TimelineTick[] = [];\n\n \n constructor(start: Date, end: Date, offSetMinutes: number, cutOffset: boolean) {\n this.cutOffset = cutOffset;\n\n this.start = new Date(start);\n this.startWithOffset = new Date(start);\n this.startWithOffset.setMinutes(this.startWithOffset.getMinutes() - offSetMinutes);\n\n this.end = new Date(end);\n this.endWithOffset = new Date(end); \n this.endWithOffset.setMinutes(this.endWithOffset.getMinutes() + offSetMinutes);\n\n this.widthPercentPerMinute = (100 / this.diffInMinutes(this.startWithOffset, this.endWithOffset));\n\n this.initHourTicks();\n }\n\n public getX(time: Date): number {\n const trimmedTime = new Date(time);\n if (this.cutOffset) {\n if (trimmedTime < this.start) {\n trimmedTime.setTime(this.start.getTime());\n }\n if (trimmedTime > this.end) {\n trimmedTime.setTime(this.end.getTime());\n }\n }\n\n return this.diffInMinutes(this.startWithOffset, trimmedTime) * this.widthPercentPerMinute; \n }\n\n public getWidthFromMinutes(minutes: number): number {\n return minutes * this.widthPercentPerMinute;\n }\n\n public getWidthFromTime(start: Date, end: Date): number {\n const trimmedStart = new Date(start);\n if (this.cutOffset) {\n if (trimmedStart < this.start) {\n trimmedStart.setTime(this.start.getTime());\n } \n if (trimmedStart > this.end) {\n trimmedStart.setTime(this.end.getTime());\n }\n }\n\n const trimmedEnd = new Date(end);\n if (this.cutOffset) {\n if (trimmedEnd < this.start) {\n trimmedEnd.setTime(this.start.getTime());\n }\n if (trimmedEnd > this.end) {\n trimmedEnd.setTime(this.end.getTime());\n }\n }\n\n return this.getWidthFromMinutes(this.diffInMinutes(trimmedStart, trimmedEnd));\n }\n\n public getTick(time: Date): TimelineTick {\n return {\n date: new Date(time),\n x: this.getX(time),\n } \n }\n \n public getHourTicks(frequency: TimelineTickFrequency = 'hourly'): TimelineTick[] {\n return this.hourTicks.filter(tick => this.isValidFrequencyHour(tick.date.getHours(), frequency));\n }\n\n public getHourLabels(frequency: TimelineTickFrequency = 'hourly'): TimelineIntervalLabel[] {\n const hourLabels: TimelineIntervalLabel[] = [];\n\n const ticks = this.hourTicks.filter(tick => this.isValidFrequencyHour(tick.date.getHours(), frequency));\n ticks.forEach(tick => {\n let labelStartTime = new Date(tick.date);\n hourLabels.push(\n {\n x: this.getX(labelStartTime),\n width: 0,\n label: tick.date.getHours().toString(),\n date: new Date(labelStartTime),\n data: null\n });\n });\n return hourLabels;\n }\n\n public getDayLabels(\n locales: string | Array<string> | undefined, \n customDataFn: TimelineCustomDateDataProvider | undefined): TimelineIntervalLabel[] {\n const dayLabels = [];\n\n // get start date at the beginning of the day\n let startDate = new Date(this.startWithOffset);\n startDate.setHours(0, 0, 0, 0);\n\n // get end date at the end of the day\n let endDate = new Date(this.endWithOffset);\n endDate.setHours(23, 59, 59, 999);\n\n let currentDate = new Date(startDate);\n while (currentDate <= endDate) {\n let endOfCurrentDay = new Date(currentDate);\n endOfCurrentDay.setHours(23, 59, 59, 999);\n\n const dayLabelWidth = this.getWidthFromTime(currentDate, endOfCurrentDay);\n\n if (dayLabelWidth > 0) {\n dayLabels.push({\n // date: new Date(currentDate),\n x: this.getX(new Date(currentDate)),\n width: dayLabelWidth,\n label: currentDate.toLocaleDateString(locales ?? [], { weekday: 'long', day: 'numeric', month: 'long', year: 'numeric' }),\n date: new Date(currentDate),\n data: customDataFn ? customDataFn(new Date(currentDate)) : null\n });\n }\n currentDate.setDate(currentDate.getDate() + 1); \n }\n return dayLabels;\n } \n\n //#region Private Methods\n\n private isValidFrequencyHour(hours: number, frequency: TimelineTickFrequency) {\n\n if (frequency === 'hourly') {\n return true; // every tick is valid\n } \n if (frequency === '2hrs') {\n return hours % 2 === 0;\n } \n if (frequency === '3hrs') {\n return hours % 3 === 0;\n } \n if (frequency === '6hrs') {\n return hours % 6 === 0;\n }\n return false; // unsupported frequency\n }\n\n private diffInMinutes(start: Date, end: Date): number {\n return (end.getTime() - start.getTime()) / (1000 * 60);;\n }\n\n private roundHoursUp(time: Date): Date {\n \n let newTime = new Date(time);\n \n if (newTime.getMinutes() > 0 || newTime.getSeconds() > 0 || newTime.getMilliseconds() > 0) {\n newTime.setHours(newTime.getHours() + 1);\n }\n newTime.setMinutes(0, 0, 0);\n return newTime;\n }\n\n\n private roundHoursDown(time: Date) {\n let newTime = new Date(time);\n newTime.setMinutes(0, 0, 0);\n return newTime;\n }\n \n\n private initHourTicks(): void {\n this.hourTicks = [];\n\n // get first whole hour from start date\n let startHour = this.roundHoursUp(this.startWithOffset);\n\n // get last whole hour from end date\n let endHour = this.roundHoursDown(this.endWithOffset);\n\n let currentHour = new Date(startHour)\n while (currentHour <= endHour) {\n this.hourTicks.push(this.getTick(currentHour));\n currentHour.setHours(currentHour.getHours() + 1);\n }\n }\n \n //#endregion\n\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n HostListener,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n EventEmitter\n} from '@angular/core';\nimport { TimelineCustomDateDataProvider, TimelineTickFrequency } from '../types/timeline.types';\nimport { SdsTimelineService } from '../services/timeline.service';\nimport {\n TimelineIntervalLabel,\n TimelineItem,\n TimelineItemPresentation,\n TimelinePointInTimeItem,\n TimelinePointInTimeItemPresentation,\n TimelineTick,\n} from '../models/timeline.model';\nimport { NgIf, NgFor, NgStyle, NgTemplateOutlet, NgClass } from '@angular/common';\n\n@Component({\n selector: 'sds-timeline',\n templateUrl: './timeline.component.html',\n styleUrls: ['./timeline.component.scss'],\n standalone: true,\n imports: [\n NgIf,\n NgFor,\n NgStyle,\n NgClass,\n NgTemplateOutlet,\n ],\n})\nexport class SdsTimelineComponent implements OnInit, OnChanges, AfterViewInit {\n /**\n * The start date and time for the timeline.\n *\n * @type {Date}\n * @memberof SdsTimelineComponent\n */\n @Input() start: Date = new Date();\n\n /**\n * The end date and time for the timeline.\n *\n * @type {Date}\n * @memberof SdsTimelineComponent\n */\n @Input() end: Date = new Date();\n\n /**\n * The period based items to be displayed on the timeline. Specify data if you need \n * additional data for custom rendering of the items.\n *\n * @type {TimelineItem[]}\n * @memberof SdsTimelineComponent\n */\n @Input() items: TimelineItem[] = [];\n\n /**\n * Items to be displayed on the timeline at a specific point in time.\n * Specify data if you need additional data for custom rendering of the items.\n *\n * @type {TimelinePointInTimeItem[]}\n * @memberof SdsTimelineComponent\n */\n @Input() pointInTimeItems: TimelinePointInTimeItem[] = [];\n\n /**\n * The template to be used for custom rendering of the items.\n *\n * @type {(TemplateRef<any> | undefined)}\n * @memberof SdsTimelineComponent\n */\n @Input() itemTemplate: TemplateRef<any> | undefined = undefined;\n\n /**\n * The template to be used for custom rendering of the poin-in-time items.\n *\n * @type {(TemplateRef<any> | undefined)}\n * @memberof SdsTimelineComponent\n */\n @Input() pointInTimeTemplate: TemplateRef<any> | undefined = undefined;\n\n /**\n * The template to be used for custom rendering of the day labels.\n *\n * @type {(TemplateRef<any> | undefined)}\n * @memberof SdsTimelineComponent\n */\n @Input() dayLabelTemplate: TemplateRef<any> | undefined = undefined;\n \n /**\n * A custom data function for the day labels. \n * This function takes a Date object as input and returns any custom data that will be available for the custom template\n *\n * @memberof SdsTimelineComponent\n */\n @Input() dayLabelCustomDataFn: TimelineCustomDateDataProvider | undefined = undefined;\n\n /**\n * The frequency of the ticks on the timeline.\n *\n * @type {TimelineTickFrequency}\n * @memberof SdsTimelineComponent\n */\n @Input() tickFrequency: TimelineTickFrequency = 'hourly';\n\n /**\n * The frequency of the hour labels on the timeline.\n *\n * @type {TimelineTickFrequency}\n * @memberof SdsTimelineComponent\n */\n @Input() hourLabelFrequency: TimelineTickFrequency = '3hrs';\n\n\n /**\n * The current zoom level of the timeline. In percent.\n *\n * @type {number}\n * @memberof SdsTimelineComponent\n */\n @Input() zoomPercent: number = 100;\n @Output() zoomPercentChange = new EventEmitter<number>();\n\n /**\n * Initial offset of the viewport in percent. This is used in scenarios \n * with multiple days when you want to show non-first day as defult.\n *\n * @type {number}\n * @memberof SdsTimelineComponent\n */\n @Input() viewOffsetPercent: number = 0;\n @Output() viewOffsetPercentChange = new EventEmitter<number>();\n\n /**\n * The maximum allowed zoom level of the timeline. In percent.\n *\n * @type {number}\n * @memberof SdsTimelineComponent\n */\n @Input() maxZoomPercent: number = 500;\n\n /**\n * Whether to show hour labels.\n *\n * @type {boolean}\n * @memberof SdsTimelineComponent\n */\n @Input() showHourLabels: boolean = true;\n\n /**\n * The CSS class to be applied to the hour labels.\n *\n * @type {string}\n * @memberof SdsTimelineComponent\n */\n @Input() hourLabelClass?: string;\n\n /**\n * Whether to show day labels. \n *\n * @type {boolean}\n * @memberof SdsTimelineComponent\n */\n @Input() showDayLabels: boolean = false;\n\n /**\n * The CSS class to be applied to the day labels.\n *\n * @type {string}\n * @memberof SdsTimelineComponent\n */\n @Input() dayLabelClass?: string;\n\n /**\n * Whether to show timeline. Useful for hiding the timeline when we only need header.\n *\n * @type {boolean}\n * @memberof SdsTimelineComponent\n */\n @Input() showTimeline: boolean = true; \n\n /**\n * The CSS class to be applied to the hour ticks.\n *\n * @type {string}\n * @memberof SdsTimelineComponent\n */\n @Input() hourTickClass?: string;\n\n /**\n * The height of the timeline. Default is 2rem.\n *\n * @type {string}\n * @memberof SdsTimelineComponent\n */\n @Input() timelineHeight: string = '2rem';\n\n /**\n * Whether to enable zoom and drag functionality.\n *\n * @type {boolean}\n * @memberof SdsTimelineComponent\n */\n @Input() enableZoomAndDrag: boolean = true;\n\n /**\n * Number of minutes added to start and stop to fit the data on the edges\n *\n * @type {number}\n * @memberof SdsTimelineComponent\n */\n @Input() offSetMinutes: number = 15;\n\n /**\n * The locales to be used for formatting the timeline.\n *\n * @type {(string | Array<string>)}\n * @memberof SdsTimelineComponent\n */\n @Input() locales?: string | Array<string>;\n\n /**\n * Control if those parts of segments (or whole segments) that fall into the Offset \n * period are displayed or not\n *\n * @type {boolean}\n * @memberof SdsTimelineComponent\n */\n @Input() cutOffset: boolean = false;\n\n /**\n * Sets default cursor, that should be shown when hovering over timeline component.\n * Default value is 'default'.\n *\n * @type {string}\n * @memberof SdsTimelineComponent\n */\n @Input() defaultCursor: string = \"default\";\n\n // protected\n hourTicks: TimelineTick[] = [];\n hourLabels: TimelineIntervalLabel[] = [];\n dayLabels: TimelineIntervalLabel[] = [];\n\n private _timelineService: SdsTimelineService = new SdsTimelineService(\n this.start,\n this.end,\n this.offSetMinutes,\n this.cutOffset\n );\n\n public presentationItems: TimelineItemPresentation[] = [];\n public presentationPointInTimeItems: TimelinePointInTimeItemPresentation[] = [];\n\n public isDragging = false;\n public initialDragX = 0;\n\n private viewOffsetPercentDragStart = 0;\n\n @ViewChild('viewport', { static: true }) _viewport: ElementRef | undefined;\n\n constructor() {}\n\n ngAfterViewInit(): void {\n this.generateTicks();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.start && this.end) {\n this._timelineService = new SdsTimelineService(\n this.start,\n this.end,\n this.offSetMinutes,\n this.cutOffset\n );\n this.generateTicks();\n this.generateInternalTimelineItems();\n }\n\n if (changes['start'] || changes['end'] || changes['offSetMinutes'] || changes['cutOffset']) {\n this._timelineService = new SdsTimelineService(\n this.start,\n this.end,\n this.offSetMinutes,\n this.cutOffset\n );\n this.generateTicks();\n this.generateInternalTimelineItems(); \n }\n\n if (changes['items']) {\n this.generateInternalTimelineItems();\n }\n\n if (changes['pointInTimeItems']) {\n this.generateInternalTimelinePointInTimeItems();\n }\n\n if (changes['zoomPercent']) {\n // this.viewOffsetPercent = (this.zoomPercent - 100) / -2;\n }\n\n if (changes['showDayLabels'] || changes['showHourLabels']) {\n this.generateTicks();\n } \n }\n\n ngOnInit(): void {}\n\n //#region mouse wheel zoom\n onScroll(event: WheelEvent): void {\n if (this.enableZoomAndDrag) {\n\n event.preventDefault();\n\n const delta = Math.sign(event.deltaY);\n const newZoomPercent = Math.min(\n Math.max(this.zoomPercent + -delta * 20, 100),\n this.maxZoomPercent\n );\n const deltaZoomPercent = newZoomPercent - this.zoomPercent;\n this.zoomPercent = newZoomPercent;\n this.zoomPercentChange.emit(this.zoomPercent);\n \n // get the relative position of the cursor on the viewport so we can zoom in into this position\n const x = event.clientX - this._viewport?.nativeElement.getBoundingClientRect().left;\n const cursorRelativePosition = x / this._viewport?.nativeElement.getBoundingClientRect().width;\n // this.viewOffsetPercent = this.viewOffsetPercent - deltaZoomPercent * cursorRelativePosition;\n\n this.constrainOffset(this.viewOffsetPercent - deltaZoomPercent * cursorRelativePosition);\n }\n }\n //#endregion\n\n //#region dragging\n \n public onDragStart(event: MouseEvent | TouchEvent): void {\n if (this.enableZoomAndDrag && this.zoomPercent > 100) {\n event.preventDefault();\n this.isDragging = true;\n this.viewOffsetPercentDragStart = this.viewOffsetPercent;\n\n if (event instanceof MouseEvent) {\n this.initialDragX = event.clientX;\n } else if (event instanceof TouchEvent) {\n this.initialDragX = event.touches[0].clientX;\n }\n }\n }\n\n @HostListener('window:mousemove', ['$event'])\n public onDragMove(event: MouseEvent): void {\n if (this.enableZoomAndDrag) {\n if (this.isDragging) {\n const currentX = event.clientX;\n this.moveElement(currentX);\n }\n }\n }\n\n @HostListener('window:touchmove', ['$event'])\n onDragMoveTouch(event: TouchEvent): void {\n if (this.enableZoomAndDrag) {\n if (this.isDragging) {\n const currentX = event.touches[0].clientX;\n this.moveElement(currentX);\n }\n }\n }\n\n @HostListener('window:mouseup', ['$event'])\n @HostListener('window:touchend', ['$event'])\n public onDragEnd(event: MouseEvent | TouchEvent): void {\n if (this.enableZoomAndDrag) {\n this.isDragging = false;\n }\n }\n\n private moveElement(currentX: number): void {\n const diff = currentX - this.initialDragX;\n if (this._viewport && this._viewport.nativeElement) {\n const diffInPercent = (diff / this._viewport?.nativeElement.getBoundingClientRect().width) * 100;\n // this.viewOffsetPercent = this.viewOffsetPercentDragStart + diffInPercent;\n this.constrainOffset(this.viewOffsetPercentDragStart + diffInPercent);\n }\n }\n\n //#endregion\n\n private constrainOffset(newOffset: number): void { \n if (this.zoomPercent + newOffset < 100) {\n newOffset = -this.zoomPercent + 100;\n }\n newOffset = Math.min(0, newOffset);\n if (newOffset != this.viewOffsetPercent) {\n this.viewOffsetPercent = newOffset;\n this.viewOffsetPercentChange.emit(this.viewOffsetPercent);\n }\n }\n\n private generateTicks(): void {\n this.hourTicks = this._timelineService.getHourTicks(this.tickFrequency);\n this.dayLabels = this._timelineService.getDayLabels(this.locales, this.dayLabelCustomDataFn);\n this.hourLabels = this._timelineService.getHourLabels(this.hourLabelFrequency);\n }\n\n private generateInternalTimelineItems(): void {\n const cuttOffStart = this.cutOffset ? this.start : new Date(this.start.getTime() - this.offSetMinutes * 60000);\n const cuttOffEnd = this.cutOffset ? this.end : new Date(this.end.getTime() + this.offSetMinutes * 60000);\n\n this.presentationItems = this.items\n .filter((item) => item.end < cuttOffStart || item.start > cuttOffEnd ? false : true)\n .map((item) => {\n const startTime = new Date(item.start).toLocaleTimeString(this.locales?? [], { hour: 'numeric', minute: '2-digit' });\n const endTime = new Date(item.end).toLocaleTimeString(this.locales?? [], { hour: 'numeric', minute: '2-digit' });\n const timeRange = `${startTime} - ${endTime}`;\n \n return {\n data: item.data,\n x: this._timelineService.getX(item.start),\n width: this._timelineService.getWidthFromTime(\n item.start,\n item.end\n ),\n hint: item.hint ?? timeRange,\n backgroundColor: item.backgroundColor,\n top: item.top ?? '50%',\n height: item.height ?? '60%',\n class: item.class,\n };\n });\n }\n\n\n private generateInternalTimelinePointInTimeItems(): void {\n const cuttOffStart = this.cutOffset ? this.start : new Date(this.start.getTime() - this.offSetMinutes * 60000);\n const cuttOffEnd = this.cutOffset ? this.end : new Date(this.end.getTime() + this.offSetMinutes * 60000);\n\n this.presentationPointInTimeItems = this.pointInTimeItems\n .filter((item) => item.date < cuttOffStart || item.date > cuttOffEnd ? false : true)\n .map((item) => {\n\n const timePointString = new Date(item.date).toLocaleTimeString(this.locales?? [], { hour: 'numeric', minute: '2-digit' });\n\n return {\n data: item.data,\n x: this._timelineService.getX(item.date),\n hint: item.hint ?? timePointString,\n top: item.top ?? '20%',\n height: item.height ?? '1rem',\n width: item.width ?? '1rem',\n class: item.class,\n backgroundColor: item.backgroundColor,\n };\n });\n }\n}\n","<ng-template #defaultItemTemplate let-item=\"item\">\n <div \n class=\"sds-timeline-item h-100\"\n [title]=\"item.hint\"\n >\n </div>\n</ng-template>\n\n<ng-template #defaultPointInTimeItemTemplate let-item=\"item\">\n <div \n class=\"sds-timeline-item h-100\"\n [title]=\"item.hint\"\n >\n </div>\n</ng-template>\n\n<ng-template #defaultDayLabelTemplate let-label=\"label\">\n {{label.label}}\n</ng-template>\n\n<div \n #viewport\n class=\"sds-timeline-viewport\"\n (wheel)=\"onScroll($event)\"\n\n (mousedown)=\"onDragStart($event)\"\n (touchstart)=\"onDragStart($event)\"\n >\n\n <div \n class=\"sds-timeline-container d-flex flex-column\"\n [style.left.%]=\"viewOffsetPercent\"\n [style.width.%]=\"zoomPercent\"\n [style.cursor]=\"isDragging ? 'ew-resize' : defaultCursor\"\n >\n\n <div\n *ngIf=\"showDayLabels\" \n class=\"sds-timeline-day-header\">\n\n <div \n *ngFor=\"let label of dayLabels\"\n class=\"sds-day-label\" \n [ngClass]=\"dayLabelClass ?? null\"\n [style.left.%]=\"label.x\"\n [style.width.%]=\"label.width\"\n >\n <ng-container \n [ngTemplateOutlet]=\"dayLabelTemplate ? dayLabelTemplate : defaultDayLabelTemplate\"\n [ngTemplateOutletContext]=\"{label: label}\">\n </ng-container> \n </div>\n </div>\n\n <div \n *ngIf=\"showHourLabels\" \n class=\"sds-timeline-hour-header\">\n\n <div \n *ngFor=\"let label of hourLabels;\"\n class=\"sds-hour-label\" \n [ngClass]=\"hourLabelClass ?? null\"\n [style.left.%]=\"label.x\"\n [style.width.rem]=\"1.2\"\n [ngStyle]=\"{'left': 'calc(' + label.x + '% - 0.6rem)'}\"\n >\n \n {{label.label}}\n \n </div>\n </div>\n\n <div \n *ngIf=\"showTimeline\"\n class=\"sds-timeline flex-grow-1\"\n [style.height]=\"timelineHeight\"\n >\n\n <div \n *ngFor=\"let tick of hourTicks\"\n class=\"sds-timeline-tick\" \n [ngClass]=\"hourTickClass ?? null\"\t\n [ngStyle]=\"tick.x == 100 ? {'left': 'calc(' + tick.x +'% - 1px)'} : {'left': 'calc(' + tick.x + '% - 0.5px)'}\"\n >\n </div>\n\n <div \n *ngFor=\"let item of presentationItems\"\n class=\"sds-timeline-item-container\"\n [ngClass]=\"item.class ?? null\"\n [ngStyle]=\"{\n 'width': 'max(' + item.width +'%, 1px)',\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \n }\"\n\n [style.left.%]=\"item.x\"\n [style.height]=\"item.height\"\n [style.backgroundColor]=\"item.backgroundColor\"\n >\n\n <ng-container \n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultItemTemplate\"\n [ngTemplateOutletContext]=\"{item: item}\">\n </ng-container> \n </div>\n\n\n <!-- [ngClass]=\"item.class\"\t -->\n <div *ngFor=\"let item of presentationPointInTimeItems\"\n class=\"sds-timeline-point-in-time-item-container\"\n [ngClass]=\"item.class ?? null\"\n [style.height]=\"item.height\"\n [style.width]=\"item.width\"\n [ngStyle]=\"{\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \n 'left': 'calc(' + item.x + '% - max( calc(' + item.width +'/2), 1px))',\n \n }\"\n [style.backgroundColor]=\"item.backgroundColor\"\n >\n\n <ng-container \n [ngTemplateOutlet]=\"pointInTimeTemplate ? pointInTimeTemplate : defaultPointInTimeItemTemplate\"\n [ngTemplateOutletContext]=\"{item: item}\">\n </ng-container> \n\n </div>\n\n </div>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAGa,kBAAkB,CAAA;AAgB3B,IAAA,WAAA,CAAY,KAAW,EAAE,GAAS,EAAE,aAAqB,EAAE,SAAkB,EAAA;AAdrE,QAAA,IAAA,CAAA,eAAe,GAAS,IAAI,IAAI,EAAE;AAClC,QAAA,IAAA,CAAA,aAAa,GAAS,IAAI,IAAI,EAAE;AAEhC,QAAA,IAAA,CAAA,KAAK,GAAS,IAAI,IAAI,EAAE;AACxB,QAAA,IAAA,CAAA,GAAG,GAAS,IAAI,IAAI,EAAE;QAEtB,IAAS,CAAA,SAAA,GAAG,IAAI;QAKhB,IAAS,CAAA,SAAA,GAAmB,EAAE;AAIlC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;QAE1B,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AACtC,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,GAAG,aAAa,CAAC;QAElF,IAAI,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QACxB,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;AAClC,QAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,GAAG,aAAa,CAAC;AAE9E,QAAA,IAAI,CAAC,qBAAqB,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAEjG,IAAI,CAAC,aAAa,EAAE;;AAGjB,IAAA,IAAI,CAAC,IAAU,EAAA;AAClB,QAAA,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;AAClC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE;gBAC1B,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;;AAE7C,YAAA,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE;gBACxB,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;;;AAI/C,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,qBAAqB;;AAGtF,IAAA,mBAAmB,CAAC,OAAe,EAAA;AACtC,QAAA,OAAO,OAAO,GAAG,IAAI,CAAC,qBAAqB;;IAGxC,gBAAgB,CAAC,KAAW,EAAE,GAAS,EAAA;AAC1C,QAAA,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AACpC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE;gBAC3B,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;;AAE9C,YAAA,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE;gBACzB,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;;;AAIhD,QAAA,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE;gBACzB,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;;AAE5C,YAAA,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE;gBACvB,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;;;AAI9C,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;;AAG1E,IAAA,OAAO,CAAC,IAAU,EAAA;QACrB,OAAO;AACH,YAAA,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC;AACpB,YAAA,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;SACrB;;IAGE,YAAY,CAAC,YAAmC,QAAQ,EAAA;QAC3D,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC;;IAG7F,aAAa,CAAC,YAAmC,QAAQ,EAAA;QAC5D,MAAM,UAAU,GAA4B,EAAE;QAE9C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC;AACvG,QAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;YACjB,IAAI,cAAc,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACxC,UAAU,CAAC,IAAI,CACX;AACI,gBAAA,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;AAC5B,gBAAA,KAAK,EAAE,CAAC;gBACR,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;AACtC,gBAAA,IAAI,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC;AAC9B,gBAAA,IAAI,EAAE;AACT,aAAA,CAAC;AACV,SAAC,CAAC;AACF,QAAA,OAAO,UAAU;;IAGd,YAAY,CACf,OAA2C,EAC3C,YAAwD,EAAA;QACxD,MAAM,SAAS,GAAG,EAAE;;QAGpB,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;QAC9C,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;QAG9B,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;QAC1C,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AAEjC,QAAA,IAAI,WAAW,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;AACrC,QAAA,OAAO,WAAW,IAAI,OAAO,EAAE;AAC3B,YAAA,IAAI,eAAe,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC;YAC3C,eAAe,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;YAEzC,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC;AAEzE,YAAA,IAAI,aAAa,GAAG,CAAC,EAAE;gBACnB,SAAS,CAAC,IAAI,CAAC;;oBAEX,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;AACnC,oBAAA,KAAK,EAAE,aAAa;oBACpB,KAAK,EAAE,WAAW,CAAC,kBAAkB,CAAC,OAAO,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AACzH,oBAAA,IAAI,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC;AAC3B,oBAAA,IAAI,EAAE,YAAY,GAAG,YAAY,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG;AAC9D,iBAAA,CAAC;;YAEN,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;;AAElD,QAAA,OAAO,SAAS;;;IAKZ,oBAAoB,CAAC,KAAa,EAAE,SAAgC,EAAA;AAExE,QAAA,IAAI,SAAS,KAAK,QAAQ,EAAE;YACxB,OAAO,IAAI,CAAC;;AAEhB,QAAA,IAAI,SAAS,KAAK,MAAM,EAAE;AACtB,YAAA,OAAO,KAAK,GAAG,CAAC,KAAK,CAAC;;AAE1B,QAAA,IAAI,SAAS,KAAK,MAAM,EAAE;AACtB,YAAA,OAAO,KAAK,GAAG,CAAC,KAAK,CAAC;;AAE1B,QAAA,IAAI,SAAS,KAAK,MAAM,EAAE;AACtB,YAAA,OAAO,KAAK,GAAG,CAAC,KAAK,CAAC;;QAE1B,OAAO,KAAK,CAAC;;IAGT,aAAa,CAAC,KAAW,EAAE,GAAS,EAAA;AACxC,QAAA,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,GAAG,EAAE,CAAC;QAAC;;AAGnD,IAAA,YAAY,CAAC,IAAU,EAAA;AAE3B,QAAA,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;QAE5B,IAAI,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,EAAE;YACvF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;;QAE5C,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3B,QAAA,OAAO,OAAO;;AAIV,IAAA,cAAc,CAAC,IAAU,EAAA;AAC7B,QAAA,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;QAC5B,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3B,QAAA,OAAO,OAAO;;IAIV,aAAa,GAAA;AACjB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;QAGnB,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC;;QAGvD,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC;AAErD,QAAA,IAAI,WAAW,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;AACrC,QAAA,OAAO,WAAW,IAAI,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC9C,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;;;AAM3D;;MClKY,oBAAoB,CAAA;AAuO7B,IAAA,WAAA,GAAA;AAtOA;;;;;AAKG;AACM,QAAA,IAAA,CAAA,KAAK,GAAS,IAAI,IAAI,EAAE;AAEjC;;;;;AAKG;AACM,QAAA,IAAA,CAAA,GAAG,GAAS,IAAI,IAAI,EAAE;AAE/B;;;;;;AAMG;QACM,IAAK,CAAA,KAAA,GAAmB,EAAE;AAEnC;;;;;;AAMG;QACM,IAAgB,CAAA,gBAAA,GAA8B,EAAE;AAEzD;;;;;AAKG;QACM,IAAY,CAAA,YAAA,GAAiC,SAAS;AAE/D;;;;;AAKG;QACM,IAAmB,CAAA,mBAAA,GAAiC,SAAS;AAEtE;;;;;AAKG;QACM,IAAgB,CAAA,gBAAA,GAAiC,SAAS;AAEnE;;;;;AAKG;QACM,IAAoB,CAAA,oBAAA,GAA+C,SAAS;AAErF;;;;;AAKG;QACM,IAAa,CAAA,aAAA,GAA0B,QAAQ;AAExD;;;;;AAKG;QACM,IAAkB,CAAA,kBAAA,GAA0B,MAAM;AAG3D;;;;;AAKG;QACM,IAAW,CAAA,WAAA,GAAW,GAAG;AACxB,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAU;AAExD;;;;;;AAMG;QACM,IAAiB,CAAA,iBAAA,GAAW,CAAC;AAC5B,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,YAAY,EAAU;AAE9D;;;;;AAKG;QACM,IAAc,CAAA,cAAA,GAAW,GAAG;AAErC;;;;;AAKG;QACM,IAAc,CAAA,cAAA,GAAY,IAAI;AAUvC;;;;;AAKG;QACM,IAAa,CAAA,aAAA,GAAY,KAAK;AAUvC;;;;;AAKG;QACM,IAAY,CAAA,YAAA,GAAY,IAAI;AAUrC;;;;;AAKG;QACM,IAAc,CAAA,cAAA,GAAW,MAAM;AAExC;;;;;AAKG;QACM,IAAiB,CAAA,iBAAA,GAAY,IAAI;AAE1C;;;;;AAKG;QACM,IAAa,CAAA,aAAA,GAAW,EAAE;AAUnC;;;;;;AAMG;QACM,IAAS,CAAA,SAAA,GAAY,KAAK;AAEnC;;;;;;AAMG;QACM,IAAa,CAAA,aAAA,GAAW,SAAS;;QAG1C,IAAS,CAAA,SAAA,GAAmB,EAAE;QAC9B,IAAU,CAAA,UAAA,GAA4B,EAAE;QACxC,IAAS,CAAA,SAAA,GAA4B,EAAE;QAE/B,IAAgB,CAAA,gBAAA,GAAuB,IAAI,kBAAkB,CACjE,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,SAAS,CACjB;QAEM,IAAiB,CAAA,iBAAA,GAA+B,EAAE;QAClD,IAA4B,CAAA,4BAAA,GAA0C,EAAE;QAExE,IAAU,CAAA,UAAA,GAAG,KAAK;QAClB,IAAY,CAAA,YAAA,GAAG,CAAC;QAEf,IAA0B,CAAA,0BAAA,GAAG,CAAC;;IAMtC,eAAe,GAAA;QACX,IAAI,CAAC,aAAa,EAAE;;AAGxB,IAAA,WAAW,CAAC,OAAsB,EAAA;QAC9B,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE;YACxB,IAAI,CAAC,gBAAgB,GAAG,IAAI,kBAAkB,CAC1C,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,SAAS,CACjB;YACD,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,6BAA6B,EAAE;;QAGxC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;YACxF,IAAI,CAAC,gBAAgB,GAAG,IAAI,kBAAkB,CAC1C,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,SAAS,CACjB;YACD,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,6BAA6B,EAAE;;AAGxC,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAClB,IAAI,CAAC,6BAA6B,EAAE;;AAGxC,QAAA,IAAI,OAAO,CAAC,kBAAkB,CAAC,EAAE;YAC7B,IAAI,CAAC,wCAAwC,EAAE;;AAGnD,QAAA,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE;;;QAI5B,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,gBAAgB,CAAC,EAAE;YACvD,IAAI,CAAC,aAAa,EAAE;;;AAI5B,IAAA,QAAQ;;AAGR,IAAA,QAAQ,CAAC,KAAiB,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAExB,KAAK,CAAC,cAAc,EAAE;YAEtB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACrC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAC3B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,KAAK,GAAG,EAAE,EAAE,GAAG,CAAC,EAC7C,IAAI,CAAC,cAAc,CACtB;AACD,YAAA,MAAM,gBAAgB,GAAG,cAAc,GAAG,IAAI,CAAC,WAAW;AAC1D,YAAA,IAAI,CAAC,WAAW,GAAG,cAAc;YACjC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;;AAG7C,YAAA,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,qBAAqB,EAAE,CAAC,IAAI;AACpF,YAAA,MAAM,sBAAsB,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;;YAG9F,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,GAAG,sBAAsB,CAAC;;;;;AAOzF,IAAA,WAAW,CAAC,KAA8B,EAAA;QAC7C,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,WAAW,GAAG,GAAG,EAAE;YAClD,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,iBAAiB;AAExD,YAAA,IAAI,KAAK,YAAY,UAAU,EAAE;AAC7B,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO;;AAC9B,iBAAA,IAAI,KAAK,YAAY,UAAU,EAAE;gBACpC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;;;;AAMjD,IAAA,UAAU,CAAC,KAAiB,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,gBAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO;AAC9B,gBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;;;;AAMtC,IAAA,eAAe,CAAC,KAAiB,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;AACzC,gBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;;;;AAO/B,IAAA,SAAS,CAAC,KAA8B,EAAA;AAC3C,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;;AAIvB,IAAA,WAAW,CAAC,QAAgB,EAAA;AAChC,QAAA,MAAM,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,YAAY;QACzC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;AAChD,YAAA,MAAM,aAAa,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,IAAI,GAAG;;YAEhG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,0BAA0B,GAAG,aAAa,CAAC;;;;AAMrE,IAAA,eAAe,CAAC,SAAiB,EAAA;QACrC,IAAI,IAAI,CAAC,WAAW,GAAG,SAAS,GAAG,GAAG,EAAE;AACpC,YAAA,SAAS,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG;;QAEvC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC;AAClC,QAAA,IAAI,SAAS,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACrC,YAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS;YAClC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;;;IAIzD,aAAa,GAAA;AACjB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AACvE,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC;AAC5F,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC;;IAG1E,6BAA6B,GAAA;AACjC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC9G,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAExG,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;aACzB,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,GAAG,YAAY,IAAI,IAAI,CAAC,KAAK,GAAG,UAAU,GAAG,KAAK,GAAG,IAAI;AAClF,aAAA,GAAG,CAAC,CAAC,IAAI,KAAI;AACV,YAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,IAAG,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACpH,YAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,IAAG,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAChH,YAAA,MAAM,SAAS,GAAG,CAAA,EAAG,SAAS,CAAM,GAAA,EAAA,OAAO,EAAE;YAE7C,OAAO;gBACH,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACzC,gBAAA,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CACzC,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,CACX;AACD,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,SAAS;gBAC5B,eAAe,EAAE,IAAI,CAAC,eAAe;AACrC,gBAAA,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK;AACtB,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;gBAC5B,KAAK,EAAE,IAAI,CAAC,KAAK;aACpB;AACL,SAAC,CAAC;;IAIF,wCAAwC,GAAA;AAC5C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC9G,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAExG,QAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;aACpC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,YAAY,IAAI,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,KAAK,GAAG,IAAI;AAClF,aAAA,GAAG,CAAC,CAAC,IAAI,KAAI;AAEV,YAAA,MAAM,eAAe,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,IAAG,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YAEzH,OAAO;gBACH,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACxC,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,eAAe;AAClC,gBAAA,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK;AACtB,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,MAAM;AAC7B,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,MAAM;gBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,eAAe,EAAE,IAAI,CAAC,eAAe;aACxC;AACL,SAAC,CAAC;;+GAxaD,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,GAAA,EAAA,KAAA,EAAA,KAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,yBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvCjC,y0IAmIA,EAAA,MAAA,EAAA,CAAA,sgDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDnGQ,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,KAAK,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACL,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAbhC,SAAS;+BACI,cAAc,EAAA,UAAA,EAGZ,IAAI,EACP,OAAA,EAAA;wBACL,IAAI;wBACJ,KAAK;wBACL,OAAO;wBACP,OAAO;wBACP,gBAAgB;AACnB,qBAAA,EAAA,QAAA,EAAA,y0IAAA,EAAA,MAAA,EAAA,CAAA,sgDAAA,CAAA,EAAA;wDASQ,KAAK,EAAA,CAAA;sBAAb;gBAQQ,GAAG,EAAA,CAAA;sBAAX;gBASQ,KAAK,EAAA,CAAA;sBAAb;gBASQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAQQ,YAAY,EAAA,CAAA;sBAApB;gBAQQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAQQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAQQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAQQ,aAAa,EAAA,CAAA;sBAArB;gBAQQ,kBAAkB,EAAA,CAAA;sBAA1B;gBASQ,WAAW,EAAA,CAAA;sBAAnB;gBACS,iBAAiB,EAAA,CAAA;sBAA1B;gBASQ,iBAAiB,EAAA,CAAA;sBAAzB;gBACS,uBAAuB,EAAA,CAAA;sBAAhC;gBAQQ,cAAc,EAAA,CAAA;sBAAtB;gBAQQ,cAAc,EAAA,CAAA;sBAAtB;gBAQQ,cAAc,EAAA,CAAA;sBAAtB;gBAQQ,aAAa,EAAA,CAAA;sBAArB;gBAQQ,aAAa,EAAA,CAAA;sBAArB;gBAQQ,YAAY,EAAA,CAAA;sBAApB;gBAQQ,aAAa,EAAA,CAAA;sBAArB;gBAQQ,cAAc,EAAA,CAAA;sBAAtB;gBAQQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAQQ,aAAa,EAAA,CAAA;sBAArB;gBAQQ,OAAO,EAAA,CAAA;sBAAf;gBASQ,SAAS,EAAA,CAAA;sBAAjB;gBASQ,aAAa,EAAA,CAAA;sBAArB;gBAsBwC,SAAS,EAAA,CAAA;sBAAjD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBA4FhC,UAAU,EAAA,CAAA;sBADhB,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC;gBAW5C,eAAe,EAAA,CAAA;sBADd,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC;gBAYrC,SAAS,EAAA,CAAA;sBAFf,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;sBACzC,YAAY;uBAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC;;;AE5X/C;;AAEG;;;;"}
|