@dsivd/prestations-ng 16.0.0-beta1 → 16.0.0-beta10
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/CHANGELOG.md +7 -0
- package/ESLINT_MIGRATION_GUIDE.md +39 -13
- package/UPGRADING_V16.md +434 -26
- package/dsivd-prestations-ng-v16.0.0-beta10.tgz +0 -0
- package/esm2020/abstract-page-component.mjs +3 -3
- package/esm2020/directives/currency-formatter.directive.mjs +3 -3
- package/esm2020/directives/formatter.module.mjs +4 -4
- package/esm2020/directives/iban-formatter.directive.mjs +3 -3
- package/esm2020/directives/ide-formatter.directive.mjs +3 -3
- package/esm2020/directives/ndc-formatter.directive.mjs +3 -3
- package/esm2020/foehn-address/foehn-address.module.mjs +4 -4
- package/esm2020/foehn-address/foehn-display-address.component.mjs +3 -3
- package/esm2020/foehn-address/foehn-input-address.component.mjs +3 -3
- package/esm2020/foehn-address/foehn-input-foreign-locality.component.mjs +3 -3
- package/esm2020/foehn-address/foehn-input-foreign-street.component.mjs +3 -3
- package/esm2020/foehn-agenda/foehn-agenda-navigation/foehn-agenda-navigation.component.mjs +3 -3
- package/esm2020/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.mjs +3 -3
- package/esm2020/foehn-agenda/foehn-agenda.component.mjs +3 -3
- package/esm2020/foehn-agenda/foehn-agenda.module.mjs +4 -4
- package/esm2020/foehn-autocomplete/foehn-autocomplete.component.mjs +3 -3
- package/esm2020/foehn-autocomplete/foehn-autocomplete.module.mjs +4 -4
- package/esm2020/foehn-boolean/foehn-boolean-checkbox.component.mjs +3 -3
- package/esm2020/foehn-boolean/foehn-boolean-radio.component.mjs +3 -3
- package/esm2020/foehn-boolean/foehn-boolean.module.mjs +4 -4
- package/esm2020/foehn-breadcrumb/breadcrumb-event.service.mjs +3 -3
- package/esm2020/foehn-breadcrumb/foehn-breadcrumb.component.mjs +3 -3
- package/esm2020/foehn-breadcrumb/foehn-breadcrumb.module.mjs +4 -4
- package/esm2020/foehn-checkables/foehn-checkable-group.component.mjs +3 -3
- package/esm2020/foehn-checkables/foehn-checkables.module.mjs +4 -4
- package/esm2020/foehn-checkables/foehn-checkbox.component.mjs +3 -3
- package/esm2020/foehn-checkables/foehn-radio.component.mjs +3 -3
- package/esm2020/foehn-checkables/foehn-select.component.mjs +3 -3
- package/esm2020/foehn-confirm-modal/foehn-confirm-modal.component.mjs +3 -3
- package/esm2020/foehn-confirm-modal/foehn-confirm-modal.module.mjs +4 -4
- package/esm2020/foehn-confirm-modal/foehn-confirm-modal.service.mjs +3 -3
- package/esm2020/foehn-date-picker/foehn-date-picker.component.mjs +9 -7
- package/esm2020/foehn-date-picker/foehn-date-picker.module.mjs +4 -4
- package/esm2020/foehn-date-picker-button/foehn-date-picker-button.component.mjs +3 -3
- package/esm2020/foehn-date-picker-button/foehn-date-picker-button.module.mjs +4 -4
- package/esm2020/foehn-debug-summary/foehn-debug-summary.component.mjs +3 -3
- package/esm2020/foehn-debug-summary/foehn-debug-summary.component.module.mjs +4 -4
- package/esm2020/foehn-decision-electronique/foehn-decision-electronique.component.mjs +3 -3
- package/esm2020/foehn-decision-electronique/foehn-decision-electronique.module.mjs +4 -4
- package/esm2020/foehn-footer/foehn-footer.component.mjs +3 -3
- package/esm2020/foehn-footer/foehn-footer.module.mjs +4 -4
- package/esm2020/foehn-form/foehn-form.component.mjs +3 -3
- package/esm2020/foehn-form/foehn-form.module.mjs +4 -4
- package/esm2020/foehn-form/register-ng-model.service.mjs +3 -3
- package/esm2020/foehn-growl/foehn-growl.component.mjs +3 -3
- package/esm2020/foehn-growl/foehn-growl.module.mjs +4 -4
- package/esm2020/foehn-growl/growl-broker.service.mjs +3 -3
- package/esm2020/foehn-header/foehn-header.component.mjs +3 -3
- package/esm2020/foehn-header/foehn-header.module.mjs +4 -4
- package/esm2020/foehn-header/foehn-skip-link.component.mjs +3 -3
- package/esm2020/foehn-help-modal/foehn-help-modal.component.mjs +3 -3
- package/esm2020/foehn-help-modal/foehn-help-modal.module.mjs +4 -4
- package/esm2020/foehn-icons/abstract-icon-component.mjs +3 -3
- package/esm2020/foehn-icons/foehn-icon-calendar.component.mjs +3 -3
- package/esm2020/foehn-icons/foehn-icon-check-square-o.component.mjs +3 -3
- package/esm2020/foehn-icons/foehn-icon-check.component.mjs +3 -3
- package/esm2020/foehn-icons/foehn-icon-chevron-down.component.mjs +3 -3
- package/esm2020/foehn-icons/foehn-icon-chevron-left.component.mjs +3 -3
- package/esm2020/foehn-icons/foehn-icon-chevron-right.component.mjs +3 -3
- package/esm2020/foehn-icons/foehn-icon-chevron-up.component.mjs +3 -3
- package/esm2020/foehn-icons/foehn-icon-clock.component.mjs +3 -3
- package/esm2020/foehn-icons/foehn-icon-comment-dots.component.mjs +3 -3
- package/esm2020/foehn-icons/foehn-icon-edit.component.mjs +3 -3
- package/esm2020/foehn-icons/foehn-icon-external-link-alt.component.mjs +3 -3
- package/esm2020/foehn-icons/foehn-icon-file-pdf.component.mjs +3 -3
- package/esm2020/foehn-icons/foehn-icon-info-circle.component.mjs +3 -3
- package/esm2020/foehn-icons/foehn-icon-lock.component.mjs +3 -3
- package/esm2020/foehn-icons/foehn-icon-map-marker.component.mjs +3 -3
- package/esm2020/foehn-icons/foehn-icon-minus-circle.component.mjs +3 -3
- package/esm2020/foehn-icons/foehn-icon-plus-circle.component.mjs +3 -3
- package/esm2020/foehn-icons/foehn-icon-plus-square.component.mjs +3 -3
- package/esm2020/foehn-icons/foehn-icon-search.component.mjs +3 -3
- package/esm2020/foehn-icons/foehn-icon-times.component.mjs +3 -3
- package/esm2020/foehn-icons/foehn-icon-trash-alt.component.mjs +3 -3
- package/esm2020/foehn-icons/foehn-icon-unlock-alt.component.mjs +3 -3
- package/esm2020/foehn-icons/foehn-icons.module.mjs +4 -4
- package/esm2020/foehn-input/foehn-input-email.component.mjs +3 -3
- package/esm2020/foehn-input/foehn-input-hidden.component.mjs +3 -3
- package/esm2020/foehn-input/foehn-input-number.component.mjs +3 -3
- package/esm2020/foehn-input/foehn-input-password.component.mjs +3 -3
- package/esm2020/foehn-input/foehn-input-phone.component.mjs +3 -3
- package/esm2020/foehn-input/foehn-input-string.component.mjs +3 -3
- package/esm2020/foehn-input/foehn-input-text.component.mjs +3 -3
- package/esm2020/foehn-input/foehn-input-textarea.component.mjs +3 -3
- package/esm2020/foehn-input/foehn-input.component.mjs +3 -3
- package/esm2020/foehn-input/foehn-input.module.mjs +4 -4
- package/esm2020/foehn-input-date/foehn-input-date.component.mjs +3 -3
- package/esm2020/foehn-input-date-time/foehn-input-date-time.component.mjs +3 -3
- package/esm2020/foehn-input-time/foehn-input-time.component.mjs +3 -3
- package/esm2020/foehn-list/foehn-list.component.mjs +3 -3
- package/esm2020/foehn-list/foehn-list.module.mjs +4 -4
- package/esm2020/foehn-menu-prestation/abstract-list-item-detail-page.component.mjs +3 -3
- package/esm2020/foehn-menu-prestation/abstract-menu-page.component.mjs +3 -3
- package/esm2020/foehn-menu-prestation/abstract-page-from-menu.component.mjs +3 -3
- package/esm2020/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.mjs +3 -3
- package/esm2020/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.mjs +3 -3
- package/esm2020/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.mjs +3 -3
- package/esm2020/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.mjs +3 -3
- package/esm2020/foehn-menu-prestation/foehn-menu-prestation.module.mjs +4 -4
- package/esm2020/foehn-misc/foehn-abbr.component.mjs +3 -3
- package/esm2020/foehn-misc/foehn-misc.module.mjs +4 -4
- package/esm2020/foehn-modal/foehn-modal.component.mjs +3 -3
- package/esm2020/foehn-modal/foehn-modal.module.mjs +4 -4
- package/esm2020/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.mjs +3 -3
- package/esm2020/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.module.mjs +4 -4
- package/esm2020/foehn-nav13/foehn-input-nav13.component.mjs +3 -3
- package/esm2020/foehn-nav13/foehn-input-nav13.module.mjs +4 -4
- package/esm2020/foehn-navigation/foehn-navigation.component.mjs +3 -3
- package/esm2020/foehn-navigation/foehn-navigation.module.mjs +4 -4
- package/esm2020/foehn-navigation/foehn-navigation.service.mjs +3 -3
- package/esm2020/foehn-notfound/foehn-notfound.component.mjs +3 -3
- package/esm2020/foehn-notfound/foehn-notfound.module.mjs +4 -4
- package/esm2020/foehn-page/foehn-page-counter.component.mjs +3 -3
- package/esm2020/foehn-page/foehn-page-modal.component.mjs +3 -3
- package/esm2020/foehn-page/foehn-page-modal.service.mjs +3 -3
- package/esm2020/foehn-page/foehn-page.component.mjs +3 -3
- package/esm2020/foehn-page/foehn-page.module.mjs +4 -4
- package/esm2020/foehn-page/foehn-page.service.mjs +3 -3
- package/esm2020/foehn-recap-section/foehn-recap-section.component.mjs +3 -3
- package/esm2020/foehn-recap-section/foehn-recap-section.module.mjs +4 -4
- package/esm2020/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component.mjs +3 -3
- package/esm2020/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.module.mjs +4 -4
- package/esm2020/foehn-status-progress-bar/foehn-status-progress-bar.component.mjs +3 -3
- package/esm2020/foehn-status-progress-bar/foehn-status-progress-bar.module.mjs +4 -4
- package/esm2020/foehn-table/foehn-table.component.mjs +3 -3
- package/esm2020/foehn-table/foehn-table.module.mjs +4 -4
- package/esm2020/foehn-upload/abstract-foehn-uploader.component.mjs +5 -7
- package/esm2020/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.mjs +3 -3
- package/esm2020/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.mjs +6 -6
- package/esm2020/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.mjs +4 -4
- package/esm2020/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.mjs +6 -6
- package/esm2020/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.mjs +4 -4
- package/esm2020/foehn-upload/foehn-multi-upload/multi-upload.service.mjs +3 -3
- package/esm2020/foehn-upload/foehn-multi-upload/pending-upload.service.mjs +3 -3
- package/esm2020/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.mjs +3 -3
- package/esm2020/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.mjs +4 -4
- package/esm2020/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.mjs +3 -3
- package/esm2020/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.module.mjs +4 -4
- package/esm2020/foehn-upload/foehn-upload-progress-bar/upload-progress.service.mjs +3 -3
- package/esm2020/foehn-upload/uploader.helper.mjs +24 -35
- package/esm2020/foehn-user-connected-as/foehn-user-connected-as.component.mjs +3 -3
- package/esm2020/foehn-user-connected-as/foehn-user-connected-as.module.mjs +4 -4
- package/esm2020/foehn-validation-alert-summary/foehn-validation-alert-summary.component.mjs +3 -3
- package/esm2020/foehn-validation-alert-summary/foehn-validation-alert-summary.module.mjs +4 -4
- package/esm2020/foehn-validation-alerts/foehn-validation-alerts.component.mjs +3 -3
- package/esm2020/foehn-validation-alerts/foehn-validation-alerts.module.mjs +4 -4
- package/esm2020/gesdem/gesdem-error-handler.service.mjs +3 -3
- package/esm2020/gesdem/gesdem-event.service.mjs +3 -3
- package/esm2020/gesdem/gesdem-handler.service.mjs +3 -3
- package/esm2020/gesdem/gesdem-loader.guard.mjs +3 -3
- package/esm2020/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.mjs +3 -3
- package/esm2020/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.mjs +3 -3
- package/esm2020/gesdem-action-recovery/gesdem-action-recovery.module.mjs +4 -4
- package/esm2020/gesdem-action-recovery/gesdem-action-recovery.service.mjs +3 -3
- package/esm2020/gesdem-confirmation/gesdem-confirmation.component.mjs +3 -3
- package/esm2020/gesdem-confirmation/gesdem-confirmation.module.mjs +4 -4
- package/esm2020/gesdem-error/gesdem-error.component.mjs +3 -3
- package/esm2020/gesdem-error/gesdem-error.module.mjs +4 -4
- package/esm2020/pipes/currency.pipe.mjs +3 -3
- package/esm2020/pipes/date.pipe.mjs +3 -3
- package/esm2020/pipes/formatIde.pipe.mjs +3 -3
- package/esm2020/pipes/pipes.module.mjs +4 -4
- package/esm2020/prestations-ng-core.module.mjs +4 -4
- package/esm2020/sdk-appinfo/application-info.mjs +1 -1
- package/esm2020/sdk-appinfo/application-info.service.mjs +3 -3
- package/esm2020/sdk-currency/currency.helper.mjs +3 -3
- package/esm2020/sdk-date/date.helper.mjs +3 -3
- package/esm2020/sdk-dictionary/sdk-dictionary.module.mjs +4 -4
- package/esm2020/sdk-dictionary/sdk-dictionary.pipe.mjs +3 -3
- package/esm2020/sdk-dictionary/sdk-dictionary.service.mjs +3 -3
- package/esm2020/sdk-epayment/sdk-epayment.component.mjs +3 -3
- package/esm2020/sdk-epayment/sdk-epayment.module.mjs +4 -4
- package/esm2020/sdk-epayment/sdk-epayment.service.mjs +3 -3
- package/esm2020/sdk-recaptcha/grecaptcha/grecaptcha.component.mjs +3 -3
- package/esm2020/sdk-recaptcha/recaptcha.service.mjs +3 -3
- package/esm2020/sdk-recaptcha/sdk-recaptcha.component.mjs +3 -3
- package/esm2020/sdk-recaptcha/sdk-recaptcha.module.mjs +4 -4
- package/esm2020/sdk-redirect/iam-expired-interceptor.service.mjs +3 -3
- package/esm2020/sdk-redirect/redirect.component.mjs +3 -3
- package/esm2020/sdk-redirect/sdk-redirect.module.mjs +4 -4
- package/esm2020/sdk-session-info/session-info-with-application.service.mjs +3 -3
- package/esm2020/sdk-session-info/session-info.service.mjs +3 -3
- package/esm2020/sdk-statistics/sdk-statistics.service.mjs +3 -3
- package/esm2020/sdk-support-alert/support-alert-container.component.mjs +3 -3
- package/esm2020/sdk-support-alert/support-alert.component.mjs +3 -3
- package/esm2020/sdk-support-alert/support-alert.module.mjs +4 -4
- package/esm2020/sdk-support-alert/support-alert.service.mjs +3 -3
- package/esm2020/supported-browser.mjs +2 -2
- package/esm2020/validation/validation-handler.service.mjs +3 -3
- package/fesm2015/dsivd-prestations-ng.mjs +641 -652
- package/fesm2015/dsivd-prestations-ng.mjs.map +1 -1
- package/fesm2020/dsivd-prestations-ng.mjs +641 -652
- package/fesm2020/dsivd-prestations-ng.mjs.map +1 -1
- package/foehn-upload/abstract-foehn-uploader.component.d.ts +1 -2
- package/foehn-upload/uploader.helper.d.ts +6 -7
- package/package.json +12 -8
- package/sdk-appinfo/application-info.d.ts +3 -1
- package/dsivd-prestations-ng-v16.0.0-beta1.tgz +0 -0
|
@@ -65,9 +65,9 @@ export class FoehnBreadcrumbComponent {
|
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
-
FoehnBreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.
|
|
69
|
-
FoehnBreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.
|
|
70
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.
|
|
68
|
+
FoehnBreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnBreadcrumbComponent, deps: [{ token: i1.BreadcrumbEventService }, { token: i2.Router }, { token: i3.FoehnConfirmModalService }, { token: i4.SessionInfo }], target: i0.ɵɵFactoryTarget.Component });
|
|
69
|
+
FoehnBreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: FoehnBreadcrumbComponent, selector: "foehn-breadcrumb", inputs: { breadcrumbItems: "breadcrumbItems", currentNav: "currentNav", confirmLeavingAlert: "confirmLeavingAlert" }, ngImport: i0, template: "<nav\n id=\"page-breadcrumb\"\n aria-label=\"Fil d'Ariane\"\n *ngIf=\"breadcrumbItems.length > 0\"\n>\n <h2 class=\"sr-only\">Fil d'Ariane</h2>\n <ol class=\"breadcrumb breadcrumb--override\">\n <li class=\"breadcrumb-item\" *ngFor=\"let item of breadcrumbItems\">\n <a\n *ngIf=\"item.url || item.routerLink\"\n (click)=\"$event.preventDefault(); confirmAndLeave(item)\"\n href=\"#\"\n >\n {{ item.label }}\n </a>\n <ng-container *ngIf=\"!item.url && !item.routerLink\">\n {{ item.label }}\n </ng-container>\n </li>\n <li class=\"sr-only\" aria-current=\"page\" *ngIf=\"currentNav\">\n {{ currentNav }}\n </li>\n </ol>\n</nav>\n", styles: [".breadcrumb--override{margin:0;padding:.75rem 0 2rem}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnBreadcrumbComponent, decorators: [{
|
|
71
71
|
type: Component,
|
|
72
72
|
args: [{ selector: 'foehn-breadcrumb', template: "<nav\n id=\"page-breadcrumb\"\n aria-label=\"Fil d'Ariane\"\n *ngIf=\"breadcrumbItems.length > 0\"\n>\n <h2 class=\"sr-only\">Fil d'Ariane</h2>\n <ol class=\"breadcrumb breadcrumb--override\">\n <li class=\"breadcrumb-item\" *ngFor=\"let item of breadcrumbItems\">\n <a\n *ngIf=\"item.url || item.routerLink\"\n (click)=\"$event.preventDefault(); confirmAndLeave(item)\"\n href=\"#\"\n >\n {{ item.label }}\n </a>\n <ng-container *ngIf=\"!item.url && !item.routerLink\">\n {{ item.label }}\n </ng-container>\n </li>\n <li class=\"sr-only\" aria-current=\"page\" *ngIf=\"currentNav\">\n {{ currentNav }}\n </li>\n </ol>\n</nav>\n", styles: [".breadcrumb--override{margin:0;padding:.75rem 0 2rem}\n"] }]
|
|
73
73
|
}], ctorParameters: function () { return [{ type: i1.BreadcrumbEventService }, { type: i2.Router }, { type: i3.FoehnConfirmModalService }, { type: i4.SessionInfo }]; }, propDecorators: { breadcrumbItems: [{
|
|
@@ -5,10 +5,10 @@ import { FoehnBreadcrumbComponent } from './foehn-breadcrumb.component';
|
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export class FoehnBreadcrumbModule {
|
|
7
7
|
}
|
|
8
|
-
FoehnBreadcrumbModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.
|
|
9
|
-
FoehnBreadcrumbModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.
|
|
10
|
-
FoehnBreadcrumbModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.
|
|
8
|
+
FoehnBreadcrumbModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnBreadcrumbModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
+
FoehnBreadcrumbModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: FoehnBreadcrumbModule, declarations: [FoehnBreadcrumbComponent], imports: [CommonModule, RouterModule], exports: [FoehnBreadcrumbComponent] });
|
|
10
|
+
FoehnBreadcrumbModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnBreadcrumbModule, imports: [CommonModule, RouterModule] });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnBreadcrumbModule, decorators: [{
|
|
12
12
|
type: NgModule,
|
|
13
13
|
args: [{
|
|
14
14
|
imports: [CommonModule, RouterModule],
|
|
@@ -272,9 +272,9 @@ export class FoehnCheckableGroupComponent extends FoehnInputComponent {
|
|
|
272
272
|
}
|
|
273
273
|
}
|
|
274
274
|
}
|
|
275
|
-
FoehnCheckableGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.
|
|
276
|
-
FoehnCheckableGroupComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.
|
|
277
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.
|
|
275
|
+
FoehnCheckableGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnCheckableGroupComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
276
|
+
FoehnCheckableGroupComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: FoehnCheckableGroupComponent, inputs: { elements: "elements", elementsUrl: "elementsUrl", elementValue: "elementValue", elementLabel: "elementLabel", elementValueIdentity: "elementValueIdentity", elementDisabled: "elementDisabled", elementGroup: "elementGroup", defaultElementValue: "defaultElementValue" }, outputs: { elementsLoaded: "elementsLoaded" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
|
|
277
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnCheckableGroupComponent, decorators: [{
|
|
278
278
|
type: Directive
|
|
279
279
|
}], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { elements: [{
|
|
280
280
|
type: Input
|
|
@@ -14,8 +14,8 @@ import { FoehnSelectComponent } from './foehn-select.component';
|
|
|
14
14
|
import * as i0 from "@angular/core";
|
|
15
15
|
export class FoehnCheckablesModule {
|
|
16
16
|
}
|
|
17
|
-
FoehnCheckablesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.
|
|
18
|
-
FoehnCheckablesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.
|
|
17
|
+
FoehnCheckablesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnCheckablesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
18
|
+
FoehnCheckablesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: FoehnCheckablesModule, declarations: [FoehnCheckboxComponent,
|
|
19
19
|
FoehnRadioComponent,
|
|
20
20
|
FoehnSelectComponent], imports: [CommonModule,
|
|
21
21
|
FormsModule,
|
|
@@ -29,7 +29,7 @@ FoehnCheckablesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", v
|
|
|
29
29
|
FoehnRadioComponent,
|
|
30
30
|
FoehnSelectComponent,
|
|
31
31
|
FoehnAutocompleteModule] });
|
|
32
|
-
FoehnCheckablesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.
|
|
32
|
+
FoehnCheckablesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnCheckablesModule, imports: [CommonModule,
|
|
33
33
|
FormsModule,
|
|
34
34
|
FoehnIconsModule,
|
|
35
35
|
HttpClientModule,
|
|
@@ -38,7 +38,7 @@ FoehnCheckablesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", v
|
|
|
38
38
|
SdkDictionaryModule,
|
|
39
39
|
FoehnHelpModalModule,
|
|
40
40
|
FoehnModalModule, FoehnAutocompleteModule] });
|
|
41
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnCheckablesModule, decorators: [{
|
|
42
42
|
type: NgModule,
|
|
43
43
|
args: [{
|
|
44
44
|
imports: [
|
|
@@ -16,15 +16,15 @@ export class FoehnCheckboxComponent extends FoehnCheckableGroupComponent {
|
|
|
16
16
|
this.multiple = true;
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
-
FoehnCheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.
|
|
20
|
-
FoehnCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.
|
|
19
|
+
FoehnCheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnCheckboxComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
20
|
+
FoehnCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: FoehnCheckboxComponent, selector: "foehn-checkbox", providers: [
|
|
21
21
|
{
|
|
22
22
|
provide: FoehnInputComponent,
|
|
23
23
|
useExisting: forwardRef(() => FoehnCheckboxComponent),
|
|
24
24
|
multi: true
|
|
25
25
|
}
|
|
26
26
|
], usesInheritance: true, ngImport: i0, template: "<div\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset class=\"form-group\" [attr.aria-describedby]=\"getDescribedBy()\">\n <div class=\"d-flex justify-content-between\">\n <legend\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </legend>\n <foehn-help-modal\n class=\"removePaddingButton\"\n *ngIf=\"!!helpModal\"\n [modalContent]=\"helpModal\"\n ></foehn-help-modal>\n </div>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <div *ngIf=\"!elements\">Chargement...</div>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <div\n *ngFor=\"\n let elementsGroup of groupedElements;\n let groupIndex = index\n \"\n >\n <!-- TODO remove aria-hidden and make this accessible -->\n <div\n *ngIf=\"!!elementsGroup.groupTitle\"\n class=\"pt-2 font-weight-bold\"\n [attr.id]=\"'checkGroup_' + groupIndex\"\n aria-hidden=\"true\"\n >\n {{ elementsGroup.groupTitle | fromDictionary }}\n </div>\n\n <div\n *ngFor=\"let element of elementsGroup.elements; let i = index\"\n [class.disabled]=\"getDisabled(element)\"\n class=\"form-check\"\n >\n <input\n class=\"form-check-input\"\n type=\"checkbox\"\n [value]=\"getValue(element)\"\n [ngModel]=\"isElementSelected(element)\"\n (ngModelChange)=\"onCheck(element, $event)\"\n [name]=\"buildChildName('' + groupIndex + '_' + i)\"\n [attr.name]=\"buildChildName('' + groupIndex + '_' + i)\"\n [attr.id]=\"buildChildId() + groupIndex + '_' + i\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.disabled]=\"getDisabled(element) ? 'disabled' : null\"\n [attr.autocomplete]=\"getAutoComplete()\"\n (change)=\"handleChange(model)\"\n />\n <label\n class=\"form-check-label\"\n [for]=\"buildChildId() + groupIndex + '_' + i\"\n [innerHTML]=\"getLabel(element)\"\n ></label>\n </div>\n </div>\n </fieldset>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "component", type: i4.FoehnHelpModalComponent, selector: "foehn-help-modal", inputs: ["modalContent"] }, { kind: "pipe", type: i5.SdkDictionaryPipe, name: "fromDictionary" }] });
|
|
27
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnCheckboxComponent, decorators: [{
|
|
28
28
|
type: Component,
|
|
29
29
|
args: [{ selector: 'foehn-checkbox', providers: [
|
|
30
30
|
{
|
|
@@ -43,15 +43,15 @@ export class FoehnRadioComponent extends FoehnCheckableGroupComponent {
|
|
|
43
43
|
return this.getValue(element);
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
|
-
FoehnRadioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.
|
|
47
|
-
FoehnRadioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.
|
|
46
|
+
FoehnRadioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnRadioComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
47
|
+
FoehnRadioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: FoehnRadioComponent, selector: "foehn-radio", providers: [
|
|
48
48
|
{
|
|
49
49
|
provide: FoehnInputComponent,
|
|
50
50
|
useExisting: forwardRef(() => FoehnRadioComponent),
|
|
51
51
|
multi: true
|
|
52
52
|
}
|
|
53
53
|
], usesInheritance: true, ngImport: i0, template: "<div\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset class=\"form-group\" [attr.aria-describedby]=\"getDescribedBy()\">\n <div class=\"d-flex justify-content-between\">\n <legend\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </legend>\n <foehn-help-modal\n class=\"removePaddingButton\"\n *ngIf=\"!!helpModal\"\n [modalContent]=\"helpModal\"\n ></foehn-help-modal>\n </div>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <div *ngIf=\"!elements\">Chargement...</div>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n <div\n *ngFor=\"\n let elementsGroup of groupedElements;\n let groupIndex = index\n \"\n >\n <!-- TODO remove aria-hidden and make this accessible -->\n <div\n *ngIf=\"!!elementsGroup.groupTitle\"\n class=\"pt-2 font-weight-bold\"\n [attr.id]=\"'checkGroup_' + groupIndex\"\n aria-hidden=\"true\"\n >\n {{ elementsGroup.groupTitle | fromDictionary }}\n </div>\n <div\n *ngFor=\"let element of elementsGroup.elements; let i = index\"\n [class.disabled]=\"getDisabled(element)\"\n class=\"form-check\"\n >\n <input\n class=\"form-check-input\"\n type=\"radio\"\n [value]=\"getValueOrObject(element)\"\n [ngModel]=\"inputValue\"\n (ngModelChange)=\"onCheck(element, $event)\"\n [name]=\"buildChildName('' + groupIndex + '_' + i)\"\n [attr.name]=\"buildChildName('' + groupIndex + '_' + i)\"\n [attr.id]=\"buildChildId() + groupIndex + '_' + i\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.disabled]=\"getDisabled(element) ? 'disabled' : null\"\n [attr.autocomplete]=\"getAutoComplete()\"\n (change)=\"handleChange(getValue(element))\"\n />\n <label\n class=\"form-check-label\"\n [for]=\"buildChildId() + groupIndex + '_' + i\"\n [innerHTML]=\"getLabel(element)\"\n ></label>\n </div>\n </div>\n </fieldset>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "component", type: i4.FoehnHelpModalComponent, selector: "foehn-help-modal", inputs: ["modalContent"] }, { kind: "pipe", type: i5.SdkDictionaryPipe, name: "fromDictionary" }] });
|
|
54
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.
|
|
54
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnRadioComponent, decorators: [{
|
|
55
55
|
type: Component,
|
|
56
56
|
args: [{ selector: 'foehn-radio', providers: [
|
|
57
57
|
{
|
|
@@ -28,15 +28,15 @@ export class FoehnSelectComponent extends FoehnCheckableGroupComponent {
|
|
|
28
28
|
return this.areValuesEquals(value1, value2);
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
FoehnSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.
|
|
32
|
-
FoehnSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.
|
|
31
|
+
FoehnSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnSelectComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
+
FoehnSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: FoehnSelectComponent, selector: "foehn-select", inputs: { multiple: "multiple", noSelectionLabel: "noSelectionLabel" }, providers: [
|
|
33
33
|
{
|
|
34
34
|
provide: FoehnInputComponent,
|
|
35
35
|
useExisting: forwardRef(() => FoehnSelectComponent),
|
|
36
36
|
multi: true
|
|
37
37
|
}
|
|
38
38
|
], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <div class=\"d-flex justify-content-between\">\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n <foehn-help-modal\n class=\"removePaddingButton\"\n *ngIf=\"!!helpModal\"\n [modalContent]=\"helpModal\"\n ></foehn-help-modal>\n </div>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <div *ngIf=\"!elements\">Chargement...</div>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <select\n *ngIf=\"!multiple\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [attr.autocomplete]=\"getAutoComplete()\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option *ngIf=\"!required\" [ngValue]=\"null\">\n {{ noSelectionLabel }}\n </option>\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.disabled]=\"getDisabled(element) ? 'disabled' : null\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n <select\n *ngIf=\"multiple\"\n multiple\n [attr.aria-multiselectable]=\"true\"\n [class.is-invalid]=\"hasErrorsToDisplay() || hasInheritErrorFromParent()\"\n class=\"form-control\"\n [name]=\"name || label\"\n [attr.id]=\"buildChildId()\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-required]=\"required || null\"\n [ngModel]=\"model\"\n (ngModelChange)=\"updateNgModel($event)\"\n [compareWith]=\"compareFn.bind(this)\"\n (change)=\"handleChange(model)\"\n #entryComponent\n ngDefaultControl\n >\n <option\n *ngFor=\"let element of elements\"\n [ngValue]=\"getValue(element)\"\n [attr.selected]=\"isElementSelected(element) ? 'selected' : null\"\n [attr.aria-selected]=\"isElementSelected(element)\"\n >\n {{ getLabel(element) }}\n </option>\n </select>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "component", type: i4.FoehnHelpModalComponent, selector: "foehn-help-modal", inputs: ["modalContent"] }, { kind: "pipe", type: i5.SdkDictionaryPipe, name: "fromDictionary" }] });
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnSelectComponent, decorators: [{
|
|
40
40
|
type: Component,
|
|
41
41
|
args: [{ selector: 'foehn-select', providers: [
|
|
42
42
|
{
|
|
@@ -31,9 +31,9 @@ export class FoehnConfirmModalComponent {
|
|
|
31
31
|
this.isVisible = status;
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
-
FoehnConfirmModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.
|
|
35
|
-
FoehnConfirmModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.
|
|
36
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.
|
|
34
|
+
FoehnConfirmModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnConfirmModalComponent, deps: [{ token: i1.FoehnConfirmModalService }], target: i0.ɵɵFactoryTarget.Component });
|
|
35
|
+
FoehnConfirmModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: FoehnConfirmModalComponent, selector: "foehn-confirm-modal", ngImport: i0, template: "<foehn-modal\n [modalHeaderText]=\"modalContent.title || 'Confirmation'\"\n modalSize=\"modal-md\"\n [isModalVisible]=\"isVisible\"\n (isModalVisibleChange)=\"updateVisibilityStatus($event)\"\n [closeable]=\"\n modalContent.closeable !== null && modalContent.closeable !== undefined\n ? modalContent.closeable\n : true\n \"\n *ngIf=\"content | async as modalContent\"\n>\n <p [innerHTML]=\"modalContent.htmlContent\"></p>\n\n <div modal-footer>\n <div class=\"d-flex justify-content-end mr-2 mb-2 mt-2\">\n <button\n id=\"confirmButton\"\n class=\"btn btn-secondary\"\n (click)=\"cancel()\"\n >\n {{ modalContent.cancelButtonLabel || 'Annuler' }}\n </button>\n <button\n id=\"cancelButton\"\n class=\"btn btn-primary ml-3\"\n (click)=\"ok()\"\n >\n {{ modalContent.okButtonLabel || 'Confirmer' }}\n </button>\n </div>\n </div>\n</foehn-modal>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FoehnModalComponent, selector: "foehn-modal", inputs: ["id", "name", "modalSize", "modalBodyText", "modalHeaderText", "closeable", "modalTriggerHtmlElement", "isModalVisible"], outputs: ["isModalVisibleChange"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnConfirmModalComponent, decorators: [{
|
|
37
37
|
type: Component,
|
|
38
38
|
args: [{ selector: 'foehn-confirm-modal', template: "<foehn-modal\n [modalHeaderText]=\"modalContent.title || 'Confirmation'\"\n modalSize=\"modal-md\"\n [isModalVisible]=\"isVisible\"\n (isModalVisibleChange)=\"updateVisibilityStatus($event)\"\n [closeable]=\"\n modalContent.closeable !== null && modalContent.closeable !== undefined\n ? modalContent.closeable\n : true\n \"\n *ngIf=\"content | async as modalContent\"\n>\n <p [innerHTML]=\"modalContent.htmlContent\"></p>\n\n <div modal-footer>\n <div class=\"d-flex justify-content-end mr-2 mb-2 mt-2\">\n <button\n id=\"confirmButton\"\n class=\"btn btn-secondary\"\n (click)=\"cancel()\"\n >\n {{ modalContent.cancelButtonLabel || 'Annuler' }}\n </button>\n <button\n id=\"cancelButton\"\n class=\"btn btn-primary ml-3\"\n (click)=\"ok()\"\n >\n {{ modalContent.okButtonLabel || 'Confirmer' }}\n </button>\n </div>\n </div>\n</foehn-modal>\n" }]
|
|
39
39
|
}], ctorParameters: function () { return [{ type: i1.FoehnConfirmModalService }]; } });
|
|
@@ -5,10 +5,10 @@ import { FoehnConfirmModalComponent } from './foehn-confirm-modal.component';
|
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export class FoehnConfirmModalModule {
|
|
7
7
|
}
|
|
8
|
-
FoehnConfirmModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.
|
|
9
|
-
FoehnConfirmModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.
|
|
10
|
-
FoehnConfirmModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.
|
|
8
|
+
FoehnConfirmModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnConfirmModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
+
FoehnConfirmModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: FoehnConfirmModalModule, declarations: [FoehnConfirmModalComponent], imports: [CommonModule, FoehnModalModule], exports: [FoehnConfirmModalComponent] });
|
|
10
|
+
FoehnConfirmModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnConfirmModalModule, imports: [CommonModule, FoehnModalModule] });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnConfirmModalModule, decorators: [{
|
|
12
12
|
type: NgModule,
|
|
13
13
|
args: [{
|
|
14
14
|
imports: [CommonModule, FoehnModalModule],
|
|
@@ -42,9 +42,9 @@ export class FoehnConfirmModalService {
|
|
|
42
42
|
this.rejectCallback = null;
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
|
-
FoehnConfirmModalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.
|
|
46
|
-
FoehnConfirmModalService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.
|
|
47
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.
|
|
45
|
+
FoehnConfirmModalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnConfirmModalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
46
|
+
FoehnConfirmModalService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnConfirmModalService, providedIn: 'root' });
|
|
47
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnConfirmModalService, decorators: [{
|
|
48
48
|
type: Injectable,
|
|
49
49
|
args: [{
|
|
50
50
|
providedIn: 'root'
|
|
@@ -150,9 +150,11 @@ export class FoehnDatePickerComponent {
|
|
|
150
150
|
return date.isSame(this.selectedDate);
|
|
151
151
|
}
|
|
152
152
|
handleUserInput(date) {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
153
|
+
if (this.isDateInRange(date)) {
|
|
154
|
+
const dateAsArray = this.getDateAsArray(date);
|
|
155
|
+
this.userInput.next(dateAsArray);
|
|
156
|
+
this.updateNgModel(dateAsArray);
|
|
157
|
+
}
|
|
156
158
|
}
|
|
157
159
|
previousMonth() {
|
|
158
160
|
this.weeks = this.datePickerHelper.getPreviousWeeksOfMonth();
|
|
@@ -340,9 +342,9 @@ export class FoehnDatePickerComponent {
|
|
|
340
342
|
return false;
|
|
341
343
|
}
|
|
342
344
|
}
|
|
343
|
-
FoehnDatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.
|
|
344
|
-
FoehnDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.
|
|
345
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.
|
|
345
|
+
FoehnDatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnDatePickerComponent, deps: [{ token: i1.SdkDictionaryService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
346
|
+
FoehnDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: FoehnDatePickerComponent, selector: "foehn-date-picker", inputs: { id: "id", name: "name", minYear: "minYear", maxYear: "maxYear", minDate: "minDate", maxDate: "maxDate", datepickerTriggerHtmlElement: "datepickerTriggerHtmlElement", closeable: "closeable", isDatepickerVisible: "isDatepickerVisible", model: "model" }, outputs: { modelChange: "modelChange", userInput: "userInput", isDatepickerVisibleChange: "isDatepickerVisibleChange" }, host: { listeners: { "keyup": "handleKeyboardUpEvent($event)", "keydown": "handleKeyboardDownEvent($event)" }, properties: { "attr.id": "this.hostId" } }, viewQueries: [{ propertyName: "daysButtonsElemRef", predicate: ["dayButtonElemRef"], descendants: true }], ngImport: i0, template: "<div\n [id]=\"buildId('datepicker_wrapper')\"\n class=\"datepicker_wrapper\"\n *ngIf=\"isDatepickerVisible\"\n [cdkTrapFocus]=\"!!datepickerTriggerHtmlElement\"\n tabindex=\"-1\"\n role=\"application\"\n [attr.aria-label]=\"\n 'foehn-date-picker.container.aria-label' | fromDictionary\n \"\n>\n <button\n *ngIf=\"closeable\"\n (click)=\"isDatepickerVisible = false\"\n type=\"button\"\n class=\"btn close\"\n [attr.aria-label]=\"\n 'foehn-date-picker.close-button.aria-label' | fromDictionary\n \"\n [id]=\"buildId('closeButton')\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <div\n [id]=\"buildId('datepicker_header')\"\n class=\"d-flex justify-content-between datepicker_header\"\n >\n <ng-container *ngIf=\"currentMonthYear | async as monthYear\">\n <button\n [id]=\"buildId('previous-month')\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"previousMonth()\"\n [attr.disabled]=\"isPreviousMonthDisabled(monthYear)\"\n >\n <foehn-icon-chevron-left\n [title]=\"\n 'foehn-date-picker.previous-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-left>\n </button>\n <span\n [id]=\"buildId('month-year-label')\"\n aria-live=\"polite\"\n class=\"sr-only\"\n >\n {{\n 'foehn-date-picker.screen-reader.actual-month-displayed'\n | fromDictionary\n }}\n {{ getMonthAsReadable(monthYear.month) }} {{ monthYear.year }}\n </span>\n <foehn-select\n [id]=\"buildId('month-input')\"\n class=\"align-self-center month-input\"\n [label]=\"\n 'foehn-date-picker.screen-reader.month-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"monthListItem\"\n [model]=\"monthYear.month\"\n [required]=\"true\"\n (userInput)=\"userInputMonth($event)\"\n ></foehn-select>\n <foehn-select\n [id]=\"buildId('year-input')\"\n class=\"align-self-center\"\n [label]=\"\n 'foehn-date-picker.screen-reader.year-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"yearListItem\"\n [model]=\"monthYear.year\"\n [required]=\"true\"\n (userInput)=\"userInputYear($event)\"\n ></foehn-select>\n <button\n [id]=\"buildId('next-month')\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"nextMonth()\"\n [attr.disabled]=\"isNextMonthDisabled(monthYear)\"\n >\n <foehn-icon-chevron-right\n [title]=\"\n 'foehn-date-picker.next-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-right>\n </button>\n </ng-container>\n </div>\n <table\n [id]=\"buildId('datepicker_table')\"\n role=\"grid\"\n (focusin)=\"onDaysFocusin()\"\n (focusout)=\"onDaysFocusout()\"\n >\n <thead role=\"presentation\" aria-hidden=\"true\">\n <tr role=\"row\">\n <th\n scope=\"col\"\n role=\"columnheader\"\n *ngFor=\"let weekday of weekDays\"\n >\n <foehn-abbr\n [text]=\"weekday.substr(0, 2)\"\n [title]=\"weekday\"\n ></foehn-abbr>\n </th>\n </tr>\n </thead>\n <tbody role=\"presentation\">\n <tr role=\"row\" *ngFor=\"let week of weeks; let indexRow = index\">\n <td\n role=\"gridcell\"\n *ngFor=\"let dayOfWeek of week; let indexColumn = index\"\n >\n <button\n class=\"btn w-100\"\n #dayButtonElemRef\n [hidden]=\"!dayOfWeek.isCurrentMonth\"\n [id]=\"buildId('day_' + indexRow + '_' + indexColumn)\"\n [tabindex]=\"getDayTabIndex(dayOfWeek)\"\n [class.btn-info]=\"!isToday(dayOfWeek.date)\"\n [class.btn-secondary]=\"isToday(dayOfWeek.date)\"\n [class.btn-danger]=\"isSelected(dayOfWeek.date)\"\n [attr.aria-label]=\"\n weekDays[indexColumn] +\n ' ' +\n dayOfWeek.dateAsReadable\n \"\n [attr.data-is-today]=\"isToday(dayOfWeek.date)\"\n [attr.data-is-selected]=\"isSelected(dayOfWeek.date)\"\n [attr.data-row-index]=\"indexRow\"\n [attr.data-column-index]=\"indexColumn\"\n [attr.day-number]=\"dayOfWeek.dayOfMonth\"\n [attr.disabled]=\"getDayDisabledAttribute(dayOfWeek)\"\n (click)=\"handleUserInput(dayOfWeek.date)\"\n >\n {{ dayOfWeek.dayOfMonth }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n", styles: [":host ::ng-deep .btn-link .svg-inline--fa{color:#000!important}.datepicker_header{margin-bottom:5px}.datepicker_wrapper{max-width:245px;padding:5px;border:1px solid #dfdfdf;background-color:#fff}.datepicker_wrapper .h4{margin-bottom:0}.datepicker_wrapper thead th{text-align:center;width:15%}.datepicker_wrapper .btn{padding:2px 4px}.datepicker_wrapper button.close{position:absolute;right:-14px;top:-18px;background-color:#fff;border:1px solid #dfdfdf;border-radius:50%;width:30px;height:30px;opacity:1}.datepicker_wrapper .month-input{width:50%;margin-right:5px}:host ::ng-deep foehn-select select.form-control{padding:0;margin:0;height:30px}:host ::ng-deep foehn-select .form-group{margin:0}.btn-info:disabled{cursor:not-allowed}.datepicker-nav-month-btn:disabled{opacity:.25}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FoehnIconChevronLeftComponent, selector: "foehn-icon-chevron-left" }, { kind: "component", type: i4.FoehnIconChevronRightComponent, selector: "foehn-icon-chevron-right" }, { kind: "directive", type: i5.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: i6.FoehnSelectComponent, selector: "foehn-select", inputs: ["multiple", "noSelectionLabel"] }, { kind: "component", type: i7.FoehnAbbrComponent, selector: "foehn-abbr", inputs: ["title", "text"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.SdkDictionaryPipe, name: "fromDictionary" }] });
|
|
347
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnDatePickerComponent, decorators: [{
|
|
346
348
|
type: Component,
|
|
347
349
|
args: [{ selector: 'foehn-date-picker', template: "<div\n [id]=\"buildId('datepicker_wrapper')\"\n class=\"datepicker_wrapper\"\n *ngIf=\"isDatepickerVisible\"\n [cdkTrapFocus]=\"!!datepickerTriggerHtmlElement\"\n tabindex=\"-1\"\n role=\"application\"\n [attr.aria-label]=\"\n 'foehn-date-picker.container.aria-label' | fromDictionary\n \"\n>\n <button\n *ngIf=\"closeable\"\n (click)=\"isDatepickerVisible = false\"\n type=\"button\"\n class=\"btn close\"\n [attr.aria-label]=\"\n 'foehn-date-picker.close-button.aria-label' | fromDictionary\n \"\n [id]=\"buildId('closeButton')\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <div\n [id]=\"buildId('datepicker_header')\"\n class=\"d-flex justify-content-between datepicker_header\"\n >\n <ng-container *ngIf=\"currentMonthYear | async as monthYear\">\n <button\n [id]=\"buildId('previous-month')\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"previousMonth()\"\n [attr.disabled]=\"isPreviousMonthDisabled(monthYear)\"\n >\n <foehn-icon-chevron-left\n [title]=\"\n 'foehn-date-picker.previous-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-left>\n </button>\n <span\n [id]=\"buildId('month-year-label')\"\n aria-live=\"polite\"\n class=\"sr-only\"\n >\n {{\n 'foehn-date-picker.screen-reader.actual-month-displayed'\n | fromDictionary\n }}\n {{ getMonthAsReadable(monthYear.month) }} {{ monthYear.year }}\n </span>\n <foehn-select\n [id]=\"buildId('month-input')\"\n class=\"align-self-center month-input\"\n [label]=\"\n 'foehn-date-picker.screen-reader.month-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"monthListItem\"\n [model]=\"monthYear.month\"\n [required]=\"true\"\n (userInput)=\"userInputMonth($event)\"\n ></foehn-select>\n <foehn-select\n [id]=\"buildId('year-input')\"\n class=\"align-self-center\"\n [label]=\"\n 'foehn-date-picker.screen-reader.year-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"yearListItem\"\n [model]=\"monthYear.year\"\n [required]=\"true\"\n (userInput)=\"userInputYear($event)\"\n ></foehn-select>\n <button\n [id]=\"buildId('next-month')\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"nextMonth()\"\n [attr.disabled]=\"isNextMonthDisabled(monthYear)\"\n >\n <foehn-icon-chevron-right\n [title]=\"\n 'foehn-date-picker.next-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-right>\n </button>\n </ng-container>\n </div>\n <table\n [id]=\"buildId('datepicker_table')\"\n role=\"grid\"\n (focusin)=\"onDaysFocusin()\"\n (focusout)=\"onDaysFocusout()\"\n >\n <thead role=\"presentation\" aria-hidden=\"true\">\n <tr role=\"row\">\n <th\n scope=\"col\"\n role=\"columnheader\"\n *ngFor=\"let weekday of weekDays\"\n >\n <foehn-abbr\n [text]=\"weekday.substr(0, 2)\"\n [title]=\"weekday\"\n ></foehn-abbr>\n </th>\n </tr>\n </thead>\n <tbody role=\"presentation\">\n <tr role=\"row\" *ngFor=\"let week of weeks; let indexRow = index\">\n <td\n role=\"gridcell\"\n *ngFor=\"let dayOfWeek of week; let indexColumn = index\"\n >\n <button\n class=\"btn w-100\"\n #dayButtonElemRef\n [hidden]=\"!dayOfWeek.isCurrentMonth\"\n [id]=\"buildId('day_' + indexRow + '_' + indexColumn)\"\n [tabindex]=\"getDayTabIndex(dayOfWeek)\"\n [class.btn-info]=\"!isToday(dayOfWeek.date)\"\n [class.btn-secondary]=\"isToday(dayOfWeek.date)\"\n [class.btn-danger]=\"isSelected(dayOfWeek.date)\"\n [attr.aria-label]=\"\n weekDays[indexColumn] +\n ' ' +\n dayOfWeek.dateAsReadable\n \"\n [attr.data-is-today]=\"isToday(dayOfWeek.date)\"\n [attr.data-is-selected]=\"isSelected(dayOfWeek.date)\"\n [attr.data-row-index]=\"indexRow\"\n [attr.data-column-index]=\"indexColumn\"\n [attr.day-number]=\"dayOfWeek.dayOfMonth\"\n [attr.disabled]=\"getDayDisabledAttribute(dayOfWeek)\"\n (click)=\"handleUserInput(dayOfWeek.date)\"\n >\n {{ dayOfWeek.dayOfMonth }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n", styles: [":host ::ng-deep .btn-link .svg-inline--fa{color:#000!important}.datepicker_header{margin-bottom:5px}.datepicker_wrapper{max-width:245px;padding:5px;border:1px solid #dfdfdf;background-color:#fff}.datepicker_wrapper .h4{margin-bottom:0}.datepicker_wrapper thead th{text-align:center;width:15%}.datepicker_wrapper .btn{padding:2px 4px}.datepicker_wrapper button.close{position:absolute;right:-14px;top:-18px;background-color:#fff;border:1px solid #dfdfdf;border-radius:50%;width:30px;height:30px;opacity:1}.datepicker_wrapper .month-input{width:50%;margin-right:5px}:host ::ng-deep foehn-select select.form-control{padding:0;margin:0;height:30px}:host ::ng-deep foehn-select .form-group{margin:0}.btn-info:disabled{cursor:not-allowed}.datepicker-nav-month-btn:disabled{opacity:.25}\n"] }]
|
|
348
350
|
}], ctorParameters: function () { return [{ type: i1.SdkDictionaryService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { id: [{
|
|
@@ -384,4 +386,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImpor
|
|
|
384
386
|
type: HostListener,
|
|
385
387
|
args: ['keydown', ['$event']]
|
|
386
388
|
}] } });
|
|
387
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWRhdGUtcGlja2VyL2ZvZWhuLWRhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1kYXRlLXBpY2tlci9mb2Vobi1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBRU4sWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLE9BQU8sTUFBTSxzQkFBc0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7QUFJN0UsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQU90QixNQUFNLE9BQU8sd0JBQXdCO0lBNERqQyxZQUNZLFVBQWdDLEVBQ2hDLE1BQWMsRUFDZCxjQUFpQztRQUZqQyxlQUFVLEdBQVYsVUFBVSxDQUFzQjtRQUNoQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBdEQ3QyxZQUFPLEdBQUcsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBRy9CLFlBQU8sR0FBRyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFZOUIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUdqQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFZLENBQUM7UUFHM0MsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFZLENBQUM7UUFHekMsOEJBQXlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVEvQyxhQUFRLEdBQWEsRUFBRSxDQUFDO1FBT3hCLGtCQUFhLEdBQXVCLEVBQUUsQ0FBQztRQUN2QyxpQkFBWSxHQUF1QixFQUFFLENBQUM7UUFFOUIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQiw4QkFBeUIsR0FBRyxLQUFLLENBQUM7UUFFbEMscUJBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzFDLCtCQUEwQixHQUFHLElBQUksMEJBQTBCLEVBQUUsQ0FBQztRQVVsRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDO1FBQ2pFLDBEQUEwRDtRQUMxRCxJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FDMUYsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUN6QixDQUFDO1FBQ0YsMERBQTBEO1FBQzFELElBQUksQ0FBQyxnQ0FBZ0MsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUNsRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQzdCLENBQUM7SUFDTixDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUNJLG1CQUFtQixDQUFDLEdBQVk7UUFDaEMsNEVBQTRFO1FBQzVFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFFL0Isa0VBQWtFO1FBQ2xFLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUM1QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNsQztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQ3JCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXBELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCw4REFBOEQ7SUFDOUQsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUNJLEtBQUssQ0FBQyxLQUFlO1FBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUdELHFCQUFxQixDQUFDLEtBQW9CO1FBQ3RDLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLFFBQVEsRUFBRTtZQUMxQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1NBQ3BDO0lBQ0wsQ0FBQztJQUdELHVCQUF1QixDQUFDLEtBQW9CO1FBQ3hDLElBQUksSUFBSSxDQUFDLHlCQUF5QixFQUFFO1lBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUI7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNKLHlGQUF5RjtRQUN6RixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsMEJBQTBCLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFckQsSUFBSSxDQUFDLCtCQUErQixHQUFHLElBQUksQ0FBQyxVQUFVO2FBQ2pELHNCQUFzQixFQUFFO2FBQ3hCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzdCLDBEQUEwRDthQUN6RCxTQUFTLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRTtZQUN4QixJQUFJLENBQUMsZ0JBQWdCO2lCQUNoQixVQUFVLENBQUMsSUFBSSxDQUFDO2lCQUNoQixLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUNSLE9BQU8sQ0FBQyxJQUFJLENBQ1IsV0FBVyxJQUFJLHFDQUFxQyxDQUN2RCxDQUFDO1lBQ04sQ0FBQyxDQUFDO2lCQUNELElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxlQUFlO1FBQ1gsMERBQTBEO1FBQzFELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMzQywwRUFBMEU7WUFDMUUscUdBQXFHO1lBQ3JHLDJEQUEyRDtZQUMzRCxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFDakYsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQywrQkFBK0IsRUFBRTtZQUN4QyxJQUFJLENBQUMsK0JBQStCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdEQ7UUFDRCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEVBQUU7WUFDckMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ25EO1FBQ0QsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN2RDtJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBZTtRQUN6QixJQUNJLENBQUMsQ0FBQyxLQUFLO1lBQ1AsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ2hCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ1YsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPO1lBQ3hCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ1YsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDWjtZQUNFLE1BQU0sWUFBWSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMzRCxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQzthQUNyQztTQUNKO2FBQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdEI7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBZTtRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsT0FBTyxDQUFDLFNBQWlCLEVBQUU7UUFDdkIseUVBQXlFO1FBQ3pFLG1FQUFtRTtRQUNuRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDcEMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDbkM7UUFFRCxPQUFPLEdBQUcsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBaUI7UUFDckIsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFpQjtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNwQixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFpQjtRQUM3QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTlDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELGFBQWE7UUFDVCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ2pFLENBQUM7SUFFRCxTQUFTO1FBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWE7UUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUM5QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUNqQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUNuQyxDQUFDO0lBQ04sQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFZO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FDOUMsSUFBSSxFQUNKLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQ25DLENBQUM7SUFDTixDQUFDO0lBRUQsa0JBQWtCLENBQUMsVUFBa0I7UUFDakMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzVFLENBQUM7SUFFRCxhQUFhO1FBQ1QsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztRQUN0QyxJQUFJLENBQUMsMEJBQTBCLENBQUMscUJBQXFCO1lBQ2pELFFBQVEsQ0FBQyxhQUFhLENBQUM7SUFDL0IsQ0FBQztJQUVELGNBQWM7UUFDVixJQUFJLENBQUMseUJBQXlCLEdBQUcsS0FBSyxDQUFDO0lBQzNDLENBQUM7SUFFRCxjQUFjLENBQUMsR0FBYTtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDL0IsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNiO1FBQ0QsSUFDSSxJQUFJLENBQUMsWUFBWTtZQUNqQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQzlDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFDOUM7WUFDRSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDOUMsT0FBTyxDQUFDLENBQUM7YUFDWjtZQUNELE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDYjtRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEIsT0FBTyxDQUFDLENBQUM7U0FDWjtRQUNELE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQzVELEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSSxDQUNqRSxDQUFDO1FBQ0YsSUFDSSxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU07WUFDbkIsR0FBRyxDQUFDLGNBQWM7WUFDbEIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3JCLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQztZQUMxRCxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFO2dCQUNqQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQ3pDO1lBQ0UsT0FBTyxDQUFDLENBQUM7U0FDWjtRQUNELE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDZCxDQUFDO0lBRUQsZUFBZTtRQUNYLG1HQUFtRztRQUNuRywwREFBMEQ7UUFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3RELElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsNEJBQTRCLEVBQUU7Z0JBQ3JELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxlQUFlLENBQzNDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUN0QixDQUFDO2FBQ0w7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxTQUFtQjtRQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRTtZQUMzQixPQUFPLFVBQVUsQ0FBQztTQUNyQjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNyQyxPQUFPLFVBQVUsQ0FBQztTQUNyQjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxTQUFvQjtRQUN4QyxPQUFPLFNBQVMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDN0MsU0FBUyxDQUFDLEtBQUssS0FBSyxHQUFHO1lBQ3ZCLENBQUMsQ0FBQyxVQUFVO1lBQ1osQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNmLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxTQUFvQjtRQUNwQyxPQUFPLFNBQVMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDN0MsU0FBUyxDQUFDLEtBQUssS0FBSyxJQUFJO1lBQ3hCLENBQUMsQ0FBQyxVQUFVO1lBQ1osQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNmLENBQUM7SUFFTyxhQUFhLENBQUMsSUFBaUI7UUFDbkMsK0JBQStCO1FBQy9CLE1BQU0sZUFBZSxHQUFHLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkUsSUFBSSxlQUFlLEVBQUU7WUFDakIsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzlDLElBQUksY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUU7Z0JBQzNELE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1NBQ0o7UUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzVCLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsK0JBQStCO1FBQy9CLE1BQU0sZUFBZSxHQUFHLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkUsSUFBSSxlQUFlLEVBQUU7WUFDakIsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzlDLElBQ0ksY0FBYyxDQUFDLE9BQU8sRUFBRTtnQkFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxjQUFjLENBQUMsSUFBSSxFQUFFLEVBQ3RDO2dCQUNFLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxvQkFBb0I7UUFDeEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUM5QyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLEVBQ3hELEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLENBQUMsQ0FDbkUsQ0FBQztJQUNOLENBQUM7SUFFTyxPQUFPLENBQUMsSUFBaUI7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFFekIsZ0RBQWdEO1FBQ2hELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQzlDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLEVBQzdELFlBQVksQ0FBQyxNQUFNLENBQ2YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLDBCQUEwQixDQUNuRCxFQUNELFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHdCQUF3QixDQUFDLENBQ3RFLENBQUM7SUFDTixDQUFDO0lBRU8sY0FBYyxDQUFDLElBQWlCO1FBQ3BDLE9BQU87WUFDSCxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDO1lBQ3RELENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLENBQUM7WUFDOUQsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx3QkFBd0IsQ0FBQztTQUMvRCxDQUFDO0lBQ04sQ0FBQztJQUVPLHdCQUF3QixDQUM1QixPQUFnQixFQUNoQixTQUFrQjtRQUVsQixpR0FBaUc7UUFDakcsMEVBQTBFO1FBQzFFLGlDQUFpQztRQUNqQyxJQUFJLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsNEJBQTRCLEVBQUU7WUFDNUQsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzdDO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQjtRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssRUFBRTthQUN2QixVQUFVLEVBQUU7YUFDWixNQUFNLEVBQUU7YUFDUixHQUFHLENBQUMsQ0FBQyxLQUFhLEVBQUUsS0FBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLEtBQUssRUFBRSxLQUFLO1lBQ1osS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUU7U0FDMUIsQ0FBQyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3BCLE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBYSxFQUFFLEdBQVcsRUFBWSxFQUFFLENBQ25ELEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLEtBQUssR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUVqRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUN6QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEM7UUFDRCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUN6QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQ3JELENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDdEIsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7U0FDekIsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRU8sY0FBYyxDQUFDLFFBQXVCO1FBQzFDLDZEQUE2RDtRQUM3RCxxRkFBcUY7UUFDckYsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUM7UUFDekQsUUFBUSxrQkFBa0IsRUFBRTtZQUN4QixLQUFLLE1BQU0sQ0FBQztZQUNaLEtBQUssV0FBVztnQkFDWixJQUFJLENBQUMsMEJBQTBCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDbkQsTUFBTTtZQUNWLEtBQUssSUFBSSxDQUFDO1lBQ1YsS0FBSyxTQUFTO2dCQUNWLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUN2RCxNQUFNO1lBQ1YsS0FBSyxPQUFPLENBQUM7WUFDYixLQUFLLFVBQVUsQ0FBQztZQUNoQixLQUFLLE9BQU87Z0JBQ1IsUUFBUSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDekQsTUFBTTtZQUNWLEtBQUssT0FBTyxDQUFDO1lBQ2IsS0FBSyxZQUFZO2dCQUNiLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDL0MsTUFBTTtZQUNWLEtBQUssTUFBTSxDQUFDO1lBQ1osS0FBSyxXQUFXO2dCQUNaLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNuRCxNQUFNO1lBQ1Y7Z0JBQ0ksT0FBTyxJQUFJLENBQUM7U0FDbkI7UUFFRCxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUIsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRTNCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7O3FIQTdjUSx3QkFBd0I7eUdBQXhCLHdCQUF3Qiw4ckJDbkNyQyxxekxBb0pBOzJGRGpIYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0ksbUJBQW1CO2dLQU83QixFQUFFO3NCQURELEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTiw0QkFBNEI7c0JBRDNCLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLFdBQVc7c0JBRFYsTUFBTTtnQkFJUCxTQUFTO3NCQURSLE1BQU07Z0JBSVAseUJBQXlCO3NCQUR4QixNQUFNO2dCQUlQLE1BQU07c0JBREwsV0FBVzt1QkFBQyxTQUFTO2dCQUl0QixrQkFBa0I7c0JBRGpCLFlBQVk7dUJBQUMsa0JBQWtCO2dCQTJDNUIsbUJBQW1CO3NCQUR0QixLQUFLO2dCQXVCRixLQUFLO3NCQURSLEtBQUs7Z0JBTU4scUJBQXFCO3NCQURwQixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRakMsdUJBQXVCO3NCQUR0QixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCBpc1RvZGF5IGZyb20gJ2RheWpzL3BsdWdpbi9pc1RvZGF5JztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGb3JtU2VsZWN0T3B0aW9uIH0gZnJvbSAnLi4vZm9laG4tY2hlY2thYmxlcy9mb3JtLXNlbGVjdC1vcHRpb24nO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVQaWNrZXJIZWxwZXIgfSBmcm9tICcuL2RhdGUtcGlja2VyLmhlbHBlcic7XG5pbXBvcnQgeyBEYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlciB9IGZyb20gJy4vZGF0ZS1waWNrZXItbmF2aWdhdGlvbi5oZWxwZXInO1xuaW1wb3J0IHsgRGF5TW9udGggfSBmcm9tICcuL2RheS1tb250aC50eXBlJztcbmltcG9ydCB7IE1vbnRoWWVhciB9IGZyb20gJy4vbW9udGgteWVhci50eXBlJztcblxuZGF5anMuZXh0ZW5kKGlzVG9kYXkpO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLWRhdGUtcGlja2VyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4tZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLWRhdGUtcGlja2VyLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGb2VobkRhdGVQaWNrZXJDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgICBASW5wdXQoKVxuICAgIGlkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIG5hbWU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgbWluWWVhciA9IGRheWpzKCkueWVhcigpIC0gMTAwO1xuXG4gICAgQElucHV0KClcbiAgICBtYXhZZWFyID0gZGF5anMoKS55ZWFyKCkgKyAxMDtcblxuICAgIEBJbnB1dCgpXG4gICAgbWluRGF0ZTogbnVtYmVyW107XG5cbiAgICBASW5wdXQoKVxuICAgIG1heERhdGU6IG51bWJlcltdO1xuXG4gICAgQElucHV0KClcbiAgICBkYXRlcGlja2VyVHJpZ2dlckh0bWxFbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICAgIEBJbnB1dCgpXG4gICAgY2xvc2VhYmxlID0gdHJ1ZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIG1vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXJbXT4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHVzZXJJbnB1dCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyW10+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBpc0RhdGVwaWNrZXJWaXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBob3N0SWQ6IHN0cmluZztcblxuICAgIEBWaWV3Q2hpbGRyZW4oJ2RheUJ1dHRvbkVsZW1SZWYnKVxuICAgIGRheXNCdXR0b25zRWxlbVJlZjogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gICAgd2Vla0RheXM6IHN0cmluZ1tdID0gW107XG4gICAgd2Vla3M6IERheU1vbnRoW11bXTtcblxuICAgIHNlbGVjdGVkRGF0ZTogZGF5anMuRGF5anM7XG4gICAgY3VycmVudE1vbnRoWWVhcjogT2JzZXJ2YWJsZTxNb250aFllYXI+O1xuXG4gICAgbW9kZWxfOiBudW1iZXJbXTtcbiAgICBtb250aExpc3RJdGVtOiBGb3JtU2VsZWN0T3B0aW9uW10gPSBbXTtcbiAgICB5ZWFyTGlzdEl0ZW06IEZvcm1TZWxlY3RPcHRpb25bXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSBpc1Zpc2libGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIGtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGN1cnJlbnRMYW5ndWFnZUNvZGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIGRhdGVQaWNrZXJIZWxwZXIgPSBuZXcgRGF0ZVBpY2tlckhlbHBlcigpO1xuICAgIHByaXZhdGUgZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIgPSBuZXcgRGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIoKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlzcGxheU5leHRNb250aFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlzcGxheVByZXZpb3VzTW9udGhTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGRpY3Rpb25hcnk6IFNka0RpY3Rpb25hcnlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge1xuICAgICAgICB0aGlzLmN1cnJlbnRNb250aFllYXIgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZGlzcGxheWVkTW9udGhZZWFyO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy1hbmd1bGFyL3ByZWZlci1hc3luYy1waXBlXG4gICAgICAgIHRoaXMuZGlzcGxheU5leHRNb250aFN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuZGlzcGxheU5leHRNb250aC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAoKSA9PiB0aGlzLm5leHRNb250aCgpXG4gICAgICAgICk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzLWFuZ3VsYXIvcHJlZmVyLWFzeW5jLXBpcGVcbiAgICAgICAgdGhpcy5kaXNwbGF5UHJldmlvdXNNb250aFN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuZGlzcGxheVByZXZpb3VzTW9udGguc3Vic2NyaWJlKFxuICAgICAgICAgICAgKCkgPT4gdGhpcy5wcmV2aW91c01vbnRoKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgaXNEYXRlcGlja2VyVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWaXNpYmxlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGlzRGF0ZXBpY2tlclZpc2libGUodmFsOiBib29sZWFuKSB7XG4gICAgICAgIC8vIFN0b3JlIHRoZSBwcmV2aW91cyB2YWx1ZSB0byBoYW5kbGUgdHJhbnNpdGlvbnMgZnJvbSBvbmUgc3RhdGUgdG8gYW5vdGhlci5cbiAgICAgICAgY29uc3Qgd2FzT3BlbiA9IHRoaXMuaXNWaXNpYmxlO1xuXG4gICAgICAgIC8vIEVuc3VyZSB3ZSBhbHdheXMgaW5pdGlhbGl6ZSBkYXRlIHBpY2tlciBkZXBlbmRpbmcgb24gaXQncyBtb2RlbFxuICAgICAgICBpZiAoIXdhc09wZW4gJiYgdGhpcy5jbG9zZWFibGUpIHtcbiAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLm1vZGVsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNWaXNpYmxlID0gdmFsO1xuICAgICAgICB0aGlzLmlzRGF0ZXBpY2tlclZpc2libGVDaGFuZ2UuZW1pdCh0aGlzLmlzVmlzaWJsZSk7XG5cbiAgICAgICAgdGhpcy5mb2N1c0RlZmF1bHREYXkoKTtcbiAgICAgICAgdGhpcy5mb2N1c09uRGF0ZXBpY2tlclRyaWdnZXIod2FzT3BlbiwgdmFsKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIGdldCBtb2RlbCgpOiBudW1iZXJbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsXztcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBtb2RlbCh2YWx1ZTogbnVtYmVyW10pIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlS2V5Ym9hcmRVcEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlYWJsZSAmJiBldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgICB0aGlzLmlzRGF0ZXBpY2tlclZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUtleWJvYXJkRG93bkV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25LZXlEb3duSW5uZXIoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgaG9zdCBoYXMgYW4gSWQgZm9yIGluc3RydW1lbnRhbGl6YXRpb24gb2YgdGhlIERPTSBieSBhdXRvbWF0ZWQgdGVzdHMuXG4gICAgICAgIHRoaXMuaG9zdElkID0gdGhpcy5idWlsZElkKCk7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuaG9zdElkID0gdGhpcy5ob3N0SWQ7XG5cbiAgICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2VDb2RlU3Vic2NyaXB0aW9uID0gdGhpcy5kaWN0aW9uYXJ5XG4gICAgICAgICAgICAuZ2V0Q3VycmVudExhbmd1YWdlQ29kZSgpXG4gICAgICAgICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoY29kZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VySGVscGVyXG4gICAgICAgICAgICAgICAgICAgIC5sb2FkTG9jYWxlKGNvZGUpXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYGxvY2FsZSAnJHtjb2RlfScgZG9lcyBub3QgZXhpc3QuIEZhbGxiYWNrIHRvICdlbi4nYFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplRGF0ZXBpY2tlcigpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICB0aGlzLmRheXNCdXR0b25zRWxlbVJlZi5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAvLyBGb3IgdGVzdHMgcHVycG9zZSwgd2hlbiBzZXR0aW5nIGNvbXBvbmVudCBtaW5EYXRlLCBhdm9pZHMgaGF2aW5nIGVycm9yOlxuICAgICAgICAgICAgLy8gXCJORzAxMDA6IEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3I6IEV4cHJlc3Npb24gaGFzIGNoYW5nZWQgYWZ0ZXIgaXQgd2FzIGNoZWNrZWQuXG4gICAgICAgICAgICAvLyBQcmV2aW91cyB2YWx1ZSBmb3IgJ3RhYmluZGV4JzogJy0xJy4gQ3VycmVudCB2YWx1ZTogJzAnXCJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlci5kYXlzQnV0dG9uc0VsZW1SZWYgPSB0aGlzLmRheXNCdXR0b25zRWxlbVJlZjtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICghIXRoaXMuY3VycmVudExhbmd1YWdlQ29kZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2VDb2RlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEhdGhpcy5kaXNwbGF5TmV4dE1vbnRoU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlOZXh0TW9udGhTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISF0aGlzLmRpc3BsYXlQcmV2aW91c01vbnRoU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlQcmV2aW91c01vbnRoU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBudW1iZXJbXSk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhIXZhbHVlICYmXG4gICAgICAgICAgICB2YWx1ZS5sZW5ndGggPiAyICYmXG4gICAgICAgICAgICAhIXZhbHVlWzBdICYmXG4gICAgICAgICAgICB2YWx1ZVswXSA+PSB0aGlzLm1pblllYXIgJiZcbiAgICAgICAgICAgICEhdmFsdWVbMV0gJiZcbiAgICAgICAgICAgICEhdmFsdWVbMl1cbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlQXNTdHJpbmcgPSBgJHt2YWx1ZVswXX0tJHt2YWx1ZVsxXX0tJHt2YWx1ZVsyXX1gO1xuICAgICAgICAgICAgaWYgKGRheWpzKGRhdGVBc1N0cmluZykuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREYXRlKGRheWpzKGRhdGVBc1N0cmluZykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgICAgICB0aGlzLnNldERhdGUobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKHZhbHVlKTtcbiAgICB9XG5cbiAgICB1cGRhdGVOZ01vZGVsKHZhbHVlOiBudW1iZXJbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vZGVsXyA9IHZhbHVlO1xuICAgICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cblxuICAgIGJ1aWxkSWQoc3VmZml4OiBzdHJpbmcgPSAnJyk6IHN0cmluZyB7XG4gICAgICAgIC8vIFRoZSBiYXNlSWQgaXMgZWl0aGVyIGFuIGlkIGdpdmVuIGJ5IHRoZSB1c2VyIG9yIHRoZSB2YWx1ZSBvZiB0aGUgbmFtZS5cbiAgICAgICAgLy8gRm9yIGludGVncmF0aW9uIHB1cnBvc2VzLCB0aGUgY29udGFpbmVyIGZvZWhuLSogbXVzdCBoYXZlIGFuIElkLlxuICAgICAgICBjb25zdCBiYXNlSWQgPSB0aGlzLmlkIHx8IHRoaXMubmFtZTtcbiAgICAgICAgaWYgKCFiYXNlSWQpIHtcbiAgICAgICAgICAgIHJldHVybiAhIXN1ZmZpeCA/IHN1ZmZpeCA6IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYCR7YmFzZUlkfSR7c3VmZml4fWA7XG4gICAgfVxuXG4gICAgaXNUb2RheShkYXRlOiBkYXlqcy5EYXlqcyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZGF0ZS5pc1RvZGF5KCk7XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZChkYXRlOiBkYXlqcy5EYXlqcyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGUuaXNTYW1lKHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgICB9XG5cbiAgICBoYW5kbGVVc2VySW5wdXQoZGF0ZTogZGF5anMuRGF5anMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGF0ZUFzQXJyYXkgPSB0aGlzLmdldERhdGVBc0FycmF5KGRhdGUpO1xuXG4gICAgICAgIHRoaXMudXNlcklucHV0Lm5leHQoZGF0ZUFzQXJyYXkpO1xuICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwoZGF0ZUFzQXJyYXkpO1xuICAgIH1cblxuICAgIHByZXZpb3VzTW9udGgoKTogdm9pZCB7XG4gICAgICAgIHRoaXMud2Vla3MgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZ2V0UHJldmlvdXNXZWVrc09mTW9udGgoKTtcbiAgICB9XG5cbiAgICBuZXh0TW9udGgoKTogdm9pZCB7XG4gICAgICAgIHRoaXMud2Vla3MgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZ2V0TmV4dFdlZWtzT2ZNb250aCgpO1xuICAgIH1cblxuICAgIHVzZXJJbnB1dE1vbnRoKG1vbnRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53ZWVrcyA9IHRoaXMuZGF0ZVBpY2tlckhlbHBlci5nZXRXZWVrc09mTW9udGgoXG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuaW5pdGlhbFllYXIsXG4gICAgICAgICAgICAoK21vbnRoICsgMSkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlckhlbHBlci5pbml0aWFsRGF5XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdXNlcklucHV0WWVhcih5ZWFyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53ZWVrcyA9IHRoaXMuZGF0ZVBpY2tlckhlbHBlci5nZXRXZWVrc09mTW9udGgoXG4gICAgICAgICAgICB5ZWFyLFxuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VySGVscGVyLmluaXRpYWxNb250aCxcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlckhlbHBlci5pbml0aWFsRGF5XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0TW9udGhBc1JlYWRhYmxlKG1vbnRoSW5kZXg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vbnRoTGlzdEl0ZW0uZmluZChlbGVtID0+IGVsZW0udmFsdWUgPT09IG1vbnRoSW5kZXgpLmxhYmVsO1xuICAgIH1cblxuICAgIG9uRGF5c0ZvY3VzaW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uQWxsb3dlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuY3VycmVudEZvY3VzZWRFbGVtZW50ID1cbiAgICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgb25EYXlzRm9jdXNvdXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uQWxsb3dlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGdldERheVRhYkluZGV4KGRheTogRGF5TW9udGgpOiBudW1iZXIge1xuICAgICAgICBpZiAoIXRoaXMuaXNEYXRlSW5SYW5nZShkYXkuZGF0ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSAmJlxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUubW9udGgoKSA9PT0gZGF5LmRhdGUubW9udGgoKSAmJlxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUueWVhcigpID09PSBkYXkuZGF0ZS55ZWFyKClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUuZGF0ZSgpID09PSBkYXkuZGF0ZS5kYXRlKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1RvZGF5KGRheS5kYXRlKSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGF5c0luV2VlayA9IFsuLi50aGlzLmRheXNCdXR0b25zRWxlbVJlZi50b0FycmF5KCldLmZpbHRlcihcbiAgICAgICAgICAgIHZhbHVlID0+IHZhbHVlLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkaXNhYmxlZCcpID09PSBudWxsXG4gICAgICAgICk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICEhZGF5c0luV2Vlay5sZW5ndGggJiZcbiAgICAgICAgICAgIGRheS5pc0N1cnJlbnRNb250aCAmJlxuICAgICAgICAgICAgZGF5LmRheU9mTW9udGgudG9TdHJpbmcoKSA9PT1cbiAgICAgICAgICAgICAgICBkYXlzSW5XZWVrWzBdLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXktbnVtYmVyJykgJiZcbiAgICAgICAgICAgIChkYXkuZGF0ZS5tb250aCgpICE9PSBkYXlqcygpLm1vbnRoKCkgfHxcbiAgICAgICAgICAgICAgICBkYXkuZGF0ZS55ZWFyKCkgIT09IGRheWpzKCkueWVhcigpKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBmb2N1c0RlZmF1bHREYXkoKTogdm9pZCB7XG4gICAgICAgIC8vIEhhdmUgdG8gd2FpdCBmb3IgYSBtaWNybyB0YXNrIGVtcHR5IGFzIHdlJ3JlIGFmZmVjdGluZyB0aGUgRE9NIG91dHNpZGUgb2YgdGhlIEFuZ3VsYXIgbGlmZWN5Y2xlLlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy1hbmd1bGFyL3ByZWZlci1hc3luYy1waXBlXG4gICAgICAgIHRoaXMubmdab25lLm9uTWljcm90YXNrRW1wdHkucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNWaXNpYmxlICYmIHRoaXMuZGF0ZXBpY2tlclRyaWdnZXJIdG1sRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuZm9jdXNEZWZhdWx0RGF5KFxuICAgICAgICAgICAgICAgICAgICAhIXRoaXMuc2VsZWN0ZWREYXRlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0RGF5RGlzYWJsZWRBdHRyaWJ1dGUoZGF5T2ZXZWVrOiBEYXlNb250aCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghZGF5T2ZXZWVrLmlzQ3VycmVudE1vbnRoKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2Rpc2FibGVkJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuaXNEYXRlSW5SYW5nZShkYXlPZldlZWsuZGF0ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiAnZGlzYWJsZWQnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlzUHJldmlvdXNNb250aERpc2FibGVkKG1vbnRoWWVhcjogTW9udGhZZWFyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIG1vbnRoWWVhci55ZWFyID09PSB0aGlzLm1pblllYXIudG9TdHJpbmcoKSAmJlxuICAgICAgICAgICAgbW9udGhZZWFyLm1vbnRoID09PSAnMCdcbiAgICAgICAgICAgID8gJ2Rpc2FibGVkJ1xuICAgICAgICAgICAgOiBudWxsO1xuICAgIH1cblxuICAgIGlzTmV4dE1vbnRoRGlzYWJsZWQobW9udGhZZWFyOiBNb250aFllYXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gbW9udGhZZWFyLnllYXIgPT09IHRoaXMubWF4WWVhci50b1N0cmluZygpICYmXG4gICAgICAgICAgICBtb250aFllYXIubW9udGggPT09ICcxMSdcbiAgICAgICAgICAgID8gJ2Rpc2FibGVkJ1xuICAgICAgICAgICAgOiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNEYXRlSW5SYW5nZShkYXRlOiBkYXlqcy5EYXlqcyk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBNaW4geWVhciBhbmQgZGF0ZSBtYW5hZ2VtZW50XG4gICAgICAgIGNvbnN0IG1pbkRhdGVBc1N0cmluZyA9IERhdGVQaWNrZXJIZWxwZXIuZ2V0RGF0ZUFzU3RyaW5nKHRoaXMubWluRGF0ZSk7XG4gICAgICAgIGlmIChtaW5EYXRlQXNTdHJpbmcpIHtcbiAgICAgICAgICAgIGNvbnN0IG1pbkRhdGVBc0RheWpzID0gZGF5anMobWluRGF0ZUFzU3RyaW5nKTtcbiAgICAgICAgICAgIGlmIChtaW5EYXRlQXNEYXlqcy5pc1ZhbGlkKCkgJiYgZGF0ZS5pc0JlZm9yZShtaW5EYXRlQXNEYXlqcykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGUueWVhcigpIDwgdGhpcy5taW5ZZWFyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gTWF4IHllYXIgYW5kIGRhdGUgbWFuYWdlbWVudFxuICAgICAgICBjb25zdCBtYXhEYXRlQXNTdHJpbmcgPSBEYXRlUGlja2VySGVscGVyLmdldERhdGVBc1N0cmluZyh0aGlzLm1heERhdGUpO1xuICAgICAgICBpZiAobWF4RGF0ZUFzU3RyaW5nKSB7XG4gICAgICAgICAgICBjb25zdCBtYXhEYXRlQXNEYXlqcyA9IGRheWpzKG1heERhdGVBc1N0cmluZyk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbWF4RGF0ZUFzRGF5anMuaXNWYWxpZCgpICYmXG4gICAgICAgICAgICAgICAgZGF0ZS5pc0FmdGVyKG1heERhdGVBc0RheWpzKSAmJlxuICAgICAgICAgICAgICAgIGRhdGUueWVhcigpIDw9IG1heERhdGVBc0RheWpzLnllYXIoKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRlLnllYXIoKSA8PSB0aGlzLm1heFllYXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplRGF0ZXBpY2tlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU1vbnRoTGlzdCgpO1xuICAgICAgICB0aGlzLnBvcHVsYXRlWWVhckxpc3QoKTtcbiAgICAgICAgdGhpcy53ZWVrRGF5cyA9IHRoaXMuZGF0ZVBpY2tlckhlbHBlci5nZXRXZWVrRGF5cygpO1xuICAgICAgICB0aGlzLndlZWtzID0gdGhpcy5kYXRlUGlja2VySGVscGVyLmdldFdlZWtzT2ZNb250aChcbiAgICAgICAgICAgIGRheWpzKCkuZm9ybWF0KHRoaXMuZGF0ZVBpY2tlckhlbHBlci5ZRUFSX1NUUklOR19GT1JNQVQpLFxuICAgICAgICAgICAgZGF5anMoKS5mb3JtYXQodGhpcy5kYXRlUGlja2VySGVscGVyLk1PTlRIX1NUUklOR19OVU1CRVJfRk9STUFUKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGF0ZShkYXRlOiBkYXlqcy5EYXlqcyk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IGRhdGU7XG5cbiAgICAgICAgLy8gRWl0aGVyIHdlIGhhdmUgYSBkYXRlIHRvIHNldCBvciB3ZSB0YWtlIHRvZGF5XG4gICAgICAgIGNvbnN0IGRhdGVUb0Zvcm1hdCA9IGRhdGUgPyBkYXRlIDogZGF5anMoKTtcbiAgICAgICAgdGhpcy53ZWVrcyA9IHRoaXMuZGF0ZVBpY2tlckhlbHBlci5nZXRXZWVrc09mTW9udGgoXG4gICAgICAgICAgICBkYXRlVG9Gb3JtYXQuZm9ybWF0KHRoaXMuZGF0ZVBpY2tlckhlbHBlci5ZRUFSX1NUUklOR19GT1JNQVQpLFxuICAgICAgICAgICAgZGF0ZVRvRm9ybWF0LmZvcm1hdChcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuTU9OVEhfU1RSSU5HX05VTUJFUl9GT1JNQVRcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBkYXRlVG9Gb3JtYXQuZm9ybWF0KHRoaXMuZGF0ZVBpY2tlckhlbHBlci5EQVlfU1RSSU5HX05VTUJFUl9GT1JNQVQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREYXRlQXNBcnJheShkYXRlOiBkYXlqcy5EYXlqcyk6IG51bWJlcltdIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICtkYXRlLmZvcm1hdCh0aGlzLmRhdGVQaWNrZXJIZWxwZXIuWUVBUl9TVFJJTkdfRk9STUFUKSxcbiAgICAgICAgICAgICtkYXRlLmZvcm1hdCh0aGlzLmRhdGVQaWNrZXJIZWxwZXIuTU9OVEhfU1RSSU5HX05VTUJFUl9GT1JNQVQpLFxuICAgICAgICAgICAgK2RhdGUuZm9ybWF0KHRoaXMuZGF0ZVBpY2tlckhlbHBlci5EQVlfU1RSSU5HX05VTUJFUl9GT1JNQVQpXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb2N1c09uRGF0ZXBpY2tlclRyaWdnZXIoXG4gICAgICAgIHdhc09wZW46IGJvb2xlYW4sXG4gICAgICAgIGlzVmlzaWJsZTogYm9vbGVhblxuICAgICk6IHZvaWQge1xuICAgICAgICAvLyBGb2N1cyBiYWNrIG9uIHRoZSB0cmlnZ2VyLiBObyBuZWVkIGZvciBhIHNldFRpbWVvdXQgYXMgdGhlIHRyaWdnZXIgc2hvdWxkIHN0aWxsIGJlIGluIHRoZSBET00uXG4gICAgICAgIC8vIE9ubHkgZG9lcyBpdCB3aGVuIHRoZSBtb2RhbCBpcyBjbG9zZWQgZnJvbSBhIG9wZW4gc3RhdGUgdG8gYXZvaWQgdG8gc2V0XG4gICAgICAgIC8vIHRoZSBmb2N1cyB3aGVuIHRoZSBwYWdlIGxvYWRzLlxuICAgICAgICBpZiAod2FzT3BlbiAmJiAhaXNWaXNpYmxlICYmIHRoaXMuZGF0ZXBpY2tlclRyaWdnZXJIdG1sRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5kYXRlcGlja2VyVHJpZ2dlckh0bWxFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHBvcHVsYXRlTW9udGhMaXN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vbnRoTGlzdEl0ZW0gPSBkYXlqcygpXG4gICAgICAgICAgICAubG9jYWxlRGF0YSgpXG4gICAgICAgICAgICAubW9udGhzKClcbiAgICAgICAgICAgIC5tYXAoKG1vbnRoOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+ICh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IG1vbnRoLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBpbmRleC50b1N0cmluZygpXG4gICAgICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb3B1bGF0ZVllYXJMaXN0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCByYW5nZSA9IChzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcik6IG51bWJlcltdID0+XG4gICAgICAgICAgICBBcnJheS5mcm9tKHsgbGVuZ3RoOiBlbmQgLSBzdGFydCArIDEgfSwgKHYsIGspID0+IGsgKyBzdGFydCk7XG5cbiAgICAgICAgaWYgKCEhdGhpcy5taW5EYXRlICYmICEhdGhpcy5taW5EYXRlLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5taW5ZZWFyID0gdGhpcy5taW5EYXRlWzBdO1xuICAgICAgICB9XG4gICAgICAgIGlmICghIXRoaXMubWF4RGF0ZSAmJiAhIXRoaXMubWF4RGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubWF4WWVhciA9IHRoaXMubWF4RGF0ZVswXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMueWVhckxpc3RJdGVtID0gcmFuZ2UodGhpcy5taW5ZZWFyLCB0aGlzLm1heFllYXIpLm1hcChcbiAgICAgICAgICAgICh5ZWFyOiBudW1iZXIpID0+ICh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHllYXIudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogeWVhci50b1N0cmluZygpXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25LZXlEb3duSW5uZXIoa2V5RXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcbiAgICAgICAgLy8gSUUgZG9lc24ndCBzdXBwb3J0IGtleUV2ZW50LmNvZGUsIGFuZCBoYXMgZGlmZmVyZW50IHZhbHVlc1xuICAgICAgICAvLyBpbiBrZXlFdmVudC5rZXkgKERvd24gaW5zdGVhZCBvZiBBcnJvd0Rvd24gZm9yIGluc3RhbmNlKSwgaGVuY2UgdGhlIG11bHRpLXN1cHBvcnQuXG4gICAgICAgIGNvbnN0IGllMTFDb21wYXRpYmxlQ29kZSA9IGtleUV2ZW50LmNvZGUgfHwga2V5RXZlbnQua2V5O1xuICAgICAgICBzd2l0Y2ggKGllMTFDb21wYXRpYmxlQ29kZSkge1xuICAgICAgICAgICAgY2FzZSAnRG93bic6XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuZm9jdXNOZXh0V2Vla0RheSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnVXAnOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlci5mb2N1c1ByZXZpb3VzV2Vla0RheSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnU3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAnU3BhY2ViYXInOlxuICAgICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NsaWNrJykpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUmlnaHQnOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlci5mb2N1c05leHREYXkoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0xlZnQnOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJOYXZpZ2F0aW9uSGVscGVyLmZvY3VzUHJldmlvdXNEYXkoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBrZXlFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBrZXlFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIFtpZF09XCJidWlsZElkKCdkYXRlcGlja2VyX3dyYXBwZXInKVwiXG4gICAgY2xhc3M9XCJkYXRlcGlja2VyX3dyYXBwZXJcIlxuICAgICpuZ0lmPVwiaXNEYXRlcGlja2VyVmlzaWJsZVwiXG4gICAgW2Nka1RyYXBGb2N1c109XCIhIWRhdGVwaWNrZXJUcmlnZ2VySHRtbEVsZW1lbnRcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgIHJvbGU9XCJhcHBsaWNhdGlvblwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgJ2ZvZWhuLWRhdGUtcGlja2VyLmNvbnRhaW5lci5hcmlhLWxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgXCJcbj5cbiAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiY2xvc2VhYmxlXCJcbiAgICAgICAgKGNsaWNrKT1cImlzRGF0ZXBpY2tlclZpc2libGUgPSBmYWxzZVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImJ0biBjbG9zZVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAnZm9laG4tZGF0ZS1waWNrZXIuY2xvc2UtYnV0dG9uLmFyaWEtbGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgXCJcbiAgICAgICAgW2lkXT1cImJ1aWxkSWQoJ2Nsb3NlQnV0dG9uJylcIlxuICAgID5cbiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2XG4gICAgICAgIFtpZF09XCJidWlsZElkKCdkYXRlcGlja2VyX2hlYWRlcicpXCJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gZGF0ZXBpY2tlcl9oZWFkZXJcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRNb250aFllYXIgfCBhc3luYyBhcyBtb250aFllYXJcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBbaWRdPVwiYnVpbGRJZCgncHJldmlvdXMtbW9udGgnKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgZGF0ZXBpY2tlci1uYXYtbW9udGgtYnRuXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJldmlvdXNNb250aCgpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJpc1ByZXZpb3VzTW9udGhEaXNhYmxlZChtb250aFllYXIpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Zm9laG4taWNvbi1jaGV2cm9uLWxlZnRcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWRhdGUtcGlja2VyLnByZXZpb3VzLW1vbnRoLWJ1dHRvbi50aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvZm9laG4taWNvbi1jaGV2cm9uLWxlZnQ+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkSWQoJ21vbnRoLXllYXItbGFiZWwnKVwiXG4gICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNyLW9ubHlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1kYXRlLXBpY2tlci5zY3JlZW4tcmVhZGVyLmFjdHVhbC1tb250aC1kaXNwbGF5ZWQnXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICB7eyBnZXRNb250aEFzUmVhZGFibGUobW9udGhZZWFyLm1vbnRoKSB9fSB7eyBtb250aFllYXIueWVhciB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGZvZWhuLXNlbGVjdFxuICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZElkKCdtb250aC1pbnB1dCcpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFsaWduLXNlbGYtY2VudGVyIG1vbnRoLWlucHV0XCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1kYXRlLXBpY2tlci5zY3JlZW4tcmVhZGVyLm1vbnRoLWlucHV0LmxhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW2lzTGFiZWxTck9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2VsZW1lbnRzXT1cIm1vbnRoTGlzdEl0ZW1cIlxuICAgICAgICAgICAgICAgIFttb2RlbF09XCJtb250aFllYXIubW9udGhcIlxuICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAodXNlcklucHV0KT1cInVzZXJJbnB1dE1vbnRoKCRldmVudClcIlxuICAgICAgICAgICAgPjwvZm9laG4tc2VsZWN0PlxuICAgICAgICAgICAgPGZvZWhuLXNlbGVjdFxuICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZElkKCd5ZWFyLWlucHV0JylcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWxpZ24tc2VsZi1jZW50ZXJcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWRhdGUtcGlja2VyLnNjcmVlbi1yZWFkZXIueWVhci1pbnB1dC5sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtpc0xhYmVsU3JPbmx5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtlbGVtZW50c109XCJ5ZWFyTGlzdEl0ZW1cIlxuICAgICAgICAgICAgICAgIFttb2RlbF09XCJtb250aFllYXIueWVhclwiXG4gICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICh1c2VySW5wdXQpPVwidXNlcklucHV0WWVhcigkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2ZvZWhuLXNlbGVjdD5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBbaWRdPVwiYnVpbGRJZCgnbmV4dC1tb250aCcpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBkYXRlcGlja2VyLW5hdi1tb250aC1idG5cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJuZXh0TW9udGgoKVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiaXNOZXh0TW9udGhEaXNhYmxlZChtb250aFllYXIpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Zm9laG4taWNvbi1jaGV2cm9uLXJpZ2h0XG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi1kYXRlLXBpY2tlci5uZXh0LW1vbnRoLWJ1dHRvbi50aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvZm9laG4taWNvbi1jaGV2cm9uLXJpZ2h0PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDx0YWJsZVxuICAgICAgICBbaWRdPVwiYnVpbGRJZCgnZGF0ZXBpY2tlcl90YWJsZScpXCJcbiAgICAgICAgcm9sZT1cImdyaWRcIlxuICAgICAgICAoZm9jdXNpbik9XCJvbkRheXNGb2N1c2luKClcIlxuICAgICAgICAoZm9jdXNvdXQpPVwib25EYXlzRm9jdXNvdXQoKVwiXG4gICAgPlxuICAgICAgICA8dGhlYWQgcm9sZT1cInByZXNlbnRhdGlvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPHRyIHJvbGU9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgICAgICAgc2NvcGU9XCJjb2xcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwiY29sdW1uaGVhZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHdlZWtkYXkgb2Ygd2Vla0RheXNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGZvZWhuLWFiYnJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIndlZWtkYXkuc3Vic3RyKDAsIDIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJ3ZWVrZGF5XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZm9laG4tYWJicj5cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5IHJvbGU9XCJwcmVzZW50YXRpb25cIj5cbiAgICAgICAgICAgIDx0ciByb2xlPVwicm93XCIgKm5nRm9yPVwibGV0IHdlZWsgb2Ygd2Vla3M7IGxldCBpbmRleFJvdyA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXlPZldlZWsgb2Ygd2VlazsgbGV0IGluZGV4Q29sdW1uID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gdy0xMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgI2RheUJ1dHRvbkVsZW1SZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiIWRheU9mV2Vlay5pc0N1cnJlbnRNb250aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiYnVpbGRJZCgnZGF5XycgKyBpbmRleFJvdyArICdfJyArIGluZGV4Q29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiZ2V0RGF5VGFiSW5kZXgoZGF5T2ZXZWVrKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYnRuLWluZm9dPVwiIWlzVG9kYXkoZGF5T2ZXZWVrLmRhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5idG4tc2Vjb25kYXJ5XT1cImlzVG9kYXkoZGF5T2ZXZWVrLmRhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5idG4tZGFuZ2VyXT1cImlzU2VsZWN0ZWQoZGF5T2ZXZWVrLmRhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vla0RheXNbaW5kZXhDb2x1bW5dICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheU9mV2Vlay5kYXRlQXNSZWFkYWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtaXMtdG9kYXldPVwiaXNUb2RheShkYXlPZldlZWsuZGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1pcy1zZWxlY3RlZF09XCJpc1NlbGVjdGVkKGRheU9mV2Vlay5kYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXJvdy1pbmRleF09XCJpbmRleFJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNvbHVtbi1pbmRleF09XCJpbmRleENvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXktbnVtYmVyXT1cImRheU9mV2Vlay5kYXlPZk1vbnRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImdldERheURpc2FibGVkQXR0cmlidXRlKGRheU9mV2VlaylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVVzZXJJbnB1dChkYXlPZldlZWsuZGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXlPZldlZWsuZGF5T2ZNb250aCB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Ym9keT5cbiAgICA8L3RhYmxlPlxuPC9kaXY+XG4iXX0=
|
|
389
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWRhdGUtcGlja2VyL2ZvZWhuLWRhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1kYXRlLXBpY2tlci9mb2Vobi1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBRU4sWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLE9BQU8sTUFBTSxzQkFBc0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7QUFJN0UsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQU90QixNQUFNLE9BQU8sd0JBQXdCO0lBNERqQyxZQUNZLFVBQWdDLEVBQ2hDLE1BQWMsRUFDZCxjQUFpQztRQUZqQyxlQUFVLEdBQVYsVUFBVSxDQUFzQjtRQUNoQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBdEQ3QyxZQUFPLEdBQUcsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBRy9CLFlBQU8sR0FBRyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENB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QixLQUFLO2dCQXVCRixLQUFLO3NCQURSLEtBQUs7Z0JBTU4scUJBQXFCO3NCQURwQixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRakMsdUJBQXVCO3NCQUR0QixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCBpc1RvZGF5IGZyb20gJ2RheWpzL3BsdWdpbi9pc1RvZGF5JztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGb3JtU2VsZWN0T3B0aW9uIH0gZnJvbSAnLi4vZm9laG4tY2hlY2thYmxlcy9mb3JtLXNlbGVjdC1vcHRpb24nO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVQaWNrZXJIZWxwZXIgfSBmcm9tICcuL2RhdGUtcGlja2VyLmhlbHBlcic7XG5pbXBvcnQgeyBEYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlciB9IGZyb20gJy4vZGF0ZS1waWNrZXItbmF2aWdhdGlvbi5oZWxwZXInO1xuaW1wb3J0IHsgRGF5TW9udGggfSBmcm9tICcuL2RheS1tb250aC50eXBlJztcbmltcG9ydCB7IE1vbnRoWWVhciB9IGZyb20gJy4vbW9udGgteWVhci50eXBlJztcblxuZGF5anMuZXh0ZW5kKGlzVG9kYXkpO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLWRhdGUtcGlja2VyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4tZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLWRhdGUtcGlja2VyLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGb2VobkRhdGVQaWNrZXJDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgICBASW5wdXQoKVxuICAgIGlkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIG5hbWU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgbWluWWVhciA9IGRheWpzKCkueWVhcigpIC0gMTAwO1xuXG4gICAgQElucHV0KClcbiAgICBtYXhZZWFyID0gZGF5anMoKS55ZWFyKCkgKyAxMDtcblxuICAgIEBJbnB1dCgpXG4gICAgbWluRGF0ZTogbnVtYmVyW107XG5cbiAgICBASW5wdXQoKVxuICAgIG1heERhdGU6IG51bWJlcltdO1xuXG4gICAgQElucHV0KClcbiAgICBkYXRlcGlja2VyVHJpZ2dlckh0bWxFbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICAgIEBJbnB1dCgpXG4gICAgY2xvc2VhYmxlID0gdHJ1ZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIG1vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXJbXT4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHVzZXJJbnB1dCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyW10+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBpc0RhdGVwaWNrZXJWaXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBob3N0SWQ6IHN0cmluZztcblxuICAgIEBWaWV3Q2hpbGRyZW4oJ2RheUJ1dHRvbkVsZW1SZWYnKVxuICAgIGRheXNCdXR0b25zRWxlbVJlZjogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gICAgd2Vla0RheXM6IHN0cmluZ1tdID0gW107XG4gICAgd2Vla3M6IERheU1vbnRoW11bXTtcblxuICAgIHNlbGVjdGVkRGF0ZTogZGF5anMuRGF5anM7XG4gICAgY3VycmVudE1vbnRoWWVhcjogT2JzZXJ2YWJsZTxNb250aFllYXI+O1xuXG4gICAgbW9kZWxfOiBudW1iZXJbXTtcbiAgICBtb250aExpc3RJdGVtOiBGb3JtU2VsZWN0T3B0aW9uW10gPSBbXTtcbiAgICB5ZWFyTGlzdEl0ZW06IEZvcm1TZWxlY3RPcHRpb25bXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSBpc1Zpc2libGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIGtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGN1cnJlbnRMYW5ndWFnZUNvZGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIGRhdGVQaWNrZXJIZWxwZXIgPSBuZXcgRGF0ZVBpY2tlckhlbHBlcigpO1xuICAgIHByaXZhdGUgZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIgPSBuZXcgRGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIoKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlzcGxheU5leHRNb250aFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlzcGxheVByZXZpb3VzTW9udGhTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGRpY3Rpb25hcnk6IFNka0RpY3Rpb25hcnlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge1xuICAgICAgICB0aGlzLmN1cnJlbnRNb250aFllYXIgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZGlzcGxheWVkTW9udGhZZWFyO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy1hbmd1bGFyL3ByZWZlci1hc3luYy1waXBlXG4gICAgICAgIHRoaXMuZGlzcGxheU5leHRNb250aFN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuZGlzcGxheU5leHRNb250aC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAoKSA9PiB0aGlzLm5leHRNb250aCgpXG4gICAgICAgICk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzLWFuZ3VsYXIvcHJlZmVyLWFzeW5jLXBpcGVcbiAgICAgICAgdGhpcy5kaXNwbGF5UHJldmlvdXNNb250aFN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuZGlzcGxheVByZXZpb3VzTW9udGguc3Vic2NyaWJlKFxuICAgICAgICAgICAgKCkgPT4gdGhpcy5wcmV2aW91c01vbnRoKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgaXNEYXRlcGlja2VyVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWaXNpYmxlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGlzRGF0ZXBpY2tlclZpc2libGUodmFsOiBib29sZWFuKSB7XG4gICAgICAgIC8vIFN0b3JlIHRoZSBwcmV2aW91cyB2YWx1ZSB0byBoYW5kbGUgdHJhbnNpdGlvbnMgZnJvbSBvbmUgc3RhdGUgdG8gYW5vdGhlci5cbiAgICAgICAgY29uc3Qgd2FzT3BlbiA9IHRoaXMuaXNWaXNpYmxlO1xuXG4gICAgICAgIC8vIEVuc3VyZSB3ZSBhbHdheXMgaW5pdGlhbGl6ZSBkYXRlIHBpY2tlciBkZXBlbmRpbmcgb24gaXQncyBtb2RlbFxuICAgICAgICBpZiAoIXdhc09wZW4gJiYgdGhpcy5jbG9zZWFibGUpIHtcbiAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLm1vZGVsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNWaXNpYmxlID0gdmFsO1xuICAgICAgICB0aGlzLmlzRGF0ZXBpY2tlclZpc2libGVDaGFuZ2UuZW1pdCh0aGlzLmlzVmlzaWJsZSk7XG5cbiAgICAgICAgdGhpcy5mb2N1c0RlZmF1bHREYXkoKTtcbiAgICAgICAgdGhpcy5mb2N1c09uRGF0ZXBpY2tlclRyaWdnZXIod2FzT3BlbiwgdmFsKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIGdldCBtb2RlbCgpOiBudW1iZXJbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsXztcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBtb2RlbCh2YWx1ZTogbnVtYmVyW10pIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlS2V5Ym9hcmRVcEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlYWJsZSAmJiBldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgICB0aGlzLmlzRGF0ZXBpY2tlclZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUtleWJvYXJkRG93bkV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25LZXlEb3duSW5uZXIoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgaG9zdCBoYXMgYW4gSWQgZm9yIGluc3RydW1lbnRhbGl6YXRpb24gb2YgdGhlIERPTSBieSBhdXRvbWF0ZWQgdGVzdHMuXG4gICAgICAgIHRoaXMuaG9zdElkID0gdGhpcy5idWlsZElkKCk7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuaG9zdElkID0gdGhpcy5ob3N0SWQ7XG5cbiAgICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2VDb2RlU3Vic2NyaXB0aW9uID0gdGhpcy5kaWN0aW9uYXJ5XG4gICAgICAgICAgICAuZ2V0Q3VycmVudExhbmd1YWdlQ29kZSgpXG4gICAgICAgICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoY29kZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VySGVscGVyXG4gICAgICAgICAgICAgICAgICAgIC5sb2FkTG9jYWxlKGNvZGUpXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYGxvY2FsZSAnJHtjb2RlfScgZG9lcyBub3QgZXhpc3QuIEZhbGxiYWNrIHRvICdlbi4nYFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplRGF0ZXBpY2tlcigpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICB0aGlzLmRheXNCdXR0b25zRWxlbVJlZi5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAvLyBGb3IgdGVzdHMgcHVycG9zZSwgd2hlbiBzZXR0aW5nIGNvbXBvbmVudCBtaW5EYXRlLCBhdm9pZHMgaGF2aW5nIGVycm9yOlxuICAgICAgICAgICAgLy8gXCJORzAxMDA6IEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3I6IEV4cHJlc3Npb24gaGFzIGNoYW5nZWQgYWZ0ZXIgaXQgd2FzIGNoZWNrZWQuXG4gICAgICAgICAgICAvLyBQcmV2aW91cyB2YWx1ZSBmb3IgJ3RhYmluZGV4JzogJy0xJy4gQ3VycmVudCB2YWx1ZTogJzAnXCJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlci5kYXlzQnV0dG9uc0VsZW1SZWYgPSB0aGlzLmRheXNCdXR0b25zRWxlbVJlZjtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICghIXRoaXMuY3VycmVudExhbmd1YWdlQ29kZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2VDb2RlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEhdGhpcy5kaXNwbGF5TmV4dE1vbnRoU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlOZXh0TW9udGhTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISF0aGlzLmRpc3BsYXlQcmV2aW91c01vbnRoU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlQcmV2aW91c01vbnRoU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBudW1iZXJbXSk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhIXZhbHVlICYmXG4gICAgICAgICAgICB2YWx1ZS5sZW5ndGggPiAyICYmXG4gICAgICAgICAgICAhIXZhbHVlWzBdICYmXG4gICAgICAgICAgICB2YWx1ZVswXSA+PSB0aGlzLm1pblllYXIgJiZcbiAgICAgICAgICAgICEhdmFsdWVbMV0gJiZcbiAgICAgICAgICAgICEhdmFsdWVbMl1cbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlQXNTdHJpbmcgPSBgJHt2YWx1ZVswXX0tJHt2YWx1ZVsxXX0tJHt2YWx1ZVsyXX1gO1xuICAgICAgICAgICAgaWYgKGRheWpzKGRhdGVBc1N0cmluZykuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREYXRlKGRheWpzKGRhdGVBc1N0cmluZykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgICAgICB0aGlzLnNldERhdGUobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKHZhbHVlKTtcbiAgICB9XG5cbiAgICB1cGRhdGVOZ01vZGVsKHZhbHVlOiBudW1iZXJbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vZGVsXyA9IHZhbHVlO1xuICAgICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cblxuICAgIGJ1aWxkSWQoc3VmZml4OiBzdHJpbmcgPSAnJyk6IHN0cmluZyB7XG4gICAgICAgIC8vIFRoZSBiYXNlSWQgaXMgZWl0aGVyIGFuIGlkIGdpdmVuIGJ5IHRoZSB1c2VyIG9yIHRoZSB2YWx1ZSBvZiB0aGUgbmFtZS5cbiAgICAgICAgLy8gRm9yIGludGVncmF0aW9uIHB1cnBvc2VzLCB0aGUgY29udGFpbmVyIGZvZWhuLSogbXVzdCBoYXZlIGFuIElkLlxuICAgICAgICBjb25zdCBiYXNlSWQgPSB0aGlzLmlkIHx8IHRoaXMubmFtZTtcbiAgICAgICAgaWYgKCFiYXNlSWQpIHtcbiAgICAgICAgICAgIHJldHVybiAhIXN1ZmZpeCA/IHN1ZmZpeCA6IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYCR7YmFzZUlkfSR7c3VmZml4fWA7XG4gICAgfVxuXG4gICAgaXNUb2RheShkYXRlOiBkYXlqcy5EYXlqcyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZGF0ZS5pc1RvZGF5KCk7XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZChkYXRlOiBkYXlqcy5EYXlqcyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGUuaXNTYW1lKHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgICB9XG5cbiAgICBoYW5kbGVVc2VySW5wdXQoZGF0ZTogZGF5anMuRGF5anMpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNEYXRlSW5SYW5nZShkYXRlKSkge1xuICAgICAgICAgICAgY29uc3QgZGF0ZUFzQXJyYXkgPSB0aGlzLmdldERhdGVBc0FycmF5KGRhdGUpO1xuXG4gICAgICAgICAgICB0aGlzLnVzZXJJbnB1dC5uZXh0KGRhdGVBc0FycmF5KTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbChkYXRlQXNBcnJheSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcmV2aW91c01vbnRoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLndlZWtzID0gdGhpcy5kYXRlUGlja2VySGVscGVyLmdldFByZXZpb3VzV2Vla3NPZk1vbnRoKCk7XG4gICAgfVxuXG4gICAgbmV4dE1vbnRoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLndlZWtzID0gdGhpcy5kYXRlUGlja2VySGVscGVyLmdldE5leHRXZWVrc09mTW9udGgoKTtcbiAgICB9XG5cbiAgICB1c2VySW5wdXRNb250aChtb250aDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMud2Vla3MgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZ2V0V2Vla3NPZk1vbnRoKFxuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VySGVscGVyLmluaXRpYWxZZWFyLFxuICAgICAgICAgICAgKCttb250aCArIDEpLnRvU3RyaW5nKCksXG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuaW5pdGlhbERheVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHVzZXJJbnB1dFllYXIoeWVhcjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMud2Vla3MgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZ2V0V2Vla3NPZk1vbnRoKFxuICAgICAgICAgICAgeWVhcixcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlckhlbHBlci5pbml0aWFsTW9udGgsXG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuaW5pdGlhbERheVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldE1vbnRoQXNSZWFkYWJsZShtb250aEluZGV4OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5tb250aExpc3RJdGVtLmZpbmQoZWxlbSA9PiBlbGVtLnZhbHVlID09PSBtb250aEluZGV4KS5sYWJlbDtcbiAgICB9XG5cbiAgICBvbkRheXNGb2N1c2luKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJOYXZpZ2F0aW9uSGVscGVyLmN1cnJlbnRGb2N1c2VkRWxlbWVudCA9XG4gICAgICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIG9uRGF5c0ZvY3Vzb3V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXREYXlUYWJJbmRleChkYXk6IERheU1vbnRoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRGF0ZUluUmFuZ2UoZGF5LmRhdGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUgJiZcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLm1vbnRoKCkgPT09IGRheS5kYXRlLm1vbnRoKCkgJiZcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLnllYXIoKSA9PT0gZGF5LmRhdGUueWVhcigpXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlLmRhdGUoKSA9PT0gZGF5LmRhdGUuZGF0ZSgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNUb2RheShkYXkuZGF0ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRheXNJbldlZWsgPSBbLi4udGhpcy5kYXlzQnV0dG9uc0VsZW1SZWYudG9BcnJheSgpXS5maWx0ZXIoXG4gICAgICAgICAgICB2YWx1ZSA9PiB2YWx1ZS5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGlzYWJsZWQnKSA9PT0gbnVsbFxuICAgICAgICApO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhIWRheXNJbldlZWsubGVuZ3RoICYmXG4gICAgICAgICAgICBkYXkuaXNDdXJyZW50TW9udGggJiZcbiAgICAgICAgICAgIGRheS5kYXlPZk1vbnRoLnRvU3RyaW5nKCkgPT09XG4gICAgICAgICAgICAgICAgZGF5c0luV2Vla1swXS5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF5LW51bWJlcicpICYmXG4gICAgICAgICAgICAoZGF5LmRhdGUubW9udGgoKSAhPT0gZGF5anMoKS5tb250aCgpIHx8XG4gICAgICAgICAgICAgICAgZGF5LmRhdGUueWVhcigpICE9PSBkYXlqcygpLnllYXIoKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgZm9jdXNEZWZhdWx0RGF5KCk6IHZvaWQge1xuICAgICAgICAvLyBIYXZlIHRvIHdhaXQgZm9yIGEgbWljcm8gdGFzayBlbXB0eSBhcyB3ZSdyZSBhZmZlY3RpbmcgdGhlIERPTSBvdXRzaWRlIG9mIHRoZSBBbmd1bGFyIGxpZmVjeWNsZS5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICB0aGlzLm5nWm9uZS5vbk1pY3JvdGFza0VtcHR5LnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmlzaWJsZSAmJiB0aGlzLmRhdGVwaWNrZXJUcmlnZ2VySHRtbEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJOYXZpZ2F0aW9uSGVscGVyLmZvY3VzRGVmYXVsdERheShcbiAgICAgICAgICAgICAgICAgICAgISF0aGlzLnNlbGVjdGVkRGF0ZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldERheURpc2FibGVkQXR0cmlidXRlKGRheU9mV2VlazogRGF5TW9udGgpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWRheU9mV2Vlay5pc0N1cnJlbnRNb250aCkge1xuICAgICAgICAgICAgcmV0dXJuICdkaXNhYmxlZCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmlzRGF0ZUluUmFuZ2UoZGF5T2ZXZWVrLmRhdGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2Rpc2FibGVkJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpc1ByZXZpb3VzTW9udGhEaXNhYmxlZChtb250aFllYXI6IE1vbnRoWWVhcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBtb250aFllYXIueWVhciA9PT0gdGhpcy5taW5ZZWFyLnRvU3RyaW5nKCkgJiZcbiAgICAgICAgICAgIG1vbnRoWWVhci5tb250aCA9PT0gJzAnXG4gICAgICAgICAgICA/ICdkaXNhYmxlZCdcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICBpc05leHRNb250aERpc2FibGVkKG1vbnRoWWVhcjogTW9udGhZZWFyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIG1vbnRoWWVhci55ZWFyID09PSB0aGlzLm1heFllYXIudG9TdHJpbmcoKSAmJlxuICAgICAgICAgICAgbW9udGhZZWFyLm1vbnRoID09PSAnMTEnXG4gICAgICAgICAgICA/ICdkaXNhYmxlZCdcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRGF0ZUluUmFuZ2UoZGF0ZTogZGF5anMuRGF5anMpOiBib29sZWFuIHtcbiAgICAgICAgLy8gTWluIHllYXIgYW5kIGRhdGUgbWFuYWdlbWVudFxuICAgICAgICBjb25zdCBtaW5EYXRlQXNTdHJpbmcgPSBEYXRlUGlja2VySGVscGVyLmdldERhdGVBc1N0cmluZyh0aGlzLm1pbkRhdGUpO1xuICAgICAgICBpZiAobWluRGF0ZUFzU3RyaW5nKSB7XG4gICAgICAgICAgICBjb25zdCBtaW5EYXRlQXNEYXlqcyA9IGRheWpzKG1pbkRhdGVBc1N0cmluZyk7XG4gICAgICAgICAgICBpZiAobWluRGF0ZUFzRGF5anMuaXNWYWxpZCgpICYmIGRhdGUuaXNCZWZvcmUobWluRGF0ZUFzRGF5anMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRlLnllYXIoKSA8IHRoaXMubWluWWVhcikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIE1heCB5ZWFyIGFuZCBkYXRlIG1hbmFnZW1lbnRcbiAgICAgICAgY29uc3QgbWF4RGF0ZUFzU3RyaW5nID0gRGF0ZVBpY2tlckhlbHBlci5nZXREYXRlQXNTdHJpbmcodGhpcy5tYXhEYXRlKTtcbiAgICAgICAgaWYgKG1heERhdGVBc1N0cmluZykge1xuICAgICAgICAgICAgY29uc3QgbWF4RGF0ZUFzRGF5anMgPSBkYXlqcyhtYXhEYXRlQXNTdHJpbmcpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIG1heERhdGVBc0RheWpzLmlzVmFsaWQoKSAmJlxuICAgICAgICAgICAgICAgIGRhdGUuaXNBZnRlcihtYXhEYXRlQXNEYXlqcykgJiZcbiAgICAgICAgICAgICAgICBkYXRlLnllYXIoKSA8PSBtYXhEYXRlQXNEYXlqcy55ZWFyKClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0ZS55ZWFyKCkgPD0gdGhpcy5tYXhZZWFyO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZURhdGVwaWNrZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucG9wdWxhdGVNb250aExpc3QoKTtcbiAgICAgICAgdGhpcy5wb3B1bGF0ZVllYXJMaXN0KCk7XG4gICAgICAgIHRoaXMud2Vla0RheXMgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZ2V0V2Vla0RheXMoKTtcbiAgICAgICAgdGhpcy53ZWVrcyA9IHRoaXMuZGF0ZVBpY2tlckhlbHBlci5nZXRXZWVrc09mTW9udGgoXG4gICAgICAgICAgICBkYXlqcygpLmZvcm1hdCh0aGlzLmRhdGVQaWNrZXJIZWxwZXIuWUVBUl9TVFJJTkdfRk9STUFUKSxcbiAgICAgICAgICAgIGRheWpzKCkuZm9ybWF0KHRoaXMuZGF0ZVBpY2tlckhlbHBlci5NT05USF9TVFJJTkdfTlVNQkVSX0ZPUk1BVClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERhdGUoZGF0ZTogZGF5anMuRGF5anMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBkYXRlO1xuXG4gICAgICAgIC8vIEVpdGhlciB3ZSBoYXZlIGEgZGF0ZSB0byBzZXQgb3Igd2UgdGFrZSB0b2RheVxuICAgICAgICBjb25zdCBkYXRlVG9Gb3JtYXQgPSBkYXRlID8gZGF0ZSA6IGRheWpzKCk7XG4gICAgICAgIHRoaXMud2Vla3MgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZ2V0V2Vla3NPZk1vbnRoKFxuICAgICAgICAgICAgZGF0ZVRvRm9ybWF0LmZvcm1hdCh0aGlzLmRhdGVQaWNrZXJIZWxwZXIuWUVBUl9TVFJJTkdfRk9STUFUKSxcbiAgICAgICAgICAgIGRhdGVUb0Zvcm1hdC5mb3JtYXQoXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VySGVscGVyLk1PTlRIX1NUUklOR19OVU1CRVJfRk9STUFUXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZGF0ZVRvRm9ybWF0LmZvcm1hdCh0aGlzLmRhdGVQaWNrZXJIZWxwZXIuREFZX1NUUklOR19OVU1CRVJfRk9STUFUKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGF0ZUFzQXJyYXkoZGF0ZTogZGF5anMuRGF5anMpOiBudW1iZXJbXSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICArZGF0ZS5mb3JtYXQodGhpcy5kYXRlUGlja2VySGVscGVyLllFQVJfU1RSSU5HX0ZPUk1BVCksXG4gICAgICAgICAgICArZGF0ZS5mb3JtYXQodGhpcy5kYXRlUGlja2VySGVscGVyLk1PTlRIX1NUUklOR19OVU1CRVJfRk9STUFUKSxcbiAgICAgICAgICAgICtkYXRlLmZvcm1hdCh0aGlzLmRhdGVQaWNrZXJIZWxwZXIuREFZX1NUUklOR19OVU1CRVJfRk9STUFUKVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNPbkRhdGVwaWNrZXJUcmlnZ2VyKFxuICAgICAgICB3YXNPcGVuOiBib29sZWFuLFxuICAgICAgICBpc1Zpc2libGU6IGJvb2xlYW5cbiAgICApOiB2b2lkIHtcbiAgICAgICAgLy8gRm9jdXMgYmFjayBvbiB0aGUgdHJpZ2dlci4gTm8gbmVlZCBmb3IgYSBzZXRUaW1lb3V0IGFzIHRoZSB0cmlnZ2VyIHNob3VsZCBzdGlsbCBiZSBpbiB0aGUgRE9NLlxuICAgICAgICAvLyBPbmx5IGRvZXMgaXQgd2hlbiB0aGUgbW9kYWwgaXMgY2xvc2VkIGZyb20gYSBvcGVuIHN0YXRlIHRvIGF2b2lkIHRvIHNldFxuICAgICAgICAvLyB0aGUgZm9jdXMgd2hlbiB0aGUgcGFnZSBsb2Fkcy5cbiAgICAgICAgaWYgKHdhc09wZW4gJiYgIWlzVmlzaWJsZSAmJiB0aGlzLmRhdGVwaWNrZXJUcmlnZ2VySHRtbEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZXBpY2tlclRyaWdnZXJIdG1sRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb3B1bGF0ZU1vbnRoTGlzdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb250aExpc3RJdGVtID0gZGF5anMoKVxuICAgICAgICAgICAgLmxvY2FsZURhdGEoKVxuICAgICAgICAgICAgLm1vbnRocygpXG4gICAgICAgICAgICAubWFwKChtb250aDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiAoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiBtb250aCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogaW5kZXgudG9TdHJpbmcoKVxuICAgICAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcG9wdWxhdGVZZWFyTGlzdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSAoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpOiBudW1iZXJbXSA9PlxuICAgICAgICAgICAgQXJyYXkuZnJvbSh7IGxlbmd0aDogZW5kIC0gc3RhcnQgKyAxIH0sICh2LCBrKSA9PiBrICsgc3RhcnQpO1xuXG4gICAgICAgIGlmICghIXRoaXMubWluRGF0ZSAmJiAhIXRoaXMubWluRGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubWluWWVhciA9IHRoaXMubWluRGF0ZVswXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISF0aGlzLm1heERhdGUgJiYgISF0aGlzLm1heERhdGUubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLm1heFllYXIgPSB0aGlzLm1heERhdGVbMF07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnllYXJMaXN0SXRlbSA9IHJhbmdlKHRoaXMubWluWWVhciwgdGhpcy5tYXhZZWFyKS5tYXAoXG4gICAgICAgICAgICAoeWVhcjogbnVtYmVyKSA9PiAoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiB5ZWFyLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgdmFsdWU6IHllYXIudG9TdHJpbmcoKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uS2V5RG93bklubmVyKGtleUV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIC8vIElFIGRvZXNuJ3Qgc3VwcG9ydCBrZXlFdmVudC5jb2RlLCBhbmQgaGFzIGRpZmZlcmVudCB2YWx1ZXNcbiAgICAgICAgLy8gaW4ga2V5RXZlbnQua2V5IChEb3duIGluc3RlYWQgb2YgQXJyb3dEb3duIGZvciBpbnN0YW5jZSksIGhlbmNlIHRoZSBtdWx0aS1zdXBwb3J0LlxuICAgICAgICBjb25zdCBpZTExQ29tcGF0aWJsZUNvZGUgPSBrZXlFdmVudC5jb2RlIHx8IGtleUV2ZW50LmtleTtcbiAgICAgICAgc3dpdGNoIChpZTExQ29tcGF0aWJsZUNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Rvd24nOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJOYXZpZ2F0aW9uSGVscGVyLmZvY3VzTmV4dFdlZWtEYXkoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1VwJzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuZm9jdXNQcmV2aW91c1dlZWtEYXkoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1NwYWNlJzpcbiAgICAgICAgICAgIGNhc2UgJ1NwYWNlYmFyJzpcbiAgICAgICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjbGljaycpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1JpZ2h0JzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuZm9jdXNOZXh0RGF5KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdMZWZ0JzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlci5mb2N1c1ByZXZpb3VzRGF5KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAga2V5RXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAga2V5RXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBbaWRdPVwiYnVpbGRJZCgnZGF0ZXBpY2tlcl93cmFwcGVyJylcIlxuICAgIGNsYXNzPVwiZGF0ZXBpY2tlcl93cmFwcGVyXCJcbiAgICAqbmdJZj1cImlzRGF0ZXBpY2tlclZpc2libGVcIlxuICAgIFtjZGtUcmFwRm9jdXNdPVwiISFkYXRlcGlja2VyVHJpZ2dlckh0bWxFbGVtZW50XCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICByb2xlPVwiYXBwbGljYXRpb25cIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICdmb2Vobi1kYXRlLXBpY2tlci5jb250YWluZXIuYXJpYS1sYWJlbCcgfCBmcm9tRGljdGlvbmFyeVxuICAgIFwiXG4+XG4gICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cImNsb3NlYWJsZVwiXG4gICAgICAgIChjbGljayk9XCJpc0RhdGVwaWNrZXJWaXNpYmxlID0gZmFsc2VcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJidG4gY2xvc2VcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgJ2ZvZWhuLWRhdGUtcGlja2VyLmNsb3NlLWJ1dHRvbi5hcmlhLWxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgIFwiXG4gICAgICAgIFtpZF09XCJidWlsZElkKCdjbG9zZUJ1dHRvbicpXCJcbiAgICA+XG4gICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGRpdlxuICAgICAgICBbaWRdPVwiYnVpbGRJZCgnZGF0ZXBpY2tlcl9oZWFkZXInKVwiXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGRhdGVwaWNrZXJfaGVhZGVyXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50TW9udGhZZWFyIHwgYXN5bmMgYXMgbW9udGhZZWFyXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkSWQoJ3ByZXZpb3VzLW1vbnRoJylcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGRhdGVwaWNrZXItbmF2LW1vbnRoLWJ0blwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInByZXZpb3VzTW9udGgoKVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiaXNQcmV2aW91c01vbnRoRGlzYWJsZWQobW9udGhZZWFyKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGZvZWhuLWljb24tY2hldnJvbi1sZWZ0XG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi1kYXRlLXBpY2tlci5wcmV2aW91cy1tb250aC1idXR0b24udGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID48L2ZvZWhuLWljb24tY2hldnJvbi1sZWZ0PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZElkKCdtb250aC15ZWFyLWxhYmVsJylcIlxuICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzci1vbmx5XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAnZm9laG4tZGF0ZS1waWNrZXIuc2NyZWVuLXJlYWRlci5hY3R1YWwtbW9udGgtZGlzcGxheWVkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAge3sgZ2V0TW9udGhBc1JlYWRhYmxlKG1vbnRoWWVhci5tb250aCkgfX0ge3sgbW9udGhZZWFyLnllYXIgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxmb2Vobi1zZWxlY3RcbiAgICAgICAgICAgICAgICBbaWRdPVwiYnVpbGRJZCgnbW9udGgtaW5wdXQnKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhbGlnbi1zZWxmLWNlbnRlciBtb250aC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAnZm9laG4tZGF0ZS1waWNrZXIuc2NyZWVuLXJlYWRlci5tb250aC1pbnB1dC5sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtpc0xhYmVsU3JPbmx5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtlbGVtZW50c109XCJtb250aExpc3RJdGVtXCJcbiAgICAgICAgICAgICAgICBbbW9kZWxdPVwibW9udGhZZWFyLm1vbnRoXCJcbiAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgKHVzZXJJbnB1dCk9XCJ1c2VySW5wdXRNb250aCgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2ZvZWhuLXNlbGVjdD5cbiAgICAgICAgICAgIDxmb2Vobi1zZWxlY3RcbiAgICAgICAgICAgICAgICBbaWRdPVwiYnVpbGRJZCgneWVhci1pbnB1dCcpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFsaWduLXNlbGYtY2VudGVyXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1kYXRlLXBpY2tlci5zY3JlZW4tcmVhZGVyLnllYXItaW5wdXQubGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbaXNMYWJlbFNyT25seV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZWxlbWVudHNdPVwieWVhckxpc3RJdGVtXCJcbiAgICAgICAgICAgICAgICBbbW9kZWxdPVwibW9udGhZZWFyLnllYXJcIlxuICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAodXNlcklucHV0KT1cInVzZXJJbnB1dFllYXIoJGV2ZW50KVwiXG4gICAgICAgICAgICA+PC9mb2Vobi1zZWxlY3Q+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkSWQoJ25leHQtbW9udGgnKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgZGF0ZXBpY2tlci1uYXYtbW9udGgtYnRuXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibmV4dE1vbnRoKClcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImlzTmV4dE1vbnRoRGlzYWJsZWQobW9udGhZZWFyKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGZvZWhuLWljb24tY2hldnJvbi1yaWdodFxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tZGF0ZS1waWNrZXIubmV4dC1tb250aC1idXR0b24udGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID48L2ZvZWhuLWljb24tY2hldnJvbi1yaWdodD5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8dGFibGVcbiAgICAgICAgW2lkXT1cImJ1aWxkSWQoJ2RhdGVwaWNrZXJfdGFibGUnKVwiXG4gICAgICAgIHJvbGU9XCJncmlkXCJcbiAgICAgICAgKGZvY3VzaW4pPVwib25EYXlzRm9jdXNpbigpXCJcbiAgICAgICAgKGZvY3Vzb3V0KT1cIm9uRGF5c0ZvY3Vzb3V0KClcIlxuICAgID5cbiAgICAgICAgPHRoZWFkIHJvbGU9XCJwcmVzZW50YXRpb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgIDx0ciByb2xlPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlPVwiY29sXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cImNvbHVtbmhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB3ZWVrZGF5IG9mIHdlZWtEYXlzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxmb2Vobi1hYmJyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJ3ZWVrZGF5LnN1YnN0cigwLCAyKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwid2Vla2RheVwiXG4gICAgICAgICAgICAgICAgICAgID48L2ZvZWhuLWFiYnI+XG4gICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGhlYWQ+XG4gICAgICAgIDx0Ym9keSByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gICAgICAgICAgICA8dHIgcm9sZT1cInJvd1wiICpuZ0Zvcj1cImxldCB3ZWVrIG9mIHdlZWtzOyBsZXQgaW5kZXhSb3cgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF5T2ZXZWVrIG9mIHdlZWs7IGxldCBpbmRleENvbHVtbiA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIHctMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICNkYXlCdXR0b25FbGVtUmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIiFkYXlPZldlZWsuaXNDdXJyZW50TW9udGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkSWQoJ2RheV8nICsgaW5kZXhSb3cgKyAnXycgKyBpbmRleENvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cImdldERheVRhYkluZGV4KGRheU9mV2VlaylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmJ0bi1pbmZvXT1cIiFpc1RvZGF5KGRheU9mV2Vlay5kYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYnRuLXNlY29uZGFyeV09XCJpc1RvZGF5KGRheU9mV2Vlay5kYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYnRuLWRhbmdlcl09XCJpc1NlbGVjdGVkKGRheU9mV2Vlay5kYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlZWtEYXlzW2luZGV4Q29sdW1uXSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlPZldlZWsuZGF0ZUFzUmVhZGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWlzLXRvZGF5XT1cImlzVG9kYXkoZGF5T2ZXZWVrLmRhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtaXMtc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZChkYXlPZldlZWsuZGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1yb3ctaW5kZXhdPVwiaW5kZXhSb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jb2x1bW4taW5kZXhdPVwiaW5kZXhDb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF5LW51bWJlcl09XCJkYXlPZldlZWsuZGF5T2ZNb250aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJnZXREYXlEaXNhYmxlZEF0dHJpYnV0ZShkYXlPZldlZWspXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVVc2VySW5wdXQoZGF5T2ZXZWVrLmRhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF5T2ZXZWVrLmRheU9mTW9udGggfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cbjwvZGl2PlxuIl19
|
|
@@ -9,20 +9,20 @@ import { FoehnDatePickerComponent } from './foehn-date-picker.component';
|
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
export class FoehnDatePickerModule {
|
|
11
11
|
}
|
|
12
|
-
FoehnDatePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.
|
|
13
|
-
FoehnDatePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.
|
|
12
|
+
FoehnDatePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnDatePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
13
|
+
FoehnDatePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: FoehnDatePickerModule, declarations: [FoehnDatePickerComponent], imports: [CommonModule,
|
|
14
14
|
FoehnIconsModule,
|
|
15
15
|
A11yModule,
|
|
16
16
|
FoehnCheckablesModule,
|
|
17
17
|
FoehnMiscModule,
|
|
18
18
|
SdkDictionaryModule], exports: [FoehnDatePickerComponent] });
|
|
19
|
-
FoehnDatePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.
|
|
19
|
+
FoehnDatePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnDatePickerModule, imports: [CommonModule,
|
|
20
20
|
FoehnIconsModule,
|
|
21
21
|
A11yModule,
|
|
22
22
|
FoehnCheckablesModule,
|
|
23
23
|
FoehnMiscModule,
|
|
24
24
|
SdkDictionaryModule] });
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FoehnDatePickerModule, decorators: [{
|
|
26
26
|
type: NgModule,
|
|
27
27
|
args: [{
|
|
28
28
|
imports: [
|